@assemblyline-agents/runtime 3.1.0 → 3.3.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 (113) hide show
  1. package/README.md +6 -0
  2. package/dist/agent-hook-controller-factory.d.ts +28 -0
  3. package/dist/agent-hook-controller-factory.d.ts.map +1 -0
  4. package/dist/agent-hook-controller-factory.js +83 -0
  5. package/dist/agent-hook-controller-factory.js.map +1 -0
  6. package/dist/background-subagents.d.ts +43 -0
  7. package/dist/background-subagents.d.ts.map +1 -0
  8. package/dist/background-subagents.js +309 -0
  9. package/dist/background-subagents.js.map +1 -0
  10. package/dist/builtin-tool-executors.d.ts +1 -0
  11. package/dist/builtin-tool-executors.d.ts.map +1 -1
  12. package/dist/builtin-tool-executors.js +38 -30
  13. package/dist/builtin-tool-executors.js.map +1 -1
  14. package/dist/builtin-tools.d.ts.map +1 -1
  15. package/dist/builtin-tools.js +5 -4
  16. package/dist/builtin-tools.js.map +1 -1
  17. package/dist/capability-catalog.d.ts +8 -5
  18. package/dist/capability-catalog.d.ts.map +1 -1
  19. package/dist/capability-catalog.js +28 -1
  20. package/dist/capability-catalog.js.map +1 -1
  21. package/dist/conversation-turn-dispatch.d.ts +1 -1
  22. package/dist/conversation-turn-dispatch.d.ts.map +1 -1
  23. package/dist/conversation-turn-dispatch.js +25 -1
  24. package/dist/conversation-turn-dispatch.js.map +1 -1
  25. package/dist/dynamic-schedule-runtime.d.ts +42 -0
  26. package/dist/dynamic-schedule-runtime.d.ts.map +1 -0
  27. package/dist/dynamic-schedule-runtime.js +57 -0
  28. package/dist/dynamic-schedule-runtime.js.map +1 -0
  29. package/dist/harness-loop.d.ts +6 -6
  30. package/dist/harness-loop.d.ts.map +1 -1
  31. package/dist/harness-loop.js +26 -15
  32. package/dist/harness-loop.js.map +1 -1
  33. package/dist/in-memory-conversation-turn-store.d.ts +1 -0
  34. package/dist/in-memory-conversation-turn-store.d.ts.map +1 -1
  35. package/dist/in-memory-conversation-turn-store.js +11 -0
  36. package/dist/in-memory-conversation-turn-store.js.map +1 -1
  37. package/dist/index.d.ts +23 -41
  38. package/dist/index.d.ts.map +1 -1
  39. package/dist/index.js +172 -169
  40. package/dist/index.js.map +1 -1
  41. package/dist/local-sandbox.d.ts.map +1 -1
  42. package/dist/local-sandbox.js +2 -1
  43. package/dist/local-sandbox.js.map +1 -1
  44. package/dist/public-api.d.ts +2 -2
  45. package/dist/public-api.d.ts.map +1 -1
  46. package/dist/public-api.js.map +1 -1
  47. package/dist/replay-resume.d.ts.map +1 -1
  48. package/dist/replay-resume.js +3 -2
  49. package/dist/replay-resume.js.map +1 -1
  50. package/dist/run-heartbeat.d.ts +45 -18
  51. package/dist/run-heartbeat.d.ts.map +1 -1
  52. package/dist/run-heartbeat.js +120 -14
  53. package/dist/run-heartbeat.js.map +1 -1
  54. package/dist/run-outcome.d.ts +1 -1
  55. package/dist/run-outcome.d.ts.map +1 -1
  56. package/dist/run-outcome.js.map +1 -1
  57. package/dist/run-recovery.d.ts +9 -1
  58. package/dist/run-recovery.d.ts.map +1 -1
  59. package/dist/run-recovery.js +26 -1
  60. package/dist/run-recovery.js.map +1 -1
  61. package/dist/runtime-types.d.ts +23 -3
  62. package/dist/runtime-types.d.ts.map +1 -1
  63. package/dist/sandbox-authored-tool-child.d.ts +7 -0
  64. package/dist/sandbox-authored-tool-child.d.ts.map +1 -0
  65. package/dist/sandbox-authored-tool-child.js +217 -0
  66. package/dist/sandbox-authored-tool-child.js.map +1 -0
  67. package/dist/sandbox-authored-tool-executor.d.ts +23 -0
  68. package/dist/sandbox-authored-tool-executor.d.ts.map +1 -0
  69. package/dist/sandbox-authored-tool-executor.js +290 -0
  70. package/dist/sandbox-authored-tool-executor.js.map +1 -0
  71. package/dist/sandbox-session-lifecycle.d.ts +1 -0
  72. package/dist/sandbox-session-lifecycle.d.ts.map +1 -1
  73. package/dist/sandbox-session-lifecycle.js +48 -16
  74. package/dist/sandbox-session-lifecycle.js.map +1 -1
  75. package/dist/sandbox-tool-bridge.d.ts +19 -0
  76. package/dist/sandbox-tool-bridge.d.ts.map +1 -0
  77. package/dist/sandbox-tool-bridge.js +227 -0
  78. package/dist/sandbox-tool-bridge.js.map +1 -0
  79. package/dist/scheduled-delivery.d.ts +6 -0
  80. package/dist/scheduled-delivery.d.ts.map +1 -0
  81. package/dist/scheduled-delivery.js +117 -0
  82. package/dist/scheduled-delivery.js.map +1 -0
  83. package/dist/source-loader.d.ts +10 -0
  84. package/dist/source-loader.d.ts.map +1 -1
  85. package/dist/source-loader.js +64 -3
  86. package/dist/source-loader.js.map +1 -1
  87. package/dist/state-stores.js +1 -1
  88. package/dist/state-stores.js.map +1 -1
  89. package/dist/state.d.ts +2 -1
  90. package/dist/state.d.ts.map +1 -1
  91. package/dist/state.js +1 -0
  92. package/dist/state.js.map +1 -1
  93. package/dist/storage.d.ts +1 -0
  94. package/dist/storage.d.ts.map +1 -1
  95. package/dist/storage.js +3 -0
  96. package/dist/storage.js.map +1 -1
  97. package/dist/subagent-execution.d.ts +17 -1
  98. package/dist/subagent-execution.d.ts.map +1 -1
  99. package/dist/subagent-execution.js +217 -6
  100. package/dist/subagent-execution.js.map +1 -1
  101. package/dist/subagent-handoff.d.ts +44 -0
  102. package/dist/subagent-handoff.d.ts.map +1 -0
  103. package/dist/subagent-handoff.js +271 -0
  104. package/dist/subagent-handoff.js.map +1 -0
  105. package/dist/tool-apis.d.ts +1 -1
  106. package/dist/tool-apis.d.ts.map +1 -1
  107. package/dist/tool-apis.js +17 -10
  108. package/dist/tool-apis.js.map +1 -1
  109. package/dist/tool-execution.d.ts +17 -3
  110. package/dist/tool-execution.d.ts.map +1 -1
  111. package/dist/tool-execution.js +147 -20
  112. package/dist/tool-execution.js.map +1 -1
  113. package/package.json +3 -3
