tokenmix 0.4.8 → 0.4.9
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 +3 -0
- package/dist/agents/codex.js +1 -0
- package/dist/agents/qwen.js +61 -0
- package/dist/agents/registry.js +2 -0
- package/dist/commands/agent-runner.js +15 -0
- package/dist/commands/list.js +2 -0
- package/dist/i18n/messages.js +25 -0
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -28,6 +28,7 @@ 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
|
|
31
32
|
```
|
|
32
33
|
|
|
33
34
|
### Alternative login modes
|
|
@@ -49,6 +50,7 @@ npx tokenmix login --key sk-tm-... # supply API key directly (for CI
|
|
|
49
50
|
| [Roo Code](https://github.com/RooCodeInc/Roo-Code) | VSCode extension | config-only |
|
|
50
51
|
| [Continue](https://github.com/continuedev/continue) | VSCode / JetBrains | config-only |
|
|
51
52
|
| [Codex](https://github.com/openai/codex) | `npm i -g @openai/codex` | full auto |
|
|
53
|
+
| [Qwen Code](https://github.com/QwenLM/qwen-code) | `npm i -g @qwen-code/qwen-code` | full auto |
|
|
52
54
|
|
|
53
55
|
## Commands
|
|
54
56
|
|
|
@@ -69,6 +71,7 @@ tokenmix cline Print Cline configuration
|
|
|
69
71
|
tokenmix roo Print Roo Code configuration
|
|
70
72
|
tokenmix continue Print Continue config.yaml snippet
|
|
71
73
|
tokenmix codex [args...] Launch Codex via TokenMix
|
|
74
|
+
tokenmix qwen [args...] Launch Qwen Code via TokenMix
|
|
72
75
|
```
|
|
73
76
|
|
|
74
77
|
## Language
|
package/dist/agents/codex.js
CHANGED
|
@@ -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,7 @@ 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';
|
|
9
10
|
// Ordered by historical ARPU on tokenmix (highest first). New agents go to the bottom.
|
|
10
11
|
export const AGENTS = [
|
|
11
12
|
OpenCodeAgent,
|
|
@@ -16,6 +17,7 @@ export const AGENTS = [
|
|
|
16
17
|
RooAgent,
|
|
17
18
|
ContinueAgent,
|
|
18
19
|
CodexAgent,
|
|
20
|
+
QwenAgent,
|
|
19
21
|
];
|
|
20
22
|
export function findAgent(id) {
|
|
21
23
|
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,7 @@ 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)',
|
|
89
91
|
// install hints
|
|
90
92
|
'install.willInstallVia': 'Will install via: {cmd}',
|
|
91
93
|
'aider.hintNeedPython': 'Aider requires Python 3. Install Python 3 from https://python.org/downloads, then come back and run `tokenmix aider` again.',
|
|
@@ -134,6 +136,9 @@ export const en = {
|
|
|
134
136
|
// codex configure notes (auto-npm CLI; launched with --config provider injection)
|
|
135
137
|
'codex.noteUsing': 'Codex will use TokenMix via an OpenAI-compatible provider — your ~/.codex/config.toml is left untouched.',
|
|
136
138
|
'codex.noteModel': 'Default model: {model} — override with `--config model=...`.',
|
|
139
|
+
// qwen configure notes (env-based like aider; launched with --auth-type openai)
|
|
140
|
+
'qwen.noteUsing': 'Qwen Code will use TokenMix via its OpenAI-compatible mode — your ~/.qwen/settings.json is left untouched.',
|
|
141
|
+
'qwen.noteModel': 'Default model: {model} — override with OPENAI_MODEL or `qwen --model`.',
|
|
137
142
|
// command / option descriptions (--help)
|
|
138
143
|
'cmd.program': 'Zero-config CLI to use any open-source coding agent with TokenMix as the unified LLM backend.',
|
|
139
144
|
'cmd.login': 'Log in to TokenMix (default: browser device authorization)',
|
|
@@ -182,6 +187,7 @@ export const zh = {
|
|
|
182
187
|
// agent install / configure / launch
|
|
183
188
|
'agent.notInstalled': '{name} 尚未安装。',
|
|
184
189
|
'agent.notInstallable': '{name} 无法通过 CLI 安装。',
|
|
190
|
+
'agent.needsNode': '{name} 需要 Node {min}+(你的是 Node {cur})。请升级 Node(nvm / fnm / volta)后重新运行 —— 你的 TokenMix 登录已保存。',
|
|
185
191
|
'agent.installPrompt': '{name} 尚未安装。现在安装?',
|
|
186
192
|
'agent.installing': '正在安装 {name} ...',
|
|
187
193
|
'agent.installed': '{name} 安装完成。',
|
|
@@ -240,6 +246,7 @@ export const zh = {
|
|
|
240
246
|
'desc.roo': 'RooCodeInc/Roo-Code — VSCode 扩展(仅配置)',
|
|
241
247
|
'desc.continue': 'continuedev/continue — VSCode/JetBrains 扩展(配置文件)',
|
|
242
248
|
'desc.codex': 'openai/codex — OpenAI 编程 agent CLI',
|
|
249
|
+
'desc.qwen': 'QwenLM/qwen-code — 终端编程 agent(OpenAI 兼容)',
|
|
243
250
|
// install hints
|
|
244
251
|
'install.willInstallVia': '将自动安装:{cmd}',
|
|
245
252
|
'aider.hintNeedPython': 'Aider 需要 Python 3。请从 https://python.org/downloads 安装 Python 3,然后重新运行 `tokenmix aider`。',
|
|
@@ -284,6 +291,8 @@ export const zh = {
|
|
|
284
291
|
'continue.hintNoVscode': '未在 PATH 中检测到 VSCode。请先安装 VSCode,再添加 Continue 扩展,然后使用下面的配置。',
|
|
285
292
|
'codex.noteUsing': 'Codex 将通过 OpenAI 兼容的 provider 使用 TokenMix —— 不会改动你的 ~/.codex/config.toml。',
|
|
286
293
|
'codex.noteModel': '默认模型:{model} —— 可用 `--config model=...` 覆盖。',
|
|
294
|
+
'qwen.noteUsing': 'Qwen Code 将通过其 OpenAI 兼容模式使用 TokenMix —— 不会改动你的 ~/.qwen/settings.json。',
|
|
295
|
+
'qwen.noteModel': '默认模型:{model} —— 可用 OPENAI_MODEL 或 `qwen --model` 覆盖。',
|
|
287
296
|
// command / option descriptions (--help)
|
|
288
297
|
'cmd.program': '零配置 CLI:以 TokenMix 作为统一 LLM 后端,驱动任意开源编程 agent。',
|
|
289
298
|
'cmd.login': '登录 TokenMix(默认:浏览器设备授权)',
|
|
@@ -330,6 +339,7 @@ export const ja = {
|
|
|
330
339
|
'login.tryAgain': '再試行しますか?',
|
|
331
340
|
'agent.notInstalled': '{name} はインストールされていません。',
|
|
332
341
|
'agent.notInstallable': '{name} は CLI からインストールできません。',
|
|
342
|
+
'agent.needsNode': '{name} には Node {min}+ が必要です(現在 Node {cur})。Node をアップグレード(nvm / fnm / volta)してから再実行してください —— TokenMix のログインは保存済みです。',
|
|
333
343
|
'agent.installPrompt': '{name} はインストールされていません。今すぐインストールしますか?',
|
|
334
344
|
'agent.installing': '{name} をインストールしています ...',
|
|
335
345
|
'agent.installed': '{name} をインストールしました。',
|
|
@@ -381,6 +391,7 @@ export const ja = {
|
|
|
381
391
|
'desc.roo': 'RooCodeInc/Roo-Code — VSCode 拡張機能(設定のみ)',
|
|
382
392
|
'desc.continue': 'continuedev/continue — VSCode/JetBrains 拡張機能(設定ファイル)',
|
|
383
393
|
'desc.codex': 'openai/codex — OpenAI のコーディング agent CLI',
|
|
394
|
+
'desc.qwen': 'QwenLM/qwen-code — ターミナルのコーディング agent(OpenAI 互換)',
|
|
384
395
|
'install.willInstallVia': '次の方法でインストールします:{cmd}',
|
|
385
396
|
'aider.hintNeedPython': 'Aider には Python 3 が必要です。https://python.org/downloads から Python 3 をインストールし、再度 `tokenmix aider` を実行してください。',
|
|
386
397
|
'aider.hintNotInstalled': 'Aider はインストールされていません。別のターミナルで次を実行してください:\n {cmd}\nその後 `tokenmix aider` を再実行してください — TokenMix のログインは保存済みなので自動的に反映されます。',
|
|
@@ -420,6 +431,8 @@ export const ja = {
|
|
|
420
431
|
'continue.hintNoVscode': 'PATH に VSCode が見つかりません。VSCode をインストールし、Continue 拡張機能を追加してから、下の設定を使用してください。',
|
|
421
432
|
'codex.noteUsing': 'Codex は OpenAI 互換プロバイダー経由で TokenMix を使用します — ~/.codex/config.toml は変更されません。',
|
|
422
433
|
'codex.noteModel': 'デフォルトモデル:{model} — `--config model=...` で上書きできます。',
|
|
434
|
+
'qwen.noteUsing': 'Qwen Code は OpenAI 互換モードで TokenMix を使用します —— ~/.qwen/settings.json は変更されません。',
|
|
435
|
+
'qwen.noteModel': 'デフォルトモデル:{model} — OPENAI_MODEL または `qwen --model` で上書きできます。',
|
|
423
436
|
'cmd.program': 'TokenMix を統一 LLM バックエンドとして、あらゆるオープンソースのコーディング agent を使うためのゼロ設定 CLI。',
|
|
424
437
|
'cmd.login': 'TokenMix にログイン(デフォルト:ブラウザでのデバイス認証)',
|
|
425
438
|
'cmd.loginKey': 'API キーを直接貼り付け(ブラウザ認証をスキップ、CI に便利)',
|
|
@@ -465,6 +478,7 @@ export const ko = {
|
|
|
465
478
|
'login.tryAgain': '다시 시도할까요?',
|
|
466
479
|
'agent.notInstalled': '{name}이(가) 설치되어 있지 않습니다.',
|
|
467
480
|
'agent.notInstallable': '{name}은(는) CLI에서 설치할 수 없습니다.',
|
|
481
|
+
'agent.needsNode': '{name}에는 Node {min}+ 가 필요합니다(현재 Node {cur}). Node를 업그레이드(nvm / fnm / volta)한 뒤 다시 실행하세요 —— TokenMix 로그인은 저장되어 있습니다.',
|
|
468
482
|
'agent.installPrompt': '{name}이(가) 설치되어 있지 않습니다. 지금 설치할까요?',
|
|
469
483
|
'agent.installing': '{name} 설치 중 ...',
|
|
470
484
|
'agent.installed': '{name} 설치 완료.',
|
|
@@ -516,6 +530,7 @@ export const ko = {
|
|
|
516
530
|
'desc.roo': 'RooCodeInc/Roo-Code — VSCode 확장 (설정 전용)',
|
|
517
531
|
'desc.continue': 'continuedev/continue — VSCode/JetBrains 확장 (설정 파일)',
|
|
518
532
|
'desc.codex': 'openai/codex — OpenAI 코딩 agent CLI',
|
|
533
|
+
'desc.qwen': 'QwenLM/qwen-code — 터미널 코딩 agent (OpenAI 호환)',
|
|
519
534
|
'install.willInstallVia': '다음 방법으로 설치합니다: {cmd}',
|
|
520
535
|
'aider.hintNeedPython': 'Aider에는 Python 3가 필요합니다. https://python.org/downloads 에서 Python 3를 설치한 뒤 다시 `tokenmix aider`를 실행하세요.',
|
|
521
536
|
'aider.hintNotInstalled': 'Aider가 설치되어 있지 않습니다. 다른 터미널에서 다음을 실행하세요:\n {cmd}\n그런 다음 다시 `tokenmix aider`를 실행하세요 — TokenMix 로그인이 이미 저장되어 있어 자동으로 적용됩니다.',
|
|
@@ -555,6 +570,8 @@ export const ko = {
|
|
|
555
570
|
'continue.hintNoVscode': 'PATH에서 VSCode를 찾을 수 없습니다. VSCode를 설치하고 Continue 확장을 추가한 뒤 아래 설정을 사용하세요.',
|
|
556
571
|
'codex.noteUsing': 'Codex는 OpenAI 호환 provider를 통해 TokenMix를 사용합니다 — ~/.codex/config.toml은 변경되지 않습니다.',
|
|
557
572
|
'codex.noteModel': '기본 모델: {model} — `--config model=...`으로 재정의할 수 있습니다.',
|
|
573
|
+
'qwen.noteUsing': 'Qwen Code는 OpenAI 호환 모드로 TokenMix를 사용합니다 — ~/.qwen/settings.json은 변경되지 않습니다.',
|
|
574
|
+
'qwen.noteModel': '기본 모델: {model} — OPENAI_MODEL 또는 `qwen --model`으로 재정의할 수 있습니다.',
|
|
558
575
|
'cmd.program': 'TokenMix를 통합 LLM 백엔드로 사용하여 모든 오픈소스 코딩 agent를 쓰는 제로 설정 CLI.',
|
|
559
576
|
'cmd.login': 'TokenMix에 로그인 (기본값: 브라우저 기기 인증)',
|
|
560
577
|
'cmd.loginKey': 'API 키를 직접 붙여넣기 (브라우저 절차 생략, CI에 유용)',
|
|
@@ -600,6 +617,7 @@ export const es = {
|
|
|
600
617
|
'login.tryAgain': '¿Reintentar?',
|
|
601
618
|
'agent.notInstalled': '{name} no está instalado.',
|
|
602
619
|
'agent.notInstallable': '{name} no se puede instalar desde la CLI.',
|
|
620
|
+
'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
621
|
'agent.installPrompt': '{name} no está instalado. ¿Instalar ahora?',
|
|
604
622
|
'agent.installing': 'Instalando {name} ...',
|
|
605
623
|
'agent.installed': '{name} instalado.',
|
|
@@ -651,6 +669,7 @@ export const es = {
|
|
|
651
669
|
'desc.roo': 'RooCodeInc/Roo-Code — extensión de VSCode (solo configuración)',
|
|
652
670
|
'desc.continue': 'continuedev/continue — extensión de VSCode/JetBrains (archivo de configuración)',
|
|
653
671
|
'desc.codex': 'openai/codex — CLI del agente de programación de OpenAI',
|
|
672
|
+
'desc.qwen': 'QwenLM/qwen-code — agente de programación de terminal (compatible con OpenAI)',
|
|
654
673
|
'install.willInstallVia': 'Se instalará mediante: {cmd}',
|
|
655
674
|
'aider.hintNeedPython': 'Aider requiere Python 3. Instala Python 3 desde https://python.org/downloads y vuelve a ejecutar `tokenmix aider`.',
|
|
656
675
|
'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 +709,8 @@ export const es = {
|
|
|
690
709
|
'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
710
|
'codex.noteUsing': 'Codex usará TokenMix mediante un proveedor compatible con OpenAI: tu ~/.codex/config.toml no se modifica.',
|
|
692
711
|
'codex.noteModel': 'Modelo por defecto: {model} — anúlalo con `--config model=...`.',
|
|
712
|
+
'qwen.noteUsing': 'Qwen Code usará TokenMix mediante su modo compatible con OpenAI: tu ~/.qwen/settings.json no se modifica.',
|
|
713
|
+
'qwen.noteModel': 'Modelo por defecto: {model} — anúlalo con OPENAI_MODEL o `qwen --model`.',
|
|
693
714
|
'cmd.program': 'CLI sin configuración para usar cualquier agent de programación de código abierto con TokenMix como backend LLM unificado.',
|
|
694
715
|
'cmd.login': 'Inicia sesión en TokenMix (predeterminado: autorización de dispositivo por navegador)',
|
|
695
716
|
'cmd.loginKey': 'Pega una clave de API directamente (omite el navegador, útil para CI)',
|
|
@@ -735,6 +756,7 @@ export const fr = {
|
|
|
735
756
|
'login.tryAgain': 'Réessayer ?',
|
|
736
757
|
'agent.notInstalled': '{name} n’est pas installé.',
|
|
737
758
|
'agent.notInstallable': '{name} ne peut pas être installé depuis la CLI.',
|
|
759
|
+
'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
760
|
'agent.installPrompt': '{name} n’est pas installé. Installer maintenant ?',
|
|
739
761
|
'agent.installing': 'Installation de {name} ...',
|
|
740
762
|
'agent.installed': '{name} installé.',
|
|
@@ -786,6 +808,7 @@ export const fr = {
|
|
|
786
808
|
'desc.roo': 'RooCodeInc/Roo-Code — extension VSCode (configuration seule)',
|
|
787
809
|
'desc.continue': 'continuedev/continue — extension VSCode/JetBrains (fichier de configuration)',
|
|
788
810
|
'desc.codex': 'openai/codex — CLI de l’agent de codage d’OpenAI',
|
|
811
|
+
'desc.qwen': 'QwenLM/qwen-code — agent de codage en terminal (compatible OpenAI)',
|
|
789
812
|
'install.willInstallVia': 'Sera installé via : {cmd}',
|
|
790
813
|
'aider.hintNeedPython': 'Aider nécessite Python 3. Installez Python 3 depuis https://python.org/downloads, puis relancez `tokenmix aider`.',
|
|
791
814
|
'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 +848,8 @@ export const fr = {
|
|
|
825
848
|
'continue.hintNoVscode': 'VSCode introuvable dans le PATH. Installez VSCode, ajoutez l’extension Continue, puis utilisez la configuration ci-dessous.',
|
|
826
849
|
'codex.noteUsing': 'Codex utilisera TokenMix via un fournisseur compatible OpenAI — votre ~/.codex/config.toml n’est pas modifié.',
|
|
827
850
|
'codex.noteModel': 'Modèle par défaut : {model} — remplacez-le avec `--config model=...`.',
|
|
851
|
+
'qwen.noteUsing': 'Qwen Code utilisera TokenMix via son mode compatible OpenAI — votre ~/.qwen/settings.json n’est pas modifié.',
|
|
852
|
+
'qwen.noteModel': 'Modèle par défaut : {model} — remplacez-le avec OPENAI_MODEL ou `qwen --model`.',
|
|
828
853
|
'cmd.program': 'CLI sans configuration pour utiliser n’importe quel agent de codage open source avec TokenMix comme backend LLM unifié.',
|
|
829
854
|
'cmd.login': 'Se connecter à TokenMix (par défaut : autorisation de l’appareil via le navigateur)',
|
|
830
855
|
'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.9",
|
|
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,7 @@
|
|
|
31
31
|
"roo-code",
|
|
32
32
|
"continue",
|
|
33
33
|
"codex",
|
|
34
|
+
"qwen-code",
|
|
34
35
|
"coding-agent"
|
|
35
36
|
],
|
|
36
37
|
"license": "MIT",
|