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
+2
View File
@@ -31,6 +31,7 @@ program
.option("--opencode-zen <value>", "OpenCode Zen access: no, yes (default: no)") .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("--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("--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") .option("--skip-auth", "Skip authentication setup hints")
.addHelpText("after", ` .addHelpText("after", `
Examples: Examples:
@@ -57,6 +58,7 @@ Model Providers (Priority: Native > Copilot > OpenCode Zen > Z.ai > Kimi):
opencodeZen: options.opencodeZen, opencodeZen: options.opencodeZen,
zaiCodingPlan: options.zaiCodingPlan, zaiCodingPlan: options.zaiCodingPlan,
kimiForCoding: options.kimiForCoding, kimiForCoding: options.kimiForCoding,
opencodeGo: options.opencodeGo,
skipAuth: options.skipAuth ?? false, skipAuth: options.skipAuth ?? false,
} }
const exitCode = await install(args) const exitCode = await install(args)
+6 -3
View File
@@ -159,7 +159,8 @@ export function argsToConfig(args: InstallArgs): InstallConfig {
hasCopilot: args.copilot === "yes", hasCopilot: args.copilot === "yes",
hasOpencodeZen: args.opencodeZen === "yes", hasOpencodeZen: args.opencodeZen === "yes",
hasZaiCodingPlan: args.zaiCodingPlan === "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 copilot: BooleanArg
opencodeZen: BooleanArg opencodeZen: BooleanArg
zaiCodingPlan: BooleanArg zaiCodingPlan: BooleanArg
kimiForCoding: BooleanArg kimiForCoding: BooleanArg
opencodeGo: BooleanArg
} { } {
let claude: ClaudeSubscription = "no" let claude: ClaudeSubscription = "no"
if (detected.hasClaude) { if (detected.hasClaude) {
@@ -184,6 +186,7 @@ export function detectedToInitialValues(detected: DetectedConfig): {
copilot: detected.hasCopilot ? "yes" : "no", copilot: detected.hasCopilot ? "yes" : "no",
opencodeZen: detected.hasOpencodeZen ? "yes" : "no", opencodeZen: detected.hasOpencodeZen ? "yes" : "no",
zaiCodingPlan: detected.hasZaiCodingPlan ? "yes" : "no", zaiCodingPlan: detected.hasZaiCodingPlan ? "yes" : "no",
kimiForCoding: detected.hasKimiForCoding ? "yes" : "no", kimiForCoding: detected.hasKimiForCoding ? "yes" : "no",
opencodeGo: detected.hasOpencodeGo ? "yes" : "no",
} }
} }
+12 -1
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" }, { value: "yes", label: "Yes", hint: "Kimi K2.5 for Sisyphus/Prometheus fallback" },
], ],
initialValue: initial.kimiForCoding, initialValue: initial.kimiForCoding,
}) })
if (!kimiForCoding) return null 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 { return {
hasClaude: claude !== "no", hasClaude: claude !== "no",
isMax20: claude === "max20", isMax20: claude === "max20",
@@ -109,5 +119,6 @@ export async function promptInstallConfig(detected: DetectedConfig): Promise<Ins
hasOpencodeZen: opencodeZen === "yes", hasOpencodeZen: opencodeZen === "yes",
hasZaiCodingPlan: zaiCodingPlan === "yes", hasZaiCodingPlan: zaiCodingPlan === "yes",
hasKimiForCoding: kimiForCoding === "yes", hasKimiForCoding: kimiForCoding === "yes",
hasOpencodeGo: opencodeGo === "yes",
} }
} }