tokenmix 0.4.5 → 0.4.7

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
@@ -16,6 +16,9 @@ npx tokenmix claude # install + configure + start Claude Code
16
16
  npx tokenmix aider # configure + start Aider (Python required)
17
17
  npx tokenmix kilo # print Kilo Code VSCode configuration
18
18
  npx tokenmix cline # print Cline VSCode configuration
19
+ npx tokenmix roo # print Roo Code VSCode configuration
20
+ npx tokenmix continue # print Continue config.yaml snippet
21
+ npx tokenmix codex # install + configure + start Codex
19
22
  ```
20
23
 
21
24
  ### Alternative login modes
@@ -34,6 +37,9 @@ npx tokenmix login --key sk-tm-... # supply API key directly (for CI
34
37
  | [Aider](https://github.com/Aider-AI/aider) | `pip install aider-chat` | semi auto |
35
38
  | [Kilo Code](https://github.com/Kilo-Org/kilocode) | VSCode extension | config-only |
36
39
  | [Cline](https://github.com/cline/cline) | VSCode extension | config-only |
40
+ | [Roo Code](https://github.com/RooCodeInc/Roo-Code) | VSCode extension | config-only |
41
+ | [Continue](https://github.com/continuedev/continue) | VSCode / JetBrains | config-only |
42
+ | [Codex](https://github.com/openai/codex) | `npm i -g @openai/codex` | full auto |
37
43
 
38
44
  ## Commands
39
45
 
@@ -51,6 +57,9 @@ tokenmix claude [args...] Launch Claude Code via TokenMix
51
57
  tokenmix aider [args...] Launch Aider via TokenMix
52
58
  tokenmix kilo Print Kilo Code configuration
53
59
  tokenmix cline Print Cline configuration
60
+ tokenmix roo Print Roo Code configuration
61
+ tokenmix continue Print Continue config.yaml snippet
62
+ tokenmix codex [args...] Launch Codex via TokenMix
54
63
  ```
55
64
 
56
65
  ## Language
