DirectProject聊天状态从webview移入rust #367

Merged
kdletters merged 37 commits from fix/chat-state into master 2026-09-15 23:43:02 +08:00
Member

close #335

close #335
k88936 force-pushed fix/chat-state from 09dcc0c263 to aaeb423501 2026-09-15 21:14:47 +08:00 Compare
kdletters force-pushed fix/chat-state from aaeb423501 to 47bb42844b 2026-09-15 21:33:23 +08:00 Compare
kdletters force-pushed fix/chat-state from f5d7fc1e2d to 9bbefdc371 2026-09-15 22:32:20 +08:00 Compare
kdletters added 37 commits 2026-09-15 23:38:34 +08:00
新增 Rust canonical user item 与 Codex wire 转换模块

增加 ts-rs 绑定目录及生成文件检查边界

更新聊天素材引用规范与里程碑实施计划
将 direct_runtime 与 codex_app_server 改为目录模块

拆分 user item 的模型、校验与 wire 投影文件

抽离 DirectProject 历史注入载荷构造 seam
将项目 canonical identity 与 digest 放入独立文件

保持 Codex app-server 线程池调用接口不变
移除 game-creator-conversation.v1 读取 fallback

历史注入前逐项投影 canonical user item 为 Codex message

无效 item 在持久化前失败关闭
拒绝资源引用额外身份字段与未知 content part

补充历史 item wire 投影边界测试

同步 DirectProject 历史文档为无 fallback 合同
移除 DirectCodexTurnReference 平行 DTO 与渲染路径

将引用数量上限收回 canonical user item 校验模块
覆盖 Lexical 文本与引用交错顺序

验证资源引用只发送稳定 resourceId
标记 canonical、wire 与失败关闭验收项

同步实施计划为进行中状态
按 Lexical 顺序构造 message.content

DirectProject payload 改为发送 userItem

策略重试保留同一 canonical item
移除 legacy 投影描述

将历史测试统一为 Response item 合同
区分 turn/start 的 text 与历史 message 的 input_text

将 AGC 私有引用转换为标准 input_text

新增回归测试避免未知 variant text
补充Thread Manager全局事件队列、subscriber cursor与consume契约

补充持久化顺序、队头回收、过期重订阅和历史锚点规则

新增Thread Manager里程碑规范与小步实施计划
新增单thread全局事件序列与append-only队列

新增subscriber独立cursor、consume和过期回收语义

补充并发订阅、未完成item、生命周期锚点和队头清理测试
将app-server item与turn事件接入Thread Manager

新增subscribe、consume和历史切片Tauri命令

保证响应item持久化成功后才发布完成事件
将运行态队列改为Vec加head索引\n仅清理可持久化事件的队头并保留未完成item事件\n增加定期compact避免已清理前缀长期占用内存
item事件仅传递类型与完成标记,不转发完整app-server载荷\nturn完成事件仅保留安全终态\n补充事件投影脱敏测试
新增独立raw event reducer并按item与turn事件重建运行态\n页面进入时注册notify订阅并通过consume推进Rust内部游标\n队列过期后保留旧状态并重新bootstrap
区分JSONL完整item与Thread Manager运行态事件\n明确公开事件必须经过安全投影
Thread Manager订阅在内存锚点为空时读取持久化最后item ID\n保持重启恢复与历史懒加载锚点一致
进入项目先读取有限历史切片而非完整对话\n按最早item ID向前翻页并保留hasMore状态\n复用同一历史item投影构造聊天记录
将历史记录类型依赖置于模块顶部
将app-server审批与用户输入请求投影为标准运行态事件\n仅转发请求标识,不暴露完整请求载荷
新回合开始时清空累计回复文本和活动 item 集合。
加载更早消息后同步增加会话可见窗口。
捕获历史切片读取失败并保留加载状态清理。
Reducer 没有累计文本时同步清空旧的瞬时回复。
订阅端复用 canonical project identity 并匹配 Windows 路径归一化。
让回合开始事件可清理,并保留模块测试所需的身份辅助导入。
将 serverRequest/resolved 转换为 request.resolved 事件,及时解除订阅请求占用。
把历史末项读取和订阅初始化移入 spawn_blocking,避免同步命令阻塞。
历史请求返回后校验当前项目路径,丢弃过期结果。
仅在订阅游标落后于队列头时驱逐订阅,并补充队头被 pin 的回归测试。
请求无 ID 时立即可清理,解决事件到达后解除对应 requested 事件 pin。
serverRequest/resolved 不再复用 activity 节流,始终进入 request.resolved 清理链。
补充 DirectProject 初始历史 hasMore 时的按钮与滚动入口
修正 rebase 后 Tauri 命令与 Rust 测试辅助函数可见性
同步更新 DirectProject 历史恢复规范与里程碑验收记录
新增活动 Direct 回合只读快照与状态更新
接入重进项目的忙碌态恢复和运行中项目面板
补充生命周期规范、决策记录与定向测试
初始化 Direct 活动回合更新时间
Project CI / AI game creator shell Rust shard 3/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 4/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust smoke (pull_request) Has been cancelled
Project CI / AI game creator shell Rust crates (pull_request) Has been cancelled
Project CI / Backend tests (pull_request) Has been cancelled
Project CI / Native shell tests (pull_request) Has been cancelled
Project CI / Frontend tests (pull_request) Has been cancelled
Project CI / Repository checks (pull_request) Has been cancelled
Project CI / AI game creator shell web tests (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 2/4 (pull_request) Has been cancelled
Project CI / AI game creator shell Rust shard 1/4 (pull_request) Has been cancelled
8f456d974d
让活动回合快照在受理时即具备更新时间
保持面板与重连读取同一份完整快照
kdletters force-pushed fix/chat-state from 53af1f89eb to 8f456d974d 2026-09-15 23:38:34 +08:00 Compare
kdletters marked the pull request as ready for review 2026-09-15 23:41:56 +08:00
kdletters merged commit 7043e8db5c into master 2026-09-15 23:43:02 +08:00
Sign in to join this conversation.