@anvia/core 0.1.3 → 0.1.5

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 (51) hide show
  1. package/dist/agent/index.d.ts +10 -8
  2. package/dist/agent/index.js +3 -3
  3. package/dist/{agent-D5KKP9_z.d.ts → agent-wBc0uM9_.d.ts} +46 -5
  4. package/dist/{chunk-JDPPZCOY.js → chunk-2VCWYCPV.js} +2 -2
  5. package/dist/{chunk-GNWMOSNR.js → chunk-3H7FVGHU.js} +3 -3
  6. package/dist/chunk-3H7FVGHU.js.map +1 -0
  7. package/dist/{chunk-B4QHQN5K.js → chunk-445TT5Q5.js} +3 -3
  8. package/dist/chunk-445TT5Q5.js.map +1 -0
  9. package/dist/{chunk-BIJ5ZBCO.js → chunk-5OVEPVTH.js} +137 -28
  10. package/dist/chunk-5OVEPVTH.js.map +1 -0
  11. package/dist/{chunk-S55WOHX5.js → chunk-BT3I6O56.js} +1 -1
  12. package/dist/chunk-BT3I6O56.js.map +1 -0
  13. package/dist/{chunk-ZCKIAMMR.js → chunk-FHSSO753.js} +3 -3
  14. package/dist/{chunk-SRGJPXKT.js → chunk-MQVFDXPC.js} +2 -2
  15. package/dist/{chunk-U524PWC6.js → chunk-Q234327P.js} +2 -2
  16. package/dist/chunk-WJT22R3T.js +18 -0
  17. package/dist/chunk-WJT22R3T.js.map +1 -0
  18. package/dist/{chunk-J23SIK6Y.js → chunk-X2LR54ZO.js} +4 -4
  19. package/dist/evals/index.d.ts +3 -3
  20. package/dist/evals/index.js +7 -7
  21. package/dist/extractor/index.d.ts +3 -3
  22. package/dist/extractor/index.js +6 -6
  23. package/dist/index.d.ts +7 -6
  24. package/dist/index.js +20 -16
  25. package/dist/mcp/index.d.ts +3 -3
  26. package/dist/{zod-schema-Cq_9zlmJ.d.ts → middleware-2iCGCsB6.d.ts} +5 -5
  27. package/dist/model-listing/index.d.ts +28 -0
  28. package/dist/model-listing/index.js +7 -0
  29. package/dist/model-listing/index.js.map +1 -0
  30. package/dist/observability/index.d.ts +6 -1
  31. package/dist/observability/index.js +1 -1
  32. package/dist/pipeline/index.d.ts +4 -4
  33. package/dist/skills/index.d.ts +3 -3
  34. package/dist/skills/index.js +5 -5
  35. package/dist/tool/index.d.ts +6 -6
  36. package/dist/tool/index.js +4 -4
  37. package/dist/{tool-DhuBQ3yb.d.ts → tool-DiWtAf_Q.d.ts} +10 -2
  38. package/dist/{types-HvopERm0.d.ts → types-21n32ltl.d.ts} +1 -1
  39. package/dist/{types-B5B8Sdl4.d.ts → types-ChJoZ0OH.d.ts} +1 -1
  40. package/dist/vector-store/index.d.ts +1 -1
  41. package/dist/vector-store/index.js +2 -2
  42. package/package.json +6 -2
  43. package/dist/chunk-B4QHQN5K.js.map +0 -1
  44. package/dist/chunk-BIJ5ZBCO.js.map +0 -1
  45. package/dist/chunk-GNWMOSNR.js.map +0 -1
  46. package/dist/chunk-S55WOHX5.js.map +0 -1
  47. /package/dist/{chunk-JDPPZCOY.js.map → chunk-2VCWYCPV.js.map} +0 -0
  48. /package/dist/{chunk-ZCKIAMMR.js.map → chunk-FHSSO753.js.map} +0 -0
  49. /package/dist/{chunk-SRGJPXKT.js.map → chunk-MQVFDXPC.js.map} +0 -0
  50. /package/dist/{chunk-U524PWC6.js.map → chunk-Q234327P.js.map} +0 -0
  51. /package/dist/{chunk-J23SIK6Y.js.map → chunk-X2LR54ZO.js.map} +0 -0
@@ -1,18 +1,18 @@
1
1
  import { MemoryStore, MemoryOptions } from '../memory/index.js';
2
2
  export { MemoryAppendInput, MemoryContext, MemoryErrorInput, MemoryRegistration, MemorySavePolicy, ResolvedMemoryOptions, SessionOptions, resolveMemoryOptions } from '../memory/index.js';
3
- import { f as DynamicContextOptions, h as DynamicToolOptions, P as PromptHook, A as Agent } from '../agent-D5KKP9_z.js';
4
- export { a as AgentOptions, b as AgentSession, c as AgentStreamEvent, d as AgentToolOptions, C as CompletionCallHookArgs, e as CompletionResponseHookArgs, D as DEFAULT_MAX_TURNS, g as DynamicContextRegistration, i as DynamicToolRegistration, H as HookAction, j as HookResult, k as PromptRequest, l as PromptResponse, R as RunControl, T as ToolCallControl, m as ToolCallHookAction, n as ToolCallHookArgs, o as ToolCallHookResult, p as ToolHookArgs, q as ToolResultHookArgs, r as cancelPrompt, s as createHook, t as runControl, u as skipTool, v as toolCallControl } from '../agent-D5KKP9_z.js';
3
+ import { m as DynamicContextOptions, o as DynamicToolOptions, P as PromptHook, d as AgentEventStore, f as AgentEventStoreOptions, A as Agent } from '../agent-wBc0uM9_.js';
4
+ export { a as AgentChildStreamEvent, b as AgentEventAppendInput, c as AgentEventRecord, e as AgentEventStoreInclude, g as AgentEventStoreRegistration, h as AgentOptions, i as AgentSession, j as AgentStreamEvent, k as AgentToolOptions, C as CompletionCallHookArgs, l as CompletionResponseHookArgs, D as DEFAULT_MAX_TURNS, n as DynamicContextRegistration, p as DynamicToolRegistration, H as HookAction, q as HookResult, r as PromptRequest, s as PromptResponse, R as RunControl, T as ToolCallControl, t as ToolCallHookAction, u as ToolCallHookArgs, v as ToolCallHookResult, w as ToolHookArgs, x as ToolResultHookArgs, y as cancelPrompt, z as createHook, B as runControl, E as skipTool, F as toolCallControl } from '../agent-wBc0uM9_.js';
5
5
  import { b as CompletionModel, j as JsonValue, o as ToolChoice, M as Message } from '../types-BrxLd7ay.js';
