feat(opencode-go): add CLI install flag and TUI prompts

This commit is contained in:
YeonGyu-Kim
2026-03-12 17:31:04 +09:00
parent 89d1e105a8
commit 66ec9f58ee
3 changed files with 20 additions and 4 deletions

View File

@@ -31,6 +31,7 @@ program
.option("--opencode-zen <value>", "OpenCode Zen access: no, yes (default: no)")
.option("--zai-coding-plan <value>", "Z.ai Coding Plan subscription: no, yes (default: no)")
.option("--kimi-for-coding <value>", "Kimi For Coding subscription: no, yes (default: no)")
.option("--opencode-go <value>", "OpenCode Go subscription: no, yes (default: no)")
.option("--skip-auth", "Skip authentication setup hints")
.addHelpText("after", `
Examples:
@@ -57,6 +58,7 @@ Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai > Kimi):
opencodeZen: options.opencodeZen,
zaiCodingPlan: options.zaiCodingPlan,
kimiForCoding: options.kimiForCoding,
opencodeGo: options.opencodeGo,
skipAuth: options.skipAuth ?? false,
}
const exitCode = await install(args)

View File

@@ -159,7 +159,8 @@ export function argsToConfig(args: InstallArgs): InstallConfig {
hasCopilot: args.copilot === "yes",
hasOpencodeZen: args.opencodeZen === "yes",
hasZaiCodingPlan: args.zaiCodingPlan === "yes",
hasKimiForCoding: args.kimiForCoding === "yes",
hasKimiForCoding: args.kimiForCoding === "yes",
hasOpencodeGo: args.opencodeGo === "yes",
}
}
@@ -170,7 +171,8 @@ export function detectedToInitialValues(detected: DetectedConfig): {
copilot: BooleanArg
opencodeZen: BooleanArg
zaiCodingPlan: BooleanArg
kimiForCoding: BooleanArg
kimiForCoding: BooleanArg
opencodeGo: BooleanArg
} {
let claude: ClaudeSubscription = "no"
if (detected.hasClaude) {
@@ -184,6 +186,7 @@ export function detectedToInitialValues(detected: DetectedConfig): {
copilot: detected.hasCopilot ? "yes" : "no",
opencodeZen: detected.hasOpencodeZen ? "yes" : "no",
zaiCodingPlan: detected.hasZaiCodingPlan ? "yes" : "no",
kimiForCoding: detected.hasKimiForCoding ? "yes" : "no",
kimiForCoding: detected.hasKimiForCoding ? "yes" : "no",
opencodeGo: detected.hasOpencodeGo ? "yes" : "no",
}
}

View File

@@ -97,9 +97,19 @@ export async function promptInstallConfig(detected: DetectedConfig): Promise<Ins
{ value: "yes", label: "Yes", hint: "Kimi K2.5 for Sisyphus/Prometheus fallback" },
],
initialValue: initial.kimiForCoding,
})
})
if (!kimiForCoding) return null
const opencodeGo = await selectOrCancel({
message: "Do you have an OpenCode Go subscription?",
options: [
{ value: "no", label: "No", hint: "Will use other configured providers" },
{ value: "yes", label: "Yes", hint: "OpenCode Go for quick tasks" },
],
initialValue: initial.opencodeGo,
})
if (!opencodeGo) return null
return {
hasClaude: claude !== "no",
isMax20: claude === "max20",
@@ -109,5 +119,6 @@ export async function promptInstallConfig(detected: DetectedConfig): Promise<Ins
hasOpencodeZen: opencodeZen === "yes",
hasZaiCodingPlan: zaiCodingPlan === "yes",
hasKimiForCoding: kimiForCoding === "yes",
hasOpencodeGo: opencodeGo === "yes",
}
}