lv24-opencode-consilium 0.0.0-stage → 1.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/LICENSE +21 -0
- package/README.md +499 -3
- package/README.ru.md +500 -0
- package/README.zh.md +188 -0
- package/bin/cli.js +19 -0
- package/bin/mcp.js +24 -0
- package/consilium.config.example.json +84 -0
- package/dist/agents.d.ts +79 -0
- package/dist/agents.d.ts.map +1 -0
- package/dist/agents.js +1051 -0
- package/dist/agents.js.map +1 -0
- package/dist/artifacts.d.ts +75 -0
- package/dist/artifacts.d.ts.map +1 -0
- package/dist/artifacts.js +464 -0
- package/dist/artifacts.js.map +1 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1392 -0
- package/dist/cli.js.map +1 -0
- package/dist/compat.d.ts +160 -0
- package/dist/compat.d.ts.map +1 -0
- package/dist/compat.js +419 -0
- package/dist/compat.js.map +1 -0
- package/dist/config.d.ts +112 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +728 -0
- package/dist/config.js.map +1 -0
- package/dist/consensus.d.ts +73 -0
- package/dist/consensus.d.ts.map +1 -0
- package/dist/consensus.js +273 -0
- package/dist/consensus.js.map +1 -0
- package/dist/defaults.d.ts +34 -0
- package/dist/defaults.d.ts.map +1 -0
- package/dist/defaults.js +102 -0
- package/dist/defaults.js.map +1 -0
- package/dist/doctor.d.ts +27 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +798 -0
- package/dist/doctor.js.map +1 -0
- package/dist/fallback.d.ts +50 -0
- package/dist/fallback.d.ts.map +1 -0
- package/dist/fallback.js +134 -0
- package/dist/fallback.js.map +1 -0
- package/dist/git.d.ts +28 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +71 -0
- package/dist/git.js.map +1 -0
- package/dist/index.d.ts +100 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +653 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +20 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +1215 -0
- package/dist/mcp.js.map +1 -0
- package/dist/models.d.ts +97 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +873 -0
- package/dist/models.js.map +1 -0
- package/dist/plugin.d.ts +59 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +223 -0
- package/dist/plugin.js.map +1 -0
- package/dist/presets.d.ts +27 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +86 -0
- package/dist/presets.js.map +1 -0
- package/dist/replay.d.ts +37 -0
- package/dist/replay.d.ts.map +1 -0
- package/dist/replay.js +103 -0
- package/dist/replay.js.map +1 -0
- package/dist/report.d.ts +28 -0
- package/dist/report.d.ts.map +1 -0
- package/dist/report.js +300 -0
- package/dist/report.js.map +1 -0
- package/dist/smart-experts.d.ts +44 -0
- package/dist/smart-experts.d.ts.map +1 -0
- package/dist/smart-experts.js +242 -0
- package/dist/smart-experts.js.map +1 -0
- package/dist/stream.d.ts +50 -0
- package/dist/stream.d.ts.map +1 -0
- package/dist/stream.js +219 -0
- package/dist/stream.js.map +1 -0
- package/dist/tool-run.d.ts +49 -0
- package/dist/tool-run.d.ts.map +1 -0
- package/dist/tool-run.js +143 -0
- package/dist/tool-run.js.map +1 -0
- package/dist/types.d.ts +352 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/variants.d.ts +30 -0
- package/dist/variants.d.ts.map +1 -0
- package/dist/variants.js +111 -0
- package/dist/variants.js.map +1 -0
- package/dist/verify.d.ts +33 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +80 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch.d.ts +73 -0
- package/dist/watch.d.ts.map +1 -0
- package/dist/watch.js +350 -0
- package/dist/watch.js.map +1 -0
- package/docs/session-and-plugin.md +642 -0
- package/package.json +90 -6
- package/schema/config.schema.json +100 -0
package/README.zh.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# lv24-opencode-consilium
|
|
2
|
+
|
|
3
|
+
面向 [OpenCode](https://opencode.ai) 的 AI 专家委员会:多个角色在**不同模型上并行**回答同一个任务,最后由主席模型综合成最终方案。内置免费模型自动挑选、CLI、库 API,以及可在任意宿主中使用的 **MCP 服务器**(Claude Desktop、Codex、Cursor、VS Code、自有 Agent)。
|
|
4
|
+
|
|
5
|
+
> 完整文档以英文和俄文为准:[README.md](README.md) · [README.ru.md](README.ru.md)
|
|
6
|
+
|
|
7
|
+
## 快速开始
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g lv24-opencode-consilium
|
|
11
|
+
|
|
12
|
+
consilium doctor # 检查 OpenCode、配置、Agent、模型
|
|
13
|
+
consilium init --free # 自动挑选并验证最强的免费模型,写入配置
|
|
14
|
+
consilium "为公共 API 设计限流方案"
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
`init --free` 会:
|
|
18
|
+
|
|
19
|
+
1. 读取 `models.dev/api.json` 与 `openrouter.ai/api/v1/models`;
|
|
20
|
+
2. 只保留免费(`cost = 0`)、可用、支持 tools、上下文 >= 32K 的聊天模型;
|
|
21
|
+
3. 排序并用一次极短的真实请求验证候选模型(`--no-verify` 可跳过);
|
|
22
|
+
4. 把胜出的模型写入 `opencode.json`(Agent:`arch`、`ux`、`ba`、`sec`、`consilium`)和 `consilium.config.json`;
|
|
23
|
+
5. 默认不覆盖你已有的 Agent 模型,除非加 `--force`。
|
|
24
|
+
|
|
25
|
+
只看方案不写文件:`consilium init --free --dry-run`。
|
|
26
|
+
|
|
27
|
+
写入原生 V2 格式(`agents` + `system`):`consilium init --free --native-v2`。
|
|
28
|
+
|
|
29
|
+
## OpenCode V1 / V2 兼容
|
|
30
|
+
|
|
31
|
+
包同时支持 OpenCode V1 与 V2,并自动识别配置格式:
|
|
32
|
+
|
|
33
|
+
| 项目 | V1 | V2 |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `opencode.json` Agent | `agent` + `prompt` | `agents` + `system` |
|
|
36
|
+
| MCP 服务器 | `mcp.<name>` + `enabled` | `mcp.servers.<name>` + `disabled` |
|
|
37
|
+
| `run --agent` 的模型 | 从配置应用 | **被忽略**,必须显式 `--model` |
|
|
38
|
+
|
|
39
|
+
- 默认写入 V1 格式:两版都能读取,无需迁移。
|
|
40
|
+
- 原生 V2 只在 `--native-v2` 或文件已使用 V2 键时写入。
|
|
41
|
+
- 模型始终通过 `--model` 传递,V2 不会退回根模型。
|
|
42
|
+
- 自动读取 `agent` 与 `agents`、`.opencode/opencode.json(c)` 及父目录。
|
|
43
|
+
- `RATE_LIMITED`(429/免费额度)不再无意义重试,并显示下次可重试时间。
|
|
44
|
+
- `consilium doctor` 新增 `opencode-v2-compat` 检查。
|
|
45
|
+
|
|
46
|
+
MCP 一键注册(格式随已安装的 OpenCode 版本):
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
consilium mcp --install # ./opencode.json
|
|
50
|
+
consilium mcp --install --global # 全局 OpenCode 配置
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 免费模型
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
consilium models # 前 20 名
|
|
57
|
+
consilium models --available # 仅你可用的提供商
|
|
58
|
+
consilium models --verify # 真实请求验证
|
|
59
|
+
consilium models --refresh # 忽略 12 小时缓存
|
|
60
|
+
consilium models --json
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
来源:`models.dev` + OpenRouter + 内置精选回退。缓存路径 `%TEMP%/lv24-opencode-consilium/models-cache.json`(或 `CONSILIUM_MODELS_CACHE`)。
|
|
64
|
+
|
|
65
|
+
当前推荐组合(2026-11-08 目录):`arch → opencode/flint-40b-free`、`ux → opencode/inkling-2-small-free`、`ba → opencode/deepseek-v4.1-flash-free`、`sec → opencode/iceman-free`、`chair → opencode/beam-free`。免费模型会轮换,`consilium init --free` 会重新验证并替换 stealth/alpha 模型。
|
|
66
|
+
|
|
67
|
+
## MCP 服务器(任意宿主)
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
consilium mcp
|
|
71
|
+
# 或
|
|
72
|
+
consilium-mcp
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
OpenCode V1/V2(自动选择格式):
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
consilium mcp --install
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Claude Desktop / 任意 MCP 客户端:
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"mcpServers": {
|
|
86
|
+
"consilium": {
|
|
87
|
+
"command": "npx",
|
|
88
|
+
"args": ["-y", "lv24-opencode-consilium", "mcp"]
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Codex(`~/.codex/config.toml`):
|
|
95
|
+
|
|
96
|
+
```toml
|
|
97
|
+
[mcp_servers.consilium]
|
|
98
|
+
command = "npx"
|
|
99
|
+
args = ["-y", "lv24-opencode-consilium", "mcp"]
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
工具:`consilium_run`、`consilium_list_agents`、`consilium_free_models`、`consilium_doctor`、`consilium_init_free`。日志只写 stderr,stdout 仅承载协议。
|
|
103
|
+
|
|
104
|
+
## 主要 CLI 选项
|
|
105
|
+
|
|
106
|
+
| 选项 | 说明 |
|
|
107
|
+
| --- | --- |
|
|
108
|
+
| `-e, --experts a,b` | 选择专家 |
|
|
109
|
+
| `--chair <agent>` | 主席 Agent |
|
|
110
|
+
| `--preset fast\|deep\|security\|review\|free` | 预设 |
|
|
111
|
+
| `-f json` | stdout 输出纯 JSON |
|
|
112
|
+
| `--diff [--staged] [--base ref]` | 把 git diff 加入任务 |
|
|
113
|
+
| `--task-file <file>` / `-` | 从文件或 stdin 读取任务 |
|
|
114
|
+
| `--verify` / `--no-verify` | 是否真实验证模型 |
|
|
115
|
+
| `--native-v2` | 写入原生 V2 配置 |
|
|
116
|
+
| `--install` / `--global` | 在项目或全局配置中注册 MCP |
|
|
117
|
+
| `-o <file>` / `--no-save` | 保存 / 不保存结果 |
|
|
118
|
+
| `--report <html\|pr\|markdown>` / `--report-file <file>` | 运行后报告(`.html` → html,`.md` → pr;无文件则 stdout,`-f json` 除外) |
|
|
119
|
+
| `--variant <name>` | 全员模型 variant(`provider/model#high`),非法则退出 2 |
|
|
120
|
+
| `watch [--debounce <ms>]` | 监听变化并重跑(400 ms 防抖,直到 Ctrl+C) |
|
|
121
|
+
| `hooks install\|uninstall` | 安装/删除 git pre-commit hook(`git commit` 前评审 staged) |
|
|
122
|
+
|
|
123
|
+
示例:`git diff | consilium - "审查这些改动"`。
|
|
124
|
+
|
|
125
|
+
## 报告、watch 与 git hooks(1.4.0)
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
consilium --report html --report-file report.html "审查当前改动" # 自包含 HTML
|
|
129
|
+
consilium --report pr "审查当前改动" # GitHub 评论 markdown(<!-- consilium:report --> + <details>)
|
|
130
|
+
consilium --report-file notes.md "..." # .html → html,.md → pr;无文件则输出到 stdout(-f json 除外)
|
|
131
|
+
consilium --variant high "..." # 所有模型加 #high,非法的 variant 退出码 2
|
|
132
|
+
consilium watch [--debounce <ms>] "审查当前改动" # 监听项目变化(忽略 .git/node_modules/dist/.consilium/coverage/*.tmp/*.log),400 ms 防抖,附带 git diff,直到 Ctrl+C
|
|
133
|
+
consilium hooks install # 每次 git commit 前评审 staged 改动,失败则阻止提交
|
|
134
|
+
consilium hooks uninstall # 仅删除托管块,不动 hook 其余内容
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## OpenCode V2 插件(1.4.0,仅 V2,V1 不可用)
|
|
138
|
+
|
|
139
|
+
在 TUI 内部直接运行委员会,无需 MCP 与外部 CLI:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"plugins": [{ "package": "lv24-opencode-consilium" }]
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
包导出 `./server` → `dist/plugin.js`,提供 `consilium.run` 工具(参数:`task`、`experts`、`chair`、`timeout_ms`、`consensus`、`smart_experts`、`max_cost`、`fallback_models`、`session`、`artifacts`、`preset`)。插件无运行时依赖(`@opencode/plugin` 仅用于类型)。TUI 内用插件,外部宿主用 MCP,终端/脚本/CI 用 CLI。
|
|
148
|
+
|
|
149
|
+
新增配置键:`report`、`reportFile`、`variant`、`debounceMs`。`--replay <id>` 现在还会恢复主席 agent/模型、专家模型以及产物的 consensus/smartExperts/fallbackModels/session 标志。测试 224 个。
|
|
150
|
+
|
|
151
|
+
## 分析、产物与成本(1.3.0)
|
|
152
|
+
|
|
153
|
+
- `--consensus` / `--no-consensus`:专家一致性的**词法**分析(关键词交集,Jaccard,中俄英停用词),不是 LLM 评分。简版注入主席提示词,完整报告写入结果与 `metadata.consensus`。
|
|
154
|
+
- `--smart-experts`:按任务/ diff 启发式挑选 2–3 个相关角色(默认 2,最多 3,被丢弃的角色会打日志),存于 `metadata.smartExperts`。
|
|
155
|
+
- `--max-cost <usd>`:累计成本上限;主席启动前超限则跳过主席,返回带专家意见与共识的部分结果(`errorCode: COST_LIMIT`),明细在 `metadata.cost`。
|
|
156
|
+
- `--fallback-models a,b`:遇到 `RATE_LIMITED` / `MODEL_UNAVAILABLE` / `EMPTY_RESPONSE` 时,同一专家在备用模型上重试(每专家最多换 2 次),用量累加。
|
|
157
|
+
- `--session <id>`:会话基 id,每个 Agent 独占 `ses_<base>-<agent>`(OpenCode 要求 `ses_` 前缀);未知 Agent 自动用默认 Agent/默认会话运行。该标志**不会**把会话从列表中隐藏。
|
|
158
|
+
- `--artifacts` / `--artifacts-dir <path>` / `--no-artifacts`:把运行保存为普通文件 `.consilium/runs/<id>/`(`run.json`、`report.md`、`experts/<agent>.md`);`consilium --replay <id>` 重跑(恢复专家/主席模型),`consilium --diff-runs <a> <b>` 输出两轮运行的 markdown 对比。
|
|
159
|
+
- MCP `consilium_run` 新增参数 `consensus`、`smart_experts`、`max_cost`、`fallback_models`、`session`、`artifacts`;返回含 `cost`、共识摘要与 `**Artifacts:**` 行。
|
|
160
|
+
- 配置新增键:`artifacts`(bool|string)、`consensus`(bool)、`smartExperts`(bool)、`maxCost`(number ≥ 0)、`fallbackModels`(string[])、`session`(string)。
|
|
161
|
+
|
|
162
|
+
## 配置
|
|
163
|
+
|
|
164
|
+
配置查找顺序:`consilium.config.json`、`consilium.json`、`.consiliumrc`、`.consiliumrc.json`。完整 JSON Schema:[`schema/config.schema.json`](schema/config.schema.json)。
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"experts": [
|
|
169
|
+
{ "name": "arch", "model": "opencode/flint-40b-free" },
|
|
170
|
+
{ "name": "sec", "model": "opencode/iceman-free" }
|
|
171
|
+
],
|
|
172
|
+
"chair": { "agent": "consilium", "model": "opencode/beam-free" },
|
|
173
|
+
"retry": { "maxConcurrency": 3 }
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
关键点:`standalone` 默认 `true`(避免与已运行的 OpenCode 端口冲突);`autoApprove` 默认 `false`;任务文本通过 **stdin** 传递,不经过 shell。密钥始终由 OpenCode 管理,Consilium 不读取、不打印。
|
|
178
|
+
|
|
179
|
+
## 开发
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
npm install
|
|
183
|
+
npm run build
|
|
184
|
+
npm test
|
|
185
|
+
npm run typecheck
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
许可证:MIT
|
package/bin/cli.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @file Точка входа CLI для consilium
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import('../dist/cli.js')
|
|
8
|
+
.then(async (module) => {
|
|
9
|
+
const code = await module.main(process.argv.slice(2));
|
|
10
|
+
process.exitCode = code;
|
|
11
|
+
})
|
|
12
|
+
.catch((error) => {
|
|
13
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
14
|
+
console.error('❌ Ошибка запуска CLI:', message);
|
|
15
|
+
if (message.includes('Cannot find module')) {
|
|
16
|
+
console.error(' Похоже, проект не собран. Выполните: npm run build');
|
|
17
|
+
}
|
|
18
|
+
process.exit(1);
|
|
19
|
+
});
|
package/bin/mcp.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
|
|
5
|
+
function readVersion() {
|
|
6
|
+
try {
|
|
7
|
+
const content = readFileSync(new URL('../package.json', import.meta.url), 'utf-8');
|
|
8
|
+
const parsed = JSON.parse(content);
|
|
9
|
+
return typeof parsed.version === 'string' ? parsed.version : '0.0.0';
|
|
10
|
+
} catch {
|
|
11
|
+
return '0.0.0';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
import('../dist/mcp.js')
|
|
16
|
+
.then(({ startMcpServer }) => {
|
|
17
|
+
const running = startMcpServer({ version: readVersion() });
|
|
18
|
+
console.error('lv24-opencode-consilium MCP server running on stdio');
|
|
19
|
+
return running;
|
|
20
|
+
})
|
|
21
|
+
.catch((error) => {
|
|
22
|
+
console.error('MCP server failed:', error);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./schema/config.schema.json",
|
|
3
|
+
"version": "1.4.0",
|
|
4
|
+
|
|
5
|
+
"experts": [
|
|
6
|
+
{
|
|
7
|
+
"name": "arch",
|
|
8
|
+
"model": "opencode/flint-40b-free",
|
|
9
|
+
"enabled": true,
|
|
10
|
+
"priority": 1,
|
|
11
|
+
"timeout": 300000,
|
|
12
|
+
"retries": 1,
|
|
13
|
+
"prompt": "Как архитектор, проанализируй задачу кратко (3-5 предложений): ${task}\nНе вызывай инструменты — ответь только текстом."
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
"name": "ux",
|
|
17
|
+
"model": "opencode/inkling-2-small-free",
|
|
18
|
+
"enabled": true,
|
|
19
|
+
"priority": 2,
|
|
20
|
+
"prompt": "Как UX-специалист, оцени задачу с точки зрения пользователя (3-5 предложений): ${task}\nНе вызывай инструменты — ответь только текстом."
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"name": "ba",
|
|
24
|
+
"model": "opencode/deepseek-v4.1-flash-free",
|
|
25
|
+
"enabled": true,
|
|
26
|
+
"priority": 3,
|
|
27
|
+
"prompt": "Как бизнес-аналитик, оцени ценность и риски (3-5 предложений): ${task}\nНе вызывай инструменты — ответь только текстом."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"name": "sec",
|
|
31
|
+
"model": "opencode/iceman-free",
|
|
32
|
+
"enabled": true,
|
|
33
|
+
"priority": 4,
|
|
34
|
+
"prompt": "Как эксперт по безопасности, проанализируй риски (3-5 предложений): ${task}\nНе вызывай инструменты — ответь только текстом."
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
|
|
38
|
+
"chair": {
|
|
39
|
+
"agent": "consilium",
|
|
40
|
+
"model": "opencode/beam-free",
|
|
41
|
+
"timeout": 600000,
|
|
42
|
+
"maxExpertTextLength": 3000
|
|
43
|
+
},
|
|
44
|
+
|
|
45
|
+
"excludedAgents": [
|
|
46
|
+
"build",
|
|
47
|
+
"plan",
|
|
48
|
+
"compaction",
|
|
49
|
+
"summary",
|
|
50
|
+
"title",
|
|
51
|
+
"explore",
|
|
52
|
+
"general",
|
|
53
|
+
"consilium"
|
|
54
|
+
],
|
|
55
|
+
|
|
56
|
+
"timeouts": {
|
|
57
|
+
"expert": 300000,
|
|
58
|
+
"chair": 600000,
|
|
59
|
+
"shutdown": 5000
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
"retry": {
|
|
63
|
+
"expertRetries": 1,
|
|
64
|
+
"chairRetries": 1,
|
|
65
|
+
"delay": 1000,
|
|
66
|
+
"exponentialBackoff": true,
|
|
67
|
+
"maxConcurrency": 3
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
"output": {
|
|
71
|
+
"file": false,
|
|
72
|
+
"format": "markdown",
|
|
73
|
+
"progress": true,
|
|
74
|
+
"logLevel": "info"
|
|
75
|
+
},
|
|
76
|
+
|
|
77
|
+
"standalone": true,
|
|
78
|
+
"autoApprove": false,
|
|
79
|
+
"autoDiscoverAgents": true,
|
|
80
|
+
|
|
81
|
+
"artifacts": false,
|
|
82
|
+
"consensus": false,
|
|
83
|
+
"smartExperts": false
|
|
84
|
+
}
|
package/dist/agents.d.ts
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Управление агентами OpenCode
|
|
3
|
+
* @module lv24-opencode-consilium
|
|
4
|
+
*/
|
|
5
|
+
import type { AgentResult, ConsiliumConfig, ExpertConfig } from './types.js';
|
|
6
|
+
export { parseJsonOutput } from './stream.js';
|
|
7
|
+
/** Контроллер запуска: отмена и учёт дочерних процессов */
|
|
8
|
+
export interface RunController {
|
|
9
|
+
cancel(): void;
|
|
10
|
+
reset(): void;
|
|
11
|
+
isCancelled(): boolean;
|
|
12
|
+
}
|
|
13
|
+
/** Создаёт независимый контроллер запуска */
|
|
14
|
+
export declare function createRunController(): RunController;
|
|
15
|
+
/** Отменяет запуск по умолчанию и убивает его процессы */
|
|
16
|
+
export declare function cancel(): void;
|
|
17
|
+
/** Сбрасывает флаг отмены запуска по умолчанию */
|
|
18
|
+
export declare function resetCancel(): void;
|
|
19
|
+
/** Проверяет, отменён ли запуск по умолчанию */
|
|
20
|
+
export declare function isCancelled(): boolean;
|
|
21
|
+
/** Нормализует таймаут: конечное положительное число (мс) либо fallback */
|
|
22
|
+
export declare function sanitizeTimeout(value: unknown, fallback: number): number;
|
|
23
|
+
/**
|
|
24
|
+
* Строит идентификатор сессии OpenCode для конкретного агента.
|
|
25
|
+
* Эксперты не должны делить одну сессию: к контексту добавляется имя агента.
|
|
26
|
+
*/
|
|
27
|
+
export declare function buildAgentSession(base: string | undefined, agentName: string): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* Сессия председателя: базовый id используется как есть, чтобы продолжать
|
|
30
|
+
* существующую сессию OpenCode, а не создавать новую.
|
|
31
|
+
*/
|
|
32
|
+
export declare function buildChairSession(base: string | undefined): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Формирует аргументы `opencode run`.
|
|
35
|
+
* Невалидные agent/model отбрасываются.
|
|
36
|
+
*/
|
|
37
|
+
export declare function buildRunArgs(opts: {
|
|
38
|
+
agent?: string;
|
|
39
|
+
model?: string;
|
|
40
|
+
session?: string;
|
|
41
|
+
config?: Pick<ConsiliumConfig, 'standalone' | 'autoApprove'>;
|
|
42
|
+
}): string[];
|
|
43
|
+
/**
|
|
44
|
+
* Вызывает одного агента с повторами и контролем отмены
|
|
45
|
+
*/
|
|
46
|
+
export declare function callAgent(agentName: string, prompt: string, config: ConsiliumConfig, options?: {
|
|
47
|
+
timeout?: number;
|
|
48
|
+
retries?: number;
|
|
49
|
+
isChair?: boolean;
|
|
50
|
+
model?: string;
|
|
51
|
+
session?: string;
|
|
52
|
+
fallbackModels?: string[];
|
|
53
|
+
controller?: RunController;
|
|
54
|
+
}): Promise<AgentResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Параллельно вызывает экспертов с ограничением конкурентности
|
|
57
|
+
*/
|
|
58
|
+
export declare function callExpertsParallel(experts: ExpertConfig[], task: string, config: ConsiliumConfig, options?: {
|
|
59
|
+
controller?: RunController;
|
|
60
|
+
}): Promise<AgentResult[]>;
|
|
61
|
+
/**
|
|
62
|
+
* Вызывает председателя по результатам экспертов
|
|
63
|
+
*/
|
|
64
|
+
export declare function callChair(expertResults: AgentResult[], task: string, config: ConsiliumConfig, options?: {
|
|
65
|
+
controller?: RunController;
|
|
66
|
+
}): Promise<AgentResult>;
|
|
67
|
+
/**
|
|
68
|
+
* Проверяет доступность OpenCode CLI (таймаут 10 с)
|
|
69
|
+
*/
|
|
70
|
+
export declare function checkOpenCodeAvailable(config?: Pick<ConsiliumConfig, 'opencodePath' | 'cwd'>): Promise<boolean>;
|
|
71
|
+
/**
|
|
72
|
+
* Возвращает версию OpenCode CLI или null
|
|
73
|
+
*/
|
|
74
|
+
export declare function getOpenCodeVersion(config?: Pick<ConsiliumConfig, 'opencodePath' | 'cwd'>): Promise<string | null>;
|
|
75
|
+
/**
|
|
76
|
+
* Получает список доступных агентов из конфигурации (обратная совместимость)
|
|
77
|
+
*/
|
|
78
|
+
export declare function getAvailableAgents(): Promise<string[]>;
|
|
79
|
+
//# sourceMappingURL=agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../src/agents.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAEV,WAAW,EAEX,eAAe,EACf,YAAY,EACb,MAAM,YAAY,CAAC;AAOpB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiB9C,2DAA2D;AAC3D,MAAM,WAAW,aAAa;IAC5B,MAAM,IAAI,IAAI,CAAC;IACf,KAAK,IAAI,IAAI,CAAC;IACd,WAAW,IAAI,OAAO,CAAC;CACxB;AAUD,6CAA6C;AAC7C,wBAAgB,mBAAmB,IAAI,aAAa,CAwBnD;AAaD,0DAA0D;AAC1D,wBAAgB,MAAM,IAAI,IAAI,CAE7B;AAED,kDAAkD;AAClD,wBAAgB,WAAW,IAAI,IAAI,CAElC;AAED,gDAAgD;AAChD,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAiGD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOxE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAiBpB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAW9E;AAmFD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;CAC9D,GAAG,MAAM,EAAE,CA6BX;AAwqBD;;GAEG;AACH,wBAAsB,SAAS,CAC7B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,UAAU,CAAC,EAAE,aAAa,CAAC;CACvB,GACL,OAAO,CAAC,WAAW,CAAC,CA2GtB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,YAAY,EAAE,EACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,aAAa,CAAA;CAAO,GAC3C,OAAO,CAAC,WAAW,EAAE,CAAC,CAuExB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,aAAa,EAAE,WAAW,EAAE,EAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,eAAe,EACvB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,aAAa,CAAA;CAAO,GAC3C,OAAO,CAAC,WAAW,CAAC,CA0CtB;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,KAAK,CAAC,GACrD,OAAO,CAAC,OAAO,CAAC,CASlB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,cAAc,GAAG,KAAK,CAAC,GACrD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAcxB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAI5D"}
|