chore: rebuild release package

This commit is contained in:
shiyue
2026-07-18 10:14:38 +08:00
parent fa15b54469
commit a76de06c47
112 changed files with 8858 additions and 399 deletions

View File

@@ -42,3 +42,8 @@
- 第二轮已改为子状态优先聚合整体状态、runtime 活动输入结构化合并、agentPath 仅提供标题、activity 匹配必须存在 threadId;新增边界回归均通过,等待原检查代理复核。
- 原检查代理复核时把 `item/completed` 误等同于 child completed;真实会话反证是 `input.kind=started` 的活动工具本身 `done=true`,因此 transport item 生命周期不能覆盖 activity kind 的 child 生命周期语义。
- 正确契约:completed 通知缺少新 kind 时继承 previous activity kind/status;只有活动 kind 明确为 completed/returned/failed/closed 时才改变 child 终态,同时仍保留 started prompt。
- 用户明确要求所有子代理统一成完整标题+简介卡片。上游 raw activity 无法追回真实 prompt,因此展示层需以 agentPath/task name 生成可读标题和明确标注的兜底简介,真实 prompt 仍保持最高优先级。
- 富卡片独立复核发现 `collabAgentStateEntries` 会重新推断并覆盖 `hasReadableSourceTitle:false`,导致 prompt 派生的 snake_case 标题被误翻译;该标记必须贯穿 merge、entry 与 render。
- 最终实现只美化协议/agentPath 来源的自动任务名;prompt 派生标题的 `hasReadableSourceTitle:false` 会贯穿 merge→entry→render,不被误翻译。
- 最终 HTTP `app.js` 与源码 SHA-256 均为 `0b3a14a543fa819837eb4d1bf007aa4929d52844af8624696d5f74afe8b7891e`,响应为 `Cache-Control: no-store, max-age=0`,刷新页面即可加载,无需为纯静态改动中断其他运行对话。
- 最终 baseline tar SHA-256 为 `c85202fa3ee989689aef3821b6860b1a356267180aa79858140849599f8504d4`,MCP initialize smoke test 成功。

View File

@@ -35,3 +35,8 @@
- 2026-07-16:对复核提出的“item/completed 强制 child completed”意见基于真实 done=true started 活动提出异议;补充协议语义回归后再复核。
- 2026-07-16:原 Trellis 检查代理撤回错误意见并最终通过;字段归一与统一渲染完成,进入全量回归。
- 2026-07-16:完整 `npm run regression`、服务端/mock 语法和全工作树 diff 检查通过;在 /tmp 安装 baseline Bun,进入发布构建。
- 2026-07-17:baseline 发布包、静态资源哈希与 MCP smoke test 已通过;用户进一步要求无 prompt 卡片也统一显示标题和简介,追加展示兜底阶段。
- 2026-07-17:标题+兜底简介定向回归通过,但独立复核发现 prompt 派生标题来源标记丢失,进入最小修正循环。
- 2026-07-17:修复标题来源标记并通过原检查代理复核;无 prompt 富卡片完成,进入最终全量回归与重建。
- 2026-07-17:最终完整 regression、语法与 diff 检查通过;baseline 发布包重建,源码/发布目录/tar 静态资源哈希一致,MCP smoke 通过。
- 2026-07-17:因“定制暗金荒野主题”对话仍在运行未重启 PM2;HTTP 已直接返回最新 app.js 且 no-store,本任务完成。

View File

@@ -12,7 +12,7 @@
## 当前阶段
Phase 8
已完成
## 阶段
@@ -60,15 +60,17 @@ Phase 8
- [x] 实现 agentThreadId agentPath 状态及 prompt 字段归一
- [x] 合并活动与协作工具并隐藏原始工具条及 call ID
- [x] 运行语法检查和完整自动化回归
- [ ] 重建 CentOS 7 发布包并完成二进制与 tar 核验
- **Status:** in_progress
- [x] 重建 CentOS 7 发布包并完成二进制与 tar 核验
- [x] 为无 prompt 子代理生成可读标题与兜底简介
- [x] 重新回归并重建最终发布包
- **Status:** complete
## 完成标准
- 按 `label → title → nickname → name` 选择第一个非通用、非线程 ID 的协议标题。
- 仅有线程 ID 或 `子代理` / `子代理 N` 等通用名称时,从该子代理自己的任务提示词生成稳定标题。
- 每个子代理保留自己的简介,多子代理合并不会共用第一个提示词。
- 无 prompt 时回退为短线程 ID,空字段不会导致异常。
- 无 prompt 但有 agentPath/task name 时生成可读标题和明确的兜底简介;两者都没有时才回退短线程 ID。
- 简介最多显示两行,完整简介挂在简介 DOM 的悬浮提示;运行结果保留在卡片容器的独立悬浮详情,两者不互相覆盖。
- 现有状态、关闭、复制线程 ID 功能不回退。
- 窄屏下标题、状态和关闭按钮不横向溢出。
@@ -84,9 +86,10 @@ Phase 8
6. 仅有 `subAgentActivity` 与空 `wait` 的历史会话也显示统一富卡片,不再显示原始活动工具条或 `ID call_...`。
7. `agentThreadId` 写入 `receiverThreadIds` 并作为 `agentsStates` 键;`agentPath` 的 basename 写入可读标题/角色。
8. `started/interacted` 映射为运行态,`completed/returned` 映射为完成态,失败/关闭类活动映射到对应终态。
9. 活动或同线程事件能提供 prompt 时写入 `taskDescription`;完全没有 prompt 时不伪造简介。
9. 活动或同线程事件能提供 prompt 时写入 `taskDescription`;完全没有 prompt 时显示明确标注的兜底任务说明,不冒充真实 prompt。
10. 回归分别覆盖完整 `spawnAgent`、仅 `subAgentActivity + 空 wait`、刷新历史、原始工具条去重、无 `ID call_...` 与 prompt 保留。
11. 发布包保持 `bun-linux-x64-baseline` 目标,完成 MCP JSON-RPC 初始化 smoke test,并核对 tarball 内运行文件与静态资源。
12. 无 prompt 的 `subAgentActivity` 也必须使用与完整 spawnAgent 相同的标题+简介卡片结构,不再显示裸 snake_case 名称。
## 范围约束
@@ -116,3 +119,6 @@ Phase 8
| Phase 8 首次计划审查发现字段、去重和发布核验契约不够具体 | 1 | 补充字段级映射、逐项行为断言与 CentOS 7 二进制/tar 验证标准后复审 |
| 首轮实现通过定向回归但独立检查发现空 wait 状态冲突与 completed 丢 prompt | 1 | 补充四类边界行为断言,改为子状态聚合整体状态并结构化合并 runtime 活动输入 |
| `timeout` 后直接放环境变量导致命令被当成可执行文件 | 1 | 改用 npm `--registry` 单次参数,代理查询与临时 Bun 安装成功 |
| 临时 TODO CSV 被外部流程移除 | 1 | 按现有计划状态重建 CSV,并追加新的展示兜底与最终重建步骤 |
| 富卡片首轮复核发现 prompt 派生自动名被误翻译 | 1 | 在状态条目归一时保留显式标题来源标记,并补真实 merge→render 回归 |
| 最终重启前发现另一个对话仍在运行 | 1 | 按项目规则不重启;确认静态 app.js 由磁盘直接提供且 HTTP 哈希一致、Cache-Control 为 no-store |