experimental-ash 0.30.0 → 0.31.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 (183) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/src/cli/run.d.ts +0 -1
  3. package/dist/src/cli/run.js +2 -2
  4. package/dist/src/compiled/.vendor-stamp.json +6 -6
  5. package/dist/src/compiled/@ai-sdk/anthropic/index.d.ts +2 -2
  6. package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
  7. package/dist/src/compiled/@ai-sdk/anthropic/package.json +1 -1
  8. package/dist/src/compiled/@ai-sdk/google/index.d.ts +14 -1
  9. package/dist/src/compiled/@ai-sdk/google/index.js +6 -6
  10. package/dist/src/compiled/@ai-sdk/google/package.json +1 -1
  11. package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
  12. package/dist/src/compiled/@ai-sdk/mcp/package.json +1 -1
  13. package/dist/src/compiled/@ai-sdk/openai/index.js +2 -2
  14. package/dist/src/compiled/@ai-sdk/openai/package.json +1 -1
  15. package/dist/src/compiled/@ai-sdk/otel/index.js +1 -1
  16. package/dist/src/compiled/@ai-sdk/otel/package.json +1 -1
  17. package/dist/src/compiled/@vercel/sandbox/index.d.ts +34 -11
  18. package/dist/src/compiled/_chunks/workflow/{dist-DZZY3Zyp.js → dist-Dl-X5RB3.js} +1 -1
  19. package/dist/src/compiled/just-bash/index.d.ts +48 -0
  20. package/dist/src/execution/await-authorization-orchestrator.d.ts +2 -0
  21. package/dist/src/execution/await-authorization-orchestrator.js +1 -1
  22. package/dist/src/execution/code-mode-authorization-lifecycle.d.ts +15 -0
  23. package/dist/src/execution/code-mode-authorization-lifecycle.js +1 -0
  24. package/dist/src/execution/connection-auth-steps.d.ts +15 -0
  25. package/dist/src/execution/connection-auth-steps.js +1 -1
  26. package/dist/src/execution/connection-auth-tool-result.d.ts +2 -0
  27. package/dist/src/execution/connection-auth-tool-result.js +1 -0
  28. package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
  29. package/dist/src/execution/node-step.d.ts +12 -1
  30. package/dist/src/execution/node-step.js +1 -1
  31. package/dist/src/execution/remote-agent-dispatch.js +1 -1
  32. package/dist/src/execution/sandbox/bash-tool.js +1 -1
  33. package/dist/src/execution/sandbox/bindings/local.js +1 -1
  34. package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
  35. package/dist/src/execution/sandbox/glob-tool.js +1 -1
  36. package/dist/src/execution/sandbox/grep-tool.js +1 -1
  37. package/dist/src/execution/sandbox/ripgrep-probe.js +1 -1
  38. package/dist/src/execution/sandbox/session.d.ts +3 -1
  39. package/dist/src/execution/sandbox/session.js +1 -1
  40. package/dist/src/execution/sandbox/shell-quote.d.ts +1 -1
  41. package/dist/src/execution/turn-workflow.js +1 -1
  42. package/dist/src/execution/workflow-callback-url.d.ts +12 -0
  43. package/dist/src/execution/workflow-callback-url.js +1 -0
  44. package/dist/src/execution/workflow-entry.js +1 -1
  45. package/dist/src/execution/workflow-steps.d.ts +2 -0
  46. package/dist/src/execution/workflow-steps.js +1 -1
  47. package/dist/src/harness/code-mode-approval.d.ts +22 -0
  48. package/dist/src/harness/code-mode-approval.js +1 -0
  49. package/dist/src/harness/code-mode.d.ts +31 -0
  50. package/dist/src/harness/code-mode.js +1 -0
  51. package/dist/src/harness/input-extraction.js +1 -1
  52. package/dist/src/harness/step-hooks.js +1 -1
  53. package/dist/src/harness/tool-loop.js +1 -1
  54. package/dist/src/internal/application/package.js +1 -1
  55. package/dist/src/internal/nitro/host/build-application.js +1 -1
  56. package/dist/src/internal/nitro/host/code-mode-worker-asset.d.ts +18 -0
  57. package/dist/src/internal/nitro/host/code-mode-worker-asset.js +1 -0
  58. package/dist/src/internal/nitro/host/configure-nitro-routes.js +3 -3
  59. package/dist/src/internal/nitro/host/create-application-nitro.d.ts +0 -1
  60. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  61. package/dist/src/internal/nitro/host/dev-authored-source-watcher.d.ts +0 -1
  62. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  63. package/dist/src/internal/nitro/host/dispatch-schedule-in-dev.d.ts +41 -0
  64. package/dist/src/internal/nitro/host/dispatch-schedule-in-dev.js +1 -0
  65. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  66. package/dist/src/internal/nitro/host/start-development-server.d.ts +6 -1
  67. package/dist/src/internal/nitro/host/start-development-server.js +1 -1
  68. package/dist/src/internal/nitro/routes/dev-schedule-dispatch.d.ts +15 -0
  69. package/dist/src/internal/nitro/routes/dev-schedule-dispatch.js +1 -0
  70. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/approval-continuation.js +1 -0
  71. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/approval-response.js +1 -0
  72. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/code-mode-tool.js +1 -0
  73. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/continuation-capability.js +1 -0
  74. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/errors.js +1 -0
  75. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/fetch-policy.js +1 -0
  76. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/host-interrupt.js +1 -0
  77. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/index.js +1 -0
  78. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/interrupt-continuation.js +1 -0
  79. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/options.js +1 -0
  80. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/run-code-mode.js +1 -0
  81. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/runtime/manager.js +1 -0
  82. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/runtime/max-workers.js +1 -0
  83. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/runtime-assets.js +1 -0
  84. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/serialization.js +1 -0
  85. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/source-cache.js +4 -0
  86. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/telemetry.js +1 -0
  87. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/tool-invocation.js +1 -0
  88. package/dist/src/node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/tool-prompt.js +9 -0
  89. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/index.js +1 -0
  90. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/checks.js +1 -0
  91. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/coerce.js +1 -0
  92. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/compat.js +1 -0
  93. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/errors.js +1 -0
  94. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/external.js +1 -0
  95. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/from-json-schema.js +1 -0
  96. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/iso.js +1 -0
  97. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/parse.js +1 -0
  98. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/schemas.js +1 -0
  99. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/api.js +1 -0
  100. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/checks.js +1 -0
  101. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/core.js +1 -0
  102. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/doc.js +3 -0
  103. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/errors.js +2 -0
  104. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/index.js +1 -0
  105. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema-generator.js +1 -0
  106. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema-processors.js +1 -0
  107. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/json-schema.js +1 -0
  108. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/parse.js +1 -0
  109. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/regexes.js +1 -0
  110. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/registries.js +1 -0
  111. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/schemas.js +60 -0
  112. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/to-json-schema.js +3 -0
  113. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/util.js +1 -0
  114. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/core/versions.js +1 -0
  115. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ar.js +1 -0
  116. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/az.js +1 -0
  117. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/be.js +1 -0
  118. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/bg.js +1 -0
  119. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ca.js +1 -0
  120. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/cs.js +1 -0
  121. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/da.js +1 -0
  122. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/de.js +1 -0
  123. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/el.js +1 -0
  124. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/en.js +1 -0
  125. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/eo.js +1 -0
  126. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/es.js +1 -0
  127. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fa.js +1 -0
  128. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fi.js +1 -0
  129. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fr-CA.js +1 -0
  130. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/fr.js +1 -0
  131. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/he.js +1 -0
  132. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hr.js +1 -0
  133. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hu.js +1 -0
  134. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/hy.js +1 -0
  135. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/id.js +1 -0
  136. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/index.js +1 -0
  137. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/is.js +1 -0
  138. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/it.js +1 -0
  139. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ja.js +1 -0
  140. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ka.js +1 -0
  141. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/kh.js +1 -0
  142. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/km.js +1 -0
  143. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ko.js +1 -0
  144. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/lt.js +1 -0
  145. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/mk.js +1 -0
  146. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ms.js +1 -0
  147. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/nl.js +1 -0
  148. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/no.js +1 -0
  149. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ota.js +1 -0
  150. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/pl.js +1 -0
  151. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ps.js +1 -0
  152. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/pt.js +1 -0
  153. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ro.js +1 -0
  154. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ru.js +1 -0
  155. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/sl.js +1 -0
  156. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/sv.js +1 -0
  157. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ta.js +1 -0
  158. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/th.js +1 -0
  159. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/tr.js +1 -0
  160. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ua.js +1 -0
  161. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/uk.js +1 -0
  162. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/ur.js +1 -0
  163. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/uz.js +1 -0
  164. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/vi.js +1 -0
  165. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/yo.js +1 -0
  166. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/zh-CN.js +1 -0
  167. package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/locales/zh-TW.js +1 -0
  168. package/dist/src/protocol/routes.d.ts +20 -0
  169. package/dist/src/protocol/routes.js +1 -1
  170. package/dist/src/public/definitions/sandbox.d.ts +1 -1
  171. package/dist/src/public/sandbox/index.d.ts +1 -1
  172. package/dist/src/runtime/agent/mock-model-adapter.js +4 -3
  173. package/dist/src/runtime/framework-tools/code-mode-connection-auth.d.ts +32 -0
  174. package/dist/src/runtime/framework-tools/code-mode-connection-auth.js +1 -0
  175. package/dist/src/runtime/framework-tools/connection-search.d.ts +3 -0
  176. package/dist/src/runtime/framework-tools/connection-search.js +1 -1
  177. package/dist/src/runtime/framework-tools/connection-tools.d.ts +18 -1
  178. package/dist/src/runtime/framework-tools/connection-tools.js +1 -1
  179. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  180. package/dist/src/shared/code-mode.d.ts +2 -0
  181. package/dist/src/shared/code-mode.js +1 -0
  182. package/dist/src/shared/sandbox-session.d.ts +38 -10
  183. package/package.json +9 -8