package/README.md CHANGED
@@ -4,6 +4,12 @@ The Assembly Line runtime: the durable engine that executes compiled agents.
4
4
 
5
5
  It orchestrates agent runs and turns, channel ingress and delivery, connections (MCP clients, OpenAPI clients, connection auth and stores), builtin tools and tool execution, checkpoints, scheduling, concurrency control, attachments, sandbox integration, and telemetry. Its usage subsystem records idempotent provider receipts, keeps unavailable values explicit instead of estimating them, exposes arbitrary-period aggregates, and reconciles provider control totals. Accounting is behavior-neutral: observation failures are warned but never gate a model request or response. State, blob, and sandbox behavior are pluggable through adapter interfaces implemented by packages such as `@assemblyline-agents/postgres`, `@assemblyline-agents/s3`, and `@assemblyline-agents/docker`. Hosts like `@assemblyline-agents/node` embed this runtime to serve agents.
6
6
 
7
+ Authored tools execute directly by default. Shared hosts can set
8
+ `RuntimeOptions.authoredToolExecution: "sandbox"` to bundle authored modules
9
+ without importing them and execute them inside the agent-selected Node.js 22
10
+ sandbox. Scoped tool-context operations are brokered back to the host;
11
+ framework built-ins and trusted host stubs remain direct.
12
+
7
13
  ## Install
