@anvia/core 1.2.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/README.md +16 -0
  2. package/dist/agent/agent-tool.js +6 -4
  3. package/dist/agent/agent.js +23 -21
  4. package/dist/agent/index.d.ts +4 -4
  5. package/dist/agent/index.js +28 -26
  6. package/dist/agent/resolve-options.js +10 -10
  7. package/dist/agent/resolved-agent.js +24 -22
  8. package/dist/agent/team/agent-team.js +28 -26
  9. package/dist/agent/team/index.js +28 -26
  10. package/dist/agent/tool-catalog.js +10 -10
  11. package/dist/{chunk-VCMBQTR4.js → chunk-4BDSO4PQ.js} +2 -2
  12. package/dist/{chunk-LMZ54UNC.js → chunk-4VDDYI6P.js} +4 -4
  13. package/dist/{chunk-63DUKYEG.js → chunk-5SJBSCG2.js} +2 -2
  14. package/dist/chunk-6OO5C5GW.js +32 -0
  15. package/dist/chunk-6OO5C5GW.js.map +1 -0
  16. package/dist/{chunk-3P65RSBB.js → chunk-7TUAAGVR.js} +2 -2
  17. package/dist/{chunk-4PGI5HYY.js → chunk-A3DGCDGF.js} +7 -7
  18. package/dist/{chunk-P6IEZWI3.js → chunk-B57NNDEF.js} +8 -8
  19. package/dist/{chunk-5TMN4MYN.js → chunk-CJKGTEN4.js} +2 -2
  20. package/dist/{chunk-AS7A2LU5.js → chunk-E44DRLUL.js} +2 -2
  21. package/dist/{chunk-KSXA7YK7.js → chunk-GE46NHN4.js} +2 -2
  22. package/dist/{chunk-VQTSZ4ZW.js → chunk-IYDGPF3C.js} +3 -3
  23. package/dist/{chunk-RGYVR4FE.js → chunk-JMNIWUFV.js} +3 -3
  24. package/dist/{chunk-5REZFNZ3.js → chunk-JWD43K7W.js} +2 -2
  25. package/dist/{chunk-KSVFGXS6.js → chunk-KNZNSNP4.js} +2 -2
  26. package/dist/{chunk-BVAQJOZX.js → chunk-KRUDSNFN.js} +9 -9
  27. package/dist/{chunk-5HFXHKDD.js → chunk-LJGQ6VQB.js} +2 -2
  28. package/dist/chunk-NMPDZTBM.js +1 -0
  29. package/dist/chunk-NMPDZTBM.js.map +1 -0
  30. package/dist/{chunk-VU6YTPPH.js → chunk-OYHU4HNC.js} +2 -2
  31. package/dist/{chunk-5KS4SG2U.js → chunk-QHGYCYV6.js} +4 -4
  32. package/dist/{chunk-N2AQUFGO.js → chunk-RFFOL6ON.js} +2 -2
  33. package/dist/{chunk-ICDPUAKN.js → chunk-T3ZOZEAB.js} +2 -2
  34. package/dist/{chunk-NSWBPKWH.js → chunk-T4UW4SUK.js} +3 -3
  35. package/dist/{chunk-VPTAGK7G.js → chunk-V5DWNXVH.js} +2 -2
  36. package/dist/{chunk-3EX524LK.js → chunk-VKRGWGA4.js} +8 -8
  37. package/dist/{chunk-NA44V5OE.js → chunk-WCWSPU74.js} +2 -2
  38. package/dist/{chunk-WUZG6B3Q.js → chunk-Y365ABZY.js} +4 -4
  39. package/dist/{chunk-BD2USPK5.js → chunk-YMTBHHLQ.js} +61 -12
  40. package/dist/chunk-YMTBHHLQ.js.map +1 -0
  41. package/dist/chunk-YOLOFTAY.js +144 -0
  42. package/dist/chunk-YOLOFTAY.js.map +1 -0
  43. package/dist/{chunk-HAVSSHOW.js → chunk-ZGDUEOSH.js} +2 -2
  44. package/dist/completion/generate-completion.js +3 -1
  45. package/dist/completion/index.d.ts +1 -2
  46. package/dist/completion/index.js +3 -1
  47. package/dist/embeddings/index.js +1 -1
  48. package/dist/evals/advanced-metrics.js +6 -4
  49. package/dist/evals/cli.js +3 -1
  50. package/dist/evals/index.js +8 -6
  51. package/dist/evals/judge.js +5 -3
  52. package/dist/evals/metrics.js +6 -4
  53. package/dist/evals/runner.js +3 -1
  54. package/dist/extractor/extractor.js +4 -2
  55. package/dist/extractor/index.js +4 -2
  56. package/dist/index.d.ts +2 -2
  57. package/dist/index.js +42 -36
  58. package/dist/internal/agent-runtime/agent-run.js +19 -17
  59. package/dist/internal/agent-runtime/continuation-state.js +3 -1
  60. package/dist/internal/agent-runtime/interaction-suspension.js +3 -1
  61. package/dist/internal/agent-runtime/memory.js +5 -3
  62. package/dist/internal/agent-runtime/retrieval.js +8 -8
  63. package/dist/internal/agent-runtime/tool-execution.js +16 -14
  64. package/dist/internal/agent.d.ts +3 -3
  65. package/dist/internal/agent.js +24 -22
  66. package/dist/internal/team-runtime/member.js +3 -1
  67. package/dist/internal/team-runtime/run.js +26 -24
  68. package/dist/internal/team-runtime/tools.js +3 -3
  69. package/dist/memory/compaction.js +4 -2
  70. package/dist/memory/index.js +4 -2
  71. package/dist/observability/group.js +3 -1
  72. package/dist/observability/index.js +3 -1
  73. package/dist/pipeline/index.d.ts +2 -2
  74. package/dist/pipeline/index.js +5 -3
  75. package/dist/pipeline/pipeline.js +5 -3
  76. package/dist/provider-output-error-CQD0MWey.d.ts +221 -0
  77. package/dist/schema/index.js +7 -0
  78. package/dist/schema/standard-json-schema.js +10 -0
  79. package/dist/schema/standard-json-schema.js.map +1 -0
  80. package/dist/schema/standard-schema.js +11 -0
  81. package/dist/schema/standard-schema.js.map +1 -0
  82. package/dist/skills/index.js +15 -15
  83. package/dist/skills/load.js +14 -14
  84. package/dist/skills/tools.js +13 -13
  85. package/dist/tool/create-tool.js +2 -2
  86. package/dist/tool/dynamic-tools.js +9 -9
  87. package/dist/tool/index.js +14 -14
  88. package/dist/tool/question-tool.js +3 -3
  89. package/dist/tool/think-tool.js +3 -3
  90. package/dist/vector-store/index.js +11 -11
  91. package/dist/vector-store/ingest.js +5 -5
  92. package/dist/vector-store/retrieve.js +1 -1
  93. package/package.json +9 -1
  94. package/dist/chunk-BD2USPK5.js.map +0 -1
  95. package/dist/provider-output-error-CMVoe1xT.d.ts +0 -107
  96. package/dist/{agent-CUZdf9G0.d.ts → agent-D3iyrJQb.d.ts} +1 -1
  97. /package/dist/{chunk-VCMBQTR4.js.map → chunk-4BDSO4PQ.js.map} +0 -0
  98. /package/dist/{chunk-LMZ54UNC.js.map → chunk-4VDDYI6P.js.map} +0 -0
  99. /package/dist/{chunk-63DUKYEG.js.map → chunk-5SJBSCG2.js.map} +0 -0
  100. /package/dist/{chunk-3P65RSBB.js.map → chunk-7TUAAGVR.js.map} +0 -0
  101. /package/dist/{chunk-4PGI5HYY.js.map → chunk-A3DGCDGF.js.map} +0 -0
  102. /package/dist/{chunk-P6IEZWI3.js.map → chunk-B57NNDEF.js.map} +0 -0
  103. /package/dist/{chunk-5TMN4MYN.js.map → chunk-CJKGTEN4.js.map} +0 -0
  104. /package/dist/{chunk-AS7A2LU5.js.map → chunk-E44DRLUL.js.map} +0 -0
  105. /package/dist/{chunk-KSXA7YK7.js.map → chunk-GE46NHN4.js.map} +0 -0
  106. /package/dist/{chunk-VQTSZ4ZW.js.map → chunk-IYDGPF3C.js.map} +0 -0
  107. /package/dist/{chunk-RGYVR4FE.js.map → chunk-JMNIWUFV.js.map} +0 -0
  108. /package/dist/{chunk-5REZFNZ3.js.map → chunk-JWD43K7W.js.map} +0 -0
  109. /package/dist/{chunk-KSVFGXS6.js.map → chunk-KNZNSNP4.js.map} +0 -0
  110. /package/dist/{chunk-BVAQJOZX.js.map → chunk-KRUDSNFN.js.map} +0 -0
  111. /package/dist/{chunk-5HFXHKDD.js.map → chunk-LJGQ6VQB.js.map} +0 -0
  112. /package/dist/{chunk-VU6YTPPH.js.map → chunk-OYHU4HNC.js.map} +0 -0
  113. /package/dist/{chunk-5KS4SG2U.js.map → chunk-QHGYCYV6.js.map} +0 -0
  114. /package/dist/{chunk-N2AQUFGO.js.map → chunk-RFFOL6ON.js.map} +0 -0
  115. /package/dist/{chunk-ICDPUAKN.js.map → chunk-T3ZOZEAB.js.map} +0 -0
  116. /package/dist/{chunk-NSWBPKWH.js.map → chunk-T4UW4SUK.js.map} +0 -0
  117. /package/dist/{chunk-VPTAGK7G.js.map → chunk-V5DWNXVH.js.map} +0 -0
  118. /package/dist/{chunk-3EX524LK.js.map → chunk-VKRGWGA4.js.map} +0 -0
  119. /package/dist/{chunk-NA44V5OE.js.map → chunk-WCWSPU74.js.map} +0 -0
  120. /package/dist/{chunk-WUZG6B3Q.js.map → chunk-Y365ABZY.js.map} +0 -0
  121. /package/dist/{chunk-HAVSSHOW.js.map → chunk-ZGDUEOSH.js.map} +0 -0
