@migor/agentia 0.7.1 → 0.8.0
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/CHANGELOG.md +115 -1
- package/README.md +10 -6
- package/dist/AGENTS.md +27 -6
- package/dist/engine/loop-result.d.ts +72 -0
- package/dist/engine/loop-result.js +80 -0
- package/dist/engine/loop-result.js.map +1 -0
- package/dist/engine/loop.d.ts +3 -40
- package/dist/engine/loop.js +31 -125
- package/dist/engine/loop.js.map +1 -1
- package/dist/engine/resume-input.d.ts +26 -0
- package/dist/engine/resume-input.js +39 -0
- package/dist/engine/resume-input.js.map +1 -0
- package/dist/engine/retry.d.ts +8 -0
- package/dist/engine/retry.js +10 -0
- package/dist/engine/retry.js.map +1 -1
- package/dist/engine/run-config.d.ts +28 -0
- package/dist/engine/run-config.js +75 -0
- package/dist/engine/run-config.js.map +1 -0
- package/dist/engine/stop-reason.d.ts +27 -0
- package/dist/engine/stop-reason.js +76 -0
- package/dist/engine/stop-reason.js.map +1 -0
- package/dist/engine/text.d.ts +10 -0
- package/dist/engine/text.js +6 -0
- package/dist/engine/text.js.map +1 -0
- package/dist/engine/tool-context.d.ts +32 -0
- package/dist/engine/tool-context.js +18 -0
- package/dist/engine/tool-context.js.map +1 -0
- package/dist/engine/tool-events.d.ts +42 -0
- package/dist/engine/tool-events.js +64 -0
- package/dist/engine/tool-events.js.map +1 -0
- package/dist/engine/turn-request.d.ts +24 -0
- package/dist/engine/turn-request.js +12 -0
- package/dist/engine/turn-request.js.map +1 -0
- package/dist/engine/turn.d.ts +3 -25
- package/dist/engine/turn.js +43 -155
- package/dist/engine/turn.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/integrations/anthropic.d.ts +5 -0
- package/dist/integrations/anthropic.js +29 -2
- package/dist/integrations/anthropic.js.map +1 -1
- package/dist/integrations/mcp-http.d.ts +43 -0
- package/dist/integrations/mcp-http.js +250 -0
- package/dist/integrations/mcp-http.js.map +1 -0
- package/dist/integrations/mcp-stdio.d.ts +46 -0
- package/dist/integrations/mcp-stdio.js +230 -0
- package/dist/integrations/mcp-stdio.js.map +1 -0
- package/dist/integrations/mcp.d.ts +37 -72
- package/dist/integrations/mcp.js +9 -468
- package/dist/integrations/mcp.js.map +1 -1
- package/dist/integrations/metrics-otlp.d.ts +42 -0
- package/dist/integrations/metrics-otlp.js +178 -0
- package/dist/integrations/metrics-otlp.js.map +1 -0
- package/dist/integrations/metrics-render.d.ts +2 -0
- package/dist/integrations/metrics-render.js +145 -0
- package/dist/integrations/metrics-render.js.map +1 -0
- package/dist/integrations/metrics-state.d.ts +191 -0
- package/dist/integrations/metrics-state.js +363 -0
- package/dist/integrations/metrics-state.js.map +1 -0
- package/dist/integrations/metrics.d.ts +3 -86
- package/dist/integrations/metrics.js +28 -648
- package/dist/integrations/metrics.js.map +1 -1
- package/dist/integrations/openai.js +4 -3
- package/dist/integrations/openai.js.map +1 -1
- package/dist/store/fsStore.d.ts +1 -1
- package/dist/store/fsStore.js +5 -2
- package/dist/store/fsStore.js.map +1 -1
- package/dist/toolkit/tool.js +1 -0
- package/dist/toolkit/tool.js.map +1 -1
- package/dist/transport/approval-policy.d.ts +30 -0
- package/dist/transport/approval-policy.js +37 -0
- package/dist/transport/approval-policy.js.map +1 -0
- package/dist/transport/async.d.ts +13 -5
- package/dist/transport/async.js +143 -150
- package/dist/transport/async.js.map +1 -1
- package/dist/transport/drain-gate.d.ts +28 -0
- package/dist/transport/drain-gate.js +62 -0
- package/dist/transport/drain-gate.js.map +1 -0
- package/dist/transport/http-route.d.ts +55 -0
- package/dist/transport/http-route.js +72 -0
- package/dist/transport/http-route.js.map +1 -0
- package/dist/transport/http-shapes.d.ts +57 -0
- package/dist/transport/http-shapes.js +56 -0
- package/dist/transport/http-shapes.js.map +1 -0
- package/dist/transport/http.d.ts +5 -21
- package/dist/transport/http.js +176 -232
- package/dist/transport/http.js.map +1 -1
- package/dist/transport/resume-policy.d.ts +40 -0
- package/dist/transport/resume-policy.js +25 -0
- package/dist/transport/resume-policy.js.map +1 -0
- package/dist/transport/slot-pool.d.ts +24 -0
- package/dist/transport/slot-pool.js +43 -0
- package/dist/transport/slot-pool.js.map +1 -0
- package/dist/transport/task-waiters.d.ts +25 -0
- package/dist/transport/task-waiters.js +63 -0
- package/dist/transport/task-waiters.js.map +1 -0
- package/package.json +5 -4
package/dist/transport/async.js
CHANGED
|
@@ -3,6 +3,12 @@ import { classifyError } from '../engine/errors.js';
|
|
|
3
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
|
+
import { SlotPool } from './slot-pool.js';
|
|
8
|
+
import { approvalExpired, approvalsComplete, fillTimeoutDenials } from './approval-policy.js';
|
|
9
|
+
import { DrainGate } from './drain-gate.js';
|
|
10
|
+
import { resumeSkipReason } from './resume-policy.js';
|
|
11
|
+
import { TaskWaiters } from './task-waiters.js';
|
|
6
12
|
/**
|
|
7
13
|
* `approve` 的失败:带 HTTP 语义的状态码(404 = 任务不存在,409 = 任务当前不在
|
|
8
14
|
* `awaiting_approval` 状态),HTTP 宿主据此回对应响应。
|
|
@@ -26,15 +32,26 @@ export class AsyncRunner {
|
|
|
26
32
|
concurrency;
|
|
27
33
|
runTimeoutMs;
|
|
28
34
|
approvalTimeoutMs;
|
|
29
|
-
running
|
|
30
|
-
|
|
35
|
+
/** 并发槽位池(见 slot-pool.ts):本类不再自管 running/waitQueue */
|
|
36
|
+
#slots;
|
|
31
37
|
/** 已受理但未达终态的任务数(queued + running)—— /healthz 与 drain 共用 */
|
|
32
38
|
active = 0;
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
#taskWaiters = new
|
|
39
|
+
/** 停机等待闸(见 drain-gate.ts):停机态标志与等待者一并外移 */
|
|
40
|
+
#drain = new DrainGate();
|
|
41
|
+
/** 任务终态等待表(见 task-waiters.ts):仅覆盖本进程写终态,他进程写靠兜底轮询 */
|
|
42
|
+
#taskWaiters = new TaskWaiters();
|
|
37
43
|
taskSinks;
|
|
44
|
+
/**
|
|
45
|
+
* HITL 挂起时快照的「本轮用户输入」(taskId → messages)—— 恢复段成功后做会话回写用
|
|
46
|
+
* (恢复段不把 session 交给 run 层,见 #executeInner 的 callOpts 注释)。
|
|
47
|
+
* 只在首个挂起段快照;任务达终态时清掉(#execute 的出口)。
|
|
48
|
+
*
|
|
49
|
+
* **刻意只放内存**:进程崩在「挂起 → 重启 → approve」之间会丢这一次会话回写 ——
|
|
50
|
+
* 会话少一轮,但绝写不进坏历史(孤立 tool_use / 历史翻倍),审批决定本身已落库、
|
|
51
|
+
* 不受影响。快照若落库就要动 TaskRecord 的序列化 schema(sqlite / redis),
|
|
52
|
+
* 而它相对审批决定只是锦上添花 —— 这个取舍是有意的。
|
|
53
|
+
*/
|
|
54
|
+
sessionInputs = new Map();
|
|
38
55
|
constructor(app, opts = {}) {
|
|
39
56
|
this.app = app;
|
|
40
57
|
this.store = opts.store ?? new InMemoryTaskStore();
|
|
@@ -45,6 +62,8 @@ export class AsyncRunner {
|
|
|
45
62
|
if (!(this.concurrency > 0)) {
|
|
46
63
|
throw new Error(`concurrency 必须为正数,收到 ${opts.concurrency}`);
|
|
47
64
|
}
|
|
65
|
+
// 放在校验之后:字段初始化式在构造函数体之前求值,那时 concurrency 还是 undefined
|
|
66
|
+
this.#slots = new SlotPool(this.concurrency);
|
|
48
67
|
this.runTimeoutMs = opts.runTimeoutMs ?? 0;
|
|
49
68
|
if (!Number.isFinite(this.runTimeoutMs) || this.runTimeoutMs < 0) {
|
|
50
69
|
// NaN/Infinity 都不能放给 setTimeout:两者都会被钳到 1ms,每个任务立即「超时」失败
|
|
@@ -66,7 +85,7 @@ export class AsyncRunner {
|
|
|
66
85
|
*/
|
|
67
86
|
submit(input, opts = {}) {
|
|
68
87
|
// 停机中不接单(drain 之后);宿主据此回 503。放在最前:连入参规整都省了。
|
|
69
|
-
if (this.
|
|
88
|
+
if (this.#drain.isDraining) {
|
|
70
89
|
throw new Error('runner 正在优雅停机,不再接受新任务');
|
|
71
90
|
}
|
|
72
91
|
const messages = normalizeMessages(input);
|
|
@@ -157,7 +176,8 @@ export class AsyncRunner {
|
|
|
157
176
|
this.inflightApprovals.set(taskId, run);
|
|
158
177
|
return run;
|
|
159
178
|
}
|
|
160
|
-
/** 同一任务的在飞审批(approve
|
|
179
|
+
/** 同一任务的在飞审批(approve 的重入闸,见上)。**与惰性超时恢复共用同一把闸** ——
|
|
180
|
+
* approve 与 #expireAndResume 都会「填决定 + 落库 + 派发」,不互斥就是同一任务跑两遍。 */
|
|
161
181
|
inflightApprovals = new Map();
|
|
162
182
|
async #approveInner(taskId, decisions, opts) {
|
|
163
183
|
const rec = await this.store.get(taskId);
|
|
@@ -182,9 +202,9 @@ export class AsyncRunner {
|
|
|
182
202
|
};
|
|
183
203
|
}
|
|
184
204
|
// 惰性审批超时:人的决定先并入(先到先赢),仍空着的待决项由超时兜底成 deny
|
|
185
|
-
if (
|
|
186
|
-
|
|
187
|
-
const complete = (rec
|
|
205
|
+
if (approvalExpired(rec, now, this.approvalTimeoutMs))
|
|
206
|
+
fillTimeoutDenials(rec, now);
|
|
207
|
+
const complete = approvalsComplete(rec);
|
|
188
208
|
if (complete) {
|
|
189
209
|
rec.status = 'running'; // 由 #executeInner 接管(acquireSlot → 恢复执行)
|
|
190
210
|
rec.ownerId = this.ownerId;
|
|
@@ -203,7 +223,7 @@ export class AsyncRunner {
|
|
|
203
223
|
}
|
|
204
224
|
/** 是否已进入优雅停机(drain 之后为 true)—— HTTP 宿主据此对新单回 503 */
|
|
205
225
|
get isDraining() {
|
|
206
|
-
return this.
|
|
226
|
+
return this.#drain.isDraining;
|
|
207
227
|
}
|
|
208
228
|
/**
|
|
209
229
|
* 优雅停机:停止接单(此后 `submit` 抛错),等待已受理任务排空(或超时)。
|
|
@@ -214,142 +234,86 @@ export class AsyncRunner {
|
|
|
214
234
|
* - 等待的是**所有已受理**的任务(queued 的也在内),不只是正在占槽位的那些。
|
|
215
235
|
*/
|
|
216
236
|
async drain(opts = {}) {
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
if (this.active === 0)
|
|
220
|
-
return true;
|
|
221
|
-
const drained = new Promise((resolve) => this.drainWaiters.push(() => resolve(true)));
|
|
222
|
-
if (timeoutMs <= 0)
|
|
223
|
-
return drained;
|
|
224
|
-
let timer;
|
|
225
|
-
try {
|
|
226
|
-
return await Promise.race([
|
|
227
|
-
drained,
|
|
228
|
-
new Promise((resolve) => {
|
|
229
|
-
timer = setTimeout(() => resolve(false), timeoutMs);
|
|
230
|
-
// ⚠️ 不 unref:`drain()` 返回的正是这个 false —— 计时器的触发就是「调用方的 await 得以结束」
|
|
231
|
-
// 的条件。unref 过它 ⇒ 空事件循环下进程先退出,停机等待没有任何结论
|
|
232
|
-
// (见 `tests/timeoutLiveness.test.ts` 与 spec §10 ④)。
|
|
233
|
-
}),
|
|
234
|
-
]);
|
|
235
|
-
}
|
|
236
|
-
finally {
|
|
237
|
-
if (timer)
|
|
238
|
-
clearTimeout(timer);
|
|
239
|
-
}
|
|
237
|
+
// 实现已外移到 drain-gate.ts(写前保留的契约注释仍在本方法上)
|
|
238
|
+
return this.#drain.waitForIdle(() => this.active === 0, opts.timeoutMs ?? 0);
|
|
240
239
|
}
|
|
241
240
|
/**
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
* 缺失时按 startedAt → createdAt 退化(容忍手工塞进来的记录)。
|
|
241
|
+
* 审批超时的**判定**已外移到 approval-policy.ts(`approvalExpired` / `fillTimeoutDenials` /
|
|
242
|
+
* `approvalsComplete`)—— 下面是**编排**:进在飞闸、重读一遍、先落库再派发。
|
|
245
243
|
*/
|
|
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
244
|
/**
|
|
272
245
|
* 惰性超时扫描(HITL):读到一个已超时的 awaiting 任务 ⇒ 自动全拒 + 落库 + 重派。
|
|
273
246
|
* 与 #redispatch 同一条纪律:**先落库再派发**(没落库就恢复,进程崩在窗口里会
|
|
274
247
|
* 丢掉超时决定、把同一件事再判一次)。
|
|
248
|
+
*
|
|
249
|
+
* 重入闸(2026-09-20,见 spec §10 当日条):与 `approve` **共用同一把** per-taskId
|
|
250
|
+
* 闸(inflightApprovals)。异步 store 的 `get` 返回**新副本**且有网络往返 —— 两个
|
|
251
|
+
* 并发 poll(或 poll 与 approve)各自看到 awaiting 快照 ⇒ 双双填超时拒绝 + 双双
|
|
252
|
+
* `#execute`(同一任务跑两遍)。在飞即跳过:另一路径自己会兜底(#approveInner
|
|
253
|
+
* 里也有 approvalExpired 判定,见 approval-policy.ts),决定逐 id 幂等(第一次决定赢)。
|
|
254
|
+
* 反之 approve 撞上在飞的超时恢复时共享其结果 —— 与人的决定竞速,先到先得。
|
|
275
255
|
*/
|
|
276
256
|
#expireAndResume(rec, now) {
|
|
277
|
-
this
|
|
278
|
-
|
|
279
|
-
|
|
257
|
+
if (this.inflightApprovals.has(rec.taskId))
|
|
258
|
+
return;
|
|
259
|
+
const run = this.#expireAndResumeInner(rec, now).finally(() => {
|
|
260
|
+
this.inflightApprovals.delete(rec.taskId);
|
|
261
|
+
});
|
|
262
|
+
this.inflightApprovals.set(rec.taskId, run);
|
|
263
|
+
// poll / resumePending 路径没有调用方接 reject —— 订阅掉,不得逃逸成 unhandled rejection
|
|
264
|
+
run.catch(() => undefined);
|
|
265
|
+
}
|
|
266
|
+
async #expireAndResumeInner(rec, now) {
|
|
267
|
+
// 进闸后**重读一遍**再判:闸只互斥「进入」,挡不住「进闸前已取到的旧副本」——
|
|
268
|
+
// 本记录的快照可能是在另一次恢复落库**之前**取的(异步 store 的 get 有往返),
|
|
269
|
+
// 凭陈旧快照放行会把同一任务再派发一次。
|
|
270
|
+
const fresh = await this.store.get(rec.taskId);
|
|
271
|
+
const target = fresh ?? rec;
|
|
272
|
+
if (target.status !== 'awaiting_approval' ||
|
|
273
|
+
!approvalExpired(target, now, this.approvalTimeoutMs)) {
|
|
274
|
+
return target;
|
|
275
|
+
}
|
|
276
|
+
fillTimeoutDenials(target, now);
|
|
277
|
+
target.status = 'running';
|
|
278
|
+
target.ownerId = this.ownerId;
|
|
280
279
|
let saved;
|
|
281
280
|
try {
|
|
282
|
-
saved = this.store.save(
|
|
281
|
+
saved = this.store.save(target);
|
|
283
282
|
}
|
|
284
283
|
catch {
|
|
285
|
-
return; // 同步落库失败则不派发(与下一条异步分支同纪律:先落库再派发)
|
|
284
|
+
return target; // 同步落库失败则不派发(与下一条异步分支同纪律:先落库再派发)
|
|
286
285
|
}
|
|
287
286
|
if (isThenable(saved)) {
|
|
288
287
|
// 落库失败则不派发(认领没落地就派发 = 重新打开重复执行窗口)
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
288
|
+
try {
|
|
289
|
+
await saved;
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
return target;
|
|
293
|
+
}
|
|
293
294
|
}
|
|
295
|
+
void this.#execute(target);
|
|
296
|
+
return target;
|
|
294
297
|
}
|
|
295
|
-
/** poll 的读路径钩子:读到 awaiting 且已超时 ⇒
|
|
298
|
+
/** poll 的读路径钩子:读到 awaiting 且已超时 ⇒ 惰性判掉(判定见 approval-policy.ts) */
|
|
296
299
|
#lazyExpireApproval(rec) {
|
|
297
300
|
if (!rec)
|
|
298
301
|
return rec;
|
|
299
302
|
const now = Date.now();
|
|
300
|
-
if (
|
|
303
|
+
if (approvalExpired(rec, now, this.approvalTimeoutMs))
|
|
301
304
|
this.#expireAndResume(rec, now);
|
|
302
305
|
return rec;
|
|
303
306
|
}
|
|
304
|
-
/**
|
|
305
|
-
|
|
306
|
-
const waiters = this.#taskWaiters.get(taskId);
|
|
307
|
-
if (!waiters || waiters.length === 0)
|
|
308
|
-
return;
|
|
309
|
-
this.#taskWaiters.delete(taskId);
|
|
310
|
-
for (const w of waiters)
|
|
311
|
-
w();
|
|
312
|
-
}
|
|
313
|
-
/** 等「本进程把该任务写到终态」或被 timeoutMs 兜底唤醒(二者先到先返回) */
|
|
314
|
-
#waitTaskDone(taskId, timeoutMs) {
|
|
315
|
-
return new Promise((resolve) => {
|
|
316
|
-
let settled = false;
|
|
317
|
-
const finish = () => {
|
|
318
|
-
if (settled)
|
|
319
|
-
return;
|
|
320
|
-
settled = true;
|
|
321
|
-
clearTimeout(timer);
|
|
322
|
-
const waiters = this.#taskWaiters.get(taskId);
|
|
323
|
-
if (waiters) {
|
|
324
|
-
const i = waiters.indexOf(finish);
|
|
325
|
-
if (i >= 0)
|
|
326
|
-
waiters.splice(i, 1);
|
|
327
|
-
if (waiters.length === 0)
|
|
328
|
-
this.#taskWaiters.delete(taskId);
|
|
329
|
-
}
|
|
330
|
-
resolve();
|
|
331
|
-
};
|
|
332
|
-
const timer = setTimeout(finish, timeoutMs);
|
|
333
|
-
const waiters = this.#taskWaiters.get(taskId);
|
|
334
|
-
if (waiters)
|
|
335
|
-
waiters.push(finish);
|
|
336
|
-
else
|
|
337
|
-
this.#taskWaiters.set(taskId, [finish]);
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
/** 排空通知:只在确无在飞任务时唤醒等待者(drain 的唯一出口) */
|
|
307
|
+
/** 任务终态唤醒与等待:实现见 task-waiters.ts(`notify` / `wait`) */
|
|
308
|
+
/** 排空通知:只在确无在飞任务时唤醒等待者(drain 的唯一出口)—— 判定在 drain-gate.ts */
|
|
341
309
|
#notifyDrained() {
|
|
342
|
-
|
|
343
|
-
return;
|
|
344
|
-
const waiters = this.drainWaiters.splice(0, this.drainWaiters.length);
|
|
345
|
-
for (const w of waiters)
|
|
346
|
-
w();
|
|
310
|
+
this.#drain.signalIdle(() => this.active === 0);
|
|
347
311
|
}
|
|
348
312
|
/** 等到任务终态;超时抛错。`awaiting_approval` 不是终态 —— 继续等(人在路上)。 */
|
|
349
313
|
async awaitTask(taskId, opts = {}) {
|
|
350
314
|
const timeoutMs = opts.timeoutMs ?? 30_000;
|
|
351
315
|
// intervalMs 现在只是**兜底轮询**间隔,不是主路径:本进程把任务写到终态会主动唤醒
|
|
352
|
-
// (见
|
|
316
|
+
// (见 task-waiters.ts 的 notify)。默认从 5ms 放宽到 250ms —— 旧实现每 5ms 读一次 store,
|
|
353
317
|
// 等 30s 就是约 6000 次读(SQLite/Redis 下是 6000 次往返)。用异步 store 且终态由
|
|
354
318
|
// **他进程**写入时唤不醒,才靠这个间隔兜底。
|
|
355
319
|
const intervalMs = opts.intervalMs ?? 250;
|
|
@@ -364,7 +328,7 @@ export class AsyncRunner {
|
|
|
364
328
|
const left = deadline - Date.now();
|
|
365
329
|
if (left <= 0)
|
|
366
330
|
throw new Error(`task ${taskId} 等待超时(${rec.status})`);
|
|
367
|
-
await this.#
|
|
331
|
+
await this.#taskWaiters.wait(taskId, Math.min(intervalMs, left));
|
|
368
332
|
}
|
|
369
333
|
}
|
|
370
334
|
/**
|
|
@@ -442,23 +406,14 @@ export class AsyncRunner {
|
|
|
442
406
|
// 到点自动全拒并重派(框架补的 deny 决定先进 store,再进引擎)。
|
|
443
407
|
let expired = 0;
|
|
444
408
|
for (const rec of recs) {
|
|
445
|
-
if (rec.status !== 'awaiting_approval' || !
|
|
409
|
+
if (rec.status !== 'awaiting_approval' || !approvalExpired(rec, now, this.approvalTimeoutMs))
|
|
446
410
|
continue;
|
|
447
411
|
expired++;
|
|
448
412
|
this.#expireAndResume(rec, now);
|
|
449
413
|
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
if (r.ownerId === this.ownerId)
|
|
454
|
-
return false; // 自己的一定还活着
|
|
455
|
-
if (staleAfterMs > 0 && r.ownerId !== undefined) {
|
|
456
|
-
const since = r.startedAt ?? r.createdAt;
|
|
457
|
-
if (now - since < staleAfterMs)
|
|
458
|
-
return false; // 他进程刚起的,别抢
|
|
459
|
-
}
|
|
460
|
-
return true;
|
|
461
|
-
});
|
|
414
|
+
// 认领判定外移到 resume-policy.ts:跳过原因具名化(terminal / own-process / too-fresh),
|
|
415
|
+
// 每条规则与边界都由那份纯函数的单测钉住
|
|
416
|
+
const pending = recs.filter((r) => resumeSkipReason(r, { ownerId: this.ownerId, staleAfterMs, now }) === undefined);
|
|
462
417
|
const claims = [];
|
|
463
418
|
for (const rec of pending) {
|
|
464
419
|
rec.status = 'queued'; // 重新入队,由 #execute 统一推进
|
|
@@ -496,9 +451,12 @@ export class AsyncRunner {
|
|
|
496
451
|
}
|
|
497
452
|
finally {
|
|
498
453
|
this.active--;
|
|
454
|
+
// 终态即清理 HITL 会话回写快照(挂起则保留 —— 恢复段成功后还要用它)
|
|
455
|
+
if (rec.status !== 'awaiting_approval')
|
|
456
|
+
this.sessionInputs.delete(rec.taskId);
|
|
499
457
|
// 任务已达终态并落库 → 唤醒 awaitTask 的等待者(放在递减之后,语义与 drain 一致)。
|
|
500
458
|
// 挂起也唤醒:等待者看一眼状态继续等(awaiting_approval 不是终态),无副作用。
|
|
501
|
-
this.#
|
|
459
|
+
this.#taskWaiters.notify(rec.taskId);
|
|
502
460
|
this.#notifyDrained();
|
|
503
461
|
}
|
|
504
462
|
}
|
|
@@ -541,7 +499,7 @@ export class AsyncRunner {
|
|
|
541
499
|
return;
|
|
542
500
|
}
|
|
543
501
|
}
|
|
544
|
-
await this.#
|
|
502
|
+
await this.#slots.acquire();
|
|
545
503
|
try {
|
|
546
504
|
rec.status = 'running';
|
|
547
505
|
rec.startedAt = Date.now();
|
|
@@ -554,13 +512,24 @@ export class AsyncRunner {
|
|
|
554
512
|
if (rec.spec.options?.sessionId !== undefined && this.sessionStore === undefined) {
|
|
555
513
|
throw new Error(`任务 ${rec.taskId} 带了 options.sessionId,但本 runner 未配 sessionStore`);
|
|
556
514
|
}
|
|
515
|
+
// HITL 恢复段(带审批决定重进引擎)的判定 —— 决定会话注入与回写的走向(见下)
|
|
516
|
+
const isResume = rec.approvals !== undefined;
|
|
557
517
|
// runTimeoutMs 到点即 abort(对尊重 signal 的客户端是真中止);与调用方
|
|
558
518
|
// 可能传入的 signal 合成,任一触发都中止本次 run。
|
|
559
519
|
const timeoutAc = new AbortController();
|
|
560
520
|
const combined = combineSignals(rec.spec.options?.signal, timeoutAc.signal);
|
|
561
521
|
const callOpts = {
|
|
562
522
|
...(rec.spec.options ?? {}),
|
|
563
|
-
|
|
523
|
+
// HITL 恢复段**不注入 session**(2026-09-20,spec §10 当日条):恢复段的
|
|
524
|
+
// rec.spec.messages 是挂起段落库的 suspendedMessages —— 已含 loadSession
|
|
525
|
+
// 拼入的完整会话历史,再注入会让 run 层把 store 历史**再 prepend 一遍**
|
|
526
|
+
// (历史翻倍、token 复利);且成功后 appendSession 会把整段扩展历史
|
|
527
|
+
// (含未决 tool_use 的 assistant)写进会话 —— 违反「只存对话轮次」不变量,
|
|
528
|
+
// 留下孤立 tool_use + 连续两条 assistant,下一轮该会话直接撞 API 400。
|
|
529
|
+
// 恢复段的会话回写由本类在成功后补写(见 #appendResumedSession)。
|
|
530
|
+
...(!isResume &&
|
|
531
|
+
rec.spec.options?.sessionId !== undefined &&
|
|
532
|
+
this.sessionStore !== undefined
|
|
564
533
|
? { session: { store: this.sessionStore, id: rec.spec.options.sessionId } }
|
|
565
534
|
: {}),
|
|
566
535
|
// 显式 undefined ≠ 不传(exactOptionalPropertyTypes):无幂等键时不落这个键
|
|
@@ -592,6 +561,15 @@ export class AsyncRunner {
|
|
|
592
561
|
// 槽位照常释放(finally)、onFinished 不触发(#execute 的出口判断)、
|
|
593
562
|
// finishedAt 不置(下面 finally 里按状态跳过):它不是终态。
|
|
594
563
|
rec.status = 'awaiting_approval';
|
|
564
|
+
// 「本轮用户输入」快照必须在 overwrite **之前**取 —— 此刻 rec.spec.messages
|
|
565
|
+
// 还是原始输入;恢复段成功后由 #appendResumedSession 拿它 + finalText 补写会话。
|
|
566
|
+
// 只在首个挂起段快照(!isResume):恢复段再挂起时 spec.messages 已是
|
|
567
|
+
// 扩展历史(含会话前缀),拿它当「用户输入」就错了 —— 原快照仍在,不能丢。
|
|
568
|
+
if (!isResume &&
|
|
569
|
+
rec.spec.options?.sessionId !== undefined &&
|
|
570
|
+
this.sessionStore !== undefined) {
|
|
571
|
+
this.sessionInputs.set(rec.taskId, rec.spec.messages);
|
|
572
|
+
}
|
|
595
573
|
rec.spec = { ...rec.spec, messages: out.result.suspendedMessages };
|
|
596
574
|
rec.pendingApprovals = out.result.pendingApprovals;
|
|
597
575
|
rec.approvalPendingSince = Date.now();
|
|
@@ -601,6 +579,11 @@ export class AsyncRunner {
|
|
|
601
579
|
// 终态后清掉挂起痕迹(决定保留:审批记录是审计的一部分,随任务走)
|
|
602
580
|
rec.pendingApprovals = undefined;
|
|
603
581
|
rec.approvalPendingSince = undefined;
|
|
582
|
+
// HITL 恢复段 + 会话:本段没把 session 交给 run 层(见上面 callOpts 注释),
|
|
583
|
+
// 会话回写由 runner 自己补 —— 口径与 run.ts 的 appendSession 一致。
|
|
584
|
+
if (isResume && out.run.status === 'succeeded') {
|
|
585
|
+
await this.#appendResumedSession(rec, out.result.finalText);
|
|
586
|
+
}
|
|
604
587
|
}
|
|
605
588
|
}
|
|
606
589
|
finally {
|
|
@@ -623,7 +606,7 @@ export class AsyncRunner {
|
|
|
623
606
|
await this.#safeSave(rec);
|
|
624
607
|
}
|
|
625
608
|
finally {
|
|
626
|
-
this.#
|
|
609
|
+
this.#slots.release();
|
|
627
610
|
}
|
|
628
611
|
}
|
|
629
612
|
}
|
|
@@ -668,7 +651,10 @@ export class AsyncRunner {
|
|
|
668
651
|
new Promise((_, reject) => {
|
|
669
652
|
timer = setTimeout(() => {
|
|
670
653
|
onTimeout?.();
|
|
671
|
-
|
|
654
|
+
// TimeoutError(code='timeout'):classifyError 归 `timeout` 一类账 ——
|
|
655
|
+
// 与引擎工具超时 / MCP 桥兜底同口径(spec §10 2026-09-17 ②「超时自成一类」)。
|
|
656
|
+
// 此前这里是裸 Error → 落 unknown,同一件事在异步宿主这条路径上记成另一本账。
|
|
657
|
+
reject(new TimeoutError(`task ${taskId} 执行超时(${this.runTimeoutMs}ms)`));
|
|
672
658
|
}, this.runTimeoutMs);
|
|
673
659
|
// ⚠️ 不 unref:这个 reject 是 `awaitTask` / 调用方 await 的终点(spec §10 ④)。
|
|
674
660
|
// 见 `tests/timeoutLiveness.test.ts`。
|
|
@@ -680,21 +666,28 @@ export class AsyncRunner {
|
|
|
680
666
|
clearTimeout(timer);
|
|
681
667
|
}
|
|
682
668
|
}
|
|
683
|
-
/**
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
#
|
|
692
|
-
const
|
|
693
|
-
|
|
694
|
-
|
|
669
|
+
/**
|
|
670
|
+
* HITL 恢复段的会话回写(run 层 `appendSession` 的替身 —— 恢复段刻意不注入 session,
|
|
671
|
+
* 见 #executeInner 的 callOpts 注释)。同 run.ts 的三条不变量:只在成功路径调用、
|
|
672
|
+
* 只写「本轮用户输入 + 最终回复」(run 内部 tool 往返不进历史)、历史以 assistant
|
|
673
|
+
* 结尾(无文本补占位)。回写失败吞掉 —— 辅助动作不得击穿任务(同 memory 回写防护)。
|
|
674
|
+
*
|
|
675
|
+
* 无快照(进程在挂起期间重启过)时**跳过**:宁可少一轮历史,也不凭猜测写。
|
|
676
|
+
*/
|
|
677
|
+
async #appendResumedSession(rec, finalText) {
|
|
678
|
+
const sessionId = rec.spec.options?.sessionId;
|
|
679
|
+
const input = this.sessionInputs.get(rec.taskId);
|
|
680
|
+
if (sessionId === undefined || this.sessionStore === undefined || input === undefined)
|
|
681
|
+
return;
|
|
682
|
+
try {
|
|
683
|
+
await this.sessionStore.append(sessionId, [
|
|
684
|
+
...input,
|
|
685
|
+
// 占位文案与 runtime/run.ts 的 EMPTY_REPLY_MARK 保持同文(同一条会话不变量)
|
|
686
|
+
{ role: 'assistant', content: finalText || '(本次无文本输出)' },
|
|
687
|
+
]);
|
|
695
688
|
}
|
|
696
|
-
|
|
697
|
-
|
|
689
|
+
catch {
|
|
690
|
+
/* 辅助动作失败不影响任务 */
|
|
698
691
|
}
|
|
699
692
|
}
|
|
700
693
|
}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 优雅停机的**等待闸** —— 从 AsyncRunner 里抽出的第三个协作件(slot-pool → approval-policy → 这里)。
|
|
3
|
+
*
|
|
4
|
+
* 为什么单独成件:drain 是「不再往前推」而不是「丢弃」——它有三条独立语义,混在 900 行的类里
|
|
5
|
+
* 只能透过宿主行为间接观察:
|
|
6
|
+
* ① **进停机态必须最先发生**:标志一置,`submit` 立刻拒绝(宿主回 503),不能等到排空之后;
|
|
7
|
+
* ② **等待的预算**:`timeoutMs <= 0` = 一直等;超时返回 false 但**不改任何共享状态**
|
|
8
|
+
* (未完成的任务留在 store,下次启动 `resumePending` 续跑);
|
|
9
|
+
* ③ **唤醒只由归零触发**:非空闲时调用是空操作,归零时唤醒**所有**等待者。
|
|
10
|
+
*
|
|
11
|
+
* 「在飞计数」本身**不搬**:它同时是 `/healthz` 的 `inFlight` 口径、由任务生命周期加减,
|
|
12
|
+
* 不属于等待闸 —— 所以这里以谓词 `idle: () => boolean` 传入,闸只负责「等 / 唤醒 / 超时」。
|
|
13
|
+
*/
|
|
14
|
+
export declare class DrainGate {
|
|
15
|
+
private draining;
|
|
16
|
+
private readonly waiters;
|
|
17
|
+
/** 是否已进入停机态(HTTP 宿主据此对新单回 503) */
|
|
18
|
+
get isDraining(): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* 进入停机态并等排空:`idle()` 已为真立刻返回 true;否则挂起,直到 `signalIdle(idle)`
|
|
21
|
+
* 唤醒(true)或预算耗尽(false)。`timeoutMs <= 0` = 一直等。
|
|
22
|
+
*/
|
|
23
|
+
waitForIdle(idle: () => boolean, timeoutMs: number): Promise<boolean>;
|
|
24
|
+
/** 计数归零时调用:唤醒**所有**等待者。非空闲或无人等待时是空操作(可无脑调用) */
|
|
25
|
+
signalIdle(idle: () => boolean): void;
|
|
26
|
+
/** 当前在等排空的调用方数量(单测与诊断用) */
|
|
27
|
+
get waiterCount(): number;
|
|
28
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 优雅停机的**等待闸** —— 从 AsyncRunner 里抽出的第三个协作件(slot-pool → approval-policy → 这里)。
|
|
3
|
+
*
|
|
4
|
+
* 为什么单独成件:drain 是「不再往前推」而不是「丢弃」——它有三条独立语义,混在 900 行的类里
|
|
5
|
+
* 只能透过宿主行为间接观察:
|
|
6
|
+
* ① **进停机态必须最先发生**:标志一置,`submit` 立刻拒绝(宿主回 503),不能等到排空之后;
|
|
7
|
+
* ② **等待的预算**:`timeoutMs <= 0` = 一直等;超时返回 false 但**不改任何共享状态**
|
|
8
|
+
* (未完成的任务留在 store,下次启动 `resumePending` 续跑);
|
|
9
|
+
* ③ **唤醒只由归零触发**:非空闲时调用是空操作,归零时唤醒**所有**等待者。
|
|
10
|
+
*
|
|
11
|
+
* 「在飞计数」本身**不搬**:它同时是 `/healthz` 的 `inFlight` 口径、由任务生命周期加减,
|
|
12
|
+
* 不属于等待闸 —— 所以这里以谓词 `idle: () => boolean` 传入,闸只负责「等 / 唤醒 / 超时」。
|
|
13
|
+
*/
|
|
14
|
+
export class DrainGate {
|
|
15
|
+
draining = false;
|
|
16
|
+
waiters = [];
|
|
17
|
+
/** 是否已进入停机态(HTTP 宿主据此对新单回 503) */
|
|
18
|
+
get isDraining() {
|
|
19
|
+
return this.draining;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 进入停机态并等排空:`idle()` 已为真立刻返回 true;否则挂起,直到 `signalIdle(idle)`
|
|
23
|
+
* 唤醒(true)或预算耗尽(false)。`timeoutMs <= 0` = 一直等。
|
|
24
|
+
*/
|
|
25
|
+
async waitForIdle(idle, timeoutMs) {
|
|
26
|
+
this.draining = true; // 必须最先置位:新单要立刻被挡住,而不是等到排空之后
|
|
27
|
+
if (idle())
|
|
28
|
+
return true;
|
|
29
|
+
const drained = new Promise((resolve) => this.waiters.push(() => resolve(true)));
|
|
30
|
+
if (timeoutMs <= 0)
|
|
31
|
+
return drained;
|
|
32
|
+
let timer;
|
|
33
|
+
try {
|
|
34
|
+
return await Promise.race([
|
|
35
|
+
drained,
|
|
36
|
+
new Promise((resolve) => {
|
|
37
|
+
timer = setTimeout(() => resolve(false), timeoutMs);
|
|
38
|
+
// ⚠️ 不 unref:`drain()` 返回的正是这个 false —— 计时器的触发就是「调用方的 await 得以结束」
|
|
39
|
+
// 的条件。unref 过它 ⇒ 空事件循环下进程先退出,停机等待没有任何结论
|
|
40
|
+
// (见 `tests/timeoutLiveness.test.ts` 与 spec §10 ④)。
|
|
41
|
+
}),
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
finally {
|
|
45
|
+
if (timer)
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** 计数归零时调用:唤醒**所有**等待者。非空闲或无人等待时是空操作(可无脑调用) */
|
|
50
|
+
signalIdle(idle) {
|
|
51
|
+
if (!idle() || this.waiters.length === 0)
|
|
52
|
+
return;
|
|
53
|
+
const waiters = this.waiters.splice(0, this.waiters.length);
|
|
54
|
+
for (const w of waiters)
|
|
55
|
+
w();
|
|
56
|
+
}
|
|
57
|
+
/** 当前在等排空的调用方数量(单测与诊断用) */
|
|
58
|
+
get waiterCount() {
|
|
59
|
+
return this.waiters.length;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=drain-gate.js.map
|