@sema-agent/core 1.282.0 → 1.284.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.
@@ -56,6 +56,12 @@ export interface SubagentRetainEntry {
56
56
  settled: boolean;
57
57
  settledAt: number;
58
58
  resumeCount: number;
59
+ cycleSeq: number;
60
+ deferredNotify?: {
61
+ seq?: number;
62
+ cancel: () => void;
63
+ flush: () => void;
64
+ };
59
65
  activeAbort?: AbortController;
60
66
  release: () => Promise<void>;
61
67
  }
@@ -78,10 +84,11 @@ export declare class SubagentRetainLedger {
78
84
  get(parentToolCallId: string): SubagentRetainEntry | undefined;
79
85
  wasEvicted(parentToolCallId: string): boolean;
80
86
  sweepExpired(now?: number): void;
81
- register(parentToolCallId: string, entry: Omit<SubagentRetainEntry, "running" | "settled" | "settledAt" | "resumeCount" | "activeAbort">): SubagentRetainEntry | undefined;
87
+ register(parentToolCallId: string, entry: Omit<SubagentRetainEntry, "running" | "settled" | "settledAt" | "resumeCount" | "cycleSeq" | "activeAbort" | "deferredNotify">): SubagentRetainEntry | undefined;
82
88
  markSettled(parentToolCallId: string): void;
83
89
  private armTtlTimer;
84
90
  private clearTtlTimer;
91
+ private flushDeferredNotify;
85
92
  abandon(parentToolCallId: string): void;
86
93
  evict(parentToolCallId: string): Promise<void>;
87
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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"}
@@ -245,7 +245,7 @@ export class SubagentRetainLedger {
245
245
  }
246
246
  void this.evict(oldest);
247
247
  }
248
- const full = { ...entry, running: true, settled: false, settledAt: Date.now(), resumeCount: 0 };
248
+ const full = { ...entry, running: true, settled: false, settledAt: Date.now(), resumeCount: 0, cycleSeq: 1 };
249
249
  this.entries.set(parentToolCallId, full);
250
250
  return full;
251
251
  }
@@ -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
- if (this.entries.delete(parentToolCallId)) {
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();
@@ -438,6 +452,7 @@ function makeSubagentResume(deps) {
438
452
  }
439
453
  marker = `resume-${markerFragment()}`;
440
454
  entry.resumeCount += 1;
455
+ entry.cycleSeq += 1;
441
456
  const resumeSpec = {
442
457
  ...entry.specSnapshot,
443
458
  objective: makeResumePrompt(marker, content),
@@ -452,6 +467,10 @@ function makeSubagentResume(deps) {
452
467
  entry.activeAbort = undefined;
453
468
  throw err;
454
469
  }
470
+ if (entry.deferredNotify !== undefined) {
471
+ entry.deferredNotify.cancel();
472
+ entry.deferredNotify = undefined;
473
+ }
455
474
  let settleResolve;
456
475
  const settled = new Promise((r) => {
457
476
  settleResolve = r;
@@ -468,19 +487,38 @@ function makeSubagentResume(deps) {
468
487
  for await (const _ of stream)
469
488
  void _;
470
489
  const child = await stream.result();
471
- try {
472
- deps.notify?.({
473
- task_id: entry.childSessionId,
474
- task_type: "background_agent",
475
- toolUseId: deps.parentToolCallId,
476
- status: child.status === "completed" ? "completed" : abort.signal.aborted ? "killed" : "failed",
477
- summary: `resumed sub-agent ${marker} — ${child.status !== "completed" && abort.signal.aborted ? "killed" : child.status}`,
478
- ...(child.result ? { result: child.result.slice(0, 2_000) } : {}),
479
- ...(child.status !== "completed" && abort.signal.aborted && child.result ? { partial: true } : {}),
480
- usage: { tokens: child.stats.tokens, turns: child.stats.turns, costMicroUsd: child.stats.costMicroUsd },
481
- }, { priority: "later" });
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
+ });
482
515
  }
483
- catch {
516
+ else {
517
+ try {
518
+ deps.notify?.(resumeFrame, { priority: "later" });
519
+ }
520
+ catch {
521
+ }
484
522
  }
485
523
  }
486
524
  catch (e) {
@@ -490,6 +528,7 @@ function makeSubagentResume(deps) {
490
528
  task_type: "background_agent",
491
529
  toolUseId: deps.parentToolCallId,
492
530
  status: abort.signal.aborted ? "killed" : "failed",
531
+ seq: entry.cycleSeq,
493
532
  summary: `resumed sub-agent ${marker} — ${abort.signal.aborted ? "killed" : `failed: ${e instanceof Error ? e.message : String(e)}`}`.slice(0, 300),
494
533
  }, { priority: "later" });
495
534
  }
@@ -508,6 +547,36 @@ function makeSubagentResume(deps) {
508
547
  };
509
548
  return resume;
510
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
+ }
511
580
  function adaptLegacyForkArgs(args) {
512
581
  const raw = args;
513
582
  if (raw !== null && typeof raw === "object" && raw.prompt === undefined && typeof raw.directive === "string") {
@@ -1478,6 +1547,7 @@ task_id: ${taskId}
1478
1547
  }
1479
1548
  catch {
1480
1549
  }
1550
+ const seqAtSettle = bgRetain?.cycleSeq;
1481
1551
  if (bgRetain) {
1482
1552
  if (isDurablePause(child.status))
1483
1553
  bgRetainLedger?.abandon(ctx.toolCallId);
@@ -1517,23 +1587,39 @@ task_id: ${taskId}
1517
1587
  resumable: resumableBg,
1518
1588
  usage: { tokens: child.stats.tokens, turns: child.stats.turns, costMicroUsd: (child.stats.costMicroUsd ?? 0) + (child.stats.nested?.costMicroUsd ?? 0) },
1519
1589
  });
1520
- try {
1521
- notify?.({
1522
- task_id: taskId,
1523
- task_type: "background_agent",
1524
- toolUseId: ctx.toolCallId,
1525
- status: settled,
1526
- ...(stoppedBy !== undefined ? { stoppedBy } : {}),
1527
- summary: `${shortDesc} — ${settled === "killed" ? "stopped" : child.status}${observerNote}`,
1528
- ...(child.sessionId ? { sessionId: child.sessionId } : {}),
1529
- ...(child.result ? { result: child.result.slice(0, 2_000) } : {}),
1530
- ...(settled === "killed" && child.result ? { partial: true } : {}),
1531
- ...residual,
1532
- resumable: resumableBg,
1533
- usage: { tokens: child.stats.tokens, turns: child.stats.turns, costMicroUsd: (child.stats.costMicroUsd ?? 0) + (child.stats.nested?.costMicroUsd ?? 0) },
1534
- }, { priority: "later" });
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
+ });
1535
1616
  }
