ai 3.1.0-canary.3 → 3.1.0-canary.4

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.
@@ -30,10 +30,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  // ai-model-specification/index.ts
31
31
  var ai_model_specification_exports = {};
32
32
  __export(ai_model_specification_exports, {
33
- AI_InvalidArgumentError: () => AI_InvalidArgumentError,
34
33
  APICallError: () => APICallError,
34
+ InvalidArgumentError: () => InvalidArgumentError,
35
+ InvalidPromptError: () => InvalidPromptError,
36
+ InvalidToolArgumentsError: () => InvalidToolArgumentsError,
35
37
  JSONParseError: () => JSONParseError,
36
38
  LoadAPIKeyError: () => LoadAPIKeyError,
39
+ NoSuchToolError: () => NoSuchToolError,
37
40
  NoTextGeneratedError: () => NoTextGeneratedError,
38
41
  RetryError: () => RetryError,
39
42
  TypeValidationError: () => TypeValidationError,
@@ -56,31 +59,6 @@ __export(ai_model_specification_exports, {
56
59
  });
57
60
  module.exports = __toCommonJS(ai_model_specification_exports);
58
61
 
59
- // ai-model-specification/errors/ai-invalid-argument-error.ts
60
- var AI_InvalidArgumentError = class extends Error {
61
- // readonly learnMore =
62
- // 'https://sdk.vercel.com/docs/ai/errors/ai_invalid_argument_error';
63
- constructor({
64
- parameter,
65
- value,
66
- message
67
- }) {
68
- super(`Invalid argument for parameter ${parameter}: ${message}`);
69
- this.name = "AI_InvalidArgumentError";
70
- this.parameter = parameter;
71
- this.value = value;
72
- }
73
- toJSON() {
74
- return {
75
- name: this.name,
76
- message: this.message,
77
- stack: this.stack,
78
- parameter: this.parameter,
79
- value: this.value
80
- };
81
- }
82
- };
83
-
84
62
  // ai-model-specification/errors/api-call-error.ts
85
63
  var APICallError = class extends Error {
86
64
  constructor({
@@ -98,7 +76,7 @@ var APICallError = class extends Error {
98
76
  data
99
77
  }) {
100
78
  super(message);
101
- this.name = "ApiCallError";
79
+ this.name = "AI_APICallError";
102
80
  this.url = url;
103
81
  this.requestBodyValues = requestBodyValues;
104
82
  this.statusCode = statusCode;
@@ -107,6 +85,9 @@ var APICallError = class extends Error {
107
85
  this.isRetryable = isRetryable;
108
86
  this.data = data;
109
87
  }
88
+ static isAPICallError(error) {
89
+ return error instanceof Error && error.name === "AI_APICallError" && typeof error.url === "string" && typeof error.requestBodyValues === "object" && (error.statusCode == null || typeof error.statusCode === "number") && (error.responseBody == null || typeof error.responseBody === "string") && (error.cause == null || typeof error.cause === "object") && typeof error.isRetryable === "boolean" && (error.data == null || typeof error.data === "object");
90
+ }
110
91
  toJSON() {
111
92
  return {
112
93
  name: this.name,
@@ -122,139 +103,79 @@ var APICallError = class extends Error {
122
103
  }
123
104
  };
124
105
 
125
- // ai-model-specification/util/get-error-message.ts
126
- function getErrorMessage(error) {
127
- if (error == null) {
128
- return "unknown error";
129
- }
130
- if (typeof error === "string") {
131
- return error;
132
- }
133
- if (error instanceof Error) {
134
- return error.message;
106
+ // ai-model-specification/errors/invalid-argument-error.ts
107
+ var InvalidArgumentError = class extends Error {
108
+ constructor({
109
+ parameter,
110
+ value,
111
+ message
112
+ }) {
113
+ super(`Invalid argument for parameter ${parameter}: ${message}`);
114
+ this.name = "AI_InvalidArgumentError";
115
+ this.parameter = parameter;
116
+ this.value = value;
135
117
  }
136
- return JSON.stringify(error);
137
- }
138
-
139
- // ai-model-specification/errors/json-parse-error.ts
140
- var JSONParseError = class extends Error {
141
- constructor({ text, cause }) {
142
- super(
143
- `JSON parsing failed: Text: ${text}.
144
- Error message: ${getErrorMessage(cause)}`
145
- );
146
- this.name = "JSONParseError";
147
- this.cause = cause;
148
- this.text = text;
118
+ static isInvalidArgumentError(error) {
119
+ return error instanceof Error && error.name === "AI_InvalidArgumentError" && typeof error.parameter === "string" && typeof error.value === "string";
149
120
  }
150
121
  toJSON() {
151
122
  return {
152
123
  name: this.name,
153
124
  message: this.message,
154
- cause: this.cause,
155
125
  stack: this.stack,
156
- valueText: this.text
126
+ parameter: this.parameter,
127
+ value: this.value
157
128
  };
158
129
  }
159
130
  };
160
131
 
161
- // ai-model-specification/errors/load-api-key-error.ts
162
- var LoadAPIKeyError = class extends Error {
163
- constructor({ message }) {
164
- super(message);
165
- this.name = "LoadAPIKeyError";
132
+ // ai-model-specification/errors/invalid-prompt-error.ts
133
+ var InvalidPromptError = class extends Error {
134
+ constructor({ prompt: prompt2, message }) {
135
+ super(`Invalid prompt: ${message}`);
136
+ this.name = "AI_InvalidPromptError";
137
+ this.prompt = prompt2;
166
138
  }
167
- toJSON() {
168
- return {
169
- name: this.name,
170
- message: this.message
171
- };
172
- }
173
- };
174
-
175
- // ai-model-specification/errors/no-object-generated-error.ts
176
- var NoTextGeneratedError = class extends Error {
177
- constructor() {
178
- super(`No text generated.`);
179
- this.name = "NoTextGeneratedError";
139
+ static isInvalidPromptError(error) {
140
+ return error instanceof Error && error.name === "AI_InvalidPromptError" && prompt != null;
180
141
  }
181
142
  toJSON() {
182
143
  return {
183
144
  name: this.name,
184
- cause: this.cause,
185
145
  message: this.message,
186
- stack: this.stack
146
+ stack: this.stack,
147
+ prompt: this.prompt
187
148
  };
188
149
  }
189
150
  };
190
151
 
191
- // ai-model-specification/errors/retry-error.ts
192
- var RetryError = class extends Error {
193
- constructor({
194
- message,
195
- reason,
196
- errors
197
- }) {
198
- super(message);
199
- this.name = "RetryError";
200
- this.reason = reason;
201
- this.errors = errors;
202
- this.lastError = errors[errors.length - 1];
203
- }
204
- toJSON() {
205
- return {
206
- name: this.name,
207
- message: this.message,
208
- reason: this.reason,
209
- lastError: this.lastError,
210
- errors: this.errors
211
- };
152
+ // ai-model-specification/util/get-error-message.ts
153
+ function getErrorMessage(error) {
154
+ if (error == null) {
155
+ return "unknown error";
212
156
  }
213
- };
214
-
215
- // ai-model-specification/errors/type-validation-error.ts
216
- var TypeValidationError = class extends Error {
217
- constructor({ value, cause }) {
218
- super(
219
- `Type validation failed: Value: ${JSON.stringify(value)}.
220
- Error message: ${getErrorMessage(cause)}`
221
- );
222
- this.name = "TypeValidationError";
223
- this.cause = cause;
224
- this.value = value;
157
+ if (typeof error === "string") {
158
+ return error;
225
159
  }
226
- toJSON() {
227
- return {
228
- name: this.name,
229
- message: this.message,
230
- cause: this.cause,
231
- stack: this.stack,
232
- value: this.value
233
- };
160
+ if (error instanceof Error) {
161
+ return error.message;
234
162
  }
235
- };
163
+ return JSON.stringify(error);
164
+ }
236
165
 
237
- // ai-model-specification/errors/unsupported-functionality-error.ts
238
- var UnsupportedFunctionalityError = class extends Error {
239
- constructor({
240
- provider,
241
- functionality
242
- }) {
243
- super(
244
- `Functionality not supported by the provider. Provider: ${provider}.
245
- Functionality: ${functionality}`
246
- );
247
- this.name = "UnsupportedFunctionalityError";
248
- this.provider = provider;
249
- this.functionality = functionality;
166
+ // ai-model-specification/errors/load-api-key-error.ts
167
+ var LoadAPIKeyError = class extends Error {
168
+ constructor({ message }) {
169
+ super(message);
170
+ this.name = "AI_LoadAPIKeyError";
171
+ }
172
+ static isLoadAPIKeyError(error) {
173
+ return error instanceof Error && error.name === "AI_LoadAPIKeyError";
250
174
  }
251
175
  toJSON() {
252
176
  return {
253
177
  name: this.name,
254
- message: this.message,
255
- stack: this.stack,
256
- provider: this.provider,
257
- functionality: this.functionality
178
+ message: this.message
258
179
  };
259
180
  }
260
181
  };
@@ -286,6 +207,56 @@ function loadApiKey({
286
207
  // ai-model-specification/util/parse-json.ts
287
208
  var import_secure_json_parse = __toESM(require("secure-json-parse"));
288
209
 
210
+ // ai-model-specification/errors/json-parse-error.ts
211
+ var JSONParseError = class extends Error {
212
+ constructor({ text, cause }) {
213
+ super(
214
+ `JSON parsing failed: Text: ${text}.
215
+ Error message: ${getErrorMessage(cause)}`
216
+ );
217
+ this.name = "AI_JSONParseError";
218
+ this.cause = cause;
219
+ this.text = text;
220
+ }
221
+ static isJSONParseError(error) {
222
+ return error instanceof Error && error.name === "AI_JSONParseError" && typeof error.text === "string" && typeof error.cause === "string";
223
+ }
224
+ toJSON() {
225
+ return {
226
+ name: this.name,
227
+ message: this.message,
228
+ cause: this.cause,
229
+ stack: this.stack,
230
+ valueText: this.text
231
+ };
232
+ }
233
+ };
234
+
235
+ // ai-model-specification/errors/type-validation-error.ts
236
+ var TypeValidationError = class extends Error {
237
+ constructor({ value, cause }) {
238
+ super(
239
+ `Type validation failed: Value: ${JSON.stringify(value)}.
240
+ Error message: ${getErrorMessage(cause)}`
241
+ );
242
+ this.name = "AI_TypeValidationError";
243
+ this.cause = cause;
244
+ this.value = value;
245
+ }
246
+ static isTypeValidationError(error) {
247
+ return error instanceof Error && error.name === "AI_TypeValidationError" && typeof error.value === "string" && typeof error.cause === "string";
248
+ }
249
+ toJSON() {
250
+ return {
251
+ name: this.name,
252
+ message: this.message,
253
+ cause: this.cause,
254
+ stack: this.stack,
255
+ value: this.value
256
+ };
257
+ }
258
+ };
259
+
289
260
  // ai-model-specification/util/validate-types.ts
290
261
  function validateTypes({
291
262
  value,
@@ -319,7 +290,7 @@ function safeValidateTypes({
319
290
  } catch (error) {
320
291
  return {
321
292
  success: false,
322
- error: error instanceof TypeValidationError ? error : new TypeValidationError({ value, cause: error })
293
+ error: TypeValidationError.isTypeValidationError(error) ? error : new TypeValidationError({ value, cause: error })
323
294
  };
324
295
  }
325
296
  }
@@ -336,7 +307,7 @@ function parseJSON({
336
307
  }
337
308
  return validateTypes({ value, schema });
338
309
  } catch (error) {
339
- if (error instanceof JSONParseError || error instanceof TypeValidationError) {
310
+ if (JSONParseError.isJSONParseError(error) || TypeValidationError.isTypeValidationError(error)) {
340
311
  throw error;
341
312
  }
342
313
  throw new JSONParseError({ text, cause: error });
@@ -358,7 +329,7 @@ function safeParseJSON({
358
329
  } catch (error) {
359
330
  return {
360
331
  success: false,
361
- error: error instanceof JSONParseError ? error : new JSONParseError({ text, cause: error })
332
+ error: JSONParseError.isJSONParseError(error) ? error : new JSONParseError({ text, cause: error })
362
333
  };
363
334
  }
364
335
  }
@@ -420,7 +391,7 @@ var postToApi = async ({
420
391
  });
421
392
  } catch (error) {
422
393
  if (error instanceof Error) {
423
- if (error.name === "AbortError" || error instanceof APICallError) {
394
+ if (error.name === "AbortError" || APICallError.isAPICallError(error)) {
424
395
  throw error;
425
396
  }
426
397
  }
@@ -441,7 +412,7 @@ var postToApi = async ({
441
412
  });
442
413
  } catch (error) {
443
414
  if (error instanceof Error) {
444
- if (error.name === "AbortError" || error instanceof APICallError) {
415
+ if (error.name === "AbortError" || APICallError.isAPICallError(error)) {
445
416
  throw error;
446
417
  }
447
418
  }
@@ -588,12 +559,140 @@ function convertUint8ArrayToBase64(array) {
588
559
  }
589
560
  return globalThis.btoa(latin1string);
590
561
  }
562
+
563
+ // ai-model-specification/errors/invalid-tool-arguments-error.ts
564
+ var InvalidToolArgumentsError = class extends Error {
565
+ constructor({
566
+ toolArgs,
567
+ toolName,
568
+ cause,
569
+ message = `Invalid arguments for tool ${toolName}: ${getErrorMessage(
570
+ cause
571
+ )}`
572
+ }) {
573
+ super(message);
574
+ this.name = "AI_InvalidToolArgumentsError";
575
+ this.toolArgs = toolArgs;
576
+ this.toolName = toolName;
577
+ this.cause = cause;
578
+ }
579
+ static isInvalidToolArgumentsError(error) {
580
+ return error instanceof Error && error.name === "AI_InvalidToolArgumentsError" && typeof error.toolName === "string" && typeof error.toolArgs === "string";
581
+ }
582
+ toJSON() {
583
+ return {
584
+ name: this.name,
585
+ message: this.message,
586
+ cause: this.cause,
587
+ stack: this.stack,
588
+ toolName: this.toolName,
589
+ toolArgs: this.toolArgs
590
+ };
591
+ }
592
+ };
593
+
594
+ // ai-model-specification/errors/no-object-generated-error.ts
595
+ var NoTextGeneratedError = class extends Error {
596
+ constructor() {
597
+ super(`No text generated.`);
598
+ this.name = "AI_NoTextGeneratedError";
599
+ }
600
+ static isNoTextGeneratedError(error) {
601
+ return error instanceof Error && error.name === "AI_NoTextGeneratedError";
602
+ }
603
+ toJSON() {
604
+ return {
605
+ name: this.name,
606
+ cause: this.cause,
607
+ message: this.message,
608
+ stack: this.stack
609
+ };
610
+ }
611
+ };
612
+
613
+ // ai-model-specification/errors/no-such-tool-error.ts
614
+ var NoSuchToolError = class extends Error {
615
+ constructor({ message, toolName }) {
616
+ super(message);
617
+ this.name = "AI_NoSuchToolError";
618
+ this.toolName = toolName;
619
+ }
620
+ static isNoSuchToolError(error) {
621
+ return error instanceof Error && error.name === "AI_NoSuchToolError" && typeof error.toolName === "string";
622
+ }
623
+ toJSON() {
624
+ return {
625
+ name: this.name,
626
+ message: this.message,
627
+ stack: this.stack,
628
+ toolName: this.toolName
629
+ };
630
+ }
631
+ };
632
+
633
+ // ai-model-specification/errors/retry-error.ts
634
+ var RetryError = class extends Error {
635
+ constructor({
636
+ message,
637
+ reason,
638
+ errors
639
+ }) {
640
+ super(message);
641
+ this.name = "AI_RetryError";
642
+ this.reason = reason;
643
+ this.errors = errors;
644
+ this.lastError = errors[errors.length - 1];
645
+ }
646
+ static isRetryError(error) {
647
+ return error instanceof Error && error.name === "AI_RetryError" && typeof error.reason === "string" && Array.isArray(error.errors);
648
+ }
649
+ toJSON() {
650
+ return {
651
+ name: this.name,
652
+ message: this.message,
653
+ reason: this.reason,
654
+ lastError: this.lastError,
655
+ errors: this.errors
656
+ };
657
+ }
658
+ };
659
+
660
+ // ai-model-specification/errors/unsupported-functionality-error.ts
661
+ var UnsupportedFunctionalityError = class extends Error {
662
+ constructor({
663
+ provider,
664
+ functionality
665
+ }) {
666
+ super(
667
+ `Functionality not supported by the provider. Provider: ${provider}.
668
+ Functionality: ${functionality}`
669
+ );
670
+ this.name = "AI_UnsupportedFunctionalityError";
671
+ this.provider = provider;
672
+ this.functionality = functionality;
673
+ }
674
+ static isUnsupportedFunctionalityError(error) {
675
+ return error instanceof Error && error.name === "AI_UnsupportedFunctionalityError" && typeof error.provider === "string" && typeof error.functionality === "string";
676
+ }
677
+ toJSON() {
678
+ return {
679
+ name: this.name,
680
+ message: this.message,
681
+ stack: this.stack,
682
+ provider: this.provider,
683
+ functionality: this.functionality
684
+ };
685
+ }
686
+ };
591
687
  // Annotate the CommonJS export names for ESM import in node:
592
688
  0 && (module.exports = {
593
- AI_InvalidArgumentError,
594
689
  APICallError,
690
+ InvalidArgumentError,
691
+ InvalidPromptError,
692
+ InvalidToolArgumentsError,
595
693
  JSONParseError,
596
694
  LoadAPIKeyError,
695
+ NoSuchToolError,
597
696
  NoTextGeneratedError,
598
697
  RetryError,
599
698
  TypeValidationError,
@@ -1 +1 @@
1
- {"version":3,"sources":["../index.ts","../errors/ai-invalid-argument-error.ts","../errors/api-call-error.ts","../util/get-error-message.ts","../errors/json-parse-error.ts","../errors/load-api-key-error.ts","../errors/no-object-generated-error.ts","../errors/retry-error.ts","../errors/type-validation-error.ts","../errors/unsupported-functionality-error.ts","../util/load-api-key.ts","../util/parse-json.ts","../util/validate-types.ts","../util/post-to-api.ts","../util/response-handler.ts","../util/scale.ts","../util/uint8-utils.ts"],"sourcesContent":["export * from './errors/index';\nexport * from './language-model/index';\nexport * from './util/index';\n","export class AI_InvalidArgumentError extends Error {\n readonly parameter: string;\n readonly value: unknown;\n // readonly learnMore =\n // 'https://sdk.vercel.com/docs/ai/errors/ai_invalid_argument_error';\n\n constructor({\n parameter,\n value,\n message,\n }: {\n parameter: string;\n value: unknown;\n message: string;\n }) {\n super(`Invalid argument for parameter ${parameter}: ${message}`);\n\n this.name = 'AI_InvalidArgumentError';\n\n this.parameter = parameter;\n this.value = value;\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n parameter: this.parameter,\n value: this.value,\n };\n }\n}\n","export class APICallError extends Error {\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n readonly responseBody?: string;\n readonly cause?: unknown;\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super(message);\n\n this.name = 'ApiCallError';\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseBody = responseBody;\n this.cause = cause;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n url: this.url,\n requestBodyValues: this.requestBodyValues,\n statusCode: this.statusCode,\n responseBody: this.responseBody,\n cause: this.cause,\n isRetryable: this.isRetryable,\n data: this.data,\n };\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { getErrorMessage } from '../util/get-error-message';\n\nexport class JSONParseError extends Error {\n // note: property order determines debugging output\n readonly text: string;\n readonly cause: unknown;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super(\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n );\n\n this.name = 'JSONParseError';\n\n this.cause = cause;\n this.text = text;\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n valueText: this.text,\n };\n }\n}\n","export class LoadAPIKeyError extends Error {\n constructor({ message }: { message: string }) {\n super(message);\n\n this.name = 'LoadAPIKeyError';\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n };\n }\n}\n","export class NoTextGeneratedError extends Error {\n readonly cause: unknown;\n\n constructor() {\n super(`No text generated.`);\n\n this.name = 'NoTextGeneratedError';\n }\n\n toJSON() {\n return {\n name: this.name,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n","export type RetryErrorReason =\n | 'maxRetriesExceeded'\n | 'errorNotRetryable'\n | 'abort';\n\nexport class RetryError extends Error {\n // note: property order determines debugging output\n readonly reason: RetryErrorReason;\n readonly lastError: unknown;\n readonly errors: Array<unknown>;\n\n constructor({\n message,\n reason,\n errors,\n }: {\n message: string;\n reason: RetryErrorReason;\n errors: Array<unknown>;\n }) {\n super(message);\n\n this.name = 'RetryError';\n this.reason = reason;\n this.errors = errors;\n\n // separate our last error to make debugging via log easier:\n this.lastError = errors[errors.length - 1];\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n reason: this.reason,\n lastError: this.lastError,\n errors: this.errors,\n };\n }\n}\n","import { getErrorMessage } from '../util/get-error-message';\n\nexport class TypeValidationError extends Error {\n readonly value: unknown;\n readonly cause: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super(\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n );\n\n this.name = 'TypeValidationError';\n\n this.cause = cause;\n this.value = value;\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n value: this.value,\n };\n }\n}\n","export class UnsupportedFunctionalityError extends Error {\n readonly functionality: string;\n readonly provider: string;\n\n constructor({\n provider,\n functionality,\n }: {\n provider: string;\n functionality: string;\n }) {\n super(\n `Functionality not supported by the provider. ` +\n `Provider: ${provider}.\\n` +\n `Functionality: ${functionality}`,\n );\n\n this.name = 'UnsupportedFunctionalityError';\n\n this.provider = provider;\n this.functionality = functionality;\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n provider: this.provider,\n functionality: this.functionality,\n };\n }\n}\n","import { LoadAPIKeyError } from '../errors/load-api-key-error';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (apiKey != null) {\n return apiKey;\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n return apiKey;\n}\n","import SecureJSON from 'secure-json-parse';\nimport { ZodSchema } from 'zod';\nimport { JSONParseError } from '../errors/json-parse-error';\nimport { TypeValidationError } from '../errors/type-validation-error';\nimport { safeValidateTypes, validateTypes } from './validate-types';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {unknown} - The parsed JSON object.\n */\nexport function parseJSON({ text }: { text: string }): unknown;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Schema<T>} schema - The schema to use for parsing the JSON.\n * @returns {T} - The parsed object.\n */\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema: ZodSchema<T>;\n}): T;\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T>;\n}): T {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes({ value, schema });\n } catch (error) {\n if (\n error instanceof JSONParseError ||\n error instanceof TypeValidationError\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {object} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport function safeParseJSON({\n text,\n}: {\n text: string;\n}):\n | { success: true; value: unknown }\n | { success: false; error: JSONParseError | TypeValidationError };\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Schema<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: JSONParseError | TypeValidationError };\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: JSONParseError | TypeValidationError } {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return {\n success: true,\n value: value as T,\n };\n }\n\n return safeValidateTypes({ value, schema });\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof JSONParseError\n ? error\n : new JSONParseError({ text, cause: error }),\n };\n }\n}\n\nexport function isParseableJson(input: string): boolean {\n try {\n SecureJSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import { ZodSchema } from 'zod';\nimport { TypeValidationError } from '../errors/type-validation-error';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Schema<T>} options.schema - The schema to use for validating the JSON.\n * @returns {T} - The typed object.\n */\nexport function validateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: ZodSchema<T>;\n}): T {\n try {\n return schema.parse(value);\n } catch (error) {\n throw new TypeValidationError({ value, cause: error });\n }\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Schema<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeValidateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: TypeValidationError } {\n try {\n const validationResult = schema.safeParse(value);\n\n if (validationResult.success) {\n return {\n success: true,\n value: validationResult.data,\n };\n }\n\n return {\n success: false,\n error: new TypeValidationError({\n value,\n cause: validationResult.error,\n }),\n };\n } catch (error) {\n return {\n success: false,\n error:\n error instanceof TypeValidationError\n ? error\n : new TypeValidationError({ value, cause: error }),\n };\n }\n}\n","import { APICallError } from '../errors/api-call-error';\nimport { ResponseHandler } from './response-handler';\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n}) =>\n postToApi({\n url,\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n}) => {\n try {\n // remove undefined headers:\n const definedHeaders = Object.fromEntries(\n Object.entries(headers).filter(([_key, value]) => value != null),\n ) as Record<string, string>;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: definedHeaders,\n body: body.content,\n signal: abortSignal,\n });\n\n if (!response.ok) {\n try {\n throw await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError' || error instanceof APICallError) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n requestBodyValues: body.values,\n });\n }\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError' || error instanceof APICallError) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw error;\n }\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (error instanceof TypeError && error.message === 'fetch failed') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n throw new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues: body.values,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n throw error;\n }\n};\n","import {\n EventSourceParserStream,\n ParsedEvent,\n} from 'eventsource-parser/stream';\nimport { ZodSchema } from 'zod';\nimport { APICallError } from '../errors';\nimport { parseJSON, safeParseJSON } from './parse-json';\nimport { ParsedChunk } from './parsed-chunk';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<RETURN_TYPE>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: ZodSchema<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n isRetryable: isRetryable?.(response),\n });\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n });\n } catch (parseError) {\n return new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n isRetryable: isRetryable?.(response),\n });\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\n ): ResponseHandler<ReadableStream<ParsedChunk<T>>> =>\n async ({ response }: { response: Response }) => {\n if (response.body == null) {\n throw new Error('No response body'); // TODO AI error\n }\n\n return response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<ParsedEvent, ParsedChunk<T>>({\n transform({ data }, controller) {\n if (data === '[DONE]') {\n return;\n }\n\n const parseResult = safeParseJSON({\n text: data,\n schema: chunkSchema,\n });\n\n controller.enqueue(\n parseResult.success\n ? { type: 'value', value: parseResult.value }\n : { type: 'error', error: parseResult.error },\n );\n },\n }),\n );\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: ZodSchema<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return parsedResult.value;\n };\n","export function scale({\n inputMin = 0,\n inputMax = 1,\n outputMin,\n outputMax,\n value,\n}: {\n inputMin?: number;\n inputMax?: number;\n outputMin: number;\n outputMax: number;\n value: number | undefined;\n}) {\n if (value === undefined) {\n return undefined;\n }\n\n const inputRange = inputMax - inputMin;\n const outputRange = outputMax - outputMin;\n return ((value - inputMin) * outputRange) / inputRange + outputMin;\n}\n","export function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n for (const value of array) {\n latin1string += String.fromCodePoint(value);\n }\n return globalThis.btoa(latin1string);\n}\n"],"mappings":"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","names":["SecureJSON"]}
1
+ {"version":3,"sources":["../index.ts","../errors/api-call-error.ts","../errors/invalid-argument-error.ts","../errors/invalid-prompt-error.ts","../util/get-error-message.ts","../errors/load-api-key-error.ts","../util/load-api-key.ts","../util/parse-json.ts","../errors/json-parse-error.ts","../errors/type-validation-error.ts","../util/validate-types.ts","../util/post-to-api.ts","../util/response-handler.ts","../util/scale.ts","../util/uint8-utils.ts","../errors/invalid-tool-arguments-error.ts","../errors/no-object-generated-error.ts","../errors/no-such-tool-error.ts","../errors/retry-error.ts","../errors/unsupported-functionality-error.ts"],"sourcesContent":["export * from './errors/index';\nexport * from './language-model/index';\nexport * from './util/index';\n","export class APICallError extends Error {\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n readonly responseBody?: string;\n readonly cause?: unknown;\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super(message);\n\n this.name = 'AI_APICallError';\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseBody = responseBody;\n this.cause = cause;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isAPICallError(error: unknown): error is APICallError {\n return (\n error instanceof Error &&\n error.name === 'AI_APICallError' &&\n typeof (error as APICallError).url === 'string' &&\n typeof (error as APICallError).requestBodyValues === 'object' &&\n ((error as APICallError).statusCode == null ||\n typeof (error as APICallError).statusCode === 'number') &&\n ((error as APICallError).responseBody == null ||\n typeof (error as APICallError).responseBody === 'string') &&\n ((error as APICallError).cause == null ||\n typeof (error as APICallError).cause === 'object') &&\n typeof (error as APICallError).isRetryable === 'boolean' &&\n ((error as APICallError).data == null ||\n typeof (error as APICallError).data === 'object')\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n url: this.url,\n requestBodyValues: this.requestBodyValues,\n statusCode: this.statusCode,\n responseBody: this.responseBody,\n cause: this.cause,\n isRetryable: this.isRetryable,\n data: this.data,\n };\n }\n}\n","export class InvalidArgumentError extends Error {\n readonly parameter: string;\n readonly value: unknown;\n\n constructor({\n parameter,\n value,\n message,\n }: {\n parameter: string;\n value: unknown;\n message: string;\n }) {\n super(`Invalid argument for parameter ${parameter}: ${message}`);\n\n this.name = 'AI_InvalidArgumentError';\n\n this.parameter = parameter;\n this.value = value;\n }\n\n static isInvalidArgumentError(error: unknown): error is InvalidArgumentError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidArgumentError' &&\n typeof (error as InvalidArgumentError).parameter === 'string' &&\n typeof (error as InvalidArgumentError).value === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n parameter: this.parameter,\n value: this.value,\n };\n }\n}\n","export class InvalidPromptError extends Error {\n readonly prompt: unknown;\n\n constructor({ prompt, message }: { prompt: unknown; message: string }) {\n super(`Invalid prompt: ${message}`);\n\n this.name = 'AI_InvalidPromptError';\n\n this.prompt = prompt;\n }\n\n static isInvalidPromptError(error: unknown): error is InvalidPromptError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidPromptError' &&\n prompt != null\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n prompt: this.prompt,\n };\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","export class LoadAPIKeyError extends Error {\n constructor({ message }: { message: string }) {\n super(message);\n\n this.name = 'AI_LoadAPIKeyError';\n }\n\n static isLoadAPIKeyError(error: unknown): error is LoadAPIKeyError {\n return error instanceof Error && error.name === 'AI_LoadAPIKeyError';\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n };\n }\n}\n","import { LoadAPIKeyError } from '../errors/load-api-key-error';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (apiKey != null) {\n return apiKey;\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n return apiKey;\n}\n","import SecureJSON from 'secure-json-parse';\nimport { ZodSchema } from 'zod';\nimport { JSONParseError } from '../errors/json-parse-error';\nimport { TypeValidationError } from '../errors/type-validation-error';\nimport { safeValidateTypes, validateTypes } from './validate-types';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {unknown} - The parsed JSON object.\n */\nexport function parseJSON({ text }: { text: string }): unknown;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Schema<T>} schema - The schema to use for parsing the JSON.\n * @returns {T} - The parsed object.\n */\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema: ZodSchema<T>;\n}): T;\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T>;\n}): T {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isJSONParseError(error) ||\n TypeValidationError.isTypeValidationError(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {object} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport function safeParseJSON({\n text,\n}: {\n text: string;\n}):\n | { success: true; value: unknown }\n | { success: false; error: JSONParseError | TypeValidationError };\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Schema<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: JSONParseError | TypeValidationError };\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: JSONParseError | TypeValidationError } {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return {\n success: true,\n value: value as T,\n };\n }\n\n return safeValidateTypes({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isJSONParseError(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n };\n }\n}\n\nexport function isParseableJson(input: string): boolean {\n try {\n SecureJSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import { getErrorMessage } from '../util/get-error-message';\n\nexport class JSONParseError extends Error {\n // note: property order determines debugging output\n readonly text: string;\n readonly cause: unknown;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super(\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n );\n\n this.name = 'AI_JSONParseError';\n\n this.cause = cause;\n this.text = text;\n }\n\n static isJSONParseError(error: unknown): error is JSONParseError {\n return (\n error instanceof Error &&\n error.name === 'AI_JSONParseError' &&\n typeof (error as JSONParseError).text === 'string' &&\n typeof (error as JSONParseError).cause === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n valueText: this.text,\n };\n }\n}\n","import { getErrorMessage } from '../util/get-error-message';\n\nexport class TypeValidationError extends Error {\n readonly value: unknown;\n readonly cause: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super(\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n );\n\n this.name = 'AI_TypeValidationError';\n\n this.cause = cause;\n this.value = value;\n }\n\n static isTypeValidationError(error: unknown): error is TypeValidationError {\n return (\n error instanceof Error &&\n error.name === 'AI_TypeValidationError' &&\n typeof (error as TypeValidationError).value === 'string' &&\n typeof (error as TypeValidationError).cause === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n value: this.value,\n };\n }\n}\n","import { ZodSchema } from 'zod';\nimport { TypeValidationError } from '../errors/type-validation-error';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Schema<T>} options.schema - The schema to use for validating the JSON.\n * @returns {T} - The typed object.\n */\nexport function validateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: ZodSchema<T>;\n}): T {\n try {\n return schema.parse(value);\n } catch (error) {\n throw new TypeValidationError({ value, cause: error });\n }\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Schema<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeValidateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: ZodSchema<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: TypeValidationError } {\n try {\n const validationResult = schema.safeParse(value);\n\n if (validationResult.success) {\n return {\n success: true,\n value: validationResult.data,\n };\n }\n\n return {\n success: false,\n error: new TypeValidationError({\n value,\n cause: validationResult.error,\n }),\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.isTypeValidationError(error)\n ? error\n : new TypeValidationError({ value, cause: error }),\n };\n }\n}\n","import { APICallError } from '../errors/api-call-error';\nimport { ResponseHandler } from './response-handler';\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n}) =>\n postToApi({\n url,\n headers: {\n ...headers,\n 'Content-Type': 'application/json',\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n}) => {\n try {\n // remove undefined headers:\n const definedHeaders = Object.fromEntries(\n Object.entries(headers).filter(([_key, value]) => value != null),\n ) as Record<string, string>;\n\n const response = await fetch(url, {\n method: 'POST',\n headers: definedHeaders,\n body: body.content,\n signal: abortSignal,\n });\n\n if (!response.ok) {\n try {\n throw await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (\n error.name === 'AbortError' ||\n APICallError.isAPICallError(error)\n ) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n requestBodyValues: body.values,\n });\n }\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError' || APICallError.isAPICallError(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw error;\n }\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (error instanceof TypeError && error.message === 'fetch failed') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n throw new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues: body.values,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n throw error;\n }\n};\n","import {\n EventSourceParserStream,\n ParsedEvent,\n} from 'eventsource-parser/stream';\nimport { ZodSchema } from 'zod';\nimport { APICallError } from '../errors';\nimport { parseJSON, safeParseJSON } from './parse-json';\nimport { ParsedChunk } from './parsed-chunk';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<RETURN_TYPE>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: ZodSchema<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n isRetryable: isRetryable?.(response),\n });\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n });\n } catch (parseError) {\n return new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseBody,\n isRetryable: isRetryable?.(response),\n });\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\n ): ResponseHandler<ReadableStream<ParsedChunk<T>>> =>\n async ({ response }: { response: Response }) => {\n if (response.body == null) {\n throw new Error('No response body'); // TODO AI error\n }\n\n return response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<ParsedEvent, ParsedChunk<T>>({\n transform({ data }, controller) {\n if (data === '[DONE]') {\n return;\n }\n\n const parseResult = safeParseJSON({\n text: data,\n schema: chunkSchema,\n });\n\n controller.enqueue(\n parseResult.success\n ? { type: 'value', value: parseResult.value }\n : { type: 'error', error: parseResult.error },\n );\n },\n }),\n );\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: ZodSchema<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return parsedResult.value;\n };\n","export function scale({\n inputMin = 0,\n inputMax = 1,\n outputMin,\n outputMax,\n value,\n}: {\n inputMin?: number;\n inputMax?: number;\n outputMin: number;\n outputMax: number;\n value: number | undefined;\n}) {\n if (value === undefined) {\n return undefined;\n }\n\n const inputRange = inputMax - inputMin;\n const outputRange = outputMax - outputMin;\n return ((value - inputMin) * outputRange) / inputRange + outputMin;\n}\n","export function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = globalThis.atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n for (const value of array) {\n latin1string += String.fromCodePoint(value);\n }\n return globalThis.btoa(latin1string);\n}\n","import { getErrorMessage } from '../util';\n\nexport class InvalidToolArgumentsError extends Error {\n readonly toolName: string;\n readonly toolArgs: string;\n readonly cause: unknown;\n\n constructor({\n toolArgs,\n toolName,\n cause,\n message = `Invalid arguments for tool ${toolName}: ${getErrorMessage(\n cause,\n )}`,\n }: {\n message?: string;\n toolArgs: string;\n toolName: string;\n cause: unknown;\n }) {\n super(message);\n\n this.name = 'AI_InvalidToolArgumentsError';\n\n this.toolArgs = toolArgs;\n this.toolName = toolName;\n this.cause = cause;\n }\n\n static isInvalidToolArgumentsError(\n error: unknown,\n ): error is InvalidToolArgumentsError {\n return (\n error instanceof Error &&\n error.name === 'AI_InvalidToolArgumentsError' &&\n typeof (error as InvalidToolArgumentsError).toolName === 'string' &&\n typeof (error as InvalidToolArgumentsError).toolArgs === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n cause: this.cause,\n stack: this.stack,\n\n toolName: this.toolName,\n toolArgs: this.toolArgs,\n };\n }\n}\n","export class NoTextGeneratedError extends Error {\n readonly cause: unknown;\n\n constructor() {\n super(`No text generated.`);\n\n this.name = 'AI_NoTextGeneratedError';\n }\n\n static isNoTextGeneratedError(error: unknown): error is NoTextGeneratedError {\n return error instanceof Error && error.name === 'AI_NoTextGeneratedError';\n }\n\n toJSON() {\n return {\n name: this.name,\n cause: this.cause,\n message: this.message,\n stack: this.stack,\n };\n }\n}\n","export class NoSuchToolError extends Error {\n readonly toolName: string;\n\n constructor({ message, toolName }: { message: string; toolName: string }) {\n super(message);\n\n this.name = 'AI_NoSuchToolError';\n\n this.toolName = toolName;\n }\n\n static isNoSuchToolError(error: unknown): error is NoSuchToolError {\n return (\n error instanceof Error &&\n error.name === 'AI_NoSuchToolError' &&\n typeof (error as NoSuchToolError).toolName === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n toolName: this.toolName,\n };\n }\n}\n","export type RetryErrorReason =\n | 'maxRetriesExceeded'\n | 'errorNotRetryable'\n | 'abort';\n\nexport class RetryError extends Error {\n // note: property order determines debugging output\n readonly reason: RetryErrorReason;\n readonly lastError: unknown;\n readonly errors: Array<unknown>;\n\n constructor({\n message,\n reason,\n errors,\n }: {\n message: string;\n reason: RetryErrorReason;\n errors: Array<unknown>;\n }) {\n super(message);\n\n this.name = 'AI_RetryError';\n this.reason = reason;\n this.errors = errors;\n\n // separate our last error to make debugging via log easier:\n this.lastError = errors[errors.length - 1];\n }\n\n static isRetryError(error: unknown): error is RetryError {\n return (\n error instanceof Error &&\n error.name === 'AI_RetryError' &&\n typeof (error as RetryError).reason === 'string' &&\n Array.isArray((error as RetryError).errors)\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n reason: this.reason,\n lastError: this.lastError,\n errors: this.errors,\n };\n }\n}\n","export class UnsupportedFunctionalityError extends Error {\n readonly functionality: string;\n readonly provider: string;\n\n constructor({\n provider,\n functionality,\n }: {\n provider: string;\n functionality: string;\n }) {\n super(\n `Functionality not supported by the provider. ` +\n `Provider: ${provider}.\\n` +\n `Functionality: ${functionality}`,\n );\n\n this.name = 'AI_UnsupportedFunctionalityError';\n\n this.provider = provider;\n this.functionality = functionality;\n }\n\n static isUnsupportedFunctionalityError(\n error: unknown,\n ): error is UnsupportedFunctionalityError {\n return (\n error instanceof Error &&\n error.name === 'AI_UnsupportedFunctionalityError' &&\n typeof (error as UnsupportedFunctionalityError).provider === 'string' &&\n typeof (error as UnsupportedFunctionalityError).functionality === 'string'\n );\n }\n\n toJSON() {\n return {\n name: this.name,\n message: this.message,\n stack: this.stack,\n\n provider: this.provider,\n functionality: this.functionality,\n };\n }\n}\n"],"mappings":"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","names":["prompt","SecureJSON"]}