@anvia/core 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +7 -8
  2. package/dist/agent/index.d.ts +10 -10
  3. package/dist/agent/index.js +10 -18
  4. package/dist/{agent-D_jXqPAZ.d.ts → agent-B-ls5y_g.d.ts} +6 -19
  5. package/dist/audio-generation/index.d.ts +1 -1
  6. package/dist/audio-generation/index.js +37 -4
  7. package/dist/audio-generation/index.js.map +1 -1
  8. package/dist/{chunk-QRZ2HPUX.js → chunk-4PHDOEKY.js} +3 -3
  9. package/dist/chunk-4PHDOEKY.js.map +1 -0
  10. package/dist/chunk-BD66WU2B.js +188 -0
  11. package/dist/chunk-BD66WU2B.js.map +1 -0
  12. package/dist/{chunk-I2HOMD3R.js → chunk-CY7SB5FG.js} +3 -3
  13. package/dist/{chunk-A7VDIZQN.js → chunk-EFGX3EX5.js} +5 -14
  14. package/dist/chunk-EFGX3EX5.js.map +1 -0
  15. package/dist/{chunk-TILE6Z2N.js → chunk-L6JCKFAX.js} +2 -2
  16. package/dist/{chunk-65QV627O.js → chunk-OIA4CN5V.js} +2 -2
  17. package/dist/chunk-OIMLU4SF.js +20 -0
  18. package/dist/chunk-OIMLU4SF.js.map +1 -0
  19. package/dist/{chunk-GSFQZYS7.js → chunk-TVIADATY.js} +579 -723
  20. package/dist/chunk-TVIADATY.js.map +1 -0
  21. package/dist/completion/index.d.ts +2 -2
  22. package/dist/embeddings/index.d.ts +4 -24
  23. package/dist/embeddings/index.js +2 -1
  24. package/dist/evals/index.d.ts +26 -21
  25. package/dist/evals/index.js +298 -15
  26. package/dist/evals/index.js.map +1 -1
  27. package/dist/extractor/index.d.ts +6 -5
  28. package/dist/extractor/index.js +8 -6
  29. package/dist/image-generation/index.d.ts +1 -1
  30. package/dist/image-generation/index.js +37 -4
  31. package/dist/image-generation/index.js.map +1 -1
  32. package/dist/index.d.ts +12 -21
  33. package/dist/index.js +14 -160
  34. package/dist/internal/agent.d.ts +8 -0
  35. package/dist/internal/agent.js +18 -0
  36. package/dist/internal/agent.js.map +1 -0
  37. package/dist/loaders/index.d.ts +1 -1
  38. package/dist/mcp/index.d.ts +4 -4
  39. package/dist/mcp/index.js +140 -4
  40. package/dist/mcp/index.js.map +1 -1
  41. package/dist/memory/index.d.ts +1 -1
  42. package/dist/{middleware-2FR89muX.d.ts → middleware-CGiEIaBx.d.ts} +4 -7
  43. package/dist/model-listing/index.js +13 -3
  44. package/dist/model-listing/index.js.map +1 -1
  45. package/dist/observability/index.d.ts +2 -2
  46. package/dist/observability/index.js +4 -3
  47. package/dist/observability/index.js.map +1 -1
  48. package/dist/pipeline/index.d.ts +9 -6
  49. package/dist/pipeline/index.js +334 -3
  50. package/dist/pipeline/index.js.map +1 -1
  51. package/dist/skills/index.d.ts +4 -4
  52. package/dist/skills/index.js +5 -4
  53. package/dist/think-tool-ByArsrxe.d.ts +26 -0
  54. package/dist/tool/index.d.ts +8 -29
  55. package/dist/tool/index.js +4 -3
  56. package/dist/{tool-ClZYES-Z.d.ts → tool-C3ciF-VG.d.ts} +2 -2
  57. package/dist/transcription/index.d.ts +1 -1
  58. package/dist/transcription/index.js +55 -4
  59. package/dist/transcription/index.js.map +1 -1
  60. package/dist/{types-BM8-Y8Hy.d.ts → types-C54aNoCd.d.ts} +1 -1
  61. package/dist/types-IB2e9u5M.d.ts +25 -0
  62. package/dist/{types-B0iXLkqi.d.ts → types-T9rlOIUc.d.ts} +2 -2
  63. package/dist/{types-fLi8uM5R.d.ts → types-UhcgW8Fo.d.ts} +3 -3
  64. package/dist/vector-store/index.d.ts +3 -3
  65. package/dist/vector-store/index.js +3 -2
  66. package/dist/zod-schema-C7F4clpm.d.ts +5 -0
  67. package/package.json +6 -2
  68. package/dist/chunk-6JCCM2K4.js +0 -304
  69. package/dist/chunk-6JCCM2K4.js.map +0 -1
  70. package/dist/chunk-7QI6ZAFI.js +0 -61
  71. package/dist/chunk-7QI6ZAFI.js.map +0 -1
  72. package/dist/chunk-A7VDIZQN.js.map +0 -1
  73. package/dist/chunk-B24Q2ZYM.js +0 -43
  74. package/dist/chunk-B24Q2ZYM.js.map +0 -1
  75. package/dist/chunk-GSFQZYS7.js.map +0 -1
  76. package/dist/chunk-I77SDTFE.js +0 -43
  77. package/dist/chunk-I77SDTFE.js.map +0 -1
  78. package/dist/chunk-NYUOBGVI.js +0 -146
  79. package/dist/chunk-NYUOBGVI.js.map +0 -1
  80. package/dist/chunk-QRZ2HPUX.js.map +0 -1
  81. package/dist/chunk-RTOGIJH2.js +0 -345
  82. package/dist/chunk-RTOGIJH2.js.map +0 -1
  83. package/dist/chunk-WJT22R3T.js +0 -18
  84. package/dist/chunk-WJT22R3T.js.map +0 -1
  85. package/dist/chunk-ZSYIQYTV.js +0 -9
  86. package/dist/chunk-ZSYIQYTV.js.map +0 -1
  87. /package/dist/{chunk-I2HOMD3R.js.map → chunk-CY7SB5FG.js.map} +0 -0
  88. /package/dist/{chunk-TILE6Z2N.js.map → chunk-L6JCKFAX.js.map} +0 -0
  89. /package/dist/{chunk-65QV627O.js.map → chunk-OIA4CN5V.js.map} +0 -0
