@migor/agentia 0.6.3 → 0.7.1

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 (76) hide show
  1. package/CHANGELOG.md +250 -1
  2. package/README.en.md +4 -1
  3. package/README.md +23 -1
  4. package/dist/AGENTS.md +211 -24
  5. package/dist/container/container.d.ts +8 -1
  6. package/dist/container/container.js +8 -1
  7. package/dist/container/container.js.map +1 -1
  8. package/dist/core/run.d.ts +5 -1
  9. package/dist/core/timeout.d.ts +8 -0
  10. package/dist/core/timeout.js +14 -3
  11. package/dist/core/timeout.js.map +1 -1
  12. package/dist/core/tool.d.ts +64 -0
  13. package/dist/engine/budget.d.ts +17 -4
  14. package/dist/engine/budget.js +3 -3
  15. package/dist/engine/budget.js.map +1 -1
  16. package/dist/engine/loop.d.ts +7 -0
  17. package/dist/engine/loop.js +102 -6
  18. package/dist/engine/loop.js.map +1 -1
  19. package/dist/engine/spec.d.ts +18 -2
  20. package/dist/engine/spec.js.map +1 -1
  21. package/dist/engine/tracer.d.ts +11 -0
  22. package/dist/engine/tracer.js +25 -12
  23. package/dist/engine/tracer.js.map +1 -1
  24. package/dist/engine/turn.d.ts +25 -3
  25. package/dist/engine/turn.js +63 -4
  26. package/dist/engine/turn.js.map +1 -1
  27. package/dist/engine/types.d.ts +28 -1
  28. package/dist/engine/types.js.map +1 -1
  29. package/dist/index.d.ts +4 -4
  30. package/dist/index.js +4 -3
  31. package/dist/index.js.map +1 -1
  32. package/dist/integrations/anthropic.js +50 -5
  33. package/dist/integrations/anthropic.js.map +1 -1
  34. package/dist/integrations/mcp.d.ts +116 -11
  35. package/dist/integrations/mcp.js +523 -2
  36. package/dist/integrations/mcp.js.map +1 -1
  37. package/dist/integrations/metrics.d.ts +15 -0
  38. package/dist/integrations/metrics.js +114 -77
  39. package/dist/integrations/metrics.js.map +1 -1
  40. package/dist/integrations/openai.js +46 -0
  41. package/dist/integrations/openai.js.map +1 -1
  42. package/dist/integrations/otlp.js +15 -6
  43. package/dist/integrations/otlp.js.map +1 -1
  44. package/dist/runtime/run.d.ts +6 -0
  45. package/dist/runtime/run.js +23 -0
  46. package/dist/runtime/run.js.map +1 -1
  47. package/dist/store/fsStore.d.ts +2 -1
  48. package/dist/store/fsStore.js +15 -4
  49. package/dist/store/fsStore.js.map +1 -1
  50. package/dist/store/sqliteStore.js +7 -5
  51. package/dist/store/sqliteStore.js.map +1 -1
  52. package/dist/store/store.d.ts +17 -1
  53. package/dist/store/store.js +3 -2
  54. package/dist/store/store.js.map +1 -1
  55. package/dist/toolkit/asset.d.ts +3 -2
  56. package/dist/toolkit/asset.js +11 -2
  57. package/dist/toolkit/asset.js.map +1 -1
  58. package/dist/toolkit/module.d.ts +3 -2
  59. package/dist/toolkit/module.js +3 -0
  60. package/dist/toolkit/module.js.map +1 -1
  61. package/dist/toolkit/skill.js +46 -8
  62. package/dist/toolkit/skill.js.map +1 -1
  63. package/dist/toolkit/subagent.js +26 -1
  64. package/dist/toolkit/subagent.js.map +1 -1
  65. package/dist/toolkit/tool.d.ts +6 -0
  66. package/dist/toolkit/tool.js +1 -0
  67. package/dist/toolkit/tool.js.map +1 -1
  68. package/dist/transport/async.d.ts +74 -1
  69. package/dist/transport/async.js +257 -12
  70. package/dist/transport/async.js.map +1 -1
  71. package/dist/transport/http.d.ts +5 -0
  72. package/dist/transport/http.js +74 -2
  73. package/dist/transport/http.js.map +1 -1
  74. package/dist/transport/scheduler.js +33 -2
  75. package/dist/transport/scheduler.js.map +1 -1
  76. package/package.json +8 -4
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/toolkit/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAgCxF,sDAAsD;AACtD,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAA6C,IAAiB;IAChF,OAAO,CACL,KAAgD,EAChD,OAAmC,EAC7B,EAAE;QACR,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,qDAAqD;QACrD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAgB,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CACrE,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,GAAoB,EAAE,IAAc;IACvE,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CACV,QAAqE,CAAC,GAAG,CAAC,EAC3E,QAAQ,EACR,CAAC,KAAK,CAAC,CACR;KACJ,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/toolkit/tool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAsCxF,sDAAsD;AACtD,MAAM,SAAS,GAAG,IAAI,OAAO,EAAsB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,IAAI,CAA6C,IAAiB;IAChF,OAAO,CACL,KAAgD,EAChD,OAAmC,EAC7B,EAAE;QACR,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACrC,qDAAqD;QACrD,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAgB,CAAC,CAAC;IACzC,CAAC,CAAC;AACJ,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,OAAO,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CACrE,SAAS,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAC/B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,GAAoB,EAAE,IAAc;IACvE,OAAO;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;QACxC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,IAAI,CAAC,MAAM;QACxB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,EAAE,CAAC,KAAc,EAAE,EAAE,CACtB,OAAO,CAAC,KAAK,CACV,QAAqE,CAAC,GAAG,CAAC,EAC3E,QAAQ,EACR,CAAC,KAAK,CAAC,CACR;KACJ,CAAC;AACJ,CAAC"}
@@ -8,6 +8,8 @@ import type { MaybePromise, TaskRecord, TaskStore } from '../store/store.js';
8
8
  * Agentia —— 异步任务宿主(spec §6.3 异步 / §6.5 确定性 / §6.6 换宿主不换语义)。
