feat(acp): add consent-driven URL elicitation - #191
Draft
YoungSx wants to merge 10 commits into
Draft
Conversation
Project SDK-owned response and completion state into the existing interaction UI. Enable URL capability only for the WASM external-browser launcher and keep native targets gated pending GUI validation. Discard private WebSocket payload logs, isolate connection-closed callbacks, and add bounded browser isolation probes plus consent and completion regression gates. Refs #154, #146.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This was referenced Sep 9, 2026
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.
Agent 的 URL 输入请求现在由 SDK 保存响应、外部完成和连接结束这三个事实。界面显示目标与完整 URL,用户明确确认后才打开隔离浏览器页面;取消不导航,重开不重复回复,外部完成、会话切换和断连会更新同一个请求状态。
WASM 通过提前加载的模块保持真实 user activation,以 noopener/noreferrer 打开独立上下文。请求视图使用 typed ContentControl/DataTemplate 随当前请求生成,修复第二次输入的语义节点丢失。物理断连有唯一在途任务,退出尚未结束时新握手不能复用同一个传输。
GUI 门禁在输入前等待语义节点真实布局,在下拉框关闭后等待该框的 popup 消失、原生焦点归还且跨帧稳定;保持每次输入只聚焦一次。Playwright 的等待谓词保持同步,跨帧检查单独执行,避免 Promise 被误当作成功条件。本次 helper 修复没有修改生产焦点逻辑。
本 PR 当前只在 WASM 广告 URL 能力。桌面启动器已实现,并配有独立 Linux 真实浏览器门禁;原生平台在完成产品 GUI 验收前继续关闭能力。Refs #154、#146;包含 #186 取消前置,基于 main 4a4e3c5,不关闭总单。
本地验收快照(分支尚有未推送提交,下面不是远端 CI 结论):
2a84bcf2e2f18129e65fb8467aa60955a37567cf:SDK 616/616、零跳过;格式、分析器和 Release 构建零警告、零错误。SalmonEgg.Acp.1.0.1-alpha.0.188.nupkg通过 1.0.0 基线兼容验证,包内只含lib/net10.0,包的 repository commit 与本次源码一致。59e83a47982e34ab570bc29dbdfa173fcaed71a9,版本1.5.2-alpha.0.22+59e83a47982e34ab570bc29dbdfa173fcaed71a9,产物目录SalmonEgg/SalmonEgg/bin/Release/net10.0-browserwasm/wwwroot;其后唯一变化是上面的门禁 helper。该次 WASM 构建零错误,3 条已有 Uno 模板警告。2a84bcf2helper 的正式完整链通过(116.96 秒):会话创建前的 request-scoped 表单取消、typed form/空值阻断、未知必填字段取消、两轮不同完整 URL、取消零导航、原生鼠标确认与键盘重开、单次 accept 且无 content、重开、外部 complete,以及独立上下文和私密 canary 保护。浏览器保留原生 popup 策略。保持 draft,等待公共 permission binding 与 SDK notification ownership 修复传播后,在最终提交上重新运行代码、打包及平台构建门禁。现有 Desktop 产物实际来自
9bec5e9533ff83b66d7f11768f2cb721bd011071,仅作为历史构建证据,须在最终提交重建。产品鼠标确认与重开已另行通过:首次按语义节点定位单击,重开按本轮实际截图定位单击,均无重复点击或键盘兜底。重排后的语义节点坐标与 canvas 不一致,已按精确 Uno 6.7.103 源码记录自动化边界;正式门禁覆盖首次真实鼠标与再次原生键盘,不写入固定坐标。Windows/macOS/移动端产品 GUI、真实第三方 Agent 与生产 bridge 仍待对应环境,CI 条件跳过不视为验收。上述运行已清理自有浏览器、服务和临时 consumer 目录。