6
- import { c as McpServer } from '../types-B5B8Sdl4.js';
6
+ import { c as McpServer } from '../types-ChJoZ0OH.js';
7
7
  import { AgentObserver, ObserveOptions } from '../observability/index.js';
8
- import { b as ToolSearchDocument, c as ToolSet, T as ToolMiddleware, Z as ZodSchema } from '../zod-schema-Cq_9zlmJ.js';
9
- import { b as SkillSet } from '../types-HvopERm0.js';
10
- import { A as AnyTool } from '../tool-DhuBQ3yb.js';
8
+ import { b as ToolSearchDocument, c as ToolSet, T as ToolMiddleware, Z as ZodSchema } from '../middleware-2iCGCsB6.js';
9
+ import { b as SkillSet } from '../types-21n32ltl.js';
10
+ import { A as AnyTool } from '../tool-DiWtAf_Q.js';
11
11
  import { VectorSearchIndex } from '../vector-store/index.js';
12
12
  import '@modelcontextprotocol/sdk/client/stdio.js';
13
13
  import '@modelcontextprotocol/sdk/client/streamableHttp.js';
14
- import '../embeddings/index.js';
15
14
  import 'zod';
15
+ import '../embeddings/index.js';
16
16
 
17
17
  declare class AgentBuilder<M extends CompletionModel = CompletionModel> {
18
18
  private readonly completionModel;
@@ -34,6 +34,7 @@ declare class AgentBuilder<M extends CompletionModel = CompletionModel> {
34
34
  private dynamicToolRegistrations;
35
35
  private middlewareRegistrations;
36
36
  private memoryRegistration;
37
+ private eventStoreRegistration;
37
38
  private activeToolSet;
38
39
  constructor(agentId: string, completionModel: M);
39
40
  name(name: string): this;
@@ -57,6 +58,7 @@ declare class AgentBuilder<M extends CompletionModel = CompletionModel> {
57
58
  toolMiddlewares(middlewares: ToolMiddleware[]): this;
58
59
  observe(observer: AgentObserver, options?: ObserveOptions): this;
59
60
  memory(store: MemoryStore, options?: MemoryOptions): this;
61
+ eventStore(store: AgentEventStore, options?: AgentEventStoreOptions): this;
60
62
  outputSchema(schema: ZodSchema): this;
61
63
  build(): Agent<M>;
62
64
  private buildInstructions;
@@ -74,4 +76,4 @@ declare class PromptCancelledError extends Error {
74
76
  constructor(chatHistory: Message[], reason: string);
75
77
  }
76
78
 
77
- export { Agent, AgentBuilder, DynamicContextOptions, DynamicToolOptions, MaxTurnsError, MemoryOptions, MemoryStore, PromptCancelledError, PromptHook };
79
+ export { Agent, AgentBuilder, AgentEventStore, AgentEventStoreOptions, DynamicContextOptions, DynamicToolOptions, MaxTurnsError, MemoryOptions, MemoryStore, PromptCancelledError, PromptHook };
@@ -11,14 +11,14 @@ import {
11
11
  runControl,
12
12
  skipTool,
13
13
  toolCallControl
14
- } from "../chunk-BIJ5ZBCO.js";
14
+ } from "../chunk-5OVEPVTH.js";
15
15
  import {
16
16
  resolveMemoryOptions
17
17
  } from "../chunk-XXT2UCAR.js";
18
18
  import "../chunk-YK4WAAS4.js";
19
+ import "../chunk-3H7FVGHU.js";
20
+ import "../chunk-445TT5Q5.js";
19
21
  import "../chunk-XUUY2L2D.js";
20
- import "../chunk-GNWMOSNR.js";
21
- import "../chunk-B4QHQN5K.js";
22
22
  import "../chunk-CP47FBJV.js";
23
23
  export {
24
24
  Agent,
@@ -1,8 +1,8 @@
1
1
  import { M as Message, e as CompletionResponse, b as CompletionModel, U as Usage, l as ReasoningContentType, n as ToolCall, D as Document, j as JsonValue, o as ToolChoice, J as JsonObject } from './types-BrxLd7ay.js';
2
2
  import { MemoryContext, MemoryRegistration, SessionOptions } from './memory/index.js';
3
3
  import { AgentTraceOptions, AgentTraceInfo, AgentObserverRegistration } from './observability/index.js';
4
- import { T as ToolMiddleware, c as ToolSet, b as ToolSearchDocument } from './zod-schema-Cq_9zlmJ.js';
5
- import { T as Tool, A as AnyTool } from './tool-DhuBQ3yb.js';
4
+ import { T as ToolMiddleware, c as ToolSet, b as ToolSearchDocument } from './middleware-2iCGCsB6.js';
5
+ import { T as Tool, A as AnyTool, d as ToolCallContext } from './tool-DiWtAf_Q.js';
6
6
  import { VectorSearchIndex, VectorFilter, VectorSearchResult } from './vector-store/index.js';
7
7
 
8
8
  type HookAction = {
@@ -74,7 +74,7 @@ type PromptResponse = {
74
74
  messages: Message[];
75
75
  trace?: AgentTraceInfo | undefined;
76
76
  };
77
- type AgentStreamEvent<RawResponse = unknown> = {
77
+ type AgentChildStreamEvent<RawResponse = unknown> = {
78
78
  type: "turn_start";
79
79
  turn: number;
80
80
  prompt: Message;
@@ -108,6 +108,7 @@ type AgentStreamEvent<RawResponse = unknown> = {
108
108
  response: CompletionResponse<RawResponse>;
109
109
  } | {
110
110
  type: "final";
111
+ runId: string;
111
112
  output: string;
112
113
  usage: Usage;
113
114
  messages: Message[];
@@ -116,6 +117,16 @@ type AgentStreamEvent<RawResponse = unknown> = {
116
117
  type: "error";
117
118
  error: unknown;
118
119
  };
120
+ type AgentStreamEvent<RawResponse = unknown> = AgentChildStreamEvent<RawResponse> | {
121
+ type: "agent_tool_event";
122
+ turn: number;
123
+ toolName: string;
124
+ toolCallId?: string;
125
+ internalCallId: string;
126
+ agentId: string;
127
+ agentName?: string;
128
+ event: AgentChildStreamEvent<RawResponse>;
129
+ };
119
130
  declare class PromptRequest<M extends CompletionModel = CompletionModel> {
120
131
  private readonly agent;
121
132
  private readonly promptMessage;
@@ -144,6 +155,7 @@ declare class PromptRequest<M extends CompletionModel = CompletionModel> {
144
155
  private executeToolCalls;
145
156
  private runToolResultMiddlewares;
146
157
  private startRunObservers;
158
+ private recordAgentEvent;
147
159
  private fetchDynamicContext;
148
160
  private fetchToolDefinitions;
149
161
  private recordToolError;
@@ -179,12 +191,40 @@ type AgentOptions<M extends CompletionModel = CompletionModel> = {
179
191
  dynamicTools?: DynamicToolRegistration[] | undefined;
180
192
  toolMiddlewares?: ToolMiddleware[] | undefined;
181
193
  memory?: MemoryRegistration | undefined;
194
+ eventStore?: AgentEventStoreRegistration | undefined;
182
195
  };
183
196
  declare const DEFAULT_MAX_TURNS = 20;
184
197
  type AgentToolOptions = {
185
198
  name: string;
186
199
  description?: string | undefined;
187
200
  maxTurns?: number | undefined;
201
+ stream?: boolean | undefined;
202
+ };
203
+ type AgentEventStoreInclude = "all" | "agent_tool_events";
204
+ type AgentEventStoreOptions = {
205
+ include?: AgentEventStoreInclude | undefined;
206
+ };
207
+ type AgentEventAppendInput = {
208
+ runId: string;
209
+ agentId: string;
210
+ agentName?: string | undefined;
211
+ turn?: number | undefined;
212
+ toolName?: string | undefined;
213
+ toolCallId?: string | undefined;
214
+ internalCallId?: string | undefined;
215
+ event: unknown;
216
+ };
217
+ type AgentEventRecord = AgentEventAppendInput & {
218
+ createdAt?: Date | undefined;
219
+ };
220
+ interface AgentEventStore {
221
+ append(input: AgentEventAppendInput): Promise<void>;
222
+ load(runId: string): Promise<AgentEventRecord[]>;
223
+ clear?(runId: string): Promise<void>;
224
+ }
225
+ type AgentEventStoreRegistration = {
226
+ store: AgentEventStore;
227
+ options: Required<AgentEventStoreOptions>;
188
228
  };
189
229
  type DynamicContextOptions<T = unknown> = {
190
230
  topK: number;
@@ -225,6 +265,7 @@ declare class Agent<M extends CompletionModel = CompletionModel> {
225
265
  readonly dynamicTools: DynamicToolRegistration[];
226
266
  readonly toolMiddlewares: ToolMiddleware[];
227
267
  readonly memory: MemoryRegistration | undefined;
268
+ readonly eventStore: AgentEventStoreRegistration | undefined;
228
269
  constructor(options: AgentOptions<M>);
229
270
  prompt(prompt: string | Message | Message[]): PromptRequest<M>;
230
271
  session(sessionId: string, options?: SessionOptions): AgentSession<M>;
@@ -232,7 +273,7 @@ declare class Agent<M extends CompletionModel = CompletionModel> {
232
273
  prompt: string;
233
274
  }, string>;
234
275
  getTool(toolName: string): AnyTool | undefined;
235
- callTool(toolName: string, args: string): Promise<string>;
276
+ callTool(toolName: string, args: string, context?: ToolCallContext): Promise<string>;
236
277
  shouldApplyToolMiddleware(toolName: string): boolean;
237
278
  }
238
279
  declare class AgentSession<M extends CompletionModel = CompletionModel> {
@@ -248,4 +289,4 @@ declare class AgentSession<M extends CompletionModel = CompletionModel> {
248
289
  clear(): Promise<void>;
249
290
  }
250
291
 
251
- export { Agent as A, type CompletionCallHookArgs as C, DEFAULT_MAX_TURNS as D, type HookAction as H, type PromptHook as P, type RunControl as R, type ToolCallControl as T, type AgentOptions as a, AgentSession as b, type AgentStreamEvent as c, type AgentToolOptions as d, type CompletionResponseHookArgs as e, type DynamicContextOptions as f, type DynamicContextRegistration as g, type DynamicToolOptions as h, type DynamicToolRegistration as i, type HookResult as j, PromptRequest as k, type PromptResponse as l, type ToolCallHookAction as m, type ToolCallHookArgs as n, type ToolCallHookResult as o, type ToolHookArgs as p, type ToolResultHookArgs as q, cancelPrompt as r, createHook as s, runControl as t, skipTool as u, toolCallControl as v };
292
+ export { Agent as A, runControl as B, type CompletionCallHookArgs as C, DEFAULT_MAX_TURNS as D, skipTool as E, toolCallControl as F, type HookAction as H, type PromptHook as P, type RunControl as R, type ToolCallControl as T, type AgentChildStreamEvent as a, type AgentEventAppendInput as b, type AgentEventRecord as c, type AgentEventStore as d, type AgentEventStoreInclude as e, type AgentEventStoreOptions as f, type AgentEventStoreRegistration as g, type AgentOptions as h, AgentSession as i, type AgentStreamEvent as j, type AgentToolOptions as k, type CompletionResponseHookArgs as l, type DynamicContextOptions as m, type DynamicContextRegistration as n, type DynamicToolOptions as o, type DynamicToolRegistration as p, type HookResult as q, PromptRequest as r, type PromptResponse as s, type ToolCallHookAction as t, type ToolCallHookArgs as u, type ToolCallHookResult as v, type ToolHookArgs as w, type ToolResultHookArgs as x, cancelPrompt as y, createHook as z };
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YK4WAAS4.js";
4
4
  import {
5
5
  createTool
6
- } from "./chunk-B4QHQN5K.js";
6
+ } from "./chunk-445TT5Q5.js";
7
7
 
8
8
  // src/skills/instructions.ts
9
9
  function skillInstructions(skills) {
@@ -395,4 +395,4 @@ export {
395
395
  SkillValidationError,
396
396
  skill
397
397
  };
398
- //# sourceMappingURL=chunk-JDPPZCOY.js.map
398
+ //# sourceMappingURL=chunk-2VCWYCPV.js.map
@@ -79,7 +79,7 @@ var ToolSet = class _ToolSet {
79
79
  }
80
80
  return defs;
81
81
  }
82
- async call(toolName, args) {
82
+ async call(toolName, args, context) {
83
83
  const tool = this.tools.get(toolName);
84
84
  if (tool === void 0) {
85
85
  throw new ToolNotFoundError(toolName);
@@ -91,7 +91,7 @@ var ToolSet = class _ToolSet {
91
91
  throw new ToolJsonError(`Invalid JSON arguments for tool ${toolName}`, error);
92
92
  }
93
93
  try {
94
- const output = await tool.call(parsedArgs);
94
+ const output = await tool.call(parsedArgs, context);
95
95
  return serializeToolOutput(output);
96
96
  } catch (error) {
97
97
  if (error instanceof Error) {
@@ -110,4 +110,4 @@ export {
110
110
  parseToolArgs,
111
111
  ToolSet
112
112
  };
113
- //# sourceMappingURL=chunk-GNWMOSNR.js.map
113
+ //# sourceMappingURL=chunk-3H7FVGHU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/tool/errors.ts","../src/tool/tool.ts","../src/tool/tool-set.ts"],"sourcesContent":["export class ToolCallError extends Error {\n constructor(\n message: string,\n readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"ToolCallError\";\n }\n}\n\nexport class ToolNotFoundError extends Error {\n constructor(readonly toolName: string) {\n super(`Tool not found: ${toolName}`);\n this.name = \"ToolNotFoundError\";\n }\n}\n\nexport class ToolJsonError extends Error {\n constructor(\n message: string,\n readonly cause?: unknown,\n ) {\n super(message);\n this.name = \"ToolJsonError\";\n }\n}\n","import type { JsonObject, JsonValue, ToolDefinition } from \"../completion/types\";\n\nexport type ToolApprovalRunContext = {\n agentId: string;\n runId: string;\n sessionId?: string;\n metadata?: JsonObject;\n};\n\nexport type ToolApprovalContext<Args = unknown> = {\n toolName: string;\n args: Args;\n rawArgs: string;\n toolCallId?: string;\n internalCallId: string;\n run: ToolApprovalRunContext;\n};\n\nexport type ToolApprovalPolicy<Args = unknown> = {\n when(ctx: ToolApprovalContext<Args>): boolean | Promise<boolean>;\n reason?: string | ((ctx: ToolApprovalContext<Args>) => string | Promise<string>);\n rejectMessage?: string | ((ctx: ToolApprovalContext<Args>) => string | Promise<string>);\n};\n\nexport type ToolCallStreamEvent = {\n agentId: string;\n agentName?: string | undefined;\n event: unknown;\n};\n\nexport type ToolCallContext = {\n emitStreamEvent?(event: ToolCallStreamEvent): void | Promise<void>;\n};\n\nexport interface Tool<Args = unknown, Output = unknown> {\n readonly name: string;\n readonly approval?: ToolApprovalPolicy<Args>;\n definition(prompt: string): ToolDefinition | Promise<ToolDefinition>;\n call(args: Args, context?: ToolCallContext): Output | Promise<Output>;\n parseApprovalArgs?(args: unknown): Args;\n}\n\nexport type AnyTool = Omit<Tool<unknown, unknown>, \"approval\"> & {\n readonly approval?: unknown;\n};\n\nexport function serializeToolOutput(output: unknown): string {\n if (typeof output === \"string\") {\n return output;\n }\n\n const serialized = JSON.stringify(output);\n return serialized === undefined ? String(output) : serialized;\n}\n\nexport function parseToolArgs(args: string): JsonValue {\n if (args.trim() === \"\") {\n return {};\n }\n\n return JSON.parse(args) as JsonValue;\n}\n","import type { ToolDefinition } from \"../completion/types\";\nimport { ToolCallError, ToolJsonError, ToolNotFoundError } from \"./errors\";\nimport { type AnyTool, parseToolArgs, serializeToolOutput, type ToolCallContext } from \"./tool\";\n\nexport class ToolSet {\n private readonly tools = new Map<string, AnyTool>();\n\n static fromTools(tools: AnyTool[]): ToolSet {\n const toolSet = new ToolSet();\n for (const tool of tools) {\n toolSet.addTool(tool);\n }\n return toolSet;\n }\n\n addTool(tool: AnyTool): this {\n this.tools.set(tool.name, tool);\n return this;\n }\n\n addTools(tools: AnyTool[] | ToolSet): this {\n const values = Array.isArray(tools) ? tools : tools.values();\n for (const tool of values) {\n this.addTool(tool);\n }\n return this;\n }\n\n deleteTool(toolName: string): boolean {\n return this.tools.delete(toolName);\n }\n\n contains(toolName: string): boolean {\n return this.tools.has(toolName);\n }\n\n get(toolName: string): AnyTool | undefined {\n return this.tools.get(toolName);\n }\n\n values(): AnyTool[] {\n return [...this.tools.values()];\n }\n\n async getToolDefinitions(prompt = \"\"): Promise<ToolDefinition[]> {\n const defs: ToolDefinition[] = [];\n for (const tool of this.tools.values()) {\n defs.push(await tool.definition(prompt));\n }\n return defs;\n }\n\n async call(toolName: string, args: string, context?: ToolCallContext): Promise<string> {\n const tool = this.tools.get(toolName);\n if (tool === undefined) {\n throw new ToolNotFoundError(toolName);\n }\n\n let parsedArgs: unknown;\n try {\n parsedArgs = parseToolArgs(args);\n } catch (error) {\n throw new ToolJsonError(`Invalid JSON arguments for tool ${toolName}`, error);\n }\n\n try {\n const output = await tool.call(parsedArgs, context);\n return serializeToolOutput(output);\n } catch (error) {\n if (error instanceof Error) {\n throw new ToolCallError(error.message, error);\n }\n throw new ToolCallError(`Tool ${toolName} failed`, error);\n }\n }\n}\n"],"mappings":";AAAO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACvC,YACE,SACS,OACT;AACA,UAAM,OAAO;AAFJ;AAGT,SAAK,OAAO;AAAA,EACd;AAAA,EAJW;AAKb;AAEO,IAAM,oBAAN,cAAgC,MAAM;AAAA,EAC3C,YAAqB,UAAkB;AACrC,UAAM,mBAAmB,QAAQ,EAAE;AADhB;AAEnB,SAAK,OAAO;AAAA,EACd;AAAA,EAHqB;AAIvB;AAEO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACvC,YACE,SACS,OACT;AACA,UAAM,OAAO;AAFJ;AAGT,SAAK,OAAO;AAAA,EACd;AAAA,EAJW;AAKb;;;ACqBO,SAAS,oBAAoB,QAAyB;AAC3D,MAAI,OAAO,WAAW,UAAU;AAC9B,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,KAAK,UAAU,MAAM;AACxC,SAAO,eAAe,SAAY,OAAO,MAAM,IAAI;AACrD;AAEO,SAAS,cAAc,MAAyB;AACrD,MAAI,KAAK,KAAK,MAAM,IAAI;AACtB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO,KAAK,MAAM,IAAI;AACxB;;;ACzDO,IAAM,UAAN,MAAM,SAAQ;AAAA,EACF,QAAQ,oBAAI,IAAqB;AAAA,EAElD,OAAO,UAAU,OAA2B;AAC1C,UAAM,UAAU,IAAI,SAAQ;AAC5B,eAAW,QAAQ,OAAO;AACxB,cAAQ,QAAQ,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,QAAQ,MAAqB;AAC3B,SAAK,MAAM,IAAI,KAAK,MAAM,IAAI;AAC9B,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,OAAkC;AACzC,UAAM,SAAS,MAAM,QAAQ,KAAK,IAAI,QAAQ,MAAM,OAAO;AAC3D,eAAW,QAAQ,QAAQ;AACzB,WAAK,QAAQ,IAAI;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AAAA,EAEA,WAAW,UAA2B;AACpC,WAAO,KAAK,MAAM,OAAO,QAAQ;AAAA,EACnC;AAAA,EAEA,SAAS,UAA2B;AAClC,WAAO,KAAK,MAAM,IAAI,QAAQ;AAAA,EAChC;AAAA,EAEA,IAAI,UAAuC;AACzC,WAAO,KAAK,MAAM,IAAI,QAAQ;AAAA,EAChC;AAAA,EAEA,SAAoB;AAClB,WAAO,CAAC,GAAG,KAAK,MAAM,OAAO,CAAC;AAAA,EAChC;AAAA,EAEA,MAAM,mBAAmB,SAAS,IAA+B;AAC/D,UAAM,OAAyB,CAAC;AAChC,eAAW,QAAQ,KAAK,MAAM,OAAO,GAAG;AACtC,WAAK,KAAK,MAAM,KAAK,WAAW,MAAM,CAAC;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,KAAK,UAAkB,MAAc,SAA4C;AACrF,UAAM,OAAO,KAAK,MAAM,IAAI,QAAQ;AACpC,QAAI,SAAS,QAAW;AACtB,YAAM,IAAI,kBAAkB,QAAQ;AAAA,IACtC;AAEA,QAAI;AACJ,QAAI;AACF,mBAAa,cAAc,IAAI;AAAA,IACjC,SAAS,OAAO;AACd,YAAM,IAAI,cAAc,mCAAmC,QAAQ,IAAI,KAAK;AAAA,IAC9E;AAEA,QAAI;AACF,YAAM,SAAS,MAAM,KAAK,KAAK,YAAY,OAAO;AAClD,aAAO,oBAAoB,MAAM;AAAA,IACnC,SAAS,OAAO;AACd,UAAI,iBAAiB,OAAO;AAC1B,cAAM,IAAI,cAAc,MAAM,SAAS,KAAK;AAAA,MAC9C;AACA,YAAM,IAAI,cAAc,QAAQ,QAAQ,WAAW,KAAK;AAAA,IAC1D;AAAA,EACF;AACF;","names":[]}
@@ -19,9 +19,9 @@ function createTool(options) {
19
19
  parameters
20
20
  };
21
21
  },
22
- async call(args) {
22
+ async call(args, context = {}) {
23
23
  const parsedArgs = options.input.parse(args);
24
- const result = await options.execute(parsedArgs);
24
+ const result = await options.execute(parsedArgs, context);
25
25
  return options.output === void 0 ? result : options.output.parse(result);
26
26
  },
27
27
  parseApprovalArgs(args) {
@@ -34,4 +34,4 @@ export {
34
34
  toProviderJsonSchema,
35
35
  createTool
36
36
  };
37
- //# sourceMappingURL=chunk-B4QHQN5K.js.map
37
+ //# sourceMappingURL=chunk-445TT5Q5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema/zod-schema.ts","../src/tool/create-tool.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { JsonObject } from \"../completion/index\";\n\nexport type ZodSchema<T = unknown> = z.ZodType<T>;\n\nexport function toProviderJsonSchema(schema: z.ZodType): JsonObject {\n const jsonSchema = z.toJSONSchema(schema) as JsonObject;\n const { $schema: _schema, ...providerSchema } = jsonSchema;\n return providerSchema;\n}\n","import type { z } from \"zod\";\nimport { toProviderJsonSchema, type ZodSchema } from \"../schema/zod-schema\";\nimport type { Tool, ToolApprovalPolicy, ToolCallContext } from \"./tool\";\n\nexport type CreateToolOptions<\n InputSchema extends ZodSchema,\n OutputSchema extends ZodSchema | undefined = undefined,\n> = {\n name: string;\n description: string;\n input: InputSchema;\n output?: OutputSchema;\n approval?: ToolApprovalPolicy<z.output<InputSchema>>;\n execute(\n args: z.output<InputSchema>,\n context: ToolCallContext,\n ): OutputSchema extends ZodSchema\n ? z.input<OutputSchema> | Promise<z.input<OutputSchema>>\n : unknown | Promise<unknown>;\n};\n\ntype ToolOutput<OutputSchema extends ZodSchema | undefined> = OutputSchema extends ZodSchema\n ? z.output<OutputSchema>\n : unknown;\n\nexport function createTool<\n InputSchema extends ZodSchema,\n OutputSchema extends ZodSchema | undefined = undefined,\n>(\n options: CreateToolOptions<InputSchema, OutputSchema>,\n): Tool<z.output<InputSchema>, ToolOutput<OutputSchema>> {\n const parameters = toProviderJsonSchema(options.input);\n\n return {\n name: options.name,\n ...(options.approval === undefined ? {} : { approval: options.approval }),\n definition() {\n return {\n name: options.name,\n description: options.description,\n parameters,\n };\n },\n async call(args, context = {}): Promise<ToolOutput<OutputSchema>> {\n const parsedArgs = options.input.parse(args);\n const result = await options.execute(parsedArgs, context);\n return (\n options.output === undefined ? result : options.output.parse(result)\n ) as ToolOutput<OutputSchema>;\n },\n parseApprovalArgs(args): z.output<InputSchema> {\n return options.input.parse(args);\n },\n };\n}\n"],"mappings":";AAAA,SAAS,SAAS;AAKX,SAAS,qBAAqB,QAA+B;AAClE,QAAM,aAAa,EAAE,aAAa,MAAM;AACxC,QAAM,EAAE,SAAS,SAAS,GAAG,eAAe,IAAI;AAChD,SAAO;AACT;;;ACgBO,SAAS,WAId,SACuD;AACvD,QAAM,aAAa,qBAAqB,QAAQ,KAAK;AAErD,SAAO;AAAA,IACL,MAAM,QAAQ;AAAA,IACd,GAAI,QAAQ,aAAa,SAAY,CAAC,IAAI,EAAE,UAAU,QAAQ,SAAS;AAAA,IACvE,aAAa;AACX,aAAO;AAAA,QACL,MAAM,QAAQ;AAAA,QACd,aAAa,QAAQ;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM,KAAK,MAAM,UAAU,CAAC,GAAsC;AAChE,YAAM,aAAa,QAAQ,MAAM,MAAM,IAAI;AAC3C,YAAM,SAAS,MAAM,QAAQ,QAAQ,YAAY,OAAO;AACxD,aACE,QAAQ,WAAW,SAAY,SAAS,QAAQ,OAAO,MAAM,MAAM;AAAA,IAEvE;AAAA,IACA,kBAAkB,MAA6B;AAC7C,aAAO,QAAQ,MAAM,MAAM,IAAI;AAAA,IACjC;AAAA,EACF;AACF;","names":[]}
@@ -4,16 +4,16 @@ import {
4
4
  import {
5
5
  isSkillTool
6
6
  } from "./chunk-YK4WAAS4.js";
7
- import {
8
- toReadableStream
9
- } from "./chunk-XUUY2L2D.js";
10
7
  import {
11
8
  ToolSet
12
- } from "./chunk-GNWMOSNR.js";
9
+ } from "./chunk-3H7FVGHU.js";
13
10
  import {
14
11
  createTool,
15
12
  toProviderJsonSchema
16
- } from "./chunk-B4QHQN5K.js";
13
+ } from "./chunk-445TT5Q5.js";
14
+ import {
15
+ toReadableStream
16
+ } from "./chunk-XUUY2L2D.js";
17
17
  import {
18
18
  CompletionRequestBuilder,
19
19
  Message,
@@ -154,6 +154,18 @@ var ActiveToolObservers = class {
154
154
  }
155
155
  toolObservers;
156
156
  failOnObserverError;
157
+ async streamEvent(args) {
158
+ for (const observer of this.toolObservers) {
159
+ if (observer.streamEvent === void 0) {
160
+ continue;
161
+ }
162
+ try {
163
+ await observer.streamEvent(args);
164
+ } catch (error) {
165
+ this.handleError(error);
166
+ }
167
+ }
168
+ }
157
169
  async end(args) {
158
170
  for (const observer of this.toolObservers) {
159
171
  try {
@@ -559,10 +571,16 @@ var PromptRequest = class _PromptRequest {
559
571
  await runObservers.end(result);
560
572
  return result;
561
573
  }
562
- const toolResults = await this.executeToolCalls(toolCalls, newMessages, void 0, {
563
- turn: currentTurns,
564
- runObservers
565
- });
574
+ const toolResults = await this.executeToolCalls(
575
+ toolCalls,
576
+ newMessages,
577
+ void 0,
578
+ void 0,
579
+ {
580
+ turn: currentTurns,
581
+ runObservers
582
+ }
583
+ );
566
584
  const toolMessage = Message.tool(toolResults);
567
585
  newMessages.push(toolMessage);
568
586
  await this.commitMemoryMessages(runId, currentTurns, [toolMessage], pendingTurnMessages);
@@ -587,6 +605,10 @@ var PromptRequest = class _PromptRequest {
587
605
  let currentTurns = 0;
588
606
  let lastPrompt = this.promptMessage;
589
607
  const runObservers = await this.startRunObservers();
608
+ const emit = async (event) => {
609
+ await this.recordAgentEvent(runId, event);
610
+ return event;
611
+ };
590
612
  try {
591
613
  while (currentTurns <= this.maxTurnCount + 1) {
592
614
  const prompt = newMessages.at(-1);
@@ -596,12 +618,12 @@ var PromptRequest = class _PromptRequest {
596
618
  lastPrompt = prompt;
597
619
  currentTurns += 1;
598
620
  const historyForRequest = [...this.chatHistory, ...newMessages.slice(0, -1)];
599
- yield {
621
+ yield await emit({
600
622
  type: "turn_start",
601
623
  turn: currentTurns,
602
624
  prompt,
603
625
  history: historyForRequest
604
- };
626
+ });
605
627
  await this.runCompletionCallHook(prompt, historyForRequest, newMessages);
606
628
  const ragText = extractRagText(prompt);
607
629
  const dynamicContext = await this.fetchDynamicContext(ragText);
@@ -625,7 +647,7 @@ var PromptRequest = class _PromptRequest {
625
647
  throw event.error;
626
648
  }
627
649
  if (mapped !== void 0) {
628
- yield addTurn(currentTurns, mapped);
650
+ yield await emit(addTurn(currentTurns, mapped));
629
651
  }
630
652
  }
631
653
  } catch (error) {
@@ -652,9 +674,9 @@ var PromptRequest = class _PromptRequest {
652
674
  (item) => item.type === "tool_call"
653
675
  );
654
676
  for (const toolCall of toolCalls) {
655
- yield { type: "tool_call", turn: currentTurns, toolCall };
677
+ yield await emit({ type: "tool_call", turn: currentTurns, toolCall });
656
678
  }
657
- yield { type: "turn_end", turn: currentTurns, response };
679
+ yield await emit({ type: "turn_end", turn: currentTurns, response });
658
680
  if (toolCalls.length === 0) {
659
681
  const output = textFromAssistantContent(response.choice);
660
682
  await this.commitCompletedMemoryRun(
@@ -663,13 +685,14 @@ var PromptRequest = class _PromptRequest {
663
685
  newMessages,
664
686
  pendingTurnMessages
665
687
  );
666
- yield {
688
+ yield await emit({
667
689
  type: "final",
690
+ runId,
668
691
  output,
669
692
  usage,
670
693
  messages: [...newMessages],
671
694
  trace: runObservers.trace
672
- };
695
+ });
673
696
  await runObservers.end({ output, usage, messages: [...newMessages] });
674
697
  return;
675
698
  }
@@ -680,6 +703,9 @@ var PromptRequest = class _PromptRequest {
680
703
  (result) => {
681
704
  toolResultEvents.enqueue(result);
682
705
  },
706
+ (event) => {
707
+ toolResultEvents.enqueue(event);
708
+ },
683
709
  {
684
710
  turn: currentTurns,
685
711
  runObservers
@@ -690,7 +716,7 @@ var PromptRequest = class _PromptRequest {
690
716
  (error) => toolResultEvents.throw(error)
691
717
  );
692
718
  for await (const result of toolResultEvents) {
693
- yield { type: "tool_result", turn: currentTurns, ...result };
719
+ yield await emit({ turn: currentTurns, ...result });
694
720
  }
695
721
  const toolResults = await toolResultsPromise;
696
722
  const toolMessage = Message.tool(toolResults);
@@ -702,7 +728,7 @@ var PromptRequest = class _PromptRequest {
702
728
  } catch (error) {
703
729
  await runObservers.error({ error, usage, messages: [...newMessages] });
704
730
  await this.recordMemoryError(runId, error, newMessages);
705
- yield { type: "error", error };
731
+ yield await emit({ type: "error", error });
706
732
  throw error;
707
733
  }
708
734
  }
@@ -721,7 +747,7 @@ var PromptRequest = class _PromptRequest {
721
747
  throw error;
722
748
  }
723
749
  }
724
- async executeToolCalls(toolCalls, newMessages, onResult, observation) {
750
+ async executeToolCalls(toolCalls, newMessages, onResult, onStreamEvent, observation) {
725
751
  return mapWithConcurrency(toolCalls, this.concurrency, async (toolCall) => {
726
752
  const args = JSON.stringify(toolCall.function.arguments ?? {});
727
753
  const internalCallId = globalThis.crypto.randomUUID();
@@ -763,7 +789,23 @@ var PromptRequest = class _PromptRequest {
763
789
  skipped = true;
764
790
  } else {
765
791
  try {
766
- output = await this.agent.callTool(toolCall.function.name, args);
792
+ output = await this.agent.callTool(toolCall.function.name, args, {
793
+ emitStreamEvent: async (event) => {
794
+ await toolObservers?.streamEvent({
795
+ turn: observation?.turn ?? 0,
796
+ toolCall,
797
+ toolName: toolCall.function.name,
798
+ internalCallId,
799
+ args,
800
+ ...toolCall.callId === void 0 ? {} : { toolCallId: toolCall.callId },
801
+ event
802
+ });
803
+ const payload = agentToolEventPayload(toolCall, internalCallId, event);
804
+ if (payload !== void 0) {
805
+ onStreamEvent?.(payload);
806
+ }
807
+ }
808
+ });
767
809
  } catch (error) {
768
810
  output = error instanceof Error ? error.toString() : String(error);
769
811
  }
@@ -795,6 +837,7 @@ var PromptRequest = class _PromptRequest {
795
837
  throw this.cancelled(newMessages, resultAction.reason);
796
838
  }
797
839
  const resultPayload = {
840
+ type: "tool_result",
798
841
  toolName: toolCall.function.name,
799
842
  internalCallId,
800
843
  args,
@@ -836,6 +879,30 @@ var PromptRequest = class _PromptRequest {
836
879
  failOnObserverError
837
880
  );
838
881
  }
882
+ async recordAgentEvent(runId, event) {
883
+ const registration = this.agent.eventStore;
884
+ if (registration === void 0) {
885
+ return;
886
+ }
887
+ if (registration.options.include === "agent_tool_events" && event.type !== "agent_tool_event") {
888
+ return;
889
+ }
890
+ const turn = "turn" in event ? event.turn : void 0;
891
+ const agentId = event.type === "agent_tool_event" ? event.agentId : this.agent.id;
892
+ const agentName = event.type === "agent_tool_event" ? event.agentName : this.agent.name;
893
+ await registration.store.append({
894
+ runId,
895
+ agentId,
896
+ ...agentName === void 0 ? {} : { agentName },
897
+ ...turn === void 0 ? {} : { turn },
898
+ ...event.type === "agent_tool_event" ? {
899
+ toolName: event.toolName,
900
+ ...event.toolCallId === void 0 ? {} : { toolCallId: event.toolCallId },
901
+ internalCallId: event.internalCallId
902
+ } : {},
903
+ event
904
+ });
905
+ }
839
906
  async fetchDynamicContext(ragText) {
840
907
  if (ragText === void 0 || ragText.length === 0 || this.agent.dynamicContexts.length === 0) {
841
908
  return [];
@@ -1019,6 +1086,20 @@ function normalizePromptInput(prompt) {
1019
1086
  history: prompt.slice(0, -1)
1020
1087
  };
1021
1088
  }
1089
+ function agentToolEventPayload(toolCall, internalCallId, event) {
1090
+ if (typeof event.agentId !== "string" || event.agentId.length === 0) {
1091
+ return void 0;
1092
+ }
1093
+ return {
1094
+ type: "agent_tool_event",
1095
+ toolName: toolCall.function.name,
1096
+ ...toolCall.callId === void 0 ? {} : { toolCallId: toolCall.callId },
1097
+ internalCallId,
1098
+ agentId: event.agentId,
1099
+ ...event.agentName === void 0 ? {} : { agentName: event.agentName },
1100
+ event: event.event
1101
+ };
1102
+ }
1022
1103
  function createAsyncQueue() {
1023
1104
  const values = [];
1024
1105
  const waiters = [];
@@ -1130,6 +1211,7 @@ var Agent = class {
1130
1211
  dynamicTools;
1131
1212
  toolMiddlewares;
1132
1213
  memory;
1214
+ eventStore;
1133
1215
  constructor(options) {
1134
1216
  this.id = normalizeAgentId(options.id);
1135
1217
  this.name = options.name;
@@ -1150,6 +1232,7 @@ var Agent = class {
1150
1232
  this.dynamicTools = options.dynamicTools ?? [];
1151
1233
  this.toolMiddlewares = options.toolMiddlewares ?? [];
1152
1234
  this.memory = options.memory;
1235
+ this.eventStore = options.eventStore;
1153
1236
  }
1154
1237
  prompt(prompt) {
1155
1238
  return PromptRequest.fromAgent(this, prompt);
@@ -1177,9 +1260,24 @@ var Agent = class {
1177
1260
  prompt: z.string().describe("The prompt to send to the agent.")
1178
1261
  }),
1179
1262
  output: z.string(),
1180
- execute: async ({ prompt }) => {
1263
+ execute: async ({ prompt }, context) => {
1181
1264
  const request = this.prompt(prompt);
1182
- const response = options.maxTurns === void 0 ? await request.send() : await request.maxTurns(options.maxTurns).send();
1265
+ const childRequest = options.maxTurns === void 0 ? request : request.maxTurns(options.maxTurns);
1266
+ if (options.stream === true && context.emitStreamEvent !== void 0 && this.model.capabilities.streaming && isStreamingCompletionModel(this.model)) {
1267
+ let output = "";
1268
+ for await (const event of childRequest.stream()) {
1269
+ await context.emitStreamEvent({
1270
+ agentId: this.id,
1271
+ ...this.name === void 0 ? {} : { agentName: this.name },
1272
+ event
1273
+ });
1274
+ if (event.type === "final") {
1275
+ output = event.output;
1276
+ }
1277
+ }
1278
+ return output;
1279
+ }
1280
+ const response = await childRequest.send();
1183
1281
  return response.output;
1184
1282
  }
1185
1283
  });
@@ -1197,17 +1295,17 @@ var Agent = class {
1197
1295
  }
1198
1296
  return void 0;
1199
1297
  }
1200
- async callTool(toolName, args) {
1298
+ async callTool(toolName, args, context) {
1201
1299
  if (this.toolSet.contains(toolName)) {
1202
- return this.toolSet.call(toolName, args);
1300
+ return this.toolSet.call(toolName, args, context);
1203
1301
  }
1204
1302
  for (const registration of this.dynamicTools) {
1205
1303
  const toolSet = dynamicToolSetFromIndex(registration.index);
1206
1304
  if (toolSet?.contains(toolName)) {
1207
- return toolSet.call(toolName, args);
1305
+ return toolSet.call(toolName, args, context);
1208
1306
  }
1209
1307
  }
1210
- return this.toolSet.call(toolName, args);
1308
+ return this.toolSet.call(toolName, args, context);
1211
1309
  }
1212
1310
  shouldApplyToolMiddleware(toolName) {
1213
1311
  return !isSkillTool(this.getTool(toolName));
@@ -1281,6 +1379,7 @@ var AgentBuilder = class {
1281
1379
  dynamicToolRegistrations = [];
1282
1380
  middlewareRegistrations = [];
1283
1381
  memoryRegistration;
1382
+ eventStoreRegistration;
1284
1383
  activeToolSet = new ToolSet();
1285
1384
  name(name) {
1286
1385
  this.agentName = name;
@@ -1380,6 +1479,15 @@ var AgentBuilder = class {
1380
1479
  };
1381
1480
  return this;
1382
1481
  }
1482
+ eventStore(store, options = {}) {
1483
+ this.eventStoreRegistration = {
1484
+ store,
1485
+ options: {
1486
+ include: options.include ?? "all"
1487
+ }
1488
+ };
1489
+ return this;
1490
+ }
1383
1491
  outputSchema(schema) {
1384
1492
  this.schema = toProviderJsonSchema(schema);
1385
1493
  return this;
@@ -1404,7 +1512,8 @@ var AgentBuilder = class {
1404
1512
  dynamicContexts: this.dynamicContextRegistrations,
1405
1513
  dynamicTools: this.dynamicToolRegistrations,
1406
1514
  toolMiddlewares: this.middlewareRegistrations,
1407
- memory: this.memoryRegistration
1515
+ memory: this.memoryRegistration,
1516
+ eventStore: this.eventStoreRegistration
1408
1517
  });
1409
1518
  }
1410
1519
  buildInstructions() {
@@ -1439,4 +1548,4 @@ export {
1439
1548
  AgentSession,
1440
1549
  AgentBuilder
1441
1550
  };
1442
- //# sourceMappingURL=chunk-BIJ5ZBCO.js.map
1551
+ //# sourceMappingURL=chunk-5OVEPVTH.js.map