feat: add JavaScript session orchestration runtime

This commit is contained in:
shiyue
2026-08-26 10:09:26 +08:00
parent 05480e511d
commit f15bc92d1e
17 changed files with 1483 additions and 5 deletions

View File

@@ -0,0 +1,85 @@
# 标准 JavaScript 会话编排进度
## Session: 2026-08-26
### Phase 1需求与代码链路确认
- **Status:** complete
- **Started:** 2026-08-26
- Actions taken:
- 完成 grilling 需求对齐,共确认 23 项决策。
- 读取项目 AGENTS.md 和相关技能说明。
- 使用 codebase-memory 确认索引 ready并核对 MCP/会话/steer 入口。
- 创建本任务 scoped planning 文件。
- Files created/modified:
- `.planning/2026-08-26-standard-javascript-session/task_plan.md`
- `.planning/2026-08-26-standard-javascript-session/findings.md`
- `.planning/2026-08-26-standard-javascript-session/progress.md`
### Phase 2MCP 契约与脚本运行基础
- **Status:** complete
- Actions taken:
- 新增 6 个脚本 MCP 工具定义,并接入 stdio/HTTP `tools/list`
- 在来源对话 cwd 下创建 `.ccweb/scripts/`,注入根 `package.json``node_modules/@ccweb/session` ESM 包。
- 增加脚本名、符号链接、脚本源代码大小校验和原子写入。
- 增加独立 Node 子进程、run.json、stdout/stderr 完整落盘、尾部/范围读取、重复启动拒绝、优雅停止/强制终止和重启恢复。
- Files created/modified:
- `lib/javascript-session-runtime.js`
- `lib/ccweb-mcp-server.js`
- `server.js`
### Phase 3会话标准包与服务端编排
- **Status:** complete
- Actions taken:
- 标准包 5 个函数通过短期 run token 调用现有 ccweb `/api/internal/mcp`,不重复实现会话。
- 创建/发送服务端等待目标助手消息完成;当前 Codex App 对话复用 steer。
- 语义分支使用一次性只读 Codex App 判断 turn严格候选匹配最多重试 3 次。
- 脚本异常结束/服务重启向来源对话插入带 runId、状态、原因和 stderr 尾部的通知;主动 stop 不插入。
- Files created/modified:
- `lib/javascript-session-runtime.js`
- `server.js`
### Phase 4测试与回归
- **Status:** complete
- Actions taken:
- 新增 `scripts/javascript-session-runtime-unit.js`,覆盖 ESM 裸包导入、目录边界、重复启动、状态查询、异常通知、主动停止和重启恢复。
- 真实服务验证 `tools/list`、API manifest、脚本执行和 `getCurrentConversationId()`
- 修复 Node 18 对 node_modules ESM 包边界的解析问题。
- Test results:
- `node scripts/javascript-session-runtime-unit.js`:通过
- `node scripts/regression.js`:通过
- `node --check server.js`:通过
- `node --check lib/javascript-session-runtime.js`:通过
- `node --check lib/ccweb-mcp-server.js`:通过
- `git diff --check`:通过
- 项目回归首次运行遇到既有 Codex App steer 模拟的时序抖动,立即重跑通过;未产生源码或运行态残留。
### Phase 5交付
- **Status:** complete
- 已清理根目录临时脚本测试产物和 TODO CSV保留源码、单测与 scoped planning 记录。
## Test Results
| Test | Input | Expected | Actual | Status |
|------|-------|----------|--------|--------|
| 代码索引状态 | `home-cc-web` | ready | ready | ✓ |
## Error Log
| Timestamp | Error | Attempt | Resolution |
|-----------|-------|---------|------------|
| 2026-08-26 | 用户级 planning-with-files 路径不存在 | 1 | 改用项目内技能路径 |
## 5-Question Reboot Check
| Question | Answer |
|----------|--------|
| Where am I? | Phase 2MCP 契约与脚本运行基础 |
| Where am I going? | 完成脚本工具、运行注册表、标准包和回归 |
| What's the goal? | 为 cc-web 提供标准 JavaScript 会话编排能力 |
| What have I learned? | 现有 MCP/会话/steer 入口可复用,完成点需接入服务端等待 |
| What have I done? | 完成需求收敛、代码索引核验和 scoped planning 文件 |