@dsh-enhanced/assistant-delivery 0.1.66 → 0.1.68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -45,6 +45,8 @@ Host-only `routeWorkItemReport({ sourceId, workspace, originBindingId, idempoten
45
45
 
46
46
  `readOwnerForegroundToolInput` 使用同一真实当前调用证明,按 UTF-8 字节分页读取已经持久保存的人类输入,并返回实际记录的供应商冻结状态。每页最多 8192 字节;sourceDigest 绑定 task、原 envelope、全文和 model state,不随调用 ID、模型工具参数或页窗口变化。缺失/不一致 supplier 由执行消费者拒绝。它不接受任意 Inbox、来源或路径选择器,不读取模型生成的替代正文,不新建任务、发送消息或授予执行权限;调用前后 owner/native-call 变化会使读取失效。Delivery 当前 schema 为 31。
47
47
 
48
+ Host-only `inspectOwnerForegroundToolCallForAgent(agent, { callId, toolName, argumentsJson })` 与 `readOwnerForegroundToolInputForAgent(agent, { callId, toolName, argumentsJson, offset?, maxBytes? })` 是上述两个 route-scoped 证明的 agent 作用域入口。调用方不得自带 route id:Delivery 对每个已配置 owner route 调 `validateOwnerAgentForRoute`,仅当恰好 1 条 route 通过当前身份复核时才委托给 `inspectOwnerForegroundToolCall` / `readOwnerForegroundToolInput`;0 条(匿名、未配置、撤权、binding 轮换)或多条(owner 授权歧义)一律返回 undefined,失败关闭。PTC 子调用、Host 直接调用、重复/已结算调用和参数不符仍按原有证明规则无回执,因此在前台模型调用中经由 PTC 发起的消费者一律得不到证明。两个入口只读、不授权、不证明任务成功,也不新增数据库迁移。
49
+
48
50
 
49
51
  Host-only `inspectOwnerRequestedChange(execution, { sourceId })` 限定当前认证 owner 主 Agent 的未结 `memory_manage` 或 `wiki_upsert` 原生调用。它复核已认领的原 Inbox、当前 turn、实际工具名与参数(最多 64 KiB)、owner lineage 和 binding 代次,返回 `prepareAgentApproval` 的精确 route、Inbox 原始正文及只含身份与摘要的 SHA256 receipt。空正文、附件单独输入、PTC、历史或已结算调用均无证明。正文可能包含引用文字;哪些内容构成 owner 指令仍须由 Policy 隔离审查。原生 Web 输入在派发时登记同一前台执行记录并在 drain 时结算,失败或取消不留待结记录。该只读接口不要求 RSI `ownerRoutes` 配置、不注册 Agent 工具,也不授权写入。
50
52
 
@@ -81,6 +83,9 @@ Host-only 工程来源使用独立 `assistant-delivery/work-item-engineering-con
81
83
  | `toolApprovalTtlMs` | `300000` | 当前 open turn 的即时工具审批有效期;范围 1 秒至 5 分钟 |
82
84
  | `toolApprovalPreparationTimeoutMs` | `10000` | 卡片前持久化准备上限;范围 100–30000 毫秒,且不超过即时审批总有效期;超时不出卡、不执行 |
83
85
  | `ownerReportRouting.orderAcrossLanes` | `false` | 仅在 `linkedFallback` 报告路由已启用时有实际意义:同一工作项仍有未结算的早期报告时,新报告沿用该报告的 origin 或同一合格别名,由既有 per-lane claim 顺序按 revision 先后发送;保序限于同一 lane(typed 与普通 background 分开),origin 已被 `/new` 轮换时不粘滞 origin;sticky 去向不可用时回退普通路由,不阻塞投递 |
86
+ | `naturalFeedback.coverage` | `false` | 可选:启用加宽的自然结果解析(同义/多语言、结果后允许附带原因或证据)。关闭时行为与旧版完全一致:前台仍只按旧版短语解析(含“还是不行,<原因>”形式),后台报告反馈仍只接受旧版整句白名单。开启后问句、假设/条件、引号内文本、否定引用(“并没有解决”)、矛盾陈述、含糊情绪与撤回命令仍不产生结果证据 |
87
+ | `naturalFeedback.mixedIntent` | `false` | 可选,依赖 `naturalFeedback.coverage`:同一条认证主人的 WorkItems 报告回复同时含结果判断与明确续办指令时,拆成两件各自鉴权/幂等/目标绑定的决定——先记 canonical 结果,再按既有续办队列入队;任一侧未获授权时只做允许的一件并在 Host 日志记录原因。关闭时不拆分,行为与旧版一致 |
88
+ | `peerAgents` | `[]` | 可选、默认空的精确 peer bot 白名单(channel/account/tenant/user)。仅当入站 envelope 带 `senderIsBot=true` 且完整元组匹配时,才把该 bot 激活为当前 owner 的 linked principal 并进入它自己的会话;它保留独立 Policy subject,不继承 owner 的工具、记忆、WorkItem 反馈或续办通道。未列入的 bot 仍是 `unauthorized-principal` |
84
89
  | `ownerRoutes` | `[]` | Host-owned 稳定 owner 路由;每项精确固定 id、conversation、principal、绝对 workspace、preset、policyRef 和 minimumGeneration |