@@ -0,0 +1,80 @@
1
+ import { commandExists, run, captureRun } from '../utils/exec.js';
2
+ import { t } from '../i18n/index.js';
3
+ const CODEX_BIN = 'codex';
4
+ const CODEX_NPM_PACKAGE = '@openai/codex';
5
+ // Codex custom provider id. Must NOT collide with Codex's reserved built-in
6
+ // provider ids (openai / ollama / lmstudio).
7
+ const PROVIDER_ID = 'tokenmix';
8
+ // Env var Codex reads for the bearer token (the provider's `env_key`). We set it
9
+ // at launch from the user's TokenMix key — nothing is written to ~/.codex.
10
+ const KEY_ENV = 'TOKENMIX_API_KEY';
11
+ async function installCheck() {
12
+ const bin = await commandExists(CODEX_BIN);
13
+ if (!bin) {
14
+ const cmd = `npm install -g ${CODEX_NPM_PACKAGE}`;
15
+ return {
16
+ installed: false,
17
+ hint: t('install.willInstallVia', { cmd }),
18
+ installCmd: cmd,
19
+ };
20
+ }
21
+ try {
22
+ const v = await captureRun(CODEX_BIN, ['--version']);
23
+ return { installed: true, version: v.stdout.trim() };
24
+ }
25
+ catch {
26
+ return { installed: true };
27
+ }
28
+ }
29
+ async function install() {
30
+ await run('npm', ['install', '-g', CODEX_NPM_PACKAGE]);
31
+ }
32
+ async function configure(apiKey, baseUrl, defaultModel) {
33
+ // We do NOT write ~/.codex/config.toml. Codex accepts a whole custom provider
34
+ // via `--config` overrides at launch, and reads the key from the env var named
35
+ // by the provider's env_key — so we pass everything through env and inject the
36
+ // overrides in launch(). This never touches the user's Codex config or login.
37
+ return {
38
+ envVars: {
39
+ [KEY_ENV]: apiKey,
40
+ TOKENMIX_BASE_URL: `${baseUrl}/v1`,
41
+ },
42
+ notes: [t('codex.noteUsing'), t('codex.noteModel', { model: defaultModel })],
43
+ };
44
+ }
45
+ // Build the `--config key=value` overrides that register tokenmix as a custom
46
+ // OpenAI-compatible provider. wire_api MUST be "responses": Codex 0.135+ dropped
47
+ // support for "chat" (openai/codex#7782), and tokenmix's gateway implements the
48
+ // Responses API specifically for Codex clients (POST /v1/responses).
49
+ export function providerOverrides(baseUrl, model) {
50
+ return [
51
+ '--config', `model_provider="${PROVIDER_ID}"`,
52
+ '--config', `model="${model}"`,
53
+ '--config', `model_providers.${PROVIDER_ID}.name="TokenMix"`,
54
+ '--config', `model_providers.${PROVIDER_ID}.base_url="${baseUrl}"`,
55
+ '--config', `model_providers.${PROVIDER_ID}.env_key="${KEY_ENV}"`,
56
+ '--config', `model_providers.${PROVIDER_ID}.wire_api="responses"`,
57
+ ];
58
+ }
59
+ async function launch(args, env) {
60
+ const baseUrl = env.TOKENMIX_BASE_URL;
61
+ // Info-only invocations (`codex --version` / `--help`) reach launch with an
62
+ // empty env (no credentials). Just forward — don't inject a half-built provider.
63
+ if (!baseUrl) {
64
+ await run(CODEX_BIN, args, { env });
65
+ return;
66
+ }
67
+ const model = env.TOKENMIX_DEFAULT_MODEL ?? 'claude-sonnet-4.6';
68
+ // Our overrides go first so user-supplied args (e.g. `--config model=...`) win.
69
+ await run(CODEX_BIN, [...providerOverrides(baseUrl, model), ...args], { env });
70
+ }
71
+ export const CodexAgent = {
72
+ id: 'codex',
73
+ displayName: 'Codex',
74
+ description: 'openai/codex — OpenAI coding agent CLI',
75
+ installMode: 'auto-npm',
76
+ installCheck,
77
+ install,
78
+ configure,
79
+ launch,
80
+ };
@@ -0,0 +1,50 @@
1
+ import { commandExists } from '../utils/exec.js';
2
+ import { t } from '../i18n/index.js';
3
+ async function installCheck() {
4
+ // Continue is a config-only agent (VSCode/JetBrains extension). The CLI cannot
5
+ // install the extension, so we always proceed to configure() and print the
6
+ // config the user pastes into ~/.continue/config.yaml.
7
+ const code = await commandExists('code');
8
+ return {
9
+ installed: true,
10
+ hint: code ? t('continue.hintMarketplace') : t('continue.hintNoVscode'),
11
+ };
12
+ }
13
+ async function configure(apiKey, baseUrl, defaultModel) {
14
+ // Continue is driven by ~/.continue/config.yaml (verified schema: top-level
15
+ // name/version/schema + a `models:` list; each model needs name/provider/model,
16
+ // plus apiBase/apiKey for an OpenAI-compatible endpoint). We PRINT a ready-to-use
17
+ // config rather than write the file, so we never clobber a user's existing
18
+ // ~/.continue/config.yaml (and need no YAML dependency or cleanup step).
19
+ const yaml = [
20
+ 'name: TokenMix',
21
+ 'version: 1.0.0',
22
+ 'schema: v1',
23
+ 'models:',
24
+ ' - name: TokenMix',
25
+ ' provider: openai',
26
+ ` model: ${defaultModel}`,
27
+ ` apiBase: ${baseUrl}/v1`,
28
+ ` apiKey: ${apiKey}`,
29
+ ].join('\n');
30
+ return {
31
+ notes: [
32
+ t('continue.noteNoLauncher'),
33
+ t('continue.noteConfigWith'),
34
+ // Leading '\n' so agent-runner's 2-space note prefix lands on a blank line,
35
+ // keeping the YAML top-level keys at column 0 (valid YAML when pasted).
36
+ '\n' + yaml,
37
+ '',
38
+ t('continue.noteMergeHint'),
39
+ t('continue.noteKeepPrivate'),
40
+ ],
41
+ };
42
+ }
43
+ export const ContinueAgent = {
44
+ id: 'continue',
45
+ displayName: 'Continue',
46
+ description: 'continuedev/continue — VSCode/JetBrains extension (config file)',
47
+ installMode: 'manual-vscode',
48
+ installCheck,
49
+ configure,
50
+ };
@@ -3,6 +3,9 @@ import { ClaudeCodeAgent } from './claude.js';
3
3
  import { AiderAgent } from './aider.js';
4
4
  import { KiloAgent } from './kilo.js';
5
5
  import { ClineAgent } from './cline.js';
6
+ import { RooAgent } from './roo.js';
7
+ import { ContinueAgent } from './continue.js';
8
+ import { CodexAgent } from './codex.js';
6
9
  // Ordered by historical ARPU on tokenmix (highest first). New agents go to the bottom.
