evolcore 0.0.20 → 0.0.22
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/CHANGELOG.md +65 -0
- package/README.md +58 -9
- package/bin/codex-managed-hook.mjs +3 -0
- package/bin/install-codex-managed-hooks.mjs +3 -1
- package/dist/agents/baseagent.js +10 -6
- package/dist/agents/claude-runner.js +393 -108
- package/dist/agents/codex-app-server-client.js +41 -7
- package/dist/agents/codex-runner.js +1292 -220
- package/dist/agents/ecagent-runner.js +171 -61
- package/dist/agents/gemini-runner.js +130 -30
- package/dist/agents/request-identity.js +25 -0
- package/dist/agents/runner-types.js +19 -0
- package/dist/aun/aid/agentmd.js +59 -2
- package/dist/aun/aid/identity.js +4 -1
- package/dist/aun/aid/index.js +1 -1
- package/dist/aun/msg/group.js +72 -6
- package/dist/aun/msg/history.js +213 -36
- package/dist/aun/msg/managed-operation.js +58 -9
- package/dist/aun/msg/p2p.js +5 -0
- package/dist/aun/outbox.js +189 -80
- package/dist/aun/service-proxy.js +43 -25
- package/dist/channels/aun.js +618 -123
- package/dist/channels/daemon.js +6 -1
- package/dist/cli/agent-command.js +4 -3
- package/dist/cli/agent.js +66 -56
- package/dist/cli/aun-commands.js +177 -42
- package/dist/cli/command-log.js +10 -11
- package/dist/cli/contact.js +1 -0
- package/dist/cli/daemon-commands.js +98 -123
- package/dist/cli/init.js +27 -15
- package/dist/cli/task-context.js +50 -0
- package/dist/cli/trigger-command.js +14 -5
- package/dist/cli/watch-logs.js +10 -3
- package/dist/config/builtin-roles.js +1 -0
- package/dist/config/config-field-policy.js +19 -5
- package/dist/config/config-manager.js +167 -22
- package/dist/config/contact-book-store.js +25 -3
- package/dist/config/contact-operation-service.js +32 -1
- package/dist/config/contact-request-service.js +44 -0
- package/dist/config/daemon-services.js +186 -0
- package/dist/config/gateway-config.js +20 -9
- package/dist/config/role-service.js +54 -3
- package/dist/config/schema-migration.js +550 -0
- package/dist/config-store.js +151 -9
- package/dist/core/agent-application-service.js +279 -0
- package/dist/core/audit/log-integrity.js +102 -0
- package/dist/core/auth/agent-delegation.js +43 -1
- package/dist/core/auth/auth-gateway.js +41 -4
- package/dist/core/auth/authorization-audit.js +216 -8
- package/dist/core/auth/operation-authorizer.js +41 -1
- package/dist/core/auth/operation-catalog.js +9 -1
- package/dist/core/bootstrap-messages.js +8 -0
- package/dist/core/bootstrap-service.js +99 -27
- package/dist/core/causation/aun-association.js +7 -4
- package/dist/core/command/agent-control.js +56 -16
- package/dist/core/command/command-handler.js +311 -44
- package/dist/core/command/connect-menu.js +3 -4
- package/dist/core/command/group-menu.js +5 -7
- package/dist/core/command/menu-handler.js +288 -80
- package/dist/core/command/menu-protocol.js +1 -1
- package/dist/core/command/role-menu.js +21 -11
- package/dist/core/command/slash-gate.js +85 -18
- package/dist/core/command/slash-handler.js +377 -36
- package/dist/core/data-migration.js +11 -1
- package/dist/core/event-catalog.js +37 -0
- package/dist/core/evolagent.js +4 -0
- package/dist/core/handoff/dispatcher.js +4 -0
- package/dist/core/handoff/runtime.js +33 -3
- package/dist/core/handoff/store.js +32 -9
- package/dist/core/inference/text-inference.js +7 -15
- package/dist/core/message/im-renderer.js +90 -87
- package/dist/core/message/{inbound-admission.js → message-admission.js} +51 -1
- package/dist/core/message/message-bridge.js +184 -12
- package/dist/core/message/message-log.js +47 -7
- package/dist/core/message/message-queue.js +227 -16
- package/dist/core/message/message-utils.js +12 -5
- package/dist/core/message/response-engine.js +658 -109
- package/dist/core/message/send-receipt.js +1 -0
- package/dist/core/message/stream-debouncer.js +9 -2
- package/dist/core/model/model-catalog.js +23 -15
- package/dist/core/model/model-diagnostics.js +28 -10
- package/dist/core/permission/approval-gateway.js +180 -6
- package/dist/core/permission/ec-command-parser.js +627 -69
- package/dist/core/permission/mode.js +18 -3
- package/dist/core/{protected-paths.js → permission/protected-paths.js} +27 -14
- package/dist/core/permission/readonly-shell-query.js +263 -9
- package/dist/core/permission/sandbox-runtime.js +159 -1
- package/dist/core/permission/tool-error-code.js +12 -0
- package/dist/core/permission/tool-policy.js +618 -23
- package/dist/core/session/session-fs-store.js +154 -5
- package/dist/core/session/session-manager.js +329 -30
- package/dist/core/session/session-renew.js +37 -13
- package/dist/core/session/session-turn-coordinator.js +16 -5
- package/dist/eck/kit-renderer.js +1 -1
- package/dist/index.js +316 -50
- package/dist/ipc.js +459 -29
- package/dist/paths.js +82 -7
- package/dist/response-system/context-builder.js +1 -7
- package/dist/response-system/engines/v1/proactive-flow.js +7 -2
- package/dist/stats/price-resolver.js +4 -0
- package/dist/trigger/anomaly-store.js +1 -0
- package/dist/trigger/feedback.js +70 -7
- package/dist/trigger/history.js +79 -4
- package/dist/trigger/legacy-session-history.js +2 -2
- package/dist/trigger/parser.js +13 -3
- package/dist/trigger/scheduler.js +20 -3
- package/dist/trigger/validation.js +6 -1
- package/dist/utils/atomic-write.js +27 -0
- package/dist/utils/ecweb-utils.js +16 -2
- package/dist/utils/error-utils.js +4 -1
- package/dist/utils/logger.js +30 -6
- package/dist/utils/process-tree-stats.js +24 -4
- package/dist/utils/process-tree-worker.js +31 -0
- package/dist/utils/project-path.js +1 -2
- package/dist/utils/tool-summary.js +59 -0
- package/dist/utils/windows-shell-trust.js +201 -0
- package/kits/docs/INDEX.md +1 -1
- package/kits/docs/evolcore/INDEX.md +3 -3
- package/kits/docs/evolcore/agent-create.md +146 -0
- package/kits/docs/evolcore/agent.md +6 -0
- package/kits/docs/evolcore/contact.md +7 -1
- package/kits/docs/evolcore/group-collaboration.md +251 -0
- package/kits/docs/evolcore/group-rules.md +1 -19
- package/kits/docs/evolcore/group.md +3 -1
- package/kits/docs/evolcore/msg.md +16 -0
- package/kits/docs/evolcore/trigger.md +6 -3
- package/kits/docs/prompt-loading-architecture.md +6 -0
- package/kits/eck_message_manifest.json +6 -6
- package/kits/schemas/_meta.json +7 -4
- package/kits/schemas/agent-config.schema.11.json +13 -0
- package/kits/schemas/agent-config.schema.12.json +427 -0
- package/kits/schemas/daemon.schema.5.json +0 -1
- package/kits/schemas/daemon.schema.6.json +131 -0
- package/kits/schemas/defaults.schema.5.json +15 -3
- package/kits/schemas/migrations/README.md +3 -1
- package/kits/schemas/relation-config.schema.8.json +13 -0
- package/kits/schemas/role-config.schema.1.json +1 -2
- package/kits/schemas/single-session.schema.3.json +32 -0
- package/kits/templates/message-fragments/item.md +1 -1
- package/kits/templates/roles/admin.json +1 -0
- package/kits/templates/roles/member.json +1 -0
- package/kits/templates/roles/visitor.json +1 -0
- package/kits/templates/system-fragments/bootstrap.md +2 -1
- package/kits/templates/system-fragments/commands.md +2 -2
- package/package.json +6 -3
- package/skills/eclink/SKILL.md +2 -0
- package/dist/config/aun-gateway-config.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,71 @@
|
|
|
3
3
|
本文件记录 EvolCore 的重要变更。EvolClaw 版本线的历史记录已归档至
|
|
4
4
|
[`docs/_archive/CHANGELOG-evolclaw.md`](docs/_archive/CHANGELOG-evolclaw.md)。
|
|
5
5
|
|
|
6
|
+
## 0.0.22 (2026-09-05)
|
|
7
|
+
|
|
8
|
+
### 话题续接与触发任务
|
|
9
|
+
|
|
10
|
+
- 完善话题 `/renew` 的并发屏障、后端身份校验和辅助模型配置迁移,避免续接期间旧任务或旧后端结果串入新话题。
|
|
11
|
+
- 完善 Fullaccess Trigger 的持久授权、批准状态、CLI 参数和调度运行时,统一 daemon-owner 身份与审计关联。
|
|
12
|
+
|
|
13
|
+
### Bootstrap、会话与消息队列
|
|
14
|
+
|
|
15
|
+
- 增强 Agent 创建规划、Bootstrap 完成鉴权和欢迎消息投递,补齐生命周期门禁、事件记录与失败恢复。
|
|
16
|
+
- 完善消息队列、会话恢复、跨会话 Handoff 和响应引擎的状态收敛,降低重启、续接与并发操作造成的消息丢失或重复处理。
|
|
17
|
+
|
|
18
|
+
### 服务配置与消息管理
|
|
19
|
+
|
|
20
|
+
- 统一本机服务和 AUN Service Proxy 的配置读取、schema 与旧版迁移,并贯通 Agent 启动和 IPC 管理链路。
|
|
21
|
+
- 完善 `ec msg history` 按渠道实例和原生对端 ID 查询历史的参数传递、权限校验与结果处理。
|
|
22
|
+
|
|
23
|
+
### AUN 投递、联系人与观察者
|
|
24
|
+
|
|
25
|
+
- 完善 Outbox 投递状态、消息回执、永久失败诊断和路由变更保护,避免迟到结果误删已调整路由的待发消息。
|
|
26
|
+
- 强化联系人申请、Owner 审核以及托管私聊入站/出站准入,补齐拒绝原因与审计信息。
|
|
27
|
+
- 修复 Observer 消息转发的异步时序,并按群成员关系过滤重复通知。
|
|
28
|
+
|
|
29
|
+
### Codex 权限与跨平台安全
|
|
30
|
+
|
|
31
|
+
- 强化 Codex Shell 命令解析、委派校验、工具摘要和受保护路径策略,明确受管运行身份与权限决策证据。
|
|
32
|
+
- 修复 Windows Codex managed hook 的动态 IPC 校验与安装配置,统一 proactive hook 可用性检查并保持 H-class/L-class 保护边界。
|
|
33
|
+
- 修正 Codex Windows 文件系统 glob 规则,改善受管临时目录和锁目录的跨平台匹配。
|
|
34
|
+
- 统一 BaseAgent 请求地址和身份请求头传递,完善 Codex 会话启动、重连与错误诊断。
|
|
35
|
+
- 完善 Codex 子代理的上下文继承、权限传递和任务生命周期收敛,并贯通工具调用标识与授权审计。
|
|
36
|
+
- 为受信任的 root Fullaccess Claude 会话显式设置沙箱标记,并限制复杂 PowerShell carrier 的摘要解包范围。
|
|
37
|
+
|
|
38
|
+
### Windows IPC 与运行稳定性
|
|
39
|
+
|
|
40
|
+
- 统一 Windows IPC 端点路径规范和跨进程命名管道连接,修复实例 socket 路径在不同运行入口间不一致的问题。
|
|
41
|
+
- 修复 Windows 配置与联系人数据的锁竞争,支持安全识别并回收损坏或遗留锁文件。
|
|
42
|
+
- 强化 Windows Shell 签名信任校验,在允许受信任命令执行的同时收紧受管命令边界。
|
|
43
|
+
|
|
44
|
+
### Trigger 与监控收敛
|
|
45
|
+
|
|
46
|
+
- 确保 daemon Trigger 在错误已经渲染后仍发送明确终态,并传播中断生命周期元数据、统一中断结果分类。
|
|
47
|
+
- EC Web Monitor 按订阅生命周期启停进程树采样,避免无订阅时持续采集。
|
|
48
|
+
|
|
49
|
+
## 0.0.21 (2026-09-03)
|
|
50
|
+
|
|
51
|
+
### 话题与权限控制
|
|
52
|
+
|
|
53
|
+
- 新增话题 `/renew`,支持在空闲状态下安全续接话题后端会话,并强化并发操作与异常恢复处理。
|
|
54
|
+
- 新增 `/fa`、`/fullaccess` 和持久 Fullaccess Trigger,统一 daemon-owner 授权、可信运行身份与审计记录。
|
|
55
|
+
|
|
56
|
+
### 服务与消息管理
|
|
57
|
+
|
|
58
|
+
- 统一本机服务和 AUN Service Proxy 的配置与旧版迁移,支持按实例配置本机服务及代理。
|
|
59
|
+
- `ec msg history` 支持按完整渠道实例和原生对端 ID 查询已落盘的非 AUN 私聊历史。
|
|
60
|
+
|
|
61
|
+
### AUN 投递与联系人
|
|
62
|
+
|
|
63
|
+
- 完善 AUN Outbox 投递与回执处理,覆盖排队、重试、过期和永久失败等状态。
|
|
64
|
+
- 新增联系人申请与 Owner 审核流程,并将联系人策略应用到托管私聊的入站和出站准入。
|
|
65
|
+
|
|
66
|
+
### 安全与运行兼容
|
|
67
|
+
|
|
68
|
+
- 加固 Codex Shell 载体解析、受管权限校验和受保护路径沙箱边界,并将受保护路径策略归入权限模块。
|
|
69
|
+
- 统一 BaseAgent 请求地址和身份请求头处理,升级 AUN SDK 至 0.5.10,并兼容 Node.js 22.16.0。
|
|
70
|
+
|
|
6
71
|
## 0.0.20 (2026-08-28)
|
|
7
72
|
|
|
8
73
|
### AUN 网关与投递可靠性
|
package/README.md
CHANGED
|
@@ -78,7 +78,7 @@ ResponseEngine.processMessage()
|
|
|
78
78
|
### 环境要求
|
|
79
79
|
|
|
80
80
|
- **操作系统**:macOS / Linux / Windows
|
|
81
|
-
- **Node.js** >= 22.
|
|
81
|
+
- **Node.js** >= 22.16.0(依赖 `node:sqlite`,并与 AUN SDK 要求保持一致)
|
|
82
82
|
- **Claude Code** >= 2.1.32(`npm install -g @anthropic-ai/claude-code`)
|
|
83
83
|
|
|
84
84
|
### 1. 安装
|
|
@@ -143,7 +143,7 @@ ec init aun
|
|
|
143
143
|
```
|
|
144
144
|
|
|
145
145
|
交互式引导完成以下配置:
|
|
146
|
-
- 环境检查(Node.js >= 22、claude CLI、SDK 版本)
|
|
146
|
+
- 环境检查(Node.js >= 22.16.0、claude CLI、SDK 版本)
|
|
147
147
|
- 渠道选择(飞书 / 微信 / 钉钉 / QQ 频道 / 企业微信 / AUN)并扫码登录
|
|
148
148
|
- 默认项目路径
|
|
149
149
|
- 模型选择(sonnet/opus/haiku)
|
|
@@ -177,8 +177,8 @@ ec init aun
|
|
|
177
177
|
- `model`:配置文件 → `~/.claude/settings.json` → 默认 `sonnet`
|
|
178
178
|
- `effort`:配置文件 → `~/.claude/settings.json` → SDK 默认值(`auto`)
|
|
179
179
|
|
|
180
|
-
Claude
|
|
181
|
-
`baseagents`
|
|
180
|
+
Claude、Codex 或 EC Agent 兼容网关需要额外请求头或查询参数时,可以直接在 EvolCore 的
|
|
181
|
+
`baseagents` 配置中设置,不需要修改各 base agent 的全局配置文件:
|
|
182
182
|
|
|
183
183
|
```json
|
|
184
184
|
{
|
|
@@ -200,6 +200,15 @@ Claude/Codex 兼容网关需要额外请求头或查询参数时,可以直接
|
|
|
200
200
|
"queryParams": {
|
|
201
201
|
"source": "evolcore"
|
|
202
202
|
}
|
|
203
|
+
},
|
|
204
|
+
"ecagent": {
|
|
205
|
+
"baseUrl": "https://example.com/ecagent/v1",
|
|
206
|
+
"headers": {
|
|
207
|
+
"X-Tenant-Id": "${TENANT_ID}"
|
|
208
|
+
},
|
|
209
|
+
"queryParams": {
|
|
210
|
+
"source": "evolcore"
|
|
211
|
+
}
|
|
203
212
|
}
|
|
204
213
|
}
|
|
205
214
|
}
|
|
@@ -207,9 +216,48 @@ Claude/Codex 兼容网关需要额外请求头或查询参数时,可以直接
|
|
|
207
216
|
|
|
208
217
|
`${VAR}` 会按 EvolCore 的环境变量规则展开。Claude 通过 `ANTHROPIC_CUSTOM_HEADERS`
|
|
209
218
|
传递 Header;Codex app-server 启动时由 EvolCore 注入 `env_http_headers` 和
|
|
210
|
-
`query_params
|
|
219
|
+
`query_params`;EC Agent 主推理、模型列表和辅助推理直接在请求 URL 上追加参数。
|
|
220
|
+
因此不需要手改 Claude/Codex 的全局配置文件。`queryParams` 不应放置密钥等敏感信息。
|
|
221
|
+
|
|
222
|
+
完整设计、运行链路和排障说明见:[Baseagent 自定义请求元数据技术文档](docs/baseagent-request-metadata.md)。
|
|
223
|
+
|
|
224
|
+
### Baseagent 模型与备用链
|
|
225
|
+
|
|
226
|
+
Session Renew 的辅助模型配置与主模型、推理强度放在同一个
|
|
227
|
+
`baseagents.<baseagent>` 块中,与 `responseMode` 正交。主模型故障备用链
|
|
228
|
+
`fallbackModels` 只在 `agents/defaults.json` 中配置:
|
|
229
|
+
|
|
230
|
+
```jsonc
|
|
231
|
+
{
|
|
232
|
+
"baseagents": {
|
|
233
|
+
"claude": {
|
|
234
|
+
"model": "claude-opus",
|
|
235
|
+
"effort": "medium",
|
|
236
|
+
"auxiliaryModel": "claude-haiku-4-5-20251001",
|
|
237
|
+
"auxiliaryEffort": "low",
|
|
238
|
+
"fallbackModels": [
|
|
239
|
+
{ "model": "claude-sonnet-4-5", "effort": "medium" },
|
|
240
|
+
{ "model": "claude-haiku-4-5", "effort": "low" }
|
|
241
|
+
]
|
|
242
|
+
},
|
|
243
|
+
"codex": {
|
|
244
|
+
"model": "gpt-5.6",
|
|
245
|
+
"effort": "high",
|
|
246
|
+
"auxiliaryModel": "gpt-5.6-sol",
|
|
247
|
+
"auxiliaryEffort": "medium",
|
|
248
|
+
"fallbackModels": [
|
|
249
|
+
{ "model": "gpt-5.4", "effort": "medium" }
|
|
250
|
+
]
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
`auxiliaryEffort` 必须与同一 baseagent 块中的 `auxiliaryModel` 一起配置;未配置辅助模型时,
|
|
257
|
+
Session Renew 按 `session_renew.fallback_action` 处理。`fallbackModels` 不会被辅助推理使用。
|
|
211
258
|
|
|
212
|
-
|
|
259
|
+
升级旧版本时,daemon 启动前会自动把模式桶中的辅助字段迁移到对应的 baseagent 块并创建备份。
|
|
260
|
+
迁移逻辑集中在 `src/config/schema-migration.ts`,运行时不会回退读取旧字段。
|
|
213
261
|
|
|
214
262
|
### 3. 运行
|
|
215
263
|
|
|
@@ -269,10 +317,11 @@ evolcore/
|
|
|
269
317
|
│ │ │ ├── session-fs-store.ts # 文件系统存储原语
|
|
270
318
|
│ │ │ └── session-manager.ts # 会话管理(多项目支持)
|
|
271
319
|
│ │ ├── auth/ # 授权审计与 Trigger 鉴权
|
|
320
|
+
│ │ ├── permission/ # 权限策略与沙箱边界
|
|
321
|
+
│ │ │ └── protected-paths.ts # 受保护路径分级
|
|
272
322
|
│ │ ├── evolagent.ts # EvolAgent 实体
|
|
273
323
|
│ │ ├── evolagent-registry.ts # Agent 注册表(扫描/路由/热重载)
|
|
274
|
-
│ │
|
|
275
|
-
│ │ └── protected-paths.ts # 受保护路径分级
|
|
324
|
+
│ │ └── interaction-router.ts # 卡片交互回调路由
|
|
276
325
|
│ ├── channels/
|
|
277
326
|
│ │ ├── feishu.ts # 飞书 WebSocket 渠道
|
|
278
327
|
│ │ ├── wechat.ts # 微信 ClawBot 渠道
|
|
@@ -380,7 +429,7 @@ v3.2 新增进程级身份标识。启动时自动生成 `ec+5位数字.agentid.
|
|
|
380
429
|
|
|
381
430
|
## 技术栈
|
|
382
431
|
|
|
383
|
-
- **运行时**:Node.js >= 22 + TypeScript(ES modules)
|
|
432
|
+
- **运行时**:Node.js >= 22.16.0 + TypeScript(ES modules)
|
|
384
433
|
- **AI 后端**:@anthropic-ai/claude-agent-sdk 0.3.220(固定版本)、Codex CLI app-server、Gemini CLI
|
|
385
434
|
- **消息渠道**:飞书(@larksuiteoapi/node-sdk)、微信(ClawBot ilink API)、钉钉(dingtalk-stream)、QQ频道(pure-qqbot)、企业微信(AI Bot API)、AUN 网络
|
|
386
435
|
- **数据存储**:文件系统(per-chat 目录) + JSONL(CLI 共用)
|
|
@@ -80,6 +80,9 @@ async function main() {
|
|
|
80
80
|
threadId: input.session_id,
|
|
81
81
|
toolName: input.tool_name,
|
|
82
82
|
toolInput: input.tool_input ?? null,
|
|
83
|
+
...(typeof (input.tool_use_id ?? input.toolUseId ?? input.item_id ?? input.itemId) === 'string'
|
|
84
|
+
? { callId: input.tool_use_id ?? input.toolUseId ?? input.item_id ?? input.itemId }
|
|
85
|
+
: {}),
|
|
83
86
|
});
|
|
84
87
|
if (!result) {
|
|
85
88
|
deny('EvolCore policy service is unavailable.');
|
|
@@ -231,7 +231,9 @@ function main() {
|
|
|
231
231
|
content = setTomlKey(content, 'features', 'hooks', 'true');
|
|
232
232
|
content = setTomlKey(content, 'hooks', 'windows_managed_dir', tomlString(path.resolve(targetDirectory)));
|
|
233
233
|
if (!content.endsWith('\n')) content += '\n';
|
|
234
|
-
|
|
234
|
+
// Windows hook command must include %EVOLCORE_INSTANCE_SOCKET% so Codex
|
|
235
|
+
// expands it at runtime with the per-daemon socket path
|
|
236
|
+
const command = `${windowsCommandArg(nodePath)} ${windowsCommandArg(hookPath)} %EVOLCORE_INSTANCE_SOCKET%`;
|
|
235
237
|
content += [
|
|
236
238
|
markerStart,
|
|
237
239
|
'[[hooks.PreToolUse]]',
|
package/dist/agents/baseagent.js
CHANGED
|
@@ -28,12 +28,16 @@ const BASEAGENT_ALIASES = {
|
|
|
28
28
|
geminicli: { canonical: 'gemini', displayName: 'Gemini CLI' },
|
|
29
29
|
ecagent: { canonical: 'ecagent', displayName: 'ecagent' },
|
|
30
30
|
'ec-agent': { canonical: 'ecagent', displayName: 'ecagent' },
|
|
31
|
-
hermes: { canonical: 'hermes', displayName: 'Hermes' },
|
|
32
31
|
};
|
|
32
|
+
const SUPPORTED_BASEAGENTS = new Set(['claude', 'codex', 'gemini', 'ecagent']);
|
|
33
33
|
export function normalizeBaseagent(input) {
|
|
34
34
|
const key = String(input || '').trim().toLowerCase().replace(/_/g, '-');
|
|
35
35
|
return BASEAGENT_ALIASES[key] || { canonical: 'unknown', displayName: input ? String(input) : 'Unknown' };
|
|
36
36
|
}
|
|
37
|
+
export function isSupportedBaseagent(input) {
|
|
38
|
+
const key = String(input || '').trim().toLowerCase();
|
|
39
|
+
return SUPPORTED_BASEAGENTS.has(key);
|
|
40
|
+
}
|
|
37
41
|
function directInferencePair(apiKey, baseUrl) {
|
|
38
42
|
const normalizedApiKey = directInferenceValue(apiKey);
|
|
39
43
|
const normalizedBaseUrl = directInferenceValue(baseUrl);
|
|
@@ -232,7 +236,7 @@ export function resolveOpenaiDirectConfig(override) {
|
|
|
232
236
|
}
|
|
233
237
|
: undefined;
|
|
234
238
|
}
|
|
235
|
-
export function resolveOpenaiConfig(config, override) {
|
|
239
|
+
export function resolveOpenaiConfig(config, override, runtime) {
|
|
236
240
|
const codexSettings = loadCodexSettings();
|
|
237
241
|
const isPlaceholder = (v) => !v || v.includes('your-') || v.includes('placeholder');
|
|
238
242
|
const overrideApiKey = isPlaceholder(override?.apiKey) ? undefined : override?.apiKey;
|
|
@@ -279,8 +283,8 @@ export function resolveOpenaiConfig(config, override) {
|
|
|
279
283
|
effort,
|
|
280
284
|
enableRequestUserInput,
|
|
281
285
|
approvalsReviewer,
|
|
282
|
-
|
|
283
|
-
|
|
286
|
+
agentAid: runtime?.agentAid,
|
|
287
|
+
agentConfig: runtime?.agentConfig,
|
|
284
288
|
};
|
|
285
289
|
}
|
|
286
290
|
export function resolveGoogleConfig(config, override) {
|
|
@@ -328,18 +332,18 @@ export function resolveEcagentConfig(config, override) {
|
|
|
328
332
|
|| DEFAULT_ECAGENT_BASE_URL;
|
|
329
333
|
const model = override?.model || configured?.model || DEFAULT_ECAGENT_MODEL;
|
|
330
334
|
const headers = normalizeStringMap(override?.headers ?? configured?.headers, 'headers');
|
|
335
|
+
const queryParams = normalizeStringMap(override?.queryParams ?? configured?.queryParams, 'queryParams');
|
|
331
336
|
const effort = override?.effort ?? configured?.effort;
|
|
332
337
|
const numberOr = (value, fallback) => (typeof value === 'number' && Number.isFinite(value) && value >= 0 ? value : fallback);
|
|
333
338
|
return {
|
|
334
339
|
apiKey,
|
|
335
340
|
baseUrl,
|
|
336
341
|
headers,
|
|
342
|
+
queryParams,
|
|
337
343
|
model,
|
|
338
344
|
effort,
|
|
339
345
|
timeoutMs: numberOr(override?.timeoutMs ?? configured?.timeoutMs, DEFAULT_ECAGENT_TIMEOUT_MS),
|
|
340
346
|
maxRetries: numberOr(override?.maxRetries ?? configured?.maxRetries, DEFAULT_ECAGENT_MAX_RETRIES),
|
|
341
347
|
maxRetryDelayMs: numberOr(override?.maxRetryDelayMs ?? configured?.maxRetryDelayMs, DEFAULT_ECAGENT_MAX_RETRY_DELAY_MS),
|
|
342
|
-
evolcoreAgentAid: configured?.evolcoreAgentAid,
|
|
343
|
-
evolcoreAgentConfig: configured?.evolcoreAgentConfig,
|
|
344
348
|
};
|
|
345
349
|
}
|