@anvia/core 0.26.0 → 1.0.0-rc.2

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 (162) hide show
  1. package/README.md +303 -94
  2. package/dist/agent/index.d.ts +36 -70
  3. package/dist/agent/index.js +25 -18
  4. package/dist/agent-yBG8e9Jj.d.ts +153 -0
  5. package/dist/chunk-4WI3VGZK.js +127 -0
  6. package/dist/chunk-4WI3VGZK.js.map +1 -0
  7. package/dist/chunk-77AIYARB.js +654 -0
  8. package/dist/chunk-77AIYARB.js.map +1 -0
  9. package/dist/chunk-AI5JMUW7.js +45 -0
  10. package/dist/chunk-AI5JMUW7.js.map +1 -0
  11. package/dist/chunk-BEYBU7VJ.js +53 -0
  12. package/dist/chunk-BEYBU7VJ.js.map +1 -0
  13. package/dist/chunk-CWM7B2OO.js +315 -0
  14. package/dist/chunk-CWM7B2OO.js.map +1 -0
  15. package/dist/chunk-D37WMSP6.js +131 -0
  16. package/dist/chunk-D37WMSP6.js.map +1 -0
  17. package/dist/chunk-DBSCKTUL.js +3793 -0
  18. package/dist/chunk-DBSCKTUL.js.map +1 -0
  19. package/dist/chunk-EINTGEGY.js +629 -0
  20. package/dist/chunk-EINTGEGY.js.map +1 -0
  21. package/dist/chunk-FMHLROPQ.js +351 -0
  22. package/dist/chunk-FMHLROPQ.js.map +1 -0
  23. package/dist/chunk-FN7HLLAZ.js +211 -0
  24. package/dist/chunk-FN7HLLAZ.js.map +1 -0
  25. package/dist/chunk-GKDERULJ.js +50 -0
  26. package/dist/chunk-GKDERULJ.js.map +1 -0
  27. package/dist/{chunk-CWUJUSOS.js → chunk-KIDGIJM7.js} +26 -5
  28. package/dist/chunk-KIDGIJM7.js.map +1 -0
  29. package/dist/chunk-KR3RCCHJ.js +500 -0
  30. package/dist/chunk-KR3RCCHJ.js.map +1 -0
  31. package/dist/chunk-MGNTXGTX.js +37 -0
  32. package/dist/chunk-MGNTXGTX.js.map +1 -0
  33. package/dist/{chunk-MRQLEK2B.js → chunk-OJH6HWHX.js} +63 -51
  34. package/dist/chunk-OJH6HWHX.js.map +1 -0
  35. package/dist/chunk-QOUPWOGW.js +29 -0
  36. package/dist/chunk-QOUPWOGW.js.map +1 -0
  37. package/dist/chunk-TIZYTPJO.js +208 -0
  38. package/dist/chunk-TIZYTPJO.js.map +1 -0
  39. package/dist/{chunk-NCPN4SJR.js → chunk-XKYYBABH.js} +13 -13
  40. package/dist/chunk-XKYYBABH.js.map +1 -0
  41. package/dist/client-B8DT1vUG.d.ts +83 -0
  42. package/dist/completion/index.d.ts +6 -36
  43. package/dist/completion/index.js +25 -29
  44. package/dist/dynamic-tools-KwEGRbHp.d.ts +45 -0
  45. package/dist/embeddings/index.d.ts +11 -9
  46. package/dist/embeddings/index.js +2 -4
  47. package/dist/evals/index.d.ts +47 -20
  48. package/dist/evals/index.js +104 -65
  49. package/dist/evals/index.js.map +1 -1
  50. package/dist/extractor/index.d.ts +27 -42
  51. package/dist/extractor/index.js +7 -22
  52. package/dist/guardrails/index.d.ts +3 -2
  53. package/dist/guardrails/index.js +1 -1
  54. package/dist/image-generation/index.d.ts +23 -23
  55. package/dist/image-generation/index.js +5 -39
  56. package/dist/image-generation/index.js.map +1 -1
  57. package/dist/index.d.ts +25 -20
  58. package/dist/index.js +60 -63
  59. package/dist/internal/agent.d.ts +163 -9
  60. package/dist/internal/agent.js +25 -18
  61. package/dist/loaders/index.d.ts +6 -10
  62. package/dist/loaders/index.js.map +1 -1
  63. package/dist/mcp/index.d.ts +19 -13
  64. package/dist/mcp/index.js +13 -348
  65. package/dist/mcp/index.js.map +1 -1
  66. package/dist/memory/index.d.ts +20 -6
  67. package/dist/memory/index.js +9 -10
  68. package/dist/message-schema-Cn7ezRfJ.d.ts +52 -0
  69. package/dist/middleware-C7PdmKF7.d.ts +56 -0
  70. package/dist/model-call-options-CZkSw_xN.d.ts +6 -0
  71. package/dist/model-listing/index.d.ts +3 -1
  72. package/dist/observability/index.d.ts +20 -3
  73. package/dist/observability/index.js +8 -5
  74. package/dist/observability/index.js.map +1 -1
  75. package/dist/pipeline/index.d.ts +114 -72
  76. package/dist/pipeline/index.js +478 -286
  77. package/dist/pipeline/index.js.map +1 -1
  78. package/dist/retry-CjvSlKGW.d.ts +16 -0
  79. package/dist/skills/index.d.ts +5 -4
  80. package/dist/skills/index.js +7 -8
  81. package/dist/speech-generation/index.d.ts +37 -0
  82. package/dist/speech-generation/index.js +8 -0
  83. package/dist/streaming/index.js +37 -3
  84. package/dist/streaming/index.js.map +1 -1
  85. package/dist/{think-tool-DfCMuO8e.d.ts → think-tool-6H2QNQzQ.d.ts} +5 -5
  86. package/dist/tool/index.d.ts +10 -6
  87. package/dist/tool/index.js +15 -21
  88. package/dist/tool--Mz4v1eL.d.ts +57 -0
  89. package/dist/transcription/index.d.ts +29 -22
  90. package/dist/transcription/index.js +5 -57
  91. package/dist/transcription/index.js.map +1 -1
  92. package/dist/type-utils-CtHVDRn_.d.ts +6 -0
  93. package/dist/types-3x3mOLHU.d.ts +379 -0
  94. package/dist/types-BVzM4RsC.d.ts +155 -0
  95. package/dist/types-CQ_ioXWK.d.ts +319 -0
  96. package/dist/types-Cr4uiYo5.d.ts +99 -0
  97. package/dist/{types-04LqWrmy.d.ts → types-DiJqJejp.d.ts} +1 -1
  98. package/dist/types-Dld1TpWj.d.ts +130 -0
  99. package/dist/vector-store/index.d.ts +33 -34
  100. package/dist/vector-store/index.js +6 -6
  101. package/package.json +6 -18
  102. package/dist/agent-x3YTyv5i.d.ts +0 -222
  103. package/dist/audio-generation/index.d.ts +0 -33
  104. package/dist/audio-generation/index.js +0 -42
  105. package/dist/audio-generation/index.js.map +0 -1
  106. package/dist/chunk-2ODTMRHP.js +0 -54
  107. package/dist/chunk-2ODTMRHP.js.map +0 -1
  108. package/dist/chunk-ADH7NNCS.js +0 -512
  109. package/dist/chunk-ADH7NNCS.js.map +0 -1
  110. package/dist/chunk-BALBBVI3.js +0 -2732
  111. package/dist/chunk-BALBBVI3.js.map +0 -1
  112. package/dist/chunk-CWUJUSOS.js.map +0 -1
  113. package/dist/chunk-DALYP4PX.js +0 -225
  114. package/dist/chunk-DALYP4PX.js.map +0 -1
  115. package/dist/chunk-HYUYZEAJ.js +0 -223
  116. package/dist/chunk-HYUYZEAJ.js.map +0 -1
  117. package/dist/chunk-I6XOQ4LK.js +0 -466
  118. package/dist/chunk-I6XOQ4LK.js.map +0 -1
  119. package/dist/chunk-JI5YZWNT.js +0 -220
  120. package/dist/chunk-JI5YZWNT.js.map +0 -1
  121. package/dist/chunk-MC3CCKEB.js +0 -221
  122. package/dist/chunk-MC3CCKEB.js.map +0 -1
  123. package/dist/chunk-MELYDKWQ.js +0 -337
  124. package/dist/chunk-MELYDKWQ.js.map +0 -1
  125. package/dist/chunk-MNWK2USR.js +0 -243
  126. package/dist/chunk-MNWK2USR.js.map +0 -1
  127. package/dist/chunk-MRQLEK2B.js.map +0 -1
  128. package/dist/chunk-NCPN4SJR.js.map +0 -1
  129. package/dist/chunk-OIMLU4SF.js +0 -20
  130. package/dist/chunk-OIMLU4SF.js.map +0 -1
  131. package/dist/chunk-Q25IWLBT.js +0 -138
  132. package/dist/chunk-Q25IWLBT.js.map +0 -1
  133. package/dist/chunk-UQX6EXWG.js +0 -33
  134. package/dist/chunk-UQX6EXWG.js.map +0 -1
  135. package/dist/chunk-WQKHFADH.js +0 -12
  136. package/dist/chunk-WQKHFADH.js.map +0 -1
  137. package/dist/chunk-XUUY2L2D.js +0 -42
  138. package/dist/chunk-XUUY2L2D.js.map +0 -1
  139. package/dist/chunk-XWUC7CIT.js +0 -1
  140. package/dist/chunk-XWUC7CIT.js.map +0 -1
  141. package/dist/chunk-YLMDBQO4.js +0 -141
  142. package/dist/chunk-YLMDBQO4.js.map +0 -1
  143. package/dist/errors-2moLDuuN.d.ts +0 -17
  144. package/dist/hooks/index.d.ts +0 -12
  145. package/dist/hooks/index.js +0 -17
  146. package/dist/index-BxSbmOMr.d.ts +0 -257
  147. package/dist/json-BVPssigK.d.ts +0 -39
  148. package/dist/middleware-Dp3d_pxi.d.ts +0 -90
  149. package/dist/request/index.d.ts +0 -28
  150. package/dist/request/index.js +0 -25
  151. package/dist/request/index.js.map +0 -1
  152. package/dist/tool-Cohdv5GC.d.ts +0 -65
  153. package/dist/types-BCTRUGex.d.ts +0 -47
  154. package/dist/types-BrLbKnEz.d.ts +0 -119
  155. package/dist/types-D9JpeAPF.d.ts +0 -114
  156. package/dist/types-G12i56s2.d.ts +0 -354
  157. package/dist/types-JJCxRnaZ.d.ts +0 -70
  158. package/dist/types-O-abTIin.d.ts +0 -79
  159. package/dist/ui/index.d.ts +0 -107
  160. package/dist/ui/index.js +0 -10
  161. package/dist/ui/index.js.map +0 -1
  162. /package/dist/{hooks → speech-generation}/index.js.map +0 -0
