@emaxe/agento 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +28 -0
- package/CHANGELOG.md +21 -1
- package/README.md +23 -17
- package/README.ru.md +28 -18
- package/dist/bin/agento.js +34 -5
- package/dist/bin/agento.js.map +1 -1
- package/dist/src/adapters/copilot.d.ts +15 -0
- package/dist/src/adapters/copilot.d.ts.map +1 -0
- package/dist/src/adapters/copilot.js +71 -0
- package/dist/src/adapters/copilot.js.map +1 -0
- package/dist/src/adapters/opencode.d.ts +1 -0
- package/dist/src/adapters/opencode.d.ts.map +1 -1
- package/dist/src/adapters/opencode.js +10 -0
- package/dist/src/adapters/opencode.js.map +1 -1
- package/dist/src/cli/commands/agent.d.ts +7 -0
- package/dist/src/cli/commands/agent.d.ts.map +1 -1
- package/dist/src/cli/commands/agent.js +10 -1
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/launch.d.ts +7 -0
- package/dist/src/cli/commands/launch.d.ts.map +1 -1
- package/dist/src/cli/commands/launch.js +16 -5
- package/dist/src/cli/commands/launch.js.map +1 -1
- package/dist/src/cli/commands/profile.d.ts +6 -0
- package/dist/src/cli/commands/profile.d.ts.map +1 -1
- package/dist/src/cli/commands/profile.js +6 -0
- package/dist/src/cli/commands/profile.js.map +1 -1
- package/dist/src/cli/commands/provider.d.ts +6 -0
- package/dist/src/cli/commands/provider.d.ts.map +1 -1
- package/dist/src/cli/commands/provider.js +6 -0
- package/dist/src/cli/commands/provider.js.map +1 -1
- package/dist/src/cli/commands/restore.d.ts +8 -0
- package/dist/src/cli/commands/restore.d.ts.map +1 -1
- package/dist/src/cli/commands/restore.js +8 -0
- package/dist/src/cli/commands/restore.js.map +1 -1
- package/dist/src/config/schema.d.ts +1 -1
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +1 -1
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/store.d.ts +4 -0
- package/dist/src/config/store.d.ts.map +1 -1
- package/dist/src/config/store.js +18 -0
- package/dist/src/config/store.js.map +1 -1
- package/dist/src/installers/claude-code.d.ts +4 -0
- package/dist/src/installers/claude-code.d.ts.map +1 -1
- package/dist/src/installers/claude-code.js +4 -0
- package/dist/src/installers/claude-code.js.map +1 -1
- package/dist/src/installers/codex.d.ts +4 -0
- package/dist/src/installers/codex.d.ts.map +1 -1
- package/dist/src/installers/codex.js +4 -0
- package/dist/src/installers/codex.js.map +1 -1
- package/dist/src/installers/copilot.d.ts +19 -0
- package/dist/src/installers/copilot.d.ts.map +1 -0
- package/dist/src/installers/copilot.js +55 -0
- package/dist/src/installers/copilot.js.map +1 -0
- package/dist/src/installers/opencode.d.ts +4 -0
- package/dist/src/installers/opencode.d.ts.map +1 -1
- package/dist/src/installers/opencode.js +4 -0
- package/dist/src/installers/opencode.js.map +1 -1
- package/dist/src/installers/qwen.d.ts +4 -0
- package/dist/src/installers/qwen.d.ts.map +1 -1
- package/dist/src/installers/qwen.js +4 -0
- package/dist/src/installers/qwen.js.map +1 -1
- package/dist/src/installers/registry.d.ts +7 -0
- package/dist/src/installers/registry.d.ts.map +1 -1
- package/dist/src/installers/registry.js +4 -0
- package/dist/src/installers/registry.js.map +1 -1
- package/dist/src/launcher/child.js +1 -1
- package/dist/src/launcher/child.js.map +1 -1
- package/dist/src/launcher/independent.d.ts +16 -3
- package/dist/src/launcher/independent.d.ts.map +1 -1
- package/dist/src/launcher/independent.js +12 -3
- package/dist/src/launcher/independent.js.map +1 -1
- package/dist/src/profiles/profile-manager.d.ts +26 -7
- package/dist/src/profiles/profile-manager.d.ts.map +1 -1
- package/dist/src/profiles/profile-manager.js +26 -7
- package/dist/src/profiles/profile-manager.js.map +1 -1
- package/dist/src/providers/provider-manager.d.ts +18 -5
- package/dist/src/providers/provider-manager.d.ts.map +1 -1
- package/dist/src/providers/provider-manager.js +25 -5
- package/dist/src/providers/provider-manager.js.map +1 -1
- package/dist/src/tui/App.d.ts +12 -1
- package/dist/src/tui/App.d.ts.map +1 -1
- package/dist/src/tui/App.js +6 -2
- package/dist/src/tui/App.js.map +1 -1
- package/dist/src/tui/screens/AgentInstall.d.ts.map +1 -1
- package/dist/src/tui/screens/AgentInstall.js +1 -0
- package/dist/src/tui/screens/AgentInstall.js.map +1 -1
- package/dist/src/tui/screens/Agents.d.ts +1 -0
- package/dist/src/tui/screens/Agents.d.ts.map +1 -1
- package/dist/src/tui/screens/Agents.js +4 -1
- package/dist/src/tui/screens/Agents.js.map +1 -1
- package/dist/src/tui/screens/LaunchAgent.d.ts +14 -1
- package/dist/src/tui/screens/LaunchAgent.d.ts.map +1 -1
- package/dist/src/tui/screens/LaunchAgent.js +97 -19
- package/dist/src/tui/screens/LaunchAgent.js.map +1 -1
- package/dist/src/tui/screens/MainMenu.d.ts +7 -0
- package/dist/src/tui/screens/MainMenu.d.ts.map +1 -1
- package/dist/src/tui/screens/MainMenu.js +7 -0
- package/dist/src/tui/screens/MainMenu.js.map +1 -1
- package/dist/src/tui/screens/Profiles.d.ts +1 -0
- package/dist/src/tui/screens/Profiles.d.ts.map +1 -1
- package/dist/src/tui/screens/Profiles.js +1 -0
- package/dist/src/tui/screens/Profiles.js.map +1 -1
- package/dist/src/tui/screens/Providers.d.ts +1 -0
- package/dist/src/tui/screens/Providers.d.ts.map +1 -1
- package/dist/src/tui/screens/Providers.js +1 -0
- package/dist/src/tui/screens/Providers.js.map +1 -1
- package/dist/src/tui/screens/Settings.d.ts +1 -0
- package/dist/src/tui/screens/Settings.d.ts.map +1 -1
- package/dist/src/tui/screens/Settings.js +20 -3
- package/dist/src/tui/screens/Settings.js.map +1 -1
- package/dist/src/tui/start.d.ts +9 -0
- package/dist/src/tui/start.d.ts.map +1 -1
- package/dist/src/tui/start.js +15 -0
- package/dist/src/tui/start.js.map +1 -1
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -37,6 +37,13 @@ AgentO — CLI-инструмент для управления конфигур
|
|
|
37
37
|
│ ├── config/ # Конфигурация AgentO
|
|
38
38
|
│ │ ├── schema.ts # Zod-схемы и типы
|
|
39
39
|
│ │ └── store.ts # Чтение/запись ~/.agento/config.json
|
|
40
|
+
│ ├── installers/ # Установщики агентов (TUI Install Wizard)
|
|
41
|
+
│ │ ├── base.ts # Интерфейс AgentInstaller
|
|
42
|
+
│ │ ├── registry.ts # Реестр установщиков
|
|
43
|
+
│ │ ├── claude-code.ts # Установщик Claude Code
|
|
44
|
+
│ │ ├── opencode.ts # Установщик OpenCode
|
|
45
|
+
│ │ ├── qwen.ts # Установщик Qwen CLI
|
|
46
|
+
│ │ └── codex.ts # Установщик Codex CLI
|
|
40
47
|
│ ├── launcher/ # Запуск агентов
|
|
41
48
|
│ │ ├── child.ts # Child mode (backup → patch → spawn → restore)
|
|
42
49
|
│ │ ├── independent.ts # Independent mode (backup → patch → exec)
|
|
@@ -52,6 +59,7 @@ AgentO — CLI-инструмент для управления конфигур
|
|
|
52
59
|
│ └── screens/ # Экраны TUI
|
|
53
60
|
│ ├── MainMenu.tsx
|
|
54
61
|
│ ├── LaunchAgent.tsx
|
|
62
|
+
│ ├── AgentInstall.tsx # Мастер установки агента
|
|
55
63
|
│ ├── Providers.tsx
|
|
56
64
|
│ ├── Profiles.tsx
|
|
57
65
|
│ ├── Agents.tsx
|
|
@@ -148,6 +156,26 @@ AgentO — CLI-инструмент для управления конфигур
|
|
|
148
156
|
const providerKey = 'openai'; // Было: provider.name.toLowerCase().replace(/\s+/g, '-')
|
|
149
157
|
```
|
|
150
158
|
|
|
159
|
+
## Install Wizard / Installers
|
|
160
|
+
|
|
161
|
+
The TUI includes an install wizard (`AgentInstall.tsx`) that triggers when a user selects an agent that is not yet installed on the system.
|
|
162
|
+
|
|
163
|
+
Each supported agent has a dedicated installer under `src/installers/` that implements the `AgentInstaller` interface from `src/installers/base.ts`:
|
|
164
|
+
|
|
165
|
+
- **`checkInstalled()`** — runs the agent's `--version` command to detect presence and extract version.
|
|
166
|
+
- **`checkEnvironment()`** — verifies prerequisites (e.g. `npm` is available for auto-install).
|
|
167
|
+
- **`install()`** — performs a global `npm install -g <package>` and captures stderr for error reporting.
|
|
168
|
+
- **`manualInstructions`** — provides the exact install command and docs URL shown in manual-install mode.
|
|
169
|
+
|
|
170
|
+
**Registry:** `src/installers/registry.ts` maps `AgentId` → `AgentInstaller`. The TUI calls `getInstaller(agentId)` to retrieve the appropriate installer before showing the wizard.
|
|
171
|
+
|
|
172
|
+
| Agent | Package | Docs URL |
|
|
173
|
+
|-------|---------|----------|
|
|
174
|
+
| Claude Code | `npm install -g @anthropic-ai/claude-code` | https://docs.anthropic.com/en/docs/claude-code/setup |
|
|
175
|
+
| OpenCode | `npm install -g opencode` | https://opencode.ai/docs |
|
|
176
|
+
| Qwen CLI | `npm install -g @qwen-code/qwen-code@latest` | https://github.com/QwenLM/qwen-code |
|
|
177
|
+
| Codex CLI | `npm install -g @openai/codex` | https://github.com/openai/codex |
|
|
178
|
+
|
|
151
179
|
## CLI команды
|
|
152
180
|
|
|
153
181
|
### Запуск
|
package/CHANGELOG.md
CHANGED
|
@@ -13,9 +13,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
13
13
|
- Profile import/export
|
|
14
14
|
- CLI flags for setting non-default capabilities at `provider add` time
|
|
15
15
|
- Plugin system for custom adapters
|
|
16
|
-
- Better error handling and logging
|
|
17
16
|
- Configuration templates and presets
|
|
18
17
|
|
|
18
|
+
## [0.4.1] - 2026-05-12
|
|
19
|
+
|
|
20
|
+
### Added
|
|
21
|
+
|
|
22
|
+
- **Copilot CLI agent** (`copilot`) — full support for GitHub Copilot CLI across all 4 provider types:
|
|
23
|
+
- All config delivered via environment variables (`COPILOT_MODEL`, `COPILOT_PROVIDER_TYPE`, `COPILOT_PROVIDER_API_KEY`, `COPILOT_PROVIDER_BASE_URL`) — no settings file mutation
|
|
24
|
+
- Provider type mapping: `anthropic` → `anthropic`, `openai-compatible` / `fireworks` / `openrouter` → `openai`
|
|
25
|
+
- Default base URLs: Anthropic `https://api.anthropic.com`, Fireworks `https://api.fireworks.ai/inference/v1`, OpenRouter `https://openrouter.ai/api/v1`
|
|
26
|
+
- Auto-enables `COPILOT_PROVIDER_WIRE_API=responses` for gpt-5 family models
|
|
27
|
+
- Registered in TUI Launch Agent screen and CLI `agento launch` command
|
|
28
|
+
- Installer: Homebrew Cask (`gh` extension via `brew install --cask github-copilot-for-xcode` / `gh extension install github/gh-copilot`)
|
|
29
|
+
- **Install status disk cache** — agent install statuses persisted to `~/.agento/agent-status.json`; already-known-installed agents are skipped on next launch (no redundant `checkInstalled()` calls)
|
|
30
|
+
- **ENOENT recovery loop** — when `spawnSync` throws `ENOENT` (command not found), the TUI relaunches with a `launchError` context: profile is pre-selected, affected agent is marked not-installed, and the error message is shown on the agent selection step
|
|
31
|
+
- **Settings value descriptions** — the Settings screen now shows an inline description of the current value for the highlighted setting (e.g. explains what `child` vs `independent` mode means)
|
|
32
|
+
- `agentId` / `profileId` fields added to `ExecRequest` interface — allows the relaunch loop to identify which agent failed without re-parsing the command string
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- Copilot adapter `writeConfig` no longer creates a stale empty directory — it is a true no-op since Copilot CLI needs no settings file
|
|
37
|
+
- Copilot adapter now throws a descriptive error when no base URL can be resolved for a provider type (previously silently set an empty string)
|
|
38
|
+
|
|
19
39
|
## [0.4.0] - 2026-05-11
|
|
20
40
|
|
|
21
41
|
### Added
|
package/README.md
CHANGED
|
@@ -17,6 +17,7 @@ AgentO is a CLI tool that centralizes configuration management for popular AI co
|
|
|
17
17
|
| [OpenCode](https://github.com/opencode-ai/opencode) | `opencode` | JSON | `anthropic`, `openai-compatible`, `fireworks`, `openrouter` | Full function calling support via Vercel AI SDK |
|
|
18
18
|
| [Qwen CLI](https://github.com/QwenLM/qwen) | `qwen` | JSON | `openai-compatible`, `fireworks`, `openrouter` | OpenAI-compatible API structure |
|
|
19
19
|
| [Codex CLI](https://github.com/openai/codex) | `codex` | TOML | `fireworks`, `openrouter` | Environment variable injection. `wire_api: responses`. |
|
|
20
|
+
| [Copilot CLI](https://github.com/github/gh-copilot) | `gh copilot` | env vars only | `anthropic`, `openai-compatible`, `fireworks`, `openrouter` | Config delivered entirely via env vars — no settings file patched. |
|
|
20
21
|
|
|
21
22
|
## Installation
|
|
22
23
|
|
|
@@ -42,15 +43,16 @@ npx @emaxe/agento
|
|
|
42
43
|
|
|
43
44
|
| Provider Type | Compatible Agents | Examples |
|
|
44
45
|
|---|---|---|
|
|
45
|
-
| `anthropic` | claude-code, opencode | Anthropic |
|
|
46
|
-
| `openai-compatible` | opencode, qwen | OpenAI, Together.ai, Cerebras, Perplexity, DeepSeek, etc. |
|
|
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) |
|
|
46
|
+
| `anthropic` | claude-code, opencode, copilot | Anthropic |
|
|
47
|
+
| `openai-compatible` | opencode, qwen, copilot | OpenAI, Together.ai, Cerebras, Perplexity, DeepSeek, etc. |
|
|
48
|
+
| `fireworks` | claude-code, opencode, qwen, codex, copilot | Fireworks AI (supports all 3 API types) |
|
|
49
|
+
| `openrouter` | claude-code, opencode, qwen, codex, copilot | [OpenRouter](https://openrouter.ai) — universal LLM gateway (Anthropic Skin / OpenAI / Responses API) |
|
|
49
50
|
|
|
50
51
|
**Notes:**
|
|
51
52
|
- `claude-code` works with `anthropic`, `fireworks`, and `openrouter` types. For `openrouter` it uses OpenRouter's **Anthropic Skin** with `ANTHROPIC_AUTH_TOKEN` (Bearer auth).
|
|
53
|
+
- `copilot` works with all 4 provider types; config is delivered entirely via environment variables (no settings file is patched).
|
|
52
54
|
- Use `opencode` or `qwen` for general OpenAI-compatible providers.
|
|
53
|
-
- `openrouter` is the most flexible — works with all
|
|
55
|
+
- `openrouter` is the most flexible — works with all 5 agents.
|
|
54
56
|
|
|
55
57
|
## Model Capability Flags
|
|
56
58
|
|
|
@@ -141,7 +143,7 @@ Running `agento` without arguments launches an interactive Terminal User Interfa
|
|
|
141
143
|
### Main Menu
|
|
142
144
|
|
|
143
145
|
```
|
|
144
|
-
┌────────── AgentO v0.4.
|
|
146
|
+
┌────────── AgentO v0.4.1 ──────────┐
|
|
145
147
|
│ │
|
|
146
148
|
│ ▶ Launch Agent │
|
|
147
149
|
│ Providers │
|
|
@@ -158,18 +160,19 @@ Running `agento` without arguments launches an interactive Terminal User Interfa
|
|
|
158
160
|
|
|
159
161
|
| Screen | What You Can Do | Key Shortcuts |
|
|
160
162
|
|--------|----------------|---------------|
|
|
161
|
-
| **Launch Agent** | Select profile → select agent (with install hints) → launch; opens Install Wizard for uninstalled agents | **Enter** select, **Esc** back |
|
|
163
|
+
| **Launch Agent** | Select profile → select agent (with install hints) → launch; opens Install Wizard for uninstalled agents; install statuses cached on disk | **Enter** select, **Esc** back |
|
|
162
164
|
| **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 |
|
|
163
165
|
| **Profiles** | View, add, delete profiles. In profile details: add/remove/edit models | **Enter** details, **a** add, **d** delete, **Esc** back |
|
|
164
166
|
| **Agents** | Check config status (global/project), backup availability | **Enter** details, **Esc** back |
|
|
165
|
-
| **Settings** | Change default launch mode, default config scope
|
|
167
|
+
| **Settings** | Change default launch mode, default config scope; selected setting shows inline description of the current value | **↑↓** navigate, **Enter/Space** toggle, **Esc** save & back |
|
|
166
168
|
|
|
167
169
|
### Launch Agent Workflow
|
|
168
170
|
|
|
169
171
|
1. **Select Profile** — Choose from your saved profiles
|
|
170
|
-
2. **Select Agent** — AgentO checks install status of all agents (spinner while checking). Uninstalled agents show a `(not installed)` hint.
|
|
172
|
+
2. **Select Agent** — AgentO checks install status of all agents (spinner while checking). Uninstalled agents show a `(not installed)` hint. Statuses are cached to `~/.agento/agent-status.json` so already-known-installed agents are skipped on the next launch.
|
|
171
173
|
- If the selected agent **is installed** → proceeds to launch
|
|
172
174
|
- If the selected agent **is not installed** → opens the **Install Wizard**
|
|
175
|
+
- If the command is not found at launch time (ENOENT) → TUI relaunches with the error shown and the agent marked as not installed
|
|
173
176
|
3. **Install Wizard** (if needed):
|
|
174
177
|
- **Auto-install** — checks environment (requires npm), then installs via `npm install -g <package>`
|
|
175
178
|
- **Manual install** — shows the exact command and a docs URL
|
|
@@ -240,18 +243,19 @@ Use **TUI** for exploration and interactive workflows. Use **CLI** for scripting
|
|
|
240
243
|
|
|
241
244
|
## Provider & Agent Compatibility Matrix
|
|
242
245
|
|
|
243
|
-
| Provider Type | claude-code | opencode | qwen | codex |
|
|
244
|
-
|
|
245
|
-
| **anthropic** | ✅ Full support | ✅ (via SDK) | ❌ Not supported | ❌ Not supported |
|
|
246
|
-
| **openai-compatible** | ❌ Not supported | ✅ Full support | ✅ Full support | ❌ Not supported |
|
|
247
|
-
| **fireworks** | ✅ (Anthropic API) | ✅ (OpenAI API) | ✅ (OpenAI API) | ✅ (Responses API) |
|
|
248
|
-
| **openrouter** | ✅ (Anthropic Skin) | ✅ (OpenAI API) | ✅ (OpenAI API) | ✅ (Responses API) |
|
|
246
|
+
| Provider Type | claude-code | opencode | qwen | codex | copilot |
|
|
247
|
+
|---|---|---|---|---|---|
|
|
248
|
+
| **anthropic** | ✅ Full support | ✅ (via SDK) | ❌ Not supported | ❌ Not supported | ✅ (env vars) |
|
|
249
|
+
| **openai-compatible** | ❌ Not supported | ✅ Full support | ✅ Full support | ❌ Not supported | ✅ (env vars) |
|
|
250
|
+
| **fireworks** | ✅ (Anthropic API) | ✅ (OpenAI API) | ✅ (OpenAI API) | ✅ (Responses API) | ✅ (env vars, OpenAI type) |
|
|
251
|
+
| **openrouter** | ✅ (Anthropic Skin) | ✅ (OpenAI API) | ✅ (OpenAI API) | ✅ (Responses API) | ✅ (env vars, OpenAI type) |
|
|
249
252
|
|
|
250
253
|
**Key Constraints:**
|
|
251
254
|
- `claude-code` uses Anthropic-compatible APIs and works with `anthropic`, `fireworks`, `openrouter` types
|
|
252
255
|
- For `openrouter` Claude Code uses `ANTHROPIC_AUTH_TOKEN` (Bearer) — not `apiKeyHelper`
|
|
253
|
-
- Other OpenAI-compatible providers must use `opencode` or `
|
|
254
|
-
- `
|
|
256
|
+
- Other OpenAI-compatible providers must use `opencode`, `qwen`, or `copilot` agents
|
|
257
|
+
- `copilot` delivers all config via env vars — no settings file is ever patched or restored
|
|
258
|
+
- `fireworks` and `openrouter` are the most flexible — work with all 5 agents
|
|
255
259
|
|
|
256
260
|
## CLI Reference
|
|
257
261
|
|
|
@@ -412,6 +416,8 @@ Each supported agent has a dedicated adapter that translates AgentO's generic co
|
|
|
412
416
|
|
|
413
417
|
- **Codex CLI** (`--dev` to show): Generates `~/.codex/config.toml` with `wire_api: responses`, profiles, and environment variable references. In project scope, splits config between global (`model_providers`) and project (`model`) configs. Supports all provider types. Capability flags are not propagated (Codex `responses` API has no modality config).
|
|
414
418
|
|
|
419
|
+
- **Copilot CLI** (supports all 4 provider types): No settings file is written. All config is delivered at launch via `COPILOT_MODEL`, `COPILOT_PROVIDER_TYPE`, `COPILOT_PROVIDER_API_KEY`, `COPILOT_PROVIDER_BASE_URL`. Provider types `fireworks` and `openrouter` map to `COPILOT_PROVIDER_TYPE=openai`. Auto-enables `COPILOT_PROVIDER_WIRE_API=responses` for gpt-5 family models.
|
|
420
|
+
|
|
415
421
|
### Backup & Restore
|
|
416
422
|
|
|
417
423
|
Before modifying any agent configuration, AgentO creates a backup at `~/.agento/backups/<agent>/<scope>.bak.*`.
|
package/README.ru.md
CHANGED
|
@@ -13,20 +13,26 @@ AgentO — это CLI-инструмент для централизованно
|
|
|
13
13
|
|
|
14
14
|
| Агент | Команда | Формат конфига | Поддерживаемые провайдеры | Особенности |
|
|
15
15
|
|-------|---------|----------------|---|-------------|
|
|
16
|
-
| [Claude Code](https://github.com/anthropics/claude-code) | `claude` | JSON | `anthropic`, `fireworks` | Поддержка уровней (small/base/smart) |
|
|
17
|
-
| [OpenCode](https://github.com/opencode-ai/opencode) | `opencode` | JSON | `anthropic`, `openai-compatible`, `fireworks` | Полная поддержка function calling через Vercel AI SDK; пробрасывает модальности |
|
|
18
|
-
| [Qwen CLI](https://github.com/QwenLM/qwen) | `qwen` | JSON | `openai-compatible`, `fireworks` | Структура OpenAI-совместимого API; пробрасывает модальности |
|
|
19
|
-
| [Codex CLI](https://github.com/openai/codex) | `codex` | TOML |
|
|
16
|
+
| [Claude Code](https://github.com/anthropics/claude-code) | `claude` | JSON | `anthropic`, `fireworks`, `openrouter` | Поддержка уровней (small/base/smart) |
|
|
17
|
+
| [OpenCode](https://github.com/opencode-ai/opencode) | `opencode` | JSON | `anthropic`, `openai-compatible`, `fireworks`, `openrouter` | Полная поддержка function calling через Vercel AI SDK; пробрасывает модальности |
|
|
18
|
+
| [Qwen CLI](https://github.com/QwenLM/qwen) | `qwen` | JSON | `openai-compatible`, `fireworks`, `openrouter` | Структура OpenAI-совместимого API; пробрасывает модальности |
|
|
19
|
+
| [Codex CLI](https://github.com/openai/codex) | `codex` | TOML | `fireworks`, `openrouter` | Инжект переменных окружения. Скрыт по умолчанию (флаг `--dev`). |
|
|
20
|
+
| [Copilot CLI](https://github.com/github/gh-copilot) | `gh copilot` | только env-переменные | `anthropic`, `openai-compatible`, `fireworks`, `openrouter` | Весь конфиг передаётся через переменные окружения — файл настроек не изменяется. |
|
|
20
21
|
|
|
21
22
|
## Поддерживаемые типы провайдеров
|
|
22
23
|
|
|
23
24
|
| Тип провайдера | Совместимые агенты | Примеры |
|
|
24
25
|
|---|---|---|
|
|
25
|
-
| `anthropic` | claude-code | Anthropic |
|
|
26
|
-
| `openai-compatible` | opencode, qwen | OpenAI, Together.ai, Cerebras, Perplexity, DeepSeek и т. д. |
|
|
27
|
-
| `fireworks` | claude-code, opencode, qwen, codex | Fireworks AI (поддерживает все 3 типа API) |
|
|
26
|
+
| `anthropic` | claude-code, opencode, copilot | Anthropic |
|
|
27
|
+
| `openai-compatible` | opencode, qwen, copilot | OpenAI, Together.ai, Cerebras, Perplexity, DeepSeek и т. д. |
|
|
28
|
+
| `fireworks` | claude-code, opencode, qwen, codex, copilot | Fireworks AI (поддерживает все 3 типа API) |
|
|
29
|
+
| `openrouter` | claude-code, opencode, qwen, codex, copilot | [OpenRouter](https://openrouter.ai) — универсальный шлюз (Anthropic Skin / OpenAI / Responses API) |
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
**Примечания:**
|
|
32
|
+
- `claude-code` работает с `anthropic`, `fireworks` и `openrouter` (требование Anthropic SDK). Для `openrouter` использует **Anthropic Skin** — `ANTHROPIC_AUTH_TOKEN` (Bearer).
|
|
33
|
+
- `copilot` работает со всеми 4 типами провайдеров; конфиг передаётся через переменные окружения, файл настроек не изменяется.
|
|
34
|
+
- Для других OpenAI-совместимых провайдеров используйте `opencode`, `qwen` или `copilot`.
|
|
35
|
+
- `openrouter` наиболее универсален — работает со всеми 5 агентами.
|
|
30
36
|
|
|
31
37
|
## Флаги возможностей моделей
|
|
32
38
|
|
|
@@ -137,18 +143,20 @@ agento launch -p default -a qwen -m child -s project
|
|
|
137
143
|
|
|
138
144
|
| Экран | Возможности | Горячие клавиши |
|
|
139
145
|
|-------|-------------|-----------------|
|
|
140
|
-
| **Запуск агента** | Выбор профиля → агента →
|
|
146
|
+
| **Запуск агента** | Выбор профиля → агента → запуск; статус установки кешируется на диск; при ENOENT — перезапуск TUI с ошибкой | **Enter** выбор, **Esc** назад |
|
|
141
147
|
| **Провайдеры** | Просмотр, добавление, редактирование, удаление провайдеров; переключение возможностей моделей | **Enter** детали / добавить модель, **a** добавить провайдер, **e** редактировать, **d** удалить, **i/v/a** переключить флаг, **Esc** назад |
|
|
142
148
|
| **Профили** | Просмотр, добавление, удаление профилей. В деталях: добавление/удаление/редактирование моделей | **Enter** детали, **a** добавить, **d** удалить, **Esc** назад |
|
|
143
149
|
| **Агенты** | Проверка статуса конфигов (global/project), наличие бэкапов | **Enter** детали, **Esc** назад |
|
|
144
|
-
| **Настройки** | Изменение режима
|
|
150
|
+
| **Настройки** | Изменение режима запуска и области конфига; выделенная настройка показывает описание текущего значения | **↑↓** навигация, **Enter/Space** переключение, **Esc** сохранить и назад |
|
|
145
151
|
|
|
146
152
|
### Сценарий запуска агента
|
|
147
153
|
|
|
148
154
|
1. **Выбор профиля** — выберите один из сохранённых профилей
|
|
149
|
-
2. **Выбор агента** —
|
|
150
|
-
|
|
151
|
-
|
|
155
|
+
2. **Выбор агента** — AgentO проверяет статус установки всех агентов (спиннер). Незаконченные агенты отмечены `(not installed)`. Статусы кешируются в `~/.agento/agent-status.json` — при следующем открытии уже известные агенты не перепроверяются.
|
|
156
|
+
- Агент **установлен** → переходим к запуску
|
|
157
|
+
- Агент **не установлен** → открывается **Мастер установки**
|
|
158
|
+
- Команда не найдена при запуске (ENOENT) → TUI перезапускается с ошибкой, агент помечается как не установленный
|
|
159
|
+
3. **Запуск** — AgentO применяет конфиг агента и запускает его
|
|
152
160
|
|
|
153
161
|
```
|
|
154
162
|
Profile: default
|
|
@@ -197,7 +205,8 @@ Profile: default
|
|
|
197
205
|
|-----------|----------|----------|
|
|
198
206
|
| **Режим запуска по умолчанию** | `child` / `independent` | Как запускать агентов по умолчанию |
|
|
199
207
|
| **Область конфига по умолчанию** | `global` / `project` | Куда записывать конфиги агентов |
|
|
200
|
-
|
|
208
|
+
|
|
209
|
+
При навигации выделенная настройка показывает пояснение к текущему значению прямо под строкой.
|
|
201
210
|
|
|
202
211
|
**Управление:** **↑↓** навигация, **Enter** или **Space** переключение значений, **Esc** сохранить и вернуться.
|
|
203
212
|
|
|
@@ -342,10 +351,11 @@ AgentO хранит свою конфигурацию в `~/.agento/config.json`
|
|
|
342
351
|
|
|
343
352
|
Каждый поддерживаемый агент имеет адаптер, который переводит универсальный формат AgentO в специфичный конфиг агента:
|
|
344
353
|
|
|
345
|
-
- **Claude Code** (`anthropic`, `fireworks`): Генерирует `~/.claude/settings.json` с выбором модели по уровням и переменными окружения `ANTHROPIC_*`. Использует Anthropic SDK.
|
|
346
|
-
- **OpenCode** (`anthropic`, `openai-compatible`, `fireworks`): Генерирует `~/.config/opencode/config.json` через Vercel AI SDK
|
|
347
|
-
- **Qwen CLI** (`openai-compatible`, `fireworks`): Генерирует `~/.qwen/settings.json` со структурой OpenAI-совместимого провайдера. Требует `baseUrl`. Пробрасывает флаги возможностей через `generationConfig.modalities`.
|
|
348
|
-
- **Codex CLI** (`--dev` для отображения): Генерирует `~/.codex/config.toml` с `wire_api: responses`, профилями и ссылками на переменные окружения. При project-области разделяет конфиг между глобальным (`model_providers`) и проектным (`model`) конфигами.
|
|
354
|
+
- **Claude Code** (`anthropic`, `fireworks`, `openrouter`): Генерирует `~/.claude/settings.json` с выбором модели по уровням и переменными окружения `ANTHROPIC_*`. Использует Anthropic SDK. Для `openrouter` использует **Anthropic Skin** — `ANTHROPIC_AUTH_TOKEN` (Bearer). Флаги возможностей не пробрасываются.
|
|
355
|
+
- **OpenCode** (`anthropic`, `openai-compatible`, `fireworks`, `openrouter`): Генерирует `~/.config/opencode/config.json` через Vercel AI SDK. Полная поддержка function calling через `@ai-sdk/openai-compatible`. Для каждой модели генерируется `modalities: { input: [...], output: ["text"] }` из флагов возможностей.
|
|
356
|
+
- **Qwen CLI** (`openai-compatible`, `fireworks`, `openrouter`): Генерирует `~/.qwen/settings.json` со структурой OpenAI-совместимого провайдера. Требует `baseUrl`. Пробрасывает флаги возможностей через `generationConfig.modalities`.
|
|
357
|
+
- **Codex CLI** (`--dev` для отображения): Генерирует `~/.codex/config.toml` с `wire_api: responses`, профилями и ссылками на переменные окружения. При project-области разделяет конфиг между глобальным (`model_providers`) и проектным (`model`) конфигами. Флаги возможностей не пробрасываются.
|
|
358
|
+
- **Copilot CLI** (все 4 типа провайдеров): Не записывает и не изменяет файл настроек. Весь конфиг передаётся через `COPILOT_MODEL`, `COPILOT_PROVIDER_TYPE`, `COPILOT_PROVIDER_API_KEY`, `COPILOT_PROVIDER_BASE_URL`. Типы `fireworks` и `openrouter` отображаются как `COPILOT_PROVIDER_TYPE=openai`. Для моделей семейства gpt-5 автоматически добавляется `COPILOT_PROVIDER_WIRE_API=responses`.
|
|
349
359
|
|
|
350
360
|
### Бэкап и восстановление
|
|
351
361
|
|
package/dist/bin/agento.js
CHANGED
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Entry point for the `agento` CLI tool.
|
|
4
|
+
*
|
|
5
|
+
* Registers all subcommands (launch, provider, profile, restore, agent)
|
|
6
|
+
* and defaults to launching the interactive Terminal UI (TUI) when no
|
|
7
|
+
* subcommand is provided.
|
|
8
|
+
*/
|
|
2
9
|
import { program } from 'commander';
|
|
3
10
|
import { createRequire } from 'module';
|
|
4
11
|
import { spawnSync } from 'node:child_process';
|
|
@@ -14,12 +21,17 @@ program
|
|
|
14
21
|
.description('Manage AI agent configurations with profiles and providers')
|
|
15
22
|
.version(pkg.version)
|
|
16
23
|
.option('-d, --dev', 'Show development agents (e.g. codex)');
|
|
24
|
+
// Register CLI subcommands
|
|
17
25
|
program.addCommand(createLaunchCommand());
|
|
18
26
|
program.addCommand(createProviderCommand());
|
|
19
27
|
program.addCommand(createProfileCommand());
|
|
20
28
|
program.addCommand(createRestoreCommand());
|
|
21
29
|
program.addCommand(createAgentCommand());
|
|
22
|
-
|
|
30
|
+
/** Returns true if error looks like ENOENT from spawnSync. */
|
|
31
|
+
function isEnoent(err) {
|
|
32
|
+
return err instanceof Error && 'code' in err && err.code === 'ENOENT';
|
|
33
|
+
}
|
|
34
|
+
// Default action: launch interactive TUI
|
|
23
35
|
program.action(() => {
|
|
24
36
|
const opts = program.opts();
|
|
25
37
|
import('../src/tui/start.js')
|
|
@@ -28,10 +40,27 @@ program.action(() => {
|
|
|
28
40
|
while (execReq) {
|
|
29
41
|
// Ink may leave stdin in "flowing" state — pause before handing fd to child
|
|
30
42
|
process.stdin.pause();
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
43
|
+
try {
|
|
44
|
+
spawnSync(execReq.command, execReq.args, {
|
|
45
|
+
stdio: 'inherit',
|
|
46
|
+
env: execReq.env,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
if (isEnoent(err)) {
|
|
51
|
+
await execReq.cleanup?.();
|
|
52
|
+
execReq = await startTui({
|
|
53
|
+
dev: opts.dev,
|
|
54
|
+
launchError: {
|
|
55
|
+
agentId: execReq.agentId ?? execReq.command,
|
|
56
|
+
profileId: execReq.profileId,
|
|
57
|
+
error: `Command "${execReq.command}" not found`,
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
throw err;
|
|
63
|
+
}
|
|
35
64
|
await execReq.cleanup?.();
|
|
36
65
|
if (!execReq.relaunch)
|
|
37
66
|
break;
|
package/dist/bin/agento.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agento.js","sourceRoot":"","sources":["../../bin/agento.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAwB,CAAC;AAEjE,OAAO;KACJ,IAAI,CAAC,QAAQ,CAAC;KACd,WAAW,CAAC,4DAA4D,CAAC;KACzE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;KACpB,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC,CAAC;AAE/D,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC1C,OAAO,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC5C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC;AAC3C,OAAO,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC;AAEzC,
|
|
1
|
+
{"version":3,"file":"agento.js","sourceRoot":"","sources":["../../bin/agento.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { AgentAdapter, AgentConfig, AgentConfigPaths } from './base.js';
|
|
2
|
+
import type { LaunchScope } from './base.js';
|
|
3
|
+
import type { Profile, Provider } from '../config/schema.js';
|
|
4
|
+
export declare class CopilotAdapter implements AgentAdapter {
|
|
5
|
+
readonly id = "copilot";
|
|
6
|
+
readonly displayName = "Copilot CLI";
|
|
7
|
+
readonly supportedProviderTypes: readonly ["openai-compatible", "anthropic", "fireworks", "openrouter"];
|
|
8
|
+
configPaths(cwd?: string): AgentConfigPaths;
|
|
9
|
+
readConfig(scope: LaunchScope, cwd?: string): Promise<AgentConfig | null>;
|
|
10
|
+
buildConfig(_profile: Profile, _providers: Provider[]): AgentConfig;
|
|
11
|
+
buildEnv(profile: Profile, providers: Provider[]): Record<string, string>;
|
|
12
|
+
writeConfig(_config: AgentConfig, _scope: LaunchScope, _cwd?: string): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export declare const copilotAdapter: CopilotAdapter;
|
|
15
|
+
//# sourceMappingURL=copilot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.d.ts","sourceRoot":"","sources":["../../../src/adapters/copilot.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;AAgB3E,qBAAa,cAAe,YAAW,YAAY;IACjD,QAAQ,CAAC,EAAE,aAAa;IACxB,QAAQ,CAAC,WAAW,iBAAiB;IACrC,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,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,WAAW;IAMnE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IA8BnE,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAI3F;AAED,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { existsSync } from 'node:fs';
|
|
3
|
+
import { homedir } from 'node:os';
|
|
4
|
+
import { join } from 'node:path';
|
|
5
|
+
const DEFAULT_BASE_URLS = {
|
|
6
|
+
anthropic: 'https://api.anthropic.com',
|
|
7
|
+
fireworks: 'https://api.fireworks.ai/inference/v1',
|
|
8
|
+
openrouter: 'https://openrouter.ai/api/v1',
|
|
9
|
+
};
|
|
10
|
+
/** Map AgentO provider types to Copilot CLI COPILOT_PROVIDER_TYPE values. */
|
|
11
|
+
const PROVIDER_TYPE_MAP = {
|
|
12
|
+
'openai-compatible': 'openai',
|
|
13
|
+
'anthropic': 'anthropic',
|
|
14
|
+
'fireworks': 'openai',
|
|
15
|
+
'openrouter': 'openai',
|
|
16
|
+
};
|
|
17
|
+
export class CopilotAdapter {
|
|
18
|
+
id = 'copilot';
|
|
19
|
+
displayName = 'Copilot CLI';
|
|
20
|
+
supportedProviderTypes = ['openai-compatible', 'anthropic', 'fireworks', 'openrouter'];
|
|
21
|
+
configPaths(cwd) {
|
|
22
|
+
return {
|
|
23
|
+
global: join(homedir(), '.copilot', 'settings.json'),
|
|
24
|
+
project: join(cwd ?? process.cwd(), '.copilot', 'settings.json'),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
async readConfig(scope, cwd) {
|
|
28
|
+
const path = this.configPaths(cwd)[scope];
|
|
29
|
+
if (!existsSync(path))
|
|
30
|
+
return null;
|
|
31
|
+
const raw = await readFile(path, 'utf-8');
|
|
32
|
+
return JSON.parse(raw);
|
|
33
|
+
}
|
|
34
|
+
buildConfig(_profile, _providers) {
|
|
35
|
+
// Copilot CLI accepts model via COPILOT_MODEL env var (handled by buildEnv),
|
|
36
|
+
// so we do not need to mutate the settings file.
|
|
37
|
+
return {};
|
|
38
|
+
}
|
|
39
|
+
buildEnv(profile, providers) {
|
|
40
|
+
const base = profile.models.find((m) => m.tier === 'base') ?? profile.models[0];
|
|
41
|
+
if (!base)
|
|
42
|
+
return {};
|
|
43
|
+
const provider = providers.find((p) => p.id === base.providerId);
|
|
44
|
+
if (!provider)
|
|
45
|
+
return {};
|
|
46
|
+
const env = {
|
|
47
|
+
COPILOT_MODEL: base.model,
|
|
48
|
+
COPILOT_PROVIDER_TYPE: PROVIDER_TYPE_MAP[provider.type],
|
|
49
|
+
COPILOT_PROVIDER_API_KEY: provider.apiKey,
|
|
50
|
+
};
|
|
51
|
+
const defaultUrl = DEFAULT_BASE_URLS[provider.type];
|
|
52
|
+
if (!provider.baseUrl && provider.type === 'openai-compatible') {
|
|
53
|
+
throw new Error('baseUrl required for openai-compatible provider in Copilot CLI');
|
|
54
|
+
}
|
|
55
|
+
const resolvedUrl = provider.baseUrl ?? defaultUrl;
|
|
56
|
+
if (!resolvedUrl) {
|
|
57
|
+
throw new Error(`No base URL configured for provider type "${provider.type}" in Copilot CLI`);
|
|
58
|
+
}
|
|
59
|
+
env.COPILOT_PROVIDER_BASE_URL = resolvedUrl;
|
|
60
|
+
if (base.model.startsWith('gpt-5')) {
|
|
61
|
+
env.COPILOT_PROVIDER_WIRE_API = 'responses';
|
|
62
|
+
}
|
|
63
|
+
return env;
|
|
64
|
+
}
|
|
65
|
+
async writeConfig(_config, _scope, _cwd) {
|
|
66
|
+
// No-op: Copilot CLI receives all config via environment variables (see buildEnv).
|
|
67
|
+
// There is nothing to write to settings.json.
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export const copilotAdapter = new CopilotAdapter();
|
|
71
|
+
//# sourceMappingURL=copilot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilot.js","sourceRoot":"","sources":["../../../src/adapters/copilot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,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,2BAA2B;IACtC,SAAS,EAAE,uCAAuC;IAClD,UAAU,EAAE,8BAA8B;CAC3C,CAAC;AAEF,6EAA6E;AAC7E,MAAM,iBAAiB,GAAiC;IACtD,mBAAmB,EAAE,QAAQ;IAC7B,WAAW,EAAE,WAAW;IACxB,WAAW,EAAE,QAAQ;IACrB,YAAY,EAAE,QAAQ;CACvB,CAAC;AAEF,MAAM,OAAO,cAAc;IAChB,EAAE,GAAG,SAAS,CAAC;IACf,WAAW,GAAG,aAAa,CAAC;IAC5B,sBAAsB,GAAG,CAAC,mBAAmB,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,CAAU,CAAC;IAEzG,WAAW,CAAC,GAAY;QACtB,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC;YACpD,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,UAAU,EAAE,eAAe,CAAC;SACjE,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,QAAiB,EAAE,UAAsB;QACnD,6EAA6E;QAC7E,iDAAiD;QACjD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,QAAQ,CAAC,OAAgB,EAAE,SAAqB;QAC9C,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,OAAO,EAAE,CAAC;QAErB,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,OAAO,EAAE,CAAC;QAEzB,MAAM,GAAG,GAA2B;YAClC,aAAa,EAAE,IAAI,CAAC,KAAK;YACzB,qBAAqB,EAAE,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC;YACvD,wBAAwB,EAAE,QAAQ,CAAC,MAAM;SAC1C,CAAC;QAEF,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC/D,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,IAAI,UAAU,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,6CAA6C,QAAQ,CAAC,IAAI,kBAAkB,CAAC,CAAC;QAChG,CAAC;QACD,GAAG,CAAC,yBAAyB,GAAG,WAAW,CAAC;QAE5C,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,GAAG,CAAC,yBAAyB,GAAG,WAAW,CAAC;QAC9C,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAoB,EAAE,MAAmB,EAAE,IAAa;QACxE,mFAAmF;QACnF,8CAA8C;IAChD,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentAdapter, AgentConfig, AgentConfigPaths } from './base.js';
|
|
2
2
|
import type { LaunchScope } from './base.js';
|
|
3
3
|
import type { Profile, Provider } from '../config/schema.js';
|
|
4
|
+
/** Adapter for the OpenCode CLI agent. */
|
|
4
5
|
export declare class OpenCodeAdapter implements AgentAdapter {
|
|
5
6
|
readonly id = "opencode";
|
|
6
7
|
readonly displayName = "OpenCode";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"AAYA,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;AAQ3E,0CAA0C;AAC1C,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"}
|
|
@@ -1,11 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter for the OpenCode agent.
|
|
3
|
+
*
|
|
4
|
+
* Generates Vercel-AI-SDK-compatible configuration stored in JSON.
|
|
5
|
+
* Supports all provider types (anthropic, openai-compatible, fireworks, openrouter).
|
|
6
|
+
* Per-model modalities (image / video / audio) are emitted so the agent knows
|
|
7
|
+
* which inputs the model accepts.
|
|
8
|
+
*/
|
|
1
9
|
import { readFile, writeFile, mkdir } from 'node:fs/promises';
|
|
2
10
|
import { existsSync } from 'node:fs';
|
|
3
11
|
import { homedir } from 'node:os';
|
|
4
12
|
import { join } from 'node:path';
|
|
13
|
+
/** Default API base URLs for provider types that need them. */
|
|
5
14
|
const DEFAULT_BASE_URLS = {
|
|
6
15
|
fireworks: 'https://api.fireworks.ai/inference/v1',
|
|
7
16
|
openrouter: 'https://openrouter.ai/api/v1',
|
|
8
17
|
};
|
|
18
|
+
/** Adapter for the OpenCode CLI agent. */
|
|
9
19
|
export class OpenCodeAdapter {
|
|
10
20
|
id = 'opencode';
|
|
11
21
|
displayName = 'OpenCode';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../src/adapters/opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: `agento agent`
|
|
3
|
+
*
|
|
4
|
+
* Subcommand: status — shows whether each agent config is original or modified
|
|
5
|
+
* (i.e. a backup exists).
|
|
6
|
+
*/
|
|
1
7
|
import { Command } from 'commander';
|
|
8
|
+
/** Builds the `agent` CLI command. */
|
|
2
9
|
export declare function createAgentCommand(): Command;
|
|
3
10
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,sCAAsC;AACtC,wBAAgB,kBAAkB,IAAI,OAAO,CA6B5C"}
|
|
@@ -1,15 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: `agento agent`
|
|
3
|
+
*
|
|
4
|
+
* Subcommand: status — shows whether each agent config is original or modified
|
|
5
|
+
* (i.e. a backup exists).
|
|
6
|
+
*/
|
|
1
7
|
import { Command } from 'commander';
|
|
2
8
|
import { backupExists } from '../../config/store.js';
|
|
3
9
|
import { claudeCodeAdapter } from '../../adapters/claude-code.js';
|
|
4
10
|
import { openCodeAdapter } from '../../adapters/opencode.js';
|
|
5
11
|
import { qwenAdapter } from '../../adapters/qwen.js';
|
|
6
12
|
import { codexAdapter } from '../../adapters/codex.js';
|
|
7
|
-
|
|
13
|
+
import { copilotAdapter } from '../../adapters/copilot.js';
|
|
14
|
+
const ALL_ADAPTERS = [claudeCodeAdapter, openCodeAdapter, qwenAdapter, codexAdapter, copilotAdapter];
|
|
15
|
+
/** Returns all adapters, filtering out `dev` ones unless `--dev` is passed. */
|
|
8
16
|
function getAdapters(dev = false) {
|
|
9
17
|
if (dev)
|
|
10
18
|
return ALL_ADAPTERS;
|
|
11
19
|
return ALL_ADAPTERS.filter((a) => !a.dev);
|
|
12
20
|
}
|
|
21
|
+
/** Builds the `agent` CLI command. */
|
|
13
22
|
export function createAgentCommand() {
|
|
14
23
|
const cmd = new Command('agent').description('Agent config status');
|
|
15
24
|
cmd
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAG3D,MAAM,YAAY,GAAmB,CAAC,iBAAiB,EAAE,eAAe,EAAE,WAAW,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;AAErH,+EAA+E;AAC/E,SAAS,WAAW,CAAC,GAAG,GAAG,KAAK;IAC9B,IAAI,GAAG;QAAE,OAAO,YAAY,CAAC;IAC7B,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAC5C,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,kBAAkB;IAChC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC,CAAC;IAEpE,GAAG;SACA,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,8BAA8B,CAAC;SAC3C,MAAM,CAAC,WAAW,EAAE,sCAAsC,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE;QACxC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvC,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAgC,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;gBAClE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;oBACpC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;oBAChC,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;oBAClD,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,UAAU,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,WAAW,KAAK,KAAK,MAAM,MAAM,EAAE,CAAC,CAAC;oBAC9D,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI command: `agento launch`
|
|
3
|
+
*
|
|
4
|
+
* Validates profile / agent / provider compatibility and delegates to either
|
|
5
|
+
* child-mode (backup → patch → spawn → restore) or independent-mode launch.
|
|
6
|
+
*/
|
|
1
7
|
import { Command } from 'commander';
|
|
8
|
+
/** Builds the `launch` CLI command with all required options and validation. */
|
|
2
9
|
export declare function createLaunchCommand(): Command;
|
|
3
10
|
//# sourceMappingURL=launch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"launch.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8BpC,gFAAgF;AAChF,wBAAgB,mBAAmB,IAAI,OAAO,CAgF7C"}
|