@anvia/core 1.13.0 → 1.14.1

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 (74) hide show
  1. package/dist/agent/agent.js +7 -7
  2. package/dist/agent/index.d.ts +4 -4
  3. package/dist/agent/index.js +10 -10
  4. package/dist/agent/resolve-options.js +1 -1
  5. package/dist/agent/resolved-agent.js +8 -8
  6. package/dist/agent/snapshot.js +1 -1
  7. package/dist/agent/team/agent-team.js +10 -10
  8. package/dist/agent/team/index.js +10 -10
  9. package/dist/agent/tool-catalog.js +3 -3
  10. package/dist/{agent-BuX5AXsO.d.ts → agent-DdkrgyW0.d.ts} +1 -1
  11. package/dist/{chunk-NVALGVQG.js → chunk-4PV56T23.js} +7 -1
  12. package/dist/chunk-4PV56T23.js.map +1 -0
  13. package/dist/{chunk-22E25UM7.js → chunk-6S7ZON2E.js} +2 -2
  14. package/dist/{chunk-OZ2GZHWH.js → chunk-ATFSEEFX.js} +20 -11
  15. package/dist/chunk-ATFSEEFX.js.map +1 -0
  16. package/dist/{chunk-KL652GO5.js → chunk-EF26KTFU.js} +2 -2
  17. package/dist/{chunk-AGOZCYFP.js → chunk-ET5SCES6.js} +6 -6
  18. package/dist/{chunk-KDGMHES4.js → chunk-GEFG7VGF.js} +4 -4
  19. package/dist/{chunk-YNA3UR42.js → chunk-J5UQ5I76.js} +72 -21
  20. package/dist/chunk-J5UQ5I76.js.map +1 -0
  21. package/dist/{chunk-MG7JYQN2.js → chunk-LC23KCUN.js} +1 -1
  22. package/dist/chunk-LC23KCUN.js.map +1 -0
  23. package/dist/{chunk-L2JI2GDH.js → chunk-PNMBJMLB.js} +2 -2
  24. package/dist/{chunk-ED7RKQHE.js → chunk-RVGSTZD3.js} +7 -3
  25. package/dist/chunk-RVGSTZD3.js.map +1 -0
  26. package/dist/{chunk-D43A3KOF.js → chunk-SS52CC5R.js} +3 -3
  27. package/dist/{chunk-HF5SX5BQ.js → chunk-TJOIYN4O.js} +4 -4
  28. package/dist/{chunk-KLDNHX4Z.js → chunk-X4XULHDO.js} +4 -4
  29. package/dist/{chunk-CKWIXVXM.js → chunk-XIIVC5LY.js} +3 -3
  30. package/dist/embeddings/index.js +8 -8
  31. package/dist/evals/advanced-metrics.js +2 -2
  32. package/dist/evals/cli.js +3 -3
  33. package/dist/evals/index.d.ts +1 -1
  34. package/dist/evals/index.js +32 -32
  35. package/dist/evals/metrics.js +4 -4
  36. package/dist/evals/runner.js +2 -2
  37. package/dist/index.d.ts +2 -2
  38. package/dist/index.js +12 -12
  39. package/dist/internal/agent-runtime/agent-run.js +4 -4
  40. package/dist/internal/agent-runtime/execution.js +1 -1
  41. package/dist/internal/agent-runtime/retrieval.js +1 -1
  42. package/dist/internal/agent-runtime/tool-execution.js +2 -2
  43. package/dist/internal/agent.d.ts +20 -4
  44. package/dist/internal/agent.js +9 -9
  45. package/dist/internal/team-runtime/run.js +9 -9
  46. package/dist/{middleware-D_kNSjzW.d.ts → middleware-rxi6GI2B.d.ts} +16 -1
  47. package/dist/observability/group.js +1 -1
  48. package/dist/observability/index.d.ts +1 -1
  49. package/dist/observability/index.js +1 -1
  50. package/dist/pipeline/index.d.ts +2 -2
  51. package/dist/skills/index.js +3 -3
  52. package/dist/skills/load.js +3 -3
  53. package/dist/skills/tools.js +1 -1
  54. package/dist/tool/dynamic-tools.js +1 -1
  55. package/dist/tool/index.d.ts +1 -1
  56. package/dist/tool/index.js +1 -1
  57. package/dist/vector-store/index.js +1 -1
  58. package/dist/vector-store/ingest.js +1 -1
  59. package/dist/vector-store/retrieve.js +1 -1
  60. package/package.json +1 -1
  61. package/dist/chunk-ED7RKQHE.js.map +0 -1
  62. package/dist/chunk-MG7JYQN2.js.map +0 -1
  63. package/dist/chunk-NVALGVQG.js.map +0 -1
  64. package/dist/chunk-OZ2GZHWH.js.map +0 -1
  65. package/dist/chunk-YNA3UR42.js.map +0 -1
  66. /package/dist/{chunk-22E25UM7.js.map → chunk-6S7ZON2E.js.map} +0 -0
  67. /package/dist/{chunk-KL652GO5.js.map → chunk-EF26KTFU.js.map} +0 -0
  68. /package/dist/{chunk-AGOZCYFP.js.map → chunk-ET5SCES6.js.map} +0 -0
  69. /package/dist/{chunk-KDGMHES4.js.map → chunk-GEFG7VGF.js.map} +0 -0
  70. /package/dist/{chunk-L2JI2GDH.js.map → chunk-PNMBJMLB.js.map} +0 -0
  71. /package/dist/{chunk-D43A3KOF.js.map → chunk-SS52CC5R.js.map} +0 -0
  72. /package/dist/{chunk-HF5SX5BQ.js.map → chunk-TJOIYN4O.js.map} +0 -0
  73. /package/dist/{chunk-KLDNHX4Z.js.map → chunk-X4XULHDO.js.map} +0 -0
  74. /package/dist/{chunk-CKWIXVXM.js.map → chunk-XIIVC5LY.js.map} +0 -0
@@ -6,6 +6,12 @@ import {
6
6
  } from "./chunk-HJ6KTQTZ.js";
7
7
 
8
8
  // src/observability/group.ts
9
+ var defaultOnObserverError = (failure) => {
10
+ const message = failure.error instanceof Error ? failure.error.message : String(failure.error);
11
+ console.error(
12
+ `[anvia] observer "${failure.observer}" failed during ${failure.phase}: ${message}`
13
+ );
14
+ };
9
15
  var AgentObserverDispatchError = class extends AggregateError {
10
16
  phase;
11
17
  failures;
@@ -47,18 +53,23 @@ async function startAgentRunObservers(observers, args, options) {
47
53
  );
48
54
  throw new AgentObserverDispatchError("startRun", [...failures, ...cleanupFailures]);
49
55
  }
56
+ if (options.errorPolicy === "ignore") {
57
+ reportObserverFailures("startRun", failures, options.onObserverError ?? defaultOnObserverError);
58
+ }
50
59
  return new ActiveAgentRunObservers(runObservers, options);
51
60
  }
52
61
  var ActiveAgentRunObservers = class {
53
62
  constructor(runObservers, options) {
54
63
  this.runObservers = runObservers;
55
64
  this.options = options;
65
+ this.onObserverError = options.onObserverError ?? defaultOnObserverError;
56
66
  const primary = options.primaryTrace === void 0 ? void 0 : runObservers.find((entry) => entry.name === options.primaryTrace);
57
67
  this.trace = primary?.observer.trace === void 0 ? void 0 : Object.freeze({ observer: primary.name, ...primary.observer.trace });
58
68
  }
59
69
  runObservers;
60
70
  options;
61
71
  trace;
72
+ onObserverError;
62
73
  async startGeneration(args) {
63
74
  const generationObservers = [];
64
75
  const failures = [];
@@ -81,7 +92,14 @@ var ActiveAgentRunObservers = class {
81
92
  );
82
93
  throw new AgentObserverDispatchError("startGeneration", [...failures, ...cleanupFailures]);
83
94
  }
84
- return new ActiveGenerationObservers(generationObservers, this.options.errorPolicy);
95
+ if (this.options.errorPolicy === "ignore") {
96
+ reportObserverFailures("startGeneration", failures, this.onObserverError);
97
+ }
98
+ return new ActiveGenerationObservers(
99
+ generationObservers,
100
+ this.options.errorPolicy,
101
+ this.onObserverError
102
+ );
85
103
  }
86
104
  async startTool(args) {
87
105
  const toolObservers = [];
@@ -105,14 +123,18 @@ var ActiveAgentRunObservers = class {
105
123
  );
106
124
  throw new AgentObserverDispatchError("startTool", [...failures, ...cleanupFailures]);
107
125
  }
108
- return new ActiveToolObservers(toolObservers, this.options.errorPolicy);
126
+ if (this.options.errorPolicy === "ignore") {
127
+ reportObserverFailures("startTool", failures, this.onObserverError);
128
+ }
129
+ return new ActiveToolObservers(toolObservers, this.options.errorPolicy, this.onObserverError);
109
130
  }
110
131
  async end(args) {
111
132
  await dispatchTerminalObservers(
112
133
  this.runObservers,
113
134
  "end",
114
135
  (observer) => observer.end(observerSnapshot(args)),
115
- this.options.errorPolicy
136
+ this.options.errorPolicy,
137
+ this.onObserverError
116
138
  );
117
139
  }