85
90
 
86
91
  所有可变部署值都经过 Schemastery 校验。每个 binding 会持久固定 workspace 与已解析的 preset id;有 roster 时,fresh create 和 cold resume 都在 Agent 发布前挂载该 preset,不能把 session header 中的 `agentPreset` 当成已经完成组合。fresh create 的新 workspace 使用 `0700` 请求模式,已有目录的权限不会被改写;cold resume 只验证持久 workspace 仍是目录,不会在仓库被删除或网络盘掉线时悄悄创建一个空目录。SQLite 使用 `WAL`、`synchronous=FULL`、foreign keys、busy timeout 和 forward-only schema;私有目录/数据库权限分别收窄为 `0700` / `0600`,未来 schema 会拒绝打开。
@@ -279,6 +284,8 @@ Goals 的单次计划恢复使用单独的 Host capability。`goalWakeSettlement
279
284
 
280
285
  普通前台任务也支持自然反馈:同一 owner 直接回复原任务结果,说“问题解决了”“还是不行,保存报错”或“撤回刚才的任务反馈”,Host 会记录明确判断,原文仍交给 Agent 正常续答。已有判断会自动按当前版本更正,无需先查询版本。只有明确、可确定解析的表述才记录;感谢、疑问、假设、引用、附件和没有精确回复目标的文字仍按普通聊天处理。该入口不覆盖 Automation、whole-goal 或原生 Web 结果;这些结果继续使用原有入口。
281
286
 
287
+ 可选配置 `naturalFeedback.coverage`(默认关闭)把同一个解析器扩展到明确的结果同义族:中文“已解决/问题已修复/修好了/恢复正常了/现在可以正常用了/现在没问题了/可以了”与“不行/仍然不行/还是失败/没有修复/返回值仍然是空的/仍有报错”等,英文 `fixed` / `resolved` / `works now` / `not fixed` / `still broken` / `still empty` 等,并允许结果后附带原因或证据(如“现在可以正常用了,谢谢”“返回值仍然是空的,请检查分页”)。结果判断仍必须是整条消息开头的直接断言;附带部分只是不可信上下文,不进入证据等级、版本、预算或 Growth 采用判定。问句、假设/条件、引号内文本、否定引用(“并没有解决”)、与结果相反的矛盾断言、单独的情绪(“谢谢”“太好了”“还行”)以及撤回命令仍然不产生结果证据。关闭该开关时前台行为与旧版完全一致;该开关不改变 `/feedback` 显式命令、Automation/whole-goal 反馈或 Evaluation 的任何既有入口。
288
+
282
289
  自然反馈使用 Delivery schema 24 的持久日志,绑定原始 Inbox、目标 Outbox、owner、入站顺序和一次冻结的修订参数。Evaluation 暂不可用时,普通聊天继续,日志等待后续补记;恢复只重试反馈记录,不重新运行用户的 Agent 请求。若旁路反馈日志本身未能持久化,Host 记诊断并继续普通聊天,不声称该条反馈已保存;普通派发仍须通过自身授权与持久化检查。版本冲突不自动改用新版本重试;明显早于当前反馈或无法确定顺序的相反判断不会覆盖当前结果。自然纠正原因可随精确 canonical 修订交给 Growth,最多 4096 字,作为不可信任务材料,不授予任何新权限。
283
290
 
284
291
  `/feedback` 的完整固定语法如下;不接受附件或额外自由文本,命令本身不进入模型:
@@ -345,15 +352,15 @@ Profile 还必须为当前 owner principal 添加精确授权,例如:`subjec
345
352
 
346
353
  卡片提交后,Delivery 会再次核对 active binding、精确 principal/chat、原始 provider message id 和 Policy,并用实时 `resolveModelInfo()` 验证 provider/model 及该模型支持的 effort;通过后把三项选择按 canonical conversation 持久化到 Delivery SQLite。渠道可以等待该 durable settlement:同实例由完成通知即时唤醒,共享数据库的另一实例完成时由有界轮询感知,从而把原卡更新成不可交互的最终结果。选择从下一条普通消息生效,保留当前 session 上下文,跨 `/new` 和 Host 重启仍有效。卡片可选择“默认(由模型决定)”;`/model use` 保留为无卡片渠道和排错时的文字后备,`/model reset` 删除会话覆盖并恢复 `agentProvider` / `agentModel`。模型目录按宿主约定是建议性的,最终调用是否成功仍由对应 adapter 和账号认证决定。若某个已持久化的显式 effort 在下一条普通消息前被 DSH 核心判为不支持,Delivery 会在任何 prompt 或 durable dispatch 标记之前,以 version CAS 仅清除该 effort、重新预检同一 provider/model 的默认档位;CAS 冲突会重试而不会覆盖更晚的 `/model` 选择。模型不会被静默替换,也不会重放或重复计费。