package/dist/mcp/index.js CHANGED
@@ -1,352 +1,17 @@
1
1
  import {
2
- isRecord
3
- } from "../chunk-CQNNSZPG.js";
4
-
5
- // src/mcp/result.ts
6
- function createCallToolParams(name, args) {
7
- if (args === null || args === void 0) {
8
- return { name };
9
- }
10
- if (!isRecord(args)) {
11
- throw new Error("MCP tool arguments must be a JSON object");
12
- }
13
- return { name, arguments: args };
14
- }
15
- function mapMcpToolResult(result) {
16
- if ("toolResult" in result) {
17
- return serializeMcpValue(result.toolResult);
18
- }
19
- if (result.isError === true) {
20
- throw new Error(mcpErrorMessage(result.content));
21
- }
22
- return result.content.map(mapMcpContent).join("");
23
- }
24
- function mcpErrorMessage(content) {
25
- const text = content.map((item) => item.type === "text" ? item.text : void 0).filter((item) => item !== void 0).join("\n");
26
- return text === "" ? "MCP tool returned an error" : text;
27
- }
28
- function mapMcpContent(content) {
29
- if (content.type === "text") {
30
- return content.text;
31
- }
32
- if (content.type === "image") {
33
- return `data:${content.mimeType};base64,${content.data}`;
34
- }
35
- if (content.type === "resource") {
36
- const mimeType = content.resource.mimeType === void 0 ? "" : `data:${content.resource.mimeType};`;
37
- if ("text" in content.resource) {
38
- return `${mimeType}${content.resource.uri}:${content.resource.text}`;
39
- }
40
- return `${mimeType}${content.resource.uri}:${content.resource.blob}`;
41
- }
42
- throw new Error(`Unsupported MCP tool result content: ${serializeMcpValue(content)}`);
43
- }
44
- function serializeMcpValue(value) {
45
- if (typeof value === "string") {
46
- return value;
47
- }
48
- const serialized = JSON.stringify(value);
49
- return serialized === void 0 ? String(value) : serialized;
50
- }
51
-
52
- // src/mcp/tool.ts
53
- var MCP_TOOL_METADATA_KEY = /* @__PURE__ */ Symbol.for("anvia.mcp.tool.metadata");
54
- function createMcpTool(definition, client, serverName) {
55
- const tool = {
56
- name: definition.name,
57
- definition() {
58
- return {
59
- name: definition.name,
60
- description: definition.description ?? "",
61
- parameters: definition.inputSchema
62
- };
63
- },
64
- async call(args) {
65
- const result = await client.callTool(createCallToolParams(definition.name, args));
66
- return mapMcpToolResult(result);
67
- }
68
- };
69
- if (serverName !== void 0) {
70
- Object.defineProperty(tool, MCP_TOOL_METADATA_KEY, {
71
- value: { serverName },
72
- enumerable: false
73
- });
74
- }
75
- return tool;
76
- }
77
-
78
- // src/mcp/connect.ts
79
- async function connectMcp(connection) {
80
- const client = await connection.connect();
81
- let tools;
82
- try {
83
- ({ tools } = await client.listTools());
84
- } catch (error) {
85
- try {
86
- await client.close();
87
- } catch {
88
- }
89
- throw error;
90
- }
91
- return {
92
- name: connection.name,
93
- tools: tools.map((tool) => createMcpTool(tool, client, connection.name)),
94
- close: () => client.close()
95
- };
96
- }
97
-
98
- // src/mcp/connections.ts
99
- import { readFileSync } from "fs";
100
- import { Client } from "@modelcontextprotocol/sdk/client/index.js";
101
- import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
102
- import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
103
- import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
104
-
105
- // src/mcp/url-safety.ts
106
- import { lookup } from "dns/promises";
107
- import { BlockList, isIP } from "net";
108
- import { Agent, Pool, fetch as undiciFetch } from "undici";
109
- var blockedIpv4Addresses = new BlockList();
110
- var blockedIpv6Addresses = new BlockList();
111
- for (const [network, prefix] of [
112
- ["0.0.0.0", 8],
113
- ["10.0.0.0", 8],
114
- ["100.64.0.0", 10],
115
- ["127.0.0.0", 8],
116
- ["169.254.0.0", 16],
117
- ["172.16.0.0", 12],
118
- ["192.0.0.0", 24],
119
- ["192.0.2.0", 24],
120
- ["192.88.99.0", 24],
121
- ["192.168.0.0", 16],
122
- ["198.18.0.0", 15],
123
- ["198.51.100.0", 24],
124
- ["203.0.113.0", 24],
125
- ["224.0.0.0", 4],
126
- ["240.0.0.0", 4]
127
- ]) {
128
- blockedIpv4Addresses.addSubnet(network, prefix, "ipv4");
129
- }
130
- for (const [network, prefix] of [
131
- ["::", 96],
132
- ["::ffff:0:0", 96],
133
- ["64:ff9b::", 96],
134
- ["64:ff9b:1::", 48],
135
- ["100::", 64],
136
- ["2001::", 32],
137
- ["2001:2::", 48],
138
- ["2001:10::", 28],
139
- ["2001:20::", 28],
140
- ["2001:db8::", 32],
141
- ["2002::", 16],
142
- ["fc00::", 7],
143
- ["fe80::", 10],
144
- ["fec0::", 10],
145
- ["ff00::", 8]
146
- ]) {
147
- blockedIpv6Addresses.addSubnet(network, prefix, "ipv6");
148
- }
149
- var defaultAddressResolver = (hostname) => lookup(hostname, { all: true, verbatim: true });
150
- function parseAndValidateMcpUrl(url) {
151
- let parsed;
152
- try {
153
- parsed = new URL(url);
154
- } catch {
155
- throw new Error(`Invalid MCP URL: ${url}`);
156
- }
157
- if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
158
- throw new Error(`MCP URL blocked: only HTTP(S) URLs are allowed (${parsed.protocol})`);
159
- }
160
- validateMcpHostname(parsed.hostname);
161
- return parsed;
162
- }
163
- async function resolveAndValidateMcpHostname(hostname, resolveAddresses = defaultAddressResolver) {
164
- const normalizedHostname = normalizeHostname(hostname);
165
- validateMcpHostname(normalizedHostname);
166
- const family = isIP(normalizedHostname);
167
- if (family !== 0) {
168
- return [{ address: normalizedHostname, family }];
169
- }
170
- let addresses;
171
- try {
172
- addresses = await resolveAddresses(normalizedHostname);
173
- } catch (cause) {
174
- throw new Error(`Unable to resolve MCP URL hostname (${normalizedHostname})`, { cause });
175
- }
176
- if (addresses.length === 0) {
177
- throw new Error(`Unable to resolve MCP URL hostname (${normalizedHostname})`);
178
- }
179
- for (const { address } of addresses) {
180
- validateMcpHostname(address);
181
- }
182
- return addresses;
183
- }
184
- function createSafeMcpLookup(resolveAddresses = defaultAddressResolver) {
185
- return (hostname, options, callback) => {
186
- void resolveAndValidateMcpHostname(hostname, resolveAddresses).then(
187
- (addresses) => {
188
- const requestedFamily = normalizeRequestedFamily(options.family);
189
- const matchingAddresses = requestedFamily === 0 ? addresses : addresses.filter(({ family }) => family === requestedFamily);
190
- if (matchingAddresses.length === 0) {
191
- const error = new Error(`No matching address family for MCP URL (${hostname})`);
192
- Object.assign(error, { code: "EAI_ADDRFAMILY" });
193
- callback(error, []);
194
- return;
195
- }
196
- if (options.all) {
197
- callback(null, matchingAddresses);
198
- return;
199
- }
200
- const address = matchingAddresses[0];
201
- if (!address) {
202
- callback(new Error(`Unable to resolve MCP URL hostname (${hostname})`), []);
203
- return;
204
- }
205
- callback(null, address.address, address.family);
206
- },
207
- (cause) => {
208
- callback(asError(cause), []);
209
- }
210
- );
211
- };
212
- }
213
- function createSafeMcpFetch() {
214
- return (url, init) => {
215
- parseAndValidateMcpUrl(url);
216
- return undiciFetch(url, {
217
- ...init,
218
- dispatcher: safeMcpDispatcher
219
- });
220
- };
221
- }
222
- function validateMcpHostname(hostname) {
223
- const normalizedHostname = normalizeHostname(hostname);
224
- if (normalizedHostname === "localhost" || normalizedHostname.endsWith(".localhost")) {
225
- throw new Error(`MCP URL blocked: localhost not allowed (${normalizedHostname})`);
226
- }
227
- const family = isIP(normalizedHostname);
228
- if (family === 0) {
229
- return;
230
- }
231
- if (family === 4 && normalizedHostname.startsWith("127.") || family === 6 && normalizedHostname === "::1") {
232
- throw new Error(`MCP URL blocked: localhost not allowed (${normalizedHostname})`);
233
- }
234
- if (normalizedHostname === "169.254.169.254" || normalizedHostname === "fd00:ec2::254") {
235
- throw new Error(`MCP URL blocked: cloud metadata endpoint not allowed (${normalizedHostname})`);
236
- }
237
- if (family === 4 && blockedIpv4Addresses.check(normalizedHostname, "ipv4") || family === 6 && blockedIpv6Addresses.check(normalizedHostname, "ipv6")) {
238
- const range = family === 4 ? "IP" : "IPv6";
239
- throw new Error(`MCP URL blocked: private ${range} range not allowed (${normalizedHostname})`);
240
- }
241
- }
242
- function normalizeHostname(hostname) {
243
- const withoutBrackets = hostname.startsWith("[") && hostname.endsWith("]") ? hostname.slice(1, -1) : hostname;
244
- return withoutBrackets.toLowerCase().replace(/\.+$/, "");
245
- }
246
- function normalizeRequestedFamily(family) {
247
- if (family === 4 || family === "IPv4") {
248
- return 4;
249
- }
250
- if (family === 6 || family === "IPv6") {
251
- return 6;
252
- }
253
- return 0;
254
- }
255
- function asError(cause) {
256
- return cause instanceof Error ? cause : new Error(String(cause));
257
- }
258
- var safeMcpDispatcher = new Agent({
259
- autoSelectFamily: true,
260
- connect: {
261
- lookup: createSafeMcpLookup()
262
- },
263
- factory(origin, options) {
264
- parseAndValidateMcpUrl(origin);
265
- return new Pool(origin, options);
266
- }
267
- });
268
-
269
- // src/mcp/connections.ts
270
- var CORE_CLIENT_VERSION = readCorePackageVersion();
271
- var mcp = {
272
- stdio(options) {
273
- return {
274
- name: options.name,
275
- async connect() {
276
- const { name: _name, ...server } = options;
277
- const client = createSdkClient();
278
- await client.connect(asSdkTransport(new StdioClientTransport(server)));
279
- return client;
280
- }
281
- };
282
- },
283
- http(options) {
284
- return {
285
- name: options.name,
286
- async connect() {
287
- assertNoCustomMcpFetch(options.transport?.fetch);
288
- const url = parseAndValidateMcpUrl(options.url);
289
- const client = createSdkClient();
290
- await client.connect(
291
- asSdkTransport(
292
- new StreamableHTTPClientTransport(url, {
293
- ...options.transport,
294
- fetch: createSafeMcpFetch()
295
- })
296
- )
297
- );
298
- return client;
299
- }
300
- };
301
- },
302
- sse(options) {
303
- return {
304
- name: options.name,
305
- async connect() {
306
- assertNoCustomMcpFetch(options.transport?.fetch);
307
- const url = parseAndValidateMcpUrl(options.url);
308
- const client = createSdkClient();
309
- await client.connect(
310
- asSdkTransport(
311
- new SSEClientTransport(url, {
312
- ...options.transport,
313
- fetch: createSafeMcpFetch()
314
- })
315
- )
316
- );
317
- return client;
318
- }
319
- };
320
- }
321
- };
322
- function assertNoCustomMcpFetch(fetch) {
323
- if (fetch !== void 0) {
324
- throw new Error(
325
- "Custom MCP transport fetch implementations are not allowed because they can bypass SSRF protection"
326
- );
327
- }
328
- }
329
- function createSdkClient() {
330
- return new Client({
331
- name: "@anvia/core",
332
- version: CORE_CLIENT_VERSION
333
- });
334
- }
335
- function readCorePackageVersion() {
336
- try {
337
- const packageJson = JSON.parse(
338
- readFileSync(new URL("../../package.json", import.meta.url), "utf8")
339
- );
340
- return typeof packageJson.version === "string" ? packageJson.version : "0.0.0";
341
- } catch {
342
- return "0.0.0";
343
- }
344
- }
345
- function asSdkTransport(transport) {
346
- return transport;
347
- }
2
+ McpClient,
3
+ McpClientGroup,
4
+ isMcpTool
5
+ } from "../chunk-EINTGEGY.js";
6
+ import "../chunk-CQNNSZPG.js";
7
+ import "../chunk-D37WMSP6.js";
8
+ import "../chunk-77AIYARB.js";
9
+ import "../chunk-FMHLROPQ.js";
10
+ import "../chunk-TIZYTPJO.js";
11
+ import "../chunk-FN7HLLAZ.js";
348
12
  export {
349
- connectMcp,
350
- mcp
13
+ McpClient,
14
+ McpClientGroup,
15
+ isMcpTool
351
16
  };