7
10
  export const AGENTS = [
8
11
  OpenCodeAgent,
@@ -10,6 +13,9 @@ export const AGENTS = [
10
13
  AiderAgent,
11
14
  KiloAgent,
12
15
  ClineAgent,
16
+ RooAgent,
17
+ ContinueAgent,
18
+ CodexAgent,
13
19
  ];
14
20
  export function findAgent(id) {
15
21
  return AGENTS.find((a) => a.id === id);
@@ -0,0 +1,38 @@
1
+ import { commandExists } from '../utils/exec.js';
2
+ import { t } from '../i18n/index.js';
3
+ async function installCheck() {
4
+ // Roo Code is a config-only agent (VSCode extension, a Cline fork). The CLI
5
+ // cannot install the extension, so we always proceed to configure() and print
6
+ // the settings — the user may also be copying the config for another machine.
7
+ const code = await commandExists('code');
8
+ return {
9
+ installed: true,
10
+ hint: code ? t('roo.hintMarketplace') : t('roo.hintNoVscode'),
11
+ };
12
+ }
13
+ async function configure(apiKey, baseUrl, defaultModel) {
14
+ // Roo Code is configured through its settings panel (API Provider →
15
+ // "OpenAI Compatible"), exactly like Cline. No documented settings.json
16
+ // import, so we only print the field values to enter by hand.
17
+ return {
18
+ notes: [
19
+ t('roo.noteNoLauncher'),
20
+ t('roo.noteConfigWith'),
21
+ '',
22
+ ` Provider: OpenAI Compatible`,
23
+ ` Base URL: ${baseUrl}/v1`,
24
+ ` API Key: ${apiKey}`,
25
+ ` Model ID: ${defaultModel}`,
26
+ '',
27
+ t('roo.noteKeepPrivate'),
28
+ ],
29
+ };
30
+ }
31
+ export const RooAgent = {
32
+ id: 'roo',
33
+ displayName: 'Roo Code',
34
+ description: 'RooCodeInc/Roo-Code — VSCode extension (config-only)',
35
+ installMode: 'manual-vscode',
36
+ installCheck,
37
+ configure,
38
+ };
@@ -29,6 +29,12 @@ function agentDesc(id, fallback) {
29
29
  return t('desc.kilo');
30
30
  case 'cline':
31
31
  return t('desc.cline');
32
+ case 'roo':
33
+ return t('desc.roo');
34
+ case 'continue':
35
+ return t('desc.continue');
36
+ case 'codex':
37
+ return t('desc.codex');
32
38
  default:
33
39
  return fallback;
34
40
  }
@@ -83,6 +83,9 @@ export const en = {
83
83
  'desc.aider': 'Aider-AI/aider — paired-programming CLI (requires Python)',
84
84
  'desc.kilo': 'Kilo-Org/kilocode — VSCode extension (config-only)',
85
85
  'desc.cline': 'cline/cline — VSCode extension (config-only)',
86
+ 'desc.roo': 'RooCodeInc/Roo-Code — VSCode extension (config-only)',
87
+ 'desc.continue': 'continuedev/continue — VSCode/JetBrains extension (config file)',
88
+ 'desc.codex': 'openai/codex — OpenAI coding agent CLI',
86
89
  // install hints
87
90
  'install.willInstallVia': 'Will install via: {cmd}',
88
91
  'aider.hintNeedPython': 'Aider requires Python 3. Install Python 3 from https://python.org/downloads, then come back and run `tokenmix aider` again.',
@@ -115,6 +118,22 @@ export const en = {
115
118
  'cline.noteKeepPrivate': 'Keep this API key private — anyone with it can spend your TokenMix balance.',
116
119
  'cline.hintMarketplace': 'Install "Cline" from the VSCode marketplace, then enter the settings below in its panel.',
117
120
  'cline.hintNoVscode': 'VSCode not detected on PATH. Install VSCode, then add the Cline extension, then use the settings below.',
121
+ // roo configure notes (config-only; technical lines stay verbatim)
122
+ 'roo.noteNoLauncher': 'Roo Code is a VSCode extension and does not have a CLI launcher.',
123
+ 'roo.noteConfigWith': 'Open the Roo Code settings panel (API Provider) and enter:',
124
+ 'roo.noteKeepPrivate': 'Keep this API key private — anyone with it can spend your TokenMix balance.',
125
+ 'roo.hintMarketplace': 'Install "Roo Code" from the VSCode marketplace, then enter the settings below in its panel.',
126
+ 'roo.hintNoVscode': 'VSCode not detected on PATH. Install VSCode, then add the Roo Code extension, then use the settings below.',
127
+ // continue configure notes (config file; YAML lines stay verbatim)
128
+ 'continue.noteNoLauncher': 'Continue is configured via ~/.continue/config.yaml; there is no CLI launcher.',
129
+ 'continue.noteConfigWith': 'Add this model to your ~/.continue/config.yaml:',
130
+ 'continue.noteMergeHint': 'If the file already exists, merge just the entry under `models:` into it.',
131
+ 'continue.noteKeepPrivate': 'Keep this API key private — anyone with it can spend your TokenMix balance.',
132
+ 'continue.hintMarketplace': 'Install "Continue" from the VSCode marketplace, then add the config below.',
133
+ 'continue.hintNoVscode': 'VSCode not detected on PATH. Install VSCode, then add the Continue extension, then use the config below.',
134
+ // codex configure notes (auto-npm CLI; launched with --config provider injection)
135
+ 'codex.noteUsing': 'Codex will use TokenMix via an OpenAI-compatible provider — your ~/.codex/config.toml is left untouched.',
136
+ 'codex.noteModel': 'Default model: {model} — override with `--config model=...`.',
118
137
  // command / option descriptions (--help)
119
138
  'cmd.program': 'Zero-config CLI to use any open-source coding agent with TokenMix as the unified LLM backend.',
120
139
  'cmd.login': 'Log in to TokenMix (default: browser device authorization)',
@@ -217,6 +236,9 @@ export const zh = {
217
236
  'desc.aider': 'Aider-AI/aider — 结对编程 CLI(需要 Python)',
218
237
  'desc.kilo': 'Kilo-Org/kilocode — VSCode 扩展(仅配置)',
219
238
  'desc.cline': 'cline/cline — VSCode 扩展(仅配置)',
239
+ 'desc.roo': 'RooCodeInc/Roo-Code — VSCode 扩展(仅配置)',
240
+ 'desc.continue': 'continuedev/continue — VSCode/JetBrains 扩展(配置文件)',
241
+ 'desc.codex': 'openai/codex — OpenAI 编程 agent CLI',
220
242
  // install hints
221
243
  'install.willInstallVia': '将自动安装:{cmd}',
222
244
  'aider.hintNeedPython': 'Aider 需要 Python 3。请从 https://python.org/downloads 安装 Python 3,然后重新运行 `tokenmix aider`。',
@@ -248,6 +270,19 @@ export const zh = {
248
270
  'cline.noteKeepPrivate': '请妥善保管此 API 密钥 —— 任何人拿到它都能消耗你的 TokenMix 余额。',
249
271
  'cline.hintMarketplace': '从 VSCode 应用市场安装 "Cline",然后在它的设置面板中填入下面的信息。',
250
272
  'cline.hintNoVscode': '未在 PATH 中检测到 VSCode。请先安装 VSCode,再添加 Cline 扩展,然后使用下面的设置。',
273
+ 'roo.noteNoLauncher': 'Roo Code 是 VSCode 扩展,没有 CLI 启动器。',
274
+ 'roo.noteConfigWith': '打开 Roo Code 设置面板(API Provider),填入以下信息:',
275
+ 'roo.noteKeepPrivate': '请妥善保管此 API 密钥 —— 任何人拿到它都能消耗你的 TokenMix 余额。',
276
+ 'roo.hintMarketplace': '从 VSCode 应用市场安装 "Roo Code",然后在它的设置面板中填入下面的信息。',
277
+ 'roo.hintNoVscode': '未在 PATH 中检测到 VSCode。请先安装 VSCode,再添加 Roo Code 扩展,然后使用下面的设置。',
278
+ 'continue.noteNoLauncher': 'Continue 通过 ~/.continue/config.yaml 配置,没有 CLI 启动器。',
279
+ 'continue.noteConfigWith': '将以下模型添加到你的 ~/.continue/config.yaml:',
280
+ 'continue.noteMergeHint': '如果该文件已存在,只需把 `models:` 下的这一项合并进去。',
281
+ 'continue.noteKeepPrivate': '请妥善保管此 API 密钥 —— 任何人拿到它都能消耗你的 TokenMix 余额。',
282
+ 'continue.hintMarketplace': '从 VSCode 应用市场安装 "Continue",然后添加下面的配置。',
283
+ 'continue.hintNoVscode': '未在 PATH 中检测到 VSCode。请先安装 VSCode,再添加 Continue 扩展,然后使用下面的配置。',
284
+ 'codex.noteUsing': 'Codex 将通过 OpenAI 兼容的 provider 使用 TokenMix —— 不会改动你的 ~/.codex/config.toml。',
285
+ 'codex.noteModel': '默认模型:{model} —— 可用 `--config model=...` 覆盖。',
251
286
  // command / option descriptions (--help)
252
287
  'cmd.program': '零配置 CLI:以 TokenMix 作为统一 LLM 后端,驱动任意开源编程 agent。',
253
288
  'cmd.login': '登录 TokenMix(默认:浏览器设备授权)',
@@ -341,6 +376,9 @@ export const ja = {
341
376
  'desc.aider': 'Aider-AI/aider — ペアプログラミング CLI(Python が必要)',
342
377
  'desc.kilo': 'Kilo-Org/kilocode — VSCode 拡張機能(設定のみ)',
343
378
  'desc.cline': 'cline/cline — VSCode 拡張機能(設定のみ)',
379
+ 'desc.roo': 'RooCodeInc/Roo-Code — VSCode 拡張機能(設定のみ)',
380
+ 'desc.continue': 'continuedev/continue — VSCode/JetBrains 拡張機能(設定ファイル)',
381
+ 'desc.codex': 'openai/codex — OpenAI のコーディング agent CLI',
344
382
  'install.willInstallVia': '次の方法でインストールします:{cmd}',
345
383
  'aider.hintNeedPython': 'Aider には Python 3 が必要です。https://python.org/downloads から Python 3 をインストールし、再度 `tokenmix aider` を実行してください。',
346
384
  'aider.hintNotInstalled': 'Aider はインストールされていません。別のターミナルで次を実行してください:\n {cmd}\nその後 `tokenmix aider` を再実行してください — TokenMix のログインは保存済みなので自動的に反映されます。',
@@ -367,6 +405,19 @@ export const ja = {
367
405
  'cline.noteKeepPrivate': 'この API キーは公開しないでください — 入手した人は誰でもあなたの TokenMix 残高を使えます。',
368
406
  'cline.hintMarketplace': 'VSCode マーケットプレイスから "Cline" をインストールし、下の設定をパネルに入力してください。',
369
407
  'cline.hintNoVscode': 'PATH に VSCode が見つかりません。VSCode をインストールし、Cline 拡張機能を追加してから、下の設定を使用してください。',
408
+ 'roo.noteNoLauncher': 'Roo Code は VSCode 拡張機能で、CLI ランチャーはありません。',
409
+ 'roo.noteConfigWith': 'Roo Code の設定パネル(API Provider)を開き、次を入力してください:',
410
+ 'roo.noteKeepPrivate': 'この API キーは公開しないでください — 入手した人は誰でもあなたの TokenMix 残高を使えます。',
411
+ 'roo.hintMarketplace': 'VSCode マーケットプレイスから "Roo Code" をインストールし、下の設定をパネルに入力してください。',
412
+ 'roo.hintNoVscode': 'PATH に VSCode が見つかりません。VSCode をインストールし、Roo Code 拡張機能を追加してから、下の設定を使用してください。',
413
+ 'continue.noteNoLauncher': 'Continue は ~/.continue/config.yaml で設定します。CLI ランチャーはありません。',
414
+ 'continue.noteConfigWith': '次のモデルを ~/.continue/config.yaml に追加してください:',
415
+ 'continue.noteMergeHint': 'ファイルが既にある場合は、`models:` の下のこの項目だけをマージしてください。',
416
+ 'continue.noteKeepPrivate': 'この API キーは公開しないでください — 入手した人は誰でもあなたの TokenMix 残高を使えます。',
417
+ 'continue.hintMarketplace': 'VSCode マーケットプレイスから "Continue" をインストールし、下の設定を追加してください。',
418
+ 'continue.hintNoVscode': 'PATH に VSCode が見つかりません。VSCode をインストールし、Continue 拡張機能を追加してから、下の設定を使用してください。',
419
+ 'codex.noteUsing': 'Codex は OpenAI 互換プロバイダー経由で TokenMix を使用します — ~/.codex/config.toml は変更されません。',
420
+ 'codex.noteModel': 'デフォルトモデル:{model} — `--config model=...` で上書きできます。',
370
421
  'cmd.program': 'TokenMix を統一 LLM バックエンドとして、あらゆるオープンソースのコーディング agent を使うためのゼロ設定 CLI。',
371
422
  'cmd.login': 'TokenMix にログイン(デフォルト:ブラウザでのデバイス認証)',
372
423
  'cmd.loginKey': 'API キーを直接貼り付け(ブラウザ認証をスキップ、CI に便利)',
@@ -459,6 +510,9 @@ export const ko = {
459
510
  'desc.aider': 'Aider-AI/aider — 페어 프로그래밍 CLI (Python 필요)',
460
511
  'desc.kilo': 'Kilo-Org/kilocode — VSCode 확장 (설정 전용)',
461
512
  'desc.cline': 'cline/cline — VSCode 확장 (설정 전용)',
513
+ 'desc.roo': 'RooCodeInc/Roo-Code — VSCode 확장 (설정 전용)',
514
+ 'desc.continue': 'continuedev/continue — VSCode/JetBrains 확장 (설정 파일)',
515
+ 'desc.codex': 'openai/codex — OpenAI 코딩 agent CLI',
462
516
  'install.willInstallVia': '다음 방법으로 설치합니다: {cmd}',
463
517
  'aider.hintNeedPython': 'Aider에는 Python 3가 필요합니다. https://python.org/downloads 에서 Python 3를 설치한 뒤 다시 `tokenmix aider`를 실행하세요.',
464
518
  'aider.hintNotInstalled': 'Aider가 설치되어 있지 않습니다. 다른 터미널에서 다음을 실행하세요:\n {cmd}\n그런 다음 다시 `tokenmix aider`를 실행하세요 — TokenMix 로그인이 이미 저장되어 있어 자동으로 적용됩니다.',
@@ -485,6 +539,19 @@ export const ko = {
485
539
  'cline.noteKeepPrivate': '이 API 키를 비공개로 유지하세요 — 키를 가진 사람은 누구나 당신의 TokenMix 잔액을 쓸 수 있습니다.',
486
540
  'cline.hintMarketplace': 'VSCode 마켓플레이스에서 "Cline"을 설치한 뒤 아래 설정을 패널에 입력하세요.',
487
541
  'cline.hintNoVscode': 'PATH에서 VSCode를 찾을 수 없습니다. VSCode를 설치하고 Cline 확장을 추가한 뒤 아래 설정을 사용하세요.',
542
+ 'roo.noteNoLauncher': 'Roo Code는 VSCode 확장이며 CLI 런처가 없습니다.',
543
+ 'roo.noteConfigWith': 'Roo Code 설정 패널(API Provider)을 열고 다음을 입력하세요:',
544
+ 'roo.noteKeepPrivate': '이 API 키를 비공개로 유지하세요 — 키를 가진 사람은 누구나 당신의 TokenMix 잔액을 쓸 수 있습니다.',
545
+ 'roo.hintMarketplace': 'VSCode 마켓플레이스에서 "Roo Code"를 설치한 뒤 아래 설정을 패널에 입력하세요.',
546
+ 'roo.hintNoVscode': 'PATH에서 VSCode를 찾을 수 없습니다. VSCode를 설치하고 Roo Code 확장을 추가한 뒤 아래 설정을 사용하세요.',
547
+ 'continue.noteNoLauncher': 'Continue는 ~/.continue/config.yaml로 설정하며 CLI 런처가 없습니다.',
548
+ 'continue.noteConfigWith': '다음 모델을 ~/.continue/config.yaml에 추가하세요:',
549
+ 'continue.noteMergeHint': '파일이 이미 있으면 `models:` 아래의 이 항목만 병합하세요.',
550
+ 'continue.noteKeepPrivate': '이 API 키를 비공개로 유지하세요 — 키를 가진 사람은 누구나 당신의 TokenMix 잔액을 쓸 수 있습니다.',
551
+ 'continue.hintMarketplace': 'VSCode 마켓플레이스에서 "Continue"를 설치한 뒤 아래 설정을 추가하세요.',
552
+ 'continue.hintNoVscode': 'PATH에서 VSCode를 찾을 수 없습니다. VSCode를 설치하고 Continue 확장을 추가한 뒤 아래 설정을 사용하세요.',
553
+ 'codex.noteUsing': 'Codex는 OpenAI 호환 provider를 통해 TokenMix를 사용합니다 — ~/.codex/config.toml은 변경되지 않습니다.',
554
+ 'codex.noteModel': '기본 모델: {model} — `--config model=...`으로 재정의할 수 있습니다.',
488
555
  'cmd.program': 'TokenMix를 통합 LLM 백엔드로 사용하여 모든 오픈소스 코딩 agent를 쓰는 제로 설정 CLI.',
489
556
  'cmd.login': 'TokenMix에 로그인 (기본값: 브라우저 기기 인증)',
490
557
  'cmd.loginKey': 'API 키를 직접 붙여넣기 (브라우저 절차 생략, CI에 유용)',
@@ -577,6 +644,9 @@ export const es = {
577
644
  'desc.aider': 'Aider-AI/aider — CLI de programación en pareja (requiere Python)',
578
645
  'desc.kilo': 'Kilo-Org/kilocode — extensión de VSCode (solo configuración)',
579
646
  'desc.cline': 'cline/cline — extensión de VSCode (solo configuración)',
647
+ 'desc.roo': 'RooCodeInc/Roo-Code — extensión de VSCode (solo configuración)',
648
+ 'desc.continue': 'continuedev/continue — extensión de VSCode/JetBrains (archivo de configuración)',
649
+ 'desc.codex': 'openai/codex — CLI del agente de programación de OpenAI',
580
650
  'install.willInstallVia': 'Se instalará mediante: {cmd}',
581
651
  'aider.hintNeedPython': 'Aider requiere Python 3. Instala Python 3 desde https://python.org/downloads y vuelve a ejecutar `tokenmix aider`.',
582
652
  'aider.hintNotInstalled': 'Aider no está instalado. Ejecuta esto en otra terminal:\n {cmd}\nLuego vuelve a ejecutar `tokenmix aider`: tu sesión de TokenMix ya está guardada, así que se detectará automáticamente.',
@@ -603,6 +673,19 @@ export const es = {
603
673
  'cline.noteKeepPrivate': 'Mantén privada esta clave de API: cualquiera que la tenga puede gastar tu saldo de TokenMix.',
604
674
  'cline.hintMarketplace': 'Instala "Cline" desde el marketplace de VSCode y luego introduce la configuración de abajo en su panel.',
605
675
  'cline.hintNoVscode': 'No se detectó VSCode en el PATH. Instala VSCode, añade la extensión Cline y luego usa la configuración de abajo.',
676
+ 'roo.noteNoLauncher': 'Roo Code es una extensión de VSCode y no tiene lanzador de CLI.',
677
+ 'roo.noteConfigWith': 'Abre el panel de configuración de Roo Code (API Provider) e introduce:',
678
+ 'roo.noteKeepPrivate': 'Mantén privada esta clave de API: cualquiera que la tenga puede gastar tu saldo de TokenMix.',
679
+ 'roo.hintMarketplace': 'Instala "Roo Code" desde el marketplace de VSCode y luego introduce la configuración de abajo en su panel.',
680
+ 'roo.hintNoVscode': 'No se detectó VSCode en el PATH. Instala VSCode, añade la extensión Roo Code y luego usa la configuración de abajo.',
681
+ 'continue.noteNoLauncher': 'Continue se configura mediante ~/.continue/config.yaml; no tiene lanzador de CLI.',
682
+ 'continue.noteConfigWith': 'Añade este modelo a tu ~/.continue/config.yaml:',
683
+ 'continue.noteMergeHint': 'Si el archivo ya existe, fusiona solo la entrada bajo `models:`.',
684
+ 'continue.noteKeepPrivate': 'Mantén privada esta clave de API: cualquiera que la tenga puede gastar tu saldo de TokenMix.',
685
+ 'continue.hintMarketplace': 'Instala "Continue" desde el marketplace de VSCode y luego añade la configuración de abajo.',
686
+ 'continue.hintNoVscode': 'No se detectó VSCode en el PATH. Instala VSCode, añade la extensión Continue y luego usa la configuración de abajo.',
687
+ 'codex.noteUsing': 'Codex usará TokenMix mediante un proveedor compatible con OpenAI: tu ~/.codex/config.toml no se modifica.',
688
+ 'codex.noteModel': 'Modelo por defecto: {model} — anúlalo con `--config model=...`.',
606
689
  'cmd.program': 'CLI sin configuración para usar cualquier agent de programación de código abierto con TokenMix como backend LLM unificado.',
607
690
  'cmd.login': 'Inicia sesión en TokenMix (predeterminado: autorización de dispositivo por navegador)',
608
691
  'cmd.loginKey': 'Pega una clave de API directamente (omite el navegador, útil para CI)',
@@ -695,6 +778,9 @@ export const fr = {
695
778
  'desc.aider': 'Aider-AI/aider — CLI de programmation en binôme (nécessite Python)',
696
779
  'desc.kilo': 'Kilo-Org/kilocode — extension VSCode (configuration seule)',
697
780
  'desc.cline': 'cline/cline — extension VSCode (configuration seule)',
781
+ 'desc.roo': 'RooCodeInc/Roo-Code — extension VSCode (configuration seule)',
782
+ 'desc.continue': 'continuedev/continue — extension VSCode/JetBrains (fichier de configuration)',
783
+ 'desc.codex': 'openai/codex — CLI de l’agent de codage d’OpenAI',
698
784
  'install.willInstallVia': 'Sera installé via : {cmd}',
699
785
  'aider.hintNeedPython': 'Aider nécessite Python 3. Installez Python 3 depuis https://python.org/downloads, puis relancez `tokenmix aider`.',
700
786
  'aider.hintNotInstalled': 'Aider n’est pas installé. Exécutez ceci dans un autre terminal :\n {cmd}\nPuis relancez `tokenmix aider` — votre connexion TokenMix est déjà enregistrée, elle sera donc prise en compte automatiquement.',
@@ -721,6 +807,19 @@ export const fr = {
721
807
  'cline.noteKeepPrivate': 'Gardez cette clé API privée — quiconque la détient peut dépenser votre solde TokenMix.',
722
808
  'cline.hintMarketplace': 'Installez « Cline » depuis la marketplace VSCode, puis saisissez les paramètres ci-dessous dans son panneau.',
723
809
  'cline.hintNoVscode': 'VSCode introuvable dans le PATH. Installez VSCode, ajoutez l’extension Cline, puis utilisez les paramètres ci-dessous.',
810
+ 'roo.noteNoLauncher': 'Roo Code est une extension VSCode et n’a pas de lanceur CLI.',
811
+ 'roo.noteConfigWith': 'Ouvrez le panneau de configuration de Roo Code (API Provider) et saisissez :',
812
+ 'roo.noteKeepPrivate': 'Gardez cette clé API privée — quiconque la détient peut dépenser votre solde TokenMix.',
813
+ 'roo.hintMarketplace': 'Installez « Roo Code » depuis la marketplace VSCode, puis saisissez les paramètres ci-dessous dans son panneau.',
814
+ 'roo.hintNoVscode': 'VSCode introuvable dans le PATH. Installez VSCode, ajoutez l’extension Roo Code, puis utilisez les paramètres ci-dessous.',
815
+ 'continue.noteNoLauncher': 'Continue se configure via ~/.continue/config.yaml ; il n’a pas de lanceur CLI.',
816
+ 'continue.noteConfigWith': 'Ajoutez ce modèle à votre ~/.continue/config.yaml :',
817
+ 'continue.noteMergeHint': 'Si le fichier existe déjà, fusionnez uniquement l’entrée sous `models:`.',
818
+ 'continue.noteKeepPrivate': 'Gardez cette clé API privée — quiconque la détient peut dépenser votre solde TokenMix.',
819
+ 'continue.hintMarketplace': 'Installez « Continue » depuis la marketplace VSCode, puis ajoutez la configuration ci-dessous.',
820
+ 'continue.hintNoVscode': 'VSCode introuvable dans le PATH. Installez VSCode, ajoutez l’extension Continue, puis utilisez la configuration ci-dessous.',
821
+ 'codex.noteUsing': 'Codex utilisera TokenMix via un fournisseur compatible OpenAI — votre ~/.codex/config.toml n’est pas modifié.',
822
+ 'codex.noteModel': 'Modèle par défaut : {model} — remplacez-le avec `--config model=...`.',
724
823
  'cmd.program': 'CLI sans configuration pour utiliser n’importe quel agent de codage open source avec TokenMix comme backend LLM unifié.',
725
824
  'cmd.login': 'Se connecter à TokenMix (par défaut : autorisation de l’appareil via le navigateur)',
726
825
  'cmd.loginKey': 'Coller directement une clé API (ignore le navigateur, utile pour la CI)',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tokenmix",
3
- "version": "0.4.5",
3
+ "version": "0.4.7",
4
4
  "description": "Zero-config CLI to use any open-source coding agent with TokenMix as the unified LLM backend.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -28,6 +28,9 @@
28
28
  "aider",
29
29
  "kilo",
30
30
  "cline",
31
+ "roo-code",
32
+ "continue",
33
+ "codex",
31
34
  "coding-agent"
32
35
  ],
33
36
  "license": "MIT",