347
354
 
348
- `/permissions`(别名 `/permission`)只允许当前 active binding 的精确 owner 使用,命令本身不会进入 Agent 或触发 LLM。支持 typed `permission-picker` 的私聊渠道会显示“请求批准(ask)/帮我批准(auto)/完全访问权限(full)”三档卡片并标出当前档位;不支持卡片或渲染失败时自动退回含同等信息的文字命令。`ask` 使用 `workspace-write + ask + user`;当前 Host 的固定 `auto` 使用 `danger-full-access + ask + auto-review`,不会被强制折叠为 `workspace-write`。Session 格式 4 的旧动态 `workspace-write + ask` Auto 组合不满足 Policy 的 Auto 一致性检查,切换失败时持久回退 ask。`full` 使用 `danger-full-access + never + none`,可访问网络及任意文件;卡片按钮带原生风险确认,文字入口则由 `/permission full` 显示橙色警告,必须再次发送 `/permission full confirm` 才切换。
355
+ `/permissions`(别名 `/permission`)只允许当前 active binding 的精确 owner 使用,命令本身不进入 Agent 或触发 LLM。私聊权限卡片提供“请求批准(ask)/帮我批准(auto)/完全访问权限(full)”。助手的 `auto` 使用 `workspace-write + ask` 并持久写入项目专属 reviewer 事件,既不选择也不注册 Harness 保留的原生 `auto`;两套功能可共存。切换仍核验身份、预算和状态指纹,失败时持久回退 ask。`full` 使用 `danger-full-access + never + none`;卡片需要风险确认,文字入口需再次发送 `/permission full confirm`。
349
356
 
350
357
  权限卡片作为受限 Outbox intent 持久化,并用独立 HMAC 域绑定原始 route、精确 owner、binding version、session、权限状态指纹、Policy 紧急停止版本、目标档位和有效期。点击时还必须匹配原卡的 provider message id,并重新核对 active owner/binding、DM、Policy 与 session;转发、错人、跨 chat、篡改、过期、`/new` 后的旧卡,以及权限状态或紧急停止版本变化后的旧卡都会明确提示失效。最终提交在权限 mutation 前、reviewer 等待后和 session flush 后重复核对紧急停止版本,因此紧急停止开→关的 ABA 也只会触发 ask 补偿,不会完成旧卡提权。同一张卡的第一次选择进入原 binding 的 durable Inbox 串行队列;点击 Toast 只表示“已受理”,真正切换成功会另发持久回复。平台重投同一选择幂等,相反选择冲突而不会晚到覆盖;需要再次切档时应重新发送 `/permissions`。
351
358
 
352
- 原生 DSH 设置与 Web 权限面板会写 preset、sandbox 和 approval。生产表的 `workspace-write` / `auto` / `danger-full-access` 已由 AssistantPolicy 直接解释为 `user` / `auto-review` / `none`,所以 Web 与 Delivery 可互相切档且后写者获胜,不再为 canonical 三档补 custom reviewer。旧 session 的兼容 reviewer event 仍可读,但不会把 Session 格式 4 的动态 workspace Auto 当作有效授权;非 canonical legacy full 仍经过严格迁移与 flush barrier。
359
+ 原生 DSH 设置与 Web 权限面板写入的最新 preset 会覆盖较早的助手 reviewer 意图。官方 Auto 的工具审查与人工接管由 Harness 负责,不会调用助手模型;再次使用助手 `/permission auto` 会先恢复 workspace 沙箱和 ask,再写显式项目事件。旧项目事件继续可读;未知会话格式失败关闭,非 canonical legacy full 仍经过严格迁移与 flush barrier。
353
360
 
354
361
  旧版本中,这个缺口会产生一个很迷惑的症状:session 看似已经是 native full,但 reviewer 缺失会保守折叠成 `user`,AssistantPolicy 因而把未知/敏感工具送去 `ask-review`;同一 session 的 `approval=never` 又会在渠道审批展示前直接拒绝,上游最终误写成 `"the user rejected tool"`,所以用户既没看到弹窗也没有机会批准。迁移后精确 full 会持久补齐 `reviewer=none`;同时进度适配器会把嵌套 `tool-result.isError=true` 显示为工具失败,而不是继续显示“已完成”。
355
362
 
