@dsh-enhanced/assistant-delivery 0.1.63 → 0.1.65
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 +5 -0
- package/lib/agent-runtime.d.ts +2 -0
- package/lib/agent-runtime.d.ts.map +1 -1
- package/lib/agent-runtime.js +87 -25
- package/lib/agent-runtime.js.map +1 -1
- package/lib/coordinator.d.ts.map +1 -1
- package/lib/coordinator.js +10 -0
- package/lib/coordinator.js.map +1 -1
- package/lib/operator-snapshot.d.ts +1 -1
- package/lib/operator-snapshot.d.ts.map +1 -1
- package/lib/operator-snapshot.js +5 -5
- package/lib/operator-snapshot.js.map +1 -1
- package/lib/service.d.ts +3 -0
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +36 -3
- package/lib/service.js.map +1 -1
- package/lib/sqlite.d.ts +1 -1
- package/lib/sqlite.d.ts.map +1 -1
- package/lib/sqlite.js +34 -2
- package/lib/sqlite.js.map +1 -1
- package/lib/store.d.ts +18 -1
- package/lib/store.d.ts.map +1 -1
- package/lib/store.js +213 -2
- package/lib/store.js.map +1 -1
- package/lib/types.d.ts +31 -0
- package/lib/types.d.ts.map +1 -1
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +10 -10
package/README.md
CHANGED
|
@@ -58,6 +58,7 @@ Host-only `inspectOwnerRequestedChange(execution, { sourceId })` 限定当前认
|
|
|
58
58
|
| `agentMaxOutputTokens` | `8192` | 单轮模型输出上限 |
|
|
59
59
|
| `agentMaxAutoContinuationTurns` | `2` | 截断、空响应或超出渠道正文预算时的后台自动恢复轮数;范围 `0`–`8`,设为 `0` 可关闭 |
|
|
60
60
|
| `agentGoalContinuationTimeoutMs` | `0` | 在原始前台回复已入队后,保留同一 Agent 等待当前已 armed 的原生目标继续执行的时间上限;范围 `0`–`300000` 毫秒,默认关闭,需 Host 挂载原生 GoalService 与 goal-round-driver |
|
|
61
|
+
| `agentTaskTimeoutMs` | `1800000` | 每个入站前台执行的总时间上限,范围 `1000`–`86400000` 毫秒;超时取消原生 Agent 并结束等待,未确认的操作保持 unknown,不自动重放 |
|
|
61
62
|
| `modelPickerTtlMs` | `900000` | `/model` 选择卡片的签名提交有效期;范围 1 分钟至 24 小时 |
|
|
62
63
|
| `permissionPickerTtlMs` | `900000` | `/permissions` 三档权限卡片的签名提交有效期;范围 1 分钟至 24 小时 |
|
|
63
64
|
| `toolApprovalTtlMs` | `300000` | 当前 open turn 的即时工具审批有效期;范围 1 秒至 5 分钟 |
|
|
@@ -384,6 +385,10 @@ Automation incident 使用 `automation-incident:<incidentId>:g<generation>` 同
|
|
|
384
385
|
|
|
385
386
|
## 受控维护重启
|
|
386
387
|
|
|
388
|
+
普通前台任务默认有 30 分钟执行期限(`agentTaskTimeoutMs`)。期限到达后取消原生 Agent,并给合作的取消流程最多 1 秒写入原生结束事件;不响应取消的模型或工具不再无限占用 Delivery 等待。超时原因持久写入 Inbox,进度接口失败时仍通过原有 Outbox 发送幂等中断通知,不标 DONE。未确认停止的操作保持 unknown,Session lease 在真实 disposer 完成前继续阻止接管和迟到工具,不自动重放写入任务。
|
|
389
|
+
|
|
390
|
+
schema v27 持久保存渠道进度句柄及待发送终态。终态先入账,再调用渠道接口;普通退出最多等待进度 5 秒。支持此接口的适配器在重连后依据 Inbox 和执行回执收尾,不能将中断或未知结果显示为任务成功。旧版本未保存的句柄无法回填,也不能据此原位关闭历史气泡。
|
|
391
|
+
|
|
387
392
|
显式配置 `restart` 后,当前 owner route 的前台任务在首次派发前冻结 owner/binding/Session、实际模型与 reasoning effort、单次输出上限、模型/工具调用次数和绝对截止时间。`allowedTools` 只选取已由可信服务登记实际定义对象的只读工具作为恢复能力:`delivery_status`、`wiki_search`、`wiki_read`、`memory_search`。同名 scope 覆盖、提供者卸载或未登记定义不会继承资格。普通任务仅记录模型、调用量与恢复资格,原有工具、时限和模型选择不受恢复配置限制;执行写工具、委派、超额、模型变化或不明结果只会失去自动续办资格。申请恢复后才强制冻结的剩余额度、截止时间和只读工具清单。它不增加原 Policy 权限。旧任务不会被追补为可恢复任务。
|
|
388
393
|
|
|
389
394
|
`delivery_request_restart(reason)` 只接受原因,不接受 unit、路径或命令。调用须通过当前 owner 的精确 `maintenance.restart` 许可,且是该模型响应唯一的工具调用;活动 acceptance/native goal 或其他未静止的 Agent/Automations 会拒绝。原生 `concludeTurn()` 结束当前轮,工具结果和完整 Session 经过 persistence flush;实际 Agent teardown 与租约释放后才写 `ready`。schema 26 的全局维护栅栏与 Inbox claim 共享 SQLite 写事务,后台 Automations 同步暂停新领取,Outbox 仅发送本次维护通知并等待已有发送结算,已接收的控制命令仍可撤销恢复。恢复过程中原任务不被标为成功。
|
package/lib/agent-runtime.d.ts
CHANGED
|
@@ -56,6 +56,8 @@ interface DshDeliveryRuntimeOptions {
|
|
|
56
56
|
model: string;
|
|
57
57
|
maxOutputTokens: number;
|
|
58
58
|
maxAutoContinuationTurns: number;
|
|
59
|
+
/** Finite wall-clock budget for one inbound execution, including native tools. */
|
|
60
|
+
taskTimeoutMs: number;
|
|
59
61
|
/** Zero retains the historic foreground-disposal behavior. */
|
|
60
62
|
goalContinuationTimeoutMs: number;
|
|
61
63
|
maxTextBytes: number;
|
|
@@ -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;AAMvD,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,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,CAAA;KAAE,GAAG,IAAI,CAAA;IACtH,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,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;AAyMD,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;CA0pBhC"}
|
package/lib/agent-runtime.js
CHANGED
|
@@ -22,6 +22,12 @@ import { SessionLeaseUnavailable } from './session-lease-runtime.js';
|
|
|
22
22
|
import { isDeliveryGoalWakeDeadline } from './goal-wake-types.js';
|
|
23
23
|
import { parseWorkflowCommand, workflowCommandUsage, } from './workflow-command.js';
|
|
24
24
|
const SAFE_NATIVE_COMMANDS = new Set(['compact']);
|
|
25
|
+
class AgentTaskTimeoutError extends Error {
|
|
26
|
+
constructor() {
|
|
27
|
+
super('assistant-delivery: foreground task exceeded its execution deadline');
|
|
28
|
+
this.name = 'AgentTaskTimeoutError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
25
31
|
class UserSessionCancellation extends Error {
|
|
26
32
|
command;
|
|
27
33
|
constructor(command) {
|
|
@@ -1581,11 +1587,15 @@ export class DshDeliveryRuntime {
|
|
|
1581
1587
|
return true;
|
|
1582
1588
|
}
|
|
1583
1589
|
/** Wait for only the turn that claims Delivery's exact message identity. */
|
|
1584
|
-
followupTurn(agent, message, onClaimed, onSettled, admit) {
|
|
1590
|
+
followupTurn(agent, message, onClaimed, onSettled, admit, signal) {
|
|
1585
1591
|
return new Promise((resolve, reject) => {
|
|
1586
1592
|
let claimedTurn;
|
|
1587
1593
|
let settled = false;
|
|
1594
|
+
let abortDeadline;
|
|
1588
1595
|
const cleanup = () => {
|
|
1596
|
+
if (abortDeadline !== undefined)
|
|
1597
|
+
clearTimeout(abortDeadline);
|
|
1598
|
+
signal?.removeEventListener('abort', aborted);
|
|
1589
1599
|
removeClaimed();
|
|
1590
1600
|
removeDiscarded();
|
|
1591
1601
|
removeSessionEvent();
|
|
@@ -1604,6 +1614,13 @@ export class DshDeliveryRuntime {
|
|
|
1604
1614
|
cleanup();
|
|
1605
1615
|
reject(error);
|
|
1606
1616
|
};
|
|
1617
|
+
const aborted = () => {
|
|
1618
|
+
// Let cooperative native cancellation persist its tool result and
|
|
1619
|
+
// turn/end before disposing. Uncooperative tools get only this grace.
|
|
1620
|
+
abortDeadline ??= setTimeout(() => fail(signal?.reason
|
|
1621
|
+
?? new Error('assistant-delivery: execution aborted')), 1_000);
|
|
1622
|
+
abortDeadline.unref?.();
|
|
1623
|
+
};
|
|
1607
1624
|
const removeClaimed = this.ctx.on('agent/inbox/claimed', event => {
|
|
1608
1625
|
if (event.agent === agent && event.message.id === message.id) {
|
|
1609
1626
|
claimedTurn = event.turn;
|
|
@@ -1634,6 +1651,11 @@ export class DshDeliveryRuntime {
|
|
|
1634
1651
|
settle(claimedTurn);
|
|
1635
1652
|
}
|
|
1636
1653
|
});
|
|
1654
|
+
signal?.addEventListener('abort', aborted, { once: true });
|
|
1655
|
+
if (signal?.aborted) {
|
|
1656
|
+
fail(signal.reason);
|
|
1657
|
+
return;
|
|
1658
|
+
}
|
|
1637
1659
|
try {
|
|
1638
1660
|
if (admit === undefined)
|
|
1639
1661
|
agent.followup(message);
|
|
@@ -1756,7 +1778,7 @@ export class DshDeliveryRuntime {
|
|
|
1756
1778
|
return await this.followupTurn(agent, message, onClaimed, () => {
|
|
1757
1779
|
exactTurnSettled = true;
|
|
1758
1780
|
releaseToolBarriers();
|
|
1759
|
-
});
|
|
1781
|
+
}, undefined, signal);
|
|
1760
1782
|
}
|
|
1761
1783
|
catch (error) {
|
|
1762
1784
|
if (signal.aborted)
|
|
@@ -3414,8 +3436,15 @@ export class DshDeliveryRuntime {
|
|
|
3414
3436
|
throw error;
|
|
3415
3437
|
}
|
|
3416
3438
|
let control;
|
|
3439
|
+
let taskDeadline;
|
|
3417
3440
|
try {
|
|
3418
3441
|
control = this.beginSessionControl(binding.sessionId, lease.signal);
|
|
3442
|
+
taskDeadline = setTimeout(() => {
|
|
3443
|
+
// Cancel the durable lease as well as the local wait: late tools and
|
|
3444
|
+
// model requests must remain fenced until real teardown is observed.
|
|
3445
|
+
lease.cancel(new AgentTaskTimeoutError());
|
|
3446
|
+
}, this.options.taskTimeoutMs);
|
|
3447
|
+
taskDeadline.unref?.();
|
|
3419
3448
|
lease.dispatch();
|
|
3420
3449
|
return await this.processControlled(binding, envelope, control.controller.signal, sessionCommand, prepared, markDispatching === undefined ? undefined : () => {
|
|
3421
3450
|
lease.assert();
|
|
@@ -3436,6 +3465,8 @@ export class DshDeliveryRuntime {
|
|
|
3436
3465
|
throw error;
|
|
3437
3466
|
}
|
|
3438
3467
|
finally {
|
|
3468
|
+
if (taskDeadline !== undefined)
|
|
3469
|
+
clearTimeout(taskDeadline);
|
|
3439
3470
|
if (control !== undefined)
|
|
3440
3471
|
this.endSessionControl(binding.sessionId, control);
|
|
3441
3472
|
lease.close();
|
|
@@ -3564,6 +3595,7 @@ export class DshDeliveryRuntime {
|
|
|
3564
3595
|
let foregroundExecution;
|
|
3565
3596
|
let removeAcceptanceRequest;
|
|
3566
3597
|
let acceptanceSucceeded = false;
|
|
3598
|
+
let completionPending = false;
|
|
3567
3599
|
let goalContinuation;
|
|
3568
3600
|
let goalContinuationQuiescent = true;
|
|
3569
3601
|
let removeAbort;
|
|
@@ -3572,15 +3604,36 @@ export class DshDeliveryRuntime {
|
|
|
3572
3604
|
let restartRun;
|
|
3573
3605
|
let restartCheckpoint;
|
|
3574
3606
|
let progressQueue = Promise.resolve();
|
|
3607
|
+
let progressTerminal = false;
|
|
3608
|
+
const drainProgress = async () => {
|
|
3609
|
+
let timeout;
|
|
3610
|
+
try {
|
|
3611
|
+
await Promise.race([progressQueue, new Promise(resolve => {
|
|
3612
|
+
timeout = setTimeout(resolve, 5_000);
|
|
3613
|
+
timeout.unref?.();
|
|
3614
|
+
})]);
|
|
3615
|
+
}
|
|
3616
|
+
finally {
|
|
3617
|
+
if (timeout !== undefined)
|
|
3618
|
+
clearTimeout(timeout);
|
|
3619
|
+
}
|
|
3620
|
+
};
|
|
3575
3621
|
const publishProgress = (update) => {
|
|
3576
|
-
|
|
3622
|
+
const terminal = update.kind === 'completed' || update.kind === 'failed' || update.kind === 'paused';
|
|
3623
|
+
if ((!progressOpen && !terminal) || progressTerminal)
|
|
3577
3624
|
return;
|
|
3578
|
-
|
|
3579
|
-
|
|
3580
|
-
|
|
3625
|
+
if (terminal)
|
|
3626
|
+
progressTerminal = true;
|
|
3627
|
+
const publish = async () => {
|
|
3628
|
+
if ((!terminal && progressTerminal) || checkAuthorization() !== 'authorized')
|
|
3581
3629
|
return;
|
|
3582
3630
|
await this.options.progress(binding, envelope.eventId, update);
|
|
3583
|
-
}
|
|
3631
|
+
};
|
|
3632
|
+
// Terminal journaling must not wait behind a slow provider's step updates.
|
|
3633
|
+
// The adapter preserves provider ordering after staging the durable result.
|
|
3634
|
+
progressQueue = (terminal
|
|
3635
|
+
? Promise.all([progressQueue, publish()]).then(() => { })
|
|
3636
|
+
: progressQueue.then(publish))
|
|
3584
3637
|
// Progress is presentation-only: its provider failure must never retry an Agent turn.
|
|
3585
3638
|
.catch(() => { });
|
|
3586
3639
|
};
|
|
@@ -3715,26 +3768,14 @@ export class DshDeliveryRuntime {
|
|
|
3715
3768
|
this.sessionLeases.assert(String(agent.session.id));
|
|
3716
3769
|
restart.onContinuationAdmitted(restartContinuation, String(agent.session.id));
|
|
3717
3770
|
},
|
|
3718
|
-
}));
|
|
3771
|
+
}), signal);
|
|
3719
3772
|
if (restartRun?.requested() !== undefined) {
|
|
3720
3773
|
await this.waitForAgentIdle(agent, signal);
|
|
3721
3774
|
restartCheckpoint = await restartRun.checkpoint();
|
|
3722
3775
|
this.options.replyCommand(binding, envelope.eventId, {
|
|
3723
3776
|
text: '已保存当前任务,准备进行维护重启;服务就绪后会自动继续,无需重新发送请求。', format: 'plain',
|
|
3724
3777
|
}, `inbound:${foregroundExecution}:maintenance`);
|
|
3725
|
-
|
|
3726
|
-
// Presentation failure cannot leave the task stuck before the durable handoff.
|
|
3727
|
-
let progressTimeout;
|
|
3728
|
-
try {
|
|
3729
|
-
await Promise.race([progressQueue, new Promise(resolve => {
|
|
3730
|
-
progressTimeout = setTimeout(resolve, 5_000);
|
|
3731
|
-
progressTimeout.unref?.();
|
|
3732
|
-
})]);
|
|
3733
|
-
}
|
|
3734
|
-
finally {
|
|
3735
|
-
if (progressTimeout !== undefined)
|
|
3736
|
-
clearTimeout(progressTimeout);
|
|
3737
|
-
}
|
|
3778
|
+
// Publish the maintenance handoff only after teardown and ready commit.
|
|
3738
3779
|
return { outcome: 'processed' };
|
|
3739
3780
|
}
|
|
3740
3781
|
let completionKind;
|
|
@@ -3930,7 +3971,7 @@ export class DshDeliveryRuntime {
|
|
|
3930
3971
|
goalContinuationQuiescent = await goalContinuation.settle();
|
|
3931
3972
|
}
|
|
3932
3973
|
signal.throwIfAborted();
|
|
3933
|
-
|
|
3974
|
+
completionPending = true;
|
|
3934
3975
|
acceptanceSucceeded = goalContinuationQuiescent;
|
|
3935
3976
|
return { outcome: 'processed' };
|
|
3936
3977
|
}
|
|
@@ -3944,7 +3985,13 @@ export class DshDeliveryRuntime {
|
|
|
3944
3985
|
return { outcome: 'processed' };
|
|
3945
3986
|
}
|
|
3946
3987
|
if (dispatched) {
|
|
3947
|
-
|
|
3988
|
+
const timedOut = signal.reason instanceof AgentTaskTimeoutError;
|
|
3989
|
+
publishProgress({ kind: 'failed', ...(timedOut
|
|
3990
|
+
? { code: 'agent-task-timeout' } : {}) });
|
|
3991
|
+
// Preserve an exact durable diagnosis so the existing interruption
|
|
3992
|
+
// Outbox can notify the owner even when progress presentation failed.
|
|
3993
|
+
if (timedOut)
|
|
3994
|
+
return { outcome: 'not-processed', failureCode: 'agent-task-timeout', retryable: false };
|
|
3948
3995
|
throw new Error(`assistant-delivery: Agent turn became ambiguous: ${String(error)}`, { cause: error });
|
|
3949
3996
|
}
|
|
3950
3997
|
if (causedByDurableIdentity(error)) {
|
|
@@ -3992,8 +4039,10 @@ export class DshDeliveryRuntime {
|
|
|
3992
4039
|
removeProgress?.();
|
|
3993
4040
|
progressOpen = false;
|
|
3994
4041
|
let disposed = false;
|
|
4042
|
+
let maintenanceReady = false;
|
|
3995
4043
|
try {
|
|
3996
|
-
disposed = await this.disposeAfterReplyBoundary(binding.sessionId, handle, () => goalContinuation?.dispose(), !goalContinuationQuiescent, restartCheckpoint === undefined && restartContinuation === undefined
|
|
4044
|
+
disposed = await this.disposeAfterReplyBoundary(binding.sessionId, handle, () => goalContinuation?.dispose(), !goalContinuationQuiescent, restartCheckpoint === undefined && restartContinuation === undefined
|
|
4045
|
+
? goalContinuation?.teardownTimeoutMs() ?? 10_000 : 10_000);
|
|
3997
4046
|
}
|
|
3998
4047
|
finally {
|
|
3999
4048
|
acceptanceSucceeded = acceptanceSucceeded && disposed && !signal.aborted
|
|
@@ -4005,6 +4054,7 @@ export class DshDeliveryRuntime {
|
|
|
4005
4054
|
});
|
|
4006
4055
|
}
|
|
4007
4056
|
catch (error) {
|
|
4057
|
+
acceptanceSucceeded = false;
|
|
4008
4058
|
this.ctx.logger.warn(`assistant-delivery: foreground execution completion failed: ${String(error)}`);
|
|
4009
4059
|
}
|
|
4010
4060
|
}
|
|
@@ -4014,8 +4064,10 @@ export class DshDeliveryRuntime {
|
|
|
4014
4064
|
restart.store.fail(unfinished.id, 'restart-checkpoint-failed');
|
|
4015
4065
|
}
|
|
4016
4066
|
if (restart !== undefined && restartCheckpoint !== undefined) {
|
|
4017
|
-
if (disposed && !signal.aborted && restart.authorize(restartCheckpoint))
|
|
4067
|
+
if (disposed && !signal.aborted && restart.authorize(restartCheckpoint)) {
|
|
4018
4068
|
restart.store.ready(restartCheckpoint.id);
|
|
4069
|
+
maintenanceReady = true;
|
|
4070
|
+
}
|
|
4019
4071
|
else
|
|
4020
4072
|
restart.store.fail(restartCheckpoint.id, 'restart-teardown-not-quiescent');
|
|
4021
4073
|
}
|
|
@@ -4039,6 +4091,16 @@ export class DshDeliveryRuntime {
|
|
|
4039
4091
|
this.ctx.logger.warn(`assistant-delivery: acceptance completion failed: ${String(error)}`);
|
|
4040
4092
|
}
|
|
4041
4093
|
}
|
|
4094
|
+
// A provider-confirmed success cannot precede the durable execution
|
|
4095
|
+
// result: teardown can still fail after the final reply was queued.
|
|
4096
|
+
if (restartCheckpoint !== undefined)
|
|
4097
|
+
publishProgress(maintenanceReady
|
|
4098
|
+
? { kind: 'paused' } : { kind: 'failed', code: 'INTERRUPTED_RESULT_UNKNOWN' });
|
|
4099
|
+
else if (completionPending)
|
|
4100
|
+
publishProgress(acceptanceSucceeded
|
|
4101
|
+
? { kind: 'completed' } : { kind: 'failed', code: 'INTERRUPTED_RESULT_UNKNOWN' });
|
|
4102
|
+
// Terminal journal admission precedes the bounded provider drain.
|
|
4103
|
+
await drainProgress();
|
|
4042
4104
|
}
|
|
4043
4105
|
}
|
|
4044
4106
|
}
|