feat: support conversation state events in JavaScript sessions

This commit is contained in:
shiyue
2026-08-27 22:16:33 +08:00
parent e62a545569
commit 97b4a32dda
12 changed files with 458 additions and 11 deletions

View File

@@ -0,0 +1,20 @@
# Progress
- 2026-08-27开始新增 `getConversationStatus``onConversationEvent`
- 已确定公开状态值沿用 ccweb 现有 `running` / `idle`
- 已确认 codebase-memory 索引可用,并定位状态判定、标准包注入和内部调用映射入口。
- 计划审查通过已补齐注销、边沿、manifest、重启前检查与“未完成自动继续”验收点。
- 用户追加等待子对话状态与直接子对话 ID 查询;公开函数总数调整为 8。
- 已定型公开 API、三态优先级、idle 边沿 payload、注销语义和已有注入包升级策略。
- 已补充失败测试8 函数 manifest、三态值、状态序列 idle→running→idle、注销后停止查询、直接子对话 ID、未知事件错误码。
- 红灯结果符合预期:旧实现 manifest 仍为 5 个函数。
- 已把 `running → 临时 idle → waiting_for_children → 稳定 idle` 固化为监听回归序列,只有最终稳定 idle 可回调。
- 已实现服务端三态查询idle 500ms 复核)与直接子对话 ID 查询,并接入隐藏脚本 MCP 授权链路。
- 已实现 `@ccweb/session` 1.1.0 的 `getConversationStatus``getChildConversationIds``onConversationEvent`,包内 idle 稳定 250ms 并支持注销。
- 已让生成的 `node_modules/@ccweb/session` 在已有脚本目录中按内容原子刷新。
- 首轮语法检查与运行时单测通过。
- 完整验证通过:`server.js`、运行时、MCP server、单测脚本语法检查`javascript-session-runtime-unit``scripts/regression.js` 均成功。
- `git diff --check` 通过manifest 实测为 1.1.0、8 个函数、三态枚举完整。
- 已按重启前规则确认仅当前对话运行后完成服务重启;重启后 manifest 与真实脚本均验证通过。
- 真实闭环通过:新建子对话 → 监听 idle → 首次“未完成” → 回调内 `sendMessage` → 第二次“任务完成” → 注销;直接子对话 ID 查询和运行中状态查询同时通过。
- 确认 `waiting_for_children` 期间及登记延迟造成的临时 idle 均不会触发监听仅稳定活动态→idle 触发。