@@ -1,22 +1,305 @@
1
1
  import {
2
- EvalOutcome,
3
- agentEvalTarget,
4
- contains,
5
- exactMatch,
6
- llmJudge,
7
- llmScore,
8
- runEvalSuite,
9
- semanticSimilarity
10
- } from "../chunk-6JCCM2K4.js";
11
- import "../chunk-QRZ2HPUX.js";
12
- import "../chunk-GSFQZYS7.js";
2
+ ExtractorBuilder
3
+ } from "../chunk-4PHDOEKY.js";
4
+ import "../chunk-BD66WU2B.js";
5
+ import "../chunk-TVIADATY.js";
6
+ import "../chunk-XUUY2L2D.js";
13
7
  import "../chunk-XXT2UCAR.js";
14
8
  import "../chunk-YK4WAAS4.js";
15
- import "../chunk-I2HOMD3R.js";
16
- import "../chunk-65QV627O.js";
17
- import "../chunk-XUUY2L2D.js";
9
+ import "../chunk-CY7SB5FG.js";
10
+ import "../chunk-OIA4CN5V.js";
18
11
  import "../chunk-6GJDBBDC.js";
19
- import "../chunk-A7VDIZQN.js";
12
+ import {
13
+ cosineSimilarity,
14
+ embedText
15
+ } from "../chunk-EFGX3EX5.js";
16
+ import {
17
+ mapWithConcurrency
18
+ } from "../chunk-OIMLU4SF.js";
19
+
20
+ // src/evals/agent-target.ts
21
+ function agentEvalTarget(agent, options = {}) {
22
+ return async (input, testCase) => {
23
+ const prompt = options.prompt?.(input, testCase) ?? String(input);
24
+ const response = await agent.prompt(prompt).send();
25
+ return options.output === void 0 ? response : options.output(response, testCase);
26
+ };
27
+ }
28
+
29
+ // src/evals/metrics.ts
30
+ import { z } from "zod";
31
+
32
+ // src/evals/format.ts
33
+ function defaultOutputValue(output) {
34
+ if (typeof output === "object" && output !== null && "output" in output && typeof output.output === "string") {
35
+ return output.output;
36
+ }
37
+ return output;
38
+ }
39
+ function stableComparable(value) {
40
+ if (typeof value === "string") {
41
+ return value;
42
+ }
43
+ return JSON.stringify(value);
44
+ }
45
+ function formatValue(value) {
46
+ if (typeof value === "string") {
47
+ return value;
48
+ }
49
+ try {
50
+ return JSON.stringify(value);
51
+ } catch {
52
+ return String(value);
53
+ }
54
+ }
55
+ function errorMessage(error) {
56
+ return error instanceof Error ? error.message : String(error);
57
+ }
58
+
59
+ // src/evals/outcome.ts
60
+ var EvalOutcome = {
61
+ pass(score, options = {}) {
62
+ return {
63
+ outcome: "pass",
64
+ ...score === void 0 ? {} : { score },
65
+ ...options.comment === void 0 ? {} : { comment: options.comment },
66
+ ...options.metadata === void 0 ? {} : { metadata: options.metadata }
67
+ };
68
+ },
69
+ fail(score, options = {}) {
70
+ return {
71
+ outcome: "fail",
72
+ ...score === void 0 ? {} : { score },
73
+ ...options.comment === void 0 ? {} : { comment: options.comment },
74
+ ...options.metadata === void 0 ? {} : { metadata: options.metadata }
75
+ };
76
+ },
77
+ invalid(reason, options = {}) {
78
+ return {
79
+ outcome: "invalid",
80
+ reason,
81
+ ...options.score === void 0 ? {} : { score: options.score },
82
+ ...options.comment === void 0 ? {} : { comment: options.comment },
83
+ ...options.metadata === void 0 ? {} : { metadata: options.metadata }
84
+ };
85
+ }
86
+ };
87
+
88
+ // src/evals/selectors.ts
89
+ async function resolveActual(selector, args) {
90
+ return selector === void 0 ? defaultOutputValue(args.output) : selector(args);
91
+ }
92
+ async function resolveActualText(selector, args) {
93
+ const value = selector === void 0 ? defaultOutputValue(args.output) : await selector(args);
94
+ return typeof value === "string" ? value : JSON.stringify(value);
95
+ }
96
+ async function resolveExpected(selectorOrValue, args) {
97
+ if (selectorOrValue === void 0) {
98
+ return args.case.expected;
99
+ }
100
+ return typeof selectorOrValue === "function" ? selectorOrValue(args) : selectorOrValue;
101
+ }
102
+ async function resolveJudgePrompt(selector, args) {
103
+ if (selector !== void 0) {
104
+ return selector(args);
105
+ }
106
+ return [
107
+ `Suite: ${args.suiteName}`,
108
+ `Case: ${args.case.id}`,
109
+ `Input: ${formatValue(args.case.input)}`,
110
+ `Expected: ${formatValue(args.case.expected)}`,
111
+ `Output: ${formatValue(defaultOutputValue(args.output))}`
112
+ ].join("\n\n");
113
+ }
114
+
115
+ // src/evals/metrics.ts
116
+ function exactMatch(options = {}) {
117
+ return {
118
+ name: options.name ?? "exact_match",
119
+ async evaluate(args) {
120
+ const actual = await resolveActual(options.actual, args);
121
+ const expected = await resolveExpected(options.expected, args);
122
+ if (expected === void 0) {
123
+ return EvalOutcome.invalid("No expected value provided for exact match.");
124
+ }
125
+ const passed = stableComparable(actual) === stableComparable(expected);
126
+ return passed ? EvalOutcome.pass(true) : EvalOutcome.fail(false, { comment: `Expected ${formatValue(expected)}.` });
127
+ }
128
+ };
129
+ }
130
+ function contains(options = {}) {
131
+ return {
132
+ name: options.name ?? "contains",
133
+ async evaluate(args) {
134
+ const actual = await resolveActualText(options.actual, args);
135
+ const expected = await resolveExpected(options.expected, args);
136
+ if (expected === void 0) {
137
+ return EvalOutcome.invalid("No expected value provided for contains.");
138
+ }
139
+ if (typeof expected !== "string" && !(expected instanceof RegExp)) {
140
+ return EvalOutcome.invalid("Contains expected value must be a string or RegExp.");
141
+ }
142
+ const passed = expected instanceof RegExp ? expected.test(actual) : actual.includes(expected);
143
+ return passed ? EvalOutcome.pass(true) : EvalOutcome.fail(false, { comment: `Output did not contain ${String(expected)}.` });
144
+ }
145
+ };
146
+ }
147
+ function semanticSimilarity(options) {
148
+ return {
149
+ name: options.name ?? "semantic_similarity",
150
+ async evaluate(args) {
151
+ const actual = await resolveActualText(options.actual, args);
152
+ const expected = await resolveExpected(options.expected, args);
153
+ if (expected === void 0) {
154
+ return EvalOutcome.invalid("No expected value provided for semantic similarity.");
155
+ }
156
+ if (typeof expected !== "string") {
157
+ return EvalOutcome.invalid("Semantic similarity expected value must be a string.");
158
+ }
159
+ const [actualEmbedding, expectedEmbedding] = await Promise.all([
160
+ embedText(options.model, actual),
161
+ embedText(options.model, expected)
162
+ ]);
163
+ const score = cosineSimilarity(actualEmbedding.vector, expectedEmbedding.vector);
164
+ return score >= options.threshold ? EvalOutcome.pass(score) : EvalOutcome.fail(score, { comment: `Similarity below threshold ${options.threshold}.` });
165
+ }
166
+ };
167
+ }
168
+ function llmJudge(options) {
169
+ const extractor = new ExtractorBuilder(options.model, options.schema).instructions(
170
+ options.instructions ?? "Judge the eval case by the requested schema. Submit the judgment using the schema."
171
+ ).retries(options.retries ?? 0).build();
172
+ return {
173
+ name: options.name ?? "llm_judge",
174
+ async evaluate(args) {
175
+ try {
176
+ const judgment = await extractor.extract(await resolveJudgePrompt(options.prompt, args));
177
+ return options.passes(judgment) ? EvalOutcome.pass(judgment) : EvalOutcome.fail(judgment);
178
+ } catch (error) {
179
+ return EvalOutcome.invalid(errorMessage(error));
180
+ }
181
+ }
182
+ };
183
+ }
184
+ function llmScore(options) {
185
+ const criteria = Array.isArray(options.criteria) ? options.criteria.join("\n") : options.criteria;
186
+ const extractor = new ExtractorBuilder(
187
+ options.model,
188
+ z.object({
189
+ score: z.number(),
190
+ feedback: z.string()
191
+ })
192
+ ).instructions(
193
+ options.instructions ?? `Score the eval case against these criteria:
194
+ ${criteria}
195
+
196
+ Return a score between 0 and 1 and brief feedback.`
197
+ ).retries(options.retries ?? 0).build();
198
+ return {
199
+ name: options.name ?? "llm_score",
200
+ async evaluate(args) {
201
+ try {
202
+ const score = await extractor.extract(await resolveJudgePrompt(options.prompt, args));
203
+ if (score.score < 0 || score.score > 1) {
204
+ return EvalOutcome.invalid(`Score ${score.score} outside valid range [0, 1].`, {
205
+ score
206
+ });
207
+ }
208
+ return score.score >= options.threshold ? EvalOutcome.pass(score, { comment: score.feedback }) : EvalOutcome.fail(score, { comment: score.feedback });
209
+ } catch (error) {
210
+ return EvalOutcome.invalid(errorMessage(error));
211
+ }
212
+ }
213
+ };
214
+ }
215
+
216
+ // src/evals/runner.ts
217
+ async function runEvalSuite(options) {
218
+ const startedAt = Date.now();
219
+ const results = await mapWithConcurrency(
220
+ options.cases,
221
+ Math.max(1, Math.trunc(options.concurrency ?? 1)),
222
+ (testCase) => runEvalCase(options, testCase)
223
+ );
224
+ const counts = countOutcomes(results);
225
+ return {
226
+ name: options.name,
227
+ results,
228
+ ...counts,
229
+ durationMs: Date.now() - startedAt
230
+ };
231
+ }
232
+ async function runEvalCase(options, testCase) {
233
+ let output;
234
+ let targetError;
235
+ try {
236
+ output = await options.target(testCase.input, testCase);
237
+ } catch (error) {
238
+ targetError = error;
239
+ }
240
+ const metrics = [];
241
+ for (const metric of options.metrics) {
242
+ const outcome = targetError === void 0 ? await safeEvaluate(options.name, testCase, output, metric) : EvalOutcome.invalid(`Target failed: ${errorMessage(targetError)}`);
243
+ const reporterErrors = await reportOutcome({
244
+ suiteName: options.name,
245
+ testCase,
246
+ output,
247
+ targetError,
248
+ metric,
249
+ outcome,
250
+ reporters: options.reporters ?? [],
251
+ failOnReporterError: options.failOnReporterError === true
252
+ });
253
+ metrics.push({ metricName: metric.name, outcome, reporterErrors });
254
+ }
255
+ return {
256
+ case: testCase,
257
+ ...output === void 0 ? {} : { output },
258
+ ...targetError === void 0 ? {} : { targetError },
259
+ metrics
260
+ };
261
+ }
262
+ async function safeEvaluate(suiteName, testCase, output, metric) {
263
+ try {
264
+ return await metric.evaluate({ suiteName, case: testCase, output });
265
+ } catch (error) {
266
+ return EvalOutcome.invalid(errorMessage(error));
267
+ }
268
+ }
269
+ async function reportOutcome(args) {
270
+ const errors = [];
271
+ for (const reporter of args.reporters) {
272
+ try {
273
+ await reporter.report({
274
+ suiteName: args.suiteName,
275
+ case: args.testCase,
276
+ output: args.output,
277
+ targetError: args.targetError,
278
+ metric: args.metric,
279
+ outcome: args.outcome
280
+ });
281
+ } catch (error) {
282
+ if (args.failOnReporterError) {
283
+ throw error;
284
+ }
285
+ errors.push(error);
286
+ }
287
+ }
288
+ return errors;
289
+ }
290
+ function countOutcomes(results) {
291
+ let passed = 0;
292
+ let failed = 0;
293
+ let invalid = 0;
294
+ for (const result of results) {
295
+ for (const metric of result.metrics) {
296
+ if (metric.outcome.outcome === "pass") passed += 1;
297
+ if (metric.outcome.outcome === "fail") failed += 1;
298
+ if (metric.outcome.outcome === "invalid") invalid += 1;
299
+ }
300
+ }
301
+ return { passed, failed, invalid };
302
+ }
20
303
  export {
21
304
  EvalOutcome,
22
305
  agentEvalTarget,
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/evals/agent-target.ts","../../src/evals/metrics.ts","../../src/evals/format.ts","../../src/evals/outcome.ts","../../src/evals/selectors.ts","../../src/evals/runner.ts"],"sourcesContent":["import type { Agent } from \"../agent/agent\";\nimport type { PromptResponse } from \"../agent/request\";\nimport type { Message } from \"../completion\";\nimport type { EvalCase, EvalTarget } from \"./types\";\n\nexport type AgentEvalTargetOptions<Input, Output = PromptResponse> = {\n prompt?: ((input: Input, testCase: EvalCase<Input>) => string | Message) | undefined;\n output?: ((response: PromptResponse, testCase: EvalCase<Input>) => Output) | undefined;\n};\n\nexport function agentEvalTarget<Input>(\n agent: Agent,\n options?: AgentEvalTargetOptions<Input, PromptResponse>,\n): EvalTarget<Input, PromptResponse>;\nexport function agentEvalTarget<Input, Output>(\n agent: Agent,\n options: AgentEvalTargetOptions<Input, Output>,\n): EvalTarget<Input, Output>;\nexport function agentEvalTarget<Input, Output>(\n agent: Agent,\n options: AgentEvalTargetOptions<Input, Output | PromptResponse> = {},\n): EvalTarget<Input, Output | PromptResponse> {\n return async (input, testCase) => {\n const prompt = options.prompt?.(input, testCase) ?? String(input);\n const response = await agent.prompt(prompt).send();\n return options.output === undefined ? response : options.output(response, testCase);\n };\n}\n","import { z } from \"zod\";\nimport type { CompletionModel } from \"../completion\";\nimport { cosineSimilarity, type EmbeddingModel, embedText } from \"../embeddings\";\nimport { ExtractorBuilder } from \"../extractor\";\nimport type { ZodSchema } from \"../schema\";\nimport { errorMessage, formatValue, stableComparable } from \"./format\";\nimport { EvalOutcome } from \"./outcome\";\nimport { resolveActual, resolveActualText, resolveExpected, resolveJudgePrompt } from \"./selectors\";\nimport type { EvalMetric, SelectorOrValue, ValueSelector } from \"./types\";\n\nexport type ExactMatchOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n actual?: ValueSelector<Input, Output, Expected, unknown> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, unknown> | undefined;\n};\n\nexport function exactMatch<Input, Output, Expected = unknown>(\n options: ExactMatchOptions<Input, Output, Expected> = {},\n): EvalMetric<Input, Output, boolean, Expected> {\n return {\n name: options.name ?? \"exact_match\",\n async evaluate(args) {\n const actual = await resolveActual(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (expected === undefined) {\n return EvalOutcome.invalid(\"No expected value provided for exact match.\");\n }\n const passed = stableComparable(actual) === stableComparable(expected);\n return passed\n ? EvalOutcome.pass(true)\n : EvalOutcome.fail(false, { comment: `Expected ${formatValue(expected)}.` });\n },\n };\n}\n\nexport type ContainsOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n actual?: ValueSelector<Input, Output, Expected, string> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, string | RegExp> | undefined;\n};\n\nexport function contains<Input, Output, Expected = unknown>(\n options: ContainsOptions<Input, Output, Expected> = {},\n): EvalMetric<Input, Output, boolean, Expected> {\n return {\n name: options.name ?? \"contains\",\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (expected === undefined) {\n return EvalOutcome.invalid(\"No expected value provided for contains.\");\n }\n if (typeof expected !== \"string\" && !(expected instanceof RegExp)) {\n return EvalOutcome.invalid(\"Contains expected value must be a string or RegExp.\");\n }\n const passed = expected instanceof RegExp ? expected.test(actual) : actual.includes(expected);\n return passed\n ? EvalOutcome.pass(true)\n : EvalOutcome.fail(false, { comment: `Output did not contain ${String(expected)}.` });\n },\n };\n}\n\nexport type SemanticSimilarityOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n model: EmbeddingModel;\n threshold: number;\n actual?: ValueSelector<Input, Output, Expected, string> | undefined;\n expected?: SelectorOrValue<Input, Output, Expected, string> | undefined;\n};\n\nexport function semanticSimilarity<Input, Output, Expected = unknown>(\n options: SemanticSimilarityOptions<Input, Output, Expected>,\n): EvalMetric<Input, Output, number, Expected> {\n return {\n name: options.name ?? \"semantic_similarity\",\n async evaluate(args) {\n const actual = await resolveActualText(options.actual, args);\n const expected = await resolveExpected(options.expected, args);\n if (expected === undefined) {\n return EvalOutcome.invalid(\"No expected value provided for semantic similarity.\");\n }\n if (typeof expected !== \"string\") {\n return EvalOutcome.invalid(\"Semantic similarity expected value must be a string.\");\n }\n const [actualEmbedding, expectedEmbedding] = await Promise.all([\n embedText(options.model, actual),\n embedText(options.model, expected),\n ]);\n const score = cosineSimilarity(actualEmbedding.vector, expectedEmbedding.vector);\n return score >= options.threshold\n ? EvalOutcome.pass(score)\n : EvalOutcome.fail(score, { comment: `Similarity below threshold ${options.threshold}.` });\n },\n };\n}\n\nexport type LlmJudgeOptions<Input, Output, SchemaOutput, Expected = unknown> = {\n name?: string | undefined;\n model: CompletionModel;\n schema: ZodSchema<SchemaOutput>;\n passes(value: SchemaOutput): boolean;\n instructions?: string | undefined;\n retries?: number | undefined;\n prompt?: ValueSelector<Input, Output, Expected, string> | undefined;\n};\n\nexport function llmJudge<Input, Output, SchemaOutput, Expected = unknown>(\n options: LlmJudgeOptions<Input, Output, SchemaOutput, Expected>,\n): EvalMetric<Input, Output, SchemaOutput, Expected> {\n const extractor = new ExtractorBuilder(options.model, options.schema)\n .instructions(\n options.instructions ??\n \"Judge the eval case by the requested schema. Submit the judgment using the schema.\",\n )\n .retries(options.retries ?? 0)\n .build();\n\n return {\n name: options.name ?? \"llm_judge\",\n async evaluate(args) {\n try {\n const judgment = await extractor.extract(await resolveJudgePrompt(options.prompt, args));\n return options.passes(judgment) ? EvalOutcome.pass(judgment) : EvalOutcome.fail(judgment);\n } catch (error) {\n return EvalOutcome.invalid(errorMessage(error));\n }\n },\n };\n}\n\nexport type LlmScoreMetricScore = {\n score: number;\n feedback: string;\n};\n\nexport type LlmScoreOptions<Input, Output, Expected = unknown> = {\n name?: string | undefined;\n model: CompletionModel;\n threshold: number;\n criteria: string | string[];\n instructions?: string | undefined;\n retries?: number | undefined;\n prompt?: ValueSelector<Input, Output, Expected, string> | undefined;\n};\n\nexport function llmScore<Input, Output, Expected = unknown>(\n options: LlmScoreOptions<Input, Output, Expected>,\n): EvalMetric<Input, Output, LlmScoreMetricScore, Expected> {\n const criteria = Array.isArray(options.criteria) ? options.criteria.join(\"\\n\") : options.criteria;\n const extractor = new ExtractorBuilder(\n options.model,\n z.object({\n score: z.number(),\n feedback: z.string(),\n }),\n )\n .instructions(\n options.instructions ??\n `Score the eval case against these criteria:\\n${criteria}\\n\\nReturn a score between 0 and 1 and brief feedback.`,\n )\n .retries(options.retries ?? 0)\n .build();\n\n return {\n name: options.name ?? \"llm_score\",\n async evaluate(args) {\n try {\n const score = await extractor.extract(await resolveJudgePrompt(options.prompt, args));\n if (score.score < 0 || score.score > 1) {\n return EvalOutcome.invalid(`Score ${score.score} outside valid range [0, 1].`, {\n score,\n });\n }\n return score.score >= options.threshold\n ? EvalOutcome.pass(score, { comment: score.feedback })\n : EvalOutcome.fail(score, { comment: score.feedback });\n } catch (error) {\n return EvalOutcome.invalid(errorMessage(error));\n }\n },\n };\n}\n","export function defaultOutputValue(output: unknown): unknown {\n if (\n typeof output === \"object\" &&\n output !== null &&\n \"output\" in output &&\n typeof (output as { output?: unknown }).output === \"string\"\n ) {\n return (output as { output: string }).output;\n }\n return output;\n}\n\nexport function stableComparable(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n return JSON.stringify(value);\n}\n\nexport function formatValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nexport function errorMessage(error: unknown): string {\n return error instanceof Error ? error.message : String(error);\n}\n","import type { EvalMetadata } from \"./types\";\n\nexport type EvalOutcome<Score = unknown> =\n | {\n outcome: \"pass\";\n score?: Score | undefined;\n comment?: string | undefined;\n metadata?: EvalMetadata | undefined;\n }\n | {\n outcome: \"fail\";\n score?: Score | undefined;\n comment?: string | undefined;\n metadata?: EvalMetadata | undefined;\n }\n | {\n outcome: \"invalid\";\n reason: string;\n score?: Score | undefined;\n comment?: string | undefined;\n metadata?: EvalMetadata | undefined;\n };\n\nexport const EvalOutcome = {\n pass<Score>(\n score?: Score,\n options: { comment?: string | undefined; metadata?: EvalMetadata | undefined } = {},\n ): EvalOutcome<Score> {\n return {\n outcome: \"pass\",\n ...(score === undefined ? {} : { score }),\n ...(options.comment === undefined ? {} : { comment: options.comment }),\n ...(options.metadata === undefined ? {} : { metadata: options.metadata }),\n };\n },\n\n fail<Score>(\n score?: Score,\n options: { comment?: string | undefined; metadata?: EvalMetadata | undefined } = {},\n ): EvalOutcome<Score> {\n return {\n outcome: \"fail\",\n ...(score === undefined ? {} : { score }),\n ...(options.comment === undefined ? {} : { comment: options.comment }),\n ...(options.metadata === undefined ? {} : { metadata: options.metadata }),\n };\n },\n\n invalid<Score = never>(\n reason: string,\n options: {\n score?: Score | undefined;\n comment?: string | undefined;\n metadata?: EvalMetadata | undefined;\n } = {},\n ): EvalOutcome<Score> {\n return {\n outcome: \"invalid\",\n reason,\n ...(options.score === undefined ? {} : { score: options.score }),\n ...(options.comment === undefined ? {} : { comment: options.comment }),\n ...(options.metadata === undefined ? {} : { metadata: options.metadata }),\n };\n },\n};\n","import { defaultOutputValue, formatValue } from \"./format\";\nimport type { EvalMetricArgs, SelectorOrValue, ValueSelector } from \"./types\";\n\nexport async function resolveActual<Input, Output, Expected>(\n selector: ValueSelector<Input, Output, Expected, unknown> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<unknown> {\n return selector === undefined ? defaultOutputValue(args.output) : selector(args);\n}\n\nexport async function resolveActualText<Input, Output, Expected>(\n selector: ValueSelector<Input, Output, Expected, string> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<string> {\n const value = selector === undefined ? defaultOutputValue(args.output) : await selector(args);\n return typeof value === \"string\" ? value : JSON.stringify(value);\n}\n\nexport async function resolveExpected<Input, Output, Expected, Value>(\n selectorOrValue: SelectorOrValue<Input, Output, Expected, Value> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<Value | Expected | undefined> {\n if (selectorOrValue === undefined) {\n return args.case.expected;\n }\n return typeof selectorOrValue === \"function\"\n ? (selectorOrValue as ValueSelector<Input, Output, Expected, Value>)(args)\n : selectorOrValue;\n}\n\nexport async function resolveJudgePrompt<Input, Output, Expected>(\n selector: ValueSelector<Input, Output, Expected, string> | undefined,\n args: EvalMetricArgs<Input, Output, Expected>,\n): Promise<string> {\n if (selector !== undefined) {\n return selector(args);\n }\n return [\n `Suite: ${args.suiteName}`,\n `Case: ${args.case.id}`,\n `Input: ${formatValue(args.case.input)}`,\n `Expected: ${formatValue(args.case.expected)}`,\n `Output: ${formatValue(defaultOutputValue(args.output))}`,\n ].join(\"\\n\\n\");\n}\n","import { mapWithConcurrency } from \"../internal/concurrency\";\nimport { errorMessage } from \"./format\";\nimport { EvalOutcome, type EvalOutcome as EvalOutcomeType } from \"./outcome\";\nimport type {\n EvalCase,\n EvalCaseResult,\n EvalMetric,\n EvalMetricResult,\n EvalReporter,\n EvalSuiteResult,\n RunEvalSuiteOptions,\n} from \"./types\";\n\nexport async function runEvalSuite<Input, Output, Expected = unknown>(\n options: RunEvalSuiteOptions<Input, Output, Expected>,\n): Promise<EvalSuiteResult<Input, Output, Expected>> {\n const startedAt = Date.now();\n const results = await mapWithConcurrency(\n options.cases,\n Math.max(1, Math.trunc(options.concurrency ?? 1)),\n (testCase) => runEvalCase(options, testCase),\n );\n const counts = countOutcomes(results);\n return {\n name: options.name,\n results,\n ...counts,\n durationMs: Date.now() - startedAt,\n };\n}\n\nasync function runEvalCase<Input, Output, Expected>(\n options: RunEvalSuiteOptions<Input, Output, Expected>,\n testCase: EvalCase<Input, Expected>,\n): Promise<EvalCaseResult<Input, Output, Expected>> {\n let output: Output | undefined;\n let targetError: unknown;\n try {\n output = await options.target(testCase.input, testCase);\n } catch (error) {\n targetError = error;\n }\n\n const metrics: EvalMetricResult[] = [];\n for (const metric of options.metrics) {\n const outcome =\n targetError === undefined\n ? await safeEvaluate(options.name, testCase, output as Output, metric)\n : EvalOutcome.invalid(`Target failed: ${errorMessage(targetError)}`);\n const reporterErrors = await reportOutcome({\n suiteName: options.name,\n testCase,\n output,\n targetError,\n metric,\n outcome,\n reporters: options.reporters ?? [],\n failOnReporterError: options.failOnReporterError === true,\n });\n metrics.push({ metricName: metric.name, outcome, reporterErrors });\n }\n\n return {\n case: testCase,\n ...(output === undefined ? {} : { output }),\n ...(targetError === undefined ? {} : { targetError }),\n metrics,\n };\n}\n\nasync function safeEvaluate<Input, Output, Expected>(\n suiteName: string,\n testCase: EvalCase<Input, Expected>,\n output: Output,\n metric: EvalMetric<Input, Output, unknown, Expected>,\n): Promise<EvalOutcomeType> {\n try {\n return await metric.evaluate({ suiteName, case: testCase, output });\n } catch (error) {\n return EvalOutcome.invalid(errorMessage(error));\n }\n}\n\nasync function reportOutcome<Input, Output, Expected>(args: {\n suiteName: string;\n testCase: EvalCase<Input, Expected>;\n output: Output | undefined;\n targetError: unknown;\n metric: EvalMetric<Input, Output, unknown, Expected>;\n outcome: EvalOutcomeType;\n reporters: Array<EvalReporter<Input, Output, Expected>>;\n failOnReporterError: boolean;\n}): Promise<unknown[]> {\n const errors: unknown[] = [];\n for (const reporter of args.reporters) {\n try {\n await reporter.report({\n suiteName: args.suiteName,\n case: args.testCase,\n output: args.output,\n targetError: args.targetError,\n metric: args.metric,\n outcome: args.outcome,\n });\n } catch (error) {\n if (args.failOnReporterError) {\n throw error;\n }\n errors.push(error);\n }\n }\n return errors;\n}\n\nfunction countOutcomes(results: Array<EvalCaseResult<unknown, unknown, unknown>>): {\n passed: number;\n failed: number;\n invalid: number;\n} {\n let passed = 0;\n let failed = 0;\n let invalid = 0;\n for (const result of results) {\n for (const metric of result.metrics) {\n if (metric.outcome.outcome === \"pass\") passed += 1;\n if (metric.outcome.outcome === \"fail\") failed += 1;\n if (metric.outcome.outcome === \"invalid\") invalid += 1;\n }\n }\n return { passed, failed, invalid };\n}\n"],"mappings":"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","names":[]}
@@ -1,11 +1,12 @@
1
- import { U as Usage, M as Message, b as CompletionModel, j as JsonValue, o as ToolChoice } from '../types-BM8-Y8Hy.js';
2
- import { A as Agent } from '../agent-D_jXqPAZ.js';
3
- import { Z as ZodSchema } from '../middleware-2FR89muX.js';
1
+ import { e as Agent } from '../agent-B-ls5y_g.js';
2
+ import { U as Usage, M as Message, C as CompletionModel, e as JsonValue, m as ToolChoice } from '../types-C54aNoCd.js';
3
+ import { Z as ZodSchema } from '../zod-schema-C7F4clpm.js';
4
4
  import '../memory/index.js';
