@dsh-enhanced/assistant-delivery 0.1.23 → 0.1.30

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.
Files changed (66) hide show
  1. package/README.md +81 -10
  2. package/lib/acceptance.d.ts +46 -0
  3. package/lib/acceptance.d.ts.map +1 -0
  4. package/lib/acceptance.js +2 -0
  5. package/lib/acceptance.js.map +1 -0
  6. package/lib/agent-runtime.d.ts +33 -3
  7. package/lib/agent-runtime.d.ts.map +1 -1
  8. package/lib/agent-runtime.js +835 -62
  9. package/lib/agent-runtime.js.map +1 -1
  10. package/lib/coordinator.d.ts +4 -1
  11. package/lib/coordinator.d.ts.map +1 -1
  12. package/lib/coordinator.js +9 -0
  13. package/lib/coordinator.js.map +1 -1
  14. package/lib/feedback-command.d.ts +21 -1
  15. package/lib/feedback-command.d.ts.map +1 -1
  16. package/lib/feedback-command.js +18 -0
  17. package/lib/feedback-command.js.map +1 -1
  18. package/lib/goal-wake-types.d.ts +93 -0
  19. package/lib/goal-wake-types.d.ts.map +1 -0
  20. package/lib/goal-wake-types.js +70 -0
  21. package/lib/goal-wake-types.js.map +1 -0
  22. package/lib/inbound-images.d.ts.map +1 -1
  23. package/lib/inbound-images.js +11 -9
  24. package/lib/inbound-images.js.map +1 -1
  25. package/lib/index.d.ts +4 -0
  26. package/lib/index.d.ts.map +1 -1
  27. package/lib/index.js +1 -0
  28. package/lib/index.js.map +1 -1
  29. package/lib/native-web-owner.d.ts +78 -0
  30. package/lib/native-web-owner.d.ts.map +1 -0
  31. package/lib/native-web-owner.js +291 -0
  32. package/lib/native-web-owner.js.map +1 -0
  33. package/lib/operator-snapshot.d.ts +80 -0
  34. package/lib/operator-snapshot.d.ts.map +1 -0
  35. package/lib/operator-snapshot.js +935 -0
  36. package/lib/operator-snapshot.js.map +1 -0
  37. package/lib/operator.d.ts +2 -0
  38. package/lib/operator.d.ts.map +1 -1
  39. package/lib/operator.js +10 -0
  40. package/lib/operator.js.map +1 -1
  41. package/lib/service.d.ts +63 -13
  42. package/lib/service.d.ts.map +1 -1
  43. package/lib/service.js +917 -349
  44. package/lib/service.js.map +1 -1
  45. package/lib/session-lease-runtime.d.ts +69 -0
  46. package/lib/session-lease-runtime.d.ts.map +1 -0
  47. package/lib/session-lease-runtime.js +395 -0
  48. package/lib/session-lease-runtime.js.map +1 -0
  49. package/lib/session-lease-types.d.ts +27 -0
  50. package/lib/session-lease-types.d.ts.map +1 -0
  51. package/lib/session-lease-types.js +2 -0
  52. package/lib/session-lease-types.js.map +1 -0
  53. package/lib/sqlite.d.ts +1 -1
  54. package/lib/sqlite.d.ts.map +1 -1
  55. package/lib/sqlite.js +201 -3
  56. package/lib/sqlite.js.map +1 -1
  57. package/lib/store.d.ts +133 -4
  58. package/lib/store.d.ts.map +1 -1
  59. package/lib/store.js +771 -43
  60. package/lib/store.js.map +1 -1
  61. package/lib/types.d.ts +9 -2
  62. package/lib/types.d.ts.map +1 -1
  63. package/lib/types.js.map +1 -1
  64. package/lib/version.d.ts +1 -1
  65. package/lib/version.js +1 -1
  66. package/package.json +61 -44
package/README.md CHANGED
@@ -1,17 +1,19 @@
1
1
  # @dsh-enhanced/assistant-delivery
2
2
 
3
+ 本地安装初始化可使用 `ensurePrincipalLocally({ databasePath, principal })`:只在空库创建 owner,已有相同 active owner 时原样返回;不同身份、linked 或 revoked 均拒绝。它不具有 `pairPrincipalLocally()` 的 owner 交接副作用,适合可重复安装流程;显式交接继续使用原 API。
4
+
3
5
  `assistant-delivery` 是个人助理唯一的、与厂商无关的消息核心。它把外部身份、一次性配对、conversation→DSH session 绑定、持久 Inbox/Outbox、adapter 生命周期、receipt、重试、对账和 dead letter 放在一个可审计边界内;飞书、Telegram 等包只实现协议适配。
4
6
 
5
7
  本包不声明 exactly-once。它保证发送前先持久化 intent;若平台可能已经接收但响应丢失,则保留 `unknown_after_send`,只走 adapter 对账或显式 operator 决策,不盲目重发。
6
8
 
7
9
  ## 兼容性与安装顺序
8
10
 