9
9
  *
10
10
  * - submit 即回(queued),后台驱动状态机 queued → running → succeeded/failed;
11
+ * 工具标了 `approval: 'required'` 时 run 可在回合间挂起为 **awaiting_approval**
12
+ * (HITL:非终态、不占并发槽、不触发 TaskSink.onFinished),`approve()` 给齐决定后恢复;
11
13
  * - **at-least-once 去重**:同一 idempotencyKey 重复 submit,若上一任务仍在
12
14
  * queued/running/succeeded 则直接返回既有记录,不重复执行(失败可重试新任务);
13
15
  * - run 记录落 TaskStore(v1 InMemoryTaskStore),trace 随 result 一同保留;
@@ -30,9 +32,36 @@ import type { MaybePromise, TaskRecord, TaskStore } from '../store/store.js';
30
32
  export interface TaskSink {
31
33
  onFinished(rec: TaskRecord): void | Promise<void>;
32
34
  }
35
+ /** `approve` 的入参:一批 tool_use_id → 批准/拒绝(理由可选) */
36
+ export type ApprovalDecisions = Record<string, {
37
+ approved: boolean;
38
+ reason?: string;
39
+ }>;
40
+ /**
41
+ * `approve` 的失败:带 HTTP 语义的状态码(404 = 任务不存在,409 = 任务当前不在
42
+ * `awaiting_approval` 状态),HTTP 宿主据此回对应响应。
43
+ * module 级 export —— 不进公共导出面(纯宿主内部实现细节)。
44
+ */
45
+ export declare class TaskApproveError extends Error {
46
+ readonly status: 404 | 409;
47
+ constructor(status: 404 | 409, message: string);
48
+ }
33
49
  export interface AsyncRunnerOptions {
34
50
  client?: ModelClient;
35
51
  store?: TaskStore;
52
+ /**
53
+ * 会话历史 store(C4):配上之后,任务 `options.sessionId`(可序列化的会话引用)
54
+ * 在执行前被换成 `RunAppOptions.session`(store 实例 + id)注入 run ——
55
+ * 这是异步宿主上会话的**正式通道**(store 实例不可序列化,所以任务里只带 id、
56
+ * 实例由 runner 持有;同步宿主没有这一步,会话走程序内 `RunAppOptions.session`)。
57
+ *
58
+ * 不配它而任务带了 `sessionId` ⇒ submit 当场抛 `TaskInputError`(响亮失败,
59
+ * 不静默降级成「没有会话」)。
60
+ */
61
+ sessionStore?: {
62
+ load(sessionId: string): MessageParam[] | Promise<MessageParam[]>;
63
+ append(sessionId: string, messages: MessageParam[]): void | Promise<void>;
64
+ };
36
65
  /** 同时执行的任务上限;缺省不限。超出部分排队等槽位(状态保持 queued) */
37
66
  concurrency?: number;
38
67
  /** 任务完成回调(进程内);见 TaskSink */
@@ -47,6 +76,16 @@ export interface AsyncRunnerOptions {
47
76
  * 槽位无论如何立即回收;被放弃且仍在跑的任务会让实际并发短暂高于 concurrency。
48
77
  */
49
78
  runTimeoutMs?: number;
79
+ /**
80
+ * 审批等待超时(毫秒,HITL);缺省 0 = 不限(一直等人)。
81
+ *
82
+ * **惰性判定,不起定时器**:`approve` / `poll` / `resumePending` 读到一个
83
+ * `awaiting_approval` 任务时,若它挂起已超过该值,框架自动把**全部待决项**写成
84
+ * 「denied,reason: '审批超时'」并恢复执行(模型收到拒绝理由,可自行换路)。
85
+ * 也就是说超时只在「有人读它」时生效 —— 没人读的任务不会自己动(进程里不养定时器,
86
+ * 崩溃/重启也不依赖任何在飞回调)。
87
+ */
88
+ approvalTimeoutMs?: number;
50
89
  }
51
90
  /** resumePending 的启动扫描选项 */
52
91
  export interface ResumePendingOptions {
@@ -75,8 +114,10 @@ export declare class AsyncRunner {
75
114
  /** 本进程标识:写进认领的 TaskRecord.ownerId,供 resumePending 区分他我 */
76
115
  readonly ownerId: string;
77
116
  private readonly client;
117
+ private readonly sessionStore;
78
118
  private readonly concurrency;
79
119
  private readonly runTimeoutMs;
120
+ private readonly approvalTimeoutMs;
80
121
  private running;
81
122
  private readonly waitQueue;
82
123
  /** 已受理但未达终态的任务数(queued + running)—— /healthz 与 drain 共用 */
@@ -100,6 +141,29 @@ export declare class AsyncRunner {
100
141
  poll(taskId: string): MaybePromise<TaskRecord | undefined>;
101
142
  byIdempotency(key: string): MaybePromise<TaskRecord | undefined>;
102
143
  list(): MaybePromise<TaskRecord[]>;
144
+ /**
145
+ * 审批一个处于 `awaiting_approval` 的任务(HITL)。
146
+ *
147
+ * - **逐 tool_use_id 幂等**:已存在的决定不覆盖(第一次决定赢)—— 重复提交 /
148
+ * 并发点击不会推翻已有决定,也不会让恢复段重复执行;
149
+ * - **并发重入共享在飞那次**:同一任务的并发 approve(双击「批准」/两个审批人
150
+ * 同时批)返回同一个 Promise —— 否则两个调用都在对方落库前读到
151
+ * `awaiting_approval`、各自判「决定齐了」、**各派发一次**(同一任务重复执行,
152
+ * 与 resumePending 的闸门同一 bug 类)。被共享的那次覆盖不到的决定不丢:
153
+ * 调用方从返回的记录看到任务仍在等待,重试即并入;
154
+ * - 决定齐了就恢复:`status` 回 `running`、**先落库再派发**(与 `#redispatch`
155
+ * 同一条纪律 —— 没落库就恢复,进程崩在窗口里会丢决定);恢复段带着
156
+ * `rec.approvals` 与扩展后的消息历史(`rec.spec.messages`,末尾是含未决
157
+ * tool_use 的那条 assistant 消息)重进引擎循环;
158
+ * - 决定**没**齐:只把本批决定落库,任务继续等(可能多轮审批);
159
+ * - 返回当前 TaskRecord(快照)。任务不存在抛 404 语义、状态不对抛 409 语义
160
+ * 的 `TaskApproveError`。
161
+ */
162
+ approve(taskId: string, decisions: ApprovalDecisions, opts?: {
163
+ decidedBy?: string;
164
+ }): Promise<TaskRecord>;
165
+ /** 同一任务的在飞审批(approve 的重入闸,见上)。 */
166
+ private readonly inflightApprovals;
103
167
  /** 已受理但未达终态的任务数(queued + running)—— 健康检查与 drain 共用同一口径 */
104
168
  get inFlight(): number;
105
169
  /** 是否已进入优雅停机(drain 之后为 true)—— HTTP 宿主据此对新单回 503 */
@@ -115,7 +179,7 @@ export declare class AsyncRunner {
115
179
  drain(opts?: {
116
180
  timeoutMs?: number;
117
181
  }): Promise<boolean>;
118
- /** 等到任务终态;超时抛错。 */
182
+ /** 等到任务终态;超时抛错。`awaiting_approval` 不是终态 —— 继续等(人在路上)。 */
119
183
  awaitTask(taskId: string, opts?: {
120
184
  timeoutMs?: number;
121
185
  intervalMs?: number;
@@ -125,6 +189,10 @@ export declare class AsyncRunner {
125
189
  * (running 视为进程中断)。返回重派数量(异步 store 下返回 Promise<number>)。
126
190
  * 幂等键去重照常生效。
127
191
  *
192
+ * `awaiting_approval`(HITL)**不捡**:它在等人、不是孤儿(进程没死也可能挂着)。
193
+ * 但读到它会做**惰性超时判定**:配了 `approvalTimeoutMs` 且已超时的挂起任务
194
+ * 自动全拒(`denied, reason: '审批超时'`)并重派。
195
+ *
128
196
  * **认领先落库、再派发**(见 `#redispatch`);异步 store 的认领落库失败会让本方法
129
197
  * reject —— 宁可让调用方看见「续跑没做」,也不要静默放出一批会被重复执行的任务。
130
198
  *
@@ -134,4 +202,9 @@ export declare class AsyncRunner {
134
202
  * (大概正被那个进程执行)。缺省 0 = 不判断、一律重派(单进程旧语义)。
135
203
  */
136
204
  resumePending(opts?: ResumePendingOptions): number | Promise<number>;
205
+ /**
206
+ * 在飞的 `resumePending`(重入闸,见上)。不用 boolean 而用 Promise:
207
+ * 重入方要拿到**同一次扫描**的结果,而不是一个「你等着」的空数。
208
+ */
209
+ private inflightResume;
137
210
  }
@@ -1,16 +1,31 @@
1
1
  import { randomUUID } from 'node:crypto';
2
2
  import { classifyError } from '../engine/errors.js';
3
- import { normalizeMessages } from '../engine/spec.js';
3
+ import { normalizeMessages, TaskInputError } from '../engine/spec.js';
4
4
  import { InMemoryTaskStore, isThenable, nextTaskId } from '../store/store.js';
5
5
  import { combineSignals, releaseCombinedSignal } from '../core/abort.js';
6
+ /**
7
+ * `approve` 的失败:带 HTTP 语义的状态码(404 = 任务不存在,409 = 任务当前不在
8
+ * `awaiting_approval` 状态),HTTP 宿主据此回对应响应。
9
+ * module 级 export —— 不进公共导出面(纯宿主内部实现细节)。
10
+ */
11
+ export class TaskApproveError extends Error {
12
+ status;
13
+ constructor(status, message) {
14
+ super(message);
15
+ this.name = 'TaskApproveError';
16
+ this.status = status;
17
+ }
18
+ }
6
19
  export class AsyncRunner {
7
20
  app;
8
21
  store;
9
22
  /** 本进程标识:写进认领的 TaskRecord.ownerId,供 resumePending 区分他我 */
10
23
  ownerId;
11
24
  client;
25
+ sessionStore;
12
26
  concurrency;
13
27
  runTimeoutMs;
28
+ approvalTimeoutMs;
14
29
  running = 0;
15
30
  waitQueue = [];
16
31
  /** 已受理但未达终态的任务数(queued + running)—— /healthz 与 drain 共用 */
@@ -24,6 +39,7 @@ export class AsyncRunner {
24
39
  this.app = app;
25
40
  this.store = opts.store ?? new InMemoryTaskStore();
26
41
  this.client = opts.client;
42
+ this.sessionStore = opts.sessionStore;
27
43
  this.taskSinks = opts.taskSinks ?? [];
28
44
  this.concurrency = opts.concurrency ?? Number.POSITIVE_INFINITY;
29
45
  if (!(this.concurrency > 0)) {
@@ -35,6 +51,11 @@ export class AsyncRunner {
35
51
  // (且 NaN 会绕过 `< 0` 检查静默通过)。要「不限」请传 0(缺省)。
36
52
  throw new Error(`runTimeoutMs 必须为 ≥ 0 的有限数(0 = 不限),收到 ${opts.runTimeoutMs}`);
37
53
  }
54
+ this.approvalTimeoutMs = opts.approvalTimeoutMs ?? 0;
55
+ if (!Number.isFinite(this.approvalTimeoutMs) || this.approvalTimeoutMs < 0) {
56
+ // 同 runTimeoutMs:非有限数会让「已挂起多久」的比较静默失效或立即超时
57
+ throw new Error(`approvalTimeoutMs 必须为 ≥ 0 的有限数(0 = 不限),收到 ${opts.approvalTimeoutMs}`);
58
+ }
38
59
  this.ownerId = `p${process.pid}-${randomUUID().slice(0, 8)}`;
39
60
  }
40
61
  /**
@@ -49,6 +70,12 @@ export class AsyncRunner {
49
70
  throw new Error('runner 正在优雅停机,不再接受新任务');
50
71
  }
51
72
  const messages = normalizeMessages(input);
73
+ if (opts.options?.sessionId !== undefined && this.sessionStore === undefined) {
74
+ // 响亮失败:调用方明着要会话语义,静默降级成「没有会话」是最难查的那种错。
75
+ // 注意 import 的是 spec.js 的 TaskInputError —— HTTP 宿主据此回 400(调用方的错)。
76
+ throw new TaskInputError('任务带了 options.sessionId,但本 runner 未配 sessionStore —— 会话历史接不上;' +
77
+ '给 AsyncRunner 传 sessionStore,或去掉 sessionId');
78
+ }
52
79
  if (opts.idempotencyKey) {
53
80
  const existing = this.store.byIdempotency(opts.idempotencyKey);
54
81
  if (isThenable(existing)) {
@@ -90,7 +117,11 @@ export class AsyncRunner {
90
117
  }
91
118
  /** 查任务当前记录(异步 store 下返回 Promise,调用方 await) */
92
119
  poll(taskId) {
93
- return this.store.get(taskId);
120
+ const rec = this.store.get(taskId);
121
+ // 惰性审批超时(HITL):读到 awaiting 记录时顺手判定 —— 到点就自动全拒并重派
122
+ if (isThenable(rec))
123
+ return rec.then((r) => this.#lazyExpireApproval(r));
124
+ return this.#lazyExpireApproval(rec);
94
125
  }
95
126
  byIdempotency(key) {
96
127
  return this.store.byIdempotency(key);
@@ -98,6 +129,74 @@ export class AsyncRunner {
98
129
  list() {
99
130
  return this.store.list();
100
131
  }
132
+ /**
133
+ * 审批一个处于 `awaiting_approval` 的任务(HITL)。
134
+ *
135
+ * - **逐 tool_use_id 幂等**:已存在的决定不覆盖(第一次决定赢)—— 重复提交 /
136
+ * 并发点击不会推翻已有决定,也不会让恢复段重复执行;
137
+ * - **并发重入共享在飞那次**:同一任务的并发 approve(双击「批准」/两个审批人
138
+ * 同时批)返回同一个 Promise —— 否则两个调用都在对方落库前读到
139
+ * `awaiting_approval`、各自判「决定齐了」、**各派发一次**(同一任务重复执行,
140
+ * 与 resumePending 的闸门同一 bug 类)。被共享的那次覆盖不到的决定不丢:
141
+ * 调用方从返回的记录看到任务仍在等待,重试即并入;
142
+ * - 决定齐了就恢复:`status` 回 `running`、**先落库再派发**(与 `#redispatch`
143
+ * 同一条纪律 —— 没落库就恢复,进程崩在窗口里会丢决定);恢复段带着
144
+ * `rec.approvals` 与扩展后的消息历史(`rec.spec.messages`,末尾是含未决
145
+ * tool_use 的那条 assistant 消息)重进引擎循环;
146
+ * - 决定**没**齐:只把本批决定落库,任务继续等(可能多轮审批);
147
+ * - 返回当前 TaskRecord(快照)。任务不存在抛 404 语义、状态不对抛 409 语义
148
+ * 的 `TaskApproveError`。
149
+ */
150
+ async approve(taskId, decisions, opts = {}) {
151
+ const inflight = this.inflightApprovals.get(taskId);
152
+ if (inflight)
153
+ return inflight;
154
+ const run = this.#approveInner(taskId, decisions, opts).finally(() => {
155
+ this.inflightApprovals.delete(taskId);
156
+ });
157
+ this.inflightApprovals.set(taskId, run);
158
+ return run;
159
+ }
160
+ /** 同一任务的在飞审批(approve 的重入闸,见上)。 */
161
+ inflightApprovals = new Map();
162
+ async #approveInner(taskId, decisions, opts) {
163
+ const rec = await this.store.get(taskId);
164
+ if (!rec)
165
+ throw new TaskApproveError(404, `task 不存在: ${taskId}`);
166
+ if (rec.status !== 'awaiting_approval') {
167
+ throw new TaskApproveError(409, `task ${taskId} 当前状态为 ${rec.status},只有 awaiting_approval 才能审批`);
168
+ }
169
+ const now = Date.now();
170
+ rec.approvals ??= {};
171
+ for (const [id, d] of Object.entries(decisions)) {
172
+ if (rec.approvals[id])
173
+ continue; // 逐 id 幂等:第一次决定赢
174
+ rec.approvals[id] = {
175
+ approved: d.approved,
176
+ ...(d.reason !== undefined ? { reason: d.reason } : {}),
177
+ ...(opts.decidedBy !== undefined ? { decidedBy: opts.decidedBy } : {}),
178
+ decidedAt: now,
179
+ ...(rec.approvalPendingSince !== undefined
180
+ ? { requestedAt: rec.approvalPendingSince }
181
+ : {}),
182
+ };
183
+ }
184
+ // 惰性审批超时:人的决定先并入(先到先赢),仍空着的待决项由超时兜底成 deny
185
+ if (this.#approvalExpired(rec, now))
186
+ this.#fillTimeoutDenials(rec, now);
187
+ const complete = (rec.pendingApprovals ?? []).every((id) => rec.approvals?.[id] !== undefined);
188
+ if (complete) {
189
+ rec.status = 'running'; // 由 #executeInner 接管(acquireSlot → 恢复执行)
190
+ rec.ownerId = this.ownerId;
191
+ }
192
+ // 先落库再派发 —— **真纪律,不是注释**:save 失败(同步抛 / 异步 reject)就
193
+ // 绝不恢复执行(落不了库的决定不算决定:进程崩在窗口里会丢决定,重启后把
194
+ // 同一件事再判一次、可能改判)。调用方拿到 reject,重试即可。
195
+ await this.store.save(rec);
196
+ if (complete)
197
+ void this.#execute(rec);
198
+ return { ...rec };
199
+ }
101
200
  /** 已受理但未达终态的任务数(queued + running)—— 健康检查与 drain 共用同一口径 */
102
201
  get inFlight() {
103
202
  return this.active;
@@ -139,6 +238,69 @@ export class AsyncRunner {
139
238
  clearTimeout(timer);
140
239
  }
141
240
  }
241
+ /**
242
+ * 审批超时判定(HITL,**惰性**:不起定时器,只在 approve / poll / resumePending
243
+ * 读到 awaiting 记录时判)。基准是 `approvalPendingSince`(挂起时刻,挂起时落库);
244
+ * 缺失时按 startedAt → createdAt 退化(容忍手工塞进来的记录)。
245
+ */
246
+ #approvalExpired(rec, now) {
247
+ return (this.approvalTimeoutMs > 0 &&
248
+ rec.status === 'awaiting_approval' &&
249
+ now - (rec.approvalPendingSince ?? rec.startedAt ?? rec.createdAt) > this.approvalTimeoutMs);
250
+ }
251
+ /**
252
+ * 超时自动拒绝:**仍空着的**待决项补上 deny(已有人工决定的不覆盖 —— 第一次决定赢)。
253
+ * 决定写到 `rec.approvals`,由调用方负责落库与重派。
254
+ */
255
+ #fillTimeoutDenials(rec, now) {
256
+ rec.approvals ??= {};
257
+ for (const id of rec.pendingApprovals ?? []) {
258
+ if (rec.approvals[id])
259
+ continue;
260
+ rec.approvals[id] = {
261
+ approved: false,
262
+ reason: '审批超时',
263
+ decidedBy: 'system',
264
+ decidedAt: now,
265
+ ...(rec.approvalPendingSince !== undefined
266
+ ? { requestedAt: rec.approvalPendingSince }
267
+ : {}),
268
+ };
269
+ }
270
+ }
271
+ /**
272
+ * 惰性超时扫描(HITL):读到一个已超时的 awaiting 任务 ⇒ 自动全拒 + 落库 + 重派。
273
+ * 与 #redispatch 同一条纪律:**先落库再派发**(没落库就恢复,进程崩在窗口里会
274
+ * 丢掉超时决定、把同一件事再判一次)。
275
+ */
276
+ #expireAndResume(rec, now) {
277
+ this.#fillTimeoutDenials(rec, now);
278
+ rec.status = 'running';
279
+ rec.ownerId = this.ownerId;
280
+ let saved;
281
+ try {
282
+ saved = this.store.save(rec);
283
+ }
284
+ catch {
285
+ return; // 同步落库失败则不派发(与下一条异步分支同纪律:先落库再派发)
286
+ }
287
+ if (isThenable(saved)) {
288
+ // 落库失败则不派发(认领没落地就派发 = 重新打开重复执行窗口)
289
+ saved.then(() => void this.#execute(rec)).catch(() => undefined);
290
+ }
291
+ else {
292
+ void this.#execute(rec);
293
+ }
294
+ }
295
+ /** poll 的读路径钩子:读到 awaiting 且已超时 ⇒ 惰性判掉(见 #approvalExpired) */
296
+ #lazyExpireApproval(rec) {
297
+ if (!rec)
298
+ return rec;
299
+ const now = Date.now();
300
+ if (this.#approvalExpired(rec, now))
301
+ this.#expireAndResume(rec, now);
302
+ return rec;
303
+ }
142
304
  /** 任务终态唤醒:在 #execute 的统一出口调用,覆盖成功 / 失败 / 采纳既有结果各路径 */
143
305
  #notifyTaskDone(taskId) {
144
306
  const waiters = this.#taskWaiters.get(taskId);
@@ -183,7 +345,7 @@ export class AsyncRunner {
183
345
  for (const w of waiters)
184
346
  w();
185
347
  }
186
- /** 等到任务终态;超时抛错。 */
348
+ /** 等到任务终态;超时抛错。`awaiting_approval` 不是终态 —— 继续等(人在路上)。 */
187
349
  async awaitTask(taskId, opts = {}) {
188
350
  const timeoutMs = opts.timeoutMs ?? 30_000;
189
351
  // intervalMs 现在只是**兜底轮询**间隔,不是主路径:本进程把任务写到终态会主动唤醒
@@ -193,7 +355,8 @@ export class AsyncRunner {
193
355
  const intervalMs = opts.intervalMs ?? 250;
194
356
  const deadline = Date.now() + timeoutMs;
195
357
  for (;;) {
196
- const rec = await this.store.get(taskId);
358
+ // 走 poll 而不是裸 store.get:惰性审批超时的判定挂在那里(HITL)
359
+ const rec = await this.poll(taskId);
197
360
  if (!rec)
198
361
  throw new Error(`task 不存在: ${taskId}`);
199
362
  if (rec.status === 'succeeded' || rec.status === 'failed')
@@ -209,6 +372,10 @@ export class AsyncRunner {
209
372
  * (running 视为进程中断)。返回重派数量(异步 store 下返回 Promise<number>)。
210
373
  * 幂等键去重照常生效。
211
374
  *
375
+ * `awaiting_approval`(HITL)**不捡**:它在等人、不是孤儿(进程没死也可能挂着)。
376
+ * 但读到它会做**惰性超时判定**:配了 `approvalTimeoutMs` 且已超时的挂起任务
377
+ * 自动全拒(`denied, reason: '审批超时'`)并重派。
378
+ *
212
379
  * **认领先落库、再派发**(见 `#redispatch`);异步 store 的认领落库失败会让本方法
213
380
  * reject —— 宁可让调用方看见「续跑没做」,也不要静默放出一批会被重复执行的任务。
214
381
  *
@@ -218,13 +385,43 @@ export class AsyncRunner {
218
385
  * (大概正被那个进程执行)。缺省 0 = 不判断、一律重派(单进程旧语义)。
219
386
  */
220
387
  resumePending(opts = {}) {
388
+ // 重入闸:**并发**调用共享同一次扫描的结果,而不是各自再扫一遍。
389
+ //
390
+ // 为什么必须(2026-09-18 补):「先落库再派发」只堵住了**串行**重扫 —— 认领是异步的
391
+ // (异步 store 的 `list()` 返回反序列化的**新对象**),两个并发调用都在任一 `save`
392
+ // 落地前 `list()` 到旧快照,`ownerId === this.ownerId` 的过滤对两份旧快照**双双失效**
393
+ // ⇒ 同一个任务被派发两次(`app.run` 重复执行,副作用与花费翻倍)。
394
+ //
395
+ // 语义:闸门期间返回**在飞那次的 Promise**(同一个数),而不是 0 —— 0 会谎称
396
+ // 「没派发任何东西」,而实际上派发了。调用方拿到的始终是本次扫描的真实结果。
397
+ if (this.inflightResume)
398
+ return this.inflightResume;
221
399
  const listed = this.store.list();
222
400
  const staleAfterMs = opts.staleAfterMs ?? 0;
223
401
  if (isThenable(listed)) {
224
- return listed.then((recs) => this.#redispatch(recs, staleAfterMs));
402
+ const run = Promise.resolve(listed)
403
+ .then((recs) => this.#redispatch(recs, staleAfterMs))
404
+ .finally(() => {
405
+ this.inflightResume = null;
406
+ });
407
+ this.inflightResume = run;
408
+ return run;
225
409
  }
226
- return this.#redispatch(listed, staleAfterMs);
410
+ const dispatched = this.#redispatch(listed, staleAfterMs);
411
+ if (isThenable(dispatched)) {
412
+ const run = Promise.resolve(dispatched).finally(() => {
413
+ this.inflightResume = null;
414
+ });
415
+ this.inflightResume = run;
416
+ return run;
417
+ }
418
+ return dispatched;
227
419
  }
420
+ /**
421
+ * 在飞的 `resumePending`(重入闸,见上)。不用 boolean 而用 Promise:
422
+ * 重入方要拿到**同一次扫描**的结果,而不是一个「你等着」的空数。
423
+ */
424
+ inflightResume = null;
228
425
  /**
229
426
  * 重新派发前**必须**先把 `ownerId` 认领落库 —— 否则「认领」只是内存里的一个记号。
230
427
  *
@@ -240,6 +437,16 @@ export class AsyncRunner {
240
437
  */
241
438
  #redispatch(recs, staleAfterMs) {
242
439
  const now = Date.now();
440
+ // 惰性审批超时扫描(HITL):awaiting_approval **不捡走续跑**(它在等人,不是
441
+ // 孤儿 —— 崩溃续跑语义不适用于「等审批」),但读到它时顺手判超时:
442
+ // 到点自动全拒并重派(框架补的 deny 决定先进 store,再进引擎)。
443
+ let expired = 0;
444
+ for (const rec of recs) {
445
+ if (rec.status !== 'awaiting_approval' || !this.#approvalExpired(rec, now))
446
+ continue;
447
+ expired++;
448
+ this.#expireAndResume(rec, now);
449
+ }
243
450
  const pending = recs.filter((r) => {
244
451
  if (r.status !== 'queued' && r.status !== 'running')
245
452
  return false;
@@ -266,8 +473,8 @@ export class AsyncRunner {
266
473
  }
267
474
  }
268
475
  if (claims.length === 0)
269
- return pending.length;
270
- return Promise.all(claims).then(() => pending.length);
476
+ return pending.length + expired;
477
+ return Promise.all(claims).then(() => pending.length + expired);
271
478
  }
272
479
  /**
273
480
  * 在飞计数包裹层:#executeInner 是状态机主体,这里只负责 active 计数与排空通知。
@@ -283,11 +490,14 @@ export class AsyncRunner {
283
490
  // 通知在飞递减**之前**:drain() 返回时保证「任务已终态 + 回调已发完」。
284
491
  // 内层 finally 保证回调万一抛错(理论上被吞掉)也不泄漏在飞计数。
285
492
  try {
286
- await this.#notifySinks(rec);
493
+ // HITL:挂起不是终态 —— onFinished 的承诺是「任务达终态」,对它不开火
494
+ if (rec.status !== 'awaiting_approval')
495
+ await this.#notifySinks(rec);
287
496
  }
288
497
  finally {
289
498
  this.active--;
290
- // 任务已达终态并落库 → 唤醒 awaitTask 的等待者(放在递减之后,语义与 drain 一致)
499
+ // 任务已达终态并落库 → 唤醒 awaitTask 的等待者(放在递减之后,语义与 drain 一致)。
500
+ // 挂起也唤醒:等待者看一眼状态继续等(awaiting_approval 不是终态),无副作用。
291
501
  this.#notifyTaskDone(rec.taskId);
292
502
  this.#notifyDrained();
293
503
  }
@@ -337,12 +547,22 @@ export class AsyncRunner {
337
547
  rec.startedAt = Date.now();
338
548
  await this.store.save(rec);
339
549
  try {
550
+ // 会话注入(C4 的异步通道):sessionId 是可序列化的引用,store 实例由
551
+ // runner 持有 —— 执行前在这里换成 RunAppOptions.session。resumed 记录
552
+ // 绕过 submit 的入口检查,所以「带了 sessionId 却没配 sessionStore」
553
+ // 在本路径也要响亮失败(不静默降级成「没有会话」)。
554
+ if (rec.spec.options?.sessionId !== undefined && this.sessionStore === undefined) {
555
+ throw new Error(`任务 ${rec.taskId} 带了 options.sessionId,但本 runner 未配 sessionStore`);
556
+ }
340
557
  // runTimeoutMs 到点即 abort(对尊重 signal 的客户端是真中止);与调用方
341
558
  // 可能传入的 signal 合成,任一触发都中止本次 run。
342
559
  const timeoutAc = new AbortController();
343
560
  const combined = combineSignals(rec.spec.options?.signal, timeoutAc.signal);
344
561
  const callOpts = {
345
562
  ...(rec.spec.options ?? {}),
563
+ ...(rec.spec.options?.sessionId !== undefined && this.sessionStore !== undefined
564
+ ? { session: { store: this.sessionStore, id: rec.spec.options.sessionId } }
565
+ : {}),
346
566
  // 显式 undefined ≠ 不传(exactOptionalPropertyTypes):无幂等键时不落这个键
347
567
  ...(rec.idempotencyKey !== undefined ? { idempotencyKey: rec.idempotencyKey } : {}),
348
568
  ...(rec.spec.options?.client !== undefined
@@ -350,15 +570,38 @@ export class AsyncRunner {
350
570
  : this.client !== undefined
351
571
  ? { client: this.client }
352
572
  : {}),
573
+ // HITL 恢复段:审批决定随任务落库,重跑时原样进引擎(进程重启不丢)
574
+ ...(rec.approvals !== undefined ? { approvals: rec.approvals } : {}),
575
+ // 恢复段的 trace 是一棵**新树**,经 traceContext link 挂到上一段 runId
576
+ // (spec §9.2 的入站关联机制)——「挂起段 → 恢复段 → …」在观测后端连成一条链。
577
+ // 判定依据:有决定且已有上一段 runId = 本次是恢复执行;首次执行两者皆无。
578
+ ...(rec.approvals !== undefined && rec.runId !== undefined
579
+ ? { traceContext: { traceId: rec.runId } }
580
+ : {}),
353
581
  rethrow: false, // 硬失败也以 failed 记录落库
354
582
  signal: combined,
355
583
  };
356
584
  try {
357
585
  const out = await this.#raceTimeout(this.app.run(rec.spec.messages, callOpts), rec.taskId, () => timeoutAc.abort());
358
586
  rec.runId = out.run.runId;
359
- rec.status = out.run.status;
360
587
  rec.result = out.result;
361
588
  rec.error = out.result.error;
589
+ if (out.result.stopReason === 'awaiting_approval' && out.result.suspendedMessages) {
590
+ // HITL 挂起:扩展后的消息历史(末尾是含未决 tool_use 的 assistant 消息)
591
+ // 与待决清单、挂起时刻一起落库 —— approve / 惰性超时 / 重启后都靠它们。
592
+ // 槽位照常释放(finally)、onFinished 不触发(#execute 的出口判断)、
593
+ // finishedAt 不置(下面 finally 里按状态跳过):它不是终态。
594
+ rec.status = 'awaiting_approval';
595
+ rec.spec = { ...rec.spec, messages: out.result.suspendedMessages };
596
+ rec.pendingApprovals = out.result.pendingApprovals;
597
+ rec.approvalPendingSince = Date.now();
598
+ }
599
+ else {
600
+ rec.status = out.run.status;
601
+ // 终态后清掉挂起痕迹(决定保留:审批记录是审计的一部分,随任务走)
602
+ rec.pendingApprovals = undefined;
603
+ rec.approvalPendingSince = undefined;
604
+ }
362
605
  }
363
606
  finally {
364
607
  // 正常收尾(没有源中止)时主动摘除挂在各源上的监听器 —— 宿主级共享
@@ -372,7 +615,9 @@ export class AsyncRunner {
372
615
  }
373
616
  }
374
617
  finally {
375
- rec.finishedAt = Date.now();
618
+ // HITL:挂起不是「完成」—— finishedAt 不置(等待中的任务没有结束时刻)
619
+ if (rec.status !== 'awaiting_approval')
620
+ rec.finishedAt = Date.now();
376
621
  // 落库失败不遮罩、槽位必须释放:释放放在内层 finally,即便落库实现抛错也必达
377
622
  try {
378
623
  await this.#safeSave(rec);
@@ -1 +1 @@
1
- {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/transport/async.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"async.js","sourceRoot":"","sources":["../../src/transport/async.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,11 @@ import type { RunStatus } from '../core/run.js';
21
21
  * - POST /tasks 异步任务。body { input, idempotencyKey?, options? } →
22
22
  * AsyncRunner.submit → 202 TaskRecord(queued,幂等键去重照常生效)。
23
23
  * - GET /tasks/<id> 轮询任务记录 → 200 TaskRecord;不存在 → 404。
24
+ * - POST /tasks/<id>/approve 人工审批(HITL)。body
25
+ * `{ decisions: { <tool_use_id>: { approved, reason? } }, decidedBy? }`
26
+ * → 200 TaskRecord;任务不存在 → 404;不在 awaiting_approval 状态 → 409;
27
+ * body 非法 → 400。**停机中仍可用**(与 GET 轮询同理由:
28
+ * 挂起的任务只有人能推进,停机不该连「批准」也拒掉)。
24
29
  * - GET /healthz 健康检查 → 200 { ok, inFlight, uptimeMs, draining };**不鉴权**
25
30
  * (探针不该带凭据)。停机中仍回 200(进程活着),就绪与否看 draining。
26
31
  *