@n8n/agents 0.12.0 → 0.13.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 (198) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +22 -21
  3. package/dist/index.js +13 -13
  4. package/dist/index.js.map +1 -1
  5. package/dist/runtime/{agent-runtime.d.ts → loop/agent-runtime.d.ts} +19 -51
  6. package/dist/runtime/loop/agent-runtime.js +468 -0
  7. package/dist/runtime/loop/agent-runtime.js.map +1 -0
  8. package/dist/runtime/loop/execution-counter.d.ts +12 -0
  9. package/dist/runtime/loop/execution-counter.js +36 -0
  10. package/dist/runtime/loop/execution-counter.js.map +1 -0
  11. package/dist/runtime/loop/generate-sink.d.ts +13 -0
  12. package/dist/runtime/loop/generate-sink.js +75 -0
  13. package/dist/runtime/loop/generate-sink.js.map +1 -0
  14. package/dist/runtime/loop/run-output-sink.d.ts +68 -0
  15. package/dist/runtime/loop/run-output-sink.js +3 -0
  16. package/dist/runtime/loop/run-output-sink.js.map +1 -0
  17. package/dist/runtime/loop/runtime-context.d.ts +38 -0
  18. package/dist/runtime/loop/runtime-context.js +188 -0
  19. package/dist/runtime/loop/runtime-context.js.map +1 -0
  20. package/dist/runtime/{runtime-helpers.d.ts → loop/runtime-helpers.d.ts} +3 -2
  21. package/dist/runtime/{runtime-helpers.js → loop/runtime-helpers.js} +4 -2
  22. package/dist/runtime/loop/runtime-helpers.js.map +1 -0
  23. package/dist/runtime/loop/stream-sink.d.ts +22 -0
  24. package/dist/runtime/loop/stream-sink.js +144 -0
  25. package/dist/runtime/loop/stream-sink.js.map +1 -0
  26. package/dist/runtime/{mcp-connection.d.ts → mcp/mcp-connection.d.ts} +2 -2
  27. package/dist/runtime/{mcp-connection.js → mcp/mcp-connection.js} +16 -2
  28. package/dist/runtime/mcp/mcp-connection.js.map +1 -0
  29. package/dist/runtime/{mcp-tool-resolver.d.ts → mcp/mcp-tool-resolver.d.ts} +1 -1
  30. package/dist/runtime/mcp/mcp-tool-resolver.js.map +1 -0
  31. package/dist/runtime/{episodic-memory-defaults.d.ts → memory/episodic-memory-defaults.d.ts} +1 -1
  32. package/dist/runtime/{episodic-memory-defaults.js → memory/episodic-memory-defaults.js} +2 -2
  33. package/dist/runtime/memory/episodic-memory-defaults.js.map +1 -0
  34. package/dist/runtime/{episodic-memory.d.ts → memory/episodic-memory.d.ts} +4 -4
  35. package/dist/runtime/{episodic-memory.js → memory/episodic-memory.js} +2 -2
  36. package/dist/runtime/memory/episodic-memory.js.map +1 -0
  37. package/dist/runtime/memory/memory-lifecycle.js.map +1 -0
  38. package/dist/runtime/memory/memory-orchestrator.d.ts +27 -0
  39. package/dist/runtime/memory/memory-orchestrator.js +232 -0
  40. package/dist/runtime/memory/memory-orchestrator.js.map +1 -0
  41. package/dist/runtime/{memory-store.d.ts → memory/memory-store.d.ts} +4 -4
  42. package/dist/runtime/{memory-store.js → memory/memory-store.js} +1 -1
  43. package/dist/runtime/memory/memory-store.js.map +1 -0
  44. package/dist/runtime/{observation-log-defaults.d.ts → memory/observation-log-defaults.d.ts} +2 -2
  45. package/dist/runtime/{observation-log-defaults.js → memory/observation-log-defaults.js} +6 -6
  46. package/dist/runtime/memory/observation-log-defaults.js.map +1 -0
  47. package/dist/runtime/{observation-log-observer.d.ts → memory/observation-log-observer.d.ts} +6 -5
  48. package/dist/runtime/{observation-log-observer.js → memory/observation-log-observer.js} +6 -2
  49. package/dist/runtime/memory/observation-log-observer.js.map +1 -0
  50. package/dist/runtime/{observation-log-reflector.d.ts → memory/observation-log-reflector.d.ts} +2 -2
  51. package/dist/runtime/{observation-log-reflector.js → memory/observation-log-reflector.js} +4 -6
  52. package/dist/runtime/memory/observation-log-reflector.js.map +1 -0
  53. package/dist/runtime/{observation-log-renderer.d.ts → memory/observation-log-renderer.d.ts} +1 -1
  54. package/dist/runtime/{observation-log-renderer.js → memory/observation-log-renderer.js} +1 -1
  55. package/dist/runtime/memory/observation-log-renderer.js.map +1 -0
  56. package/dist/runtime/{observation-log-store.d.ts → memory/observation-log-store.d.ts} +2 -1
  57. package/dist/runtime/{observation-log-store.js → memory/observation-log-store.js} +1 -0
  58. package/dist/runtime/memory/observation-log-store.js.map +1 -0
  59. package/dist/runtime/{scoped-memory-task-runner.d.ts → memory/scoped-memory-task-runner.d.ts} +5 -2
  60. package/dist/runtime/{scoped-memory-task-runner.js → memory/scoped-memory-task-runner.js} +2 -1
  61. package/dist/runtime/memory/scoped-memory-task-runner.js.map +1 -0
  62. package/dist/runtime/{strip-orphaned-tool-messages.d.ts → memory/strip-orphaned-tool-messages.d.ts} +1 -1
  63. package/dist/runtime/{strip-orphaned-tool-messages.js → memory/strip-orphaned-tool-messages.js} +1 -1
  64. package/dist/runtime/memory/strip-orphaned-tool-messages.js.map +1 -0
  65. package/dist/runtime/{title-generation.d.ts → memory/title-generation.d.ts} +5 -3
  66. package/dist/runtime/{title-generation.js → memory/title-generation.js} +5 -5
  67. package/dist/runtime/memory/title-generation.js.map +1 -0
  68. package/dist/runtime/model/lazy-ai.js.map +1 -0
  69. package/dist/runtime/{message-list.d.ts → model/message-list.d.ts} +3 -3
  70. package/dist/runtime/{message-list.js → model/message-list.js} +3 -3
  71. package/dist/runtime/model/message-list.js.map +1 -0
  72. package/dist/runtime/model/messages.d.ts +17 -0
  73. package/dist/runtime/{messages.js → model/messages.js} +64 -18
  74. package/dist/runtime/model/messages.js.map +1 -0
  75. package/dist/runtime/{model-factory.d.ts → model/model-factory.d.ts} +3 -2
  76. package/dist/runtime/{model-factory.js → model/model-factory.js} +3 -3
  77. package/dist/runtime/model/model-factory.js.map +1 -0
  78. package/dist/runtime/model/provider-credentials.js.map +1 -0
  79. package/dist/runtime/model/raw-usage.d.ts +11 -0
  80. package/dist/runtime/model/raw-usage.js +55 -0
  81. package/dist/runtime/model/raw-usage.js.map +1 -0
  82. package/dist/runtime/state/background-task-tracker.js.map +1 -0
  83. package/dist/runtime/{event-bus.d.ts → state/event-bus.d.ts} +2 -2
  84. package/dist/runtime/{event-bus.js → state/event-bus.js} +1 -1
  85. package/dist/runtime/state/event-bus.js.map +1 -0
  86. package/dist/runtime/{run-state.d.ts → state/run-state.d.ts} +1 -1
  87. package/dist/runtime/state/run-state.js.map +1 -0
  88. package/dist/runtime/streaming/stream-session.d.ts +21 -0
  89. package/dist/runtime/streaming/stream-session.js +67 -0
  90. package/dist/runtime/streaming/stream-session.js.map +1 -0
  91. package/dist/runtime/streaming/stream-writer-guard.d.ts +14 -0
  92. package/dist/runtime/streaming/stream-writer-guard.js +45 -0
  93. package/dist/runtime/streaming/stream-writer-guard.js.map +1 -0
  94. package/dist/runtime/{stream.d.ts → streaming/stream.d.ts} +2 -1
  95. package/dist/runtime/{stream.js → streaming/stream.js} +3 -1
  96. package/dist/runtime/streaming/stream.js.map +1 -0
  97. package/dist/runtime/telemetry/runtime-telemetry.d.ts +19 -0
  98. package/dist/runtime/telemetry/runtime-telemetry.js +174 -0
  99. package/dist/runtime/telemetry/runtime-telemetry.js.map +1 -0
  100. package/dist/runtime/{deferred-tool-manager.d.ts → tools/deferred-tool-manager.d.ts} +2 -2
  101. package/dist/runtime/{deferred-tool-manager.js → tools/deferred-tool-manager.js} +3 -5
  102. package/dist/runtime/tools/deferred-tool-manager.js.map +1 -0
  103. package/dist/runtime/{delegate-sub-agent-tool.d.ts → tools/delegate-sub-agent-tool.d.ts} +2 -2
  104. package/dist/runtime/{delegate-sub-agent-tool.js → tools/delegate-sub-agent-tool.js} +2 -2
  105. package/dist/runtime/tools/delegate-sub-agent-tool.js.map +1 -0
  106. package/dist/runtime/{fix-tool-call.d.ts → tools/fix-tool-call.d.ts} +1 -1
  107. package/dist/runtime/{fix-tool-call.js → tools/fix-tool-call.js} +1 -1
  108. package/dist/runtime/tools/fix-tool-call.js.map +1 -0
  109. package/dist/runtime/{sdk-owned-tool.d.ts → tools/sdk-owned-tool.d.ts} +1 -1
  110. package/dist/runtime/tools/sdk-owned-tool.js.map +1 -0
  111. package/dist/runtime/tools/sub-agent-task-path.js.map +1 -0
  112. package/dist/runtime/{tool-adapter.d.ts → tools/tool-adapter.d.ts} +1 -1
  113. package/dist/runtime/{tool-adapter.js → tools/tool-adapter.js} +4 -4
  114. package/dist/runtime/tools/tool-adapter.js.map +1 -0
  115. package/dist/runtime/tools/tool-call-executor.d.ts +86 -0
  116. package/dist/runtime/tools/tool-call-executor.js +498 -0
  117. package/dist/runtime/tools/tool-call-executor.js.map +1 -0
  118. package/dist/runtime/{write-todos-tool.d.ts → tools/write-todos-tool.d.ts} +1 -1
  119. package/dist/runtime/{write-todos-tool.js → tools/write-todos-tool.js} +1 -1
  120. package/dist/runtime/tools/write-todos-tool.js.map +1 -0
  121. package/dist/sdk/agent.d.ts +7 -1
  122. package/dist/sdk/agent.js +18 -8
  123. package/dist/sdk/agent.js.map +1 -1
  124. package/dist/sdk/eval.js +1 -1
  125. package/dist/sdk/eval.js.map +1 -1
  126. package/dist/sdk/guardrails/patterns.d.ts +3 -0
  127. package/dist/sdk/guardrails/patterns.js +95 -2
  128. package/dist/sdk/guardrails/patterns.js.map +1 -1
  129. package/dist/sdk/mcp-client.js +1 -1
  130. package/dist/sdk/mcp-client.js.map +1 -1
  131. package/dist/sdk/memory.d.ts +1 -1
  132. package/dist/sdk/memory.js +6 -6
  133. package/dist/sdk/memory.js.map +1 -1
  134. package/dist/skills/registry.js +2 -4
  135. package/dist/skills/registry.js.map +1 -1
  136. package/dist/skills/validator.js +4 -6
  137. package/dist/skills/validator.js.map +1 -1
  138. package/dist/types/sdk/agent-builder.d.ts +2 -0
  139. package/dist/types/sdk/agent.d.ts +6 -2
  140. package/dist/types/sdk/guardrail.d.ts +1 -1
  141. package/dist/types/sdk/provider.d.ts +1 -0
  142. package/dist/workspace/sandbox/daytona-auth-manager.d.ts +1 -1
  143. package/dist/workspace/sandbox/daytona-sandbox.d.ts +1 -1
  144. package/dist/workspace/sandbox/lazy-daytona.d.ts +1 -1
  145. package/dist/workspace/sandbox/lazy-daytona.js +1 -1
  146. package/dist/workspace/sandbox/lazy-daytona.js.map +1 -1
  147. package/dist/workspace/sandbox/types.d.ts +1 -1
  148. package/package.json +10 -10
  149. package/dist/runtime/agent-runtime.js +0 -1771
  150. package/dist/runtime/agent-runtime.js.map +0 -1
  151. package/dist/runtime/background-task-tracker.js.map +0 -1
  152. package/dist/runtime/deferred-tool-manager.js.map +0 -1
  153. package/dist/runtime/delegate-sub-agent-tool.js.map +0 -1
  154. package/dist/runtime/episodic-memory-defaults.js.map +0 -1
  155. package/dist/runtime/episodic-memory.js.map +0 -1
  156. package/dist/runtime/event-bus.js.map +0 -1
  157. package/dist/runtime/execution-counter.d.ts +0 -9
  158. package/dist/runtime/execution-counter.js +0 -16
  159. package/dist/runtime/execution-counter.js.map +0 -1
  160. package/dist/runtime/fix-tool-call.js.map +0 -1
  161. package/dist/runtime/lazy-ai.js.map +0 -1
  162. package/dist/runtime/mcp-connection.js.map +0 -1
  163. package/dist/runtime/mcp-tool-resolver.js.map +0 -1
  164. package/dist/runtime/memory-lifecycle.js.map +0 -1
  165. package/dist/runtime/memory-store.js.map +0 -1
  166. package/dist/runtime/message-list.js.map +0 -1
  167. package/dist/runtime/messages.d.ts +0 -6
  168. package/dist/runtime/messages.js.map +0 -1
  169. package/dist/runtime/model-factory.js.map +0 -1
  170. package/dist/runtime/observation-log-defaults.js.map +0 -1
  171. package/dist/runtime/observation-log-observer.js.map +0 -1
  172. package/dist/runtime/observation-log-reflector.js.map +0 -1
  173. package/dist/runtime/observation-log-renderer.js.map +0 -1
  174. package/dist/runtime/observation-log-store.js.map +0 -1
  175. package/dist/runtime/provider-credentials.js.map +0 -1
  176. package/dist/runtime/run-state.js.map +0 -1
  177. package/dist/runtime/runtime-helpers.js.map +0 -1
  178. package/dist/runtime/scoped-memory-task-runner.js.map +0 -1
  179. package/dist/runtime/sdk-owned-tool.js.map +0 -1
  180. package/dist/runtime/stream.js.map +0 -1
  181. package/dist/runtime/strip-orphaned-tool-messages.js.map +0 -1
  182. package/dist/runtime/sub-agent-task-path.js.map +0 -1
  183. package/dist/runtime/title-generation.js.map +0 -1
  184. package/dist/runtime/tool-adapter.js.map +0 -1
  185. package/dist/runtime/write-todos-tool.js.map +0 -1
  186. /package/dist/runtime/{mcp-tool-resolver.js → mcp/mcp-tool-resolver.js} +0 -0
  187. /package/dist/runtime/{memory-lifecycle.d.ts → memory/memory-lifecycle.d.ts} +0 -0
  188. /package/dist/runtime/{memory-lifecycle.js → memory/memory-lifecycle.js} +0 -0
  189. /package/dist/runtime/{lazy-ai.d.ts → model/lazy-ai.d.ts} +0 -0
  190. /package/dist/runtime/{lazy-ai.js → model/lazy-ai.js} +0 -0
  191. /package/dist/runtime/{provider-credentials.d.ts → model/provider-credentials.d.ts} +0 -0
  192. /package/dist/runtime/{provider-credentials.js → model/provider-credentials.js} +0 -0
  193. /package/dist/runtime/{background-task-tracker.d.ts → state/background-task-tracker.d.ts} +0 -0
  194. /package/dist/runtime/{background-task-tracker.js → state/background-task-tracker.js} +0 -0
  195. /package/dist/runtime/{run-state.js → state/run-state.js} +0 -0
  196. /package/dist/runtime/{sdk-owned-tool.js → tools/sdk-owned-tool.js} +0 -0
  197. /package/dist/runtime/{sub-agent-task-path.d.ts → tools/sub-agent-task-path.d.ts} +0 -0
  198. /package/dist/runtime/{sub-agent-task-path.js → tools/sub-agent-task-path.js} +0 -0
