@emaxe/agento 0.2.0 → 0.4.0
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/AGENTS.md +9 -8
- package/CHANGELOG.md +27 -0
- package/README.md +35 -16
- package/dist/src/adapters/claude-code.d.ts +1 -1
- package/dist/src/adapters/claude-code.d.ts.map +1 -1
- package/dist/src/adapters/claude-code.js +18 -3
- package/dist/src/adapters/claude-code.js.map +1 -1
- package/dist/src/adapters/codex.d.ts +1 -2
- package/dist/src/adapters/codex.d.ts.map +1 -1
- package/dist/src/adapters/codex.js +6 -4
- package/dist/src/adapters/codex.js.map +1 -1
- package/dist/src/adapters/opencode.d.ts +1 -1
- package/dist/src/adapters/opencode.d.ts.map +1 -1
- package/dist/src/adapters/opencode.js +23 -3
- package/dist/src/adapters/opencode.js.map +1 -1
- package/dist/src/adapters/qwen.d.ts +1 -1
- package/dist/src/adapters/qwen.d.ts.map +1 -1
- package/dist/src/adapters/qwen.js +6 -3
- package/dist/src/adapters/qwen.js.map +1 -1
- package/dist/src/cli/commands/provider.js +2 -2
- package/dist/src/cli/commands/provider.js.map +1 -1
- package/dist/src/config/schema.d.ts +10 -9
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +2 -1
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/installers/base.d.ts +25 -0
- package/dist/src/installers/base.d.ts.map +1 -0
- package/dist/src/installers/base.js +2 -0
- package/dist/src/installers/base.js.map +1 -0
- package/dist/src/installers/claude-code.d.ts +15 -0
- package/dist/src/installers/claude-code.d.ts.map +1 -0
- package/dist/src/installers/claude-code.js +51 -0
- package/dist/src/installers/claude-code.js.map +1 -0
- package/dist/src/installers/codex.d.ts +15 -0
- package/dist/src/installers/codex.d.ts.map +1 -0
- package/dist/src/installers/codex.js +51 -0
- package/dist/src/installers/codex.js.map +1 -0
- package/dist/src/installers/opencode.d.ts +15 -0
- package/dist/src/installers/opencode.d.ts.map +1 -0
- package/dist/src/installers/opencode.js +51 -0
- package/dist/src/installers/opencode.js.map +1 -0
- package/dist/src/installers/qwen.d.ts +15 -0
- package/dist/src/installers/qwen.d.ts.map +1 -0
- package/dist/src/installers/qwen.js +51 -0
- package/dist/src/installers/qwen.js.map +1 -0
- package/dist/src/installers/registry.d.ts +4 -0
- package/dist/src/installers/registry.d.ts.map +1 -0
- package/dist/src/installers/registry.js +14 -0
- package/dist/src/installers/registry.js.map +1 -0
- package/dist/src/tui/screens/AgentInstall.d.ts +10 -0
- package/dist/src/tui/screens/AgentInstall.d.ts.map +1 -0
- package/dist/src/tui/screens/AgentInstall.js +156 -0
- package/dist/src/tui/screens/AgentInstall.js.map +1 -0
- package/dist/src/tui/screens/LaunchAgent.d.ts.map +1 -1
- package/dist/src/tui/screens/LaunchAgent.js +57 -2
- package/dist/src/tui/screens/LaunchAgent.js.map +1 -1
- package/dist/src/tui/screens/Providers.d.ts.map +1 -1
- package/dist/src/tui/screens/Providers.js +4 -5
- package/dist/src/tui/screens/Providers.js.map +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -82,9 +82,9 @@ AgentO — CLI-инструмент для управления конфигур
|
|
|
82
82
|
{
|
|
83
83
|
id: string (uuid);
|
|
84
84
|
name: string; // "Fireworks AI"
|
|
85
|
-
type: 'openai-compatible' | 'anthropic' | 'fireworks';
|
|
85
|
+
type: 'openai-compatible' | 'anthropic' | 'fireworks' | 'openrouter';
|
|
86
86
|
apiKey: string;
|
|
87
|
-
baseUrl?: string; // URL для openai-compatible (обязателен), опционален для остальных
|
|
87
|
+
baseUrl?: string; // URL для openai-compatible (обязателен), опционален для остальных (fireworks/openrouter имеют дефолтные URL)
|
|
88
88
|
models: ModelConfig[]; // Доступные модели провайдера
|
|
89
89
|
}
|
|
90
90
|
|
|
@@ -134,10 +134,10 @@ AgentO — CLI-инструмент для управления конфигур
|
|
|
134
134
|
|
|
135
135
|
| Агент | ID | Команда | Поддерживаемые типы | Формат конфига | Capability-флаги | Особенности |
|
|
136
136
|
|-------|-----|---------|---|---|---|---|
|
|
137
|
-
| Claude Code | `claude-code` | `claude` | `anthropic`, `fireworks` | JSON (`~/.claude/settings.json`) | Игнорирует | Поддерживает tiers (small/base/smart). Только один провайдер на профиль. |
|
|
138
|
-
| OpenCode | `opencode` | `opencode` | `anthropic`, `openai-compatible`, `fireworks` | JSON (`~/.config/opencode/config.json` или `./opencode.json`) | Пробрасывает в `models[<name>].modalities` | Префикс модели: `providerKey/model`. |
|
|
139
|
-
| Qwen CLI | `qwen` | `qwen` | `openai-compatible`, `fireworks` | JSON (`~/.qwen/settings.json`) | Пробрасывает в `generationConfig.modalities` | **modelProviders ключ всегда `"openai"`** для openai-compatible провайдеров. Группирует модели по baseUrl. |
|
|
140
|
-
| Codex CLI | `codex` | `codex` | `fireworks` | TOML (`~/.codex/config.toml`) | Игнорирует | `dev: true` (скрыт по умолчанию). `wire_api: responses`. При `project` scope `model_providers` пишет в global config, а `model` — в project config. Использует `buildEnv` для инжекта API ключа. |
|
|
137
|
+
| Claude Code | `claude-code` | `claude` | `anthropic`, `fireworks`, `openrouter` | JSON (`~/.claude/settings.json`) | Игнорирует | Поддерживает tiers (small/base/smart). Только один провайдер на профиль. Для `openrouter` использует Anthropic Skin: `ANTHROPIC_AUTH_TOKEN` (Bearer) + пустой `ANTHROPIC_API_KEY`, БЕЗ `apiKeyHelper`. |
|
|
138
|
+
| OpenCode | `opencode` | `opencode` | `anthropic`, `openai-compatible`, `fireworks`, `openrouter` | JSON (`~/.config/opencode/config.json` или `./opencode.json`) | Пробрасывает в `models[<name>].modalities` | Префикс модели: `providerKey/model`. Для `openrouter` ключ провайдера всегда `openrouter`. |
|
|
139
|
+
| Qwen CLI | `qwen` | `qwen` | `openai-compatible`, `fireworks`, `openrouter` | JSON (`~/.qwen/settings.json`) | Пробрасывает в `generationConfig.modalities` | **modelProviders ключ всегда `"openai"`** для openai-compatible провайдеров. Группирует модели по baseUrl. |
|
|
140
|
+
| Codex CLI | `codex` | `codex` | `fireworks`, `openrouter` | TOML (`~/.codex/config.toml`) | Игнорирует | `dev: true` (скрыт по умолчанию). `wire_api: responses`. При `project` scope `model_providers` пишет в global config, а `model` — в project config. Использует `buildEnv` для инжекта API ключа. |
|
|
141
141
|
|
|
142
142
|
### Важная деталь: Qwen Adapter
|
|
143
143
|
|
|
@@ -336,5 +336,6 @@ grep "const providerKey" dist/src/adapters/qwen.js
|
|
|
336
336
|
|
|
337
337
|
- Все адаптеры должны поддерживать `readConfig` → `buildConfig` → `writeConfig` pipeline
|
|
338
338
|
- При добавлении нового агента нужно: создать адаптер, добавить в `AGENT_COMMANDS` (launch.ts), добавить в TUI (`LaunchAgent.tsx`), добавить тесты
|
|
339
|
-
- Провайдеры типа `anthropic` не поддерживаются Qwen
|
|
340
|
-
- BaseUrl обязателен для openai-compatible провайдеров (кроме Claude Code, который использует официальный API по умолчанию)
|
|
339
|
+
- Провайдеры типа `anthropic` не поддерживаются Qwen (проверяется в адаптерах)
|
|
340
|
+
- BaseUrl обязателен для openai-compatible провайдеров (кроме Claude Code, который использует официальный API по умолчанию). Для `fireworks` и `openrouter` есть дефолтные URL: `https://api.fireworks.ai/inference/v1` и `https://openrouter.ai/api/v1`
|
|
341
|
+
- Тип `openrouter` поддерживается всеми 4 агентами. OpenRouter предоставляет три API-формата (OpenAI Chat Completions, Anthropic Skin, Responses API), что позволяет использовать его с Claude Code (Anthropic Skin), OpenCode/Qwen (OpenAI-compatible) и Codex (Responses API)
|
package/CHANGELOG.md
CHANGED
|
@@ -16,6 +16,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
16
16
|
- Better error handling and logging
|
|
17
17
|
- Configuration templates and presets
|
|
18
18
|
|
|
19
|
+
## [0.4.0] - 2026-05-11
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
|
|
23
|
+
- **Agent Install Wizard** — selecting an uninstalled agent in the TUI now opens an install screen instead of failing silently:
|
|
24
|
+
- **Auto-install**: checks environment requirements (npm), then runs `npm install -g <package>` with a live spinner
|
|
25
|
+
- **Manual install**: shows exact commands to run and a documentation URL
|
|
26
|
+
- **Error recovery**: on env check failure shows missing deps with a manual install option; on install failure shows error with retry / manual options
|
|
27
|
+
- Installers implemented for all 4 agents: `claude-code` (`@anthropic-ai/claude-code`), `opencode` (`opencode`), `qwen` (`@qwen/qwen-code`), `codex` (`@openai/codex`)
|
|
28
|
+
- **Install status preloader** in Launch Agent — on entering the agent selection step a spinner runs `checkInstalled()` for all agents in parallel; uninstalled agents display a `(not installed)` dim hint next to their name
|
|
29
|
+
- After successful auto-install the agent is marked installed in-session and the list returns to normal selection
|
|
30
|
+
|
|
31
|
+
## [0.3.0] - 2026-05-11
|
|
32
|
+
|
|
33
|
+
### Added
|
|
34
|
+
|
|
35
|
+
- **New provider type `openrouter`** — full support for [OpenRouter](https://openrouter.ai) across all 4 agents:
|
|
36
|
+
- **Claude Code**: uses OpenRouter's Anthropic Skin with `ANTHROPIC_AUTH_TOKEN` (Bearer) + empty `ANTHROPIC_API_KEY`, no `apiKeyHelper`. Base URL: `https://openrouter.ai/api`
|
|
37
|
+
- **OpenCode**: uses `@ai-sdk/openai-compatible` with provider key `openrouter`. Base URL: `https://openrouter.ai/api/v1`
|
|
38
|
+
- **Qwen CLI**: routed through OpenAI-compatible interface with default URL `https://openrouter.ai/api/v1`
|
|
39
|
+
- **Codex CLI**: `wire_api: 'responses'` (Responses API beta). Base URL: `https://openrouter.ai/api/v1`
|
|
40
|
+
- `PROVIDER_TYPES` constant exported from schema — removes literal type duplication in CLI and TUI
|
|
41
|
+
|
|
42
|
+
### Changed
|
|
43
|
+
|
|
44
|
+
- Adapter default base URLs refactored into `DEFAULT_BASE_URLS: Partial<Record<ProviderType, string>>` map (was a chain of ternary operators) — scales to new provider types
|
|
45
|
+
|
|
19
46
|
## [0.2.0] - 2026-05-10
|
|
20
47
|
|
|
21
48
|
### Added
|
package/README.md
CHANGED
|
@@ -13,10 +13,10 @@ AgentO is a CLI tool that centralizes configuration management for popular AI co
|
|
|
13
13
|
|
|
14
14
|
| Agent | Command | Config Format | Supported Providers | Special Features |
|
|
15
15
|
|-------|---------|---------------|---|------------------|
|
|
16
|
-
| [Claude Code](https://github.com/anthropics/claude-code) | `claude` | JSON | `anthropic`, `fireworks` | Multi-tier support (small/base/smart) |
|
|
17
|
-
| [OpenCode](https://github.com/opencode-ai/opencode) | `opencode` | JSON | `anthropic`, `openai-compatible`, `fireworks` | Full function calling support via Vercel AI SDK |
|
|
18
|
-
| [Qwen CLI](https://github.com/QwenLM/qwen) | `qwen` | JSON | `openai-compatible`, `fireworks` | OpenAI-compatible API structure |
|
|
19
|
-
| [Codex CLI](https://github.com/openai/codex) | `codex` | TOML |
|
|
16
|
+
| [Claude Code](https://github.com/anthropics/claude-code) | `claude` | JSON | `anthropic`, `fireworks`, `openrouter` | Multi-tier support (small/base/smart) |
|
|
17
|
+
| [OpenCode](https://github.com/opencode-ai/opencode) | `opencode` | JSON | `anthropic`, `openai-compatible`, `fireworks`, `openrouter` | Full function calling support via Vercel AI SDK |
|
|
18
|
+
| [Qwen CLI](https://github.com/QwenLM/qwen) | `qwen` | JSON | `openai-compatible`, `fireworks`, `openrouter` | OpenAI-compatible API structure |
|
|
19
|
+
| [Codex CLI](https://github.com/openai/codex) | `codex` | TOML | `fireworks`, `openrouter` | Environment variable injection. `wire_api: responses`. |
|
|
20
20
|
|
|
21
21
|
## Installation
|
|
22
22
|
|
|
@@ -42,11 +42,15 @@ npx @emaxe/agento
|
|
|
42
42
|
|
|
43
43
|
| Provider Type | Compatible Agents | Examples |
|
|
44
44
|
|---|---|---|
|
|
45
|
-
| `anthropic` | claude-code | Anthropic |
|
|
45
|
+
| `anthropic` | claude-code, opencode | Anthropic |
|
|
46
46
|
| `openai-compatible` | opencode, qwen | OpenAI, Together.ai, Cerebras, Perplexity, DeepSeek, etc. |
|
|
47
47
|
| `fireworks` | claude-code, opencode, qwen, codex | Fireworks AI (supports all 3 API types) |
|
|
48
|
+
| `openrouter` | claude-code, opencode, qwen, codex | [OpenRouter](https://openrouter.ai) — universal LLM gateway (Anthropic Skin / OpenAI / Responses API) |
|
|
48
49
|
|
|
49
|
-
**
|
|
50
|
+
**Notes:**
|
|
51
|
+
- `claude-code` works with `anthropic`, `fireworks`, and `openrouter` types. For `openrouter` it uses OpenRouter's **Anthropic Skin** with `ANTHROPIC_AUTH_TOKEN` (Bearer auth).
|
|
52
|
+
- Use `opencode` or `qwen` for general OpenAI-compatible providers.
|
|
53
|
+
- `openrouter` is the most flexible — works with all 4 agents.
|
|
50
54
|
|
|
51
55
|
## Model Capability Flags
|
|
52
56
|
|
|
@@ -95,6 +99,13 @@ agento provider add \
|
|
|
95
99
|
-k "your-api-key" \
|
|
96
100
|
-u "https://api.together.xyz/v1" \
|
|
97
101
|
-M "meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo"
|
|
102
|
+
|
|
103
|
+
# OpenRouter (universal gateway — works with all 4 agents)
|
|
104
|
+
agento provider add \
|
|
105
|
+
-n "OpenRouter" \
|
|
106
|
+
-t openrouter \
|
|
107
|
+
-k "sk-or-v1-your-key" \
|
|
108
|
+
-M "anthropic/claude-sonnet-4.6,openai/gpt-5,google/gemini-2.5-pro"
|
|
98
109
|
```
|
|
99
110
|
|
|
100
111
|
### 2. Create a Profile
|
|
@@ -130,7 +141,7 @@ Running `agento` without arguments launches an interactive Terminal User Interfa
|
|
|
130
141
|
### Main Menu
|
|
131
142
|
|
|
132
143
|
```
|
|
133
|
-
┌────────── AgentO v0.
|
|
144
|
+
┌────────── AgentO v0.4.0 ──────────┐
|
|
134
145
|
│ │
|
|
135
146
|
│ ▶ Launch Agent │
|
|
136
147
|
│ Providers │
|
|
@@ -147,7 +158,7 @@ Running `agento` without arguments launches an interactive Terminal User Interfa
|
|
|
147
158
|
|
|
148
159
|
| Screen | What You Can Do | Key Shortcuts |
|
|
149
160
|
|--------|----------------|---------------|
|
|
150
|
-
| **Launch Agent** | Select profile → select agent
|
|
161
|
+
| **Launch Agent** | Select profile → select agent (with install hints) → launch; opens Install Wizard for uninstalled agents | **Enter** select, **Esc** back |
|
|
151
162
|
| **Providers** | View, add, edit, delete API providers; toggle model capabilities | **Enter** details / add model, **a** add provider, **e** edit, **d** delete, **i/v/a** toggle capability, **Esc** back |
|
|
152
163
|
| **Profiles** | View, add, delete profiles. In profile details: add/remove/edit models | **Enter** details, **a** add, **d** delete, **Esc** back |
|
|
153
164
|
| **Agents** | Check config status (global/project), backup availability | **Enter** details, **Esc** back |
|
|
@@ -156,8 +167,12 @@ Running `agento` without arguments launches an interactive Terminal User Interfa
|
|
|
156
167
|
### Launch Agent Workflow
|
|
157
168
|
|
|
158
169
|
1. **Select Profile** — Choose from your saved profiles
|
|
159
|
-
2. **Select Agent** —
|
|
160
|
-
|
|
170
|
+
2. **Select Agent** — AgentO checks install status of all agents (spinner while checking). Uninstalled agents show a `(not installed)` hint.
|
|
171
|
+
- If the selected agent **is installed** → proceeds to launch
|
|
172
|
+
- If the selected agent **is not installed** → opens the **Install Wizard**
|
|
173
|
+
3. **Install Wizard** (if needed):
|
|
174
|
+
- **Auto-install** — checks environment (requires npm), then installs via `npm install -g <package>`
|
|
175
|
+
- **Manual install** — shows the exact command and a docs URL
|
|
161
176
|
4. **Launch** — AgentO patches the agent config and starts the agent
|
|
162
177
|
|
|
163
178
|
```
|
|
@@ -227,14 +242,16 @@ Use **TUI** for exploration and interactive workflows. Use **CLI** for scripting
|
|
|
227
242
|
|
|
228
243
|
| Provider Type | claude-code | opencode | qwen | codex |
|
|
229
244
|
|---|---|---|---|---|
|
|
230
|
-
| **anthropic** | ✅ Full support | ✅ (via SDK) | ❌ Not supported |
|
|
231
|
-
| **openai-compatible** | ❌ Not supported | ✅ Full support | ✅ Full support |
|
|
245
|
+
| **anthropic** | ✅ Full support | ✅ (via SDK) | ❌ Not supported | ❌ Not supported |
|
|
246
|
+
| **openai-compatible** | ❌ Not supported | ✅ Full support | ✅ Full support | ❌ Not supported |
|
|
232
247
|
| **fireworks** | ✅ (Anthropic API) | ✅ (OpenAI API) | ✅ (OpenAI API) | ✅ (Responses API) |
|
|
248
|
+
| **openrouter** | ✅ (Anthropic Skin) | ✅ (OpenAI API) | ✅ (OpenAI API) | ✅ (Responses API) |
|
|
233
249
|
|
|
234
250
|
**Key Constraints:**
|
|
235
|
-
- `claude-code` uses
|
|
251
|
+
- `claude-code` uses Anthropic-compatible APIs and works with `anthropic`, `fireworks`, `openrouter` types
|
|
252
|
+
- For `openrouter` Claude Code uses `ANTHROPIC_AUTH_TOKEN` (Bearer) — not `apiKeyHelper`
|
|
236
253
|
- Other OpenAI-compatible providers must use `opencode` or `qwen` agents
|
|
237
|
-
- `fireworks`
|
|
254
|
+
- `fireworks` and `openrouter` are the most flexible — work with all 4 agents
|
|
238
255
|
|
|
239
256
|
## CLI Reference
|
|
240
257
|
|
|
@@ -276,7 +293,7 @@ Options:
|
|
|
276
293
|
agento provider list # List all providers
|
|
277
294
|
agento provider add [options] # Add a new provider
|
|
278
295
|
-n, --name <name> Provider display name (required)
|
|
279
|
-
-t, --type <type> Provider type: anthropic, openai-compatible, or
|
|
296
|
+
-t, --type <type> Provider type: anthropic, openai-compatible, fireworks, or openrouter (required)
|
|
280
297
|
-k, --api-key <key> API key (required)
|
|
281
298
|
-u, --base-url <url> Base URL (required for openai-compatible, optional for others)
|
|
282
299
|
-M, --models <models> Comma-separated list of model names (required)
|
|
@@ -286,6 +303,7 @@ agento provider remove <name> # Remove a provider
|
|
|
286
303
|
**Base URL Defaults:**
|
|
287
304
|
- `anthropic`: Uses Anthropic's default endpoint
|
|
288
305
|
- `fireworks`: Auto-defaults to `https://api.fireworks.ai/inference` if not specified
|
|
306
|
+
- `openrouter`: Auto-defaults to `https://openrouter.ai/api/v1` (Claude Code: `https://openrouter.ai/api`) if not specified
|
|
289
307
|
- `openai-compatible`: Must be explicitly provided with `-u`
|
|
290
308
|
|
|
291
309
|
### `agento profile` — Manage Profiles
|
|
@@ -383,7 +401,8 @@ AgentO stores its configuration in `~/.agento/config.json`:
|
|
|
383
401
|
|
|
384
402
|
Each supported agent has a dedicated adapter that translates AgentO's generic config format into the agent's specific configuration:
|
|
385
403
|
|
|
386
|
-
- **Claude Code** (supports `anthropic`, `fireworks`): Generates `~/.claude/settings.json` with tier-based model selection and ANTHROPIC_* env vars. Uses Anthropic SDK.
|
|
404
|
+
- **Claude Code** (supports `anthropic`, `fireworks`, `openrouter`): Generates `~/.claude/settings.json` with tier-based model selection and ANTHROPIC_* env vars. Uses Anthropic SDK.
|
|
405
|
+
- For `openrouter`: uses OpenRouter's **Anthropic Skin** — sets `ANTHROPIC_AUTH_TOKEN` (Bearer) + empty `ANTHROPIC_API_KEY`, no `apiKeyHelper`. Base URL: `https://openrouter.ai/api`
|
|
387
406
|
- ⚠️ **Does NOT support** `openai-compatible` providers (Anthropic SDK incompatibility)
|
|
388
407
|
- Capability flags are not propagated (Anthropic SDK doesn't expose modality config)
|
|
389
408
|
|
|
@@ -4,7 +4,7 @@ import type { Profile, Provider } from '../config/schema.js';
|
|
|
4
4
|
export declare class ClaudeCodeAdapter implements AgentAdapter {
|
|
5
5
|
readonly id = "claude-code";
|
|
6
6
|
readonly displayName = "Claude Code";
|
|
7
|
-
readonly supportedProviderTypes: readonly ["anthropic", "fireworks"];
|
|
7
|
+
readonly supportedProviderTypes: readonly ["anthropic", "fireworks", "openrouter"];
|
|
8
8
|
configPaths(cwd?: string): AgentConfigPaths;
|
|
9
9
|
readConfig(scope: LaunchScope, cwd?: string): Promise<AgentConfig | null>;
|
|
10
10
|
buildConfig(profile: Profile, providers: Provider[]): AgentConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAa,OAAO,EAAgB,QAAQ,
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAa,OAAO,EAAgB,QAAQ,EAAgB,MAAM,qBAAqB,CAAC;AAmBpG,qBAAa,iBAAkB,YAAW,YAAY;IACpD,QAAQ,CAAC,EAAE,iBAAiB;IAC5B,QAAQ,CAAC,WAAW,iBAAiB;IACrC,QAAQ,CAAC,sBAAsB,oDAAqD;IAEpF,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOrC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAO/E,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW;IA0D3D,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMxF;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -2,7 +2,10 @@ import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
const
|
|
5
|
+
const DEFAULT_ANTHROPIC_BASE_URLS = {
|
|
6
|
+
fireworks: 'https://api.fireworks.ai/inference',
|
|
7
|
+
openrouter: 'https://openrouter.ai/api',
|
|
8
|
+
};
|
|
6
9
|
function escapeForSingleQuoted(value) {
|
|
7
10
|
return value.replace(/'/g, "'\\''");
|
|
8
11
|
}
|
|
@@ -12,7 +15,7 @@ function pickByTier(models, tier, fallback) {
|
|
|
12
15
|
export class ClaudeCodeAdapter {
|
|
13
16
|
id = 'claude-code';
|
|
14
17
|
displayName = 'Claude Code';
|
|
15
|
-
supportedProviderTypes = ['anthropic', 'fireworks'];
|
|
18
|
+
supportedProviderTypes = ['anthropic', 'fireworks', 'openrouter'];
|
|
16
19
|
configPaths(cwd) {
|
|
17
20
|
return {
|
|
18
21
|
global: join(homedir(), '.claude', 'settings.json'),
|
|
@@ -50,10 +53,22 @@ export class ClaudeCodeAdapter {
|
|
|
50
53
|
ANTHROPIC_DEFAULT_SONNET_MODEL: base.model,
|
|
51
54
|
ANTHROPIC_DEFAULT_OPUS_MODEL: smart.model,
|
|
52
55
|
};
|
|
53
|
-
const anthropicBase = baseProvider.baseUrl ??
|
|
56
|
+
const anthropicBase = baseProvider.baseUrl ?? DEFAULT_ANTHROPIC_BASE_URLS[baseProvider.type];
|
|
54
57
|
if (anthropicBase) {
|
|
55
58
|
env['ANTHROPIC_BASE_URL'] = anthropicBase;
|
|
56
59
|
}
|
|
60
|
+
// OpenRouter Anthropic Skin принимает Bearer-токен (ANTHROPIC_AUTH_TOKEN),
|
|
61
|
+
// а не x-api-key (apiKeyHelper). ANTHROPIC_API_KEY должен быть пустым,
|
|
62
|
+
// иначе Claude Code fallback'нется на нативный Anthropic endpoint.
|
|
63
|
+
if (baseProvider.type === 'openrouter') {
|
|
64
|
+
env['ANTHROPIC_AUTH_TOKEN'] = baseProvider.apiKey;
|
|
65
|
+
env['ANTHROPIC_API_KEY'] = '';
|
|
66
|
+
return {
|
|
67
|
+
$schema: 'https://json.schemastore.org/claude-code-settings.json',
|
|
68
|
+
env,
|
|
69
|
+
model: base.model,
|
|
70
|
+
};
|
|
71
|
+
}
|
|
57
72
|
const config = {
|
|
58
73
|
$schema: 'https://json.schemastore.org/claude-code-settings.json',
|
|
59
74
|
apiKeyHelper: `bash -c 'echo ${escapeForSingleQuoted(baseProvider.apiKey)}'`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/adapters/claude-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,8 +4,7 @@ import type { Profile, Provider } from '../config/schema.js';
|
|
|
4
4
|
export declare class CodexAdapter implements AgentAdapter {
|
|
5
5
|
readonly id = "codex";
|
|
6
6
|
readonly displayName = "Codex CLI";
|
|
7
|
-
readonly
|
|
8
|
-
readonly supportedProviderTypes: readonly ["fireworks"];
|
|
7
|
+
readonly supportedProviderTypes: readonly ["fireworks", "openrouter"];
|
|
9
8
|
configPaths(cwd?: string): AgentConfigPaths;
|
|
10
9
|
readConfig(scope: LaunchScope, cwd?: string): Promise<AgentConfig | null>;
|
|
11
10
|
buildConfig(profile: Profile, providers: Provider[]): AgentConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,qBAAqB,CAAC;AAoB3E,qBAAa,YAAa,YAAW,YAAY;IAC/C,QAAQ,CAAC,EAAE,WAAW;IACtB,QAAQ,CAAC,WAAW,eAAe;IACnC,QAAQ,CAAC,sBAAsB,uCAAwC;IAEvE,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOrC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAO/E,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW;IA8BjE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAanE,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyFxF;AAED,eAAO,MAAM,YAAY,cAAqB,CAAC"}
|
|
@@ -3,7 +3,10 @@ import { existsSync } from 'node:fs';
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join, dirname } from 'node:path';
|
|
5
5
|
import { parse as parseToml, stringify as stringifyToml } from 'smol-toml';
|
|
6
|
-
const
|
|
6
|
+
const DEFAULT_BASE_URLS = {
|
|
7
|
+
fireworks: 'https://api.fireworks.ai/inference/v1',
|
|
8
|
+
openrouter: 'https://openrouter.ai/api/v1',
|
|
9
|
+
};
|
|
7
10
|
/** Нормализует имя провайдера в ключ: "Fireworks AI" → "fireworks-ai" */
|
|
8
11
|
function deriveProviderKey(name) {
|
|
9
12
|
return name.toLowerCase().replace(/\s+/g, '-');
|
|
@@ -17,8 +20,7 @@ let codexGlobalBackup = null;
|
|
|
17
20
|
export class CodexAdapter {
|
|
18
21
|
id = 'codex';
|
|
19
22
|
displayName = 'Codex CLI';
|
|
20
|
-
|
|
21
|
-
supportedProviderTypes = ['fireworks'];
|
|
23
|
+
supportedProviderTypes = ['fireworks', 'openrouter'];
|
|
22
24
|
configPaths(cwd) {
|
|
23
25
|
return {
|
|
24
26
|
global: join(homedir(), '.codex', 'config.toml'),
|
|
@@ -46,7 +48,7 @@ export class CodexAdapter {
|
|
|
46
48
|
model_providers: {
|
|
47
49
|
[providerKey]: {
|
|
48
50
|
name: provider.name,
|
|
49
|
-
base_url: provider.baseUrl ??
|
|
51
|
+
base_url: provider.baseUrl ?? DEFAULT_BASE_URLS[provider.type] ?? '',
|
|
50
52
|
env_key: envKey,
|
|
51
53
|
wire_api: 'responses',
|
|
52
54
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,WAAW,CAAC;AAK3E,MAAM,
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import type { Profile, Provider } from '../config/schema.js';
|
|
|
4
4
|
export declare class OpenCodeAdapter implements AgentAdapter {
|
|
5
5
|
readonly id = "opencode";
|
|
6
6
|
readonly displayName = "OpenCode";
|
|
7
|
-
readonly supportedProviderTypes: readonly ["anthropic", "openai-compatible", "fireworks"];
|
|
7
|
+
readonly supportedProviderTypes: readonly ["anthropic", "openai-compatible", "fireworks", "openrouter"];
|
|
8
8
|
configPaths(cwd?: string): AgentConfigPaths;
|
|
9
9
|
readConfig(scope: LaunchScope, cwd?: string): Promise<AgentConfig | null>;
|
|
10
10
|
buildConfig(profile: Profile, providers: Provider[]): AgentConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,qBAAqB,CAAC;AAO3E,qBAAa,eAAgB,YAAW,YAAY;IAClD,QAAQ,CAAC,EAAE,cAAc;IACzB,QAAQ,CAAC,WAAW,cAAc;IAClC,QAAQ,CAAC,sBAAsB,yEAA0E;IAEzG,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOrC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAO/E,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW;IA6E3D,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMxF;AAED,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
|
|
@@ -2,11 +2,14 @@ import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
const
|
|
5
|
+
const DEFAULT_BASE_URLS = {
|
|
6
|
+
fireworks: 'https://api.fireworks.ai/inference/v1',
|
|
7
|
+
openrouter: 'https://openrouter.ai/api/v1',
|
|
8
|
+
};
|
|
6
9
|
export class OpenCodeAdapter {
|
|
7
10
|
id = 'opencode';
|
|
8
11
|
displayName = 'OpenCode';
|
|
9
|
-
supportedProviderTypes = ['anthropic', 'openai-compatible', 'fireworks'];
|
|
12
|
+
supportedProviderTypes = ['anthropic', 'openai-compatible', 'fireworks', 'openrouter'];
|
|
10
13
|
configPaths(cwd) {
|
|
11
14
|
return {
|
|
12
15
|
global: join(homedir(), '.config', 'opencode', 'config.json'),
|
|
@@ -50,7 +53,7 @@ export class OpenCodeAdapter {
|
|
|
50
53
|
if (provider.type === 'fireworks') {
|
|
51
54
|
const providerKey = provider.name.toLowerCase().replace(/\s+/g, '-');
|
|
52
55
|
const options = { apiKey: provider.apiKey };
|
|
53
|
-
options['baseURL'] = provider.baseUrl ??
|
|
56
|
+
options['baseURL'] = provider.baseUrl ?? DEFAULT_BASE_URLS.fireworks;
|
|
54
57
|
return {
|
|
55
58
|
model: `${providerKey}/${base.model}`,
|
|
56
59
|
provider: {
|
|
@@ -63,6 +66,23 @@ export class OpenCodeAdapter {
|
|
|
63
66
|
},
|
|
64
67
|
};
|
|
65
68
|
}
|
|
69
|
+
if (provider.type === 'openrouter') {
|
|
70
|
+
const options = {
|
|
71
|
+
apiKey: provider.apiKey,
|
|
72
|
+
baseURL: provider.baseUrl ?? DEFAULT_BASE_URLS.openrouter,
|
|
73
|
+
};
|
|
74
|
+
return {
|
|
75
|
+
model: `openrouter/${base.model}`,
|
|
76
|
+
provider: {
|
|
77
|
+
openrouter: {
|
|
78
|
+
npm: '@ai-sdk/openai-compatible',
|
|
79
|
+
name: provider.name,
|
|
80
|
+
options,
|
|
81
|
+
models: { [base.model]: { name: base.model, modalities } },
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
66
86
|
// openai-compatible: кастомный провайдер с именем из agento
|
|
67
87
|
const providerKey = provider.name.toLowerCase().replace(/\s+/g, '-');
|
|
68
88
|
const options = { apiKey: provider.apiKey };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,iBAAiB,GAA0C;IAC/D,SAAS,EAAE,uCAAuC;IAClD,UAAU,EAAE,8BAA8B;CAC3C,CAAC;AAEF,MAAM,OAAO,eAAe;IACjB,EAAE,GAAG,UAAU,CAAC;IAChB,WAAW,GAAG,UAAU,CAAC;IACzB,sBAAsB,GAAG,CAAC,WAAW,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;IAEzG,WAAW,CAAC,GAAY;QACtB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC;YAC7D,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC;SACrD,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAkB,EAAE,GAAY;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,OAAgB,EAAE,SAAqB;QACjD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAEtE,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAEhF,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC;QACvE,MAAM,IAAI,GAAG,WAAW,EAAE,YAAY,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACtF,MAAM,eAAe,GAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK;YAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK;YAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,KAAK;YAAE,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAEhE,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,OAAO,GAA4B,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrE,IAAI,QAAQ,CAAC,OAAO;gBAAE,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC5D,OAAO;gBACL,KAAK,EAAE,aAAa,IAAI,CAAC,KAAK,EAAE;gBAChC,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE;gBACpC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE;aACzC,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACrE,MAAM,OAAO,GAA4B,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrE,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,IAAI,iBAAiB,CAAC,SAAS,CAAC;YACrE,OAAO;gBACL,KAAK,EAAE,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE;gBACrC,QAAQ,EAAE;oBACR,CAAC,WAAW,CAAC,EAAE;wBACb,GAAG,EAAE,2BAA2B;wBAChC,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,OAAO;wBACP,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;qBAC3D;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,QAAQ,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACnC,MAAM,OAAO,GAA4B;gBACvC,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,iBAAiB,CAAC,UAAU;aAC1D,CAAC;YACF,OAAO;gBACL,KAAK,EAAE,cAAc,IAAI,CAAC,KAAK,EAAE;gBACjC,QAAQ,EAAE;oBACR,UAAU,EAAE;wBACV,GAAG,EAAE,2BAA2B;wBAChC,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,OAAO;wBACP,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;qBAC3D;iBACF;aACF,CAAC;QACJ,CAAC;QAED,4DAA4D;QAC5D,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrE,MAAM,OAAO,GAA4B,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;QACrE,IAAI,QAAQ,CAAC,OAAO;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC5D,OAAO;YACL,KAAK,EAAE,GAAG,WAAW,IAAI,IAAI,CAAC,KAAK,EAAE;YACrC,QAAQ,EAAE;gBACR,CAAC,WAAW,CAAC,EAAE;oBACb,GAAG,EAAE,2BAA2B;oBAChC,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,OAAO;oBACP,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;iBAC3D;aACF;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAmB,EAAE,KAAkB,EAAE,GAAY;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;CACF;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -4,7 +4,7 @@ import type { Profile, Provider } from '../config/schema.js';
|
|
|
4
4
|
export declare class QwenAdapter implements AgentAdapter {
|
|
5
5
|
readonly id = "qwen";
|
|
6
6
|
readonly displayName = "Qwen CLI";
|
|
7
|
-
readonly supportedProviderTypes: readonly ["openai-compatible", "fireworks"];
|
|
7
|
+
readonly supportedProviderTypes: readonly ["openai-compatible", "fireworks", "openrouter"];
|
|
8
8
|
configPaths(cwd?: string): AgentConfigPaths;
|
|
9
9
|
readConfig(scope: LaunchScope, cwd?: string): Promise<AgentConfig | null>;
|
|
10
10
|
buildConfig(profile: Profile, providers: Provider[]): AgentConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../../src/adapters/qwen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"qwen.d.ts","sourceRoot":"","sources":["../../../src/adapters/qwen.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAgB,MAAM,qBAAqB,CAAC;AAkB3E,qBAAa,WAAY,YAAW,YAAY;IAC9C,QAAQ,CAAC,EAAE,UAAU;IACrB,QAAQ,CAAC,WAAW,cAAc;IAClC,QAAQ,CAAC,sBAAsB,4DAA6D;IAE5F,WAAW,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,gBAAgB;IAOrC,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAO/E,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW;IA6D3D,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAMxF;AAED,eAAO,MAAM,WAAW,aAAoB,CAAC"}
|
|
@@ -2,7 +2,10 @@ import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
|
2
2
|
import { existsSync } from 'node:fs';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { join } from 'node:path';
|
|
5
|
-
const
|
|
5
|
+
const DEFAULT_BASE_URLS = {
|
|
6
|
+
fireworks: 'https://api.fireworks.ai/inference/v1',
|
|
7
|
+
openrouter: 'https://openrouter.ai/api/v1',
|
|
8
|
+
};
|
|
6
9
|
/** Генерирует env-ключ для Qwen из baseUrl.
|
|
7
10
|
* Пример: "http://188.132.197.214:20128/v1" → "QWEN_CUSTOM_API_KEY_OPENAI_HTTP_188_132_197_214_20128_V1"
|
|
8
11
|
*/
|
|
@@ -16,7 +19,7 @@ function deriveEnvKey(baseUrl) {
|
|
|
16
19
|
export class QwenAdapter {
|
|
17
20
|
id = 'qwen';
|
|
18
21
|
displayName = 'Qwen CLI';
|
|
19
|
-
supportedProviderTypes = ['openai-compatible', 'fireworks'];
|
|
22
|
+
supportedProviderTypes = ['openai-compatible', 'fireworks', 'openrouter'];
|
|
20
23
|
configPaths(cwd) {
|
|
21
24
|
return {
|
|
22
25
|
global: join(homedir(), '.qwen', 'settings.json'),
|
|
@@ -47,7 +50,7 @@ export class QwenAdapter {
|
|
|
47
50
|
if (provider.type === 'anthropic') {
|
|
48
51
|
throw new Error(`Qwen CLI does not support Anthropic providers (provider: "${provider.name}")`);
|
|
49
52
|
}
|
|
50
|
-
const resolvedBaseUrl = provider.baseUrl ??
|
|
53
|
+
const resolvedBaseUrl = provider.baseUrl ?? DEFAULT_BASE_URLS[provider.type];
|
|
51
54
|
if (!resolvedBaseUrl) {
|
|
52
55
|
throw new Error(`Qwen CLI requires a baseUrl for provider "${provider.name}"`);
|
|
53
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../../src/adapters/qwen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,
|
|
1
|
+
{"version":3,"file":"qwen.js","sourceRoot":"","sources":["../../../src/adapters/qwen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,iBAAiB,GAA0C;IAC/D,SAAS,EAAE,uCAAuC;IAClD,UAAU,EAAE,8BAA8B;CAC3C,CAAC;AAEF;;GAEG;AACH,SAAS,YAAY,CAAC,OAAe;IACnC,MAAM,UAAU,GAAG,OAAO;SACvB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,8BAA8B,UAAU,EAAE,CAAC;AACpD,CAAC;AAED,MAAM,OAAO,WAAW;IACb,EAAE,GAAG,MAAM,CAAC;IACZ,WAAW,GAAG,UAAU,CAAC;IACzB,sBAAsB,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;IAE5F,WAAW,CAAC,GAAY;QACtB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC;YACjD,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC;SAC9D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAkB,EAAE,GAAY;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACnC,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAgB,CAAC;IACxC,CAAC;IAED,WAAW,CAAC,OAAgB,EAAE,SAAqB;QACjD,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,CAAC,IAAI,iBAAiB,CAAC,CAAC;QAC7D,CAAC;QAED,oDAAoD;QACpD,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC;QAEtF,uDAAuD;QACvD,MAAM,MAAM,GAA2B,EAAE,CAAC;QAC1C,MAAM,cAAc,GAMd,EAAE,CAAC;QAET,KAAK,MAAM,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,YAAY,CAAC,UAAU,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,6DAA6D,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;YAClG,CAAC;YACD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7E,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;YACjF,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC;YAC7B,MAAM,MAAM,GAAG,YAAY,CAAC,eAAe,CAAC,CAAC;YAC7C,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;YAEjC,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/E,MAAM,IAAI,GAAG,WAAW,EAAE,YAAY,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;YAEtF,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC;gBAAE,cAAc,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACnE,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;gBAC/B,EAAE,EAAE,YAAY,CAAC,KAAK;gBACtB,IAAI,EAAE,YAAY,CAAC,KAAK;gBACxB,OAAO,EAAE,eAAe;gBACxB,MAAM;gBACN,gBAAgB,EAAE;oBAChB,UAAU,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE;iBACxE;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO;YACL,GAAG,EAAE,MAAM;YACX,cAAc;YACd,QAAQ,EAAE;gBACR,IAAI,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE;aACjC;YACD,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE;YAChC,QAAQ,EAAE,CAAC;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,MAAmB,EAAE,KAAkB,EAAE,GAAY;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtC,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAClE,CAAC;CACF;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import { listProviders, addProvider, removeProvider } from '../../providers/provider-manager.js';
|
|
3
|
-
import { capabilityMarker } from '../../config/schema.js';
|
|
3
|
+
import { capabilityMarker, PROVIDER_TYPES } from '../../config/schema.js';
|
|
4
4
|
export function createProviderCommand() {
|
|
5
5
|
const cmd = new Command('provider').description('Manage API providers');
|
|
6
6
|
cmd
|
|
@@ -30,7 +30,7 @@ export function createProviderCommand() {
|
|
|
30
30
|
.command('add')
|
|
31
31
|
.description('Add a new provider')
|
|
32
32
|
.requiredOption('-n, --name <name>', 'Provider name')
|
|
33
|
-
.requiredOption('-t, --type <type>',
|
|
33
|
+
.requiredOption('-t, --type <type>', `Provider type (${PROVIDER_TYPES.join(', ')})`)
|
|
34
34
|
.requiredOption('-k, --api-key <key>', 'API key')
|
|
35
35
|
.option('-u, --base-url <url>', 'Base URL (for openai-compatible)')
|
|
36
36
|
.requiredOption('-M, --models <models>', 'Comma-separated list of model names')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/cli/commands/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../../src/cli/commands/provider.ts"],"names":[],"mappings":"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"}
|