5
5
  import '../observability/index.js';
6
- import '../tool-ClZYES-Z.js';
6
+ import '../tool-C3ciF-VG.js';
7
+ import '../middleware-CGiEIaBx.js';
8
+ import '../types-IB2e9u5M.js';
7
9
  import '../vector-store/index.js';
8
- import '../embeddings/index.js';
9
10
  import 'zod';
10
11
 
11
12
  type ExtractionResponse<T> = {
@@ -2,15 +2,17 @@ import {
2
2
  ExtractionError,
3
3
  Extractor,
4
4
  ExtractorBuilder
5
- } from "../chunk-QRZ2HPUX.js";
6
- import "../chunk-GSFQZYS7.js";
5
+ } from "../chunk-4PHDOEKY.js";
6
+ import "../chunk-BD66WU2B.js";
7
+ import "../chunk-TVIADATY.js";
8
+ import "../chunk-XUUY2L2D.js";
7
9
  import "../chunk-XXT2UCAR.js";
8
10
  import "../chunk-YK4WAAS4.js";
9
- import "../chunk-I2HOMD3R.js";
10
- import "../chunk-65QV627O.js";
11
- import "../chunk-XUUY2L2D.js";
11
+ import "../chunk-CY7SB5FG.js";
12
+ import "../chunk-OIA4CN5V.js";
12
13
  import "../chunk-6GJDBBDC.js";
