tokenmix 0.2.4 → 0.3.1

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/README.md CHANGED
@@ -50,6 +50,15 @@ tokenmix aider [args...] Launch Aider via TokenMix
50
50
  tokenmix kilo Print Kilo Code configuration
51
51
  ```
52
52
 
53
+ ## Language
54
+
55
+ The CLI speaks **English and 中文**, auto-detected from your system locale. Force it explicitly with `TOKENMIX_LANG`:
56
+
57
+ ```bash
58
+ TOKENMIX_LANG=zh npx tokenmix doctor # 中文
59
+ TOKENMIX_LANG=en npx tokenmix doctor # English
60
+ ```
61
+
53
62
  ## Configuration Location
54
63
 
55
64
  Your TokenMix credentials are stored locally at:
@@ -1,4 +1,5 @@
1
1
  import { commandExists, run, captureRun } from '../utils/exec.js';
2
+ import { t } from '../i18n/index.js';
2
3
  const AIDER_BIN = 'aider';
3
4
  async function installCheck() {
4
5
  const bin = await commandExists(AIDER_BIN);
@@ -8,13 +9,13 @@ async function installCheck() {
8
9
  if (!py) {
9
10
  return {
10
11
  installed: false,
11
- hint: 'Aider requires Python 3. Install Python 3 from https://python.org/downloads, then come back and run `tokenmix aider` again.',
12
+ hint: t('aider.hintNeedPython'),
12
13
  };
13
14
  }
14
15
  const installCmd = pipx ? 'pipx install aider-chat' : 'pip install aider-chat';
15
16
  return {
16
17
  installed: false,
17
- hint: `Aider is not installed. Run this in another terminal:\n ${installCmd}\nThen come back and run \`tokenmix aider\` again — your TokenMix login is already saved, so it will pick up automatically.`,
18
+ hint: t('aider.hintNotInstalled', { cmd: installCmd }),
18
19
  };
19
20
  }
20
21
  try {
@@ -35,8 +36,8 @@ async function configure(apiKey, baseUrl, defaultModel) {
35
36
  TOKENMIX_DEFAULT_MODEL: defaultModel,
36
37
  },
37
38
  notes: [
38
- `Aider will use TokenMix via OpenAI-compatible endpoint.`,
39
- `Default model: openai/${defaultModel} — override with --model.`,
39
+ t('aider.noteUsing'),
40
+ t('aider.noteModel', { model: defaultModel }),
40
41
  ],
41
42
  };
42
43
  }
