@sema-agent/core 1.372.0 → 1.374.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.
Files changed (37) hide show
  1. package/dist/agents/roster-store.js +0 -0
  2. package/dist/agents/roster-store.js.map +1 -1
  3. package/dist/agents/subagent.d.ts +11 -0
  4. package/dist/agents/subagent.d.ts.map +1 -1
  5. package/dist/agents/subagent.js +304 -44
  6. package/dist/agents/subagent.js.map +1 -1
  7. package/dist/core/background-agent-store.d.ts.map +1 -1
  8. package/dist/core/background-agent-store.js +0 -0
  9. package/dist/core/background-agent-store.js.map +1 -1
  10. package/dist/core/mailbox-store.d.ts.map +1 -1
  11. package/dist/core/mailbox-store.js +1 -1
  12. package/dist/core/mailbox-store.js.map +1 -1
  13. package/dist/core/runner/prepare-task.d.ts.map +1 -1
  14. package/dist/core/runner/prepare-task.js +77 -54
  15. package/dist/core/runner/prepare-task.js.map +1 -1
  16. package/dist/core/task-registry.d.ts +11 -0
  17. package/dist/core/task-registry.d.ts.map +1 -1
  18. package/dist/core/task-registry.js +57 -2
  19. package/dist/core/task-registry.js.map +1 -1
  20. package/dist/core/types.d.ts +5 -0
  21. package/dist/core/types.d.ts.map +1 -1
  22. package/dist/index.d.ts +2 -2
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +2 -2
  25. package/dist/index.js.map +1 -1
  26. package/dist/prompt-assembly/assemble.d.ts.map +1 -1
  27. package/dist/prompt-assembly/assemble.js +3 -3
  28. package/dist/prompt-assembly/assemble.js.map +1 -1
  29. package/dist/prompt-assembly/epoch.js +0 -0
  30. package/dist/prompt-assembly/epoch.js.map +1 -1
  31. package/dist/prompt-assembly/tool-catalog.js +0 -0
  32. package/dist/prompt-assembly/tool-catalog.js.map +1 -1
  33. package/dist/prompts/default.d.ts +1 -0
  34. package/dist/prompts/default.d.ts.map +1 -1
  35. package/dist/prompts/default.js +2 -1
  36. package/dist/prompts/default.js.map +1 -1
  37. package/package.json +1 -1
