Files
orca/src/shared/opencode-launch-command.ts
T
NeilandHarshul Rathod bdb897b735 Respect disabled OpenCode variants and refresh WSL settings safely (#23328)
Respect disabled OpenCode variants, preserve explicit config ownership, and refresh WSL guest settings safely across reconnects.

Based on Harshul Rathod proposal #22805.

Co-authored-by: Harshul Rathod <harshulrathod1640@gmail.com>
2026-09-26 22:48:35 -07:00

32 lines
1.2 KiB
TypeScript

import { getCommandTokenPathBasename, getFirstCommandToken } from './command-token-scanner'
import type { TuiAgent } from './tui-agent'
function openCodeCommandAgent(launchCommand: string | undefined): 'opencode' | 'opencode2' | null {
const binary = getCommandTokenPathBasename(getFirstCommandToken(launchCommand ?? ''))
.toLowerCase()
.replace(/\.(?:cmd|exe|sh)$/, '')
return binary === 'opencode' || binary === 'opencode2' ? binary : null
}
export function isOpenCode2LaunchCommand(launchCommand: string | undefined): boolean {
return openCodeCommandAgent(launchCommand) === 'opencode2'
}
export function selectOpenCodeHookAgent(
launchAgent: TuiAgent | undefined,
launchCommand: string | undefined,
isEnabled: (agent: 'opencode' | 'opencode2') => boolean
): 'opencode' | 'opencode2' | null {
const explicit =
launchAgent === 'opencode' || launchAgent === 'opencode2'
? launchAgent
: launchAgent === undefined
? openCodeCommandAgent(launchCommand)
: null
// An explicit version selects its own integration; disabling it never substitutes the other.
if (explicit) {
return isEnabled(explicit) ? explicit : null
}
return isEnabled('opencode') ? 'opencode' : isEnabled('opencode2') ? 'opencode2' : null
}