fix(acp): preserve inbound interaction ownership and startup diagnostics - #182
Merged
Conversation
Cancel undisplayable elicitation, block unsupported required fields, and retain request instances across response retries, session cancellation, reconnects, and reused IDs. Localize structured stdio preflight errors and share bounded CLI process cleanup. Add protocol, presentation, real-pipe, and browser full-chain regressions. Refs #146, #164
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Read the existing IDBFS backing store in a bounded readonly transaction instead of relying on a fixed delay or an in-memory file. Keep the post-reload UI assertions and wait for the directory editor to finish saving. A real 8-second sync delay reproduces directory loss with the old gate and passes with the persisted-file wait. Full-chain elicitation and settings persistence browser smokes pass against the current Release artifact.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
当 ACP 表单无法路由到可显示的会话、必填字段尚未被客户端支持,或旧连接的异步回调晚到时,原实现可能让 Agent 一直等候、发送不完整答案或清掉新表单。此变更统一保留请求实例与连接归属:不可显示的请求明确返回
cancel,未答表单不被替换,成功发送才移除 pending,发送失败仍可重试;会话取消不会作用到复用相同编号的新请求。同时修正启动诊断与短命令的资源收尾:stdio 预检以结构化事实传入本地化服务,SDK 保留真实错误而不凭空追加 SSH 建议;CLI 版本探测与 macOS 命令注册共用有界进程 runner,并发排空 stdout/stderr,取消或超时后终止进程树、等待退出并观察读取任务。
AcpClient与相关测试:应答互斥、发送失败/取消竞态、断连重连、请求 ID 复用,以及 URL completion 的连接关联、唯一性和去重。ChatView.xaml、DI、AGENTS.md:现有间距收归命名资源,说明共享命令状态所需的 ViewModel singleton 例外,沉淀交互与进程所有权规则。session/new在途请求级取消、必填字段阻止空提交、字符串/布尔值回包、未知必填项取消,以及表单和三个操作按钮真实移除;最后检查每个请求只有一次响应。browser-app.mjs、ui-affordances.mjs与两条持久化 smoke:保存后只读等待 IndexedDB 精确文件记录提交,再刷新检查 UI,替换固定 1.5 秒等待和内存文件判据;不代应用打开数据库、调用syncfs或关闭其连接。本地验证(Linux arm64,.NET SDK 10.0.302 / Uno 6.7.22):
共 4948 项测试通过、6 项跳过。新增测试覆盖真实 stdout/stderr 管道、语言资源、传输到 UI 错误通路、表单和取消/重连竞态;多项先确认旧代码失败,其中跨会话 ID 复用的表单/权限/读文件 3 条均已做修复移除→失败→恢复→通过。浏览器直接服务本工作树
SalmonEgg/SalmonEgg/bin/Release/net10.0-browserwasm/wwwroot,使用 Playwright 1.59.1 / Chromium 1217,不使用旧安装或开发服务器缓存。WASM 保存等待的反向验证:临时把真实
FS.syncfs(false)延迟 8 秒,旧脚本在界面已退出编辑、内存 YAML 已含新目录但 IndexedDB 尚未提交时刷新,复现目录丢失;新脚本等待数据库提交后,同一场景刷新验证通过。临时延迟仅位于外部验证夹具,未进入产品或正式 smoke。此问题可在慢存储下确定性复现;原 CI 日志缺少存储快照,不能据其单独排除其它同症状原因。边界:生产仍使用稳定 ACP v1,GUI 仅声明 form 能力,未新增 URL 授权界面。Windows MSIX 真安装和 macOS 授权弹窗未在本机验证;POSIX 命令夹具在 Windows 明确跳过。Uno WASM 再次显示表单时存在提示 TextBlock 未进入语义树的问题(画面可见),此次 smoke 用本轮唯一错误说明及原生表单/按钮节点验证生命周期,不代表完整无障碍验收。WASM 构建仍有 3 条既有 Uno0001 警告。
Refs #146, #164