@anvia/core 0.4.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/README.md +68 -0
  2. package/dist/agent/index.d.ts +20 -11
  3. package/dist/agent/index.js +11 -5
  4. package/dist/{agent-B-ls5y_g.d.ts → agent-BURoB-me.d.ts} +81 -7
  5. package/dist/audio-generation/index.d.ts +1 -1
  6. package/dist/{chunk-MOICCK3J.js → chunk-6NWNL2KM.js} +19 -7
  7. package/dist/chunk-6NWNL2KM.js.map +1 -0
  8. package/dist/{chunk-6GJDBBDC.js → chunk-A4GUJSEK.js} +95 -1
  9. package/dist/chunk-A4GUJSEK.js.map +1 -0
  10. package/dist/{chunk-35GF7P43.js → chunk-AER5FGPK.js} +6 -2
  11. package/dist/{chunk-35GF7P43.js.map → chunk-AER5FGPK.js.map} +1 -1
  12. package/dist/{chunk-P425B6GR.js → chunk-I47EHI45.js} +13 -19
  13. package/dist/chunk-I47EHI45.js.map +1 -0
  14. package/dist/{chunk-N7NMSGZI.js → chunk-IXK3TEHJ.js} +247 -38
  15. package/dist/chunk-IXK3TEHJ.js.map +1 -0
  16. package/dist/{chunk-LGETU3RG.js → chunk-OXYZDHNI.js} +4 -4
  17. package/dist/{chunk-DUP7FMAF.js → chunk-SHHSMV7O.js} +2 -2
  18. package/dist/chunk-WQKHFADH.js +12 -0
  19. package/dist/chunk-WQKHFADH.js.map +1 -0
  20. package/dist/completion/index.d.ts +5 -2
  21. package/dist/completion/index.js +8 -1
  22. package/dist/create-completion-Bog3ni7b.d.ts +36 -0
  23. package/dist/evals/index.d.ts +5 -5
  24. package/dist/evals/index.js +7 -6
  25. package/dist/evals/index.js.map +1 -1
  26. package/dist/extractor/index.d.ts +4 -4
  27. package/dist/extractor/index.js +7 -6
  28. package/dist/image-generation/index.d.ts +1 -1
  29. package/dist/index.d.ts +9 -8
  30. package/dist/index.js +19 -8
  31. package/dist/internal/agent.d.ts +4 -4
  32. package/dist/internal/agent.js +5 -4
  33. package/dist/loaders/index.d.ts +1 -1
  34. package/dist/mcp/index.d.ts +4 -4
  35. package/dist/memory/index.d.ts +1 -1
  36. package/dist/middleware-C9QIms85.d.ts +102 -0
  37. package/dist/observability/index.d.ts +2 -2
  38. package/dist/pipeline/index.d.ts +4 -4
  39. package/dist/skills/index.d.ts +4 -4
  40. package/dist/skills/index.js +4 -3
  41. package/dist/{think-tool-ByArsrxe.d.ts → think-tool-DLTCqqJ6.d.ts} +1 -1
  42. package/dist/tool/index.d.ts +4 -4
  43. package/dist/tool/index.js +5 -2
  44. package/dist/{tool-C3ciF-VG.d.ts → tool-Dz-lHZon.d.ts} +1 -1
  45. package/dist/transcription/index.d.ts +1 -1
  46. package/dist/{types-UhcgW8Fo.d.ts → types-BfHZz1ZG.d.ts} +2 -2
  47. package/dist/{types-T9rlOIUc.d.ts → types-DUivppau.d.ts} +1 -1
  48. package/dist/{types-C54aNoCd.d.ts → types-Dmoq-Fhz.d.ts} +1 -1
  49. package/dist/vector-store/index.d.ts +2 -2
  50. package/dist/vector-store/index.js +2 -1
  51. package/package.json +1 -1
  52. package/dist/chunk-6GJDBBDC.js.map +0 -1
  53. package/dist/chunk-MOICCK3J.js.map +0 -1
  54. package/dist/chunk-N7NMSGZI.js.map +0 -1
  55. package/dist/chunk-P425B6GR.js.map +0 -1
  56. package/dist/middleware-CGiEIaBx.d.ts +0 -53
  57. /package/dist/{chunk-LGETU3RG.js.map → chunk-OXYZDHNI.js.map} +0 -0
  58. /package/dist/{chunk-DUP7FMAF.js.map → chunk-SHHSMV7O.js.map} +0 -0
package/README.md CHANGED
@@ -47,6 +47,74 @@ const response = await agent.prompt("What is happening with order A123?").send()
47
47
  console.log(response.output);