9
- - DSH / Agent / Agent Presets / LLM / Session:`>=0.1.0-rc.8 <0.2.0`
10
- - `@deepseek-ai/dsh-attachment`:`>=0.1.0-rc.8 <0.2.0`,仅图片入站路径需要的可选 Host service
11
- - `@deepseek-ai/dsh-host-apiproxy`:`>=0.1.0-rc.8 <0.2.0`,可选 Host service。它保持唯一的 `ctx.userQuestions` provider;存在时 Delivery 使用 rc.8 的 `events.mux()` 桥接已绑定渠道会话的问题,缺失时不阻止非 Web profile 启动,只是不提供跨渠道问题交互。
12
- - `@deepseek-ai/dsh-user-questions`:`>=0.1.0-rc.8 <0.2.0`,仅使用其 wire-safe question/answer 类型;provider 仍由 Host ApiProxy 独占。
13
- - `@deepseek-ai/dsh-commands`:`>=0.1.0-rc.8 <0.2.0`,可选 Host command service;按 `0.1.0-rc.8` 命令语法/执行契约只委托安全的原生 `/compact`。`/help`、`/status`、`/session`、`/new`、`/clear`、`/stop`、`/feedback`、`/learning` 及模型/权限控制命令都由 Delivery 自有;其他原生命令即使被宿主发布也不委托、不进入 LLM
14
- - `@deepseek-ai/dsh-permission-presets` / `@deepseek-ai/dsh-sandbox-policy` / `@deepseek-ai/dsh-user-approval`:`>=0.1.0-rc.8 <0.2.0`,权限档位命令使用 preset service,并通过 sandbox/approval 包的 canonical setter 固化执行事实;所需 Host service 缺失时命令 fail closed
11
+ - DSH / Agent / Agent Presets / LLM / Session:`>=0.1.2-rc.1 <0.2.0`
12
+ - `@deepseek-ai/dsh-attachment`:`>=0.1.2-rc.1 <0.2.0`,仅图片入站路径需要的可选 Host service
13
+ - `@deepseek-ai/dsh-user-questions`:`>=0.1.2-rc.1 <0.2.0`。它定义 `ctx.userQuestions.ask()` 和 Agent-scoped `user-questions/request` answerer waterfall;Web Host 通过 Remote Events 在 live root Agent scope 提供 answerer。该 seam 没有可供 Delivery 消费的独立 question request/answer 事件流。
14
+ - `@deepseek-ai/dsh-commands`:`>=0.1.2-rc.1 <0.2.0`,可选 Host command service;按 `0.1.2-rc.1` 命令语法/执行契约只委托安全的原生 `/compact`。`/help`、`/status`、`/session`、`/new`、`/clear`、`/stop`、`/feedback`、`/learning` 及模型/权限控制命令都由 Delivery 自有;其他原生命令即使被宿主发布也不委托、不进入 LLM
15
+ - `@deepseek-ai/dsh-goal`:`>=0.1.2-rc.1 <0.2.0`,可选原生目标服务;启用 `agentGoalContinuationTimeoutMs` 时还须由 Host 挂载同版本 `dsh-goal-round-driver`,仅安装服务不产生自动续跑
16
+ - `@deepseek-ai/dsh-permission-presets` / `@deepseek-ai/dsh-sandbox-policy` / `@deepseek-ai/dsh-user-approval`:`>=0.1.2-rc.1 <0.2.0`,权限档位命令使用 preset service,并通过 sandbox/approval 包的 canonical setter 固化执行事实;所需 Host service 缺失时命令 fail closed
15
17
  - Cordis:`^4.0.1`
16
18
  - `@dsh-enhanced/assistant-policy`:`>=0.1.0 <0.2.0`,硬依赖
17
19
  - Preference Learning 是反向订阅 `subscribePreferenceFeedback()` 的可选下游;Delivery 不声明对它的 peer/runtime 依赖,避免消息核心与学习插件形成双向包依赖
@@ -49,6 +51,7 @@ Patch 通过 `inject: [assistantPolicy]` 固定加载策略依赖;入站 Agent
49
51
  | `agentProvider` / `agentModel` | `deepseek-official` / `deepseek-v4-flash` | 渠道 Agent 的部署默认模型;会话可用 `/model` 覆盖 |
50
52
  | `agentMaxOutputTokens` | `8192` | 单轮模型输出上限 |
51
53
  | `agentMaxAutoContinuationTurns` | `2` | 截断、空响应或超出渠道正文预算时的后台自动恢复轮数;范围 `0`–`8`,设为 `0` 可关闭 |
54
+ | `agentGoalContinuationTimeoutMs` | `0` | 在原始前台回复已入队后,保留同一 Agent 等待当前已 armed 的原生目标继续执行的时间上限;范围 `0`–`300000` 毫秒,默认关闭,需 Host 挂载原生 GoalService 与 goal-round-driver |
52
55
  | `modelPickerTtlMs` | `900000` | `/model` 选择卡片的签名提交有效期;范围 1 分钟至 24 小时 |
53
56
  | `permissionPickerTtlMs` | `900000` | `/permissions` 三档权限卡片的签名提交有效期;范围 1 分钟至 24 小时 |
54
57
  | `toolApprovalTtlMs` | `300000` | 当前 open turn 的即时工具审批有效期;范围 1 秒至 5 分钟 |
@@ -140,7 +143,7 @@ ownerRoutes:
140
143
 
141
144
  不同 Host 必须部署同一份 authority 配置。同一 idempotency key 的配置漂移会由 authority hash receipt 拒绝;本功能刻意不增加数据库 schema,因此使用不同新 key 的两个 Host 不会通过账本互相证明配置一致,部署层仍需用同一受控 profile 发布并校验配置。
142
145
 
143
- `pairPrincipalLocally()` 是给安装向导使用的更窄离线入口:调用方必须已经拥有私有 Delivery SQLite 的本机文件权限,并提供完整 typed principal;函数内部仍走一次 challenge/confirm 事务,只返回 principal 记录,不返回 code。`lark-channel` 向导先用一次性 DM 短语确认具体 `open_id`,再调用该入口;普通 Agent、外部消息和后台任务都无法访问它。
146
+ `pairPrincipalLocally()` 是给安装向导使用的更窄离线入口:调用方必须已经拥有私有 Delivery SQLite 的本机文件权限,并提供完整 typed principal;函数内部以 owner 交接事务启用指定 principal 并撤销此前 active owner,只返回 principal 记录;它不是跨渠道别名关联。`lark-channel` 向导先用一次性 DM 短语确认具体 `open_id`,再调用该入口;普通 Agent、外部消息和后台任务都无法访问它。
144
147
 
145
148
  ## Adapter contract
146
149
 
@@ -158,7 +161,7 @@ ownerRoutes:
158
161
 
159
162
  ### 跨渠道 `ask_user_question`
160
163
 
