@migor/agentia 0.7.0 → 0.7.2

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 (91) hide show
  1. package/CHANGELOG.md +198 -1
  2. package/README.md +1 -1
  3. package/dist/AGENTS.md +160 -16
  4. package/dist/container/container.d.ts +8 -1
  5. package/dist/container/container.js +8 -1
  6. package/dist/container/container.js.map +1 -1
  7. package/dist/core/run.d.ts +5 -1
  8. package/dist/core/timeout.d.ts +8 -0
  9. package/dist/core/timeout.js +14 -3
  10. package/dist/core/timeout.js.map +1 -1
  11. package/dist/core/tool.d.ts +64 -0
  12. package/dist/engine/budget.d.ts +17 -4
  13. package/dist/engine/budget.js +3 -3
  14. package/dist/engine/budget.js.map +1 -1
  15. package/dist/engine/loop.d.ts +7 -0
  16. package/dist/engine/loop.js +102 -6
  17. package/dist/engine/loop.js.map +1 -1
  18. package/dist/engine/spec.d.ts +18 -2
  19. package/dist/engine/spec.js.map +1 -1
  20. package/dist/engine/tracer.d.ts +11 -0
  21. package/dist/engine/tracer.js +25 -12
  22. package/dist/engine/tracer.js.map +1 -1
  23. package/dist/engine/turn.d.ts +25 -3
  24. package/dist/engine/turn.js +63 -4
  25. package/dist/engine/turn.js.map +1 -1
  26. package/dist/engine/types.d.ts +28 -1
  27. package/dist/engine/types.js.map +1 -1
  28. package/dist/index.d.ts +2 -2
  29. package/dist/index.js +1 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/integrations/anthropic.d.ts +5 -0
  32. package/dist/integrations/anthropic.js +57 -4
  33. package/dist/integrations/anthropic.js.map +1 -1
  34. package/dist/integrations/mcp-http.d.ts +43 -0
  35. package/dist/integrations/mcp-http.js +250 -0
  36. package/dist/integrations/mcp-http.js.map +1 -0
  37. package/dist/integrations/mcp-stdio.d.ts +46 -0
  38. package/dist/integrations/mcp-stdio.js +230 -0
  39. package/dist/integrations/mcp-stdio.js.map +1 -0
  40. package/dist/integrations/mcp.d.ts +46 -73
  41. package/dist/integrations/mcp.js +24 -421
  42. package/dist/integrations/mcp.js.map +1 -1
  43. package/dist/integrations/metrics-otlp.d.ts +42 -0
  44. package/dist/integrations/metrics-otlp.js +178 -0
  45. package/dist/integrations/metrics-otlp.js.map +1 -0
  46. package/dist/integrations/metrics-render.d.ts +2 -0
  47. package/dist/integrations/metrics-render.js +145 -0
  48. package/dist/integrations/metrics-render.js.map +1 -0
  49. package/dist/integrations/metrics-state.d.ts +191 -0
  50. package/dist/integrations/metrics-state.js +363 -0
  51. package/dist/integrations/metrics-state.js.map +1 -0
  52. package/dist/integrations/metrics.d.ts +3 -86
  53. package/dist/integrations/metrics.js +28 -650
  54. package/dist/integrations/metrics.js.map +1 -1
  55. package/dist/integrations/openai.js +25 -3
  56. package/dist/integrations/openai.js.map +1 -1
  57. package/dist/integrations/otlp.js +15 -6
  58. package/dist/integrations/otlp.js.map +1 -1
  59. package/dist/runtime/run.d.ts +6 -0
  60. package/dist/runtime/run.js +23 -0
  61. package/dist/runtime/run.js.map +1 -1
  62. package/dist/store/fsStore.d.ts +3 -2
  63. package/dist/store/fsStore.js +20 -6
  64. package/dist/store/fsStore.js.map +1 -1
  65. package/dist/store/sqliteStore.js +7 -5
  66. package/dist/store/sqliteStore.js.map +1 -1
  67. package/dist/store/store.d.ts +17 -1
  68. package/dist/store/store.js +3 -2
  69. package/dist/store/store.js.map +1 -1
  70. package/dist/toolkit/asset.d.ts +3 -2
  71. package/dist/toolkit/asset.js +11 -2
  72. package/dist/toolkit/asset.js.map +1 -1
  73. package/dist/toolkit/module.d.ts +3 -2
  74. package/dist/toolkit/module.js +3 -0
  75. package/dist/toolkit/module.js.map +1 -1
  76. package/dist/toolkit/skill.js +46 -8
  77. package/dist/toolkit/skill.js.map +1 -1
  78. package/dist/toolkit/subagent.js +26 -1
  79. package/dist/toolkit/subagent.js.map +1 -1
  80. package/dist/toolkit/tool.d.ts +6 -0
  81. package/dist/toolkit/tool.js +1 -0
  82. package/dist/toolkit/tool.js.map +1 -1
  83. package/dist/transport/async.d.ts +81 -1
  84. package/dist/transport/async.js +323 -11
  85. package/dist/transport/async.js.map +1 -1
  86. package/dist/transport/http.d.ts +5 -0
  87. package/dist/transport/http.js +74 -2
  88. package/dist/transport/http.js.map +1 -1
  89. package/dist/transport/scheduler.js +33 -2
  90. package/dist/transport/scheduler.js.map +1 -1
  91. package/package.json +9 -5