8
14
 
9
15
  ```sh
@@ -0,0 +1,28 @@
1
+ import type { AgentManifest, JsonObject } from "@assemblyline-agents/core";
2
+ import type { AgentEventHandlerRegistry } from "./agent-event-handlers.js";
3
+ import type { RuntimeLogger } from "./logging.js";
4
+ import type { BlobAdapter, RunAgentOptions } from "./runtime-types.js";
5
+ import type { AgentSourceModuleLoader } from "./source-loader.js";
6
+ import type { CheckpointRecord, ResolvedStateAdapter, RunRecord } from "./state.js";
7
+ export interface AgentHookControllerFactoryHost {
8
+ manifest: AgentManifest;
9
+ state: ResolvedStateAdapter;
10
+ blob: BlobAdapter;
11
+ sourceLoader: AgentSourceModuleLoader;
12
+ eventHandlers: AgentEventHandlerRegistry;
13
+ logger: RuntimeLogger;
14
+ durableAgentScope(): string;
15
+ listSkillNames(surfacePath: string): Promise<string[]>;
16
+ disabledToolsForRun(run: RunRecord): Set<string>;
17
+ createCheckpoint(input: Omit<CheckpointRecord, "id" | "createdAt">): Promise<CheckpointRecord>;
18
+ listCheckpoints(runId: string): Promise<CheckpointRecord[]>;
19
+ }
20
+ export declare function createMainAgentHookController(host: AgentHookControllerFactoryHost, run: RunRecord, options: RunAgentOptions, channel: string, conversationId: string, attachments: JsonObject[]): Promise<{
21
+ controller: import("./agent-hook-evaluation.js").AgentHookRunController;
22
+ agentState: import("./agent-state.js").RuntimeAgentStateHandle;
23
+ }>;
24
+ export declare function createSubagentHookController(host: AgentHookControllerFactoryHost, run: RunRecord, subagent: AgentManifest["subagents"][number], message: string, conversationId: string): Promise<{
25
+ controller: import("./agent-hook-evaluation.js").AgentHookRunController;
26
+ agentState: import("./agent-state.js").RuntimeAgentStateHandle;
27
+ }>;
28
+ //# sourceMappingURL=agent-hook-controller-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-hook-controller-factory.d.ts","sourceRoot":"","sources":["../src/agent-hook-controller-factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAM3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEpF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,aAAa,CAAC;IACxB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,IAAI,EAAE,WAAW,CAAC;IAClB,YAAY,EAAE,uBAAuB,CAAC;IACtC,aAAa,EAAE,yBAAyB,CAAC;IACzC,MAAM,EAAE,aAAa,CAAC;IACtB,iBAAiB,IAAI,MAAM,CAAC;IAC5B,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;IACjD,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/F,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;CAC7D;AAWD,wBAAsB,6BAA6B,CACjD,IAAI,EAAE,8BAA8B,EACpC,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,eAAe,EACxB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,UAAU,EAAE;;;GA+B1B;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,8BAA8B,EACpC,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,EAC5C,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM;;;GAoCvB"}
@@ -0,0 +1,83 @@
1
+ import { audienceFromRun } from "./audience.js";
2
+ import { hookCapabilityCatalog } from "./agent-hook-context.js";
3
+ import { immutableAgentRunContext } from "./agent-hook-evaluation.js";
4
+ import { createRuntimeAgentHookController } from "./agent-hook-run-lifecycle.js";
5
+ import { rootAgentSurface, subagentSurface } from "./agent-surface.js";
6
+ import { isJsonObject } from "./json-util.js";
7
+ import { initiatorFromRun, principalFromRun } from "./principals.js";
8
+ function sharedRunContext(run) {
9
+ return {
10
+ ...(typeof run.input.userId === "string" ? { userId: run.input.userId } : {}),
11
+ ...(principalFromRun(run) ? { principal: principalFromRun(run) } : {}),
12
+ ...(initiatorFromRun(run) ? { initiator: initiatorFromRun(run) } : {}),
13
+ audience: audienceFromRun(run)
14
+ };
15
+ }
16
+ export async function createMainAgentHookController(host, run, options, channel, conversationId, attachments) {
17
+ const surface = rootAgentSurface(host.manifest);
18
+ const liveSkills = await host.listSkillNames(surface.path);
19
+ return createRuntimeAgentHookController({
20
+ manifest: host.manifest,
21
+ state: host.state,
22
+ blob: host.blob,
23
+ sourceLoader: host.sourceLoader,
24
+ eventHandlers: host.eventHandlers,
25
+ logger: host.logger,
26
+ agentScope: host.durableAgentScope(),
27
+ conversationId,
28
+ run: immutableAgentRunContext({
29
+ id: run.id,
30
+ message: options.message,
31
+ channel,
32
+ conversationId,
33
+ ...sharedRunContext(run),
34
+ ...((options.metadata ?? options.turn?.metadata)
35
+ ? { metadata: (options.metadata ?? options.turn?.metadata) }
36
+ : {}),
37
+ attachments
38
+ }),
39
+ surface,
40
+ catalog: { ...hookCapabilityCatalog(host.manifest, surface), skills: new Set(liveSkills) },
41
+ defaultSkills: liveSkills,
42
+ disabledTools: host.disabledToolsForRun(run),
43
+ createCheckpoint: host.createCheckpoint,
44
+ listCheckpoints: host.listCheckpoints
45
+ });
46
+ }
47
+ export async function createSubagentHookController(host, run, subagent, message, conversationId) {
48
+ const surface = subagentSurface(subagent);
49
+ const liveSkills = await host.listSkillNames(surface.path);
50
+ return createRuntimeAgentHookController({
51
+ manifest: host.manifest,
52
+ state: host.state,
53
+ blob: host.blob,
54
+ sourceLoader: host.sourceLoader,
55
+ eventHandlers: host.eventHandlers,
56
+ logger: host.logger,
57
+ agentScope: `${host.durableAgentScope()}:subagent:${subagent.path}`,
58
+ conversationId,
59
+ agentSource: subagent.agentSource,
60
+ surface,
61
+ catalog: {
62
+ ...hookCapabilityCatalog(host.manifest, surface),
63
+ skills: new Set(liveSkills),
64
+ models: new Set(subagent.possibleModels),
65
+ connections: new Set(subagent.connections),
66
+ ...(subagent.maxReasoning !== undefined ? { maxReasoning: subagent.maxReasoning } : {})
67
+ },
68
+ defaultSkills: liveSkills,
69
+ run: immutableAgentRunContext({
70
+ id: run.id,
71
+ message,
72
+ channel: "subagent",
73
+ conversationId,
74
+ ...sharedRunContext(run),
75
+ ...(isJsonObject(run.input.metadata) ? { metadata: run.input.metadata } : {}),
76
+ attachments: []
77
+ }),
78
+ disabledTools: host.disabledToolsForRun(run),
79
+ createCheckpoint: host.createCheckpoint,
80
+ listCheckpoints: host.listCheckpoints
81
+ });
82
+ }
83
+ //# sourceMappingURL=agent-hook-controller-factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-hook-controller-factory.js","sourceRoot":"","sources":["../src/agent-hook-controller-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { JsonObject } from "@assemblyline-agents/core";
2
+ import type { EnqueueConversationTurnInput } from "./conversation-turn-dispatch.js";
3
+ import type { RuntimeLogger } from "./logging.js";
4
+ import type { RunTimeline } from "./index.js";
5
+ import type { ResolvedStateAdapter, RunRecord, RunStatus } from "./state.js";
6
+ export interface BackgroundWorkSummary extends JsonObject {
7
+ runId: string;
8
+ agent: string;
9
+ status: RunStatus;
10
+ task: string;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ }
14
+ export interface BackgroundSubagentHost {
15
+ state: ResolvedStateAdapter;
16
+ logger: RuntimeLogger;
17
+ withRunAdmission<T>(work: () => Promise<T>): Promise<T>;
18
+ execute(childRunId: string): Promise<RunTimeline>;
19
+ finalize(timeline: RunTimeline): Promise<RunTimeline>;
20
+ replay(runId: string): Promise<RunTimeline>;
21
+ cancel(runId: string): Promise<RunRecord>;
22
+ enqueueConversationTurn(input: EnqueueConversationTurnInput): Promise<unknown>;
23
+ }
24
+ export declare class BackgroundSubagentCoordinator {
25
+ private readonly host;
26
+ private drainPromise;
27
+ private drainRequested;
28
+ private terminalReconciliationPending;
29
+ private readonly pendingCompletionRunIds;
30
+ constructor(host: BackgroundSubagentHost);
31
+ requestDrain(): void;
32
+ startWorker(intervalMs?: number): {
33
+ stop(): void;
34
+ };
35
+ listForRoot(root: RunRecord, includeTerminal?: boolean): Promise<BackgroundWorkSummary[]>;
36
+ getForRoot(root: RunRecord, runId: string): Promise<RunRecord>;
37
+ cancelForRoot(root: RunRecord, runId: string): Promise<BackgroundWorkSummary>;
38
+ private drain;
39
+ private reconcileTerminalCompletions;
40
+ private executeOne;
41
+ private queueCompletion;
42
+ }
43
+ //# sourceMappingURL=background-subagents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-subagents.d.ts","sourceRoot":"","sources":["../src/background-subagents.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAEpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAmB7E,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,gBAAgB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAClD,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC1C,uBAAuB,CAAC,KAAK,EAAE,4BAA4B,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAChF;AAqFD,qBAAa,6BAA6B;IAM5B,OAAO,CAAC,QAAQ,CAAC,IAAI;IALjC,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,6BAA6B,CAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAqB;gBAEhC,IAAI,EAAE,sBAAsB;IAEzD,YAAY,IAAI,IAAI;IASpB,WAAW,CAAC,UAAU,SAAQ,GAAG;QAAE,IAAI,IAAI,IAAI,CAAA;KAAE;IAO3C,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,UAAQ,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAevF,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAS9D,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;YAKrE,KAAK;YAcL,4BAA4B;YA+B5B,UAAU;YA8CV,eAAe;CA0D9B"}
@@ -0,0 +1,309 @@
1
+ import { normalizeAgentAudience } from "./audience.js";
2
+ import { isJsonObject, previewString } from "./json-util.js";
3
+ import { backgroundHandoffSummary, publicSubagentHandoff, readySubagentHandoff } from "./subagent-handoff.js";
4
+ import { subagentRecoveryHint } from "./subagent-execution.js";
5
+ const ACTIVE_STATUS_LIST = [
6
+ "created",
7
+ "running",
8
+ "waiting_for_approval",
9
+ "waiting_for_input",
10
+ "waiting_for_connection",
11
+ "suspended"
12
+ ];
13
+ const ACTIVE_STATUSES = new Set(ACTIVE_STATUS_LIST);
14
+ const TERMINAL_STATUS_LIST = ["completed", "failed", "cancelled"];
15
+ function originFor(run) {
16
+ const value = run.input.background;
17
+ if (!isJsonObject(value))
18
+ return undefined;
19
+ const conversationId = typeof value.conversationId === "string" ? value.conversationId : undefined;
20
+ const channel = typeof value.channel === "string" ? value.channel : undefined;
21
+ const eventId = typeof value.eventId === "string" ? value.eventId : undefined;
22
+ return conversationId && channel && eventId ? { conversationId, channel, eventId } : undefined;
23
+ }
24
+ function taskPreview(run) {
25
+ const task = isJsonObject(run.input.task) && typeof run.input.task.task === "string"
26
+ ? run.input.task.task
27
+ : JSON.stringify(run.input.task ?? {});
28
+ return previewString(task, 240);
29
+ }
30
+ function summary(run) {
31
+ return {
32
+ runId: run.id,
33
+ agent: typeof run.input.subagent === "string" ? run.input.subagent : "subagent",
34
+ status: run.status,
35
+ task: taskPreview(run),
36
+ createdAt: run.createdAt,
37
+ updatedAt: run.updatedAt
38
+ };
39
+ }
40
+ function completionQueued(run) {
41
+ return isJsonObject(run.input.background) && run.input.background.completionQueued === true;
42
+ }
43
+ function completionResponse(timeline) {
44
+ if (timeline.run.terminalReason === "subagent.handoff_failed") {
45
+ return `The artifact handoff failed after an automatic retry: ${timeline.run.terminalError ?? "unknown handoff error"}`;
46
+ }
47
+ const completed = [...timeline.events].reverse().find((event) => event.type === "run.completed");
48
+ if (completed && typeof completed.data.response === "string")
49
+ return completed.data.response;
50
+ // A failure report without a recovery path invites the root agent to
51
+ // re-delegate the whole task, which discards a finished workspace and pays
52
+ // for the work twice.
53
+ if (timeline.run.terminalError) {
54
+ return `The work failed: ${timeline.run.terminalError}\n\n${subagentRecoveryHint(timeline.run.id)}`;
55
+ }
56
+ if (timeline.run.status === "cancelled")
57
+ return "The work was cancelled.";
58
+ return `The work ended with status ${timeline.run.status}.\n\n${subagentRecoveryHint(timeline.run.id)}`;
59
+ }
60
+ function completionTurn(timeline) {
61
+ const run = timeline.run;
62
+ const origin = originFor(run);
63
+ if (!origin)
64
+ return undefined;
65
+ const agent = typeof run.input.subagent === "string" ? run.input.subagent : "worker";
66
+ const receipt = readySubagentHandoff(timeline.events);
67
+ const handoffSummary = receipt ? backgroundHandoffSummary(receipt) : undefined;
68
+ const turn = {
69
+ eventId: `background-subagent:${run.id}`,
70
+ channel: origin.channel,
71
+ conversationId: origin.conversationId,
72
+ message: [
73
+ `Background work ${run.id} from ${agent} finished with status ${run.status}.`,
74
+ `Result:\n${previewString(completionResponse(timeline), 24_000)}`,
75
+ ...(handoffSummary ? [handoffSummary] : []),
76
+ "Use the current conversation history when deciding what to tell the user. Respond in your own voice and never mention subagents, internal orchestration, or this completion message. Do not imply other background work is finished if it is still active."
77
+ ].join("\n\n")
78
+ };
79
+ if (typeof run.input.userId === "string")
80
+ turn.userId = run.input.userId;
81
+ if (isJsonObject(run.input.principal))
82
+ turn.principal = run.input.principal;
83
+ if (isJsonObject(run.input.initiator))
84
+ turn.initiator = run.input.initiator;
85
+ const audience = normalizeAgentAudience(run.input.audience);
86
+ if (audience)
87
+ turn.audience = audience;
88
+ if (isJsonObject(run.input.delivery))
89
+ turn.delivery = run.input.delivery;
90
+ turn.metadata = {
91
+ ...(isJsonObject(run.input.metadata) ? run.input.metadata : {}),
92
+ assemblyLine: {
93
+ kind: "background_subagent_completion",
94
+ sourceRunId: run.id,
95
+ parentRunId: typeof run.input.parentRunId === "string" ? run.input.parentRunId : null,
96
+ ...(receipt ? { handoff: publicSubagentHandoff(receipt) } : {})
97
+ }
98
+ };
99
+ return turn;
100
+ }
101
+ export class BackgroundSubagentCoordinator {
102
+ host;
103
+ drainPromise;
104
+ drainRequested = false;
105
+ terminalReconciliationPending = true;
106
+ pendingCompletionRunIds = new Set();
107
+ constructor(host) {
108
+ this.host = host;
109
+ }
110
+ requestDrain() {
111
+ this.drainRequested = true;
112
+ if (this.drainPromise)
113
+ return;
114
+ this.drainPromise = this.drain().finally(() => {
115
+ this.drainPromise = undefined;
116
+ if (this.drainRequested)
117
+ this.requestDrain();
118
+ });
119
+ }
120
+ startWorker(intervalMs = 1_000) {
121
+ this.requestDrain();
122
+ const timer = setInterval(() => this.requestDrain(), Math.max(100, intervalMs));
123
+ timer.unref?.();
124
+ return { stop: () => clearInterval(timer) };
125
+ }
126
+ async listForRoot(root, includeTerminal = false) {
127
+ const conversationId = typeof root.input.conversationId === "string" ? root.input.conversationId : root.id;
128
+ const statuses = includeTerminal ? [...ACTIVE_STATUS_LIST, ...TERMINAL_STATUS_LIST] : ACTIVE_STATUS_LIST;
129
+ const runs = this.host.state.listRunsByStatus
130
+ ? await this.host.state.listRunsByStatus(statuses, { limit: 1_000 })
131
+ : await this.host.state.listRuns();
132
+ return runs
133
+ .filter((candidate) => {
134
+ const origin = originFor(candidate);
135
+ return origin?.conversationId === conversationId && (includeTerminal || ACTIVE_STATUSES.has(candidate.status));
136
+ })
137
+ .sort((left, right) => left.createdAt.localeCompare(right.createdAt))
138
+ .map(summary);
139
+ }
140
+ async getForRoot(root, runId) {
141
+ const candidate = await this.host.state.getRun(runId);
142
+ const conversationId = typeof root.input.conversationId === "string" ? root.input.conversationId : root.id;
143
+ if (!candidate || originFor(candidate)?.conversationId !== conversationId) {
144
+ throw new Error(`Background work not found in this conversation: ${runId}`);
145
+ }
146
+ return candidate;
147
+ }
148
+ async cancelForRoot(root, runId) {
149
+ const candidate = await this.getForRoot(root, runId);
150
+ return summary(await this.host.cancel(candidate.id));
151
+ }
152
+ async drain() {
153
+ do {
154
+ this.drainRequested = false;
155
+ const candidates = this.host.state.listRunsByStatus
156
+ ? await this.host.state.listRunsByStatus(["created"], { limit: 100 })
157
+ : (await this.host.state.listRuns()).filter((run) => run.status === "created");
158
+ const queued = candidates.filter((run) => originFor(run));
159
+ await Promise.all([
160
+ Promise.all(queued.map((run) => this.executeOne(run))),
161
+ this.reconcileTerminalCompletions()
162
+ ]);
163
+ } while (this.drainRequested);
164
+ }
165
+ async reconcileTerminalCompletions() {
166
+ const byId = new Map();
167
+ if (this.terminalReconciliationPending) {
168
+ const terminal = this.host.state.listRunsByStatus
169
+ ? await this.host.state.listRunsByStatus(["completed", "failed"])
170
+ : (await this.host.state.listRuns()).filter((run) => run.status === "completed" || run.status === "failed");
171
+ this.terminalReconciliationPending = false;
172
+ for (const run of terminal) {
173
+ if (originFor(run) && !completionQueued(run)) {
174
+ byId.set(run.id, run);
175
+ this.pendingCompletionRunIds.add(run.id);
176
+ }
177
+ }
178
+ }
179
+ for (const runId of this.pendingCompletionRunIds) {
180
+ const run = await this.host.state.getRun(runId);
181
+ if (run && originFor(run) && !completionQueued(run))
182
+ byId.set(run.id, run);
183
+ else
184
+ this.pendingCompletionRunIds.delete(runId);
185
+ }
186
+ await Promise.all([...byId.values()].map(async (run) => {
187
+ try {
188
+ await this.queueCompletion(await this.host.replay(run.id));
189
+ }
190
+ catch (error) {
191
+ this.host.logger.warn("background subagent completion reconciliation failed", {
192
+ runId: run.id,
193
+ error: error instanceof Error ? error.message : String(error)
194
+ });
195
+ }
196
+ }));
197
+ }
198
+ async executeOne(candidate) {
199
+ let claimAcquired = false;
200
+ let timeline;
201
+ try {
202
+ timeline = await this.host.withRunAdmission(async () => {
203
+ const claimed = await this.host.state.reserveIdempotencyKey("background-subagent:execute", `${candidate.id}:${candidate.updatedAt}`, candidate.id);
204
+ if (!claimed)
205
+ return undefined;
206
+ claimAcquired = true;
207
+ const current = await this.host.state.getRun(candidate.id);
208
+ if (!current || current.status !== "created")
209
+ return undefined;
210
+ return this.host.execute(candidate.id);
211
+ });
212
+ }
213
+ catch (error) {
214
+ const message = error instanceof Error ? error.message : String(error);
215
+ if (!claimAcquired) {
216
+ this.host.logger.warn("background subagent execution claim failed", {
217
+ runId: candidate.id,
218
+ error: message
219
+ });
220
+ return;
221
+ }
222
+ const current = await this.host.state.getRun(candidate.id);
223
+ if (!current || current.status === "cancelled")
224
+ return;
225
+ if (current.status === "completed" || current.status === "failed") {
226
+ timeline = await this.host.replay(current.id);
227
+ }
228
+ else {
229
+ const failed = await this.host.state.updateRun(candidate.id, {
230
+ status: "failed",
231
+ terminalReason: "background_subagent_execution_error",
232
+ terminalError: message
233
+ });
234
+ await this.host.state.appendEvent(candidate.id, "run.failed", {
235
+ reason: "background_subagent_execution_error",
236
+ error: message
237
+ });
238
+ timeline = await this.host.replay(failed.id);
239
+ }
240
+ }
241
+ if (!timeline)
242
+ return;
243
+ await this.queueCompletion(timeline);
244
+ }
245
+ async queueCompletion(timeline) {
246
+ timeline = await this.host.finalize(timeline);
247
+ if (timeline.run.status !== "completed" && timeline.run.status !== "failed")
248
+ return;
249
+ if (completionQueued(timeline.run)) {
250
+ this.pendingCompletionRunIds.delete(timeline.run.id);
251
+ return;
252
+ }
253
+ const turn = completionTurn(timeline);
254
+ if (!turn)
255
+ return;
256
+ this.pendingCompletionRunIds.add(timeline.run.id);
257
+ let queued;
258
+ try {
259
+ queued = await this.host.enqueueConversationTurn({
260
+ turn,
261
+ idempotencyScope: "background-subagent:completion",
262
+ idempotencyKey: timeline.run.id
263
+ });
264
+ }
265
+ catch (error) {
266
+ this.host.logger.warn("background subagent completion queue failed", {
267
+ runId: timeline.run.id,
268
+ error: error instanceof Error ? error.message : String(error)
269
+ });
270
+ return;
271
+ }
272
+ try {
273
+ const current = await this.host.state.getRun(timeline.run.id);
274
+ if (!current || !isJsonObject(current.input.background)) {
275
+ this.pendingCompletionRunIds.delete(timeline.run.id);
276
+ return;
277
+ }
278
+ await this.host.state.updateRun(current.id, {
279
+ input: {
280
+ ...current.input,
281
+ background: {
282
+ ...current.input.background,
283
+ completionQueued: true
284
+ }
285
+ }
286
+ });
287
+ this.pendingCompletionRunIds.delete(timeline.run.id);
288
+ }
289
+ catch (error) {
290
+ this.host.logger.warn("background subagent completion marker failed", {
291
+ runId: timeline.run.id,
292
+ error: error instanceof Error ? error.message : String(error)
293
+ });
294
+ return;
295
+ }
296
+ try {
297
+ await this.host.state.appendEvent(timeline.run.id, "subagent.background_completion_queued", {
298
+ queued: isJsonObject(queued) && queued.inserted === true
299
+ });
300
+ }
301
+ catch (error) {
302
+ this.host.logger.warn("background subagent completion event failed", {
303
+ runId: timeline.run.id,
304
+ error: error instanceof Error ? error.message : String(error)
305
+ });
306
+ }
307
+ }
308
+ }
309
+ //# sourceMappingURL=background-subagents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-subagents.js","sourceRoot":"","sources":["../src/background-subagents.ts"],"names":[],"mappings":"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"}
@@ -70,6 +70,7 @@ export declare function executeToolSearchTool(host: ToolExecutionHost, run: RunR
70
70
  }>;
71
71
  export declare function deferredTools(host: ToolExecutionHost, run: RunRecord): CompiledTool[];
72
72
  export declare function recordRuntimeHandledToolStart(host: ToolExecutionHost, run: RunRecord, toolName: string, input: unknown, idempotencyKey: string): Promise<ToolCallRecord>;
73
+ export declare function completeRuntimeHandledTool(host: ToolExecutionHost, run: RunRecord, toolCall: ToolCallRecord, toolName: string, output: JsonObject): Promise<void>;
73
74
  /**
74
75
  * Finalize a durably recordable model-invoked tool failure. Tool failures are
75
76
  * model results, not run failures; callers only throw when durable state cannot
@@ -1 +1 @@
1
- {"version":3,"file":"builtin-tool-executors.d.ts","sourceRoot":"","sources":["../src/builtin-tool-executors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builtin-tool-executors.d.ts","sourceRoot":"","sources":["../src/builtin-tool-executors.ts"],"names":[],"mappings":"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"}