352
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/mcp/result.ts","../../src/mcp/tool.ts","../../src/mcp/connect.ts","../../src/mcp/connections.ts","../../src/mcp/url-safety.ts"],"sourcesContent":["import { isRecord } from \"../internal/record\";\nimport type { McpToolCallContent, McpToolCallResult } from \"./types\";\n\nexport function createCallToolParams(\n name: string,\n args: unknown,\n): { name: string; arguments?: Record<string, unknown> } {\n if (args === null || args === undefined) {\n return { name };\n }\n\n if (!isRecord(args)) {\n throw new Error(\"MCP tool arguments must be a JSON object\");\n }\n\n return { name, arguments: args };\n}\n\nexport function mapMcpToolResult(result: McpToolCallResult): string {\n if (\"toolResult\" in result) {\n return serializeMcpValue(result.toolResult);\n }\n\n if (result.isError === true) {\n throw new Error(mcpErrorMessage(result.content));\n }\n\n return result.content.map(mapMcpContent).join(\"\");\n}\n\nfunction mcpErrorMessage(content: McpToolCallContent[]): string {\n const text = content\n .map((item) => (item.type === \"text\" ? item.text : undefined))\n .filter((item): item is string => item !== undefined)\n .join(\"\\n\");\n\n return text === \"\" ? \"MCP tool returned an error\" : text;\n}\n\nfunction mapMcpContent(content: McpToolCallContent): string {\n if (content.type === \"text\") {\n return content.text;\n }\n\n if (content.type === \"image\") {\n return `data:${content.mimeType};base64,${content.data}`;\n }\n\n if (content.type === \"resource\") {\n const mimeType =\n content.resource.mimeType === undefined ? \"\" : `data:${content.resource.mimeType};`;\n if (\"text\" in content.resource) {\n return `${mimeType}${content.resource.uri}:${content.resource.text}`;\n }\n\n return `${mimeType}${content.resource.uri}:${content.resource.blob}`;\n }\n\n throw new Error(`Unsupported MCP tool result content: ${serializeMcpValue(content)}`);\n}\n\nfunction serializeMcpValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n const serialized = JSON.stringify(value);\n return serialized === undefined ? String(value) : serialized;\n}\n","import type { ToolDefinition } from \"../completion/index\";\nimport type { Tool } from \"../tool/index\";\nimport { createCallToolParams, mapMcpToolResult } from \"./result\";\nimport type { McpClient, McpToolDefinition } from \"./types\";\n\nconst MCP_TOOL_METADATA_KEY = Symbol.for(\"anvia.mcp.tool.metadata\");\n\nexport function createMcpTool(\n definition: McpToolDefinition,\n client: McpClient,\n serverName?: string,\n): Tool {\n const tool: Tool = {\n name: definition.name,\n definition(): ToolDefinition {\n return {\n name: definition.name,\n description: definition.description ?? \"\",\n parameters: definition.inputSchema,\n };\n },\n async call(args): Promise<string> {\n const result = await client.callTool(createCallToolParams(definition.name, args));\n return mapMcpToolResult(result);\n },\n };\n if (serverName !== undefined) {\n Object.defineProperty(tool, MCP_TOOL_METADATA_KEY, {\n value: { serverName },\n enumerable: false,\n });\n }\n return tool;\n}\n","import { createMcpTool } from \"./tool\";\nimport type { McpConnection, McpServer } from \"./types\";\n\nexport async function connectMcp(connection: McpConnection): Promise<McpServer> {\n const client = await connection.connect();\n let tools: Awaited<ReturnType<typeof client.listTools>>[\"tools\"];\n try {\n ({ tools } = await client.listTools());\n } catch (error) {\n try {\n await client.close();\n } catch {\n // Preserve the initialization failure so callers see the actionable MCP error.\n }\n throw error;\n }\n\n return {\n name: connection.name,\n tools: tools.map((tool) => createMcpTool(tool, client, connection.name)),\n close: () => client.close(),\n };\n}\n","import { readFileSync } from \"node:fs\";\nimport { Client } from \"@modelcontextprotocol/sdk/client/index.js\";\nimport { SSEClientTransport } from \"@modelcontextprotocol/sdk/client/sse.js\";\nimport { StdioClientTransport } from \"@modelcontextprotocol/sdk/client/stdio.js\";\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport type {\n McpClient,\n McpConnection,\n McpHttpOptions,\n McpSseOptions,\n McpStdioOptions,\n} from \"./types\";\nimport { createSafeMcpFetch, parseAndValidateMcpUrl } from \"./url-safety\";\n\nconst CORE_CLIENT_VERSION = readCorePackageVersion();\n\nexport const mcp = {\n stdio(options: McpStdioOptions): McpConnection {\n return {\n name: options.name,\n async connect(): Promise<McpClient> {\n const { name: _name, ...server } = options;\n const client = createSdkClient();\n await client.connect(asSdkTransport(new StdioClientTransport(server)));\n return client as McpClient;\n },\n };\n },\n\n http(options: McpHttpOptions): McpConnection {\n return {\n name: options.name,\n async connect(): Promise<McpClient> {\n assertNoCustomMcpFetch(options.transport?.fetch);\n const url = parseAndValidateMcpUrl(options.url);\n const client = createSdkClient();\n await client.connect(\n asSdkTransport(\n new StreamableHTTPClientTransport(url, {\n ...options.transport,\n fetch: createSafeMcpFetch(),\n }),\n ),\n );\n return client as McpClient;\n },\n };\n },\n\n sse(options: McpSseOptions): McpConnection {\n return {\n name: options.name,\n async connect(): Promise<McpClient> {\n assertNoCustomMcpFetch(options.transport?.fetch);\n const url = parseAndValidateMcpUrl(options.url);\n const client = createSdkClient();\n await client.connect(\n asSdkTransport(\n new SSEClientTransport(url, {\n ...options.transport,\n fetch: createSafeMcpFetch(),\n }),\n ),\n );\n return client as McpClient;\n },\n };\n },\n};\n\nfunction assertNoCustomMcpFetch(fetch: unknown): void {\n if (fetch !== undefined) {\n throw new Error(\n \"Custom MCP transport fetch implementations are not allowed because they can bypass SSRF protection\",\n );\n }\n}\n\nfunction createSdkClient(): Client {\n return new Client({\n name: \"@anvia/core\",\n version: CORE_CLIENT_VERSION,\n });\n}\n\nfunction readCorePackageVersion(): string {\n try {\n const packageJson = JSON.parse(\n readFileSync(new URL(\"../../package.json\", import.meta.url), \"utf8\"),\n ) as { version?: unknown };\n return typeof packageJson.version === \"string\" ? packageJson.version : \"0.0.0\";\n } catch {\n return \"0.0.0\";\n }\n}\n\nfunction asSdkTransport(transport: unknown): Parameters<Client[\"connect\"]>[0] {\n return transport as Parameters<Client[\"connect\"]>[0];\n}\n","import type { LookupAddress } from \"node:dns\";\nimport { lookup } from \"node:dns/promises\";\nimport type { LookupFunction } from \"node:net\";\nimport { BlockList, isIP } from \"node:net\";\nimport type { StreamableHTTPClientTransportOptions } from \"@modelcontextprotocol/sdk/client/streamableHttp.js\";\nimport { Agent, Pool, fetch as undiciFetch } from \"undici\";\n\ntype FetchLike = NonNullable<StreamableHTTPClientTransportOptions[\"fetch\"]>;\n\nexport type McpAddressResolver = (hostname: string) => Promise<LookupAddress[]>;\n\nconst blockedIpv4Addresses = new BlockList();\nconst blockedIpv6Addresses = new BlockList();\n\nfor (const [network, prefix] of [\n [\"0.0.0.0\", 8],\n [\"10.0.0.0\", 8],\n [\"100.64.0.0\", 10],\n [\"127.0.0.0\", 8],\n [\"169.254.0.0\", 16],\n [\"172.16.0.0\", 12],\n [\"192.0.0.0\", 24],\n [\"192.0.2.0\", 24],\n [\"192.88.99.0\", 24],\n [\"192.168.0.0\", 16],\n [\"198.18.0.0\", 15],\n [\"198.51.100.0\", 24],\n [\"203.0.113.0\", 24],\n [\"224.0.0.0\", 4],\n [\"240.0.0.0\", 4],\n] as const) {\n blockedIpv4Addresses.addSubnet(network, prefix, \"ipv4\");\n}\n\nfor (const [network, prefix] of [\n [\"::\", 96],\n [\"::ffff:0:0\", 96],\n [\"64:ff9b::\", 96],\n [\"64:ff9b:1::\", 48],\n [\"100::\", 64],\n [\"2001::\", 32],\n [\"2001:2::\", 48],\n [\"2001:10::\", 28],\n [\"2001:20::\", 28],\n [\"2001:db8::\", 32],\n [\"2002::\", 16],\n [\"fc00::\", 7],\n [\"fe80::\", 10],\n [\"fec0::\", 10],\n [\"ff00::\", 8],\n] as const) {\n blockedIpv6Addresses.addSubnet(network, prefix, \"ipv6\");\n}\n\nconst defaultAddressResolver: McpAddressResolver = (hostname) =>\n lookup(hostname, { all: true, verbatim: true });\n\nexport function parseAndValidateMcpUrl(url: string | URL): URL {\n let parsed: URL;\n try {\n parsed = new URL(url);\n } catch {\n throw new Error(`Invalid MCP URL: ${url}`);\n }\n\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n throw new Error(`MCP URL blocked: only HTTP(S) URLs are allowed (${parsed.protocol})`);\n }\n\n validateMcpHostname(parsed.hostname);\n return parsed;\n}\n\nexport async function resolveAndValidateMcpHostname(\n hostname: string,\n resolveAddresses: McpAddressResolver = defaultAddressResolver,\n): Promise<LookupAddress[]> {\n const normalizedHostname = normalizeHostname(hostname);\n validateMcpHostname(normalizedHostname);\n\n const family = isIP(normalizedHostname);\n if (family !== 0) {\n return [{ address: normalizedHostname, family }];\n }\n\n let addresses: LookupAddress[];\n try {\n addresses = await resolveAddresses(normalizedHostname);\n } catch (cause) {\n throw new Error(`Unable to resolve MCP URL hostname (${normalizedHostname})`, { cause });\n }\n\n if (addresses.length === 0) {\n throw new Error(`Unable to resolve MCP URL hostname (${normalizedHostname})`);\n }\n\n for (const { address } of addresses) {\n validateMcpHostname(address);\n }\n\n return addresses;\n}\n\nexport function createSafeMcpLookup(\n resolveAddresses: McpAddressResolver = defaultAddressResolver,\n): LookupFunction {\n return (hostname, options, callback) => {\n void resolveAndValidateMcpHostname(hostname, resolveAddresses).then(\n (addresses) => {\n const requestedFamily = normalizeRequestedFamily(options.family);\n const matchingAddresses =\n requestedFamily === 0\n ? addresses\n : addresses.filter(({ family }) => family === requestedFamily);\n\n if (matchingAddresses.length === 0) {\n const error = new Error(`No matching address family for MCP URL (${hostname})`);\n Object.assign(error, { code: \"EAI_ADDRFAMILY\" });\n callback(error, []);\n return;\n }\n\n if (options.all) {\n callback(null, matchingAddresses);\n return;\n }\n\n const address = matchingAddresses[0];\n if (!address) {\n callback(new Error(`Unable to resolve MCP URL hostname (${hostname})`), []);\n return;\n }\n callback(null, address.address, address.family);\n },\n (cause: unknown) => {\n callback(asError(cause), []);\n },\n );\n };\n}\n\nexport function createSafeMcpFetch(): FetchLike {\n return (url, init) => {\n parseAndValidateMcpUrl(url);\n return undiciFetch(url as Parameters<typeof undiciFetch>[0], {\n ...(init as Parameters<typeof undiciFetch>[1]),\n dispatcher: safeMcpDispatcher,\n }) as ReturnType<FetchLike>;\n };\n}\n\nfunction validateMcpHostname(hostname: string): void {\n const normalizedHostname = normalizeHostname(hostname);\n\n if (normalizedHostname === \"localhost\" || normalizedHostname.endsWith(\".localhost\")) {\n throw new Error(`MCP URL blocked: localhost not allowed (${normalizedHostname})`);\n }\n\n const family = isIP(normalizedHostname);\n if (family === 0) {\n return;\n }\n\n if (\n (family === 4 && normalizedHostname.startsWith(\"127.\")) ||\n (family === 6 && normalizedHostname === \"::1\")\n ) {\n throw new Error(`MCP URL blocked: localhost not allowed (${normalizedHostname})`);\n }\n\n if (normalizedHostname === \"169.254.169.254\" || normalizedHostname === \"fd00:ec2::254\") {\n throw new Error(`MCP URL blocked: cloud metadata endpoint not allowed (${normalizedHostname})`);\n }\n\n if (\n (family === 4 && blockedIpv4Addresses.check(normalizedHostname, \"ipv4\")) ||\n (family === 6 && blockedIpv6Addresses.check(normalizedHostname, \"ipv6\"))\n ) {\n const range = family === 4 ? \"IP\" : \"IPv6\";\n throw new Error(`MCP URL blocked: private ${range} range not allowed (${normalizedHostname})`);\n }\n}\n\nfunction normalizeHostname(hostname: string): string {\n const withoutBrackets =\n hostname.startsWith(\"[\") && hostname.endsWith(\"]\") ? hostname.slice(1, -1) : hostname;\n return withoutBrackets.toLowerCase().replace(/\\.+$/, \"\");\n}\n\nfunction normalizeRequestedFamily(family: number | string | undefined): 0 | 4 | 6 {\n if (family === 4 || family === \"IPv4\") {\n return 4;\n }\n if (family === 6 || family === \"IPv6\") {\n return 6;\n }\n return 0;\n}\n\nfunction asError(cause: unknown): Error {\n return cause instanceof Error ? cause : new Error(String(cause));\n}\n\nconst safeMcpDispatcher = new Agent({\n autoSelectFamily: true,\n connect: {\n lookup: createSafeMcpLookup(),\n },\n factory(origin, options) {\n parseAndValidateMcpUrl(origin);\n return new Pool(origin, options as Pool.Options);\n },\n});\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,8 +1,22 @@
1
- export { M as MemoryCompactionConflictError, a as MemoryCompactionError, c as createSummaryMemoryCompactor, i as isMemoryCompactionSummary } from '../errors-2moLDuuN.js';
2
- import { n as MemoryOptions, o as ResolvedMemoryOptions } from '../types-BrLbKnEz.js';
3
- export { p as MemoryAppendInput, M as MemoryCompactionCommitInput, a as MemoryCompactionCommitResult, b as MemoryCompactionOptions, c as MemoryCompactionSnapshot, d as MemoryCompactionStore, e as MemoryCompactor, f as MemoryCompactorInput, g as MemoryCompactorResult, q as MemoryContext, h as MemoryConversation, i as MemoryConversationListOptions, j as MemoryConversationMessage, k as MemoryConversationSummary, r as MemoryErrorInput, l as MemoryInspector, s as MemoryRegistration, t as MemorySavePolicy, m as MemoryStore, R as ResolvedMemoryCompactionOptions, u as SessionOptions, S as SummaryMemoryCompactorOptions } from '../types-BrLbKnEz.js';
4
- import '../types-G12i56s2.js';
1
+ import { M as Message, U as Usage } from '../types-CQ_ioXWK.js';
2
+ import { a as CreateSummaryMemoryCompactorOptions, m as MemoryCompactor, f as MemoryCompactionMessage, C as CreateMemoryScopeKeyOptions } from '../types-BVzM4RsC.js';
3
+ export { M as MemoryAppendOptions, b as MemoryClearOptions, c as MemoryCompactionCapability, d as MemoryCompactionConflictRetryOptions, e as MemoryCompactionInfo, g as MemoryCompactionMetadata, h as MemoryCompactionOptions, i as MemoryCompactionReplacePrefixOptions, j as MemoryCompactionReplacePrefixResult, k as MemoryCompactionSnapshot, l as MemoryCompactionSnapshotOptions, n as MemoryCompactorInput, o as MemoryCompactorResult, p as MemoryConversation, q as MemoryConversationGetOptions, r as MemoryConversationListOptions, s as MemoryConversationMessage, t as MemoryConversationSummary, u as MemoryErrorOptions, v as MemoryInspector, w as MemoryLoadOptions, x as MemoryOptions, y as MemorySavePolicy, z as MemoryScope, A as MemoryScopeKeyOptions, B as MemoryScopeKeyResolver, D as MemoryStore } from '../types-BVzM4RsC.js';
4
+ import '../model-call-options-CZkSw_xN.js';
5
+ import '../retry-CjvSlKGW.js';
5
6
 