@@ -1,7 +1,3 @@
1
- import {
2
- TEAM_INSTRUCTIONS,
3
- teamTools
4
- } from "./chunk-5TMN4MYN.js";
5
1
  import {
6
2
  TeamChanges,
7
3
  TeamSlots,
@@ -12,6 +8,10 @@ import {
12
8
  memberSummary,
13
9
  steeringMessages
14
10
  } from "./chunk-FSBDE6RF.js";
11
+ import {
12
+ TEAM_INSTRUCTIONS,
13
+ teamTools
14
+ } from "./chunk-CJKGTEN4.js";
15
15
  import {
16
16
  AgentTeamInteractionError,
17
17
  AgentTeamLimitError
@@ -19,10 +19,10 @@ import {
19
19
  import {
20
20
  createResolvedAgent,
21
21
  getResolvedAgentOptions
22
- } from "./chunk-VQTSZ4ZW.js";
22
+ } from "./chunk-IYDGPF3C.js";
23
23
  import {
24
24
  AgentRun
25
- } from "./chunk-4PGI5HYY.js";
25
+ } from "./chunk-A3DGCDGF.js";
26
26
  import {
27
27
  withInternalAgentRunOptions
28
28
  } from "./chunk-KITX3HDN.js";
@@ -36,7 +36,7 @@ import {
36
36
  } from "./chunk-KFAVEL5F.js";
37
37
  import {
38
38
  isStreamingCompletionModel
39
- } from "./chunk-BD2USPK5.js";
39
+ } from "./chunk-YMTBHHLQ.js";
40
40
  import {
41
41
  Usage
42
42
  } from "./chunk-HJ6KTQTZ.js";
@@ -619,4 +619,4 @@ var TeamRun = class {
619
619
  export {
620
620
  TeamRun
621
621
  };
622
- //# sourceMappingURL=chunk-3EX524LK.js.map
622
+ //# sourceMappingURL=chunk-VKRGWGA4.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-6BTJC3ES.js";
7
7
  import {
8
8
  isToolIndex
9
- } from "./chunk-VCMBQTR4.js";
9
+ } from "./chunk-4BDSO4PQ.js";
10
10
  import {
11
11
  isMcpTool
12
12
  } from "./chunk-PLDJCCVL.js";
@@ -109,4 +109,4 @@ export {
109
109
  resolveAgentOptions,
110
110
  markResolvedAgentOptions
111
111
  };
112
- //# sourceMappingURL=chunk-NA44V5OE.js.map
112
+ //# sourceMappingURL=chunk-WCWSPU74.js.map
@@ -1,11 +1,11 @@
1
- import {
2
- assertToolApprovalRequirement
3
- } from "./chunk-YZVFIW5D.js";
4
1
  import {
5
2
  attachPreparedToolOwner,
6
3
  preparedToolInput,
7
4
  withoutPreparedToolInput
8
5
  } from "./chunk-647TQE3E.js";
6
+ import {
7
+ assertToolApprovalRequirement
8
+ } from "./chunk-YZVFIW5D.js";
9
9
  import {
10
10
  toProviderJsonSchema
11
11
  } from "./chunk-SQAAVYJG.js";
