experimental-ash 0.24.0 → 0.24.2

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 (155) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/src/chunks/authored-module-loader-DcCfCiBm.js +4 -0
  3. package/dist/src/chunks/client-DLHAGI2g.js +4 -0
  4. package/dist/src/chunks/dev-authored-source-watcher-CBID_Dwh.js +1 -0
  5. package/dist/src/chunks/{errors-DsO9xmQL.js → errors-HYWjHxV6.js} +1 -1
  6. package/dist/src/chunks/{gray-matter-BxS7ZG-J.js → gray-matter-D-9jHwOT.js} +4 -4
  7. package/dist/src/chunks/host-zBy9FyyX.js +70 -0
  8. package/dist/src/chunks/{jsdist-M7JFZoA4.js → jsdist-BkeWZ7EZ.js} +61 -61
  9. package/dist/src/chunks/package-HUaeub_D.js +1 -0
  10. package/dist/src/chunks/paths-CebY5GCi.js +89 -0
  11. package/dist/src/chunks/{picocolors-Bq-tZK9u.js → picocolors-aAkqW4On.js} +1 -1
  12. package/dist/src/chunks/token-D98SQdvs.js +1 -0
  13. package/dist/src/chunks/{url-BVRhVE2O.js → url-JdCGA634.js} +1 -1
  14. package/dist/src/cli/commands/info.js +1 -1
  15. package/dist/src/cli/dev/environment.d.ts +16 -2
  16. package/dist/src/cli/dev/environment.js +1 -1
  17. package/dist/src/cli/dev/input-requests.js +1 -1
  18. package/dist/src/cli/dev/repl.js +3 -3
  19. package/dist/src/cli/dev/url.js +1 -1
  20. package/dist/src/cli/run.js +1 -1
  21. package/dist/src/cli/ui/output.js +1 -1
  22. package/dist/src/client/index.d.ts +1 -0
  23. package/dist/src/client/index.js +1 -0
  24. package/dist/src/compiled/.vendor-stamp.json +7 -6
  25. package/dist/src/compiled/@ai-sdk/anthropic/index.js +1 -1
  26. package/dist/src/compiled/@ai-sdk/google/index.js +1 -1
  27. package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
  28. package/dist/src/compiled/@ai-sdk/openai/index.js +1 -1
  29. package/dist/src/compiled/@ai-sdk/otel/index.js +1 -1
  30. package/dist/src/compiled/@chat-adapter/slack/_slack-web-api.d.ts +7 -0
  31. package/dist/src/compiled/@chat-adapter/slack/index.d.ts +418 -109
  32. package/dist/src/compiled/@chat-adapter/slack/index.js +31 -27
  33. package/dist/src/compiled/@chat-adapter/slack/package.json +1 -1
  34. package/dist/src/compiled/@chat-adapter/state-memory/index.d.ts +8 -2
  35. package/dist/src/compiled/@chat-adapter/state-memory/index.js +1 -1
  36. package/dist/src/compiled/@chat-adapter/state-memory/package.json +1 -1
  37. package/dist/src/compiled/@opentelemetry/api/index.js +1 -1
  38. package/dist/src/compiled/@vercel/sandbox/index.js +19 -17
  39. package/dist/src/compiled/@vercel/sandbox/package.json +1 -1
  40. package/dist/src/compiled/@workflow/core/index.js +2 -2
  41. package/dist/src/compiled/@workflow/core/runtime.js +22 -22
  42. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  43. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  44. package/dist/src/compiled/_chunks/node/auth-ZhCJAHxl.js +2 -0
  45. package/dist/src/compiled/_chunks/node/{dist-BdWHjlRQ.js → dist-BQYUcBqu.js} +31 -31
  46. package/dist/src/compiled/_chunks/node/{chunk-Dd2tEFlW.js → dist-BdTs18CF.js} +1 -1
  47. package/dist/src/compiled/_chunks/node/retry-DkR2H1Y0.js +1 -0
  48. package/dist/src/compiled/_chunks/node/token-CoIbMZkq.js +1 -0
  49. package/dist/src/compiled/_chunks/node/{version-BMyZn3Y2.js → version-D4IYmfaS.js} +1 -1
  50. package/dist/src/compiled/_chunks/workflow/coerce-BhzIW-Hm.js +1 -0
  51. package/dist/src/compiled/_chunks/workflow/{compat-CIROS3w4.js → compat-DcEvieoj.js} +1 -1
  52. package/dist/src/compiled/_chunks/workflow/{core-DOVmxHH8.js → core-XWIi7wKc.js} +3 -3
  53. package/dist/src/compiled/_chunks/workflow/{dist-C7wPwOI9.js → dist-DO14ZaQj.js} +1 -1
  54. package/dist/src/compiled/_chunks/workflow/{dist-CpUQh3NH.js → dist-DZZY3Zyp.js} +1 -1
  55. package/dist/src/compiled/_chunks/workflow/resume-hook-DOMbNs-S.js +51 -0
  56. package/dist/src/compiled/_chunks/workflow/{schemas-DFZoEyCn.js → schemas-DmgDnhW3.js} +1 -1
  57. package/dist/src/compiled/_chunks/workflow/sleep-CRjce49s.js +1 -0
  58. package/dist/src/compiled/_chunks/workflow/{src-ClRYdO4-.js → src-B54rYDvB.js} +1 -1
  59. package/dist/src/compiled/_chunks/workflow/symbols-D8paKc8P.js +9 -0
  60. package/dist/src/compiled/_chunks/workflow/{token-CsNmv7KW.js → token-D9z1dMB6.js} +1 -1
  61. package/dist/src/compiled/_chunks/workflow/{token-j5Cl4rrs.js → token-DV7rQw_t.js} +1 -1
  62. package/dist/src/compiled/chat/index.d.ts +6 -3143
  63. package/dist/src/compiled/chat/index.js +1 -1
  64. package/dist/src/compiled/chat/{jsx-runtime-DxGwoLu2.d.ts → jsx-runtime-CFq1K_Ve.d.ts} +1 -1
  65. package/dist/src/compiled/chat/package.json +1 -1
  66. package/dist/src/compiled/jose/index.js +2 -2
  67. package/dist/src/compiled/jsonc-parser/LICENSE.md +21 -0
  68. package/dist/src/compiled/jsonc-parser/index.d.ts +13 -0
  69. package/dist/src/compiled/jsonc-parser/index.js +15 -0
  70. package/dist/src/compiled/jsonc-parser/package.json +7 -0
  71. package/dist/src/compiled/just-bash/index.js +773 -773
  72. package/dist/src/compiled/just-bash/package.json +1 -1
  73. package/dist/src/compiled/turndown/index.js +1 -1
  74. package/dist/src/compiled/zod/index.js +1 -1
  75. package/dist/src/compiled/zod-validation-error/index.js +1 -1
  76. package/dist/src/compiler/manifest.d.ts +36 -3
  77. package/dist/src/compiler/manifest.js +5 -1
  78. package/dist/src/compiler/module-map.js +8 -0
  79. package/dist/src/compiler/normalize-manifest.js +1 -0
  80. package/dist/src/compiler/normalize-subagent.d.ts +3 -2
  81. package/dist/src/compiler/normalize-subagent.js +112 -3
  82. package/dist/src/compiler/remote-agent-node.d.ts +20 -0
  83. package/dist/src/compiler/remote-agent-node.js +19 -0
  84. package/dist/src/discover/discover-subagent.js +35 -2
  85. package/dist/src/discover/grammar.d.ts +1 -0
  86. package/dist/src/discover/grammar.js +5 -0
  87. package/dist/src/evals/cli/eval.js +1 -1
  88. package/dist/src/evals/loaders/yaml.js +1 -1
  89. package/dist/src/evals/runner/discover.js +1 -1
  90. package/dist/src/evals/runner/execute-suite.js +1 -1
  91. package/dist/src/evals/runner/reporters/console.js +1 -1
  92. package/dist/src/evals/scorers/autoevals-client.js +1 -1
  93. package/dist/src/evals/scorers/autoevals.js +1 -1
  94. package/dist/src/evals/scorers/json.js +1 -1
  95. package/dist/src/evals/scorers/run.js +1 -1
  96. package/dist/src/evals/scorers/sql.js +1 -1
  97. package/dist/src/evals/scorers/text.js +1 -1
  98. package/dist/src/execution/connection-auth-steps.js +2 -0
  99. package/dist/src/internal/application/package.js +1 -1
  100. package/dist/src/internal/authored-asset-import-plugin.d.ts +5 -0
  101. package/dist/src/internal/authored-asset-import-plugin.js +141 -0
  102. package/dist/src/internal/authored-module-bundle.d.ts +4 -0
  103. package/dist/src/internal/authored-module-bundle.js +19 -0
  104. package/dist/src/internal/authored-module-loader.d.ts +6 -0
  105. package/dist/src/internal/authored-module-loader.js +114 -125
  106. package/dist/src/internal/authored-package-tsconfig-paths.d.ts +9 -0
  107. package/dist/src/internal/authored-package-tsconfig-paths.js +209 -0
  108. package/dist/src/internal/nitro/host/channel-routes.d.ts +9 -2
  109. package/dist/src/internal/nitro/host/dev-authored-source-watcher.d.ts +12 -1
  110. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +19 -3
  111. package/dist/src/internal/nitro/host/schedule-task-routes.d.ts +7 -3
  112. package/dist/src/internal/nitro/host/start-development-server.js +2 -0
  113. package/dist/src/internal/workflow-bundle/builder-support.js +1 -33
  114. package/dist/src/public/agents/auth.d.ts +30 -0
  115. package/dist/src/public/agents/auth.js +37 -0
  116. package/dist/src/public/definitions/remote-agent.d.ts +25 -0
  117. package/dist/src/public/definitions/remote-agent.js +11 -0
  118. package/dist/src/public/index.d.ts +1 -0
  119. package/dist/src/public/index.js +1 -0
  120. package/dist/src/public/next/index.d.ts +4 -4
  121. package/dist/src/public/next/index.js +16 -25
  122. package/dist/src/runtime/connections/mcp-client.js +3 -2
  123. package/dist/src/runtime/connections/types.d.ts +24 -0
  124. package/dist/src/runtime/resolve-agent-graph.js +57 -0
  125. package/dist/src/runtime/sessions/turn.d.ts +17 -5
  126. package/dist/src/runtime/subagents/registry.d.ts +6 -6
  127. package/dist/src/runtime/subagents/registry.js +1 -1
  128. package/dist/src/runtime/types.d.ts +20 -0
  129. package/package.json +22 -17
  130. package/dist/src/chunks/authored-module-loader-XcFLnl49.js +0 -2
  131. package/dist/src/chunks/client-nshDsWNF.js +0 -4
  132. package/dist/src/chunks/dev-authored-source-watcher-B4PaZGUr.js +0 -7
  133. package/dist/src/chunks/host-DsW72Q-w.js +0 -65
  134. package/dist/src/chunks/package-DmsQgn4v.js +0 -1
  135. package/dist/src/chunks/paths-OknjaYR8.js +0 -89
  136. package/dist/src/chunks/prewarm-B4YblQ5m.js +0 -6
  137. package/dist/src/chunks/token-DtoyQZy2.js +0 -1
  138. package/dist/src/chunks/token-util-CHjOk3A7.js +0 -1
  139. package/dist/src/compiled/_chunks/node/auth-vbe4XEEK.js +0 -2
  140. package/dist/src/compiled/_chunks/node/dist-DMSq2ehP.js +0 -1
  141. package/dist/src/compiled/_chunks/node/retry-BOcy5BbJ.js +0 -1
  142. package/dist/src/compiled/_chunks/node/token-D-BTJHoU.js +0 -1
  143. package/dist/src/compiled/_chunks/workflow/coerce-Dh0wa7P9.js +0 -1
  144. package/dist/src/compiled/_chunks/workflow/context-errors-Bbvvp-li.js +0 -6
  145. package/dist/src/compiled/_chunks/workflow/dist-C_oiE-l7.js +0 -40
  146. package/dist/src/compiled/_chunks/workflow/resume-hook-C3VWUPii.js +0 -12
  147. package/dist/src/compiled/_chunks/workflow/sleep-QTkC1VFe.js +0 -1
  148. package/dist/src/compiled/_chunks/workflow/symbols-QezhMuLg.js +0 -4
  149. package/dist/src/compiled/chat/_workflow-serde.d.ts +0 -5
  150. /package/dist/src/chunks/{chunk-8L7ocgPr.js → chunk-DSjMdhoD.js} +0 -0
  151. /package/dist/src/chunks/{guards-CjJ3lmju.js → guards-26p6sOw3.js} +0 -0
  152. /package/dist/src/chunks/{input-requests-BsBi7_5K.js → input-requests-DJiy6dG9.js} +0 -0
  153. /package/dist/src/chunks/{runtime-model-BWu6M_hq.js → runtime-model-Dh0Nz64z.js} +0 -0
  154. /package/dist/src/chunks/{types-MZUhN0Zy.js → types-DDA2QUED.js} +0 -0
  155. /package/dist/src/compiled/_chunks/workflow/{chunk-DHhdAPOb.js → chunk-DSjMdhoD.js} +0 -0