118
140
  async error(args) {
@@ -120,7 +142,8 @@ var ActiveAgentRunObservers = class {
120
142
  this.runObservers,
121
143
  "error",
122
144
  (observer) => observer.error?.(observerSnapshot(args)),
123
- "ignore"
145
+ "ignore",
146
+ this.onObserverError
124
147
  );
125
148
  }
126
149
  async event(args) {
@@ -128,23 +151,27 @@ var ActiveAgentRunObservers = class {
128
151
  this.runObservers,
129
152
  "event",
130
153
  (observer) => observer.event?.(observerSnapshot(args)),
131
- this.options.errorPolicy
154
+ this.options.errorPolicy,
155
+ this.onObserverError
132
156
  );
133
157
  }
134
158
  };
135
159
  var ActiveGenerationObservers = class {
136
- constructor(observers, errorPolicy) {
160
+ constructor(observers, errorPolicy, onObserverError) {
137
161
  this.observers = observers;
138
162
  this.errorPolicy = errorPolicy;
163
+ this.onObserverError = onObserverError ?? defaultOnObserverError;
139
164
  }
140
165
  observers;
141
166
  errorPolicy;
167
+ onObserverError;
142
168
  async end(args) {
143
169
  await dispatchTerminalObservers(
144
170
  this.observers,
145
171
  "generation.end",
146
172
  (observer) => observer.end(observerSnapshot(args)),
147
- this.errorPolicy
173
+ this.errorPolicy,
174
+ this.onObserverError
148
175
  );
149
176
  }
150
177
  async error(args) {
@@ -152,7 +179,8 @@ var ActiveGenerationObservers = class {
152
179
  this.observers,
153
180
  "generation.error",
154
181
  (observer) => observer.error?.(observerSnapshot(args)),
155
- "ignore"
182
+ "ignore",
183
+ this.onObserverError
156
184
  );
157
185
  }
158
186
  async update(args) {
@@ -160,23 +188,27 @@ var ActiveGenerationObservers = class {
160
188
  this.observers,
161
189
  "generation.update",
162
190
  (observer) => observer.update?.(observerSnapshot(args)),
163
- this.errorPolicy
191
+ this.errorPolicy,
192
+ this.onObserverError
164
193
  );
165
194
  }
166
195
  };
167
196
  var ActiveToolObservers = class {
168
- constructor(observers, errorPolicy) {
197
+ constructor(observers, errorPolicy, onObserverError) {
169
198
  this.observers = observers;
170
199
  this.errorPolicy = errorPolicy;
200
+ this.onObserverError = onObserverError ?? defaultOnObserverError;
171
201
  }
172
202
  observers;
173
203
  errorPolicy;
204
+ onObserverError;
174
205
  async streamEvent(args) {
175
206
  await dispatchObservers(
176
207
  this.observers,
177
208
  "tool.streamEvent",
178
209
  (observer) => observer.streamEvent?.(observerSnapshot(args)),
179
- this.errorPolicy
210
+ this.errorPolicy,
211
+ this.onObserverError
180
212
  );
181
213
  }
182
214
  async end(args) {
@@ -184,7 +216,8 @@ var ActiveToolObservers = class {
184
216
  this.observers,
185
217
  "tool.end",
186
218
  (observer) => observer.end(observerSnapshot(args)),
187
- this.errorPolicy
219
+ this.errorPolicy,
220
+ this.onObserverError
188
221
  );
189
222
  }
190
223
  async suspend(args) {
@@ -192,7 +225,8 @@ var ActiveToolObservers = class {
192
225
  this.observers,
193
226
  "tool.suspend",
194
227
  (observer) => observer.suspend?.(observerSnapshot(args)),
195
- this.errorPolicy
228
+ this.errorPolicy,
229
+ this.onObserverError
196
230
  );
197
231
  }
198
232
  async error(args) {
@@ -200,11 +234,12 @@ var ActiveToolObservers = class {
200
234
  this.observers,
201
235
  "tool.error",
202
236
  (observer) => observer.error?.(observerSnapshot(args)),
203
- "ignore"
237
+ "ignore",
238
+ this.onObserverError
204
239
  );
205
240
  }
206
241
  };
207
- async function dispatchObservers(observers, phase, dispatch, errorPolicy) {
242
+ async function dispatchObservers(observers, phase, dispatch, errorPolicy, onObserverError) {
208
243
  const failures = [];
209
244
  for (const entry of observers) {
210
245
  try {
@@ -213,11 +248,11 @@ async function dispatchObservers(observers, phase, dispatch, errorPolicy) {
213
248
  failures.push({ observer: entry.name, error });
214
249
  }
215
250
  }
216
- throwObserverFailures(phase, failures, errorPolicy);
251
+ throwObserverFailures(phase, failures, errorPolicy, onObserverError);
217
252
  }
218
- async function dispatchTerminalObservers(observers, phase, dispatch, errorPolicy) {
253
+ async function dispatchTerminalObservers(observers, phase, dispatch, errorPolicy, onObserverError) {
219
254
  const failures = await terminateObservers(observers, dispatch);
220
- throwObserverFailures(phase, failures, errorPolicy);
255
+ throwObserverFailures(phase, failures, errorPolicy, onObserverError);
221
256
  }
222
257
  async function terminateObservers(observers, dispatch) {
223
258
  const failures = [];
@@ -232,10 +267,26 @@ async function terminateObservers(observers, dispatch) {
232
267
  }
233
268
  return failures;
234
269
  }
235
- function throwObserverFailures(phase, failures, errorPolicy) {
236
- if (errorPolicy === "throw" && failures.length > 0) {
270
+ function throwObserverFailures(phase, failures, errorPolicy, onObserverError) {
271
+ if (failures.length === 0) return;
272
+ if (errorPolicy === "throw") {
237
273
  throw new AgentObserverDispatchError(phase, failures);
238
274
  }
275
+ reportObserverFailures(phase, failures, onObserverError);
276
+ }
277
+ function reportObserverFailures(phase, failures, onObserverError) {
278
+ for (const failure of failures) {
279
+ const report = {
280
+ phase,
281
+ observer: failure.observer,
282
+ error: failure.error
283
+ };
284
+ try {
285
+ void Promise.resolve(onObserverError(report)).catch(() => {
286
+ });
287
+ } catch {
288
+ }
289
+ }
239
290
  }
240
291
 
241
292
  export {
@@ -245,4 +296,4 @@ export {
245
296
  ActiveGenerationObservers,
246
297
  ActiveToolObservers
247
298
  };
248
- //# sourceMappingURL=chunk-YNA3UR42.js.map
299
+ //# sourceMappingURL=chunk-J5UQ5I76.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/observability/group.ts"],"sourcesContent":["import { Usage } from \"../completion\";\nimport { observerSnapshot } from \"./snapshot\";\nimport type {\n AgentGenerationEndArgs,\n AgentGenerationErrorArgs,\n AgentGenerationObserver,\n AgentGenerationStartArgs,\n AgentGenerationUpdateArgs,\n AgentObserverErrorHandler,\n AgentObserverErrorPolicy,\n AgentObserverFailureReport,\n AgentObserverMap,\n AgentRunEndArgs,\n AgentRunErrorArgs,\n AgentRunEventArgs,\n AgentRunObserver,\n AgentRunStartArgs,\n AgentToolEndArgs,\n AgentToolErrorArgs,\n AgentToolObserver,\n AgentToolStartArgs,\n AgentToolStreamEventArgs,\n AgentToolSuspendedArgs,\n AgentTraceInfo,\n} from \"./types\";\n\nexport type AgentObserverFailure = {\n readonly observer: string;\n readonly error: unknown;\n};\n\nconst defaultOnObserverError: AgentObserverErrorHandler = (failure) => {\n const message = failure.error instanceof Error ? failure.error.message : String(failure.error);\n console.error(\n `[anvia] observer \"${failure.observer}\" failed during ${failure.phase}: ${message}`,\n );\n};\n\nexport class AgentObserverDispatchError extends AggregateError {\n readonly phase: string;\n readonly failures: readonly AgentObserverFailure[];\n\n constructor(phase: string, failures: readonly AgentObserverFailure[]) {\n super(\n failures.map((failure) => failure.error),\n `Agent observer ${phase} failed for ${failures.map((failure) => failure.observer).join(\", \")}.`,\n );\n this.name = \"AgentObserverDispatchError\";\n this.phase = phase;\n this.failures = Object.freeze([...failures]);\n }\n}\n\ntype NamedObserver<T> = {\n readonly name: string;\n readonly observer: T;\n};\n\ntype ActiveNamedObserver<T> = NamedObserver<T> & {\n terminal: boolean;\n};\n\nexport async function startAgentRunObservers(\n observers: AgentObserverMap,\n args: AgentRunStartArgs,\n options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: AgentObserverErrorPolicy;\n readonly onObserverError?: AgentObserverErrorHandler | undefined;\n },\n): Promise<ActiveAgentRunObservers> {\n const runObservers: ActiveNamedObserver<AgentRunObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const [name, observer] of Object.entries(observers)) {\n try {\n const runObserver = await observer.startRun(observerSnapshot(args));\n if (runObserver !== undefined) {\n runObservers.push({ name, observer: runObserver, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: name, error });\n }\n }\n if (options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startRun\", failures);\n const cleanupFailures = await terminateObservers(runObservers, (observer) =>\n observer.error?.(\n observerSnapshot({\n status: \"failed\",\n error: startupError,\n usage: Usage.empty(),\n messages: [...args.history, args.prompt],\n }),\n ),\n );\n throw new AgentObserverDispatchError(\"startRun\", [...failures, ...cleanupFailures]);\n }\n if (options.errorPolicy === \"ignore\") {\n reportObserverFailures(\"startRun\", failures, options.onObserverError ?? defaultOnObserverError);\n }\n return new ActiveAgentRunObservers(runObservers, options);\n}\n\nexport class ActiveAgentRunObservers {\n readonly trace: AgentTraceInfo | undefined;\n private readonly onObserverError: AgentObserverErrorHandler;\n\n constructor(\n private readonly runObservers: readonly ActiveNamedObserver<AgentRunObserver>[],\n private readonly options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: AgentObserverErrorPolicy;\n readonly onObserverError?: AgentObserverErrorHandler | undefined;\n },\n ) {\n this.onObserverError = options.onObserverError ?? defaultOnObserverError;\n const primary =\n options.primaryTrace === undefined\n ? undefined\n : runObservers.find((entry) => entry.name === options.primaryTrace);\n this.trace =\n primary?.observer.trace === undefined\n ? undefined\n : Object.freeze({ observer: primary.name, ...primary.observer.trace });\n }\n\n async startGeneration(args: AgentGenerationStartArgs): Promise<ActiveGenerationObservers> {\n const generationObservers: ActiveNamedObserver<AgentGenerationObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const entry of this.runObservers) {\n if (entry.observer.startGeneration === undefined) continue;\n try {\n const observer = await entry.observer.startGeneration(observerSnapshot(args));\n if (observer !== undefined) {\n generationObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startGeneration\", failures);\n const cleanupFailures = await terminateObservers(generationObservers, (observer) =>\n observer.error?.(observerSnapshot({ turn: args.turn, error: startupError })),\n );\n throw new AgentObserverDispatchError(\"startGeneration\", [...failures, ...cleanupFailures]);\n }\n if (this.options.errorPolicy === \"ignore\") {\n reportObserverFailures(\"startGeneration\", failures, this.onObserverError);\n }\n return new ActiveGenerationObservers(\n generationObservers,\n this.options.errorPolicy,\n this.onObserverError,\n );\n }\n\n async startTool(args: AgentToolStartArgs): Promise<ActiveToolObservers> {\n const toolObservers: ActiveNamedObserver<AgentToolObserver>[] = [];\n const failures: AgentObserverFailure[] = [];\n for (const entry of this.runObservers) {\n if (entry.observer.startTool === undefined) continue;\n try {\n const observer = await entry.observer.startTool(observerSnapshot(args));\n if (observer !== undefined) {\n toolObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new AgentObserverDispatchError(\"startTool\", failures);\n const cleanupFailures = await terminateObservers(toolObservers, (observer) =>\n observer.error?.(observerSnapshot({ ...args, error: startupError })),\n );\n throw new AgentObserverDispatchError(\"startTool\", [...failures, ...cleanupFailures]);\n }\n if (this.options.errorPolicy === \"ignore\") {\n reportObserverFailures(\"startTool\", failures, this.onObserverError);\n }\n return new ActiveToolObservers(toolObservers, this.options.errorPolicy, this.onObserverError);\n }\n\n async end(args: AgentRunEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.runObservers,\n \"end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.options.errorPolicy,\n this.onObserverError,\n );\n }\n\n async error(args: AgentRunErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.runObservers,\n \"error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n this.onObserverError,\n );\n }\n\n async event(args: AgentRunEventArgs): Promise<void> {\n await dispatchObservers(\n this.runObservers,\n \"event\",\n (observer) => observer.event?.(observerSnapshot(args)),\n this.options.errorPolicy,\n this.onObserverError,\n );\n }\n}\n\nexport class ActiveGenerationObservers {\n private readonly onObserverError: AgentObserverErrorHandler;\n\n constructor(\n private readonly observers: readonly ActiveNamedObserver<AgentGenerationObserver>[],\n private readonly errorPolicy: AgentObserverErrorPolicy,\n onObserverError?: AgentObserverErrorHandler,\n ) {\n this.onObserverError = onObserverError ?? defaultOnObserverError;\n }\n\n async end(args: AgentGenerationEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"generation.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.errorPolicy,\n this.onObserverError,\n );\n }\n\n async error(args: AgentGenerationErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"generation.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n this.onObserverError,\n );\n }\n\n async update(args: AgentGenerationUpdateArgs): Promise<void> {\n await dispatchObservers(\n this.observers,\n \"generation.update\",\n (observer) => observer.update?.(observerSnapshot(args)),\n this.errorPolicy,\n this.onObserverError,\n );\n }\n}\n\nexport class ActiveToolObservers {\n private readonly onObserverError: AgentObserverErrorHandler;\n\n constructor(\n private readonly observers: readonly ActiveNamedObserver<AgentToolObserver>[],\n private readonly errorPolicy: AgentObserverErrorPolicy,\n onObserverError?: AgentObserverErrorHandler,\n ) {\n this.onObserverError = onObserverError ?? defaultOnObserverError;\n }\n\n async streamEvent(args: AgentToolStreamEventArgs): Promise<void> {\n await dispatchObservers(\n this.observers,\n \"tool.streamEvent\",\n (observer) => observer.streamEvent?.(observerSnapshot(args)),\n this.errorPolicy,\n this.onObserverError,\n );\n }\n\n async end(args: AgentToolEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.errorPolicy,\n this.onObserverError,\n );\n }\n\n async suspend(args: AgentToolSuspendedArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.suspend\",\n (observer) => observer.suspend?.(observerSnapshot(args)),\n this.errorPolicy,\n this.onObserverError,\n );\n }\n\n async error(args: AgentToolErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"tool.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n this.onObserverError,\n );\n }\n}\n\nasync function dispatchObservers<T>(\n observers: readonly NamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: AgentObserverErrorPolicy,\n onObserverError: AgentObserverErrorHandler,\n): Promise<void> {\n const failures: AgentObserverFailure[] = [];\n for (const entry of observers) {\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n throwObserverFailures(phase, failures, errorPolicy, onObserverError);\n}\n\nasync function dispatchTerminalObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: AgentObserverErrorPolicy,\n onObserverError: AgentObserverErrorHandler,\n): Promise<void> {\n const failures = await terminateObservers(observers, dispatch);\n throwObserverFailures(phase, failures, errorPolicy, onObserverError);\n}\n\nasync function terminateObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n dispatch: (observer: T) => void | Promise<void> | undefined,\n): Promise<AgentObserverFailure[]> {\n const failures: AgentObserverFailure[] = [];\n for (const entry of observers) {\n if (entry.terminal) continue;\n entry.terminal = true;\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n return failures;\n}\n\nfunction throwObserverFailures(\n phase: string,\n failures: readonly AgentObserverFailure[],\n errorPolicy: AgentObserverErrorPolicy,\n onObserverError: AgentObserverErrorHandler,\n): void {\n if (failures.length === 0) return;\n if (errorPolicy === \"throw\") {\n throw new AgentObserverDispatchError(phase, failures);\n }\n reportObserverFailures(phase, failures, onObserverError);\n}\n\nfunction reportObserverFailures(\n phase: string,\n failures: readonly AgentObserverFailure[],\n onObserverError: AgentObserverErrorHandler,\n): void {\n for (const failure of failures) {\n const report: AgentObserverFailureReport = {\n phase,\n observer: failure.observer,\n error: failure.error,\n };\n try {\n // Reporting must not block the run or leak a rejected handler promise.\n void Promise.resolve(onObserverError(report)).catch(() => {});\n } catch {\n // A faulty sink must not turn an ignored observer failure into a rejected run.\n }\n }\n}\n"],"mappings":"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","names":[]}
@@ -4,4 +4,4 @@ var AGENT_RUN_EXECUTION_VERSION = 4;
4
4
  export {
5
5
  AGENT_RUN_EXECUTION_VERSION
6
6
  };
7
- //# sourceMappingURL=chunk-MG7JYQN2.js.map
7
+ //# sourceMappingURL=chunk-LC23KCUN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/agent-runtime/execution.ts"],"sourcesContent":["import type { PreparedLoopContext, LoopContextCheckpoint } from \"./loop-context\";\nimport type {\n CompletionRequest,\n CompletionResponse,\n ToolCallPart,\n Message,\n UserMessage,\n} from \"../../completion\";\nimport type { NormalizedToolOutput, ToolCallContext } from \"../../tool\";\nimport type { AgentStreamEvent } from \"../../agent/run-types\";\n\n/** Runtime capability marker: older core versions must fail before accepting durable work. */\nexport const AGENT_RUN_EXECUTION_VERSION = 4;\n\n/** Normalized generation progress; never includes raw provider responses. */\nexport type AgentCompletionStreamEvent = Extract<\n AgentStreamEvent<unknown, unknown>,\n {\n type:\n | \"text_delta\"\n | \"reasoning_delta\"\n | \"tool_call_delta\"\n | \"tool_call\"\n | \"source\"\n | \"provider_tool_call\";\n }\n>;\n\nexport type AgentCompletionStream = AsyncGenerator<AgentCompletionStreamEvent, CompletionResponse>;\n\nexport type AgentToolExecutionResult =\n | { output: NormalizedToolOutput; failed: false }\n | { output: NormalizedToolOutput; failed: true; error: unknown };\n\n/** A run step the execution runtime may restore from a committed checkpoint. */\nexport type AgentRunExecutionStep =\n | { kind: \"context\"; turn: number }\n | { kind: \"model\"; turn: number }\n | { kind: \"tool\"; toolCall: ToolCallPart };\n\n/** Internal persistence boundary used by execution runtimes. Callbacks own external effects. */\nexport interface AgentRunExecution {\n /**\n * Whether a step is already committed and will be restored rather than executed. Queried before\n * the step starts; replayed steps are not observed or counted as run usage again.\n */\n replayed?(step: AgentRunExecutionStep): boolean;\n /** Synchronously checkpoint queued input at a safe boundary, including empty/closing drains. */\n drainSteering?(turn: number, closing: boolean): { id: string; messages: UserMessage[] }[];\n /** Persist the context selected before each model call, including skipped compaction decisions. */\n prepareMessages?(\n turn: number,\n messages: readonly Message[],\n checkpoint?: LoopContextCheckpoint,\n ): Promise<PreparedLoopContext>;\n completion(\n turn: number,\n request: CompletionRequest,\n execute: () => Promise<CompletionResponse>,\n ): Promise<CompletionResponse>;\n streamCompletion?(\n turn: number,\n request: CompletionRequest,\n execute: () => AgentCompletionStream,\n ): AgentCompletionStream;\n tool(\n call: { turn: number; toolCall: ToolCallPart; args: string },\n execute: (context?: Pick<ToolCallContext, \"operationId\">) => Promise<AgentToolExecutionResult>,\n ): Promise<AgentToolExecutionResult>;\n}\n"],"mappings":";AAYO,IAAM,8BAA8B;","names":[]}
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-PLDJCCVL.js";
7
7
  import {
8
8
  cloneFrozenPlainData
9
- } from "./chunk-NVALGVQG.js";
9
+ } from "./chunk-4PV56T23.js";
10
10
  import {
11
11
  assertFiniteMinScore,
12
12
  assertPositiveSearchLimit
@@ -165,4 +165,4 @@ function snapshotToolIndex(index) {
165
165
  export {
166
166
  prepareAgentTools
167
167
  };
168
- //# sourceMappingURL=chunk-L2JI2GDH.js.map
168
+ //# sourceMappingURL=chunk-PNMBJMLB.js.map
@@ -125,7 +125,7 @@ var ToolCallExecutor = class {
125
125
  }
126
126
  if (toolDefinition !== void 0) toolStartArgs = { ...toolStartArgs, toolDefinition };
127
127
  if (toolMetadata !== void 0) toolStartArgs = { ...toolStartArgs, toolMetadata };
128
- const toolObservers = await observation?.runObservers.startTool(toolStartArgs);
128
+ const toolObservers = this.replayed(toolCall) ? void 0 : await observation?.runObservers.startTool(toolStartArgs);
129
129
  const toolObservation = new ToolObserverScope(toolObservers);
130
130
  let output;
131
131
  let skipped = false;
@@ -399,7 +399,7 @@ var ToolCallExecutor = class {
399
399
  }
400
400
  if (toolDefinition !== void 0) toolStartArgs = { ...toolStartArgs, toolDefinition };
401
401
  if (toolMetadata !== void 0) toolStartArgs = { ...toolStartArgs, toolMetadata };
402
- const observers = await observation?.runObservers.startTool(toolStartArgs);
402
+ const observers = this.replayed(toolCall) ? void 0 : await observation?.runObservers.startTool(toolStartArgs);
403
403
  const toolObservation = new ToolObserverScope(observers);
404
404
  let output;
405
405
  let failed = false;
@@ -610,6 +610,10 @@ var ToolCallExecutor = class {
610
610
  throw error;
611
611
  }
612
612
  }
613
+ /** A restored result was observed when the tool ran; observing it again duplicates it. */
614
+ replayed(toolCall) {
615
+ return this.execution?.replayed?.({ kind: "tool", toolCall }) === true;
616
+ }
613
617
  runApprovedToolCall(prepared, toolCall, hookArgs, effectiveArgs, toolObservation, observation, onStreamEvent) {
614
618
  const execute = (context) => this.runUncachedToolCall(
615
619
  prepared,
@@ -967,4 +971,4 @@ function agentToolEventPayload(toolCall, internalCallId, event) {
967
971
  export {
968
972
  ToolCallExecutor
969
973
  };
970
- //# sourceMappingURL=chunk-ED7RKQHE.js.map
974
+ //# sourceMappingURL=chunk-RVGSTZD3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/agent-runtime/tool-execution.ts"],"sourcesContent":["import type { Agent } from \"../../agent/agent\";\nimport { parseAgentQuestionPrompts } from \"../../agent/interactions\";\nimport { type AgentLifecycle, lifecycleSnapshot } from \"../../agent/lifecycle\";\nimport type { AgentChildStreamEvent } from \"../../agent/run-types\";\nimport type {\n JsonObject,\n ToolCallPart,\n ToolDefinition,\n ToolResultContentPart,\n ToolResultOutput,\n ToolResultPart,\n} from \"../../completion\";\nimport { isJsonValue, Usage } from \"../../completion\";\nimport { assertCompletionResponseIntegrity } from \"../../completion/provider-output-error\";\nimport type { AgentHook, ToolApprovalRequestOptions, ToolHookArgs } from \"../../hooks\";\nimport { runControl, toolCallControl } from \"../../hooks\";\nimport { isMcpTool } from \"../../mcp\";\nimport type { ActiveAgentRunObservers, ActiveToolObservers } from \"../../observability/group\";\nimport type {\n AgentToolEndArgs,\n AgentToolErrorArgs,\n AgentToolStartArgs,\n AgentToolStreamEventArgs,\n AgentToolSuspendedArgs,\n} from \"../../observability/types\";\nimport type {\n AnyTool,\n NormalizedToolOutput,\n ToolApprovalContext,\n ToolApprovalRunContext,\n ToolCallContext,\n ToolCallStreamEvent,\n ToolRequiresApproval,\n} from \"../../tool\";\nimport {\n normalizeToolResultOutput,\n parseToolArgs,\n ToolOutput,\n toolResultContentToText,\n} from \"../../tool\";\nimport type {\n AgentMiddleware,\n ToolOutputMiddlewareArgs,\n ToolOutputMiddlewareResult,\n} from \"../../tool/middleware\";\nimport { isQuestionTool } from \"../../tool/question-tool\";\nimport { isSkillTool } from \"../../tool/skill-tool-marker\";\nimport { throwIfAborted } from \"../abort\";\nimport type { AgentRunExecution, AgentToolExecutionResult } from \"./execution\";\nimport { mapWithConcurrency } from \"../concurrency\";\nimport type { ToolApprovalRequest } from \"./approval-request\";\nimport { assertToolApprovalRequirement, toolMayRequireApproval } from \"./approval-requirement\";\nimport {\n AgentInteractionSignal,\n type PendingToolExecution,\n ToolExecutionSuspension,\n} from \"./interaction-suspension\";\nimport {\n type PreparedToolCall,\n prepareToolCall as prepareRegisteredToolCall,\n prepareToolCallFromInput,\n} from \"./prepared-tool-call\";\n\nexport type ToolResultEventPayload = {\n type: \"tool_result\";\n toolName: string;\n toolCallId: string;\n callId?: string;\n internalCallId: string;\n args: string;\n output: ToolResultOutput;\n result: string;\n structuredResult?: readonly ToolResultContentPart[] | undefined;\n};\n\nexport type AgentToolEventPayload = {\n type: \"agent_tool_event\";\n toolName: string;\n toolCallId?: string;\n internalCallId: string;\n agentId: string;\n agentName?: string;\n event: AgentChildStreamEvent<unknown, unknown>;\n};\n\nexport type ToolExecutionEventPayload = ToolResultEventPayload | AgentToolEventPayload;\n\nexport type ToolExecutionObservation = {\n turn: number;\n runObservers: ActiveAgentRunObservers;\n toolDefinitions?: ToolDefinition[];\n};\n\nexport type ToolExecutionRunContext = {\n runId: string;\n sessionId?: string | undefined;\n metadata?: JsonObject | undefined;\n};\n\nexport type ToolApprovalDecision =\n | { approved: true; reason?: string }\n | { approved: false; reason?: string };\n\nexport type ToolApprovalHandler = (request: ToolApprovalRequest) => Promise<ToolApprovalDecision>;\n\ntype ToolExecutionAgent = Pick<Agent, \"id\" | \"getTool\" | \"callTool\" | \"middlewares\">;\ntype ToolExecutionLifecycle = Pick<AgentLifecycle, \"onToolStart\" | \"onToolFinish\">;\n\nfunction sanitizeToolErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n // Return only name and message, omitting stack traces and internal details\n return `${error.name}: ${error.message}`;\n }\n\n if (typeof error === \"string\") {\n // Strings are JSON values, but JSON.stringify would add surrounding quotes.\n return error;\n }\n\n if (isJsonValue(error)) {\n return JSON.stringify(error);\n }\n\n // Non-Error thrown values\n return String(error);\n}\n\nexport class ToolCallExecutor {\n constructor(\n private readonly agent: ToolExecutionAgent,\n private readonly activeHook: AgentHook | undefined,\n private readonly approvalHandler: ToolApprovalHandler,\n private readonly lifecycle: ToolExecutionLifecycle | undefined,\n private readonly runContext: ToolExecutionRunContext,\n private readonly concurrency: number,\n private readonly requestMiddlewares: readonly AgentMiddleware[],\n private readonly abortSignal: AbortSignal,\n private readonly cancel: (reason: string) => Error,\n private readonly execution?: AgentRunExecution,\n ) {}\n\n async execute(\n toolCalls: readonly ToolCallPart[],\n onResult?: (result: ToolResultEventPayload) => void,\n onStreamEvent?: (event: AgentToolEventPayload) => void,\n observation?: ToolExecutionObservation,\n ): Promise<ToolResultPart[]> {\n assertCompletionResponseIntegrity({\n response: {\n choice: [...toolCalls],\n usage: Usage.empty(),\n rawResponse: undefined,\n },\n });\n\n const executeOne = async (toolCall: ToolCallPart): Promise<ToolResultPart> => {\n throwIfAborted(this.abortSignal);\n const args = JSON.stringify(toolCall.input);\n const internalCallId = globalThis.crypto.randomUUID();\n const hookArgs: ToolHookArgs = {\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args,\n };\n if (toolCall.callId !== undefined) {\n hookArgs.callId = toolCall.callId;\n }\n const tool = this.agent.getTool(toolCall.toolName);\n const toolDefinition = observation?.toolDefinitions?.find(\n (definition) => definition.name === toolCall.toolName,\n );\n const toolMetadata = toolTraceMetadata(tool);\n\n let toolStartArgs: AgentToolStartArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args,\n };\n if (toolCall.callId !== undefined) {\n toolStartArgs = { ...toolStartArgs, toolCallId: toolCall.callId };\n }\n if (toolDefinition !== undefined) toolStartArgs = { ...toolStartArgs, toolDefinition };\n if (toolMetadata !== undefined) toolStartArgs = { ...toolStartArgs, toolMetadata };\n const toolObservers = this.replayed(toolCall)\n ? undefined\n : await observation?.runObservers.startTool(toolStartArgs);\n const toolObservation = new ToolObserverScope(toolObservers);\n\n let output: NormalizedToolOutput | undefined;\n let skipped = false;\n let toolExecutionFailed = false;\n let effectiveArgs = args;\n\n try {\n const callAction = await this.activeHook?.onToolCall?.({\n ...hookArgs,\n tool: toolCallControl,\n });\n if (callAction?.type === \"terminate\") {\n throw this.cancel(callAction.reason);\n }\n if (callAction?.type === \"skip\") {\n output = { type: \"text\", value: callAction.reason };\n skipped = true;\n } else {\n try {\n effectiveArgs = await this.runToolInputMiddlewares({\n ...hookArgs,\n turn: observation?.turn ?? 0,\n originalArgs: args,\n });\n hookArgs.args = effectiveArgs;\n\n let prepared: PreparedToolCall | undefined;\n try {\n prepared = this.prepareToolCall(tool, toolCall.toolName, effectiveArgs);\n } catch (error) {\n const outcome = await this.handleToolError(\n toolCall,\n hookArgs,\n effectiveArgs,\n error,\n toolObservation,\n observation,\n );\n output = outcome.output;\n toolExecutionFailed = outcome.failed;\n }\n if (prepared !== undefined && isQuestionTool(tool)) {\n try {\n const questions = parseAgentQuestionPrompts(\n (prepared.input as { questions?: unknown }).questions,\n );\n const interaction = {\n type: \"tool-question\",\n id: globalThis.crypto.randomUUID(),\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n questions,\n } as const;\n if (toolCall.callId !== undefined) {\n Object.assign(interaction, { callId: toolCall.callId });\n }\n throw new AgentInteractionSignal(interaction);\n } catch (error) {\n if (error instanceof AgentInteractionSignal) throw error;\n const outcome = await this.handleToolError(\n toolCall,\n hookArgs,\n effectiveArgs,\n error,\n toolObservation,\n observation,\n );\n output = outcome.output;\n toolExecutionFailed = outcome.failed;\n prepared = undefined;\n }\n }\n if (prepared !== undefined) {\n const approvalContext = createApprovalContext(\n prepared.input,\n hookArgs,\n this.agent,\n this.runContext,\n );\n const approvalDecision =\n callAction?.type === \"approval_request\"\n ? await this.requestApproval(approvalContext, callAction, observation)\n : ((await this.evaluateToolApproval(tool, approvalContext, observation)) ?? {\n approved: true as const,\n });\n if (!approvalDecision.approved) {\n output = { type: \"execution-denied\", reason: approvalDecision.result };\n skipped = true;\n } else {\n const step = observation?.turn ?? 0;\n const lifecycleEvent = {\n runId: this.runContext.runId,\n step,\n toolName: toolCall.toolName,\n input: lifecycleSnapshot(prepared.input),\n };\n if (toolCall.callId !== undefined) {\n Object.assign(lifecycleEvent, { toolCallId: toolCall.callId });\n }\n await this.lifecycle?.onToolStart?.(lifecycleEvent);\n const startedAt = Date.now();\n const outcome = await this.runApprovedToolCall(\n prepared,\n toolCall,\n hookArgs,\n effectiveArgs,\n toolObservation,\n observation,\n onStreamEvent,\n );\n output = outcome.output;\n toolExecutionFailed = outcome.failed;\n const durationMs = Date.now() - startedAt;\n await this.lifecycle?.onToolFinish?.(\n outcome.failed\n ? {\n ...lifecycleEvent,\n durationMs,\n success: false,\n error: lifecycleSnapshot(outcome.error),\n }\n : {\n ...lifecycleEvent,\n durationMs,\n success: true,\n output: lifecycleSnapshot(output),\n },\n );\n }\n }\n } catch (error) {\n if (error instanceof AgentInteractionSignal) {\n await toolObservation.suspend({\n ...toolStartArgs,\n interaction: error.interaction,\n });\n throw error;\n }\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error),\n );\n throw error;\n }\n }\n\n if (output === undefined) {\n throw new Error(`Tool \"${toolCall.toolName}\" did not produce an execution result.`);\n }\n let result = toolOutputToText(output);\n let structuredResult = toolOutputToStructuredResult(output);\n if (!isSkillTool(tool)) {\n const middlewareReplacement = await this.runToolResultMiddlewares({\n ...hookArgs,\n args: effectiveArgs,\n result,\n originalResult: result,\n structuredResult,\n originalStructuredResult: structuredResult,\n turn: observation?.turn ?? 0,\n });\n if (middlewareReplacement !== undefined) {\n output = middlewareReplacement;\n result = toolOutputToText(middlewareReplacement);\n structuredResult = toolOutputToStructuredResult(middlewareReplacement);\n }\n }\n\n const resultAction = await this.activeHook?.onToolResult?.({\n ...hookArgs,\n args: effectiveArgs,\n result,\n structuredResult,\n run: runControl,\n });\n if (!toolExecutionFailed) {\n await toolObservation.end({\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n result,\n structuredResult,\n skipped,\n toolCallId: toolCall.callId,\n });\n }\n if (resultAction?.type === \"terminate\") {\n throw this.cancel(resultAction.reason);\n }\n\n const resultPayload: ToolResultEventPayload = {\n type: \"tool_result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n output,\n result,\n structuredResult,\n };\n if (toolCall.callId !== undefined) resultPayload.callId = toolCall.callId;\n onResult?.(resultPayload);\n let resultPart: ToolResultPart = {\n type: \"tool-result\" as const,\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output,\n };\n if (toolCall.callId !== undefined) {\n resultPart = { ...resultPart, callId: toolCall.callId };\n }\n return resultPart;\n } catch (error) {\n if (error instanceof AgentInteractionSignal) {\n const pending: PendingToolExecution = {\n toolCall,\n effectiveArgs,\n input:\n error.interaction.type === \"tool-approval\"\n ? error.interaction.input\n : parseToolArgs(effectiveArgs),\n internalCallId,\n };\n if (error.rejectMessage !== undefined) pending.rejectMessage = error.rejectMessage;\n throw new ToolExecutionSuspension(error.interaction, pending);\n }\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error),\n );\n throw error;\n }\n };\n\n if (this.concurrency === 1) {\n const results: ToolResultPart[] = [];\n for (const toolCall of toolCalls) {\n try {\n results.push(await executeOne(toolCall));\n } catch (error) {\n if (error instanceof ToolExecutionSuspension) {\n error.completedResults = [...results];\n error.remainingToolCalls = toolCalls.slice(results.length + 1);\n }\n throw error;\n }\n }\n return results;\n }\n return mapWithConcurrency(toolCalls, this.concurrency, executeOne);\n }\n\n async executeResumed(\n pending: PendingToolExecution,\n onResult?: (result: ToolResultEventPayload) => void,\n onStreamEvent?: (event: AgentToolEventPayload) => void,\n observation?: ToolExecutionObservation,\n ): Promise<ToolResultPart> {\n throwIfAborted(this.abortSignal);\n const { toolCall, internalCallId, effectiveArgs } = pending;\n const tool = this.agent.getTool(toolCall.toolName);\n if (tool === undefined) {\n throw new Error(\n `Cannot resume tool interaction because tool \"${toolCall.toolName}\" is no longer registered.`,\n );\n }\n if (isQuestionTool(tool)) {\n throw new TypeError(\"Question interactions are resolved from their submitted answers.\");\n }\n\n const hookArgs: ToolHookArgs = {\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n };\n if (toolCall.callId !== undefined) hookArgs.callId = toolCall.callId;\n const toolDefinition = observation?.toolDefinitions?.find(\n (definition) => definition.name === toolCall.toolName,\n );\n const toolMetadata = toolTraceMetadata(tool);\n let toolStartArgs: AgentToolStartArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n };\n if (toolCall.callId !== undefined) {\n toolStartArgs = { ...toolStartArgs, toolCallId: toolCall.callId };\n }\n if (toolDefinition !== undefined) toolStartArgs = { ...toolStartArgs, toolDefinition };\n if (toolMetadata !== undefined) toolStartArgs = { ...toolStartArgs, toolMetadata };\n const observers = this.replayed(toolCall)\n ? undefined\n : await observation?.runObservers.startTool(toolStartArgs);\n const toolObservation = new ToolObserverScope(observers);\n let output: NormalizedToolOutput;\n let failed = false;\n\n try {\n const prepared = prepareToolCallFromInput(tool, pending.input);\n const step = observation?.turn ?? 0;\n const lifecycleEvent = {\n runId: this.runContext.runId,\n step,\n toolName: toolCall.toolName,\n input: lifecycleSnapshot(prepared.input),\n };\n if (toolCall.callId !== undefined) {\n Object.assign(lifecycleEvent, { toolCallId: toolCall.callId });\n }\n await this.lifecycle?.onToolStart?.(lifecycleEvent);\n const startedAt = Date.now();\n const outcome = await this.runApprovedToolCall(\n prepared,\n toolCall,\n hookArgs,\n effectiveArgs,\n toolObservation,\n observation,\n onStreamEvent,\n );\n output = outcome.output;\n failed = outcome.failed;\n const durationMs = Date.now() - startedAt;\n await this.lifecycle?.onToolFinish?.(\n outcome.failed\n ? {\n ...lifecycleEvent,\n durationMs,\n success: false,\n error: lifecycleSnapshot(outcome.error),\n }\n : {\n ...lifecycleEvent,\n durationMs,\n success: true,\n output: lifecycleSnapshot(output),\n },\n );\n\n let result = toolOutputToText(output);\n let structuredResult = toolOutputToStructuredResult(output);\n if (!isSkillTool(tool)) {\n const replacement = await this.runToolResultMiddlewares({\n ...hookArgs,\n args: effectiveArgs,\n result,\n originalResult: result,\n structuredResult,\n originalStructuredResult: structuredResult,\n turn: step,\n });\n if (replacement !== undefined) {\n output = replacement;\n result = toolOutputToText(replacement);\n structuredResult = toolOutputToStructuredResult(replacement);\n }\n }\n const resultAction = await this.activeHook?.onToolResult?.({\n ...hookArgs,\n result,\n structuredResult,\n run: runControl,\n });\n if (!failed) {\n await toolObservation.end({\n turn: step,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n result,\n structuredResult,\n skipped: false,\n toolCallId: toolCall.callId,\n });\n }\n if (resultAction?.type === \"terminate\") {\n throw this.cancel(resultAction.reason);\n }\n const resultPayload: ToolResultEventPayload = {\n type: \"tool_result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n output,\n result,\n structuredResult,\n };\n if (toolCall.callId !== undefined) resultPayload.callId = toolCall.callId;\n onResult?.(resultPayload);\n let resultPart: ToolResultPart = {\n type: \"tool-result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n output,\n };\n if (toolCall.callId !== undefined) resultPart = { ...resultPart, callId: toolCall.callId };\n return resultPart;\n } catch (error) {\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error),\n );\n throw error;\n }\n }\n\n async resolveResumed(\n pending: PendingToolExecution,\n initialOutput: NormalizedToolOutput,\n onResult?: (result: ToolResultEventPayload) => void,\n observation?: ToolExecutionObservation,\n ): Promise<ToolResultPart> {\n throwIfAborted(this.abortSignal);\n const { toolCall, internalCallId, effectiveArgs } = pending;\n const tool = this.agent.getTool(toolCall.toolName);\n if (tool === undefined) {\n throw new Error(\n `Cannot resume tool interaction because tool \"${toolCall.toolName}\" is no longer registered.`,\n );\n }\n\n const hookArgs: ToolHookArgs = {\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n };\n if (toolCall.callId !== undefined) hookArgs.callId = toolCall.callId;\n const toolDefinition = observation?.toolDefinitions?.find(\n (definition) => definition.name === toolCall.toolName,\n );\n const toolMetadata = toolTraceMetadata(tool);\n let toolStartArgs: AgentToolStartArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n };\n if (toolCall.callId !== undefined) {\n toolStartArgs = { ...toolStartArgs, toolCallId: toolCall.callId };\n }\n if (toolDefinition !== undefined) toolStartArgs = { ...toolStartArgs, toolDefinition };\n if (toolMetadata !== undefined) toolStartArgs = { ...toolStartArgs, toolMetadata };\n const observers = await observation?.runObservers.startTool(toolStartArgs);\n const toolObservation = new ToolObserverScope(observers);\n\n try {\n let output = initialOutput;\n let result = toolOutputToText(output);\n let structuredResult = toolOutputToStructuredResult(output);\n if (!isSkillTool(tool)) {\n const replacement = await this.runToolResultMiddlewares({\n ...hookArgs,\n args: effectiveArgs,\n result,\n originalResult: result,\n structuredResult,\n originalStructuredResult: structuredResult,\n turn: observation?.turn ?? 0,\n });\n if (replacement !== undefined) {\n output = replacement;\n result = toolOutputToText(replacement);\n structuredResult = toolOutputToStructuredResult(replacement);\n }\n }\n const resultAction = await this.activeHook?.onToolResult?.({\n ...hookArgs,\n result,\n structuredResult,\n run: runControl,\n });\n await toolObservation.end({\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args: effectiveArgs,\n result,\n structuredResult,\n skipped: true,\n toolCallId: toolCall.callId,\n });\n if (resultAction?.type === \"terminate\") {\n throw this.cancel(resultAction.reason);\n }\n const resultPayload: ToolResultEventPayload = {\n type: \"tool_result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n internalCallId,\n args: effectiveArgs,\n output,\n result,\n structuredResult,\n };\n if (toolCall.callId !== undefined) resultPayload.callId = toolCall.callId;\n onResult?.(resultPayload);\n let resultPart: ToolResultPart = {\n type: \"tool-result\",\n toolName: toolCall.toolName,\n toolCallId: toolCall.toolCallId,\n output,\n };\n if (toolCall.callId !== undefined) resultPart = { ...resultPart, callId: toolCall.callId };\n return resultPart;\n } catch (error) {\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, internalCallId, effectiveArgs, error),\n );\n throw error;\n }\n }\n\n /** A restored result was observed when the tool ran; observing it again duplicates it. */\n private replayed(toolCall: ToolCallPart): boolean {\n return this.execution?.replayed?.({ kind: \"tool\", toolCall }) === true;\n }\n\n private runApprovedToolCall(\n prepared: PreparedToolCall,\n toolCall: ToolCallPart,\n hookArgs: ToolHookArgs,\n effectiveArgs: string,\n toolObservation: ToolObserverScope,\n observation: ToolExecutionObservation | undefined,\n onStreamEvent?: (event: AgentToolEventPayload) => void,\n ): Promise<\n | { output: NormalizedToolOutput; failed: false }\n | { output: NormalizedToolOutput; failed: true; error: unknown }\n > {\n const execute = (context?: Pick<ToolCallContext, \"operationId\">) =>\n this.runUncachedToolCall(\n prepared,\n toolCall,\n hookArgs,\n effectiveArgs,\n toolObservation,\n observation,\n onStreamEvent,\n context,\n );\n return this.execution === undefined\n ? execute()\n : this.execution.tool(\n { turn: observation?.turn ?? 0, toolCall, args: effectiveArgs },\n execute,\n );\n }\n\n private async runUncachedToolCall(\n prepared: PreparedToolCall,\n toolCall: ToolCallPart,\n hookArgs: ToolHookArgs,\n effectiveArgs: string,\n toolObservation: ToolObserverScope,\n observation: ToolExecutionObservation | undefined,\n onStreamEvent: ((event: AgentToolEventPayload) => void) | undefined,\n context: Pick<ToolCallContext, \"operationId\"> | undefined,\n ): Promise<AgentToolExecutionResult> {\n try {\n const toolContext: ToolCallContext = {\n ...context,\n abortSignal: this.abortSignal,\n emitStreamEvent: async (event) => {\n let streamEventArgs: AgentToolStreamEventArgs = {\n turn: observation?.turn ?? 0,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId: hookArgs.internalCallId,\n args: effectiveArgs,\n event,\n };\n if (toolCall.callId !== undefined) {\n streamEventArgs = { ...streamEventArgs, toolCallId: toolCall.callId };\n }\n await toolObservation.streamEvent(streamEventArgs);\n const payload = agentToolEventPayload(toolCall, hookArgs.internalCallId, event);\n if (payload !== undefined) {\n onStreamEvent?.(payload);\n }\n },\n };\n return {\n output: await prepared.call(toolContext),\n failed: false,\n };\n } catch (error) {\n return this.handleToolError(\n toolCall,\n hookArgs,\n effectiveArgs,\n error,\n toolObservation,\n observation,\n );\n }\n }\n\n private prepareToolCall(\n tool: AnyTool | undefined,\n toolName: string,\n args: string,\n ): PreparedToolCall {\n if (tool !== undefined) {\n return prepareRegisteredToolCall(tool, args);\n }\n const input = parseToolArgs(args);\n return {\n input,\n call: (context) => this.agent.callTool(toolName, args, context),\n };\n }\n\n private async handleToolError(\n toolCall: ToolCallPart,\n hookArgs: ToolHookArgs,\n args: string,\n error: unknown,\n toolObservation: ToolObserverScope,\n observation: ToolExecutionObservation | undefined,\n ): Promise<{ output: NormalizedToolOutput; failed: true; error: unknown }> {\n const errorAction = await this.activeHook?.onToolError?.({\n ...hookArgs,\n args,\n error,\n run: runControl,\n });\n await toolObservation.error(\n toolErrorArgs(observation?.turn ?? 0, toolCall, hookArgs.internalCallId, args, error),\n );\n if (errorAction?.type === \"terminate\") {\n throw this.cancel(errorAction.reason);\n }\n return {\n output: {\n type: \"error-text\",\n value: sanitizeToolErrorMessage(error),\n },\n failed: true,\n error,\n };\n }\n\n private async runToolResultMiddlewares(\n args: ToolOutputMiddlewareArgs,\n ): Promise<NormalizedToolOutput | undefined> {\n let result = args.result;\n let structuredResult = args.structuredResult;\n let replaced = false;\n for (const middleware of this.activeMiddlewares()) {\n const outputReplacement = await middleware.onToolOutput?.({\n ...args,\n result,\n structuredResult,\n });\n if (outputReplacement !== undefined) {\n const normalized = normalizeToolOutputMiddlewareResult(outputReplacement);\n if (normalized.result !== undefined) {\n result = normalized.result;\n structuredResult = undefined;\n }\n if (normalized.structuredResult !== undefined) {\n structuredResult = normalized.structuredResult;\n result = toolResultContentToText(normalized.structuredResult);\n }\n replaced = true;\n }\n }\n return replaced\n ? structuredResult === undefined\n ? { type: \"text\", value: result }\n : { type: \"content\", value: structuredResult }\n : undefined;\n }\n\n private async runToolInputMiddlewares(\n args: ToolHookArgs & { turn: number; originalArgs: string },\n ): Promise<string> {\n let current = args.args;\n for (const middleware of this.activeMiddlewares()) {\n const replacement = await middleware.onToolInput?.({\n ...args,\n args: current,\n });\n if (replacement?.args !== undefined) {\n if (typeof replacement.args === \"string\") {\n current = replacement.args;\n } else {\n if (!isJsonValue(replacement.args)) {\n throw new TypeError(\"Tool input middleware args must be a strict JSON value.\");\n }\n current = JSON.stringify(replacement.args);\n }\n }\n }\n return current;\n }\n\n private activeMiddlewares(): AgentMiddleware[] {\n return [...this.agent.middlewares, ...this.requestMiddlewares];\n }\n\n private async evaluateToolApproval(\n tool: AnyTool | undefined,\n context: ToolApprovalContext,\n observation: ToolExecutionObservation | undefined,\n ): Promise<{ approved: true } | { approved: false; result: string } | undefined> {\n const requirement = tool?.requiresApproval as ToolRequiresApproval<unknown> | undefined;\n if (requirement === undefined) return undefined;\n const resolved =\n typeof requirement === \"function\" ? await requirement(context.args, context) : requirement;\n assertToolApprovalRequirement(resolved, { allowFunction: false });\n if (resolved === false) return { approved: true };\n const reason = resolved === true ? undefined : resolved.reason;\n return this.requestApproval(context, reason === undefined ? {} : { reason }, observation);\n }\n\n private async requestApproval(\n context: ToolApprovalContext,\n options: ToolApprovalRequestOptions,\n observation: ToolExecutionObservation | undefined,\n ): Promise<{ approved: true } | { approved: false; result: string }> {\n const request: ToolApprovalRequest = {\n ...context,\n id: globalThis.crypto.randomUUID(),\n };\n if (options.reason !== undefined) {\n request.reason = options.reason;\n }\n if (options.rejectMessage !== undefined) {\n request.rejectMessage = options.rejectMessage;\n }\n await observation?.runObservers.event({\n name: \"tool.approval_requested\",\n attributes: approvalEventAttributes(request, observation.turn),\n });\n let decision: ToolApprovalDecision;\n try {\n decision = await this.approvalHandler(request);\n } catch (error) {\n if (error instanceof AgentInteractionSignal) {\n throw error;\n }\n await observation?.runObservers.event({\n name: \"tool.approval_failed\",\n level: \"ERROR\",\n attributes: {\n ...approvalEventAttributes(request, observation.turn),\n errorName: error instanceof Error ? error.name : typeof error,\n },\n });\n throw error;\n }\n const attributes: JsonObject = {\n ...approvalEventAttributes(request, observation?.turn ?? 0),\n approved: decision.approved,\n };\n if (decision.reason !== undefined) attributes.decisionReason = decision.reason;\n await observation?.runObservers.event({\n name: \"tool.approval_resolved\",\n attributes,\n });\n if (decision.approved) {\n return { approved: true };\n }\n return {\n approved: false,\n result: decision.reason ?? request.rejectMessage ?? \"Tool approval was rejected.\",\n };\n }\n}\n\nfunction createApprovalContext(\n input: unknown,\n hookArgs: ToolHookArgs,\n agent: Pick<Agent, \"id\">,\n run: ToolExecutionRunContext,\n): ToolApprovalContext {\n const approvalRun: ToolApprovalRunContext = {\n agentId: agent.id,\n runId: run.runId,\n };\n if (run.sessionId !== undefined) {\n approvalRun.sessionId = run.sessionId;\n }\n if (run.metadata !== undefined) {\n approvalRun.metadata = run.metadata;\n }\n const context: ToolApprovalContext = {\n toolName: hookArgs.toolName,\n args: lifecycleSnapshot(input),\n rawArgs: hookArgs.args,\n toolCallId: hookArgs.toolCallId,\n internalCallId: hookArgs.internalCallId,\n run: approvalRun,\n };\n if (hookArgs.callId !== undefined) {\n context.callId = hookArgs.callId;\n }\n return context;\n}\n\nfunction approvalEventAttributes(request: ToolApprovalRequest, turn: number): JsonObject {\n const attributes: JsonObject = {\n turn,\n approvalId: request.id,\n toolName: request.toolName,\n internalCallId: request.internalCallId,\n };\n if (request.toolCallId !== undefined) attributes.toolCallId = request.toolCallId;\n if (request.reason !== undefined) attributes.reason = request.reason;\n return attributes;\n}\n\nfunction normalizeToolOutputMiddlewareResult(result: ToolOutputMiddlewareResult): {\n result?: string | undefined;\n structuredResult?: readonly ToolResultContentPart[] | undefined;\n} {\n if (typeof result === \"string\") {\n return { result };\n }\n if (typeof result !== \"object\" || result === null) {\n throw new TypeError(\"Tool output middleware must return text or structured content.\");\n }\n const prototype = Object.getPrototypeOf(result);\n if (prototype !== Object.prototype && prototype !== null) {\n throw new TypeError(\"Tool output middleware must return text or structured content.\");\n }\n const keys = Reflect.ownKeys(result);\n const hasResult = keys.includes(\"result\");\n const hasStructuredResult = keys.includes(\"structuredResult\");\n if (\n hasResult === hasStructuredResult ||\n keys.some((key) => key !== \"result\" && key !== \"structuredResult\")\n ) {\n throw new TypeError(\n \"Tool output middleware must return exactly one of result or structuredResult.\",\n );\n }\n if (hasResult) {\n const descriptor = Object.getOwnPropertyDescriptor(result, \"result\");\n if (\n descriptor === undefined ||\n !(\"value\" in descriptor) ||\n typeof descriptor.value !== \"string\"\n ) {\n throw new TypeError(\"Tool output middleware result must be a string.\");\n }\n return { result: descriptor.value };\n }\n const descriptor = Object.getOwnPropertyDescriptor(result, \"structuredResult\");\n if (descriptor === undefined || !(\"value\" in descriptor)) {\n throw new TypeError(\"Tool output middleware structuredResult must be valid tool content.\");\n }\n const normalized = normalizeToolResultOutput(ToolOutput.content(descriptor.value as never));\n if (normalized.type !== \"content\") {\n throw new TypeError(\"Tool output middleware structuredResult must be valid tool content.\");\n }\n return { structuredResult: normalized.value };\n}\n\nfunction toolTraceMetadata(tool: AnyTool | undefined): JsonObject | undefined {\n if (tool === undefined) {\n return undefined;\n }\n const result: JsonObject = {\n approvalRequired: toolMayRequireApproval(tool.requiresApproval),\n };\n if (isMcpTool(tool)) {\n result.mcpServerName = tool.mcp.serverName;\n result.mcpRemoteName = tool.mcp.remoteName;\n }\n return result;\n}\n\nfunction toolErrorArgs(\n turn: number,\n toolCall: ToolCallPart,\n internalCallId: string,\n args: string,\n error: unknown,\n): AgentToolErrorArgs {\n let observerArgs: AgentToolErrorArgs = {\n turn,\n toolCall,\n toolName: toolCall.toolName,\n internalCallId,\n args,\n error,\n };\n if (toolCall.callId !== undefined) {\n observerArgs = { ...observerArgs, toolCallId: toolCall.callId };\n }\n return observerArgs;\n}\n\nclass ToolObserverScope {\n private terminal = false;\n\n constructor(private readonly observers: ActiveToolObservers | undefined) {}\n\n streamEvent(args: AgentToolStreamEventArgs): Promise<void> | undefined {\n return this.observers?.streamEvent(args);\n }\n\n async end(args: AgentToolEndArgs): Promise<void> {\n if (this.terminal) return;\n this.terminal = true;\n await this.observers?.end(args);\n }\n\n async suspend(args: AgentToolSuspendedArgs): Promise<void> {\n if (this.terminal) return;\n this.terminal = true;\n await this.observers?.suspend(args);\n }\n\n async error(args: AgentToolErrorArgs): Promise<void> {\n if (this.terminal) return;\n this.terminal = true;\n await this.observers?.error(args);\n }\n}\n\nfunction toolOutputToText(output: NormalizedToolOutput): string {\n switch (output.type) {\n case \"text\":\n case \"error-text\":\n return output.value;\n case \"json\":\n case \"error-json\":\n return JSON.stringify(output.value);\n case \"content\":\n return toolResultContentToText(output.value);\n case \"execution-denied\":\n return output.reason ?? \"Tool execution was denied.\";\n }\n}\n\nfunction toolOutputToStructuredResult(\n output: NormalizedToolOutput,\n): readonly ToolResultContentPart[] | undefined {\n return output.type === \"content\" ? output.value : undefined;\n}\n\nfunction agentToolEventPayload(\n toolCall: ToolCallPart,\n internalCallId: string,\n event: ToolCallStreamEvent,\n): AgentToolEventPayload | undefined {\n if (typeof event.agentId !== \"string\" || event.agentId.length === 0) {\n return undefined;\n }\n const payload: AgentToolEventPayload = {\n type: \"agent_tool_event\" as const,\n toolName: toolCall.toolName,\n internalCallId,\n agentId: event.agentId,\n event: event.event as AgentChildStreamEvent<unknown, unknown>,\n };\n if (toolCall.callId !== undefined) {\n payload.toolCallId = toolCall.callId;\n }\n if (event.agentName !== undefined) {\n payload.agentName = event.agentName;\n }\n return payload;\n}\n"],"mappings":"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","names":["descriptor"]}
@@ -3,13 +3,13 @@ import {
3
3
  } from "./chunk-X6WS3XWL.js";
4
4
  import {
5
5
  TeamRun
6
- } from "./chunk-CKWIXVXM.js";
6
+ } from "./chunk-XIIVC5LY.js";
7
7
  import {
8
8
  TeamStream
9
9
  } from "./chunk-3TAQXJBC.js";
10
10
  import {
11
11
  Agent
12
- } from "./chunk-HF5SX5BQ.js";
12
+ } from "./chunk-TJOIYN4O.js";
13
13
  import {
14
14
  assertPositiveSafeInteger
15
15
  } from "./chunk-NPJ2T3L5.js";
@@ -104,4 +104,4 @@ var AgentTeam = class {
104
104
  export {
105
105
  AgentTeam
106
106
  };
107
- //# sourceMappingURL=chunk-D43A3KOF.js.map
107
+ //# sourceMappingURL=chunk-SS52CC5R.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentRun
3
- } from "./chunk-OZ2GZHWH.js";
3
+ } from "./chunk-ATFSEEFX.js";
4
4
  import {
5
5
  normalizeMemoryScope
6
6
  } from "./chunk-LAIATEUB.js";
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-NPJ2T3L5.js";
13
13
  import {
14
14
  prepareAgentTools
15
- } from "./chunk-L2JI2GDH.js";
15
+ } from "./chunk-PNMBJMLB.js";
16
16
  import {
17
17
  getRegisteredAgentTool,
18
18
  registerAgentToolState
@@ -29,7 +29,7 @@ import {
29
29
  snapshotAgentMemory,
30
30
  snapshotAgentObservability,
31
31
  snapshotGuardrailPolicies
32
- } from "./chunk-NVALGVQG.js";
32
+ } from "./chunk-4PV56T23.js";
33
33
  import {
34
34
  createAgentStream
35
35
  } from "./chunk-KY4VXIN2.js";
@@ -155,4 +155,4 @@ var Agent = class {
155
155
  export {
156
156
  Agent
157
157
  };
158
- //# sourceMappingURL=chunk-HF5SX5BQ.js.map
158
+ //# sourceMappingURL=chunk-TJOIYN4O.js.map
@@ -1,9 +1,6 @@
1
1
  import {
2
2
  defaultEvalTraceSelector
3
3
  } from "./chunk-PHLGGRHC.js";
4
- import {
5
- EvalOutcome
6
- } from "./chunk-EJR6VVB3.js";
7
4
  import {
8
5
  EvalAbortError,
9
6
  EvalTimeoutError,
@@ -11,6 +8,9 @@ import {
11
8
  createConcurrencyLimiter,
12
9
  createEvalCaseSignal
13
10
  } from "./chunk-4OSA3MMA.js";
11
+ import {
12
+ EvalOutcome
13
+ } from "./chunk-EJR6VVB3.js";
14
14
  import {
15
15
  errorMessage
16
16
  } from "./chunk-ZYXMWEL4.js";
@@ -660,4 +660,4 @@ export {
660
660
  EvalFailFastError,
661
661
  runEvalSuite
662
662
  };
663
- //# sourceMappingURL=chunk-KLDNHX4Z.js.map
663
+ //# sourceMappingURL=chunk-X4XULHDO.js.map
@@ -19,10 +19,10 @@ import {
19
19
  import {
20
20
  createResolvedAgent,
21
21
  getResolvedAgentOptions
22
- } from "./chunk-22E25UM7.js";
22
+ } from "./chunk-6S7ZON2E.js";
23
23
  import {
24
24
  AgentRun
25
- } from "./chunk-OZ2GZHWH.js";
25
+ } from "./chunk-ATFSEEFX.js";
26
26
  import {
27
27
  withInternalAgentRunOptions
28
28
  } from "./chunk-7FBSGD6E.js";
@@ -619,4 +619,4 @@ var TeamRun = class {
619
619
  export {
620
620
  TeamRun
621
621
  };
622
- //# sourceMappingURL=chunk-CKWIXVXM.js.map
622
+ //# sourceMappingURL=chunk-XIIVC5LY.js.map
@@ -1,12 +1,4 @@
1
1
  import "../chunk-ERN7P6Q4.js";
2
- import {
3
- embedDocuments,
4
- embedSparseQuery,
5
- embedSparseTexts,
6
- embedText,
7
- embedTexts
8
- } from "../chunk-YCTXTOOQ.js";
9
- import "../chunk-DU4WA6LQ.js";
10
2
  import {
11
3
  angularDistance,
12
4
  chebyshevDistance,
@@ -15,6 +7,14 @@ import {
15
7
  euclideanDistance,
16
8
  manhattanDistance
17
9
  } from "../chunk-7F53DOML.js";
10
+ import {
11
+ embedDocuments,
12
+ embedSparseQuery,
13
+ embedSparseTexts,
14
+ embedText,
15
+ embedTexts
16
+ } from "../chunk-YCTXTOOQ.js";
17
+ import "../chunk-DU4WA6LQ.js";
18
18
  import "../chunk-4FIVU53H.js";
19
19
  import "../chunk-POXHJF3H.js";
20
20
  import "../chunk-USRKPEQN.js";
@@ -11,11 +11,11 @@ import {
11
11
  turnRelevancy
12
12
  } from "../chunk-R4AJ2EE3.js";
13
13
  import "../chunk-V5KBSXAJ.js";
14
- import "../chunk-3P3YVJ7V.js";
15
- import "../chunk-VCOGUS3Q.js";
16
14
  import "../chunk-ZPXOBQDS.js";
17
15
  import "../chunk-EJR6VVB3.js";
18
16
  import "../chunk-ZYXMWEL4.js";
17
+ import "../chunk-3P3YVJ7V.js";
18
+ import "../chunk-VCOGUS3Q.js";
19
19
  import "../chunk-TP3MCUXS.js";
20
20
  import "../chunk-6RQYWZI3.js";
21
21
  import "../chunk-NF6WBPFG.js";
package/dist/evals/cli.js CHANGED
@@ -7,11 +7,11 @@ import {
7
7
  formatEvalResult,
8
8
  printEvalResult,
9
9
  runEvalCli
10
- } from "../chunk-KL652GO5.js";
11
- import "../chunk-KLDNHX4Z.js";
10
+ } from "../chunk-EF26KTFU.js";
11
+ import "../chunk-X4XULHDO.js";
12
12
  import "../chunk-PHLGGRHC.js";
13
- import "../chunk-EJR6VVB3.js";
14
13
  import "../chunk-4OSA3MMA.js";
14
+ import "../chunk-EJR6VVB3.js";
15
15
  import "../chunk-ZYXMWEL4.js";
16
16
  import "../chunk-TP3MCUXS.js";
17
17
  import "../chunk-6RQYWZI3.js";