161
- `apiProxy` 始终是 `ctx.userQuestions` 的唯一 provider;Delivery 不注册第二个 provider。可选的 rc.8 `apiProxy.events.mux()` 将 pending `question/requested` 帧交给 Delivery,Delivery 只在其 session 仍对应 exact active owner binding、当前 adapter 仍具备问题交互能力时,转给该渠道;回答以同一 rpc id 回写 `apiProxy.respond()`。同一请求同时可被 Web 与渠道界面看到,谁先被 ApiProxy 接受谁生效(first-claim-wins);晚到、撤销或重复回答不会制造新的 Agent turn。
164
+ DSH `0.1.2-rc.1` 的 `ctx.userQuestions.ask()` 会把带 `agent` 的请求派发到该 exact live runtime root 的 Agent-scoped `user-questions/request` waterfall;随产品交付的 Web Host 通过 Remote Events 在同一 scope 注册 answerer。`dsh-user-questions` 不发布独立 request/answer 审计流,因此渠道集成必须直接注册 scoped answerer,并在其中完成 owner binding、adapter 能力、取消和回答校验。Delivery answerer 以前置顺序尝试有能力的渠道,避免先注册的远端 answerer 长时间等待而阻塞渠道;无 Delivery 路由、渠道不可用或回答畸形时继续 waterfall,已存在但失效的 owner binding 则以 `ASK_ABORTED` 失败关闭。没有 answerer 接受请求时 Host 以 `NO_PROVIDER` 失败,不会无限等待;多个 answerer 按 waterfall 组合顺序串联,当前 API 不承诺跨 UI 的竞速认领语义。
162
165
 
163
166
  渠道自由文本只有在明确回复对应问题消息时才会结算,并要求 account、tenant、conversation、principal、binding version/generation 与当前 owner fence 全部匹配;同一路由恰好只有一个 pending question 也不会吞掉未引用的新消息。匹配回答直接恢复原来的工具调用,不写 Inbox、不作为普通新消息排队;`/stop`、`/new`、`/clear` 仍按渠道正常命令接入规则取消旧 wait(例如群聊可能仍要求 @ 机器人),问题卡的取消按钮则不依赖文字命令。问题发往原 binding 会话,不保证是私聊:若原会话是群聊,问题正文和选项对该群可见,敏感问题应在私聊中发起或改用其他交互方式。
164
167
 
@@ -174,6 +177,26 @@ ownerRoutes:
174
177
 
175
178
  真实 principal、tenant、token 不注入 prompt。每个 Delivery SQLite 在首次创建时持久生成随机实例命名空间;新 binding 的 session id 由该命名空间 + conversation + generation 确定生成。数据库重开会复用同一命名空间和既有 binding,数据库删除重建或另一个 profile 的独立数据库则得到不同命名空间,避免共享 DSH session 日志根时串用旧上下文;已持久 binding 始终按自身 `sessionId` 冷恢复,不受后续算法变化影响。`/new` 新建下一 generation 并保留旧 session。有 roster 时,binding 中的 preset 会在每次 create/resume 时重新解析并挂载到 Agent scope,因此 Web profile 可以继续关闭全局 Bash/FS,而渠道 Agent 仍获得自己的 preset 工具;无 roster 的 headless profile则沿用宿主全局组合。lookup/create 进程内 single-flight,SQLite unique constraint 是最终冲突边界。
176
179
 
180
+ ## 持久 Session 排他
181
+
182
+ 内置 DSH 运行时在恢复已有 Session 或构造新 Session 之前取得持久排他凭证,覆盖普通对话、权限命令、会话压缩及首次创建和 `/new`。自动补全和原生目标续跑沿用该凭证。数据库 schema 19 的 `delivery_session_leases` 以 Session ID 为主键,保存原始会话/主体/工作区/preset/generation 身份、主体 record/version、持有者、单调 fencing token、期限和状态;这些字段不来自模型参数。即使进程在新 Session 已保存、binding 尚未建立时崩溃,其他主体也不能接管该遗留 Session。
183
+
184
+ Session 续约间隔取有效 lease 的约三分之一,有效期限使用 `min(leaseMs, 300000)`;不改变 Inbox/Outbox 的原配置。每次续约、模型请求及工具执行前重查数据库中的有效 token 与当前绑定/主体权限。丢失租约会取消本地 Agent;旧 Agent 即使换新 signal 也不能继续提交新模型或工具动作。首次派发前的过期 `prepared` 可重新授权并取得更大的 token;`dispatched` 超时只变为 `unknown`,不会自动接管。scope 身份保留,合法版本变化须重新核对当前授权。
185
+
186
+ 其他 Host 入口恢复出的 Agent 也不能借用 Delivery 的 Session 执行:模型请求、流与工具入口查询持久归属,只有当前运行时实际接管的 Agent 对象才能使用其凭证。任意既有 binding(包括撤销后)或 construction 记录(包括已释放、尚未形成 binding 的遗留 Session)都要求凭证;服务重启不会把它们变成普通会话。查询失败拒绝执行,异步返回和流分块后重新检查。未归 Delivery 管理的普通原生 Session 保持原行为。
187
+
188
+ 标准 Web Controller 打开冷会话时可能自动恢复 Agent,也可能直接借用正在运行的同一 Agent,因此浏览 Delivery 历史不等于取得继续执行权。正在持有凭证的 Agent 收到原生 direct-user 输入时,插入/领取事件会取消整份本地租约及当前任务,防止排队或 steer 的消息接着执行;正常 Delivery 消息、目标轮和自动补全继续走既有入口。取消不表示已停止所有外部动作;已派发任务按既有 Inbox 协议保存为 `dead_letter` / `processor-ambiguous`,不自动重放,也不作为成功。已证明 teardown 完成时可以释放 Session 占用,业务结果仍需独立核对。
189
+
190
+ 此检查约束模型和工具执行,不代理 Web 的全部 Session 读写、原生目标控制或 owner 身份;在完整接入 owner/Policy 与会话生命周期前,不应把 Web prompt 当作 Delivery 入站入口。已经开始的操作无法由返回后的检查撤销。消息来源标签由可信 Host 入口设置,不构成对能够伪造标签的任意 Host 插件的隔离。
191
+
192
+ 等待其他有效 Session 持有者的 Inbox 回到队列,不耗尽业务重试额度;每次领取仍使用新的单调 fence,attempt 历史保留。清理提前返回、挂起工具或未结束模型流时保存 `unknown`。只有同一凭证对应的真实 Agent teardown 完成、已跟踪模型流与工具执行均结束,才释放排他;不能把超时或原生 `complete` 当成 quiescent 证明。冷恢复没有原进程的清理证据,因此未知会话不自动重放。后续入站会收到核对提示;`/new` 可以独立开始新任务,旧 Session 与未知状态保留。当前没有模型可调用的“强制解除未知”入口。
193
+
194
+ 内置 create/resume 现由 service 构造的同一租约管理器包装,继续使用宿主唯一 Agent factory 与调用方的 Cordis 作用域。冷加载尚未产生 Agent 时也计为在途工作;setup 发布前附着确切 Agent,并保留原生同步 commit 及前后授权重查。调用方即使只保留 Agent,作用域卸载也会取消租约并等待原生 handle 的实际清理;显式 dispose 幂等,正常清理不会提前结束外层验收。此内部生命周期原语没有开放 Web owner 授权或原生人类输入许可,现有 direct-user 护栏仍然生效。
195
+
196
+ 原生 resume 在取消时可能先返回错误,底层 persistence preparation 稍后才清理,且未提供该清理结果的公开通知。因此恢复在 setup 收到 Agent 之前失败时,包装器核对原生 factory 是否仍为同一有效代次、调用方 fiber 是否仍 active,以及组合 signal 是否未取消;只有排除全部三条原生取消路径后,才按已结束的普通加载失败释放,保留状态提示与权限恢复重试。发生取消、factory 卸载/替换或无法证明这些条件时保留 `unknown`,不根据异常文本或迟到加载结束自动解锁;仍可通过 `/new` 开始独立会话。正常 setup/commit 失败在原生 Agent 回滚结束后按实际清理释放。
197
+
198
+ 这是共享同一 Delivery 数据库、使用当前内置运行时的 Host 之间的执行协议,不是任意同 UID 进程、任意自定义运行时或外部动作的 OS 隔离。已经开始的不合作外部动作仍需回读或补偿。升级前应排空并停止所有旧 writer,统一使用当前版本;已打开旧数据库的旧代码不了解这个协议,不能与新 Host 混跑后宣称排他成立。插件卸载保留账本,不自动清理;执行护栏依赖运行中的 Delivery,卸载后的原生 Host 不提供该协议。Goals 的可选单次后台唤醒已使用同一排他入口,配置与限制见下文后台唤醒说明。
199
+
177
200
  ## 会话命令与持久上下文