@@ -1 +1 @@
1
- {"version":3,"file":"aider.js","sourceRoot":"","sources":["../../src/agents/aider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aider.js","sourceRoot":"","sources":["../../src/agents/aider.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,17 @@ import os from 'os';
2
2
  import path from 'path';
3
3
  import fs from 'fs-extra';
4
4
  import { commandExists, run, captureRun } from '../utils/exec.js';
5
+ import { t } from '../i18n/index.js';
5
6
  const CLAUDE_BIN = 'claude';
6
7
  const CLAUDE_NPM_PACKAGE = '@anthropic-ai/claude-code';
7
8
  async function installCheck() {
8
9
  const bin = await commandExists(CLAUDE_BIN);
9
10
  if (!bin) {
11
+ const cmd = `npm install -g ${CLAUDE_NPM_PACKAGE}`;
10
12
  return {
11
13
  installed: false,
12
- hint: `Will install via: npm install -g ${CLAUDE_NPM_PACKAGE}`,
14
+ hint: t('install.willInstallVia', { cmd }),
15
+ installCmd: cmd,
13
16
  };
14
17
  }
15
18
  try {
@@ -62,12 +65,9 @@ async function configure(apiKey, baseUrl, _defaultModel) {
62
65
  catch {
63
66
  // ignore
64
67
  }
65
- const notes = [
66
- 'Available Claude models via tokenmix: claude-opus-4.7, claude-sonnet-4.6, claude-haiku-4.5',
67
- 'Run `tokenmix models --type chat` for the full list.',
68
- ];
68
+ const notes = [t('claude.noteModels'), t('claude.noteFullList')];
69
69
  if (replacingForeign) {
70
- notes.unshift('⚠ Replaced your existing Anthropic settings in ~/.claude/settings.json.', ' `tokenmix logout` removes TokenMix\'s entries (your old key cannot be auto-restored).', '');
70
+ notes.unshift(t('claude.noteReplaced1'), t('claude.noteReplaced2'), '');
71
71
  }
72
72
  return {
73
73
  configPath: settingsPath,
@@ -120,7 +120,7 @@ async function cleanup() {
120
120
  return {
121
121
  reverted: true,
122
122
  configPath: settingsPath,
123
- note: 'If you had your own ANTHROPIC_API_KEY here before, re-add it.',
123
+ note: t('claude.cleanupNote'),
124
124
  };
125
125
  }
126
126
  export const ClaudeCodeAgent = {
@@ -1 +1 @@
1
- {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/agents/claude.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { commandExists } from '../utils/exec.js';
2
+ import { t } from '../i18n/index.js';
2
3
  async function installCheck() {
3
4
  // Kilo Code is a config-only agent (VSCode extension). The CLI cannot install
4
5
  // the extension on the user's behalf, so we always proceed to `configure()` and
@@ -7,9 +8,7 @@ async function installCheck() {
7
8
  const code = await commandExists('code');
8
9
  return {
9
10
  installed: true,
10
- hint: code
11
- ? 'Install "Kilo Code" from the VSCode marketplace, then paste the snippet below into its settings.'
12
- : 'VSCode not detected on PATH. Install VSCode, then add the Kilo Code extension, then use the snippet below.',
11
+ hint: code ? t('kilo.hintMarketplace') : t('kilo.hintNoVscode'),
13
12
  };
14
13
  }
15
14
  async function configure(apiKey, baseUrl, defaultModel) {
@@ -17,15 +16,15 @@ async function configure(apiKey, baseUrl, defaultModel) {
17
16
  // We print the configuration values for the user to paste into Kilo settings.
18
17
  return {
19
18
  notes: [
20
- 'Kilo Code is a VSCode extension and does not have a CLI launcher.',
21
- 'Configure Kilo Code with the following:',
19
+ t('kilo.noteNoLauncher'),
20
+ t('kilo.noteConfigWith'),
22
21
  '',
23
22
  ` Provider: OpenAI Compatible`,
24
23
  ` Base URL: ${baseUrl}/v1`,
25
24
  ` API Key: ${apiKey}`,
26
25
  ` Default Model: ${defaultModel}`,
27
26
  '',
28
- 'Or paste this JSON snippet into Kilo Code settings (Settings → Providers → JSON):',
27
+ t('kilo.notePasteJson'),
29
28
  '',
30
29
  JSON.stringify({
31
30
  provider: 'openai-compatible',
@@ -34,7 +33,7 @@ async function configure(apiKey, baseUrl, defaultModel) {
34
33
  defaultModelId: defaultModel,
35
34
  }, null, 2),
36
35
  '',
37
- 'Keep this API key private — anyone with it can spend your TokenMix balance.',
36
+ t('kilo.noteKeepPrivate'),
38
37
  ],
39
38
  };
40
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"kilo.js","sourceRoot":"","sources":["../../src/agents/kilo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAEhD,KAAK,UAAU,YAAY;IACzB,8EAA8E;IAC9E,gFAAgF;IAChF,2EAA2E;IAC3E,iDAAiD;IACjD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,OAAO;QACL,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI;YACR,CAAC,CAAC,kGAAkG;YACpG,CAAC,CAAC,4GAA4G;KACjH,CAAA;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,OAAe,EACf,YAAoB;IAEpB,6DAA6D;IAC7D,8EAA8E;IAC9E,OAAO;QACL,KAAK,EAAE;YACL,mEAAmE;YACnE,yCAAyC;YACzC,EAAE;YACF,oCAAoC;YACpC,oBAAoB,OAAO,KAAK;YAChC,oBAAoB,MAAM,EAAE;YAC5B,oBAAoB,YAAY,EAAE;YAClC,EAAE;YACF,mFAAmF;YACnF,EAAE;YACF,IAAI,CAAC,SAAS,CACZ;gBACE,QAAQ,EAAE,mBAAmB;gBAC7B,aAAa,EAAE,GAAG,OAAO,KAAK;gBAC9B,YAAY,EAAE,MAAM;gBACpB,cAAc,EAAE,YAAY;aAC7B,EACD,IAAI,EACJ,CAAC,CACF;YACD,EAAE;YACF,6EAA6E;SAC9E;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAoB;IACxC,EAAE,EAAE,MAAM;IACV,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,oDAAoD;IACjE,WAAW,EAAE,eAAe;IAC5B,YAAY;IACZ,SAAS;CACV,CAAA"}
1
+ {"version":3,"file":"kilo.js","sourceRoot":"","sources":["../../src/agents/kilo.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AAEpC,KAAK,UAAU,YAAY;IACzB,8EAA8E;IAC9E,gFAAgF;IAChF,2EAA2E;IAC3E,iDAAiD;IACjD,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAA;IACxC,OAAO;QACL,SAAS,EAAE,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC;KAChE,CAAA;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,MAAc,EACd,OAAe,EACf,YAAoB;IAEpB,6DAA6D;IAC7D,8EAA8E;IAC9E,OAAO;QACL,KAAK,EAAE;YACL,CAAC,CAAC,qBAAqB,CAAC;YACxB,CAAC,CAAC,qBAAqB,CAAC;YACxB,EAAE;YACF,oCAAoC;YACpC,oBAAoB,OAAO,KAAK;YAChC,oBAAoB,MAAM,EAAE;YAC5B,oBAAoB,YAAY,EAAE;YAClC,EAAE;YACF,CAAC,CAAC,oBAAoB,CAAC;YACvB,EAAE;YACF,IAAI,CAAC,SAAS,CACZ;gBACE,QAAQ,EAAE,mBAAmB;gBAC7B,aAAa,EAAE,GAAG,OAAO,KAAK;gBAC9B,YAAY,EAAE,MAAM;gBACpB,cAAc,EAAE,YAAY;aAC7B,EACD,IAAI,EACJ,CAAC,CACF;YACD,EAAE;YACF,CAAC,CAAC,sBAAsB,CAAC;SAC1B;KACF,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAoB;IACxC,EAAE,EAAE,MAAM;IACV,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,oDAAoD;IACjE,WAAW,EAAE,eAAe;IAC5B,YAAY;IACZ,SAAS;CACV,CAAA"}
@@ -2,6 +2,7 @@ import os from 'os';
2
2
  import path from 'path';
3
3
  import fs from 'fs-extra';
4
4
  import { commandExists, run, captureRun } from '../utils/exec.js';
5
+ import { t } from '../i18n/index.js';
5
6
  const OPENCODE_BIN = 'opencode';
6
7
  const OPENCODE_NPM_PACKAGE = 'opencode-ai';
7
8
  // OpenCode config search order (lowest to highest priority):
@@ -16,9 +17,11 @@ function configPath() {
16
17
  async function installCheck() {
17
18
  const bin = await commandExists(OPENCODE_BIN);
18
19
  if (!bin) {
20
+ const cmd = `npm install -g ${OPENCODE_NPM_PACKAGE}`;
19
21
  return {
20
22
  installed: false,
21
- hint: `Will install via: npm install -g ${OPENCODE_NPM_PACKAGE}`,
23
+ hint: t('install.willInstallVia', { cmd }),
24
+ installCmd: cmd,
22
25
  };
23
26
  }
24
27
  try {
@@ -70,8 +73,8 @@ async function configure(apiKey, baseUrl, defaultModel) {
70
73
  return {
71
74
  configPath: filePath,
72
75
  notes: [
73
- `Default model set to tokenmix/${defaultModel}`,
74
- `To switch models, run \`tokenmix models\` or use \`/connect\` inside OpenCode.`,
76
+ t('opencode.noteModel', { model: defaultModel }),
77
+ t('opencode.noteSwitch'),
75
78
  ],
76
79
  };
77
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/agents/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/agents/opencode.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -1,4 +1,7 @@
1
1
  import { buildProgram } from './program.js';
2
+ import { detectLocale, setLocale } from './i18n/index.js';
3
+ // Resolve UI language once, before any command output.
4
+ setLocale(detectLocale());
2
5
  const program = buildProgram();
3
6
  program.parseAsync(process.argv).catch((err) => {
4
7
  const e = err;
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,MAAM,OAAO,GAAG,YAAY,EAAE,CAAA;AAE9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,MAAM,CAAC,GAAG,GAA2B,CAAA;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEzD,uDAAuD;AACvD,SAAS,CAAC,YAAY,EAAE,CAAC,CAAA;AAEzB,MAAM,OAAO,GAAG,YAAY,EAAE,CAAA;AAE9B,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IACtD,MAAM,CAAC,GAAG,GAA2B,CAAA;IACrC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,GAAG,CAAC,CAAA;IAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
@@ -2,6 +2,7 @@ import { logger } from '../utils/logger.js';
2
2
  import { readConfig, apiBaseUrl } from '../config/store.js';
3
3
  import { confirm } from '../utils/prompt.js';
4
4
  import { AGENTS } from '../agents/registry.js';
5
+ import { t } from '../i18n/index.js';
5
6
  const DEFAULT_MODEL = 'claude-sonnet-4.6';
6
7
  // Flags that are pure information requests meant for the underlying agent binary.
7
8
  // For these we must NOT rewrite global config or require login — just forward them.
@@ -30,7 +31,7 @@ export function registerAgentCommands(program, runner = runAgent) {
30
31
  }
31
32
  program
32
33
  .command(`${agent.id} [args...]`)
33
- .description(`Configure and launch ${agent.displayName} via TokenMix`)
34
+ .description(t('cmd.agent', { name: agent.displayName }))
34
35
  .allowUnknownOption(true)
35
36
  .passThroughOptions(true) // forward --version / --help / --any to the underlying agent
36
37
  .action(async (args = []) => {
@@ -44,7 +45,7 @@ export async function runAgent(agent, args) {
44
45
  if (agent.launch && isInfoOnlyInvocation(args)) {
45
46
  const status = await agent.installCheck();
46
47
  if (!status.installed) {
47
- logger.warn(status.hint || `${agent.displayName} is not installed.`);
48
+ logger.warn(status.hint || t('agent.notInstalled', { name: agent.displayName }));
48
49
  process.exit(1);
49
50
  }
50
51
  await launchOrExit(agent.launch, args, {});
@@ -52,7 +53,7 @@ export async function runAgent(agent, args) {
52
53
  }
53
54
  const cfg = await readConfig();
54
55
  if (!cfg.apiKey) {
55
- logger.error('Not logged in. Run `tokenmix login` first.');
56
+ logger.error(t('common.notLoggedIn'));
56
57
  process.exit(1);
57
58
  }
58
59
  const baseUrl = apiBaseUrl(cfg);
@@ -61,13 +62,13 @@ export async function runAgent(agent, args) {
61
62
  const status = await agent.installCheck();
62
63
  if (!status.installed) {
63
64
  if (agent.install) {
64
- const shouldInstall = await confirm(`${agent.displayName} is not installed. Install now?`, true);
65
+ const shouldInstall = await confirm(t('agent.installPrompt', { name: agent.displayName }), true);
65
66
  if (!shouldInstall) {
66
67
  if (status.hint)
67
68
  logger.warn(status.hint);
68
69
  process.exit(1);
69
70
  }
70
- logger.step(`Installing ${agent.displayName} ...`);
71
+ logger.step(t('agent.installing', { name: agent.displayName }));
71
72
  try {
72
73
  await agent.install();
73
74
  }
@@ -75,26 +76,27 @@ export async function runAgent(agent, args) {
75
76
  // The most common global-install failure worldwide is npm lacking
76
77
  // permission to write to the global prefix. Give actionable guidance
77
78
  // instead of dumping execa's raw error.
78
- logger.error(`Could not install ${agent.displayName} automatically.`);
79
- logger.info('This usually means npm cannot write to its global folder. Options:');
80
- logger.info(' • Use a Node version manager (nvm / fnm / volta) — then global installs need no sudo, or');
81
- if (status.hint)
82
- logger.info(` • Install it yourself: ${status.hint.replace(/^Will install via:\s*/, '')}`);
83
- logger.info('Then re-run this command — your TokenMix login is already saved.');
79
+ logger.error(t('agent.installFailed', { name: agent.displayName }));
80
+ logger.info(t('agent.installFailHint1'));
81
+ logger.info(t('agent.installFailHint2'));
82
+ if (status.installCmd) {
83
+ logger.info(t('agent.installFailHint3', { cmd: status.installCmd }));
84
+ }
85
+ logger.info(t('agent.installFailHint4'));
84
86
  process.exit(1);
85
87
  }
86
- logger.success(`${agent.displayName} installed.`);
88
+ logger.success(t('agent.installed', { name: agent.displayName }));
87
89
  }
88
90
  else {
89
- logger.warn(status.hint || `${agent.displayName} is not installable from the CLI.`);
91
+ logger.warn(status.hint || t('agent.notInstallable', { name: agent.displayName }));
90
92
  process.exit(1);
91
93
  }
92
94
  }
93
95
  // 2. Configure with tokenmix credentials.
94
- logger.step(`Configuring ${agent.displayName} ...`);
96
+ logger.step(t('agent.configuring', { name: agent.displayName }));
95
97
  const result = await agent.configure(cfg.apiKey, baseUrl, defaultModel);
96
98
  if (result.configPath) {
97
- logger.success(`Wrote ${result.configPath}`);
99
+ logger.success(t('agent.wrote', { path: result.configPath }));
98
100
  }
99
101
  if (result.notes && result.notes.length > 0) {
100
102
  for (const note of result.notes) {
@@ -107,10 +109,10 @@ export async function runAgent(agent, args) {
107
109
  }
108
110
  // 3. Launch (or stop if the agent has no CLI launcher).
109
111
  if (!agent.launch) {
110
- logger.info(`${agent.displayName} configuration ready.`);
112
+ logger.info(t('agent.configReady', { name: agent.displayName }));
111
113
  return;
112
114
  }
113
- logger.step(`Launching ${agent.displayName} ...`);
115
+ logger.step(t('agent.launching', { name: agent.displayName }));
114
116
  const env = {
115
117
  ...(result.envVars ?? {}),
116
118
  TOKENMIX_DEFAULT_MODEL: defaultModel,
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/commands/agent-runner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-runner.js","sourceRoot":"","sources":["../../src/commands/agent-runner.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { logger } from '../utils/logger.js';
2
2
  import { openOrHint } from '../utils/browser.js';
3
3
  import { readConfig } from '../config/store.js';
4
+ import { t } from '../i18n/index.js';
4
5
  // v0.1: balance lookup over API requires a user JWT, which we do not yet have
5
6
  // (the CLI uses an API Key today). We open the dashboard instead.
6
7
  // Once the device-flow login lands in the backend, this will hit /api/user/wallet directly.
@@ -8,10 +9,10 @@ const DASHBOARD_URL = 'https://tokenmix.ai/dashboard';
8
9
  export async function balanceCommand() {
9
10
  const cfg = await readConfig();
10
11
  if (!cfg.apiKey) {
11
- logger.error('Not logged in. Run `tokenmix login` first.');
12
+ logger.error(t('common.notLoggedIn'));
12
13
  process.exit(1);
13
14
  }
14
- logger.step(`Opening dashboard to view balance: ${DASHBOARD_URL}`);
15
+ logger.step(t('balance.opening', { url: DASHBOARD_URL }));
15
16
  await openOrHint(DASHBOARD_URL);
16
17
  }
17
18
  //# sourceMappingURL=balance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,8EAA8E;AAC9E,kEAAkE;AAClE,4FAA4F;AAC5F,MAAM,aAAa,GAAG,+BAA+B,CAAA;AAErD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAA;IAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,sCAAsC,aAAa,EAAE,CAAC,CAAA;IAClE,MAAM,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"balance.js","sourceRoot":"","sources":["../../src/commands/balance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AAEpC,8EAA8E;AAC9E,kEAAkE;AAClE,4FAA4F;AAC5F,MAAM,aAAa,GAAG,+BAA+B,CAAA;AAErD,MAAM,CAAC,KAAK,UAAU,cAAc;IAClC,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAA;IAC9B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAA;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC,CAAC,CAAA;IACzD,MAAM,UAAU,CAAC,aAAa,CAAC,CAAA;AACjC,CAAC"}
@@ -3,6 +3,7 @@ import { logger } from '../utils/logger.js';
3
3
  import { readConfig, apiBaseUrl } from '../config/store.js';
4
4
  import { verifyApiKey } from '../api/client.js';
5
5
  import { AGENTS } from '../agents/registry.js';
6
+ import { t } from '../i18n/index.js';
6
7
  function maskKey(key) {
7
8
  if (key.length <= 12)
8
9
  return key;
@@ -10,35 +11,35 @@ function maskKey(key) {
10
11
  }
11
12
  export async function doctorCommand() {
12
13
  console.log();
13
- console.log(chalk.bold('TokenMix CLI diagnostic'));
14
+ console.log(chalk.bold(t('doctor.title')));
14
15
  console.log();
15
16
  const cfg = await readConfig();
16
- console.log(chalk.bold('Credentials:'));
17
+ console.log(chalk.bold(t('doctor.credentials')));
17
18
  if (cfg.apiKey) {
18
- logger.success(`API key: ${chalk.cyan(maskKey(cfg.apiKey))}`);
19
- logger.success(`API base: ${chalk.cyan(apiBaseUrl(cfg))}`);
19
+ logger.success(`${t('doctor.apiKeyLabel')} ${chalk.cyan(maskKey(cfg.apiKey))}`);
20
+ logger.success(`${t('doctor.apiBaseLabel')} ${chalk.cyan(apiBaseUrl(cfg))}`);
20
21
  const ok = await verifyApiKey(cfg.apiKey, apiBaseUrl(cfg));
21
22
  if (ok) {
22
- logger.success('API key is valid.');
23
+ logger.success(t('doctor.keyValid'));
23
24
  }
24
25
  else {
25
- logger.error('API key did NOT validate. Run `tokenmix login` again.');
26
+ logger.error(t('doctor.keyInvalid'));
26
27
  }
27
28
  }
28
29
  else {
29
- logger.warn('Not logged in. Run `tokenmix login`.');
30
+ logger.warn(t('doctor.notLoggedIn'));
30
31
  }
31
32
  console.log();
32
- console.log(chalk.bold('Agent install status:'));
33
+ console.log(chalk.bold(t('doctor.agentStatus')));
33
34
  for (const a of AGENTS) {
34
35
  const r = await a.installCheck();
35
36
  if (r.installed) {
36
- logger.success(`${a.displayName.padEnd(14)} installed${r.version ? ` (${chalk.dim(r.version)})` : ''}`);
37
+ logger.success(`${a.displayName.padEnd(14)} ${t('doctor.installed')}${r.version ? ` (${chalk.dim(r.version)})` : ''}`);
37
38
  if (r.hint)
38
39
  console.log(` ${chalk.dim(r.hint)}`);
39
40
  }
40
41
  else {
41
- logger.warn(`${a.displayName.padEnd(14)} not installed`);
42
+ logger.warn(`${a.displayName.padEnd(14)} ${t('doctor.notInstalled')}`);
42
43
  if (r.hint)
43
44
  console.log(` ${chalk.dim(r.hint)}`);
44
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1,23 +1,33 @@
1
1
  import chalk from 'chalk';
2
2
  import { AGENTS } from '../agents/registry.js';
3
- const MODE_LABEL = {
4
- 'auto-npm': 'auto (npm)',
5
- 'auto-pip': 'semi (pip)',
6
- 'manual-vscode': 'config-only (VSCode)',
7
- manual: 'manual',
8
- };
3
+ import { t } from '../i18n/index.js';
4
+ // Resolved at call time so it follows the active locale.
5
+ function modeLabel(mode) {
6
+ switch (mode) {
7
+ case 'auto-npm':
8
+ return t('list.modeAutoNpm');
9
+ case 'auto-pip':
10
+ return t('list.modeAutoPip');
11
+ case 'manual-vscode':
12
+ return t('list.modeManualVscode');
13
+ case 'manual':
14
+ return t('list.modeManual');
15
+ default:
16
+ return mode;
17
+ }
18
+ }
9
19
  export async function listCommand() {
10
20
  console.log();
11
- console.log(chalk.bold('Supported agents:'));
21
+ console.log(chalk.bold(t('list.title')));
12
22
  console.log();
13
23
  for (const a of AGENTS) {
14
24
  const id = chalk.cyan(a.id.padEnd(10));
15
- const mode = chalk.dim(`[${MODE_LABEL[a.installMode] ?? a.installMode}]`);
25
+ const mode = chalk.dim(`[${modeLabel(a.installMode)}]`);
16
26
  console.log(` ${id} ${a.displayName.padEnd(14)} ${mode}`);
17
27
  console.log(` ${chalk.dim(a.description)}`);
18
28
  }
19
29
  console.log();
20
- console.log(chalk.dim('Usage: tokenmix <agent> [args...]'));
30
+ console.log(chalk.dim(t('list.usage')));
21
31
  console.log();
22
32
  }
23
33
  //# sourceMappingURL=list.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE9C,MAAM,UAAU,GAA2B;IACzC,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,sBAAsB;IACvC,MAAM,EAAE,QAAQ;CACjB,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAC5C,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC,CAAA;QACzE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC,CAAA;IAC3D,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAA;AAEpC,yDAAyD;AACzD,SAAS,SAAS,CAAC,IAAY;IAC7B,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAA;QAC9B,KAAK,UAAU;YACb,OAAO,CAAC,CAAC,kBAAkB,CAAC,CAAA;QAC9B,KAAK,eAAe;YAClB,OAAO,CAAC,CAAC,uBAAuB,CAAC,CAAA;QACnC,KAAK,QAAQ;YACX,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAA;QAC7B;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACxC,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;QACvD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QAC1D,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,CAAC,GAAG,EAAE,CAAA;IACb,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IACvC,OAAO,CAAC,GAAG,EAAE,CAAA;AACf,CAAC"}