@@ -1,3 +1,3 @@
1
- import{t as e}from"../../_chunks/workflow/src-B54rYDvB.js";import{convertDataContentToBase64String as t}from"ai";var n=e();function r(e){let t=e.toLowerCase();for(let[e,n]of[[`google.vertex`,`gcp.vertex_ai`],[`google.generative-ai`,`gcp.gemini`],[`google-vertex`,`gcp.vertex_ai`],[`amazon-bedrock`,`aws.bedrock`],[`azure-openai`,`azure.ai.openai`],[`anthropic`,`anthropic`],[`openai`,`openai`],[`azure`,`azure.ai.inference`],[`google`,`gcp.gemini`],[`mistral`,`mistral_ai`],[`cohere`,`cohere`],[`bedrock`,`aws.bedrock`],[`groq`,`groq`],[`deepseek`,`deepseek`],[`perplexity`,`perplexity`],[`xai`,`x_ai`]])if(t===e||t.startsWith(e+`.`)||t.startsWith(e+`-`))return n;return e}function i(e){return{"ai.generateText":`invoke_agent`,"ai.streamText":`invoke_agent`,"ai.generateObject":`invoke_agent`,"ai.streamObject":`invoke_agent`,"ai.embed":`embeddings`,"ai.embedMany":`embeddings`,"ai.rerank":`rerank`}[e]??e}function a(e){return typeof e==`string`?[{type:`text`,content:e}]:Array.isArray(e)?e.map(e=>({type:`text`,content:e.content})):[{type:`text`,content:e.content}]}function o(e){switch(e.type){case`text`:return{type:`text`,content:e.text};case`reasoning`:return{type:`reasoning`,content:e.text};case`tool-call`:return{type:`tool_call`,id:e.toolCallId??null,name:e.toolName,arguments:e.input};case`tool-result`:{let t=e.output,n;return t&&(n=t.type===`text`||t.type===`error-text`||t.type===`json`||t.type===`error-json`?t.value:t.type===`execution-denied`?{denied:!0,reason:t.reason}:t),{type:`tool_call_response`,id:e.toolCallId??null,response:n}}case`file`:{let n=e.data,r=(()=>{if(typeof n==`object`&&n&&!(n instanceof URL)&&!(n instanceof Uint8Array)&&!(n instanceof ArrayBuffer)&&`type`in n)switch(n.type){case`data`:return n.data;case`url`:return n.url;case`text`:return n.text;default:return``}return n})(),i;if(r instanceof Uint8Array)i=t(r);else if(typeof r==`string`){if(r.startsWith(`http://`)||r.startsWith(`https://`))return{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r};i=r}else if(r instanceof URL)return{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r.toString()};else i=String(r);return{type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType??null,content:i}}case`tool-approval-response`:return{type:`tool_approval_response`,approval_id:e.approvalId,approved:e.approved,reason:e.reason};case`custom`:return{type:`custom`,kind:e.kind};case`reasoning-file`:return{type:String(e.type)};default:return{type:String(e.type)}}}function s(e){return!e||e.startsWith(`image/`)?`image`:e.startsWith(`video/`)?`video`:e.startsWith(`audio/`)?`audio`:`image`}function c(e){return e.filter(e=>e.role!==`system`).map(e=>{if(e.role===`system`)return{role:`system`,parts:[{type:`text`,content:e.content}]};let t=e.content.map(o);return{role:e.role,parts:t}})}function l({prompt:e,messages:t}){let n=[];if(typeof e==`string`)n.push({role:`user`,parts:[{type:`text`,content:e}]});else if(Array.isArray(e))for(let t of e){let e=u(t);e&&n.push(e)}if(t)for(let e of t){let t=u(e);t&&n.push(t)}return n}function u(e){if(e.role!==`system`){if(e.role===`user`)return typeof e.content==`string`?{role:`user`,parts:[{type:`text`,content:e.content}]}:{role:`user`,parts:e.content.map(e=>{switch(e.type){case`text`:return{type:`text`,content:e.text};case`image`:{let n=e.image;return n instanceof URL?{type:`uri`,modality:`image`,mime_type:e.mediaType??null,uri:n.toString()}:typeof n==`string`?n.startsWith(`http://`)||n.startsWith(`https://`)?{type:`uri`,modality:`image`,mime_type:e.mediaType??null,uri:n}:{type:`blob`,modality:`image`,mime_type:e.mediaType??null,content:n}:{type:`blob`,modality:`image`,mime_type:e.mediaType??null,content:t(n)}}case`file`:{let n=e.data,r=(()=>{if(typeof n==`object`&&n&&!(n instanceof URL)&&!(n instanceof Uint8Array)&&!(n instanceof ArrayBuffer)&&`type`in n)switch(n.type){case`data`:return n.data;case`url`:return n.url;case`text`:return n.text;default:return``}return n})();return r instanceof URL?{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r.toString()}:typeof r==`string`?r.startsWith(`http://`)||r.startsWith(`https://`)?{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r}:{type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType??null,content:r}:{type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType??null,content:t(r)}}default:return{type:String(e.type)}}})};if(e.role===`assistant`)return typeof e.content==`string`?{role:`assistant`,parts:[{type:`text`,content:e.content}]}:{role:`assistant`,parts:e.content.map(e=>{switch(e.type){case`text`:return{type:`text`,content:e.text};case`reasoning`:return{type:`reasoning`,content:e.text};case`tool-call`:return{type:`tool_call`,id:e.toolCallId??null,name:e.toolName,arguments:e.input};case`tool-result`:{let t=e.output,n;return t&&(n=t.type===`text`||t.type===`error-text`||t.type===`json`||t.type===`error-json`?t.value:t.type===`execution-denied`?{denied:!0,reason:t.reason}:t),{type:`tool_call_response`,id:e.toolCallId??null,response:n}}default:return{type:String(e.type)}}})};if(e.role===`tool`)return{role:`tool`,parts:e.content.map(e=>{if(e.type===`tool-result`){let t=e.output,n;return t&&(n=t.type===`text`||t.type===`error-text`||t.type===`json`||t.type===`error-json`?t.value:t.type===`execution-denied`?{denied:!0,reason:t.reason}:t),{type:`tool_call_response`,id:e.toolCallId??null,response:n}}return{type:String(e.type)}})}}}function d({text:e,reasoning:t,toolCalls:n,files:r,finishReason:i}){let a=[];if(t)for(let e of t)`text`in e&&e.text&&a.push({type:`reasoning`,content:e.text});if(e!=null&&e.length>0&&a.push({type:`text`,content:e}),n)for(let e of n)a.push({type:`tool_call`,id:e.toolCallId,name:e.toolName,arguments:e.input});if(r)for(let e of r)a.push({type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType,content:e.base64});return[{role:`assistant`,parts:a,finish_reason:p(i)}]}function f({objectText:e,finishReason:t}){return[{role:`assistant`,parts:[{type:`text`,content:e}],finish_reason:p(t)}]}function p(e){return{stop:`stop`,length:`length`,"content-filter":`content_filter`,"tool-calls":`tool_call`,error:`error`,other:`stop`,unknown:`stop`}[e]??e}function m(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:n.SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:n.SpanStatusCode.ERROR})}function h(e){return e?.isEnabled!==!1}function g(e,t){if(!h(e))return{};let n={};for(let[r,i]of Object.entries(t))if(i!=null){if(typeof i==`object`&&`input`in i&&typeof i.input==`function`){if(e?.recordInputs===!1)continue;let t=i.input();t!=null&&(n[r]=t);continue}if(typeof i==`object`&&`output`in i&&typeof i.output==`function`){if(e?.recordOutputs===!1)continue;let t=i.output();t!=null&&(n[r]=t);continue}n[r]=i}return n}var _={usage:!1,providerMetadata:!1,embedding:!1,reranking:!1,runtimeContext:!1,headers:!1,toolChoice:!1,schema:!1};function v(e){return{..._,usage:e.usage??!1,providerMetadata:e.providerMetadata??!1,embedding:e.embedding??!1,reranking:e.reranking??!1,runtimeContext:e.runtimeContext??!1,headers:e.headers??!1,toolChoice:e.toolChoice??!1,schema:e.schema??!1}}function y(e){return Object.fromEntries(Object.entries(e??{}).filter(([,e])=>e!=null).map(([e,t])=>[`ai.settings.context.${e}`,t]))}function b(e){return Object.fromEntries(Object.entries(e??{}).filter(([,e])=>e!=null).map(([e,t])=>[`ai.request.headers.${e}`,t]))}function x(e){return{"ai.usage.inputTokenDetails.noCacheTokens":e.inputTokenDetails?.noCacheTokens,"ai.usage.outputTokenDetails.textTokens":e.outputTokenDetails?.textTokens,"ai.usage.outputTokenDetails.reasoningTokens":e.outputTokenDetails?.reasoningTokens}}function S(e,t,n){let r={};for(let[i,a]of Object.entries(n))!t[i]||a==null||Object.assign(r,g(e,a));return r}var C=class{constructor(e={}){this.callStates=new Map,this.tracer=e.tracer??n.trace.getTracer(`gen_ai`),this.supplementalAttributes=v(e),this.enrichSpan=e.enrichSpan}getCallState(e){return this.callStates.get(e)}cleanupCallState(e){this.callStates.delete(e)}getSpanAttributes({attributes:e,spanType:t,operationId:n,callId:r,runtimeContext:i}){let a;try{a=this.enrichSpan?.call(this,{spanType:t,operationId:n,callId:r,runtimeContext:i})}catch{a=void 0}return{...a,...e}}executeTool({callId:e,toolCallId:t,execute:r}){let i=this.getCallState(e)?.toolSpans.get(t);return i==null?r():n.context.with(i.context,r)}onStart(e){if(e.operationId===`ai.embed`||e.operationId===`ai.embedMany`){this.onEmbedOperationStart(e);return}if(e.operationId===`ai.rerank`){this.onRerankOperationStart(e);return}if(e.operationId===`ai.generateObject`||e.operationId===`ai.streamObject`){this.onObjectOperationStart(e);return}this.onGenerateStart(e)}onGenerateStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},o={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,seed:e.seed,maxRetries:e.maxRetries},s=r(e.provider),c=i(e.operationId),u=e.runtimeContext,d=S(t,this.supplementalAttributes,{runtimeContext:y(u),headers:b(e.headers)}),f=g(t,{"gen_ai.operation.name":c,"gen_ai.provider.name":s,"gen_ai.request.model":e.modelId,"gen_ai.agent.name":t.functionId,"gen_ai.request.frequency_penalty":e.frequencyPenalty,"gen_ai.request.max_tokens":e.maxOutputTokens,"gen_ai.request.presence_penalty":e.presencePenalty,"gen_ai.request.temperature":e.temperature??void 0,"gen_ai.request.top_k":e.topK,"gen_ai.request.top_p":e.topP,"gen_ai.request.stop_sequences":e.stopSequences,"gen_ai.request.seed":e.seed,"gen_ai.system_instructions":e.instructions?{input:()=>JSON.stringify(a(e.instructions))}:void 0,"gen_ai.input.messages":{input:()=>JSON.stringify(l({prompt:void 0,messages:e.messages}))},...d}),p=`${c} ${e.modelId}`,m=this.tracer.startSpan(p,{attributes:this.getSpanAttributes({attributes:f,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:u}),kind:n.SpanKind.INTERNAL}),h=n.trace.setSpan(n.context.active(),m);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:m,rootContext:h,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:o,provider:e.provider,modelId:e.modelId,runtimeContext:u,baseSupplementalAttributes:d})}onObjectOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},o={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,seed:e.seed,maxRetries:e.maxRetries},s=r(e.provider),c=i(e.operationId),u=S(t,this.supplementalAttributes,{headers:b(e.headers)}),d=g(t,{"gen_ai.operation.name":c,"gen_ai.provider.name":s,"gen_ai.request.model":e.modelId,"gen_ai.agent.name":t.functionId,"gen_ai.output.type":`json`,"gen_ai.request.frequency_penalty":e.frequencyPenalty,"gen_ai.request.max_tokens":e.maxOutputTokens,"gen_ai.request.presence_penalty":e.presencePenalty,"gen_ai.request.temperature":e.temperature??void 0,"gen_ai.request.top_k":e.topK,"gen_ai.request.top_p":e.topP,"gen_ai.request.seed":e.seed,"gen_ai.system_instructions":e.system?{input:()=>JSON.stringify(a(e.system))}:void 0,"gen_ai.input.messages":{input:()=>JSON.stringify(l({prompt:e.prompt,messages:e.messages}))},...u,...S(t,this.supplementalAttributes,{schema:{"ai.schema":e.schema?{input:()=>JSON.stringify(e.schema)}:void 0,"ai.schema.name":e.schemaName,"ai.schema.description":e.schemaDescription,"ai.settings.output":e.output}})}),f=`${c} ${e.modelId}`,p=this.tracer.startSpan(f,{attributes:this.getSpanAttributes({attributes:d,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:void 0}),kind:n.SpanKind.INTERNAL}),m=n.trace.setSpan(n.context.active(),p);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:p,rootContext:m,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:o,provider:e.provider,modelId:e.modelId,runtimeContext:void 0,baseSupplementalAttributes:u})}onObjectStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`chat`,"gen_ai.provider.name":r(e.provider),"gen_ai.request.model":e.modelId,"gen_ai.output.type":`json`,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP,"gen_ai.input.messages":{input:()=>e.promptMessages?JSON.stringify(c(e.promptMessages)):void 0},...t.baseSupplementalAttributes}),o=`chat ${e.modelId}`;t.inferenceSpan=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`languageModel`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.rootContext),t.inferenceContext=n.trace.setSpan(t.rootContext,t.inferenceSpan)}onObjectStepFinish(e){let t=this.getCallState(e.callId);if(!t?.inferenceSpan)return;let{telemetry:n}=t;t.inferenceSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.response.id":e.response.id,"gen_ai.response.model":e.response.modelId,"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.output.messages":{output:()=>{try{return JSON.stringify(f({objectText:e.objectText,finishReason:e.finishReason}))}catch{return e.objectText}}},...S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.usage)})})),t.inferenceSpan.end(),t.inferenceSpan=void 0,t.inferenceContext=void 0}onEmbedOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},i=r(e.provider),a=S(t,this.supplementalAttributes,{headers:b(e.headers)}),o=e.value,s=e.operationId===`ai.embedMany`,c=g(t,{"gen_ai.operation.name":`embeddings`,"gen_ai.provider.name":i,"gen_ai.request.model":e.modelId,...a,...S(t,this.supplementalAttributes,{embedding:s?{"ai.values":{input:()=>o.map(e=>JSON.stringify(e))}}:{"ai.value":{input:()=>JSON.stringify(o)}}})}),l=`embeddings ${e.modelId}`,u=this.tracer.startSpan(l,{attributes:this.getSpanAttributes({attributes:c,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:void 0}),kind:n.SpanKind.CLIENT}),d=n.trace.setSpan(n.context.active(),u);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:u,rootContext:d,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:{maxRetries:e.maxRetries},provider:e.provider,modelId:e.modelId,runtimeContext:void 0,baseSupplementalAttributes:a})}onStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t;t.runtimeContext=e.runtimeContext;let i=g(r,{"gen_ai.operation.name":`agent_step`,...t.baseSupplementalAttributes,...S(r,this.supplementalAttributes,{toolChoice:{"ai.prompt.toolChoice":{input:()=>e.stepToolChoice==null?void 0:JSON.stringify(e.stepToolChoice)}}})});t.stepSpan=this.tracer.startSpan(`step ${e.steps.length+1}`,{attributes:this.getSpanAttributes({attributes:i,spanType:`step`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.INTERNAL},t.rootContext),t.stepContext=n.trace.setSpan(t.rootContext,t.stepSpan)}onLanguageModelCallStart(e){let t=this.getCallState(e.callId);if(!t?.stepContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`chat`,"gen_ai.provider.name":r(e.provider),"gen_ai.request.model":e.modelId,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.stop_sequences":t.settings.stopSequences,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP,"gen_ai.input.messages":{input:()=>{let t=l({prompt:void 0,messages:e.messages});return t.length>0?JSON.stringify(t):void 0}},"gen_ai.tool.definitions":{input:()=>e.tools?JSON.stringify(e.tools):void 0}});t.inferenceSpan=this.tracer.startSpan(`chat ${e.modelId}`,{attributes:this.getSpanAttributes({attributes:a,spanType:`languageModel`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.stepContext),t.inferenceContext=n.trace.setSpan(t.stepContext,t.inferenceSpan)}onLanguageModelCallEnd(e){let t=this.getCallState(e.callId);if(!t?.inferenceSpan)return;let{telemetry:n}=t;t.inferenceSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.response.id":e.responseId,"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.usage.cache_creation.input_tokens":e.usage.inputTokenDetails?.cacheWriteTokens,"gen_ai.output.messages":{output:()=>JSON.stringify(d({text:e.content.filter(e=>e.type===`text`).map(e=>e.text).join(``)||void 0,reasoning:e.content.filter(e=>e.type===`reasoning`),toolCalls:e.content.filter(e=>e.type===`tool-call`),files:e.content.filter(e=>e.type===`file`).map(e=>e.file),finishReason:e.finishReason}))},...S(n,this.supplementalAttributes,{usage:x(e.usage)})})),t.inferenceSpan.end(),t.inferenceSpan=void 0,t.inferenceContext=void 0}onToolExecutionStart(e){let t=this.getCallState(e.callId);if(!t?.stepContext)return;let{telemetry:r}=t,{toolCall:i}=e,a=g(r,{"gen_ai.operation.name":`execute_tool`,"gen_ai.tool.name":i.toolName,"gen_ai.tool.call.id":i.toolCallId,"gen_ai.tool.type":`function`,"gen_ai.tool.call.arguments":{input:()=>JSON.stringify(i.input)}}),o=`execute_tool ${i.toolName}`,s=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`tool`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.INTERNAL},t.stepContext),c=n.trace.setSpan(t.stepContext,s);t.toolSpans.set(i.toolCallId,{span:s,context:c})}onToolExecutionEnd(e){let t=this.getCallState(e.callId);if(!t)return;let n=t.toolSpans.get(e.toolCall.toolCallId);if(!n)return;let{span:r}=n,{telemetry:i}=t,{toolOutput:a}=e;if(a.type===`tool-result`)try{r.setAttributes(g(i,{"gen_ai.tool.call.result":{output:()=>JSON.stringify(a.output)}}))}catch{}else m(r,a.error);r.end(),t.toolSpans.delete(e.toolCall.toolCallId)}onStepFinish(e){let t=this.getCallState(e.callId);if(!t?.stepSpan)return;let{telemetry:n}=t;t.stepSpan.setAttributes(S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.usage)})),t.stepSpan.end(),t.stepSpan=void 0,t.stepContext=void 0}onEnd(e){let t=this.getCallState(e.callId);if(t?.rootSpan){if(t.operationId===`ai.embed`||t.operationId===`ai.embedMany`){this.onEmbedOperationEnd(e);return}if(t.operationId===`ai.rerank`){this.onRerankOperationEnd(e);return}if(t.operationId===`ai.generateObject`||t.operationId===`ai.streamObject`){this.onObjectOperationEnd(e);return}this.onGenerateEnd(e)}}onGenerateEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t;t.rootSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.usage.input_tokens":e.totalUsage.inputTokens,"gen_ai.usage.output_tokens":e.totalUsage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.totalUsage.inputTokenDetails?.cacheReadTokens,"gen_ai.usage.cache_creation.input_tokens":e.totalUsage.inputTokenDetails?.cacheWriteTokens,"gen_ai.output.messages":{output:()=>JSON.stringify(d({text:e.text??void 0,reasoning:e.reasoning,toolCalls:e.toolCalls,files:e.files,finishReason:e.finishReason}))},...S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.totalUsage)})})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onObjectOperationEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t;t.rootSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.output.messages":{output:()=>e.object==null?void 0:JSON.stringify(f({objectText:JSON.stringify(e.object),finishReason:e.finishReason}))},...S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.usage)})})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onEmbedOperationEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t,r=t.operationId===`ai.embedMany`;t.rootSpan.setAttributes(g(n,{"gen_ai.usage.input_tokens":e.usage.tokens,...S(n,this.supplementalAttributes,{embedding:r?{"ai.embeddings":{output:()=>e.embedding.map(e=>JSON.stringify(e))}}:{"ai.embedding":{output:()=>JSON.stringify(e.embedding)}}})})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onEmbedStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`embeddings`,"gen_ai.provider.name":r(t.provider),"gen_ai.request.model":t.modelId,...t.baseSupplementalAttributes,...S(i,this.supplementalAttributes,{embedding:{"ai.values":{input:()=>e.values.map(e=>JSON.stringify(e))}}})}),o=`embeddings ${t.modelId}`,s=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`embedding`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.rootContext),c=n.trace.setSpan(t.rootContext,s);t.embedSpans.set(e.embedCallId,{span:s,context:c})}onEmbedEnd(e){let t=this.getCallState(e.callId);if(!t)return;let n=t.embedSpans.get(e.embedCallId);if(!n)return;let{span:r}=n,{telemetry:i}=t;r.setAttributes(g(i,{"gen_ai.usage.input_tokens":e.usage.tokens,...S(i,this.supplementalAttributes,{embedding:{"ai.embeddings":{output:()=>e.embeddings.map(e=>JSON.stringify(e))}}})})),r.end(),t.embedSpans.delete(e.embedCallId)}onRerankOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},i=r(e.provider),a=S(t,this.supplementalAttributes,{headers:b(e.headers)}),o=g(t,{"gen_ai.operation.name":`rerank`,"gen_ai.provider.name":i,"gen_ai.request.model":e.modelId,...a,...S(t,this.supplementalAttributes,{reranking:{"ai.documents":{input:()=>e.documents.map(e=>JSON.stringify(e))}}})}),s=`rerank ${e.modelId}`,c=this.tracer.startSpan(s,{attributes:this.getSpanAttributes({attributes:o,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:void 0}),kind:n.SpanKind.CLIENT}),l=n.trace.setSpan(n.context.active(),c);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:c,rootContext:l,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:{maxRetries:e.maxRetries},provider:e.provider,modelId:e.modelId,runtimeContext:void 0,baseSupplementalAttributes:a})}onRerankOperationEnd(e){let t=this.getCallState(e.callId);t?.rootSpan&&(t.rootSpan.end(),this.cleanupCallState(e.callId))}onRerankStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`rerank`,"gen_ai.provider.name":r(t.provider),"gen_ai.request.model":t.modelId,...t.baseSupplementalAttributes,...S(i,this.supplementalAttributes,{reranking:{"ai.documents":{input:()=>e.documents.map(e=>JSON.stringify(e))}}})}),o=`rerank ${t.modelId}`,s=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`reranking`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.rootContext);t.rerankSpan={span:s,context:n.trace.setSpan(t.rootContext,s)}}onRerankEnd(e){let t=this.getCallState(e.callId);if(!t?.rerankSpan)return;let{span:n}=t.rerankSpan,{telemetry:r}=t;n.setAttributes(S(r,this.supplementalAttributes,{reranking:{"ai.ranking.type":e.documentsType,"ai.ranking":{output:()=>e.ranking.map(e=>JSON.stringify(e))}}})),n.end(),t.rerankSpan=void 0}onError(e){let t=e;if(!t?.callId)return;let n=this.getCallState(t.callId);if(!n?.rootSpan)return;let r=t.error??e;for(let{span:e}of n.toolSpans.values())m(e,r),e.end();n.toolSpans.clear(),n.inferenceSpan&&(m(n.inferenceSpan,r),n.inferenceSpan.end(),n.inferenceSpan=void 0,n.inferenceContext=void 0),n.stepSpan&&(m(n.stepSpan,r),n.stepSpan.end(),n.stepSpan=void 0,n.stepContext=void 0);for(let{span:e}of n.embedSpans.values())m(e,r),e.end();n.embedSpans.clear(),n.rerankSpan&&=(m(n.rerankSpan.span,r),n.rerankSpan.span.end(),void 0),m(n.rootSpan,r),n.rootSpan.end(),this.cleanupCallState(t.callId)}};function w({operationId:e,telemetry:t}){return{"operation.name":`${e}${t?.functionId==null?``:` ${t.functionId}`}`,"resource.name":t?.functionId,"ai.operationId":e,"ai.telemetry.functionId":t?.functionId}}function T({model:e,settings:t,headers:n,context:r}){return{"ai.model.provider":e.provider,"ai.model.id":e.modelId,...Object.entries(t).reduce((e,[t,n])=>(e[`ai.settings.${t}`]=n,e),{}),...Object.entries(r??{}).reduce((e,[t,n])=>(n!=null&&(e[`ai.settings.context.${t}`]=n),e),{}),...Object.entries(n??{}).reduce((e,[t,n])=>(n!==void 0&&(e[`ai.request.headers.${t}`]=n),e),{})}}function E(e){return JSON.stringify(e.map(e=>({...e,content:typeof e.content==`string`?e.content:e.content.map(e=>e.type===`file`?{...e,data:D(e.data)}:e)})))}function D(e){switch(e.type){case`data`:return e.data instanceof Uint8Array?t(e.data):e.data;case`url`:return e.url.toString();case`reference`:return e.reference;case`text`:return e.text}}function O(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:n.SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:n.SpanStatusCode.ERROR})}function k(e){return e?.isEnabled!==!1}function A(e,t){if(!k(e))return{};let n={};for(let[r,i]of Object.entries(t))if(i!=null){if(typeof i==`object`&&`input`in i&&typeof i.input==`function`){if(e?.recordInputs===!1)continue;let t=i.input();t!=null&&(n[r]=t);continue}if(typeof i==`object`&&`output`in i&&typeof i.output==`function`){if(e?.recordOutputs===!1)continue;let t=i.output();t!=null&&(n[r]=t);continue}n[r]=i}return n}var j=class{constructor(e={}){this.callStates=new Map,this.tracer=e.tracer??n.trace.getTracer(`ai`)}getCallState(e){return this.callStates.get(e)}cleanupCallState(e){this.callStates.delete(e)}executeTool({callId:e,toolCallId:t,execute:r}){let i=this.getCallState(e)?.toolSpans.get(t);return i==null?r():n.context.with(i.context,r)}onStart(e){if(e.operationId===`ai.embed`||e.operationId===`ai.embedMany`){this.onEmbedOperationStart(e);return}if(e.operationId===`ai.rerank`){this.onRerankOperationStart(e);return}if(e.operationId===`ai.generateObject`||e.operationId===`ai.streamObject`){this.onObjectOperationStart(e);return}this.onGenerateStart(e)}onGenerateStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},r={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,seed:e.seed,maxRetries:e.maxRetries},i=T({model:{provider:e.provider,modelId:e.modelId},headers:e.headers,settings:r,context:e.runtimeContext}),a=A(t,{...w({operationId:e.operationId,telemetry:t}),...i,"ai.model.provider":e.provider,"ai.model.id":e.modelId,"ai.prompt":{input:()=>JSON.stringify({system:e.instructions,messages:e.messages})}}),o=this.tracer.startSpan(e.operationId,{attributes:a}),s=n.trace.setSpan(n.context.active(),o);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:o,rootContext:s,stepSpan:void 0,stepContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,baseTelemetryAttributes:i,settings:r})}onObjectOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},r={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,seed:e.seed,maxRetries:e.maxRetries},i=T({model:{provider:e.provider,modelId:e.modelId},headers:e.headers,settings:r,context:void 0}),a=A(t,{...w({operationId:e.operationId,telemetry:t}),...i,"ai.prompt":{input:()=>JSON.stringify({system:e.system,prompt:e.prompt,messages:e.messages})},"ai.schema":e.schema?{input:()=>JSON.stringify(e.schema)}:void 0,"ai.schema.name":e.schemaName,"ai.schema.description":e.schemaDescription,"ai.settings.output":e.output}),o=this.tracer.startSpan(e.operationId,{attributes:a}),s=n.trace.setSpan(n.context.active(),o);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:o,rootContext:s,stepSpan:void 0,stepContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,baseTelemetryAttributes:i,settings:r})}onObjectStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t,i=t.operationId===`ai.streamObject`?`ai.streamObject.doStream`:`ai.generateObject.doGenerate`,a=A(r,{...w({operationId:i,telemetry:r}),...t.baseTelemetryAttributes,"ai.prompt.messages":{input:()=>e.promptMessages?E(e.promptMessages):void 0},"gen_ai.system":e.provider,"gen_ai.request.model":e.modelId,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP});t.stepSpan=this.tracer.startSpan(i,{attributes:a},t.rootContext),t.stepContext=n.trace.setSpan(t.rootContext,t.stepSpan)}onObjectStepFinish(e){let t=this.getCallState(e.callId);if(!t?.stepSpan)return;let{telemetry:n}=t;t.stepSpan.setAttributes(A(n,{"ai.response.finishReason":e.finishReason,"ai.response.object":{output:()=>{try{return JSON.stringify(JSON.parse(e.objectText))}catch{return e.objectText}}},"ai.response.id":e.response.id,"ai.response.model":e.response.modelId,"ai.response.timestamp":e.response.timestamp.toISOString(),"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0,"ai.usage.inputTokens":e.usage.inputTokens,"ai.usage.outputTokens":e.usage.outputTokens,"ai.usage.totalTokens":e.usage.totalTokens,"ai.usage.reasoningTokens":e.usage.outputTokenDetails?.reasoningTokens,"ai.usage.cachedInputTokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.response.id":e.response.id,"gen_ai.response.model":e.response.modelId,"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens})),e.msToFirstChunk!=null&&(t.stepSpan.addEvent(`ai.stream.firstChunk`,{"ai.stream.msToFirstChunk":e.msToFirstChunk}),t.stepSpan.setAttributes({"ai.stream.msToFirstChunk":e.msToFirstChunk})),t.stepSpan.end(),t.stepSpan=void 0,t.stepContext=void 0}onEmbedOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},r={maxRetries:e.maxRetries},i=T({model:{provider:e.provider,modelId:e.modelId},headers:e.headers,settings:r,context:void 0}),a=e.value,o=e.operationId===`ai.embedMany`,s=A(t,{...w({operationId:e.operationId,telemetry:t}),...i,...o?{"ai.values":{input:()=>a.map(e=>JSON.stringify(e))}}:{"ai.value":{input:()=>JSON.stringify(a)}}}),c=this.tracer.startSpan(e.operationId,{attributes:s}),l=n.trace.setSpan(n.context.active(),c);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:c,rootContext:l,stepSpan:void 0,stepContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,baseTelemetryAttributes:i,settings:r})}onStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t,i=t.operationId===`ai.streamText`?`ai.streamText.doStream`:`ai.generateText.doGenerate`,a=A(r,{...w({operationId:i,telemetry:r}),...t.baseTelemetryAttributes,"ai.model.provider":e.provider,"ai.model.id":e.modelId,"ai.prompt.messages":{input:()=>e.promptMessages?E(e.promptMessages):void 0},"ai.prompt.tools":{input:()=>e.stepTools?.map(e=>JSON.stringify(e))},"ai.prompt.toolChoice":{input:()=>e.stepToolChoice==null?void 0:JSON.stringify(e.stepToolChoice)},"gen_ai.system":e.provider,"gen_ai.request.model":e.modelId,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.stop_sequences":t.settings.stopSequences,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP});t.stepSpan=this.tracer.startSpan(i,{attributes:a},t.rootContext),t.stepContext=n.trace.setSpan(t.rootContext,t.stepSpan)}onToolExecutionStart(e){let t=this.getCallState(e.callId);if(!t?.stepContext)return;let{telemetry:r}=t,{toolCall:i}=e,a=A(r,{...w({operationId:`ai.toolCall`,telemetry:r}),"ai.toolCall.name":i.toolName,"ai.toolCall.id":i.toolCallId,"ai.toolCall.args":{output:()=>JSON.stringify(i.input)}}),o=this.tracer.startSpan(`ai.toolCall`,{attributes:a},t.stepContext),s=n.trace.setSpan(t.stepContext,o);t.toolSpans.set(i.toolCallId,{span:o,context:s})}onToolExecutionEnd(e){let t=this.getCallState(e.callId);if(!t)return;let n=t.toolSpans.get(e.toolCall.toolCallId);if(!n)return;let{span:r}=n,{telemetry:i}=t,{toolOutput:a}=e;if(a.type===`tool-result`)try{r.setAttributes(A(i,{"ai.toolCall.result":{output:()=>JSON.stringify(a.output)}}))}catch{}else O(r,a.error);r.end(),t.toolSpans.delete(e.toolCall.toolCallId)}onStepFinish(e){let t=this.getCallState(e.callId);if(!t?.stepSpan)return;let{telemetry:n}=t,r=t.operationId===`ai.streamText`;t.stepSpan.setAttributes(A(n,{"ai.response.finishReason":e.finishReason,"ai.response.text":{output:()=>e.text??void 0},"ai.response.reasoning":{output:()=>e.reasoning.length>0?e.reasoning.filter(e=>`text`in e).map(e=>e.text).join(`
1
+ import{t as e}from"../../_chunks/workflow/src-B54rYDvB.js";import{convertDataContentToBase64String as t}from"ai";var n=e();function r(e){let t=e.toLowerCase();for(let[e,n]of[[`google.vertex`,`gcp.vertex_ai`],[`google.generative-ai`,`gcp.gemini`],[`google-vertex`,`gcp.vertex_ai`],[`amazon-bedrock`,`aws.bedrock`],[`azure-openai`,`azure.ai.openai`],[`anthropic`,`anthropic`],[`openai`,`openai`],[`azure`,`azure.ai.inference`],[`google`,`gcp.gemini`],[`mistral`,`mistral_ai`],[`cohere`,`cohere`],[`bedrock`,`aws.bedrock`],[`groq`,`groq`],[`deepseek`,`deepseek`],[`perplexity`,`perplexity`],[`xai`,`x_ai`]])if(t===e||t.startsWith(e+`.`)||t.startsWith(e+`-`))return n;return e}function i(e){return{"ai.generateText":`invoke_agent`,"ai.streamText":`invoke_agent`,"ai.generateObject":`invoke_agent`,"ai.streamObject":`invoke_agent`,"ai.embed":`embeddings`,"ai.embedMany":`embeddings`,"ai.rerank":`rerank`}[e]??e}function a(e){return typeof e==`string`?[{type:`text`,content:e}]:Array.isArray(e)?e.map(e=>({type:`text`,content:e.content})):[{type:`text`,content:e.content}]}function o(e){switch(e.type){case`text`:return{type:`text`,content:e.text};case`reasoning`:return{type:`reasoning`,content:e.text};case`tool-call`:return{type:`tool_call`,id:e.toolCallId??null,name:e.toolName,arguments:e.input};case`tool-result`:{let t=e.output,n;return t&&(n=t.type===`text`||t.type===`error-text`||t.type===`json`||t.type===`error-json`?t.value:t.type===`execution-denied`?{denied:!0,reason:t.reason}:t),{type:`tool_call_response`,id:e.toolCallId??null,response:n}}case`file`:{let n=e.data,r=(()=>{if(typeof n==`object`&&n&&!(n instanceof URL)&&!(n instanceof Uint8Array)&&!(n instanceof ArrayBuffer)&&`type`in n)switch(n.type){case`data`:return n.data;case`url`:return n.url;case`text`:return n.text;default:return``}return n})(),i;if(r instanceof Uint8Array)i=t(r);else if(typeof r==`string`){if(r.startsWith(`http://`)||r.startsWith(`https://`))return{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r};i=r}else if(r instanceof URL)return{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r.toString()};else i=String(r);return{type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType??null,content:i}}case`tool-approval-response`:return{type:`tool_approval_response`,approval_id:e.approvalId,approved:e.approved,reason:e.reason};case`custom`:return{type:`custom`,kind:e.kind};case`reasoning-file`:return{type:String(e.type)};default:return{type:String(e.type)}}}function s(e){return!e||e.startsWith(`image/`)?`image`:e.startsWith(`video/`)?`video`:e.startsWith(`audio/`)?`audio`:`image`}function c(e){return e.filter(e=>e.role!==`system`).map(e=>{if(e.role===`system`)return{role:`system`,parts:[{type:`text`,content:e.content}]};let t=e.content.map(o);return{role:e.role,parts:t}})}function l({prompt:e,messages:t}){let n=[];if(typeof e==`string`)n.push({role:`user`,parts:[{type:`text`,content:e}]});else if(Array.isArray(e))for(let t of e){let e=u(t);e&&n.push(e)}if(t)for(let e of t){let t=u(e);t&&n.push(t)}return n}function u(e){if(e.role!==`system`){if(e.role===`user`)return typeof e.content==`string`?{role:`user`,parts:[{type:`text`,content:e.content}]}:{role:`user`,parts:e.content.map(e=>{switch(e.type){case`text`:return{type:`text`,content:e.text};case`image`:{let n=e.image;return n instanceof URL?{type:`uri`,modality:`image`,mime_type:e.mediaType??null,uri:n.toString()}:typeof n==`string`?n.startsWith(`http://`)||n.startsWith(`https://`)?{type:`uri`,modality:`image`,mime_type:e.mediaType??null,uri:n}:{type:`blob`,modality:`image`,mime_type:e.mediaType??null,content:n}:{type:`blob`,modality:`image`,mime_type:e.mediaType??null,content:t(n)}}case`file`:{let n=e.data,r=(()=>{if(typeof n==`object`&&n&&!(n instanceof URL)&&!(n instanceof Uint8Array)&&!(n instanceof ArrayBuffer)&&`type`in n)switch(n.type){case`data`:return n.data;case`url`:return n.url;case`text`:return n.text;default:return``}return n})();return r instanceof URL?{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r.toString()}:typeof r==`string`?r.startsWith(`http://`)||r.startsWith(`https://`)?{type:`uri`,modality:s(e.mediaType),mime_type:e.mediaType??null,uri:r}:{type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType??null,content:r}:{type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType??null,content:t(r)}}default:return{type:String(e.type)}}})};if(e.role===`assistant`)return typeof e.content==`string`?{role:`assistant`,parts:[{type:`text`,content:e.content}]}:{role:`assistant`,parts:e.content.map(e=>{switch(e.type){case`text`:return{type:`text`,content:e.text};case`reasoning`:return{type:`reasoning`,content:e.text};case`tool-call`:return{type:`tool_call`,id:e.toolCallId??null,name:e.toolName,arguments:e.input};case`tool-result`:{let t=e.output,n;return t&&(n=t.type===`text`||t.type===`error-text`||t.type===`json`||t.type===`error-json`?t.value:t.type===`execution-denied`?{denied:!0,reason:t.reason}:t),{type:`tool_call_response`,id:e.toolCallId??null,response:n}}default:return{type:String(e.type)}}})};if(e.role===`tool`)return{role:`tool`,parts:e.content.map(e=>{if(e.type===`tool-result`){let t=e.output,n;return t&&(n=t.type===`text`||t.type===`error-text`||t.type===`json`||t.type===`error-json`?t.value:t.type===`execution-denied`?{denied:!0,reason:t.reason}:t),{type:`tool_call_response`,id:e.toolCallId??null,response:n}}return{type:String(e.type)}})}}}function d({text:e,reasoning:t,toolCalls:n,files:r,finishReason:i}){let a=[];if(t)for(let e of t)`text`in e&&e.text&&a.push({type:`reasoning`,content:e.text});if(e!=null&&e.length>0&&a.push({type:`text`,content:e}),n)for(let e of n)a.push({type:`tool_call`,id:e.toolCallId,name:e.toolName,arguments:e.input});if(r)for(let e of r)a.push({type:`blob`,modality:s(e.mediaType),mime_type:e.mediaType,content:e.base64});return[{role:`assistant`,parts:a,finish_reason:p(i)}]}function f({objectText:e,finishReason:t}){return[{role:`assistant`,parts:[{type:`text`,content:e}],finish_reason:p(t)}]}function p(e){return{stop:`stop`,length:`length`,"content-filter":`content_filter`,"tool-calls":`tool_call`,error:`error`,other:`stop`,unknown:`stop`}[e]??e}function m(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:n.SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:n.SpanStatusCode.ERROR})}function h(e){return e?.isEnabled!==!1}function g(e,t){if(!h(e))return{};let n={};for(let[r,i]of Object.entries(t))if(i!=null){if(typeof i==`object`&&`input`in i&&typeof i.input==`function`){if(e?.recordInputs===!1)continue;let t=i.input();t!=null&&(n[r]=t);continue}if(typeof i==`object`&&`output`in i&&typeof i.output==`function`){if(e?.recordOutputs===!1)continue;let t=i.output();t!=null&&(n[r]=t);continue}n[r]=i}return n}var _={usage:!1,providerMetadata:!1,embedding:!1,reranking:!1,runtimeContext:!1,headers:!1,toolChoice:!1,schema:!1};function v(e){return{..._,usage:e.usage??!1,providerMetadata:e.providerMetadata??!1,embedding:e.embedding??!1,reranking:e.reranking??!1,runtimeContext:e.runtimeContext??!1,headers:e.headers??!1,toolChoice:e.toolChoice??!1,schema:e.schema??!1}}function y(e){return Object.fromEntries(Object.entries(e??{}).filter(([,e])=>e!=null).map(([e,t])=>[`ai.settings.context.${e}`,t]))}function b(e){return Object.fromEntries(Object.entries(e??{}).filter(([,e])=>e!=null).map(([e,t])=>[`ai.request.headers.${e}`,t]))}function x(e){return{"ai.usage.inputTokenDetails.noCacheTokens":e.inputTokenDetails?.noCacheTokens,"ai.usage.outputTokenDetails.textTokens":e.outputTokenDetails?.textTokens,"ai.usage.outputTokenDetails.reasoningTokens":e.outputTokenDetails?.reasoningTokens}}function S(e,t,n){let r={};for(let[i,a]of Object.entries(n))!t[i]||a==null||Object.assign(r,g(e,a));return r}var C=class{constructor(e={}){this.callStates=new Map,this.tracer=e.tracer??n.trace.getTracer(`gen_ai`),this.supplementalAttributes=v(e),this.enrichSpan=e.enrichSpan}getCallState(e){return this.callStates.get(e)}cleanupCallState(e){this.callStates.delete(e)}getSpanAttributes({attributes:e,spanType:t,operationId:n,callId:r,runtimeContext:i}){let a;try{a=this.enrichSpan?.call(this,{spanType:t,operationId:n,callId:r,runtimeContext:i})}catch{a=void 0}return{...a,...e}}executeTool({callId:e,toolCallId:t,execute:r}){let i=this.getCallState(e)?.toolSpans.get(t);return i==null?r():n.context.with(i.context,r)}executeLanguageModelCall({callId:e,execute:t}){let r=this.getCallState(e),i=r?.inferenceContext??r?.stepContext;return i==null?t():n.context.with(i,t)}onStart(e){if(e.operationId===`ai.embed`||e.operationId===`ai.embedMany`){this.onEmbedOperationStart(e);return}if(e.operationId===`ai.rerank`){this.onRerankOperationStart(e);return}if(e.operationId===`ai.generateObject`||e.operationId===`ai.streamObject`){this.onObjectOperationStart(e);return}this.onGenerateStart(e)}onGenerateStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},o={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,seed:e.seed,maxRetries:e.maxRetries},s=r(e.provider),c=i(e.operationId),u=e.runtimeContext,d=S(t,this.supplementalAttributes,{runtimeContext:y(u),headers:b(e.headers)}),f=g(t,{"gen_ai.operation.name":c,"gen_ai.provider.name":s,"gen_ai.request.model":e.modelId,"gen_ai.agent.name":t.functionId,"gen_ai.request.frequency_penalty":e.frequencyPenalty,"gen_ai.request.max_tokens":e.maxOutputTokens,"gen_ai.request.presence_penalty":e.presencePenalty,"gen_ai.request.temperature":e.temperature??void 0,"gen_ai.request.top_k":e.topK,"gen_ai.request.top_p":e.topP,"gen_ai.request.stop_sequences":e.stopSequences,"gen_ai.request.seed":e.seed,"gen_ai.system_instructions":e.instructions?{input:()=>JSON.stringify(a(e.instructions))}:void 0,"gen_ai.input.messages":{input:()=>JSON.stringify(l({prompt:void 0,messages:e.messages}))},...d}),p=`${c} ${e.modelId}`,m=this.tracer.startSpan(p,{attributes:this.getSpanAttributes({attributes:f,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:u}),kind:n.SpanKind.INTERNAL}),h=n.trace.setSpan(n.context.active(),m);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:m,rootContext:h,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:o,provider:e.provider,modelId:e.modelId,runtimeContext:u,baseSupplementalAttributes:d})}onObjectOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},o={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,seed:e.seed,maxRetries:e.maxRetries},s=r(e.provider),c=i(e.operationId),u=S(t,this.supplementalAttributes,{headers:b(e.headers)}),d=g(t,{"gen_ai.operation.name":c,"gen_ai.provider.name":s,"gen_ai.request.model":e.modelId,"gen_ai.agent.name":t.functionId,"gen_ai.output.type":`json`,"gen_ai.request.frequency_penalty":e.frequencyPenalty,"gen_ai.request.max_tokens":e.maxOutputTokens,"gen_ai.request.presence_penalty":e.presencePenalty,"gen_ai.request.temperature":e.temperature??void 0,"gen_ai.request.top_k":e.topK,"gen_ai.request.top_p":e.topP,"gen_ai.request.seed":e.seed,"gen_ai.system_instructions":e.system?{input:()=>JSON.stringify(a(e.system))}:void 0,"gen_ai.input.messages":{input:()=>JSON.stringify(l({prompt:e.prompt,messages:e.messages}))},...u,...S(t,this.supplementalAttributes,{schema:{"ai.schema":e.schema?{input:()=>JSON.stringify(e.schema)}:void 0,"ai.schema.name":e.schemaName,"ai.schema.description":e.schemaDescription,"ai.settings.output":e.output}})}),f=`${c} ${e.modelId}`,p=this.tracer.startSpan(f,{attributes:this.getSpanAttributes({attributes:d,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:void 0}),kind:n.SpanKind.INTERNAL}),m=n.trace.setSpan(n.context.active(),p);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:p,rootContext:m,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:o,provider:e.provider,modelId:e.modelId,runtimeContext:void 0,baseSupplementalAttributes:u})}onObjectStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`chat`,"gen_ai.provider.name":r(e.provider),"gen_ai.request.model":e.modelId,"gen_ai.output.type":`json`,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP,"gen_ai.input.messages":{input:()=>e.promptMessages?JSON.stringify(c(e.promptMessages)):void 0},...t.baseSupplementalAttributes}),o=`chat ${e.modelId}`;t.inferenceSpan=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`languageModel`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.rootContext),t.inferenceContext=n.trace.setSpan(t.rootContext,t.inferenceSpan)}onObjectStepFinish(e){let t=this.getCallState(e.callId);if(!t?.inferenceSpan)return;let{telemetry:n}=t;t.inferenceSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.response.id":e.response.id,"gen_ai.response.model":e.response.modelId,"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.output.messages":{output:()=>{try{return JSON.stringify(f({objectText:e.objectText,finishReason:e.finishReason}))}catch{return e.objectText}}},...S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.usage)})})),t.inferenceSpan.end(),t.inferenceSpan=void 0,t.inferenceContext=void 0}onEmbedOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},i=r(e.provider),a=S(t,this.supplementalAttributes,{headers:b(e.headers)}),o=e.value,s=e.operationId===`ai.embedMany`,c=g(t,{"gen_ai.operation.name":`embeddings`,"gen_ai.provider.name":i,"gen_ai.request.model":e.modelId,...a,...S(t,this.supplementalAttributes,{embedding:s?{"ai.values":{input:()=>o.map(e=>JSON.stringify(e))}}:{"ai.value":{input:()=>JSON.stringify(o)}}})}),l=`embeddings ${e.modelId}`,u=this.tracer.startSpan(l,{attributes:this.getSpanAttributes({attributes:c,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:void 0}),kind:n.SpanKind.CLIENT}),d=n.trace.setSpan(n.context.active(),u);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:u,rootContext:d,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:{maxRetries:e.maxRetries},provider:e.provider,modelId:e.modelId,runtimeContext:void 0,baseSupplementalAttributes:a})}onStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t;t.runtimeContext=e.runtimeContext;let i=g(r,{"gen_ai.operation.name":`agent_step`,...t.baseSupplementalAttributes,...S(r,this.supplementalAttributes,{toolChoice:{"ai.prompt.toolChoice":{input:()=>e.stepToolChoice==null?void 0:JSON.stringify(e.stepToolChoice)}}})});t.stepSpan=this.tracer.startSpan(`step ${e.steps.length+1}`,{attributes:this.getSpanAttributes({attributes:i,spanType:`step`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.INTERNAL},t.rootContext),t.stepContext=n.trace.setSpan(t.rootContext,t.stepSpan)}onLanguageModelCallStart(e){let t=this.getCallState(e.callId);if(!t?.stepContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`chat`,"gen_ai.provider.name":r(e.provider),"gen_ai.request.model":e.modelId,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.stop_sequences":t.settings.stopSequences,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP,"gen_ai.input.messages":{input:()=>{let t=l({prompt:void 0,messages:e.messages});return t.length>0?JSON.stringify(t):void 0}},"gen_ai.tool.definitions":{input:()=>e.tools?JSON.stringify(e.tools):void 0}});t.inferenceSpan=this.tracer.startSpan(`chat ${e.modelId}`,{attributes:this.getSpanAttributes({attributes:a,spanType:`languageModel`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.stepContext),t.inferenceContext=n.trace.setSpan(t.stepContext,t.inferenceSpan)}onLanguageModelCallEnd(e){let t=this.getCallState(e.callId);if(!t?.inferenceSpan)return;let{telemetry:n}=t;t.inferenceSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.response.id":e.responseId,"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.usage.cache_creation.input_tokens":e.usage.inputTokenDetails?.cacheWriteTokens,"gen_ai.output.messages":{output:()=>JSON.stringify(d({text:e.content.filter(e=>e.type===`text`).map(e=>e.text).join(``)||void 0,reasoning:e.content.filter(e=>e.type===`reasoning`),toolCalls:e.content.filter(e=>e.type===`tool-call`),files:e.content.filter(e=>e.type===`file`).map(e=>e.file),finishReason:e.finishReason}))},...S(n,this.supplementalAttributes,{usage:x(e.usage)})})),t.inferenceSpan.end(),t.inferenceSpan=void 0,t.inferenceContext=void 0}onToolExecutionStart(e){let t=this.getCallState(e.callId);if(!t?.stepContext)return;let{telemetry:r}=t,{toolCall:i}=e,a=g(r,{"gen_ai.operation.name":`execute_tool`,"gen_ai.tool.name":i.toolName,"gen_ai.tool.call.id":i.toolCallId,"gen_ai.tool.type":`function`,"gen_ai.tool.call.arguments":{input:()=>JSON.stringify(i.input)}}),o=`execute_tool ${i.toolName}`,s=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`tool`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.INTERNAL},t.stepContext),c=n.trace.setSpan(t.stepContext,s);t.toolSpans.set(i.toolCallId,{span:s,context:c})}onToolExecutionEnd(e){let t=this.getCallState(e.callId);if(!t)return;let n=t.toolSpans.get(e.toolCall.toolCallId);if(!n)return;let{span:r}=n,{telemetry:i}=t,{toolOutput:a}=e;if(a.type===`tool-result`)try{r.setAttributes(g(i,{"gen_ai.tool.call.result":{output:()=>JSON.stringify(a.output)}}))}catch{}else m(r,a.error);r.end(),t.toolSpans.delete(e.toolCall.toolCallId)}onStepFinish(e){let t=this.getCallState(e.callId);if(!t?.stepSpan)return;let{telemetry:n}=t;t.stepSpan.setAttributes(S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.usage)})),t.stepSpan.end(),t.stepSpan=void 0,t.stepContext=void 0}onEnd(e){let t=this.getCallState(e.callId);if(t?.rootSpan){if(t.operationId===`ai.embed`||t.operationId===`ai.embedMany`){this.onEmbedOperationEnd(e);return}if(t.operationId===`ai.rerank`){this.onRerankOperationEnd(e);return}if(t.operationId===`ai.generateObject`||t.operationId===`ai.streamObject`){this.onObjectOperationEnd(e);return}this.onGenerateEnd(e)}}onGenerateEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t;t.rootSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.usage.input_tokens":e.totalUsage.inputTokens,"gen_ai.usage.output_tokens":e.totalUsage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.totalUsage.inputTokenDetails?.cacheReadTokens,"gen_ai.usage.cache_creation.input_tokens":e.totalUsage.inputTokenDetails?.cacheWriteTokens,"gen_ai.output.messages":{output:()=>JSON.stringify(d({text:e.text??void 0,reasoning:e.reasoning,toolCalls:e.toolCalls,files:e.files,finishReason:e.finishReason}))},...S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.totalUsage)})})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onObjectOperationEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t;t.rootSpan.setAttributes(g(n,{"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.output.messages":{output:()=>e.object==null?void 0:JSON.stringify(f({objectText:JSON.stringify(e.object),finishReason:e.finishReason}))},...S(n,this.supplementalAttributes,{providerMetadata:{"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0},usage:x(e.usage)})})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onEmbedOperationEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t,r=t.operationId===`ai.embedMany`;t.rootSpan.setAttributes(g(n,{"gen_ai.usage.input_tokens":e.usage.tokens,...S(n,this.supplementalAttributes,{embedding:r?{"ai.embeddings":{output:()=>e.embedding.map(e=>JSON.stringify(e))}}:{"ai.embedding":{output:()=>JSON.stringify(e.embedding)}}})})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onEmbedStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`embeddings`,"gen_ai.provider.name":r(t.provider),"gen_ai.request.model":t.modelId,...t.baseSupplementalAttributes,...S(i,this.supplementalAttributes,{embedding:{"ai.values":{input:()=>e.values.map(e=>JSON.stringify(e))}}})}),o=`embeddings ${t.modelId}`,s=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`embedding`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.rootContext),c=n.trace.setSpan(t.rootContext,s);t.embedSpans.set(e.embedCallId,{span:s,context:c})}onEmbedEnd(e){let t=this.getCallState(e.callId);if(!t)return;let n=t.embedSpans.get(e.embedCallId);if(!n)return;let{span:r}=n,{telemetry:i}=t;r.setAttributes(g(i,{"gen_ai.usage.input_tokens":e.usage.tokens,...S(i,this.supplementalAttributes,{embedding:{"ai.embeddings":{output:()=>e.embeddings.map(e=>JSON.stringify(e))}}})})),r.end(),t.embedSpans.delete(e.embedCallId)}onRerankOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},i=r(e.provider),a=S(t,this.supplementalAttributes,{headers:b(e.headers)}),o=g(t,{"gen_ai.operation.name":`rerank`,"gen_ai.provider.name":i,"gen_ai.request.model":e.modelId,...a,...S(t,this.supplementalAttributes,{reranking:{"ai.documents":{input:()=>e.documents.map(e=>JSON.stringify(e))}}})}),s=`rerank ${e.modelId}`,c=this.tracer.startSpan(s,{attributes:this.getSpanAttributes({attributes:o,spanType:`operation`,operationId:e.operationId,callId:e.callId,runtimeContext:void 0}),kind:n.SpanKind.CLIENT}),l=n.trace.setSpan(n.context.active(),c);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:c,rootContext:l,stepSpan:void 0,stepContext:void 0,inferenceSpan:void 0,inferenceContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,settings:{maxRetries:e.maxRetries},provider:e.provider,modelId:e.modelId,runtimeContext:void 0,baseSupplementalAttributes:a})}onRerankOperationEnd(e){let t=this.getCallState(e.callId);t?.rootSpan&&(t.rootSpan.end(),this.cleanupCallState(e.callId))}onRerankStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:i}=t,a=g(i,{"gen_ai.operation.name":`rerank`,"gen_ai.provider.name":r(t.provider),"gen_ai.request.model":t.modelId,...t.baseSupplementalAttributes,...S(i,this.supplementalAttributes,{reranking:{"ai.documents":{input:()=>e.documents.map(e=>JSON.stringify(e))}}})}),o=`rerank ${t.modelId}`,s=this.tracer.startSpan(o,{attributes:this.getSpanAttributes({attributes:a,spanType:`reranking`,operationId:t.operationId,callId:e.callId,runtimeContext:t.runtimeContext}),kind:n.SpanKind.CLIENT},t.rootContext);t.rerankSpan={span:s,context:n.trace.setSpan(t.rootContext,s)}}onRerankEnd(e){let t=this.getCallState(e.callId);if(!t?.rerankSpan)return;let{span:n}=t.rerankSpan,{telemetry:r}=t;n.setAttributes(S(r,this.supplementalAttributes,{reranking:{"ai.ranking.type":e.documentsType,"ai.ranking":{output:()=>e.ranking.map(e=>JSON.stringify(e))}}})),n.end(),t.rerankSpan=void 0}onError(e){let t=e;if(!t?.callId)return;let n=this.getCallState(t.callId);if(!n?.rootSpan)return;let r=t.error??e;for(let{span:e}of n.toolSpans.values())m(e,r),e.end();n.toolSpans.clear(),n.inferenceSpan&&(m(n.inferenceSpan,r),n.inferenceSpan.end(),n.inferenceSpan=void 0,n.inferenceContext=void 0),n.stepSpan&&(m(n.stepSpan,r),n.stepSpan.end(),n.stepSpan=void 0,n.stepContext=void 0);for(let{span:e}of n.embedSpans.values())m(e,r),e.end();n.embedSpans.clear(),n.rerankSpan&&=(m(n.rerankSpan.span,r),n.rerankSpan.span.end(),void 0),m(n.rootSpan,r),n.rootSpan.end(),this.cleanupCallState(t.callId)}};function w({operationId:e,telemetry:t}){return{"operation.name":`${e}${t?.functionId==null?``:` ${t.functionId}`}`,"resource.name":t?.functionId,"ai.operationId":e,"ai.telemetry.functionId":t?.functionId}}function T({model:e,settings:t,headers:n,context:r}){return{"ai.model.provider":e.provider,"ai.model.id":e.modelId,...Object.entries(t).reduce((e,[t,n])=>(e[`ai.settings.${t}`]=n,e),{}),...Object.entries(r??{}).reduce((e,[t,n])=>(n!=null&&(e[`ai.settings.context.${t}`]=n),e),{}),...Object.entries(n??{}).reduce((e,[t,n])=>(n!==void 0&&(e[`ai.request.headers.${t}`]=n),e),{})}}function E(e){return JSON.stringify(e.map(e=>({...e,content:typeof e.content==`string`?e.content:e.content.map(e=>e.type===`file`?{...e,data:D(e.data)}:e)})))}function D(e){switch(e.type){case`data`:return e.data instanceof Uint8Array?t(e.data):e.data;case`url`:return e.url.toString();case`reference`:return e.reference;case`text`:return e.text}}function O(e,t){t instanceof Error?(e.recordException({name:t.name,message:t.message,stack:t.stack}),e.setStatus({code:n.SpanStatusCode.ERROR,message:t.message})):e.setStatus({code:n.SpanStatusCode.ERROR})}function k(e){return e?.isEnabled!==!1}function A(e,t){if(!k(e))return{};let n={};for(let[r,i]of Object.entries(t))if(i!=null){if(typeof i==`object`&&`input`in i&&typeof i.input==`function`){if(e?.recordInputs===!1)continue;let t=i.input();t!=null&&(n[r]=t);continue}if(typeof i==`object`&&`output`in i&&typeof i.output==`function`){if(e?.recordOutputs===!1)continue;let t=i.output();t!=null&&(n[r]=t);continue}n[r]=i}return n}var j=class{constructor(e={}){this.callStates=new Map,this.tracer=e.tracer??n.trace.getTracer(`ai`)}getCallState(e){return this.callStates.get(e)}cleanupCallState(e){this.callStates.delete(e)}executeTool({callId:e,toolCallId:t,execute:r}){let i=this.getCallState(e)?.toolSpans.get(t);return i==null?r():n.context.with(i.context,r)}executeLanguageModelCall({callId:e,execute:t}){let r=this.getCallState(e)?.stepContext;return r==null?t():n.context.with(r,t)}onStart(e){if(e.operationId===`ai.embed`||e.operationId===`ai.embedMany`){this.onEmbedOperationStart(e);return}if(e.operationId===`ai.rerank`){this.onRerankOperationStart(e);return}if(e.operationId===`ai.generateObject`||e.operationId===`ai.streamObject`){this.onObjectOperationStart(e);return}this.onGenerateStart(e)}onGenerateStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},r={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,stopSequences:e.stopSequences,seed:e.seed,maxRetries:e.maxRetries},i=T({model:{provider:e.provider,modelId:e.modelId},headers:e.headers,settings:r,context:e.runtimeContext}),a=A(t,{...w({operationId:e.operationId,telemetry:t}),...i,"ai.model.provider":e.provider,"ai.model.id":e.modelId,"ai.prompt":{input:()=>JSON.stringify({system:e.instructions,messages:e.messages})}}),o=this.tracer.startSpan(e.operationId,{attributes:a}),s=n.trace.setSpan(n.context.active(),o);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:o,rootContext:s,stepSpan:void 0,stepContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,baseTelemetryAttributes:i,settings:r})}onObjectOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},r={maxOutputTokens:e.maxOutputTokens,temperature:e.temperature,topP:e.topP,topK:e.topK,presencePenalty:e.presencePenalty,frequencyPenalty:e.frequencyPenalty,seed:e.seed,maxRetries:e.maxRetries},i=T({model:{provider:e.provider,modelId:e.modelId},headers:e.headers,settings:r,context:void 0}),a=A(t,{...w({operationId:e.operationId,telemetry:t}),...i,"ai.prompt":{input:()=>JSON.stringify({system:e.system,prompt:e.prompt,messages:e.messages})},"ai.schema":e.schema?{input:()=>JSON.stringify(e.schema)}:void 0,"ai.schema.name":e.schemaName,"ai.schema.description":e.schemaDescription,"ai.settings.output":e.output}),o=this.tracer.startSpan(e.operationId,{attributes:a}),s=n.trace.setSpan(n.context.active(),o);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:o,rootContext:s,stepSpan:void 0,stepContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,baseTelemetryAttributes:i,settings:r})}onObjectStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t,i=t.operationId===`ai.streamObject`?`ai.streamObject.doStream`:`ai.generateObject.doGenerate`,a=A(r,{...w({operationId:i,telemetry:r}),...t.baseTelemetryAttributes,"ai.prompt.messages":{input:()=>e.promptMessages?E(e.promptMessages):void 0},"gen_ai.system":e.provider,"gen_ai.request.model":e.modelId,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP});t.stepSpan=this.tracer.startSpan(i,{attributes:a},t.rootContext),t.stepContext=n.trace.setSpan(t.rootContext,t.stepSpan)}onObjectStepFinish(e){let t=this.getCallState(e.callId);if(!t?.stepSpan)return;let{telemetry:n}=t;t.stepSpan.setAttributes(A(n,{"ai.response.finishReason":e.finishReason,"ai.response.object":{output:()=>{try{return JSON.stringify(JSON.parse(e.objectText))}catch{return e.objectText}}},"ai.response.id":e.response.id,"ai.response.model":e.response.modelId,"ai.response.timestamp":e.response.timestamp.toISOString(),"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0,"ai.usage.inputTokens":e.usage.inputTokens,"ai.usage.outputTokens":e.usage.outputTokens,"ai.usage.totalTokens":e.usage.totalTokens,"ai.usage.reasoningTokens":e.usage.outputTokenDetails?.reasoningTokens,"ai.usage.cachedInputTokens":e.usage.inputTokenDetails?.cacheReadTokens,"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.response.id":e.response.id,"gen_ai.response.model":e.response.modelId,"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens})),e.msToFirstChunk!=null&&(t.stepSpan.addEvent(`ai.stream.firstChunk`,{"ai.stream.msToFirstChunk":e.msToFirstChunk}),t.stepSpan.setAttributes({"ai.stream.msToFirstChunk":e.msToFirstChunk})),t.stepSpan.end(),t.stepSpan=void 0,t.stepContext=void 0}onEmbedOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},r={maxRetries:e.maxRetries},i=T({model:{provider:e.provider,modelId:e.modelId},headers:e.headers,settings:r,context:void 0}),a=e.value,o=e.operationId===`ai.embedMany`,s=A(t,{...w({operationId:e.operationId,telemetry:t}),...i,...o?{"ai.values":{input:()=>a.map(e=>JSON.stringify(e))}}:{"ai.value":{input:()=>JSON.stringify(a)}}}),c=this.tracer.startSpan(e.operationId,{attributes:s}),l=n.trace.setSpan(n.context.active(),c);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:c,rootContext:l,stepSpan:void 0,stepContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,baseTelemetryAttributes:i,settings:r})}onStepStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t,i=t.operationId===`ai.streamText`?`ai.streamText.doStream`:`ai.generateText.doGenerate`,a=A(r,{...w({operationId:i,telemetry:r}),...t.baseTelemetryAttributes,"ai.model.provider":e.provider,"ai.model.id":e.modelId,"ai.prompt.messages":{input:()=>e.promptMessages?E(e.promptMessages):void 0},"ai.prompt.tools":{input:()=>e.stepTools?.map(e=>JSON.stringify(e))},"ai.prompt.toolChoice":{input:()=>e.stepToolChoice==null?void 0:JSON.stringify(e.stepToolChoice)},"gen_ai.system":e.provider,"gen_ai.request.model":e.modelId,"gen_ai.request.frequency_penalty":t.settings.frequencyPenalty,"gen_ai.request.max_tokens":t.settings.maxOutputTokens,"gen_ai.request.presence_penalty":t.settings.presencePenalty,"gen_ai.request.stop_sequences":t.settings.stopSequences,"gen_ai.request.temperature":t.settings.temperature??void 0,"gen_ai.request.top_k":t.settings.topK,"gen_ai.request.top_p":t.settings.topP});t.stepSpan=this.tracer.startSpan(i,{attributes:a},t.rootContext),t.stepContext=n.trace.setSpan(t.rootContext,t.stepSpan)}onToolExecutionStart(e){let t=this.getCallState(e.callId);if(!t?.stepContext)return;let{telemetry:r}=t,{toolCall:i}=e,a=A(r,{...w({operationId:`ai.toolCall`,telemetry:r}),"ai.toolCall.name":i.toolName,"ai.toolCall.id":i.toolCallId,"ai.toolCall.args":{output:()=>JSON.stringify(i.input)}}),o=this.tracer.startSpan(`ai.toolCall`,{attributes:a},t.stepContext),s=n.trace.setSpan(t.stepContext,o);t.toolSpans.set(i.toolCallId,{span:o,context:s})}onToolExecutionEnd(e){let t=this.getCallState(e.callId);if(!t)return;let n=t.toolSpans.get(e.toolCall.toolCallId);if(!n)return;let{span:r}=n,{telemetry:i}=t,{toolOutput:a}=e;if(a.type===`tool-result`)try{r.setAttributes(A(i,{"ai.toolCall.result":{output:()=>JSON.stringify(a.output)}}))}catch{}else O(r,a.error);r.end(),t.toolSpans.delete(e.toolCall.toolCallId)}onStepFinish(e){let t=this.getCallState(e.callId);if(!t?.stepSpan)return;let{telemetry:n}=t,r=t.operationId===`ai.streamText`;t.stepSpan.setAttributes(A(n,{"ai.response.finishReason":e.finishReason,"ai.response.text":{output:()=>e.text??void 0},"ai.response.reasoning":{output:()=>e.reasoning.length>0?e.reasoning.filter(e=>`text`in e).map(e=>e.text).join(`
2
2
  `):void 0},"ai.response.toolCalls":{output:()=>e.toolCalls.length>0?JSON.stringify(e.toolCalls.map(e=>({toolCallId:e.toolCallId,toolName:e.toolName,input:e.input}))):void 0},"ai.response.files":{output:()=>e.files.length>0?JSON.stringify(e.files.map(e=>({type:`file`,mediaType:e.mediaType,data:e.base64}))):void 0},"ai.response.id":e.response.id,"ai.response.model":e.response.modelId,"ai.response.timestamp":e.response.timestamp.toISOString(),"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0,"ai.response.msToFirstChunk":r?e.performance.timeToFirstOutputTokenMs:void 0,"ai.response.msToFinish":r?e.performance.responseTimeMs:void 0,"ai.response.avgOutputTokensPerSecond":r?e.performance.effectiveOutputTokensPerSecond:void 0,"ai.usage.inputTokens":e.usage.inputTokens,"ai.usage.outputTokens":e.usage.outputTokens,"ai.usage.totalTokens":e.usage.totalTokens,"ai.usage.reasoningTokens":e.usage.outputTokenDetails?.reasoningTokens,"ai.usage.cachedInputTokens":e.usage.inputTokenDetails?.cacheReadTokens,"ai.usage.inputTokenDetails.noCacheTokens":e.usage.inputTokenDetails?.noCacheTokens,"ai.usage.inputTokenDetails.cacheReadTokens":e.usage.inputTokenDetails?.cacheReadTokens,"ai.usage.inputTokenDetails.cacheWriteTokens":e.usage.inputTokenDetails?.cacheWriteTokens,"ai.usage.outputTokenDetails.textTokens":e.usage.outputTokenDetails?.textTokens,"ai.usage.outputTokenDetails.reasoningTokens":e.usage.outputTokenDetails?.reasoningTokens,"gen_ai.response.finish_reasons":[e.finishReason],"gen_ai.response.id":e.response.id,"gen_ai.response.model":e.response.modelId,"gen_ai.usage.input_tokens":e.usage.inputTokens,"gen_ai.usage.output_tokens":e.usage.outputTokens})),r&&e.performance.timeToFirstOutputTokenMs!=null&&t.stepSpan.addEvent(`ai.stream.firstChunk`,{"ai.response.msToFirstChunk":e.performance.timeToFirstOutputTokenMs}),r&&t.stepSpan.addEvent(`ai.stream.finish`,{"ai.response.msToFinish":e.performance.responseTimeMs,"ai.response.avgOutputTokensPerSecond":e.performance.effectiveOutputTokensPerSecond}),t.stepSpan.end(),t.stepSpan=void 0,t.stepContext=void 0}onEnd(e){let t=this.getCallState(e.callId);if(t?.rootSpan){if(t.operationId===`ai.embed`||t.operationId===`ai.embedMany`){this.onEmbedOperationEnd(e);return}if(t.operationId===`ai.rerank`){this.onRerankOperationEnd(e);return}if(t.operationId===`ai.generateObject`||t.operationId===`ai.streamObject`){this.onObjectOperationEnd(e);return}this.onGenerateEnd(e)}}onGenerateEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t;t.rootSpan.setAttributes(A(n,{"ai.response.finishReason":e.finishReason,"ai.response.text":{output:()=>e.text??void 0},"ai.response.reasoning":{output:()=>e.reasoning.length>0?e.reasoning.filter(e=>`text`in e).map(e=>e.text).join(`
3
3
  `):void 0},"ai.response.toolCalls":{output:()=>e.toolCalls.length>0?JSON.stringify(e.toolCalls.map(e=>({toolCallId:e.toolCallId,toolName:e.toolName,input:e.input}))):void 0},"ai.response.files":{output:()=>e.files.length>0?JSON.stringify(e.files.map(e=>({type:`file`,mediaType:e.mediaType,data:e.base64}))):void 0},"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0,"ai.usage.inputTokens":e.totalUsage.inputTokens,"ai.usage.outputTokens":e.totalUsage.outputTokens,"ai.usage.totalTokens":e.totalUsage.totalTokens,"ai.usage.reasoningTokens":e.totalUsage.outputTokenDetails?.reasoningTokens,"ai.usage.cachedInputTokens":e.totalUsage.inputTokenDetails?.cacheReadTokens,"ai.usage.inputTokenDetails.noCacheTokens":e.totalUsage.inputTokenDetails?.noCacheTokens,"ai.usage.inputTokenDetails.cacheReadTokens":e.totalUsage.inputTokenDetails?.cacheReadTokens,"ai.usage.inputTokenDetails.cacheWriteTokens":e.totalUsage.inputTokenDetails?.cacheWriteTokens,"ai.usage.outputTokenDetails.textTokens":e.totalUsage.outputTokenDetails?.textTokens,"ai.usage.outputTokenDetails.reasoningTokens":e.totalUsage.outputTokenDetails?.reasoningTokens})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onObjectOperationEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t;t.rootSpan.setAttributes(A(n,{"ai.response.finishReason":e.finishReason,"ai.response.object":{output:()=>e.object==null?void 0:JSON.stringify(e.object)},"ai.response.providerMetadata":e.providerMetadata?JSON.stringify(e.providerMetadata):void 0,"ai.usage.inputTokens":e.usage.inputTokens,"ai.usage.outputTokens":e.usage.outputTokens,"ai.usage.totalTokens":e.usage.totalTokens,"ai.usage.reasoningTokens":e.usage.outputTokenDetails?.reasoningTokens,"ai.usage.cachedInputTokens":e.usage.inputTokenDetails?.cacheReadTokens})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onEmbedOperationEnd(e){let t=this.getCallState(e.callId);if(!t?.rootSpan)return;let{telemetry:n}=t,r=t.operationId===`ai.embedMany`;t.rootSpan.setAttributes(A(n,{...r?{"ai.embeddings":{output:()=>e.embedding.map(e=>JSON.stringify(e))}}:{"ai.embedding":{output:()=>JSON.stringify(e.embedding)}},"ai.usage.tokens":e.usage.tokens})),t.rootSpan.end(),this.cleanupCallState(e.callId)}onEmbedStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t,i=A(r,{...w({operationId:e.operationId,telemetry:r}),...t.baseTelemetryAttributes,"ai.values":{input:()=>e.values.map(e=>JSON.stringify(e))}}),a=this.tracer.startSpan(e.operationId,{attributes:i},t.rootContext),o=n.trace.setSpan(t.rootContext,a);t.embedSpans.set(e.embedCallId,{span:a,context:o})}onEmbedEnd(e){let t=this.getCallState(e.callId);if(!t)return;let n=t.embedSpans.get(e.embedCallId);if(!n)return;let{span:r}=n,{telemetry:i}=t;r.setAttributes(A(i,{"ai.embeddings":{output:()=>e.embeddings.map(e=>JSON.stringify(e))},"ai.usage.tokens":e.usage.tokens})),r.end(),t.embedSpans.delete(e.embedCallId)}onRerankOperationStart(e){let t={recordInputs:e.recordInputs,recordOutputs:e.recordOutputs,functionId:e.functionId},r={maxRetries:e.maxRetries},i=T({model:{provider:e.provider,modelId:e.modelId},headers:e.headers,settings:r,context:void 0}),a=A(t,{...w({operationId:e.operationId,telemetry:t}),...i,"ai.documents":{input:()=>e.documents.map(e=>JSON.stringify(e))}}),o=this.tracer.startSpan(e.operationId,{attributes:a}),s=n.trace.setSpan(n.context.active(),o);this.callStates.set(e.callId,{operationId:e.operationId,telemetry:t,rootSpan:o,rootContext:s,stepSpan:void 0,stepContext:void 0,embedSpans:new Map,rerankSpan:void 0,toolSpans:new Map,baseTelemetryAttributes:i,settings:r})}onRerankOperationEnd(e){let t=this.getCallState(e.callId);t?.rootSpan&&(t.rootSpan.end(),this.cleanupCallState(e.callId))}onRerankStart(e){let t=this.getCallState(e.callId);if(!t?.rootSpan||!t.rootContext)return;let{telemetry:r}=t,i=A(r,{...w({operationId:e.operationId,telemetry:r}),...t.baseTelemetryAttributes,"ai.documents":{input:()=>e.documents.map(e=>JSON.stringify(e))}}),a=this.tracer.startSpan(e.operationId,{attributes:i},t.rootContext);t.rerankSpan={span:a,context:n.trace.setSpan(t.rootContext,a)}}onRerankEnd(e){let t=this.getCallState(e.callId);if(!t?.rerankSpan)return;let{span:n}=t.rerankSpan,{telemetry:r}=t;n.setAttributes(A(r,{"ai.ranking.type":e.documentsType,"ai.ranking":{output:()=>e.ranking.map(e=>JSON.stringify(e))}})),n.end(),t.rerankSpan=void 0}onError(e){let t=e;if(!t?.callId)return;let n=this.getCallState(t.callId);if(!n?.rootSpan)return;let r=t.error??e;n.stepSpan&&(O(n.stepSpan,r),n.stepSpan.end());for(let{span:e}of n.embedSpans.values())O(e,r),e.end();n.embedSpans.clear(),n.rerankSpan&&=(O(n.rerankSpan.span,r),n.rerankSpan.span.end(),void 0),O(n.rootSpan,r),n.rootSpan.end(),this.cleanupCallState(t.callId)}};export{j as LegacyOpenTelemetry,C as OpenTelemetry};
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "experimental-ash-compiled-ai-sdk-otel",
3
- "version": "1.0.0-canary.90",
3
+ "version": "1.0.0-canary.100",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "license": "Apache-2.0"
@@ -52,12 +52,40 @@ export interface SandboxCreateOptions {
52
52
  timeout?: number | undefined;
53
53
  }
54
54
 
55
- export interface SandboxCommandResult {
56
- readonly exitCode: number;
57
- stderr(): Promise<string>;
58
- stdout(): Promise<string>;
55
+ export interface SandboxRunCommandParams {
56
+ args?: readonly string[] | undefined;
57
+ cmd: string;
58
+ cwd?: string | undefined;
59
+ detached?: boolean | undefined;
60
+ env?: Record<string, string> | undefined;
61
+ signal?: AbortSignal | undefined;
62
+ sudo?: boolean | undefined;
63
+ }
64
+
65
+ export interface SandboxCommandLogMessage {
66
+ data: string;
67
+ stream: "stdout" | "stderr";
59
68
  }
60
69
 
70
+ export declare class SandboxCommand {
71
+ readonly cmdId: string;
72
+ readonly cwd: string;
73
+ exitCode: number | null;
74
+ logs(opts?: {
75
+ signal?: AbortSignal | undefined;
76
+ }): AsyncGenerator<SandboxCommandLogMessage, void, void>;
77
+ wait(opts?: { signal?: AbortSignal | undefined }): Promise<SandboxCommandFinished>;
78
+ stdout(opts?: { signal?: AbortSignal | undefined }): Promise<string>;
79
+ stderr(opts?: { signal?: AbortSignal | undefined }): Promise<string>;
80
+ kill(signal?: string, opts?: { abortSignal?: AbortSignal | undefined }): Promise<void>;
81
+ }
82
+
83
+ export interface SandboxCommandFinished extends SandboxCommand {
84
+ exitCode: number;
85
+ }
86
+
87
+ export type SandboxCommandResult = SandboxCommandFinished;
88
+
61
89
  export declare class Sandbox {
62
90
  currentSnapshotId?: string | undefined;
63
91
  id: string;
@@ -70,13 +98,8 @@ export declare class Sandbox {
70
98
  static get(options: { name: string } | Record<string, unknown>): Promise<Sandbox>;
71
99
  domain(port: number): string;
72
100
  readFileToBuffer(input: { path: string }): Promise<Buffer | Uint8Array | null>;
73
- runCommand(input: {
74
- args?: readonly string[] | undefined;
75
- cmd: string;
76
- cwd?: string | undefined;
77
- signal?: AbortSignal | undefined;
78
- sudo?: boolean | undefined;
79
- }): Promise<SandboxCommandResult>;
101
+ runCommand(input: SandboxRunCommandParams & { detached: true }): Promise<SandboxCommand>;
102
+ runCommand(input: SandboxRunCommandParams): Promise<SandboxCommandFinished>;
80
103
  snapshot(options?: unknown): Promise<{ snapshotId: string }>;
81
104
  stop(options?: unknown): Promise<void>;
82
105
  update(
@@ -7,7 +7,7 @@ ${a}`,l++}else ct(e,n,i)?u=e.slice(e.charCodeAt(n+6)===32?n+7:n+6,r)||void 0:te(
7
7
  `,n)}return e.slice(n)}for(;n<e.length;){let t=e.indexOf(`\r`,n),r=e.indexOf(`
8
8
  `,n),i=-1;if(t!==-1&&r!==-1?i=t<r?t:r:t===-1?r!==-1&&(i=r):i=t===e.length-1?-1:t,i===-1)break;te(e,n,i),n=i+1,e.charCodeAt(n-1)===13&&e.charCodeAt(n)===10&&n++}return e.slice(n)}function te(e,t,n){if(t===n){p();return}let r=e.charCodeAt(t);if(st(e,t,r)){let r=e.charCodeAt(t+5)===32?t+6:t+5,i=e.slice(r,n);c=l===0?i:`${c}
9
9
  ${i}`,l++;return}if(ct(e,t,r)){u=e.slice(e.charCodeAt(t+6)===32?t+7:t+6,n)||void 0;return}if(r===105&&e.charCodeAt(t+1)===100&&e.charCodeAt(t+2)===58){let r=e.slice(e.charCodeAt(t+3)===32?t+4:t+3,n);s=r.includes(`\0`)?void 0:r;return}if(r===58){i&&i(e.slice(t,n).slice(e.charCodeAt(t+1)===32?2:1));return}let a=e.slice(t,n),o=a.indexOf(`:`);if(o===-1){f(a,``,a);return}let ee=a.slice(0,o),d=a.charCodeAt(o+1)===32?2:1;f(ee,a.slice(o+d),a)}function f(e,t,i){switch(e){case`event`:u=t||void 0;break;case`data`:c=l===0?t:`${c}
10
- ${t}`,l++;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new it(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new it(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function p(){l>0&&t({id:s,event:u,data:c}),s=void 0,c=``,l=0,u=void 0}function m(e={}){if(e.consume&&a.length>0){let e=a.join(``);te(e,0,e.length)}o=!0,s=void 0,c=``,l=0,u=void 0,a.length=0}return{feed:ee,reset:m}}function st(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function ct(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}var lt=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=ot({onEvent:e=>{i.enqueue(e)},onError(t){e===`terminate`?i.error(t):typeof e==`function`&&e(t)},onRetry:t,onComment:n})},transform(e){r.feed(e)}})}};const ut=Symbol.for(`workflow-serialize`),dt=Symbol.for(`workflow-deserialize`);function ft(...e){return e.reduce((e,t)=>({...e,...t??{}}),{})}var{btoa:pt,atob:mt}=globalThis;function ht(e){let t=mt(e.replace(/-/g,`+`).replace(/_/g,`/`));return Uint8Array.from(t,e=>e.codePointAt(0))}function gt(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCodePoint(e[n]);return pt(t)}function _t(e){return e instanceof Uint8Array?gt(e):e}function vt(e){return e.type===`text`?new TextEncoder().encode(e.text):e.data instanceof Uint8Array?e.data:e.data instanceof ArrayBuffer?new Uint8Array(e.data):ht(e.data)}function yt(e,t={}){let{useArrayBrackets:n=!0}=t,r=new FormData;for(let[t,i]of Object.entries(e))if(i!=null){if(Array.isArray(i)){if(i.length===1){r.append(t,i[0]);continue}let e=n?`${t}[]`:t;for(let t of i)r.append(e,t);continue}r.append(t,i)}return r}function bt({tools:e=[],providerToolNames:t}){let n={},r={};for(let i of e)if(i.type===`provider`&&i.id in t){let e=t[i.id];n[i.name]=e,r[e]=i.name}return{toProviderToolName:e=>n[e]??e,toCustomToolName:e=>r[e]??e}}async function xt(e,t){if(e==null)return Promise.resolve();let n=t?.abortSignal;return new Promise((t,r)=>{if(n?.aborted){r(St());return}let i=setTimeout(()=>{a(),t()},e),a=()=>{clearTimeout(i),n?.removeEventListener(`abort`,o)},o=()=>{a(),r(St())};n?.addEventListener(`abort`,o)})}function St(){return new DOMException(`Delay was aborted`,`AbortError`)}var Ct=[{mediaType:`image/gif`,bytesPrefix:[71,73,70]},{mediaType:`image/png`,bytesPrefix:[137,80,78,71]},{mediaType:`image/jpeg`,bytesPrefix:[255,216]},{mediaType:`image/webp`,bytesPrefix:[82,73,70,70,null,null,null,null,87,69,66,80]},{mediaType:`image/bmp`,bytesPrefix:[66,77]},{mediaType:`image/tiff`,bytesPrefix:[73,73,42,0]},{mediaType:`image/tiff`,bytesPrefix:[77,77,0,42]},{mediaType:`image/avif`,bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102]},{mediaType:`image/heic`,bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99]}],wt=[{mediaType:`application/pdf`,bytesPrefix:[37,80,68,70]}],Tt=[{mediaType:`audio/mpeg`,bytesPrefix:[255,251]},{mediaType:`audio/mpeg`,bytesPrefix:[255,250]},{mediaType:`audio/mpeg`,bytesPrefix:[255,243]},{mediaType:`audio/mpeg`,bytesPrefix:[255,242]},{mediaType:`audio/mpeg`,bytesPrefix:[255,227]},{mediaType:`audio/mpeg`,bytesPrefix:[255,226]},{mediaType:`audio/wav`,bytesPrefix:[82,73,70,70,null,null,null,null,87,65,86,69]},{mediaType:`audio/ogg`,bytesPrefix:[79,103,103,83]},{mediaType:`audio/flac`,bytesPrefix:[102,76,97,67]},{mediaType:`audio/aac`,bytesPrefix:[64,21,0,0]},{mediaType:`audio/mp4`,bytesPrefix:[102,116,121,112]},{mediaType:`audio/webm`,bytesPrefix:[26,69,223,163]}],Et=[{mediaType:`video/mp4`,bytesPrefix:[0,0,0,null,102,116,121,112]},{mediaType:`video/webm`,bytesPrefix:[26,69,223,163]},{mediaType:`video/quicktime`,bytesPrefix:[0,0,0,20,102,116,121,112,113,116]},{mediaType:`video/x-msvideo`,bytesPrefix:[82,73,70,70]}],Dt=e=>{let t=typeof e==`string`?ht(e):e,n=(t[6]&127)<<21|(t[7]&127)<<14|(t[8]&127)<<7|t[9]&127;return t.slice(n+10)};function Ot(e){return typeof e==`string`&&e.startsWith(`SUQz`)||typeof e!=`string`&&e.length>10&&e[0]===73&&e[1]===68&&e[2]===51?Dt(e):e}function kt({data:e,signatures:t}){let n=Ot(e),r=typeof n==`string`?ht(n.substring(0,Math.min(n.length,24))):n;for(let e of t)if(r.length>=e.bytesPrefix.length&&e.bytesPrefix.every((e,t)=>e===null||r[t]===e))return e.mediaType}var At={image:Ct,audio:Tt,video:Et,application:wt};function jt({data:e,topLevelType:t}){if(t===void 0)return kt({data:e,signatures:[...Ct,...wt,...Tt,...Et]});let n=At[t];if(n!==void 0)return kt({data:e,signatures:n})}function Mt(e){let t=e.indexOf(`/`);return t===-1?e:e.substring(0,t)}function Nt(e){let t=e.indexOf(`/`);if(t===-1)return!1;let n=e.substring(t+1);return n.length>0&&n!==`*`}var Pt=`AI_DownloadError`,Ft=`vercel.ai.error.${Pt}`,It=Symbol.for(Ft),Lt,Rt,U=class extends (Rt=e,Lt=It,Rt){constructor({url:e,statusCode:t,statusText:n,cause:r,message:i=r==null?`Failed to download ${e}: ${t} ${n}`:`Failed to download ${e}: ${r}`}){super({name:Pt,message:i,cause:r}),this[Lt]=!0,this.url=e,this.statusCode=t,this.statusText=n}static isInstance(t){return e.hasMarker(t,Ft)}},zt=2*1024*1024*1024;async function Bt({response:e,url:t,maxBytes:n=zt}){let r=e.headers.get(`content-length`);if(r!=null){let e=parseInt(r,10);if(!isNaN(e)&&e>n)throw new U({url:t,message:`Download of ${t} exceeded maximum size of ${n} bytes (Content-Length: ${e}).`})}let i=e.body;if(i==null)return new Uint8Array;let a=i.getReader(),o=[],s=0;try{for(;;){let{done:e,value:r}=await a.read();if(e)break;if(s+=r.length,s>n)throw new U({url:t,message:`Download of ${t} exceeded maximum size of ${n} bytes.`});o.push(r)}}finally{try{await a.cancel()}finally{a.releaseLock()}}let c=new Uint8Array(s),l=0;for(let e of o)c.set(e,l),l+=e.length;return c}function Vt(e){let t;try{t=new URL(e)}catch{throw new U({url:e,message:`Invalid URL: ${e}`})}if(t.protocol===`data:`)return;if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new U({url:e,message:`URL scheme must be http, https, or data, got ${t.protocol}`});let n=t.hostname;if(!n)throw new U({url:e,message:`URL must have a hostname`});if(n===`localhost`||n.endsWith(`.local`)||n.endsWith(`.localhost`))throw new U({url:e,message:`URL with hostname ${n} is not allowed`});if(n.startsWith(`[`)&&n.endsWith(`]`)){if(Wt(n.slice(1,-1)))throw new U({url:e,message:`URL with IPv6 address ${n} is not allowed`});return}if(Ht(n)){if(Ut(n))throw new U({url:e,message:`URL with IP address ${n} is not allowed`});return}}function Ht(e){let t=e.split(`.`);return t.length===4?t.every(e=>{let t=Number(e);return Number.isInteger(t)&&t>=0&&t<=255&&String(t)===e}):!1}function Ut(e){let[t,n]=e.split(`.`).map(Number);return t===0||t===10||t===127||t===169&&n===254||t===172&&n>=16&&n<=31||t===192&&n===168}function Wt(e){let t=e.toLowerCase();if(t===`::1`||t===`::`)return!0;if(t.startsWith(`::ffff:`)){let e=t.slice(7);if(Ht(e))return Ut(e);let n=e.split(`:`);if(n.length===2){let e=parseInt(n[0],16),t=parseInt(n[1],16);if(!isNaN(e)&&!isNaN(t))return Ut(`${e>>8&255}.${e&255}.${t>>8&255}.${t&255}`)}}return!!(t.startsWith(`fc`)||t.startsWith(`fd`)||t.startsWith(`fe80`))}async function Gt(e,t){Vt(e);try{let n=await fetch(e,{signal:t?.abortSignal});if(n.redirected&&Vt(n.url),!n.ok)throw new U({url:e,statusCode:n.status,statusText:n.statusText});let r=await Bt({response:n,url:e,maxBytes:t?.maxBytes??zt}),i=n.headers.get(`content-type`)??void 0;return new Blob([r],i?{type:i}:void 0)}catch(t){throw U.isInstance(t)?t:new U({url:e,cause:t})}}function W(e){return Object.fromEntries([...e.headers])}var Kt=(({prefix:e,size:t=16,alphabet:n=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,separator:i=`-`}={})=>{let a=()=>{let e=n.length,r=Array(t);for(let i=0;i<t;i++)r[i]=n[Math.random()*e|0];return r.join(``)};if(e==null)return a;if(n.includes(i))throw new r({argument:`separator`,message:`The separator "${i}" must not be part of the alphabet "${n}".`});return()=>`${e}${i}${a()}`})();function G(e){return(e instanceof Error||e instanceof DOMException)&&(e.name===`AbortError`||e.name===`ResponseAborted`||e.name===`TimeoutError`)}var qt=[`fetch failed`,`failed to fetch`],Jt=[`ConnectionRefused`,`ConnectionClosed`,`FailedToOpenSocket`,`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EPIPE`];function Yt(e){if(!(e instanceof Error))return!1;let t=e.code;return!!(typeof t==`string`&&Jt.includes(t))}function Xt({error:e,url:n,requestBodyValues:r}){if(G(e))return e;if(e instanceof TypeError&&qt.includes(e.message.toLowerCase())){let i=e.cause;if(i!=null)return new t({message:`Cannot connect to API: ${i.message}`,cause:i,url:n,requestBodyValues:r,isRetryable:!0})}return Yt(e)?new t({message:`Cannot connect to API: ${e.message}`,cause:e,url:n,requestBodyValues:r,isRetryable:!0}):e}function Zt(e=globalThis){return e.window?`runtime/browser`:e.navigator?.userAgent?`runtime/${e.navigator.userAgent.toLowerCase()}`:e.process?.versions?.node?`runtime/node.js/${e.process.version.substring(0)}`:e.EdgeRuntime?`runtime/vercel-edge`:`runtime/unknown`}function Qt(e){if(e==null)return{};let t={};if(e instanceof Headers)e.forEach((e,n)=>{t[n.toLowerCase()]=e});else{Array.isArray(e)||(e=Object.entries(e));for(let[n,r]of e)r!=null&&(t[n.toLowerCase()]=r)}return t}function $t(e,...t){let n=new Headers(Qt(e)),r=n.get(`user-agent`)||``;return n.set(`user-agent`,[r,...t].filter(Boolean).join(` `)),Object.fromEntries(n.entries())}var en=`5.0.0-canary.43`,tn=()=>globalThis.fetch,nn=async({url:e,headers:n={},successfulResponseHandler:r,failedResponseHandler:i,abortSignal:a,fetch:o=tn()})=>{try{let s=await o(e,{method:`GET`,headers:$t(n,`ai-sdk/provider-utils/${en}`,Zt()),signal:a}),c=W(s);if(!s.ok){let n;try{n=await i({response:s,url:e,requestBodyValues:{}})}catch(n){throw G(n)||t.isInstance(n)?n:new t({message:`Failed to process error response`,cause:n,statusCode:s.status,url:e,responseHeaders:c,requestBodyValues:{}})}throw n.value}try{return await r({response:s,url:e,requestBodyValues:{}})}catch(n){throw n instanceof Error&&(G(n)||t.isInstance(n))?n:new t({message:`Failed to process successful response`,cause:n,statusCode:s.status,url:e,responseHeaders:c,requestBodyValues:{}})}}catch(t){throw Xt({error:t,url:e,requestBodyValues:{}})}};function rn(e){return e!=null}function an({apiKey:e,environmentVariableName:t,apiKeyParameterName:n=`apiKey`,description:r}){if(typeof e==`string`)return e;if(e!=null)throw new o({message:`${r} API key must be a string.`});if(typeof process>`u`)throw new o({message:`${r} API key is missing. Pass it using the '${n}' parameter. Environment variables are not supported in this environment.`});if(e=process.env[t],e==null)throw new o({message:`${r} API key is missing. Pass it using the '${n}' parameter or the ${t} environment variable.`});if(typeof e!=`string`)throw new o({message:`${r} API key must be a string. The value of the ${t} environment variable is not a string.`});return e}function on({settingValue:e,environmentVariableName:t}){if(typeof e==`string`||!(e!=null||typeof process>`u`)&&(e=process.env[t],!(e==null||typeof e!=`string`)))return e}function sn(e){return e!==void 0&&e!==`provider-default`}function cn({reasoning:e,effortMap:t,warnings:n}){let r=t[e];if(r==null){n.push({type:`unsupported`,feature:`reasoning`,details:`reasoning "${e}" is not supported by this model.`});return}return r!==e&&n.push({type:`compatibility`,feature:`reasoning`,details:`reasoning "${e}" is not directly supported by this model. mapped to effort "${r}".`}),r}var ln={minimal:.02,low:.1,medium:.3,high:.6,xhigh:.9};function un({reasoning:e,maxOutputTokens:t,maxReasoningBudget:n,minReasoningBudget:r=1024,budgetPercentages:i=ln,warnings:a}){let o=i[e];if(o==null){a.push({type:`unsupported`,feature:`reasoning`,details:`reasoning "${e}" is not supported by this model.`});return}return Math.min(n,Math.max(r,Math.round(t*o)))}function dn(e){let[t,n=``]=e.toLowerCase().split(`/`);return{mpeg:`mp3`,"x-wav":`wav`,opus:`ogg`,mp4:`m4a`,"x-m4a":`m4a`}[n]??n}var fn=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,pn=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;function mn(e){let t=JSON.parse(e);return typeof t!=`object`||!t||fn.test(e)===!1&&pn.test(e)===!1?t:hn(t)}function hn(e){let t=[e];for(;t.length;){let e=t;t=[];for(let n of e){if(Object.prototype.hasOwnProperty.call(n,`__proto__`)||Object.prototype.hasOwnProperty.call(n,`constructor`)&&n.constructor!==null&&typeof n.constructor==`object`&&Object.prototype.hasOwnProperty.call(n.constructor,`prototype`))throw SyntaxError(`Object contains forbidden prototype property`);for(let e in n){let r=n[e];r&&typeof r==`object`&&t.push(r)}}}return e}function gn(e){let{stackTraceLimit:t}=Error;try{Error.stackTraceLimit=0}catch{return mn(e)}try{return mn(e)}finally{Error.stackTraceLimit=t}}function _n(e){if(e.type===`object`||Array.isArray(e.type)&&e.type.includes(`object`)){e.additionalProperties=!1;let{properties:t}=e;if(t!=null)for(let e of Object.keys(t))t[e]=K(t[e])}e.items!=null&&(e.items=Array.isArray(e.items)?e.items.map(K):K(e.items)),e.anyOf!=null&&(e.anyOf=e.anyOf.map(K)),e.allOf!=null&&(e.allOf=e.allOf.map(K)),e.oneOf!=null&&(e.oneOf=e.oneOf.map(K));let{definitions:t}=e;if(t!=null)for(let e of Object.keys(t))t[e]=K(t[e]);return e}function K(e){return typeof e==`boolean`?e:_n(e)}var vn=Symbol(`Let zodToJsonSchema decide on which parser to use`),yn={name:void 0,$refStrategy:`root`,basePath:[`#`],effectStrategy:`input`,pipeStrategy:`all`,dateStrategy:`format:date-time`,mapStrategy:`entries`,removeAdditionalStrategy:`passthrough`,allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:`definitions`,strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:`escape`,applyRegexFlags:!1,emailStrategy:`format:email`,base64Strategy:`contentEncoding:base64`,nameStrategy:`ref`},bn=e=>typeof e==`string`?{...yn,name:e}:{...yn,...e};function q(){return{}}function xn(e,t){let n={type:`array`};return e.type?._def&&e.type?._def?.typeName!==H.ZodAny&&(n.items=Z(e.type._def,{...t,currentPath:[...t.currentPath,`items`]})),e.minLength&&(n.minItems=e.minLength.value),e.maxLength&&(n.maxItems=e.maxLength.value),e.exactLength&&(n.minItems=e.exactLength.value,n.maxItems=e.exactLength.value),n}function Sn(e){let t={type:`integer`,format:`int64`};if(!e.checks)return t;for(let n of e.checks)switch(n.kind){case`min`:n.inclusive?t.minimum=n.value:t.exclusiveMinimum=n.value;break;case`max`:n.inclusive?t.maximum=n.value:t.exclusiveMaximum=n.value;break;case`multipleOf`:t.multipleOf=n.value;break}return t}function Cn(){return{type:`boolean`}}function wn(e,t){return Z(e.type._def,t)}var Tn=(e,t)=>Z(e.innerType._def,t);function En(e,t,n){let r=n??t.dateStrategy;if(Array.isArray(r))return{anyOf:r.map(n=>En(e,t,n))};switch(r){case`string`:case`format:date-time`:return{type:`string`,format:`date-time`};case`format:date`:return{type:`string`,format:`date`};case`integer`:return Dn(e)}}var Dn=e=>{let t={type:`integer`,format:`unix-time`};for(let n of e.checks)switch(n.kind){case`min`:t.minimum=n.value;break;case`max`:t.maximum=n.value;break}return t};function On(e,t){return{...Z(e.innerType._def,t),default:e.defaultValue()}}function kn(e,t){return t.effectStrategy===`input`?Z(e.schema._def,t):q()}function An(e){return{type:`string`,enum:Array.from(e.values)}}var jn=e=>`type`in e&&e.type===`string`?!1:`allOf`in e;function Mn(e,t){let n=[Z(e.left._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]}),Z(e.right._def,{...t,currentPath:[...t.currentPath,`allOf`,`1`]})].filter(e=>!!e),r=[];return n.forEach(e=>{if(jn(e))r.push(...e.allOf);else{let t=e;if(`additionalProperties`in e&&e.additionalProperties===!1){let{additionalProperties:n,...r}=e;t=r}r.push(t)}}),r.length?{allOf:r}:void 0}function Nn(e){let t=typeof e.value;return t!==`bigint`&&t!==`number`&&t!==`boolean`&&t!==`string`?{type:Array.isArray(e.value)?`array`:`object`}:{type:t===`bigint`?`integer`:t,const:e.value}}var Pn=void 0,J={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(Pn===void 0&&(Pn=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)),Pn),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function Fn(e,t){let n={type:`string`};if(e.checks)for(let r of e.checks)switch(r.kind){case`min`:n.minLength=typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value;break;case`max`:n.maxLength=typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value;break;case`email`:switch(t.emailStrategy){case`format:email`:Y(n,`email`,r.message,t);break;case`format:idn-email`:Y(n,`idn-email`,r.message,t);break;case`pattern:zod`:X(n,J.email,r.message,t);break}break;case`url`:Y(n,`uri`,r.message,t);break;case`uuid`:Y(n,`uuid`,r.message,t);break;case`regex`:X(n,r.regex,r.message,t);break;case`cuid`:X(n,J.cuid,r.message,t);break;case`cuid2`:X(n,J.cuid2,r.message,t);break;case`startsWith`:X(n,RegExp(`^${In(r.value,t)}`),r.message,t);break;case`endsWith`:X(n,RegExp(`${In(r.value,t)}$`),r.message,t);break;case`datetime`:Y(n,`date-time`,r.message,t);break;case`date`:Y(n,`date`,r.message,t);break;case`time`:Y(n,`time`,r.message,t);break;case`duration`:Y(n,`duration`,r.message,t);break;case`length`:n.minLength=typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,n.maxLength=typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value;break;case`includes`:X(n,RegExp(In(r.value,t)),r.message,t);break;case`ip`:r.version!==`v6`&&Y(n,`ipv4`,r.message,t),r.version!==`v4`&&Y(n,`ipv6`,r.message,t);break;case`base64url`:X(n,J.base64url,r.message,t);break;case`jwt`:X(n,J.jwt,r.message,t);break;case`cidr`:r.version!==`v6`&&X(n,J.ipv4Cidr,r.message,t),r.version!==`v4`&&X(n,J.ipv6Cidr,r.message,t);break;case`emoji`:X(n,J.emoji(),r.message,t);break;case`ulid`:X(n,J.ulid,r.message,t);break;case`base64`:switch(t.base64Strategy){case`format:binary`:Y(n,`binary`,r.message,t);break;case`contentEncoding:base64`:n.contentEncoding=`base64`;break;case`pattern:zod`:X(n,J.base64,r.message,t);break}break;case`nanoid`:X(n,J.nanoid,r.message,t);case`toLowerCase`:case`toUpperCase`:case`trim`:break;default:}return n}function In(e,t){return t.patternStrategy===`escape`?Rn(e):e}var Ln=new Set(`ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789`);function Rn(e){let t=``;for(let n=0;n<e.length;n++)Ln.has(e[n])||(t+=`\\`),t+=e[n];return t}function Y(e,t,n,r){e.format||e.anyOf?.some(e=>e.format)?(e.anyOf||=[],e.format&&(e.anyOf.push({format:e.format}),delete e.format),e.anyOf.push({format:t,...n&&r.errorMessages&&{errorMessage:{format:n}}})):e.format=t}function X(e,t,n,r){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||=[],e.pattern&&(e.allOf.push({pattern:e.pattern}),delete e.pattern),e.allOf.push({pattern:zn(t,r),...n&&r.errorMessages&&{errorMessage:{pattern:n}}})):e.pattern=zn(t,r)}function zn(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let n={i:e.flags.includes(`i`),m:e.flags.includes(`m`),s:e.flags.includes(`s`)},r=n.i?e.source.toLowerCase():e.source,i=``,a=!1,o=!1,s=!1;for(let e=0;e<r.length;e++){if(a){i+=r[e],a=!1;continue}if(n.i){if(o){if(r[e].match(/[a-z]/)){s?(i+=r[e],i+=`${r[e-2]}-${r[e]}`.toUpperCase(),s=!1):r[e+1]===`-`&&r[e+2]?.match(/[a-z]/)?(i+=r[e],s=!0):i+=`${r[e]}${r[e].toUpperCase()}`;continue}}else if(r[e].match(/[a-z]/)){i+=`[${r[e]}${r[e].toUpperCase()}]`;continue}}if(n.m){if(r[e]===`^`){i+=`(^|(?<=[\r
10
+ ${t}`,l++;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new it(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new it(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function p(){l>0&&t({id:s,event:u,data:c}),s=void 0,c=``,l=0,u=void 0}function m(e={}){if(e.consume&&a.length>0){let e=a.join(``);te(e,0,e.length)}o=!0,s=void 0,c=``,l=0,u=void 0,a.length=0}return{feed:ee,reset:m}}function st(e,t,n){return n===100&&e.charCodeAt(t+1)===97&&e.charCodeAt(t+2)===116&&e.charCodeAt(t+3)===97&&e.charCodeAt(t+4)===58}function ct(e,t,n){return n===101&&e.charCodeAt(t+1)===118&&e.charCodeAt(t+2)===101&&e.charCodeAt(t+3)===110&&e.charCodeAt(t+4)===116&&e.charCodeAt(t+5)===58}var lt=class extends TransformStream{constructor({onError:e,onRetry:t,onComment:n}={}){let r;super({start(i){r=ot({onEvent:e=>{i.enqueue(e)},onError(t){e===`terminate`?i.error(t):typeof e==`function`&&e(t)},onRetry:t,onComment:n})},transform(e){r.feed(e)}})}};const ut=Symbol.for(`workflow-serialize`),dt=Symbol.for(`workflow-deserialize`);function ft(...e){return e.reduce((e,t)=>({...e,...t??{}}),{})}var{btoa:pt,atob:mt}=globalThis;function ht(e){let t=mt(e.replace(/-/g,`+`).replace(/_/g,`/`));return Uint8Array.from(t,e=>e.codePointAt(0))}function gt(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCodePoint(e[n]);return pt(t)}function _t(e){return e instanceof Uint8Array?gt(e):e}function vt(e){return e.type===`text`?new TextEncoder().encode(e.text):e.data instanceof Uint8Array?e.data:e.data instanceof ArrayBuffer?new Uint8Array(e.data):ht(e.data)}function yt(e,t={}){let{useArrayBrackets:n=!0}=t,r=new FormData;for(let[t,i]of Object.entries(e))if(i!=null){if(Array.isArray(i)){if(i.length===1){r.append(t,i[0]);continue}let e=n?`${t}[]`:t;for(let t of i)r.append(e,t);continue}r.append(t,i)}return r}function bt({tools:e=[],providerToolNames:t}){let n={},r={};for(let i of e)if(i.type===`provider`&&i.id in t){let e=t[i.id];n[i.name]=e,r[e]=i.name}return{toProviderToolName:e=>n[e]??e,toCustomToolName:e=>r[e]??e}}async function xt(e,t){if(e==null)return Promise.resolve();let n=t?.abortSignal;return new Promise((t,r)=>{if(n?.aborted){r(St());return}let i=setTimeout(()=>{a(),t()},e),a=()=>{clearTimeout(i),n?.removeEventListener(`abort`,o)},o=()=>{a(),r(St())};n?.addEventListener(`abort`,o)})}function St(){return new DOMException(`Delay was aborted`,`AbortError`)}var Ct=[{mediaType:`image/gif`,bytesPrefix:[71,73,70]},{mediaType:`image/png`,bytesPrefix:[137,80,78,71]},{mediaType:`image/jpeg`,bytesPrefix:[255,216]},{mediaType:`image/webp`,bytesPrefix:[82,73,70,70,null,null,null,null,87,69,66,80]},{mediaType:`image/bmp`,bytesPrefix:[66,77]},{mediaType:`image/tiff`,bytesPrefix:[73,73,42,0]},{mediaType:`image/tiff`,bytesPrefix:[77,77,0,42]},{mediaType:`image/avif`,bytesPrefix:[0,0,0,32,102,116,121,112,97,118,105,102]},{mediaType:`image/heic`,bytesPrefix:[0,0,0,32,102,116,121,112,104,101,105,99]}],wt=[{mediaType:`application/pdf`,bytesPrefix:[37,80,68,70]}],Tt=[{mediaType:`audio/mpeg`,bytesPrefix:[255,251]},{mediaType:`audio/mpeg`,bytesPrefix:[255,250]},{mediaType:`audio/mpeg`,bytesPrefix:[255,243]},{mediaType:`audio/mpeg`,bytesPrefix:[255,242]},{mediaType:`audio/mpeg`,bytesPrefix:[255,227]},{mediaType:`audio/mpeg`,bytesPrefix:[255,226]},{mediaType:`audio/wav`,bytesPrefix:[82,73,70,70,null,null,null,null,87,65,86,69]},{mediaType:`audio/ogg`,bytesPrefix:[79,103,103,83]},{mediaType:`audio/flac`,bytesPrefix:[102,76,97,67]},{mediaType:`audio/aac`,bytesPrefix:[64,21,0,0]},{mediaType:`audio/mp4`,bytesPrefix:[102,116,121,112]},{mediaType:`audio/webm`,bytesPrefix:[26,69,223,163]}],Et=[{mediaType:`video/mp4`,bytesPrefix:[0,0,0,null,102,116,121,112]},{mediaType:`video/webm`,bytesPrefix:[26,69,223,163]},{mediaType:`video/quicktime`,bytesPrefix:[0,0,0,20,102,116,121,112,113,116]},{mediaType:`video/x-msvideo`,bytesPrefix:[82,73,70,70]}],Dt=e=>{let t=typeof e==`string`?ht(e):e,n=(t[6]&127)<<21|(t[7]&127)<<14|(t[8]&127)<<7|t[9]&127;return t.slice(n+10)};function Ot(e){return typeof e==`string`&&e.startsWith(`SUQz`)||typeof e!=`string`&&e.length>10&&e[0]===73&&e[1]===68&&e[2]===51?Dt(e):e}function kt({data:e,signatures:t}){let n=Ot(e),r=typeof n==`string`?ht(n.substring(0,Math.min(n.length,24))):n;for(let e of t)if(r.length>=e.bytesPrefix.length&&e.bytesPrefix.every((e,t)=>e===null||r[t]===e))return e.mediaType}var At={image:Ct,audio:Tt,video:Et,application:wt};function jt({data:e,topLevelType:t}){if(t===void 0)return kt({data:e,signatures:[...Ct,...wt,...Tt,...Et]});let n=At[t];if(n!==void 0)return kt({data:e,signatures:n})}function Mt(e){let t=e.indexOf(`/`);return t===-1?e:e.substring(0,t)}function Nt(e){let t=e.indexOf(`/`);if(t===-1)return!1;let n=e.substring(t+1);return n.length>0&&n!==`*`}var Pt=`AI_DownloadError`,Ft=`vercel.ai.error.${Pt}`,It=Symbol.for(Ft),Lt,Rt,U=class extends (Rt=e,Lt=It,Rt){constructor({url:e,statusCode:t,statusText:n,cause:r,message:i=r==null?`Failed to download ${e}: ${t} ${n}`:`Failed to download ${e}: ${r}`}){super({name:Pt,message:i,cause:r}),this[Lt]=!0,this.url=e,this.statusCode=t,this.statusText=n}static isInstance(t){return e.hasMarker(t,Ft)}},zt=2*1024*1024*1024;async function Bt({response:e,url:t,maxBytes:n=zt}){let r=e.headers.get(`content-length`);if(r!=null){let e=parseInt(r,10);if(!isNaN(e)&&e>n)throw new U({url:t,message:`Download of ${t} exceeded maximum size of ${n} bytes (Content-Length: ${e}).`})}let i=e.body;if(i==null)return new Uint8Array;let a=i.getReader(),o=[],s=0;try{for(;;){let{done:e,value:r}=await a.read();if(e)break;if(s+=r.length,s>n)throw new U({url:t,message:`Download of ${t} exceeded maximum size of ${n} bytes.`});o.push(r)}}finally{try{await a.cancel()}finally{a.releaseLock()}}let c=new Uint8Array(s),l=0;for(let e of o)c.set(e,l),l+=e.length;return c}function Vt(e){let t;try{t=new URL(e)}catch{throw new U({url:e,message:`Invalid URL: ${e}`})}if(t.protocol===`data:`)return;if(t.protocol!==`http:`&&t.protocol!==`https:`)throw new U({url:e,message:`URL scheme must be http, https, or data, got ${t.protocol}`});let n=t.hostname;if(!n)throw new U({url:e,message:`URL must have a hostname`});if(n===`localhost`||n.endsWith(`.local`)||n.endsWith(`.localhost`))throw new U({url:e,message:`URL with hostname ${n} is not allowed`});if(n.startsWith(`[`)&&n.endsWith(`]`)){if(Wt(n.slice(1,-1)))throw new U({url:e,message:`URL with IPv6 address ${n} is not allowed`});return}if(Ht(n)){if(Ut(n))throw new U({url:e,message:`URL with IP address ${n} is not allowed`});return}}function Ht(e){let t=e.split(`.`);return t.length===4?t.every(e=>{let t=Number(e);return Number.isInteger(t)&&t>=0&&t<=255&&String(t)===e}):!1}function Ut(e){let[t,n]=e.split(`.`).map(Number);return t===0||t===10||t===127||t===169&&n===254||t===172&&n>=16&&n<=31||t===192&&n===168}function Wt(e){let t=e.toLowerCase();if(t===`::1`||t===`::`)return!0;if(t.startsWith(`::ffff:`)){let e=t.slice(7);if(Ht(e))return Ut(e);let n=e.split(`:`);if(n.length===2){let e=parseInt(n[0],16),t=parseInt(n[1],16);if(!isNaN(e)&&!isNaN(t))return Ut(`${e>>8&255}.${e&255}.${t>>8&255}.${t&255}`)}}return!!(t.startsWith(`fc`)||t.startsWith(`fd`)||t.startsWith(`fe80`))}async function Gt(e,t){Vt(e);try{let n=await fetch(e,{signal:t?.abortSignal});if(n.redirected&&Vt(n.url),!n.ok)throw new U({url:e,statusCode:n.status,statusText:n.statusText});let r=await Bt({response:n,url:e,maxBytes:t?.maxBytes??zt}),i=n.headers.get(`content-type`)??void 0;return new Blob([r],i?{type:i}:void 0)}catch(t){throw U.isInstance(t)?t:new U({url:e,cause:t})}}function W(e){return Object.fromEntries([...e.headers])}var Kt=(({prefix:e,size:t=16,alphabet:n=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,separator:i=`-`}={})=>{let a=()=>{let e=n.length,r=Array(t);for(let i=0;i<t;i++)r[i]=n[Math.random()*e|0];return r.join(``)};if(e==null)return a;if(n.includes(i))throw new r({argument:`separator`,message:`The separator "${i}" must not be part of the alphabet "${n}".`});return()=>`${e}${i}${a()}`})();function G(e){return(e instanceof Error||e instanceof DOMException)&&(e.name===`AbortError`||e.name===`ResponseAborted`||e.name===`TimeoutError`)}var qt=[`fetch failed`,`failed to fetch`],Jt=[`ConnectionRefused`,`ConnectionClosed`,`FailedToOpenSocket`,`ECONNRESET`,`ECONNREFUSED`,`ETIMEDOUT`,`EPIPE`];function Yt(e){if(!(e instanceof Error))return!1;let t=e.code;return!!(typeof t==`string`&&Jt.includes(t))}function Xt({error:e,url:n,requestBodyValues:r}){if(G(e))return e;if(e instanceof TypeError&&qt.includes(e.message.toLowerCase())){let i=e.cause;if(i!=null)return new t({message:`Cannot connect to API: ${i.message}`,cause:i,url:n,requestBodyValues:r,isRetryable:!0})}return Yt(e)?new t({message:`Cannot connect to API: ${e.message}`,cause:e,url:n,requestBodyValues:r,isRetryable:!0}):e}function Zt(e=globalThis){return e.window?`runtime/browser`:e.navigator?.userAgent?`runtime/${e.navigator.userAgent.toLowerCase()}`:e.process?.versions?.node?`runtime/node.js/${e.process.version.substring(0)}`:e.EdgeRuntime?`runtime/vercel-edge`:`runtime/unknown`}function Qt(e){if(e==null)return{};let t={};if(e instanceof Headers)e.forEach((e,n)=>{t[n.toLowerCase()]=e});else{Array.isArray(e)||(e=Object.entries(e));for(let[n,r]of e)r!=null&&(t[n.toLowerCase()]=r)}return t}function $t(e,...t){let n=new Headers(Qt(e)),r=n.get(`user-agent`)||``;return n.set(`user-agent`,[r,...t].filter(Boolean).join(` `)),Object.fromEntries(n.entries())}var en=`5.0.0-canary.44`,tn=()=>globalThis.fetch,nn=async({url:e,headers:n={},successfulResponseHandler:r,failedResponseHandler:i,abortSignal:a,fetch:o=tn()})=>{try{let s=await o(e,{method:`GET`,headers:$t(n,`ai-sdk/provider-utils/${en}`,Zt()),signal:a}),c=W(s);if(!s.ok){let n;try{n=await i({response:s,url:e,requestBodyValues:{}})}catch(n){throw G(n)||t.isInstance(n)?n:new t({message:`Failed to process error response`,cause:n,statusCode:s.status,url:e,responseHeaders:c,requestBodyValues:{}})}throw n.value}try{return await r({response:s,url:e,requestBodyValues:{}})}catch(n){throw n instanceof Error&&(G(n)||t.isInstance(n))?n:new t({message:`Failed to process successful response`,cause:n,statusCode:s.status,url:e,responseHeaders:c,requestBodyValues:{}})}}catch(t){throw Xt({error:t,url:e,requestBodyValues:{}})}};function rn(e){return e!=null}function an({apiKey:e,environmentVariableName:t,apiKeyParameterName:n=`apiKey`,description:r}){if(typeof e==`string`)return e;if(e!=null)throw new o({message:`${r} API key must be a string.`});if(typeof process>`u`)throw new o({message:`${r} API key is missing. Pass it using the '${n}' parameter. Environment variables are not supported in this environment.`});if(e=process.env[t],e==null)throw new o({message:`${r} API key is missing. Pass it using the '${n}' parameter or the ${t} environment variable.`});if(typeof e!=`string`)throw new o({message:`${r} API key must be a string. The value of the ${t} environment variable is not a string.`});return e}function on({settingValue:e,environmentVariableName:t}){if(typeof e==`string`||!(e!=null||typeof process>`u`)&&(e=process.env[t],!(e==null||typeof e!=`string`)))return e}function sn(e){return e!==void 0&&e!==`provider-default`}function cn({reasoning:e,effortMap:t,warnings:n}){let r=t[e];if(r==null){n.push({type:`unsupported`,feature:`reasoning`,details:`reasoning "${e}" is not supported by this model.`});return}return r!==e&&n.push({type:`compatibility`,feature:`reasoning`,details:`reasoning "${e}" is not directly supported by this model. mapped to effort "${r}".`}),r}var ln={minimal:.02,low:.1,medium:.3,high:.6,xhigh:.9};function un({reasoning:e,maxOutputTokens:t,maxReasoningBudget:n,minReasoningBudget:r=1024,budgetPercentages:i=ln,warnings:a}){let o=i[e];if(o==null){a.push({type:`unsupported`,feature:`reasoning`,details:`reasoning "${e}" is not supported by this model.`});return}return Math.min(n,Math.max(r,Math.round(t*o)))}function dn(e){let[t,n=``]=e.toLowerCase().split(`/`);return{mpeg:`mp3`,"x-wav":`wav`,opus:`ogg`,mp4:`m4a`,"x-m4a":`m4a`}[n]??n}var fn=/"(?:_|\\u005[Ff])(?:_|\\u005[Ff])(?:p|\\u0070)(?:r|\\u0072)(?:o|\\u006[Ff])(?:t|\\u0074)(?:o|\\u006[Ff])(?:_|\\u005[Ff])(?:_|\\u005[Ff])"\s*:/,pn=/"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/;function mn(e){let t=JSON.parse(e);return typeof t!=`object`||!t||fn.test(e)===!1&&pn.test(e)===!1?t:hn(t)}function hn(e){let t=[e];for(;t.length;){let e=t;t=[];for(let n of e){if(Object.prototype.hasOwnProperty.call(n,`__proto__`)||Object.prototype.hasOwnProperty.call(n,`constructor`)&&n.constructor!==null&&typeof n.constructor==`object`&&Object.prototype.hasOwnProperty.call(n.constructor,`prototype`))throw SyntaxError(`Object contains forbidden prototype property`);for(let e in n){let r=n[e];r&&typeof r==`object`&&t.push(r)}}}return e}function gn(e){let{stackTraceLimit:t}=Error;try{Error.stackTraceLimit=0}catch{return mn(e)}try{return mn(e)}finally{Error.stackTraceLimit=t}}function _n(e){if(e.type===`object`||Array.isArray(e.type)&&e.type.includes(`object`)){e.additionalProperties=!1;let{properties:t}=e;if(t!=null)for(let e of Object.keys(t))t[e]=K(t[e])}e.items!=null&&(e.items=Array.isArray(e.items)?e.items.map(K):K(e.items)),e.anyOf!=null&&(e.anyOf=e.anyOf.map(K)),e.allOf!=null&&(e.allOf=e.allOf.map(K)),e.oneOf!=null&&(e.oneOf=e.oneOf.map(K));let{definitions:t}=e;if(t!=null)for(let e of Object.keys(t))t[e]=K(t[e]);return e}function K(e){return typeof e==`boolean`?e:_n(e)}var vn=Symbol(`Let zodToJsonSchema decide on which parser to use`),yn={name:void 0,$refStrategy:`root`,basePath:[`#`],effectStrategy:`input`,pipeStrategy:`all`,dateStrategy:`format:date-time`,mapStrategy:`entries`,removeAdditionalStrategy:`passthrough`,allowedAdditionalProperties:!0,rejectedAdditionalProperties:!1,definitionPath:`definitions`,strictUnions:!1,definitions:{},errorMessages:!1,patternStrategy:`escape`,applyRegexFlags:!1,emailStrategy:`format:email`,base64Strategy:`contentEncoding:base64`,nameStrategy:`ref`},bn=e=>typeof e==`string`?{...yn,name:e}:{...yn,...e};function q(){return{}}function xn(e,t){let n={type:`array`};return e.type?._def&&e.type?._def?.typeName!==H.ZodAny&&(n.items=Z(e.type._def,{...t,currentPath:[...t.currentPath,`items`]})),e.minLength&&(n.minItems=e.minLength.value),e.maxLength&&(n.maxItems=e.maxLength.value),e.exactLength&&(n.minItems=e.exactLength.value,n.maxItems=e.exactLength.value),n}function Sn(e){let t={type:`integer`,format:`int64`};if(!e.checks)return t;for(let n of e.checks)switch(n.kind){case`min`:n.inclusive?t.minimum=n.value:t.exclusiveMinimum=n.value;break;case`max`:n.inclusive?t.maximum=n.value:t.exclusiveMaximum=n.value;break;case`multipleOf`:t.multipleOf=n.value;break}return t}function Cn(){return{type:`boolean`}}function wn(e,t){return Z(e.type._def,t)}var Tn=(e,t)=>Z(e.innerType._def,t);function En(e,t,n){let r=n??t.dateStrategy;if(Array.isArray(r))return{anyOf:r.map(n=>En(e,t,n))};switch(r){case`string`:case`format:date-time`:return{type:`string`,format:`date-time`};case`format:date`:return{type:`string`,format:`date`};case`integer`:return Dn(e)}}var Dn=e=>{let t={type:`integer`,format:`unix-time`};for(let n of e.checks)switch(n.kind){case`min`:t.minimum=n.value;break;case`max`:t.maximum=n.value;break}return t};function On(e,t){return{...Z(e.innerType._def,t),default:e.defaultValue()}}function kn(e,t){return t.effectStrategy===`input`?Z(e.schema._def,t):q()}function An(e){return{type:`string`,enum:Array.from(e.values)}}var jn=e=>`type`in e&&e.type===`string`?!1:`allOf`in e;function Mn(e,t){let n=[Z(e.left._def,{...t,currentPath:[...t.currentPath,`allOf`,`0`]}),Z(e.right._def,{...t,currentPath:[...t.currentPath,`allOf`,`1`]})].filter(e=>!!e),r=[];return n.forEach(e=>{if(jn(e))r.push(...e.allOf);else{let t=e;if(`additionalProperties`in e&&e.additionalProperties===!1){let{additionalProperties:n,...r}=e;t=r}r.push(t)}}),r.length?{allOf:r}:void 0}function Nn(e){let t=typeof e.value;return t!==`bigint`&&t!==`number`&&t!==`boolean`&&t!==`string`?{type:Array.isArray(e.value)?`array`:`object`}:{type:t===`bigint`?`integer`:t,const:e.value}}var Pn=void 0,J={cuid:/^[cC][^\s-]{8,}$/,cuid2:/^[0-9a-z]+$/,ulid:/^[0-9A-HJKMNP-TV-Z]{26}$/,email:/^(?!\.)(?!.*\.\.)([a-zA-Z0-9_'+\-\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\-]*\.)+[a-zA-Z]{2,}$/,emoji:()=>(Pn===void 0&&(Pn=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`)),Pn),uuid:/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/,ipv4:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ipv4Cidr:/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,ipv6:/^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,ipv6Cidr:/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,base64:/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,base64url:/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,nanoid:/^[a-zA-Z0-9_-]{21}$/,jwt:/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/};function Fn(e,t){let n={type:`string`};if(e.checks)for(let r of e.checks)switch(r.kind){case`min`:n.minLength=typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value;break;case`max`:n.maxLength=typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value;break;case`email`:switch(t.emailStrategy){case`format:email`:Y(n,`email`,r.message,t);break;case`format:idn-email`:Y(n,`idn-email`,r.message,t);break;case`pattern:zod`:X(n,J.email,r.message,t);break}break;case`url`:Y(n,`uri`,r.message,t);break;case`uuid`:Y(n,`uuid`,r.message,t);break;case`regex`:X(n,r.regex,r.message,t);break;case`cuid`:X(n,J.cuid,r.message,t);break;case`cuid2`:X(n,J.cuid2,r.message,t);break;case`startsWith`:X(n,RegExp(`^${In(r.value,t)}`),r.message,t);break;case`endsWith`:X(n,RegExp(`${In(r.value,t)}$`),r.message,t);break;case`datetime`:Y(n,`date-time`,r.message,t);break;case`date`:Y(n,`date`,r.message,t);break;case`time`:Y(n,`time`,r.message,t);break;case`duration`:Y(n,`duration`,r.message,t);break;case`length`:n.minLength=typeof n.minLength==`number`?Math.max(n.minLength,r.value):r.value,n.maxLength=typeof n.maxLength==`number`?Math.min(n.maxLength,r.value):r.value;break;case`includes`:X(n,RegExp(In(r.value,t)),r.message,t);break;case`ip`:r.version!==`v6`&&Y(n,`ipv4`,r.message,t),r.version!==`v4`&&Y(n,`ipv6`,r.message,t);break;case`base64url`:X(n,J.base64url,r.message,t);break;case`jwt`:X(n,J.jwt,r.message,t);break;case`cidr`:r.version!==`v6`&&X(n,J.ipv4Cidr,r.message,t),r.version!==`v4`&&X(n,J.ipv6Cidr,r.message,t);break;case`emoji`:X(n,J.emoji(),r.message,t);break;case`ulid`:X(n,J.ulid,r.message,t);break;case`base64`:switch(t.base64Strategy){case`format:binary`:Y(n,`binary`,r.message,t);break;case`contentEncoding:base64`:n.contentEncoding=`base64`;break;case`pattern:zod`:X(n,J.base64,r.message,t);break}break;case`nanoid`:X(n,J.nanoid,r.message,t);case`toLowerCase`:case`toUpperCase`:case`trim`:break;default:}return n}function In(e,t){return t.patternStrategy===`escape`?Rn(e):e}var Ln=new Set(`ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789`);function Rn(e){let t=``;for(let n=0;n<e.length;n++)Ln.has(e[n])||(t+=`\\`),t+=e[n];return t}function Y(e,t,n,r){e.format||e.anyOf?.some(e=>e.format)?(e.anyOf||=[],e.format&&(e.anyOf.push({format:e.format}),delete e.format),e.anyOf.push({format:t,...n&&r.errorMessages&&{errorMessage:{format:n}}})):e.format=t}function X(e,t,n,r){e.pattern||e.allOf?.some(e=>e.pattern)?(e.allOf||=[],e.pattern&&(e.allOf.push({pattern:e.pattern}),delete e.pattern),e.allOf.push({pattern:zn(t,r),...n&&r.errorMessages&&{errorMessage:{pattern:n}}})):e.pattern=zn(t,r)}function zn(e,t){if(!t.applyRegexFlags||!e.flags)return e.source;let n={i:e.flags.includes(`i`),m:e.flags.includes(`m`),s:e.flags.includes(`s`)},r=n.i?e.source.toLowerCase():e.source,i=``,a=!1,o=!1,s=!1;for(let e=0;e<r.length;e++){if(a){i+=r[e],a=!1;continue}if(n.i){if(o){if(r[e].match(/[a-z]/)){s?(i+=r[e],i+=`${r[e-2]}-${r[e]}`.toUpperCase(),s=!1):r[e+1]===`-`&&r[e+2]?.match(/[a-z]/)?(i+=r[e],s=!0):i+=`${r[e]}${r[e].toUpperCase()}`;continue}}else if(r[e].match(/[a-z]/)){i+=`[${r[e]}${r[e].toUpperCase()}]`;continue}}if(n.m){if(r[e]===`^`){i+=`(^|(?<=[\r
11
11
  ]))`;continue}else if(r[e]===`$`){i+=`($|(?=[\r
12
12
  ]))`;continue}}if(n.s&&r[e]===`.`){i+=o?`${r[e]}\r
13
13
  `:`[${r[e]}\r
@@ -45,3 +45,51 @@ export declare class InMemoryFs implements IFileSystem {
45
45
  }>;
46
46
  writeFile(path: string, content: InitialFileContent): Promise<void>;
47
47
  }
48
+
49
+ export interface SandboxOptions {
50
+ cwd?: string | undefined;
51
+ env?: Record<string, string> | undefined;
52
+ fs?: IFileSystem | undefined;
53
+ network?: { dangerouslyAllowFullInternetAccess?: boolean | undefined } | undefined;
54
+ timeoutMs?: number | undefined;
55
+ }
56
+
57
+ export interface SandboxRunCommandParams {
58
+ cmd: string;
59
+ args?: string[] | undefined;
60
+ cwd?: string | undefined;
61
+ env?: Record<string, string> | undefined;
62
+ detached?: boolean | undefined;
63
+ signal?: AbortSignal | undefined;
64
+ }
65
+
66
+ export interface SandboxCommandOutputMessage {
67
+ type: "stdout" | "stderr";
68
+ data: string;
69
+ timestamp: Date;
70
+ }
71
+
72
+ export declare class SandboxCommand {
73
+ readonly cmdId: string;
74
+ readonly cwd: string;
75
+ readonly startedAt: Date;
76
+ exitCode: number | undefined;
77
+ logs(): AsyncGenerator<SandboxCommandOutputMessage, void, unknown>;
78
+ wait(): Promise<SandboxCommandFinished>;
79
+ output(): Promise<string>;
80
+ stdout(): Promise<string>;
81
+ stderr(): Promise<string>;
82
+ kill(): Promise<void>;
83
+ }
84
+
85
+ export interface SandboxCommandFinished extends SandboxCommand {
86
+ exitCode: number;
87
+ }
88
+
89
+ export declare class Sandbox {
90
+ static create(opts?: SandboxOptions): Promise<Sandbox>;
91
+ runCommand(params: SandboxRunCommandParams & { detached: true }): Promise<SandboxCommand>;
92
+ runCommand(params: SandboxRunCommandParams): Promise<SandboxCommandFinished>;
93
+ stop(): Promise<void>;
94
+ get bashEnvInstance(): Bash;
95
+ }
@@ -4,8 +4,10 @@
4
4
  */
5
5
  import type { DurableSessionSnapshot, DurableSessionState } from "#execution/durable-session-store.js";
6
6
  import type { PendingConnectionToolCall } from "#runtime/framework-tools/pending-connection-tool-calls.js";
7
+ import type { PendingCodeModeConnectionAuthorization } from "#runtime/framework-tools/code-mode-connection-auth.js";
7
8
  export interface AwaitAuthorizationInput {
8
9
  readonly parentWritable: WritableStream<Uint8Array>;
10
+ readonly pendingCodeModeConnectionAuthorization?: PendingCodeModeConnectionAuthorization;
9
11
  readonly pendingToolCalls: readonly PendingConnectionToolCall[];
10
12
  readonly serializedContext: Record<string, unknown>;
11
13
  readonly sessionState: DurableSessionState;
@@ -1 +1 @@
1
- import{createAshConnectionCallbackRoutePath}from"#protocol/routes.js";import{createHook,getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{completeAuthorizationForConnectionStep,emitConnectionAuthorizationPendingStep,resolvePendingToolCallsStep,startAuthorizationForConnectionStep}from"#execution/connection-auth-steps.js";async function awaitAuthorizationAndResolve(s){let c=uniqueConnectionNames(s.pendingToolCalls);if(c.length===0)return{serializedContext:s.serializedContext,sessionState:s.sessionState};let l=s.sessionState.emissionState,u=trimTrailingSlash(getWorkflowMetadata().url),d=c.map(n=>{let r=createHook();return{connectionName:n,hook:r,webhookUrl:`${u}${createAshConnectionCallbackRoutePath(n,r.token)}`}}),f=await Promise.all(d.map(async({connectionName:e,hook:t,webhookUrl:n})=>({connectionName:e,hook:t,webhookUrl:n,start:await startAuthorizationForConnectionStep({connectionName:e,emissionState:l,parentWritable:s.parentWritable,serializedContext:s.serializedContext,webhookUrl:n})}))),p=f.flatMap(e=>e.start.ok?[{connectionName:e.connectionName,hook:e.hook,principal:e.start.principal,serializedContext:e.start.serializedContext,state:e.start.state,webhookUrl:e.webhookUrl}]:[]);p.length>0&&await emitConnectionAuthorizationPendingStep({connectionNames:p.map(e=>e.connectionName),emissionState:l,parentWritable:s.parentWritable,serializedContext:s.serializedContext});let m=await Promise.all(p.map(async({connectionName:e,hook:t,principal:n,serializedContext:i,state:a,webhookUrl:o})=>{try{let c=await awaitHookRequest(t);return{complete:await completeAuthorizationForConnectionStep({connectionName:e,emissionState:l,parentWritable:s.parentWritable,principal:n,request:c,serializedContext:i,state:a,webhookUrl:o}),connectionName:e,principal:n}}finally{t.dispose()}})),h={},g={},_={},v=[];for(let e of f)e.start.ok||(_[e.connectionName]={reason:e.start.reason,retryable:!1});for(let e of m)e.complete.ok?(h[e.connectionName]=e.complete.token,g[e.connectionName]=e.principal,v.push(e.connectionName)):_[e.connectionName]={reason:e.complete.reason,retryable:e.complete.retryable};return resolvePendingToolCallsStep({failedConnections:_,parentWritable:s.parentWritable,pendingCalls:s.pendingToolCalls,principals:g,resolvedConnectionNames:v,serializedContext:s.serializedContext,sessionState:s.sessionState,sessionWritable:s.sessionWritable,tokens:h})}function uniqueConnectionNames(e){let t=new Set;for(let n of e){let e=n.kind===`connection-execute`?[n.connectionName]:n.connectionNames;for(let n of e)t.add(n)}return[...t]}async function awaitHookRequest(e){let t=await e[Symbol.asyncIterator]().next();if(t.done===!0||t.value===void 0)throw Error(`Connection callback hook closed before delivering a request.`);return t.value}function trimTrailingSlash(e){return e.endsWith(`/`)?e.slice(0,-1):e}export{awaitAuthorizationAndResolve};
1
+ import{createAshConnectionCallbackRoutePath}from"#protocol/routes.js";import{createHook,getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{completeAuthorizationForConnectionStep,continuePendingCodeModeConnectionAuthorizationStep,emitConnectionAuthorizationPendingStep,resolvePendingToolCallsStep,startAuthorizationForConnectionStep}from"#execution/connection-auth-steps.js";import{resolveVercelProductionCallbackBaseUrl}from"#execution/workflow-callback-url.js";async function awaitAuthorizationAndResolve(c){let l=uniqueConnectionNames({pendingCodeModeConnectionAuthorization:c.pendingCodeModeConnectionAuthorization,pendingToolCalls:c.pendingToolCalls});if(l.length===0)return{serializedContext:c.serializedContext,sessionState:c.sessionState};let u=c.sessionState.emissionState,d=resolveVercelProductionCallbackBaseUrl()??getWorkflowMetadata().url,f=l.map(n=>{let r=createHook();return{connectionName:n,hook:r,webhookUrl:new URL(createAshConnectionCallbackRoutePath(n,r.token),d).toString()}}),p=await Promise.all(f.map(async({connectionName:e,hook:t,webhookUrl:n})=>({connectionName:e,hook:t,webhookUrl:n,start:await startAuthorizationForConnectionStep({connectionName:e,emissionState:u,parentWritable:c.parentWritable,serializedContext:c.serializedContext,webhookUrl:n})}))),m=p.flatMap(e=>e.start.ok?[{connectionName:e.connectionName,hook:e.hook,principal:e.start.principal,serializedContext:e.start.serializedContext,state:e.start.state,webhookUrl:e.webhookUrl}]:[]);m.length>0&&await emitConnectionAuthorizationPendingStep({connectionNames:m.map(e=>e.connectionName),emissionState:u,parentWritable:c.parentWritable,serializedContext:c.serializedContext});let h=await Promise.all(m.map(async({connectionName:e,hook:t,principal:n,serializedContext:i,state:a,webhookUrl:o})=>{try{let s=await awaitHookRequest(t);return{complete:await completeAuthorizationForConnectionStep({connectionName:e,emissionState:u,parentWritable:c.parentWritable,principal:n,request:s,serializedContext:i,state:a,webhookUrl:o}),connectionName:e,principal:n}}finally{t.dispose()}})),g={},_={},v={},y=[];for(let e of p)e.start.ok||(v[e.connectionName]={reason:e.start.reason,retryable:!1});for(let e of h)e.complete.ok?(g[e.connectionName]=e.complete.token,_[e.connectionName]=e.principal,y.push(e.connectionName)):v[e.connectionName]={reason:e.complete.reason,retryable:e.complete.retryable};let b={serializedContext:c.serializedContext,sessionState:c.sessionState};return c.pendingToolCalls.length>0&&(b=await resolvePendingToolCallsStep({failedConnections:v,parentWritable:c.parentWritable,pendingCalls:c.pendingToolCalls,principals:_,resolvedConnectionNames:y,serializedContext:b.serializedContext,sessionState:b.sessionState,sessionWritable:c.sessionWritable,tokens:g})),c.pendingCodeModeConnectionAuthorization!==void 0&&(b=await continuePendingCodeModeConnectionAuthorizationStep({failedConnections:v,parentWritable:c.parentWritable,pending:c.pendingCodeModeConnectionAuthorization,principals:_,resolvedConnectionNames:y,serializedContext:b.serializedContext,sessionState:b.sessionState,sessionWritable:c.sessionWritable,tokens:g})),b}function uniqueConnectionNames(e){let t=new Set;for(let n of e.pendingToolCalls){let e=n.kind===`connection-execute`?[n.connectionName]:n.connectionNames;for(let n of e)t.add(n)}let n=e.pendingCodeModeConnectionAuthorization?.interrupt.payload.connectionName;return n!==void 0&&t.add(n),[...t]}async function awaitHookRequest(e){let t=await e[Symbol.asyncIterator]().next();if(t.done===!0||t.value===void 0)throw Error(`Connection callback hook closed before delivering a request.`);return t.value}export{awaitAuthorizationAndResolve};
@@ -0,0 +1,15 @@
1
+ import type { CodeModeOptions } from "experimental-ai-sdk-code-mode";
2
+ import type { HarnessEmissionState } from "#harness/emission.js";
3
+ import type { HarnessToolMap } from "#harness/types.js";
4
+ import { type HandleMessageStreamEvent } from "#protocol/message.js";
5
+ type EmitCodeModeAuthorizationEvent = (event: HandleMessageStreamEvent) => Promise<void>;
6
+ /**
7
+ * Emits model-stream action events for nested tool calls replayed after
8
+ * a code-mode connection authorization interruption.
9
+ */
10
+ export declare function createCodeModeAuthorizationLifecycle(input: {
11
+ readonly emissionState: HarnessEmissionState;
12
+ readonly emit: EmitCodeModeAuthorizationEvent;
13
+ readonly tools: HarnessToolMap;
14
+ }): NonNullable<CodeModeOptions["lifecycle"]>;
15
+ export {};
@@ -0,0 +1 @@
1
+ import{toErrorMessage}from"#shared/errors.js";import{createActionResultEvent,createActionsRequestedEvent}from"#protocol/message.js";import{createRuntimeActionRequestFromToolCall}from"#harness/runtime-actions.js";import{normalizeConnectionAuthToolResult}from"#execution/connection-auth-tool-result.js";function createCodeModeAuthorizationLifecycle(i){return{async onNestedToolCall(e){let t={input:e.input,toolCallId:e.toolCallId,toolName:e.toolName,type:`tool-call`};await i.emit(createActionsRequestedEvent({actions:[createRuntimeActionRequestFromToolCall({toolCall:t,tools:i.tools})],sequence:i.emissionState.sequence,stepIndex:i.emissionState.stepIndex,turnId:i.emissionState.turnId}))},async onNestedToolResult(n){if(n.status===`interrupted`||n.status===`approval-required`)return;let r={callId:n.toolCallId,kind:`tool-result`,output:n.status===`rejected`?toErrorMessage(n.error):normalizeConnectionAuthToolResult(n.output),toolName:n.toolName};n.status===`rejected`&&Object.assign(r,{isError:!0}),await i.emit(createActionResultEvent({result:r,sequence:i.emissionState.sequence,stepIndex:i.emissionState.stepIndex,turnId:i.emissionState.turnId}))}}}export{createCodeModeAuthorizationLifecycle};
@@ -7,6 +7,7 @@ import type { HarnessEmissionState } from "#harness/emission.js";
7
7
  import type { JsonValue } from "#public/types/json.js";
8
8
  import type { AuthorizationCallbackRequest, ConnectionPrincipal, TokenResult } from "#runtime/connections/types.js";
9
9
  import { type PendingConnectionToolCall } from "#runtime/framework-tools/pending-connection-tool-calls.js";
10
+ import { type PendingCodeModeConnectionAuthorization } from "#runtime/framework-tools/code-mode-connection-auth.js";
10
11
  /**
11
12
  * Result of one `startAuthorization` step.
12
13
  *
@@ -106,3 +107,17 @@ export declare function resolvePendingToolCallsStep(input: {
106
107
  readonly serializedContext: Record<string, unknown>;
107
108
  readonly sessionState: DurableSessionState;
108
109
  }>;
110
+ export declare function continuePendingCodeModeConnectionAuthorizationStep(input: {
111
+ readonly failedConnections: Readonly<Record<string, ConnectionAuthorizationFailure>>;
112
+ readonly parentWritable: WritableStream<Uint8Array>;
113
+ readonly pending: PendingCodeModeConnectionAuthorization;
114
+ readonly principals: Readonly<Record<string, ConnectionPrincipal>>;
115
+ readonly resolvedConnectionNames: readonly string[];
116
+ readonly serializedContext: Record<string, unknown>;
117
+ readonly sessionState: DurableSessionState;
118
+ readonly sessionWritable: WritableStream<DurableSessionSnapshot>;
119
+ readonly tokens: Readonly<Record<string, TokenResult>>;
120
+ }): Promise<{
121
+ readonly serializedContext: Record<string, unknown>;
122
+ readonly sessionState: DurableSessionState;
123
+ }>;
@@ -1 +1 @@
1
- import{createConnectionAuthorizationCompletedEvent,createConnectionAuthorizationPendingEvent,createConnectionAuthorizationRequiredEvent,encodeMessageStreamEvent,timestampHandleMessageStreamEvent}from"#protocol/message.js";import{contextStorage}from"#context/container.js";import{callAdapterEventHandler}from"#channel/adapter.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{ConnectionRegistryImpl}from"#runtime/connections/registry.js";import{ConnectionRegistryKey,executeConnectionSearch}from"#runtime/framework-tools/connection-search.js";import{getActiveRuntimeNode}from"#context/node.js";import{PendingConnectionToolCallsKey,isConnectionAuthorizationPlaceholder}from"#runtime/framework-tools/pending-connection-tool-calls.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{deserializeContext,serializeContext}from"#context/serialize.js";import{readDurableSession,writeDurableSession}from"#execution/durable-session-store.js";import{hydrateDurableSession}from"#execution/session.js";import{isConnectionAuthorizationFailedError,isConnectionAuthorizationRequiredError}from"#public/connections/errors.js";import{writeCachedToken}from"#runtime/connections/authorization-tokens.js";import{withConnectionPrincipalOverride}from"#runtime/connections/principal-context.js";import{principalKey,resolveConnectionPrincipal}from"#runtime/connections/principal.js";import{withDefaultAuthorizationInstructions}from"#execution/authorization-challenge-defaults.js";import{splicePendingToolResults}from"#execution/await-authorization-splice.js";async function startAuthorizationForConnectionStep(t){"use step";let r=await deserializeContext(t.serializedContext),i=findConnection(r,t.connectionName);if(i?.authorization?.startAuthorization===void 0){let n=`Connection "${t.connectionName}" does not define startAuthorization.`;return await emitAuthorizationEvent(r,createConnectionAuthorizationCompletedEvent({connectionName:t.connectionName,outcome:`failed`,reason:n,sequence:t.emissionState.sequence,stepIndex:t.emissionState.stepIndex,turnId:t.emissionState.turnId}),t.parentWritable),{ok:!1,reason:n}}let a=i.description??t.connectionName,o,s,c;try{o=resolveConnectionPrincipal(t.connectionName,i.authorization,r);let e=await i.authorization.startAuthorization({principal:o,connection:{url:i.url},callbackUrl:t.webhookUrl});s=withDefaultAuthorizationInstructions(e.challenge,t.connectionName),c=e.state}catch(n){let i=n instanceof Error?n.message:String(n);return await emitAuthorizationEvent(r,createConnectionAuthorizationCompletedEvent({connectionName:t.connectionName,outcome:`failed`,reason:i,sequence:t.emissionState.sequence,stepIndex:t.emissionState.stepIndex,turnId:t.emissionState.turnId}),t.parentWritable),{ok:!1,reason:i}}return await emitAuthorizationEvent(r,createConnectionAuthorizationRequiredEvent({authorization:s,connectionName:t.connectionName,description:a,sequence:t.emissionState.sequence,stepIndex:t.emissionState.stepIndex,turnId:t.emissionState.turnId,webhookUrl:t.webhookUrl}),t.parentWritable),{ok:!0,principal:o,serializedContext:serializeContext(r),state:c}}async function emitConnectionAuthorizationPendingStep(e){"use step";e.connectionNames.length!==0&&await emitAuthorizationEvent(await deserializeContext(e.serializedContext),createConnectionAuthorizationPendingEvent({connectionNames:e.connectionNames,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}),e.parentWritable)}async function completeAuthorizationForConnectionStep(t){"use step";let n=await deserializeContext(t.serializedContext),r=findConnection(n,t.connectionName);if(r?.authorization?.completeAuthorization===void 0){let r=`Connection "${t.connectionName}" does not define completeAuthorization.`;return await emitAuthorizationEvent(n,createConnectionAuthorizationCompletedEvent({connectionName:t.connectionName,outcome:`failed`,reason:r,sequence:t.emissionState.sequence,stepIndex:t.emissionState.stepIndex,turnId:t.emissionState.turnId}),t.parentWritable),{ok:!1,reason:r,retryable:!1}}try{let i=await r.authorization.completeAuthorization({principal:t.principal,connection:{url:r.url},request:t.request,state:t.state,callbackUrl:t.webhookUrl});return await emitAuthorizationEvent(n,createConnectionAuthorizationCompletedEvent({connectionName:t.connectionName,outcome:`authorized`,sequence:t.emissionState.sequence,stepIndex:t.emissionState.stepIndex,turnId:t.emissionState.turnId}),t.parentWritable),{ok:!0,token:i}}catch(r){let i=isConnectionAuthorizationFailedError(r)?r:null,a=i?.retryable??!0,o=i?.reason??(r instanceof Error?r.message:String(r));return await emitAuthorizationEvent(n,createConnectionAuthorizationCompletedEvent({connectionName:t.connectionName,outcome:`failed`,reason:o,sequence:t.emissionState.sequence,stepIndex:t.emissionState.stepIndex,turnId:t.emissionState.turnId}),t.parentWritable),{ok:!1,reason:o,retryable:a}}}async function resolvePendingToolCallsStep(e){"use step";let t=await readDurableSession(e.sessionState),n=await deserializeContext(e.serializedContext),r=n.require(BundleKey),i=hydrateDurableSession({compactionOverrides:{thresholdPercent:r.resolvedAgent.config.compaction?.thresholdPercent},durable:t,turnAgent:r.turnAgent}),o=new ConnectionRegistryImpl(getActiveRuntimeNode(n).agent?.connections??[]);n.setVirtualContext(ConnectionRegistryKey,o);for(let[t,r]of Object.entries(e.tokens)){let i=e.principals[t];if(i===void 0)throw Error(`Internal error: missing resolved principal for connection "${t}".`);writeCachedToken(n,t,principalKey(i),r)}let c={},d=new Set(e.resolvedConnectionNames);await contextStorage.run(n,()=>withConnectionPrincipalOverride(n,e.principals,async()=>{for(let t of e.pendingCalls){let n=t.kind===`connection-execute`?[t.connectionName]:t.connectionNames,r;for(let t of n){let n=e.failedConnections[t];if(n!==void 0){r={connectionName:t,...n};break}}if(r!==void 0&&t.kind===`connection-execute`){c[t.toolCallId]=r.retryable?{error:`authorization_required`,retryable:!0}:{connectionName:r.connectionName,error:`authorization_failed`,message:r.reason,retryable:!1};continue}if(!n.every(e=>d.has(e))&&t.kind===`connection-execute`){c[t.toolCallId]={error:`authorization_required`,retryable:!0};continue}try{if(t.kind===`connection-execute`){let e=await o.getClient(t.connectionName).executeTool(t.toolName,t.args);c[t.toolCallId]=normalizeToolResult(e)}else{let e=await executeConnectionSearch(t.args,{toolCallId:t.toolCallId});isConnectionAuthorizationPlaceholder(e)?c[t.toolCallId]={error:`authorization_required`,retryable:!0}:c[t.toolCallId]=normalizeToolResult(e)}}catch(e){if(isConnectionAuthorizationRequiredError(e)){c[t.toolCallId]={error:`authorization_required`,retryable:!0};continue}let n=e instanceof Error?e.message:String(e);c[t.toolCallId]={error:`tool_execution_failed`,message:n,retryable:!1}}}}));let f=splicePendingToolResults(i,c),p=e.pendingCalls.filter(t=>(t.kind===`connection-execute`?[t.connectionName]:t.connectionNames).some(t=>!d.has(t)&&e.failedConnections[t]===void 0));n.set(PendingConnectionToolCallsKey,p);let m=await writeDurableSession({session:f,writable:e.sessionWritable});return{serializedContext:serializeContext(n),sessionState:m}}function findConnection(e,t){return e.get(BundleKey)===void 0?void 0:(getActiveRuntimeNode(e).agent?.connections??[]).find(e=>e.connectionName===t)}async function emitAuthorizationEvent(e,t,n){let a=e.require(ChannelKey),s=buildAdapterContext(a,e),l=await callAdapterEventHandler(a,t,s);e.set(ChannelKey,{...a,state:{...s.state}});let u=n.getWriter();try{await u.write(encodeMessageStreamEvent(timestampHandleMessageStreamEvent(l)))}finally{u.releaseLock()}}function normalizeToolResult(e){if(e===void 0)return null;try{return JSON.parse(JSON.stringify(e))}catch{return{error:`tool_result_not_serializable`,retryable:!1}}}export{completeAuthorizationForConnectionStep,emitConnectionAuthorizationPendingStep,resolvePendingToolCallsStep,startAuthorizationForConnectionStep};
1
+ import{isCodeModeApprovalInterrupt,toCodeModeApprovalMessages}from"../node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/approval-continuation.js";import{continueCodeModeInterrupt,replaceCodeModeInterruptResult,unwrapCodeModeResult}from"../node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/interrupt-continuation.js";import"../node_modules/.pnpm/experimental-ai-sdk-code-mode@1.0.7_ai@7.0.0-canary.154_zod@4.4.3_/node_modules/experimental-ai-sdk-code-mode/dist/index.js";import{toErrorMessage}from"#shared/errors.js";import{CapabilitiesKey}from"#context/keys.js";import{createConnectionAuthorizationCompletedEvent,createConnectionAuthorizationPendingEvent,createConnectionAuthorizationRequiredEvent,createInputRequestedEvent,encodeMessageStreamEvent,timestampHandleMessageStreamEvent}from"#protocol/message.js";import{contextStorage}from"#context/container.js";import{callAdapterEventHandler}from"#channel/adapter.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{ConnectionRegistryImpl}from"#runtime/connections/registry.js";import{ConnectionRegistryKey,DiscoveredConnectionToolsKey,executeConnectionSearch}from"#runtime/framework-tools/connection-search.js";import{getActiveRuntimeNode}from"#context/node.js";import{PendingConnectionToolCallsKey,isConnectionAuthorizationPlaceholder}from"#runtime/framework-tools/pending-connection-tool-calls.js";import{normalizeConnectionAuthToolResult}from"#execution/connection-auth-tool-result.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{deserializeContext,serializeContext}from"#context/serialize.js";import{readDurableSession,writeDurableSession}from"#execution/durable-session-store.js";import{hydrateDurableSession}from"#execution/session.js";import{isConnectionAuthorizationFailedError,isConnectionAuthorizationRequiredError}from"#public/connections/errors.js";import{writeCachedToken}from"#runtime/connections/authorization-tokens.js";import{withConnectionPrincipalOverride}from"#runtime/connections/principal-context.js";import{principalKey,resolveConnectionPrincipal}from"#runtime/connections/principal.js";import{PendingCodeModeConnectionAuthorizationKey,isCodeModeConnectionAuthInterrupt,toConnectionAuthResolutionFailure}from"#runtime/framework-tools/code-mode-connection-auth.js";import{withDefaultAuthorizationInstructions}from"#execution/authorization-challenge-defaults.js";import{splicePendingToolResults}from"#execution/await-authorization-splice.js";import{buildCodeModeHostTools,createAshCodeModeOptions}from"#harness/code-mode.js";import{getApprovedTools,setPendingInputBatch}from"#harness/input-requests.js";import{createNodeHarnessTools}from"#execution/node-step.js";import{extractToolApprovalInputRequests}from"#harness/input-extraction.js";import{setPendingCodeModeApproval,splitCodeModeOuterResponseMessages}from"#harness/code-mode-approval.js";import{createCodeModeAuthorizationLifecycle}from"#execution/code-mode-authorization-lifecycle.js";async function startAuthorizationForConnectionStep(e){"use step";let t=await deserializeContext(e.serializedContext),n=findConnection(t,e.connectionName);if(n?.authorization?.startAuthorization===void 0){let n=`Connection "${e.connectionName}" does not define startAuthorization.`;return await emitAuthorizationEvent(t,createConnectionAuthorizationCompletedEvent({connectionName:e.connectionName,outcome:`failed`,reason:n,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}),e.parentWritable),{ok:!1,reason:n}}let r=n.description??e.connectionName,i,a,o;try{i=resolveConnectionPrincipal(e.connectionName,n.authorization,t);let r=await n.authorization.startAuthorization({principal:i,connection:{url:n.url},callbackUrl:e.webhookUrl});a=withDefaultAuthorizationInstructions(r.challenge,e.connectionName),o=r.state}catch(n){let r=n instanceof Error?n.message:String(n);return await emitAuthorizationEvent(t,createConnectionAuthorizationCompletedEvent({connectionName:e.connectionName,outcome:`failed`,reason:r,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}),e.parentWritable),{ok:!1,reason:r}}return await emitAuthorizationEvent(t,createConnectionAuthorizationRequiredEvent({authorization:a,connectionName:e.connectionName,description:r,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId,webhookUrl:e.webhookUrl}),e.parentWritable),{ok:!0,principal:i,serializedContext:serializeContext(t),state:o}}async function emitConnectionAuthorizationPendingStep(e){"use step";e.connectionNames.length!==0&&await emitAuthorizationEvent(await deserializeContext(e.serializedContext),createConnectionAuthorizationPendingEvent({connectionNames:e.connectionNames,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}),e.parentWritable)}async function completeAuthorizationForConnectionStep(e){"use step";let t=await deserializeContext(e.serializedContext),n=findConnection(t,e.connectionName);if(n?.authorization?.completeAuthorization===void 0){let n=`Connection "${e.connectionName}" does not define completeAuthorization.`;return await emitAuthorizationEvent(t,createConnectionAuthorizationCompletedEvent({connectionName:e.connectionName,outcome:`failed`,reason:n,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}),e.parentWritable),{ok:!1,reason:n,retryable:!1}}try{let r=await n.authorization.completeAuthorization({principal:e.principal,connection:{url:n.url},request:e.request,state:e.state,callbackUrl:e.webhookUrl});return await emitAuthorizationEvent(t,createConnectionAuthorizationCompletedEvent({connectionName:e.connectionName,outcome:`authorized`,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}),e.parentWritable),{ok:!0,token:r}}catch(n){let r=isConnectionAuthorizationFailedError(n)?n:null,i=r?.retryable??!0,a=r?.reason??(n instanceof Error?n.message:String(n));return await emitAuthorizationEvent(t,createConnectionAuthorizationCompletedEvent({connectionName:e.connectionName,outcome:`failed`,reason:a,sequence:e.emissionState.sequence,stepIndex:e.emissionState.stepIndex,turnId:e.emissionState.turnId}),e.parentWritable),{ok:!1,reason:a,retryable:i}}}async function resolvePendingToolCallsStep(e){"use step";let t=await readDurableSession(e.sessionState),n=await deserializeContext(e.serializedContext),r=n.require(BundleKey),i=hydrateDurableSession({compactionOverrides:{thresholdPercent:r.resolvedAgent.config.compaction?.thresholdPercent},durable:t,turnAgent:r.turnAgent}),a=new ConnectionRegistryImpl(getActiveRuntimeNode(n).agent?.connections??[]);n.setVirtualContext(ConnectionRegistryKey,a);for(let[t,r]of Object.entries(e.tokens)){let i=e.principals[t];if(i===void 0)throw Error(`Internal error: missing resolved principal for connection "${t}".`);writeCachedToken(n,t,principalKey(i),r)}let o={},s=new Set(e.resolvedConnectionNames);await contextStorage.run(n,()=>withConnectionPrincipalOverride(n,e.principals,async()=>{for(let t of e.pendingCalls){let n=t.kind===`connection-execute`?[t.connectionName]:t.connectionNames,r;for(let t of n){let n=e.failedConnections[t];if(n!==void 0){r={connectionName:t,...n};break}}if(r!==void 0&&t.kind===`connection-execute`){o[t.toolCallId]=r.retryable?{error:`authorization_required`,retryable:!0}:{connectionName:r.connectionName,error:`authorization_failed`,message:r.reason,retryable:!1};continue}if(!n.every(e=>s.has(e))&&t.kind===`connection-execute`){o[t.toolCallId]={error:`authorization_required`,retryable:!0};continue}try{if(t.kind===`connection-execute`){let e=await a.getClient(t.connectionName).executeTool(t.toolName,t.args);o[t.toolCallId]=normalizeConnectionAuthToolResult(e)}else{let e=await executeConnectionSearch(t.args,{toolCallId:t.toolCallId});isConnectionAuthorizationPlaceholder(e)?o[t.toolCallId]={error:`authorization_required`,retryable:!0}:o[t.toolCallId]=normalizeConnectionAuthToolResult(e)}}catch(e){if(isConnectionAuthorizationRequiredError(e)){o[t.toolCallId]={error:`authorization_required`,retryable:!0};continue}let n=e instanceof Error?e.message:String(e);o[t.toolCallId]={error:`tool_execution_failed`,message:n,retryable:!1}}}}));let c=splicePendingToolResults(i,o),l=e.pendingCalls.filter(t=>(t.kind===`connection-execute`?[t.connectionName]:t.connectionNames).some(t=>!s.has(t)&&e.failedConnections[t]===void 0));n.set(PendingConnectionToolCallsKey,l);let u=await writeDurableSession({session:c,writable:e.sessionWritable});return{serializedContext:serializeContext(n),sessionState:u}}async function continuePendingCodeModeConnectionAuthorizationStep(s){"use step";let c=await readDurableSession(s.sessionState),l=await deserializeContext(s.serializedContext),d=l.require(BundleKey),f=hydrateDurableSession({compactionOverrides:{thresholdPercent:d.resolvedAgent.config.compaction?.thresholdPercent},durable:c,turnAgent:d.turnAgent}),p=getActiveRuntimeNode(l),m=new ConnectionRegistryImpl(p.agent?.connections??[]);l.setVirtualContext(ConnectionRegistryKey,m);for(let[e,t]of Object.entries(s.tokens)){let n=s.principals[e];if(n===void 0)throw Error(`Internal error: missing resolved principal for connection "${e}".`);writeCachedToken(l,e,principalKey(n),t)}let h=s.pending.interrupt.payload.connectionName,g=s.failedConnections[h],_=s.resolvedConnectionNames.includes(h),v=g===void 0?_?{status:`authorized`}:{retryable:!0,reason:`Authorization is still required.`,status:`failed`}:toConnectionAuthResolutionFailure(g),y=new Set(Object.keys(s.failedConnections));v.status===`failed`&&y.add(h);let b;await contextStorage.run(l,async()=>withConnectionPrincipalOverride(l,s.principals,async()=>{try{let e=createNodeHarnessTools({node:p}),t=await buildCodeModeHostTools({approvedTools:getApprovedTools(f),capabilities:l.get(CapabilitiesKey),codeModeMetadataOnlyConnectionNames:y,discovered:l.get(DiscoveredConnectionToolsKey),registry:m,tools:e});b=await continueCodeModeInterrupt({interrupt:s.pending.interrupt,options:createAshCodeModeOptions({lifecycle:createCodeModeAuthorizationLifecycle({emissionState:s.sessionState.emissionState,emit:async e=>emitAuthorizationEvent(l,e,s.parentWritable),tools:e})}),resolution:v,tools:t})}catch(e){b={error:`code_mode_continuation_failed`,message:toErrorMessage(e),retryable:!1}}}));let x=unwrapCodeModeResult(b),S=x.status===`interrupted`?x.interrupt:x.output,C=replaceCodeModeInterruptResult(f.history,s.pending.interrupt.pendingContinuation,S);if(x.status===`interrupted`&&isCodeModeConnectionAuthInterrupt(x.interrupt))l.set(PendingCodeModeConnectionAuthorizationKey,{interrupt:x.interrupt});else if(x.status===`interrupted`&&isCodeModeApprovalInterrupt(x.interrupt)){l.set(PendingCodeModeConnectionAuthorizationKey,void 0);let e=splitCodeModeOuterResponseMessages({messages:C,outerToolCallId:x.interrupt.continuation.outerToolCallId}),n=toCodeModeApprovalMessages(x.interrupt),r=extractToolApprovalInputRequests({content:extractAssistantContent(n)});await emitAuthorizationEvent(l,createInputRequestedEvent({requests:r,sequence:s.sessionState.emissionState.sequence,stepIndex:s.sessionState.emissionState.stepIndex,turnId:s.sessionState.emissionState.turnId}),s.parentWritable);let i=await writeDurableSession({session:setPendingInputBatch({requests:r,responseMessages:n,session:setPendingCodeModeApproval({interrupt:x.interrupt,responseMessages:e.responseMessages,session:{...f,history:[...e.promptMessages]}})}),writable:s.sessionWritable});return{serializedContext:serializeContext(l),sessionState:i}}else l.set(PendingCodeModeConnectionAuthorizationKey,void 0);let w=await writeDurableSession({session:{...f,history:C},writable:s.sessionWritable});return{serializedContext:serializeContext(l),sessionState:w}}function extractAssistantContent(e){let t=[];for(let n of e)n.role===`assistant`&&Array.isArray(n.content)&&t.push(...n.content);return t}function findConnection(e,t){return e.get(BundleKey)===void 0?void 0:(getActiveRuntimeNode(e).agent?.connections??[]).find(e=>e.connectionName===t)}async function emitAuthorizationEvent(e,t,n){let r=e.require(ChannelKey),i=buildAdapterContext(r,e),a=await callAdapterEventHandler(r,t,i);e.set(ChannelKey,{...r,state:{...i.state}});let o=n.getWriter();try{await o.write(encodeMessageStreamEvent(timestampHandleMessageStreamEvent(a)))}finally{o.releaseLock()}}export{completeAuthorizationForConnectionStep,continuePendingCodeModeConnectionAuthorizationStep,emitConnectionAuthorizationPendingStep,resolvePendingToolCallsStep,startAuthorizationForConnectionStep};
@@ -0,0 +1,2 @@
1
+ import type { JsonValue } from "#public/types/json.js";
2
+ export declare function normalizeConnectionAuthToolResult(result: unknown): JsonValue;
@@ -0,0 +1 @@
1
+ function normalizeConnectionAuthToolResult(e){if(e===void 0)return null;try{return JSON.parse(JSON.stringify(e))}catch{return{error:`tool_result_not_serializable`,retryable:!1}}}export{normalizeConnectionAuthToolResult};
@@ -1 +1 @@
1
- import{toErrorMessage}from"#shared/errors.js";import{AuthKey,CapabilitiesKey,InitiatorAuthKey}from"#context/keys.js";import{createSubagentCalledEvent,encodeMessageStreamEvent,timestampHandleMessageStreamEvent}from"#protocol/message.js";import{callAdapterEventHandler}from"#channel/adapter.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{deserializeContext}from"#context/serialize.js";import{readDurableSession,writeDurableSession}from"#execution/durable-session-store.js";import{hydrateDurableSession}from"#execution/session.js";import{getPendingRuntimeActionBatch,recordPendingSubagentChildToken}from"#harness/runtime-actions.js";import{resolveRemoteAgentForAction,startRemoteAgentSession}from"#execution/remote-agent-dispatch.js";import{buildSubagentRunInput}from"#execution/subagent-tool.js";import{createWorkflowRuntime,workflowEntryReference}from"#execution/workflow-runtime.js";async function dispatchRuntimeActionsStep(e){"use step";let u=await readDurableSession(e.sessionState),d=getPendingRuntimeActionBatch(u.state);if(d===void 0||d.actions.length===0)return{results:[],sessionState:e.sessionState};let f=await deserializeContext(e.serializedContext),p=f.require(BundleKey),m=hydrateDurableSession({compactionOverrides:{thresholdPercent:p.resolvedAgent.config.compaction?.thresholdPercent},durable:u,turnAgent:p.turnAgent}),h=f.require(ChannelKey),g=f.get(AuthKey)??null,_=f.get(CapabilitiesKey),v=f.get(InitiatorAuthKey)??null,y=e.parentWritable.getWriter(),b=buildAdapterContext(h,f),x=m,S=[];try{for(let t of d.actions){let n,r,s,c;switch(t.kind){case`subagent-call`:{let e=createWorkflowRuntime({compiledArtifactsSource:p.compiledArtifactsSource,nodeId:t.nodeId}),{childContinuationToken:i,runInput:a}=buildSubagentRunInput({action:t,auth:g,batchEvent:d.event,capabilities:_,initiatorAuth:v,session:m}),o=await e.run(a);x=recordPendingSubagentChildToken({callId:t.callId,childContinuationToken:i,session:x}),n=o.sessionId,r=t.name,c=t.subagentName;break}case`remote-agent-call`:{let i;try{i=resolveRemoteAgentForAction({nodeId:t.nodeId,remoteAgentName:t.remoteAgentName,registry:p.subagentRegistry.subagentsByNodeId}),n=await startRemoteAgentSession({action:t,callbackBaseUrl:e.callbackBaseUrl,remote:i,session:m})}catch(e){S.push(createRemoteAgentStartFailureResult({action:t,error:e}));continue}r=t.name,s={url:i.url},c=t.remoteAgentName;break}default:throw Error(`Unsupported runtime action kind "${t.kind}" in workflow runtime.`)}let l=await callAdapterEventHandler(h,createSubagentCalledEvent({callId:t.callId,childSessionId:n,name:r,remote:s,sequence:d.event.sequence,sessionId:m.sessionId,toolName:c,turnId:d.event.turnId,workflowId:workflowEntryReference.workflowId}),b);await y.write(encodeMessageStreamEvent(timestampHandleMessageStreamEvent(l)))}}finally{y.releaseLock()}return{results:S,sessionState:x===m?e.sessionState:await writeDurableSession({session:x,writable:e.sessionWritable})}}function createRemoteAgentStartFailureResult(t){return{callId:t.action.callId,isError:!0,kind:`subagent-result`,output:{code:`REMOTE_AGENT_START_FAILED`,message:toErrorMessage(t.error)},subagentName:t.action.remoteAgentName}}export{dispatchRuntimeActionsStep};
1
+ import{toErrorMessage}from"#shared/errors.js";import{AuthKey,CapabilitiesKey,InitiatorAuthKey}from"#context/keys.js";import{createSubagentCalledEvent,encodeMessageStreamEvent,timestampHandleMessageStreamEvent}from"#protocol/message.js";import{callAdapterEventHandler}from"#channel/adapter.js";import{BundleKey,ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{getPendingRuntimeActionBatch,recordPendingSubagentChildToken}from"#harness/runtime-actions.js";import{buildAdapterContext}from"#channel/adapter-context.js";import{deserializeContext}from"#context/serialize.js";import{readDurableSession,writeDurableSession}from"#execution/durable-session-store.js";import{hydrateDurableSession}from"#execution/session.js";import{resolveRemoteAgentForAction,startRemoteAgentSession}from"#execution/remote-agent-dispatch.js";import{buildSubagentRunInput}from"#execution/subagent-tool.js";import{createWorkflowRuntime,workflowEntryReference}from"#execution/workflow-runtime.js";async function dispatchRuntimeActionsStep(e){"use step";let u=await readDurableSession(e.sessionState),d=getPendingRuntimeActionBatch(u.state);if(d===void 0||d.actions.length===0)return{results:[],sessionState:e.sessionState};let f=await deserializeContext(e.serializedContext),p=f.require(BundleKey),m=hydrateDurableSession({compactionOverrides:{thresholdPercent:p.resolvedAgent.config.compaction?.thresholdPercent},durable:u,turnAgent:p.turnAgent}),h=f.require(ChannelKey),g=f.get(AuthKey)??null,_=f.get(CapabilitiesKey),v=f.get(InitiatorAuthKey)??null,y=e.parentWritable.getWriter(),b=buildAdapterContext(h,f),x=m,S=[];try{for(let t of d.actions){let n,r,s,c;switch(t.kind){case`subagent-call`:{let e=createWorkflowRuntime({compiledArtifactsSource:p.compiledArtifactsSource,nodeId:t.nodeId}),{childContinuationToken:i,runInput:a}=buildSubagentRunInput({action:t,auth:g,batchEvent:d.event,capabilities:_,initiatorAuth:v,session:m}),o=await e.run(a);x=recordPendingSubagentChildToken({callId:t.callId,childContinuationToken:i,session:x}),n=o.sessionId,r=t.name,c=t.subagentName;break}case`remote-agent-call`:{let i;try{i=resolveRemoteAgentForAction({nodeId:t.nodeId,remoteAgentName:t.remoteAgentName,registry:p.subagentRegistry.subagentsByNodeId}),n=await startRemoteAgentSession({action:t,callbackBaseUrl:e.callbackBaseUrl,remote:i,session:m})}catch(e){S.push(createRemoteAgentStartFailureResult({action:t,error:e}));continue}r=t.name,s={url:i.url},c=t.remoteAgentName;break}default:throw Error(`Unsupported runtime action kind "${t.kind}" in workflow runtime.`)}let l=await callAdapterEventHandler(h,createSubagentCalledEvent({callId:t.callId,childSessionId:n,name:r,remote:s,sequence:d.event.sequence,sessionId:m.sessionId,toolName:c,turnId:d.event.turnId,workflowId:workflowEntryReference.workflowId}),b);await y.write(encodeMessageStreamEvent(timestampHandleMessageStreamEvent(l)))}}finally{y.releaseLock()}return{results:S,sessionState:x===m?e.sessionState:await writeDurableSession({session:x,writable:e.sessionWritable})}}function createRemoteAgentStartFailureResult(t){return{callId:t.action.callId,isError:!0,kind:`subagent-result`,output:{code:`REMOTE_AGENT_START_FAILED`,message:toErrorMessage(t.error)},subagentName:t.action.remoteAgentName}}export{dispatchRuntimeActionsStep};