356
- 档位从 `ctx.permissionPresets.resolve()` 动态匹配:一个或两个 `workspace-write + ask` 候选仍可识别旧版共享或分离的目标,但在 Session 格式 4 上,旧动态 Auto 不会通过 Policy 一致性检查;当前 Host 的固定 `auto` 则以 `danger-full-access + ask` 独立识别。更多同类候选或多个 full 候选会失败关闭;full 候选必须唯一。目标表指纹也进入权限卡状态哈希,防止卡片发出后配置漂移。命令会显式固化 sandbox/approval;canonical 三档写官方 preset,动态/共享目标只在必要时写兼容 reviewer。mutation、flush、controller 或回复失败后会收敛并持久化到 ask;只有确认 ask 已 durable 且终态回复已经进入同一 Outbox,Inbox 才能结束,不会用“持久化结果不确定”冒充终态。
363
+ 助手档位从 `ctx.permissionPresets.resolve()` 的静态 workspace/full 候选匹配,明确排除原生保留名称 `auto`。一个或两个 `workspace-write + ask` 候选支持旧版共享或分离的助手目标;实际自动审批必须有显式项目 reviewer 事件。原生 Auto 是否启用不改变助手目标,但仍纳入权限表指纹,以拒绝过时的权限卡片。
357
364
 
358
365
  权限命令在第一次 reviewer/policy/sandbox mutation 前还必须先取得 Inbox 的 durable dispatch/recovery marker;每个异步边界后都复核 abort 与租约。若进程退出、续租失败、flush 未确认、依赖尚未就绪或回复入队失败,该 marker 会绕过普通 `maxAttempts`,在原 binding 串行 lane 中继续恢复,直到确认已持久化目标并补发成功终态,或安全收敛到 ask 后补发失败/取消终态。`/stop` 和 `/new` 会在 abort 前把正在执行的权限命令原子改标为 cancelled recovery;旧命令不会以 `processor-ambiguous` 终止,也不会从原始文本重新制造一次可能已取消的 full 提权。
359
366
 
@@ -514,6 +521,12 @@ Host 编排可从 `@dsh-enhanced/assistant-delivery/types` 读取无服务初始
514
521
 
515
522
  原生 Web 使用本地适配器将通知标为可读取,并由 `assistant-web-owner` 的会话输入区展示。通知不写入 Session 历史,不触发模型,也不表示目标已完成;`accepted` 不表示用户已阅读。读取沿用固定 Web 主人能力,并再次核验上述边界;不另设消息 `read` Policy。其他渠道复用已有适配器。对于已发生但结果未知的外部发送,重启恢复仅通过适配器查询结果;查到过去已发送不表示再次发送,也不会为重发授予权限。
516
523
 
524
+ ### 主人通知回复消费者(opt-in,默认无注册)
525
+
526
+ `registerOwnerNotificationReply` 允许 owner 通知来源的当前 Cordis 槽位注册一个回复消费者。Delivery 只在同时满足以下条件时把一条认证入站**纯文本**回复交给它:`replyToProviderMessageId` 唯一解析到一条 `accepted`/`delivered`/`read` 的 owner 通知(schema 的唯一索引保证;查询仍按最多两行拒绝歧义);通知元数据带 `dsh.native-notice`、规范来源和 `withdrawalAuthority`,与该消费者注册的 `sourceId` 及幂等键前缀匹配;回复来自当前 active binding、同一会话/主人,且通知入队时冻结的 owner 记录 id/version 仍是当前 owner 行;无附件且 UTF-8 文本不超过 256 字节;外部 `answer-attention-question` Policy 决策为 `allow`。不匹配、Policy 拒绝或消费者返回 `ignored` 时走普通入站路径;`applied` 时 Inbox 标为 `processed`,不再交给 Agent;`transient`(含消费者抛错)保持 `received`/`authorized`,等待 provider 重投或同会话下一条消息触发的 pending 恢复重试。恢复中遇到 `transient` 会停止本轮恢复,较旧的待处理回复仍留在队首。
527
+
528
+ 消费者按 `(authority, sourceId)` 至多一个,注册对象必须由 `authority` 槽位当前服务通过 `ownsOwnerNotificationReply` 亲自担保;槽位换服务后新的担保注册接管,`unregister` 后旧注册立即不再匹配。该接口只读取认证回复并更新 Inbox 状态,不新增发送权限、不调用网络或模型,也不保存回复正文到新表;正文仅在本次回调中交给消费者。已撤回(`dead`)、未发送或 unknown 状态的通知不能被回复匹配,这类回复按普通消息处理;附件、命令、超过 256 字节或无法唯一解析的引用同样不匹配。Evaluation 的 WP22 切片 5 是本接口的当前唯一使用方(精确 `authorize-once`/`decline` 语义见其 README)。
529
+
517
530
 
518
531
  ## WorkItems 报告回复交接
519
532
 
@@ -530,6 +543,8 @@ schema 30 为显式启用 `ownerReportFeedback` 的 WorkItems 保存独占反馈
530
543
 
531
544
  生产终态、静止及预算结算证明尚未就绪时,反馈持久等待,不伪造成功、不派新 worker。结果是主人证言,不是独立 verifier 验收;更正和撤回使用冻结版本 CAS,重投、冷恢复或丢失 ACK 不增加票数。`/stop`、`/new`、`/clear` 持久取消较早未完成意图。实际状态通过既有 background send 权限发送稳定 ACK;没有票的 `status` 明确返回暂无反馈,不造 revision。发送拒绝或 unknown 不回滚已记录结果、不盲目重发。
532
545
 
