@posthog/agent 1.12.0 → 1.14.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 (224) hide show
  1. package/dist/_virtual/_commonjsHelpers.js +6 -0
  2. package/dist/_virtual/_commonjsHelpers.js.map +1 -0
  3. package/dist/_virtual/index.js +4 -0
  4. package/dist/_virtual/index.js.map +1 -0
  5. package/dist/node_modules/@ai-sdk/anthropic/dist/index.js +1154 -0
  6. package/dist/node_modules/@ai-sdk/anthropic/dist/index.js.map +1 -0
  7. package/dist/node_modules/@ai-sdk/provider/dist/index.js +296 -0
  8. package/dist/node_modules/@ai-sdk/provider/dist/index.js.map +1 -0
  9. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js +576 -0
  10. package/dist/node_modules/@ai-sdk/provider-utils/dist/index.js.map +1 -0
  11. package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js +741 -0
  12. package/dist/node_modules/@ai-sdk/ui-utils/dist/index.js.map +1 -0
  13. package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js +112 -0
  14. package/dist/node_modules/@opentelemetry/api/build/esm/api/context.js.map +1 -0
  15. package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js +123 -0
  16. package/dist/node_modules/@opentelemetry/api/build/esm/api/diag.js.map +1 -0
  17. package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js +62 -0
  18. package/dist/node_modules/@opentelemetry/api/build/esm/api/metrics.js.map +1 -0
  19. package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js +91 -0
  20. package/dist/node_modules/@opentelemetry/api/build/esm/api/propagation.js.map +1 -0
  21. package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js +79 -0
  22. package/dist/node_modules/@opentelemetry/api/build/esm/api/trace.js.map +1 -0
  23. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js +59 -0
  24. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/context-helpers.js.map +1 -0
  25. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js +99 -0
  26. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/internal/baggage-impl.js.map +1 -0
  27. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js +31 -0
  28. package/dist/node_modules/@opentelemetry/api/build/esm/baggage/utils.js.map +1 -0
  29. package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js +69 -0
  30. package/dist/node_modules/@opentelemetry/api/build/esm/context/NoopContextManager.js.map +1 -0
  31. package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js +54 -0
  32. package/dist/node_modules/@opentelemetry/api/build/esm/context/context.js.map +1 -0
  33. package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js +22 -0
  34. package/dist/node_modules/@opentelemetry/api/build/esm/context-api.js.map +1 -0
  35. package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js +104 -0
  36. package/dist/node_modules/@opentelemetry/api/build/esm/diag/ComponentLogger.js.map +1 -0
  37. package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js +44 -0
  38. package/dist/node_modules/@opentelemetry/api/build/esm/diag/internal/logLevelLogger.js.map +1 -0
  39. package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js +43 -0
  40. package/dist/node_modules/@opentelemetry/api/build/esm/diag/types.js.map +1 -0
  41. package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js +27 -0
  42. package/dist/node_modules/@opentelemetry/api/build/esm/diag-api.js.map +1 -0
  43. package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js +62 -0
  44. package/dist/node_modules/@opentelemetry/api/build/esm/internal/global-utils.js.map +1 -0
  45. package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js +121 -0
  46. package/dist/node_modules/@opentelemetry/api/build/esm/internal/semver.js.map +1 -0
  47. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js +167 -0
  48. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeter.js.map +1 -0
  49. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js +33 -0
  50. package/dist/node_modules/@opentelemetry/api/build/esm/metrics/NoopMeterProvider.js.map +1 -0
  51. package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js +22 -0
  52. package/dist/node_modules/@opentelemetry/api/build/esm/metrics-api.js.map +1 -0
  53. package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js +21 -0
  54. package/dist/node_modules/@opentelemetry/api/build/esm/platform/node/globalThis.js.map +1 -0
  55. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js +35 -0
  56. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/NoopTextMapPropagator.js.map +1 -0
  57. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js +40 -0
  58. package/dist/node_modules/@opentelemetry/api/build/esm/propagation/TextMapPropagator.js.map +1 -0
  59. package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js +22 -0
  60. package/dist/node_modules/@opentelemetry/api/build/esm/propagation-api.js.map +1 -0
  61. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js +70 -0
  62. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NonRecordingSpan.js.map +1 -0
  63. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js +78 -0
  64. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracer.js.map +1 -0
  65. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js +34 -0
  66. package/dist/node_modules/@opentelemetry/api/build/esm/trace/NoopTracerProvider.js.map +1 -0
  67. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js +55 -0
  68. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracer.js.map +1 -0
  69. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js +56 -0
  70. package/dist/node_modules/@opentelemetry/api/build/esm/trace/ProxyTracerProvider.js.map +1 -0
  71. package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js +76 -0
  72. package/dist/node_modules/@opentelemetry/api/build/esm/trace/context-utils.js.map +1 -0
  73. package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js +27 -0
  74. package/dist/node_modules/@opentelemetry/api/build/esm/trace/invalid-span-constants.js.map +1 -0
  75. package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js +45 -0
  76. package/dist/node_modules/@opentelemetry/api/build/esm/trace/spancontext-utils.js.map +1 -0
  77. package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js +22 -0
  78. package/dist/node_modules/@opentelemetry/api/build/esm/trace/status.js.map +1 -0
  79. package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js +25 -0
  80. package/dist/node_modules/@opentelemetry/api/build/esm/trace/trace_flags.js.map +1 -0
  81. package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js +24 -0
  82. package/dist/node_modules/@opentelemetry/api/build/esm/trace-api.js.map +1 -0
  83. package/dist/node_modules/@opentelemetry/api/build/esm/version.js +20 -0
  84. package/dist/node_modules/@opentelemetry/api/build/esm/version.js.map +1 -0
  85. package/dist/node_modules/ai/dist/index.js +2870 -0
  86. package/dist/node_modules/ai/dist/index.js.map +1 -0
  87. package/dist/node_modules/nanoid/non-secure/index.js +13 -0
  88. package/dist/node_modules/nanoid/non-secure/index.js.map +1 -0
  89. package/dist/node_modules/secure-json-parse/index.js +133 -0
  90. package/dist/node_modules/secure-json-parse/index.js.map +1 -0
  91. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js +37 -0
  92. package/dist/node_modules/zod-to-json-schema/dist/esm/Options.js.map +1 -0
  93. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js +26 -0
  94. package/dist/node_modules/zod-to-json-schema/dist/esm/Refs.js.map +1 -0
  95. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js +17 -0
  96. package/dist/node_modules/zod-to-json-schema/dist/esm/errorMessages.js.map +1 -0
  97. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js +11 -0
  98. package/dist/node_modules/zod-to-json-schema/dist/esm/getRelativePath.js.map +1 -0
  99. package/dist/node_modules/zod-to-json-schema/dist/esm/index.js +8 -0
  100. package/dist/node_modules/zod-to-json-schema/dist/esm/index.js.map +1 -0
  101. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js +66 -0
  102. package/dist/node_modules/zod-to-json-schema/dist/esm/parseDef.js.map +1 -0
  103. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js +21 -0
  104. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/any.js.map +1 -0
  105. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js +30 -0
  106. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/array.js.map +1 -0
  107. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js +53 -0
  108. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/bigint.js.map +1 -0
  109. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js +8 -0
  110. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/boolean.js.map +1 -0
  111. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js +8 -0
  112. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/branded.js.map +1 -0
  113. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js +8 -0
  114. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/catch.js.map +1 -0
  115. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js +50 -0
  116. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/date.js.map +1 -0
  117. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js +11 -0
  118. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/default.js.map +1 -0
  119. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js +11 -0
  120. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/effects.js.map +1 -0
  121. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js +9 -0
  122. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/enum.js.map +1 -0
  123. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js +56 -0
  124. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/intersection.js.map +1 -0
  125. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js +24 -0
  126. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/literal.js.map +1 -0
  127. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js +30 -0
  128. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/map.js.map +1 -0
  129. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js +19 -0
  130. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nativeEnum.js.map +1 -0
  131. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js +15 -0
  132. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/never.js.map +1 -0
  133. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js +13 -0
  134. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/null.js.map +1 -0
  135. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js +37 -0
  136. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/nullable.js.map +1 -0
  137. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js +56 -0
  138. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/number.js.map +1 -0
  139. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js +76 -0
  140. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/object.js.map +1 -0
  141. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js +25 -0
  142. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/optional.js.map +1 -0
  143. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js +24 -0
  144. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/pipeline.js.map +1 -0
  145. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js +8 -0
  146. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/promise.js.map +1 -0
  147. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js +8 -0
  148. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/readonly.js.map +1 -0
  149. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js +65 -0
  150. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/record.js.map +1 -0
  151. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js +24 -0
  152. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/set.js.map +1 -0
  153. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js +350 -0
  154. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/string.js.map +1 -0
  155. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js +36 -0
  156. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/tuple.js.map +1 -0
  157. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js +10 -0
  158. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/undefined.js.map +1 -0
  159. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js +84 -0
  160. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/union.js.map +1 -0
  161. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js +8 -0
  162. package/dist/node_modules/zod-to-json-schema/dist/esm/parsers/unknown.js.map +1 -0
  163. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js +110 -0
  164. package/dist/node_modules/zod-to-json-schema/dist/esm/selectParser.js.map +1 -0
  165. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js +90 -0
  166. package/dist/node_modules/zod-to-json-schema/dist/esm/zodToJsonSchema.js.map +1 -0
  167. package/dist/src/agent.d.ts +3 -0
  168. package/dist/src/agent.d.ts.map +1 -1
  169. package/dist/src/agent.js +93 -291
  170. package/dist/src/agent.js.map +1 -1
  171. package/dist/src/agents/execution.d.ts +1 -1
  172. package/dist/src/agents/execution.d.ts.map +1 -1
  173. package/dist/src/agents/execution.js +28 -43
  174. package/dist/src/agents/execution.js.map +1 -1
  175. package/dist/src/agents/planning.d.ts +1 -1
  176. package/dist/src/agents/planning.d.ts.map +1 -1
  177. package/dist/src/agents/planning.js +60 -67
  178. package/dist/src/agents/planning.js.map +1 -1
  179. package/dist/src/agents/research.d.ts +1 -1
  180. package/dist/src/agents/research.d.ts.map +1 -1
  181. package/dist/src/agents/research.js +68 -91
  182. package/dist/src/agents/research.js.map +1 -1
  183. package/dist/src/prompt-builder.d.ts.map +1 -1
  184. package/dist/src/prompt-builder.js +68 -36
  185. package/dist/src/prompt-builder.js.map +1 -1
  186. package/dist/src/structured-extraction.d.ts +2 -2
  187. package/dist/src/structured-extraction.d.ts.map +1 -1
  188. package/dist/src/structured-extraction.js +51 -110
  189. package/dist/src/structured-extraction.js.map +1 -1
  190. package/dist/src/workflow/config.d.ts +3 -0
  191. package/dist/src/workflow/config.d.ts.map +1 -0
  192. package/dist/src/workflow/config.js +43 -0
  193. package/dist/src/workflow/config.js.map +1 -0
  194. package/dist/src/workflow/steps/build.d.ts +3 -0
  195. package/dist/src/workflow/steps/build.d.ts.map +1 -0
  196. package/dist/src/workflow/steps/build.js +64 -0
  197. package/dist/src/workflow/steps/build.js.map +1 -0
  198. package/dist/src/workflow/steps/plan.d.ts +3 -0
  199. package/dist/src/workflow/steps/plan.d.ts.map +1 -0
  200. package/dist/src/workflow/steps/plan.js +86 -0
  201. package/dist/src/workflow/steps/plan.js.map +1 -0
  202. package/dist/src/workflow/steps/research.d.ts +3 -0
  203. package/dist/src/workflow/steps/research.d.ts.map +1 -0
  204. package/dist/src/workflow/steps/research.js +124 -0
  205. package/dist/src/workflow/steps/research.js.map +1 -0
  206. package/dist/src/workflow/types.d.ts +48 -0
  207. package/dist/src/workflow/types.d.ts.map +1 -0
  208. package/dist/src/workflow/utils.d.ts +12 -0
  209. package/dist/src/workflow/utils.d.ts.map +1 -0
  210. package/dist/src/workflow/utils.js +38 -0
  211. package/dist/src/workflow/utils.js.map +1 -0
  212. package/package.json +5 -2
  213. package/src/agent.ts +112 -321
  214. package/src/agents/execution.ts +28 -43
  215. package/src/agents/planning.ts +60 -67
  216. package/src/agents/research.ts +68 -91
  217. package/src/prompt-builder.ts +71 -37
  218. package/src/structured-extraction.ts +58 -115
  219. package/src/workflow/config.ts +42 -0
  220. package/src/workflow/steps/build.ts +87 -0
  221. package/src/workflow/steps/plan.ts +112 -0
  222. package/src/workflow/steps/research.ts +156 -0
  223. package/src/workflow/types.ts +53 -0
  224. package/src/workflow/utils.ts +50 -0
