tokenmix 0.4.8 → 0.4.10
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 +6 -0
- package/dist/agents/codex.js +1 -0
- package/dist/agents/goose.js +53 -0
- package/dist/agents/qwen.js +61 -0
- package/dist/agents/registry.js +4 -0
- package/dist/commands/agent-runner.js +15 -0
- package/dist/commands/list.js +4 -0
- package/dist/i18n/messages.js +50 -0
- package/package.json +3 -1
package/README.md
CHANGED
|
@@ -28,6 +28,8 @@ npx tokenmix cline # print Cline VSCode configuration
|
|
|
28
28
|
npx tokenmix roo # print Roo Code VSCode configuration
|
|
29
29
|
npx tokenmix continue # print Continue config.yaml snippet
|
|
30
30
|
npx tokenmix codex # install + configure + start Codex
|
|
31
|
+
npx tokenmix qwen # install + configure + start Qwen Code
|
|
32
|
+
npx tokenmix goose # configure + start Goose (install it first)
|
|
31
33
|
```
|
|
32
34
|
|
|
33
35
|
### Alternative login modes
|
|
@@ -49,6 +51,8 @@ npx tokenmix login --key sk-tm-... # supply API key directly (for CI
|
|
|
49
51
|
| [Roo Code](https://github.com/RooCodeInc/Roo-Code) | VSCode extension | config-only |
|
|
50
52
|
| [Continue](https://github.com/continuedev/continue) | VSCode / JetBrains | config-only |
|
|
51
53
|
| [Codex](https://github.com/openai/codex) | `npm i -g @openai/codex` | full auto |
|
|
54
|
+
| [Qwen Code](https://github.com/QwenLM/qwen-code) | `npm i -g @qwen-code/qwen-code` | full auto |
|
|
55
|
+
| [Goose](https://github.com/block/goose) | [install script](https://block.github.io/goose) | semi auto |
|
|
52
56
|
|
|
53
57
|
## Commands
|
|
54
58
|
|
|
@@ -69,6 +73,8 @@ tokenmix cline Print Cline configuration
|
|
|
69
73
|
tokenmix roo Print Roo Code configuration
|
|
70
74
|
tokenmix continue Print Continue config.yaml snippet
|
|
71
75
|
tokenmix codex [args...] Launch Codex via TokenMix
|
|
76
|
+
tokenmix qwen [args...] Launch Qwen Code via TokenMix
|
|
77
|
+
tokenmix goose [args...] Launch Goose via TokenMix
|
|
72
78
|
```
|
|
73
79
|
|
|
74
80
|
## Language
|
package/dist/agents/codex.js
CHANGED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { commandExists, run, captureRun } from '../utils/exec.js';
|
|
2
|
+
import { t } from '../i18n/index.js';
|
|
3
|
+
const GOOSE_BIN = 'goose';
|
|
4
|
+
// Goose ships as a Rust binary via an official install script. We do NOT auto-run
|
|
5
|
+
// a `curl | bash`; we print it so the user installs it deliberately.
|
|
6
|
+
const GOOSE_INSTALL = 'curl -fsSL https://github.com/block/goose/releases/download/stable/download_cli.sh | bash';
|
|
7
|
+
async function installCheck() {
|
|
8
|
+
const bin = await commandExists(GOOSE_BIN);
|
|
9
|
+
if (!bin) {
|
|
10
|
+
return {
|
|
11
|
+
installed: false,
|
|
12
|
+
hint: t('goose.hintInstall', { cmd: GOOSE_INSTALL }),
|
|
13
|
+
installCmd: GOOSE_INSTALL,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const v = await captureRun(GOOSE_BIN, ['--version']);
|
|
18
|
+
return { installed: true, version: v.stdout.trim() };
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return { installed: true };
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
async function configure(apiKey, baseUrl, defaultModel) {
|
|
25
|
+
// Goose reads GOOSE_PROVIDER/GOOSE_MODEL + OPENAI_HOST/OPENAI_API_KEY. NOTE:
|
|
26
|
+
// OPENAI_HOST is the BARE host — Goose appends /v1/chat/completions itself, so we
|
|
27
|
+
// pass baseUrl WITHOUT /v1 (unlike every other agent). GOOSE_DISABLE_KEYRING
|
|
28
|
+
// avoids an interactive keyring prompt. Verified end-to-end against tokenmix.
|
|
29
|
+
return {
|
|
30
|
+
envVars: {
|
|
31
|
+
GOOSE_PROVIDER: 'openai',
|
|
32
|
+
GOOSE_MODEL: defaultModel,
|
|
33
|
+
OPENAI_HOST: baseUrl,
|
|
34
|
+
OPENAI_API_KEY: apiKey,
|
|
35
|
+
GOOSE_DISABLE_KEYRING: '1',
|
|
36
|
+
},
|
|
37
|
+
notes: [t('goose.noteUsing'), t('goose.noteModel', { model: defaultModel })],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async function launch(args, env) {
|
|
41
|
+
// Pure pass-through: `tokenmix goose run -t "..."` → `goose run -t "..."` with our
|
|
42
|
+
// env. No flag injection, so info-only (`goose --version`) needs no special-casing.
|
|
43
|
+
await run(GOOSE_BIN, args, { env });
|
|
44
|
+
}
|
|
45
|
+
export const GooseAgent = {
|
|
46
|
+
id: 'goose',
|
|
47
|
+
displayName: 'Goose',
|
|
48
|
+
description: 'block/goose — on-machine AI agent (OpenAI-compatible)',
|
|
49
|
+
installMode: 'manual',
|
|
50
|
+
installCheck,
|
|
51
|
+
configure,
|
|
52
|
+
launch,
|
|
53
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { commandExists, run, captureRun } from '../utils/exec.js';
|
|
2
|
+
import { t } from '../i18n/index.js';
|
|
3
|
+
const QWEN_BIN = 'qwen';
|
|
4
|
+
const QWEN_NPM_PACKAGE = '@qwen-code/qwen-code';
|
|
5
|
+
async function installCheck() {
|
|
6
|
+
const bin = await commandExists(QWEN_BIN);
|
|
7
|
+
if (!bin) {
|
|
8
|
+
const cmd = `npm install -g ${QWEN_NPM_PACKAGE}`;
|
|
9
|
+
return {
|
|
10
|
+
installed: false,
|
|
11
|
+
hint: t('install.willInstallVia', { cmd }),
|
|
12
|
+
installCmd: cmd,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
const v = await captureRun(QWEN_BIN, ['--version']);
|
|
17
|
+
return { installed: true, version: v.stdout.trim() };
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return { installed: true };
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
async function install() {
|
|
24
|
+
await run('npm', ['install', '-g', `${QWEN_NPM_PACKAGE}@latest`]);
|
|
25
|
+
}
|
|
26
|
+
async function configure(apiKey, baseUrl, defaultModel) {
|
|
27
|
+
// Qwen Code (a Gemini CLI fork) reads OPENAI_API_KEY / OPENAI_BASE_URL /
|
|
28
|
+
// OPENAI_MODEL when launched with `--auth-type openai` — VERIFIED end-to-end
|
|
29
|
+
// against tokenmix (`qwen -p` replied via the gateway). We pass these via env
|
|
30
|
+
// at launch and never touch the user's ~/.qwen/settings.json.
|
|
31
|
+
return {
|
|
32
|
+
envVars: {
|
|
33
|
+
OPENAI_API_KEY: apiKey,
|
|
34
|
+
OPENAI_BASE_URL: `${baseUrl}/v1`,
|
|
35
|
+
OPENAI_MODEL: defaultModel,
|
|
36
|
+
},
|
|
37
|
+
notes: [t('qwen.noteUsing'), t('qwen.noteModel', { model: defaultModel })],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async function launch(args, env) {
|
|
41
|
+
// Info-only (`qwen --version` / `--help`) reaches launch with an empty env —
|
|
42
|
+
// just forward, don't force an auth mode.
|
|
43
|
+
if (!env.OPENAI_BASE_URL) {
|
|
44
|
+
await run(QWEN_BIN, args, { env });
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
// Force OpenAI auth mode (Qwen OAuth was retired 2026-04-15) so it uses our env.
|
|
48
|
+
// Our flag goes first; user args follow and can override.
|
|
49
|
+
await run(QWEN_BIN, ['--auth-type', 'openai', ...args], { env });
|
|
50
|
+
}
|
|
51
|
+
export const QwenAgent = {
|
|
52
|
+
id: 'qwen',
|
|
53
|
+
displayName: 'Qwen Code',
|
|
54
|
+
description: 'QwenLM/qwen-code — terminal coding agent (OpenAI-compatible)',
|
|
55
|
+
installMode: 'auto-npm',
|
|
56
|
+
minNode: 22,
|
|
57
|
+
installCheck,
|
|
58
|
+
install,
|
|
59
|
+
configure,
|
|
60
|
+
launch,
|
|
61
|
+
};
|
package/dist/agents/registry.js
CHANGED
|
@@ -6,6 +6,8 @@ import { ClineAgent } from './cline.js';
|
|
|
6
6
|
import { RooAgent } from './roo.js';
|
|
7
7
|
import { ContinueAgent } from './continue.js';
|
|
8
8
|
import { CodexAgent } from './codex.js';
|
|
9
|
+
import { QwenAgent } from './qwen.js';
|
|
10
|
+
import { GooseAgent } from './goose.js';
|
|
9
11
|
// Ordered by historical ARPU on tokenmix (highest first). New agents go to the bottom.
|
|
10
12
|
export const AGENTS = [
|
|
11
13
|
OpenCodeAgent,
|
|
@@ -16,6 +18,8 @@ export const AGENTS = [
|
|
|
16
18
|
RooAgent,
|
|
17
19
|
ContinueAgent,
|
|
18
20
|
CodexAgent,
|
|
21
|
+
QwenAgent,
|
|
22
|
+
GooseAgent,
|
|
19
23
|
];
|
|
20
24
|
export function findAgent(id) {
|
|
21
25
|
return AGENTS.find((a) => a.id === id);
|
|
@@ -4,6 +4,11 @@ import { confirm } from '../utils/prompt.js';
|
|
|
4
4
|
import { AGENTS } from '../agents/registry.js';
|
|
5
5
|
import { t } from '../i18n/index.js';
|
|
6
6
|
const DEFAULT_MODEL = 'claude-sonnet-4.6';
|
|
7
|
+
// Major version of the running Node (e.g. 22 from "v22.9.0"). Gates agents whose
|
|
8
|
+
// binary needs a newer Node than this process (Codex / Qwen Code require 22).
|
|
9
|
+
export function nodeMajor() {
|
|
10
|
+
return parseInt(process.versions.node.split('.')[0], 10);
|
|
11
|
+
}
|
|
7
12
|
// Flags that are pure information requests meant for the underlying agent binary.
|
|
8
13
|
// For these we must NOT rewrite global config or require login — just forward them.
|
|
9
14
|
const INFO_ONLY_FLAGS = new Set(['--version', '-V', '--help', '-h']);
|
|
@@ -58,6 +63,16 @@ export async function runAgent(agent, args) {
|
|
|
58
63
|
}
|
|
59
64
|
const baseUrl = apiBaseUrl(cfg);
|
|
60
65
|
const defaultModel = cfg.defaultModel || DEFAULT_MODEL;
|
|
66
|
+
// Refuse early with a friendly message if the agent's binary needs a newer Node
|
|
67
|
+
// than we're running on (Codex/Qwen need 22) — avoids a cryptic npm/install error.
|
|
68
|
+
if (agent.minNode && nodeMajor() < agent.minNode) {
|
|
69
|
+
logger.error(t('agent.needsNode', {
|
|
70
|
+
name: agent.displayName,
|
|
71
|
+
min: agent.minNode,
|
|
72
|
+
cur: process.versions.node,
|
|
73
|
+
}));
|
|
74
|
+
process.exit(1);
|
|
75
|
+
}
|
|
61
76
|
// 1. Check install status.
|
|
62
77
|
const status = await agent.installCheck();
|
|
63
78
|
if (!status.installed) {
|
package/dist/commands/list.js
CHANGED
package/dist/i18n/messages.js
CHANGED
|
@@ -28,6 +28,7 @@ export const en = {
|
|
|
28
28
|
// agent install / configure / launch
|
|
29
29
|
'agent.notInstalled': '{name} is not installed.',
|
|
30
30
|
'agent.notInstallable': '{name} is not installable from the CLI.',
|
|
31
|
+
'agent.needsNode': '{name} needs Node {min}+ (you have Node {cur}). Upgrade Node (nvm / fnm / volta), then re-run — your TokenMix login is saved.',
|
|
31
32
|
'agent.installPrompt': '{name} is not installed. Install now?',
|
|
32
33
|
'agent.installing': 'Installing {name} ...',
|
|
33
34
|
'agent.installed': '{name} installed.',
|
|
@@ -86,6 +87,8 @@ export const en = {
|
|
|
86
87
|
'desc.roo': 'RooCodeInc/Roo-Code — VSCode extension (config-only)',
|
|
87
88
|
'desc.continue': 'continuedev/continue — VSCode/JetBrains extension (config file)',
|
|
88
89
|
'desc.codex': 'openai/codex — OpenAI coding agent CLI',
|
|
90
|
+
'desc.qwen': 'QwenLM/qwen-code — terminal coding agent (OpenAI-compatible)',
|
|
91
|
+
'desc.goose': 'block/goose — on-machine AI agent (OpenAI-compatible)',
|
|
89
92
|
// install hints
|
|
90
93
|
'install.willInstallVia': 'Will install via: {cmd}',
|
|
91
94
|
'aider.hintNeedPython': 'Aider requires Python 3. Install Python 3 from https://python.org/downloads, then come back and run `tokenmix aider` again.',
|
|
@@ -134,6 +137,13 @@ export const en = {
|
|
|
134
137
|
// codex configure notes (auto-npm CLI; launched with --config provider injection)
|
|
135
138
|
'codex.noteUsing': 'Codex will use TokenMix via an OpenAI-compatible provider — your ~/.codex/config.toml is left untouched.',
|
|
136
139
|
'codex.noteModel': 'Default model: {model} — override with `--config model=...`.',
|
|
140
|
+
// qwen configure notes (env-based like aider; launched with --auth-type openai)
|
|
141
|
+
'qwen.noteUsing': 'Qwen Code will use TokenMix via its OpenAI-compatible mode — your ~/.qwen/settings.json is left untouched.',
|
|
142
|
+
'qwen.noteModel': 'Default model: {model} — override with OPENAI_MODEL or `qwen --model`.',
|
|
143
|
+
// goose configure notes (env-based; Goose appends /v1/chat/completions to OPENAI_HOST)
|
|
144
|
+
'goose.noteUsing': 'Goose will use TokenMix as its OpenAI provider — its keyring/config is left untouched.',
|
|
145
|
+
'goose.noteModel': 'Default model: {model} — override with GOOSE_MODEL.',
|
|
146
|
+
'goose.hintInstall': 'Goose is not installed. Install it (see https://block.github.io/goose), then re-run `tokenmix goose`:\n {cmd}',
|
|
137
147
|
// command / option descriptions (--help)
|
|
138
148
|
'cmd.program': 'Zero-config CLI to use any open-source coding agent with TokenMix as the unified LLM backend.',
|
|
139
149
|
'cmd.login': 'Log in to TokenMix (default: browser device authorization)',
|
|
@@ -182,6 +192,7 @@ export const zh = {
|
|
|
182
192
|
// agent install / configure / launch
|
|
183
193
|
'agent.notInstalled': '{name} 尚未安装。',
|
|
184
194
|
'agent.notInstallable': '{name} 无法通过 CLI 安装。',
|
|
195
|
+
'agent.needsNode': '{name} 需要 Node {min}+(你的是 Node {cur})。请升级 Node(nvm / fnm / volta)后重新运行 —— 你的 TokenMix 登录已保存。',
|
|
185
196
|
'agent.installPrompt': '{name} 尚未安装。现在安装?',
|
|
186
197
|
'agent.installing': '正在安装 {name} ...',
|
|
187
198
|
'agent.installed': '{name} 安装完成。',
|
|
@@ -240,6 +251,8 @@ export const zh = {
|
|
|
240
251
|
'desc.roo': 'RooCodeInc/Roo-Code — VSCode 扩展(仅配置)',
|
|
241
252
|
'desc.continue': 'continuedev/continue — VSCode/JetBrains 扩展(配置文件)',
|
|
242
253
|
'desc.codex': 'openai/codex — OpenAI 编程 agent CLI',
|
|
254
|
+
'desc.qwen': 'QwenLM/qwen-code — 终端编程 agent(OpenAI 兼容)',
|
|
255
|
+
'desc.goose': 'block/goose — 本机 AI agent(OpenAI 兼容)',
|
|
243
256
|
// install hints
|
|
244
257
|
'install.willInstallVia': '将自动安装:{cmd}',
|
|
245
258
|
'aider.hintNeedPython': 'Aider 需要 Python 3。请从 https://python.org/downloads 安装 Python 3,然后重新运行 `tokenmix aider`。',
|
|
@@ -284,6 +297,11 @@ export const zh = {
|
|
|
284
297
|
'continue.hintNoVscode': '未在 PATH 中检测到 VSCode。请先安装 VSCode,再添加 Continue 扩展,然后使用下面的配置。',
|
|
285
298
|
'codex.noteUsing': 'Codex 将通过 OpenAI 兼容的 provider 使用 TokenMix —— 不会改动你的 ~/.codex/config.toml。',
|
|
286
299
|
'codex.noteModel': '默认模型:{model} —— 可用 `--config model=...` 覆盖。',
|
|
300
|
+
'qwen.noteUsing': 'Qwen Code 将通过其 OpenAI 兼容模式使用 TokenMix —— 不会改动你的 ~/.qwen/settings.json。',
|
|
301
|
+
'qwen.noteModel': '默认模型:{model} —— 可用 OPENAI_MODEL 或 `qwen --model` 覆盖。',
|
|
302
|
+
'goose.noteUsing': 'Goose 将以 TokenMix 作为其 OpenAI provider —— 不会改动它的 keyring/配置。',
|
|
303
|
+
'goose.noteModel': '默认模型:{model} —— 可用 GOOSE_MODEL 覆盖。',
|
|
304
|
+
'goose.hintInstall': 'Goose 未安装。请先安装(见 https://block.github.io/goose),然后重新运行 `tokenmix goose`:\n {cmd}',
|
|
287
305
|
// command / option descriptions (--help)
|
|
288
306
|
'cmd.program': '零配置 CLI:以 TokenMix 作为统一 LLM 后端,驱动任意开源编程 agent。',
|
|
289
307
|
'cmd.login': '登录 TokenMix(默认:浏览器设备授权)',
|
|
@@ -330,6 +348,7 @@ export const ja = {
|
|
|
330
348
|
'login.tryAgain': '再試行しますか?',
|
|
331
349
|
'agent.notInstalled': '{name} はインストールされていません。',
|
|
332
350
|
'agent.notInstallable': '{name} は CLI からインストールできません。',
|
|
351
|
+
'agent.needsNode': '{name} には Node {min}+ が必要です(現在 Node {cur})。Node をアップグレード(nvm / fnm / volta)してから再実行してください —— TokenMix のログインは保存済みです。',
|
|
333
352
|
'agent.installPrompt': '{name} はインストールされていません。今すぐインストールしますか?',
|
|
334
353
|
'agent.installing': '{name} をインストールしています ...',
|
|
335
354
|
'agent.installed': '{name} をインストールしました。',
|
|
@@ -381,6 +400,8 @@ export const ja = {
|
|
|
381
400
|
'desc.roo': 'RooCodeInc/Roo-Code — VSCode 拡張機能(設定のみ)',
|
|
382
401
|
'desc.continue': 'continuedev/continue — VSCode/JetBrains 拡張機能(設定ファイル)',
|
|
383
402
|
'desc.codex': 'openai/codex — OpenAI のコーディング agent CLI',
|
|
403
|
+
'desc.qwen': 'QwenLM/qwen-code — ターミナルのコーディング agent(OpenAI 互換)',
|
|
404
|
+
'desc.goose': 'block/goose — オンマシン AI agent(OpenAI 互換)',
|
|
384
405
|
'install.willInstallVia': '次の方法でインストールします:{cmd}',
|
|
385
406
|
'aider.hintNeedPython': 'Aider には Python 3 が必要です。https://python.org/downloads から Python 3 をインストールし、再度 `tokenmix aider` を実行してください。',
|
|
386
407
|
'aider.hintNotInstalled': 'Aider はインストールされていません。別のターミナルで次を実行してください:\n {cmd}\nその後 `tokenmix aider` を再実行してください — TokenMix のログインは保存済みなので自動的に反映されます。',
|
|
@@ -420,6 +441,11 @@ export const ja = {
|
|
|
420
441
|
'continue.hintNoVscode': 'PATH に VSCode が見つかりません。VSCode をインストールし、Continue 拡張機能を追加してから、下の設定を使用してください。',
|
|
421
442
|
'codex.noteUsing': 'Codex は OpenAI 互換プロバイダー経由で TokenMix を使用します — ~/.codex/config.toml は変更されません。',
|
|
422
443
|
'codex.noteModel': 'デフォルトモデル:{model} — `--config model=...` で上書きできます。',
|
|
444
|
+
'qwen.noteUsing': 'Qwen Code は OpenAI 互換モードで TokenMix を使用します —— ~/.qwen/settings.json は変更されません。',
|
|
445
|
+
'qwen.noteModel': 'デフォルトモデル:{model} — OPENAI_MODEL または `qwen --model` で上書きできます。',
|
|
446
|
+
'goose.noteUsing': 'Goose は TokenMix を OpenAI プロバイダーとして使用します —— keyring/設定は変更されません。',
|
|
447
|
+
'goose.noteModel': 'デフォルトモデル:{model} — GOOSE_MODEL で上書きできます。',
|
|
448
|
+
'goose.hintInstall': 'Goose がインストールされていません。インストール(https://block.github.io/goose 参照)してから `tokenmix goose` を再実行してください:\n {cmd}',
|
|
423
449
|
'cmd.program': 'TokenMix を統一 LLM バックエンドとして、あらゆるオープンソースのコーディング agent を使うためのゼロ設定 CLI。',
|
|
424
450
|
'cmd.login': 'TokenMix にログイン(デフォルト:ブラウザでのデバイス認証)',
|
|
425
451
|
'cmd.loginKey': 'API キーを直接貼り付け(ブラウザ認証をスキップ、CI に便利)',
|
|
@@ -465,6 +491,7 @@ export const ko = {
|
|
|
465
491
|
'login.tryAgain': '다시 시도할까요?',
|
|
466
492
|
'agent.notInstalled': '{name}이(가) 설치되어 있지 않습니다.',
|
|
467
493
|
'agent.notInstallable': '{name}은(는) CLI에서 설치할 수 없습니다.',
|
|
494
|
+
'agent.needsNode': '{name}에는 Node {min}+ 가 필요합니다(현재 Node {cur}). Node를 업그레이드(nvm / fnm / volta)한 뒤 다시 실행하세요 —— TokenMix 로그인은 저장되어 있습니다.',
|
|
468
495
|
'agent.installPrompt': '{name}이(가) 설치되어 있지 않습니다. 지금 설치할까요?',
|
|
469
496
|
'agent.installing': '{name} 설치 중 ...',
|
|
470
497
|
'agent.installed': '{name} 설치 완료.',
|
|
@@ -516,6 +543,8 @@ export const ko = {
|
|
|
516
543
|
'desc.roo': 'RooCodeInc/Roo-Code — VSCode 확장 (설정 전용)',
|
|
517
544
|
'desc.continue': 'continuedev/continue — VSCode/JetBrains 확장 (설정 파일)',
|
|
518
545
|
'desc.codex': 'openai/codex — OpenAI 코딩 agent CLI',
|
|
546
|
+
'desc.qwen': 'QwenLM/qwen-code — 터미널 코딩 agent (OpenAI 호환)',
|
|
547
|
+
'desc.goose': 'block/goose — 온디바이스 AI agent (OpenAI 호환)',
|
|
519
548
|
'install.willInstallVia': '다음 방법으로 설치합니다: {cmd}',
|
|
520
549
|
'aider.hintNeedPython': 'Aider에는 Python 3가 필요합니다. https://python.org/downloads 에서 Python 3를 설치한 뒤 다시 `tokenmix aider`를 실행하세요.',
|
|
521
550
|
'aider.hintNotInstalled': 'Aider가 설치되어 있지 않습니다. 다른 터미널에서 다음을 실행하세요:\n {cmd}\n그런 다음 다시 `tokenmix aider`를 실행하세요 — TokenMix 로그인이 이미 저장되어 있어 자동으로 적용됩니다.',
|
|
@@ -555,6 +584,11 @@ export const ko = {
|
|
|
555
584
|
'continue.hintNoVscode': 'PATH에서 VSCode를 찾을 수 없습니다. VSCode를 설치하고 Continue 확장을 추가한 뒤 아래 설정을 사용하세요.',
|
|
556
585
|
'codex.noteUsing': 'Codex는 OpenAI 호환 provider를 통해 TokenMix를 사용합니다 — ~/.codex/config.toml은 변경되지 않습니다.',
|
|
557
586
|
'codex.noteModel': '기본 모델: {model} — `--config model=...`으로 재정의할 수 있습니다.',
|
|
587
|
+
'qwen.noteUsing': 'Qwen Code는 OpenAI 호환 모드로 TokenMix를 사용합니다 — ~/.qwen/settings.json은 변경되지 않습니다.',
|
|
588
|
+
'qwen.noteModel': '기본 모델: {model} — OPENAI_MODEL 또는 `qwen --model`으로 재정의할 수 있습니다.',
|
|
589
|
+
'goose.noteUsing': 'Goose는 TokenMix를 OpenAI provider로 사용합니다 — keyring/설정은 변경되지 않습니다.',
|
|
590
|
+
'goose.noteModel': '기본 모델: {model} — GOOSE_MODEL로 재정의할 수 있습니다.',
|
|
591
|
+
'goose.hintInstall': 'Goose가 설치되어 있지 않습니다. 설치(https://block.github.io/goose 참조) 후 `tokenmix goose`를 다시 실행하세요:\n {cmd}',
|
|
558
592
|
'cmd.program': 'TokenMix를 통합 LLM 백엔드로 사용하여 모든 오픈소스 코딩 agent를 쓰는 제로 설정 CLI.',
|
|
559
593
|
'cmd.login': 'TokenMix에 로그인 (기본값: 브라우저 기기 인증)',
|
|
560
594
|
'cmd.loginKey': 'API 키를 직접 붙여넣기 (브라우저 절차 생략, CI에 유용)',
|
|
@@ -600,6 +634,7 @@ export const es = {
|
|
|
600
634
|
'login.tryAgain': '¿Reintentar?',
|
|
601
635
|
'agent.notInstalled': '{name} no está instalado.',
|
|
602
636
|
'agent.notInstallable': '{name} no se puede instalar desde la CLI.',
|
|
637
|
+
'agent.needsNode': '{name} necesita Node {min}+ (tienes Node {cur}). Actualiza Node (nvm / fnm / volta) y vuelve a ejecutar —— tu sesión de TokenMix está guardada.',
|
|
603
638
|
'agent.installPrompt': '{name} no está instalado. ¿Instalar ahora?',
|
|
604
639
|
'agent.installing': 'Instalando {name} ...',
|
|
605
640
|
'agent.installed': '{name} instalado.',
|
|
@@ -651,6 +686,8 @@ export const es = {
|
|
|
651
686
|
'desc.roo': 'RooCodeInc/Roo-Code — extensión de VSCode (solo configuración)',
|
|
652
687
|
'desc.continue': 'continuedev/continue — extensión de VSCode/JetBrains (archivo de configuración)',
|
|
653
688
|
'desc.codex': 'openai/codex — CLI del agente de programación de OpenAI',
|
|
689
|
+
'desc.qwen': 'QwenLM/qwen-code — agente de programación de terminal (compatible con OpenAI)',
|
|
690
|
+
'desc.goose': 'block/goose — agente de IA en tu máquina (compatible con OpenAI)',
|
|
654
691
|
'install.willInstallVia': 'Se instalará mediante: {cmd}',
|
|
655
692
|
'aider.hintNeedPython': 'Aider requiere Python 3. Instala Python 3 desde https://python.org/downloads y vuelve a ejecutar `tokenmix aider`.',
|
|
656
693
|
'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.',
|
|
@@ -690,6 +727,11 @@ export const es = {
|
|
|
690
727
|
'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.',
|
|
691
728
|
'codex.noteUsing': 'Codex usará TokenMix mediante un proveedor compatible con OpenAI: tu ~/.codex/config.toml no se modifica.',
|
|
692
729
|
'codex.noteModel': 'Modelo por defecto: {model} — anúlalo con `--config model=...`.',
|
|
730
|
+
'qwen.noteUsing': 'Qwen Code usará TokenMix mediante su modo compatible con OpenAI: tu ~/.qwen/settings.json no se modifica.',
|
|
731
|
+
'qwen.noteModel': 'Modelo por defecto: {model} — anúlalo con OPENAI_MODEL o `qwen --model`.',
|
|
732
|
+
'goose.noteUsing': 'Goose usará TokenMix como su proveedor de OpenAI: su keyring/configuración no se modifica.',
|
|
733
|
+
'goose.noteModel': 'Modelo por defecto: {model} — anúlalo con GOOSE_MODEL.',
|
|
734
|
+
'goose.hintInstall': 'Goose no está instalado. Instálalo (consulta https://block.github.io/goose) y vuelve a ejecutar `tokenmix goose`:\n {cmd}',
|
|
693
735
|
'cmd.program': 'CLI sin configuración para usar cualquier agent de programación de código abierto con TokenMix como backend LLM unificado.',
|
|
694
736
|
'cmd.login': 'Inicia sesión en TokenMix (predeterminado: autorización de dispositivo por navegador)',
|
|
695
737
|
'cmd.loginKey': 'Pega una clave de API directamente (omite el navegador, útil para CI)',
|
|
@@ -735,6 +777,7 @@ export const fr = {
|
|
|
735
777
|
'login.tryAgain': 'Réessayer ?',
|
|
736
778
|
'agent.notInstalled': '{name} n’est pas installé.',
|
|
737
779
|
'agent.notInstallable': '{name} ne peut pas être installé depuis la CLI.',
|
|
780
|
+
'agent.needsNode': '{name} nécessite Node {min}+ (vous avez Node {cur}). Mettez Node à jour (nvm / fnm / volta), puis relancez —— votre connexion TokenMix est enregistrée.',
|
|
738
781
|
'agent.installPrompt': '{name} n’est pas installé. Installer maintenant ?',
|
|
739
782
|
'agent.installing': 'Installation de {name} ...',
|
|
740
783
|
'agent.installed': '{name} installé.',
|
|
@@ -786,6 +829,8 @@ export const fr = {
|
|
|
786
829
|
'desc.roo': 'RooCodeInc/Roo-Code — extension VSCode (configuration seule)',
|
|
787
830
|
'desc.continue': 'continuedev/continue — extension VSCode/JetBrains (fichier de configuration)',
|
|
788
831
|
'desc.codex': 'openai/codex — CLI de l’agent de codage d’OpenAI',
|
|
832
|
+
'desc.qwen': 'QwenLM/qwen-code — agent de codage en terminal (compatible OpenAI)',
|
|
833
|
+
'desc.goose': 'block/goose — agent IA sur votre machine (compatible OpenAI)',
|
|
789
834
|
'install.willInstallVia': 'Sera installé via : {cmd}',
|
|
790
835
|
'aider.hintNeedPython': 'Aider nécessite Python 3. Installez Python 3 depuis https://python.org/downloads, puis relancez `tokenmix aider`.',
|
|
791
836
|
'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.',
|
|
@@ -825,6 +870,11 @@ export const fr = {
|
|
|
825
870
|
'continue.hintNoVscode': 'VSCode introuvable dans le PATH. Installez VSCode, ajoutez l’extension Continue, puis utilisez la configuration ci-dessous.',
|
|
826
871
|
'codex.noteUsing': 'Codex utilisera TokenMix via un fournisseur compatible OpenAI — votre ~/.codex/config.toml n’est pas modifié.',
|
|
827
872
|
'codex.noteModel': 'Modèle par défaut : {model} — remplacez-le avec `--config model=...`.',
|
|
873
|
+
'qwen.noteUsing': 'Qwen Code utilisera TokenMix via son mode compatible OpenAI — votre ~/.qwen/settings.json n’est pas modifié.',
|
|
874
|
+
'qwen.noteModel': 'Modèle par défaut : {model} — remplacez-le avec OPENAI_MODEL ou `qwen --model`.',
|
|
875
|
+
'goose.noteUsing': 'Goose utilisera TokenMix comme fournisseur OpenAI — son keyring/sa configuration n’est pas modifié.',
|
|
876
|
+
'goose.noteModel': 'Modèle par défaut : {model} — remplacez-le avec GOOSE_MODEL.',
|
|
877
|
+
'goose.hintInstall': 'Goose n’est pas installé. Installez-le (voir https://block.github.io/goose), puis relancez `tokenmix goose` :\n {cmd}',
|
|
828
878
|
'cmd.program': 'CLI sans configuration pour utiliser n’importe quel agent de codage open source avec TokenMix comme backend LLM unifié.',
|
|
829
879
|
'cmd.login': 'Se connecter à TokenMix (par défaut : autorisation de l’appareil via le navigateur)',
|
|
830
880
|
'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.
|
|
3
|
+
"version": "0.4.10",
|
|
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": {
|
|
@@ -31,6 +31,8 @@
|
|
|
31
31
|
"roo-code",
|
|
32
32
|
"continue",
|
|
33
33
|
"codex",
|
|
34
|
+
"qwen-code",
|
|
35
|
+
"goose",
|
|
34
36
|
"coding-agent"
|
|
35
37
|
],
|
|
36
38
|
"license": "MIT",
|