@@ -1,16 +1,32 @@
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
+ import { TimeoutError } from '../core/timeout.js';
7
+ /**
8
+ * `approve` 的失败:带 HTTP 语义的状态码(404 = 任务不存在,409 = 任务当前不在
9
+ * `awaiting_approval` 状态),HTTP 宿主据此回对应响应。
10
+ * module 级 export —— 不进公共导出面(纯宿主内部实现细节)。
11
+ */
12
+ export class TaskApproveError extends Error {
13
+ status;
14
+ constructor(status, message) {
15
+ super(message);
16
+ this.name = 'TaskApproveError';
17
+ this.status = status;
18
+ }
19
+ }
6
20
  export class AsyncRunner {
7
21
  app;
8
22
  store;
9
23
  /** 本进程标识:写进认领的 TaskRecord.ownerId,供 resumePending 区分他我 */
10
24
  ownerId;
11
25
  client;
26
+ sessionStore;
12
27
  concurrency;
13
28
  runTimeoutMs;
29
+ approvalTimeoutMs;
14
30
  running = 0;
15
31
  waitQueue = [];
16
32
  /** 已受理但未达终态的任务数(queued + running)—— /healthz 与 drain 共用 */
@@ -20,10 +36,22 @@ export class AsyncRunner {
20
36
  /** 任务终态唤醒表:taskId → 等待者。仅覆盖**本进程**写终态(他进程写靠兜底轮询) */
21
37
  #taskWaiters = new Map();
22
38
  taskSinks;
39
+ /**
40
+ * HITL 挂起时快照的「本轮用户输入」(taskId → messages)—— 恢复段成功后做会话回写用
41
+ * (恢复段不把 session 交给 run 层,见 #executeInner 的 callOpts 注释)。
42
+ * 只在首个挂起段快照;任务达终态时清掉(#execute 的出口)。
43
+ *
44
+ * **刻意只放内存**:进程崩在「挂起 → 重启 → approve」之间会丢这一次会话回写 ——
45
+ * 会话少一轮,但绝写不进坏历史(孤立 tool_use / 历史翻倍),审批决定本身已落库、
46
+ * 不受影响。快照若落库就要动 TaskRecord 的序列化 schema(sqlite / redis),
47
+ * 而它相对审批决定只是锦上添花 —— 这个取舍是有意的。
48
+ */
49
+ sessionInputs = new Map();
23
50
  constructor(app, opts = {}) {
24
51
  this.app = app;
25
52
  this.store = opts.store ?? new InMemoryTaskStore();
26
53
  this.client = opts.client;
54
+ this.sessionStore = opts.sessionStore;
27
55
  this.taskSinks = opts.taskSinks ?? [];
28
56
  this.concurrency = opts.concurrency ?? Number.POSITIVE_INFINITY;
29
57
  if (!(this.concurrency > 0)) {
@@ -35,6 +63,11 @@ export class AsyncRunner {
35
63
  // (且 NaN 会绕过 `< 0` 检查静默通过)。要「不限」请传 0(缺省)。
36
64
  throw new Error(`runTimeoutMs 必须为 ≥ 0 的有限数(0 = 不限),收到 ${opts.runTimeoutMs}`);
37
65
  }
66
+ this.approvalTimeoutMs = opts.approvalTimeoutMs ?? 0;
67
+ if (!Number.isFinite(this.approvalTimeoutMs) || this.approvalTimeoutMs < 0) {
68
+ // 同 runTimeoutMs:非有限数会让「已挂起多久」的比较静默失效或立即超时
69
+ throw new Error(`approvalTimeoutMs 必须为 ≥ 0 的有限数(0 = 不限),收到 ${opts.approvalTimeoutMs}`);
70
+ }
38
71
  this.ownerId = `p${process.pid}-${randomUUID().slice(0, 8)}`;
39
72
  }
40
73
  /**
@@ -49,6 +82,12 @@ export class AsyncRunner {
49
82
  throw new Error('runner 正在优雅停机,不再接受新任务');
50
83
  }
51
84
  const messages = normalizeMessages(input);
85
+ if (opts.options?.sessionId !== undefined && this.sessionStore === undefined) {
86
+ // 响亮失败:调用方明着要会话语义,静默降级成「没有会话」是最难查的那种错。
87
+ // 注意 import 的是 spec.js 的 TaskInputError —— HTTP 宿主据此回 400(调用方的错)。
88
+ throw new TaskInputError('任务带了 options.sessionId,但本 runner 未配 sessionStore —— 会话历史接不上;' +
89
+ '给 AsyncRunner 传 sessionStore,或去掉 sessionId');
90
+ }
52
91
  if (opts.idempotencyKey) {
53
92
  const existing = this.store.byIdempotency(opts.idempotencyKey);
54
93
  if (isThenable(existing)) {
@@ -90,7 +129,11 @@ export class AsyncRunner {
90
129
  }
91
130
  /** 查任务当前记录(异步 store 下返回 Promise,调用方 await) */
92
131
  poll(taskId) {
93
- return this.store.get(taskId);
132
+ const rec = this.store.get(taskId);
133
+ // 惰性审批超时(HITL):读到 awaiting 记录时顺手判定 —— 到点就自动全拒并重派
134
+ if (isThenable(rec))
135
+ return rec.then((r) => this.#lazyExpireApproval(r));
136
+ return this.#lazyExpireApproval(rec);
94
137
  }
95
138
  byIdempotency(key) {
96
139
  return this.store.byIdempotency(key);
@@ -98,6 +141,75 @@ export class AsyncRunner {
98
141
  list() {
99
142
  return this.store.list();
100
143
  }
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
+ async approve(taskId, decisions, opts = {}) {
163
+ const inflight = this.inflightApprovals.get(taskId);
164
+ if (inflight)
165
+ return inflight;
166
+ const run = this.#approveInner(taskId, decisions, opts).finally(() => {
167
+ this.inflightApprovals.delete(taskId);
168
+ });
169
+ this.inflightApprovals.set(taskId, run);
170
+ return run;
171
+ }
172
+ /** 同一任务的在飞审批(approve 的重入闸,见上)。**与惰性超时恢复共用同一把闸** ——
173
+ * approve 与 #expireAndResume 都会「填决定 + 落库 + 派发」,不互斥就是同一任务跑两遍。 */
174
+ inflightApprovals = new Map();
175
+ async #approveInner(taskId, decisions, opts) {
176
+ const rec = await this.store.get(taskId);
177
+ if (!rec)
178
+ throw new TaskApproveError(404, `task 不存在: ${taskId}`);
179
+ if (rec.status !== 'awaiting_approval') {
180
+ throw new TaskApproveError(409, `task ${taskId} 当前状态为 ${rec.status},只有 awaiting_approval 才能审批`);
181
+ }
182
+ const now = Date.now();
183
+ rec.approvals ??= {};
184
+ for (const [id, d] of Object.entries(decisions)) {
185
+ if (rec.approvals[id])
186
+ continue; // 逐 id 幂等:第一次决定赢
187
+ rec.approvals[id] = {
188
+ approved: d.approved,
189
+ ...(d.reason !== undefined ? { reason: d.reason } : {}),
190
+ ...(opts.decidedBy !== undefined ? { decidedBy: opts.decidedBy } : {}),
191
+ decidedAt: now,
192
+ ...(rec.approvalPendingSince !== undefined
193
+ ? { requestedAt: rec.approvalPendingSince }
194
+ : {}),
195
+ };
196
+ }
197
+ // 惰性审批超时:人的决定先并入(先到先赢),仍空着的待决项由超时兜底成 deny
198
+ if (this.#approvalExpired(rec, now))
199
+ this.#fillTimeoutDenials(rec, now);
200
+ const complete = (rec.pendingApprovals ?? []).every((id) => rec.approvals?.[id] !== undefined);
201
+ if (complete) {
202
+ rec.status = 'running'; // 由 #executeInner 接管(acquireSlot → 恢复执行)
203
+ rec.ownerId = this.ownerId;
204
+ }
205
+ // 先落库再派发 —— **真纪律,不是注释**:save 失败(同步抛 / 异步 reject)就
206
+ // 绝不恢复执行(落不了库的决定不算决定:进程崩在窗口里会丢决定,重启后把
207
+ // 同一件事再判一次、可能改判)。调用方拿到 reject,重试即可。
208
+ await this.store.save(rec);
209
+ if (complete)
210
+ void this.#execute(rec);
211
+ return { ...rec };
212
+ }
101
213
  /** 已受理但未达终态的任务数(queued + running)—— 健康检查与 drain 共用同一口径 */
102
214
  get inFlight() {
103
215
  return this.active;
@@ -139,6 +251,98 @@ export class AsyncRunner {
139
251
  clearTimeout(timer);
140
252
  }
141
253
  }
254
+ /**
255
+ * 审批超时判定(HITL,**惰性**:不起定时器,只在 approve / poll / resumePending
256
+ * 读到 awaiting 记录时判)。基准是 `approvalPendingSince`(挂起时刻,挂起时落库);
257
+ * 缺失时按 startedAt → createdAt 退化(容忍手工塞进来的记录)。
258
+ */
259
+ #approvalExpired(rec, now) {
260
+ return (this.approvalTimeoutMs > 0 &&
261
+ rec.status === 'awaiting_approval' &&
262
+ now - (rec.approvalPendingSince ?? rec.startedAt ?? rec.createdAt) > this.approvalTimeoutMs);
263
+ }
264
+ /**
265
+ * 超时自动拒绝:**仍空着的**待决项补上 deny(已有人工决定的不覆盖 —— 第一次决定赢)。
266
+ * 决定写到 `rec.approvals`,由调用方负责落库与重派。
267
+ */
268
+ #fillTimeoutDenials(rec, now) {
269
+ rec.approvals ??= {};
270
+ for (const id of rec.pendingApprovals ?? []) {
271
+ if (rec.approvals[id])
272
+ continue;
273
+ rec.approvals[id] = {
274
+ approved: false,
275
+ reason: '审批超时',
276
+ decidedBy: 'system',
277
+ decidedAt: now,
278
+ ...(rec.approvalPendingSince !== undefined
279
+ ? { requestedAt: rec.approvalPendingSince }
280
+ : {}),
281
+ };
282
+ }
283
+ }
284
+ /**
285
+ * 惰性超时扫描(HITL):读到一个已超时的 awaiting 任务 ⇒ 自动全拒 + 落库 + 重派。
286
+ * 与 #redispatch 同一条纪律:**先落库再派发**(没落库就恢复,进程崩在窗口里会
287
+ * 丢掉超时决定、把同一件事再判一次)。
288
+ *
289
+ * 重入闸(2026-09-20,见 spec §10 当日条):与 `approve` **共用同一把** per-taskId
290
+ * 闸(inflightApprovals)。异步 store 的 `get` 返回**新副本**且有网络往返 —— 两个
291
+ * 并发 poll(或 poll 与 approve)各自看到 awaiting 快照 ⇒ 双双填超时拒绝 + 双双
292
+ * `#execute`(同一任务跑两遍)。在飞即跳过:另一路径自己会兜底(#approveInner
293
+ * 里也有 #approvalExpired 判定),决定逐 id 幂等(第一次决定赢)。
294
+ * 反之 approve 撞上在飞的超时恢复时共享其结果 —— 与人的决定竞速,先到先得。
295
+ */
296
+ #expireAndResume(rec, now) {
297
+ if (this.inflightApprovals.has(rec.taskId))
298
+ return;
299
+ const run = this.#expireAndResumeInner(rec, now).finally(() => {
300
+ this.inflightApprovals.delete(rec.taskId);
301
+ });
302
+ this.inflightApprovals.set(rec.taskId, run);
303
+ // poll / resumePending 路径没有调用方接 reject —— 订阅掉,不得逃逸成 unhandled rejection
304
+ run.catch(() => undefined);
305
+ }
306
+ async #expireAndResumeInner(rec, now) {
307
+ // 进闸后**重读一遍**再判:闸只互斥「进入」,挡不住「进闸前已取到的旧副本」——
308
+ // 本记录的快照可能是在另一次恢复落库**之前**取的(异步 store 的 get 有往返),
309
+ // 凭陈旧快照放行会把同一任务再派发一次。
310
+ const fresh = await this.store.get(rec.taskId);
311
+ const target = fresh ?? rec;
312
+ if (target.status !== 'awaiting_approval' || !this.#approvalExpired(target, now)) {
313
+ return target;
314
+ }
315
+ this.#fillTimeoutDenials(target, now);
316
+ target.status = 'running';
317
+ target.ownerId = this.ownerId;
318
+ let saved;
319
+ try {
320
+ saved = this.store.save(target);
321
+ }
322
+ catch {
323
+ return target; // 同步落库失败则不派发(与下一条异步分支同纪律:先落库再派发)
324
+ }
325
+ if (isThenable(saved)) {
326
+ // 落库失败则不派发(认领没落地就派发 = 重新打开重复执行窗口)
327
+ try {
328
+ await saved;
329
+ }
330
+ catch {
331
+ return target;
332
+ }
333
+ }
334
+ void this.#execute(target);
335
+ return target;
336
+ }
337
+ /** poll 的读路径钩子:读到 awaiting 且已超时 ⇒ 惰性判掉(见 #approvalExpired) */
338
+ #lazyExpireApproval(rec) {
339
+ if (!rec)
340
+ return rec;
341
+ const now = Date.now();
342
+ if (this.#approvalExpired(rec, now))
343
+ this.#expireAndResume(rec, now);
344
+ return rec;
345
+ }
142
346
  /** 任务终态唤醒:在 #execute 的统一出口调用,覆盖成功 / 失败 / 采纳既有结果各路径 */