@@ -1 +1 @@
1
- import{AISDKError as e,isJSONObject as t}from"../provider/index.js";import{Bi as n}from"../../_chunks/workflow/core-DOVmxHH8.js";import{At as r,Dt as i,En as a,Et as o,Nn as s,Rn as c,Tn as l,Tt as u,Xn as d,Zn as f,dn as p,fn as m,wn as h}from"../../_chunks/workflow/schemas-DFZoEyCn.js";import{n as ee}from"../../_chunks/workflow/compat-CIROS3w4.js";import{F as te,G as ne,H as re,O as ie,Q as g,S as _,U as ae,i as oe,n as se,q as v,y as ce}from"../../_chunks/workflow/dist-CpUQh3NH.js";let y;y=globalThis.crypto?.webcrypto??globalThis.crypto??import(`node:crypto`).then(e=>e.webcrypto);async function le(e){return(await y).getRandomValues(new Uint8Array(e))}async function ue(e){let t=``;for(;t.length<e;){let n=await le(e-t.length);for(let e of n)e<198&&(t+=`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~`[e%66])}return t}async function de(e){return await ue(e)}async function fe(e){let t=await(await y).subtle.digest(`SHA-256`,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(t))).replace(/\//g,`_`).replace(/\+/g,`-`).replace(/=/g,``)}async function pe(e){if(e||=43,e<43||e>128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await de(e);return{code_verifier:t,code_challenge:await fe(t)}}var me=`vercel.ai.error.AI_MCPClientError`,he=Symbol.for(me),ge,_e,b=class extends (_e=e,ge=he,_e){constructor({name:e=`MCPClientError`,message:t,cause:n,data:r,code:i}){super({name:e,message:t,cause:n}),this[ge]=!0,this.data=r,this.code=i}static isInstance(t){return e.hasMarker(t,me)}},x=`2025-11-25`,ve=[x,`2025-06-18`,`2025-03-26`,`2024-11-05`],ye=a(s(c(),f())),be=m({name:c(),version:c(),title:a(c())}),S=m({_meta:a(l({}).loose())}),C=S,w=l({method:c(),params:a(S)}),T=l({applyDefaults:a(r())}).loose(),xe=m({experimental:a(l({}).loose()),logging:a(l({}).loose()),prompts:a(m({listChanged:a(r())})),resources:a(m({subscribe:a(r()),listChanged:a(r())})),tools:a(m({listChanged:a(r())})),elicitation:a(T)});l({elicitation:a(T)}).loose();var Se=C.extend({protocolVersion:c(),capabilities:xe,serverInfo:be,instructions:a(c())}),E=C.extend({nextCursor:a(c())}),Ce=l({name:c(),title:a(c()),description:a(c()),inputSchema:l({type:p(`object`),properties:a(l({}).loose())}).loose(),outputSchema:a(l({}).loose()),annotations:a(l({title:a(c())}).loose()),_meta:ye}).loose(),we=E.extend({tools:o(Ce)}),D=l({type:p(`text`),text:c()}).loose(),O=l({type:p(`image`),data:i(),mimeType:c()}).loose(),Te=l({uri:c(),name:c(),title:a(c()),description:a(c()),mimeType:a(c()),size:a(h())}).loose(),Ee=E.extend({resources:o(Te)}),k=l({uri:c(),name:a(c()),title:a(c()),mimeType:a(c())}).loose(),A=k.extend({text:c()}),j=k.extend({blob:i()}),M=l({type:p(`resource`),resource:d([A,j])}).loose(),N=l({type:p(`resource_link`),uri:c(),name:c(),description:a(c()),mimeType:a(c())}).loose(),De=C.extend({content:o(d([D,O,M,N])),structuredContent:a(f()),isError:r().default(!1).optional()}).or(C.extend({toolResult:f()})),Oe=l({uriTemplate:c(),name:c(),title:a(c()),description:a(c()),mimeType:a(c())}).loose(),ke=C.extend({resourceTemplates:o(Oe)}),Ae=C.extend({contents:o(d([A,j]))}),je=l({name:c(),description:a(c()),required:a(r())}).loose(),Me=l({name:c(),title:a(c()),description:a(c()),arguments:a(o(je))}).loose(),Ne=E.extend({prompts:o(Me)}),Pe=l({role:d([p(`user`),p(`assistant`)]),content:d([D,O,M,N])}).loose(),Fe=C.extend({description:a(c()),messages:o(Pe)}),Ie=S.extend({message:c(),requestedSchema:f()}),P=w.extend({method:p(`elicitation/create`),params:Ie}),F=C.extend({action:d([p(`accept`),p(`decline`),p(`cancel`)]),content:a(s(c(),f()))}),I=`2.0`,Le=l({jsonrpc:p(I),id:d([c(),h().int()])}).merge(w).strict(),Re=l({jsonrpc:p(I),id:d([c(),h().int()]),result:C}).strict(),ze=l({jsonrpc:p(I),id:d([c(),h().int()]),error:l({code:h().int(),message:c(),data:a(f())})}).strict(),L=d([Le,l({jsonrpc:p(I)}).merge(l({method:c(),params:a(S)})).strict(),Re,ze]);async function R(e){return L.parse(await te({text:e}))}var Be=typeof __PACKAGE_VERSION__<`u`?__PACKAGE_VERSION__:`0.0.0-test`,Ve=l({access_token:c(),id_token:c().optional(),token_type:c(),expires_in:h().optional(),scope:c().optional(),refresh_token:c().optional()}).strip(),z=c().url().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:ee.custom,message:`URL must be parseable`,fatal:!0}),n}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),He=l({resource:c().url(),authorization_servers:o(z).optional(),jwks_uri:c().url().optional(),scopes_supported:o(c()).optional(),bearer_methods_supported:o(c()).optional(),resource_signing_alg_values_supported:o(c()).optional(),resource_name:c().optional(),resource_documentation:c().optional(),resource_policy_uri:c().url().optional(),resource_tos_uri:c().url().optional(),tls_client_certificate_bound_access_tokens:r().optional(),authorization_details_types_supported:o(c()).optional(),dpop_signing_alg_values_supported:o(c()).optional(),dpop_bound_access_tokens_required:r().optional()}).passthrough(),Ue=l({issuer:c(),authorization_endpoint:z,token_endpoint:z,registration_endpoint:z.optional(),scopes_supported:o(c()).optional(),response_types_supported:o(c()),grant_types_supported:o(c()).optional(),code_challenge_methods_supported:o(c()),token_endpoint_auth_methods_supported:o(c()).optional(),token_endpoint_auth_signing_alg_values_supported:o(c()).optional()}).passthrough(),We=l({issuer:c(),authorization_endpoint:z,token_endpoint:z,userinfo_endpoint:z.optional(),jwks_uri:z,registration_endpoint:z.optional(),scopes_supported:o(c()).optional(),response_types_supported:o(c()),grant_types_supported:o(c()).optional(),subject_types_supported:o(c()),id_token_signing_alg_values_supported:o(c()),claims_supported:o(c()).optional(),token_endpoint_auth_methods_supported:o(c()).optional()}).passthrough().merge(Ue.pick({code_challenge_methods_supported:!0})),Ge=l({client_id:c(),client_secret:c().optional(),client_id_issued_at:h().optional(),client_secret_expires_at:h().optional()}).strip(),Ke=l({redirect_uris:o(z),token_endpoint_auth_method:c().optional(),grant_types:o(c()).optional(),response_types:o(c()).optional(),client_name:c().optional(),client_uri:z.optional(),logo_uri:z.optional(),scope:c().optional(),contacts:o(c()).optional(),tos_uri:z.optional(),policy_uri:c().optional(),jwks_uri:z.optional(),jwks:u().optional(),software_id:c().optional(),software_version:c().optional(),software_statement:c().optional()}).strip(),qe=l({error:c(),error_description:c().optional(),error_uri:c().optional()}),Je=Ke.merge(Ge),Ye=`vercel.ai.error.AI_MCPClientOAuthError`,Xe=Symbol.for(Ye),Ze,Qe,B=class extends (Qe=e,Ze=Xe,Qe){constructor({name:e=`MCPClientOAuthError`,message:t,cause:n}){super({name:e,message:t,cause:n}),this[Ze]=!0}static isInstance(t){return e.hasMarker(t,Ye)}},V=class extends B{};V.errorCode=`server_error`;var H=class extends B{};H.errorCode=`invalid_client`;var U=class extends B{};U.errorCode=`invalid_grant`;var W=class extends B{};W.errorCode=`unauthorized_client`;var $e={[V.errorCode]:V,[H.errorCode]:H,[U.errorCode]:U,[W.errorCode]:W};function et(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function G(e){let t=e.href;return e.pathname===`/`&&t.endsWith(`/`)?t.slice(0,-1):t}function tt({requestedResource:e,configuredResource:t}){let n=typeof e==`string`?new URL(e):new URL(e.href),r=typeof t==`string`?new URL(t):new URL(t.href);if(n.origin!==r.origin||n.pathname.length<r.pathname.length)return!1;let i=n.pathname.endsWith(`/`)?n.pathname:n.pathname+`/`,a=r.pathname.endsWith(`/`)?r.pathname:r.pathname+`/`;return i.startsWith(a)}var K=class extends Error{constructor(e=`Unauthorized`){super(e),this.name=`UnauthorizedError`}};function q(e){let t=e.headers.get(`www-authenticate`)??e.headers.get(`WWW-Authenticate`);if(!t)return;let[n,r]=t.split(` `);if(n.toLowerCase()!==`bearer`||!r)return;let i=t.match(/resource_metadata="([^"]*)"/);if(i)try{return new URL(i[1])}catch{return}}function nt(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function J(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(r instanceof TypeError)return t?J(e,void 0,n):void 0;throw r}}async function rt(e,t,n=fetch){return await J(e,{"MCP-Protocol-Version":t},n)}function it(e,t){return!e||e.status>=400&&e.status<500&&t!==`/`}async function at(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??x,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=nt(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await rt(o,a,n);return!r?.metadataUrl&&it(s,i.pathname)&&(s=await rt(new URL(`/.well-known/${t}`,i),a,n)),s}async function ot(e,t,n=fetch){let r=await at(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return He.parse(await r.json())}function st(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`}),r.push({url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function ct(e,{fetchFn:t=fetch,protocolVersion:n=x}={}){let r={"MCP-Protocol-Version":n},i=st(e);for(let{url:e,type:n}of i){let i=await J(e,r,t);if(i){if(!i.ok){if(i.status>=400&&i.status<500)continue;throw Error(`HTTP ${i.status} trying to load ${n===`oauth`?`OAuth`:`OpenID provider`} metadata from ${e}`)}if(n===`oauth`)return Ue.parse(await i.json());{let t=We.parse(await i.json());if(!t.code_challenge_methods_supported?.includes(`S256`))throw Error(`Incompatible OIDC provider at ${e}: does not support S256 code challenge method required by MCP specification`);return t}}}}async function lt(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s=`code`,c=`S256`,l;if(t){if(l=new URL(t.authorization_endpoint),!t.response_types_supported.includes(s))throw Error(`Incompatible auth server: does not support response type ${s}`);if(!t.code_challenge_methods_supported||!t.code_challenge_methods_supported.includes(c))throw Error(`Incompatible auth server: does not support code challenge method ${c}`)}else l=new URL(`/authorize`,e);let u=await pe(),d=u.code_verifier,f=u.code_challenge;return l.searchParams.set(`response_type`,s),l.searchParams.set(`client_id`,n.client_id),l.searchParams.set(`code_challenge`,f),l.searchParams.set(`code_challenge_method`,c),l.searchParams.set(`redirect_uri`,String(r)),a&&l.searchParams.set(`state`,a),i&&l.searchParams.set(`scope`,i),i?.includes(`offline_access`)&&l.searchParams.append(`prompt`,`consent`),o&&l.searchParams.set(`resource`,G(o)),{authorizationUrl:l,codeVerifier:d}}function ut(e,t){let n=e.client_secret!==void 0;return t.length===0?n?`client_secret_post`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function dt(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:ft(i,a,n);return;case`client_secret_post`:pt(i,a,r);return;case`none`:mt(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function ft(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function pt(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function mt(e,t){t.set(`client_id`,e)}async function Y(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let{error:e,error_description:t,error_uri:r}=qe.parse(await te({text:n}));return new($e[e]||V)({message:t||``,cause:r})}catch(e){return new V({message:`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`})}}async function ht(e,{metadata:t,clientInformation:n,authorizationCode:r,codeVerifier:i,redirectUri:a,resource:o,addClientAuthentication:s,fetchFn:c}){let l=`authorization_code`,u=t?.token_endpoint?new URL(t.token_endpoint):new URL(`/token`,e);if(t?.grant_types_supported&&!t.grant_types_supported.includes(l))throw Error(`Incompatible auth server: does not support grant type ${l}`);let d=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`}),f=new URLSearchParams({grant_type:l,code:r,code_verifier:i,redirect_uri:String(a)});s?s(d,f,e,t):dt(ut(n,t?.token_endpoint_auth_methods_supported??[]),n,d,f),o&&f.set(`resource`,G(o));let p=await(c??fetch)(u,{method:`POST`,headers:d,body:f});if(!p.ok)throw await Y(p);return Ve.parse(await p.json())}async function gt(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){let s=`refresh_token`,c;if(t){if(c=new URL(t.token_endpoint),t.grant_types_supported&&!t.grant_types_supported.includes(s))throw Error(`Incompatible auth server: does not support grant type ${s}`)}else c=new URL(`/token`,e);let l=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`}),u=new URLSearchParams({grant_type:s,refresh_token:r});a?a(l,u,e,t):dt(ut(n,t?.token_endpoint_auth_methods_supported??[]),n,l,u),i&&u.set(`resource`,G(i));let d=await(o??fetch)(c,{method:`POST`,headers:l,body:u});if(!d.ok)throw await Y(d);return Ve.parse({refresh_token:r,...await d.json()})}async function _t(e,{metadata:t,clientMetadata:n,fetchFn:r}){let i;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);i=new URL(t.registration_endpoint)}else i=new URL(`/register`,e);let a=await(r??fetch)(i,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});if(!a.ok)throw await Y(a);return Je.parse(await a.json())}async function X(e,t){try{return await Z(e,t)}catch(n){if(n instanceof H||n instanceof W)return await e.invalidateCredentials?.call(e,`all`),await Z(e,t);if(n instanceof U)return await e.invalidateCredentials?.call(e,`tokens`),await Z(e,t);throw n}}async function vt(e,t,n){let r=et(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!tt({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}async function Z(e,{serverUrl:t,authorizationCode:n,callbackState:r,scope:i,resourceMetadataUrl:a,fetchFn:o}){let s,c;try{s=await ot(t,{resourceMetadataUrl:a},o),s.authorization_servers&&s.authorization_servers.length>0&&(c=s.authorization_servers[0])}catch{}c||=t;let l=await vt(t,e,s),u=await ct(c,{fetchFn:o}),d=await Promise.resolve(e.clientInformation());if(!d){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);let t=await _t(c,{metadata:u,clientMetadata:e.clientMetadata,fetchFn:o});await e.saveClientInformation(t),d=t}if(n!==void 0){if(e.storedState){let t=await e.storedState();if(t!==void 0&&t!==r)throw Error(`OAuth state parameter mismatch - possible CSRF attack`)}let t=await e.codeVerifier(),i=await ht(c,{metadata:u,clientInformation:d,authorizationCode:n,codeVerifier:t,redirectUri:e.redirectUrl,resource:l,addClientAuthentication:e.addClientAuthentication,fetchFn:o});return await e.saveTokens(i),`AUTHORIZED`}let f=await e.tokens();if(f?.refresh_token)try{let t=await gt(c,{metadata:u,clientInformation:d,refreshToken:f.refresh_token,resource:l,addClientAuthentication:e.addClientAuthentication,fetchFn:o});return await e.saveTokens(t),`AUTHORIZED`}catch(e){if(!(!(e instanceof B)||e instanceof V))throw e}let p=e.state?await e.state():void 0;p&&e.saveState&&await e.saveState(p);let{authorizationUrl:m,codeVerifier:h}=await lt(c,{metadata:u,clientInformation:d,state:p,redirectUrl:e.redirectUrl,scope:i||e.clientMetadata.scope,resource:l});return await e.saveCodeVerifier(h),await e.redirectToAuthorization(m),`REDIRECT`}var yt=class{constructor({url:e,headers:t,authProvider:n,redirect:r=`error`,fetch:i}){this.connected=!1,this.url=new URL(e),this.headers=t,this.authProvider=n,this.redirectMode=r,this.fetchFn=i??globalThis.fetch}async commonHeaders(e){let t={...this.headers,...e,"mcp-protocol-version":this.protocolVersion??x};if(this.authProvider){let e=await this.authProvider.tokens();e?.access_token&&(t.Authorization=`Bearer ${e.access_token}`)}return v(t,`ai-sdk/${Be}`,_())}async start(){return new Promise((e,t)=>{if(this.connected)return e();this.abortController=new AbortController;let n=async(r=!1)=>{var i,a,o,s;try{let s=await this.commonHeaders({Accept:`text/event-stream`}),c=await this.fetchFn(this.url.href,{headers:s,signal:this.abortController?.signal,redirect:this.redirectMode});if(c.status===401&&this.authProvider&&!r){this.resourceMetadataUrl=q(c);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`){let e=new K;return(i=this.onerror)==null||i.call(this,e),t(e)}}catch(e){return(a=this.onerror)==null||a.call(this,e),t(e)}return n(!0)}if(!c.ok||!c.body){let e=`MCP SSE Transport Error: ${c.status} ${c.statusText}`;c.status===405&&(e+=". This server does not support SSE transport. Try using `http` transport instead");let n=new b({message:e});return(o=this.onerror)==null||o.call(this,n),t(n)}let l=c.body.pipeThrough(new TextDecoderStream).pipeThrough(new g).getReader(),u=async()=>{var n,r,i;try{for(;;){let{done:t,value:i}=await l.read();if(t){if(this.connected)throw this.connected=!1,new b({message:`MCP SSE Transport Error: Connection closed unexpectedly`});return}let{event:a,data:o}=i;if(a===`endpoint`){if(this.endpoint=new URL(o,this.url),this.endpoint.origin!==this.url.origin)throw new b({message:`MCP SSE Transport Error: Endpoint origin does not match connection origin: ${this.endpoint.origin}`});this.connected=!0,e()}else if(a===`message`)try{let e=await R(o);(n=this.onmessage)==null||n.call(this,e)}catch(e){let t=new b({message:`MCP SSE Transport Error: Failed to parse message`,cause:e});(r=this.onerror)==null||r.call(this,t)}}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(i=this.onerror)==null||i.call(this,e),t(e)}};this.sseConnection={close:()=>l.cancel()},u()}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(s=this.onerror)==null||s.call(this,e),t(e)}};n()})}async close(){var e,t,n;this.connected=!1,(e=this.sseConnection)==null||e.close(),(t=this.abortController)==null||t.abort(),(n=this.onclose)==null||n.call(this)}async send(e){if(!this.endpoint||!this.connected)throw new b({message:`MCP SSE Transport Error: Not connected`});let t=this.endpoint,n=async(r=!1)=>{var i,a,o,s;try{let s={method:`POST`,headers:await this.commonHeaders({"Content-Type":`application/json`}),body:JSON.stringify(e),signal:this.abortController?.signal,redirect:this.redirectMode},c=await this.fetchFn(t.href,s);if(c.status===401&&this.authProvider&&!r){this.resourceMetadataUrl=q(c);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`){let e=new K;(i=this.onerror)==null||i.call(this,e);return}}catch(e){(a=this.onerror)==null||a.call(this,e);return}return n(!0)}if(!c.ok){let e=await c.text().catch(()=>null),t=new b({message:`MCP SSE Transport Error: POSTing to endpoint (HTTP ${c.status}): ${e}`});(o=this.onerror)==null||o.call(this,t);return}}catch(e){(s=this.onerror)==null||s.call(this,e);return}};await n()}},bt=class{constructor({url:e,headers:t,authProvider:n,redirect:r=`error`,fetch:i}){this.inboundReconnectAttempts=0,this.reconnectionOptions={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},this.url=new URL(e),this.headers=t,this.authProvider=n,this.redirectMode=r,this.fetchFn=i??globalThis.fetch}async commonHeaders(e){let t={...this.headers,...e,"mcp-protocol-version":this.protocolVersion??x};if(this.sessionId&&(t[`mcp-session-id`]=this.sessionId),this.authProvider){let e=await this.authProvider.tokens();e?.access_token&&(t.Authorization=`Bearer ${e.access_token}`)}return v(t,`ai-sdk/${Be}`,_())}async start(){if(this.abortController)throw new b({message:`MCP HTTP Transport Error: Transport already started. Note: client.connect() calls start() automatically.`});this.abortController=new AbortController,this.openInboundSse()}async close(){var e,t,n;(e=this.inboundSseConnection)==null||e.close();try{if(this.sessionId&&this.abortController&&!this.abortController.signal.aborted){let e=await this.commonHeaders({});await this.fetchFn(this.url.href,{method:`DELETE`,headers:e,signal:this.abortController.signal,redirect:this.redirectMode}).catch(()=>void 0)}}catch{}(t=this.abortController)==null||t.abort(),(n=this.onclose)==null||n.call(this)}async send(e){let t=async(n=!1)=>{var r,i,a,o,s,c;try{let c={method:`POST`,headers:await this.commonHeaders({"Content-Type":`application/json`,Accept:`application/json, text/event-stream`}),body:JSON.stringify(e),signal:this.abortController?.signal,redirect:this.redirectMode},l=await this.fetchFn(this.url.href,c),u=l.headers.get(`mcp-session-id`);if(u&&(this.sessionId=u),l.status===401&&this.authProvider&&!n){this.resourceMetadataUrl=q(l);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`)throw new K}catch(e){throw(r=this.onerror)==null||r.call(this,e),e}return t(!0)}if(l.status===202){this.inboundSseConnection||this.openInboundSse();return}if(!l.ok){let e=await l.text().catch(()=>null),t=`MCP HTTP Transport Error: POSTing to endpoint (HTTP ${l.status}): ${e}`;l.status===404&&(t+=". This server does not support HTTP transport. Try using `sse` transport instead");let n=new b({message:t});throw(i=this.onerror)==null||i.call(this,n),n}if(!(`id`in e))return;let d=l.headers.get(`content-type`)||``;if(d.includes(`application/json`)){let e=await l.json(),t=Array.isArray(e)?e.map(e=>L.parse(e)):[L.parse(e)];for(let e of t)(a=this.onmessage)==null||a.call(this,e);return}if(d.includes(`text/event-stream`)){if(!l.body){let e=new b({message:`MCP HTTP Transport Error: text/event-stream response without body`});throw(o=this.onerror)==null||o.call(this,e),e}let e=l.body.pipeThrough(new TextDecoderStream).pipeThrough(new g).getReader();(async()=>{var t,n,r;try{for(;;){let{done:r,value:i}=await e.read();if(r)return;let{event:a,data:o}=i;if(a===`message`)try{let e=await R(o);(t=this.onmessage)==null||t.call(this,e)}catch(e){let t=new b({message:`MCP HTTP Transport Error: Failed to parse message`,cause:e});(n=this.onerror)==null||n.call(this,t)}}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(r=this.onerror)==null||r.call(this,e)}})();return}let f=new b({message:`MCP HTTP Transport Error: Unexpected content type: ${d}`});throw(s=this.onerror)==null||s.call(this,f),f}catch(e){throw(c=this.onerror)==null||c.call(this,e),e}};await t()}getNextReconnectionDelay(e){let{initialReconnectionDelay:t,reconnectionDelayGrowFactor:n,maxReconnectionDelay:r}=this.reconnectionOptions;return Math.min(t*n**+e,r)}scheduleInboundSseReconnection(){var e;let{maxRetries:t}=this.reconnectionOptions;if(t>0&&this.inboundReconnectAttempts>=t){(e=this.onerror)==null||e.call(this,new b({message:`MCP HTTP Transport Error: Maximum reconnection attempts (${t}) exceeded.`}));return}let n=this.getNextReconnectionDelay(this.inboundReconnectAttempts);this.inboundReconnectAttempts+=1,setTimeout(async()=>{this.abortController?.signal.aborted||await this.openInboundSse(!1,this.lastInboundEventId)},n)}async openInboundSse(e=!1,t){var n,r,i,a;try{let a=await this.commonHeaders({Accept:`text/event-stream`});t&&(a[`last-event-id`]=t);let o=await this.fetchFn(this.url.href,{method:`GET`,headers:a,signal:this.abortController?.signal,redirect:this.redirectMode}),s=o.headers.get(`mcp-session-id`);if(s&&(this.sessionId=s),o.status===401&&this.authProvider&&!e){this.resourceMetadataUrl=q(o);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`){let e=new K;(n=this.onerror)==null||n.call(this,e);return}}catch(e){(r=this.onerror)==null||r.call(this,e);return}return this.openInboundSse(!0,t)}if(o.status===405)return;if(!o.ok||!o.body){let e=new b({message:`MCP HTTP Transport Error: GET SSE failed: ${o.status} ${o.statusText}`});(i=this.onerror)==null||i.call(this,e);return}let c=o.body.pipeThrough(new TextDecoderStream).pipeThrough(new g).getReader(),l=async()=>{var e,t,n;try{for(;;){let{done:n,value:r}=await c.read();if(n)return;let{event:i,data:a,id:o}=r;if(o&&(this.lastInboundEventId=o),i===`message`)try{let t=await R(a);(e=this.onmessage)==null||e.call(this,t)}catch(e){let n=new b({message:`MCP HTTP Transport Error: Failed to parse message`,cause:e});(t=this.onerror)==null||t.call(this,n)}}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(n=this.onerror)==null||n.call(this,e),this.abortController?.signal.aborted||this.scheduleInboundSseReconnection()}};this.inboundSseConnection={close:()=>c.cancel()},this.inboundReconnectAttempts=0,l()}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(a=this.onerror)==null||a.call(this,e),this.abortController?.signal.aborted||this.scheduleInboundSseReconnection()}}};function xt(e){switch(e.type){case`sse`:return new yt(e);case`http`:return new bt(e);default:throw new b({message:`Unsupported or invalid transport configuration. If you are using a custom transport, make sure it implements the MCPTransport interface.`})}}function St(e){return`start`in e&&typeof e.start==`function`&&`send`in e&&typeof e.send==`function`&&`close`in e&&typeof e.close==`function`}var Ct=`io.modelcontextprotocol/ui`,Q=`text/html;profile=mcp-app`,wt=`ui/resourceUri`,Tt={extensions:{[Ct]:{mimeTypes:[Q]}}};function Et(e){let n=e?.ui;return t(n)?n:void 0}function Dt(e){let n=(t(e)?e:void 0)?.ui;return t(n)?n:void 0}function Ot(e){return Array.isArray(e)?e.filter(e=>e===`model`||e===`app`):void 0}function kt(e){let t=Et(e._meta),n=t?.resourceUri??e._meta?.[wt],r=Ot(t?.visibility);if(n!==void 0){if(typeof n!=`string`||!n.startsWith(`ui://`))throw Error(`Invalid MCP App resource URI: ${JSON.stringify(n)}`)}else if(t==null)return;return{...t,...n==null?{}:{resourceUri:n},...r==null?{}:{visibility:r}}}function At(e){let t=[],n=[];for(let r of e.tools){let e=kt(r)?.visibility;(e==null||e.includes(`model`))&&t.push(r),e?.includes(`app`)===!0&&n.push(r)}return{modelVisible:{...e,tools:t},appVisible:{...e,tools:n}}}function jt({uri:e,resource:t}){let n=t.contents.find(t=>t.uri===e);if(n==null)throw Error(`MCP App resource not found in read result: ${e}`);if(n.mimeType!==`text/html;profile=mcp-app`)throw Error(`Unsupported MCP App resource MIME type: ${n.mimeType}`);let r=`text`in n&&typeof n.text==`string`?n.text:`blob`in n&&typeof n.blob==`string`?new TextDecoder().decode(oe(n.blob)):void 0;if(r==null)throw Error(`Unsupported MCP App resource content format: ${e}`);return{uri:e,mimeType:Q,html:r,meta:Dt(n._meta)}}async function Mt({client:e,uri:t,options:n}){if(!t.startsWith(`ui://`))throw Error(`Unsupported MCP App resource URI: ${t}`);return jt({uri:t,resource:await e.readResource({uri:t,options:n})})}var Nt=`1.0.0`;function Pt({output:e}){let t=e;return!(`content`in t)||!Array.isArray(t.content)?{type:`json`,value:t}:{type:`content`,value:t.content.map(e=>e.type===`text`&&`text`in e?{type:`text`,text:e.text}:e.type===`image`&&`data`in e&&`mimeType`in e?{type:`file`,mediaType:e.mimeType,data:{type:`data`,data:e.data}}:{type:`text`,text:JSON.stringify(e)})}}async function $(e){let t=new Ft(e);return await t.init(),t}var Ft=class{constructor({transport:e,name:t,clientName:n=t??`ai-sdk-mcp-client`,version:r=Nt,onUncaughtError:i,capabilities:a}){this.requestMessageId=0,this.responseHandlers=new Map,this.serverCapabilities={},this._serverInfo={name:``,version:``},this.isClosed=!0,this.onUncaughtError=i,this.clientCapabilities=a??{},St(e)?this.transport=e:this.transport=xt(e),this.transport.onclose=()=>this.onClose(),this.transport.onerror=e=>this.onError(e),this.transport.onmessage=e=>{if(`method`in e){`id`in e?this.onRequestMessage(e):this.onError(new b({message:`Unsupported message type`}));return}this.onResponse(e)},this.clientInfo={name:n,version:r}}get serverInfo(){return this._serverInfo}get instructions(){return this._serverInstructions}async init(){try{await this.transport.start(),this.isClosed=!1;let e=await this.request({request:{method:`initialize`,params:{protocolVersion:x,capabilities:this.clientCapabilities,clientInfo:this.clientInfo}},resultSchema:Se});if(e===void 0)throw new b({message:`Server sent invalid initialize result`});if(!ve.includes(e.protocolVersion))throw new b({message:`Server's protocol version is not supported: ${e.protocolVersion}`});return this.serverCapabilities=e.capabilities,this._serverInfo=e.serverInfo,this.transport.protocolVersion=e.protocolVersion,this._serverInstructions=e.instructions,await this.notification({method:`notifications/initialized`}),this}catch(e){throw await this.close(),e}}async close(){this.isClosed||(await this.transport?.close(),this.onClose())}assertCapability(e){switch(e){case`initialize`:break;case`tools/list`:case`tools/call`:if(!this.serverCapabilities.tools)throw new b({message:`Server does not support tools`});break;case`resources/list`:case`resources/read`:case`resources/templates/list`:if(!this.serverCapabilities.resources)throw new b({message:`Server does not support resources`});break;case`prompts/list`:case`prompts/get`:if(!this.serverCapabilities.prompts)throw new b({message:`Server does not support prompts`});break;default:throw new b({message:`Unsupported method: ${e}`})}}async request({request:e,resultSchema:t,options:n}){return new Promise((r,i)=>{if(this.isClosed)return i(new b({message:`Attempted to send a request from a closed client`}));this.assertCapability(e.method);let a=n?.signal;a?.throwIfAborted();let o=this.requestMessageId++,s={...e,jsonrpc:`2.0`,id:o},c=()=>{this.responseHandlers.delete(o)};this.responseHandlers.set(o,e=>{if(a?.aborted)return i(new b({message:`Request was aborted`,cause:a.reason}));if(e instanceof Error)return i(e);try{r(t.parse(e.result))}catch(e){i(new b({message:`Failed to parse server response`,cause:e}))}}),this.transport.send(s).catch(e=>{c(),i(e)})})}async listTools({params:e,options:t}={}){return this.request({request:{method:`tools/list`,params:e},resultSchema:we,options:t})}async callTool({name:e,arguments:t={},options:n}){try{return this.request({request:{method:`tools/call`,params:{name:e,arguments:t}},resultSchema:De,options:n})}catch(e){throw e}}async listResourcesInternal({params:e,options:t}={}){try{return this.request({request:{method:`resources/list`,params:e},resultSchema:Ee,options:t})}catch(e){throw e}}async readResourceInternal({uri:e,options:t}){try{return this.request({request:{method:`resources/read`,params:{uri:e}},resultSchema:Ae,options:t})}catch(e){throw e}}async listResourceTemplatesInternal({options:e}={}){try{return this.request({request:{method:`resources/templates/list`},resultSchema:ke,options:e})}catch(e){throw e}}async listPromptsInternal({params:e,options:t}={}){try{return this.request({request:{method:`prompts/list`,params:e},resultSchema:Ne,options:t})}catch(e){throw e}}async getPromptInternal({name:e,args:t,options:n}){try{return this.request({request:{method:`prompts/get`,params:{name:e,arguments:t}},resultSchema:Fe,options:n})}catch(e){throw e}}async notification(e){let t={...e,jsonrpc:`2.0`};await this.transport.send(t)}async tools({schemas:e=`automatic`}={}){let t=await this.listTools();return this.toolsFromDefinitions(t,{schemas:e})}toolsFromDefinitions(e,{schemas:t=`automatic`}={}){let n={};for(let{name:r,title:i,description:a,inputSchema:o,annotations:s,_meta:c}of e.tools){let e=i??s?.title;if(t!==`automatic`&&!(r in t))continue;let l=this,u=t===`automatic`?void 0:t[r]?.outputSchema,d=kt({_meta:c}),f={clientName:this.clientInfo.name,toolName:r,...e==null?{}:{title:e},...d?.resourceUri==null?{}:{app:{...d,mimeType:Q}}},p=async(e,t)=>{var n;(n=t?.abortSignal)==null||n.throwIfAborted();let i=await l.callTool({name:r,arguments:e,options:{signal:t?.abortSignal}});return i.isError||u==null?i:l.extractStructuredContent(i,u,r)};n[r]={...t===`automatic`?ce({description:a,title:e,metadata:f,inputSchema:ie({...o,properties:o.properties??{},additionalProperties:!1}),execute:p,toModelOutput:Pt}):ne({description:a,title:e,metadata:f,inputSchema:t[r].inputSchema,...u==null?{}:{outputSchema:u},execute:p,toModelOutput:Pt}),_meta:c}}return n}async extractStructuredContent(e,t,n){if(`structuredContent`in e&&e.structuredContent!=null){let r=await ae({value:e.structuredContent,schema:se(t)});if(!r.success)throw new b({message:`Tool "${n}" returned structuredContent that does not match the expected outputSchema`,cause:r.error});return r.value}if(`content`in e&&Array.isArray(e.content)){let r=e.content.find(e=>e.type===`text`);if(r&&`text`in r){let e=await re({text:r.text,schema:t});if(!e.success)throw new b({message:`Tool "${n}" returned content that does not match the expected outputSchema`,cause:e.error});return e.value}}throw new b({message:`Tool "${n}" did not return structuredContent or parseable text content`})}listResources({params:e,options:t}={}){return this.listResourcesInternal({params:e,options:t})}readResource({uri:e,options:t}){return this.readResourceInternal({uri:e,options:t})}listResourceTemplates({options:e}={}){return this.listResourceTemplatesInternal({options:e})}experimental_listPrompts({params:e,options:t}={}){return this.listPromptsInternal({params:e,options:t})}experimental_getPrompt({name:e,arguments:t,options:n}){return this.getPromptInternal({name:e,args:t,options:n})}onElicitationRequest(e,t){if(e!==P)throw new b({message:`Unsupported request schema. Only ElicitationRequestSchema is supported.`});this.elicitationRequestHandler=t}async onRequestMessage(e){try{if(e.method!==`elicitation/create`){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32601,message:`Unsupported request method: ${e.method}`}});return}if(!this.elicitationRequestHandler){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32601,message:`No elicitation handler registered on client`}});return}let t=P.safeParse({method:e.method,params:e.params});if(!t.success){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32602,message:`Invalid elicitation request: ${t.error.message}`,data:t.error.issues}});return}try{let n=await this.elicitationRequestHandler(t.data),r=F.parse(n);await this.transport.send({jsonrpc:`2.0`,id:e.id,result:r})}catch(t){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32603,message:t instanceof Error?t.message:`Failed to handle elicitation request`}}),this.onError(t)}}catch(e){this.onError(e)}}onClose(){if(this.isClosed)return;this.isClosed=!0;let e=new b({message:`Connection closed`});for(let t of this.responseHandlers.values())t(e);this.responseHandlers.clear()}onError(e){this.onUncaughtError&&this.onUncaughtError(e)}onResponse(e){let t=Number(e.id),n=this.responseHandlers.get(t);if(n===void 0)throw new b({message:`Protocol error: Received a response for an unknown message ID: ${JSON.stringify(e)}`});this.responseHandlers.delete(t),n(`result`in e?e:new b({message:e.error.message,code:e.error.code,data:e.error.data,cause:e.error}))}};export{F as ElicitResultSchema,P as ElicitationRequestSchema,Q as MCP_APP_MIME_TYPE,K as UnauthorizedError,X as auth,$ as createMCPClient,$ as experimental_createMCPClient,Tt as mcpAppClientCapabilities,Mt as readMCPAppResource,At as splitMCPAppTools};
1
+ import{AISDKError as e,isJSONObject as t}from"../provider/index.js";import{Bi as n}from"../../_chunks/workflow/core-XWIi7wKc.js";import{At as r,Dt as i,En as a,Et as o,Nn as s,Rn as c,Tn as l,Tt as u,Xn as d,Zn as f,dn as p,fn as m,wn as h}from"../../_chunks/workflow/schemas-DmgDnhW3.js";import{n as ee}from"../../_chunks/workflow/compat-DcEvieoj.js";import{F as te,G as ne,H as re,O as ie,Q as g,S as _,U as ae,i as oe,n as se,q as v,y as ce}from"../../_chunks/workflow/dist-DZZY3Zyp.js";let y;y=globalThis.crypto?.webcrypto??globalThis.crypto??import(`node:crypto`).then(e=>e.webcrypto);async function le(e){return(await y).getRandomValues(new Uint8Array(e))}async function ue(e){let t=``;for(;t.length<e;){let n=await le(e-t.length);for(let e of n)e<198&&(t+=`abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~`[e%66])}return t}async function de(e){return await ue(e)}async function fe(e){let t=await(await y).subtle.digest(`SHA-256`,new TextEncoder().encode(e));return btoa(String.fromCharCode(...new Uint8Array(t))).replace(/\//g,`_`).replace(/\+/g,`-`).replace(/=/g,``)}async function pe(e){if(e||=43,e<43||e>128)throw`Expected a length between 43 and 128. Received ${e}.`;let t=await de(e);return{code_verifier:t,code_challenge:await fe(t)}}var me=`vercel.ai.error.AI_MCPClientError`,he=Symbol.for(me),ge,_e,b=class extends (_e=e,ge=he,_e){constructor({name:e=`MCPClientError`,message:t,cause:n,data:r,code:i}){super({name:e,message:t,cause:n}),this[ge]=!0,this.data=r,this.code=i}static isInstance(t){return e.hasMarker(t,me)}},x=`2025-11-25`,ve=[x,`2025-06-18`,`2025-03-26`,`2024-11-05`],ye=a(s(c(),f())),be=m({name:c(),version:c(),title:a(c())}),S=m({_meta:a(l({}).loose())}),C=S,w=l({method:c(),params:a(S)}),T=l({applyDefaults:a(r())}).loose(),xe=m({experimental:a(l({}).loose()),logging:a(l({}).loose()),prompts:a(m({listChanged:a(r())})),resources:a(m({subscribe:a(r()),listChanged:a(r())})),tools:a(m({listChanged:a(r())})),elicitation:a(T)});l({elicitation:a(T)}).loose();var Se=C.extend({protocolVersion:c(),capabilities:xe,serverInfo:be,instructions:a(c())}),E=C.extend({nextCursor:a(c())}),Ce=l({name:c(),title:a(c()),description:a(c()),inputSchema:l({type:p(`object`),properties:a(l({}).loose())}).loose(),outputSchema:a(l({}).loose()),annotations:a(l({title:a(c())}).loose()),_meta:ye}).loose(),we=E.extend({tools:o(Ce)}),D=l({type:p(`text`),text:c()}).loose(),O=l({type:p(`image`),data:i(),mimeType:c()}).loose(),Te=l({uri:c(),name:c(),title:a(c()),description:a(c()),mimeType:a(c()),size:a(h())}).loose(),Ee=E.extend({resources:o(Te)}),k=l({uri:c(),name:a(c()),title:a(c()),mimeType:a(c())}).loose(),A=k.extend({text:c()}),j=k.extend({blob:i()}),M=l({type:p(`resource`),resource:d([A,j])}).loose(),N=l({type:p(`resource_link`),uri:c(),name:c(),description:a(c()),mimeType:a(c())}).loose(),De=C.extend({content:o(d([D,O,M,N])),structuredContent:a(f()),isError:r().default(!1).optional()}).or(C.extend({toolResult:f()})),Oe=l({uriTemplate:c(),name:c(),title:a(c()),description:a(c()),mimeType:a(c())}).loose(),ke=C.extend({resourceTemplates:o(Oe)}),Ae=C.extend({contents:o(d([A,j]))}),je=l({name:c(),description:a(c()),required:a(r())}).loose(),Me=l({name:c(),title:a(c()),description:a(c()),arguments:a(o(je))}).loose(),Ne=E.extend({prompts:o(Me)}),Pe=l({role:d([p(`user`),p(`assistant`)]),content:d([D,O,M,N])}).loose(),Fe=C.extend({description:a(c()),messages:o(Pe)}),Ie=S.extend({message:c(),requestedSchema:f()}),P=w.extend({method:p(`elicitation/create`),params:Ie}),F=C.extend({action:d([p(`accept`),p(`decline`),p(`cancel`)]),content:a(s(c(),f()))}),I=`2.0`,Le=l({jsonrpc:p(I),id:d([c(),h().int()])}).merge(w).strict(),Re=l({jsonrpc:p(I),id:d([c(),h().int()]),result:C}).strict(),ze=l({jsonrpc:p(I),id:d([c(),h().int()]),error:l({code:h().int(),message:c(),data:a(f())})}).strict(),L=d([Le,l({jsonrpc:p(I)}).merge(l({method:c(),params:a(S)})).strict(),Re,ze]);async function R(e){return L.parse(await te({text:e}))}var Be=typeof __PACKAGE_VERSION__<`u`?__PACKAGE_VERSION__:`0.0.0-test`,Ve=l({access_token:c(),id_token:c().optional(),token_type:c(),expires_in:h().optional(),scope:c().optional(),refresh_token:c().optional()}).strip(),z=c().url().superRefine((e,t)=>{if(!URL.canParse(e))return t.addIssue({code:ee.custom,message:`URL must be parseable`,fatal:!0}),n}).refine(e=>{let t=new URL(e);return t.protocol!==`javascript:`&&t.protocol!==`data:`&&t.protocol!==`vbscript:`},{message:`URL cannot use javascript:, data:, or vbscript: scheme`}),He=l({resource:c().url(),authorization_servers:o(z).optional(),jwks_uri:c().url().optional(),scopes_supported:o(c()).optional(),bearer_methods_supported:o(c()).optional(),resource_signing_alg_values_supported:o(c()).optional(),resource_name:c().optional(),resource_documentation:c().optional(),resource_policy_uri:c().url().optional(),resource_tos_uri:c().url().optional(),tls_client_certificate_bound_access_tokens:r().optional(),authorization_details_types_supported:o(c()).optional(),dpop_signing_alg_values_supported:o(c()).optional(),dpop_bound_access_tokens_required:r().optional()}).passthrough(),Ue=l({issuer:c(),authorization_endpoint:z,token_endpoint:z,registration_endpoint:z.optional(),scopes_supported:o(c()).optional(),response_types_supported:o(c()),grant_types_supported:o(c()).optional(),code_challenge_methods_supported:o(c()),token_endpoint_auth_methods_supported:o(c()).optional(),token_endpoint_auth_signing_alg_values_supported:o(c()).optional()}).passthrough(),We=l({issuer:c(),authorization_endpoint:z,token_endpoint:z,userinfo_endpoint:z.optional(),jwks_uri:z,registration_endpoint:z.optional(),scopes_supported:o(c()).optional(),response_types_supported:o(c()),grant_types_supported:o(c()).optional(),subject_types_supported:o(c()),id_token_signing_alg_values_supported:o(c()),claims_supported:o(c()).optional(),token_endpoint_auth_methods_supported:o(c()).optional()}).passthrough().merge(Ue.pick({code_challenge_methods_supported:!0})),Ge=l({client_id:c(),client_secret:c().optional(),client_id_issued_at:h().optional(),client_secret_expires_at:h().optional()}).strip(),Ke=l({redirect_uris:o(z),token_endpoint_auth_method:c().optional(),grant_types:o(c()).optional(),response_types:o(c()).optional(),client_name:c().optional(),client_uri:z.optional(),logo_uri:z.optional(),scope:c().optional(),contacts:o(c()).optional(),tos_uri:z.optional(),policy_uri:c().optional(),jwks_uri:z.optional(),jwks:u().optional(),software_id:c().optional(),software_version:c().optional(),software_statement:c().optional()}).strip(),qe=l({error:c(),error_description:c().optional(),error_uri:c().optional()}),Je=Ke.merge(Ge),Ye=`vercel.ai.error.AI_MCPClientOAuthError`,Xe=Symbol.for(Ye),Ze,Qe,B=class extends (Qe=e,Ze=Xe,Qe){constructor({name:e=`MCPClientOAuthError`,message:t,cause:n}){super({name:e,message:t,cause:n}),this[Ze]=!0}static isInstance(t){return e.hasMarker(t,Ye)}},V=class extends B{};V.errorCode=`server_error`;var H=class extends B{};H.errorCode=`invalid_client`;var U=class extends B{};U.errorCode=`invalid_grant`;var W=class extends B{};W.errorCode=`unauthorized_client`;var $e={[V.errorCode]:V,[H.errorCode]:H,[U.errorCode]:U,[W.errorCode]:W};function et(e){let t=typeof e==`string`?new URL(e):new URL(e.href);return t.hash=``,t}function G(e){let t=e.href;return e.pathname===`/`&&t.endsWith(`/`)?t.slice(0,-1):t}function tt({requestedResource:e,configuredResource:t}){let n=typeof e==`string`?new URL(e):new URL(e.href),r=typeof t==`string`?new URL(t):new URL(t.href);if(n.origin!==r.origin||n.pathname.length<r.pathname.length)return!1;let i=n.pathname.endsWith(`/`)?n.pathname:n.pathname+`/`,a=r.pathname.endsWith(`/`)?r.pathname:r.pathname+`/`;return i.startsWith(a)}var K=class extends Error{constructor(e=`Unauthorized`){super(e),this.name=`UnauthorizedError`}};function q(e){let t=e.headers.get(`www-authenticate`)??e.headers.get(`WWW-Authenticate`);if(!t)return;let[n,r]=t.split(` `);if(n.toLowerCase()!==`bearer`||!r)return;let i=t.match(/resource_metadata="([^"]*)"/);if(i)try{return new URL(i[1])}catch{return}}function nt(e,t=``,n={}){return t.endsWith(`/`)&&(t=t.slice(0,-1)),n.prependPathname?`${t}/.well-known/${e}`:`/.well-known/${e}${t}`}async function J(e,t,n=fetch){try{return await n(e,{headers:t})}catch(r){if(r instanceof TypeError)return t?J(e,void 0,n):void 0;throw r}}async function rt(e,t,n=fetch){return await J(e,{"MCP-Protocol-Version":t},n)}function it(e,t){return!e||e.status>=400&&e.status<500&&t!==`/`}async function at(e,t,n,r){let i=new URL(e),a=r?.protocolVersion??x,o;if(r?.metadataUrl)o=new URL(r.metadataUrl);else{let e=nt(t,i.pathname);o=new URL(e,r?.metadataServerUrl??i),o.search=i.search}let s=await rt(o,a,n);return!r?.metadataUrl&&it(s,i.pathname)&&(s=await rt(new URL(`/.well-known/${t}`,i),a,n)),s}async function ot(e,t,n=fetch){let r=await at(e,`oauth-protected-resource`,n,{protocolVersion:t?.protocolVersion,metadataUrl:t?.resourceMetadataUrl});if(!r||r.status===404)throw Error(`Resource server does not implement OAuth 2.0 Protected Resource Metadata.`);if(!r.ok)throw Error(`HTTP ${r.status} trying to load well-known OAuth protected resource metadata.`);return He.parse(await r.json())}function st(e){let t=typeof e==`string`?new URL(e):e,n=t.pathname!==`/`,r=[];if(!n)return r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration`,t.origin),type:`oidc`}),r;let i=t.pathname;return i.endsWith(`/`)&&(i=i.slice(0,-1)),r.push({url:new URL(`/.well-known/oauth-authorization-server${i}`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/oauth-authorization-server`,t.origin),type:`oauth`}),r.push({url:new URL(`/.well-known/openid-configuration${i}`,t.origin),type:`oidc`}),r.push({url:new URL(`${i}/.well-known/openid-configuration`,t.origin),type:`oidc`}),r}async function ct(e,{fetchFn:t=fetch,protocolVersion:n=x}={}){let r={"MCP-Protocol-Version":n},i=st(e);for(let{url:e,type:n}of i){let i=await J(e,r,t);if(i){if(!i.ok){if(i.status>=400&&i.status<500)continue;throw Error(`HTTP ${i.status} trying to load ${n===`oauth`?`OAuth`:`OpenID provider`} metadata from ${e}`)}if(n===`oauth`)return Ue.parse(await i.json());{let t=We.parse(await i.json());if(!t.code_challenge_methods_supported?.includes(`S256`))throw Error(`Incompatible OIDC provider at ${e}: does not support S256 code challenge method required by MCP specification`);return t}}}}async function lt(e,{metadata:t,clientInformation:n,redirectUrl:r,scope:i,state:a,resource:o}){let s=`code`,c=`S256`,l;if(t){if(l=new URL(t.authorization_endpoint),!t.response_types_supported.includes(s))throw Error(`Incompatible auth server: does not support response type ${s}`);if(!t.code_challenge_methods_supported||!t.code_challenge_methods_supported.includes(c))throw Error(`Incompatible auth server: does not support code challenge method ${c}`)}else l=new URL(`/authorize`,e);let u=await pe(),d=u.code_verifier,f=u.code_challenge;return l.searchParams.set(`response_type`,s),l.searchParams.set(`client_id`,n.client_id),l.searchParams.set(`code_challenge`,f),l.searchParams.set(`code_challenge_method`,c),l.searchParams.set(`redirect_uri`,String(r)),a&&l.searchParams.set(`state`,a),i&&l.searchParams.set(`scope`,i),i?.includes(`offline_access`)&&l.searchParams.append(`prompt`,`consent`),o&&l.searchParams.set(`resource`,G(o)),{authorizationUrl:l,codeVerifier:d}}function ut(e,t){let n=e.client_secret!==void 0;return t.length===0?n?`client_secret_post`:`none`:n&&t.includes(`client_secret_basic`)?`client_secret_basic`:n&&t.includes(`client_secret_post`)?`client_secret_post`:t.includes(`none`)?`none`:n?`client_secret_post`:`none`}function dt(e,t,n,r){let{client_id:i,client_secret:a}=t;switch(e){case`client_secret_basic`:ft(i,a,n);return;case`client_secret_post`:pt(i,a,r);return;case`none`:mt(i,r);return;default:throw Error(`Unsupported client authentication method: ${e}`)}}function ft(e,t,n){if(!t)throw Error(`client_secret_basic authentication requires a client_secret`);let r=btoa(`${e}:${t}`);n.set(`Authorization`,`Basic ${r}`)}function pt(e,t,n){n.set(`client_id`,e),t&&n.set(`client_secret`,t)}function mt(e,t){t.set(`client_id`,e)}async function Y(e){let t=e instanceof Response?e.status:void 0,n=e instanceof Response?await e.text():e;try{let{error:e,error_description:t,error_uri:r}=qe.parse(await te({text:n}));return new($e[e]||V)({message:t||``,cause:r})}catch(e){return new V({message:`${t?`HTTP ${t}: `:``}Invalid OAuth error response: ${e}. Raw body: ${n}`})}}async function ht(e,{metadata:t,clientInformation:n,authorizationCode:r,codeVerifier:i,redirectUri:a,resource:o,addClientAuthentication:s,fetchFn:c}){let l=`authorization_code`,u=t?.token_endpoint?new URL(t.token_endpoint):new URL(`/token`,e);if(t?.grant_types_supported&&!t.grant_types_supported.includes(l))throw Error(`Incompatible auth server: does not support grant type ${l}`);let d=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`}),f=new URLSearchParams({grant_type:l,code:r,code_verifier:i,redirect_uri:String(a)});s?s(d,f,e,t):dt(ut(n,t?.token_endpoint_auth_methods_supported??[]),n,d,f),o&&f.set(`resource`,G(o));let p=await(c??fetch)(u,{method:`POST`,headers:d,body:f});if(!p.ok)throw await Y(p);return Ve.parse(await p.json())}async function gt(e,{metadata:t,clientInformation:n,refreshToken:r,resource:i,addClientAuthentication:a,fetchFn:o}){let s=`refresh_token`,c;if(t){if(c=new URL(t.token_endpoint),t.grant_types_supported&&!t.grant_types_supported.includes(s))throw Error(`Incompatible auth server: does not support grant type ${s}`)}else c=new URL(`/token`,e);let l=new Headers({"Content-Type":`application/x-www-form-urlencoded`,Accept:`application/json`}),u=new URLSearchParams({grant_type:s,refresh_token:r});a?a(l,u,e,t):dt(ut(n,t?.token_endpoint_auth_methods_supported??[]),n,l,u),i&&u.set(`resource`,G(i));let d=await(o??fetch)(c,{method:`POST`,headers:l,body:u});if(!d.ok)throw await Y(d);return Ve.parse({refresh_token:r,...await d.json()})}async function _t(e,{metadata:t,clientMetadata:n,fetchFn:r}){let i;if(t){if(!t.registration_endpoint)throw Error(`Incompatible auth server: does not support dynamic client registration`);i=new URL(t.registration_endpoint)}else i=new URL(`/register`,e);let a=await(r??fetch)(i,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify(n)});if(!a.ok)throw await Y(a);return Je.parse(await a.json())}async function X(e,t){try{return await Z(e,t)}catch(n){if(n instanceof H||n instanceof W)return await e.invalidateCredentials?.call(e,`all`),await Z(e,t);if(n instanceof U)return await e.invalidateCredentials?.call(e,`tokens`),await Z(e,t);throw n}}async function vt(e,t,n){let r=et(e);if(t.validateResourceURL)return await t.validateResourceURL(r,n?.resource);if(n){if(!tt({requestedResource:r,configuredResource:n.resource}))throw Error(`Protected resource ${n.resource} does not match expected ${r} (or origin)`);return new URL(n.resource)}}async function Z(e,{serverUrl:t,authorizationCode:n,callbackState:r,scope:i,resourceMetadataUrl:a,fetchFn:o}){let s,c;try{s=await ot(t,{resourceMetadataUrl:a},o),s.authorization_servers&&s.authorization_servers.length>0&&(c=s.authorization_servers[0])}catch{}c||=t;let l=await vt(t,e,s),u=await ct(c,{fetchFn:o}),d=await Promise.resolve(e.clientInformation());if(!d){if(n!==void 0)throw Error(`Existing OAuth client information is required when exchanging an authorization code`);if(!e.saveClientInformation)throw Error(`OAuth client information must be saveable for dynamic registration`);let t=await _t(c,{metadata:u,clientMetadata:e.clientMetadata,fetchFn:o});await e.saveClientInformation(t),d=t}if(n!==void 0){if(e.storedState){let t=await e.storedState();if(t!==void 0&&t!==r)throw Error(`OAuth state parameter mismatch - possible CSRF attack`)}let t=await e.codeVerifier(),i=await ht(c,{metadata:u,clientInformation:d,authorizationCode:n,codeVerifier:t,redirectUri:e.redirectUrl,resource:l,addClientAuthentication:e.addClientAuthentication,fetchFn:o});return await e.saveTokens(i),`AUTHORIZED`}let f=await e.tokens();if(f?.refresh_token)try{let t=await gt(c,{metadata:u,clientInformation:d,refreshToken:f.refresh_token,resource:l,addClientAuthentication:e.addClientAuthentication,fetchFn:o});return await e.saveTokens(t),`AUTHORIZED`}catch(e){if(!(!(e instanceof B)||e instanceof V))throw e}let p=e.state?await e.state():void 0;p&&e.saveState&&await e.saveState(p);let{authorizationUrl:m,codeVerifier:h}=await lt(c,{metadata:u,clientInformation:d,state:p,redirectUrl:e.redirectUrl,scope:i||e.clientMetadata.scope,resource:l});return await e.saveCodeVerifier(h),await e.redirectToAuthorization(m),`REDIRECT`}var yt=class{constructor({url:e,headers:t,authProvider:n,redirect:r=`error`,fetch:i}){this.connected=!1,this.url=new URL(e),this.headers=t,this.authProvider=n,this.redirectMode=r,this.fetchFn=i??globalThis.fetch}async commonHeaders(e){let t={...this.headers,...e,"mcp-protocol-version":this.protocolVersion??x};if(this.authProvider){let e=await this.authProvider.tokens();e?.access_token&&(t.Authorization=`Bearer ${e.access_token}`)}return v(t,`ai-sdk/${Be}`,_())}async start(){return new Promise((e,t)=>{if(this.connected)return e();this.abortController=new AbortController;let n=async(r=!1)=>{var i,a,o,s;try{let s=await this.commonHeaders({Accept:`text/event-stream`}),c=await this.fetchFn(this.url.href,{headers:s,signal:this.abortController?.signal,redirect:this.redirectMode});if(c.status===401&&this.authProvider&&!r){this.resourceMetadataUrl=q(c);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`){let e=new K;return(i=this.onerror)==null||i.call(this,e),t(e)}}catch(e){return(a=this.onerror)==null||a.call(this,e),t(e)}return n(!0)}if(!c.ok||!c.body){let e=`MCP SSE Transport Error: ${c.status} ${c.statusText}`;c.status===405&&(e+=". This server does not support SSE transport. Try using `http` transport instead");let n=new b({message:e});return(o=this.onerror)==null||o.call(this,n),t(n)}let l=c.body.pipeThrough(new TextDecoderStream).pipeThrough(new g).getReader(),u=async()=>{var n,r,i;try{for(;;){let{done:t,value:i}=await l.read();if(t){if(this.connected)throw this.connected=!1,new b({message:`MCP SSE Transport Error: Connection closed unexpectedly`});return}let{event:a,data:o}=i;if(a===`endpoint`){if(this.endpoint=new URL(o,this.url),this.endpoint.origin!==this.url.origin)throw new b({message:`MCP SSE Transport Error: Endpoint origin does not match connection origin: ${this.endpoint.origin}`});this.connected=!0,e()}else if(a===`message`)try{let e=await R(o);(n=this.onmessage)==null||n.call(this,e)}catch(e){let t=new b({message:`MCP SSE Transport Error: Failed to parse message`,cause:e});(r=this.onerror)==null||r.call(this,t)}}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(i=this.onerror)==null||i.call(this,e),t(e)}};this.sseConnection={close:()=>l.cancel()},u()}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(s=this.onerror)==null||s.call(this,e),t(e)}};n()})}async close(){var e,t,n;this.connected=!1,(e=this.sseConnection)==null||e.close(),(t=this.abortController)==null||t.abort(),(n=this.onclose)==null||n.call(this)}async send(e){if(!this.endpoint||!this.connected)throw new b({message:`MCP SSE Transport Error: Not connected`});let t=this.endpoint,n=async(r=!1)=>{var i,a,o,s;try{let s={method:`POST`,headers:await this.commonHeaders({"Content-Type":`application/json`}),body:JSON.stringify(e),signal:this.abortController?.signal,redirect:this.redirectMode},c=await this.fetchFn(t.href,s);if(c.status===401&&this.authProvider&&!r){this.resourceMetadataUrl=q(c);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`){let e=new K;(i=this.onerror)==null||i.call(this,e);return}}catch(e){(a=this.onerror)==null||a.call(this,e);return}return n(!0)}if(!c.ok){let e=await c.text().catch(()=>null),t=new b({message:`MCP SSE Transport Error: POSTing to endpoint (HTTP ${c.status}): ${e}`});(o=this.onerror)==null||o.call(this,t);return}}catch(e){(s=this.onerror)==null||s.call(this,e);return}};await n()}},bt=class{constructor({url:e,headers:t,authProvider:n,redirect:r=`error`,fetch:i}){this.inboundReconnectAttempts=0,this.reconnectionOptions={initialReconnectionDelay:1e3,maxReconnectionDelay:3e4,reconnectionDelayGrowFactor:1.5,maxRetries:2},this.url=new URL(e),this.headers=t,this.authProvider=n,this.redirectMode=r,this.fetchFn=i??globalThis.fetch}async commonHeaders(e){let t={...this.headers,...e,"mcp-protocol-version":this.protocolVersion??x};if(this.sessionId&&(t[`mcp-session-id`]=this.sessionId),this.authProvider){let e=await this.authProvider.tokens();e?.access_token&&(t.Authorization=`Bearer ${e.access_token}`)}return v(t,`ai-sdk/${Be}`,_())}async start(){if(this.abortController)throw new b({message:`MCP HTTP Transport Error: Transport already started. Note: client.connect() calls start() automatically.`});this.abortController=new AbortController,this.openInboundSse()}async close(){var e,t,n;(e=this.inboundSseConnection)==null||e.close();try{if(this.sessionId&&this.abortController&&!this.abortController.signal.aborted){let e=await this.commonHeaders({});await this.fetchFn(this.url.href,{method:`DELETE`,headers:e,signal:this.abortController.signal,redirect:this.redirectMode}).catch(()=>void 0)}}catch{}(t=this.abortController)==null||t.abort(),(n=this.onclose)==null||n.call(this)}async send(e){let t=async(n=!1)=>{var r,i,a,o,s,c;try{let c={method:`POST`,headers:await this.commonHeaders({"Content-Type":`application/json`,Accept:`application/json, text/event-stream`}),body:JSON.stringify(e),signal:this.abortController?.signal,redirect:this.redirectMode},l=await this.fetchFn(this.url.href,c),u=l.headers.get(`mcp-session-id`);if(u&&(this.sessionId=u),l.status===401&&this.authProvider&&!n){this.resourceMetadataUrl=q(l);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`)throw new K}catch(e){throw(r=this.onerror)==null||r.call(this,e),e}return t(!0)}if(l.status===202){this.inboundSseConnection||this.openInboundSse();return}if(!l.ok){let e=await l.text().catch(()=>null),t=`MCP HTTP Transport Error: POSTing to endpoint (HTTP ${l.status}): ${e}`;l.status===404&&(t+=". This server does not support HTTP transport. Try using `sse` transport instead");let n=new b({message:t});throw(i=this.onerror)==null||i.call(this,n),n}if(!(`id`in e))return;let d=l.headers.get(`content-type`)||``;if(d.includes(`application/json`)){let e=await l.json(),t=Array.isArray(e)?e.map(e=>L.parse(e)):[L.parse(e)];for(let e of t)(a=this.onmessage)==null||a.call(this,e);return}if(d.includes(`text/event-stream`)){if(!l.body){let e=new b({message:`MCP HTTP Transport Error: text/event-stream response without body`});throw(o=this.onerror)==null||o.call(this,e),e}let e=l.body.pipeThrough(new TextDecoderStream).pipeThrough(new g).getReader();(async()=>{var t,n,r;try{for(;;){let{done:r,value:i}=await e.read();if(r)return;let{event:a,data:o}=i;if(a===`message`)try{let e=await R(o);(t=this.onmessage)==null||t.call(this,e)}catch(e){let t=new b({message:`MCP HTTP Transport Error: Failed to parse message`,cause:e});(n=this.onerror)==null||n.call(this,t)}}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(r=this.onerror)==null||r.call(this,e)}})();return}let f=new b({message:`MCP HTTP Transport Error: Unexpected content type: ${d}`});throw(s=this.onerror)==null||s.call(this,f),f}catch(e){throw(c=this.onerror)==null||c.call(this,e),e}};await t()}getNextReconnectionDelay(e){let{initialReconnectionDelay:t,reconnectionDelayGrowFactor:n,maxReconnectionDelay:r}=this.reconnectionOptions;return Math.min(t*n**+e,r)}scheduleInboundSseReconnection(){var e;let{maxRetries:t}=this.reconnectionOptions;if(t>0&&this.inboundReconnectAttempts>=t){(e=this.onerror)==null||e.call(this,new b({message:`MCP HTTP Transport Error: Maximum reconnection attempts (${t}) exceeded.`}));return}let n=this.getNextReconnectionDelay(this.inboundReconnectAttempts);this.inboundReconnectAttempts+=1,setTimeout(async()=>{this.abortController?.signal.aborted||await this.openInboundSse(!1,this.lastInboundEventId)},n)}async openInboundSse(e=!1,t){var n,r,i,a;try{let a=await this.commonHeaders({Accept:`text/event-stream`});t&&(a[`last-event-id`]=t);let o=await this.fetchFn(this.url.href,{method:`GET`,headers:a,signal:this.abortController?.signal,redirect:this.redirectMode}),s=o.headers.get(`mcp-session-id`);if(s&&(this.sessionId=s),o.status===401&&this.authProvider&&!e){this.resourceMetadataUrl=q(o);try{if(await X(this.authProvider,{serverUrl:this.url,resourceMetadataUrl:this.resourceMetadataUrl,fetchFn:this.fetchFn})!==`AUTHORIZED`){let e=new K;(n=this.onerror)==null||n.call(this,e);return}}catch(e){(r=this.onerror)==null||r.call(this,e);return}return this.openInboundSse(!0,t)}if(o.status===405)return;if(!o.ok||!o.body){let e=new b({message:`MCP HTTP Transport Error: GET SSE failed: ${o.status} ${o.statusText}`});(i=this.onerror)==null||i.call(this,e);return}let c=o.body.pipeThrough(new TextDecoderStream).pipeThrough(new g).getReader(),l=async()=>{var e,t,n;try{for(;;){let{done:n,value:r}=await c.read();if(n)return;let{event:i,data:a,id:o}=r;if(o&&(this.lastInboundEventId=o),i===`message`)try{let t=await R(a);(e=this.onmessage)==null||e.call(this,t)}catch(e){let n=new b({message:`MCP HTTP Transport Error: Failed to parse message`,cause:e});(t=this.onerror)==null||t.call(this,n)}}}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(n=this.onerror)==null||n.call(this,e),this.abortController?.signal.aborted||this.scheduleInboundSseReconnection()}};this.inboundSseConnection={close:()=>c.cancel()},this.inboundReconnectAttempts=0,l()}catch(e){if(e instanceof Error&&e.name===`AbortError`)return;(a=this.onerror)==null||a.call(this,e),this.abortController?.signal.aborted||this.scheduleInboundSseReconnection()}}};function xt(e){switch(e.type){case`sse`:return new yt(e);case`http`:return new bt(e);default:throw new b({message:`Unsupported or invalid transport configuration. If you are using a custom transport, make sure it implements the MCPTransport interface.`})}}function St(e){return`start`in e&&typeof e.start==`function`&&`send`in e&&typeof e.send==`function`&&`close`in e&&typeof e.close==`function`}var Ct=`io.modelcontextprotocol/ui`,Q=`text/html;profile=mcp-app`,wt=`ui/resourceUri`,Tt={extensions:{[Ct]:{mimeTypes:[Q]}}};function Et(e){let n=e?.ui;return t(n)?n:void 0}function Dt(e){let n=(t(e)?e:void 0)?.ui;return t(n)?n:void 0}function Ot(e){return Array.isArray(e)?e.filter(e=>e===`model`||e===`app`):void 0}function kt(e){let t=Et(e._meta),n=t?.resourceUri??e._meta?.[wt],r=Ot(t?.visibility);if(n!==void 0){if(typeof n!=`string`||!n.startsWith(`ui://`))throw Error(`Invalid MCP App resource URI: ${JSON.stringify(n)}`)}else if(t==null)return;return{...t,...n==null?{}:{resourceUri:n},...r==null?{}:{visibility:r}}}function At(e){let t=[],n=[];for(let r of e.tools){let e=kt(r)?.visibility;(e==null||e.includes(`model`))&&t.push(r),e?.includes(`app`)===!0&&n.push(r)}return{modelVisible:{...e,tools:t},appVisible:{...e,tools:n}}}function jt({uri:e,resource:t}){let n=t.contents.find(t=>t.uri===e);if(n==null)throw Error(`MCP App resource not found in read result: ${e}`);if(n.mimeType!==`text/html;profile=mcp-app`)throw Error(`Unsupported MCP App resource MIME type: ${n.mimeType}`);let r=`text`in n&&typeof n.text==`string`?n.text:`blob`in n&&typeof n.blob==`string`?new TextDecoder().decode(oe(n.blob)):void 0;if(r==null)throw Error(`Unsupported MCP App resource content format: ${e}`);return{uri:e,mimeType:Q,html:r,meta:Dt(n._meta)}}async function Mt({client:e,uri:t,options:n}){if(!t.startsWith(`ui://`))throw Error(`Unsupported MCP App resource URI: ${t}`);return jt({uri:t,resource:await e.readResource({uri:t,options:n})})}var Nt=`1.0.0`;function Pt({output:e}){let t=e;return!(`content`in t)||!Array.isArray(t.content)?{type:`json`,value:t}:{type:`content`,value:t.content.map(e=>e.type===`text`&&`text`in e?{type:`text`,text:e.text}:e.type===`image`&&`data`in e&&`mimeType`in e?{type:`file`,mediaType:e.mimeType,data:{type:`data`,data:e.data}}:{type:`text`,text:JSON.stringify(e)})}}async function $(e){let t=new Ft(e);return await t.init(),t}var Ft=class{constructor({transport:e,name:t,clientName:n=t??`ai-sdk-mcp-client`,version:r=Nt,onUncaughtError:i,capabilities:a}){this.requestMessageId=0,this.responseHandlers=new Map,this.serverCapabilities={},this._serverInfo={name:``,version:``},this.isClosed=!0,this.onUncaughtError=i,this.clientCapabilities=a??{},St(e)?this.transport=e:this.transport=xt(e),this.transport.onclose=()=>this.onClose(),this.transport.onerror=e=>this.onError(e),this.transport.onmessage=e=>{if(`method`in e){`id`in e?this.onRequestMessage(e):this.onError(new b({message:`Unsupported message type`}));return}this.onResponse(e)},this.clientInfo={name:n,version:r}}get serverInfo(){return this._serverInfo}get instructions(){return this._serverInstructions}async init(){try{await this.transport.start(),this.isClosed=!1;let e=await this.request({request:{method:`initialize`,params:{protocolVersion:x,capabilities:this.clientCapabilities,clientInfo:this.clientInfo}},resultSchema:Se});if(e===void 0)throw new b({message:`Server sent invalid initialize result`});if(!ve.includes(e.protocolVersion))throw new b({message:`Server's protocol version is not supported: ${e.protocolVersion}`});return this.serverCapabilities=e.capabilities,this._serverInfo=e.serverInfo,this.transport.protocolVersion=e.protocolVersion,this._serverInstructions=e.instructions,await this.notification({method:`notifications/initialized`}),this}catch(e){throw await this.close(),e}}async close(){this.isClosed||(await this.transport?.close(),this.onClose())}assertCapability(e){switch(e){case`initialize`:break;case`tools/list`:case`tools/call`:if(!this.serverCapabilities.tools)throw new b({message:`Server does not support tools`});break;case`resources/list`:case`resources/read`:case`resources/templates/list`:if(!this.serverCapabilities.resources)throw new b({message:`Server does not support resources`});break;case`prompts/list`:case`prompts/get`:if(!this.serverCapabilities.prompts)throw new b({message:`Server does not support prompts`});break;default:throw new b({message:`Unsupported method: ${e}`})}}async request({request:e,resultSchema:t,options:n}){return new Promise((r,i)=>{if(this.isClosed)return i(new b({message:`Attempted to send a request from a closed client`}));this.assertCapability(e.method);let a=n?.signal;a?.throwIfAborted();let o=this.requestMessageId++,s={...e,jsonrpc:`2.0`,id:o},c=()=>{this.responseHandlers.delete(o)};this.responseHandlers.set(o,e=>{if(a?.aborted)return i(new b({message:`Request was aborted`,cause:a.reason}));if(e instanceof Error)return i(e);try{r(t.parse(e.result))}catch(e){i(new b({message:`Failed to parse server response`,cause:e}))}}),this.transport.send(s).catch(e=>{c(),i(e)})})}async listTools({params:e,options:t}={}){return this.request({request:{method:`tools/list`,params:e},resultSchema:we,options:t})}async callTool({name:e,arguments:t={},options:n}){try{return this.request({request:{method:`tools/call`,params:{name:e,arguments:t}},resultSchema:De,options:n})}catch(e){throw e}}async listResourcesInternal({params:e,options:t}={}){try{return this.request({request:{method:`resources/list`,params:e},resultSchema:Ee,options:t})}catch(e){throw e}}async readResourceInternal({uri:e,options:t}){try{return this.request({request:{method:`resources/read`,params:{uri:e}},resultSchema:Ae,options:t})}catch(e){throw e}}async listResourceTemplatesInternal({options:e}={}){try{return this.request({request:{method:`resources/templates/list`},resultSchema:ke,options:e})}catch(e){throw e}}async listPromptsInternal({params:e,options:t}={}){try{return this.request({request:{method:`prompts/list`,params:e},resultSchema:Ne,options:t})}catch(e){throw e}}async getPromptInternal({name:e,args:t,options:n}){try{return this.request({request:{method:`prompts/get`,params:{name:e,arguments:t}},resultSchema:Fe,options:n})}catch(e){throw e}}async notification(e){let t={...e,jsonrpc:`2.0`};await this.transport.send(t)}async tools({schemas:e=`automatic`}={}){let t=await this.listTools();return this.toolsFromDefinitions(t,{schemas:e})}toolsFromDefinitions(e,{schemas:t=`automatic`}={}){let n={};for(let{name:r,title:i,description:a,inputSchema:o,annotations:s,_meta:c}of e.tools){let e=i??s?.title;if(t!==`automatic`&&!(r in t))continue;let l=this,u=t===`automatic`?void 0:t[r]?.outputSchema,d=kt({_meta:c}),f={clientName:this.clientInfo.name,toolName:r,...e==null?{}:{title:e},...d?.resourceUri==null?{}:{app:{...d,mimeType:Q}}},p=async(e,t)=>{var n;(n=t?.abortSignal)==null||n.throwIfAborted();let i=await l.callTool({name:r,arguments:e,options:{signal:t?.abortSignal}});return i.isError||u==null?i:l.extractStructuredContent(i,u,r)};n[r]={...t===`automatic`?ce({description:a,title:e,metadata:f,inputSchema:ie({...o,properties:o.properties??{},additionalProperties:!1}),execute:p,toModelOutput:Pt}):ne({description:a,title:e,metadata:f,inputSchema:t[r].inputSchema,...u==null?{}:{outputSchema:u},execute:p,toModelOutput:Pt}),_meta:c}}return n}async extractStructuredContent(e,t,n){if(`structuredContent`in e&&e.structuredContent!=null){let r=await ae({value:e.structuredContent,schema:se(t)});if(!r.success)throw new b({message:`Tool "${n}" returned structuredContent that does not match the expected outputSchema`,cause:r.error});return r.value}if(`content`in e&&Array.isArray(e.content)){let r=e.content.find(e=>e.type===`text`);if(r&&`text`in r){let e=await re({text:r.text,schema:t});if(!e.success)throw new b({message:`Tool "${n}" returned content that does not match the expected outputSchema`,cause:e.error});return e.value}}throw new b({message:`Tool "${n}" did not return structuredContent or parseable text content`})}listResources({params:e,options:t}={}){return this.listResourcesInternal({params:e,options:t})}readResource({uri:e,options:t}){return this.readResourceInternal({uri:e,options:t})}listResourceTemplates({options:e}={}){return this.listResourceTemplatesInternal({options:e})}experimental_listPrompts({params:e,options:t}={}){return this.listPromptsInternal({params:e,options:t})}experimental_getPrompt({name:e,arguments:t,options:n}){return this.getPromptInternal({name:e,args:t,options:n})}onElicitationRequest(e,t){if(e!==P)throw new b({message:`Unsupported request schema. Only ElicitationRequestSchema is supported.`});this.elicitationRequestHandler=t}async onRequestMessage(e){try{if(e.method!==`elicitation/create`){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32601,message:`Unsupported request method: ${e.method}`}});return}if(!this.elicitationRequestHandler){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32601,message:`No elicitation handler registered on client`}});return}let t=P.safeParse({method:e.method,params:e.params});if(!t.success){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32602,message:`Invalid elicitation request: ${t.error.message}`,data:t.error.issues}});return}try{let n=await this.elicitationRequestHandler(t.data),r=F.parse(n);await this.transport.send({jsonrpc:`2.0`,id:e.id,result:r})}catch(t){await this.transport.send({jsonrpc:`2.0`,id:e.id,error:{code:-32603,message:t instanceof Error?t.message:`Failed to handle elicitation request`}}),this.onError(t)}}catch(e){this.onError(e)}}onClose(){if(this.isClosed)return;this.isClosed=!0;let e=new b({message:`Connection closed`});for(let t of this.responseHandlers.values())t(e);this.responseHandlers.clear()}onError(e){this.onUncaughtError&&this.onUncaughtError(e)}onResponse(e){let t=Number(e.id),n=this.responseHandlers.get(t);if(n===void 0)throw new b({message:`Protocol error: Received a response for an unknown message ID: ${JSON.stringify(e)}`});this.responseHandlers.delete(t),n(`result`in e?e:new b({message:e.error.message,code:e.error.code,data:e.error.data,cause:e.error}))}};export{F as ElicitResultSchema,P as ElicitationRequestSchema,Q as MCP_APP_MIME_TYPE,K as UnauthorizedError,X as auth,$ as createMCPClient,$ as experimental_createMCPClient,Tt as mcpAppClientCapabilities,Mt as readMCPAppResource,At as splitMCPAppTools};
@@ -1,4 +1,4 @@
1
- import{APICallError as e,InvalidPromptError as t,TooManyEmbeddingValuesForCallError as n,UnsupportedFunctionalityError as r}from"../provider/index.js";import{At as i,Bt as a,Et as o,Nn as s,Rn as c,St as l,Tn as u,Tt as d,Xn as f,Zn as p,dn as m,un as h,wn as g,yt as _}from"../../_chunks/workflow/schemas-DFZoEyCn.js";import{n as v}from"../../_chunks/workflow/coerce-Dh0wa7P9.js";import{A as y,B as b,C as x,D as S,F as C,I as w,J as T,K as E,L as D,P as ee,R as O,T as te,V as k,W as A,X as j,Y as M,Z as N,a as P,b as F,d as ne,f as I,g as re,h as L,i as R,j as ie,k as z,l as ae,m as B,o as V,p as oe,q as se,r as H,s as ce,t as le,u as ue,v as de}from"../../_chunks/workflow/dist-CpUQh3NH.js";var U=u({error:u({message:c(),type:c().nullish(),param:d().nullish(),code:f([c(),g()]).nullish()})}),W=ne({errorSchema:U,errorToMessage:e=>e.error.message});function fe(e){let t=e.startsWith(`o3`)||e.startsWith(`o4-mini`)||e.startsWith(`gpt-5`)&&!e.startsWith(`gpt-5-chat`),n=e.startsWith(`gpt-4`)||e.startsWith(`gpt-5`)&&!e.startsWith(`gpt-5-nano`)&&!e.startsWith(`gpt-5-chat`)&&!e.startsWith(`gpt-5.4-nano`)||e.startsWith(`o3`)||e.startsWith(`o4-mini`),r=e.startsWith(`o1`)||e.startsWith(`o3`)||e.startsWith(`o4-mini`)||e.startsWith(`gpt-5`)&&!e.startsWith(`gpt-5-chat`),i=e.startsWith(`gpt-5.1`)||e.startsWith(`gpt-5.2`)||e.startsWith(`gpt-5.3`)||e.startsWith(`gpt-5.4`)||e.startsWith(`gpt-5.5`);return{supportsFlexProcessing:t,supportsPriorityProcessing:n,isReasoningModel:r,systemMessageMode:r?`developer`:`system`,supportsNonReasoningParameters:i}}function pe(e){if(e==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let t=e.prompt_tokens??0,n=e.completion_tokens??0,r=e.prompt_tokens_details?.cached_tokens??0,i=e.completion_tokens_details?.reasoning_tokens??0;return{inputTokens:{total:t,noCache:t-r,cacheRead:r,cacheWrite:void 0},outputTokens:{total:n,text:n-i,reasoning:i},raw:e}}function me(e){return JSON.stringify(e===void 0?{}:e)}function he({prompt:e,systemMessageMode:t=`system`}){let n=[],i=[];for(let{role:a,content:o}of e)switch(a){case`system`:switch(t){case`system`:n.push({role:`system`,content:o});break;case`developer`:n.push({role:`developer`,content:o});break;case`remove`:i.push({type:`other`,message:`system messages are removed for this model`});break;default:throw Error(`Unsupported system message mode: ${t}`)}break;case`user`:if(o.length===1&&o[0].type===`text`){n.push({role:`user`,content:o[0].text});break}n.push({role:`user`,content:o.map((e,t)=>{switch(e.type){case`text`:return{type:`text`,text:e.text};case`file`:switch(e.data.type){case`reference`:return{type:`file`,file:{file_id:k({reference:e.data.reference,provider:`openai`})}};case`text`:throw new r({functionality:`text file parts`});case`url`:case`data`:{let n=x(e.mediaType);if(n===`image`)return{type:`image_url`,image_url:{url:e.data.type===`url`?e.data.url.toString():V(e.data.data),detail:e.providerOptions?.openai?.imageDetail}};if(n===`audio`){if(e.data.type===`url`)throw new r({functionality:`audio file parts with URLs`});let t=b({part:e});switch(t){case`audio/wav`:return{type:`input_audio`,input_audio:{data:V(e.data.data),format:`wav`}};case`audio/mp3`:case`audio/mpeg`:return{type:`input_audio`,input_audio:{data:V(e.data.data),format:`mp3`}};default:throw new r({functionality:`audio content parts with media type ${t}`})}}{let n=b({part:e});if(n!==`application/pdf`)throw new r({functionality:`file part media type ${n}`});if(e.data.type===`url`)throw new r({functionality:`PDF file parts with URLs`});return{type:`file`,file:{filename:e.filename??`part-${t}.pdf`,file_data:`data:application/pdf;base64,${V(e.data.data)}`}}}}}}})});break;case`assistant`:{let e=``,t=[];for(let n of o)switch(n.type){case`text`:e+=n.text;break;case`tool-call`:t.push({id:n.toolCallId,type:`function`,function:{name:n.toolName,arguments:me(n.input)}});break}n.push({role:`assistant`,content:t.length>0?e||null:e,tool_calls:t.length>0?t:void 0});break}case`tool`:for(let e of o){if(e.type===`tool-approval-response`)continue;let t=e.output,r;switch(t.type){case`text`:case`error-text`:r=t.value;break;case`execution-denied`:r=t.reason??`Tool call execution denied.`;break;case`content`:case`json`:case`error-json`:r=JSON.stringify(t.value);break}n.push({role:`tool`,tool_call_id:e.toolCallId,content:r})}break;default:throw Error(`Unsupported role: ${a}`)}return{messages:n,warnings:i}}function G({id:e,model:t,created:n}){return{id:e??void 0,modelId:t??void 0,timestamp:n?new Date(n*1e3):void 0}}function ge(e){switch(e){case`stop`:return`stop`;case`length`:return`length`;case`content_filter`:return`content-filter`;case`function_call`:case`tool_calls`:return`tool-calls`;default:return`other`}}var _e=z(()=>M(u({id:c().nullish(),created:g().nullish(),model:c().nullish(),choices:o(u({message:u({role:m(`assistant`).nullish(),content:c().nullish(),tool_calls:o(u({id:c().nullish(),type:m(`function`),function:u({name:c(),arguments:c()})})).nullish(),annotations:o(u({type:m(`url_citation`),url_citation:u({start_index:g(),end_index:g(),url:c(),title:c()})})).nullish()}),index:g(),logprobs:u({content:o(u({token:c(),logprob:g(),top_logprobs:o(u({token:c(),logprob:g()}))})).nullish()}).nullish(),finish_reason:c().nullish()})),usage:u({prompt_tokens:g().nullish(),completion_tokens:g().nullish(),total_tokens:g().nullish(),prompt_tokens_details:u({cached_tokens:g().nullish()}).nullish(),completion_tokens_details:u({reasoning_tokens:g().nullish(),accepted_prediction_tokens:g().nullish(),rejected_prediction_tokens:g().nullish()}).nullish()}).nullish()}))),ve=z(()=>M(f([u({id:c().nullish(),created:g().nullish(),model:c().nullish(),choices:o(u({delta:u({role:_([`assistant`]).nullish(),content:c().nullish(),tool_calls:o(u({index:g(),id:c().nullish(),type:m(`function`).nullish(),function:u({name:c().nullish(),arguments:c().nullish()})})).nullish(),annotations:o(u({type:m(`url_citation`),url_citation:u({start_index:g(),end_index:g(),url:c(),title:c()})})).nullish()}).nullish(),logprobs:u({content:o(u({token:c(),logprob:g(),top_logprobs:o(u({token:c(),logprob:g()}))})).nullish()}).nullish(),finish_reason:c().nullish(),index:g()})),usage:u({prompt_tokens:g().nullish(),completion_tokens:g().nullish(),total_tokens:g().nullish(),prompt_tokens_details:u({cached_tokens:g().nullish()}).nullish(),completion_tokens_details:u({reasoning_tokens:g().nullish(),accepted_prediction_tokens:g().nullish(),rejected_prediction_tokens:g().nullish()}).nullish()}).nullish()}),U]))),ye=z(()=>M(u({logitBias:s(v(),g()).optional(),logprobs:f([i(),g()]).optional(),parallelToolCalls:i().optional(),user:c().optional(),reasoningEffort:_([`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional(),maxCompletionTokens:g().optional(),store:i().optional(),metadata:s(c().max(64),c().max(512)).optional(),prediction:s(c(),d()).optional(),serviceTier:_([`auto`,`flex`,`priority`,`default`]).optional(),strictJsonSchema:i().optional(),textVerbosity:_([`low`,`medium`,`high`]).optional(),promptCacheKey:c().optional(),promptCacheRetention:_([`in_memory`,`24h`]).optional(),safetyIdentifier:c().optional(),systemMessageMode:_([`system`,`developer`,`remove`]).optional(),forceReasoning:i().optional()})));function be({tools:e,toolChoice:t}){e=e?.length?e:void 0;let n=[];if(e==null)return{tools:void 0,toolChoice:void 0,toolWarnings:n};let i=[];for(let t of e)switch(t.type){case`function`:i.push({type:`function`,function:{name:t.name,description:t.description,parameters:t.inputSchema,...t.strict==null?{}:{strict:t.strict}}});break;default:n.push({type:`unsupported`,feature:`tool type: ${t.type}`});break}if(t==null)return{tools:i,toolChoice:void 0,toolWarnings:n};let a=t.type;switch(a){case`auto`:case`none`:case`required`:return{tools:i,toolChoice:a,toolWarnings:n};case`tool`:return{tools:i,toolChoice:{type:`function`,function:{name:t.toolName}},toolWarnings:n};default:throw new r({functionality:`tool choice type: ${a}`})}}var xe=class e{constructor(e,t){this.specificationVersion=`v4`,this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=e,this.config=t}static[N](e){return A({modelId:e.modelId,config:e.config})}static[j](t){return new e(t.modelId,t.config)}get provider(){return this.config.provider}async getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:r,topK:i,frequencyPenalty:a,presencePenalty:o,stopSequences:s,responseFormat:c,seed:l,tools:u,toolChoice:d,reasoning:f,providerOptions:p}){let m=[],h=await w({provider:`openai`,providerOptions:p,schema:ye})??{},g=fe(this.modelId),_=h.reasoningEffort??(te(f)?f:void 0),v=h.forceReasoning??g.isReasoningModel;i!=null&&m.push({type:`unsupported`,feature:`topK`});let{messages:y,warnings:b}=he({prompt:e,systemMessageMode:h.systemMessageMode??(v?`developer`:g.systemMessageMode)});m.push(...b);let x=h.strictJsonSchema??!0,S={model:this.modelId,logit_bias:h.logitBias,logprobs:h.logprobs===!0||typeof h.logprobs==`number`?!0:void 0,top_logprobs:typeof h.logprobs==`number`?h.logprobs:typeof h.logprobs==`boolean`&&h.logprobs?0:void 0,user:h.user,parallel_tool_calls:h.parallelToolCalls,max_tokens:t,temperature:n,top_p:r,frequency_penalty:a,presence_penalty:o,response_format:c?.type===`json`?c.schema==null?{type:`json_object`}:{type:`json_schema`,json_schema:{schema:c.schema,strict:x,name:c.name??`response`,description:c.description}}:void 0,stop:s,seed:l,verbosity:h.textVerbosity,max_completion_tokens:h.maxCompletionTokens,store:h.store,metadata:h.metadata,prediction:h.prediction,reasoning_effort:_,service_tier:h.serviceTier,prompt_cache_key:h.promptCacheKey,prompt_cache_retention:h.promptCacheRetention,safety_identifier:h.safetyIdentifier,messages:y};v?((_!==`none`||!g.supportsNonReasoningParameters)&&(S.temperature!=null&&(S.temperature=void 0,m.push({type:`unsupported`,feature:`temperature`,details:`temperature is not supported for reasoning models`})),S.top_p!=null&&(S.top_p=void 0,m.push({type:`unsupported`,feature:`topP`,details:`topP is not supported for reasoning models`})),S.logprobs!=null&&(S.logprobs=void 0,m.push({type:`other`,message:`logprobs is not supported for reasoning models`}))),S.frequency_penalty!=null&&(S.frequency_penalty=void 0,m.push({type:`unsupported`,feature:`frequencyPenalty`,details:`frequencyPenalty is not supported for reasoning models`})),S.presence_penalty!=null&&(S.presence_penalty=void 0,m.push({type:`unsupported`,feature:`presencePenalty`,details:`presencePenalty is not supported for reasoning models`})),S.logit_bias!=null&&(S.logit_bias=void 0,m.push({type:`other`,message:`logitBias is not supported for reasoning models`})),S.top_logprobs!=null&&(S.top_logprobs=void 0,m.push({type:`other`,message:`topLogprobs is not supported for reasoning models`})),S.max_tokens!=null&&(S.max_completion_tokens??=S.max_tokens,S.max_tokens=void 0)):(this.modelId.startsWith(`gpt-4o-search-preview`)||this.modelId.startsWith(`gpt-4o-mini-search-preview`))&&S.temperature!=null&&(S.temperature=void 0,m.push({type:`unsupported`,feature:`temperature`,details:`temperature is not supported for the search preview models and has been removed.`})),h.serviceTier===`flex`&&!g.supportsFlexProcessing&&(m.push({type:`unsupported`,feature:`serviceTier`,details:`flex processing is only available for o3, o4-mini, and gpt-5 models`}),S.service_tier=void 0),h.serviceTier===`priority`&&!g.supportsPriorityProcessing&&(m.push({type:`unsupported`,feature:`serviceTier`,details:`priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported`}),S.service_tier=void 0);let{tools:C,toolChoice:T,toolWarnings:E}=be({tools:u,toolChoice:d});return{args:{...S,tools:C,tool_choice:T},warnings:[...m,...E]}}async doGenerate(e){var t;let{args:n,warnings:r}=await this.getArgs(e),{responseHeaders:i,value:a,rawValue:o}=await O({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:H((t=this.config).headers?.call(t),e.headers),body:n,failedResponseHandler:W,successfulResponseHandler:I(_e),abortSignal:e.abortSignal,fetch:this.config.fetch}),s=a.choices[0],c=[],l=s.message.content;l!=null&&l.length>0&&c.push({type:`text`,text:l});for(let e of s.message.tool_calls??[])c.push({type:`tool-call`,toolCallId:e.id??F(),toolName:e.function.name,input:e.function.arguments});for(let e of s.message.annotations??[])c.push({type:`source`,sourceType:`url`,id:F(),url:e.url_citation.url,title:e.url_citation.title});let u=a.usage?.completion_tokens_details,d={openai:{}};return u?.accepted_prediction_tokens!=null&&(d.openai.acceptedPredictionTokens=u?.accepted_prediction_tokens),u?.rejected_prediction_tokens!=null&&(d.openai.rejectedPredictionTokens=u?.rejected_prediction_tokens),s.logprobs?.content!=null&&(d.openai.logprobs=s.logprobs.content),{content:c,finishReason:{unified:ge(s.finish_reason),raw:s.finish_reason??void 0},usage:pe(a.usage),request:{body:n},response:{...G(a),headers:i,body:o},warnings:r,providerMetadata:d}}async doStream(e){var t;let{args:n,warnings:r}=await this.getArgs(e),i={...n,stream:!0,stream_options:{include_usage:!0}},{responseHeaders:a,value:o}=await O({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:H((t=this.config).headers?.call(t),e.headers),body:i,failedResponseHandler:W,successfulResponseHandler:ue(ve),abortSignal:e.abortSignal,fetch:this.config.fetch}),s,c={unified:`other`,raw:void 0},l,u=!1,d=!1,f={openai:{}};return{stream:o.pipeThrough(new TransformStream({start(e){s=new le(e,{generateId:F,typeValidation:`if-present`}),e.enqueue({type:`stream-start`,warnings:r})},transform(t,n){if(e.includeRawChunks&&n.enqueue({type:`raw`,rawValue:t.rawValue}),!t.success){c={unified:`error`,raw:void 0},n.enqueue({type:`error`,error:t.error});return}let r=t.value;if(`error`in r){c={unified:`error`,raw:void 0},n.enqueue({type:`error`,error:r.error});return}if(!u){let e=G(r);Object.values(e).some(Boolean)&&(u=!0,n.enqueue({type:`response-metadata`,...G(r)}))}r.usage!=null&&(l=r.usage,r.usage.completion_tokens_details?.accepted_prediction_tokens!=null&&(f.openai.acceptedPredictionTokens=r.usage.completion_tokens_details?.accepted_prediction_tokens),r.usage.completion_tokens_details?.rejected_prediction_tokens!=null&&(f.openai.rejectedPredictionTokens=r.usage.completion_tokens_details?.rejected_prediction_tokens));let i=r.choices[0];if(i?.finish_reason!=null&&(c={unified:ge(i.finish_reason),raw:i.finish_reason}),i?.logprobs?.content!=null&&(f.openai.logprobs=i.logprobs.content),i?.delta==null)return;let a=i.delta;if(a.content!=null&&(d||=(n.enqueue({type:`text-start`,id:`0`}),!0),n.enqueue({type:`text-delta`,id:`0`,delta:a.content})),a.tool_calls!=null)for(let e of a.tool_calls)s.processDelta(e);if(a.annotations!=null)for(let e of a.annotations)n.enqueue({type:`source`,sourceType:`url`,id:F(),url:e.url_citation.url,title:e.url_citation.title})},flush(e){d&&e.enqueue({type:`text-end`,id:`0`}),s.flush(),e.enqueue({type:`finish`,finishReason:c,usage:pe(l),...f==null?{}:{providerMetadata:f}})}})),request:{body:i},response:{headers:a}}}};function Se(e){if(e==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let t=e.prompt_tokens??0,n=e.completion_tokens??0;return{inputTokens:{total:e.prompt_tokens??void 0,noCache:t,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:e.completion_tokens??void 0,text:n,reasoning:void 0},raw:e}}function Ce({prompt:e,user:n=`user`,assistant:i=`assistant`}){let a=``;e[0].role===`system`&&(a+=`${e[0].content}
1
+ import{APICallError as e,InvalidPromptError as t,TooManyEmbeddingValuesForCallError as n,UnsupportedFunctionalityError as r}from"../provider/index.js";import{At as i,Bt as a,Et as o,Nn as s,Rn as c,St as l,Tn as u,Tt as d,Xn as f,Zn as p,dn as m,un as h,wn as g,yt as _}from"../../_chunks/workflow/schemas-DmgDnhW3.js";import{n as v}from"../../_chunks/workflow/coerce-BhzIW-Hm.js";import{A as y,B as b,C as x,D as S,F as C,I as w,J as T,K as E,L as D,P as ee,R as O,T as te,V as k,W as A,X as j,Y as M,Z as N,a as P,b as F,d as ne,f as I,g as re,h as L,i as R,j as ie,k as z,l as ae,m as B,o as V,p as oe,q as se,r as H,s as ce,t as le,u as ue,v as de}from"../../_chunks/workflow/dist-DZZY3Zyp.js";var U=u({error:u({message:c(),type:c().nullish(),param:d().nullish(),code:f([c(),g()]).nullish()})}),W=ne({errorSchema:U,errorToMessage:e=>e.error.message});function fe(e){let t=e.startsWith(`o3`)||e.startsWith(`o4-mini`)||e.startsWith(`gpt-5`)&&!e.startsWith(`gpt-5-chat`),n=e.startsWith(`gpt-4`)||e.startsWith(`gpt-5`)&&!e.startsWith(`gpt-5-nano`)&&!e.startsWith(`gpt-5-chat`)&&!e.startsWith(`gpt-5.4-nano`)||e.startsWith(`o3`)||e.startsWith(`o4-mini`),r=e.startsWith(`o1`)||e.startsWith(`o3`)||e.startsWith(`o4-mini`)||e.startsWith(`gpt-5`)&&!e.startsWith(`gpt-5-chat`),i=e.startsWith(`gpt-5.1`)||e.startsWith(`gpt-5.2`)||e.startsWith(`gpt-5.3`)||e.startsWith(`gpt-5.4`)||e.startsWith(`gpt-5.5`);return{supportsFlexProcessing:t,supportsPriorityProcessing:n,isReasoningModel:r,systemMessageMode:r?`developer`:`system`,supportsNonReasoningParameters:i}}function pe(e){if(e==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let t=e.prompt_tokens??0,n=e.completion_tokens??0,r=e.prompt_tokens_details?.cached_tokens??0,i=e.completion_tokens_details?.reasoning_tokens??0;return{inputTokens:{total:t,noCache:t-r,cacheRead:r,cacheWrite:void 0},outputTokens:{total:n,text:n-i,reasoning:i},raw:e}}function me(e){return JSON.stringify(e===void 0?{}:e)}function he({prompt:e,systemMessageMode:t=`system`}){let n=[],i=[];for(let{role:a,content:o}of e)switch(a){case`system`:switch(t){case`system`:n.push({role:`system`,content:o});break;case`developer`:n.push({role:`developer`,content:o});break;case`remove`:i.push({type:`other`,message:`system messages are removed for this model`});break;default:throw Error(`Unsupported system message mode: ${t}`)}break;case`user`:if(o.length===1&&o[0].type===`text`){n.push({role:`user`,content:o[0].text});break}n.push({role:`user`,content:o.map((e,t)=>{switch(e.type){case`text`:return{type:`text`,text:e.text};case`file`:switch(e.data.type){case`reference`:return{type:`file`,file:{file_id:k({reference:e.data.reference,provider:`openai`})}};case`text`:throw new r({functionality:`text file parts`});case`url`:case`data`:{let n=x(e.mediaType);if(n===`image`)return{type:`image_url`,image_url:{url:e.data.type===`url`?e.data.url.toString():V(e.data.data),detail:e.providerOptions?.openai?.imageDetail}};if(n===`audio`){if(e.data.type===`url`)throw new r({functionality:`audio file parts with URLs`});let t=b({part:e});switch(t){case`audio/wav`:return{type:`input_audio`,input_audio:{data:V(e.data.data),format:`wav`}};case`audio/mp3`:case`audio/mpeg`:return{type:`input_audio`,input_audio:{data:V(e.data.data),format:`mp3`}};default:throw new r({functionality:`audio content parts with media type ${t}`})}}{let n=b({part:e});if(n!==`application/pdf`)throw new r({functionality:`file part media type ${n}`});if(e.data.type===`url`)throw new r({functionality:`PDF file parts with URLs`});return{type:`file`,file:{filename:e.filename??`part-${t}.pdf`,file_data:`data:application/pdf;base64,${V(e.data.data)}`}}}}}}})});break;case`assistant`:{let e=``,t=[];for(let n of o)switch(n.type){case`text`:e+=n.text;break;case`tool-call`:t.push({id:n.toolCallId,type:`function`,function:{name:n.toolName,arguments:me(n.input)}});break}n.push({role:`assistant`,content:t.length>0?e||null:e,tool_calls:t.length>0?t:void 0});break}case`tool`:for(let e of o){if(e.type===`tool-approval-response`)continue;let t=e.output,r;switch(t.type){case`text`:case`error-text`:r=t.value;break;case`execution-denied`:r=t.reason??`Tool call execution denied.`;break;case`content`:case`json`:case`error-json`:r=JSON.stringify(t.value);break}n.push({role:`tool`,tool_call_id:e.toolCallId,content:r})}break;default:throw Error(`Unsupported role: ${a}`)}return{messages:n,warnings:i}}function G({id:e,model:t,created:n}){return{id:e??void 0,modelId:t??void 0,timestamp:n?new Date(n*1e3):void 0}}function ge(e){switch(e){case`stop`:return`stop`;case`length`:return`length`;case`content_filter`:return`content-filter`;case`function_call`:case`tool_calls`:return`tool-calls`;default:return`other`}}var _e=z(()=>M(u({id:c().nullish(),created:g().nullish(),model:c().nullish(),choices:o(u({message:u({role:m(`assistant`).nullish(),content:c().nullish(),tool_calls:o(u({id:c().nullish(),type:m(`function`),function:u({name:c(),arguments:c()})})).nullish(),annotations:o(u({type:m(`url_citation`),url_citation:u({start_index:g(),end_index:g(),url:c(),title:c()})})).nullish()}),index:g(),logprobs:u({content:o(u({token:c(),logprob:g(),top_logprobs:o(u({token:c(),logprob:g()}))})).nullish()}).nullish(),finish_reason:c().nullish()})),usage:u({prompt_tokens:g().nullish(),completion_tokens:g().nullish(),total_tokens:g().nullish(),prompt_tokens_details:u({cached_tokens:g().nullish()}).nullish(),completion_tokens_details:u({reasoning_tokens:g().nullish(),accepted_prediction_tokens:g().nullish(),rejected_prediction_tokens:g().nullish()}).nullish()}).nullish()}))),ve=z(()=>M(f([u({id:c().nullish(),created:g().nullish(),model:c().nullish(),choices:o(u({delta:u({role:_([`assistant`]).nullish(),content:c().nullish(),tool_calls:o(u({index:g(),id:c().nullish(),type:m(`function`).nullish(),function:u({name:c().nullish(),arguments:c().nullish()})})).nullish(),annotations:o(u({type:m(`url_citation`),url_citation:u({start_index:g(),end_index:g(),url:c(),title:c()})})).nullish()}).nullish(),logprobs:u({content:o(u({token:c(),logprob:g(),top_logprobs:o(u({token:c(),logprob:g()}))})).nullish()}).nullish(),finish_reason:c().nullish(),index:g()})),usage:u({prompt_tokens:g().nullish(),completion_tokens:g().nullish(),total_tokens:g().nullish(),prompt_tokens_details:u({cached_tokens:g().nullish()}).nullish(),completion_tokens_details:u({reasoning_tokens:g().nullish(),accepted_prediction_tokens:g().nullish(),rejected_prediction_tokens:g().nullish()}).nullish()}).nullish()}),U]))),ye=z(()=>M(u({logitBias:s(v(),g()).optional(),logprobs:f([i(),g()]).optional(),parallelToolCalls:i().optional(),user:c().optional(),reasoningEffort:_([`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional(),maxCompletionTokens:g().optional(),store:i().optional(),metadata:s(c().max(64),c().max(512)).optional(),prediction:s(c(),d()).optional(),serviceTier:_([`auto`,`flex`,`priority`,`default`]).optional(),strictJsonSchema:i().optional(),textVerbosity:_([`low`,`medium`,`high`]).optional(),promptCacheKey:c().optional(),promptCacheRetention:_([`in_memory`,`24h`]).optional(),safetyIdentifier:c().optional(),systemMessageMode:_([`system`,`developer`,`remove`]).optional(),forceReasoning:i().optional()})));function be({tools:e,toolChoice:t}){e=e?.length?e:void 0;let n=[];if(e==null)return{tools:void 0,toolChoice:void 0,toolWarnings:n};let i=[];for(let t of e)switch(t.type){case`function`:i.push({type:`function`,function:{name:t.name,description:t.description,parameters:t.inputSchema,...t.strict==null?{}:{strict:t.strict}}});break;default:n.push({type:`unsupported`,feature:`tool type: ${t.type}`});break}if(t==null)return{tools:i,toolChoice:void 0,toolWarnings:n};let a=t.type;switch(a){case`auto`:case`none`:case`required`:return{tools:i,toolChoice:a,toolWarnings:n};case`tool`:return{tools:i,toolChoice:{type:`function`,function:{name:t.toolName}},toolWarnings:n};default:throw new r({functionality:`tool choice type: ${a}`})}}var xe=class e{constructor(e,t){this.specificationVersion=`v4`,this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=e,this.config=t}static[N](e){return A({modelId:e.modelId,config:e.config})}static[j](t){return new e(t.modelId,t.config)}get provider(){return this.config.provider}async getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:r,topK:i,frequencyPenalty:a,presencePenalty:o,stopSequences:s,responseFormat:c,seed:l,tools:u,toolChoice:d,reasoning:f,providerOptions:p}){let m=[],h=await w({provider:`openai`,providerOptions:p,schema:ye})??{},g=fe(this.modelId),_=h.reasoningEffort??(te(f)?f:void 0),v=h.forceReasoning??g.isReasoningModel;i!=null&&m.push({type:`unsupported`,feature:`topK`});let{messages:y,warnings:b}=he({prompt:e,systemMessageMode:h.systemMessageMode??(v?`developer`:g.systemMessageMode)});m.push(...b);let x=h.strictJsonSchema??!0,S={model:this.modelId,logit_bias:h.logitBias,logprobs:h.logprobs===!0||typeof h.logprobs==`number`?!0:void 0,top_logprobs:typeof h.logprobs==`number`?h.logprobs:typeof h.logprobs==`boolean`&&h.logprobs?0:void 0,user:h.user,parallel_tool_calls:h.parallelToolCalls,max_tokens:t,temperature:n,top_p:r,frequency_penalty:a,presence_penalty:o,response_format:c?.type===`json`?c.schema==null?{type:`json_object`}:{type:`json_schema`,json_schema:{schema:c.schema,strict:x,name:c.name??`response`,description:c.description}}:void 0,stop:s,seed:l,verbosity:h.textVerbosity,max_completion_tokens:h.maxCompletionTokens,store:h.store,metadata:h.metadata,prediction:h.prediction,reasoning_effort:_,service_tier:h.serviceTier,prompt_cache_key:h.promptCacheKey,prompt_cache_retention:h.promptCacheRetention,safety_identifier:h.safetyIdentifier,messages:y};v?((_!==`none`||!g.supportsNonReasoningParameters)&&(S.temperature!=null&&(S.temperature=void 0,m.push({type:`unsupported`,feature:`temperature`,details:`temperature is not supported for reasoning models`})),S.top_p!=null&&(S.top_p=void 0,m.push({type:`unsupported`,feature:`topP`,details:`topP is not supported for reasoning models`})),S.logprobs!=null&&(S.logprobs=void 0,m.push({type:`other`,message:`logprobs is not supported for reasoning models`}))),S.frequency_penalty!=null&&(S.frequency_penalty=void 0,m.push({type:`unsupported`,feature:`frequencyPenalty`,details:`frequencyPenalty is not supported for reasoning models`})),S.presence_penalty!=null&&(S.presence_penalty=void 0,m.push({type:`unsupported`,feature:`presencePenalty`,details:`presencePenalty is not supported for reasoning models`})),S.logit_bias!=null&&(S.logit_bias=void 0,m.push({type:`other`,message:`logitBias is not supported for reasoning models`})),S.top_logprobs!=null&&(S.top_logprobs=void 0,m.push({type:`other`,message:`topLogprobs is not supported for reasoning models`})),S.max_tokens!=null&&(S.max_completion_tokens??=S.max_tokens,S.max_tokens=void 0)):(this.modelId.startsWith(`gpt-4o-search-preview`)||this.modelId.startsWith(`gpt-4o-mini-search-preview`))&&S.temperature!=null&&(S.temperature=void 0,m.push({type:`unsupported`,feature:`temperature`,details:`temperature is not supported for the search preview models and has been removed.`})),h.serviceTier===`flex`&&!g.supportsFlexProcessing&&(m.push({type:`unsupported`,feature:`serviceTier`,details:`flex processing is only available for o3, o4-mini, and gpt-5 models`}),S.service_tier=void 0),h.serviceTier===`priority`&&!g.supportsPriorityProcessing&&(m.push({type:`unsupported`,feature:`serviceTier`,details:`priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported`}),S.service_tier=void 0);let{tools:C,toolChoice:T,toolWarnings:E}=be({tools:u,toolChoice:d});return{args:{...S,tools:C,tool_choice:T},warnings:[...m,...E]}}async doGenerate(e){var t;let{args:n,warnings:r}=await this.getArgs(e),{responseHeaders:i,value:a,rawValue:o}=await O({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:H((t=this.config).headers?.call(t),e.headers),body:n,failedResponseHandler:W,successfulResponseHandler:I(_e),abortSignal:e.abortSignal,fetch:this.config.fetch}),s=a.choices[0],c=[],l=s.message.content;l!=null&&l.length>0&&c.push({type:`text`,text:l});for(let e of s.message.tool_calls??[])c.push({type:`tool-call`,toolCallId:e.id??F(),toolName:e.function.name,input:e.function.arguments});for(let e of s.message.annotations??[])c.push({type:`source`,sourceType:`url`,id:F(),url:e.url_citation.url,title:e.url_citation.title});let u=a.usage?.completion_tokens_details,d={openai:{}};return u?.accepted_prediction_tokens!=null&&(d.openai.acceptedPredictionTokens=u?.accepted_prediction_tokens),u?.rejected_prediction_tokens!=null&&(d.openai.rejectedPredictionTokens=u?.rejected_prediction_tokens),s.logprobs?.content!=null&&(d.openai.logprobs=s.logprobs.content),{content:c,finishReason:{unified:ge(s.finish_reason),raw:s.finish_reason??void 0},usage:pe(a.usage),request:{body:n},response:{...G(a),headers:i,body:o},warnings:r,providerMetadata:d}}async doStream(e){var t;let{args:n,warnings:r}=await this.getArgs(e),i={...n,stream:!0,stream_options:{include_usage:!0}},{responseHeaders:a,value:o}=await O({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:H((t=this.config).headers?.call(t),e.headers),body:i,failedResponseHandler:W,successfulResponseHandler:ue(ve),abortSignal:e.abortSignal,fetch:this.config.fetch}),s,c={unified:`other`,raw:void 0},l,u=!1,d=!1,f={openai:{}};return{stream:o.pipeThrough(new TransformStream({start(e){s=new le(e,{generateId:F,typeValidation:`if-present`}),e.enqueue({type:`stream-start`,warnings:r})},transform(t,n){if(e.includeRawChunks&&n.enqueue({type:`raw`,rawValue:t.rawValue}),!t.success){c={unified:`error`,raw:void 0},n.enqueue({type:`error`,error:t.error});return}let r=t.value;if(`error`in r){c={unified:`error`,raw:void 0},n.enqueue({type:`error`,error:r.error});return}if(!u){let e=G(r);Object.values(e).some(Boolean)&&(u=!0,n.enqueue({type:`response-metadata`,...G(r)}))}r.usage!=null&&(l=r.usage,r.usage.completion_tokens_details?.accepted_prediction_tokens!=null&&(f.openai.acceptedPredictionTokens=r.usage.completion_tokens_details?.accepted_prediction_tokens),r.usage.completion_tokens_details?.rejected_prediction_tokens!=null&&(f.openai.rejectedPredictionTokens=r.usage.completion_tokens_details?.rejected_prediction_tokens));let i=r.choices[0];if(i?.finish_reason!=null&&(c={unified:ge(i.finish_reason),raw:i.finish_reason}),i?.logprobs?.content!=null&&(f.openai.logprobs=i.logprobs.content),i?.delta==null)return;let a=i.delta;if(a.content!=null&&(d||=(n.enqueue({type:`text-start`,id:`0`}),!0),n.enqueue({type:`text-delta`,id:`0`,delta:a.content})),a.tool_calls!=null)for(let e of a.tool_calls)s.processDelta(e);if(a.annotations!=null)for(let e of a.annotations)n.enqueue({type:`source`,sourceType:`url`,id:F(),url:e.url_citation.url,title:e.url_citation.title})},flush(e){d&&e.enqueue({type:`text-end`,id:`0`}),s.flush(),e.enqueue({type:`finish`,finishReason:c,usage:pe(l),...f==null?{}:{providerMetadata:f}})}})),request:{body:i},response:{headers:a}}}};function Se(e){if(e==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let t=e.prompt_tokens??0,n=e.completion_tokens??0;return{inputTokens:{total:e.prompt_tokens??void 0,noCache:t,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:e.completion_tokens??void 0,text:n,reasoning:void 0},raw:e}}function Ce({prompt:e,user:n=`user`,assistant:i=`assistant`}){let a=``;e[0].role===`system`&&(a+=`${e[0].content}
2
2
 
3
3
  `,e=e.slice(1));for(let{role:o,content:s}of e)switch(o){case`system`:throw new t({message:"Unexpected system message in prompt: ${content}",prompt:e});case`user`:{let e=s.map(e=>{switch(e.type){case`text`:return e.text}}).filter(Boolean).join(``);a+=`${n}:
4
4
  ${e}
@@ -1,3 +1,3 @@
1
- import{t as e}from"../../_chunks/workflow/src-ClRYdO4-.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)}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(`
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};
@@ -0,0 +1,7 @@
1
+ // Auto-generated stub for `@slack/web-api` types referenced by a vendored .d.ts.
2
+ // Emitted by scripts/vendor-compiled/@chat-adapter/slack.mjs.
3
+
4
+ export declare class WebClient {
5
+ constructor(...args: any[]);
6
+ [key: string]: any;
7
+ }