48
48
  ```
49
49
 
50
+ ## Direct Completions
51
+
52
+ Use `createCompletion` when you want a single provider call without agent turns, memory, or
53
+ tool execution:
54
+
55
+ ```ts
56
+ import { createCompletion } from "@anvia/core";
57
+ import { OpenAIClient } from "@anvia/openai";
58
+
59
+ const model = new OpenAIClient({ apiKey }).completionModel("gpt-5");
60
+
61
+ const result = await createCompletion(model, {
62
+ input: "Summarize Anvia in one sentence.",
63
+ instructions: "Answer clearly and concisely.",
64
+ });
65
+
66
+ console.log(result.text);
67
+ ```
68
+
69
+ Use `messages` when you already own the transcript. If `input` is also provided, it is appended as
70
+ the final message:
71
+
72
+ ```ts
73
+ import { Message, createCompletion } from "@anvia/core";
74
+
75
+ const result = await createCompletion(model, {
76
+ messages: [
77
+ Message.system("You are concise."),
78
+ Message.user("Explain Anvia."),
79
+ ],
80
+ maxTokens: 300,
81
+ params: {
82
+ reasoning: { effort: "low" },
83
+ },
84
+ });
85
+ ```
86
+
87
+ Use `createCompletionStream` to receive raw completion stream events from the model:
88
+
89
+ ```ts
90
+ import { createCompletionStream } from "@anvia/core";
91
+
92
+ for await (const event of createCompletionStream(model, {
93
+ input: "Write a short launch note.",
94
+ })) {
95
+ if (event.type === "text_delta") process.stdout.write(event.delta);
96
+ }
97
+ ```
98
+
99
+ Use `createParsedCompletion` when you want a direct completion to return schema-validated data:
100
+
101
+ ```ts
102
+ import { createParsedCompletion } from "@anvia/core";
103
+ import { z } from "zod";
104
+
105
+ const eventSchema = z.object({
106
+ name: z.string(),
107
+ date: z.string(),
108
+ });
109
+
110
+ const event = await createParsedCompletion(model, {
111
+ schema: eventSchema,
112
+ input: "Alice and Bob are going to a science fair on Friday.",
113
+ });
114
+
115
+ console.log(event.data);
116
+ ```
117
+
50
118
  ## Prompts and Memory
51
119
 
52
120
  Use a plain prompt for stateless calls:
@@ -1,19 +1,20 @@
1
- import { D as DynamicContextOptions, f as DynamicToolOptions, g as PromptHook, h as AgentEventStore, i as AgentEventStoreOptions, e as Agent } from '../agent-B-ls5y_g.js';
2
- export { A as AgentChildStreamEvent, j as AgentEventAppendInput, k as AgentEventRecord, l as AgentEventStoreInclude, a as AgentStreamEvent, C as CompletionCallHookArgs, m as CompletionResponseHookArgs, H as HookAction, n as HookResult, P as PromptResponse, R as RunControl, T as ToolApprovalRequestOptions, o as ToolCallControl, p as ToolCallHookAction, q as ToolCallHookArgs, u as ToolCallHookResult, v as ToolHookArgs, w as ToolResultHookArgs, c as cancelPrompt, b as createHook, r as requestToolApproval, d as runControl, s as skipTool, t as toolCallControl } from '../agent-B-ls5y_g.js';
3
- import { C as CompletionModel, e as JsonValue, m as ToolChoice, M as Message } from '../types-C54aNoCd.js';
4
- import { a as McpServer } from '../types-UhcgW8Fo.js';
1
+ import { k as ToolSearchDocument, l as ToolSet, A as AgentMiddleware, e as ToolMiddleware } from '../middleware-C9QIms85.js';
2
+ export { C as CompletionRequestMiddlewareArgs, a as CompletionRequestMiddlewareResult, b as CompletionResponseMiddlewareArgs, c as CompletionResponseMiddlewareResult, T as ToolInputMiddlewareArgs, d as ToolInputMiddlewareResult, f as ToolOutputMiddlewareArgs, g as ToolOutputMiddlewareResult, h as ToolResultMiddlewareArgs, i as createMiddleware, j as createToolMiddleware } from '../middleware-C9QIms85.js';
3
+ import { D as DynamicContextOptions, f as DynamicToolOptions, g as PromptHook, h as AgentEventStore, i as AgentEventStoreOptions, e as Agent } from '../agent-BURoB-me.js';
4
+ export { A as AgentChildStreamEvent, j as AgentEventAppendInput, k as AgentEventRecord, l as AgentEventStoreInclude, a as AgentStreamEvent, C as CompletionCallHookArgs, m as CompletionErrorHookArgs, n as CompletionResponseHookArgs, H as HookAction, o as HookResult, P as PromptResponse, R as RunControl, p as RunEndHookArgs, q as RunErrorHookArgs, u as RunStartHookArgs, T as ToolApprovalRequestOptions, v as ToolCallControl, w as ToolCallHookAction, x as ToolCallHookArgs, y as ToolCallHookResult, z as ToolErrorHookArgs, B as ToolHookArgs, E as ToolResultHookArgs, F as TurnEndHookArgs, G as TurnStartHookArgs, c as cancelPrompt, b as createHook, r as requestToolApproval, d as runControl, s as skipTool, t as toolCallControl } from '../agent-BURoB-me.js';
5
+ import { Z as ZodSchema } from '../zod-schema-C7F4clpm.js';
6
+ import { C as CompletionModel, e as JsonValue, m as ToolChoice, M as Message } from '../types-Dmoq-Fhz.js';
7
+ import { a as McpServer } from '../types-BfHZz1ZG.js';
5
8
  import { MemoryStore, MemoryOptions } from '../memory/index.js';
6
9
  import { AgentObserver, ObserveOptions } from '../observability/index.js';
7
- import { Z as ZodSchema } from '../zod-schema-C7F4clpm.js';
8
- import { a as SkillSet } from '../types-T9rlOIUc.js';
9
- import { b as ToolSearchDocument, c as ToolSet, T as ToolMiddleware } from '../middleware-CGiEIaBx.js';
10
- import { A as AnyTool } from '../tool-C3ciF-VG.js';
10
+ import { a as SkillSet } from '../types-DUivppau.js';
11
+ import { A as AnyTool } from '../tool-Dz-lHZon.js';
11
12
  import { VectorSearchIndex } from '../vector-store/index.js';
13
+ import '../types-IB2e9u5M.js';
14
+ import 'zod';
12
15
  import '@modelcontextprotocol/sdk/client/sse.js';
13
16
  import '@modelcontextprotocol/sdk/client/stdio.js';
14
17
  import '@modelcontextprotocol/sdk/client/streamableHttp.js';
15
- import 'zod';
16
- import '../types-IB2e9u5M.js';
17
18
 
18
19
  declare class AgentBuilder<M extends CompletionModel = CompletionModel> {
19
20
  private readonly completionModel;
@@ -55,7 +56,15 @@ declare class AgentBuilder<M extends CompletionModel = CompletionModel> {
55
56
  toolChoice(toolChoice: ToolChoice): this;
56
57
  defaultMaxTurns(defaultMaxTurns: number): this;
57
58
  hook(hook: PromptHook): this;
59
+ middleware(middleware: AgentMiddleware): this;
60
+ middlewares(middlewares: AgentMiddleware[]): this;
61
+ /**
62
+ * @deprecated Use `middleware` instead.
63
+ */
58
64
  toolMiddleware(middleware: ToolMiddleware): this;
65
+ /**
66
+ * @deprecated Use `middlewares` instead.
67
+ */
59
68
  toolMiddlewares(middlewares: ToolMiddleware[]): this;
60
69
  observe(observer: AgentObserver, options?: ObserveOptions): this;
61
70
  memory(store: MemoryStore, options?: MemoryOptions): this;
@@ -77,4 +86,4 @@ declare class PromptCancelledError extends Error {
77
86
  constructor(chatHistory: Message[], reason: string);
78
87
  }
79
88
 
80
- export { AgentBuilder, AgentEventStore, AgentEventStoreOptions, MaxTurnsError, PromptCancelledError, PromptHook };
89
+ export { AgentBuilder, AgentEventStore, AgentEventStoreOptions, AgentMiddleware, MaxTurnsError, PromptCancelledError, PromptHook, ToolMiddleware };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentBuilder
3
- } from "../chunk-MOICCK3J.js";
3
+ } from "../chunk-6NWNL2KM.js";
4
4
  import {
5
5
  MaxTurnsError,
6
6
  PromptCancelledError,
@@ -10,13 +10,17 @@ import {
10
10
  runControl,
11
11
  skipTool,
12
12
  toolCallControl
13
- } from "../chunk-N7NMSGZI.js";
13
+ } from "../chunk-IXK3TEHJ.js";
14
14
  import "../chunk-XUUY2L2D.js";
15
15
  import "../chunk-XXT2UCAR.js";
16
16
  import "../chunk-YK4WAAS4.js";
17
- import "../chunk-35GF7P43.js";
18
- import "../chunk-P425B6GR.js";
19
- import "../chunk-6GJDBBDC.js";
17
+ import {
18
+ createMiddleware,
19
+ createToolMiddleware
20
+ } from "../chunk-AER5FGPK.js";
21
+ import "../chunk-I47EHI45.js";
22
+ import "../chunk-A4GUJSEK.js";
23
+ import "../chunk-WQKHFADH.js";
20
24
  import "../chunk-EFGX3EX5.js";
21
25
  import "../chunk-OIMLU4SF.js";
22
26
  export {
@@ -25,6 +29,8 @@ export {
25
29
  PromptCancelledError,
26
30
  cancelPrompt,
27
31
  createHook,
32
+ createMiddleware,
33
+ createToolMiddleware,
28
34
  requestToolApproval,
29
35
  runControl,
30
36
  skipTool,
@@ -1,8 +1,8 @@
1
- import { M as Message, c as CompletionResponse, j as ToolResultContent, C as CompletionModel, U as Usage, t as ReasoningContentType, f as ToolCall, D as Document, e as JsonValue, m as ToolChoice, J as JsonObject } from './types-C54aNoCd.js';
1
+ import { M as Message, U as Usage, c as CompletionResponse, j as ToolResultContent, C as CompletionModel, u as ReasoningContentType, f as ToolCall, D as Document, e as JsonValue, m as ToolChoice, J as JsonObject } from './types-Dmoq-Fhz.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 './middleware-CGiEIaBx.js';
5
- import { T as Tool, A as AnyTool, c as ToolCallContext, N as NormalizedToolOutput } from './tool-C3ciF-VG.js';
4
+ import { A as AgentMiddleware, e as ToolMiddleware, l as ToolSet, k as ToolSearchDocument } from './middleware-C9QIms85.js';
5
+ import { T as Tool, A as AnyTool, c as ToolCallContext, N as NormalizedToolOutput } from './tool-Dz-lHZon.js';
6
6
  import { VectorFilter, VectorSearchResult, VectorSearchIndex } from './vector-store/index.js';
7
7
 
8
8
  type HookAction = {
@@ -45,11 +45,45 @@ type CompletionCallHookArgs = {
45
45
  history: Message[];
46
46
  run: RunControl;
47
47
  };
48
+ type RunStartHookArgs = {
49
+ prompt: Message;
50
+ history: Message[];
51
+ maxTurns: number;
52
+ run: RunControl;
53
+ };
54
+ type RunEndHookArgs = {
55
+ output: string;
56
+ usage: Usage;
57
+ messages: Message[];
58
+ run: RunControl;
59
+ };
60
+ type RunErrorHookArgs = {
61
+ error: unknown;
62
+ usage: Usage;
63
+ messages: Message[];
64
+ run: RunControl;
65
+ };
66
+ type TurnStartHookArgs = {
67
+ turn: number;
68
+ prompt: Message;
69
+ history: Message[];
70
+ run: RunControl;
71
+ };
72
+ type TurnEndHookArgs<RawResponse = unknown> = {
73
+ turn: number;
74
+ response: CompletionResponse<RawResponse>;
75
+ run: RunControl;
76
+ };
48
77
  type CompletionResponseHookArgs<RawResponse = unknown> = {
49
78
  prompt: Message;
50
79
  response: CompletionResponse<RawResponse>;
51
80
  run: RunControl;
52
81
  };
82
+ type CompletionErrorHookArgs = {
83
+ prompt: Message;
84
+ error: unknown;
85
+ run: RunControl;
86
+ };
53
87
  type ToolHookArgs = {
54
88
  toolName: string;
55
89
  toolCallId?: string;
@@ -64,6 +98,10 @@ type ToolResultHookArgs = ToolHookArgs & {
64
98
  structuredResult?: ToolResultContent[] | undefined;
65
99
  run: RunControl;
66
100
  };
101
+ type ToolErrorHookArgs = ToolHookArgs & {
102
+ error: unknown;
103
+ run: RunControl;
104
+ };
67
105
  declare function createHook<RawResponse = unknown>(hook: PromptHook<RawResponse>): PromptHook<RawResponse>;
68
106
  declare function cancelPrompt(reason: string): HookAction;
69
107
  declare function skipTool(reason: string): ToolCallHookAction;
@@ -71,10 +109,17 @@ declare function requestToolApproval(options?: ToolApprovalRequestOptions): Tool
71
109
  declare const runControl: RunControl;
72
110
  declare const toolCallControl: ToolCallControl;
73
111
  interface PromptHook<RawResponse = unknown> {
112
+ onRunStart?: HookCallback<RunStartHookArgs>;
113
+ onRunEnd?: HookCallback<RunEndHookArgs>;
114
+ onRunError?: HookCallback<RunErrorHookArgs>;
115
+ onTurnStart?: HookCallback<TurnStartHookArgs>;
116
+ onTurnEnd?: HookCallback<TurnEndHookArgs<RawResponse>>;
74
117
  onCompletionCall?: HookCallback<CompletionCallHookArgs>;
75
118
  onCompletionResponse?: HookCallback<CompletionResponseHookArgs<RawResponse>>;
119
+ onCompletionError?: HookCallback<CompletionErrorHookArgs>;
76
120
  onToolCall?: ToolCallHookCallback<ToolCallHookArgs>;
77
121
  onToolResult?: HookCallback<ToolResultHookArgs>;
122
+ onToolError?: HookCallback<ToolErrorHookArgs>;
78
123
  }
79
124
 
80
125
  type PromptResponse = {
@@ -145,16 +190,28 @@ declare class PromptRequest<M extends CompletionModel = CompletionModel> {
145
190
  private activeHook;
146
191
  private concurrency;
147
192
  private traceOptions;
148
- private requestToolMiddlewares;
193
+ private requestMiddlewares;
149
194
  private readonly memoryRecorder;
150
195
  private constructor();
151
196
  static fromAgent<M extends CompletionModel>(agent: Agent<M>, prompt: string | Message | Message[], options?: {
152
197
  memoryContext?: MemoryContext | undefined;
153
198
  }): PromptRequest<M>;
154
199
  maxTurns(maxTurns: number): this;
200
+ withHook(hook: PromptHook): this;
201
+ /**
202
+ * @deprecated Use `withHook` instead.
203
+ */
155
204
  requestHook(hook: PromptHook): this;
156
205
  withToolConcurrency(concurrency: number): this;
206
+ withMiddleware(middleware: AgentMiddleware): this;
207
+ withMiddlewares(middlewares: AgentMiddleware[]): this;
208
+ /**
209
+ * @deprecated Use `withMiddleware` instead.
210
+ */
157
211
  withToolMiddleware(middleware: ToolMiddleware): this;
212
+ /**
213
+ * @deprecated Use `withMiddlewares` instead.
214
+ */
158
215
  withToolMiddlewares(middlewares: ToolMiddleware[]): this;
159
216
  withTrace(trace: AgentTraceOptions): this;
160
217
  send(): Promise<PromptResponse>;
@@ -166,7 +223,16 @@ declare class PromptRequest<M extends CompletionModel = CompletionModel> {
166
223
  private startRunObservers;
167
224
  private recordAgentEvent;
168
225
  private runCompletionCallHook;
226
+ private runRunStartHook;
227
+ private runRunEndHook;
228
+ private runRunErrorHook;
229
+ private runTurnStartHook;
230
+ private runTurnEndHook;
231
+ private runCompletionRequestMiddlewares;
232
+ private runCompletionResponseMiddlewares;
169
233
  private runCompletionResponseHook;
234
+ private runCompletionErrorHook;
235
+ private activeMiddlewares;
170
236
  private cancelled;
171
237
  }
172
238
 
@@ -188,7 +254,11 @@ type AgentOptions<M extends CompletionModel = CompletionModel> = {
188
254
  observers?: AgentObserverRegistration[] | undefined;
189
255
  dynamicContexts?: DynamicContextRegistration[] | undefined;
190
256
  dynamicTools?: DynamicToolRegistration[] | undefined;
191
- toolMiddlewares?: ToolMiddleware[] | undefined;
257
+ middlewares?: AgentMiddleware[] | undefined;
258
+ /**
259
+ * @deprecated Use `middlewares` instead.
260
+ */
261
+ toolMiddlewares?: AgentMiddleware[] | undefined;
192
262
  memory?: MemoryRegistration | undefined;
193
263
  eventStore?: AgentEventStoreRegistration | undefined;
194
264
  };
@@ -262,7 +332,11 @@ declare class Agent<M extends CompletionModel = CompletionModel> {
262
332
  readonly observers: AgentObserverRegistration[];
263
333
  readonly dynamicContexts: DynamicContextRegistration[];
264
334
  readonly dynamicTools: DynamicToolRegistration[];
265
- readonly toolMiddlewares: ToolMiddleware[];
335
+ readonly middlewares: AgentMiddleware[];
336
+ /**
337
+ * @deprecated Use `middlewares` instead.
338
+ */
339
+ readonly toolMiddlewares: AgentMiddleware[];
266
340
  readonly memory: MemoryRegistration | undefined;
267
341
  readonly eventStore: AgentEventStoreRegistration | undefined;
268
342
  constructor(options: AgentOptions<M>);
@@ -288,4 +362,4 @@ declare class AgentSession<M extends CompletionModel = CompletionModel> {
288
362
  clear(): Promise<void>;
289
363
  }
290
364
 
291
- export { type AgentChildStreamEvent as A, type AgentToolOptions as B, type CompletionCallHookArgs as C, type DynamicContextOptions as D, DEFAULT_MAX_TURNS as E, type DynamicContextRegistration as F, type DynamicToolRegistration as G, type HookAction as H, type PromptResponse as P, type RunControl as R, type ToolApprovalRequestOptions as T, type AgentStreamEvent as a, createHook as b, cancelPrompt as c, runControl as d, Agent as e, type DynamicToolOptions as f, type PromptHook as g, type AgentEventStore as h, type AgentEventStoreOptions as i, type AgentEventAppendInput as j, type AgentEventRecord as k, type AgentEventStoreInclude as l, type CompletionResponseHookArgs as m, type HookResult as n, type ToolCallControl as o, type ToolCallHookAction as p, type ToolCallHookArgs as q, requestToolApproval as r, skipTool as s, toolCallControl as t, type ToolCallHookResult as u, type ToolHookArgs as v, type ToolResultHookArgs as w, type AgentEventStoreRegistration as x, type AgentOptions as y, AgentSession as z };
365
+ export { type AgentChildStreamEvent as A, type ToolHookArgs as B, type CompletionCallHookArgs as C, type DynamicContextOptions as D, type ToolResultHookArgs as E, type TurnEndHookArgs as F, type TurnStartHookArgs as G, type HookAction as H, type AgentEventStoreRegistration as I, type AgentOptions as J, AgentSession as K, type AgentToolOptions as L, DEFAULT_MAX_TURNS as M, type DynamicContextRegistration as N, type DynamicToolRegistration as O, type PromptResponse as P, type RunControl as R, type ToolApprovalRequestOptions as T, type AgentStreamEvent as a, createHook as b, cancelPrompt as c, runControl as d, Agent as e, type DynamicToolOptions as f, type PromptHook as g, type AgentEventStore as h, type AgentEventStoreOptions as i, type AgentEventAppendInput as j, type AgentEventRecord as k, type AgentEventStoreInclude as l, type CompletionErrorHookArgs as m, type CompletionResponseHookArgs as n, type HookResult as o, type RunEndHookArgs as p, type RunErrorHookArgs as q, requestToolApproval as r, skipTool as s, toolCallControl as t, type RunStartHookArgs as u, type ToolCallControl as v, type ToolCallHookAction as w, type ToolCallHookArgs as x, type ToolCallHookResult as y, type ToolErrorHookArgs as z };
@@ -1,4 +1,4 @@
1
- import { e as JsonValue } from '../types-C54aNoCd.js';
1
+ import { e as JsonValue } from '../types-Dmoq-Fhz.js';
2
2
 
3
3
  type AudioGenerationRequest = {
4
4
  text: string;
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  Agent,
3
3
  normalizeAgentId
4
- } from "./chunk-N7NMSGZI.js";
4
+ } from "./chunk-IXK3TEHJ.js";
5
5
  import {
6
6
  resolveMemoryOptions
7
7
  } from "./chunk-XXT2UCAR.js";
8
8
  import {
9
9
  ToolSet
10
- } from "./chunk-35GF7P43.js";
10
+ } from "./chunk-AER5FGPK.js";
11
11
  import {
12
12
  toProviderJsonSchema
13
- } from "./chunk-P425B6GR.js";
13
+ } from "./chunk-WQKHFADH.js";
14
14
 
15
15
  // src/agent/builder.ts
16
16
  var AgentBuilder = class {
@@ -115,14 +115,26 @@ var AgentBuilder = class {
115
115
  this.requestHook = hook;
116
116
  return this;
117
117
  }
118
- toolMiddleware(middleware) {
118
+ middleware(middleware) {
119
119
  this.middlewareRegistrations.push(middleware);
120
120
  return this;
121
121
  }
122
- toolMiddlewares(middlewares) {
122
+ middlewares(middlewares) {
123
123
  this.middlewareRegistrations.push(...middlewares);
124
124
  return this;
125
125
  }
126
+ /**
127
+ * @deprecated Use `middleware` instead.
128
+ */
129
+ toolMiddleware(middleware) {
130
+ return this.middleware(middleware);
131
+ }
132
+ /**
133
+ * @deprecated Use `middlewares` instead.
134
+ */
135
+ toolMiddlewares(middlewares) {
136
+ return this.middlewares(middlewares);
137
+ }
126
138
  observe(observer, options = {}) {
127
139
  this.observerRegistrations.push({
128
140
  observer,
@@ -169,7 +181,7 @@ var AgentBuilder = class {
169
181
  observers: this.observerRegistrations,
170
182
  dynamicContexts: this.dynamicContextRegistrations,
171
183
  dynamicTools: this.dynamicToolRegistrations,
172
- toolMiddlewares: this.middlewareRegistrations,
184
+ middlewares: this.middlewareRegistrations,
173
185
  memory: this.memoryRegistration,
174
186
  eventStore: this.eventStoreRegistration
175
187
  });
@@ -185,4 +197,4 @@ var AgentBuilder = class {
185
197
  export {
186
198
  AgentBuilder
187
199
  };
188
- //# sourceMappingURL=chunk-MOICCK3J.js.map
200
+ //# sourceMappingURL=chunk-6NWNL2KM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/agent/builder.ts"],"sourcesContent":["import type { CompletionModel, Document, JsonObject, JsonValue, ToolChoice } from \"../completion\";\nimport type { McpServer } from \"../mcp\";\nimport {\n type MemoryOptions,\n type MemoryRegistration,\n type MemoryStore,\n resolveMemoryOptions,\n} from \"../memory\";\nimport type { AgentObserver, AgentObserverRegistration, ObserveOptions } from \"../observability\";\nimport { toProviderJsonSchema, type ZodSchema } from \"../schema/zod-schema\";\nimport type { SkillSet } from \"../skills\";\nimport type { ToolSearchDocument } from \"../tool/dynamic-tools\";\nimport type { AgentMiddleware, ToolMiddleware } from \"../tool/middleware\";\nimport type { AnyTool } from \"../tool/tool\";\nimport { ToolSet } from \"../tool/tool-set\";\nimport type { VectorSearchIndex } from \"../vector-store\";\nimport {\n Agent,\n type AgentEventStore,\n type AgentEventStoreOptions,\n type AgentEventStoreRegistration,\n type DynamicContextOptions,\n type DynamicContextRegistration,\n type DynamicToolOptions,\n type DynamicToolRegistration,\n} from \"./agent\";\nimport type { PromptHook } from \"./hooks\";\nimport { normalizeAgentId } from \"./ids\";\n\nexport class AgentBuilder<M extends CompletionModel = CompletionModel> {\n private readonly agentId: string;\n private agentName: string | undefined;\n private agentDescription: string | undefined;\n private instructionBlocks: string[] = [];\n private contextDocs: Document[] = [];\n private temp: number | undefined;\n private maxTokenCount: number | undefined;\n private params: JsonValue | undefined;\n private choice: ToolChoice | undefined;\n private turns: number | undefined;\n private requestHook: PromptHook | undefined;\n private schema: JsonObject | undefined;\n private skillInstructionBlocks: string[] = [];\n private observerRegistrations: AgentObserverRegistration[] = [];\n private dynamicContextRegistrations: DynamicContextRegistration[] = [];\n private dynamicToolRegistrations: DynamicToolRegistration[] = [];\n private middlewareRegistrations: AgentMiddleware[] = [];\n private memoryRegistration: MemoryRegistration | undefined;\n private eventStoreRegistration: AgentEventStoreRegistration | undefined;\n private activeToolSet = new ToolSet();\n\n constructor(\n agentId: string,\n private readonly completionModel: M,\n ) {\n this.agentId = normalizeAgentId(agentId);\n }\n\n name(name: string): this {\n this.agentName = name;\n return this;\n }\n\n description(description: string): this {\n this.agentDescription = description;\n return this;\n }\n\n instructions(instructions: string): this {\n if (instructions.length > 0) {\n this.instructionBlocks.push(instructions);\n }\n return this;\n }\n\n context(text: string, id = `static_doc_${this.contextDocs.length}`): this {\n this.contextDocs.push({ id, text });\n return this;\n }\n\n dynamicContext<T>(index: VectorSearchIndex<T>, options: DynamicContextOptions<T>): this {\n this.dynamicContextRegistrations.push({ index, options } as DynamicContextRegistration);\n return this;\n }\n\n dynamicTools(index: VectorSearchIndex<ToolSearchDocument>, options: DynamicToolOptions): this {\n this.dynamicToolRegistrations.push({ index, options });\n return this;\n }\n\n tool(tool: AnyTool): this {\n this.activeToolSet.addTool(tool);\n return this;\n }\n\n tools(tools: AnyTool[]): this {\n this.activeToolSet.addTools(tools);\n return this;\n }\n\n mcp(servers: McpServer[]): this {\n for (const server of servers) {\n this.activeToolSet.addTools(server.tools);\n }\n return this;\n }\n\n skills(skillSet: SkillSet): this {\n if (skillSet.instructions.length > 0) {\n this.skillInstructionBlocks.push(skillSet.instructions);\n }\n this.activeToolSet.addTools(skillSet.tools);\n return this;\n }\n\n useToolSet(toolSet: ToolSet): this {\n toolSet.addTools(this.activeToolSet);\n this.activeToolSet = toolSet;\n return this;\n }\n\n temperature(temperature: number): this {\n this.temp = temperature;\n return this;\n }\n\n maxTokens(maxTokens: number): this {\n this.maxTokenCount = maxTokens;\n return this;\n }\n\n additionalParams(params: JsonValue): this {\n this.params = params;\n return this;\n }\n\n toolChoice(toolChoice: ToolChoice): this {\n this.choice = toolChoice;\n return this;\n }\n\n defaultMaxTurns(defaultMaxTurns: number): this {\n this.turns = defaultMaxTurns;\n return this;\n }\n\n hook(hook: PromptHook): this {\n this.requestHook = hook;\n return this;\n }\n\n middleware(middleware: AgentMiddleware): this {\n this.middlewareRegistrations.push(middleware);\n return this;\n }\n\n middlewares(middlewares: AgentMiddleware[]): this {\n this.middlewareRegistrations.push(...middlewares);\n return this;\n }\n\n /**\n * @deprecated Use `middleware` instead.\n */\n toolMiddleware(middleware: ToolMiddleware): this {\n return this.middleware(middleware);\n }\n\n /**\n * @deprecated Use `middlewares` instead.\n */\n toolMiddlewares(middlewares: ToolMiddleware[]): this {\n return this.middlewares(middlewares);\n }\n\n observe(observer: AgentObserver, options: ObserveOptions = {}): this {\n this.observerRegistrations.push({\n observer,\n failOnObserverError: options.failOnObserverError,\n });\n return this;\n }\n\n memory(store: MemoryStore, options: MemoryOptions = {}): this {\n this.memoryRegistration = {\n store,\n options: resolveMemoryOptions(options),\n };\n return this;\n }\n\n eventStore(store: AgentEventStore, options: AgentEventStoreOptions = {}): this {\n this.eventStoreRegistration = {\n store,\n options: {\n include: options.include ?? \"all\",\n },\n };\n return this;\n }\n\n outputSchema(schema: ZodSchema): this {\n this.schema = toProviderJsonSchema(schema);\n return this;\n }\n\n build(): Agent<M> {\n return new Agent({\n id: this.agentId,\n name: this.agentName,\n description: this.agentDescription,\n model: this.completionModel,\n instructions: this.buildInstructions(),\n staticContext: this.contextDocs,\n temperature: this.temp,\n maxTokens: this.maxTokenCount,\n additionalParams: this.params,\n toolSet: this.activeToolSet,\n toolChoice: this.choice,\n defaultMaxTurns: this.turns,\n hook: this.requestHook,\n outputSchema: this.schema,\n observers: this.observerRegistrations,\n dynamicContexts: this.dynamicContextRegistrations,\n dynamicTools: this.dynamicToolRegistrations,\n middlewares: this.middlewareRegistrations,\n memory: this.memoryRegistration,\n eventStore: this.eventStoreRegistration,\n });\n }\n\n private buildInstructions(): string | undefined {\n const parts = [...this.instructionBlocks, ...this.skillInstructionBlocks].filter(\n (part): part is string => part !== undefined && part.length > 0,\n );\n return parts.length === 0 ? undefined : parts.join(\"\\n\\n\");\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,3 +1,7 @@
1
+ import {
2
+ toProviderJsonSchema
3
+ } from "./chunk-WQKHFADH.js";
4
+
1
5
  // src/completion/types.ts
2
6
  var UserContent = {
3
7
  text(text) {
@@ -189,6 +193,93 @@ function requestHasFileDocumentInput(request) {
189
193
  );
190
194
  }
191
195
 
196
+ // src/completion/create-completion.ts
197
+ function createCompletion(model, options) {
198
+ return sendCompletion(model, options);
199
+ }
200
+ function createCompletionStream(model, options) {
201
+ const request = toCompletionRequest(options);
202
+ if (!isStreamingCompletionModel(model) || !model.capabilities.streaming) {
203
+ throw new Error("This completion model does not support streaming");
204
+ }
205
+ assertCompletionRequestSupported(model, request, { streaming: true });
206
+ return model.streamCompletion(request);
207
+ }
208
+ async function createParsedCompletion(model, options) {
209
+ const { schema, ...completionOptions } = options;
210
+ const request = toCompletionRequest(
211
+ {
212
+ ...completionOptions,
213
+ outputSchema: toProviderJsonSchema(schema)
214
+ },
215
+ "createParsedCompletion"
216
+ );
217
+ assertCompletionRequestSupported(model, request);
218
+ const response = await model.completion(request);
219
+ const text = textFromAssistantContent(response.choice);
220
+ return {
221
+ data: parseCompletionData(text, schema),
222
+ text,
223
+ content: response.choice,
224
+ usage: response.usage,
225
+ response
226
+ };
227
+ }
228
+ async function sendCompletion(model, options) {
229
+ const request = toCompletionRequest(options);
230
+ assertCompletionRequestSupported(model, request);
231
+ const response = await model.completion(request);
232
+ return {
233
+ text: textFromAssistantContent(response.choice),
234
+ content: response.choice,
235
+ usage: response.usage,
236
+ response
237
+ };
238
+ }
239
+ function toCompletionRequest(options, helperName = "createCompletion") {
240
+ const chatHistory = [...options.messages ?? [], ...messagesFromInput(options.input)];
241
+ if (chatHistory.length === 0) {
242
+ throw new Error(`${helperName} requires input or messages.`);
243
+ }
244
+ const request = {
245
+ chatHistory,
246
+ documents: [...options.documents ?? []],
247
+ tools: [...options.tools ?? []]
248
+ };
249
+ if (options.instructions !== void 0 && options.instructions.length > 0) {
250
+ request.instructions = options.instructions;
251
+ }
252
+ if (options.temperature !== void 0) request.temperature = options.temperature;
253
+ if (options.maxTokens !== void 0) request.maxTokens = options.maxTokens;
254
+ if (options.toolChoice !== void 0) request.toolChoice = options.toolChoice;
255
+ if (options.outputSchema !== void 0) request.outputSchema = options.outputSchema;
256
+ if (options.params !== void 0) request.additionalParams = options.params;
257
+ return request;
258
+ }
259
+ function messagesFromInput(input) {
260
+ if (input === void 0) {
261
+ return [];
262
+ }
263
+ if (typeof input === "string") {
264
+ return [Message.user(input)];
265
+ }
266
+ return Array.isArray(input) ? [...input] : [input];
267
+ }
268
+ function isStreamingCompletionModel(model) {
269
+ return typeof model.streamCompletion === "function";
270
+ }
271
+ function parseCompletionData(text, schema) {
272
+ let json;
273
+ try {
274
+ json = JSON.parse(text);
275
+ } catch (error) {
276
+ throw new Error("createParsedCompletion expected the model response to be valid JSON.", {
277
+ cause: error
278
+ });
279
+ }
280
+ return schema.parse(json);
281
+ }
282
+
192
283
  // src/completion/documents.ts
193
284
  function normalizeDocuments(documents) {
194
285
  if (documents.length === 0) {
@@ -317,8 +408,11 @@ export {
317
408
  CompletionCapabilityError,
318
409
  assertCompletionRequestSupported,
319
410
  textFromAssistantContent,
411
+ createCompletion,
412
+ createCompletionStream,
413
+ createParsedCompletion,
320
414
  normalizeDocuments,
321
415
  formatDocument,
322
416
  CompletionRequestBuilder
323
417
  };
324
- //# sourceMappingURL=chunk-6GJDBBDC.js.map
418
+ //# sourceMappingURL=chunk-A4GUJSEK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/completion/types.ts","../src/completion/create-completion.ts","../src/completion/documents.ts","../src/completion/request.ts"],"sourcesContent":["export type JsonPrimitive = string | number | boolean | null;\nexport type JsonValue = JsonPrimitive | JsonObject | JsonValue[];\nexport type JsonObject = { [key: string]: JsonValue | undefined };\n\nexport type Document = {\n id: string;\n text: string;\n additionalProps?: Record<string, string>;\n};\n\nexport type Text = {\n type: \"text\";\n text: string;\n signature?: string;\n};\n\nexport type ImageDetail = \"auto\" | \"low\" | \"high\";\n\nexport type ImageContent = {\n type: \"image\";\n source:\n | {\n type: \"url\";\n url: string;\n }\n | {\n type: \"base64\";\n data: string;\n mediaType: string;\n };\n detail?: ImageDetail;\n};\n\nexport type DocumentContent = {\n type: \"document\";\n source:\n | {\n type: \"url\";\n url: string;\n mediaType: string;\n filename?: string;\n }\n | {\n type: \"base64\";\n data: string;\n mediaType: string;\n filename?: string;\n }\n | {\n type: \"text\";\n text: string;\n mediaType?: string;\n filename?: string;\n };\n};\n\nexport type Reasoning = {\n type: \"reasoning\";\n text: string;\n id?: string;\n content?: ReasoningContent[];\n};\n\nexport type ReasoningContent =\n | {\n type: \"text\";\n text: string;\n signature?: string;\n }\n | {\n type: \"summary\";\n text: string;\n }\n | {\n type: \"encrypted\";\n data: string;\n }\n | {\n type: \"redacted\";\n data: string;\n };\n\nexport type ReasoningContentType = ReasoningContent[\"type\"];\n\nexport type ToolFunction = {\n name: string;\n arguments: JsonValue;\n};\n\nexport type ToolCall = {\n type: \"tool_call\";\n id: string;\n callId?: string;\n function: ToolFunction;\n signature?: string;\n additionalParams?: JsonValue;\n};\n\nexport type ToolResultContent =\n | { type: \"text\"; text: string }\n | { type: \"image\"; data: string; mediaType?: string };\n\nexport type ToolResult = {\n type: \"tool_result\";\n id: string;\n callId?: string;\n content: ToolResultContent[];\n};\n\nexport type UserContent = Text | ImageContent | DocumentContent;\nexport type AssistantContent = Text | ToolCall | Reasoning | ImageContent;\nexport type ToolContent = ToolResult;\n\nexport type SystemMessage = {\n role: \"system\";\n content: string;\n};\n\nexport type UserMessage = {\n role: \"user\";\n content: UserContent[];\n};\n\nexport type AssistantMessage = {\n role: \"assistant\";\n id?: string;\n content: AssistantContent[];\n};\n\nexport type ToolMessage = {\n role: \"tool\";\n content: ToolContent[];\n};\n\nexport type Message = SystemMessage | UserMessage | AssistantMessage | ToolMessage;\n\nexport const UserContent = {\n text(text: string): Text {\n return { type: \"text\", text };\n },\n imageUrl(url: string, options: { detail?: ImageDetail } = {}): ImageContent {\n const image: ImageContent = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(\n data: string,\n mediaType: string,\n options: { detail?: ImageDetail } = {},\n ): ImageContent {\n const image: ImageContent = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType },\n };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n documentUrl(\n url: string,\n mediaType: string,\n options: { filename?: string | undefined } = {},\n ): DocumentContent {\n return {\n type: \"document\",\n source:\n options.filename === undefined\n ? { type: \"url\", url, mediaType }\n : { type: \"url\", url, mediaType, filename: options.filename },\n };\n },\n documentBase64(\n data: string,\n mediaType: string,\n options: { filename?: string | undefined } = {},\n ): DocumentContent {\n return {\n type: \"document\",\n source:\n options.filename === undefined\n ? { type: \"base64\", data, mediaType }\n : { type: \"base64\", data, mediaType, filename: options.filename },\n };\n },\n documentText(text: string): Text {\n return { type: \"text\", text };\n },\n};\n\nexport const ToolContent = {\n toolResult(id: string, content: string | ToolResultContent[], callId?: string): ToolResult {\n const normalized =\n typeof content === \"string\" ? [{ type: \"text\" as const, text: content }] : content;\n return callId === undefined\n ? { type: \"tool_result\", id, content: normalized }\n : { type: \"tool_result\", id, callId, content: normalized };\n },\n};\n\nexport const AssistantContent = {\n text(text: string): Text {\n return { type: \"text\", text };\n },\n imageUrl(url: string, options: { detail?: ImageDetail } = {}): ImageContent {\n const image: ImageContent = { type: \"image\", source: { type: \"url\", url } };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n imageBase64(\n data: string,\n mediaType: string,\n options: { detail?: ImageDetail } = {},\n ): ImageContent {\n const image: ImageContent = {\n type: \"image\",\n source: { type: \"base64\", data, mediaType },\n };\n if (options.detail !== undefined) {\n image.detail = options.detail;\n }\n return image;\n },\n reasoning(text: string, id?: string): Reasoning {\n return id === undefined ? { type: \"reasoning\", text } : { type: \"reasoning\", text, id };\n },\n reasoningFromContent(content: ReasoningContent[], id?: string): Reasoning {\n const text = reasoningDisplayText(content);\n const reasoning: Reasoning = { type: \"reasoning\", text, content };\n return id === undefined ? reasoning : { ...reasoning, id };\n },\n reasoningSummary(text: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"summary\", text }], id);\n },\n reasoningEncrypted(data: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"encrypted\", data }], id);\n },\n reasoningRedacted(data: string, id?: string): Reasoning {\n return AssistantContent.reasoningFromContent([{ type: \"redacted\", data }], id);\n },\n toolCall(id: string, name: string, args: JsonValue, callId?: string): ToolCall {\n const base: ToolCall = {\n type: \"tool_call\",\n id,\n function: {\n name,\n arguments: args,\n },\n };\n return callId === undefined ? base : { ...base, callId };\n },\n};\n\nexport function reasoningDisplayText(reasoning: Reasoning | ReasoningContent[]): string {\n const content = Array.isArray(reasoning) ? reasoning : reasoning.content;\n if (content === undefined) {\n return Array.isArray(reasoning) ? \"\" : reasoning.text;\n }\n return content\n .flatMap((item) => {\n if (item.type === \"text\" || item.type === \"summary\") {\n return [item.text];\n }\n return [];\n })\n .join(\"\");\n}\n\nexport const Message = {\n system(content: string): Message {\n return { role: \"system\", content };\n },\n user(content: string | UserContent[]): Message {\n return {\n role: \"user\",\n content: typeof content === \"string\" ? [UserContent.text(content)] : content,\n };\n },\n assistant(content: string | AssistantContent[], id?: string): Message {\n const normalized = typeof content === \"string\" ? [AssistantContent.text(content)] : content;\n return id === undefined\n ? { role: \"assistant\", content: normalized }\n : { role: \"assistant\", id, content: normalized };\n },\n tool(content: ToolContent | ToolContent[]): Message {\n return {\n role: \"tool\",\n content: Array.isArray(content) ? content : [content],\n };\n },\n};\n\nexport type ToolChoice =\n | \"auto\"\n | \"required\"\n | \"none\"\n | {\n type: \"function\";\n name: string;\n };\n\nexport type ToolDefinition = {\n name: string;\n description: string;\n parameters: JsonObject;\n};\n\nexport type Usage = {\n inputTokens: number;\n outputTokens: number;\n totalTokens: number;\n cachedInputTokens: number;\n cacheCreationInputTokens: number;\n};\n\nexport const Usage = {\n empty(): Usage {\n return {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n cachedInputTokens: 0,\n cacheCreationInputTokens: 0,\n };\n },\n add(left: Usage, right: Usage): Usage {\n return {\n inputTokens: left.inputTokens + right.inputTokens,\n outputTokens: left.outputTokens + right.outputTokens,\n totalTokens: left.totalTokens + right.totalTokens,\n cachedInputTokens: left.cachedInputTokens + right.cachedInputTokens,\n cacheCreationInputTokens: left.cacheCreationInputTokens + right.cacheCreationInputTokens,\n };\n },\n};\n\nexport type CompletionRequest = {\n model?: string;\n instructions?: string;\n chatHistory: Message[];\n documents: Document[];\n tools: ToolDefinition[];\n temperature?: number;\n maxTokens?: number;\n toolChoice?: ToolChoice;\n additionalParams?: JsonValue;\n outputSchema?: JsonObject;\n};\n\nexport type CompletionResponse<RawResponse = unknown> = {\n choice: AssistantContent[];\n usage: Usage;\n rawResponse: RawResponse;\n messageId?: string;\n};\n\nexport type CompletionModelCapabilities = {\n streaming: boolean;\n tools: boolean;\n toolChoice: boolean;\n imageInput: boolean;\n documentInput: boolean;\n outputSchema: boolean;\n reasoning: boolean;\n};\n\nexport interface CompletionModel<RawResponse = unknown> {\n readonly provider: string;\n readonly defaultModel: string;\n readonly capabilities: CompletionModelCapabilities;\n traceRequest?(\n request: CompletionRequest,\n options?: { stream?: boolean | undefined },\n ): JsonObject | undefined;\n completion(request: CompletionRequest): Promise<CompletionResponse<RawResponse>>;\n}\n\nexport type CompletionStreamEvent<RawResponse = unknown> =\n | {\n type: \"text_delta\";\n delta: string;\n }\n | {\n type: \"reasoning_delta\";\n delta: string;\n id?: string;\n contentType?: ReasoningContentType;\n signature?: string;\n }\n | {\n type: \"tool_call_delta\";\n id: string;\n callId?: string;\n name?: string;\n argumentsDelta?: string;\n signature?: string;\n }\n | {\n type: \"tool_call\";\n toolCall: ToolCall;\n }\n | {\n type: \"message_id\";\n id: string;\n }\n | {\n type: \"final\";\n response: CompletionResponse<RawResponse>;\n }\n | {\n type: \"error\";\n error: unknown;\n };\n\nexport interface StreamingCompletionModel<RawResponse = unknown>\n extends CompletionModel<RawResponse> {\n streamCompletion(request: CompletionRequest): AsyncIterable<CompletionStreamEvent<RawResponse>>;\n}\n\nexport class CompletionCapabilityError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"CompletionCapabilityError\";\n }\n}\n\nexport function assertCompletionRequestSupported(\n model: CompletionModel,\n request: CompletionRequest,\n options: { streaming?: boolean | undefined } = {},\n): void {\n const modelLabel = `${model.provider}:${request.model ?? model.defaultModel}`;\n const capabilities = model.capabilities;\n\n if (options.streaming === true && !capabilities.streaming) {\n throw new CompletionCapabilityError(`${modelLabel} does not support streaming completions.`);\n }\n\n if (request.tools.length > 0 && !capabilities.tools) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool definitions.`);\n }\n\n if (request.toolChoice !== undefined && !capabilities.toolChoice) {\n throw new CompletionCapabilityError(`${modelLabel} does not support tool choice.`);\n }\n\n if (request.outputSchema !== undefined && !capabilities.outputSchema) {\n throw new CompletionCapabilityError(`${modelLabel} does not support output schemas.`);\n }\n\n if (!capabilities.imageInput && requestHasImageInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support image input.`);\n }\n\n if (!capabilities.documentInput && requestHasFileDocumentInput(request)) {\n throw new CompletionCapabilityError(`${modelLabel} does not support document file input.`);\n }\n}\n\nexport function textFromAssistantContent(content: AssistantContent[]): string {\n return content.flatMap((item) => (item.type === \"text\" ? [item.text] : [])).join(\"\\n\");\n}\n\nfunction requestHasImageInput(request: CompletionRequest): boolean {\n return request.chatHistory.some((message) =>\n message.role === \"system\" ? false : message.content.some((content) => content.type === \"image\"),\n );\n}\n\nfunction requestHasFileDocumentInput(request: CompletionRequest): boolean {\n return request.chatHistory.some((message) =>\n message.role === \"user\"\n ? message.content.some(\n (content) => content.type === \"document\" && content.source.type !== \"text\",\n )\n : false,\n );\n}\n","import { toProviderJsonSchema, type ZodSchema } from \"../schema/zod-schema\";\nimport type {\n AssistantContent,\n CompletionModel,\n CompletionRequest,\n CompletionResponse,\n CompletionStreamEvent,\n Document,\n JsonObject,\n JsonValue,\n Message as MessageType,\n StreamingCompletionModel,\n ToolChoice,\n ToolDefinition,\n Usage,\n} from \"./types\";\nimport { assertCompletionRequestSupported, Message, textFromAssistantContent } from \"./types\";\n\nexport type CreateCompletionInput = string | MessageType | MessageType[];\n\nexport type CreateCompletionBaseOptions = {\n input?: CreateCompletionInput | undefined;\n messages?: MessageType[] | undefined;\n instructions?: string | undefined;\n documents?: Document[] | undefined;\n tools?: ToolDefinition[] | undefined;\n temperature?: number | undefined;\n maxTokens?: number | undefined;\n toolChoice?: ToolChoice | undefined;\n outputSchema?: JsonObject | undefined;\n params?: JsonValue | undefined;\n};\n\nexport type CreateCompletionOptions = CreateCompletionBaseOptions;\n\nexport type CreateCompletionStreamOptions = CreateCompletionBaseOptions;\n\nexport type CreateParsedCompletionOptions<T> = Omit<CreateCompletionBaseOptions, \"outputSchema\"> & {\n schema: ZodSchema<T>;\n};\n\nexport type CreateCompletionResult<RawResponse = unknown> = {\n text: string;\n content: AssistantContent[];\n usage: Usage;\n response: CompletionResponse<RawResponse>;\n};\n\nexport type CreateParsedCompletionResult<\n T,\n RawResponse = unknown,\n> = CreateCompletionResult<RawResponse> & {\n data: T;\n};\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\nexport function createCompletion<Model extends CompletionModel>(\n model: Model,\n options: CreateCompletionOptions,\n): Promise<CreateCompletionResult<RawResponseOf<Model>>> {\n return sendCompletion(model, options);\n}\n\nexport function createCompletionStream<Model extends StreamingCompletionModel>(\n model: Model,\n options: CreateCompletionStreamOptions,\n): AsyncIterable<CompletionStreamEvent<RawResponseOf<Model>>> {\n const request = toCompletionRequest(options);\n if (!isStreamingCompletionModel(model) || !model.capabilities.streaming) {\n throw new Error(\"This completion model does not support streaming\");\n }\n assertCompletionRequestSupported(model, request, { streaming: true });\n return model.streamCompletion(request) as AsyncIterable<\n CompletionStreamEvent<RawResponseOf<Model>>\n >;\n}\n\nexport async function createParsedCompletion<T, Model extends CompletionModel>(\n model: Model,\n options: CreateParsedCompletionOptions<T>,\n): Promise<CreateParsedCompletionResult<T, RawResponseOf<Model>>> {\n const { schema, ...completionOptions } = options;\n const request = toCompletionRequest(\n {\n ...completionOptions,\n outputSchema: toProviderJsonSchema(schema),\n },\n \"createParsedCompletion\",\n );\n assertCompletionRequestSupported(model, request);\n const response = (await model.completion(request)) as CompletionResponse<RawResponseOf<Model>>;\n const text = textFromAssistantContent(response.choice);\n return {\n data: parseCompletionData(text, schema),\n text,\n content: response.choice,\n usage: response.usage,\n response,\n };\n}\n\nasync function sendCompletion<Model extends CompletionModel>(\n model: Model,\n options: CreateCompletionOptions,\n): Promise<CreateCompletionResult<RawResponseOf<Model>>> {\n const request = toCompletionRequest(options);\n assertCompletionRequestSupported(model, request);\n const response = (await model.completion(request)) as CompletionResponse<RawResponseOf<Model>>;\n return {\n text: textFromAssistantContent(response.choice),\n content: response.choice,\n usage: response.usage,\n response,\n };\n}\n\nfunction toCompletionRequest(\n options: CreateCompletionBaseOptions,\n helperName = \"createCompletion\",\n): CompletionRequest {\n const chatHistory = [...(options.messages ?? []), ...messagesFromInput(options.input)];\n\n if (chatHistory.length === 0) {\n throw new Error(`${helperName} requires input or messages.`);\n }\n\n const request: CompletionRequest = {\n chatHistory,\n documents: [...(options.documents ?? [])],\n tools: [...(options.tools ?? [])],\n };\n\n if (options.instructions !== undefined && options.instructions.length > 0) {\n request.instructions = options.instructions;\n }\n if (options.temperature !== undefined) request.temperature = options.temperature;\n if (options.maxTokens !== undefined) request.maxTokens = options.maxTokens;\n if (options.toolChoice !== undefined) request.toolChoice = options.toolChoice;\n if (options.outputSchema !== undefined) request.outputSchema = options.outputSchema;\n if (options.params !== undefined) request.additionalParams = options.params;\n\n return request;\n}\n\nfunction messagesFromInput(input: CreateCompletionInput | undefined): MessageType[] {\n if (input === undefined) {\n return [];\n }\n if (typeof input === \"string\") {\n return [Message.user(input)];\n }\n return Array.isArray(input) ? [...input] : [input];\n}\n\nfunction isStreamingCompletionModel(model: CompletionModel): model is StreamingCompletionModel {\n return typeof (model as { streamCompletion?: unknown }).streamCompletion === \"function\";\n}\n\nfunction parseCompletionData<T>(text: string, schema: ZodSchema<T>): T {\n let json: unknown;\n try {\n json = JSON.parse(text);\n } catch (error) {\n throw new Error(\"createParsedCompletion expected the model response to be valid JSON.\", {\n cause: error,\n });\n }\n\n return schema.parse(json);\n}\n","import { type Document, Message, type Message as MessageType } from \"./types\";\n\nexport function normalizeDocuments(documents: Document[]): MessageType | undefined {\n if (documents.length === 0) {\n return undefined;\n }\n\n return Message.user(documents.map(formatDocument).join(\"\\n\"));\n}\n\nexport function formatDocument(document: Document): string {\n return `<file id: ${document.id}>\\n${formatDocumentBody(document)}\\n</file>\\n`;\n}\n\nfunction formatDocumentBody(document: Document): string {\n const metadata = formatMetadata(document.additionalProps);\n return metadata === undefined ? document.text : `${metadata}\\n${document.text}`;\n}\n\nfunction formatMetadata(additionalProps: Record<string, string> | undefined): string | undefined {\n if (additionalProps === undefined) {\n return undefined;\n }\n\n const entries = Object.entries(additionalProps).sort(([left], [right]) =>\n left.localeCompare(right),\n );\n if (entries.length === 0) {\n return undefined;\n }\n\n const metadata = entries.map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(\" \");\n return `<metadata ${metadata} />`;\n}\n","import type {\n CompletionModel,\n CompletionRequest,\n CompletionResponse,\n Document,\n JsonObject,\n JsonValue,\n Message as MessageType,\n ToolChoice,\n ToolDefinition,\n} from \"./types\";\nimport { assertCompletionRequestSupported } from \"./types\";\n\nexport class CompletionRequestBuilder<M extends CompletionModel = CompletionModel> {\n private requestModel: string | undefined;\n private instructionBlocks: string[] = [];\n private history: MessageType[] = [];\n private docs: Document[] = [];\n private toolDefs: ToolDefinition[] = [];\n private temp: number | undefined;\n private maxTokenCount: number | undefined;\n private choice: ToolChoice | undefined;\n private params: JsonValue | undefined;\n private schema: JsonObject | undefined;\n\n constructor(\n private readonly model: M,\n private readonly promptMessage: MessageType,\n ) {}\n\n modelOverride(model: string | undefined): this {\n this.requestModel = model;\n return this;\n }\n\n instructions(instructions: string | undefined): this {\n if (instructions !== undefined && instructions.length > 0) {\n this.instructionBlocks.push(instructions);\n }\n return this;\n }\n\n messages(messages: MessageType[]): this {\n this.history.push(...messages);\n return this;\n }\n\n documents(documents: Document[]): this {\n this.docs.push(...documents);\n return this;\n }\n\n tools(tools: ToolDefinition[]): this {\n this.toolDefs.push(...tools);\n return this;\n }\n\n temperature(temperature: number | undefined): this {\n this.temp = temperature;\n return this;\n }\n\n maxTokens(maxTokens: number | undefined): this {\n this.maxTokenCount = maxTokens;\n return this;\n }\n\n toolChoice(toolChoice: ToolChoice | undefined): this {\n this.choice = toolChoice;\n return this;\n }\n\n additionalParams(additionalParams: JsonValue | undefined): this {\n this.params = additionalParams;\n return this;\n }\n\n outputSchema(outputSchema: JsonObject | undefined): this {\n this.schema = outputSchema;\n return this;\n }\n\n build(): CompletionRequest {\n const instructions = this.buildInstructions();\n const request: CompletionRequest = {\n chatHistory: [...this.history, this.promptMessage],\n documents: [...this.docs],\n tools: [...this.toolDefs],\n };\n\n if (this.requestModel !== undefined) request.model = this.requestModel;\n if (instructions !== undefined) request.instructions = instructions;\n if (this.temp !== undefined) request.temperature = this.temp;\n if (this.maxTokenCount !== undefined) request.maxTokens = this.maxTokenCount;\n if (this.choice !== undefined) request.toolChoice = this.choice;\n if (this.params !== undefined) request.additionalParams = this.params;\n if (this.schema !== undefined) request.outputSchema = this.schema;\n\n return request;\n }\n\n async send(): Promise<CompletionResponse> {\n const request = this.build();\n assertCompletionRequestSupported(this.model, request);\n return this.model.completion(request);\n }\n\n private buildInstructions(): string | undefined {\n return this.instructionBlocks.length === 0 ? undefined : this.instructionBlocks.join(\"\\n\\n\");\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  InMemoryVectorStore,
3
3
  createTool
4
- } from "./chunk-P425B6GR.js";
4
+ } from "./chunk-I47EHI45.js";
5
5
  import {
6
6
  embedDocuments
7
7
  } from "./chunk-EFGX3EX5.js";
@@ -200,6 +200,9 @@ function defaultToolEmbeddingText(definition) {
200
200
  }
201
201
 
202
202
  // src/tool/middleware.ts
203
+ function createMiddleware(middleware) {
204
+ return middleware;
205
+ }
203
206
  function createToolMiddleware(middleware) {
204
207
  return middleware;
205
208
  }
@@ -234,7 +237,8 @@ export {
234
237
  embedTools,
235
238
  createToolIndex,
236
239
  isDynamicToolIndex,
240
+ createMiddleware,
237
241
  createToolMiddleware,
238
242
  createThinkTool
239
243
  };
240
- //# sourceMappingURL=chunk-35GF7P43.js.map
244
+ //# sourceMappingURL=chunk-AER5FGPK.js.map