@@ -0,0 +1,576 @@
1
+ import { InvalidArgumentError, LoadAPIKeyError, APICallError, TypeValidationError, EmptyResponseBodyError, JSONParseError } from '../../provider/dist/index.js';
2
+ import { customAlphabet } from '../../../nanoid/non-secure/index.js';
3
+ import SecureJSON from '../../../secure-json-parse/index.js';
4
+
5
+ // src/combine-headers.ts
6
+ function combineHeaders(...headers) {
7
+ return headers.reduce(
8
+ (combinedHeaders, currentHeaders) => ({
9
+ ...combinedHeaders,
10
+ ...currentHeaders != null ? currentHeaders : {}
11
+ }),
12
+ {}
13
+ );
14
+ }
15
+
16
+ // src/convert-async-iterator-to-readable-stream.ts
17
+ function convertAsyncIteratorToReadableStream(iterator) {
18
+ return new ReadableStream({
19
+ /**
20
+ * Called when the consumer wants to pull more data from the stream.
21
+ *
22
+ * @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.
23
+ * @returns {Promise<void>}
24
+ */
25
+ async pull(controller) {
26
+ try {
27
+ const { value, done } = await iterator.next();
28
+ if (done) {
29
+ controller.close();
30
+ } else {
31
+ controller.enqueue(value);
32
+ }
33
+ } catch (error) {
34
+ controller.error(error);
35
+ }
36
+ },
37
+ /**
38
+ * Called when the consumer cancels the stream.
39
+ */
40
+ cancel() {
41
+ }
42
+ });
43
+ }
44
+
45
+ // src/delay.ts
46
+ async function delay(delayInMs) {
47
+ return delayInMs == null ? Promise.resolve() : new Promise((resolve2) => setTimeout(resolve2, delayInMs));
48
+ }
49
+
50
+ // src/event-source-parser-stream.ts
51
+ function createEventSourceParserStream() {
52
+ let buffer = "";
53
+ let event = void 0;
54
+ let data = [];
55
+ let lastEventId = void 0;
56
+ let retry = void 0;
57
+ function parseLine(line, controller) {
58
+ if (line === "") {
59
+ dispatchEvent(controller);
60
+ return;
61
+ }
62
+ if (line.startsWith(":")) {
63
+ return;
64
+ }
65
+ const colonIndex = line.indexOf(":");
66
+ if (colonIndex === -1) {
67
+ handleField(line, "");
68
+ return;
69
+ }
70
+ const field = line.slice(0, colonIndex);
71
+ const valueStart = colonIndex + 1;
72
+ const value = valueStart < line.length && line[valueStart] === " " ? line.slice(valueStart + 1) : line.slice(valueStart);
73
+ handleField(field, value);
74
+ }
75
+ function dispatchEvent(controller) {
76
+ if (data.length > 0) {
77
+ controller.enqueue({
78
+ event,
79
+ data: data.join("\n"),
80
+ id: lastEventId,
81
+ retry
82
+ });
83
+ data = [];
84
+ event = void 0;
85
+ retry = void 0;
86
+ }
87
+ }
88
+ function handleField(field, value) {
89
+ switch (field) {
90
+ case "event":
91
+ event = value;
92
+ break;
93
+ case "data":
94
+ data.push(value);
95
+ break;
96
+ case "id":
97
+ lastEventId = value;
98
+ break;
99
+ case "retry":
100
+ const parsedRetry = parseInt(value, 10);
101
+ if (!isNaN(parsedRetry)) {
102
+ retry = parsedRetry;
103
+ }
104
+ break;
105
+ }
106
+ }
107
+ return new TransformStream({
108
+ transform(chunk, controller) {
109
+ const { lines, incompleteLine } = splitLines(buffer, chunk);
110
+ buffer = incompleteLine;
111
+ for (let i = 0; i < lines.length; i++) {
112
+ parseLine(lines[i], controller);
113
+ }
114
+ },
115
+ flush(controller) {
116
+ parseLine(buffer, controller);
117
+ dispatchEvent(controller);
118
+ }
119
+ });
120
+ }
121
+ function splitLines(buffer, chunk) {
122
+ const lines = [];
123
+ let currentLine = buffer;
124
+ for (let i = 0; i < chunk.length; ) {
125
+ const char = chunk[i++];
126
+ if (char === "\n") {
127
+ lines.push(currentLine);
128
+ currentLine = "";
129
+ } else if (char === "\r") {
130
+ lines.push(currentLine);
131
+ currentLine = "";
132
+ if (chunk[i] === "\n") {
133
+ i++;
134
+ }
135
+ } else {
136
+ currentLine += char;
137
+ }
138
+ }
139
+ return { lines, incompleteLine: currentLine };
140
+ }
141
+
142
+ // src/extract-response-headers.ts
143
+ function extractResponseHeaders(response) {
144
+ const headers = {};
145
+ response.headers.forEach((value, key) => {
146
+ headers[key] = value;
147
+ });
148
+ return headers;
149
+ }
150
+ var createIdGenerator = ({
151
+ prefix,
152
+ size: defaultSize = 16,
153
+ alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
154
+ separator = "-"
155
+ } = {}) => {
156
+ const generator = customAlphabet(alphabet, defaultSize);
157
+ if (prefix == null) {
158
+ return generator;
159
+ }
160
+ if (alphabet.includes(separator)) {
161
+ throw new InvalidArgumentError({
162
+ argument: "separator",
163
+ message: `The separator "${separator}" must not be part of the alphabet "${alphabet}".`
164
+ });
165
+ }
166
+ return (size) => `${prefix}${separator}${generator(size)}`;
167
+ };
168
+ createIdGenerator();
169
+
170
+ // src/get-error-message.ts
171
+ function getErrorMessage(error) {
172
+ if (error == null) {
173
+ return "unknown error";
174
+ }
175
+ if (typeof error === "string") {
176
+ return error;
177
+ }
178
+ if (error instanceof Error) {
179
+ return error.message;
180
+ }
181
+ return JSON.stringify(error);
182
+ }
183
+
184
+ // src/remove-undefined-entries.ts
185
+ function removeUndefinedEntries(record) {
186
+ return Object.fromEntries(
187
+ Object.entries(record).filter(([_key, value]) => value != null)
188
+ );
189
+ }
190
+
191
+ // src/is-abort-error.ts
192
+ function isAbortError(error) {
193
+ return error instanceof Error && (error.name === "AbortError" || error.name === "TimeoutError");
194
+ }
195
+ function loadApiKey({
196
+ apiKey,
197
+ environmentVariableName,
198
+ apiKeyParameterName = "apiKey",
199
+ description
200
+ }) {
201
+ if (typeof apiKey === "string") {
202
+ return apiKey;
203
+ }
204
+ if (apiKey != null) {
205
+ throw new LoadAPIKeyError({
206
+ message: `${description} API key must be a string.`
207
+ });
208
+ }
209
+ if (typeof process === "undefined") {
210
+ throw new LoadAPIKeyError({
211
+ message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`
212
+ });
213
+ }
214
+ apiKey = process.env[environmentVariableName];
215
+ if (apiKey == null) {
216
+ throw new LoadAPIKeyError({
217
+ message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`
218
+ });
219
+ }
220
+ if (typeof apiKey !== "string") {
221
+ throw new LoadAPIKeyError({
222
+ message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`
223
+ });
224
+ }
225
+ return apiKey;
226
+ }
227
+
228
+ // src/validator.ts
229
+ var validatorSymbol = Symbol.for("vercel.ai.validator");
230
+ function validator(validate) {
231
+ return { [validatorSymbol]: true, validate };
232
+ }
233
+ function isValidator(value) {
234
+ return typeof value === "object" && value !== null && validatorSymbol in value && value[validatorSymbol] === true && "validate" in value;
235
+ }
236
+ function asValidator(value) {
237
+ return isValidator(value) ? value : zodValidator(value);
238
+ }
239
+ function zodValidator(zodSchema) {
240
+ return validator((value) => {
241
+ const result = zodSchema.safeParse(value);
242
+ return result.success ? { success: true, value: result.data } : { success: false, error: result.error };
243
+ });
244
+ }
245
+
246
+ // src/validate-types.ts
247
+ function validateTypes({
248
+ value,
249
+ schema: inputSchema
250
+ }) {
251
+ const result = safeValidateTypes({ value, schema: inputSchema });
252
+ if (!result.success) {
253
+ throw TypeValidationError.wrap({ value, cause: result.error });
254
+ }
255
+ return result.value;
256
+ }
257
+ function safeValidateTypes({
258
+ value,
259
+ schema
260
+ }) {
261
+ const validator2 = asValidator(schema);
262
+ try {
263
+ if (validator2.validate == null) {
264
+ return { success: true, value };
265
+ }
266
+ const result = validator2.validate(value);
267
+ if (result.success) {
268
+ return result;
269
+ }
270
+ return {
271
+ success: false,
272
+ error: TypeValidationError.wrap({ value, cause: result.error })
273
+ };
274
+ } catch (error) {
275
+ return {
276
+ success: false,
277
+ error: TypeValidationError.wrap({ value, cause: error })
278
+ };
279
+ }
280
+ }
281
+
282
+ // src/parse-json.ts
283
+ function parseJSON({
284
+ text,
285
+ schema
286
+ }) {
287
+ try {
288
+ const value = SecureJSON.parse(text);
289
+ if (schema == null) {
290
+ return value;
291
+ }
292
+ return validateTypes({ value, schema });
293
+ } catch (error) {
294
+ if (JSONParseError.isInstance(error) || TypeValidationError.isInstance(error)) {
295
+ throw error;
296
+ }
297
+ throw new JSONParseError({ text, cause: error });
298
+ }
299
+ }
300
+ function safeParseJSON({
301
+ text,
302
+ schema
303
+ }) {
304
+ try {
305
+ const value = SecureJSON.parse(text);
306
+ if (schema == null) {
307
+ return { success: true, value, rawValue: value };
308
+ }
309
+ const validationResult = safeValidateTypes({ value, schema });
310
+ return validationResult.success ? { ...validationResult, rawValue: value } : validationResult;
311
+ } catch (error) {
312
+ return {
313
+ success: false,
314
+ error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error })
315
+ };
316
+ }
317
+ }
318
+ function parseProviderOptions({
319
+ provider,
320
+ providerOptions,
321
+ schema
322
+ }) {
323
+ if ((providerOptions == null ? void 0 : providerOptions[provider]) == null) {
324
+ return void 0;
325
+ }
326
+ const parsedProviderOptions = safeValidateTypes({
327
+ value: providerOptions[provider],
328
+ schema
329
+ });
330
+ if (!parsedProviderOptions.success) {
331
+ throw new InvalidArgumentError({
332
+ argument: "providerOptions",
333
+ message: `invalid ${provider} provider options`,
334
+ cause: parsedProviderOptions.error
335
+ });
336
+ }
337
+ return parsedProviderOptions.value;
338
+ }
339
+ var getOriginalFetch2 = () => globalThis.fetch;
340
+ var postJsonToApi = async ({
341
+ url,
342
+ headers,
343
+ body,
344
+ failedResponseHandler,
345
+ successfulResponseHandler,
346
+ abortSignal,
347
+ fetch
348
+ }) => postToApi({
349
+ url,
350
+ headers: {
351
+ "Content-Type": "application/json",
352
+ ...headers
353
+ },
354
+ body: {
355
+ content: JSON.stringify(body),
356
+ values: body
357
+ },
358
+ failedResponseHandler,
359
+ successfulResponseHandler,
360
+ abortSignal,
361
+ fetch
362
+ });
363
+ var postToApi = async ({
364
+ url,
365
+ headers = {},
366
+ body,
367
+ successfulResponseHandler,
368
+ failedResponseHandler,
369
+ abortSignal,
370
+ fetch = getOriginalFetch2()
371
+ }) => {
372
+ try {
373
+ const response = await fetch(url, {
374
+ method: "POST",
375
+ headers: removeUndefinedEntries(headers),
376
+ body: body.content,
377
+ signal: abortSignal
378
+ });
379
+ const responseHeaders = extractResponseHeaders(response);
380
+ if (!response.ok) {
381
+ let errorInformation;
382
+ try {
383
+ errorInformation = await failedResponseHandler({
384
+ response,
385
+ url,
386
+ requestBodyValues: body.values
387
+ });
388
+ } catch (error) {
389
+ if (isAbortError(error) || APICallError.isInstance(error)) {
390
+ throw error;
391
+ }
392
+ throw new APICallError({
393
+ message: "Failed to process error response",
394
+ cause: error,
395
+ statusCode: response.status,
396
+ url,
397
+ responseHeaders,
398
+ requestBodyValues: body.values
399
+ });
400
+ }
401
+ throw errorInformation.value;
402
+ }
403
+ try {
404
+ return await successfulResponseHandler({
405
+ response,
406
+ url,
407
+ requestBodyValues: body.values
408
+ });
409
+ } catch (error) {
410
+ if (error instanceof Error) {
411
+ if (isAbortError(error) || APICallError.isInstance(error)) {
412
+ throw error;
413
+ }
414
+ }
415
+ throw new APICallError({
416
+ message: "Failed to process successful response",
417
+ cause: error,
418
+ statusCode: response.status,
419
+ url,
420
+ responseHeaders,
421
+ requestBodyValues: body.values
422
+ });
423
+ }
424
+ } catch (error) {
425
+ if (isAbortError(error)) {
426
+ throw error;
427
+ }
428
+ if (error instanceof TypeError && error.message === "fetch failed") {
429
+ const cause = error.cause;
430
+ if (cause != null) {
431
+ throw new APICallError({
432
+ message: `Cannot connect to API: ${cause.message}`,
433
+ cause,
434
+ url,
435
+ requestBodyValues: body.values,
436
+ isRetryable: true
437
+ // retry when network error
438
+ });
439
+ }
440
+ }
441
+ throw error;
442
+ }
443
+ };
444
+
445
+ // src/resolve.ts
446
+ async function resolve(value) {
447
+ if (typeof value === "function") {
448
+ value = value();
449
+ }
450
+ return Promise.resolve(value);
451
+ }
452
+ var createJsonErrorResponseHandler = ({
453
+ errorSchema,
454
+ errorToMessage,
455
+ isRetryable
456
+ }) => async ({ response, url, requestBodyValues }) => {
457
+ const responseBody = await response.text();
458
+ const responseHeaders = extractResponseHeaders(response);
459
+ if (responseBody.trim() === "") {
460
+ return {
461
+ responseHeaders,
462
+ value: new APICallError({
463
+ message: response.statusText,
464
+ url,
465
+ requestBodyValues,
466
+ statusCode: response.status,
467
+ responseHeaders,
468
+ responseBody,
469
+ isRetryable: isRetryable == null ? void 0 : isRetryable(response)
470
+ })
471
+ };
472
+ }
473
+ try {
474
+ const parsedError = parseJSON({
475
+ text: responseBody,
476
+ schema: errorSchema
477
+ });
478
+ return {
479
+ responseHeaders,
480
+ value: new APICallError({
481
+ message: errorToMessage(parsedError),
482
+ url,
483
+ requestBodyValues,
484
+ statusCode: response.status,
485
+ responseHeaders,
486
+ responseBody,
487
+ data: parsedError,
488
+ isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)
489
+ })
490
+ };
491
+ } catch (parseError) {
492
+ return {
493
+ responseHeaders,
494
+ value: new APICallError({
495
+ message: response.statusText,
496
+ url,
497
+ requestBodyValues,
498
+ statusCode: response.status,
499
+ responseHeaders,
500
+ responseBody,
501
+ isRetryable: isRetryable == null ? void 0 : isRetryable(response)
502
+ })
503
+ };
504
+ }
505
+ };
506
+ var createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {
507
+ const responseHeaders = extractResponseHeaders(response);
508
+ if (response.body == null) {
509
+ throw new EmptyResponseBodyError({});
510
+ }
511
+ return {
512
+ responseHeaders,
513
+ value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(createEventSourceParserStream()).pipeThrough(
514
+ new TransformStream({
515
+ transform({ data }, controller) {
516
+ if (data === "[DONE]") {
517
+ return;
518
+ }
519
+ controller.enqueue(
520
+ safeParseJSON({
521
+ text: data,
522
+ schema: chunkSchema
523
+ })
524
+ );
525
+ }
526
+ })
527
+ )
528
+ };
529
+ };
530
+ var createJsonResponseHandler = (responseSchema) => async ({ response, url, requestBodyValues }) => {
531
+ const responseBody = await response.text();
532
+ const parsedResult = safeParseJSON({
533
+ text: responseBody,
534
+ schema: responseSchema
535
+ });
536
+ const responseHeaders = extractResponseHeaders(response);
537
+ if (!parsedResult.success) {
538
+ throw new APICallError({
539
+ message: "Invalid JSON response",
540
+ cause: parsedResult.error,
541
+ statusCode: response.status,
542
+ responseHeaders,
543
+ responseBody,
544
+ url,
545
+ requestBodyValues
546
+ });
547
+ }
548
+ return {
549
+ responseHeaders,
550
+ value: parsedResult.value,
551
+ rawValue: parsedResult.rawValue
552
+ };
553
+ };
554
+
555
+ // src/uint8-utils.ts
556
+ var { btoa, atob } = globalThis;
557
+ function convertBase64ToUint8Array(base64String) {
558
+ const base64Url = base64String.replace(/-/g, "+").replace(/_/g, "/");
559
+ const latin1string = atob(base64Url);
560
+ return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));
561
+ }
562
+ function convertUint8ArrayToBase64(array) {
563
+ let latin1string = "";
564
+ for (let i = 0; i < array.length; i++) {
565
+ latin1string += String.fromCodePoint(array[i]);
566
+ }
567
+ return btoa(latin1string);
568
+ }
569
+
570
+ // src/without-trailing-slash.ts
571
+ function withoutTrailingSlash(url) {
572
+ return url == null ? void 0 : url.replace(/\/$/, "");
573
+ }
574
+
575
+ export { asValidator, combineHeaders, convertAsyncIteratorToReadableStream, convertBase64ToUint8Array, convertUint8ArrayToBase64, createEventSourceParserStream, createEventSourceResponseHandler, createIdGenerator, createJsonErrorResponseHandler, createJsonResponseHandler, delay, extractResponseHeaders, getErrorMessage, isAbortError, isValidator, loadApiKey, parseJSON, parseProviderOptions, postJsonToApi, postToApi, removeUndefinedEntries, resolve, safeParseJSON, safeValidateTypes, validateTypes, validator, validatorSymbol, withoutTrailingSlash, zodValidator };
576
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../../../node_modules/@ai-sdk/provider-utils/dist/index.mjs"],"sourcesContent":["// src/combine-headers.ts\nfunction combineHeaders(...headers) {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...currentHeaders != null ? currentHeaders : {}\n }),\n {}\n );\n}\n\n// src/convert-async-iterator-to-readable-stream.ts\nfunction convertAsyncIteratorToReadableStream(iterator) {\n return new ReadableStream({\n /**\n * Called when the consumer wants to pull more data from the stream.\n *\n * @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.\n * @returns {Promise<void>}\n */\n async pull(controller) {\n try {\n const { value, done } = await iterator.next();\n if (done) {\n controller.close();\n } else {\n controller.enqueue(value);\n }\n } catch (error) {\n controller.error(error);\n }\n },\n /**\n * Called when the consumer cancels the stream.\n */\n cancel() {\n }\n });\n}\n\n// src/delay.ts\nasync function delay(delayInMs) {\n return delayInMs == null ? Promise.resolve() : new Promise((resolve2) => setTimeout(resolve2, delayInMs));\n}\n\n// src/event-source-parser-stream.ts\nfunction createEventSourceParserStream() {\n let buffer = \"\";\n let event = void 0;\n let data = [];\n let lastEventId = void 0;\n let retry = void 0;\n function parseLine(line, controller) {\n if (line === \"\") {\n dispatchEvent(controller);\n return;\n }\n if (line.startsWith(\":\")) {\n return;\n }\n const colonIndex = line.indexOf(\":\");\n if (colonIndex === -1) {\n handleField(line, \"\");\n return;\n }\n const field = line.slice(0, colonIndex);\n const valueStart = colonIndex + 1;\n const value = valueStart < line.length && line[valueStart] === \" \" ? line.slice(valueStart + 1) : line.slice(valueStart);\n handleField(field, value);\n }\n function dispatchEvent(controller) {\n if (data.length > 0) {\n controller.enqueue({\n event,\n data: data.join(\"\\n\"),\n id: lastEventId,\n retry\n });\n data = [];\n event = void 0;\n retry = void 0;\n }\n }\n function handleField(field, value) {\n switch (field) {\n case \"event\":\n event = value;\n break;\n case \"data\":\n data.push(value);\n break;\n case \"id\":\n lastEventId = value;\n break;\n case \"retry\":\n const parsedRetry = parseInt(value, 10);\n if (!isNaN(parsedRetry)) {\n retry = parsedRetry;\n }\n break;\n }\n }\n return new TransformStream({\n transform(chunk, controller) {\n const { lines, incompleteLine } = splitLines(buffer, chunk);\n buffer = incompleteLine;\n for (let i = 0; i < lines.length; i++) {\n parseLine(lines[i], controller);\n }\n },\n flush(controller) {\n parseLine(buffer, controller);\n dispatchEvent(controller);\n }\n });\n}\nfunction splitLines(buffer, chunk) {\n const lines = [];\n let currentLine = buffer;\n for (let i = 0; i < chunk.length; ) {\n const char = chunk[i++];\n if (char === \"\\n\") {\n lines.push(currentLine);\n currentLine = \"\";\n } else if (char === \"\\r\") {\n lines.push(currentLine);\n currentLine = \"\";\n if (chunk[i] === \"\\n\") {\n i++;\n }\n } else {\n currentLine += char;\n }\n }\n return { lines, incompleteLine: currentLine };\n}\n\n// src/extract-response-headers.ts\nfunction extractResponseHeaders(response) {\n const headers = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return headers;\n}\n\n// src/generate-id.ts\nimport { InvalidArgumentError } from \"@ai-sdk/provider\";\nimport { customAlphabet } from \"nanoid/non-secure\";\nvar createIdGenerator = ({\n prefix,\n size: defaultSize = 16,\n alphabet = \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\",\n separator = \"-\"\n} = {}) => {\n const generator = customAlphabet(alphabet, defaultSize);\n if (prefix == null) {\n return generator;\n }\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: \"separator\",\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`\n });\n }\n return (size) => `${prefix}${separator}${generator(size)}`;\n};\nvar generateId = createIdGenerator();\n\n// src/get-error-message.ts\nfunction getErrorMessage(error) {\n if (error == null) {\n return \"unknown error\";\n }\n if (typeof error === \"string\") {\n return error;\n }\n if (error instanceof Error) {\n return error.message;\n }\n return JSON.stringify(error);\n}\n\n// src/get-from-api.ts\nimport { APICallError } from \"@ai-sdk/provider\";\n\n// src/remove-undefined-entries.ts\nfunction removeUndefinedEntries(record) {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null)\n );\n}\n\n// src/is-abort-error.ts\nfunction isAbortError(error) {\n return error instanceof Error && (error.name === \"AbortError\" || error.name === \"TimeoutError\");\n}\n\n// src/get-from-api.ts\nvar getOriginalFetch = () => globalThis.fetch;\nvar getFromApi = async ({\n url,\n headers = {},\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch()\n}) => {\n try {\n const response = await fetch(url, {\n method: \"GET\",\n headers: removeUndefinedEntries(headers),\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n throw new APICallError({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n throw errorInformation.value;\n }\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: {}\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: {}\n });\n }\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n if (error instanceof TypeError && error.message === \"fetch failed\") {\n const cause = error.cause;\n if (cause != null) {\n throw new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n isRetryable: true,\n requestBodyValues: {}\n });\n }\n }\n throw error;\n }\n};\n\n// src/load-api-key.ts\nimport { LoadAPIKeyError } from \"@ai-sdk/provider\";\nfunction loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = \"apiKey\",\n description\n}) {\n if (typeof apiKey === \"string\") {\n return apiKey;\n }\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`\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 apiKey = process.env[environmentVariableName];\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 if (typeof apiKey !== \"string\") {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return apiKey;\n}\n\n// src/load-optional-setting.ts\nfunction loadOptionalSetting({\n settingValue,\n environmentVariableName\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null || typeof process === \"undefined\") {\n return void 0;\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null || typeof settingValue !== \"string\") {\n return void 0;\n }\n return settingValue;\n}\n\n// src/load-setting.ts\nimport { LoadSettingError } from \"@ai-sdk/provider\";\nfunction loadSetting({\n settingValue,\n environmentVariableName,\n settingName,\n description\n}) {\n if (typeof settingValue === \"string\") {\n return settingValue;\n }\n if (settingValue != null) {\n throw new LoadSettingError({\n message: `${description} setting must be a string.`\n });\n }\n if (typeof process === \"undefined\") {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter. Environment variables is not supported in this environment.`\n });\n }\n settingValue = process.env[environmentVariableName];\n if (settingValue == null) {\n throw new LoadSettingError({\n message: `${description} setting is missing. Pass it using the '${settingName}' parameter or the ${environmentVariableName} environment variable.`\n });\n }\n if (typeof settingValue !== \"string\") {\n throw new LoadSettingError({\n message: `${description} setting must be a string. The value of the ${environmentVariableName} environment variable is not a string.`\n });\n }\n return settingValue;\n}\n\n// src/parse-json.ts\nimport {\n JSONParseError,\n TypeValidationError as TypeValidationError2\n} from \"@ai-sdk/provider\";\nimport SecureJSON from \"secure-json-parse\";\n\n// src/validate-types.ts\nimport { TypeValidationError } from \"@ai-sdk/provider\";\n\n// src/validator.ts\nvar validatorSymbol = Symbol.for(\"vercel.ai.validator\");\nfunction validator(validate) {\n return { [validatorSymbol]: true, validate };\n}\nfunction isValidator(value) {\n return typeof value === \"object\" && value !== null && validatorSymbol in value && value[validatorSymbol] === true && \"validate\" in value;\n}\nfunction asValidator(value) {\n return isValidator(value) ? value : zodValidator(value);\n}\nfunction zodValidator(zodSchema) {\n return validator((value) => {\n const result = zodSchema.safeParse(value);\n return result.success ? { success: true, value: result.data } : { success: false, error: result.error };\n });\n}\n\n// src/validate-types.ts\nfunction validateTypes({\n value,\n schema: inputSchema\n}) {\n const result = safeValidateTypes({ value, schema: inputSchema });\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n return result.value;\n}\nfunction safeValidateTypes({\n value,\n schema\n}) {\n const validator2 = asValidator(schema);\n try {\n if (validator2.validate == null) {\n return { success: true, value };\n }\n const result = validator2.validate(value);\n if (result.success) {\n return result;\n }\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error })\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error })\n };\n }\n}\n\n// src/parse-json.ts\nfunction parseJSON({\n text,\n schema\n}) {\n try {\n const value = SecureJSON.parse(text);\n if (schema == null) {\n return value;\n }\n return validateTypes({ value, schema });\n } catch (error) {\n if (JSONParseError.isInstance(error) || TypeValidationError2.isInstance(error)) {\n throw error;\n }\n throw new JSONParseError({ text, cause: error });\n }\n}\nfunction safeParseJSON({\n text,\n schema\n}) {\n try {\n const value = SecureJSON.parse(text);\n if (schema == null) {\n return { success: true, value, rawValue: value };\n }\n const validationResult = safeValidateTypes({ value, schema });\n return validationResult.success ? { ...validationResult, rawValue: value } : validationResult;\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error) ? error : new JSONParseError({ text, cause: error })\n };\n }\n}\nfunction isParsableJson(input) {\n try {\n SecureJSON.parse(input);\n return true;\n } catch (e) {\n return false;\n }\n}\n\n// src/parse-provider-options.ts\nimport { InvalidArgumentError as InvalidArgumentError2 } from \"@ai-sdk/provider\";\nfunction parseProviderOptions({\n provider,\n providerOptions,\n schema\n}) {\n if ((providerOptions == null ? void 0 : providerOptions[provider]) == null) {\n return void 0;\n }\n const parsedProviderOptions = safeValidateTypes({\n value: providerOptions[provider],\n schema\n });\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError2({\n argument: \"providerOptions\",\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error\n });\n }\n return parsedProviderOptions.value;\n}\n\n// src/post-to-api.ts\nimport { APICallError as APICallError2 } from \"@ai-sdk/provider\";\nvar getOriginalFetch2 = () => globalThis.fetch;\nvar postJsonToApi = async ({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n}) => postToApi({\n url,\n headers: {\n \"Content-Type\": \"application/json\",\n ...headers\n },\n body: {\n content: JSON.stringify(body),\n values: body\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n});\nvar postFormDataToApi = async ({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n}) => postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries(formData.entries())\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch\n});\nvar postToApi = async ({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch2()\n}) => {\n try {\n const response = await fetch(url, {\n method: \"POST\",\n headers: removeUndefinedEntries(headers),\n body: body.content,\n signal: abortSignal\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!response.ok) {\n let errorInformation;\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values\n });\n } catch (error) {\n if (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n throw new APICallError2({\n message: \"Failed to process error response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n throw errorInformation.value;\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 (isAbortError(error) || APICallError2.isInstance(error)) {\n throw error;\n }\n }\n throw new APICallError2({\n message: \"Failed to process successful response\",\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values\n });\n }\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n if (error instanceof TypeError && error.message === \"fetch failed\") {\n const cause = error.cause;\n if (cause != null) {\n throw new APICallError2({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues: body.values,\n isRetryable: true\n // retry when network error\n });\n }\n }\n throw error;\n }\n};\n\n// src/resolve.ts\nasync function resolve(value) {\n if (typeof value === \"function\") {\n value = value();\n }\n return Promise.resolve(value);\n}\n\n// src/response-handler.ts\nimport { APICallError as APICallError3, EmptyResponseBodyError } from \"@ai-sdk/provider\";\nvar createJsonErrorResponseHandler = ({\n errorSchema,\n errorToMessage,\n isRetryable\n}) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n if (responseBody.trim() === \"\") {\n return {\n responseHeaders,\n value: new APICallError3({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n try {\n const parsedError = parseJSON({\n text: responseBody,\n schema: errorSchema\n });\n return {\n responseHeaders,\n value: new APICallError3({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response, parsedError)\n })\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError3({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable == null ? void 0 : isRetryable(response)\n })\n };\n }\n};\nvar createEventSourceResponseHandler = (chunkSchema) => async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(createEventSourceParserStream()).pipeThrough(\n new TransformStream({\n transform({ data }, controller) {\n if (data === \"[DONE]\") {\n return;\n }\n controller.enqueue(\n safeParseJSON({\n text: data,\n schema: chunkSchema\n })\n );\n }\n })\n )\n };\n};\nvar createJsonStreamResponseHandler = (chunkSchema) => async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n let buffer = \"\";\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream({\n transform(chunkText, controller) {\n if (chunkText.endsWith(\"\\n\")) {\n controller.enqueue(\n safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema\n })\n );\n buffer = \"\";\n } else {\n buffer += chunkText;\n }\n }\n })\n )\n };\n};\nvar createJsonResponseHandler = (responseSchema) => async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const parsedResult = safeParseJSON({\n text: responseBody,\n schema: responseSchema\n });\n const responseHeaders = extractResponseHeaders(response);\n if (!parsedResult.success) {\n throw new APICallError3({\n message: \"Invalid JSON response\",\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues\n });\n }\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue\n };\n};\nvar createBinaryResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n if (!response.body) {\n throw new APICallError3({\n message: \"Response body is empty\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0\n });\n }\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer)\n };\n } catch (error) {\n throw new APICallError3({\n message: \"Failed to read response as array buffer\",\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: void 0,\n cause: error\n });\n }\n};\nvar createStatusCodeErrorResponseHandler = () => async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n return {\n responseHeaders,\n value: new APICallError3({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody\n })\n };\n};\n\n// src/uint8-utils.ts\nvar { btoa, atob } = globalThis;\nfunction convertBase64ToUint8Array(base64String) {\n const base64Url = base64String.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, (byte) => byte.codePointAt(0));\n}\nfunction convertUint8ArrayToBase64(array) {\n let latin1string = \"\";\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n return btoa(latin1string);\n}\n\n// src/without-trailing-slash.ts\nfunction withoutTrailingSlash(url) {\n return url == null ? void 0 : url.replace(/\\/$/, \"\");\n}\nexport {\n asValidator,\n combineHeaders,\n convertAsyncIteratorToReadableStream,\n convertBase64ToUint8Array,\n convertUint8ArrayToBase64,\n createBinaryResponseHandler,\n createEventSourceParserStream,\n createEventSourceResponseHandler,\n createIdGenerator,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n createJsonStreamResponseHandler,\n createStatusCodeErrorResponseHandler,\n delay,\n extractResponseHeaders,\n generateId,\n getErrorMessage,\n getFromApi,\n isAbortError,\n isParsableJson,\n isValidator,\n loadApiKey,\n loadOptionalSetting,\n loadSetting,\n parseJSON,\n parseProviderOptions,\n postFormDataToApi,\n postJsonToApi,\n postToApi,\n removeUndefinedEntries,\n resolve,\n safeParseJSON,\n safeValidateTypes,\n validateTypes,\n validator,\n validatorSymbol,\n withoutTrailingSlash,\n zodValidator\n};\n//# sourceMappingURL=index.mjs.map"],"names":["TypeValidationError2","InvalidArgumentError2","APICallError2","APICallError3"],"mappings":"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","x_google_ignoreList":[0]}