1536
- catch {
1617
+ else {
1618
+ try {
1619
+ notify?.(completionFrame, { priority: "later" });
1620
+ }
1621
+ catch {
1622
+ }
1537
1623
  }
1538
1624
  })
1539
1625
  .catch(async (e) => {
@@ -1541,6 +1627,7 @@ task_id: ${taskId}
1541
1627
  dropHostAbortListener();
1542
1628
  void finishWorktree();
1543
1629
  const killed = abort.signal.aborted;
1630
+ const seqAtSettle = bgRetain?.cycleSeq;
1544
1631
  if (bgRetain) {
1545
1632
  if (killed)
1546
1633
  void bgRetainLedger?.evict(ctx.toolCallId);
@@ -1565,6 +1652,7 @@ task_id: ${taskId}
1565
1652
  task_type: "background_agent",
1566
1653
  toolUseId: ctx.toolCallId,
1567
1654
  status: settled,
1655
+ ...(seqAtSettle !== undefined ? { seq: seqAtSettle } : {}),
1568
1656
  ...(stoppedBy !== undefined ? { stoppedBy } : {}),
1569
1657
  summary: `${shortDesc} — ${settled === "failed" ? `failed: ${msg}` : settled}${observerNote}`.slice(0, 300),
1570
1658
  }, { priority: "later" });
@@ -1609,6 +1697,7 @@ task_id: ${taskId}
1609
1697
  runner: opts.runner,
1610
1698
  ...(opts.background?.notify ? { notify: opts.background.notify } : {}),
1611
1699
  sink: ctx.onSubagentSpawn,
1700
+ ...(opts.background ? { registry: opts.background.registry } : {}),
1612
1701
  });
1613
1702
  try {
1614
1703
  ctx.onSubagentSpawn(makeSteerHandle(stream, ctx.toolCallId, childAgentName, settled, {
@@ -1803,6 +1892,7 @@ export function createSendMessageTool(opts) {
1803
1892
  runner: opts.runner,
1804
1893
  ...(opts.notify ? { notify: opts.notify } : {}),
1805
1894
  ...(opts.sink ? { sink: opts.sink } : {}),
1895
+ registry: opts.registry,
1806
1896
  });
1807
1897
  const summary = typeof a.summary === "string" && a.summary.trim() !== "" ? a.summary.trim().slice(0, 200) : undefined;
1808
1898
  try {