546
+ 可选 `naturalFeedback.coverage`(默认关闭)对该入口同样生效:报告回复可以是同义/多语言结果并附带原因(“现在可以正常用了,谢谢”“返回值仍然是空的,请检查分页”),后台仍只做确定性分类,不把任意文本当结果、不调用模型。可选 `naturalFeedback.mixedIntent`(默认关闭,依赖 `coverage`)把一条混合回复拆成两件事:先按独立的 `feedback-work-items` 权限形成 canonical 结果证据(既有 feedback intent → Evaluation 通道),再按独立的 `continue-work-items-from-reply` 权限把同一原文放进既有续办队列。两件事沿用同一 Inbox 的确定性幂等键,并各自重验当前 owner/binding/report/Policy 与目标绑定;两件都允许时在同一个 Delivery 事务内原子写入(结果行拥有唯一 Inbox handoff,续办行复用已处理 Inbox),任一侧未授权或写入不可用时只做允许的一件,并通过 Host 日志记录 `continuation-not-admitted` / `feedback-not-admitted` / `neither-lane-admitted`。该拆分不新增 schema、无新 Loop/timer、无模型调用;关闭时“还是不行,继续修复”仍沿用旧行为(只进续办队列、不写 canonical 结果),而纯结果回复(“问题解决了”“还是不行”)不会因为该开关变成一次执行。
547
+
533
548
  Host-only `inspectOwnerWorkItemLearningTask` 使用独立 `assistant-delivery/owner-work-item-learning/v1` 协议,重验当前主人、报告生产者、全量 WorkItems proof 与 canonical owner 修订。返回去正文的 `proofIdentity`,其 proofDigest 绑定内部原文;`presentation` 的 brief/report/feedback 独立限长与常见凭据过滤,presentationDigest 不冒充原文摘要。sourceDigest 绑定持久来源及修订,不绑定读取时的新 Session 代次;同主人 `/new` 后仍可召回已记录反馈,撤回、更正、换主人或失效证明会拒绝旧来源。它不冒充前台来源,不授予学习、采用或修复执行权限;Growth 后续消费仍是另一项能力。
534
549
 
535
550
  ## 注意力合同(WP19 第 1 阶段:审计)
@@ -568,7 +583,14 @@ schema 31 新增只追加的 `delivery_attention_audit`,按 outbox id 去重
568
583
 
569
584
  ### 通知结果事实(WP22 切片 1,只读)
570
585
 
571
- `inspectNotificationOutcomeFacts({ afterSequence?, limit? })` 按审计序号分页(默认 100、最多 500),`inspectNotificationOutcomeFacts({ outboxIds })` 按 id 精确查(最多 500,不可与分页参数混用,未知或未审计 id 省略)。每条事实只含审计判定、binding 的 workspace/preset、传输状态(首次 accepted 时间取 attempt,其次 receipt,最后 `updated_at`;delivered/read 取 receipt,否则状态回退)、以 `replyToProviderMessageId` 精确引用该消息的入站回复首次时间与条数(同一会话、同一 principal,含新会话命令轮换后的新 binding),以及最新已记录的工作项反馈,或无错误的 owner 目标命令(无命令时取旧版已验证任务回执作为版本 1,与 Delivery 自身目标状态一致)。回复与工作项反馈的 JSON 查找每次调用整批一次。不返回消息或回复正文,不写库,不改 schema。
586
+ `inspectNotificationOutcomeFacts({ afterSequence?, limit? })` 按审计序号分页(默认 100、最多 500),`inspectNotificationOutcomeFacts({ outboxIds })` 按 id 精确查(最多 500,不可与分页参数混用,未知或未审计 id 省略)。每条事实只含审计判定、binding 的 workspace/preset、传输状态(首次 accepted 时间取 attempt,其次 receipt,最后 `updated_at`;delivered/read 取 receipt,否则状态回退)、以 `replyToProviderMessageId` 精确引用该消息的入站回复首次时间与条数(同一会话、同一 principal,含新会话命令轮换后的新 binding),以及最新已记录的工作项反馈,或无错误的 owner 目标命令(无命令时取旧版已验证任务回执作为版本 1,与 Delivery 自身目标状态一致)。回复与工作项反馈的 JSON 查找每次调用整批一次。不返回消息或回复正文,不写库,不改 schema。E3a 起事实可带可选 `readReceipts: 'none' | 'best-effort' | 'complete'`,取自已注册 adapter 的 capabilities;只有 adapter 显式声明 `complete` 时 Evaluation 才可能区分 missed,未声明/旧 adapter 保持缺省,旧事实与 digest 不变。
587
+
588
+ ### 已知边界(E3a read 回执)
589
+
590
+ - **deliveredAt 口径(重要)**:Lark adapter 不声明、不发送 delivered。当 outbox 因 read receipt 单调升到 `read` 时,fact 里的 `transport.deliveredAt` 是 Delivery 既有“read 蕴含 delivered”的本地兼容回退(取 `outbox.updated_at`),**不是通道 delivered 事实**,也不是 read 回执的时间;read 事实只看 `readAt`。
591
+ - **迟到 delivered 不回退**:Receipt 状态按 accepted < delivered < read 单调,read 之后到达的 delivered receipt 只保留 receipt 记录,不会把 outbox 状态或 fact 已记录的时间降级。
592
+ - **失败可观测性**:adapter 对未知 provider id/重复 read_time 的 receipt 错误静默 catch(不让单条事实中断 WS);本轮不带 health/debug 计数,排障要靠 Delivery 的 receipt-mismatch/idempotency 错误与现有日志,后续切片再补可观测性。
593
+ - **read_time 类型**:E3a 只接受飞书文档的字符串毫秒;真实 SDK/网关是否会返回 number 字段由 E3b 联调验证,未确认前按失败关闭处理。
572
594
 
