aws-runtime-bridge 1.9.162 → 1.9.169
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 +324 -0
- package/dist/adapter/AcodeSdkAdapter.d.ts +31 -3
- package/dist/adapter/AcodeSdkAdapter.js +4 -9
- package/dist/adapter/ClaudeSdkAdapter.d.ts +2 -0
- package/dist/adapter/ClaudeSdkAdapter.js +3 -3
- package/dist/adapter/CodexSdkAdapter.d.ts +2 -0
- package/dist/adapter/CodexSdkAdapter.js +3 -3
- package/dist/adapter/OpencodeSdkAdapter.d.ts +2 -0
- package/dist/adapter/OpencodeSdkAdapter.js +3 -3
- package/dist/adapter/prompts.d.ts +1 -1
- package/dist/adapter/prompts.js +1 -1
- package/dist/adapter/types.d.ts +41 -4
- package/dist/adapter/types.js +1 -1
- package/dist/browser/frame-encode.d.ts +25 -0
- package/dist/browser/frame-encode.js +2 -0
- package/dist/browser/screencast-differ.d.ts +2 -3
- package/dist/browser/screencast-differ.js +1 -1
- package/dist/browser/screencast-manager.js +1 -1
- package/dist/browser/types.d.ts +5 -1
- package/dist/browser/types.js +1 -1
- package/dist/desktop/desktop-mcp-client.js +2 -2
- package/dist/routes/background-tasks.js +3 -3
- package/dist/routes/capabilities.js +1 -1
- package/dist/routes/dashboard.d.ts +2 -0
- package/dist/routes/dashboard.js +4 -4
- package/dist/routes/git.js +22 -22
- package/dist/routes/instance.js +1 -1
- package/dist/routes/launch.js +10 -10
- package/dist/routes/mcp-extra.js +2 -2
- package/dist/routes/mcp.d.ts +4 -0
- package/dist/routes/mcp.js +1 -1
- package/dist/routes/plugins.js +1 -1
- package/dist/routes/pty.d.ts +11 -3
- package/dist/routes/pty.js +3 -3
- package/dist/routes/runtime-binding.js +1 -1
- package/dist/routes/sessions.js +1 -1
- package/dist/routes/skills.js +1 -1
- package/dist/routes/sub-agents.js +8 -8
- package/dist/routes/terminal.d.ts +16 -2
- package/dist/routes/terminal.js +34 -36
- package/dist/services/agent-process-manager.js +1 -1
- package/dist/services/agent-pty-manager.js +4 -4
- package/dist/services/aws-client-agent-mcp.js +2 -2
- package/dist/services/capability-config.d.ts +8 -0
- package/dist/services/capability-config.js +2 -2
- package/dist/services/desktop-mcp-manager.d.ts +3 -1
- package/dist/services/desktop-mcp-manager.js +1 -1
- package/dist/services/instance-ai-config-service.js +1 -1
- package/dist/services/instance-features.d.ts +10 -0
- package/dist/services/instance-features.js +1 -1
- package/dist/services/instance-init-service.js +1 -1
- package/dist/services/launch-manager.d.ts +9 -1
- package/dist/services/launch-manager.js +6 -6
- package/dist/services/launch-metrics.d.ts +1 -1
- package/dist/services/launch-metrics.js +4 -3
- package/dist/services/mcp-deploy.d.ts +4 -0
- package/dist/services/mcp-env-injector.d.ts +12 -0
- package/dist/services/mcp-env-injector.js +2 -0
- package/dist/services/mcp-launch-binding-queue.d.ts +8 -0
- package/dist/services/mcp-launch-binding-queue.js +1 -1
- package/dist/services/orphan-monitor.js +1 -1
- package/dist/services/panel-env.d.ts +6 -2
- package/dist/services/panel-env.js +1 -1
- package/dist/services/plugin-manager.js +9 -9
- package/dist/services/process-detector.d.ts +23 -3
- package/dist/services/process-detector.js +13 -13
- package/dist/services/runtime-resources-snapshot.d.ts +3 -0
- package/dist/services/runtime-resources-snapshot.js +3 -0
- package/dist/services/session-output.d.ts +13 -0
- package/dist/services/session-output.js +4 -4
- package/dist/services/tunnel-client.js +1 -1
- package/dist/services/workspace-files.js +1 -1
- package/dist/types.d.ts +4 -0
- package/dist/utils/env-safety.d.ts +15 -0
- package/dist/utils/env-safety.js +2 -0
- package/dist/utils/lifecycle-log.d.ts +2 -0
- package/dist/utils/lifecycle-log.js +3 -0
- package/dist/utils/mcp-utils.js +1 -1
- package/package/acode/dist/background-command-manager.js +4 -4
- package/package/acode/dist/built-in-file-tools.d.ts +13 -0
- package/package/acode/dist/built-in-file-tools.js +2 -2
- package/package/acode/dist/builtins/shellCommandPreparation.d.ts +2 -0
- package/package/acode/dist/builtins/shellCommandPreparation.js +2 -2
- package/package/acode/dist/compaction.d.ts +10 -0
- package/package/acode/dist/compaction.js +6 -6
- package/package/acode/dist/context-overflow.js +1 -1
- package/package/acode/dist/index.d.ts +1 -0
- package/package/acode/dist/index.js +1 -1
- package/package/acode/dist/mcpToolNames.d.ts +4 -0
- package/package/acode/dist/mcpToolNames.js +1 -1
- package/package/acode/dist/runtime-environment.d.ts +2 -0
- package/package/acode/dist/runtime-environment.js +3 -2
- package/package/acode/dist/runtime.d.ts +68 -8
- package/package/acode/dist/runtime.js +28 -27
- package/package/acode/dist/sub-agent-manager.js +1 -1
- package/package/acode/dist/tool-allocation.js +1 -1
- package/package/acode/dist/tool-group-manager.d.ts +12 -0
- package/package/acode/dist/tool-group-manager.js +8 -4
- package/package/acode/dist/types.d.ts +8 -0
- package/package/acode/package.json +1 -1
- package/package/aws-client-agent-mcp/README.md +1 -0
- package/package/aws-client-agent-mcp/dist/agent-client.d.ts +22 -8
- package/package/aws-client-agent-mcp/dist/agent-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/http-client.d.ts +10 -0
- package/package/aws-client-agent-mcp/dist/http-client.js +1 -1
- package/package/aws-client-agent-mcp/dist/logger.d.ts +2 -1
- package/package/aws-client-agent-mcp/dist/logger.js +2 -2
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +19 -2
- package/package/aws-client-agent-mcp/dist/mcp-server.js +18 -18
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +15 -4
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +79 -29
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +2 -0
- package/package/aws-client-agent-mcp/dist/memory-store.js +3 -3
- package/package/aws-client-agent-mcp/dist/message-buffer.js +1 -1
- package/package/aws-client-agent-mcp/dist/office/office-workspace.d.ts +15 -0
- package/package/aws-client-agent-mcp/dist/office/office-workspace.js +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js +1 -1
- package/package/aws-client-agent-mcp/dist/tool-groups.d.ts +4 -0
- package/package/aws-client-agent-mcp/dist/tool-groups.js +2 -2
- package/package/aws-client-agent-mcp/dist/types.d.ts +52 -1
- package/package/aws-client-agent-mcp/dist/websocket-client.js +1 -1
- package/package/aws-client-agent-mcp/package.json +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,330 @@ files 白名单),供调度中心「查看本次更新内容」弹窗按 `##
|
|
|
5
5
|
展示。发布新版本时须在仓库中先写好 `## v<version>` 段(prepack-guard 校验缺段
|
|
6
6
|
即阻断发布);Bridge 自更新成功后的运行时追加仅作为包内缺段时的兜底。
|
|
7
7
|
|
|
8
|
+
## v1.9.169
|
|
9
|
+
|
|
10
|
+
_发布日期:2026-10-12_
|
|
11
|
+
|
|
12
|
+
### 多语言与消息协作增强,环境变量、邮箱与流程线能力整合
|
|
13
|
+
|
|
14
|
+
- dashboard 接入 `vue-i18n`,提供简体中文与英文的自动识别、持久化、运行期切换
|
|
15
|
+
和 Element Plus 文案联动,并补充完整开发指南与语言资源测试。
|
|
16
|
+
- 消息中心补齐消息复制、引用流、附件下载与反馈队列体验;能力范围、时间线顺序、
|
|
17
|
+
浏览器面板适配和会话分组等交互稳定性同步收敛。
|
|
18
|
+
- dashboard 侧接通项目 / 角色 / Agent 三层环境变量配置、能力开关与邮箱管理界面,
|
|
19
|
+
并补充项目关系图导入、流程线交付物下载 / 回放 / 指派标签等能力。
|
|
20
|
+
- bridge 启动测试统一跨平台命令进程 PID mock 输出,稳定 Linux CI 端口探测时序,
|
|
21
|
+
避免发布流水线因平台差异产生偶发失败。
|
|
22
|
+
- 更新 Docker Compose 与邮箱部署、跨项目角色冲突、环境变量分层等文档。
|
|
23
|
+
|
|
24
|
+
> **验证**:dashboard `npm run lint`、`npm run type-check` 与 `npm run build` 通过;
|
|
25
|
+
> dashboard 新增 34 个测试脚本全部通过;bridge `npm test` 通过
|
|
26
|
+
> (114 files、1621 passed、2 skipped)。
|
|
27
|
+
|
|
28
|
+
## v1.9.168
|
|
29
|
+
|
|
30
|
+
_发布日期:2026-10-11_
|
|
31
|
+
|
|
32
|
+
### 发版稳定性:测试兼容、任务通知与连接生命周期修复
|
|
33
|
+
|
|
34
|
+
本版本主要为发版验证中暴露的兼容性与稳定性问题收敛,既有功能契约保持不变:
|
|
35
|
+
|
|
36
|
+
- `aws-client-agent-mcp` 的 `initialize` 返回完整工具组清单,能力开关三态
|
|
37
|
+
(`disabled` / `collapsed` / `expanded`)契约与 Java 侧保持一致。
|
|
38
|
+
- `pipeline_task_assigned` 的 `SYSTEM_NOTIFY` 与持久化任务通知增加强制任务域
|
|
39
|
+
hydrate,首次落空时自动重试,避免重启或长轮询窗口内遗漏流程任务。
|
|
40
|
+
- `.agentswork` 记忆目录搜索增加项目根与 Git 仓库边界,避免相邻项目目录串用;
|
|
41
|
+
`MemoryStore` 增加 domain 写入缓存,修复大量 domain 场景测试超时。
|
|
42
|
+
- WebSocket 手动断开与异步 token 刷新重连之间的竞态修复,断开后不再重新排程
|
|
43
|
+
重连,非 CLOSED 连接句柄会被终止。
|
|
44
|
+
- `RuntimeBridgeService` 的 SSE 客户端改为首次使用时初始化;同步迁移版本数、
|
|
45
|
+
`reply_to` 测试 schema 与 Direct/Group Message 控制器测试签名。
|
|
46
|
+
- 测试命令增加 Node 测试进程强制退出兼容项,确保 CI 收尾不被子进程管道句柄
|
|
47
|
+
阻塞。
|
|
48
|
+
- 修复 Linux CI 启动项端口探测用例的 shell PID / 命令进程 PID 替换竞态,
|
|
49
|
+
避免发布流水线因平台进程发现时序产生偶发失败。
|
|
50
|
+
|
|
51
|
+
> **验证**:Java 后端 `mvn test`(1873 tests)、bridge 根目录测试、ACode 测试与
|
|
52
|
+
> `aws-client-agent-mcp` 测试全部通过;`npm run build:all`、`npm run build`
|
|
53
|
+
> 和 `npm run typecheck` 均通过。
|
|
54
|
+
|
|
55
|
+
## v1.9.167
|
|
56
|
+
|
|
57
|
+
_发布日期:2026-10-07_
|
|
58
|
+
|
|
59
|
+
### Word 格式管控:OOXML 版式底座 + 信任机制(自动备份 / 保护区域 / 报告聚合)
|
|
60
|
+
|
|
61
|
+
面向「生成复杂排版文档并严格把控」这一目标,分两条线补强 office 工具链。
|
|
62
|
+
Java 侧新增 3 个 OOXML 助手并扩展 5 个,bridge 侧补齐备份、参数透传与工具契约。
|
|
63
|
+
|
|
64
|
+
#### 1. 写盘前自动备份(改坏了能回滚)
|
|
65
|
+
|
|
66
|
+
`office_edit` / `office_format(fix)` / `office_apply_profile` / `office_generate_from_template`
|
|
67
|
+
直接改写用户文档,此前改错只能靠事先手动 copy。现在覆盖写盘前自动留一份
|
|
68
|
+
`<基名>-backup-<时间戳><扩展名>`,滚动保留最近 5 份;回执透出 `backupPath` + `backupHint`。
|
|
69
|
+
**另存到已有文件**同样先备份(等价于覆盖)。备份失败不阻断写盘(磁盘满/权限异常时
|
|
70
|
+
不带该字段);只清理严格匹配时间戳命名的文件,不会误删 `报告-backup-未命名.docx` 这类同名文件。
|
|
71
|
+
|
|
72
|
+
#### 2. 保护区域:封面/题注/代码块不被正文规则触碰
|
|
73
|
+
|
|
74
|
+
规则新增 `exclude`(支持 `/body/p[1]-p[14]` 区间简写与 `{path/from/to/style/contains/role}` 对象)
|
|
75
|
+
与 `excludeByRole`,**check 与 fix 同源生效**。`summary.excludedParagraphs` 透出命中段数。
|
|
76
|
+
`office_format` 另提供顶层 `exclude` 便捷入口(preset 场景下也能一次排除封面);
|
|
77
|
+
实现上复制 rules 再写入,不原地修改 preset 共享实例(否则会污染后续所有调用)。
|
|
78
|
+
|
|
79
|
+
#### 3. 三套规则系统打通:profile 可直接当 rules
|
|
80
|
+
|
|
81
|
+
`office_view(mode=profile)` 的产物此前**无法**直接喂给 `office_format`——启发式识别出的
|
|
82
|
+
角色其 `match` 为空对象,`RoleMatcher.matches()` 恒为 false 且不回落到内置判定。
|
|
83
|
+
现空 `match` 回落内置启发式,并新增 `unmatchedRoles`/`unmatchedRolesHint` 显式报出
|
|
84
|
+
「既无 match 又非内置角色名」的规则(此前这类规则静默失效,是「配了规则却没反应」的根因)。
|
|
85
|
+
推荐链路:模板 `view(profile)` → `office_format(rules=profile, exclude=[封面范围], action=check)` → `action=fix`。
|
|
86
|
+
|
|
87
|
+
#### 4. 报告可读性:106 条平铺 → 可定位
|
|
88
|
+
|
|
89
|
+
- 每条违规新增 `textDigest`(段落文字摘要),不必再按 path 反查原文;
|
|
90
|
+
- `summary.byRole`(按角色聚合降序)、`summary.paragraphs`(按段落聚合,含该段问题属性列表)、
|
|
91
|
+
`summary.topIssue`(一句话摘要)。
|
|
92
|
+
- 阅读顺序:`topIssue` → `byRole` → `paragraphs` → 需要细节时再读 `violations`。
|
|
93
|
+
|
|
94
|
+
#### 5. `office_format(action=dryRun)` 与 `office_view(paths=[...])`
|
|
95
|
+
|
|
96
|
+
- **dryRun**:按 fix 逻辑算出将改哪些项,返回 `willModify` + `nextStep`,不写盘、不返回字节
|
|
97
|
+
(bridge 侧即使服务端意外带回字节也直接丢弃)。注意 dryRun **不产生 `converged`**——
|
|
98
|
+
未真正修正就不能声称收敛。
|
|
99
|
+
- **paths**:段落白名单(`/body/p[7]`、区间 `/body/p[5]-p[11]`),仅对 `styles`/`profile`/`selfcheck`
|
|
100
|
+
生效。大文档(几百段)下排查局部时把返回量从整篇压到几段。`profile` 的 `page`/`numbering`
|
|
101
|
+
来自文档级部件仍按整篇提取;`selfcheck` 的 `pageNo` 仍为真实页码。无法解析的 `paths`
|
|
102
|
+
一律回退为「不过滤」,避免空结果误导。
|
|
103
|
+
|
|
104
|
+
#### 6. OOXML 版式能力补齐 + 4 个 P0 缺陷修复
|
|
105
|
+
|
|
106
|
+
新增 `DocxLayoutOps`(分栏/页码分区/文档网格/titlePg/分页控制/中文排版开关/动态版心宽)、
|
|
107
|
+
`DocxRunFormatExtras`(双删除线/小型大写/字符缩放/复杂文种字号/字体 hint)、
|
|
108
|
+
`DocxFootnoteOps`(脚注尾注);扩展 `DocxStyleOps`(样式创建**与改写**、字符样式)、
|
|
109
|
+
`DocxNumberingOps`(多级编号/样式绑定/一键编号)、`DocxTableOps`(行高/cantSplit/表格布局/边框)、
|
|
110
|
+
`DocxPaths`(`/body/table[T]/row[R]`、`/body/style[ID]`)。
|
|
111
|
+
|
|
112
|
+
修复的 P0:
|
|
113
|
+
|
|
114
|
+
| 缺陷 | 影响 | 修复 |
|
|
115
|
+
|---|---|---|
|
|
116
|
+
| `pageBreakBefore` 进规则但不被下游识别 | 标记 `fixable=true` 却写不进去 → **check 永不收敛** | `applyParagraphExtras` 委托 `DocxLayoutOps.applyParagraphLayout` |
|
|
117
|
+
| `applyProfile` 编号硬编码 `numId=2` | 文档已占用 numId=2 时挂错编号定义 | 改用 `createStyleBoundHeadingNumbering` 返回值 |
|
|
118
|
+
| bridge 从不读 `outputFile` | 描述承诺「标注版不覆盖原件」落空 | 接上 `outputFile`,缺省自动派生 `<原名>-标注版.docx` |
|
|
119
|
+
| `fontSize` 走 `intProp` + `setFontSize(int)` | **10.5pt 被截断为 10pt**(论文图题/表题标准字号) | 按双精度写 `w:sz`+`w:szCs`(半磅精度) |
|
|
120
|
+
|
|
121
|
+
另:`keywordCount`/`refCount` 角色级聚合断言从「只在描述里」补成真实实现
|
|
122
|
+
(此前按描述配置会静默零违规);selfcheck 分页识别补齐「显式分页符 + 段前分页 + 分节符」并修正
|
|
123
|
+
**文本归属页**(段前分页段的文本此前被算进上一页);标题级别判定兼容中文样式名「标题 N」与纯 `outlineLvl`。
|
|
124
|
+
|
|
125
|
+
#### 7. 颜色值序列化:`STHexColor` 联合类型陷阱
|
|
126
|
+
|
|
127
|
+
`w:color/@w:val` 的类型是 XMLBeans **联合类型** `STHexColor`——RGB 分支存 3 字节 `byte[]`,
|
|
128
|
+
另一分支存字符串 `"auto"`,因此 `CTColor.getVal()` 返回 `Object`。
|
|
129
|
+
`DocxStyleResolver` 直接 `String.valueOf(getVal())`,RGB 被渲染成 `[B@74a239d7`。
|
|
130
|
+
|
|
131
|
+
**不只是显示乱码**:`OfficeRuleEngine.compareColor` 拿这个值跟期望值比对,
|
|
132
|
+
任何带 `color` 期望的规则**都不可能收敛**(fix 写完复检仍报违规,`converged` 永远 false)。
|
|
133
|
+
读取改走 `xgetVal().getStringValue()`(两类分支都正确),字节分支兜底手写十六进制。
|
|
134
|
+
|
|
135
|
+
同根因的写入侧缺陷:颜色归一化一律 `toUpperCase()`,把合法的 `auto` 变成非法的 `AUTO`,
|
|
136
|
+
被 XMLBeans 以「union value 'AUTO' does not match any members」拒绝
|
|
137
|
+
(传 `color="auto"` 清色直接报错)。归一化统一收敛到 `OfficeArgs.normalizeColor` 单点权威
|
|
138
|
+
(命名色表 + `auto` 保留小写),`OfficeDocService` 与 `OfficeRuleEngine` 都委托它;
|
|
139
|
+
xlsx/pptx 无 `auto` 概念,走新增的 `rgbColorOf` 显式拒绝并给可读提示。
|
|
140
|
+
|
|
141
|
+
顺带修复 `office_view(outline)` 两处同源缺陷:标题判定只认 `styleId` 以 `heading` 开头
|
|
142
|
+
(中文模板「标题 1」与纯 `outlineLvl` 标题全部漏检);表格节点只有行列数,现附加题注文本
|
|
143
|
+
(先取表格前一段、再取后一段,按「表 X-Y」文本特征或题注样式判定,都不中则回退)。
|
|
144
|
+
|
|
145
|
+
> **升级须知**:本版本无破坏性变更。`office_format` 的 `action` 枚举新增 `dryRun`,
|
|
146
|
+
> 旧调用方不受影响;备份文件会在文档同目录产生额外的 `<基名>-backup-*` 文件,
|
|
147
|
+
> 若不希望出现在工作区索引中,可在 `.gitignore` 加 `*-backup-????????-??????.*`。
|
|
148
|
+
|
|
149
|
+
## v1.9.166
|
|
150
|
+
|
|
151
|
+
_发布日期:2026-10-05_
|
|
152
|
+
|
|
153
|
+
### 修复:submit_task_result 丢参导致循环节点恒被拒绝提交
|
|
154
|
+
|
|
155
|
+
`handleSubmitTaskResult` 只向 `agentClient.submitTaskResult` 透传了
|
|
156
|
+
`nodeId / outputPayload / changeLog`,而工具 schema 早已声明、服务端也早已消费的
|
|
157
|
+
**`handoverNote` 与 `deliverables` 在这一层被静默丢弃**。后果:
|
|
158
|
+
|
|
159
|
+
- 位于循环路径(模板 `require_handover=true`)的节点,Agent 即便按描述传入
|
|
160
|
+
`handoverNote`,抵达 Java 侧时仍为 null,`validateHandoverNoteIfRequired`
|
|
161
|
+
恒定抛「必须提供交接经验」拒绝提交 —— 表现为「nodeId 能识别、handoverNote 却
|
|
162
|
+
永远缺失」的固定失败,Agent 侧穷尽调用通道与字段命名均无法绕过;
|
|
163
|
+
- 结束节点的 `requiredDeliverables` 同理永远收不到交付物,必填项必然判缺。
|
|
164
|
+
|
|
165
|
+
修复内容:
|
|
166
|
+
|
|
167
|
+
- **补齐 5 参透传**:`handoverNote`(`getOptionalString`)与 `deliverables` 一并
|
|
168
|
+
下发到 `agentClient.submitTaskResult(nodeId, outputPayload, changeLog,
|
|
169
|
+
handoverNote, deliverables)`。
|
|
170
|
+
- **新增 `prepareDeliverables`**:逐项归一化交付物,文件类(`path`)复用
|
|
171
|
+
`uploadAttachmentFiles` 换取 `url/mediaType/size` 后回传,文本类(`text`)原样
|
|
172
|
+
透传;无 key 项与空数组安全忽略。服务端 `parseDeliverablesArg` 可直接消费。
|
|
173
|
+
- **changeLog 放宽形态**:数组(MCP 已解析)与 JSON 字符串两种形态均透传,
|
|
174
|
+
原先只认数组、字符串形态被吞(服务端 `parseChangeLog` 本就两种都支持)。
|
|
175
|
+
|
|
176
|
+
### 错误结构化:errorCode / field 回传给 Agent
|
|
177
|
+
|
|
178
|
+
服务端校验失败原先只回 `{"error":"<纯文本>"}`,Agent 只能从中文长句里猜原因。
|
|
179
|
+
现新增 `McpToolError`(携带 `errorCode` / `field`),`callTool` 抛出时保留,
|
|
180
|
+
`McpToolError` 经 MCP 错误响应原样透出:
|
|
181
|
+
|
|
182
|
+
```json
|
|
183
|
+
{"error":"该节点位于循环路径…","errorCode":"HANDOVER_REQUIRED","field":"handoverNote"}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
仅新增字段、不改 `error` 语义,向后兼容;Agent 可据此直接补齐入参重试。
|
|
187
|
+
|
|
188
|
+
> **回归锁定**:`mcp-server.test.ts` 的 `submit_task_result` 分发断言原先只校验
|
|
189
|
+
> 3 个位置参数(`["node-1","...",undefined]`),恰好把丢参行为固化,导致测试全绿
|
|
190
|
+
> 而线上必然失败。现改为 5 参断言,并新增 handoverNote / text 交付物 / file 交付物
|
|
191
|
+
> (打桩上传)/ changeLog 字符串形态四条用例。
|
|
192
|
+
|
|
193
|
+
> **兼容性**:MCP 工具 schema 未变更,仅修复「声明了却不转发」的实现缺口;
|
|
194
|
+
> 新旧服务端均可对接(服务端本就接受这两个可选字段)。
|
|
195
|
+
|
|
196
|
+
## v1.9.165
|
|
197
|
+
|
|
198
|
+
_发布日期:2026-10-03_
|
|
199
|
+
|
|
200
|
+
### 浏览器画质档位:原画改为无损 PNG,高清 80 / 流畅 60
|
|
201
|
+
|
|
202
|
+
原先三档都是 JPEG,所谓「原画」实为 JPEG q80;且 tile 差量路径把 CDP 帧解码后
|
|
203
|
+
**再按同一质量重编码一次**,同一区域反复变化时有损伪影逐次累积。
|
|
204
|
+
|
|
205
|
+
- **档位参数改为格式驱动**(`QUALITY_PRESETS` 新增 `format` 字段):
|
|
206
|
+
- `original`:无损 PNG,像素级还原(`quality` 不生效);
|
|
207
|
+
- `hd`:JPEG 80;
|
|
208
|
+
- `smooth`:JPEG 60。
|
|
209
|
+
- **tile 重编码跟随档位格式**(新增 `frame-encode.ts` 统一编码入口):
|
|
210
|
+
无损档位下增量块同样输出 PNG,不再被二次有损压缩;整帧与 tile 两条路径
|
|
211
|
+
共用同一实现,避免只改一半造成「整帧无损、增量有损」的错配。
|
|
212
|
+
- **CDP 参数修正**:`Page.startScreencast` 仅在 jpeg 格式下携带 `quality`,
|
|
213
|
+
png 格式传 0 会被 CDP 判为非法参数。
|
|
214
|
+
- **默认格式由默认档位派生**:原先 `DEFAULT_FORMAT` 写死 `'jpeg'`,与默认档位
|
|
215
|
+
`original` 冲突,会让会话初始状态变成「UI 显示原画、实际下发 JPEG q0」。
|
|
216
|
+
- **单帧上限 2MB → 6MB**(`WS_DEFAULT_MAX_SEND_BYTES`):1280×720 的无损 PNG
|
|
217
|
+
整帧可达 3.5MB 量级,沿用 2MB 会让高熵内容的整帧被静默丢弃,
|
|
218
|
+
表现为画面冻结并反复 resync。
|
|
219
|
+
- **切换档位时丢弃差分参考帧**:格式变化会改变参考帧的编码语义,
|
|
220
|
+
沿用旧基准会把新格式首帧差分成跨格式 tile。
|
|
221
|
+
|
|
222
|
+
前端同步:`createImageBitmap` 不再声明 `image/jpeg`(原画档位是 PNG,
|
|
223
|
+
声明错误的 MIME 会选错解码路径,改由内容嗅探);画质下拉文案标注「原画(无损)」。
|
|
224
|
+
|
|
225
|
+
> **兼容性**:帧协议未变更(`createImageBitmap` 按内容嗅探格式),
|
|
226
|
+
> 新旧前端均可解码;但旧 bridge + 新前端会失去无损能力(仍为 JPEG)。
|
|
227
|
+
|
|
228
|
+
## v1.9.164
|
|
229
|
+
|
|
230
|
+
_发布日期:2026-09-26_
|
|
231
|
+
|
|
232
|
+
### 项目级 / 角色级能力层(inherited 层):bridge 侧落地
|
|
233
|
+
|
|
234
|
+
能力配置由「全局默认 + 实例覆盖」两级升级为**四层逐键覆盖链**
|
|
235
|
+
(角色实例 > 角色 > 项目 > 全局默认),本版本承接 bridge 侧全部落地。
|
|
236
|
+
解析权威仍在 Java(`AgentCapabilityService.buildInheritedLayers` 产出「项目 ⊕ 角色」的
|
|
237
|
+
增量层),bridge 只负责存储与逐键取用:
|
|
238
|
+
|
|
239
|
+
- **能力布尔(MCP / Skill / 插件)**:per-agent 文件由「平铺 map」升级为
|
|
240
|
+
`{ overrides, inherited }` 双子对象;旧平铺文件读作 `overrides`,向后兼容。
|
|
241
|
+
取值链 `overrides > inherited > 共享默认(config) > deployedDefault > false`。
|
|
242
|
+
新增整表替换端点 `POST /runtime/{skills|mcp|plugins}/deployed/inherited`
|
|
243
|
+
(`{ agentId, inherited }`,null/缺省 = 清空本层),由 Java fan-out 推送。
|
|
244
|
+
- **工具三态(disabled / collapsed / expanded)**:新增内存层
|
|
245
|
+
`inheritedFeaturesByAgent`,`getFeatureState` 改为
|
|
246
|
+
`实例显式 > inherited > 内置默认` 逐键解析;**分组父门禁**在合并视图上判定
|
|
247
|
+
(父主开关 `disabled` 则子能力一律未授权),与 Java `AgentAbilitySwitchService`
|
|
248
|
+
同口径。
|
|
249
|
+
- **分层推送互不覆盖**:全局改动只动共享默认、项目/角色改动只推 inherited、
|
|
250
|
+
实例改动只推 overrides —— 因此删掉本层键即可自然露出下层值,
|
|
251
|
+
「恢复跟随上层」得以正确工作。
|
|
252
|
+
- `/runtime/start` 与 `POST /instances/:id/features` 同步接收 `inheritedFeatures` /
|
|
253
|
+
`capabilitiesInherited` 字段(undefined = 不改动,避免误清空其它实例的推送值)。
|
|
254
|
+
|
|
255
|
+
> **升级须知(重要)**:低于本版本的 bridge 不认识 inherited 层,会回退到
|
|
256
|
+
> 「缺名 = 启用」的迁移期路径,导致**上层已禁用的能力仍被启用**。因此本版本要求
|
|
257
|
+
> bridge 与 Java 端同批升级;环境变量四层链(v1.9.163 起)不涉 bridge 存储,滚动安全。
|
|
258
|
+
|
|
259
|
+
### 工具批次归组:阻塞型通讯工具移出「并行执行工具」
|
|
260
|
+
|
|
261
|
+
`poll_message` / `create_meeting` 这类核心阻塞型通讯工具不再进入工具批次:
|
|
262
|
+
|
|
263
|
+
- **移出批次**(不进批次根事件、不带 `batchId`、不计入 `tool_batch_metrics` 的
|
|
264
|
+
`toolCount`/`traces`),时间线上按普通工具扁平展示;执行本身不变,仍由调度器排到
|
|
265
|
+
批尾串行(`poll_message` 的 while(true) 阻塞等待语义不受影响)。
|
|
266
|
+
- 动因:这两者与本批其他工具毫无并行收益,归进「并行执行工具」卡片会造成双重误导——
|
|
267
|
+
卡片名宣称并行、实测 `speedup` 恒为 1.00x;`poll_message` 的阻塞等待也会被错觉为
|
|
268
|
+
批次成员。之前的批调用把 `search_memory` 与 `poll_message` 并列,既无加速、又难看懂。
|
|
269
|
+
- 批次成立条件收紧为「**批次成员**数 > 1」:若排除后成员不足 2 个(如
|
|
270
|
+
`poll_message` + 单个 `write_file`),则不发根事件与指标,时间线完全扁平。
|
|
271
|
+
- 运行时新增 `isMcpBatchExcludedToolName`(`mcpToolNames.ts`)作为批次排除判据;
|
|
272
|
+
与「MCP 超时策略」集合 `isMcpBlockingToolName` 语义分离。
|
|
273
|
+
|
|
274
|
+
配套 Java 侧(同批发布):`ProjectCapabilityOverrideService` 项目层存储(
|
|
275
|
+
`project_capability_overrides:{tenant}:{projectId}`)、`AgentCapabilityService`
|
|
276
|
+
四层解析与 source 细化(agent/role/project/bridge)、`AgentAbilitySwitchService`
|
|
277
|
+
三态四层 + 分组门禁、`RuntimeBridgeService` inherited 推送与 fan-out、
|
|
278
|
+
项目/角色能力配置接口与新建项目草稿落库。
|
|
279
|
+
|
|
280
|
+
### 修复:Agent 回到 waiting_input 后长时间"空闲"(每次任务后约 10min 死区)
|
|
281
|
+
|
|
282
|
+
现象:角色实例状态徽章长时间显示"空闲",而时间线最新事件停在"编辑文件";
|
|
283
|
+
期间私信/流程线任务完全不消费,约 10 分钟后才自行恢复。
|
|
284
|
+
|
|
285
|
+
根因(`AcodeSdkAdapter`):`turn_complete` 的"用户消息轮调用了工作工具"分支
|
|
286
|
+
(`!autoPollActive && observedAnyTool && !observedPollingTool`)原本只做 `return`——
|
|
287
|
+
既不派发空闲提示词、也放弃了重臂。而 `waiting_input` 下 turn 级看门狗不计时,
|
|
288
|
+
会话遂无任何定时器在看守,只能等 10min 会话存活看门狗兜底。
|
|
289
|
+
且重试轮(`retryFailedRequest`,`autoPollActive=false`)同样命中该分支,
|
|
290
|
+
而该路径不重置观察标记,上一失败轮残留的 `observedAnyTool` 使分支必然成立 →
|
|
291
|
+
**每次任务结束都固定触发约 10min 死区**。
|
|
292
|
+
|
|
293
|
+
修复(保留"不立即派发"的节流意图,改为**延迟重臂**):
|
|
294
|
+
- 新增 `ACODE_DEFERRED_IDLE_REARM_MS`(默认 3s,env 可覆盖)与
|
|
295
|
+
`scheduleDeferredIdleRearm()`:分支 2 不立即派发空闲提示词,但延迟后重臂监听,
|
|
296
|
+
把死区从 10min 压到 3s。刻意走 `scheduleAutoPoll` 而非 `armIdleLoopOrAutoPoll`,
|
|
297
|
+
避免配置了 polling 类 idle 命令时被 `IdlePollLoop`(0ms)架空延迟。
|
|
298
|
+
- `armIdleLoopOrAutoPoll` 重臂前清除待触发的延迟定时器(只清 timer、不动退避档位),
|
|
299
|
+
防止延迟重臂与正常重臂双发。
|
|
300
|
+
- `retryFailedRequest` 与其它提交入口对齐,重置 `autoPollObserved*` 三标记,
|
|
301
|
+
消除跨轮污染导致的"重试轮被误判为用户消息轮"。
|
|
302
|
+
|
|
303
|
+
## v1.9.163
|
|
304
|
+
|
|
305
|
+
_发布日期:2026-09-25_
|
|
306
|
+
|
|
307
|
+
### 三级环境变量(全局 / 项目 / 角色实例)→ 工具子进程 + MCP 配置
|
|
308
|
+
|
|
309
|
+
环境变量由单一「面板全局层」升级为**三级合并**(角色实例 > 项目 > 全局,择近优先),
|
|
310
|
+
合并结果随 `/runtime/start` 下发,作用于 bridge 管理的工具子进程与 MCP stdio 服务器配置。
|
|
311
|
+
Java 侧 `EnvVarResolver` 为唯一权威计算点,本版本承接 bridge 侧全部落地:
|
|
312
|
+
|
|
313
|
+
- **per-agent 环境变量存储**:`panel-env` 由进程级单例改为按 agentId 键控。此前最后启动的
|
|
314
|
+
实例会覆盖整个 bridge 的环境变量(多实例静默串味);现在各实例独立,桌面工具子进程按
|
|
315
|
+
调用方实例取值,切换实例时经 env 签名检测触发重启应用新值(`ownerAgentId` 记录归属)。
|
|
316
|
+
- **MCP stdio spec 注入**:MCP 子进程**不继承 bridge 的 `process.env`**(MCP SDK 的
|
|
317
|
+
`StdioClientTransport` 只带 HOME/PATH 等少数键),故新增 `mcp-env-injector` 把有效环境变量
|
|
318
|
+
写入每个 stdio server 的 `env`。优先级:**server 自身 env > 三级合并结果 > SDK 默认继承项**;
|
|
319
|
+
内置 `agents-work-studio` 与 sse/http 服务器跳过。acode(per-instance acode.json 装配)
|
|
320
|
+
与 Claude SDK 两条适配器路径均已接入。
|
|
321
|
+
- **`${VAR}` 占位符展开**:stdio spec 的 `env` 值与远程 spec 的 `url` / `headers` 值中的
|
|
322
|
+
`${变量名}` 按该实例有效环境变量展开(如 `Authorization: "Bearer ${API_KEY}"`);
|
|
323
|
+
未命中的占位符保持原样,便于在 MCP 启动失败信息中定位拼写错误。
|
|
324
|
+
- **子进程 env 安全名单**:新增 `utils/env-safety.ts`,把原 plugin-manager 的
|
|
325
|
+
`BLOCKED_ENV_KEYS` 集中为单点权威并新增 `sanitizeEnvForChild`,在面板环境变量入站、
|
|
326
|
+
MCP spec 注入、桌面子进程显式覆盖层三处统一把关(挡掉 `NODE_OPTIONS` / `LD_PRELOAD` /
|
|
327
|
+
`PATH` 等执行流劫持与宿主关键路径键)。
|
|
328
|
+
|
|
329
|
+
配套 Java 侧(同批发布):`EnvVarResolver` 三级合并与「空串=屏蔽」解析、`t_agent.env_overrides`
|
|
330
|
+
实例层存储、项目级 `project_env_vars:*` 存储与掩码读写、有效值预览接口、三级配置 UI。
|
|
331
|
+
|
|
8
332
|
## v1.9.162
|
|
9
333
|
|
|
10
334
|
_发布日期:2026-09-24_
|
|
@@ -13,17 +13,22 @@ type ACodeRuntimeInstance = {
|
|
|
13
13
|
on(eventName: "event", listener: (event: ACodeEvent) => void): void;
|
|
14
14
|
start(): Promise<void>;
|
|
15
15
|
submit(message: string, options?: {
|
|
16
|
-
skipProactiveCompaction?: boolean;
|
|
17
16
|
resume?: boolean;
|
|
18
17
|
}): Promise<void>;
|
|
19
18
|
abort(): Promise<void>;
|
|
20
19
|
resetContext?(): Promise<void>;
|
|
21
20
|
stop(): Promise<void>;
|
|
22
21
|
|
|
22
|
+
exportConversation?(): unknown[];
|
|
23
|
+
|
|
24
|
+
importTranscript?(transcript: unknown[]): Promise<number>;
|
|
25
|
+
|
|
23
26
|
submitQuestionAnswer?(toolCallId: string, answers: Record<string, string>): boolean;
|
|
24
27
|
|
|
25
28
|
detachCurrentToolExecution?(): boolean;
|
|
26
29
|
|
|
30
|
+
hasActiveBlockingToolCall?(): boolean;
|
|
31
|
+
|
|
27
32
|
notifyForceMessage?(): void;
|
|
28
33
|
|
|
29
34
|
addBuiltInTools?(tools: unknown[]): number;
|
|
@@ -34,8 +39,6 @@ type ACodeRuntimeInstance = {
|
|
|
34
39
|
|
|
35
40
|
setToolPermissionPolicy?(policy: unknown): void;
|
|
36
41
|
|
|
37
|
-
markSkipNextCompaction?(): void;
|
|
38
|
-
|
|
39
42
|
submitToolPermissionDecision?(requestId: string, allowed: boolean): boolean;
|
|
40
43
|
|
|
41
44
|
addPluginCommands?(commands: unknown[]): void;
|
|
@@ -53,6 +56,8 @@ type ACodeRuntimeConstructor = new (config: {
|
|
|
53
56
|
globalPrompt?: string;
|
|
54
57
|
rolePrompt?: string;
|
|
55
58
|
memory?: string;
|
|
59
|
+
|
|
60
|
+
resumeContext?: string;
|
|
56
61
|
env?: Record<string, string>;
|
|
57
62
|
subAgentManager?: SubAgentManager;
|
|
58
63
|
|
|
@@ -93,6 +98,8 @@ type ACodeRuntimeConstructor = new (config: {
|
|
|
93
98
|
error?: string;
|
|
94
99
|
}>;
|
|
95
100
|
};
|
|
101
|
+
|
|
102
|
+
runtimeResourcesProvider?: () => Promise<string | null | undefined>;
|
|
96
103
|
}) => ACodeRuntimeInstance;
|
|
97
104
|
export declare function toAcodeEsmImportSpecifier(modulePath: string): string;
|
|
98
105
|
|
|
@@ -128,10 +135,19 @@ export declare class AcodeSdkAdapter extends EventEmitter implements BaseProvide
|
|
|
128
135
|
resetContext(sessionId: string): Promise<void>;
|
|
129
136
|
terminateSession(sessionId: string): Promise<void>;
|
|
130
137
|
getConversation(sessionId: string): ConversationMessage[];
|
|
138
|
+
|
|
139
|
+
exportRawTranscript(sessionId: string): unknown[] | undefined;
|
|
140
|
+
|
|
141
|
+
importRawTranscript(sessionId: string, transcript: unknown[]): Promise<number>;
|
|
131
142
|
hasSession(sessionId: string): boolean;
|
|
132
143
|
getProviderSessionId(sessionId: string): string | undefined;
|
|
133
144
|
getSessionStatus(sessionId: string): SessionStatus | undefined;
|
|
134
145
|
|
|
146
|
+
getTotalUsage(sessionId: string): {
|
|
147
|
+
inputTokens?: number;
|
|
148
|
+
outputTokens?: number;
|
|
149
|
+
} | undefined;
|
|
150
|
+
|
|
135
151
|
notifyForceMessage(sessionId: string): boolean;
|
|
136
152
|
|
|
137
153
|
getCapabilities(sessionId: string): RuntimeCapabilities | undefined;
|
|
@@ -193,6 +209,8 @@ export declare class AcodeSdkAdapter extends EventEmitter implements BaseProvide
|
|
|
193
209
|
private emitProviderEvent;
|
|
194
210
|
|
|
195
211
|
private armIdleLoopOrAutoPoll;
|
|
212
|
+
|
|
213
|
+
private scheduleDeferredIdleRearm;
|
|
196
214
|
private getIdlePollLoop;
|
|
197
215
|
private submitAutoPollPrompt;
|
|
198
216
|
|
|
@@ -224,6 +242,16 @@ export declare class AcodeSdkAdapter extends EventEmitter implements BaseProvide
|
|
|
224
242
|
|
|
225
243
|
private cancelDataFlowWatchdog;
|
|
226
244
|
|
|
245
|
+
private startLivenessWatchdog;
|
|
246
|
+
|
|
247
|
+
private stopLivenessWatchdog;
|
|
248
|
+
|
|
249
|
+
private checkSessionLiveness;
|
|
250
|
+
|
|
251
|
+
private recoverIdleStall;
|
|
252
|
+
|
|
253
|
+
private hasActiveBlockingToolCall;
|
|
254
|
+
|
|
227
255
|
private formatAiRequestActionDetail;
|
|
228
256
|
}
|
|
229
257
|
export {};
|