@@ -0,0 +1,468 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AgentRuntime = void 0;
4
+ const execution_counter_1 = require("./execution-counter");
5
+ const generate_sink_1 = require("./generate-sink");
6
+ const runtime_context_1 = require("./runtime-context");
7
+ const runtime_helpers_1 = require("./runtime-helpers");
8
+ const stream_sink_1 = require("./stream-sink");
9
+ const cancellation_1 = require("../../sdk/cancellation");
10
+ const catalog_1 = require("../../sdk/catalog");
11
+ const parse_1 = require("../../utils/parse");
12
+ const memory_orchestrator_1 = require("../memory/memory-orchestrator");
13
+ const title_generation_1 = require("../memory/title-generation");
14
+ const message_list_1 = require("../model/message-list");
15
+ const background_task_tracker_1 = require("../state/background-task-tracker");
16
+ const event_bus_1 = require("../state/event-bus");
17
+ const run_state_1 = require("../state/run-state");
18
+ const stream_session_1 = require("../streaming/stream-session");
19
+ const runtime_telemetry_1 = require("../telemetry/runtime-telemetry");
20
+ const deferred_tool_manager_1 = require("../tools/deferred-tool-manager");
21
+ const fix_tool_call_1 = require("../tools/fix-tool-call");
22
+ const tool_call_executor_1 = require("../tools/tool-call-executor");
23
+ const MAX_LOOP_ITERATIONS = 30;
24
+ const EMPTY_MESSAGE_LIST = {
25
+ messages: [],
26
+ historyIds: [],
27
+ inputIds: [],
28
+ responseIds: [],
29
+ };
30
+ class AgentRuntime {
31
+ constructor(config) {
32
+ this.backgroundTasks = new background_task_tracker_1.BackgroundTaskTracker();
33
+ this.config = config;
34
+ this.telemetry = new runtime_telemetry_1.RuntimeTelemetry(config);
35
+ this.runId = config.runId ?? (0, run_state_1.generateRunId)();
36
+ if (config.deferredTools && config.deferredTools.length > 0) {
37
+ this.deferredToolManager = new deferred_tool_manager_1.DeferredToolManager(config.deferredTools, config.toolSearch);
38
+ }
39
+ this.context = new runtime_context_1.RuntimeContextBuilder(config, this.deferredToolManager);
40
+ this.runState = config.runState ?? new run_state_1.RunStateManager(config.checkpointStorage);
41
+ this.eventBus = config.eventBus ?? new event_bus_1.AgentEventBus();
42
+ this.memory = new memory_orchestrator_1.MemoryOrchestrator(config, this.backgroundTasks, this.eventBus);
43
+ this.toolExecutor = new tool_call_executor_1.ToolCallExecutor({
44
+ telemetry: this.telemetry,
45
+ eventBus: this.eventBus,
46
+ concurrency: config.toolCallConcurrency ?? 1,
47
+ onCancelled: () => this.updateState({ status: 'cancelled' }),
48
+ });
49
+ this.modelCost = config.modelCost;
50
+ this.currentState = {
51
+ persistence: undefined,
52
+ status: 'idle',
53
+ messageList: EMPTY_MESSAGE_LIST,
54
+ pendingToolCalls: {},
55
+ };
56
+ }
57
+ setTelemetry(telemetry) {
58
+ this.config.telemetry = telemetry;
59
+ }
60
+ async dispose() {
61
+ this.eventBus.dispose();
62
+ await this.backgroundTasks.flush();
63
+ }
64
+ getState() {
65
+ return { ...this.currentState };
66
+ }
67
+ abort() {
68
+ this.eventBus.abort();
69
+ }
70
+ async generate(input, options) {
71
+ const abortScope = this.eventBus.createAbortScope(options?.abortSignal);
72
+ let list = undefined;
73
+ try {
74
+ const initializedList = await this.initRun(input, options);
75
+ list = initializedList;
76
+ const sink = new generate_sink_1.GenerateSink(this.createRunServices());
77
+ const rawResult = await this.telemetry.withRootSpan('generate', options, this.runId, async () => await this.runAgentLoop({ list: initializedList, options, abortScope }, sink));
78
+ return this.finalizeGenerate(rawResult, list);
79
+ }
80
+ catch (error) {
81
+ await this.telemetry.flush(options);
82
+ const isAbort = abortScope.isAborted;
83
+ this.updateState({ status: isAbort ? 'cancelled' : 'failed' });
84
+ if (!isAbort) {
85
+ this.eventBus.emit({ type: "error", message: String(error), error });
86
+ }
87
+ return {
88
+ runId: this.runId,
89
+ messages: list?.responseDelta() ?? [],
90
+ finishReason: 'error',
91
+ error,
92
+ getState: () => this.getState(),
93
+ };
94
+ }
95
+ finally {
96
+ abortScope.dispose();
97
+ }
98
+ }
99
+ async stream(input, options) {
100
+ const abortScope = this.eventBus.createAbortScope(options?.abortSignal);
101
+ let list;
102
+ try {
103
+ list = await this.initRun(input, options);
104
+ }
105
+ catch (error) {
106
+ const isAbort = abortScope.isAborted;
107
+ this.updateState({ status: isAbort ? 'cancelled' : 'failed' });
108
+ if (!isAbort) {
109
+ this.eventBus.emit({ type: "error", message: String(error), error });
110
+ }
111
+ abortScope.dispose();
112
+ return { runId: this.runId, stream: (0, runtime_helpers_1.makeErrorStream)(error), getState: () => this.getState() };
113
+ }
114
+ return {
115
+ runId: this.runId,
116
+ stream: this.startStream({ list, options, abortScope }),
117
+ getState: () => this.getState(),
118
+ };
119
+ }
120
+ async resume(method, data, options) {
121
+ this.runId = options.runId;
122
+ const state = await this.runState.resume(this.runId);
123
+ if (!state)
124
+ throw new Error(`No suspended run found for runId: ${this.runId}`);
125
+ const toolCall = state.pendingToolCalls[options.toolCallId];
126
+ if (!toolCall)
127
+ throw new Error(`No tool call found for toolCallId: ${options.toolCallId}`);
128
+ const list = message_list_1.AgentMessageList.deserialize(state.messageList);
129
+ this.context.hydrateDeferredToolsFromList(list);
130
+ const toolForValidation = this.context
131
+ .getCurrentTools(state.persistence)
132
+ .find((t) => t.name === toolCall.toolName);
133
+ if (!toolForValidation)
134
+ throw new Error(`Tool ${toolCall.toolName} not found`);
135
+ let resumeData = data;
136
+ let abortScope;
137
+ if (!(0, cancellation_1.isCancellation)(resumeData) && toolForValidation.resumeSchema) {
138
+ const parseResult = await (0, parse_1.parseWithSchema)(toolForValidation.resumeSchema, data);
139
+ if (!parseResult.success) {
140
+ throw new Error(`Invalid resume payload: ${parseResult.error}`);
141
+ }
142
+ resumeData = parseResult.data;
143
+ }
144
+ try {
145
+ const { runId: _rid, toolCallId: _tcid, ...callerExecOptions } = options;
146
+ const persisted = state.executionOptions ?? {};
147
+ const persistedMaxIterations = persisted.maxIterations;
148
+ const callerMaxIterations = callerExecOptions.maxIterations;
149
+ if (callerMaxIterations !== undefined &&
150
+ persistedMaxIterations !== undefined &&
151
+ callerMaxIterations < persistedMaxIterations) {
152
+ throw new Error(`Cannot decrease maxIterations when resuming a run. Expected >= ${persistedMaxIterations}, received ${callerMaxIterations}.`);
153
+ }
154
+ const mergedMaxIterations = callerMaxIterations ?? persistedMaxIterations;
155
+ const mergedExecOptions = {
156
+ ...callerExecOptions,
157
+ ...(mergedMaxIterations !== undefined ? { maxIterations: mergedMaxIterations } : {}),
158
+ ...(state.iterationCount !== undefined ? { iterationCount: state.iterationCount } : {}),
159
+ };
160
+ const tool = this.context
161
+ .getCurrentTools(state.persistence, mergedExecOptions.executionCounter)
162
+ .find((t) => t.name === toolCall.toolName);
163
+ if (!tool)
164
+ throw new Error(`Tool ${toolCall.toolName} not found`);
165
+ const resumeOptions = {
166
+ persistence: state.persistence,
167
+ ...mergedExecOptions,
168
+ };
169
+ abortScope = this.eventBus.createAbortScope(resumeOptions.abortSignal);
170
+ const activeAbortScope = abortScope;
171
+ const pendingResume = {
172
+ pendingToolCalls: state.pendingToolCalls,
173
+ resumeToolCallId: options.toolCallId,
174
+ resumeData,
175
+ };
176
+ await this.ensureModelCost();
177
+ await this.memory.setListObservationLogMemory(list, state.persistence);
178
+ if (method === 'generate') {
179
+ const sink = new generate_sink_1.GenerateSink(this.createRunServices());
180
+ const rawResult = await this.telemetry.withRootSpan('generate', resumeOptions, this.runId, async () => await this.runAgentLoop({
181
+ list,
182
+ options: resumeOptions,
183
+ abortScope: activeAbortScope,
184
+ pendingResume,
185
+ }, sink));
186
+ try {
187
+ return this.finalizeGenerate(rawResult, list);
188
+ }
189
+ finally {
190
+ abortScope.dispose();
191
+ }
192
+ }
193
+ return {
194
+ runId: this.runId,
195
+ stream: this.startStream({
196
+ list,
197
+ options: resumeOptions,
198
+ abortScope: activeAbortScope,
199
+ pendingResume,
200
+ }),
201
+ getState: () => this.getState(),
202
+ };
203
+ }
204
+ catch (error) {
205
+ const isAbort = abortScope?.isAborted ?? false;
206
+ abortScope?.dispose();
207
+ this.updateState({ status: isAbort ? 'cancelled' : 'failed' });
208
+ if (!isAbort) {
209
+ this.eventBus.emit({ type: "error", message: String(error), error });
210
+ }
211
+ if (method === 'generate') {
212
+ return {
213
+ runId: this.runId,
214
+ messages: [],
215
+ finishReason: 'error',
216
+ error,
217
+ getState: () => this.getState(),
218
+ };
219
+ }
220
+ return { runId: this.runId, stream: (0, runtime_helpers_1.makeErrorStream)(error), getState: () => this.getState() };
221
+ }
222
+ }
223
+ async buildMessageList(input, options) {
224
+ const list = new message_list_1.AgentMessageList();
225
+ await this.memory.loadInto(list, options);
226
+ list.addInput(input);
227
+ return list;
228
+ }
229
+ async initRun(input, options) {
230
+ this.updateState({
231
+ status: 'running',
232
+ persistence: options?.persistence,
233
+ });
234
+ this.eventBus.emit({ type: "agent_start" });
235
+ await this.ensureModelCost();
236
+ const normalizedInput = (0, runtime_helpers_1.normalizeInput)(input);
237
+ (0, execution_counter_1.incrementMessageCount)(options?.executionCounter);
238
+ return await this.buildMessageList(normalizedInput, options);
239
+ }
240
+ finalizeGenerate(result, list) {
241
+ result.runId = this.runId;
242
+ result.usage = this.applyCost(result.usage);
243
+ result.model = this.modelIdString;
244
+ this.updateState({ status: 'success', messageList: list.serialize() });
245
+ this.eventBus.emit({ type: "agent_end", messages: result.messages });
246
+ return { ...result, getState: () => this.getState() };
247
+ }
248
+ buildAiSdkOptions(toolMap, options) {
249
+ return {
250
+ ...this.telemetry.buildTelemetryOptions(options),
251
+ ...(options?.onStepStart ? { experimental_onStepStart: options.onStepStart } : {}),
252
+ ...(options?.onStepFinish ? { onStepFinish: options.onStepFinish } : {}),
253
+ experimental_repairToolCall: async (options) => {
254
+ return await (0, fix_tool_call_1.fixToolCall)({
255
+ toolCall: options.toolCall,
256
+ error: options.error,
257
+ }, toolMap);
258
+ },
259
+ };
260
+ }
261
+ assertNotAborted(abortScope) {
262
+ if (abortScope.isAborted) {
263
+ this.updateState({ status: 'cancelled' });
264
+ throw new Error('Agent run was aborted');
265
+ }
266
+ }
267
+ createRunServices() {
268
+ return {
269
+ runId: this.runId,
270
+ modelId: this.modelIdString,
271
+ applyCost: (usage) => this.applyCost(usage),
272
+ saveToMemory: async (list, options) => await this.memory.saveToMemory(list, options),
273
+ maybeGenerateTitle: async (list, options) => await this.maybeGenerateTitle(list, options),
274
+ flushTelemetry: async (options) => await this.telemetry.flush(options),
275
+ cleanupRun: async () => await this.cleanupRun(),
276
+ updateState: (patch) => this.updateState(patch),
277
+ emitAgentEnd: (messages) => this.eventBus.emit({ type: "agent_end", messages }),
278
+ getState: () => this.getState(),
279
+ };
280
+ }
281
+ async maybeGenerateTitle(list, options) {
282
+ if (!this.config.titleGeneration || !options?.persistence?.threadId || !this.config.memory) {
283
+ return;
284
+ }
285
+ const titlePromise = (0, title_generation_1.generateThreadTitle)({
286
+ memory: this.config.memory,
287
+ threadId: options.persistence.threadId,
288
+ resourceId: options.persistence.resourceId,
289
+ titleConfig: this.config.titleGeneration,
290
+ agentModel: this.config.model,
291
+ modelFetch: this.config.modelFetch,
292
+ turnDelta: list.turnDelta(),
293
+ executionCounter: options.executionCounter,
294
+ });
295
+ this.backgroundTasks.track(titlePromise);
296
+ if (this.config.titleGeneration.sync) {
297
+ await titlePromise;
298
+ }
299
+ }
300
+ async runAgentLoop(ctx, sink) {
301
+ const { list, options, abortScope, pendingResume } = ctx;
302
+ this.context.hydrateDeferredToolsFromList(list);
303
+ let totalUsage;
304
+ let lastFinishReason = 'stop';
305
+ let structuredOutput;
306
+ const runTelemetry = this.telemetry.resolve(options);
307
+ const staticLoopContext = this.context.buildStaticLoopContext({
308
+ ...options,
309
+ persistence: options?.persistence,
310
+ });
311
+ const maxIterations = options?.maxIterations ?? MAX_LOOP_ITERATIONS;
312
+ let iterationCount = options?.iterationCount ?? 0;
313
+ let reachedStopCondition = false;
314
+ const buildToolBatchContext = (toolMap) => ({
315
+ toolMap,
316
+ list,
317
+ runId: this.runId,
318
+ persistence: options?.persistence,
319
+ telemetry: runTelemetry,
320
+ executionCounter: options?.executionCounter,
321
+ abortSignal: abortScope.signal,
322
+ isAborted: () => abortScope.isAborted,
323
+ });
324
+ if (pendingResume) {
325
+ const pendingLoopContext = this.context.buildToolLoopContext(staticLoopContext.aiProviderTools, options?.persistence, options?.executionCounter);
326
+ const batch = await this.toolExecutor.iteratePendingToolCallsConcurrent({
327
+ ...buildToolBatchContext(pendingLoopContext.toolMap),
328
+ pendingResume,
329
+ });
330
+ await sink.emitToolBatch(batch);
331
+ if (Object.keys(batch.pending).length > 0) {
332
+ const suspendRunId = await this.persistSuspension(batch.pending, options, list, totalUsage, maxIterations, iterationCount);
333
+ return await sink.finishSuspended({
334
+ suspendRunId,
335
+ list,
336
+ usage: totalUsage,
337
+ suspensions: batch.suspensions,
338
+ });
339
+ }
340
+ }
341
+ for (; iterationCount < maxIterations; iterationCount++) {
342
+ this.assertNotAborted(abortScope);
343
+ this.eventBus.emit({ type: "turn_start" });
344
+ const { toolMap, aiTools, hasTools, effectiveInstructions } = this.context.buildToolLoopContext(staticLoopContext.aiProviderTools, options?.persistence, options?.executionCounter);
345
+ const { system, messages } = list.forLlm(effectiveInstructions, this.config.instructionProviderOptions);
346
+ const turn = await sink.callModel({
347
+ model: staticLoopContext.model,
348
+ system,
349
+ messages,
350
+ abortSignal: abortScope.signal,
351
+ hasTools,
352
+ aiTools,
353
+ providerOptions: staticLoopContext.providerOptions,
354
+ outputSpec: staticLoopContext.outputSpec,
355
+ aiSdkOptions: this.buildAiSdkOptions(toolMap, options),
356
+ });
357
+ totalUsage = (0, runtime_helpers_1.accumulateUsage)(totalUsage, turn.usage);
358
+ (0, execution_counter_1.incrementTokenCountFromUsage)(options?.executionCounter, turn.usage);
359
+ sink.reportUsage(totalUsage);
360
+ this.assertNotAborted(abortScope);
361
+ lastFinishReason = turn.finishReason;
362
+ list.addResponse(turn.newMessages);
363
+ if (turn.aiFinishReason !== 'tool-calls') {
364
+ structuredOutput = turn.structuredOutput;
365
+ this.emitTurnEnd(turn.newMessages, (0, runtime_helpers_1.extractSettledToolCalls)(turn.newMessages));
366
+ reachedStopCondition = true;
367
+ break;
368
+ }
369
+ const batch = await this.toolExecutor.iterateToolCallsConcurrent({
370
+ ...buildToolBatchContext(toolMap),
371
+ toolCalls: turn.toolCalls,
372
+ });
373
+ this.assertNotAborted(abortScope);
374
+ await sink.emitToolBatch(batch);
375
+ if (Object.keys(batch.pending).length > 0) {
376
+ const suspendRunId = await this.persistSuspension(batch.pending, options, list, totalUsage, maxIterations, iterationCount + 1);
377
+ return await sink.finishSuspended({
378
+ suspendRunId,
379
+ list,
380
+ usage: totalUsage,
381
+ suspensions: batch.suspensions,
382
+ });
383
+ }
384
+ this.emitTurnEnd(turn.newMessages, (0, runtime_helpers_1.extractSettledToolCalls)(list.responseDelta()));
385
+ }
386
+ if (!reachedStopCondition && iterationCount >= maxIterations) {
387
+ lastFinishReason = 'max-iterations';
388
+ }
389
+ return await sink.finishComplete({
390
+ list,
391
+ options,
392
+ finishReason: lastFinishReason,
393
+ usage: totalUsage,
394
+ structuredOutput,
395
+ });
396
+ }
397
+ startStream(ctx) {
398
+ let sink;
399
+ return (0, stream_session_1.startStreamSession)({
400
+ eventBus: this.eventBus,
401
+ abortScope: ctx.abortScope,
402
+ runId: this.runId,
403
+ options: ctx.options,
404
+ withRootSpan: async (operation, options, runId, fn) => await this.telemetry.withRootSpan(operation, options, runId, fn),
405
+ runLoop: async (guard) => {
406
+ sink = new stream_sink_1.StreamSink(guard, this.createRunServices(), ctx.options);
407
+ await this.runAgentLoop(ctx, sink);
408
+ },
409
+ getAbortFinish: () => sink?.getAbortFinish() ?? {},
410
+ flushTelemetry: async (options) => await this.telemetry.flush(options),
411
+ cleanupRun: async () => await this.cleanupRun(),
412
+ updateState: (status) => this.updateState({ status }),
413
+ emitError: (error) => this.eventBus.emit({ type: "error", message: String(error), error }),
414
+ });
415
+ }
416
+ async persistSuspension(pendingToolCalls, options, list, totalUsage, maxIterations, iterationCount) {
417
+ const resolvedMaxIterations = maxIterations ?? options?.maxIterations;
418
+ const resolvedIterationCount = iterationCount ?? options?.iterationCount;
419
+ const executionOptions = resolvedMaxIterations !== undefined ? { maxIterations: resolvedMaxIterations } : undefined;
420
+ const state = {
421
+ persistence: options?.persistence,
422
+ status: 'suspended',
423
+ messageList: list.serialize(),
424
+ pendingToolCalls,
425
+ usage: totalUsage,
426
+ executionOptions,
427
+ ...(resolvedIterationCount !== undefined ? { iterationCount: resolvedIterationCount } : {}),
428
+ };
429
+ await this.runState.suspend(this.runId, state);
430
+ this.updateState({ status: 'suspended', pendingToolCalls, messageList: list.serialize() });
431
+ return this.runId;
432
+ }
433
+ async cleanupRun() {
434
+ await this.runState.complete(this.runId);
435
+ }
436
+ emitTurnEnd(newMessages, toolResults) {
437
+ const assistantMsg = newMessages.find((m) => 'role' in m && m.role === 'assistant');
438
+ if (assistantMsg) {
439
+ this.eventBus.emit({ type: "turn_end", message: assistantMsg, toolResults });
440
+ }
441
+ }
442
+ updateState(patch) {
443
+ this.currentState = { ...this.currentState, ...patch };
444
+ }
445
+ get modelIdString() {
446
+ return (0, runtime_context_1.getModelIdString)(this.config.model);
447
+ }
448
+ async ensureModelCost() {
449
+ if (this.modelCost)
450
+ return this.modelCost;
451
+ try {
452
+ this.modelCost = await (0, catalog_1.getModelCost)(this.modelIdString);
453
+ }
454
+ catch {
455
+ }
456
+ return this.modelCost;
457
+ }
458
+ applyCost(usage) {
459
+ if (!usage || !this.modelCost)
460
+ return usage;
461
+ return { ...usage, cost: (0, catalog_1.computeCost)(usage, this.modelCost) };
462
+ }
463
+ getConfiguredTelemetry() {
464
+ return this.config.telemetry;
465
+ }
466
+ }
467
+ exports.AgentRuntime = AgentRuntime;
468
+ //# sourceMappingURL=agent-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-runtime.js","sourceRoot":"","sources":["../../../src/runtime/loop/agent-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { AgentExecutionCounter } from '../../types/sdk/agent';
2
+ interface TokenUsageLike {
3
+ totalTokens?: number;
4
+ inputTokens?: number;
5
+ outputTokens?: number;
6
+ tokens?: number;
7
+ }
8
+ export declare function recordExecutionCounter(fn: () => void): void;
9
+ export declare function incrementMessageCount(counter: AgentExecutionCounter | undefined): void;
10
+ export declare function incrementToolCallCount(counter: AgentExecutionCounter | undefined): void;
11
+ export declare function incrementTokenCountFromUsage(counter: AgentExecutionCounter | undefined, usage: TokenUsageLike | undefined): void;
12
+ export {};
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.recordExecutionCounter = recordExecutionCounter;
4
+ exports.incrementMessageCount = incrementMessageCount;
5
+ exports.incrementToolCallCount = incrementToolCallCount;
6
+ exports.incrementTokenCountFromUsage = incrementTokenCountFromUsage;
7
+ function recordExecutionCounter(fn) {
8
+ try {
9
+ fn();
10
+ }
11
+ catch {
12
+ }
13
+ }
14
+ function incrementMessageCount(counter) {
15
+ if (!counter)
16
+ return;
17
+ recordExecutionCounter(() => counter.incrementMessageCount());
18
+ }
19
+ function incrementToolCallCount(counter) {
20
+ if (!counter)
21
+ return;
22
+ recordExecutionCounter(() => counter.incrementToolCallCount());
23
+ }
24
+ function incrementTokenCountFromUsage(counter, usage) {
25
+ if (!counter || !usage)
26
+ return;
27
+ const tokenCount = usage.totalTokens ?? usage.tokens ?? (usage.inputTokens ?? 0) + (usage.outputTokens ?? 0);
28
+ if (tokenCount <= 0)
29
+ return;
30
+ try {
31
+ counter.incrementTokenCount(tokenCount);
32
+ }
33
+ catch {
34
+ }
35
+ }
36
+ //# sourceMappingURL=execution-counter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"execution-counter.js","sourceRoot":"","sources":["../../../src/runtime/loop/execution-counter.ts"],"names":[],"mappings":";;AAaA,wDAMC;AAED,sDAGC;AAED,wDAGC;AAED,oEAcC;AAhCD,SAAgB,sBAAsB,CAAC,EAAc;IACpD,IAAI,CAAC;QACJ,EAAE,EAAE,CAAC;IACN,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACF,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAA0C;IAC/E,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,sBAAsB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,SAAgB,sBAAsB,CAAC,OAA0C;IAChF,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,sBAAsB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,4BAA4B,CAC3C,OAA0C,EAC1C,KAAiC;IAEjC,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;QAAE,OAAO;IAC/B,MAAM,UAAU,GACf,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IAC3F,IAAI,UAAU,IAAI,CAAC;QAAE,OAAO;IAE5B,IAAI,CAAC;QACJ,OAAO,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;AACF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { CompleteEmission, ModelCallContext, ModelTurnResult, RunOutputSink, RunServices, SuspendEmission } from './run-output-sink';
2
+ import type { GenerateResult } from '../../types';
3
+ import type { ToolCallBatchResult } from '../tools/tool-call-executor';
4
+ export declare class GenerateSink implements RunOutputSink<GenerateResult> {
5
+ private readonly services;
6
+ private readonly toolCallSummary;
7
+ constructor(services: RunServices);
8
+ reportUsage(): void;
9
+ callModel(ctx: ModelCallContext): Promise<ModelTurnResult>;
10
+ emitToolBatch(batch: ToolCallBatchResult): Promise<void>;
11
+ finishSuspended(emission: SuspendEmission): Promise<GenerateResult>;
12
+ finishComplete(emission: CompleteEmission): Promise<GenerateResult>;
13
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GenerateSink = void 0;
4
+ const lazy_ai_1 = require("../model/lazy-ai");
5
+ const messages_1 = require("../model/messages");
6
+ class GenerateSink {
7
+ constructor(services) {
8
+ this.services = services;
9
+ this.toolCallSummary = [];
10
+ }
11
+ reportUsage() { }
12
+ async callModel(ctx) {
13
+ const { generateText } = (0, lazy_ai_1.loadAi)();
14
+ const result = await generateText({
15
+ model: ctx.model,
16
+ system: ctx.system,
17
+ messages: ctx.messages,
18
+ abortSignal: ctx.abortSignal,
19
+ ...(ctx.hasTools ? { tools: ctx.aiTools } : {}),
20
+ ...(ctx.providerOptions ? { providerOptions: ctx.providerOptions } : {}),
21
+ ...(ctx.outputSpec ? { output: ctx.outputSpec } : {}),
22
+ ...ctx.aiSdkOptions,
23
+ });
24
+ const aiFinishReason = result.finishReason;
25
+ return {
26
+ aiFinishReason,
27
+ finishReason: (0, messages_1.fromAiFinishReason)(aiFinishReason),
28
+ usage: result.usage,
29
+ newMessages: (0, messages_1.fromAiMessages)(result.response.messages),
30
+ toolCalls: result.toolCalls,
31
+ structuredOutput: ctx.outputSpec && aiFinishReason !== 'tool-calls' ? result.output : undefined,
32
+ };
33
+ }
34
+ async emitToolBatch(batch) {
35
+ for (const r of batch.results) {
36
+ this.toolCallSummary.push(r.toolEntry);
37
+ }
38
+ }
39
+ async finishSuspended(emission) {
40
+ const { suspendRunId, list, usage, suspensions } = emission;
41
+ return {
42
+ runId: suspendRunId,
43
+ messages: list.responseDelta(),
44
+ finishReason: 'tool-calls',
45
+ usage,
46
+ pendingSuspend: suspensions.map((s) => ({
47
+ runId: suspendRunId,
48
+ toolCallId: s.toolCallId,
49
+ toolName: s.toolName,
50
+ input: s.input,
51
+ suspendPayload: s.payload,
52
+ resumeSchema: s.resumeSchema,
53
+ })),
54
+ getState: () => this.services.getState(),
55
+ };
56
+ }
57
+ async finishComplete(emission) {
58
+ const { list, options, finishReason, usage, structuredOutput } = emission;
59
+ await this.services.saveToMemory(list, options);
60
+ await this.services.maybeGenerateTitle(list, options);
61
+ await this.services.cleanupRun();
62
+ await this.services.flushTelemetry(options);
63
+ return {
64
+ runId: this.services.runId,
65
+ messages: list.responseDelta(),
66
+ finishReason,
67
+ usage,
68
+ ...(structuredOutput !== undefined && { structuredOutput }),
69
+ ...(this.toolCallSummary.length > 0 && { toolCalls: this.toolCallSummary }),
70
+ getState: () => this.services.getState(),
71
+ };
72
+ }
73
+ }
74
+ exports.GenerateSink = GenerateSink;
75
+ //# sourceMappingURL=generate-sink.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate-sink.js","sourceRoot":"","sources":["../../../src/runtime/loop/generate-sink.ts"],"names":[],"mappings":"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"}