@@ -55,4 +55,4 @@ function snapshotApprovalRequirement(requirement) {
55
55
  export {
56
56
  createTool
57
57
  };
58
- //# sourceMappingURL=chunk-WUZG6B3Q.js.map
58
+ //# sourceMappingURL=chunk-Y365ABZY.js.map
@@ -1,3 +1,11 @@
1
+ import {
2
+ toProviderJsonSchemaFromStandardSchema,
3
+ tryToProviderJsonSchemaFromStandardSchema
4
+ } from "./chunk-YOLOFTAY.js";
5
+ import {
6
+ formatStandardSchemaIssues,
7
+ validateStandardSchema
8
+ } from "./chunk-6OO5C5GW.js";
1
9
  import {
2
10
  createCompletionRequest
3
11
  } from "./chunk-GSVOMQEE.js";
@@ -16,9 +24,6 @@ import {
16
24
  import {
17
25
  isJsonValue
18
26
  } from "./chunk-4C7AXYOM.js";
19
- import {
20
- toProviderJsonSchema
21
- } from "./chunk-SQAAVYJG.js";
22
27
  import {
23
28
  completionProviderOutputErrorUsage,
24
29
  resolveRetryOptions,
@@ -51,7 +56,7 @@ var CompletionStructuredOutputError = class extends Error {
51
56
  };
52
57
  async function generateCompletion(options) {
53
58
  throwIfAborted(options.abortSignal);
54
- const request = requestFromOptions(options);
59
+ const request = await requestFromOptions(options);
55
60
  assertCompletionRequestSupported(options.model, request);
56
61
  const retries = resolveOptionalRetries(options.retries);
57
62
  const response = await sendCompletion(options.model, request, retries, options.abortSignal);
@@ -59,15 +64,20 @@ async function generateCompletion(options) {
59
64
  }
60
65
  function streamCompletion(options) {
61
66
  throwIfAborted(options.abortSignal);
62
- const request = requestFromOptions(options);
63
67
  if (!isStreamingCompletionModel(options.model) || !options.model.capabilities.streaming) {
64
68
  throw new Error("This completion model does not support streaming");
65
69
  }
66
- assertCompletionRequestSupported(options.model, request, { streaming: true });
70
+ const { request, pendingSchema } = requestFromOptionsSync(options);
71
+ assertCompletionRequestSupported(
72
+ options.model,
73
+ pendingSchema === void 0 ? request : { ...request, outputSchema: request.outputSchema ?? {} },
74
+ { streaming: true }
75
+ );
67
76
  const retries = resolveOptionalRetries(options.retries);
68
77
  return streamCompletionWithRetries(
69
78
  options.model,
70
79
  request,
80
+ pendingSchema,
71
81
  retries,
72
82
  options.abortSignal,
73
83
  structuredOutputSchema(options)
@@ -101,7 +111,14 @@ async function sendCompletion(model, request, retries, abortSignal) {
101
111
  function resolveOptionalRetries(setting) {
102
112
  return setting === void 0 || setting === false ? void 0 : resolveRetryOptions(setting);
103
113
  }
104
- async function* streamCompletionWithRetries(model, request, retries, abortSignal, outputSchema) {
114
+ async function* streamCompletionWithRetries(model, initialRequest, pendingSchema, retries, abortSignal, outputSchema) {
115
+ let request = initialRequest;
116
+ if (pendingSchema !== void 0) {
117
+ request = {
118
+ ...request,
119
+ outputSchema: await toProviderJsonSchemaFromStandardSchema(pendingSchema)
120
+ };
121
+ }
105
122
  let attempt = 1;
106
123
  let swallowedUsage = Usage.empty();
107
124
  const callOptions = modelCallOptions(abortSignal);
@@ -221,9 +238,28 @@ async function* streamCompletionWithRetries(model, request, retries, abortSignal
221
238
  }
222
239
  }
223
240
  }
224
- function requestFromOptions(options) {
241
+ async function requestFromOptions(options) {
242
+ const { request, pendingSchema } = requestFromOptionsSync(options);
243
+ if (pendingSchema === void 0) return request;
244
+ return {
245
+ ...request,
246
+ outputSchema: await toProviderJsonSchemaFromStandardSchema(pendingSchema)
247
+ };
248
+ }
249
+ function requestFromOptionsSync(options) {
225
250
  const input = inputFromOptions(options);
226
- return createCompletionRequest(input, {
251
+ const schema = structuredOutputSchema(options);
252
+ let outputSchema;
253
+ let pendingSchema;
254
+ if (schema !== void 0) {
255
+ const converted = tryToProviderJsonSchemaFromStandardSchema(schema);
256
+ if (converted.jsonSchema !== void 0) {
257
+ outputSchema = converted.jsonSchema;
258
+ } else {
259
+ pendingSchema = schema;
260
+ }
261
+ }
262
+ const request = createCompletionRequest(input, {
227
263
  instructions: options.instructions,
228
264
  documents: options.documents,
229
265
  tools: options.tools,
@@ -232,8 +268,9 @@ function requestFromOptions(options) {
232
268
  toolChoice: options.toolChoice,
233
269
  controls: options.controls,
234
270
  providerOptions: options.providerOptions,
235
- outputSchema: "outputSchema" in options && options.outputSchema !== void 0 ? toProviderJsonSchema(options.outputSchema) : void 0
271
+ outputSchema
236
272
  });
273
+ return { request, pendingSchema };
237
274
  }
238
275
  function inputFromOptions(options) {
239
276
  const prompt = options.prompt;
@@ -313,8 +350,9 @@ function parseCompletionOutput(text, schema, response) {
313
350
  cause: error
314
351
  });
315
352
  }
353
+ let validation;
316
354
  try {
317
- return schema.parse(json);
355
+ validation = validateStandardSchema(schema, json);
318
356
  } catch (error) {
319
357
  throw new CompletionStructuredOutputError({
320
358
  phase: "schema",
@@ -325,6 +363,17 @@ function parseCompletionOutput(text, schema, response) {
325
363
  cause: error
326
364
  });
327
365
  }
366
+ if (!validation.success) {
367
+ throw new CompletionStructuredOutputError({
368
+ phase: "schema",
369
+ outputLength: text.length,
370
+ usage: response.usage,
371
+ finishReason: response.finishReason,
372
+ providerFinishReason: response.providerFinishReason,
373
+ cause: new Error(formatStandardSchemaIssues(validation.issues))
374
+ });
375
+ }
376
+ return validation.value;
328
377
  }
329
378
  function modelCallOptions(abortSignal) {
330
379
  return abortSignal === void 0 ? void 0 : { abortSignal };
@@ -339,4 +388,4 @@ export {
339
388
  streamCompletion,
340
389
  isStreamingCompletionModel
341
390
  };
342
- //# sourceMappingURL=chunk-BD2USPK5.js.map
391
+ //# sourceMappingURL=chunk-YMTBHHLQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/completion/generate-completion.ts"],"sourcesContent":["import { abortError, throwIfAborted } from \"../internal/abort\";\nimport { createCompletionRequest } from \"../internal/completion-request\";\nimport type { ModelCallOptions } from \"../model-call-options\";\nimport {\n completionProviderOutputErrorUsage,\n type ResolvedRetryOptions,\n type RetrySetting,\n resolveRetryOptions,\n retryDelayMs,\n retryOptionsForFailure,\n waitForRetry,\n} from \"../retry\";\nimport {\n toProviderJsonSchemaFromStandardSchema,\n tryToProviderJsonSchemaFromStandardSchema,\n} from \"../schema/standard-json-schema\";\nimport {\n formatStandardSchemaIssues,\n type StandardSchemaV1,\n validateStandardSchema,\n} from \"../schema/standard-schema\";\nimport { isJsonValue } from \"./json\";\nimport {\n assertCompletionResponseIntegrity,\n CompletionProviderOutputError,\n} from \"./provider-output-error\";\nimport { CompletionStreamAccumulator } from \"./stream-accumulator\";\nimport type {\n CompletionControlValues,\n CompletionModel,\n CompletionModelControlsOf,\n CompletionModelStreamEvent,\n CompletionRequest,\n CompletionResponse,\n CompletionResult,\n CompletionStreamEvent,\n CompletionTool,\n Document,\n JsonObject,\n Message as MessageType,\n StreamingCompletionModel,\n ToolChoice,\n} from \"./types\";\nimport { assertCompletionRequestSupported, textFromAssistantContent, Usage } from \"./types\";\n\nexport type CompletionStructuredOutputPhase = \"truncated\" | \"content-filter\" | \"parse\" | \"schema\";\n\nexport class CompletionStructuredOutputError extends Error {\n readonly phase: CompletionStructuredOutputPhase;\n readonly outputLength: number;\n readonly usage: Usage;\n readonly finishReason: CompletionResponse[\"finishReason\"];\n readonly providerFinishReason: string | undefined;\n\n constructor(options: {\n phase: CompletionStructuredOutputPhase;\n outputLength: number;\n usage: Usage;\n finishReason?: CompletionResponse[\"finishReason\"];\n providerFinishReason?: string | undefined;\n cause?: unknown;\n }) {\n const failure =\n options.phase === \"truncated\"\n ? \"because the provider reached its output limit\"\n : options.phase === \"content-filter\"\n ? \"because the provider filtered the response\"\n : options.phase === \"parse\"\n ? \"during JSON parsing\"\n : \"during schema validation\";\n super(`Structured completion output failed ${failure}.`, { cause: options.cause });\n this.name = \"CompletionStructuredOutputError\";\n this.phase = options.phase;\n this.outputLength = options.outputLength;\n this.usage = options.usage;\n this.finishReason = options.finishReason;\n this.providerFinishReason = options.providerFinishReason;\n }\n}\n\nexport type CompletionInput =\n | { prompt: string; messages?: never }\n | { messages: readonly MessageType[]; prompt?: never };\n\nexport type CompletionBaseOptions<Model extends CompletionModel = CompletionModel> =\n CompletionInput & {\n model: Model;\n instructions?: string | undefined;\n documents?: readonly Document[] | undefined;\n tools?: readonly CompletionTool[] | undefined;\n temperature?: number | undefined;\n maxTokens?: number | undefined;\n toolChoice?: ToolChoice | undefined;\n controls?: CompletionControlValues<CompletionModelControlsOf<Model>> | undefined;\n providerOptions?: JsonObject | undefined;\n retries?: RetrySetting | undefined;\n abortSignal?: AbortSignal | undefined;\n };\n\nexport type GenerateCompletionOptions<Model extends CompletionModel = CompletionModel> =\n CompletionBaseOptions<Model> & { outputSchema?: never };\n\nexport type GenerateStructuredCompletionOptions<\n Output,\n Model extends CompletionModel = CompletionModel,\n> = CompletionBaseOptions<Model> & { outputSchema: StandardSchemaV1<unknown, Output> };\n\nexport type StreamCompletionOptions<\n Model extends StreamingCompletionModel = StreamingCompletionModel,\n> = GenerateCompletionOptions<Model>;\n\nexport type StreamStructuredCompletionOptions<\n Output,\n Model extends StreamingCompletionModel = StreamingCompletionModel,\n> = GenerateStructuredCompletionOptions<Output, Model>;\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\nexport function generateCompletion<Output, Model extends CompletionModel>(\n options: GenerateStructuredCompletionOptions<Output, Model>,\n): Promise<CompletionResult<Output, RawResponseOf<Model>>>;\nexport function generateCompletion<Model extends CompletionModel>(\n options: GenerateCompletionOptions<Model>,\n): Promise<CompletionResult<string, RawResponseOf<Model>>>;\nexport async function generateCompletion<Output, Model extends CompletionModel>(\n options: GenerateCompletionOptions<Model> | GenerateStructuredCompletionOptions<Output, Model>,\n): Promise<CompletionResult<Output | string, RawResponseOf<Model>>> {\n throwIfAborted(options.abortSignal);\n const request = await requestFromOptions(options);\n assertCompletionRequestSupported(options.model, request);\n const retries = resolveOptionalRetries(options.retries);\n const response = await sendCompletion(options.model, request, retries, options.abortSignal);\n return resultFromResponse(response, structuredOutputSchema(options));\n}\n\nexport function streamCompletion<Output, Model extends StreamingCompletionModel>(\n options: StreamStructuredCompletionOptions<Output, Model>,\n): AsyncIterable<CompletionStreamEvent<Output, RawResponseOf<Model>>>;\nexport function streamCompletion<Model extends StreamingCompletionModel>(\n options: StreamCompletionOptions<Model>,\n): AsyncIterable<CompletionStreamEvent<string, RawResponseOf<Model>>>;\nexport function streamCompletion<Output, Model extends StreamingCompletionModel>(\n options: StreamCompletionOptions<Model> | StreamStructuredCompletionOptions<Output, Model>,\n): AsyncIterable<CompletionStreamEvent<Output | string, RawResponseOf<Model>>> {\n throwIfAborted(options.abortSignal);\n if (!isStreamingCompletionModel(options.model) || !options.model.capabilities.streaming) {\n throw new Error(\"This completion model does not support streaming\");\n }\n const { request, pendingSchema } = requestFromOptionsSync(options);\n // Schemas whose JSON Schema conversion is deferred still count as an output\n // schema for capability validation.\n assertCompletionRequestSupported(\n options.model,\n pendingSchema === undefined\n ? request\n : { ...request, outputSchema: request.outputSchema ?? {} },\n { streaming: true },\n );\n const retries = resolveOptionalRetries(options.retries);\n return streamCompletionWithRetries(\n options.model,\n request,\n pendingSchema,\n retries,\n options.abortSignal,\n structuredOutputSchema(options),\n );\n}\n\nasync function sendCompletion<Model extends CompletionModel>(\n model: Model,\n request: CompletionRequest,\n retries: ResolvedRetryOptions | undefined,\n abortSignal: AbortSignal | undefined,\n): Promise<CompletionResponse<RawResponseOf<Model>>> {\n const callOptions = modelCallOptions(abortSignal);\n let attempt = 1;\n let failedUsage = Usage.empty();\n while (true) {\n try {\n throwIfAborted(abortSignal);\n const response = (await model.completion(request, callOptions)) as CompletionResponse<\n RawResponseOf<Model>\n >;\n assertCompletionResponseIntegrity({ response });\n return Usage.isEmpty(failedUsage)\n ? response\n : { ...response, usage: Usage.add(failedUsage, response.usage) };\n } catch (error) {\n const normalizedError =\n abortSignal?.aborted === true ? abortError(abortSignal.reason) : error;\n const attemptUsage = completionProviderOutputErrorUsage(normalizedError);\n if (attemptUsage !== undefined) failedUsage = Usage.add(failedUsage, attemptUsage);\n const retryOptions = retryOptionsForFailure(retries, {\n error: normalizedError,\n attempt,\n streaming: false,\n });\n if (retryOptions === undefined) throw normalizedError;\n await waitForRetry(retryDelayMs(retryOptions, attempt), abortSignal);\n attempt += 1;\n }\n }\n}\n\nfunction resolveOptionalRetries(\n setting: RetrySetting | undefined,\n): ResolvedRetryOptions | undefined {\n return setting === undefined || setting === false ? undefined : resolveRetryOptions(setting);\n}\n\nasync function* streamCompletionWithRetries<Output, Model extends StreamingCompletionModel>(\n model: Model,\n initialRequest: CompletionRequest,\n pendingSchema: StandardSchemaV1<unknown, Output> | undefined,\n retries: ResolvedRetryOptions | undefined,\n abortSignal: AbortSignal | undefined,\n outputSchema: StandardSchemaV1<unknown, Output> | undefined,\n): AsyncIterable<CompletionStreamEvent<Output | string, RawResponseOf<Model>>> {\n let request = initialRequest;\n if (pendingSchema !== undefined) {\n request = {\n ...request,\n outputSchema: await toProviderJsonSchemaFromStandardSchema(pendingSchema),\n };\n }\n let attempt = 1;\n let swallowedUsage = Usage.empty();\n const callOptions = modelCallOptions(abortSignal);\n\n attemptLoop: while (true) {\n let exposedProgress = false;\n let retryDelay: number | undefined;\n const accumulator = new CompletionStreamAccumulator<RawResponseOf<Model>>();\n try {\n throwIfAborted(abortSignal);\n const events = model.streamCompletion(request, callOptions) as AsyncIterable<\n CompletionModelStreamEvent<RawResponseOf<Model>>\n >;\n for await (const event of events) {\n if (event.type === \"error\" && !exposedProgress) {\n const eventError =\n abortSignal?.aborted === true ? abortError(abortSignal.reason) : event.error;\n const eventUsage =\n event.usage ?? completionProviderOutputErrorUsage(eventError) ?? Usage.empty();\n const retryOptions = retryOptionsForFailure(retries, {\n error: eventError,\n attempt,\n streaming: true,\n });\n if (retryOptions !== undefined) {\n swallowedUsage = Usage.add(swallowedUsage, eventUsage);\n retryDelay = retryDelayMs(retryOptions, attempt);\n break;\n }\n }\n\n if (event.type === \"error\") {\n const eventError =\n abortSignal?.aborted === true ? abortError(abortSignal.reason) : event.error;\n const eventUsage =\n event.usage ?? completionProviderOutputErrorUsage(eventError) ?? Usage.empty();\n yield {\n type: \"error\",\n error: eventError,\n usage: Usage.add(swallowedUsage, eventUsage),\n };\n return;\n }\n\n if (event.type === \"final\") {\n const cumulativeUsage = Usage.add(swallowedUsage, event.response.usage);\n try {\n accumulator.accept(event);\n const accumulatedResponse = accumulator.response();\n const response = Usage.isEmpty(swallowedUsage)\n ? accumulatedResponse\n : { ...accumulatedResponse, usage: cumulativeUsage };\n assertCompletionResponseIntegrity({ response });\n yield {\n type: \"final\",\n result: resultFromResponse(response, outputSchema),\n };\n } catch (error) {\n const retryOptions = exposedProgress\n ? undefined\n : retryOptionsForFailure(retries, {\n error,\n attempt,\n streaming: true,\n });\n if (retryOptions !== undefined) {\n swallowedUsage = cumulativeUsage;\n await waitForRetry(retryDelayMs(retryOptions, attempt), abortSignal);\n attempt += 1;\n continue attemptLoop;\n }\n yield { type: \"error\", error, usage: cumulativeUsage };\n }\n return;\n }\n\n accumulator.accept(event);\n exposedProgress = true;\n yield event;\n }\n\n if (retryDelay !== undefined) {\n await waitForRetry(retryDelay, abortSignal);\n attempt += 1;\n continue;\n }\n\n let incomplete: unknown;\n try {\n accumulator.response();\n incomplete = new CompletionProviderOutputError({ kind: \"incomplete-stream\" });\n } catch (error) {\n incomplete = error;\n }\n if (!exposedProgress) {\n const retryOptions = retryOptionsForFailure(retries, {\n error: incomplete,\n attempt,\n streaming: true,\n });\n if (retryOptions !== undefined) {\n await waitForRetry(retryDelayMs(retryOptions, attempt), abortSignal);\n attempt += 1;\n continue;\n }\n }\n yield { type: \"error\", error: incomplete, usage: swallowedUsage };\n return;\n } catch (error) {\n const normalizedError =\n abortSignal?.aborted === true ? abortError(abortSignal.reason) : error;\n const attemptUsage = completionProviderOutputErrorUsage(normalizedError);\n const cumulativeUsage =\n attemptUsage === undefined ? swallowedUsage : Usage.add(swallowedUsage, attemptUsage);\n if (!exposedProgress) {\n const retryOptions = retryOptionsForFailure(retries, {\n error: normalizedError,\n attempt,\n streaming: true,\n });\n if (retryOptions !== undefined) {\n try {\n swallowedUsage = cumulativeUsage;\n await waitForRetry(retryDelayMs(retryOptions, attempt), abortSignal);\n attempt += 1;\n continue;\n } catch (waitError) {\n yield { type: \"error\", error: waitError, usage: cumulativeUsage };\n return;\n }\n }\n }\n yield { type: \"error\", error: normalizedError, usage: cumulativeUsage };\n return;\n }\n }\n}\n\nasync function requestFromOptions<Model extends CompletionModel, Output>(\n options: GenerateCompletionOptions<Model> | GenerateStructuredCompletionOptions<Output, Model>,\n): Promise<CompletionRequest> {\n const { request, pendingSchema } = requestFromOptionsSync(options);\n if (pendingSchema === undefined) return request;\n return {\n ...request,\n outputSchema: await toProviderJsonSchemaFromStandardSchema(pendingSchema),\n };\n}\n\nfunction requestFromOptionsSync<Model extends CompletionModel, Output>(\n options: GenerateCompletionOptions<Model> | GenerateStructuredCompletionOptions<Output, Model>,\n): {\n request: CompletionRequest;\n pendingSchema: StandardSchemaV1<unknown, Output> | undefined;\n} {\n const input = inputFromOptions(options);\n const schema = structuredOutputSchema(options);\n let outputSchema: JsonObject | undefined;\n let pendingSchema: StandardSchemaV1<unknown, Output> | undefined;\n if (schema !== undefined) {\n const converted = tryToProviderJsonSchemaFromStandardSchema(schema);\n if (converted.jsonSchema !== undefined) {\n outputSchema = converted.jsonSchema;\n } else {\n pendingSchema = schema;\n }\n }\n const request = createCompletionRequest(input, {\n instructions: options.instructions,\n documents: options.documents,\n tools: options.tools,\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n toolChoice: options.toolChoice,\n controls: options.controls,\n providerOptions: options.providerOptions,\n outputSchema,\n });\n return { request, pendingSchema };\n}\n\nfunction inputFromOptions(options: CompletionInput): string | readonly MessageType[] {\n const prompt = (options as { prompt?: unknown }).prompt;\n const messages = (options as { messages?: unknown }).messages;\n const hasPrompt = prompt !== undefined;\n const hasMessages = messages !== undefined;\n if (hasPrompt === hasMessages) {\n throw new TypeError(\"Exactly one of prompt or messages must be provided.\");\n }\n if (hasPrompt) {\n if (typeof prompt !== \"string\" || prompt.trim().length === 0) {\n throw new TypeError(\"Completion prompt must be a non-empty string.\");\n }\n return prompt;\n }\n if (!Array.isArray(messages)) {\n throw new TypeError(\"Completion messages must be an array of Message values.\");\n }\n return messages as readonly MessageType[];\n}\n\nfunction structuredOutputSchema<Output>(options: {\n outputSchema?: StandardSchemaV1<unknown, Output> | undefined;\n}): StandardSchemaV1<unknown, Output> | undefined {\n return options.outputSchema;\n}\n\nfunction resultFromResponse<Output, RawResponse>(\n response: CompletionResponse<RawResponse>,\n outputSchema: StandardSchemaV1<unknown, Output> | undefined,\n): CompletionResult<Output | string, RawResponse> {\n const text = textFromAssistantContent(response.choice);\n const result: CompletionResult<Output | string, RawResponse> = {\n output: outputSchema === undefined ? text : parseCompletionOutput(text, outputSchema, response),\n text,\n content: [...response.choice],\n usage: response.usage,\n rawResponse: response.rawResponse,\n };\n if (response.finishReason !== undefined) result.finishReason = response.finishReason;\n if (response.providerFinishReason !== undefined) {\n result.providerFinishReason = response.providerFinishReason;\n }\n if (response.contextUsage !== undefined) result.contextUsage = response.contextUsage;\n if (response.messageId !== undefined) result.messageId = response.messageId;\n if (response.sources !== undefined) result.sources = [...response.sources];\n if (response.providerToolCalls !== undefined) {\n result.providerToolCalls = [...response.providerToolCalls];\n }\n return result;\n}\n\nfunction parseCompletionOutput<Output, RawResponse>(\n text: string,\n schema: StandardSchemaV1<unknown, Output>,\n response: CompletionResponse<RawResponse>,\n): Output {\n if (response.finishReason === \"content-filter\") {\n throw new CompletionStructuredOutputError({\n phase: \"content-filter\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n });\n }\n if (response.finishReason === \"length\") {\n throw new CompletionStructuredOutputError({\n phase: \"truncated\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n });\n }\n let json: unknown;\n try {\n json = JSON.parse(text);\n if (!isJsonValue(json)) {\n throw new TypeError(\"Structured completion output is not a JSON value.\");\n }\n } catch (error) {\n throw new CompletionStructuredOutputError({\n phase: \"parse\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n cause: error,\n });\n }\n let validation: ReturnType<typeof validateStandardSchema<Output>>;\n try {\n validation = validateStandardSchema(schema, json);\n } catch (error) {\n throw new CompletionStructuredOutputError({\n phase: \"schema\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n cause: error,\n });\n }\n if (!validation.success) {\n throw new CompletionStructuredOutputError({\n phase: \"schema\",\n outputLength: text.length,\n usage: response.usage,\n finishReason: response.finishReason,\n providerFinishReason: response.providerFinishReason,\n cause: new Error(formatStandardSchemaIssues(validation.issues)),\n });\n }\n return validation.value;\n}\n\nfunction modelCallOptions(abortSignal: AbortSignal | undefined): ModelCallOptions | undefined {\n return abortSignal === undefined ? undefined : { abortSignal };\n}\n\nexport function isStreamingCompletionModel(\n model: CompletionModel,\n): model is StreamingCompletionModel {\n return typeof (model as { streamCompletion?: unknown }).streamCompletion === \"function\";\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,144 @@
1
+ import {
2
+ toProviderJsonSchema
3
+ } from "./chunk-SQAAVYJG.js";
4
+
5
+ // src/schema/standard-json-schema.ts
6
+ var JSON_SCHEMA_TARGET = "draft-2020-12";
7
+ function tryToProviderJsonSchemaFromStandardSchema(schema) {
8
+ const props = schema["~standard"];
9
+ if (props.vendor === "zod") {
10
+ const jsonSchema2 = toProviderZodJsonSchema(schema);
11
+ completeStrictObjectRefinements(jsonSchema2);
12
+ return { jsonSchema: jsonSchema2 };
13
+ }
14
+ const jsonSchema = props.jsonSchema;
15
+ if (typeof jsonSchema === "object" && jsonSchema !== null) {
16
+ return {
17
+ jsonSchema: toProviderJsonSchemaShape(jsonSchema.input({ target: JSON_SCHEMA_TARGET }))
18
+ };
19
+ }
20
+ return { pendingSchema: schema };
21
+ }
22
+ function toProviderZodJsonSchema(schema) {
23
+ let outputJsonSchema;
24
+ try {
25
+ outputJsonSchema = toProviderJsonSchema(schema, { io: "output" });
26
+ } catch {
27
+ return toProviderJsonSchema(schema, { io: "input" });
28
+ }
29
+ let inputJsonSchema;
30
+ try {
31
+ inputJsonSchema = toProviderJsonSchema(schema, { io: "input" });
32
+ } catch {
33
+ return outputJsonSchema;
34
+ }
35
+ return jsonSchemaMatchesInputShape(inputJsonSchema, outputJsonSchema) ? outputJsonSchema : inputJsonSchema;
36
+ }
37
+ function jsonSchemaMatchesInputShape(input, output) {
38
+ if (Array.isArray(input) || Array.isArray(output)) {
39
+ return Array.isArray(input) && Array.isArray(output) && input.length === output.length && input.every((item, index) => jsonSchemaMatchesInputShape(item, output[index]));
40
+ }
41
+ if (typeof input === "object" && input !== null && typeof output === "object" && output !== null) {
42
+ const inputKeys = Object.keys(input).sort();
43
+ const outputKeys = Object.keys(output).filter((key) => key !== "additionalProperties").sort();
44
+ return inputKeys.length === outputKeys.length && inputKeys.every((key, index) => {
45
+ const outputKey = outputKeys[index];
46
+ if (outputKey === void 0 || key !== outputKey) return false;
47
+ const inputValue = input[key];
48
+ const outputValue = output[outputKey];
49
+ return jsonSchemaMatchesInputShape(inputValue, outputValue);
50
+ });
51
+ }
52
+ return input === output;
53
+ }
54
+ async function toProviderJsonSchemaFromStandardSchema(schema) {
55
+ const converted = tryToProviderJsonSchemaFromStandardSchema(schema);
56
+ if (converted.jsonSchema !== void 0) return converted.jsonSchema;
57
+ const pending = converted.pendingSchema;
58
+ const vendor = pending["~standard"].vendor;
59
+ if (vendor === "valibot") {
60
+ return valibotToProviderJsonSchema(pending);
61
+ }
62
+ throw new Error(
63
+ `Structured output schemas from vendor "${vendor}" cannot be converted to a provider JSON schema. Use a Zod or Valibot schema, or make the schema implement the Standard JSON Schema interface ("~standard.jsonSchema").`
64
+ );
65
+ }
66
+ var valibotToJsonSchemaModule;
67
+ async function loadValibotToJsonSchema() {
68
+ valibotToJsonSchemaModule ??= import("@valibot/to-json-schema");
69
+ try {
70
+ return await valibotToJsonSchemaModule;
71
+ } catch (error) {
72
+ valibotToJsonSchemaModule = void 0;
73
+ throw new Error(
74
+ 'The structured output schema is a Valibot schema, but "@valibot/to-json-schema" is not installed. Install it to use Valibot schemas for structured output.',
75
+ { cause: error }
76
+ );
77
+ }
78
+ }
79
+ async function valibotToProviderJsonSchema(schema) {
80
+ const { toJsonSchema } = await loadValibotToJsonSchema();
81
+ const jsonSchema = toJsonSchema(schema, {
82
+ target: JSON_SCHEMA_TARGET,
83
+ typeMode: "input"
84
+ });
85
+ return toProviderJsonSchemaShape(jsonSchema);
86
+ }
87
+ function toProviderJsonSchemaShape(jsonSchema) {
88
+ const { $schema: _schema, ...providerSchema } = jsonSchema;
89
+ completeStrictObjectRefinements(providerSchema);
90
+ return providerSchema;
91
+ }
92
+ function completeStrictObjectRefinements(jsonSchema) {
93
+ completeSchemaNode(jsonSchema);
94
+ }
95
+ var SCHEMA_POSITIONS = /* @__PURE__ */ new Set([
96
+ "additionalItems",
97
+ "additionalProperties",
98
+ "allOf",
99
+ "anyOf",
100
+ "contains",
101
+ "contentSchema",
102
+ "else",
103
+ "if",
104
+ "items",
105
+ "not",
106
+ "oneOf",
107
+ "prefixItems",
108
+ "propertyNames",
109
+ "then",
110
+ "unevaluatedItems",
111
+ "unevaluatedProperties"
112
+ ]);
113
+ var SCHEMA_MAP_POSITIONS = /* @__PURE__ */ new Set([
114
+ "$defs",
115
+ "definitions",
116
+ "dependencies",
117
+ "dependentSchemas",
118
+ "patternProperties",
119
+ "properties"
120
+ ]);
121
+ function completeSchemaNode(node) {
122
+ if (Array.isArray(node)) {
123
+ for (const item of node) completeSchemaNode(item);
124
+ return;
125
+ }
126
+ if (typeof node !== "object" || node === null) return;
127
+ const schema = node;
128
+ if (schema.type === "object" && schema.additionalProperties === void 0) {
129
+ schema.additionalProperties = false;
130
+ }
131
+ for (const [key, value] of Object.entries(schema)) {
132
+ if (SCHEMA_POSITIONS.has(key)) {
133
+ completeSchemaNode(value);
134
+ } else if (SCHEMA_MAP_POSITIONS.has(key) && typeof value === "object" && value !== null && !Array.isArray(value)) {
135
+ for (const child of Object.values(value)) completeSchemaNode(child);
136
+ }
137
+ }
138
+ }
139
+
140
+ export {
141
+ tryToProviderJsonSchemaFromStandardSchema,
142
+ toProviderJsonSchemaFromStandardSchema
143
+ };
144
+ //# sourceMappingURL=chunk-YOLOFTAY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/schema/standard-json-schema.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type { JsonObject, JsonValue } from \"../completion/index\";\nimport type { StandardJSONSchemaV1, StandardSchemaV1 } from \"./standard-schema\";\nimport { toProviderJsonSchema } from \"./zod-schema\";\n\nconst JSON_SCHEMA_TARGET = \"draft-2020-12\";\n\n/** The outcome of converting a Standard Schema to a provider JSON Schema. */\nexport type StandardSchemaJsonSchemaConversion =\n | { readonly jsonSchema: JsonObject; readonly pendingSchema?: undefined }\n | { readonly jsonSchema?: undefined; readonly pendingSchema: StandardSchemaV1 };\n\n/**\n * Converts a Standard Schema to the JSON Schema sent to providers when the\n * conversion can happen synchronously; otherwise returns the schema as pending\n * so callers can resolve it asynchronously with\n * {@link toProviderJsonSchemaFromStandardSchema}.\n *\n * Providers receive the schema's input representation: the raw provider\n * response is what `~standard.validate` receives as its validation input,\n * while the validated (possibly transformed) value becomes the completion\n * output. Object nodes are completed with `additionalProperties: false` so\n * payloads remain eligible for provider strict modes such as OpenAI\n * structured outputs.\n */\nexport function tryToProviderJsonSchemaFromStandardSchema(\n schema: StandardSchemaV1,\n): StandardSchemaJsonSchemaConversion {\n const props = schema[\"~standard\"];\n // Zod keeps its native converter. Prefer the output representation: it\n // validates identically for schemas without input/output differences and\n // carries zod's strict-object refinements (additionalProperties: false)\n // that provider strict modes such as OpenAI structured outputs require.\n if (props.vendor === \"zod\") {\n const jsonSchema = toProviderZodJsonSchema(schema as z.ZodType);\n completeStrictObjectRefinements(jsonSchema);\n return { jsonSchema };\n }\n // Generic support for any library implementing the Standard JSON Schema spec.\n const jsonSchema = (\n props as {\n jsonSchema?: StandardJSONSchemaV1[\"~standard\"][\"jsonSchema\"] | undefined;\n }\n ).jsonSchema;\n if (typeof jsonSchema === \"object\" && jsonSchema !== null) {\n return {\n jsonSchema: toProviderJsonSchemaShape(jsonSchema.input({ target: JSON_SCHEMA_TARGET })),\n };\n }\n // Vendor-specific converters may need to be loaded asynchronously.\n return { pendingSchema: schema };\n}\n\nfunction toProviderZodJsonSchema(schema: z.ZodType): JsonObject {\n let outputJsonSchema: JsonObject;\n try {\n outputJsonSchema = toProviderJsonSchema(schema, { io: \"output\" });\n } catch {\n // Transformed schemas are unrepresentable on the output side. Describe the\n // validation input instead so the provider emits values the schema\n // accepts, and the transformed output becomes the completion result.\n return toProviderJsonSchema(schema, { io: \"input\" });\n }\n let inputJsonSchema: JsonObject;\n try {\n inputJsonSchema = toProviderJsonSchema(schema, { io: \"input\" });\n } catch {\n // The input side is not representable while the output side is; the\n // output side remains the best available description.\n return outputJsonSchema;\n }\n // The provider response is fed to `~standard.validate` as its input, so the\n // output representation may only be used when it describes the same accepted\n // values as the input side. Ignoring additionalProperties keeps zod's\n // strict-object refinements (which provider strict modes such as OpenAI\n // structured outputs require) while still detecting schemas whose input and\n // output values genuinely differ, like `z.string().pipe(z.coerce.number())`.\n return jsonSchemaMatchesInputShape(inputJsonSchema, outputJsonSchema)\n ? outputJsonSchema\n : inputJsonSchema;\n}\n\n/** Checks whether the output-side schema shape equals the input-side shape, ignoring strictness. */\nfunction jsonSchemaMatchesInputShape(input: JsonValue, output: JsonValue): boolean {\n if (Array.isArray(input) || Array.isArray(output)) {\n return (\n Array.isArray(input) &&\n Array.isArray(output) &&\n input.length === output.length &&\n input.every((item, index) => jsonSchemaMatchesInputShape(item, output[index]))\n );\n }\n if (\n typeof input === \"object\" &&\n input !== null &&\n typeof output === \"object\" &&\n output !== null\n ) {\n const inputKeys = Object.keys(input).sort();\n const outputKeys = Object.keys(output)\n .filter((key) => key !== \"additionalProperties\")\n .sort();\n return (\n inputKeys.length === outputKeys.length &&\n inputKeys.every((key, index) => {\n const outputKey = outputKeys[index];\n if (outputKey === undefined || key !== outputKey) return false;\n // Keys come from Object.keys, so the indexed values exist by construction.\n const inputValue = (input as Record<string, JsonValue>)[key] as JsonValue;\n const outputValue = (output as Record<string, JsonValue>)[outputKey] as JsonValue;\n return jsonSchemaMatchesInputShape(inputValue, outputValue);\n })\n );\n }\n return input === output;\n}\n\n/**\n * Converts any supported Standard Schema to the JSON Schema sent to providers.\n * Synchronously convertible schemas resolve immediately; Valibot schemas load\n * the optional `@valibot/to-json-schema` converter on first use.\n */\nexport async function toProviderJsonSchemaFromStandardSchema(\n schema: StandardSchemaV1,\n): Promise<JsonObject> {\n const converted = tryToProviderJsonSchemaFromStandardSchema(schema);\n if (converted.jsonSchema !== undefined) return converted.jsonSchema;\n const pending = converted.pendingSchema;\n const vendor = pending[\"~standard\"].vendor;\n if (vendor === \"valibot\") {\n return valibotToProviderJsonSchema(pending);\n }\n throw new Error(\n `Structured output schemas from vendor \"${vendor}\" cannot be converted to a provider JSON schema. ` +\n `Use a Zod or Valibot schema, or make the schema implement the Standard JSON Schema interface (\"~standard.jsonSchema\").`,\n );\n}\n\ntype ValibotToJsonSchemaModule = {\n toJsonSchema: (\n schema: StandardSchemaV1,\n config?: {\n readonly target?: \"draft-07\" | \"draft-2020-12\" | \"openapi-3.0\" | undefined;\n readonly typeMode?: \"ignore\" | \"input\" | \"output\" | undefined;\n },\n ) => Record<string, unknown>;\n};\n\nlet valibotToJsonSchemaModule: Promise<ValibotToJsonSchemaModule> | undefined;\n\nasync function loadValibotToJsonSchema(): Promise<ValibotToJsonSchemaModule> {\n valibotToJsonSchemaModule ??=\n import(\"@valibot/to-json-schema\") as unknown as Promise<ValibotToJsonSchemaModule>;\n try {\n return await valibotToJsonSchemaModule;\n } catch (error) {\n valibotToJsonSchemaModule = undefined;\n throw new Error(\n 'The structured output schema is a Valibot schema, but \"@valibot/to-json-schema\" is not installed. ' +\n \"Install it to use Valibot schemas for structured output.\",\n { cause: error },\n );\n }\n}\n\nasync function valibotToProviderJsonSchema(schema: StandardSchemaV1): Promise<JsonObject> {\n const { toJsonSchema } = await loadValibotToJsonSchema();\n const jsonSchema = toJsonSchema(schema, {\n target: JSON_SCHEMA_TARGET,\n typeMode: \"input\",\n });\n return toProviderJsonSchemaShape(jsonSchema);\n}\n\nfunction toProviderJsonSchemaShape(jsonSchema: Record<string, unknown>): JsonObject {\n const { $schema: _schema, ...providerSchema } = jsonSchema;\n completeStrictObjectRefinements(providerSchema);\n // JSON Schema documents are JSON values by construction.\n return providerSchema as JsonObject;\n}\n\n/**\n * Adds `additionalProperties: false` to object schema nodes that do not declare\n * it. Restricting the provider to declared properties is validation-safe\n * because schema libraries strip or accept unknown input keys, and provider\n * strict modes such as OpenAI structured outputs require the refinement.\n * Explicit values (for example permissive objects) are left untouched.\n *\n * Recursion follows schema-bearing keywords only, so literal values under\n * `const`, `enum`, `default`, `examples`, or extension keywords — which may\n * legitimately be objects with a `type` field — are never rewritten.\n */\nfunction completeStrictObjectRefinements(jsonSchema: unknown): void {\n completeSchemaNode(jsonSchema);\n}\n\n// Schema-bearing keywords of the drafts the converters are requested to\n// produce (draft-07, draft-2020-12), so literal values under const, enum,\n// annotations, and extension keywords are never rewritten.\nconst SCHEMA_POSITIONS: ReadonlySet<string> = new Set([\n \"additionalItems\",\n \"additionalProperties\",\n \"allOf\",\n \"anyOf\",\n \"contains\",\n \"contentSchema\",\n \"else\",\n \"if\",\n \"items\",\n \"not\",\n \"oneOf\",\n \"prefixItems\",\n \"propertyNames\",\n \"then\",\n \"unevaluatedItems\",\n \"unevaluatedProperties\",\n]);\n\nconst SCHEMA_MAP_POSITIONS: ReadonlySet<string> = new Set([\n \"$defs\",\n \"definitions\",\n \"dependencies\",\n \"dependentSchemas\",\n \"patternProperties\",\n \"properties\",\n]);\n\nfunction completeSchemaNode(node: unknown): void {\n if (Array.isArray(node)) {\n // Lists of schemas, like prefixItems and draft-07 items.\n for (const item of node) completeSchemaNode(item);\n return;\n }\n if (typeof node !== \"object\" || node === null) return;\n const schema = node as Record<string, unknown>;\n if (schema.type === \"object\" && schema.additionalProperties === undefined) {\n schema.additionalProperties = false;\n }\n for (const [key, value] of Object.entries(schema)) {\n if (SCHEMA_POSITIONS.has(key)) {\n completeSchemaNode(value);\n } else if (\n SCHEMA_MAP_POSITIONS.has(key) &&\n typeof value === \"object\" &&\n value !== null &&\n !Array.isArray(value)\n ) {\n for (const child of Object.values(value)) completeSchemaNode(child);\n }\n }\n}\n"],"mappings":"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","names":["jsonSchema"]}
@@ -23,7 +23,7 @@ import {
23
23
  } from "./chunk-V3FFZWF3.js";
24
24
  import {
25
25
  extract
26
- } from "./chunk-3P65RSBB.js";
26
+ } from "./chunk-7TUAAGVR.js";
27
27
  import {
28
28
  mapWithConcurrency
29
29
  } from "./chunk-4FIVU53H.js";
@@ -372,4 +372,4 @@ function normalizeParallelBranches(branches) {
372
372
  export {
373
373
  Pipeline
374
374
  };
375
- //# sourceMappingURL=chunk-HAVSSHOW.js.map
375
+ //# sourceMappingURL=chunk-ZGDUEOSH.js.map
@@ -3,7 +3,9 @@ import {
3
3
  generateCompletion,
4
4
  isStreamingCompletionModel,
5
5
  streamCompletion
6
- } from "../chunk-BD2USPK5.js";
6
+ } from "../chunk-YMTBHHLQ.js";
7
+ import "../chunk-YOLOFTAY.js";
8
+ import "../chunk-6OO5C5GW.js";
7
9
  import "../chunk-GSVOMQEE.js";
8
10
  import "../chunk-4ONUNWGC.js";
9
11
  import "../chunk-2JZV4LUS.js";
@@ -1,9 +1,8 @@
1
1
  export { M as ModelCallOptions } from '../model-call-options-CZkSw_xN.js';
2
2
  export { R as RetryContext, a as RetryOptions, b as RetrySetting } from '../retry-CjvSlKGW.js';
3
- export { C as COMPLETION_PROVIDER_OUTPUT_ERROR_CODE, a as CompletionBaseOptions, b as CompletionInput, c as CompletionProviderOutputError, d as CompletionProviderOutputErrorKind, e as CompletionProviderOutputErrorOptions, f as CompletionStructuredOutputError, g as CompletionStructuredOutputPhase, G as GenerateCompletionOptions, h as GenerateStructuredCompletionOptions, M as MessageMetadataSchema, R as REASONING_EFFORT_CONTROL_ID, i as ReasoningEffortControls, S as StreamCompletionOptions, j as StreamStructuredCompletionOptions, k as createMessageSchema, l as defineCompletionModelControls, m as generateCompletion, n as isJsonValue, o as isMessage, u as isStreamingCompletionModel, v as mergeCompletionControlValues, p as messageSchema, q as messagesSchema, r as parseMessage, s as parseMessages, t as streamCompletion } from '../provider-output-error-CMVoe1xT.js';
3
+ export { C as COMPLETION_PROVIDER_OUTPUT_ERROR_CODE, a as CompletionBaseOptions, b as CompletionInput, c as CompletionProviderOutputError, d as CompletionProviderOutputErrorKind, e as CompletionProviderOutputErrorOptions, f as CompletionStructuredOutputError, g as CompletionStructuredOutputPhase, G as GenerateCompletionOptions, h as GenerateStructuredCompletionOptions, M as MessageMetadataSchema, R as REASONING_EFFORT_CONTROL_ID, i as ReasoningEffortControls, k as StreamCompletionOptions, l as StreamStructuredCompletionOptions, m as createMessageSchema, n as defineCompletionModelControls, o as generateCompletion, p as isJsonValue, q as isMessage, x as isStreamingCompletionModel, y as mergeCompletionControlValues, s as messageSchema, t as messagesSchema, u as parseMessage, v as parseMessages, w as streamCompletion } from '../provider-output-error-CQD0MWey.js';
4
4
  import { D as Document, M as Message } from '../types-DYqZKDA8.js';
5
5
  export { A as AssistantContentPart, a as AssistantGenerationMetadata, b as AssistantMessage, Z as CompletionCapabilityError, C as CompletionControlValues, c as CompletionFinishReason, d as CompletionModel, _ as CompletionModelCapabilities, e as CompletionModelControls, f as CompletionModelControlsOf, g as CompletionModelInfo, h as CompletionModelSelectControl, i as CompletionModelStreamEvent, j as CompletionRequest, k as CompletionResponse, l as CompletionResult, m as CompletionSource, n as CompletionStreamEvent, $ as CompletionStreamPart, o as CompletionTool, p as ContextUsage, F as FileData, q as FilePart, I as ImageDetail, r as ImagePart, J as JsonObject, s as JsonPrimitive, t as JsonValue, u as ModelContextLimits, N as NoCompletionModelControls, P as ProviderTool, v as ProviderToolCall, R as ReasoningContentType, w as ReasoningDetail, x as ReasoningPart, a0 as StreamingCompletionModel, S as SystemMessage, T as TextPart, a1 as ToolApprovalResponsePart, a2 as ToolCallArgumentsMode, y as ToolCallPart, z as ToolChoice, B as ToolDefinition, a3 as ToolInteractionResponsePart, E as ToolMessage, a4 as ToolQuestionAnswer, a5 as ToolQuestionResponsePart, G as ToolResultContentPart, H as ToolResultOutput, K as ToolResultPart, U as Usage, a6 as UsageDetails, L as UserContentPart, O as UserMessage, a7 as assertCompletionControlsSupported, a8 as assertCompletionRequestSupported, Q as calculateContextUsage, V as getAssistantGenerationMetadata, W as isProviderTool, a9 as reasoningDisplayText, X as resolveModelContextLimits, aa as textFromAssistantContent, Y as withContextUsage } from '../types-DYqZKDA8.js';
6
- import '../zod-schema-C7F4clpm.js';
7
6
  import 'zod';
8
7
 
9
8
  declare function normalizeDocuments(documents: Document[]): Message | undefined;
@@ -13,7 +13,9 @@ import {
13
13
  generateCompletion,
14
14
  isStreamingCompletionModel,
15
15
  streamCompletion
16
- } from "../chunk-BD2USPK5.js";
16
+ } from "../chunk-YMTBHHLQ.js";
17
+ import "../chunk-YOLOFTAY.js";
18
+ import "../chunk-6OO5C5GW.js";
17
19
  import "../chunk-GSVOMQEE.js";
18
20
  import "../chunk-4ONUNWGC.js";
19
21
  import "../chunk-2JZV4LUS.js";
@@ -1,5 +1,4 @@
1
1
  import "../chunk-ERN7P6Q4.js";
2
- import "../chunk-DU4WA6LQ.js";
3
2
  import {
4
3
  angularDistance,
5
4
  chebyshevDistance,
@@ -15,6 +14,7 @@ import {
15
14
  embedText,
16
15
  embedTexts
17
16
  } from "../chunk-HHMLE3TZ.js";
17
+ import "../chunk-DU4WA6LQ.js";
18
18
  import "../chunk-4FIVU53H.js";
19
19
  import "../chunk-POXHJF3H.js";
20
20
  import "../chunk-USRKPEQN.js";
@@ -9,18 +9,20 @@ import {
9
9
  promptAlignment,
10
10
  summarization,
11
11
  turnRelevancy
12
- } from "../chunk-VPTAGK7G.js";
13
- import "../chunk-63DUKYEG.js";
12
+ } from "../chunk-V5DWNXVH.js";
13
+ import "../chunk-5SJBSCG2.js";
14
14
  import "../chunk-ZPXOBQDS.js";
15
15
  import "../chunk-3P3YVJ7V.js";
16
- import "../chunk-3P65RSBB.js";
16
+ import "../chunk-7TUAAGVR.js";
17
17
  import "../chunk-ZYXMWEL4.js";
18
18
  import "../chunk-EJR6VVB3.js";
19
19
  import "../chunk-TP3MCUXS.js";
20
20
  import "../chunk-6RQYWZI3.js";
21
21
  import "../chunk-NF6WBPFG.js";
22
22
  import "../chunk-4FIVU53H.js";
23
- import "../chunk-BD2USPK5.js";
23
+ import "../chunk-YMTBHHLQ.js";
24
+ import "../chunk-YOLOFTAY.js";
25
+ import "../chunk-6OO5C5GW.js";
24
26
  import "../chunk-GSVOMQEE.js";
25
27
  import "../chunk-4ONUNWGC.js";
26
28
  import "../chunk-2JZV4LUS.js";
package/dist/evals/cli.js CHANGED
@@ -16,7 +16,9 @@ import "../chunk-JMMZICU7.js";
16
16
  import "../chunk-TP3MCUXS.js";
17
17
  import "../chunk-6RQYWZI3.js";
18
18
  import "../chunk-NF6WBPFG.js";
19
- import "../chunk-BD2USPK5.js";
19
+ import "../chunk-YMTBHHLQ.js";
20
+ import "../chunk-YOLOFTAY.js";
21
+ import "../chunk-6OO5C5GW.js";
20
22
  import "../chunk-GSVOMQEE.js";
21
23
  import "../chunk-4ONUNWGC.js";
22
24
  import "../chunk-2JZV4LUS.js";
@@ -19,7 +19,7 @@ import {
19
19
  notContains,
20
20
  requiredFields,
21
21
  semanticSimilarity
22
- } from "../chunk-N2AQUFGO.js";
22
+ } from "../chunk-RFFOL6ON.js";
23
23
  import {
24
24
  abstention,
25
25
  answerRelevancy,
@@ -31,14 +31,14 @@ import {
31
31
  promptAlignment,
32
32
  summarization,
33
33
  turnRelevancy
34
- } from "../chunk-VPTAGK7G.js";
35
- import "../chunk-63DUKYEG.js";
34
+ } from "../chunk-V5DWNXVH.js";
35
+ import "../chunk-5SJBSCG2.js";
36
36
  import {
37
37
  selectEvalCaseIds,
38
38
  selectPromptOutput
39
39
  } from "../chunk-ZPXOBQDS.js";
40
40
  import "../chunk-3P3YVJ7V.js";
41
- import "../chunk-3P65RSBB.js";
41
+ import "../chunk-7TUAAGVR.js";
42
42
  import {
43
43
  AgentEvalSuspensionError,
44
44
  agentEvalTarget
@@ -75,11 +75,13 @@ import "../chunk-TP3MCUXS.js";
75
75
  import "../chunk-6RQYWZI3.js";
76
76
  import "../chunk-NF6WBPFG.js";
77
77
  import "../chunk-ERN7P6Q4.js";
78
- import "../chunk-DU4WA6LQ.js";
79
78
  import "../chunk-7F53DOML.js";
80
79
  import "../chunk-HHMLE3TZ.js";
80
+ import "../chunk-DU4WA6LQ.js";
81
81
  import "../chunk-4FIVU53H.js";
82
- import "../chunk-BD2USPK5.js";
82
+ import "../chunk-YMTBHHLQ.js";
83
+ import "../chunk-YOLOFTAY.js";
84
+ import "../chunk-6OO5C5GW.js";
83
85
  import "../chunk-GSVOMQEE.js";
84
86
  import "../chunk-4ONUNWGC.js";
85
87
  import "../chunk-2JZV4LUS.js";
@@ -2,13 +2,15 @@ import {
2
2
  addUsage,
3
3
  evaluationMetadata,
4
4
  runJudge
5
- } from "../chunk-63DUKYEG.js";
5
+ } from "../chunk-5SJBSCG2.js";
6
6
  import "../chunk-3P3YVJ7V.js";
7
- import "../chunk-3P65RSBB.js";
7
+ import "../chunk-7TUAAGVR.js";
8
8
  import "../chunk-TP3MCUXS.js";
9
9
  import "../chunk-6RQYWZI3.js";
10
10
  import "../chunk-NF6WBPFG.js";
11
- import "../chunk-BD2USPK5.js";
11
+ import "../chunk-YMTBHHLQ.js";
12
+ import "../chunk-YOLOFTAY.js";
13
+ import "../chunk-6OO5C5GW.js";
12
14
  import "../chunk-GSVOMQEE.js";
13
15
  import "../chunk-4ONUNWGC.js";
14
16
  import "../chunk-2JZV4LUS.js";