@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 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 仅发送本次维护通知并等待已有发送结算,已接收的控制命令仍可撤销恢复。恢复过程中原任务不被标为成功。
@@ -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":"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"}
@@ -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
- if (!progressOpen)
3622
+ const terminal = update.kind === 'completed' || update.kind === 'failed' || update.kind === 'paused';
3623
+ if ((!progressOpen && !terminal) || progressTerminal)
3577
3624
  return;
3578
- progressQueue = progressQueue
3579
- .then(async () => {
3580
- if (checkAuthorization() !== 'authorized')
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
- publishProgress({ kind: 'paused' });
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
- publishProgress({ kind: 'completed' });
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
- publishProgress({ kind: 'failed' });
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 ? goalContinuation?.teardownTimeoutMs() : 10_000);
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
  }