178
201
 
179
202
  - `/help`:列出当前实际可用的命令。
@@ -186,14 +209,29 @@ ownerRoutes:
186
209
 
187
210
  渠道 command envelope 只接受从正文第一字节开始的小写 ASCII slash 语法。未知命令、当前 preset 未发布的命令,以及大写、空命令等非法 slash 形态都只返回确定性帮助/错误,绝不作为自然语言进入 LLM。普通 Agent turn 只有在 session persistence `flush()` 明确返回 `true` 后才入队最终回复;返回 `false` 或抛错时不宣称任务成功。
188
211
 
189
- Agent Loop 以 `max-tokens` 结束、正常结束却没有正文,或完整正文超过 `maxTextBytes` 时,Delivery 默认在同一 session 中发起最多两轮后台恢复:先续写缺失部分;若仍未结束,最后一次机会优先根据当前请求和其后全部已有回答片段压缩为预算内的完整答案,不会把同一长会话中更早已完成的任务混入结论。空回答会重新生成,首轮即超长的回答会直接压缩。每个片段先持久化,再开始下一轮;恢复轮沿用已经选定的 provider、model 和 effort,但 source 明确标记为 Delivery 的内部 notice。恢复轮禁止工具执行:rc.8 仍可能把 scoped tool schema 序列化给 provider,但任何调用都会在审批和执行前被拒绝,并立即结束该恢复轮;工具状态也不会展示给用户,后续恢复仍受同一总轮数限制。最终只投递一次合并后的完整回复并标记完成,不需要用户发送”继续”。
212
+ Agent Loop 以 `max-tokens` 结束、正常结束却没有正文,或完整正文超过 `maxTextBytes` 时,Delivery 默认在同一 session 中发起最多两轮后台恢复:先续写缺失部分;若仍未结束,最后一次机会优先根据当前请求和其后全部已有回答片段压缩为预算内的完整答案,不会把同一长会话中更早已完成的任务混入结论。空回答会重新生成,首轮即超长的回答会直接压缩。每个片段先持久化,再开始下一轮;恢复轮沿用已经选定的 provider、model 和 effort,但 source 明确标记为 Delivery 的内部 notice。恢复轮禁止工具执行:DSH `0.1.2-rc.1` 仍可能把 scoped tool schema 序列化给 provider,但任何调用都会在审批和执行前被拒绝,并立即结束该恢复轮;工具状态也不会展示给用户,后续恢复仍受同一总轮数限制。最终只投递一次合并后的完整回复并标记完成,不需要用户发送”继续”。
190
213
  后台恢复是新的、有界模型 turn,可能产生额外模型用量,不是对同一个已提交请求的透明重试。若恢复轮失败或次数耗尽、没有新增正文,或已经持久化但无法建立安全调度边界,Delivery 才保留当前最佳正文、附加明确的未完成提示并标记失败;完全没有可用正文时发送重试提示。失败提示不再要求用户发送“继续”这类协议词。若任何片段无法确认持久化,则不投递该结果,也不宣称完成。这些失败回复不会进入 completed-turn preference projection。`agentMaxAutoContinuationTurns` 设为 `0` 时保留直接失败提示行为。
191
214
 