13
- import "../chunk-A7VDIZQN.js";
14
+ import "../chunk-EFGX3EX5.js";
15
+ import "../chunk-OIMLU4SF.js";
14
16
  export {
15
17
  ExtractionError,
16
18
  Extractor,
@@ -1,4 +1,4 @@
1
- import { j as JsonValue } from '../types-BM8-Y8Hy.js';
1
+ import { e as JsonValue } from '../types-C54aNoCd.js';
2
2
 
3
3
  type ImageGenerationRequest = {
4
4
  prompt: string;
@@ -1,7 +1,40 @@
1
- import {
2
- ImageGenerationRequestBuilder,
3
- imageGenerationRequest
4
- } from "../chunk-B24Q2ZYM.js";
1
+ // src/image-generation/index.ts
2
+ var ImageGenerationRequestBuilder = class {
3
+ constructor(model) {
4
+ this.model = model;
5
+ }
6
+ model;
7
+ request = {
8
+ prompt: "",
9
+ width: 1024,
10
+ height: 1024
11
+ };
12
+ prompt(prompt) {
13
+ this.request = { ...this.request, prompt };
14
+ return this;
15
+ }
16
+ width(width) {
17
+ this.request = { ...this.request, width };
18
+ return this;
19
+ }
20
+ height(height) {
21
+ this.request = { ...this.request, height };
22
+ return this;
23
+ }
24
+ additionalParams(additionalParams) {
25
+ this.request = { ...this.request, additionalParams };
26
+ return this;
27
+ }
28
+ build() {
29
+ return { ...this.request };
30
+ }
31
+ send() {
32
+ return this.model.imageGeneration(this.build());
33
+ }
34
+ };
35
+ function imageGenerationRequest(model) {
36
+ return new ImageGenerationRequestBuilder(model);
37
+ }
5
38
  export {
6
39
  ImageGenerationRequestBuilder,
7
40
  imageGenerationRequest
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../src/image-generation/index.ts"],"sourcesContent":["import type { JsonValue } from \"../completion\";\n\nexport type ImageGenerationRequest = {\n prompt: string;\n width: number;\n height: number;\n additionalParams?: JsonValue | undefined;\n};\n\nexport type GeneratedImage = {\n data: Uint8Array;\n mediaType?: string | undefined;\n};\n\nexport type ImageGenerationResponse<RawResponse = unknown> = {\n image: Uint8Array;\n images: GeneratedImage[];\n mediaType?: string | undefined;\n rawResponse: RawResponse;\n};\n\nexport interface ImageGenerationModel<RawResponse = unknown> {\n readonly provider?: string | undefined;\n readonly defaultModel?: string | undefined;\n imageGeneration(request: ImageGenerationRequest): Promise<ImageGenerationResponse<RawResponse>>;\n}\n\nexport class ImageGenerationRequestBuilder<\n Model extends ImageGenerationModel = ImageGenerationModel,\n> {\n private request: ImageGenerationRequest = {\n prompt: \"\",\n width: 1024,\n height: 1024,\n };\n\n constructor(private readonly model: Model) {}\n\n prompt(prompt: string): this {\n this.request = { ...this.request, prompt };\n return this;\n }\n\n width(width: number): this {\n this.request = { ...this.request, width };\n return this;\n }\n\n height(height: number): this {\n this.request = { ...this.request, height };\n return this;\n }\n\n additionalParams(additionalParams: JsonValue): this {\n this.request = { ...this.request, additionalParams };\n return this;\n }\n\n build(): ImageGenerationRequest {\n return { ...this.request };\n }\n\n send(): Promise<Awaited<ReturnType<Model[\"imageGeneration\"]>>> {\n return this.model.imageGeneration(this.build()) as Promise<\n Awaited<ReturnType<Model[\"imageGeneration\"]>>\n >;\n }\n}\n\nexport function imageGenerationRequest<Model extends ImageGenerationModel>(\n model: Model,\n): ImageGenerationRequestBuilder<Model> {\n return new ImageGenerationRequestBuilder(model);\n}\n"],"mappings":";AA2BO,IAAM,gCAAN,MAEL;AAAA,EAOA,YAA6B,OAAc;AAAd;AAAA,EAAe;AAAA,EAAf;AAAA,EANrB,UAAkC;AAAA,IACxC,QAAQ;AAAA,IACR,OAAO;AAAA,IACP,QAAQ;AAAA,EACV;AAAA,EAIA,OAAO,QAAsB;AAC3B,SAAK,UAAU,EAAE,GAAG,KAAK,SAAS,OAAO;AACzC,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,OAAqB;AACzB,SAAK,UAAU,EAAE,GAAG,KAAK,SAAS,MAAM;AACxC,WAAO;AAAA,EACT;AAAA,EAEA,OAAO,QAAsB;AAC3B,SAAK,UAAU,EAAE,GAAG,KAAK,SAAS,OAAO;AACzC,WAAO;AAAA,EACT;AAAA,EAEA,iBAAiB,kBAAmC;AAClD,SAAK,UAAU,EAAE,GAAG,KAAK,SAAS,iBAAiB;AACnD,WAAO;AAAA,EACT;AAAA,EAEA,QAAgC;AAC9B,WAAO,EAAE,GAAG,KAAK,QAAQ;AAAA,EAC3B;AAAA,EAEA,OAA+D;AAC7D,WAAO,KAAK,MAAM,gBAAgB,KAAK,MAAM,CAAC;AAAA,EAGhD;AACF;AAEO,SAAS,uBACd,OACsC;AACtC,SAAO,IAAI,8BAA8B,KAAK;AAChD;","names":[]}
package/dist/index.d.ts CHANGED
@@ -1,27 +1,18 @@
1
- export { MemoryAppendInput, MemoryContext, MemoryErrorInput, MemoryOptions, MemoryRegistration, MemorySavePolicy, MemoryStore, ResolvedMemoryOptions, SessionOptions, resolveMemoryOptions } from './memory/index.js';
2
- export { A as Agent, a as AgentChildStreamEvent, b as AgentEventAppendInput, c as AgentEventRecord, d as AgentEventStore, e as AgentEventStoreInclude, f as AgentEventStoreOptions, g as AgentEventStoreRegistration, h as AgentOptions, i as AgentSession, j as AgentStreamEvent, k as AgentToolOptions, C as CompletionCallHookArgs, l as CompletionResponseHookArgs, D as DEFAULT_MAX_TURNS, m as DynamicContextOptions, n as DynamicContextRegistration, o as DynamicToolOptions, p as DynamicToolRegistration, H as HookAction, q as HookResult, P as PromptHook, r as PromptRequest, s as PromptResponse, R as RunControl, T as ToolApprovalRequestOptions, t as ToolCallControl, u as ToolCallHookAction, v as ToolCallHookArgs, w as ToolCallHookResult, x as ToolHookArgs, y as ToolResultHookArgs, z as cancelPrompt, B as createHook, E as requestToolApproval, F as runControl, G as skipTool, I as toolCallControl } from './agent-D_jXqPAZ.js';
3
1
  export { AgentBuilder, MaxTurnsError, PromptCancelledError } from './agent/index.js';
4
- export { AudioGenerationModel, AudioGenerationRequest, AudioGenerationRequestBuilder, AudioGenerationResponse, audioGenerationRequest } from './audio-generation/index.js';
5
- export { CompletionRequestBuilder, formatDocument, normalizeDocuments } from './completion/index.js';
6
- export { A as AssistantContent, a as AssistantMessage, C as CompletionCapabilityError, b as CompletionModel, c as CompletionModelCapabilities, d as CompletionRequest, e as CompletionResponse, f as CompletionStreamEvent, D as Document, g as DocumentContent, I as ImageContent, h as ImageDetail, J as JsonObject, i as JsonPrimitive, j as JsonValue, M as Message, R as Reasoning, k as ReasoningContent, l as ReasoningContentType, S as StreamingCompletionModel, m as SystemMessage, T as Text, n as ToolCall, o as ToolChoice, p as ToolContent, q as ToolDefinition, r as ToolFunction, s as ToolMessage, t as ToolResult, u as ToolResultContent, U as Usage, v as UserContent, w as UserMessage, x as assertCompletionRequestSupported, y as reasoningDisplayText, z as textFromAssistantContent } from './types-BM8-Y8Hy.js';
7
- export { EmbedDocumentsOptions, EmbeddedDocument, Embedding, EmbeddingModel, VectorMetadata, VectorMetadataValue, angularDistance, chebyshevDistance, cosineSimilarity, dotProduct, embedDocuments, embedText, embedTexts, euclideanDistance, manhattanDistance } from './embeddings/index.js';
8
- export { AgentEvalTargetOptions, ContainsOptions, EvalCase, EvalCaseResult, EvalMetadata, EvalMetric, EvalMetricArgs, EvalMetricResult, EvalOutcome, EvalOutcomeStatus, EvalReportArgs, EvalReporter, EvalSuiteResult, EvalTarget, ExactMatchOptions, LlmJudgeOptions, LlmScoreMetricScore, LlmScoreOptions, RunEvalSuiteOptions, SelectorOrValue, SemanticSimilarityOptions, ValueSelector, agentEvalTarget, contains, exactMatch, llmJudge, llmScore, runEvalSuite, semanticSimilarity } from './evals/index.js';
9
- export { ExtractionError, ExtractionResponse, Extractor, ExtractorBuilder } from './extractor/index.js';
10
- export { GeneratedImage, ImageGenerationModel, ImageGenerationRequest, ImageGenerationRequestBuilder, ImageGenerationResponse, imageGenerationRequest } from './image-generation/index.js';
11
- export { connectMcp, mcp } from './mcp/index.js';
12
- export { M as McpClient, a as McpConnection, b as McpHttpOptions, c as McpServer, d as McpSseOptions, e as McpStdioOptions, f as McpToolCallContent, g as McpToolCallResult, h as McpToolDefinition } from './types-fLi8uM5R.js';
13
- export { ListedModel, ModelList, ModelListingClient, ModelListingError } from './model-listing/index.js';
14
- export { AgentGenerationEndArgs, AgentGenerationErrorArgs, AgentGenerationObserver, AgentGenerationStartArgs, AgentObserver, AgentObserverRegistration, AgentRunEndArgs, AgentRunErrorArgs, AgentRunObserver, AgentRunStartArgs, AgentToolEndArgs, AgentToolErrorArgs, AgentToolObserver, AgentToolStartArgs, AgentToolStreamEventArgs, AgentTraceInfo, AgentTraceOptions, ObserveOptions, createObserver } from './observability/index.js';
15
- export { Pipeline, PipelineBatchOptions, PipelineBuilder, PipelineGraph, PipelineGraphEdge, PipelineGraphNode, PipelineMetadata, PipelineOp, PipelineRunEvent, PipelineRunObserver, PipelineRunOptions, PipelineStageKind, PipelineStageMetadata } from './pipeline/index.js';
16
- export { D as DynamicToolIndex, E as EmbedToolsOptions, T as ToolMiddleware, a as ToolResultMiddlewareArgs, b as ToolSearchDocument, c as ToolSet, Z as ZodSchema, d as createToolIndex, e as createToolMiddleware, f as embedTools, i as isDynamicToolIndex } from './middleware-2FR89muX.js';
2
+ export { A as AgentChildStreamEvent, a as AgentStreamEvent, P as PromptResponse, 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
+ export { A as AssistantContent, a as AssistantMessage, C as CompletionModel, b as CompletionRequest, c as CompletionResponse, D as Document, I as ImageContent, J as JsonObject, d as JsonPrimitive, e as JsonValue, M as Message, S as SystemMessage, T as Text, f as ToolCall, g as ToolDefinition, h as ToolMessage, i as ToolResult, j as ToolResultContent, U as Usage, k as UserContent, l as UserMessage } from './types-C54aNoCd.js';
4
+ export { MemoryStore } from './memory/index.js';
5
+ export { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
17
6
  export { loadSkills, skill } from './skills/index.js';
18
- export { S as Skill, a as SkillLoader, b as SkillSet, c as SkillValidationError, d as SkillValidationIssue } from './types-B0iXLkqi.js';
19
- export { ReadableStreamOptions, toReadableStream } from './streaming/index.js';
20
- export { CreateThinkToolOptions, CreateToolOptions, ToolCallError, ToolJsonError, ToolNotFoundError, createThinkTool, createTool } from './tool/index.js';
21
- export { A as AnyTool, N as NormalizedToolOutput, T as Tool, a as ToolApprovalContext, b as ToolApprovalPolicy, c as ToolApprovalRunContext, d as ToolCallContext, e as ToolCallStreamEvent, f as ToolOutput, i as isToolResultContentArray, n as normalizeToolResultOutput, p as parseToolArgs, s as serializeToolOutput, t as toolResultContentToText } from './tool-ClZYES-Z.js';
22
- export { TranscriptionModel, TranscriptionRequest, TranscriptionRequestBuilder, TranscriptionResponse, transcriptionRequest } from './transcription/index.js';
23
- export { InMemoryVectorIndex, InMemoryVectorStore, IndexStrategy, VectorFilter, VectorInspectItem, VectorInspectPage, VectorInspectRequest, VectorSearchIndex, VectorSearchRequest, VectorSearchResult, VectorSearchToolOptions, createVectorSearchTool, vectorFilter } from './vector-store/index.js';
7
+ export { S as SkillValidationError } from './types-T9rlOIUc.js';
8
+ export { C as CreateToolOptions, c as createThinkTool, a as createTool } from './think-tool-ByArsrxe.js';
9
+ export { A as AnyTool, T as Tool, a as ToolApprovalContext, b as ToolApprovalPolicy, c as ToolCallContext, d as ToolCallStreamEvent } from './tool-C3ciF-VG.js';
10
+ import './types-UhcgW8Fo.js';
24
11
  import '@modelcontextprotocol/sdk/client/sse.js';
25
12
  import '@modelcontextprotocol/sdk/client/stdio.js';
26
13
  import '@modelcontextprotocol/sdk/client/streamableHttp.js';
14
+ import './observability/index.js';
15
+ import './middleware-CGiEIaBx.js';
16
+ import './types-IB2e9u5M.js';
17
+ import './vector-store/index.js';
27
18
  import 'zod';