6
- declare function resolveMemoryOptions(options?: MemoryOptions): ResolvedMemoryOptions;
7
+ declare function createSummaryMemoryCompactor(options: CreateSummaryMemoryCompactorOptions): MemoryCompactor;
8
+ declare function isMemoryCompactionMessage(message: Message): message is MemoryCompactionMessage;
7
9
 
8
- export { MemoryOptions, ResolvedMemoryOptions, resolveMemoryOptions };
10
+ declare class MemoryCompactionError extends Error {
11
+ readonly usage: Usage | undefined;
12
+ constructor(message: string, options?: ErrorOptions & {
13
+ usage?: Usage | undefined;
14
+ });
15
+ }
16
+ declare class MemoryCompactionConflictError extends MemoryCompactionError {
17
+ constructor(attempts: number, usage?: Usage);
18
+ }
19
+
20
+ declare function createMemoryScopeKey(options: CreateMemoryScopeKeyOptions): string;
21
+
22
+ export { CreateMemoryScopeKeyOptions, CreateSummaryMemoryCompactorOptions, MemoryCompactionConflictError, MemoryCompactionError, MemoryCompactionMessage, MemoryCompactor, createMemoryScopeKey, createSummaryMemoryCompactor, isMemoryCompactionMessage };
@@ -1,21 +1,20 @@
1
- import "../chunk-XWUC7CIT.js";
2
1
  import {
3
- resolveMemoryOptions
4
- } from "../chunk-UQX6EXWG.js";
2
+ createMemoryScopeKey
3
+ } from "../chunk-QOUPWOGW.js";
5
4
  import {
6
5
  MemoryCompactionConflictError,
7
6
  MemoryCompactionError,
8
7
  createSummaryMemoryCompactor,
9
- isMemoryCompactionSummary
10
- } from "../chunk-MRQLEK2B.js";
11
- import "../chunk-MC3CCKEB.js";
12
- import "../chunk-ADH7NNCS.js";
13
- import "../chunk-WQKHFADH.js";
8
+ isMemoryCompactionMessage
9
+ } from "../chunk-OJH6HWHX.js";
10
+ import "../chunk-KR3RCCHJ.js";
11
+ import "../chunk-TIZYTPJO.js";
12
+ import "../chunk-FN7HLLAZ.js";
14
13
  export {
15
14
  MemoryCompactionConflictError,
16
15
  MemoryCompactionError,
16
+ createMemoryScopeKey,
17
17
  createSummaryMemoryCompactor,
18
- isMemoryCompactionSummary,
19
- resolveMemoryOptions
18
+ isMemoryCompactionMessage
20
19
  };