215
+ `agentGoalContinuationTimeoutMs` 默认是 `0`,保持既有的前台回复后立即释放 Agent 行为。设为正值时,Delivery 先完成并入队原始前台回复,再保留同一 Session、Agent 与已固定的 GoalId,让 Host 的原生 `goal-round-driver` 在其自己的调度边界续跑;Delivery 不创建目标轮、不接管轮次,累计上限仍由 DSH 的 `maxGoalRounds` 限制。原回复只是该入站任务的结果,绝不表示业务目标已经达成。
216
+
217
+ 续跑占用当前任务的串行位置,可能产生额外模型和工具用量;时间上限不是 token 或费用硬上限。每个目标模型步骤以及工具执行前都会重查当前入站授权。目标自然停止前以及实际 teardown 完成后同样重查授权和取消信号;读取失败、替换 GoalId、超时、disposer 失败、`/stop`、`/new` 或授权撤销均记录为 non-quiescent 的未知结果,并取消该目标的后续续跑。续跑的剩余时间上限也约束 Agent teardown:超时和取消不会等待不响应取消的工具、`whenIdle()` 或 disposer;即使 Delivery 已返回,护栏仍保留到异步 Agent disposer 实际 settle(成功或失败),防止迟到的模型或工具动作越过撤权边界。该配置不提供跨日后台调度、跨 Session 目标迁移或独立的目标达成验收。
218
+
219
+ Goals 的单次计划恢复使用单独的 Host capability。`goalWakeSettlementVersion()` 返回 1 时,`resumeScheduledGoal()` 要求 capability 提供 `settle(agent, signal)`,在原生终态和 idle 后等待当前 Agent 的独立验收,再重查 owner、Session、期限和最终状态后释放租约。缺少等待协议、结算失败或取消都不能报告成功;该能力版本不表示业务目标已经达成。
220
+
221
+ `goalWakeResultVersion()` 返回 1 表示支持显式 `includeOutput`:只回读本次恢复中 exact Goal/revision 原生回合的完整最终文本,不返回历史回复、reasoning、截断或未完成工具调用。Goals 的可选事件等待在结算后调用 `enqueueScheduledGoalResult(capability)`,由 Delivery 使用自身保存的输出并在入队边界复核原 owner、binding version/generation 和 Session;调用者不能指定替代正文或收件人。Web 原生会话已在真实 teardown 前持久保存回复;当前 Web owner capability 再次确认同一 Session 后返回 `native-session`,不追加重复回复或生成 Outbox,也不声称用户已读。缺少当前 Web owner 或其身份不匹配时拒绝。外部渠道投递使用现有持久 Outbox、稳定身份 key,以及 `background:assistant-goals-wake/v1` 的 message `send` 权限。入队成功不等于渠道送达,未知发送仍不盲目重放。
222
+
223
+ 外部渠道的 event-wait scheduled whole-goal 终态(当前 producer 为 `goal-event-wake-*`)另由 Delivery schema 20 在同一事务中写入 result Outbox 与 `delivery_goal_outcome_targets` typed sidecar;普通 `goal_schedule` wake 不外发该结果。sidecar 固定 owner route、principal record/version、binding version/generation、Session、业务 Goal、assessment、定义/profile/contract/receipt 摘要和 Goals proof digest;普通 `enqueueBackground()` 及手写 `dsh.learning.*` metadata 都不能制造这条 authority。入队及每次实际 send 前都会重新取得当前 Goals provider,以进程内 capability 重建同一 Goals/Verifier proof,并核对回执仍新鲜、active owner/route/binding/Session 未漂移及 exact background `send` Policy。provider 被替换、proof 过期、route 或 Policy 变化时,尚未发送的 intent 以 `goal-outcome-authority-revoked` 失败关闭,不调用渠道 adapter。
224
+
225
+ 结果已经取得 provider message id 后,exact owner 可以直接回复该消息,沿用 `/feedback status`、`/feedback correct <version> <previous-status> <new-status>` 与 `/feedback withdraw <version> <previous-status>`。首次 `status` 已显示从 Verifier baseline 采纳的 revision 1;单词形式的初始判断只有与该 baseline 状态相同才幂等成功,任何不同判断都必须使用 `status` 返回的 version/status 做显式 `correct`,不能用裸命令覆盖。历史 Verifier receipt 此时允许超过原 freshness window,因为 owner 正在标注一份不可变的历史结果;但 Delivery、Goals 和 Evaluation 仍会重验同一个 sidecar、owner lineage、route/binding、Goal definition、assessment、run、profile、contract 与 receipt identity。原消息、当前 Goals provider 或任一身份不匹配时拒绝,不会仅凭过期 metadata 产生修订。Web `native-session` 返回值没有外部 Outbox/provider reply identity,因此当前不支持这条 whole-goal reply-feedback 路径。
226
+
192
227
  `/feedback` 的完整固定语法如下;不接受附件或额外自由文本:
193
228
 
