ai 6.0.32 → 6.0.34

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 (353) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/index.js +12 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/index.mjs +12 -2
  5. package/dist/index.mjs.map +1 -1
  6. package/dist/internal/index.js +1 -1
  7. package/dist/internal/index.mjs +1 -1
  8. package/docs/02-foundations/03-prompts.mdx +2 -2
  9. package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1 -1
  10. package/docs/07-reference/01-ai-sdk-core/28-output.mdx +1 -1
  11. package/package.json +6 -4
  12. package/src/agent/agent.ts +116 -0
  13. package/src/agent/create-agent-ui-stream-response.test.ts +258 -0
  14. package/src/agent/create-agent-ui-stream-response.ts +50 -0
  15. package/src/agent/create-agent-ui-stream.ts +73 -0
  16. package/src/agent/index.ts +33 -0
  17. package/src/agent/infer-agent-tools.ts +7 -0
  18. package/src/agent/infer-agent-ui-message.test-d.ts +54 -0
  19. package/src/agent/infer-agent-ui-message.ts +11 -0
  20. package/src/agent/pipe-agent-ui-stream-to-response.ts +52 -0
  21. package/src/agent/tool-loop-agent-on-finish-callback.ts +31 -0
  22. package/src/agent/tool-loop-agent-on-step-finish-callback.ts +11 -0
  23. package/src/agent/tool-loop-agent-settings.ts +182 -0
  24. package/src/agent/tool-loop-agent.test-d.ts +114 -0
  25. package/src/agent/tool-loop-agent.test.ts +442 -0
  26. package/src/agent/tool-loop-agent.ts +114 -0
  27. package/src/embed/__snapshots__/embed-many.test.ts.snap +191 -0
  28. package/src/embed/__snapshots__/embed.test.ts.snap +81 -0
  29. package/src/embed/embed-many-result.ts +53 -0
  30. package/src/embed/embed-many.test.ts +653 -0
  31. package/src/embed/embed-many.ts +378 -0
  32. package/src/embed/embed-result.ts +50 -0
  33. package/src/embed/embed.test.ts +298 -0
  34. package/src/embed/embed.ts +211 -0
  35. package/src/embed/index.ts +4 -0
  36. package/src/error/index.ts +34 -0
  37. package/src/error/invalid-argument-error.ts +34 -0
  38. package/src/error/invalid-stream-part-error.ts +28 -0
  39. package/src/error/invalid-tool-approval-error.ts +26 -0
  40. package/src/error/invalid-tool-input-error.ts +33 -0
  41. package/src/error/no-image-generated-error.ts +39 -0
  42. package/src/error/no-object-generated-error.ts +70 -0
  43. package/src/error/no-output-generated-error.ts +26 -0
  44. package/src/error/no-speech-generated-error.ts +18 -0
  45. package/src/error/no-such-tool-error.ts +35 -0
  46. package/src/error/no-transcript-generated-error.ts +20 -0
  47. package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
  48. package/src/error/tool-call-repair-error.ts +30 -0
  49. package/src/error/unsupported-model-version-error.ts +23 -0
  50. package/src/error/verify-no-object-generated-error.ts +27 -0
  51. package/src/generate-image/generate-image-result.ts +42 -0
  52. package/src/generate-image/generate-image.test.ts +1420 -0
  53. package/src/generate-image/generate-image.ts +360 -0
  54. package/src/generate-image/index.ts +18 -0
  55. package/src/generate-object/__snapshots__/generate-object.test.ts.snap +133 -0
  56. package/src/generate-object/__snapshots__/stream-object.test.ts.snap +297 -0
  57. package/src/generate-object/generate-object-result.ts +67 -0
  58. package/src/generate-object/generate-object.test-d.ts +49 -0
  59. package/src/generate-object/generate-object.test.ts +1191 -0
  60. package/src/generate-object/generate-object.ts +518 -0
  61. package/src/generate-object/index.ts +9 -0
  62. package/src/generate-object/inject-json-instruction.test.ts +181 -0
  63. package/src/generate-object/inject-json-instruction.ts +30 -0
  64. package/src/generate-object/output-strategy.ts +415 -0
  65. package/src/generate-object/parse-and-validate-object-result.ts +111 -0
  66. package/src/generate-object/repair-text.ts +12 -0
  67. package/src/generate-object/stream-object-result.ts +120 -0
  68. package/src/generate-object/stream-object.test-d.ts +74 -0
  69. package/src/generate-object/stream-object.test.ts +1950 -0
  70. package/src/generate-object/stream-object.ts +986 -0
  71. package/src/generate-object/validate-object-generation-input.ts +144 -0
  72. package/src/generate-speech/generate-speech-result.ts +30 -0
  73. package/src/generate-speech/generate-speech.test.ts +300 -0
  74. package/src/generate-speech/generate-speech.ts +190 -0
  75. package/src/generate-speech/generated-audio-file.ts +65 -0
  76. package/src/generate-speech/index.ts +3 -0
  77. package/src/generate-text/__snapshots__/generate-text.test.ts.snap +1872 -0
  78. package/src/generate-text/__snapshots__/stream-text.test.ts.snap +1255 -0
  79. package/src/generate-text/collect-tool-approvals.test.ts +553 -0
  80. package/src/generate-text/collect-tool-approvals.ts +116 -0
  81. package/src/generate-text/content-part.ts +25 -0
  82. package/src/generate-text/execute-tool-call.ts +129 -0
  83. package/src/generate-text/extract-reasoning-content.ts +17 -0
  84. package/src/generate-text/extract-text-content.ts +15 -0
  85. package/src/generate-text/generate-text-result.ts +168 -0
  86. package/src/generate-text/generate-text.test-d.ts +68 -0
  87. package/src/generate-text/generate-text.test.ts +7011 -0
  88. package/src/generate-text/generate-text.ts +1223 -0
  89. package/src/generate-text/generated-file.ts +70 -0
  90. package/src/generate-text/index.ts +57 -0
  91. package/src/generate-text/is-approval-needed.ts +29 -0
  92. package/src/generate-text/output-utils.ts +23 -0
  93. package/src/generate-text/output.test.ts +698 -0
  94. package/src/generate-text/output.ts +590 -0
  95. package/src/generate-text/parse-tool-call.test.ts +570 -0
  96. package/src/generate-text/parse-tool-call.ts +188 -0
  97. package/src/generate-text/prepare-step.ts +103 -0
  98. package/src/generate-text/prune-messages.test.ts +720 -0
  99. package/src/generate-text/prune-messages.ts +167 -0
  100. package/src/generate-text/reasoning-output.ts +20 -0
  101. package/src/generate-text/reasoning.ts +8 -0
  102. package/src/generate-text/response-message.ts +10 -0
  103. package/src/generate-text/run-tools-transformation.test.ts +1143 -0
  104. package/src/generate-text/run-tools-transformation.ts +420 -0
  105. package/src/generate-text/smooth-stream.test.ts +2101 -0
  106. package/src/generate-text/smooth-stream.ts +162 -0
  107. package/src/generate-text/step-result.ts +238 -0
  108. package/src/generate-text/stop-condition.ts +29 -0
  109. package/src/generate-text/stream-text-result.ts +463 -0
  110. package/src/generate-text/stream-text.test-d.ts +200 -0
  111. package/src/generate-text/stream-text.test.ts +19979 -0
  112. package/src/generate-text/stream-text.ts +2505 -0
  113. package/src/generate-text/to-response-messages.test.ts +922 -0
  114. package/src/generate-text/to-response-messages.ts +163 -0
  115. package/src/generate-text/tool-approval-request-output.ts +21 -0
  116. package/src/generate-text/tool-call-repair-function.ts +27 -0
  117. package/src/generate-text/tool-call.ts +47 -0
  118. package/src/generate-text/tool-error.ts +34 -0
  119. package/src/generate-text/tool-output-denied.ts +21 -0
  120. package/src/generate-text/tool-output.ts +7 -0
  121. package/src/generate-text/tool-result.ts +36 -0
  122. package/src/generate-text/tool-set.ts +14 -0
  123. package/src/global.ts +24 -0
  124. package/src/index.ts +50 -0
  125. package/src/logger/index.ts +6 -0
  126. package/src/logger/log-warnings.test.ts +351 -0
  127. package/src/logger/log-warnings.ts +119 -0
  128. package/src/middleware/__snapshots__/simulate-streaming-middleware.test.ts.snap +64 -0
  129. package/src/middleware/add-tool-input-examples-middleware.test.ts +476 -0
  130. package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
  131. package/src/middleware/default-embedding-settings-middleware.test.ts +126 -0
  132. package/src/middleware/default-embedding-settings-middleware.ts +22 -0
  133. package/src/middleware/default-settings-middleware.test.ts +388 -0
  134. package/src/middleware/default-settings-middleware.ts +33 -0
  135. package/src/middleware/extract-json-middleware.test.ts +827 -0
  136. package/src/middleware/extract-json-middleware.ts +197 -0
  137. package/src/middleware/extract-reasoning-middleware.test.ts +1028 -0
  138. package/src/middleware/extract-reasoning-middleware.ts +238 -0
  139. package/src/middleware/index.ts +10 -0
  140. package/src/middleware/simulate-streaming-middleware.test.ts +911 -0
  141. package/src/middleware/simulate-streaming-middleware.ts +79 -0
  142. package/src/middleware/wrap-embedding-model.test.ts +358 -0
  143. package/src/middleware/wrap-embedding-model.ts +86 -0
  144. package/src/middleware/wrap-image-model.test.ts +423 -0
  145. package/src/middleware/wrap-image-model.ts +85 -0
  146. package/src/middleware/wrap-language-model.test.ts +518 -0
  147. package/src/middleware/wrap-language-model.ts +104 -0
  148. package/src/middleware/wrap-provider.test.ts +120 -0
  149. package/src/middleware/wrap-provider.ts +51 -0
  150. package/src/model/as-embedding-model-v3.test.ts +319 -0
  151. package/src/model/as-embedding-model-v3.ts +24 -0
  152. package/src/model/as-image-model-v3.test.ts +409 -0
  153. package/src/model/as-image-model-v3.ts +24 -0
  154. package/src/model/as-language-model-v3.test.ts +508 -0
  155. package/src/model/as-language-model-v3.ts +103 -0
  156. package/src/model/as-provider-v3.ts +36 -0
  157. package/src/model/as-speech-model-v3.test.ts +356 -0
  158. package/src/model/as-speech-model-v3.ts +24 -0
  159. package/src/model/as-transcription-model-v3.test.ts +529 -0
  160. package/src/model/as-transcription-model-v3.ts +24 -0
  161. package/src/model/resolve-model.test.ts +244 -0
  162. package/src/model/resolve-model.ts +126 -0
  163. package/src/prompt/call-settings.ts +148 -0
  164. package/src/prompt/content-part.ts +209 -0
  165. package/src/prompt/convert-to-language-model-prompt.test.ts +2018 -0
  166. package/src/prompt/convert-to-language-model-prompt.ts +442 -0
  167. package/src/prompt/create-tool-model-output.test.ts +508 -0
  168. package/src/prompt/create-tool-model-output.ts +34 -0
  169. package/src/prompt/data-content.test.ts +15 -0
  170. package/src/prompt/data-content.ts +134 -0
  171. package/src/prompt/index.ts +27 -0
  172. package/src/prompt/invalid-data-content-error.ts +29 -0
  173. package/src/prompt/invalid-message-role-error.ts +27 -0
  174. package/src/prompt/message-conversion-error.ts +28 -0
  175. package/src/prompt/message.ts +68 -0
  176. package/src/prompt/prepare-call-settings.test.ts +159 -0
  177. package/src/prompt/prepare-call-settings.ts +108 -0
  178. package/src/prompt/prepare-tools-and-tool-choice.test.ts +461 -0
  179. package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
  180. package/src/prompt/prompt.ts +43 -0
  181. package/src/prompt/split-data-url.ts +17 -0
  182. package/src/prompt/standardize-prompt.test.ts +82 -0
  183. package/src/prompt/standardize-prompt.ts +99 -0
  184. package/src/prompt/wrap-gateway-error.ts +29 -0
  185. package/src/registry/custom-provider.test.ts +211 -0
  186. package/src/registry/custom-provider.ts +155 -0
  187. package/src/registry/index.ts +7 -0
  188. package/src/registry/no-such-provider-error.ts +41 -0
  189. package/src/registry/provider-registry.test.ts +691 -0
  190. package/src/registry/provider-registry.ts +328 -0
  191. package/src/rerank/index.ts +2 -0
  192. package/src/rerank/rerank-result.ts +70 -0
  193. package/src/rerank/rerank.test.ts +516 -0
  194. package/src/rerank/rerank.ts +237 -0
  195. package/src/telemetry/assemble-operation-name.ts +21 -0
  196. package/src/telemetry/get-base-telemetry-attributes.ts +53 -0
  197. package/src/telemetry/get-tracer.ts +20 -0
  198. package/src/telemetry/noop-tracer.ts +69 -0
  199. package/src/telemetry/record-span.ts +63 -0
  200. package/src/telemetry/select-telemetry-attributes.ts +78 -0
  201. package/src/telemetry/select-temetry-attributes.test.ts +114 -0
  202. package/src/telemetry/stringify-for-telemetry.test.ts +114 -0
  203. package/src/telemetry/stringify-for-telemetry.ts +33 -0
  204. package/src/telemetry/telemetry-settings.ts +44 -0
  205. package/src/test/mock-embedding-model-v2.ts +35 -0
  206. package/src/test/mock-embedding-model-v3.ts +48 -0
  207. package/src/test/mock-image-model-v2.ts +28 -0
  208. package/src/test/mock-image-model-v3.ts +28 -0
  209. package/src/test/mock-language-model-v2.ts +72 -0
  210. package/src/test/mock-language-model-v3.ts +77 -0
  211. package/src/test/mock-provider-v2.ts +68 -0
  212. package/src/test/mock-provider-v3.ts +80 -0
  213. package/src/test/mock-reranking-model-v3.ts +25 -0
  214. package/src/test/mock-server-response.ts +69 -0
  215. package/src/test/mock-speech-model-v2.ts +24 -0
  216. package/src/test/mock-speech-model-v3.ts +24 -0
  217. package/src/test/mock-tracer.ts +156 -0
  218. package/src/test/mock-transcription-model-v2.ts +24 -0
  219. package/src/test/mock-transcription-model-v3.ts +24 -0
  220. package/src/test/mock-values.ts +4 -0
  221. package/src/test/not-implemented.ts +3 -0
  222. package/src/text-stream/create-text-stream-response.test.ts +38 -0
  223. package/src/text-stream/create-text-stream-response.ts +18 -0
  224. package/src/text-stream/index.ts +2 -0
  225. package/src/text-stream/pipe-text-stream-to-response.test.ts +38 -0
  226. package/src/text-stream/pipe-text-stream-to-response.ts +26 -0
  227. package/src/transcribe/index.ts +2 -0
  228. package/src/transcribe/transcribe-result.ts +60 -0
  229. package/src/transcribe/transcribe.test.ts +313 -0
  230. package/src/transcribe/transcribe.ts +173 -0
  231. package/src/types/embedding-model-middleware.ts +3 -0
  232. package/src/types/embedding-model.ts +18 -0
  233. package/src/types/image-model-middleware.ts +3 -0
  234. package/src/types/image-model-response-metadata.ts +16 -0
  235. package/src/types/image-model.ts +19 -0
  236. package/src/types/index.ts +29 -0
  237. package/src/types/json-value.ts +15 -0
  238. package/src/types/language-model-middleware.ts +3 -0
  239. package/src/types/language-model-request-metadata.ts +6 -0
  240. package/src/types/language-model-response-metadata.ts +21 -0
  241. package/src/types/language-model.ts +104 -0
  242. package/src/types/provider-metadata.ts +16 -0
  243. package/src/types/provider.ts +55 -0
  244. package/src/types/reranking-model.ts +6 -0
  245. package/src/types/speech-model-response-metadata.ts +21 -0
  246. package/src/types/speech-model.ts +6 -0
  247. package/src/types/transcription-model-response-metadata.ts +16 -0
  248. package/src/types/transcription-model.ts +9 -0
  249. package/src/types/usage.ts +200 -0
  250. package/src/types/warning.ts +7 -0
  251. package/src/ui/__snapshots__/append-response-messages.test.ts.snap +416 -0
  252. package/src/ui/__snapshots__/convert-to-model-messages.test.ts.snap +419 -0
  253. package/src/ui/__snapshots__/process-chat-text-response.test.ts.snap +142 -0
  254. package/src/ui/call-completion-api.ts +157 -0
  255. package/src/ui/chat-transport.ts +83 -0
  256. package/src/ui/chat.test-d.ts +233 -0
  257. package/src/ui/chat.test.ts +2695 -0
  258. package/src/ui/chat.ts +716 -0
  259. package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
  260. package/src/ui/convert-to-model-messages.test.ts +2775 -0
  261. package/src/ui/convert-to-model-messages.ts +373 -0
  262. package/src/ui/default-chat-transport.ts +36 -0
  263. package/src/ui/direct-chat-transport.test.ts +446 -0
  264. package/src/ui/direct-chat-transport.ts +118 -0
  265. package/src/ui/http-chat-transport.test.ts +185 -0
  266. package/src/ui/http-chat-transport.ts +292 -0
  267. package/src/ui/index.ts +71 -0
  268. package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
  269. package/src/ui/last-assistant-message-is-complete-with-tool-calls.test.ts +371 -0
  270. package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
  271. package/src/ui/process-text-stream.test.ts +38 -0
  272. package/src/ui/process-text-stream.ts +16 -0
  273. package/src/ui/process-ui-message-stream.test.ts +8052 -0
  274. package/src/ui/process-ui-message-stream.ts +713 -0
  275. package/src/ui/text-stream-chat-transport.ts +23 -0
  276. package/src/ui/transform-text-to-ui-message-stream.test.ts +124 -0
  277. package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
  278. package/src/ui/ui-messages.test.ts +48 -0
  279. package/src/ui/ui-messages.ts +534 -0
  280. package/src/ui/use-completion.ts +84 -0
  281. package/src/ui/validate-ui-messages.test.ts +1428 -0
  282. package/src/ui/validate-ui-messages.ts +476 -0
  283. package/src/ui-message-stream/create-ui-message-stream-response.test.ts +266 -0
  284. package/src/ui-message-stream/create-ui-message-stream-response.ts +32 -0
  285. package/src/ui-message-stream/create-ui-message-stream.test.ts +639 -0
  286. package/src/ui-message-stream/create-ui-message-stream.ts +124 -0
  287. package/src/ui-message-stream/get-response-ui-message-id.test.ts +55 -0
  288. package/src/ui-message-stream/get-response-ui-message-id.ts +24 -0
  289. package/src/ui-message-stream/handle-ui-message-stream-finish.test.ts +429 -0
  290. package/src/ui-message-stream/handle-ui-message-stream-finish.ts +135 -0
  291. package/src/ui-message-stream/index.ts +13 -0
  292. package/src/ui-message-stream/json-to-sse-transform-stream.ts +12 -0
  293. package/src/ui-message-stream/pipe-ui-message-stream-to-response.test.ts +90 -0
  294. package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +40 -0
  295. package/src/ui-message-stream/read-ui-message-stream.test.ts +122 -0
  296. package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
  297. package/src/ui-message-stream/ui-message-chunks.test-d.ts +18 -0
  298. package/src/ui-message-stream/ui-message-chunks.ts +344 -0
  299. package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
  300. package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
  301. package/src/ui-message-stream/ui-message-stream-response-init.ts +5 -0
  302. package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
  303. package/src/util/as-array.ts +3 -0
  304. package/src/util/async-iterable-stream.test.ts +241 -0
  305. package/src/util/async-iterable-stream.ts +94 -0
  306. package/src/util/consume-stream.ts +29 -0
  307. package/src/util/cosine-similarity.test.ts +57 -0
  308. package/src/util/cosine-similarity.ts +47 -0
  309. package/src/util/create-resolvable-promise.ts +30 -0
  310. package/src/util/create-stitchable-stream.test.ts +239 -0
  311. package/src/util/create-stitchable-stream.ts +112 -0
  312. package/src/util/data-url.ts +17 -0
  313. package/src/util/deep-partial.ts +84 -0
  314. package/src/util/detect-media-type.test.ts +670 -0
  315. package/src/util/detect-media-type.ts +184 -0
  316. package/src/util/download/download-function.ts +45 -0
  317. package/src/util/download/download.test.ts +69 -0
  318. package/src/util/download/download.ts +46 -0
  319. package/src/util/error-handler.ts +1 -0
  320. package/src/util/fix-json.test.ts +279 -0
  321. package/src/util/fix-json.ts +401 -0
  322. package/src/util/get-potential-start-index.test.ts +34 -0
  323. package/src/util/get-potential-start-index.ts +30 -0
  324. package/src/util/index.ts +11 -0
  325. package/src/util/is-deep-equal-data.test.ts +119 -0
  326. package/src/util/is-deep-equal-data.ts +48 -0
  327. package/src/util/is-non-empty-object.ts +5 -0
  328. package/src/util/job.ts +1 -0
  329. package/src/util/log-v2-compatibility-warning.ts +21 -0
  330. package/src/util/merge-abort-signals.test.ts +155 -0
  331. package/src/util/merge-abort-signals.ts +43 -0
  332. package/src/util/merge-objects.test.ts +118 -0
  333. package/src/util/merge-objects.ts +79 -0
  334. package/src/util/now.ts +4 -0
  335. package/src/util/parse-partial-json.test.ts +80 -0
  336. package/src/util/parse-partial-json.ts +30 -0
  337. package/src/util/prepare-headers.test.ts +51 -0
  338. package/src/util/prepare-headers.ts +14 -0
  339. package/src/util/prepare-retries.test.ts +10 -0
  340. package/src/util/prepare-retries.ts +47 -0
  341. package/src/util/retry-error.ts +41 -0
  342. package/src/util/retry-with-exponential-backoff.test.ts +446 -0
  343. package/src/util/retry-with-exponential-backoff.ts +154 -0
  344. package/src/util/serial-job-executor.test.ts +162 -0
  345. package/src/util/serial-job-executor.ts +36 -0
  346. package/src/util/simulate-readable-stream.test.ts +98 -0
  347. package/src/util/simulate-readable-stream.ts +39 -0
  348. package/src/util/split-array.test.ts +60 -0
  349. package/src/util/split-array.ts +20 -0
  350. package/src/util/value-of.ts +65 -0
  351. package/src/util/write-to-server-response.test.ts +266 -0
  352. package/src/util/write-to-server-response.ts +49 -0
  353. package/src/version.ts +5 -0
