@vibeapi/cli 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +25 -0
- package/README.md +77 -0
- package/dist/__tests__/api-validator.test.d.ts +1 -0
- package/dist/__tests__/api-validator.test.js +1 -0
- package/dist/__tests__/api-validator.test.js.map +1 -0
- package/dist/__tests__/claude-code-manager.test.d.ts +1 -0
- package/dist/__tests__/claude-code-manager.test.js +1 -0
- package/dist/__tests__/claude-code-manager.test.js.map +1 -0
- package/dist/__tests__/command.test.d.ts +1 -0
- package/dist/__tests__/command.test.js +1 -0
- package/dist/__tests__/command.test.js.map +1 -0
- package/dist/__tests__/commands.test.d.ts +1 -0
- package/dist/__tests__/commands.test.js +1 -0
- package/dist/__tests__/commands.test.js.map +1 -0
- package/dist/__tests__/config-profiles.test.d.ts +1 -0
- package/dist/__tests__/config-profiles.test.js +1 -0
- package/dist/__tests__/config-profiles.test.js.map +1 -0
- package/dist/__tests__/config.test.d.ts +1 -0
- package/dist/__tests__/config.test.js +1 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/env-cleanup.test.d.ts +1 -0
- package/dist/__tests__/env-cleanup.test.js +1 -0
- package/dist/__tests__/env-cleanup.test.js.map +1 -0
- package/dist/__tests__/extra-commands.test.d.ts +1 -0
- package/dist/__tests__/extra-commands.test.js +1 -0
- package/dist/__tests__/extra-commands.test.js.map +1 -0
- package/dist/__tests__/i18n.test.d.ts +1 -0
- package/dist/__tests__/i18n.test.js +1 -0
- package/dist/__tests__/i18n.test.js.map +1 -0
- package/dist/__tests__/logger.test.d.ts +1 -0
- package/dist/__tests__/logger.test.js +1 -0
- package/dist/__tests__/logger.test.js.map +1 -0
- package/dist/__tests__/model-registry.test.d.ts +1 -0
- package/dist/__tests__/model-registry.test.js +1 -0
- package/dist/__tests__/model-registry.test.js.map +1 -0
- package/dist/__tests__/opencode-manager.test.d.ts +1 -0
- package/dist/__tests__/opencode-manager.test.js +1 -0
- package/dist/__tests__/opencode-manager.test.js.map +1 -0
- package/dist/__tests__/runtime-options.test.d.ts +1 -0
- package/dist/__tests__/runtime-options.test.js +1 -0
- package/dist/__tests__/runtime-options.test.js.map +1 -0
- package/dist/__tests__/secret-store.test.d.ts +1 -0
- package/dist/__tests__/secret-store.test.js +1 -0
- package/dist/__tests__/secret-store.test.js.map +1 -0
- package/dist/__tests__/settings-template.test.d.ts +1 -0
- package/dist/__tests__/settings-template.test.js +1 -0
- package/dist/__tests__/settings-template.test.js.map +1 -0
- package/dist/__tests__/setup-command.test.d.ts +1 -0
- package/dist/__tests__/setup-command.test.js +1 -0
- package/dist/__tests__/setup-command.test.js.map +1 -0
- package/dist/__tests__/string-width.test.d.ts +1 -0
- package/dist/__tests__/string-width.test.js +1 -0
- package/dist/__tests__/string-width.test.js.map +1 -0
- package/dist/__tests__/tool-adapters.test.d.ts +1 -0
- package/dist/__tests__/tool-adapters.test.js +1 -0
- package/dist/__tests__/tool-adapters.test.js.map +1 -0
- package/dist/__tests__/tool-manager.test.d.ts +1 -0
- package/dist/__tests__/tool-manager.test.js +1 -0
- package/dist/__tests__/tool-manager.test.js.map +1 -0
- package/dist/__tests__/wizard.test.d.ts +1 -0
- package/dist/__tests__/wizard.test.js +1 -0
- package/dist/__tests__/wizard.test.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.js +1 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/bench.d.ts +6 -0
- package/dist/commands/bench.js +1 -0
- package/dist/commands/bench.js.map +1 -0
- package/dist/commands/completion.d.ts +1 -0
- package/dist/commands/completion.js +1 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/config.d.ts +1 -0
- package/dist/commands/config.js +1 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +1 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/index.d.ts +9 -0
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/lang.d.ts +1 -0
- package/dist/commands/lang.js +1 -0
- package/dist/commands/lang.js.map +1 -0
- package/dist/commands/logs.d.ts +1 -0
- package/dist/commands/logs.js +1 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/setup.d.ts +20 -0
- package/dist/commands/setup.js +1 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +1 -0
- package/dist/commands/status.js +1 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.js +1 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-validator.d.ts +35 -0
- package/dist/lib/api-validator.js +1 -0
- package/dist/lib/api-validator.js.map +1 -0
- package/dist/lib/brand.d.ts +13 -0
- package/dist/lib/brand.js +1 -0
- package/dist/lib/brand.js.map +1 -0
- package/dist/lib/claude-code-manager.d.ts +91 -0
- package/dist/lib/claude-code-manager.js +1 -0
- package/dist/lib/claude-code-manager.js.map +1 -0
- package/dist/lib/command.d.ts +16 -0
- package/dist/lib/command.js +1 -0
- package/dist/lib/command.js.map +1 -0
- package/dist/lib/config.d.ts +124 -0
- package/dist/lib/config.js +1 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/confirm.d.ts +12 -0
- package/dist/lib/confirm.js +1 -0
- package/dist/lib/confirm.js.map +1 -0
- package/dist/lib/env-cleanup.d.ts +23 -0
- package/dist/lib/env-cleanup.js +1 -0
- package/dist/lib/env-cleanup.js.map +1 -0
- package/dist/lib/i18n.d.ts +26 -0
- package/dist/lib/i18n.js +1 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/model-registry.d.ts +34 -0
- package/dist/lib/model-registry.js +1 -0
- package/dist/lib/model-registry.js.map +1 -0
- package/dist/lib/opencode-manager.d.ts +51 -0
- package/dist/lib/opencode-manager.js +1 -0
- package/dist/lib/opencode-manager.js.map +1 -0
- package/dist/lib/runtime-options.d.ts +17 -0
- package/dist/lib/runtime-options.js +1 -0
- package/dist/lib/runtime-options.js.map +1 -0
- package/dist/lib/secret-store.d.ts +37 -0
- package/dist/lib/secret-store.js +1 -0
- package/dist/lib/secret-store.js.map +1 -0
- package/dist/lib/settings-template.d.ts +6 -0
- package/dist/lib/settings-template.js +1 -0
- package/dist/lib/settings-template.js.map +1 -0
- package/dist/lib/tool-manager.d.ts +49 -0
- package/dist/lib/tool-manager.js +1 -0
- package/dist/lib/tool-manager.js.map +1 -0
- package/dist/lib/tools/atomcode.d.ts +2 -0
- package/dist/lib/tools/atomcode.js +1 -0
- package/dist/lib/tools/atomcode.js.map +1 -0
- package/dist/lib/tools/backup.d.ts +53 -0
- package/dist/lib/tools/backup.js +1 -0
- package/dist/lib/tools/backup.js.map +1 -0
- package/dist/lib/tools/claude-code.d.ts +3 -0
- package/dist/lib/tools/claude-code.js +1 -0
- package/dist/lib/tools/claude-code.js.map +1 -0
- package/dist/lib/tools/codex.d.ts +2 -0
- package/dist/lib/tools/codex.js +1 -0
- package/dist/lib/tools/codex.js.map +1 -0
- package/dist/lib/tools/hermes.d.ts +2 -0
- package/dist/lib/tools/hermes.js +1 -0
- package/dist/lib/tools/hermes.js.map +1 -0
- package/dist/lib/tools/openclaw.d.ts +2 -0
- package/dist/lib/tools/openclaw.js +1 -0
- package/dist/lib/tools/openclaw.js.map +1 -0
- package/dist/lib/tools/opencode.d.ts +3 -0
- package/dist/lib/tools/opencode.js +1 -0
- package/dist/lib/tools/opencode.js.map +1 -0
- package/dist/lib/tools/registry.d.ts +4 -0
- package/dist/lib/tools/registry.js +1 -0
- package/dist/lib/tools/registry.js.map +1 -0
- package/dist/lib/tools/types.d.ts +75 -0
- package/dist/lib/tools/types.js +1 -0
- package/dist/lib/tools/types.js.map +1 -0
- package/dist/lib/wizard.d.ts +48 -0
- package/dist/lib/wizard.js +1 -0
- package/dist/lib/wizard.js.map +1 -0
- package/dist/locales/en_US.json +321 -0
- package/dist/locales/zh_CN.json +321 -0
- package/dist/models.json +25 -0
- package/dist/settings-template.json +13 -0
- package/dist/utils/logger.d.ts +64 -0
- package/dist/utils/logger.js +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/string-width.d.ts +38 -0
- package/dist/utils/string-width.js +1 -0
- package/dist/utils/string-width.js.map +1 -0
- package/models.json +25 -0
- package/package.json +93 -0
- package/settings-template.json +13 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { VibecliModels } from '../config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Home directory the tool adapters write under. Honors `VIBECLI_TEST_HOME` (the
|
|
4
|
+
* same override the config layer uses) so tests can redirect ~/.codex, ~/.hermes,
|
|
5
|
+
* etc. into a temp dir instead of the real home directory.
|
|
6
|
+
*/
|
|
7
|
+
export declare function toolHome(): string;
|
|
8
|
+
/**
|
|
9
|
+
* Everything a tool adapter needs to write a working private-provider config.
|
|
10
|
+
* Built by ToolManager from the active profile (api key + base url + the models
|
|
11
|
+
* resolved for this specific tool).
|
|
12
|
+
*/
|
|
13
|
+
export interface ToolApplyContext {
|
|
14
|
+
apiKey: string;
|
|
15
|
+
baseUrl: string;
|
|
16
|
+
models: VibecliModels;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* One self-contained integration for a downstream coding tool.
|
|
20
|
+
*
|
|
21
|
+
* Adding support for a new tool means dropping a single file that exports one of
|
|
22
|
+
* these and registering it in `registry.ts` — no more editing `if (toolName === ...)`
|
|
23
|
+
* branches scattered across ToolManager.
|
|
24
|
+
*/
|
|
25
|
+
export interface ToolAdapter {
|
|
26
|
+
/** Stable id used on the CLI and as the config key (e.g. `codex`). */
|
|
27
|
+
name: string;
|
|
28
|
+
/** Human-facing label (e.g. `Codex`). */
|
|
29
|
+
displayName: string;
|
|
30
|
+
/** Binary probed with `which`/`where` to detect installation. */
|
|
31
|
+
command: string;
|
|
32
|
+
/** Shell command that installs the tool globally. */
|
|
33
|
+
installCommand: string;
|
|
34
|
+
/** Primary config file path (informational; used for status/doctor output). */
|
|
35
|
+
configPath: string;
|
|
36
|
+
/** Hidden tools are still usable by id but omitted from menus. */
|
|
37
|
+
hidden?: boolean;
|
|
38
|
+
/** Write this CLI's provider config into the tool. */
|
|
39
|
+
loadPrivateConfig(ctx: ToolApplyContext): void;
|
|
40
|
+
/** Remove this CLI's provider config from the tool, leaving other config intact. */
|
|
41
|
+
unloadPrivateConfig(): void;
|
|
42
|
+
/** Read back the api key currently configured for this tool, if any. */
|
|
43
|
+
detectCurrentConfig(): {
|
|
44
|
+
apiKey: string | null;
|
|
45
|
+
};
|
|
46
|
+
/** Read the raw config object (best-effort; null when unreadable/absent). */
|
|
47
|
+
getConfig(): unknown;
|
|
48
|
+
/** Overwrite the raw config object. Optional — not all tools support it. */
|
|
49
|
+
updateConfig?(config: unknown): void;
|
|
50
|
+
/**
|
|
51
|
+
* Every file this adapter writes (and therefore snapshots) — used by restore.
|
|
52
|
+
* Defaults to `[configPath]` when omitted; multi-file tools (Codex auth.json,
|
|
53
|
+
* Hermes .env, Claude Code .claude.json) override it.
|
|
54
|
+
*/
|
|
55
|
+
backupPaths?(): string[];
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Pick the single "main" model for tools that only take one model id.
|
|
59
|
+
* Falls back through the canonical slots so a partially-filled map still works.
|
|
60
|
+
*/
|
|
61
|
+
export declare function primaryModel(models: VibecliModels): string;
|
|
62
|
+
/**
|
|
63
|
+
* Pick the model for a non-Claude tool. If the user has customized their primary
|
|
64
|
+
* (opus) model away from the built-in Anthropic default, use that; otherwise fall
|
|
65
|
+
* back to `fallback` (the non-Claude default, e.g. gpt-5.5) — since the Anthropic
|
|
66
|
+
* default model name is meaningless to these OpenAI-compatible tools.
|
|
67
|
+
*/
|
|
68
|
+
export declare function pickModel(models: VibecliModels, fallback: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* Normalize a base URL into an OpenAI-compatible endpoint by ensuring a version
|
|
71
|
+
* suffix. Most non-Anthropic tools here speak the OpenAI/Responses wire format
|
|
72
|
+
* and expect a `/v1` (or similar) suffix; the Claude/OpenCode adapters use the
|
|
73
|
+
* raw base URL instead. Adjust here if a gateway uses a different path.
|
|
74
|
+
*/
|
|
75
|
+
export declare function withV1(baseUrl: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{homedir as o}from"os";import{getDefaultModels as r}from"../model-registry.js";export function toolHome(){const r=process.env.VIBECLI_TEST_HOME;return r&&r.trim()?r.trim():o()}export function primaryModel(o){return o.opus||o.sonnet||o.reasoning||o.haiku}export function pickModel(o,t){const e=primaryModel(o);return e&&e!==r().opus?e:t}export function withV1(o){const r=(o||"").replace(/\/+$/,"");return/\/v\d+$/.test(r)?r:`${r}/v1`}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/tools/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD;;;;GAIG;AACH,MAAM,UAAU,QAAQ;IACpB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IAC/C,OAAO,QAAQ,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AACrE,CAAC;AAoDD;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAqB;IAC9C,OAAO,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC;AAC5E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,MAAqB,EAAE,QAAgB;IAC7D,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACrC,OAAO,OAAO,IAAI,OAAO,KAAK,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM,CAAC,OAAe;IAClC,MAAM,OAAO,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,OAAO,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,KAAK,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export declare class Wizard {
|
|
2
|
+
private static instance;
|
|
3
|
+
private BOX_WIDTH;
|
|
4
|
+
private apiKeyValid;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): Wizard;
|
|
7
|
+
createBox(title: string): void;
|
|
8
|
+
showOperationHints(): void;
|
|
9
|
+
promptWithHints(questions: any[]): Promise<any>;
|
|
10
|
+
printBanner(): void;
|
|
11
|
+
resetScreen(): void;
|
|
12
|
+
/**
|
|
13
|
+
* 结束语按实际已配置的工具生成:列出已灌入 API 配置的工具命令,
|
|
14
|
+
* 一个都没配置时退回通用提示(不再写死 Claude Code)。
|
|
15
|
+
*/
|
|
16
|
+
private printGoodbye;
|
|
17
|
+
runFirstTimeSetup(): Promise<void>;
|
|
18
|
+
configLanguage(): Promise<void>;
|
|
19
|
+
private buildPresetChoices;
|
|
20
|
+
private handleCustomModelInput;
|
|
21
|
+
configModels(options?: {
|
|
22
|
+
skipLoadPrompt?: boolean;
|
|
23
|
+
}): Promise<void>;
|
|
24
|
+
promptLoadAfterModelConfig(): Promise<void>;
|
|
25
|
+
configApiKey(): Promise<void>;
|
|
26
|
+
selectAndConfigureTool(firstRun?: boolean): Promise<void>;
|
|
27
|
+
configureTool(toolName: string, firstRun?: boolean): Promise<void>;
|
|
28
|
+
showToolMenu(toolName: string): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Build a per-tool model override from a single chosen model id.
|
|
31
|
+
* Non-Claude model → fill every slot (the tool uses it for everything,
|
|
32
|
+
* including Claude Code's haiku/sonnet/opus). Claude model → override only
|
|
33
|
+
* the main (opus) slot and keep the other slots at their defaults.
|
|
34
|
+
*/
|
|
35
|
+
private singleModelOverride;
|
|
36
|
+
/**
|
|
37
|
+
* Per-tool model picker shown after a tool is selected, before loading.
|
|
38
|
+
* Sources: use default / built-in presets / manual input. Returns false if
|
|
39
|
+
* the user backed out.
|
|
40
|
+
*/
|
|
41
|
+
configureToolModel(toolName: string): Promise<boolean>;
|
|
42
|
+
loadConfig(toolName: string): Promise<void>;
|
|
43
|
+
unloadConfig(toolName: string): Promise<void>;
|
|
44
|
+
restoreConfig(toolName: string): Promise<void>;
|
|
45
|
+
run(): Promise<void>;
|
|
46
|
+
showMainMenu(): Promise<void>;
|
|
47
|
+
}
|
|
48
|
+
export declare const wizard: Wizard;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import e from"inquirer";import t from"chalk";import a from"ora";import{configManager as o,DEFAULT_MODELS as i}from"./config.js";import{getPresets as n,resolvePreset as r,getToolDefaultModel as s}from"./model-registry.js";import{toolManager as l,SUPPORTED_TOOLS as d}from"./tool-manager.js";import{i18n as c,detectSystemLang as p}from"./i18n.js";import{createBorderLine as m,createContentLine as u}from"../utils/string-width.js";import{validateApiKey as g,fetchModels as w}from"./api-validator.js";import{readFileSync as _}from"fs";import{dirname as f,join as y}from"path";import{fileURLToPath as h}from"url";const z=f(h(import.meta.url)),v=t.hex("#FF8700");export class Wizard{static instance;BOX_WIDTH=63;apiKeyValid=!1;constructor(){}static getInstance(){return Wizard.instance||(Wizard.instance=new Wizard),Wizard.instance}createBox(e){console.log(v.bold("\n"+m("╔","╗","═",this.BOX_WIDTH))),console.log(v.bold(u(e,"║","║",this.BOX_WIDTH,"center"))),console.log(v.bold(m("╚","╝","═",this.BOX_WIDTH))),console.log("")}showOperationHints(){const e=[t.gray(c.t("wizard.hint_navigate")),t.gray(c.t("wizard.hint_confirm"))];console.log(t.gray("💡 ")+e.join(t.gray(" | "))+"\n")}async promptWithHints(t){this.showOperationHints();const a=t.map(e=>"list"!==e.type||e.pageSize?e:{...e,pageSize:20});return e.prompt(a)}printBanner(){const e=65,t=c.t("wizard.banner_subtitle"),a=u(t,"║","║",e,"center"),o=u("","║","║",e,"center"),i=u(`API Helper v${function(){try{return JSON.parse(_(y(z,"..","..","package.json"),"utf-8")).version}catch{return"0.0.0"}}()}`,"║","║",e,"center"),n=[" ▄▀▄ █▀▄ █ █▄█ ██▀ █ █▀▄ ██▀ █▀▄ "," █▀█ █▀ █ █ █ █▄▄ █▄▄ █▀ █▄▄ █▀▄ "].map(t=>u(t,"║","║",e,"center")),r=[m("╔","╗","═",e),o,...n,o,i,a,m("╚","╝","═",e)];console.log(v.bold("\n"+r.join("\n")))}resetScreen(){console.clear(),this.printBanner()}printGoodbye(){const e=l.getSupportedTools().filter(e=>{try{return Boolean(l.detectCurrentConfig(e.name).apiKey)}catch{return!1}});let a;if(e.length>0){const t=e.map(e=>e.command).join(" / ");a=c.t("wizard.goodbye_message_tools",{commands:t}),e.some(e=>"claude-code"===e.name)&&(a+=" "+c.t("wizard.goodbye_claude_hint"))}else a=c.t("wizard.goodbye_message");console.log(t.green("\n👋 "+a))}async runFirstTimeSetup(){const e="zh_CN"===p();e&&(o.setLang("zh_CN"),c.setLocale("zh_CN")),this.resetScreen(),console.log(v.bold("\n"+c.t("wizard.welcome"))),console.log(t.gray(c.t("wizard.privacy_note")+"\n")),e?console.log(t.gray(c.t("wizard.lang_auto_zh")+"\n")):await this.configLanguage(),await this.configApiKey(),o.getApiKey()?await this.selectAndConfigureTool(!0):console.log(t.red("\n"+c.t("wizard.api_key_required")))}async configLanguage(){for(;;){this.resetScreen(),this.createBox(c.t("wizard.select_language"));const a=c.getLocale(),{language:i}=await this.promptWithHints([{type:"list",name:"language",message:"✨ "+c.t("wizard.select_language"),choices:[{name:"[EN] English"+("en_US"===a?t.green(" ✓ ("+c.t("wizard.current_active")+")"):""),value:"en_US"},{name:"[CN] 中文"+("zh_CN"===a?t.green(" ✓ ("+c.t("wizard.current_active")+")"):""),value:"zh_CN"},new e.Separator,{name:"<- "+c.t("wizard.nav_return"),value:"back"},{name:"x "+c.t("wizard.nav_exit"),value:"exit"}],default:"zh_CN"}]);if("exit"===i)this.printGoodbye(),process.exit(0);else if("back"===i)return;return o.setLang(i),void c.setLocale(i)}}buildPresetChoices(){const a=n(),o=a.filter(e=>e.recommended),i=a.filter(e=>!e.recommended),r=e=>({name:(c.t(e.name)!==e.name?c.t(e.name):e.name)+(e.models?t.gray(` [H:${e.models.haiku} S:${e.models.sonnet} O:${e.models.opus}]`):""),value:{type:"preset",preset:e}}),s=[];return o.length>0&&(s.push(new e.Separator(t.hex("#FF8700")("── "+c.t("wizard.recommended")+" ──"))),s.push(...o.map(r))),i.length>0&&(s.push(new e.Separator(t.gray("── "+c.t("wizard.other_models")+" ──"))),s.push(...i.map(r))),s}async handleCustomModelInput(){const a=o.getModels(),{customMode:n}=await e.prompt([{type:"list",name:"customMode",message:c.t("wizard.custom_model_mode"),choices:[{name:c.t("wizard.custom_model_single"),value:"single"},{name:c.t("wizard.custom_model_per_role"),value:"per_role"}]}]);if("single"===n){const{customModel:t}=await e.prompt([{type:"input",name:"customModel",message:c.t("wizard.input_custom_model"),default:i.sonnet}]);o.setModels({haiku:t,sonnet:t,opus:t,reasoning:t})}else{const t=await e.prompt([{type:"input",name:"haiku",message:c.t("wizard.model_haiku"),default:a.haiku},{type:"input",name:"sonnet",message:c.t("wizard.model_sonnet"),default:a.sonnet},{type:"input",name:"opus",message:c.t("wizard.model_opus"),default:a.opus},{type:"input",name:"reasoning",message:c.t("wizard.model_reasoning"),default:a.reasoning}]);o.setModels(t)}console.log(t.green("\n✓ "+c.t("wizard.models_saved")))}async configModels(a){if(!o.getApiKey())return console.log(t.red("\n"+c.t("wizard.api_key_required"))),void await e.prompt([{type:"input",name:"continue",message:c.t("wizard.press_enter")}]);for(;;){this.resetScreen(),this.createBox(c.t("wizard.config_models"));const i=[...this.buildPresetChoices()];i.push(new e.Separator),i.push({name:"✏️ "+c.t("wizard.custom_model_input"),value:{type:"custom_input"}}),i.push(new e.Separator),i.push({name:"<- "+c.t("wizard.nav_return"),value:{type:"back"}}),i.push({name:"x "+c.t("wizard.nav_exit"),value:{type:"exit"}});const{modelChoice:n}=await this.promptWithHints([{type:"list",name:"modelChoice",message:c.t("wizard.select_model_config"),choices:i}]);if("exit"===n.type)this.printGoodbye(),process.exit(0);else{if("back"===n.type)return;if("custom_input"===n.type)return await this.handleCustomModelInput(),void(a?.skipLoadPrompt||await this.promptLoadAfterModelConfig());if("preset"===n.type){const e=r(n.preset);return o.setModels(e),console.log(t.green("\n✓ "+c.t("wizard.models_saved"))),void(a?.skipLoadPrompt||await this.promptLoadAfterModelConfig())}}}}async promptLoadAfterModelConfig(){const{shouldLoad:t}=await e.prompt([{type:"list",name:"shouldLoad",message:c.t("wizard.load_config_now"),choices:[{name:c.t("wizard.load_config_yes"),value:!0},{name:c.t("wizard.load_config_later"),value:!1}]}]);t&&await this.selectAndConfigureTool()}async configApiKey(){for(;;){this.resetScreen(),this.createBox(c.t("wizard.input_api_key")),console.log(t.gray("\n💡 "+c.t("wizard.api_key_input_hint"))),console.log(t.gray(" "+c.t("wizard.api_key_get_hint",{url:"https://www.vibeapi.cn/console/token"}))),console.log();const{apiKey:i}=await e.prompt([{type:"password",name:"apiKey",message:c.t("wizard.input_your_api_key"),mask:"*"}]);if(!i||""===i.trim()){const{action:t}=await e.prompt([{type:"list",name:"action",message:c.t("wizard.select_action"),choices:[{name:c.t("wizard.retry_input"),value:"retry"},{name:"<- "+c.t("wizard.nav_return"),value:"back"}]}]);if("back"===t)return;continue}const n=a(c.t("wizard.validating_api_key")).start(),r=await g(i.trim());if(n.stop(),r.valid)return o.setApiKey(i.trim()),this.apiKeyValid=!0,void console.log(t.green("\n✓ "+c.t("wizard.api_key_valid")));{this.apiKeyValid=!1,"invalid_api_key"===r.error?console.log(t.red("\n✗ "+c.t("wizard.api_key_invalid"))):console.log(t.red("\n✗ "+c.t("wizard.api_key_network_error")));const{action:a}=await e.prompt([{type:"list",name:"action",message:c.t("wizard.select_action"),choices:[{name:c.t("wizard.retry_input"),value:"retry"},{name:"<- "+c.t("wizard.nav_return"),value:"back"}]}]);if("back"===a)return}}}async selectAndConfigureTool(t=!1){for(;;){this.resetScreen(),this.createBox(c.t("wizard.select_tool"));const a=l.getSupportedTools().map(e=>({name:e.displayName,value:e.name})),{tool:o}=await this.promptWithHints([{type:"list",name:"tool",message:"🛠️ "+c.t("wizard.select_tool"),choices:[...a,new e.Separator,{name:"<- "+c.t("wizard.nav_return"),value:"back"},{name:"x "+c.t("wizard.nav_exit"),value:"exit"}]}]);if("exit"===o)this.printGoodbye(),process.exit(0);else if("back"===o)return;await this.configureTool(o,t)}}async configureTool(a,o=!1){const i=d[a];if(i){if(!l.isToolInstalled(a)){console.log(t.yellow("\n"+c.t("wizard.tool_not_installed",{tool:i.displayName})));const{install:o}=await e.prompt([{type:"confirm",name:"install",message:c.t("wizard.install_tool_confirm"),default:!0}]);if(!o)return;try{await l.installTool(a)}catch{return void console.log(t.red(c.t("wizard.install_failed")))}}o?await this.configureToolModel(a)&&await this.loadConfig(a):await this.showToolMenu(a)}}async showToolMenu(t){for(;;){this.resetScreen();const a=d[t];if(!a)return;this.createBox(a.displayName+" "+c.t("wizard.menu_title"));const{action:o}=await this.promptWithHints([{type:"list",name:"action",message:"⚙️ "+c.t("wizard.select_action"),choices:[{name:"📥 "+c.t("wizard.action_load_config",{tool:a.displayName}),value:"load"},{name:"📤 "+c.t("wizard.action_unload_config",{tool:a.displayName}),value:"unload"},{name:"↩️ "+c.t("wizard.action_restore_config",{tool:a.displayName}),value:"restore"},new e.Separator,{name:"<- "+c.t("wizard.nav_return"),value:"back"},{name:"x "+c.t("wizard.nav_exit"),value:"exit"}]}]);if("exit"===o)this.printGoodbye(),process.exit(0);else{if("back"===o)return;"load"===o?await this.configureToolModel(t)&&await this.loadConfig(t):"unload"===o?await this.unloadConfig(t):"restore"===o&&await this.restoreConfig(t)}}}singleModelOverride(e){const t=e.trim();return/claude/i.test(t)?{opus:t}:{haiku:t,sonnet:t,opus:t,reasoning:t}}async configureToolModel(i){const n=d[i];if(!n)return!1;const l="claude-code"===i,p=s(i),m=l||!p?c.t("wizard.model_builtin_default"):p;this.resetScreen(),this.createBox(n.displayName+" · "+c.t("wizard.config_models"));const u=[{name:"✅ "+c.t("wizard.use_default_model",{model:m}),value:{type:"default"}},{name:"🌐 "+c.t("wizard.fetch_models_from_api"),value:{type:"fetch"}},...this.buildPresetChoices(),new e.Separator,{name:"✏️ "+c.t("wizard.input_custom_model"),value:{type:"custom"}},new e.Separator,{name:"<- "+c.t("wizard.nav_return"),value:{type:"back"}}],{choice:g}=await this.promptWithHints([{type:"list",name:"choice",message:c.t("wizard.select_tool_model",{tool:n.displayName}),choices:u}]);if("back"===g.type)return!1;if("default"===g.type)o.setToolModel(i,null);else if("preset"===g.type)o.setToolModel(i,r(g.preset));else if("custom"===g.type){const{model:t}=await e.prompt([{type:"input",name:"model",message:c.t("wizard.input_custom_model"),default:!l&&p?p:void 0}]),a=(t||"").trim();o.setToolModel(i,a?this.singleModelOverride(a):null)}else if("fetch"===g.type){const n=o.getApiKey();if(!n)return console.log(t.red("\n"+c.t("wizard.api_key_required"))),!1;const r=a(c.t("wizard.fetching_models")).start(),s=await w(n);let d;if(r.stop(),s.ok&&s.models.length>0){const{model:t}=await e.prompt([{type:"list",name:"model",message:c.t("wizard.select_fetched_model"),pageSize:20,choices:[...s.models,new e.Separator,{name:"<- "+c.t("wizard.nav_return"),value:"__back__"}]}]);if("__back__"===t)return!1;d=t}else{console.log(t.yellow("\n"+c.t("wizard.fetch_models_failed")));const{model:a}=await e.prompt([{type:"input",name:"model",message:c.t("wizard.input_custom_model"),default:!l&&p?p:void 0}]);d=(a||"").trim()}o.setToolModel(i,d?this.singleModelOverride(d):null)}return console.log(t.green("\n✓ "+c.t("wizard.models_saved"))),l&&console.log(t.gray("💡 "+c.t("wizard.claude_model_hint"))),!0}async loadConfig(i){const n=o.getApiKey(),r=o.getModelsForTool(i);if(!n)return console.log(t.red("\n"+c.t("wizard.api_key_required"))),console.log(t.yellow(c.t("wizard.please_config_api_key_first"))),void await e.prompt([{type:"input",name:"continue",message:c.t("wizard.press_enter")}]);if(!this.apiKeyValid){const o=a(c.t("wizard.validating_api_key")).start();if(!(await g(n)).valid)return o.fail(c.t("wizard.api_key_invalid")),console.log(t.red("\n"+c.t("wizard.please_reconfig_api_key"))),void await e.prompt([{type:"input",name:"continue",message:c.t("wizard.press_enter")}]);this.apiKeyValid=!0,o.stop()}const s=a(c.t("wizard.loading_config")).start();try{l.loadPrivateConfig(i,o.getApiKeyForTool(i)||n,r),s.succeed(c.t("wizard.config_loaded",{tool:d[i]?.displayName||i}));const a=d[i]?.command;a&&console.log(t.green("\n"+c.t("wizard.run_tool_hint",{command:a})));const{nextAction:p}=await e.prompt([{type:"list",name:"nextAction",message:c.t("wizard.what_next"),choices:[{name:c.t("wizard.exit_and_start"),value:"exit"},{name:c.t("wizard.continue_config"),value:"continue"}]}]);"exit"===p&&(this.printGoodbye(),process.exit(0))}catch(a){s.fail(c.t("wizard.config_failed")),console.log(t.red(a instanceof Error?a.message:String(a))),await e.prompt([{type:"input",name:"continue",message:c.t("wizard.press_enter")}])}}async unloadConfig(o){const{confirm:i}=await e.prompt([{type:"confirm",name:"confirm",message:c.t("wizard.confirm_unload_config",{tool:d[o]?.displayName||o}),default:!1}]);if(!i)return;const n=a(c.t("wizard.unloading_config")).start();try{l.unloadPrivateConfig(o),n.succeed(c.t("wizard.config_unloaded"));const{nextAction:t}=await e.prompt([{type:"list",name:"nextAction",message:c.t("wizard.what_next"),choices:[{name:c.t("wizard.exit_and_start"),value:"exit"},{name:c.t("wizard.continue_config"),value:"continue"}]}]);"exit"===t&&(this.printGoodbye(),process.exit(0))}catch(a){n.fail(c.t("wizard.config_unload_failed")),console.log(t.red(a instanceof Error?a.message:String(a))),await e.prompt([{type:"input",name:"continue",message:c.t("wizard.press_enter")}])}}async restoreConfig(o){const i=d[o]?.displayName||o,{confirm:n}=await e.prompt([{type:"confirm",name:"confirm",message:c.t("wizard.confirm_restore_config",{tool:i}),default:!1}]);if(!n)return;const r=a(c.t("wizard.restoring_config")).start();try{const e=l.restorePrivateConfig(o).filter(e=>e.result.restored);0===e.length?r.warn(c.t("wizard.restore_no_backup")):(r.succeed(c.t("wizard.config_restored",{tool:i})),e.forEach(e=>console.log(t.gray(` ${e.file} ← ${e.result.from}`))))}catch(e){r.fail(c.t("wizard.config_restore_failed")),console.log(t.red(e instanceof Error?e.message:String(e)))}await e.prompt([{type:"input",name:"continue",message:c.t("wizard.press_enter")}])}async run(){const e=o.getConfig();if(e.api_key){const t=await g(e.api_key);this.apiKeyValid=t.valid}else this.apiKeyValid=!1;e.api_key&&this.apiKeyValid?await this.showMainMenu():await this.runFirstTimeSetup()}async showMainMenu(){for(;;){this.resetScreen();const a=o.getApiKey()||"",i=a.length>4?"sk-****"+a.slice(-4):"****";console.log(t.gray(` 🔑 API Key: ${i}`)+t.green(" ✓")),console.log("");const n=l.getSupportedTools().map(e=>({name:"🛠️ "+e.displayName,value:{type:"tool",tool:e.name}})),r=[new e.Separator(v("── "+c.t("wizard.select_tool")+" ──")),...n,new e.Separator(t.gray("── "+c.t("wizard.settings")+" ──")),{name:"🔑 "+c.t("wizard.menu_change_api_key"),value:{type:"apikey"}},{name:"🌐 "+c.t("wizard.menu_config_language"),value:{type:"language"}},new e.Separator,{name:"x "+c.t("wizard.nav_exit"),value:{type:"exit"}}],{action:s}=await this.promptWithHints([{type:"list",name:"action",message:"🛠️ "+c.t("wizard.select_tool"),choices:r}]);if("exit"===s.type)this.printGoodbye(),process.exit(0);else if("tool"===s.type)await this.configureTool(s.tool);else if("apikey"===s.type){await this.configApiKey();const e=o.getApiKey();if(e){const t=await g(e);this.apiKeyValid=t.valid}else this.apiKeyValid=!1}else"language"===s.type&&await this.configLanguage()}}}export const wizard=Wizard.getInstance();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/lib/wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
{
|
|
2
|
+
"cli": {
|
|
3
|
+
"title": "Coding Tool Helper (vibecli)",
|
|
4
|
+
"usage": "Usage: vibecli <command> [options]",
|
|
5
|
+
"commands": "Commands:",
|
|
6
|
+
"examples": "Examples:",
|
|
7
|
+
"error_unknown": "Unknown command: {{command}}",
|
|
8
|
+
"error_general": "Error:"
|
|
9
|
+
},
|
|
10
|
+
"commands": {
|
|
11
|
+
"help": "Show help information",
|
|
12
|
+
"version": "Show version information",
|
|
13
|
+
"init": "Run interactive initialization wizard",
|
|
14
|
+
"lang": "Language management",
|
|
15
|
+
"auth": "API key management",
|
|
16
|
+
"doctor": "Health check",
|
|
17
|
+
"enter": "Configuration management",
|
|
18
|
+
"tool": "Tool management",
|
|
19
|
+
"status": "Show current configuration status",
|
|
20
|
+
"setup": "One-shot setup (--key auto-detects capable tools / --claudekey --codexkey for per-tool keys)"
|
|
21
|
+
},
|
|
22
|
+
"lang": {
|
|
23
|
+
"current": "Current language",
|
|
24
|
+
"show_usage": "vibecli lang show - Show current language",
|
|
25
|
+
"set_usage": "vibecli lang set <zh_CN|en_US> - Set language",
|
|
26
|
+
"changed": "Language changed from {{from}} to {{to}}",
|
|
27
|
+
"invalid": "Unsupported language: {{lang}}",
|
|
28
|
+
"available": "Available languages"
|
|
29
|
+
},
|
|
30
|
+
"auth": {
|
|
31
|
+
"set_usage": "vibecli auth <token> - Set API key",
|
|
32
|
+
"token_prompt": "Enter API key",
|
|
33
|
+
"token_required": "API key cannot be empty",
|
|
34
|
+
"saved": "API key saved",
|
|
35
|
+
"revoke_confirm": "Are you sure you want to revoke the API key?",
|
|
36
|
+
"revoked": "API key revoked",
|
|
37
|
+
"not_revoked": "Revoke operation cancelled",
|
|
38
|
+
"get_api_key_hint": "To obtain API Key, please visit: {{url}}"
|
|
39
|
+
},
|
|
40
|
+
"wizard": {
|
|
41
|
+
"banner_subtitle": "Manage Your Claude Code and Other Coding Tools",
|
|
42
|
+
"welcome": "Welcome to Coding Tool Helper!",
|
|
43
|
+
"privacy_note": "We value your privacy. All configurations are stored locally only.",
|
|
44
|
+
"select_language": "Select interface language",
|
|
45
|
+
"input_api_key": "Enter API key",
|
|
46
|
+
"api_key_input_hint": "Please enter your API Key (input will be hidden)",
|
|
47
|
+
"input_your_api_key": "Please input your API key here, Enter to confirm:",
|
|
48
|
+
"update_api_key": "Update API key",
|
|
49
|
+
"api_key_required": "API key cannot be empty",
|
|
50
|
+
"select_tool": "Select coding tool to configure",
|
|
51
|
+
"tool_not_installed": "{{tool}} is not installed",
|
|
52
|
+
"install_tool_confirm": "Install now?",
|
|
53
|
+
"installing_tool": "Installing tool...",
|
|
54
|
+
"tool_installed": "Tool installed successfully",
|
|
55
|
+
"install_failed": "Installation failed",
|
|
56
|
+
"install_skipped": "Installation skipped. You can install manually later.",
|
|
57
|
+
"menu_title": "Management Menu",
|
|
58
|
+
"select_action": "Select action",
|
|
59
|
+
"retry_input": "Retry input",
|
|
60
|
+
"action_load_config": "Apply Configuration - (Apply your API configuration to {{tool}})",
|
|
61
|
+
"action_unload_config": "Remove Configuration - (Remove API configuration from {{tool}})",
|
|
62
|
+
"action_view_config": "Current Configuration",
|
|
63
|
+
"action_back": "Back",
|
|
64
|
+
"action_exit": "Exit",
|
|
65
|
+
"goodbye": "Goodbye!",
|
|
66
|
+
"loading_config": "Applying configuration...",
|
|
67
|
+
"config_loaded": "Configuration applied — you can use {{tool}} for coding now.",
|
|
68
|
+
"run_tool_hint": "✅ Now run `{{command}}` to start using your config",
|
|
69
|
+
"config_failed": "Failed to load configuration",
|
|
70
|
+
"confirm_unload_config": "Are you sure you want to remove configuration from {{tool}}?",
|
|
71
|
+
"unloading_config": "Removing configuration...",
|
|
72
|
+
"config_unloaded": "Configuration removed",
|
|
73
|
+
"config_unload_failed": "Failed to remove configuration",
|
|
74
|
+
"tool_not_supported": "This operation is not supported for this tool",
|
|
75
|
+
"missing_config": "Missing required configuration (API key)",
|
|
76
|
+
"current_config": "Current Configuration",
|
|
77
|
+
"config_language": "Interface Language",
|
|
78
|
+
"config_api_key": "API Key",
|
|
79
|
+
"config_models": "Model Configuration",
|
|
80
|
+
"config_title": "Configuration",
|
|
81
|
+
"not_set": "Not set",
|
|
82
|
+
"press_enter": "Press Enter to continue",
|
|
83
|
+
"main_menu_title": "Main Menu",
|
|
84
|
+
"current_config_status": "Current Configuration Status:",
|
|
85
|
+
"api_key_set": "Set",
|
|
86
|
+
"api_key_get_hint": "To obtain API Key, please visit: {{url}}",
|
|
87
|
+
"menu_config_language": "Language",
|
|
88
|
+
"menu_change_api_key": "Change API Key",
|
|
89
|
+
"menu_load_to_tool": "Apply config to a tool",
|
|
90
|
+
"current_model": "Current model",
|
|
91
|
+
"settings": "Settings",
|
|
92
|
+
"menu_config_api_key": "API Key Configuration",
|
|
93
|
+
"menu_config_models": "Model Configuration (Configure Haiku/Sonnet/Opus/Reasoning models)",
|
|
94
|
+
"menu_config_tool": "Coding Tool Configuration (Apply API to Claude Code/Codex and more)",
|
|
95
|
+
"menu_exit": "Exit",
|
|
96
|
+
"select_operation": "Select operation:",
|
|
97
|
+
"goodbye_message": "Goodbye! Configure a tool with vibecli, then run its command in your terminal to start coding!",
|
|
98
|
+
"lang_auto_zh": "Detected a Chinese system locale; using the Chinese interface automatically (switch anytime via the main menu or vibecli lang set).",
|
|
99
|
+
"goodbye_message_tools": "Goodbye! Type {{commands}} in your terminal to start coding!",
|
|
100
|
+
"goodbye_claude_hint": "You can also install the Claude extension in VSCode to use Claude Code.",
|
|
101
|
+
"nav_return": "Return",
|
|
102
|
+
"nav_exit": "Exit",
|
|
103
|
+
"current_active": "Current",
|
|
104
|
+
"operation_hint": "Operation Hint",
|
|
105
|
+
"hint_navigate": "↑↓ Navigate",
|
|
106
|
+
"hint_confirm": "Enter Confirm",
|
|
107
|
+
"detected_config_title": "Claude Code Current Configuration",
|
|
108
|
+
"vibecli_config_title": "Vibecli Configuration",
|
|
109
|
+
"claude_code_config_title": "Claude Code Current Global Configuration",
|
|
110
|
+
"config_synced": "Configuration synced",
|
|
111
|
+
"config_out_of_sync": "Configuration out of sync, refresh recommended",
|
|
112
|
+
"config_not_loaded": "{{tool}} configuration not applied",
|
|
113
|
+
"action_refresh_config": "Refresh Configuration - (Update {{tool}} configuration)",
|
|
114
|
+
"global_config_warning": "⚠️ Warning: You are modifying {{tool}} global configuration, changes will affect all workspaces",
|
|
115
|
+
"global_label": "Global",
|
|
116
|
+
"set_success": "Set successfully",
|
|
117
|
+
"start_tool": "Start {{tool}} - (Recommended to open a new terminal in your workspace and run {{shell}})",
|
|
118
|
+
"starting_tool": "Starting...",
|
|
119
|
+
"validating_api_key": "Validating API Key...",
|
|
120
|
+
"api_key_valid": "API Key is valid",
|
|
121
|
+
"api_key_success_hint": "Entering main menu...",
|
|
122
|
+
"api_key_invalid": "API Key is invalid or expired",
|
|
123
|
+
"api_key_network_error": "Network error, please check your connection",
|
|
124
|
+
"please_config_api_key_first": "Please configure a valid API Key first",
|
|
125
|
+
"please_reconfig_api_key": "Please reconfigure your API Key",
|
|
126
|
+
"select_model_config": "Select model",
|
|
127
|
+
"recommended": "Recommended",
|
|
128
|
+
"other_models": "Other Models",
|
|
129
|
+
"custom_model_input": "Custom model input",
|
|
130
|
+
"input_custom_model": "Enter custom model name",
|
|
131
|
+
"input_single_model": "Enter the model name to use (will be applied to all models)",
|
|
132
|
+
"model_haiku": "Haiku Model (Fast)",
|
|
133
|
+
"model_sonnet": "Sonnet Model (Balanced)",
|
|
134
|
+
"model_opus": "Opus Model (Powerful)",
|
|
135
|
+
"model_reasoning": "Reasoning Model (Reasoning)",
|
|
136
|
+
"input_model_name": "Enter model name",
|
|
137
|
+
"models_saved": "Model configuration saved",
|
|
138
|
+
"use_default_model": "Use default model ({{model}})",
|
|
139
|
+
"model_builtin_default": "tool built-in default",
|
|
140
|
+
"select_tool_model": "Select the model for {{tool}}",
|
|
141
|
+
"fetch_models_from_api": "Fetch models from API...",
|
|
142
|
+
"fetching_models": "Fetching model list...",
|
|
143
|
+
"fetch_models_failed": "Failed to fetch models, please enter a model ID manually",
|
|
144
|
+
"select_fetched_model": "Select a model",
|
|
145
|
+
"claude_model_hint": "Tip: inside Claude Code you can switch models anytime with the /model command",
|
|
146
|
+
"action_restore_config": "↩️ Restore {{tool}}'s last config",
|
|
147
|
+
"confirm_restore_config": "Restore {{tool}} to before the last change? (the current state is backed up first, so this is undoable)",
|
|
148
|
+
"restoring_config": "Restoring config...",
|
|
149
|
+
"config_restored": "{{tool}} config restored",
|
|
150
|
+
"restore_no_backup": "No backup to restore",
|
|
151
|
+
"config_restore_failed": "Restore failed",
|
|
152
|
+
"load_config_now": "Apply the configuration to a coding tool now?",
|
|
153
|
+
"load_config_yes": "Yes, apply now",
|
|
154
|
+
"load_config_later": "Maybe later",
|
|
155
|
+
"what_next": "What would you like to do next?",
|
|
156
|
+
"continue_config": "Continue configuring other options",
|
|
157
|
+
"exit_and_start": "Exit and start using",
|
|
158
|
+
"menu_experimental_features": "Experimental Features",
|
|
159
|
+
"experimental_features_title": "Experimental Features",
|
|
160
|
+
"select_experimental_feature": "Select experimental feature to configure",
|
|
161
|
+
"enabled": "Enabled",
|
|
162
|
+
"disabled": "Disabled",
|
|
163
|
+
"enable": "Enable",
|
|
164
|
+
"disable": "Disable",
|
|
165
|
+
"agent_teams_current_status": "Agent Teams Current Status",
|
|
166
|
+
"agent_teams_enabled": "Agent Teams enabled",
|
|
167
|
+
"agent_teams_disabled": "Agent Teams disabled",
|
|
168
|
+
"updating_settings": "Updating settings...",
|
|
169
|
+
"update_failed": "Update failed",
|
|
170
|
+
"custom_model_mode": "Select custom model mode",
|
|
171
|
+
"custom_model_single": "Single model for all roles",
|
|
172
|
+
"custom_model_per_role": "Configure each role separately"
|
|
173
|
+
},
|
|
174
|
+
"doctor": {
|
|
175
|
+
"checking": "Running health check...",
|
|
176
|
+
"check_path": "Check PATH environment variable",
|
|
177
|
+
"check_api_key_network": "Check API Key and network connection",
|
|
178
|
+
"check_api_key": "Check API key",
|
|
179
|
+
"check_tools": "Check installed tools",
|
|
180
|
+
"all_good": "All checks passed!",
|
|
181
|
+
"tool_installed": "Installed",
|
|
182
|
+
"tool_not_found": "Tool not found: {{tool}}",
|
|
183
|
+
"network_error": "Network connection failed",
|
|
184
|
+
"api_key_invalid": "API Key is invalid or expired",
|
|
185
|
+
"api_key_network_ok": "API Key and network validation passed",
|
|
186
|
+
"api_key_missing": "API key not configured",
|
|
187
|
+
"claude_code_installed": "Claude Code is installed",
|
|
188
|
+
"claude_code_not_installed": "Claude Code is not installed. Please download from https://claude.ai/download",
|
|
189
|
+
"suggestions": "Suggestions",
|
|
190
|
+
"check_git_env": "Check Git environment",
|
|
191
|
+
"git_not_installed": "Git is not installed. Please download from https://git-scm.com/downloads",
|
|
192
|
+
"results_title": "Health Check Results:",
|
|
193
|
+
"no_tools_installed": "No tools installed",
|
|
194
|
+
"suggestion_auth": "Run \"vibecli auth\" to configure API Key",
|
|
195
|
+
"suggestion_interactive": "Run \"vibecli\" to enter interactive setup"
|
|
196
|
+
},
|
|
197
|
+
"preset": {
|
|
198
|
+
"claude_mix": "Claude Mix",
|
|
199
|
+
"minimax_m25": "MiniMax-M2.5",
|
|
200
|
+
"minimax_m27": "MiniMax-M2.7",
|
|
201
|
+
"gpt54": "GPT-5.4",
|
|
202
|
+
"kimi_k25": "Kimi-K2.5",
|
|
203
|
+
"qwen36_plus": "Qwen3.6-Plus",
|
|
204
|
+
"glm5": "GLM-5"
|
|
205
|
+
},
|
|
206
|
+
"status": {
|
|
207
|
+
"title": "Current Status",
|
|
208
|
+
"api_key": "API Key",
|
|
209
|
+
"base_url": "Base URL",
|
|
210
|
+
"language": "Language",
|
|
211
|
+
"models": "Models",
|
|
212
|
+
"tools": "Tools",
|
|
213
|
+
"config_loaded": "Config applied",
|
|
214
|
+
"config_not_loaded": "Config not applied",
|
|
215
|
+
"tool_key_label": "{{tool}} dedicated key"
|
|
216
|
+
},
|
|
217
|
+
"messages": {
|
|
218
|
+
"initializing": "Initializing...",
|
|
219
|
+
"args": "Arguments:",
|
|
220
|
+
"first_run": "First run detected, starting initialization wizard...",
|
|
221
|
+
"config_saved": "Configuration saved",
|
|
222
|
+
"env_vars_cleared": "Detected {{vars}} in your shell environment and removed them (they would override the config vibecli writes). Restart your terminal to apply the shell profile change."
|
|
223
|
+
},
|
|
224
|
+
"config": {
|
|
225
|
+
"profile_list_title": "Profiles",
|
|
226
|
+
"preset_list_title": "Custom presets",
|
|
227
|
+
"backup_list_title": "Config backups",
|
|
228
|
+
"profile_active_label": "active",
|
|
229
|
+
"profile_invalid_name": "Invalid profile name: {{name}}",
|
|
230
|
+
"preset_invalid_name": "Invalid preset name: {{name}}",
|
|
231
|
+
"profile_exists": "Profile already exists: {{name}}",
|
|
232
|
+
"profile_created": "Profile created: {{name}}",
|
|
233
|
+
"profile_activated": "Active profile: {{name}}",
|
|
234
|
+
"profile_deleted": "Profile deleted: {{name}}",
|
|
235
|
+
"profile_cannot_delete_last": "Cannot delete the last remaining profile",
|
|
236
|
+
"preset_saved": "Custom preset saved: {{name}}",
|
|
237
|
+
"preset_applied": "Custom preset applied: {{name}}",
|
|
238
|
+
"preset_deleted": "Custom preset deleted: {{name}}",
|
|
239
|
+
"preset_not_found": "Custom preset not found: {{name}}",
|
|
240
|
+
"backup_created": "Backup created: {{path}}",
|
|
241
|
+
"backup_restored": "Backup restored: {{name}}",
|
|
242
|
+
"backup_restore_missing_name": "Specify a backup name to restore",
|
|
243
|
+
"backup_companion_missing": "Backup is missing its encrypted secret companion ({{path}}). Restore aborted to avoid api_key drift.",
|
|
244
|
+
"profile_delete_confirm": "Delete profile {{name}}? This removes its api_key from the keystore.",
|
|
245
|
+
"profile_delete_dry_run": "Would delete profile {{name}}",
|
|
246
|
+
"profile_delete_aborted": "Profile deletion cancelled",
|
|
247
|
+
"backup_restore_confirm": "Restore backup {{name}}? Current config and api_key will be overwritten.",
|
|
248
|
+
"backup_restore_dry_run": "Would restore backup {{name}}",
|
|
249
|
+
"backup_restore_aborted": "Backup restore cancelled",
|
|
250
|
+
"unknown_command": "Unknown command: {{command}}",
|
|
251
|
+
"usage_hint": "Usage: vibecli config [profile|preset|backup|tool-model|<tool-name>] [...]",
|
|
252
|
+
"tool_config_loaded": "{{tool}} configuration loaded",
|
|
253
|
+
"unknown_action": "Unknown action: {{action}}",
|
|
254
|
+
"unknown_tool": "Unknown tool: {{tool}}",
|
|
255
|
+
"empty_list": "no entries",
|
|
256
|
+
"requires_argument": "This command requires an argument in non-interactive mode",
|
|
257
|
+
"tool_model_list_title": "Per-tool model overrides",
|
|
258
|
+
"tool_model_set": "Set {{slot}} model for {{tool}} to {{model}}",
|
|
259
|
+
"tool_model_cleared": "Cleared model override for {{tool}}",
|
|
260
|
+
"tool_model_usage": "Usage: vibecli config tool-model set <tool> [slot] <model>",
|
|
261
|
+
"confirm_restore": "Restore {{tool}} to before the last change? (the current state is backed up first)",
|
|
262
|
+
"config_restored": "{{tool}} config restored",
|
|
263
|
+
"restore_no_backup": "{{tool}} has no backup to restore",
|
|
264
|
+
"tool_backups_title": "{{tool}} config backups"
|
|
265
|
+
},
|
|
266
|
+
"logs": {
|
|
267
|
+
"directory": "Logs directory: {{dir}}",
|
|
268
|
+
"files_title": "Log files",
|
|
269
|
+
"no_files": "No log files yet"
|
|
270
|
+
},
|
|
271
|
+
"completion": {
|
|
272
|
+
"header": "# vibecli shell completion",
|
|
273
|
+
"instructions_bash": "Save this output to ~/.vibecli-completion.bash and add 'source ~/.vibecli-completion.bash' to your shell rc.",
|
|
274
|
+
"instructions_zsh": "Save this output to ~/.vibecli-completion.zsh and add 'source ~/.vibecli-completion.zsh' to your shell rc.",
|
|
275
|
+
"instructions_fish": "Save this output to ~/.config/fish/completions/vibecli.fish",
|
|
276
|
+
"unsupported_shell": "Unsupported shell: {{shell}} (supported: bash, zsh, fish)"
|
|
277
|
+
},
|
|
278
|
+
"bench": {
|
|
279
|
+
"running": "Running benchmark requests...",
|
|
280
|
+
"result_title": "Benchmark result",
|
|
281
|
+
"samples": "samples",
|
|
282
|
+
"median": "median",
|
|
283
|
+
"average": "average",
|
|
284
|
+
"min": "min",
|
|
285
|
+
"max": "max",
|
|
286
|
+
"errors": "errors",
|
|
287
|
+
"missing_api_key": "Configure an API key first via 'vibecli auth'"
|
|
288
|
+
},
|
|
289
|
+
"update": {
|
|
290
|
+
"checking": "Checking for updates...",
|
|
291
|
+
"current": "Current version: {{version}}",
|
|
292
|
+
"latest": "Latest version: {{version}}",
|
|
293
|
+
"up_to_date": "You are on the latest version",
|
|
294
|
+
"available": "A new version is available",
|
|
295
|
+
"fetch_failed": "Failed to fetch latest version: {{error}}",
|
|
296
|
+
"command_hint": "Run: pnpm add -g @vibeapi/api-helper@latest"
|
|
297
|
+
},
|
|
298
|
+
"runtime": {
|
|
299
|
+
"dry_run_label": "[dry-run]",
|
|
300
|
+
"non_interactive_required_token": "An API token is required in non-interactive mode",
|
|
301
|
+
"non_interactive_aborted": "Aborted - missing required input"
|
|
302
|
+
},
|
|
303
|
+
"secret_store": {
|
|
304
|
+
"host_changed": "Stored API key cannot be decrypted on this host. The keystore was likely created under a different user/machine. Re-authenticate via 'vibecli auth' to refresh."
|
|
305
|
+
},
|
|
306
|
+
"setup": {
|
|
307
|
+
"usage": "Usage: vibecli setup --key sk-xxx or vibecli setup --claudekey sk-a --codexkey sk-b",
|
|
308
|
+
"validating": "Validating API key for {{label}}...",
|
|
309
|
+
"invalid_key": "API key for {{label}} is invalid: {{reason}}",
|
|
310
|
+
"probe_failed": "Capability probe for {{label}} failed (network); continuing as if all families are available",
|
|
311
|
+
"key_no_claude": "{{label}} cannot access Claude models (token group excludes Claude); skipped Claude Code",
|
|
312
|
+
"key_no_gpt": "{{label}} cannot access GPT models (token group excludes GPT); skipped Codex",
|
|
313
|
+
"key_no_family": "This key exposes neither Claude nor GPT models; check the token group and retry",
|
|
314
|
+
"skip_no_claude": "This key has no Claude model group; skipped Claude Code",
|
|
315
|
+
"skip_no_gpt": "This key has no GPT model group; skipped Codex",
|
|
316
|
+
"configured": "√ {{tool}} configured (run `{{command}}` to start)",
|
|
317
|
+
"apply_failed": "Failed to write {{tool}} config: {{reason}}",
|
|
318
|
+
"install_hint": " Hint: {{tool}} not detected yet; install via {{install}}",
|
|
319
|
+
"done": "Done: {{count}} tool(s) configured. Type {{commands}} in your terminal to start coding!"
|
|
320
|
+
}
|
|
321
|
+
}
|