194
229
  ```text
195
230
  /feedback helpful|not-helpful|too-long|too-short|wrong-format|wrong-action|unwanted-reminder
196
231
  /feedback achieved|partial|not-achieved
232
+ /feedback status
233
+ /feedback correct <version> <previous-status> <achieved|partial|not-achieved>
234
+ /feedback withdraw <version> <previous-status>
197
235
  /feedback verbosity concise|balanced|detailed
198
236
  /feedback structure prose|bullets|mixed
199
237
  /feedback language zh-CN|en
@@ -209,6 +247,10 @@ Automation 成功结果的直接回复;Automation 结果只能通过 Host-only
209
247
  `dsh.learning.*` 证据;普通 `enqueueBackground(...)` 不能提交这些保留 metadata。同一 immutable run
210
248
  的相同目标状态幂等重放为同一 Evaluation outcome,之后提交相反状态会报告冲突,不会形成第二票。
211
249
 
250
+ 更正和撤回也必须直接回复同一条任务结果。`/feedback status` 返回当前状态、版本和可复制的命令;例如先有 `achieved` v1,可发送 `/feedback correct 1 achieved partial`,再发送 `/feedback withdraw 2 partial`。撤回后状态为 `unknown`,不会退回较早的 terminal/evaluator 成功标签;可通过 `/feedback correct 3 unknown achieved` 明确恢复。旧的三种单词命令仍仅表示初次判断,不能覆盖当前状态。
251
+
252
+ Host 从持久 Inbox、exact Outbox 和已认证 owner 的 record id/version 生成命令身份。每次接受的变化保留 append-only audit、前置版本/状态与投影 outbox;同值不加票,provider 重投返回原结果,已拒绝的乱序命令不会在稍后变成成功。冲突时应重新发送 `/feedback status` 并使用新命令。升级前的 Automation 判断可由同一 exact delivery 的 Host capability 惰性认领为 v1,不修改历史原始 outcome。
253
+
212
254
  普通 Agent 回复另有一条更窄的本地 workflow 证据路径:active owner 必须精确回复该条已持久、已投递的 reply,且原始入站正文必须逐字命中已审查的闭集静态 catalog。只有 `achieved` 与该 catalog 同时成立,Delivery 才原子记录 content-free `verified-repetition` trace,并把静态模板保留在私有 registry;正文、模型输出和 owner 自由文本不会投影到 Growth。`partial`、`not-achieved`、未命中 catalog、preview、失败运行、旧 schema、手写 background intent 或不能由 durable Inbox/Outbox route 重新证明的目标只留下不可改写的本地 `no-trace` 回执,绝不宣称任务成功或形成学习样本。
213
255
 
214
256
  workflow trace 只会投影给一个由 Growth 以 `registerWorkflowTraceSink(...)` 注册的进程内、可撤销 sink。
@@ -305,9 +347,15 @@ Automation incident 使用 `automation-incident:<incidentId>:g<generation>` 同
305
347
  - `unknown_after_send` cancel 后仍保留为独立的 ambiguous 状态和原始 resolution receipt,不伪装成确定未发送;该 exact attempt 不会再被自动 reconcile/send,并视为 lane terminal,cancel receipt 也不能改写成 retry。若平台随后给出匹配 provider message id 的 delivered/read receipt,外部事实可单调提升当前状态并清除当前失败标记,原 cancel/attempt ledger 仍保留。普通尚未结算的 unknown 只能由显式、Policy-gated operator `retry` 重新入队;稳定 owner route 禁止 retry,只能原 lineage reconcile/cancel/park。系统从不自动重发 unknown send。
306
348
  - Agent dispatch 前写 `dispatch-started` marker。此后进程崩溃会进入 `dispatch-ambiguous` dead letter,避免自动产生第二个 turn;这会牺牲一次自动重放,需要 owner 审阅后显式 retry。
307
349
  - `/permission` 是受限例外:它使用专用 commit/cancel/failure recovery marker,并以精确 Inbox id(兼容旧 event id)与 `replyToEventId` 共同证明终态 Outbox;崩溃恢复不会把普通 background Outbox 或同名伪造 key 当成完成见证。
308
- - 当前 rc.8 `followup()` 没有跨进程 `sourceEventId` 唯一接纳/完成 handle,因此本包诚实承诺“持久 event 去重 + at-most-once 自动 Agent dispatch”,不声称端到端 exactly-once。若宿主未来提供该 seam,可升级为安全的 at-least-once wake。
350
+ - 当前 DSH `0.1.2-rc.1` 的 `followup()` 没有跨进程 `sourceEventId` 唯一接纳/完成 handle,因此本包诚实承诺“持久 event 去重 + at-most-once 自动 Agent dispatch”,不声称端到端 exactly-once。若宿主未来提供该 seam,可升级为安全的 at-least-once wake。
309
351
  - Outbox adapter 抛异常一律视为可能已发送;不会按照普通 5xx 重试。
310
352
 
353
+ ## Goals 单次唤醒边界
354
+
355
+ Delivery 只向 Goals 的已注册 Host capability 提供一次受限恢复:它重读当前 owner route、binding、原 Session、GoalId、revision 和 deadline,在重新加载原 Session 后重查状态,仅在 Goals 的 dispatch CAS 成功后恢复原生目标。它不把历史 Session snapshot、runtime context 或任意 `user/message` 当作新的 owner 输入;DSH 会把 runtime context snapshot 持久化为 user-role message,它不能替代人类回合证明。
356
+
357
+ Cordis 按上下文读取 service 时可能产生不同 proxy 对象,Host 不能用对象 `===` 判断同一 Delivery service 或 capability 所属。恢复、撤权、lease 到期、取消和 teardown 只能阻止新的边界动作;它们不证明已有模型、工具、子进程或外部动作已经停止。无法确认终态时返回 unknown,Goals 不自动重放。
358
+
311
359
  ## 权限与数据边界
312
360
 
313
361
  - **文件系统:**读写配置的 SQLite 与私有 spool 目录,并在 fresh Agent create 前创建缺失的 workspace;cold resume 只验证原目录仍存在。图片字节通过宿主 AttachmentStore 持久化;标准 `attachment-local` 将其写入 `$DSH_HOME/attachments/v1`,Delivery 自己不把字节写进 SQLite、spool 或 session 日志。Delivery 本身不读取任意 workspace 文件。挂载 preset 后,获 Policy 允许的文件工具可在 DSH 文件权限边界内读取 workspace。
@@ -333,3 +381,26 @@ pnpm --dir plugins/assistant-delivery pack --dry-run
333
381
  ```
334
382
 
335
383
  兼容性基线见 [docs/compatibility.md](../../docs/compatibility.md)。