573
595
 
574
596
  ### 进度来源与进度审计(WP19 第 2c 阶段)
@@ -1 +1 @@
1
- {"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-runtime.d.ts","sourceRoot":"","sources":["../src/agent-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,gBAAgB;QACxB,oBAAoB,EAAE;YAAE,IAAI,EAAE,oBAAoB,CAAC;YAAC,IAAI,CAAC,EAAE,QAAQ,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KACxF;CACF;AAKD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAEL,KAAK,KAAK,EAGX,MAAM,wBAAwB,CAAA;AAC/B,OAAO,KAAK,EAAE,mBAAmB,IAAI,YAAY,EAAE,MAAM,wCAAwC,CAAA;AAcjG,OAAO,EAAiD,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAA;AAK3G,OAAO,EAKL,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAA;AAEvC,OAAO,KAAK,EACV,qBAAqB,EACrB,oBAAoB,EAEpB,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,kBAAkB,CAAA;AAEzB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AACvD,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAA;AAOnF,OAAO,KAAK,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAE9G,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAMnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAA;AAC1D,OAAO,EAA4D,KAAK,aAAa,EAAmB,MAAM,sBAAsB,CAAA;AACpI,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAErE,OAAO,EAA6B,KAAK,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAWtG,OAAO,KAAK,EAAE,qBAAqB,EAAyB,MAAM,4BAA4B,CAAA;AAC9F,OAAO,EAA8B,KAAK,qBAAqB,EAAE,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AAC1H,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EACV,mBAAmB,EACnB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,6BAA6B,EAC7B,8BAA8B,EAC9B,uBAAuB,EACvB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EAEvB,MAAM,YAAY,CAAA;AAEnB,OAAO,QAAQ,sBAAsB,CAAC;IACpC,UAAU,gBAAgB;QACxB,QAAQ,EAAE;YACR,IAAI,EAAE,UAAU,CAAA;YAChB,OAAO,EAAE,MAAM,CAAA;YACf,OAAO,EAAE,MAAM,CAAA;YACf,OAAO,EAAE,MAAM,CAAA;YACf,KAAK,EAAE,WAAW,CAAA;SACnB,CAAA;KACF;CACF;AAED,UAAU,yBAAyB;IACjC,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,MAAM,EAAE,aAAa,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAC3E,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;QAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QACnF,sBAAsB,CAAC,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;QACvE,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;IAC1D,aAAa,EAAE,qBAAqB,CAAA;IACpC,gBAAgB,EAAE,MAAM,CAAA;IACxB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,IAAI,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,SAAS,CAAC,GAAG,SAAS,CAAA;IACtE,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,uBAAuB,GAAG,SAAS,CAAA;IAC1E,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,EAAE,MAAM,CAAA;IACvB,wBAAwB,EAAE,MAAM,CAAA;IAChC,kFAAkF;IAClF,aAAa,EAAE,MAAM,CAAA;IACrB,8DAA8D;IAC9D,yBAAyB,EAAE,MAAM,CAAA;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,+BAA+B,CAC7B,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,gBAAgB,GAAG,SAAS,CAAA;IAC/B,gCAAgC,CAC9B,MAAM,EAAE,gBAAgB,EACxB,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GACpG,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,kCAAkC,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACxI,4BAA4B,CAAC,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,MAAM,GAAG,SAAS,CAAA;IAC7H,uCAAuC,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAA;IACpI,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,gCAAgC,CAAC,CAAA;KAAE,GAAG,IAAI,CAAA;IAChL,qBAAqB,EAAE,MAAM,CAAA;IAC7B,iBAAiB,CAAC,YAAY,EAAE,eAAe,GAAG,0BAA0B,GAAG,SAAS,CAAA;IACxF,0FAA0F;IAC1F,8BAA8B,CAC5B,YAAY,EAAE,eAAe,EAC7B,QAAQ,EAAE,0BAA0B,GACnC;QAAE,OAAO,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,0BAA0B,CAAA;KAAE,CAAA;IAChF,iBAAiB,EAAE,IAAI,CAAC,wBAAwB,EAAE,aAAa,CAAC,CAAA;IAChE,mBAAmB,CACjB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,OAAO,CAAA;IACV,sBAAsB,CACpB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,OAAO,CAAA;IACV,yBAAyB,CACvB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,OAAO,CAAA;IACV,gCAAgC,CAC9B,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EACnC,UAAU,EAAE,SAAS,QAAQ,CAAC,uBAAuB,CAAC,EAAE,GACvD;QACD,UAAU,EAAE,MAAM,CAAA;QAClB,gBAAgB,EAAE,QAAQ,CAAC,OAAO,YAAY,EAAE,oBAAoB,CAAC,CAAA;QACrE,eAAe,EAAE,QAAQ,CAAC,OAAO,YAAY,EAAE,uBAAuB,CAAC,CAAA;QACvE,cAAc,CAAC,EAAE,QAAQ,CAAC;YAAE,aAAa,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;KAC7E,GAAG,SAAS,CAAA;IACb,0BAA0B,CACxB,MAAM,EAAE,SAAS,QAAQ,CAAC,uBAAuB,CAAC,EAAE,GACnD,OAAO,CAAC,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC,CAAA;IAClD,4BAA4B,CAC1B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EACnC,KAAK,EAAE,iBAAiB,GACvB,UAAU,GAAG,aAAa,GAAG,SAAS,GACrC,OAAO,CAAC,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC,CAAA;IACnD,yBAAyB,CACvB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EACnC,eAAe,EAAE,gBAAgB,GAAG,OAAO,uBAAuB,EAAE,uBAAuB,GAC1F,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAClC,gCAAgC,CAC9B,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,uBAAuB,CACrB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EACnC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE;QAAE,IAAI,EAAE,SAAS,GAAG,MAAM,CAAA;KAAE,CAAC,GAC9D,OAAO,CAAC,UAAU,GAAG,gBAAgB,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC,CAAA;IAClF,uBAAuB,CACrB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EACnC,MAAM,EAAE,6BAA6B,EACrC,aAAa,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,WAAW,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAA;IAC9F,iGAAiG;IACjG,wBAAwB,CACtB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,GAClC,OAAO,CAAA;IACV,iBAAiB,CAAC,YAAY,EAAE,eAAe,GAAG,MAAM,CAAA;IACxD,kBAAkB,CAAC,KAAK,EAAE;QACxB,YAAY,EAAE,eAAe,CAAA;QAC7B,aAAa,EAAE,MAAM,CAAA;QACrB,KAAK,CAAC,EAAE,aAAa,CAAA;KACtB,GAAG;QAAE,OAAO,EAAE,KAAK,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,0BAA0B,CAAA;KAAE,CAAA;IAClF,gBAAgB,EAAE,MAAM,CAAA;IACxB,QAAQ,CACN,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,sBAAsB;IAC9B,6FAA6F;IAC7F,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAAA;IAChB,YAAY,CACV,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,iBAAiB,EACxB,cAAc,CAAC,EAAE,MAAM,GACtB,IAAI,CAAA;CACR;AAED,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,mBAAmB,GAAG,OAAO,CAAA;IACpE,WAAW,CAAC,EAAE,iBAAiB,CAAA;IAC/B,gBAAgB,CAAC,EAAE,sBAAsB,CAAA;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAwVD,8EAA8E;AAC9E,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC,CAO3I;AA6BD;;;;;;;;;GASG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,YAAY,GAAG,sBAAsB,GAAG,SAAS,CA+DxG;AAgND,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,EAAE,gBAAgB,SAAK,GAAG,MAAM,CAalG;AAED,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAU5G;AA2CD,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAUvG;AAsgBD,qBAAa,kBAAmB,YAAW,sBAAsB;IAwB7D,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAzB1B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmC;IAE/D,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAExC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAOtE,aAAa,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;IAO9J,QAAQ,CAAC,eAAe,EAAG,UAAU,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0C;IAChF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuB;gBAGlC,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,sBAAsB,EAC9B,OAAO,EAAE,yBAAyB;YAGvC,WAAW;IAMnB,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAyBrG,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,iBAAiB;IAMzB;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;YAmQvB,yBAAyB;IAqFvC,4EAA4E;IAC5E,OAAO,CAAC,YAAY;IA+EpB,iGAAiG;YACnF,gBAAgB;IAkC9B;;;;OAIG;YACW,uBAAuB;YAqFvB,UAAU;IA8ExB;;;;;OAKG;YACW,qBAAqB;YAiCrB,qCAAqC;YAWrC,oBAAoB;IAmb5B,aAAa,CAAC,KAAK,EAAE;QACzB,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAA;QACnC,UAAU,EAAE,MAAM,CAAA;QAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC,mBAAmB,CAAC,CAAA;QACxC,MAAM,EAAE,WAAW,CAAA;KACpB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IA2E7F;;;;;OAKG;IACG,mBAAmB,CACvB,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,KAAK,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACrC,OAAO,CAAC,sBAAsB,CAAC;IAsIlC,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,0BAA0B;IAqGlC,OAAO,CAAC,4BAA4B;IA0D9B,OAAO,CACX,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EACnC,MAAM,EAAE,WAAW,EACnB,OAAO,EAAE,QAAQ,CAAC,qBAAqB,CAAC,GACvC,OAAO,CAAC,oBAAoB,CAAC;IAmDhC,OAAO,CAAC,mBAAmB;YAiBb,kBAAkB;YA0JlB,kBAAkB;YAwDlB,kBAAkB;IAuIhC,OAAO,CAAC,WAAW;YAoBL,iBAAiB;IA4LzB,OAAO,CACX,OAAO,EAAE,QAAQ,CAAC,mBAAmB,CAAC,EACtC,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAAC,EACnC,WAAW,EAAE,WAAW,EACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC,sBAAsB,CAAC,EAC3C,eAAe,CAAC,EAAE,sBAAsB,EACxC,mBAAmB,CAAC,EAAE,aAAa,GAClC,OAAO,CAAC,oBAAoB,CAAC;YAkFlB,iBAAiB;CA2rBhC"}
@@ -464,23 +464,23 @@ function permissionPickerGuard(envelope) {
464
464
  function permissionPresetTargets(service) {
465
465
  const workspace = [];
466
466
  const full = [];
467
- const nativeAuto = [];
468
467
  const table = [];
469
468
  for (const name of service.names) {
470
469
  const spec = service.resolve(name);
471
470
  table.push([name, spec.sandbox, spec.approval]);
471
+ // Keep the reserved Harness preset in the picker fence, but never select it.
472
+ if (name === 'auto')
473
+ continue;
472
474
  if (spec.sandbox === 'workspace-write' && spec.approval === 'ask')
473
475
  workspace.push(name);
474
476
  if (spec.sandbox === 'danger-full-access' && spec.approval === 'never')
475
477
  full.push(name);
476
- if (name === 'auto' && spec.sandbox === 'danger-full-access' && spec.approval === 'ask')
477
- nativeAuto.push(name);
478
478
  }
479
- if (workspace.length > 2 || full.length > 1 || nativeAuto.length > 1) {
479
+ if (workspace.length > 2 || full.length > 1) {
480
480
  throw new Error('ambiguous permission preset table');
481
481
  }
482
482
  const ask = workspace[0];
483
- const auto = nativeAuto[0] ?? workspace[1] ?? ask;
483
+ const auto = workspace[1] ?? ask;
484
484
  return {
485
485
  ...(ask === undefined ? {} : { ask, auto: auto }),
486
486
  ...(full[0] === undefined ? {} : { full: full[0] }),
@@ -515,6 +515,8 @@ async function appendApprovalReviewer(session, reviewer) {
515
515
  }
516
516
  function currentPermissionLevel(service, targets, session) {
517
517
  const events = session.snapshotEvents();
518
+ if (events.findLast(event => event.type === 'permission/preset')?.data.preset === 'auto')
519
+ return 'custom';
518
520
  const current = service.current(session);
519
521
  const reviewer = approvalReviewerOf(events, session.header.version);
520
522
  if (current === targets.full) {
@@ -541,14 +543,19 @@ function currentPermissionLevel(service, targets, session) {
541
543
  function canonicalPresetReviewer(name) {
542
544
  if (name === 'workspace-write')
543
545
  return 'user';
544
- if (name === 'auto')
545
- return 'auto-review';
546
546
  if (name === 'danger-full-access')
547
547
  return 'none';
548
548
  return undefined;
549
549
  }
550
550
  async function ensurePermissionReviewer(session, preset, reviewer) {
551
- if (approvalReviewerOf(session.snapshotEvents(), session.header.version) === reviewer)
551
+ let events = session.snapshotEvents();
552
+ if (events.findLast(event => event.type === 'permission/preset')?.data.preset === 'auto') {
553
+ // Native set can be a no-op when the knobs already match the target.
554
+ // Supersede the stale reserved selector before opting into project review.
555
+ session.append('permission/preset', { preset });
556
+ events = session.snapshotEvents();
557
+ }
558
+ if (approvalReviewerOf(events, session.header.version) === reviewer)
552
559
  return;
553
560
  if (canonicalPresetReviewer(preset) === reviewer) {
554
561
  // PermissionPresetService deliberately makes a net-zero selection a no-op.
@@ -2272,7 +2279,7 @@ export class DshDeliveryRuntime {
2272
2279
  permissionPresets.set(session, target);
2273
2280
  // Legacy/seeded sessions may have no explicit knob events even when
2274
2281
  // their effective defaults match this preset. Materialize both facts
2275
- // before enabling either reviewer so Auto uses the Host's fixed bundle.
2282
+ // before changing the project reviewer inside the workspace sandbox.
2276
2283
  ensureSandboxMode(session, permissionPresets.resolve(target).sandbox);
2277
2284
  ensureApprovalPolicy(session, 'ask');
2278
2285
  const reviewer = action.level === 'auto' ? 'auto-review' : 'user';