Binary file
@@ -1 +1 @@
1
- {"version":3,"file":"roster-store.js","sourceRoot":"","sources":["../../src/agents/roster-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"roster-store.js","sourceRoot":"","sources":["../../src/agents/roster-store.ts"],"names":[],"mappings":"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"}
@@ -179,6 +179,17 @@ export interface SendMessageToolOptions {
179
179
  roster?: import("./roster-store.js").RosterStore;
180
180
  siblingRetain?: SubagentRetainLedger;
181
181
  onBackgroundChildEvent?: (event: import("../core/types.js").BackgroundChildEvent) => void;
182
+ agentStore?: import("../core/background-agent-store.js").BackgroundAgentStore;
183
+ mailbox?: import("../core/mailbox-store.js").MailboxStore;
184
+ reviveSpawn?: (req: {
185
+ row: import("../core/background-agent-store.js").BackgroundAgentRecord;
186
+ rev: number;
187
+ prompt: string;
188
+ }) => Promise<{
189
+ isError?: boolean;
190
+ content: string;
191
+ details?: unknown;
192
+ }>;
182
193
  }
183
194
  export declare function recordRosterSpawn(roster: import("./roster-store.js").RosterStore | undefined, entry: import("./roster-store.js").RosterEntry): void;
184
195
  export declare function createSendMessageTool(opts: SendMessageToolOptions): import("../core/types.js").AgentTool<Type.TObject<{
@@ -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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"}
@@ -14,7 +14,7 @@ import { isDurablePause } from "./suspend-guard.js";
14
14
  import { delimitUntrusted, inlineUntrusted } from "../core/untrusted-text.js";
15
15
  import { uuidv7 } from "../internal/harness.js";
16
16
  import { addWorktree } from "../core/git-worktree-env.js";
17
- import { BG_AGENT_REAP_STOP_ERROR, normalizeAgentName } from "../core/task-registry.js";
17
+ import { BG_AGENT_REAP_STOP_ERROR, DURABLE_AGENT_HANDLE_RE, DURABLE_AGENT_HEARTBEAT_MS, normalizeAgentName } from "../core/task-registry.js";
18
18
  import { canAccessAgentRecord } from "../core/background-agent-store.js";
19
19
  import { extractErrorCode } from "../brain/errors.js";
20
20
  import { ObserverDigestTap, ObserverPairing, createObserverReportToolSpec, markObserverTaskId, unmarkObserverTaskId, isObserverTaskId, observerFramingPrompt, observerSlug, resolveObserverDeclaration, OBSERVER_SENDMESSAGE_SENDER_REFUSAL, OBSERVER_SENDMESSAGE_TARGET_REFUSAL, } from "./observer.js";
@@ -888,7 +888,7 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
888
888
  `- \`isolation: "worktree"\` gives the agent its own git worktree (auto-cleaned if unchanged).` +
889
889
  (opts.background
890
890
  ? `\n- Subagents run in the background by default${opts.background.notify ? "; you'll be notified when one completes" : "; the receipt's task_id retrieves progress and results via the TaskOutput tool where mounted"}. Pass \`run_in_background: false\` for a synchronous run when you need the result before continuing. Never fabricate or predict a pending agent's results — ${opts.background.notify ? "the notification is never something you write yourself; " : ""}if the user asks before it arrives, say it's still running.\n` +
891
- `- Where the SendMessage tool is mounted, use it with the agent's ID or name to message a RUNNING agent, or — when session retention is enabled — to continue a COMPLETED one with its context intact; a new ${opts.name ?? DEFAULT_SUBAGENT_TOOL_NAME} call starts fresh${forkOffered ? ` (except subagent_type: "${FORK_SUBAGENT_TYPE}", which inherits your context)` : ""}.`
891
+ `- Where the SendMessage tool is mounted, use it with the agent's ID or name to message a RUNNING agent, or — when session retention${opts.background.agentStore !== undefined ? " or durable named-agent revival" : ""} is enabled — to continue a COMPLETED one with its context intact; a new ${opts.name ?? DEFAULT_SUBAGENT_TOOL_NAME} call starts fresh${forkOffered ? ` (except subagent_type: "${FORK_SUBAGENT_TYPE}", which inherits your context)` : ""}.`
892
892
  : `\n- \`run_in_background\` is unavailable here — only synchronous subagents.`),
893
893
  descriptionClassic: `Launch a new agent. Delegate a self-contained subtask to an isolated sub-agent and get back a single report. ` +
894
894
  (opts.purpose ? `This sub-agent is for: ${opts.purpose}. ` : "") +
@@ -955,6 +955,14 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
955
955
  execute: async (args, ctx) => {
956
956
  const a = foldGeneralPurposeAlias(adaptLegacyForkArgs(args), generalPurposeShadowed);
957
957
  const wantsBackground = opts.background !== undefined && a.run_in_background !== false;
958
+ const reviveClaim = ctx.reviveClaim;
959
+ if (reviveClaim !== undefined && opts.background === undefined) {
960
+ return {
961
+ isError: true,
962
+ content: "Sub-agent not revived: this delegation tool has no background surface (run_in_background is not available here), and a revival is a background run by definition.",
963
+ details: { error: "revive.no_background" },
964
+ };
965
+ }
958
966
  const prompt = String(a.prompt ?? "").trim();
959
967
  if (!prompt) {
960
968
  return { isError: true, content: "Sub-agent not started: 'prompt' was empty.", details: { error: "empty prompt" } };
@@ -968,6 +976,9 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
968
976
  }
969
977
  const rawType = a.subagent_type ?? "";
970
978
  const wantsFork = forkOffered && rawType === FORK_SUBAGENT_TYPE;
979
+ if (reviveClaim !== undefined && wantsFork) {
980
+ return { isError: true, content: `Sub-agent not revived: a "${FORK_SUBAGENT_TYPE}" agent cannot be revived — launch a new agent with the needed context instead.`, details: { error: "revive.fork_unsupported" } };
981
+ }
971
982
  const omitted = rawType === "";
972
983
  const def = hasAgents && !wantsFork && !omitted ? agentMap.get(rawType) : undefined;
973
984
  const spawnAgentType = wantsFork ? FORK_SUBAGENT_TYPE : omitted ? GENERAL_PURPOSE_SUBAGENT_TYPE : rawType;
@@ -997,7 +1008,7 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
997
1008
  details: { error: "name.reserved" },
998
1009
  };
999
1010
  }
1000
- if (ctx.spawnedAgentName !== undefined) {
1011
+ if (ctx.spawnedAgentName !== undefined && reviveClaim === undefined) {
1001
1012
  return {
1002
1013
  isError: true,
1003
1014
  content: "Sub-agent not started: teammates cannot spawn other teammates — the team roster is flat. To spawn a subagent instead, omit the `name` parameter.",
@@ -1064,7 +1075,7 @@ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
1064
1075
  }
1065
1076
  }
1066
1077
  let worktreeDir;
1067
- if ((a.isolation ?? def?.isolation) === "worktree") {
1078
+ if (reviveClaim === undefined && (a.isolation ?? def?.isolation) === "worktree") {
1068
1079
  const iso = ctx.worktreeIsolation;
1069
1080
  if (!iso) {
1070
1081
  return {
@@ -1868,36 +1879,56 @@ task_id: ${taskId}
1868
1879
  const bg = opts.background;
1869
1880
  const notify = ctx.onTaskNotification ?? bg.notify;
1870
1881
  const abort = new AbortController();
1871
- const sessionScopedBg = ctx.backgroundScope === "session" && ctx.sessionId !== undefined;
1882
+ const reviveRow = reviveClaim?.row;
1883
+ const sessionScopedBg = reviveRow !== undefined ? reviveRow.sessionScoped : ctx.backgroundScope === "session" && ctx.sessionId !== undefined;
1872
1884
  const onHostAbort = () => abort.abort();
1873
1885
  const dropHostAbortListener = () => ctx.signal?.removeEventListener("abort", onHostAbort);
1874
1886
  if (ctx.signal) {
1875
1887
  if (ctx.signal.aborted)
1876
1888
  abort.abort();
1877
- else if (!sessionScopedBg)
1889
+ else if (!sessionScopedBg && reviveRow === undefined)
1878
1890
  ctx.signal.addEventListener("abort", onHostAbort, { once: true });
1879
1891
  }
1880
- const shortDesc = String(a.description ?? "sub-agent").slice(0, 200);
1881
- const bgOwner = sessionScopedBg ? ctx.sessionId : ctx.taskId ?? bg.owner;
1882
- const bgScope = ctx.principal ?? bg.scope;
1892
+ const shortDesc = reviveRow?.description ?? String(a.description ?? "sub-agent").slice(0, 200);
1893
+ const bgOwner = reviveRow !== undefined ? reviveRow.owner : sessionScopedBg ? ctx.sessionId : ctx.taskId ?? bg.owner;
1894
+ const bgScope = reviveRow !== undefined ? reviveRow.scope : ctx.principal ?? bg.scope;
1883
1895
  let taskId;
1884
1896
  try {
1885
- taskId = bg.registry.registerBackgroundAgent({
1886
- ...(bgOwner !== undefined ? { owner: bgOwner } : {}),
1887
- ...(bgScope !== undefined ? { scope: bgScope } : {}),
1888
- ...(sessionScopedBg ? { sessionScoped: true } : {}),
1889
- description: shortDesc,
1890
- agentType: spawnAgentType,
1891
- ...(agentName !== undefined ? { name: agentName } : {}),
1892
- ...(ctx.taskId !== undefined && ctx.taskId !== ctx.sessionId ? { parentTaskId: ctx.taskId } : {}),
1893
- ...(ctx.sessionId !== undefined ? { parentSessionId: ctx.sessionId } : {}),
1894
- ...((ctx.rootSessionId ?? ctx.sessionId) !== undefined ? { rootSessionId: ctx.rootSessionId ?? ctx.sessionId } : {}),
1895
- ...((typeof childModel === "string" ? childModel : childModel?.id) !== undefined ? { model: typeof childModel === "string" ? childModel : childModel?.id } : {}),
1896
- deliveryChannel: "attaching",
1897
- toolUseId: ctx.toolCallId,
1898
- ...(bg.agentStore !== undefined ? { store: bg.agentStore } : {}),
1899
- abort,
1900
- });
1897
+ taskId = bg.registry.registerBackgroundAgent(reviveRow !== undefined
1898
+ ? {
1899
+ id: reviveRow.handle,
1900
+ owner: reviveRow.owner,
1901
+ scope: reviveRow.scope,
1902
+ ...(reviveRow.sessionScoped ? { sessionScoped: true } : {}),
1903
+ ...(reviveRow.description !== undefined ? { description: reviveRow.description } : {}),
1904
+ agentType: spawnAgentType,
1905
+ ...(reviveRow.name !== undefined ? { name: reviveRow.name } : {}),
1906
+ ...(reviveRow.parentTaskId !== undefined ? { parentTaskId: reviveRow.parentTaskId } : {}),
1907
+ ...(reviveRow.parentSessionId !== undefined ? { parentSessionId: reviveRow.parentSessionId } : {}),
1908
+ ...(reviveRow.rootSessionId !== undefined ? { rootSessionId: reviveRow.rootSessionId } : {}),
1909
+ ...(reviveRow.model !== undefined ? { model: reviveRow.model } : {}),
1910
+ ...(reviveRow.teamName !== undefined ? { teamName: reviveRow.teamName } : {}),
1911
+ deliveryChannel: "attaching",
1912
+ toolUseId: ctx.toolCallId,
1913
+ ...(bg.agentStore !== undefined ? { store: bg.agentStore, durableSeed: { record: reviveClaim.row, rev: reviveClaim.rev } } : {}),
1914
+ abort,
1915
+ }
1916
+ : {
1917
+ ...(bgOwner !== undefined ? { owner: bgOwner } : {}),
1918
+ ...(bgScope !== undefined ? { scope: bgScope } : {}),
1919
+ ...(sessionScopedBg ? { sessionScoped: true } : {}),
1920
+ description: shortDesc,
1921
+ agentType: spawnAgentType,
1922
+ ...(agentName !== undefined ? { name: agentName } : {}),
1923
+ ...(ctx.taskId !== undefined && ctx.taskId !== ctx.sessionId ? { parentTaskId: ctx.taskId } : {}),
1924
+ ...(ctx.sessionId !== undefined ? { parentSessionId: ctx.sessionId } : {}),
1925
+ ...((ctx.rootSessionId ?? ctx.sessionId) !== undefined ? { rootSessionId: ctx.rootSessionId ?? ctx.sessionId } : {}),
1926
+ ...((typeof childModel === "string" ? childModel : childModel?.id) !== undefined ? { model: typeof childModel === "string" ? childModel : childModel?.id } : {}),
1927
+ deliveryChannel: "attaching",
1928
+ toolUseId: ctx.toolCallId,
1929
+ ...(bg.agentStore !== undefined ? { store: bg.agentStore } : {}),
1930
+ abort,
1931
+ });
1901
1932
  }
1902
1933
  catch (e) {
1903
1934
  dropHostAbortListener();
@@ -1906,7 +1937,7 @@ task_id: ${taskId}
1906
1937
  return { isError: true, content: `Sub-agent not started in background: ${e instanceof Error ? e.message : String(e)}${wt ? `\n${wt}` : ""}`, details: { error: "register_failed" } };
1907
1938
  }
1908
1939
  if (agentName !== undefined) {
1909
- recordRosterSpawn(ctx.roster, { name: agentName, agentId: taskId, toolUseId: ctx.toolCallId, owner: bgOwner, scope: bgScope, ...((typeof childModel === "string" ? childModel : childModel?.id) !== undefined ? { model: typeof childModel === "string" ? childModel : childModel?.id } : {}), ...((ctx.rootSessionId ?? ctx.sessionId) !== undefined ? { rootSessionId: ctx.rootSessionId ?? ctx.sessionId } : {}), ...(sessionScopedBg ? { sessionScoped: true } : {}), createdAt: Date.now() });
1940
+ recordRosterSpawn(ctx.roster, { name: agentName, agentId: taskId, toolUseId: ctx.toolCallId, owner: bgOwner, scope: bgScope, ...((typeof childModel === "string" ? childModel : childModel?.id) !== undefined ? { model: typeof childModel === "string" ? childModel : childModel?.id } : {}), ...(reviveRow !== undefined ? (reviveRow.rootSessionId !== undefined ? { rootSessionId: reviveRow.rootSessionId } : {}) : (ctx.rootSessionId ?? ctx.sessionId) !== undefined ? { rootSessionId: ctx.rootSessionId ?? ctx.sessionId } : {}), ...(sessionScopedBg ? { sessionScoped: true } : {}), createdAt: reviveRow?.spawnedAt ?? Date.now() });
1910
1941
  }
1911
1942
  const bgSink = ctx.onBackgroundChildEvent;
1912
1943
  const sinkEmit = (event) => {
@@ -1916,7 +1947,7 @@ task_id: ${taskId}
1916
1947
  catch {
1917
1948
  }
1918
1949
  };
1919
- const bgChildSessionId = uuidv7();
1950
+ const bgChildSessionId = reviveRow?.sessionId ?? uuidv7();
1920
1951
  const bgStartedAt = Date.now();
1921
1952
  stepRecorder.lockTo(bgChildSessionId);
1922
1953
  bg.registry.bindBackgroundAgentSession(taskId, bgChildSessionId);
@@ -1928,20 +1959,30 @@ task_id: ${taskId}
1928
1959
  sessionScoped: sessionScopedBg === true,
1929
1960
  ...(bgOwner !== undefined ? { owner: bgOwner } : {}),
1930
1961
  ...(bgScope !== undefined ? { scope: bgScope } : {}),
1931
- description: shortDesc,
1962
+ description: reviveRow !== undefined ? `${shortDesc} (revived)` : shortDesc,
1932
1963
  agentType: spawnAgentType,
1933
1964
  ...(agentName !== undefined ? { name: agentName } : {}),
1934
1965
  sessionId: bgChildSessionId,
1935
- ...(ctx.taskId !== undefined && ctx.taskId !== ctx.sessionId ? { parentTaskId: ctx.taskId } : {}),
1936
- ...(ctx.sessionId !== undefined ? { parentSessionId: ctx.sessionId } : {}),
1937
- ...((ctx.rootSessionId ?? ctx.sessionId) !== undefined ? { rootSessionId: ctx.rootSessionId ?? ctx.sessionId } : {}),
1966
+ ...(reviveRow !== undefined
1967
+ ? {
1968
+ ...(reviveRow.parentTaskId !== undefined ? { parentTaskId: reviveRow.parentTaskId } : {}),
1969
+ ...(reviveRow.parentSessionId !== undefined ? { parentSessionId: reviveRow.parentSessionId } : {}),
1970
+ ...(reviveRow.rootSessionId !== undefined ? { rootSessionId: reviveRow.rootSessionId } : {}),
1971
+ }
1972
+ : {
1973
+ ...(ctx.taskId !== undefined && ctx.taskId !== ctx.sessionId ? { parentTaskId: ctx.taskId } : {}),
1974
+ ...(ctx.sessionId !== undefined ? { parentSessionId: ctx.sessionId } : {}),
1975
+ ...((ctx.rootSessionId ?? ctx.sessionId) !== undefined ? { rootSessionId: ctx.rootSessionId ?? ctx.sessionId } : {}),
1976
+ }),
1938
1977
  startedAt: Date.now(),
1939
1978
  });
1940
- const bgRetainLedger = sessionScopedBg
1941
- ? ctx.subagentRetain
1942
- ? getOrCreateSessionRetainLedger(ctx.sessionId, { ttlMs: ctx.subagentRetain.ttlMs, max: ctx.subagentRetain.max })
1943
- : undefined
1944
- : ctx.subagentRetain;
1979
+ const bgRetainLedger = reviveRow !== undefined
1980
+ ? undefined
1981
+ : sessionScopedBg
1982
+ ? ctx.subagentRetain
1983
+ ? getOrCreateSessionRetainLedger(ctx.sessionId, { ttlMs: ctx.subagentRetain.ttlMs, max: ctx.subagentRetain.max })
1984
+ : undefined
1985
+ : ctx.subagentRetain;
1945
1986
  if (sessionScopedBg && bgRetainLedger)
1946
1987
  ensureSessionReapHook(bg.registry);
1947
1988
  const bgRetain = await tryRetainChild(bgRetainLedger, sessionScopedBg && ctx.subagentRetain ? ctx.subagentRetain.ttlMs : undefined, bgChildSessionId, bgDurableProbe, () => bg.registry.releaseDurableTranscriptAnchor(taskId));
@@ -1953,12 +1994,15 @@ task_id: ${taskId}
1953
1994
  await origRelease();
1954
1995
  };
1955
1996
  }
1956
- const bgSpec = { ...buildChildSpec(abort.signal), sessionId: bgChildSessionId };
1957
- if (sessionScopedBg && bgSpec.limits?.timeoutSec === undefined) {
1997
+ const bgSpec = { ...buildChildSpec(abort.signal), sessionId: bgChildSessionId, ...(reviveRow !== undefined ? { requireExistingSession: true } : {}) };
1998
+ if ((sessionScopedBg || reviveRow !== undefined) && bgSpec.limits?.timeoutSec === undefined) {
1958
1999
  bgSpec.limits = { ...(bgSpec.limits ?? {}), timeoutSec: SESSION_BG_DEFAULT_TIMEOUT_SEC };
1959
2000
  }
2001
+ let reviveAttachedResolve;
2002
+ const reviveAttached = reviveRow !== undefined ? new Promise((r) => (reviveAttachedResolve = r)) : undefined;
1960
2003
  const s2NotifyReady = (inject) => {
1961
2004
  bg.registry.attachAgentNotify(taskId, inject);
2005
+ reviveAttachedResolve?.();
1962
2006
  };
1963
2007
  const bgInternals = bgSink
1964
2008
  ? {
@@ -2025,7 +2069,7 @@ task_id: ${taskId}
2025
2069
  }
2026
2070
  catch {
2027
2071
  }
2028
- const seqAtSettle = bgRetain?.cycleSeq;
2072
+ const seqAtSettle = bgRetain?.cycleSeq ?? reviveRow?.seq;
2029
2073
  if (bgRetain) {
2030
2074
  if (isDurablePause(child.status))
2031
2075
  bgRetainLedger?.abandon(ctx.toolCallId);
@@ -2043,7 +2087,7 @@ task_id: ${taskId}
2043
2087
  ...(!ok ? { error: reaped ? BG_AGENT_REAP_STOP_ERROR : child.errorMessage ?? String(child.status) } : {}),
2044
2088
  }) ??
2045
2089
  (abort.signal.aborted ? "killed" : ok ? "completed" : "failed");
2046
- if (!bgRetain && !(await bgRowConfirmed())) {
2090
+ if (!bgRetain && reviveRow === undefined && !(await bgRowConfirmed())) {
2047
2091
  try {
2048
2092
  await opts.runner.sessions.release(child.sessionId);
2049
2093
  bg.registry.releaseDurableTranscriptAnchor(taskId);
@@ -2108,7 +2152,7 @@ task_id: ${taskId}
2108
2152
  dropHostAbortListener();
2109
2153
  void finishWorktree();
2110
2154
  const killed = abort.signal.aborted;
2111
- const seqAtSettle = bgRetain?.cycleSeq;
2155
+ const seqAtSettle = bgRetain?.cycleSeq ?? reviveRow?.seq;
2112
2156
  if (bgRetain) {
2113
2157
  if (killed)
2114
2158
  void bgRetainLedger?.evict(ctx.toolCallId);
@@ -2117,7 +2161,7 @@ task_id: ${taskId}
2117
2161
  }
2118
2162
  const msg = e instanceof Error ? e.message : String(e);
2119
2163
  const settled = bg.registry.settleBackgroundAgent(taskId, { status: killed ? "killed" : "failed", error: msg, seq: seqAtSettle ?? 1 }) ?? (killed ? "killed" : "failed");
2120
- if (!bgRetain && !(await bgRowConfirmed())) {
2164
+ if (!bgRetain && reviveRow === undefined && !(await bgRowConfirmed())) {
2121
2165
  try {
2122
2166
  await opts.runner.sessions.release(bgChildSessionId);
2123
2167
  bg.registry.releaseDurableTranscriptAnchor(taskId);
@@ -2152,6 +2196,19 @@ task_id: ${taskId}
2152
2196
  catch {
2153
2197
  }
2154
2198
  });
2199
+ if (reviveAttached !== undefined) {
2200
+ const startup = await Promise.race([
2201
+ reviveAttached.then(() => "attached"),
2202
+ bgChildPromise.then(() => "settled", () => "settled"),
2203
+ ]);
2204
+ if (startup === "settled") {
2205
+ return {
2206
+ isError: true,
2207
+ content: `Sub-agent not revived: the revival failed during startup (its transcript session may be gone or the run could not prepare). This cycle settled failed; the message was NOT delivered — it remains queued and will be delivered if a later revival succeeds, so do not blindly resend the same content.`,
2208
+ details: { error: "revive.startup_failed", task_id: taskId },
2209
+ };
2210
+ }
2211
+ }
2155
2212
  return {
2156
2213
  content: `Async agent launched successfully.
2157
2214
  task_id: ${taskId}
@@ -2325,7 +2382,9 @@ export function recordRosterSpawn(roster, entry) {
2325
2382
  }
2326
2383
  let uplinkSeqGlobal = Date.now();
2327
2384
  const UPLINK_RESULT_MAX = 8000;
2385
+ const REVIVE_LEASE_TTL_MS = 5 * 60_000;
2328
2386
  export function createSendMessageTool(opts) {
2387
+ const tier3Capable = opts.agentStore !== undefined && opts.mailbox !== undefined && opts.reviveSpawn !== undefined;
2329
2388
  return defineTool({
2330
2389
  name: SEND_MESSAGE_TOOL_NAME,
2331
2390
  contract: { contractId: "core.send_message@1", implementationRevision: "1" },
@@ -2336,8 +2395,11 @@ export function createSendMessageTool(opts) {
2336
2395
  `background run with its full prior conversation preserved, so don't re-explain what it already knows. Names ` +
2337
2396
  `keep working after an agent completes; when a newer agent took the name, the newest wins — use the task_id to ` +
2338
2397
  `address an older one. You will be notified automatically when it completes — prefer ending your turn; do not ` +
2339
- `poll. Continuing a finished agent requires the run to retain sub-agent sessions; when the session was not ` +
2340
- `retained (or has expired) you get an honest error and should launch a new agent with the needed context instead.`,
2398
+ `poll. ` +
2399
+ (tier3Capable
2400
+ ? `Continuing a finished agent works for NAMED agents (revived from their durable record, even across restarts) and for runs that retain sub-agent sessions; when neither covers it you get an honest error and should launch a new agent with the needed context instead.`
2401
+ : `Continuing a finished agent requires the run to retain sub-agent sessions; when the session was not ` +
2402
+ `retained (or has expired) you get an honest error and should launch a new agent with the needed context instead.`),
2341
2403
  parameters: Type.Object({
2342
2404
  to: Type.String({ description: 'Recipient: the agent\'s name, or its task_id (a…) returned by the Agent tool with run_in_background. "main" is reserved for the spawning conversation.' }),
2343
2405
  message: Type.String({ description: "The follow-up request. The agent continues from its full prior context." }),
@@ -2391,6 +2453,190 @@ export function createSendMessageTool(opts) {
2391
2453
  scope: ctx.principal ?? opts.scope,
2392
2454
  ...((ctx.sessionId ?? opts.sessionId) !== undefined ? { sessionId: ctx.sessionId ?? opts.sessionId } : {}),
2393
2455
  };
2456
+ const tier3Revive = async (handle) => {
2457
+ if (opts.agentStore === undefined || opts.mailbox === undefined || opts.reviveSpawn === undefined)
2458
+ return undefined;
2459
+ const scope = access.scope;
2460
+ if (scope === undefined)
2461
+ return undefined;
2462
+ let row;
2463
+ try {
2464
+ row = await opts.agentStore.get(handle, scope);
2465
+ }
2466
+ catch {
2467
+ return undefined;
2468
+ }
2469
+ if (!row)
2470
+ return undefined;
2471
+ if (!canAccessAgentRecord(row, access)) {
2472
+ if (ctx.parentTaskId === undefined)
2473
+ return undefined;
2474
+ const parentView = { ...access, owner: ctx.parentTaskId, ...(ctx.parentSessionId !== undefined ? { sessionId: ctx.parentSessionId } : {}) };
2475
+ if (!canAccessAgentRecord(row, parentView))
2476
+ return undefined;
2477
+ }
2478
+ if (row.name === undefined || row.agentType === "fork")
2479
+ return undefined;
2480
+ const whoT3 = handle === to ? `agent ${handle}` : `agent "${to}" (${handle})`;
2481
+ if (row.status === "killed") {
2482
+ return {
2483
+ content: `Message not sent: ${whoT3} was stopped${row.stoppedBy !== undefined ? ` (by ${row.stoppedBy})` : ""} — a stopped agent is not revived. Launch a new agent with the needed context instead.`,
2484
+ details: { error: "killed", to, ...(row.stoppedBy !== undefined ? { stoppedBy: row.stoppedBy } : {}) },
2485
+ };
2486
+ }
2487
+ if (row.status === "running") {
2488
+ if (row.writerId === opts.registry.writerId) {
2489
+ return {
2490
+ content: `Message not sent: ${whoT3} is currently running in this process but its mid-run delivery channel is not reachable from here. Wait for its completion notification, then send again to continue it.`,
2491
+ details: { error: "still_running", to },
2492
+ };
2493
+ }
2494
+ if (Date.now() - row.updatedAt > 10 * DURABLE_AGENT_HEARTBEAT_MS) {
2495
+ return {
2496
+ content: `Message not sent: ${whoT3} last ran on another host that has stopped renewing its record (no heartbeat). Its row will be settled by the stale-row sweep — send again after that to revive it.`,
2497
+ details: { error: "host_gone", to },
2498
+ };
2499
+ }
2500
+ return {
2501
+ content: `Message not sent: ${whoT3} is running on another host — this process has no delivery channel to it. Wait for its completion notification, then send again to continue it.`,
2502
+ details: { error: "running_elsewhere", to },
2503
+ };
2504
+ }
2505
+ if (row.sessionId === undefined)
2506
+ return undefined;
2507
+ if (!opts.registry.beginDurableClaim(handle)) {
2508
+ return {
2509
+ content: `Message not sent: ${whoT3} is being revived or recycled right now — send again in a moment.`,
2510
+ details: { error: "claim_contended", to },
2511
+ };
2512
+ }
2513
+ try {
2514
+ const now = Date.now();
2515
+ const nextSeq = (row.seq ?? 1) + 1;
2516
+ const claimed = { ...row, status: "running", writerId: opts.registry.writerId, updatedAt: now, seq: nextSeq };
2517
+ delete claimed.settledAt;
2518
+ delete claimed.stoppedBy;
2519
+ delete claimed.finalOutput;
2520
+ delete claimed.error;
2521
+ delete claimed.resultIsPartial;
2522
+ delete claimed.summary;
2523
+ delete claimed.recentSteps;
2524
+ delete claimed.editedFiles;
2525
+ delete claimed.usage;
2526
+ let won = false;
2527
+ try {
2528
+ won = await opts.agentStore.update(handle, scope, claimed, { rev: row.rev });
2529
+ }
2530
+ catch {
2531
+ won = false;
2532
+ }
2533
+ if (!won) {
2534
+ let fresh = null;
2535
+ try {
2536
+ fresh = await opts.agentStore.get(handle, scope);
2537
+ }
2538
+ catch {
2539
+ }
2540
+ if (fresh?.status === "running") {
2541
+ return {
2542
+ content: `Message not sent: ${whoT3} was just revived by another delivery — it is running now. Send again to reach the running agent.`,
2543
+ details: { error: "claim_lost", to },
2544
+ };
2545
+ }
2546
+ return {
2547
+ content: `Message not sent: ${whoT3}'s durable record changed underneath this delivery — send again.`,
2548
+ details: { error: "claim_lost", to },
2549
+ };
2550
+ }
2551
+ const claimedRev = row.rev + 1;
2552
+ const rollback = async () => {
2553
+ try {
2554
+ await opts.agentStore.update(handle, scope, { ...row, updatedAt: Date.now() }, { rev: claimedRev });
2555
+ }
2556
+ catch {
2557
+ }
2558
+ };
2559
+ try {
2560
+ await opts.runner.sessions.acquire(row.sessionId, { requireExisting: true });
2561
+ }
2562
+ catch (e) {
2563
+ await rollback();
2564
+ if (e?.code === "not_found") {
2565
+ return {
2566
+ content: `Message not sent: ${whoT3}'s transcript session no longer exists (evicted or reaped) — it cannot be revived. Launch a new agent with the needed context instead.`,
2567
+ details: { error: "resume.session_not_found", to },
2568
+ };
2569
+ }
2570
+ return {
2571
+ content: `Message not sent: ${whoT3}'s transcript store did not answer (${e instanceof Error ? e.message : String(e)}) — nothing was parked; send again.`,
2572
+ details: { error: "session_store_unavailable", to },
2573
+ };
2574
+ }
2575
+ const clipped = message.length > UPLINK_RESULT_MAX ? `${message.slice(0, UPLINK_RESULT_MAX)}\n[message truncated: ${message.length} chars total]` : message;
2576
+ const t3Summary = typeof a.summary === "string" && a.summary.trim() !== "" ? a.summary.trim().slice(0, 200) : undefined;
2577
+ const t3From = opts.senderName ?? senderId;
2578
+ try {
2579
+ await opts.mailbox.append(scope, handle, { ...(t3From !== undefined ? { from: t3From } : {}), content: t3Summary !== undefined ? `[${t3Summary}] ${clipped}` : clipped, sentAt: now });
2580
+ }
2581
+ catch (e) {
2582
+ await rollback();
2583
+ return {
2584
+ content: `Message not sent: the durable mailbox refused the message (${e instanceof Error ? e.message : String(e)}) — nothing was parked and the agent was not revived.`,
2585
+ details: { error: "mailbox_failed", to },
2586
+ };
2587
+ }
2588
+ const leaseOwner = `${opts.registry.writerId}:${ctx.toolCallId}`;
2589
+ let lease = null;
2590
+ try {
2591
+ lease = await opts.mailbox.claimLease(scope, handle, leaseOwner, REVIVE_LEASE_TTL_MS);
2592
+ }
2593
+ catch {
2594
+ lease = null;
2595
+ }
2596
+ if (lease === null) {
2597
+ await rollback();
2598
+ return {
2599
+ content: `Message not sent now: ${whoT3}'s mailbox is leased by another in-flight revival. Your message is queued and will be delivered with the next successful revival — do not resend the same content.`,
2600
+ details: { error: "mailbox_leased", to },
2601
+ };
2602
+ }
2603
+ const revivePrompt = lease.messages.map((m) => `<teammate-message teammate_id="${m.from ?? "main"}">\n${m.content}\n</teammate-message>`).join("\n");
2604
+ let spawned;
2605
+ try {
2606
+ spawned = await opts.reviveSpawn({ row: claimed, rev: claimedRev, prompt: revivePrompt });
2607
+ }
2608
+ catch (e) {
2609
+ spawned = { isError: true, content: e instanceof Error ? e.message : String(e), details: { error: "revive_failed" } };
2610
+ }
2611
+ if (spawned.isError === true) {
2612
+ try {
2613
+ await opts.mailbox.releaseLease(scope, handle, leaseOwner);
2614
+ }
2615
+ catch {
2616
+ }
2617
+ await rollback();
2618
+ const code = spawned.details?.error;
2619
+ return {
2620
+ content: `Message not sent: ${whoT3} could not be revived — ${spawned.content}\nYour message remains queued and will be delivered if a later revival succeeds; do not resend the same content.`,
2621
+ details: { error: code ?? "revive_failed", to },
2622
+ };
2623
+ }
2624
+ try {
2625
+ await opts.mailbox.ack(scope, handle, lease.maxSeq);
2626
+ }
2627
+ catch {
2628
+ }
2629
+ const priorCount = lease.messages.length - 1;
2630
+ return {
2631
+ content: `Message sent — ${whoT3} was revived in the background with its prior context intact${priorCount > 0 ? ` (${priorCount} earlier pending message(s) delivered with it)` : ""}. ` +
2632
+ `You will be notified automatically when it completes. Continue with other work — do not poll.`,
2633
+ details: { type: "send-message", status: "revived", to, task_id: handle, seq: nextSeq, ...(priorCount > 0 ? { priorMessages: priorCount } : {}) },
2634
+ };
2635
+ }
2636
+ finally {
2637
+ opts.registry.endDurableClaim(handle);
2638
+ }
2639
+ };
2394
2640
  let idRow = opts.registry.getAccessibleTask(to, access);
2395
2641
  let resolvedAccess = access;
2396
2642
  if (!idRow && ctx.parentTaskId !== undefined) {
@@ -2401,6 +2647,11 @@ export function createSendMessageTool(opts) {
2401
2647
  resolvedAccess = parentView;
2402
2648
  }
2403
2649
  }
2650
+ if (!idRow && DURABLE_AGENT_HANDLE_RE.test(to)) {
2651
+ const revived = await tier3Revive(to);
2652
+ if (revived !== undefined)
2653
+ return revived;
2654
+ }
2404
2655
  let target = idRow;
2405
2656
  if (!target) {
2406
2657
  let byName = opts.registry.resolveBackgroundAgentByName(to, access);
@@ -2429,6 +2680,9 @@ export function createSendMessageTool(opts) {
2429
2680
  }
2430
2681
  }
2431
2682
  if (rosterHit !== undefined) {
2683
+ const revived = await tier3Revive(rosterHit.agentId);
2684
+ if (revived !== undefined)
2685
+ return revived;
2432
2686
  return {
2433
2687
  content: `Message not sent: "${to}" is on the durable roster (agent ${rosterHit.agentId}) but not reachable in this run — its session belongs to an earlier process. ` +
2434
2688
  `Launch a new agent with the needed context instead.`,
@@ -2497,6 +2751,12 @@ export function createSendMessageTool(opts) {
2497
2751
  const sessionLedger = smLedgerSessionId !== undefined ? getSessionRetainLedger(smLedgerSessionId) : undefined;
2498
2752
  const knows = (l) => l !== undefined && row.toolUseId !== undefined && (l.get(row.toolUseId) !== undefined || l.wasEvicted(row.toolUseId));
2499
2753
  const siblingLedger = opts.siblingRetain;
2754
+ const liveRetainEntry = row.toolUseId !== undefined ? (sessionLedger?.get(row.toolUseId) ?? runLedger?.get(row.toolUseId) ?? siblingLedger?.get(row.toolUseId)) : undefined;
2755
+ if (liveRetainEntry === undefined) {
2756
+ const revived = await tier3Revive(targetId);
2757
+ if (revived !== undefined)
2758
+ return revived;
2759
+ }
2500
2760
  const ledger = (knows(sessionLedger) ? sessionLedger : undefined) ?? (knows(runLedger) ? runLedger : undefined) ?? (knows(siblingLedger) ? siblingLedger : undefined) ?? runLedger ?? sessionLedger ?? siblingLedger;
2501
2761
  if (!ledger || row.toolUseId === undefined) {
2502
2762
  return {