384
+
385
+ 普通前台与 Automation 的更正/撤回/状态入口兼容 Evaluation `owner-objective-revision/v1` 或 v2;whole-goal 入口严格要求 v2。旧 Evaluation 不能消费 typed whole-goal capability,命令明确返回服务不可用,不能退化为独立评价票。
386
+
387
+ 旧 foreground receipt 未保存 principal version:仅当前仍为同一 record 的初始 v1 身份可修订;身份已更新时保守拒绝继承旧判断修订权。新记录完整保存 record+version。
388
+
389
+
390
+ ## 原生 Web owner 接入
391
+
392
+ 可选的 `@dsh-enhanced/assistant-web-owner` 消费受信 Host API `bindNativeWebOwner(ctx, config)`。每个 Delivery 服务只允许一个活动 Web Controller capability;身份必须是已配对、当前 active owner 的 `web` principal,workspace/preset 和 owner record/version 在颁发时固定。此 API 不暴露内部 lease manager,也不对任意同进程 Host 代码宣称沙箱隔离。
393
+
394
+ 新 Web Session 先在同一 construction lease 下创建并 flush,再在 SQLite 事务中创建 binding 并提升该 lease 的 target;中间不会失去占用或出现第二执行者。文本 Inbox 直接原子 claimed,native-admission/native-dispatch-started 标记保证崩溃后不被普通入站 worker 重放。原生 inserted/claimed 的确切消息证明连接到既有当前 owner 回合与前台验收协议。空闲、超时、撤权或 scope 卸载调用实际 memoized disposer;未完成清理不记 quiescent。
395
+
396
+ 原生 Goal 仍为 `active` 且 `armed` 时,空闲回收保留同一个 Agent 和 Session lease,允许宿主唯一 GoalRoundDriver 在会话保存完成后调度下一轮。目标终态或 disarm 后恢复普通空闲回收;owner 撤权、租约失效、scope 卸载和原有 `maxExecutionMs` 期限仍优先结束执行,不为每轮重置期限。若宿主缺少 GoalRoundDriver,armed 目标最多保持到该期限;此保留检查本身不派发任务。
397
+
398
+ 当前 Web 只支持单已认证控制面的文本交互;图片、完整 queue/steer、跨渠道 owner 别名和子 Agent 历史仍未验收。原生 Web 安装及浏览器验证范围见 [自治实施记录](../../docs/agent-autonomy-implementation.md),配置、Policy 与权限见 [Web owner 包说明](../assistant-web-owner/README.md)。
399
+
400
+ Host 编排可从 `@dsh-enhanced/assistant-delivery/types` 读取无服务初始化的公开类型;该入口不激活 Delivery,也不授予消息发送权限。根构建先生成此类型入口,避免 Evaluation benchmark 与 Delivery 服务声明形成构建环。
401
+
402
+ ## 持久主人提醒
403
+
404
+ `enqueueOwnerNotification` 为可信 Host 插件提供限定主人路由、原会话、身份版本和有效期的提醒入队接口。普通 `enqueueBackground` 不能写入保留的 `dsh.native-notice*` 元数据。投递前重查当前主人、绑定版本与代次、路由、期限及背景 `send` Policy;过期、撤权或换代的队列不会发送。
405
+
406
+ 原生 Web 使用本地适配器将通知标为可读取,并由 `assistant-web-owner` 的会话输入区展示。通知不写入 Session 历史,不触发模型,也不表示目标已完成;`accepted` 不表示用户已阅读。读取沿用固定 Web 主人能力,并再次核验上述边界;不另设消息 `read` Policy。其他渠道复用已有适配器。对于已发生但结果未知的外部发送,重启恢复仅通过适配器查询结果;查到过去已发送不表示再次发送,也不会为重发授予权限。
@@ -0,0 +1,46 @@
1
+ /** Structural Host-only acceptance seam. Kept local to avoid a verifier runtime cycle. */
2
+ export interface AcceptanceScope {
3
+ readonly workspace: string;
4
+ readonly preset: string;
5
+ }
6
+ export interface AcceptanceOwner {
7
+ readonly principalRecordId: string;
8
+ readonly principalVersion: number;
9
+ }
10
+ export interface AcceptanceTask {
11
+ readonly scope: AcceptanceScope;
12
+ readonly owner: AcceptanceOwner;
13
+ readonly task: {
14
+ readonly kind: 'foreground-turn';
15
+ readonly ref: string;
16
+ };
17
+ readonly objective: string;
18
+ }
19
+ export interface AcceptanceHandle {
20
+ readonly contractId: string;
21
+ readonly contractDigest: string;
22
+ }
23
+ export interface TaskAcceptanceRegistration {
24
+ readonly protocol: 'assistant-verifier/host-producer/v1';
25
+ readonly generation: string;
26
+ readonly owner: {
27
+ ownsTaskAcceptanceRegistration(registration: TaskAcceptanceRegistration): boolean;
28
+ };
29
+ readonly requiresAcceptance: boolean;
30
+ prepare(input: AcceptanceTask): AcceptanceHandle | null;
31
+ completed(handle: AcceptanceHandle): Promise<void>;
32
+ }
33
+ export interface AcceptanceContract extends AcceptanceTask {
34
+ readonly id: string;
35
+ readonly digest: string;
36
+ }
37
+ export interface AcceptedExecution {
38
+ readonly contractId: string;
39
+ readonly contractDigest: string;
40
+ readonly dispatchedAt: number;
41
+ readonly status: 'succeeded' | 'failed' | 'timed-out' | 'cancelled' | 'unknown';
42
+ readonly quiescent: boolean;
43
+ readonly completedAt: number;
44
+ readonly executionRef: string;
45
+ }
46
+ //# sourceMappingURL=acceptance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acceptance.d.ts","sourceRoot":"","sources":["../src/acceptance.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,WAAW,eAAe;IAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACxF,MAAM,WAAW,eAAe;IAAG,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE;AAC1G,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAA;IAC/B,QAAQ,CAAC,IAAI,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;QAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAA;IACzE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AACD,MAAM,WAAW,gBAAgB;IAAG,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE;AAClG,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,QAAQ,EAAE,qCAAqC,CAAA;IACxD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE;QAAE,8BAA8B,CAAC,YAAY,EAAE,0BAA0B,GAAG,OAAO,CAAA;KAAE,CAAA;IACrG,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,OAAO,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,GAAG,IAAI,CAAA;IACvD,SAAS,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACnD;AACD,MAAM,WAAW,kBAAmB,SAAQ,cAAc;IAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAC3G,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,WAAW,GAAG,SAAS,CAAA;IAC/E,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=acceptance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acceptance.js","sourceRoot":"","sources":["../src/acceptance.ts"],"names":[],"mappings":""}
@@ -4,9 +4,12 @@ import type { AgentPresets } from '@deepseek-ai/dsh-agent-presets';
4
4
  import { type SessionEvent } from '@deepseek-ai/dsh-session';
5
5
  import { type AssistantPolicyService } from '@dsh-enhanced/assistant-policy';
6
6
  import type { InboundPrepareContext, InboundPrepareResult, InboundProcessResult, MarkInboundDispatching, PreparedInboundMessage } from './coordinator.js';
7
- import type { FeedbackSignalSelection, ObjectiveFeedbackStatus } from './feedback-command.js';
7
+ import type { AcceptanceHandle } from './acceptance.js';
8
+ import type { FeedbackSignalSelection, ObjectiveCommand, ObjectiveCommandResult } from './feedback-command.js';
8
9
  import type { InboundImageMaterializer } from './inbound-images.js';
9
10
  import type { DeliveryInboundRuntime } from './service.js';
11
+ import type { DeliverySessionLeases } from './session-lease-runtime.js';
12
+ import { type DeliveryGoalWakeInput, type DeliveryGoalWakeResult } from './goal-wake-types.js';
10
13
  import { type WorkflowCommand } from './workflow-command.js';
