mirror of
https://github.com/stablyai/orca.git
synced 2026-11-15 18:37:24 +00:00
* Keep background text generation read-only * Align runtime MIME dependency in frozen lockfile * Bundle MIME lookup data for background text tasks * Preserve text task cancellation and process ownership during policy probes * Update streamed generation fixture for permission probe * fix: preserve naming recipes with compatible restrictions * test: align naming contracts with single-attempt behavior * fix: preserve older OpenCode helper restrictions * test: complete OpenCode capability fixtures * Separate supported read-only controls from naming retries
37 lines
1.2 KiB
TypeScript
37 lines
1.2 KiB
TypeScript
import { compareAppVersions, isValidAppVersion } from './app-version'
|
|
|
|
export const OPENCODE_NATIVE_PROMPT_VERSIONS = ['2.0.12', '2.0.16'] as const
|
|
|
|
export type OpenCodeCliCapabilities = {
|
|
version: string | null
|
|
pluginApi: 'v1' | 'v2' | 'unknown'
|
|
promptMode: 'submit' | 'prefill' | 'unknown'
|
|
v1SessionPolicyFiltersTools: boolean
|
|
}
|
|
|
|
export function parseOpenCodeCliVersion(output: string | null | undefined): string | null {
|
|
const version = output
|
|
?.trim()
|
|
.match(/^(?:opencode\s+)?v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)$/i)?.[1]
|
|
return version && isValidAppVersion(version) ? version : null
|
|
}
|
|
|
|
export function getOpenCodeCliCapabilities(
|
|
output: string | null | undefined
|
|
): OpenCodeCliCapabilities {
|
|
const version = parseOpenCodeCliVersion(output)
|
|
const major = version?.split('.')[0]
|
|
return {
|
|
version,
|
|
pluginApi: major === '1' ? 'v1' : major === '2' ? 'v2' : 'unknown',
|
|
v1SessionPolicyFiltersTools:
|
|
major === '1' && version !== null && compareAppVersions(version, '1.3.0') >= 0,
|
|
promptMode:
|
|
major === '1'
|
|
? 'submit'
|
|
: OPENCODE_NATIVE_PROMPT_VERSIONS.some((supported) => supported === version)
|
|
? 'prefill'
|
|
: 'unknown'
|
|
}
|
|
}
|