21
20
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,52 @@
1
+ import { b as RetrySetting } from './retry-CjvSlKGW.js';
2
+ import { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
3
+ import { C as CompletionModel, M as Message, D as Document, j as CompletionTool, u as ToolChoice, J as JsonObject, W as StreamingCompletionModel, g as CompletionResult, i as CompletionStreamEvent, o as JsonValue } from './types-CQ_ioXWK.js';
4
+ import { z } from 'zod';
5
+
6
+ type CompletionInput = {
7
+ prompt: string;
8
+ messages?: never;
9
+ } | {
10
+ messages: readonly Message[];
11
+ prompt?: never;
12
+ };
13
+ type CompletionBaseOptions<Model extends CompletionModel = CompletionModel> = CompletionInput & {
14
+ model: Model;
15
+ instructions?: string | undefined;
16
+ documents?: readonly Document[] | undefined;
17
+ tools?: readonly CompletionTool[] | undefined;
18
+ temperature?: number | undefined;
19
+ maxTokens?: number | undefined;
20
+ toolChoice?: ToolChoice | undefined;
21
+ providerOptions?: JsonObject | undefined;
22
+ retries?: RetrySetting | undefined;
23
+ abortSignal?: AbortSignal | undefined;
24
+ };
25
+ type GenerateCompletionOptions<Model extends CompletionModel = CompletionModel> = CompletionBaseOptions<Model> & {
26
+ outputSchema?: never;
27
+ };
28
+ type GenerateStructuredCompletionOptions<Output, Model extends CompletionModel = CompletionModel> = CompletionBaseOptions<Model> & {
29
+ outputSchema: ZodSchema<Output>;
30
+ };
31
+ type StreamCompletionOptions<Model extends StreamingCompletionModel = StreamingCompletionModel> = GenerateCompletionOptions<Model>;
32
+ type StreamStructuredCompletionOptions<Output, Model extends StreamingCompletionModel = StreamingCompletionModel> = GenerateStructuredCompletionOptions<Output, Model>;
33
+ type RawResponseOf<Model> = Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;
34
+ declare function generateCompletion<Output, Model extends CompletionModel>(options: GenerateStructuredCompletionOptions<Output, Model>): Promise<CompletionResult<Output, RawResponseOf<Model>>>;
35
+ declare function generateCompletion<Model extends CompletionModel>(options: GenerateCompletionOptions<Model>): Promise<CompletionResult<string, RawResponseOf<Model>>>;
36
+ declare function streamCompletion<Output, Model extends StreamingCompletionModel>(options: StreamStructuredCompletionOptions<Output, Model>): AsyncIterable<CompletionStreamEvent<Output, RawResponseOf<Model>>>;
37
+ declare function streamCompletion<Model extends StreamingCompletionModel>(options: StreamCompletionOptions<Model>): AsyncIterable<CompletionStreamEvent<string, RawResponseOf<Model>>>;
38
+ declare function isStreamingCompletionModel(model: CompletionModel): model is StreamingCompletionModel;
39
+
40
+ declare function isJsonValue(value: unknown): value is JsonValue;
41
+
42
+ type MessageMetadataSchema<Metadata extends JsonObject> = z.ZodType<Metadata>;
43
+ declare function createMessageSchema<Metadata extends JsonObject>(options: {
44
+ metadataSchema: MessageMetadataSchema<Metadata>;
45
+ }): z.ZodType<Message<Metadata>>;
46
+ declare const messageSchema: z.ZodType<Message<JsonObject>, unknown, z.core.$ZodTypeInternals<Message<JsonObject>, unknown>>;
47
+ declare const messagesSchema: z.ZodArray<z.ZodType<Message<JsonObject>, unknown, z.core.$ZodTypeInternals<Message<JsonObject>, unknown>>>;
48
+ declare function parseMessage(value: unknown): Message;
49
+ declare function parseMessages(value: unknown): Message[];
50
+ declare function isMessage(value: unknown): value is Message;
51
+
52
+ export { type CompletionBaseOptions as C, type GenerateCompletionOptions as G, type MessageMetadataSchema as M, type StreamCompletionOptions as S, type CompletionInput as a, type GenerateStructuredCompletionOptions as b, type StreamStructuredCompletionOptions as c, createMessageSchema as d, isMessage as e, messagesSchema as f, generateCompletion as g, parseMessages as h, isJsonValue as i, isStreamingCompletionModel as j, messageSchema as m, parseMessage as p, streamCompletion as s };
@@ -0,0 +1,56 @@
1
+ import { e as CompletionRequest, f as CompletionResponse, o as JsonValue, x as ToolResultContentPart } from './types-CQ_ioXWK.js';
2
+ import { M as MaybePromise } from './type-utils-CtHVDRn_.js';
3
+
4
+ type CompletionRequestMiddlewareArgs = {
5
+ turn: number;
6
+ request: CompletionRequest;
7
+ originalRequest: CompletionRequest;
8
+ };
9
+ type CompletionRequestMiddlewareResult = {
10
+ request: CompletionRequest;
11
+ } | undefined;
12
+ type CompletionResponseMiddlewareArgs<RawResponse = unknown> = {
13
+ turn: number;
14
+ request: CompletionRequest;
15
+ response: CompletionResponse<RawResponse>;
16
+ originalResponse: CompletionResponse<RawResponse>;
17
+ };
18
+ type CompletionResponseMiddlewareResult<RawResponse = unknown> = {
19
+ response: CompletionResponse<RawResponse>;
20
+ } | undefined;
21
+ type ToolInputMiddlewareArgs = {
22
+ toolName: string;
23
+ args: string;
24
+ originalArgs: string;
25
+ turn: number;
26
+ toolCallId?: string | undefined;
27
+ internalCallId: string;
28
+ };
29
+ type ToolInputMiddlewareResult = {
30
+ args: JsonValue | string;
31
+ } | undefined;
32
+ type ToolResultMiddlewareArgs = {
33
+ toolName: string;
34
+ args: string;
35
+ result: string;
36
+ originalResult: string;
37
+ structuredResult?: readonly ToolResultContentPart[] | undefined;
38
+ originalStructuredResult?: readonly ToolResultContentPart[] | undefined;
39
+ turn: number;
40
+ toolCallId?: string | undefined;
41
+ internalCallId: string;
42
+ };
43
+ type ToolOutputMiddlewareArgs = ToolResultMiddlewareArgs;
44
+ type ToolOutputMiddlewareResult = string | {
45
+ result?: string | undefined;
46
+ structuredResult?: readonly ToolResultContentPart[] | undefined;
47
+ } | undefined;
48
+ interface AgentMiddleware<RawResponse = unknown> {
49
+ onCompletionRequest?(args: CompletionRequestMiddlewareArgs): MaybePromise<CompletionRequestMiddlewareResult>;
50
+ onCompletionResponse?(args: CompletionResponseMiddlewareArgs<RawResponse>): MaybePromise<CompletionResponseMiddlewareResult<RawResponse>>;
51
+ onToolInput?(args: ToolInputMiddlewareArgs): MaybePromise<ToolInputMiddlewareResult>;
52
+ onToolOutput?(args: ToolOutputMiddlewareArgs): MaybePromise<ToolOutputMiddlewareResult>;
53
+ }
54
+ declare function createMiddleware<RawResponse = unknown>(middleware: AgentMiddleware<RawResponse>): AgentMiddleware<RawResponse>;
55
+
56
+ export { type AgentMiddleware as A, type CompletionRequestMiddlewareArgs as C, type ToolInputMiddlewareArgs as T, type CompletionRequestMiddlewareResult as a, type CompletionResponseMiddlewareArgs as b, type CompletionResponseMiddlewareResult as c, type ToolInputMiddlewareResult as d, type ToolOutputMiddlewareArgs as e, type ToolOutputMiddlewareResult as f, type ToolResultMiddlewareArgs as g, createMiddleware as h };
@@ -0,0 +1,6 @@
1
+ /** Options that control one provider model invocation without becoming request payload data. */
2
+ type ModelCallOptions = {
3
+ abortSignal?: AbortSignal | undefined;
4
+ };
5
+
6
+ export type { ModelCallOptions as M };
@@ -24,7 +24,9 @@ type ModelList = {
24
24
  data: ListedModel[];
25
25
  };
26
26
  interface ModelListingClient {
27
- listModels(): Promise<ModelList>;
27
+ listModels(options?: {
28
+ abortSignal?: AbortSignal | undefined;
29
+ }): Promise<ModelList>;
28
30
  }
29
31
 
30
32
  export { type ListedModel, type ModelId, type ModelList, type ModelListingClient, ModelListingError };
@@ -1,4 +1,21 @@
1
- export { m as AgentGenerationEndArgs, n as AgentGenerationErrorArgs, o as AgentGenerationModelInfo, p as AgentGenerationObserver, q as AgentGenerationStartArgs, r as AgentGenerationUpdateArgs, i as AgentObserver, k as AgentObserverRegistration, s as AgentRunEndArgs, t as AgentRunErrorArgs, u as AgentRunEventArgs, v as AgentRunObserver, w as AgentRunPromptRef, x as AgentRunStartArgs, y as AgentToolEndArgs, z as AgentToolErrorArgs, B as AgentToolObserver, C as AgentToolStartArgs, D as AgentToolStreamEventArgs, E as AgentTraceInfo, j as AgentTraceOptions, O as ObserveOptions, F as createObserver } from '../index-BxSbmOMr.js';
2
- import '../types-G12i56s2.js';
1
+ export { z as AgentGenerationEndArgs, B as AgentGenerationErrorArgs, C as AgentGenerationModelInfo, D as AgentGenerationObserver, E as AgentGenerationStartArgs, F as AgentGenerationUpdateArgs, G as AgentObservabilityOptions, H as AgentObserver, I as AgentObserverErrorPolicy, J as AgentObserverMap, K as AgentObserverTraceInfo, L as AgentRunEndArgs, M as AgentRunErrorArgs, N as AgentRunEventArgs, O as AgentRunObserver, P as AgentRunPromptRef, Q as AgentRunStartArgs, R as AgentToolEndArgs, S as AgentToolErrorArgs, T as AgentToolObserver, U as AgentToolStartArgs, V as AgentToolStreamEventArgs, W as AgentTraceInfo, X as AgentTraceOptions } from '../types-3x3mOLHU.js';
2
+ import '../retry-CjvSlKGW.js';
3
+ import '../types-CQ_ioXWK.js';
4
+ import '../model-call-options-CZkSw_xN.js';
3
5
  import '../guardrails/index.js';
4
- import '../tool-Cohdv5GC.js';
6
+ import '../type-utils-CtHVDRn_.js';
7
+ import '../types-BVzM4RsC.js';
8
+ import '../tool--Mz4v1eL.js';
9
+ import '../middleware-C7PdmKF7.js';
10
+
11
+ type AgentObserverFailure = {
12
+ readonly observer: string;
13
+ readonly error: unknown;
14
+ };
15
+ declare class AgentObserverDispatchError extends AggregateError {
16
+ readonly phase: string;
17
+ readonly failures: readonly AgentObserverFailure[];
18
+ constructor(phase: string, failures: readonly AgentObserverFailure[]);
19
+ }
20
+
21
+ export { AgentObserverDispatchError };
@@ -1,8 +1,11 @@
1
- // src/observability/types.ts
2
- function createObserver(observer) {
3
- return observer;
4
- }
1
+ import {
2
+ AgentObserverDispatchError
3
+ } from "../chunk-CWM7B2OO.js";
4
+ import "../chunk-MGNTXGTX.js";
5
+ import "../chunk-KR3RCCHJ.js";
6
+ import "../chunk-TIZYTPJO.js";
7
+ import "../chunk-FN7HLLAZ.js";
5
8
  export {
6
- createObserver
9
+ AgentObserverDispatchError
7
10
  };
8
11
  //# sourceMappingURL=index.js.map