11
14
  import type { ConversationBinding, ConversationModelSelection, ConversationRef, DeliveryProgressUpdate, DeliveryLearningControlAction, DeliveryLearningControlReceipt, DeliveryPreferenceEvent, InboundEnvelope, ModelPickerIntent, ModelRouteRef, PermissionPickerIntent } from './types.js';
12
15
  declare module '@deepseek-ai/dsh-llm' {
@@ -21,6 +24,7 @@ declare module '@deepseek-ai/dsh-llm' {
21
24
  }
22
25
  }
23
26
  interface DshDeliveryRuntimeOptions {
27
+ sessionLeases: DeliverySessionLeases;
24
28
  sessionNamespace: string;
25
29
  workspace: string;
26
30
  agentPreset: string;
@@ -30,7 +34,14 @@ interface DshDeliveryRuntimeOptions {
30
34
  model: string;
31
35
  maxOutputTokens: number;
32
36
  maxAutoContinuationTurns: number;
37
+ /** Zero retains the historic foreground-disposal behavior. */
38
+ goalContinuationTimeoutMs: number;
33
39
  maxTextBytes: number;
40
+ prepareForegroundTaskAcceptance(binding: Readonly<ConversationBinding>, envelope: Readonly<InboundEnvelope>): AcceptanceHandle | undefined;
41
+ completeForegroundTaskAcceptance(handle: AcceptanceHandle, input: {
42
+ status: 'succeeded' | 'failed' | 'timed-out' | 'cancelled' | 'unknown';
43
+ quiescent: boolean;
44
+ }): Promise<void>;
34
45
  permissionPickerTtlMs: number;
35
46
  getModelSelection(conversation: ConversationRef): ConversationModelSelection | undefined;
36
47
  /** Atomically remove a stale explicit effort without overwriting a newer model choice. */
@@ -55,7 +66,7 @@ interface DshDeliveryRuntimeOptions {
55
66
  } | undefined;
56
67
  dispatchPreferenceFeedback(events: readonly Readonly<DeliveryPreferenceEvent>[]): Promise<'recorded' | 'unavailable' | 'unknown'>;
57
68
  replyCompletedPreferenceTurn(agent: Agent, binding: Readonly<ConversationBinding>, envelope: Readonly<InboundEnvelope>, input: ModelCommandReply): 'recorded' | 'unavailable' | 'unknown' | Promise<'recorded' | 'unavailable' | 'unknown'>;
58
- dispatchObjectiveFeedback(binding: Readonly<ConversationBinding>, envelope: Readonly<InboundEnvelope>, objectiveStatus: ObjectiveFeedbackStatus): Promise<'conflict' | 'invalid-target' | 'recorded' | 'unavailable' | 'unknown'>;
69
+ dispatchObjectiveFeedback(binding: Readonly<ConversationBinding>, envelope: Readonly<InboundEnvelope>, objectiveStatus: ObjectiveCommand | import('./feedback-command.js').ObjectiveFeedbackStatus): Promise<ObjectiveCommandResult>;
59
70
  dispatchWorkflowCommand(binding: Readonly<ConversationBinding>, envelope: Readonly<InboundEnvelope>, command: Extract<WorkflowCommand, {
60
71
  kind: 'retract' | 'save';
61
72
  }>): Promise<'conflict' | 'invalid-target' | 'recorded' | 'unavailable' | 'unknown'>;
@@ -104,17 +115,25 @@ export declare class DshDeliveryRuntime implements DeliveryInboundRuntime {
104
115
  private readonly options;
105
116
  readonly dispatchControl: "explicit";
106
117
  private readonly activeSessionControls;
118
+ private readonly sessionLeases;
107
119
  constructor(ctx: Context, policy: AssistantPolicyService, options: DshDeliveryRuntimeOptions);
120
+ private resumeAgent;
108
121
  cancelActive(binding: Readonly<ConversationBinding>, command: 'new' | 'stop'): Promise<boolean>;
109
122
  private beginSessionControl;
110
123
  private endSessionControl;
124
+ /**
125
+ * Keep one Delivery-owned handle alive just long enough for the host's native
126
+ * goal driver to retire the exact armed goal it observed. Delivery never
127
+ * queues a round itself: the driver remains the only continuation producer.
128
+ */
129
+ private waitForNativeGoalContinuation;
111
130
  private disposeAfterReplyBoundary;
112
131
  /** Wait for only the turn that claims Delivery's exact message identity. */
113
132
  private followupTurn;
114
133
  /** Wait only for scheduling quiescence; exact turn ownership still comes from followupTurn(). */
115
134
  private waitForAgentIdle;
116
135
  /**
117
- * Queue a synthetic completion turn only after the previous exact turn retired. rc.8 may still
136
+ * Queue a synthetic completion turn only after the previous exact turn retired. The runtime may still
118
137
  * serialize scoped tool schemas, but every call is denied before approval/execution while this
119
138
  * turn owns the Agent, so recovering prose cannot repeat an external side effect.
120
139
  */
@@ -140,6 +159,17 @@ export declare class DshDeliveryRuntime implements DeliveryInboundRuntime {
140
159
  agentPreset: string;
141
160
  policyRef: string;
142
161
  }>;
162
+ /**
163
+ * Resume one previously owner-scheduled native Goal. This is deliberately
164
+ * not an inbound-message path: it creates no delivery source and never
165
+ * calls followup(). The native round driver remains the only producer of
166
+ * `source.kind === 'goal'` work.
167
+ */
168
+ resumeScheduledGoal(binding: Readonly<ConversationBinding>, input: Readonly<DeliveryGoalWakeInput>): Promise<DeliveryGoalWakeResult>;
169
+ private validGoalWakeInput;
170
+ private assertScheduledGoal;
171
+ private installScheduledGoalFences;
172
+ private waitForScheduledGoalTerminal;
143
173
  prepare(binding: Readonly<ConversationBinding>, envelope: Readonly<InboundEnvelope>, signal: AbortSignal, context: Readonly<InboundPrepareContext>): Promise<InboundPrepareResult>;
144
174
  private replySessionCommand;
145
175
  private runFeedbackCommand;
@@ -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":"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"}