143
347
  #notifyTaskDone(taskId) {
144
348
  const waiters = this.#taskWaiters.get(taskId);
@@ -183,7 +387,7 @@ export class AsyncRunner {
183
387
  for (const w of waiters)
184
388
  w();
185
389
  }
186
- /** 等到任务终态;超时抛错。 */
390
+ /** 等到任务终态;超时抛错。`awaiting_approval` 不是终态 —— 继续等(人在路上)。 */
187
391
  async awaitTask(taskId, opts = {}) {
188
392
  const timeoutMs = opts.timeoutMs ?? 30_000;
189
393
  // intervalMs 现在只是**兜底轮询**间隔,不是主路径:本进程把任务写到终态会主动唤醒
@@ -193,7 +397,8 @@ export class AsyncRunner {
193
397
  const intervalMs = opts.intervalMs ?? 250;
194
398
  const deadline = Date.now() + timeoutMs;
195
399
  for (;;) {
196
- const rec = await this.store.get(taskId);
400
+ // 走 poll 而不是裸 store.get:惰性审批超时的判定挂在那里(HITL)
401
+ const rec = await this.poll(taskId);
197
402
  if (!rec)
198
403
  throw new Error(`task 不存在: ${taskId}`);
199
404
  if (rec.status === 'succeeded' || rec.status === 'failed')
@@ -209,6 +414,10 @@ export class AsyncRunner {
209
414
  * (running 视为进程中断)。返回重派数量(异步 store 下返回 Promise<number>)。
210
415
  * 幂等键去重照常生效。
211
416
  *
417
+ * `awaiting_approval`(HITL)**不捡**:它在等人、不是孤儿(进程没死也可能挂着)。
418
+ * 但读到它会做**惰性超时判定**:配了 `approvalTimeoutMs` 且已超时的挂起任务
419
+ * 自动全拒(`denied, reason: '审批超时'`)并重派。
420
+ *
212
421
  * **认领先落库、再派发**(见 `#redispatch`);异步 store 的认领落库失败会让本方法
213
422
  * reject —— 宁可让调用方看见「续跑没做」,也不要静默放出一批会被重复执行的任务。
214
423
  *
@@ -270,6 +479,16 @@ export class AsyncRunner {
270
479
  */
271
480
  #redispatch(recs, staleAfterMs) {
272
481
  const now = Date.now();
482
+ // 惰性审批超时扫描(HITL):awaiting_approval **不捡走续跑**(它在等人,不是
483
+ // 孤儿 —— 崩溃续跑语义不适用于「等审批」),但读到它时顺手判超时:
484
+ // 到点自动全拒并重派(框架补的 deny 决定先进 store,再进引擎)。
485
+ let expired = 0;
486
+ for (const rec of recs) {
487
+ if (rec.status !== 'awaiting_approval' || !this.#approvalExpired(rec, now))
488
+ continue;
489
+ expired++;
490
+ this.#expireAndResume(rec, now);
491
+ }
273
492
  const pending = recs.filter((r) => {
274
493
  if (r.status !== 'queued' && r.status !== 'running')
275
494
  return false;
@@ -296,8 +515,8 @@ export class AsyncRunner {
296
515
  }
297
516
  }
298
517
  if (claims.length === 0)
299
- return pending.length;
300
- return Promise.all(claims).then(() => pending.length);
518
+ return pending.length + expired;
519
+ return Promise.all(claims).then(() => pending.length + expired);
301
520
  }
302
521
  /**
303
522
  * 在飞计数包裹层:#executeInner 是状态机主体,这里只负责 active 计数与排空通知。
@@ -313,11 +532,17 @@ export class AsyncRunner {
313
532
  // 通知在飞递减**之前**:drain() 返回时保证「任务已终态 + 回调已发完」。
314
533
  // 内层 finally 保证回调万一抛错(理论上被吞掉)也不泄漏在飞计数。
315
534
  try {
316
- await this.#notifySinks(rec);
535
+ // HITL:挂起不是终态 —— onFinished 的承诺是「任务达终态」,对它不开火
536
+ if (rec.status !== 'awaiting_approval')
537
+ await this.#notifySinks(rec);
317
538
  }
318
539
  finally {
319
540
  this.active--;
320
- // 任务已达终态并落库 → 唤醒 awaitTask 的等待者(放在递减之后,语义与 drain 一致)
541
+ // 终态即清理 HITL 会话回写快照(挂起则保留 —— 恢复段成功后还要用它)
542
+ if (rec.status !== 'awaiting_approval')
543
+ this.sessionInputs.delete(rec.taskId);
544
+ // 任务已达终态并落库 → 唤醒 awaitTask 的等待者(放在递减之后,语义与 drain 一致)。
545
+ // 挂起也唤醒:等待者看一眼状态继续等(awaiting_approval 不是终态),无副作用。
321
546
  this.#notifyTaskDone(rec.taskId);
322
547
  this.#notifyDrained();
323
548
  }
@@ -367,12 +592,33 @@ export class AsyncRunner {
367
592
  rec.startedAt = Date.now();
368
593
  await this.store.save(rec);
369
594
  try {
595
+ // 会话注入(C4 的异步通道):sessionId 是可序列化的引用,store 实例由
596
+ // runner 持有 —— 执行前在这里换成 RunAppOptions.session。resumed 记录
597
+ // 绕过 submit 的入口检查,所以「带了 sessionId 却没配 sessionStore」
598
+ // 在本路径也要响亮失败(不静默降级成「没有会话」)。
599
+ if (rec.spec.options?.sessionId !== undefined && this.sessionStore === undefined) {
600
+ throw new Error(`任务 ${rec.taskId} 带了 options.sessionId,但本 runner 未配 sessionStore`);
601
+ }
602
+ // HITL 恢复段(带审批决定重进引擎)的判定 —— 决定会话注入与回写的走向(见下)
603
+ const isResume = rec.approvals !== undefined;
370
604
  // runTimeoutMs 到点即 abort(对尊重 signal 的客户端是真中止);与调用方
371
605
  // 可能传入的 signal 合成,任一触发都中止本次 run。
372
606
  const timeoutAc = new AbortController();
373
607
  const combined = combineSignals(rec.spec.options?.signal, timeoutAc.signal);
374
608
  const callOpts = {
375
609
  ...(rec.spec.options ?? {}),
610
+ // HITL 恢复段**不注入 session**(2026-09-20,spec §10 当日条):恢复段的
611
+ // rec.spec.messages 是挂起段落库的 suspendedMessages —— 已含 loadSession
612
+ // 拼入的完整会话历史,再注入会让 run 层把 store 历史**再 prepend 一遍**
613
+ // (历史翻倍、token 复利);且成功后 appendSession 会把整段扩展历史
614
+ // (含未决 tool_use 的 assistant)写进会话 —— 违反「只存对话轮次」不变量,
615
+ // 留下孤立 tool_use + 连续两条 assistant,下一轮该会话直接撞 API 400。
616
+ // 恢复段的会话回写由本类在成功后补写(见 #appendResumedSession)。
617
+ ...(!isResume &&
618
+ rec.spec.options?.sessionId !== undefined &&
619
+ this.sessionStore !== undefined
620
+ ? { session: { store: this.sessionStore, id: rec.spec.options.sessionId } }
621
+ : {}),
376
622
  // 显式 undefined ≠ 不传(exactOptionalPropertyTypes):无幂等键时不落这个键
377
623
  ...(rec.idempotencyKey !== undefined ? { idempotencyKey: rec.idempotencyKey } : {}),
378
624
  ...(rec.spec.options?.client !== undefined
@@ -380,15 +626,52 @@ export class AsyncRunner {
380
626
  : this.client !== undefined
381
627
  ? { client: this.client }
382
628
  : {}),
629
+ // HITL 恢复段:审批决定随任务落库,重跑时原样进引擎(进程重启不丢)
630
+ ...(rec.approvals !== undefined ? { approvals: rec.approvals } : {}),
631
+ // 恢复段的 trace 是一棵**新树**,经 traceContext link 挂到上一段 runId
632
+ // (spec §9.2 的入站关联机制)——「挂起段 → 恢复段 → …」在观测后端连成一条链。
633
+ // 判定依据:有决定且已有上一段 runId = 本次是恢复执行;首次执行两者皆无。
634
+ ...(rec.approvals !== undefined && rec.runId !== undefined
635
+ ? { traceContext: { traceId: rec.runId } }
636
+ : {}),
383
637
  rethrow: false, // 硬失败也以 failed 记录落库
384
638
  signal: combined,
385
639
  };
386
640
  try {
387
641
  const out = await this.#raceTimeout(this.app.run(rec.spec.messages, callOpts), rec.taskId, () => timeoutAc.abort());
388
642
  rec.runId = out.run.runId;
389
- rec.status = out.run.status;
390
643
  rec.result = out.result;
391
644
  rec.error = out.result.error;
645
+ if (out.result.stopReason === 'awaiting_approval' && out.result.suspendedMessages) {
646
+ // HITL 挂起:扩展后的消息历史(末尾是含未决 tool_use 的 assistant 消息)
647
+ // 与待决清单、挂起时刻一起落库 —— approve / 惰性超时 / 重启后都靠它们。
648
+ // 槽位照常释放(finally)、onFinished 不触发(#execute 的出口判断)、
649
+ // finishedAt 不置(下面 finally 里按状态跳过):它不是终态。
650
+ rec.status = 'awaiting_approval';
651
+ // 「本轮用户输入」快照必须在 overwrite **之前**取 —— 此刻 rec.spec.messages
652
+ // 还是原始输入;恢复段成功后由 #appendResumedSession 拿它 + finalText 补写会话。
653
+ // 只在首个挂起段快照(!isResume):恢复段再挂起时 spec.messages 已是
654
+ // 扩展历史(含会话前缀),拿它当「用户输入」就错了 —— 原快照仍在,不能丢。
655
+ if (!isResume &&
656
+ rec.spec.options?.sessionId !== undefined &&
657
+ this.sessionStore !== undefined) {
658
+ this.sessionInputs.set(rec.taskId, rec.spec.messages);
659
+ }
660
+ rec.spec = { ...rec.spec, messages: out.result.suspendedMessages };
661
+ rec.pendingApprovals = out.result.pendingApprovals;
662
+ rec.approvalPendingSince = Date.now();
663
+ }
664
+ else {
665
+ rec.status = out.run.status;
666
+ // 终态后清掉挂起痕迹(决定保留:审批记录是审计的一部分,随任务走)
667
+ rec.pendingApprovals = undefined;
668
+ rec.approvalPendingSince = undefined;
669
+ // HITL 恢复段 + 会话:本段没把 session 交给 run 层(见上面 callOpts 注释),
670
+ // 会话回写由 runner 自己补 —— 口径与 run.ts 的 appendSession 一致。
671
+ if (isResume && out.run.status === 'succeeded') {
672
+ await this.#appendResumedSession(rec, out.result.finalText);
673
+ }
674
+ }
392
675
  }
393
676
  finally {
394
677
  // 正常收尾(没有源中止)时主动摘除挂在各源上的监听器 —— 宿主级共享
@@ -402,7 +685,9 @@ export class AsyncRunner {
402
685
  }
403
686
  }
404
687
  finally {
405
- rec.finishedAt = Date.now();
688
+ // HITL:挂起不是「完成」—— finishedAt 不置(等待中的任务没有结束时刻)
689
+ if (rec.status !== 'awaiting_approval')
690
+ rec.finishedAt = Date.now();
406
691
  // 落库失败不遮罩、槽位必须释放:释放放在内层 finally,即便落库实现抛错也必达
407
692
  try {
408
693
  await this.#safeSave(rec);
@@ -453,7 +738,10 @@ export class AsyncRunner {
453
738
  new Promise((_, reject) => {
454
739
  timer = setTimeout(() => {
455
740
  onTimeout?.();
456
- reject(new Error(`task ${taskId} 执行超时(${this.runTimeoutMs}ms)`));
741
+ // TimeoutError(code='timeout'):classifyError 归 `timeout` 一类账 ——
742
+ // 与引擎工具超时 / MCP 桥兜底同口径(spec §10 2026-09-17 ②「超时自成一类」)。
743
+ // 此前这里是裸 Error → 落 unknown,同一件事在异步宿主这条路径上记成另一本账。
744
+ reject(new TimeoutError(`task ${taskId} 执行超时(${this.runTimeoutMs}ms)`));
457
745
  }, this.runTimeoutMs);
458
746
  // ⚠️ 不 unref:这个 reject 是 `awaitTask` / 调用方 await 的终点(spec §10 ④)。
459
747
  // 见 `tests/timeoutLiveness.test.ts`。
@@ -465,6 +753,30 @@ export class AsyncRunner {
465
753
  clearTimeout(timer);
466
754
  }
467
755
  }
756
+ /**
757
+ * HITL 恢复段的会话回写(run 层 `appendSession` 的替身 —— 恢复段刻意不注入 session,
758
+ * 见 #executeInner 的 callOpts 注释)。同 run.ts 的三条不变量:只在成功路径调用、
759
+ * 只写「本轮用户输入 + 最终回复」(run 内部 tool 往返不进历史)、历史以 assistant
760
+ * 结尾(无文本补占位)。回写失败吞掉 —— 辅助动作不得击穿任务(同 memory 回写防护)。
761
+ *
762
+ * 无快照(进程在挂起期间重启过)时**跳过**:宁可少一轮历史,也不凭猜测写。
763
+ */
764
+ async #appendResumedSession(rec, finalText) {
765
+ const sessionId = rec.spec.options?.sessionId;
766
+ const input = this.sessionInputs.get(rec.taskId);
767
+ if (sessionId === undefined || this.sessionStore === undefined || input === undefined)
768
+ return;
769
+ try {
770
+ await this.sessionStore.append(sessionId, [
771
+ ...input,
772
+ // 占位文案与 runtime/run.ts 的 EMPTY_REPLY_MARK 保持同文(同一条会话不变量)
773
+ { role: 'assistant', content: finalText || '(本次无文本输出)' },
774
+ ]);
775
+ }
776
+ catch {
777
+ /* 辅助动作失败不影响任务 */
778
+ }
779
+ }
468
780
  /** 并发槽位:超限则排队等待(任务记录保持 queued,由 store 可见) */
469
781
  #acquireSlot() {
470
782
  if (this.running < this.concurrency) {
@@ -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
  *