@sema-agent/core 1.283.0 → 1.285.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/dist/agents/subagent.d.ts +7 -1
- package/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +114 -31
- package/dist/agents/subagent.js.map +1 -1
- package/dist/core/memory-engine/sync-client.d.ts +9 -0
- package/dist/core/memory-engine/sync-client.d.ts.map +1 -1
- package/dist/core/memory-engine/sync-client.js +53 -3
- package/dist/core/memory-engine/sync-client.js.map +1 -1
- package/dist/core/runner/call-cap.d.ts +6 -0
- package/dist/core/runner/call-cap.d.ts.map +1 -1
- package/dist/core/runner/call-cap.js +19 -7
- package/dist/core/runner/call-cap.js.map +1 -1
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +21 -3
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/task-registry.d.ts +5 -0
- package/dist/core/task-registry.d.ts.map +1 -1
- package/dist/core/task-registry.js +76 -0
- package/dist/core/task-registry.js.map +1 -1
- package/dist/core/trace.d.ts +16 -0
- package/dist/core/trace.d.ts.map +1 -1
- package/dist/core/trace.js.map +1 -1
- package/dist/core/version.d.ts +2 -0
- package/dist/core/version.d.ts.map +1 -0
- package/dist/core/version.js +15 -0
- package/dist/core/version.js.map +1 -0
- package/dist/engine/harness/agent-harness.d.ts +1 -0
- package/dist/engine/harness/agent-harness.d.ts.map +1 -1
- package/dist/engine/harness/agent-harness.js.map +1 -1
- package/dist/engine/loop/agent-loop.js +1 -0
- package/dist/engine/loop/agent-loop.js.map +1 -1
- package/dist/engine/loop/types.d.ts +1 -0
- package/dist/engine/loop/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -57,6 +57,11 @@ export interface SubagentRetainEntry {
|
|
|
57
57
|
settledAt: number;
|
|
58
58
|
resumeCount: number;
|
|
59
59
|
cycleSeq: number;
|
|
60
|
+
deferredNotify?: {
|
|
61
|
+
seq?: number;
|
|
62
|
+
cancel: () => void;
|
|
63
|
+
flush: () => void;
|
|
64
|
+
};
|
|
60
65
|
activeAbort?: AbortController;
|
|
61
66
|
release: () => Promise<void>;
|
|
62
67
|
}
|
|
@@ -79,10 +84,11 @@ export declare class SubagentRetainLedger {
|
|
|
79
84
|
get(parentToolCallId: string): SubagentRetainEntry | undefined;
|
|
80
85
|
wasEvicted(parentToolCallId: string): boolean;
|
|
81
86
|
sweepExpired(now?: number): void;
|
|
82
|
-
register(parentToolCallId: string, entry: Omit<SubagentRetainEntry, "running" | "settled" | "settledAt" | "resumeCount" | "cycleSeq" | "activeAbort">): SubagentRetainEntry | undefined;
|
|
87
|
+
register(parentToolCallId: string, entry: Omit<SubagentRetainEntry, "running" | "settled" | "settledAt" | "resumeCount" | "cycleSeq" | "activeAbort" | "deferredNotify">): SubagentRetainEntry | undefined;
|
|
83
88
|
markSettled(parentToolCallId: string): void;
|
|
84
89
|
private armTtlTimer;
|
|
85
90
|
private clearTtlTimer;
|
|
91
|
+
private flushDeferredNotify;
|
|
86
92
|
abandon(parentToolCallId: string): void;
|
|
87
93
|
evict(parentToolCallId: string): Promise<void>;
|
|
88
94
|
disposeAll(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/agents/subagent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/agents/subagent.ts"],"names":[],"mappings":"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"}
|
package/dist/agents/subagent.js
CHANGED
|
@@ -288,9 +288,22 @@ export class SubagentRetainLedger {
|
|
|
288
288
|
this.ttlTimers.delete(parentToolCallId);
|
|
289
289
|
}
|
|
290
290
|
}
|
|
291
|
+
flushDeferredNotify(e) {
|
|
292
|
+
const deferred = e.deferredNotify;
|
|
293
|
+
if (deferred === undefined)
|
|
294
|
+
return;
|
|
295
|
+
e.deferredNotify = undefined;
|
|
296
|
+
try {
|
|
297
|
+
deferred.flush();
|
|
298
|
+
}
|
|
299
|
+
catch {
|
|
300
|
+
}
|
|
301
|
+
}
|
|
291
302
|
abandon(parentToolCallId) {
|
|
292
|
-
|
|
303
|
+
const e = this.entries.get(parentToolCallId);
|
|
304
|
+
if (e !== undefined && this.entries.delete(parentToolCallId)) {
|
|
293
305
|
this.clearTtlTimer(parentToolCallId);
|
|
306
|
+
this.flushDeferredNotify(e);
|
|
294
307
|
this.tombstone(parentToolCallId);
|
|
295
308
|
}
|
|
296
309
|
}
|
|
@@ -300,6 +313,7 @@ export class SubagentRetainLedger {
|
|
|
300
313
|
return;
|
|
301
314
|
this.entries.delete(parentToolCallId);
|
|
302
315
|
this.clearTtlTimer(parentToolCallId);
|
|
316
|
+
this.flushDeferredNotify(e);
|
|
303
317
|
this.tombstone(parentToolCallId);
|
|
304
318
|
try {
|
|
305
319
|
e.activeAbort?.abort();
|
|
@@ -453,6 +467,10 @@ function makeSubagentResume(deps) {
|
|
|
453
467
|
entry.activeAbort = undefined;
|
|
454
468
|
throw err;
|
|
455
469
|
}
|
|
470
|
+
if (entry.deferredNotify !== undefined) {
|
|
471
|
+
entry.deferredNotify.cancel();
|
|
472
|
+
entry.deferredNotify = undefined;
|
|
473
|
+
}
|
|
456
474
|
let settleResolve;
|
|
457
475
|
const settled = new Promise((r) => {
|
|
458
476
|
settleResolve = r;
|
|
@@ -469,20 +487,38 @@ function makeSubagentResume(deps) {
|
|
|
469
487
|
for await (const _ of stream)
|
|
470
488
|
void _;
|
|
471
489
|
const child = await stream.result();
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
490
|
+
const status = child.status === "completed" ? "completed" : abort.signal.aborted ? "killed" : "failed";
|
|
491
|
+
const resumeFrame = {
|
|
492
|
+
task_id: entry.childSessionId,
|
|
493
|
+
task_type: "background_agent",
|
|
494
|
+
toolUseId: deps.parentToolCallId,
|
|
495
|
+
status,
|
|
496
|
+
seq: entry.cycleSeq,
|
|
497
|
+
summary: `resumed sub-agent ${marker} — ${status === "killed" ? "killed" : child.status}`,
|
|
498
|
+
...(child.result ? { result: child.result.slice(0, 2_000) } : {}),
|
|
499
|
+
...(status === "killed" && child.result ? { partial: true } : {}),
|
|
500
|
+
usage: { tokens: child.stats.tokens, turns: child.stats.turns, costMicroUsd: child.stats.costMicroUsd },
|
|
501
|
+
};
|
|
502
|
+
const gateOwner = status === "completed" && deps.notify !== undefined && deps.registry !== undefined && ledger.get(deps.parentToolCallId) === entry
|
|
503
|
+
? entry.childSessionId
|
|
504
|
+
: undefined;
|
|
505
|
+
const aliveBgCount = gateOwner !== undefined ? deps.registry.countRunningBackgroundForOwner(gateOwner) : 0;
|
|
506
|
+
if (gateOwner !== undefined && aliveBgCount > 0) {
|
|
507
|
+
parkCompletionNotify({
|
|
508
|
+
registry: deps.registry,
|
|
509
|
+
entry,
|
|
510
|
+
owner: gateOwner,
|
|
511
|
+
pendingCount: aliveBgCount,
|
|
512
|
+
payload: resumeFrame,
|
|
513
|
+
notify: deps.notify,
|
|
514
|
+
});
|
|
484
515
|
}
|
|
485
|
-
|
|
516
|
+
else {
|
|
517
|
+
try {
|
|
518
|
+
deps.notify?.(resumeFrame, { priority: "later" });
|
|
519
|
+
}
|
|
520
|
+
catch {
|
|
521
|
+
}
|
|
486
522
|
}
|
|
487
523
|
}
|
|
488
524
|
catch (e) {
|
|
@@ -511,6 +547,36 @@ function makeSubagentResume(deps) {
|
|
|
511
547
|
};
|
|
512
548
|
return resume;
|
|
513
549
|
}
|
|
550
|
+
function parkCompletionNotify(deps) {
|
|
551
|
+
const { registry, entry, owner, pendingCount, payload, notify } = deps;
|
|
552
|
+
let done = false;
|
|
553
|
+
const deliver = (decorated) => {
|
|
554
|
+
if (done)
|
|
555
|
+
return;
|
|
556
|
+
done = true;
|
|
557
|
+
unsubscribe();
|
|
558
|
+
if (entry.deferredNotify?.cancel === cancel)
|
|
559
|
+
entry.deferredNotify = undefined;
|
|
560
|
+
try {
|
|
561
|
+
notify(decorated
|
|
562
|
+
? {
|
|
563
|
+
...payload,
|
|
564
|
+
summary: `${payload.summary} (delivered after ${pendingCount} background ${pendingCount === 1 ? "child" : "children"} settled)`,
|
|
565
|
+
}
|
|
566
|
+
: payload, { priority: "later" });
|
|
567
|
+
}
|
|
568
|
+
catch {
|
|
569
|
+
}
|
|
570
|
+
};
|
|
571
|
+
const unsubscribe = registry.onBackgroundQuiescence(owner, (reason) => deliver(reason === "quiescent"));
|
|
572
|
+
const cancel = () => {
|
|
573
|
+
if (done)
|
|
574
|
+
return;
|
|
575
|
+
done = true;
|
|
576
|
+
unsubscribe();
|
|
577
|
+
};
|
|
578
|
+
entry.deferredNotify = { ...(payload.seq !== undefined ? { seq: payload.seq } : {}), cancel, flush: () => deliver(false) };
|
|
579
|
+
}
|
|
514
580
|
function adaptLegacyForkArgs(args) {
|
|
515
581
|
const raw = args;
|
|
516
582
|
if (raw !== null && typeof raw === "object" && raw.prompt === undefined && typeof raw.directive === "string") {
|
|
@@ -1521,24 +1587,39 @@ task_id: ${taskId}
|
|
|
1521
1587
|
resumable: resumableBg,
|
|
1522
1588
|
usage: { tokens: child.stats.tokens, turns: child.stats.turns, costMicroUsd: (child.stats.costMicroUsd ?? 0) + (child.stats.nested?.costMicroUsd ?? 0) },
|
|
1523
1589
|
});
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1590
|
+
const completionFrame = {
|
|
1591
|
+
task_id: taskId,
|
|
1592
|
+
task_type: "background_agent",
|
|
1593
|
+
toolUseId: ctx.toolCallId,
|
|
1594
|
+
status: settled,
|
|
1595
|
+
...(seqAtSettle !== undefined ? { seq: seqAtSettle } : {}),
|
|
1596
|
+
...(stoppedBy !== undefined ? { stoppedBy } : {}),
|
|
1597
|
+
summary: `${shortDesc} — ${settled === "killed" ? "stopped" : child.status}${observerNote}`,
|
|
1598
|
+
...(child.sessionId ? { sessionId: child.sessionId } : {}),
|
|
1599
|
+
...(child.result ? { result: child.result.slice(0, 2_000) } : {}),
|
|
1600
|
+
...(settled === "killed" && child.result ? { partial: true } : {}),
|
|
1601
|
+
...residual,
|
|
1602
|
+
resumable: resumableBg,
|
|
1603
|
+
usage: { tokens: child.stats.tokens, turns: child.stats.turns, costMicroUsd: (child.stats.costMicroUsd ?? 0) + (child.stats.nested?.costMicroUsd ?? 0) },
|
|
1604
|
+
};
|
|
1605
|
+
const gateOwner = settled === "completed" && notify !== undefined ? bgRetain?.childSessionId : undefined;
|
|
1606
|
+
const aliveBgCount = gateOwner !== undefined ? bg.registry.countRunningBackgroundForOwner(gateOwner) : 0;
|
|
1607
|
+
if (gateOwner !== undefined && bgRetain !== undefined && aliveBgCount > 0) {
|
|
1608
|
+
parkCompletionNotify({
|
|
1609
|
+
registry: bg.registry,
|
|
1610
|
+
entry: bgRetain,
|
|
1611
|
+
owner: gateOwner,
|
|
1612
|
+
pendingCount: aliveBgCount,
|
|
1613
|
+
payload: completionFrame,
|
|
1614
|
+
notify: notify,
|
|
1615
|
+
});
|
|
1540
1616
|
}
|
|
1541
|
-
|
|
1617
|
+
else {
|
|
1618
|
+
try {
|
|
1619
|
+
notify?.(completionFrame, { priority: "later" });
|
|
1620
|
+
}
|
|
1621
|
+
catch {
|
|
1622
|
+
}
|
|
1542
1623
|
}
|
|
1543
1624
|
})
|
|
1544
1625
|
.catch(async (e) => {
|
|
@@ -1616,6 +1697,7 @@ task_id: ${taskId}
|
|
|
1616
1697
|
runner: opts.runner,
|
|
1617
1698
|
...(opts.background?.notify ? { notify: opts.background.notify } : {}),
|
|
1618
1699
|
sink: ctx.onSubagentSpawn,
|
|
1700
|
+
...(opts.background ? { registry: opts.background.registry } : {}),
|
|
1619
1701
|
});
|
|
1620
1702
|
try {
|
|
1621
1703
|
ctx.onSubagentSpawn(makeSteerHandle(stream, ctx.toolCallId, childAgentName, settled, {
|
|
@@ -1810,6 +1892,7 @@ export function createSendMessageTool(opts) {
|
|
|
1810
1892
|
runner: opts.runner,
|
|
1811
1893
|
...(opts.notify ? { notify: opts.notify } : {}),
|
|
1812
1894
|
...(opts.sink ? { sink: opts.sink } : {}),
|
|
1895
|
+
registry: opts.registry,
|
|
1813
1896
|
});
|
|
1814
1897
|
const summary = typeof a.summary === "string" && a.summary.trim() !== "" ? a.summary.trim().slice(0, 200) : undefined;
|
|
1815
1898
|
try {
|