@@ -0,0 +1,1872 @@
1
+ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
2
+
3
+ exports[`generateText > options.stopWhen > 2 steps: initial, tool-result > callbacks > onFinish should send correct information 1`] = `
4
+ {
5
+ "content": [
6
+ {
7
+ "text": "Hello, world!",
8
+ "type": "text",
9
+ },
10
+ ],
11
+ "dynamicToolCalls": [],
12
+ "dynamicToolResults": [],
13
+ "experimental_context": undefined,
14
+ "files": [],
15
+ "finishReason": "stop",
16
+ "providerMetadata": undefined,
17
+ "rawFinishReason": "stop",
18
+ "reasoning": [],
19
+ "reasoningText": undefined,
20
+ "request": {},
21
+ "response": {
22
+ "body": undefined,
23
+ "headers": {
24
+ "custom-response-header": "response-header-value",
25
+ },
26
+ "id": "test-id-2-from-model",
27
+ "messages": [
28
+ {
29
+ "content": [
30
+ {
31
+ "input": {
32
+ "value": "value",
33
+ },
34
+ "providerExecuted": undefined,
35
+ "providerOptions": undefined,
36
+ "toolCallId": "call-1",
37
+ "toolName": "tool1",
38
+ "type": "tool-call",
39
+ },
40
+ ],
41
+ "role": "assistant",
42
+ },
43
+ {
44
+ "content": [
45
+ {
46
+ "output": {
47
+ "type": "text",
48
+ "value": "result1",
49
+ },
50
+ "toolCallId": "call-1",
51
+ "toolName": "tool1",
52
+ "type": "tool-result",
53
+ },
54
+ ],
55
+ "role": "tool",
56
+ },
57
+ {
58
+ "content": [
59
+ {
60
+ "providerOptions": undefined,
61
+ "text": "Hello, world!",
62
+ "type": "text",
63
+ },
64
+ ],
65
+ "role": "assistant",
66
+ },
67
+ ],
68
+ "modelId": "test-response-model-id",
69
+ "timestamp": 1970-01-01T00:00:10.000Z,
70
+ },
71
+ "sources": [],
72
+ "staticToolCalls": [],
73
+ "staticToolResults": [],
74
+ "steps": [
75
+ DefaultStepResult {
76
+ "content": [
77
+ {
78
+ "input": {
79
+ "value": "value",
80
+ },
81
+ "providerExecuted": undefined,
82
+ "providerMetadata": undefined,
83
+ "title": "Tool One",
84
+ "toolCallId": "call-1",
85
+ "toolName": "tool1",
86
+ "type": "tool-call",
87
+ },
88
+ {
89
+ "dynamic": false,
90
+ "input": {
91
+ "value": "value",
92
+ },
93
+ "output": "result1",
94
+ "toolCallId": "call-1",
95
+ "toolName": "tool1",
96
+ "type": "tool-result",
97
+ },
98
+ ],
99
+ "finishReason": "tool-calls",
100
+ "providerMetadata": undefined,
101
+ "rawFinishReason": undefined,
102
+ "request": {},
103
+ "response": {
104
+ "body": undefined,
105
+ "headers": undefined,
106
+ "id": "test-id-1-from-model",
107
+ "messages": [
108
+ {
109
+ "content": [
110
+ {
111
+ "input": {
112
+ "value": "value",
113
+ },
114
+ "providerExecuted": undefined,
115
+ "providerOptions": undefined,
116
+ "toolCallId": "call-1",
117
+ "toolName": "tool1",
118
+ "type": "tool-call",
119
+ },
120
+ ],
121
+ "role": "assistant",
122
+ },
123
+ {
124
+ "content": [
125
+ {
126
+ "output": {
127
+ "type": "text",
128
+ "value": "result1",
129
+ },
130
+ "toolCallId": "call-1",
131
+ "toolName": "tool1",
132
+ "type": "tool-result",
133
+ },
134
+ ],
135
+ "role": "tool",
136
+ },
137
+ ],
138
+ "modelId": "test-response-model-id",
139
+ "timestamp": 1970-01-01T00:00:00.000Z,
140
+ },
141
+ "usage": {
142
+ "cachedInputTokens": undefined,
143
+ "inputTokenDetails": {
144
+ "cacheReadTokens": undefined,
145
+ "cacheWriteTokens": undefined,
146
+ "noCacheTokens": 10,
147
+ },
148
+ "inputTokens": 10,
149
+ "outputTokenDetails": {
150
+ "reasoningTokens": undefined,
151
+ "textTokens": 5,
152
+ },
153
+ "outputTokens": 5,
154
+ "raw": undefined,
155
+ "reasoningTokens": undefined,
156
+ "totalTokens": 15,
157
+ },
158
+ "warnings": [],
159
+ },
160
+ DefaultStepResult {
161
+ "content": [
162
+ {
163
+ "text": "Hello, world!",
164
+ "type": "text",
165
+ },
166
+ ],
167
+ "finishReason": "stop",
168
+ "providerMetadata": undefined,
169
+ "rawFinishReason": "stop",
170
+ "request": {},
171
+ "response": {
172
+ "body": undefined,
173
+ "headers": {
174
+ "custom-response-header": "response-header-value",
175
+ },
176
+ "id": "test-id-2-from-model",
177
+ "messages": [
178
+ {
179
+ "content": [
180
+ {
181
+ "input": {
182
+ "value": "value",
183
+ },
184
+ "providerExecuted": undefined,
185
+ "providerOptions": undefined,
186
+ "toolCallId": "call-1",
187
+ "toolName": "tool1",
188
+ "type": "tool-call",
189
+ },
190
+ ],
191
+ "role": "assistant",
192
+ },
193
+ {
194
+ "content": [
195
+ {
196
+ "output": {
197
+ "type": "text",
198
+ "value": "result1",
199
+ },
200
+ "toolCallId": "call-1",
201
+ "toolName": "tool1",
202
+ "type": "tool-result",
203
+ },
204
+ ],
205
+ "role": "tool",
206
+ },
207
+ {
208
+ "content": [
209
+ {
210
+ "providerOptions": undefined,
211
+ "text": "Hello, world!",
212
+ "type": "text",
213
+ },
214
+ ],
215
+ "role": "assistant",
216
+ },
217
+ ],
218
+ "modelId": "test-response-model-id",
219
+ "timestamp": 1970-01-01T00:00:10.000Z,
220
+ },
221
+ "usage": {
222
+ "cachedInputTokens": undefined,
223
+ "inputTokenDetails": {
224
+ "cacheReadTokens": undefined,
225
+ "cacheWriteTokens": undefined,
226
+ "noCacheTokens": 3,
227
+ },
228
+ "inputTokens": 3,
229
+ "outputTokenDetails": {
230
+ "reasoningTokens": undefined,
231
+ "textTokens": 10,
232
+ },
233
+ "outputTokens": 10,
234
+ "raw": undefined,
235
+ "reasoningTokens": undefined,
236
+ "totalTokens": 13,
237
+ },
238
+ "warnings": [],
239
+ },
240
+ ],
241
+ "text": "Hello, world!",
242
+ "toolCalls": [],
243
+ "toolResults": [],
244
+ "totalUsage": {
245
+ "cachedInputTokens": undefined,
246
+ "inputTokenDetails": {
247
+ "cacheReadTokens": undefined,
248
+ "cacheWriteTokens": undefined,
249
+ "noCacheTokens": 13,
250
+ },
251
+ "inputTokens": 13,
252
+ "outputTokenDetails": {
253
+ "reasoningTokens": undefined,
254
+ "textTokens": 15,
255
+ },
256
+ "outputTokens": 15,
257
+ "reasoningTokens": undefined,
258
+ "totalTokens": 28,
259
+ },
260
+ "usage": {
261
+ "cachedInputTokens": undefined,
262
+ "inputTokenDetails": {
263
+ "cacheReadTokens": undefined,
264
+ "cacheWriteTokens": undefined,
265
+ "noCacheTokens": 3,
266
+ },
267
+ "inputTokens": 3,
268
+ "outputTokenDetails": {
269
+ "reasoningTokens": undefined,
270
+ "textTokens": 10,
271
+ },
272
+ "outputTokens": 10,
273
+ "raw": undefined,
274
+ "reasoningTokens": undefined,
275
+ "totalTokens": 13,
276
+ },
277
+ "warnings": [],
278
+ }
279
+ `;
280
+
281
+ exports[`generateText > options.stopWhen > 2 steps: initial, tool-result > callbacks > onStepFinish should be called for each step 1`] = `
282
+ [
283
+ DefaultStepResult {
284
+ "content": [
285
+ {
286
+ "input": {
287
+ "value": "value",
288
+ },
289
+ "providerExecuted": undefined,
290
+ "providerMetadata": undefined,
291
+ "title": "Tool One",
292
+ "toolCallId": "call-1",
293
+ "toolName": "tool1",
294
+ "type": "tool-call",
295
+ },
296
+ {
297
+ "dynamic": false,
298
+ "input": {
299
+ "value": "value",
300
+ },
301
+ "output": "result1",
302
+ "toolCallId": "call-1",
303
+ "toolName": "tool1",
304
+ "type": "tool-result",
305
+ },
306
+ ],
307
+ "finishReason": "tool-calls",
308
+ "providerMetadata": undefined,
309
+ "rawFinishReason": undefined,
310
+ "request": {},
311
+ "response": {
312
+ "body": undefined,
313
+ "headers": undefined,
314
+ "id": "test-id-1-from-model",
315
+ "messages": [
316
+ {
317
+ "content": [
318
+ {
319
+ "input": {
320
+ "value": "value",
321
+ },
322
+ "providerExecuted": undefined,
323
+ "providerOptions": undefined,
324
+ "toolCallId": "call-1",
325
+ "toolName": "tool1",
326
+ "type": "tool-call",
327
+ },
328
+ ],
329
+ "role": "assistant",
330
+ },
331
+ {
332
+ "content": [
333
+ {
334
+ "output": {
335
+ "type": "text",
336
+ "value": "result1",
337
+ },
338
+ "toolCallId": "call-1",
339
+ "toolName": "tool1",
340
+ "type": "tool-result",
341
+ },
342
+ ],
343
+ "role": "tool",
344
+ },
345
+ ],
346
+ "modelId": "test-response-model-id",
347
+ "timestamp": 1970-01-01T00:00:00.000Z,
348
+ },
349
+ "usage": {
350
+ "cachedInputTokens": undefined,
351
+ "inputTokenDetails": {
352
+ "cacheReadTokens": undefined,
353
+ "cacheWriteTokens": undefined,
354
+ "noCacheTokens": 10,
355
+ },
356
+ "inputTokens": 10,
357
+ "outputTokenDetails": {
358
+ "reasoningTokens": undefined,
359
+ "textTokens": 5,
360
+ },
361
+ "outputTokens": 5,
362
+ "raw": undefined,
363
+ "reasoningTokens": undefined,
364
+ "totalTokens": 15,
365
+ },
366
+ "warnings": [],
367
+ },
368
+ DefaultStepResult {
369
+ "content": [
370
+ {
371
+ "text": "Hello, world!",
372
+ "type": "text",
373
+ },
374
+ ],
375
+ "finishReason": "stop",
376
+ "providerMetadata": undefined,
377
+ "rawFinishReason": "stop",
378
+ "request": {},
379
+ "response": {
380
+ "body": undefined,
381
+ "headers": {
382
+ "custom-response-header": "response-header-value",
383
+ },
384
+ "id": "test-id-2-from-model",
385
+ "messages": [
386
+ {
387
+ "content": [
388
+ {
389
+ "input": {
390
+ "value": "value",
391
+ },
392
+ "providerExecuted": undefined,
393
+ "providerOptions": undefined,
394
+ "toolCallId": "call-1",
395
+ "toolName": "tool1",
396
+ "type": "tool-call",
397
+ },
398
+ ],
399
+ "role": "assistant",
400
+ },
401
+ {
402
+ "content": [
403
+ {
404
+ "output": {
405
+ "type": "text",
406
+ "value": "result1",
407
+ },
408
+ "toolCallId": "call-1",
409
+ "toolName": "tool1",
410
+ "type": "tool-result",
411
+ },
412
+ ],
413
+ "role": "tool",
414
+ },
415
+ {
416
+ "content": [
417
+ {
418
+ "providerOptions": undefined,
419
+ "text": "Hello, world!",
420
+ "type": "text",
421
+ },
422
+ ],
423
+ "role": "assistant",
424
+ },
425
+ ],
426
+ "modelId": "test-response-model-id",
427
+ "timestamp": 1970-01-01T00:00:10.000Z,
428
+ },
429
+ "usage": {
430
+ "cachedInputTokens": undefined,
431
+ "inputTokenDetails": {
432
+ "cacheReadTokens": undefined,
433
+ "cacheWriteTokens": undefined,
434
+ "noCacheTokens": 3,
435
+ },
436
+ "inputTokens": 3,
437
+ "outputTokenDetails": {
438
+ "reasoningTokens": undefined,
439
+ "textTokens": 10,
440
+ },
441
+ "outputTokens": 10,
442
+ "raw": undefined,
443
+ "reasoningTokens": undefined,
444
+ "totalTokens": 13,
445
+ },
446
+ "warnings": [],
447
+ },
448
+ ]
449
+ `;
450
+
451
+ exports[`generateText > options.stopWhen > 2 steps: initial, tool-result > result.response.messages should contain response messages from all steps 1`] = `
452
+ [
453
+ {
454
+ "content": [
455
+ {
456
+ "input": {
457
+ "value": "value",
458
+ },
459
+ "providerExecuted": undefined,
460
+ "providerOptions": undefined,
461
+ "toolCallId": "call-1",
462
+ "toolName": "tool1",
463
+ "type": "tool-call",
464
+ },
465
+ ],
466
+ "role": "assistant",
467
+ },
468
+ {
469
+ "content": [
470
+ {
471
+ "output": {
472
+ "type": "text",
473
+ "value": "result1",
474
+ },
475
+ "toolCallId": "call-1",
476
+ "toolName": "tool1",
477
+ "type": "tool-result",
478
+ },
479
+ ],
480
+ "role": "tool",
481
+ },
482
+ {
483
+ "content": [
484
+ {
485
+ "providerOptions": undefined,
486
+ "text": "Hello, world!",
487
+ "type": "text",
488
+ },
489
+ ],
490
+ "role": "assistant",
491
+ },
492
+ ]
493
+ `;
494
+
495
+ exports[`generateText > options.stopWhen > 2 steps: initial, tool-result > result.steps should contain all steps 1`] = `
496
+ [
497
+ DefaultStepResult {
498
+ "content": [
499
+ {
500
+ "input": {
501
+ "value": "value",
502
+ },
503
+ "providerExecuted": undefined,
504
+ "providerMetadata": undefined,
505
+ "title": "Tool One",
506
+ "toolCallId": "call-1",
507
+ "toolName": "tool1",
508
+ "type": "tool-call",
509
+ },
510
+ {
511
+ "dynamic": false,
512
+ "input": {
513
+ "value": "value",
514
+ },
515
+ "output": "result1",
516
+ "toolCallId": "call-1",
517
+ "toolName": "tool1",
518
+ "type": "tool-result",
519
+ },
520
+ ],
521
+ "finishReason": "tool-calls",
522
+ "providerMetadata": undefined,
523
+ "rawFinishReason": undefined,
524
+ "request": {},
525
+ "response": {
526
+ "body": undefined,
527
+ "headers": undefined,
528
+ "id": "test-id-1-from-model",
529
+ "messages": [
530
+ {
531
+ "content": [
532
+ {
533
+ "input": {
534
+ "value": "value",
535
+ },
536
+ "providerExecuted": undefined,
537
+ "providerOptions": undefined,
538
+ "toolCallId": "call-1",
539
+ "toolName": "tool1",
540
+ "type": "tool-call",
541
+ },
542
+ ],
543
+ "role": "assistant",
544
+ },
545
+ {
546
+ "content": [
547
+ {
548
+ "output": {
549
+ "type": "text",
550
+ "value": "result1",
551
+ },
552
+ "toolCallId": "call-1",
553
+ "toolName": "tool1",
554
+ "type": "tool-result",
555
+ },
556
+ ],
557
+ "role": "tool",
558
+ },
559
+ ],
560
+ "modelId": "test-response-model-id",
561
+ "timestamp": 1970-01-01T00:00:00.000Z,
562
+ },
563
+ "usage": {
564
+ "cachedInputTokens": undefined,
565
+ "inputTokenDetails": {
566
+ "cacheReadTokens": undefined,
567
+ "cacheWriteTokens": undefined,
568
+ "noCacheTokens": 10,
569
+ },
570
+ "inputTokens": 10,
571
+ "outputTokenDetails": {
572
+ "reasoningTokens": undefined,
573
+ "textTokens": 5,
574
+ },
575
+ "outputTokens": 5,
576
+ "raw": undefined,
577
+ "reasoningTokens": undefined,
578
+ "totalTokens": 15,
579
+ },
580
+ "warnings": [],
581
+ },
582
+ DefaultStepResult {
583
+ "content": [
584
+ {
585
+ "text": "Hello, world!",
586
+ "type": "text",
587
+ },
588
+ ],
589
+ "finishReason": "stop",
590
+ "providerMetadata": undefined,
591
+ "rawFinishReason": "stop",
592
+ "request": {},
593
+ "response": {
594
+ "body": undefined,
595
+ "headers": {
596
+ "custom-response-header": "response-header-value",
597
+ },
598
+ "id": "test-id-2-from-model",
599
+ "messages": [
600
+ {
601
+ "content": [
602
+ {
603
+ "input": {
604
+ "value": "value",
605
+ },
606
+ "providerExecuted": undefined,
607
+ "providerOptions": undefined,
608
+ "toolCallId": "call-1",
609
+ "toolName": "tool1",
610
+ "type": "tool-call",
611
+ },
612
+ ],
613
+ "role": "assistant",
614
+ },
615
+ {
616
+ "content": [
617
+ {
618
+ "output": {
619
+ "type": "text",
620
+ "value": "result1",
621
+ },
622
+ "toolCallId": "call-1",
623
+ "toolName": "tool1",
624
+ "type": "tool-result",
625
+ },
626
+ ],
627
+ "role": "tool",
628
+ },
629
+ {
630
+ "content": [
631
+ {
632
+ "providerOptions": undefined,
633
+ "text": "Hello, world!",
634
+ "type": "text",
635
+ },
636
+ ],
637
+ "role": "assistant",
638
+ },
639
+ ],
640
+ "modelId": "test-response-model-id",
641
+ "timestamp": 1970-01-01T00:00:10.000Z,
642
+ },
643
+ "usage": {
644
+ "cachedInputTokens": undefined,
645
+ "inputTokenDetails": {
646
+ "cacheReadTokens": undefined,
647
+ "cacheWriteTokens": undefined,
648
+ "noCacheTokens": 3,
649
+ },
650
+ "inputTokens": 3,
651
+ "outputTokenDetails": {
652
+ "reasoningTokens": undefined,
653
+ "textTokens": 10,
654
+ },
655
+ "outputTokens": 10,
656
+ "raw": undefined,
657
+ "reasoningTokens": undefined,
658
+ "totalTokens": 13,
659
+ },
660
+ "warnings": [],
661
+ },
662
+ ]
663
+ `;
664
+
665
+ exports[`generateText > options.stopWhen > 2 steps: initial, tool-result with prepareStep > onStepFinish should be called for each step 1`] = `
666
+ [
667
+ DefaultStepResult {
668
+ "content": [
669
+ {
670
+ "input": {
671
+ "value": "value",
672
+ },
673
+ "providerExecuted": undefined,
674
+ "providerMetadata": undefined,
675
+ "title": undefined,
676
+ "toolCallId": "call-1",
677
+ "toolName": "tool1",
678
+ "type": "tool-call",
679
+ },
680
+ {
681
+ "dynamic": false,
682
+ "input": {
683
+ "value": "value",
684
+ },
685
+ "output": "result1",
686
+ "toolCallId": "call-1",
687
+ "toolName": "tool1",
688
+ "type": "tool-result",
689
+ },
690
+ ],
691
+ "finishReason": "tool-calls",
692
+ "providerMetadata": undefined,
693
+ "rawFinishReason": undefined,
694
+ "request": {},
695
+ "response": {
696
+ "body": undefined,
697
+ "headers": undefined,
698
+ "id": "test-id-1-from-model",
699
+ "messages": [
700
+ {
701
+ "content": [
702
+ {
703
+ "input": {
704
+ "value": "value",
705
+ },
706
+ "providerExecuted": undefined,
707
+ "providerOptions": undefined,
708
+ "toolCallId": "call-1",
709
+ "toolName": "tool1",
710
+ "type": "tool-call",
711
+ },
712
+ ],
713
+ "role": "assistant",
714
+ },
715
+ {
716
+ "content": [
717
+ {
718
+ "output": {
719
+ "type": "text",
720
+ "value": "result1",
721
+ },
722
+ "toolCallId": "call-1",
723
+ "toolName": "tool1",
724
+ "type": "tool-result",
725
+ },
726
+ ],
727
+ "role": "tool",
728
+ },
729
+ ],
730
+ "modelId": "test-response-model-id",
731
+ "timestamp": 1970-01-01T00:00:00.000Z,
732
+ },
733
+ "usage": {
734
+ "cachedInputTokens": undefined,
735
+ "inputTokenDetails": {
736
+ "cacheReadTokens": undefined,
737
+ "cacheWriteTokens": undefined,
738
+ "noCacheTokens": 10,
739
+ },
740
+ "inputTokens": 10,
741
+ "outputTokenDetails": {
742
+ "reasoningTokens": undefined,
743
+ "textTokens": 5,
744
+ },
745
+ "outputTokens": 5,
746
+ "raw": undefined,
747
+ "reasoningTokens": undefined,
748
+ "totalTokens": 15,
749
+ },
750
+ "warnings": [],
751
+ },
752
+ DefaultStepResult {
753
+ "content": [
754
+ {
755
+ "text": "Hello, world!",
756
+ "type": "text",
757
+ },
758
+ ],
759
+ "finishReason": "stop",
760
+ "providerMetadata": undefined,
761
+ "rawFinishReason": "stop",
762
+ "request": {},
763
+ "response": {
764
+ "body": undefined,
765
+ "headers": {
766
+ "custom-response-header": "response-header-value",
767
+ },
768
+ "id": "test-id-2-from-model",
769
+ "messages": [
770
+ {
771
+ "content": [
772
+ {
773
+ "input": {
774
+ "value": "value",
775
+ },
776
+ "providerExecuted": undefined,
777
+ "providerOptions": undefined,
778
+ "toolCallId": "call-1",
779
+ "toolName": "tool1",
780
+ "type": "tool-call",
781
+ },
782
+ ],
783
+ "role": "assistant",
784
+ },
785
+ {
786
+ "content": [
787
+ {
788
+ "output": {
789
+ "type": "text",
790
+ "value": "result1",
791
+ },
792
+ "toolCallId": "call-1",
793
+ "toolName": "tool1",
794
+ "type": "tool-result",
795
+ },
796
+ ],
797
+ "role": "tool",
798
+ },
799
+ {
800
+ "content": [
801
+ {
802
+ "providerOptions": undefined,
803
+ "text": "Hello, world!",
804
+ "type": "text",
805
+ },
806
+ ],
807
+ "role": "assistant",
808
+ },
809
+ ],
810
+ "modelId": "test-response-model-id",
811
+ "timestamp": 1970-01-01T00:00:10.000Z,
812
+ },
813
+ "usage": {
814
+ "cachedInputTokens": undefined,
815
+ "inputTokenDetails": {
816
+ "cacheReadTokens": undefined,
817
+ "cacheWriteTokens": undefined,
818
+ "noCacheTokens": 3,
819
+ },
820
+ "inputTokens": 3,
821
+ "outputTokenDetails": {
822
+ "reasoningTokens": undefined,
823
+ "textTokens": 10,
824
+ },
825
+ "outputTokens": 10,
826
+ "raw": undefined,
827
+ "reasoningTokens": undefined,
828
+ "totalTokens": 13,
829
+ },
830
+ "warnings": [],
831
+ },
832
+ ]
833
+ `;
834
+
835
+ exports[`generateText > options.stopWhen > 2 steps: initial, tool-result with prepareStep > result.response.messages should contain response messages from all steps 1`] = `
836
+ [
837
+ {
838
+ "content": [
839
+ {
840
+ "input": {
841
+ "value": "value",
842
+ },
843
+ "providerExecuted": undefined,
844
+ "providerOptions": undefined,
845
+ "toolCallId": "call-1",
846
+ "toolName": "tool1",
847
+ "type": "tool-call",
848
+ },
849
+ ],
850
+ "role": "assistant",
851
+ },
852
+ {
853
+ "content": [
854
+ {
855
+ "output": {
856
+ "type": "text",
857
+ "value": "result1",
858
+ },
859
+ "toolCallId": "call-1",
860
+ "toolName": "tool1",
861
+ "type": "tool-result",
862
+ },
863
+ ],
864
+ "role": "tool",
865
+ },
866
+ {
867
+ "content": [
868
+ {
869
+ "providerOptions": undefined,
870
+ "text": "Hello, world!",
871
+ "type": "text",
872
+ },
873
+ ],
874
+ "role": "assistant",
875
+ },
876
+ ]
877
+ `;
878
+
879
+ exports[`generateText > options.stopWhen > 2 steps: initial, tool-result with prepareStep > result.steps should contain all steps 1`] = `
880
+ [
881
+ DefaultStepResult {
882
+ "content": [
883
+ {
884
+ "input": {
885
+ "value": "value",
886
+ },
887
+ "providerExecuted": undefined,
888
+ "providerMetadata": undefined,
889
+ "title": undefined,
890
+ "toolCallId": "call-1",
891
+ "toolName": "tool1",
892
+ "type": "tool-call",
893
+ },
894
+ {
895
+ "dynamic": false,
896
+ "input": {
897
+ "value": "value",
898
+ },
899
+ "output": "result1",
900
+ "toolCallId": "call-1",
901
+ "toolName": "tool1",
902
+ "type": "tool-result",
903
+ },
904
+ ],
905
+ "finishReason": "tool-calls",
906
+ "providerMetadata": undefined,
907
+ "rawFinishReason": undefined,
908
+ "request": {},
909
+ "response": {
910
+ "body": undefined,
911
+ "headers": undefined,
912
+ "id": "test-id-1-from-model",
913
+ "messages": [
914
+ {
915
+ "content": [
916
+ {
917
+ "input": {
918
+ "value": "value",
919
+ },
920
+ "providerExecuted": undefined,
921
+ "providerOptions": undefined,
922
+ "toolCallId": "call-1",
923
+ "toolName": "tool1",
924
+ "type": "tool-call",
925
+ },
926
+ ],
927
+ "role": "assistant",
928
+ },
929
+ {
930
+ "content": [
931
+ {
932
+ "output": {
933
+ "type": "text",
934
+ "value": "result1",
935
+ },
936
+ "toolCallId": "call-1",
937
+ "toolName": "tool1",
938
+ "type": "tool-result",
939
+ },
940
+ ],
941
+ "role": "tool",
942
+ },
943
+ ],
944
+ "modelId": "test-response-model-id",
945
+ "timestamp": 1970-01-01T00:00:00.000Z,
946
+ },
947
+ "usage": {
948
+ "cachedInputTokens": undefined,
949
+ "inputTokenDetails": {
950
+ "cacheReadTokens": undefined,
951
+ "cacheWriteTokens": undefined,
952
+ "noCacheTokens": 10,
953
+ },
954
+ "inputTokens": 10,
955
+ "outputTokenDetails": {
956
+ "reasoningTokens": undefined,
957
+ "textTokens": 5,
958
+ },
959
+ "outputTokens": 5,
960
+ "raw": undefined,
961
+ "reasoningTokens": undefined,
962
+ "totalTokens": 15,
963
+ },
964
+ "warnings": [],
965
+ },
966
+ DefaultStepResult {
967
+ "content": [
968
+ {
969
+ "text": "Hello, world!",
970
+ "type": "text",
971
+ },
972
+ ],
973
+ "finishReason": "stop",
974
+ "providerMetadata": undefined,
975
+ "rawFinishReason": "stop",
976
+ "request": {},
977
+ "response": {
978
+ "body": undefined,
979
+ "headers": {
980
+ "custom-response-header": "response-header-value",
981
+ },
982
+ "id": "test-id-2-from-model",
983
+ "messages": [
984
+ {
985
+ "content": [
986
+ {
987
+ "input": {
988
+ "value": "value",
989
+ },
990
+ "providerExecuted": undefined,
991
+ "providerOptions": undefined,
992
+ "toolCallId": "call-1",
993
+ "toolName": "tool1",
994
+ "type": "tool-call",
995
+ },
996
+ ],
997
+ "role": "assistant",
998
+ },
999
+ {
1000
+ "content": [
1001
+ {
1002
+ "output": {
1003
+ "type": "text",
1004
+ "value": "result1",
1005
+ },
1006
+ "toolCallId": "call-1",
1007
+ "toolName": "tool1",
1008
+ "type": "tool-result",
1009
+ },
1010
+ ],
1011
+ "role": "tool",
1012
+ },
1013
+ {
1014
+ "content": [
1015
+ {
1016
+ "providerOptions": undefined,
1017
+ "text": "Hello, world!",
1018
+ "type": "text",
1019
+ },
1020
+ ],
1021
+ "role": "assistant",
1022
+ },
1023
+ ],
1024
+ "modelId": "test-response-model-id",
1025
+ "timestamp": 1970-01-01T00:00:10.000Z,
1026
+ },
1027
+ "usage": {
1028
+ "cachedInputTokens": undefined,
1029
+ "inputTokenDetails": {
1030
+ "cacheReadTokens": undefined,
1031
+ "cacheWriteTokens": undefined,
1032
+ "noCacheTokens": 3,
1033
+ },
1034
+ "inputTokens": 3,
1035
+ "outputTokenDetails": {
1036
+ "reasoningTokens": undefined,
1037
+ "textTokens": 10,
1038
+ },
1039
+ "outputTokens": 10,
1040
+ "raw": undefined,
1041
+ "reasoningTokens": undefined,
1042
+ "totalTokens": 13,
1043
+ },
1044
+ "warnings": [],
1045
+ },
1046
+ ]
1047
+ `;
1048
+
1049
+ exports[`generateText > programmatic tool calling > 5 steps: code_execution triggers client tool across multiple turns (dice game fixture) > step inputs > should include all previous messages in step 5 prompt (final step) 1`] = `
1050
+ [
1051
+ {
1052
+ "content": [
1053
+ {
1054
+ "text": "Play a dice game between two players.",
1055
+ "type": "text",
1056
+ },
1057
+ ],
1058
+ "providerOptions": undefined,
1059
+ "role": "user",
1060
+ },
1061
+ {
1062
+ "content": [
1063
+ {
1064
+ "providerOptions": undefined,
1065
+ "text": "I'll help you simulate this dice game between two players! Let me run the game where both players roll dice each round until one player wins 3 rounds.",
1066
+ "type": "text",
1067
+ },
1068
+ {
1069
+ "input": {
1070
+ "code": "game_loop()",
1071
+ },
1072
+ "providerExecuted": true,
1073
+ "providerOptions": undefined,
1074
+ "toolCallId": "srvtoolu_01CberhXc9TgYXrCZU8bQoks",
1075
+ "toolName": "code_execution",
1076
+ "type": "tool-call",
1077
+ },
1078
+ {
1079
+ "input": {
1080
+ "player": "player2",
1081
+ },
1082
+ "providerExecuted": undefined,
1083
+ "providerOptions": undefined,
1084
+ "toolCallId": "toolu_01PMcE1JBKCeLjn83cgUCvR5",
1085
+ "toolName": "rollDie",
1086
+ "type": "tool-call",
1087
+ },
1088
+ {
1089
+ "input": {
1090
+ "player": "player1",
1091
+ },
1092
+ "providerExecuted": undefined,
1093
+ "providerOptions": undefined,
1094
+ "toolCallId": "toolu_01MZf5QJ1EQyd2yGyeLzBxAS",
1095
+ "toolName": "rollDie",
1096
+ "type": "tool-call",
1097
+ },
1098
+ ],
1099
+ "providerOptions": undefined,
1100
+ "role": "assistant",
1101
+ },
1102
+ {
1103
+ "content": [
1104
+ {
1105
+ "output": {
1106
+ "type": "json",
1107
+ "value": 3,
1108
+ },
1109
+ "providerOptions": undefined,
1110
+ "toolCallId": "toolu_01PMcE1JBKCeLjn83cgUCvR5",
1111
+ "toolName": "rollDie",
1112
+ "type": "tool-result",
1113
+ },
1114
+ {
1115
+ "output": {
1116
+ "type": "json",
1117
+ "value": 6,
1118
+ },
1119
+ "providerOptions": undefined,
1120
+ "toolCallId": "toolu_01MZf5QJ1EQyd2yGyeLzBxAS",
1121
+ "toolName": "rollDie",
1122
+ "type": "tool-result",
1123
+ },
1124
+ ],
1125
+ "providerOptions": undefined,
1126
+ "role": "tool",
1127
+ },
1128
+ {
1129
+ "content": [
1130
+ {
1131
+ "input": {
1132
+ "player": "player1",
1133
+ },
1134
+ "providerExecuted": undefined,
1135
+ "providerOptions": undefined,
1136
+ "toolCallId": "toolu_01UvVQ2xwA6preZppeajCkYK",
1137
+ "toolName": "rollDie",
1138
+ "type": "tool-call",
1139
+ },
1140
+ {
1141
+ "input": {
1142
+ "player": "player2",
1143
+ },
1144
+ "providerExecuted": undefined,
1145
+ "providerOptions": undefined,
1146
+ "toolCallId": "toolu_01BghspNownQFtRgv8jVicr3",
1147
+ "toolName": "rollDie",
1148
+ "type": "tool-call",
1149
+ },
1150
+ ],
1151
+ "providerOptions": undefined,
1152
+ "role": "assistant",
1153
+ },
1154
+ {
1155
+ "content": [
1156
+ {
1157
+ "output": {
1158
+ "type": "json",
1159
+ "value": 6,
1160
+ },
1161
+ "providerOptions": undefined,
1162
+ "toolCallId": "toolu_01UvVQ2xwA6preZppeajCkYK",
1163
+ "toolName": "rollDie",
1164
+ "type": "tool-result",
1165
+ },
1166
+ {
1167
+ "output": {
1168
+ "type": "json",
1169
+ "value": 3,
1170
+ },
1171
+ "providerOptions": undefined,
1172
+ "toolCallId": "toolu_01BghspNownQFtRgv8jVicr3",
1173
+ "toolName": "rollDie",
1174
+ "type": "tool-result",
1175
+ },
1176
+ ],
1177
+ "providerOptions": undefined,
1178
+ "role": "tool",
1179
+ },
1180
+ {
1181
+ "content": [
1182
+ {
1183
+ "input": {
1184
+ "player": "player1",
1185
+ },
1186
+ "providerExecuted": undefined,
1187
+ "providerOptions": undefined,
1188
+ "toolCallId": "toolu_01T7Upuuv8C71nq7DZ9ZPNQW",
1189
+ "toolName": "rollDie",
1190
+ "type": "tool-call",
1191
+ },
1192
+ {
1193
+ "input": {
1194
+ "player": "player2",
1195
+ },
1196
+ "providerExecuted": undefined,
1197
+ "providerOptions": undefined,
1198
+ "toolCallId": "toolu_016Da1tDet9Bf7dAdYTkF5Ar",
1199
+ "toolName": "rollDie",
1200
+ "type": "tool-call",
1201
+ },
1202
+ ],
1203
+ "providerOptions": undefined,
1204
+ "role": "assistant",
1205
+ },
1206
+ {
1207
+ "content": [
1208
+ {
1209
+ "output": {
1210
+ "type": "json",
1211
+ "value": 6,
1212
+ },
1213
+ "providerOptions": undefined,
1214
+ "toolCallId": "toolu_01T7Upuuv8C71nq7DZ9ZPNQW",
1215
+ "toolName": "rollDie",
1216
+ "type": "tool-result",
1217
+ },
1218
+ {
1219
+ "output": {
1220
+ "type": "json",
1221
+ "value": 3,
1222
+ },
1223
+ "providerOptions": undefined,
1224
+ "toolCallId": "toolu_016Da1tDet9Bf7dAdYTkF5Ar",
1225
+ "toolName": "rollDie",
1226
+ "type": "tool-result",
1227
+ },
1228
+ ],
1229
+ "providerOptions": undefined,
1230
+ "role": "tool",
1231
+ },
1232
+ {
1233
+ "content": [
1234
+ {
1235
+ "input": {
1236
+ "player": "player1",
1237
+ },
1238
+ "providerExecuted": undefined,
1239
+ "providerOptions": undefined,
1240
+ "toolCallId": "toolu_01DiUBRds64sNajVPTZRrDSM",
1241
+ "toolName": "rollDie",
1242
+ "type": "tool-call",
1243
+ },
1244
+ {
1245
+ "input": {
1246
+ "player": "player2",
1247
+ },
1248
+ "providerExecuted": undefined,
1249
+ "providerOptions": undefined,
1250
+ "toolCallId": "toolu_01XQa3r3y1Fe8rnkGSncq626",
1251
+ "toolName": "rollDie",
1252
+ "type": "tool-call",
1253
+ },
1254
+ ],
1255
+ "providerOptions": undefined,
1256
+ "role": "assistant",
1257
+ },
1258
+ {
1259
+ "content": [
1260
+ {
1261
+ "output": {
1262
+ "type": "json",
1263
+ "value": 6,
1264
+ },
1265
+ "providerOptions": undefined,
1266
+ "toolCallId": "toolu_01DiUBRds64sNajVPTZRrDSM",
1267
+ "toolName": "rollDie",
1268
+ "type": "tool-result",
1269
+ },
1270
+ {
1271
+ "output": {
1272
+ "type": "json",
1273
+ "value": 3,
1274
+ },
1275
+ "providerOptions": undefined,
1276
+ "toolCallId": "toolu_01XQa3r3y1Fe8rnkGSncq626",
1277
+ "toolName": "rollDie",
1278
+ "type": "tool-result",
1279
+ },
1280
+ ],
1281
+ "providerOptions": undefined,
1282
+ "role": "tool",
1283
+ },
1284
+ ]
1285
+ `;
1286
+
1287
+ exports[`generateText > result.files > should contain files 1`] = `
1288
+ [
1289
+ DefaultGeneratedFile {
1290
+ "base64Data": "AQID",
1291
+ "mediaType": "image/png",
1292
+ "uint8ArrayData": Uint8Array [
1293
+ 1,
1294
+ 2,
1295
+ 3,
1296
+ ],
1297
+ },
1298
+ DefaultGeneratedFile {
1299
+ "base64Data": "QkFVRw==",
1300
+ "mediaType": "image/jpeg",
1301
+ "uint8ArrayData": undefined,
1302
+ },
1303
+ ]
1304
+ `;
1305
+
1306
+ exports[`generateText > result.response > should contain response body and headers 1`] = `
1307
+ {
1308
+ "body": "test body",
1309
+ "headers": {
1310
+ "custom-response-header": "response-header-value",
1311
+ },
1312
+ "id": "test-id-from-model",
1313
+ "messages": [
1314
+ {
1315
+ "content": [
1316
+ {
1317
+ "providerOptions": undefined,
1318
+ "text": "Hello, world!",
1319
+ "type": "text",
1320
+ },
1321
+ ],
1322
+ "role": "assistant",
1323
+ },
1324
+ ],
1325
+ "modelId": "test-response-model-id",
1326
+ "timestamp": 1970-01-01T00:00:10.000Z,
1327
+ }
1328
+ `;
1329
+
1330
+ exports[`generateText > result.response > should contain response body and headers 2`] = `
1331
+ {
1332
+ "body": "test body",
1333
+ "headers": {
1334
+ "custom-response-header": "response-header-value",
1335
+ },
1336
+ "id": "test-id-from-model",
1337
+ "messages": [
1338
+ {
1339
+ "content": [
1340
+ {
1341
+ "providerOptions": undefined,
1342
+ "text": "Hello, world!",
1343
+ "type": "text",
1344
+ },
1345
+ ],
1346
+ "role": "assistant",
1347
+ },
1348
+ ],
1349
+ "modelId": "test-response-model-id",
1350
+ "timestamp": 1970-01-01T00:00:10.000Z,
1351
+ }
1352
+ `;
1353
+
1354
+ exports[`generateText > result.response.messages > should contain assistant response message and tool message when there are tool calls with results 1`] = `
1355
+ [
1356
+ {
1357
+ "content": [
1358
+ {
1359
+ "providerOptions": undefined,
1360
+ "text": "Hello, world!",
1361
+ "type": "text",
1362
+ },
1363
+ {
1364
+ "input": {
1365
+ "value": "value",
1366
+ },
1367
+ "providerExecuted": undefined,
1368
+ "providerOptions": undefined,
1369
+ "toolCallId": "call-1",
1370
+ "toolName": "tool1",
1371
+ "type": "tool-call",
1372
+ },
1373
+ ],
1374
+ "role": "assistant",
1375
+ },
1376
+ {
1377
+ "content": [
1378
+ {
1379
+ "output": {
1380
+ "type": "text",
1381
+ "value": "result1",
1382
+ },
1383
+ "toolCallId": "call-1",
1384
+ "toolName": "tool1",
1385
+ "type": "tool-result",
1386
+ },
1387
+ ],
1388
+ "role": "tool",
1389
+ },
1390
+ ]
1391
+ `;
1392
+
1393
+ exports[`generateText > result.response.messages > should contain assistant response message when there are no tool calls 1`] = `
1394
+ [
1395
+ {
1396
+ "content": [
1397
+ {
1398
+ "providerOptions": undefined,
1399
+ "text": "Hello, world!",
1400
+ "type": "text",
1401
+ },
1402
+ ],
1403
+ "role": "assistant",
1404
+ },
1405
+ ]
1406
+ `;
1407
+
1408
+ exports[`generateText > result.response.messages > should contain reasoning 1`] = `
1409
+ [
1410
+ {
1411
+ "content": [
1412
+ {
1413
+ "providerOptions": {
1414
+ "testProvider": {
1415
+ "signature": "signature",
1416
+ },
1417
+ },
1418
+ "text": "I will open the conversation with witty banter.",
1419
+ "type": "reasoning",
1420
+ },
1421
+ {
1422
+ "providerOptions": {
1423
+ "testProvider": {
1424
+ "redactedData": "redacted-reasoning-data",
1425
+ },
1426
+ },
1427
+ "text": "",
1428
+ "type": "reasoning",
1429
+ },
1430
+ {
1431
+ "providerOptions": undefined,
1432
+ "text": "Hello, world!",
1433
+ "type": "text",
1434
+ },
1435
+ ],
1436
+ "role": "assistant",
1437
+ },
1438
+ ]
1439
+ `;
1440
+
1441
+ exports[`generateText > result.sources > should contain sources 1`] = `
1442
+ [
1443
+ {
1444
+ "id": "123",
1445
+ "providerMetadata": {
1446
+ "provider": {
1447
+ "custom": "value",
1448
+ },
1449
+ },
1450
+ "sourceType": "url",
1451
+ "title": "Example",
1452
+ "type": "source",
1453
+ "url": "https://example.com",
1454
+ },
1455
+ {
1456
+ "id": "456",
1457
+ "providerMetadata": {
1458
+ "provider": {
1459
+ "custom": "value2",
1460
+ },
1461
+ },
1462
+ "sourceType": "url",
1463
+ "title": "Example 2",
1464
+ "type": "source",
1465
+ "url": "https://example.com/2",
1466
+ },
1467
+ ]
1468
+ `;
1469
+
1470
+ exports[`generateText > result.steps > should add the reasoning from the model response to the step result 1`] = `
1471
+ [
1472
+ DefaultStepResult {
1473
+ "content": [
1474
+ {
1475
+ "providerMetadata": {
1476
+ "testProvider": {
1477
+ "signature": "signature",
1478
+ },
1479
+ },
1480
+ "text": "I will open the conversation with witty banter.",
1481
+ "type": "reasoning",
1482
+ },
1483
+ {
1484
+ "providerMetadata": {
1485
+ "testProvider": {
1486
+ "redactedData": "redacted-reasoning-data",
1487
+ },
1488
+ },
1489
+ "text": "",
1490
+ "type": "reasoning",
1491
+ },
1492
+ {
1493
+ "text": "Hello, world!",
1494
+ "type": "text",
1495
+ },
1496
+ ],
1497
+ "finishReason": "stop",
1498
+ "providerMetadata": undefined,
1499
+ "rawFinishReason": "stop",
1500
+ "request": {},
1501
+ "response": {
1502
+ "body": undefined,
1503
+ "headers": undefined,
1504
+ "id": "id-0",
1505
+ "messages": [
1506
+ {
1507
+ "content": [
1508
+ {
1509
+ "providerOptions": {
1510
+ "testProvider": {
1511
+ "signature": "signature",
1512
+ },
1513
+ },
1514
+ "text": "I will open the conversation with witty banter.",
1515
+ "type": "reasoning",
1516
+ },
1517
+ {
1518
+ "providerOptions": {
1519
+ "testProvider": {
1520
+ "redactedData": "redacted-reasoning-data",
1521
+ },
1522
+ },
1523
+ "text": "",
1524
+ "type": "reasoning",
1525
+ },
1526
+ {
1527
+ "providerOptions": undefined,
1528
+ "text": "Hello, world!",
1529
+ "type": "text",
1530
+ },
1531
+ ],
1532
+ "role": "assistant",
1533
+ },
1534
+ ],
1535
+ "modelId": "mock-model-id",
1536
+ "timestamp": 1970-01-01T00:00:00.000Z,
1537
+ },
1538
+ "usage": {
1539
+ "cachedInputTokens": undefined,
1540
+ "inputTokenDetails": {
1541
+ "cacheReadTokens": undefined,
1542
+ "cacheWriteTokens": undefined,
1543
+ "noCacheTokens": 3,
1544
+ },
1545
+ "inputTokens": 3,
1546
+ "outputTokenDetails": {
1547
+ "reasoningTokens": undefined,
1548
+ "textTokens": 10,
1549
+ },
1550
+ "outputTokens": 10,
1551
+ "raw": undefined,
1552
+ "reasoningTokens": undefined,
1553
+ "totalTokens": 13,
1554
+ },
1555
+ "warnings": [],
1556
+ },
1557
+ ]
1558
+ `;
1559
+
1560
+ exports[`generateText > result.steps > should contain files 1`] = `
1561
+ [
1562
+ DefaultStepResult {
1563
+ "content": [
1564
+ {
1565
+ "text": "Hello, world!",
1566
+ "type": "text",
1567
+ },
1568
+ {
1569
+ "file": DefaultGeneratedFile {
1570
+ "base64Data": "AQID",
1571
+ "mediaType": "image/png",
1572
+ "uint8ArrayData": Uint8Array [
1573
+ 1,
1574
+ 2,
1575
+ 3,
1576
+ ],
1577
+ },
1578
+ "type": "file",
1579
+ },
1580
+ {
1581
+ "file": DefaultGeneratedFile {
1582
+ "base64Data": "QkFVRw==",
1583
+ "mediaType": "image/jpeg",
1584
+ "uint8ArrayData": undefined,
1585
+ },
1586
+ "type": "file",
1587
+ },
1588
+ ],
1589
+ "finishReason": "stop",
1590
+ "providerMetadata": undefined,
1591
+ "rawFinishReason": "stop",
1592
+ "request": {},
1593
+ "response": {
1594
+ "body": undefined,
1595
+ "headers": undefined,
1596
+ "id": "id-0",
1597
+ "messages": [
1598
+ {
1599
+ "content": [
1600
+ {
1601
+ "providerOptions": undefined,
1602
+ "text": "Hello, world!",
1603
+ "type": "text",
1604
+ },
1605
+ {
1606
+ "data": "AQID",
1607
+ "mediaType": "image/png",
1608
+ "providerOptions": undefined,
1609
+ "type": "file",
1610
+ },
1611
+ {
1612
+ "data": "QkFVRw==",
1613
+ "mediaType": "image/jpeg",
1614
+ "providerOptions": undefined,
1615
+ "type": "file",
1616
+ },
1617
+ ],
1618
+ "role": "assistant",
1619
+ },
1620
+ ],
1621
+ "modelId": "mock-model-id",
1622
+ "timestamp": 1970-01-01T00:00:00.000Z,
1623
+ },
1624
+ "usage": {
1625
+ "cachedInputTokens": undefined,
1626
+ "inputTokenDetails": {
1627
+ "cacheReadTokens": undefined,
1628
+ "cacheWriteTokens": undefined,
1629
+ "noCacheTokens": 3,
1630
+ },
1631
+ "inputTokens": 3,
1632
+ "outputTokenDetails": {
1633
+ "reasoningTokens": undefined,
1634
+ "textTokens": 10,
1635
+ },
1636
+ "outputTokens": 10,
1637
+ "raw": undefined,
1638
+ "reasoningTokens": undefined,
1639
+ "totalTokens": 13,
1640
+ },
1641
+ "warnings": [],
1642
+ },
1643
+ ]
1644
+ `;
1645
+
1646
+ exports[`generateText > result.steps > should contain sources 1`] = `
1647
+ [
1648
+ DefaultStepResult {
1649
+ "content": [
1650
+ {
1651
+ "text": "Hello, world!",
1652
+ "type": "text",
1653
+ },
1654
+ {
1655
+ "id": "123",
1656
+ "providerMetadata": {
1657
+ "provider": {
1658
+ "custom": "value",
1659
+ },
1660
+ },
1661
+ "sourceType": "url",
1662
+ "title": "Example",
1663
+ "type": "source",
1664
+ "url": "https://example.com",
1665
+ },
1666
+ {
1667
+ "id": "456",
1668
+ "providerMetadata": {
1669
+ "provider": {
1670
+ "custom": "value2",
1671
+ },
1672
+ },
1673
+ "sourceType": "url",
1674
+ "title": "Example 2",
1675
+ "type": "source",
1676
+ "url": "https://example.com/2",
1677
+ },
1678
+ ],
1679
+ "finishReason": "stop",
1680
+ "providerMetadata": undefined,
1681
+ "rawFinishReason": "stop",
1682
+ "request": {},
1683
+ "response": {
1684
+ "body": undefined,
1685
+ "headers": undefined,
1686
+ "id": "id-0",
1687
+ "messages": [
1688
+ {
1689
+ "content": [
1690
+ {
1691
+ "providerOptions": undefined,
1692
+ "text": "Hello, world!",
1693
+ "type": "text",
1694
+ },
1695
+ ],
1696
+ "role": "assistant",
1697
+ },
1698
+ ],
1699
+ "modelId": "mock-model-id",
1700
+ "timestamp": 1970-01-01T00:00:00.000Z,
1701
+ },
1702
+ "usage": {
1703
+ "cachedInputTokens": undefined,
1704
+ "inputTokenDetails": {
1705
+ "cacheReadTokens": undefined,
1706
+ "cacheWriteTokens": undefined,
1707
+ "noCacheTokens": 3,
1708
+ },
1709
+ "inputTokens": 3,
1710
+ "outputTokenDetails": {
1711
+ "reasoningTokens": undefined,
1712
+ "textTokens": 10,
1713
+ },
1714
+ "outputTokens": 10,
1715
+ "raw": undefined,
1716
+ "reasoningTokens": undefined,
1717
+ "totalTokens": 13,
1718
+ },
1719
+ "warnings": [],
1720
+ },
1721
+ ]
1722
+ `;
1723
+
1724
+ exports[`generateText > result.text > should generate text 1`] = `[]`;
1725
+
1726
+ exports[`generateText > telemetry > should not record any telemetry data when not explicitly enabled 1`] = `[]`;
1727
+
1728
+ exports[`generateText > telemetry > should not record telemetry inputs / outputs when disabled 1`] = `
1729
+ [
1730
+ {
1731
+ "attributes": {
1732
+ "ai.model.id": "mock-model-id",
1733
+ "ai.model.provider": "mock-provider",
1734
+ "ai.operationId": "ai.generateText",
1735
+ "ai.request.headers.user-agent": "ai/0.0.0-test",
1736
+ "ai.response.finishReason": "stop",
1737
+ "ai.settings.maxRetries": 2,
1738
+ "ai.usage.completionTokens": 10,
1739
+ "ai.usage.promptTokens": 3,
1740
+ "operation.name": "ai.generateText",
1741
+ },
1742
+ "events": [],
1743
+ "name": "ai.generateText",
1744
+ },
1745
+ {
1746
+ "attributes": {
1747
+ "ai.model.id": "mock-model-id",
1748
+ "ai.model.provider": "mock-provider",
1749
+ "ai.operationId": "ai.generateText.doGenerate",
1750
+ "ai.request.headers.user-agent": "ai/0.0.0-test",
1751
+ "ai.response.finishReason": "stop",
1752
+ "ai.response.id": "test-id",
1753
+ "ai.response.model": "mock-model-id",
1754
+ "ai.response.timestamp": "1970-01-01T00:00:00.000Z",
1755
+ "ai.settings.maxRetries": 2,
1756
+ "ai.usage.completionTokens": 10,
1757
+ "ai.usage.promptTokens": 3,
1758
+ "gen_ai.request.model": "mock-model-id",
1759
+ "gen_ai.response.finish_reasons": [
1760
+ "stop",
1761
+ ],
1762
+ "gen_ai.response.id": "test-id",
1763
+ "gen_ai.response.model": "mock-model-id",
1764
+ "gen_ai.system": "mock-provider",
1765
+ "gen_ai.usage.input_tokens": 3,
1766
+ "gen_ai.usage.output_tokens": 10,
1767
+ "operation.name": "ai.generateText.doGenerate",
1768
+ },
1769
+ "events": [],
1770
+ "name": "ai.generateText.doGenerate",
1771
+ },
1772
+ {
1773
+ "attributes": {
1774
+ "ai.operationId": "ai.toolCall",
1775
+ "ai.toolCall.id": "call-1",
1776
+ "ai.toolCall.name": "tool1",
1777
+ "operation.name": "ai.toolCall",
1778
+ },
1779
+ "events": [],
1780
+ "name": "ai.toolCall",
1781
+ },
1782
+ ]
1783
+ `;
1784
+
1785
+ exports[`generateText > telemetry > should record telemetry data when enabled 1`] = `
1786
+ [
1787
+ {
1788
+ "attributes": {
1789
+ "ai.model.id": "mock-model-id",
1790
+ "ai.model.provider": "mock-provider",
1791
+ "ai.operationId": "ai.generateText",
1792
+ "ai.prompt": "{"prompt":"prompt"}",
1793
+ "ai.request.headers.header1": "value1",
1794
+ "ai.request.headers.header2": "value2",
1795
+ "ai.request.headers.user-agent": "ai/0.0.0-test",
1796
+ "ai.response.finishReason": "stop",
1797
+ "ai.response.providerMetadata": "{"testProvider":{"testKey":"testValue"}}",
1798
+ "ai.response.text": "Hello, world!",
1799
+ "ai.settings.frequencyPenalty": 0.3,
1800
+ "ai.settings.maxRetries": 2,
1801
+ "ai.settings.presencePenalty": 0.4,
1802
+ "ai.settings.stopSequences": [
1803
+ "stop",
1804
+ ],
1805
+ "ai.settings.temperature": 0.5,
1806
+ "ai.settings.topK": 0.1,
1807
+ "ai.settings.topP": 0.2,
1808
+ "ai.telemetry.functionId": "test-function-id",
1809
+ "ai.telemetry.metadata.test1": "value1",
1810
+ "ai.telemetry.metadata.test2": false,
1811
+ "ai.usage.completionTokens": 10,
1812
+ "ai.usage.promptTokens": 3,
1813
+ "operation.name": "ai.generateText test-function-id",
1814
+ "resource.name": "test-function-id",
1815
+ },
1816
+ "events": [],
1817
+ "name": "ai.generateText",
1818
+ },
1819
+ {
1820
+ "attributes": {
1821
+ "ai.model.id": "mock-model-id",
1822
+ "ai.model.provider": "mock-provider",
1823
+ "ai.operationId": "ai.generateText.doGenerate",
1824
+ "ai.prompt.messages": "[{"role":"user","content":[{"type":"text","text":"prompt"}]}]",
1825
+ "ai.request.headers.header1": "value1",
1826
+ "ai.request.headers.header2": "value2",
1827
+ "ai.request.headers.user-agent": "ai/0.0.0-test",
1828
+ "ai.response.finishReason": "stop",
1829
+ "ai.response.id": "test-id-from-model",
1830
+ "ai.response.model": "test-response-model-id",
1831
+ "ai.response.providerMetadata": "{"testProvider":{"testKey":"testValue"}}",
1832
+ "ai.response.text": "Hello, world!",
1833
+ "ai.response.timestamp": "1970-01-01T00:00:10.000Z",
1834
+ "ai.settings.frequencyPenalty": 0.3,
1835
+ "ai.settings.maxRetries": 2,
1836
+ "ai.settings.presencePenalty": 0.4,
1837
+ "ai.settings.stopSequences": [
1838
+ "stop",
1839
+ ],
1840
+ "ai.settings.temperature": 0.5,
1841
+ "ai.settings.topK": 0.1,
1842
+ "ai.settings.topP": 0.2,
1843
+ "ai.telemetry.functionId": "test-function-id",
1844
+ "ai.telemetry.metadata.test1": "value1",
1845
+ "ai.telemetry.metadata.test2": false,
1846
+ "ai.usage.completionTokens": 10,
1847
+ "ai.usage.promptTokens": 3,
1848
+ "gen_ai.request.frequency_penalty": 0.3,
1849
+ "gen_ai.request.model": "mock-model-id",
1850
+ "gen_ai.request.presence_penalty": 0.4,
1851
+ "gen_ai.request.stop_sequences": [
1852
+ "stop",
1853
+ ],
1854
+ "gen_ai.request.temperature": 0.5,
1855
+ "gen_ai.request.top_k": 0.1,
1856
+ "gen_ai.request.top_p": 0.2,
1857
+ "gen_ai.response.finish_reasons": [
1858
+ "stop",
1859
+ ],
1860
+ "gen_ai.response.id": "test-id-from-model",
1861
+ "gen_ai.response.model": "test-response-model-id",
1862
+ "gen_ai.system": "mock-provider",
1863
+ "gen_ai.usage.input_tokens": 3,
1864
+ "gen_ai.usage.output_tokens": 10,
1865
+ "operation.name": "ai.generateText.doGenerate test-function-id",
1866
+ "resource.name": "test-function-id",
1867
+ },
1868
+ "events": [],
1869
+ "name": "ai.generateText.doGenerate",
1870
+ },
1871
+ ]
1872
+ `;