eve 0.79.0 → 0.79.1

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 (159) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/dist/src/chunks/{use-eve-agent-BSYe_Re7.js → use-eve-agent-Ch-Q-s12.js} +43 -13
  3. package/dist/src/chunks/{use-eve-agent-B8brxCk-.js → use-eve-agent-Vsl-S0yI.js} +43 -13
  4. package/dist/src/client/abort-signal.d.ts +2 -0
  5. package/dist/src/client/abort-signal.js +1 -0
  6. package/dist/src/client/conversation-client.d.ts +2 -0
  7. package/dist/src/client/conversation-client.js +1 -1
  8. package/dist/src/client/eve-agent-store-state.d.ts +9 -0
  9. package/dist/src/client/eve-agent-store.js +1 -1
  10. package/dist/src/client/ndjson.js +1 -1
  11. package/dist/src/client/open-stream.js +1 -1
  12. package/dist/src/client/session-turn-dispatch.js +1 -1
  13. package/dist/src/client/session-utils.js +1 -1
  14. package/dist/src/client/session.js +1 -1
  15. package/dist/src/compiled/.vendor-stamp.json +2 -2
  16. package/dist/src/compiled/@eve/tracing/adapters/serialization.d.ts +2 -2
  17. package/dist/src/compiled/@eve/tracing/core/types.d.ts +6 -1
  18. package/dist/src/compiled/@eve/tracing/index.js +1 -1
  19. package/dist/src/compiled/@eve/tracing/otel.js +1 -1
  20. package/dist/src/compiled/_chunks/workflow/{mcp-CrGp4EC8.js → mcp-C01bDEX-.js} +2 -2
  21. package/dist/src/compiler/extension-compatibility.d.ts +4 -4
  22. package/dist/src/compiler/extension-compatibility.js +1 -1
  23. package/dist/src/compiler/project-sources.js +1 -1
  24. package/dist/src/context/memory-tools.js +1 -1
  25. package/dist/src/evals/runner/reporters/assertion-scores.d.ts +6 -4
  26. package/dist/src/evals/runner/reporters/assertion-scores.js +1 -1
  27. package/dist/src/evals/runner/reporters/braintrust.js +1 -1
  28. package/dist/src/eve-channel/request.js +1 -1
  29. package/dist/src/execution/authorization-callback-match.d.ts +2 -2
  30. package/dist/src/execution/authorization-callback-match.js +1 -1
  31. package/dist/src/execution/durable-session-store.js +1 -1
  32. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  33. package/dist/src/execution/forward-session-input.js +1 -1
  34. package/dist/src/execution/proxied-deliver-step.js +1 -1
  35. package/dist/src/execution/publish-session-events.d.ts +13 -2
  36. package/dist/src/execution/publish-session-events.js +1 -1
  37. package/dist/src/execution/sandbox/bindings/vercel-create-sdk.js +1 -1
  38. package/dist/src/execution/sandbox/bindings/vercel-credentials.d.ts +2 -0
  39. package/dist/src/execution/sandbox/bindings/vercel-credentials.js +1 -1
  40. package/dist/src/execution/sandbox/bindings/vercel-lifecycle.js +1 -1
  41. package/dist/src/execution/sandbox/bindings/vercel-lookup.js +1 -1
  42. package/dist/src/execution/sandbox/bindings/vercel.d.ts +3 -6
  43. package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
  44. package/dist/src/execution/session/checkpoint-migrations.js +1 -1
  45. package/dist/src/execution/session/handoff-steps.js +1 -1
  46. package/dist/src/execution/session/handoff.d.ts +1 -1
  47. package/dist/src/execution/session/handoff.js +1 -1
  48. package/dist/src/execution/session/input-queue.d.ts +13 -6
  49. package/dist/src/execution/session/input-queue.js +1 -1
  50. package/dist/src/execution/session/pending-turn-state.js +1 -1
  51. package/dist/src/execution/session/turn-step.js +1 -1
  52. package/dist/src/execution/session/turn.d.ts +4 -1
  53. package/dist/src/execution/session/turn.js +1 -1
  54. package/dist/src/execution/tasks/steps.d.ts +1 -1
  55. package/dist/src/execution/tasks/steps.js +1 -1
  56. package/dist/src/execution/tool-auth.js +1 -1
  57. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  58. package/dist/src/execution/tools/workflow/answer.d.ts +1 -1
  59. package/dist/src/execution/tools/workflow/withdraw-step.d.ts +2 -2
  60. package/dist/src/execution/tools/workflow/withdraw-step.js +1 -1
  61. package/dist/src/execution/workflow-callback-url.d.ts +10 -1
  62. package/dist/src/execution/workflow-callback-url.js +1 -1
  63. package/dist/src/harness/authorization.d.ts +3 -13
  64. package/dist/src/harness/authorization.js +1 -1
  65. package/dist/src/harness/compaction/step.d.ts +1 -0
  66. package/dist/src/harness/compaction/step.js +1 -1
  67. package/dist/src/harness/coordination.js +1 -1
  68. package/dist/src/harness/hitl/approvals.d.ts +1 -1
  69. package/dist/src/harness/hitl/approvals.js +1 -1
  70. package/dist/src/harness/hitl/approved-calls.d.ts +3 -0
  71. package/dist/src/harness/hitl/approved-calls.js +1 -1
  72. package/dist/src/harness/hitl/candidates.d.ts +13 -0
  73. package/dist/src/harness/hitl/candidates.js +1 -1
  74. package/dist/src/harness/hitl/coordinator.js +1 -1
  75. package/dist/src/harness/hitl/index.d.ts +2 -5
  76. package/dist/src/harness/hitl/index.js +1 -1
  77. package/dist/src/harness/hitl/intake.js +1 -1
  78. package/dist/src/harness/{proxy-input-requests.d.ts → hitl/relays.d.ts} +3 -39
  79. package/dist/src/harness/hitl/relays.js +1 -0
  80. package/dist/src/harness/hitl/requests.d.ts +64 -0
  81. package/dist/src/harness/hitl/requests.js +1 -0
  82. package/dist/src/harness/hitl/sign-ins.d.ts +9 -0
  83. package/dist/src/harness/hitl/sign-ins.js +1 -0
  84. package/dist/src/harness/inline-tool-authorization.js +1 -1
  85. package/dist/src/harness/model-call/call.js +1 -1
  86. package/dist/src/harness/model-call/model.d.ts +3 -1
  87. package/dist/src/harness/model-call/model.js +1 -1
  88. package/dist/src/harness/session-machine/commit.d.ts +14 -3
  89. package/dist/src/harness/session-machine/commit.js +1 -1
  90. package/dist/src/harness/session-machine/transitions.d.ts +16 -0
  91. package/dist/src/harness/session-machine/transitions.js +1 -1
  92. package/dist/src/instrumentation/runtime.d.ts +1 -0
  93. package/dist/src/instrumentation/runtime.js +1 -1
  94. package/dist/src/internal/application/stamped-package-version.js +1 -1
  95. package/dist/src/internal/authored-definition/source-identity.d.ts +6 -0
  96. package/dist/src/internal/authored-definition/source-identity.js +1 -1
  97. package/dist/src/internal/authored-module-map-loader.js +1 -1
  98. package/dist/src/internal/helpers/markdown.js +1 -1
  99. package/dist/src/internal/workflow/is-inactive-workflow-run-error.d.ts +2 -0
  100. package/dist/src/internal/workflow/is-inactive-workflow-run-error.js +1 -1
  101. package/dist/src/protocol/baggage.d.ts +1 -0
  102. package/dist/src/protocol/baggage.js +1 -1
  103. package/dist/src/public/definitions/connections/mcp.js +1 -1
  104. package/dist/src/public/definitions/connections/openapi.js +1 -1
  105. package/dist/src/public/sandbox/vercel.d.ts +2 -0
  106. package/dist/src/public/tools/index.d.ts +1 -1
  107. package/dist/src/public/tools/result.d.ts +10 -7
  108. package/dist/src/react/use-eve-agent.d.ts +6 -0
  109. package/dist/src/react/use-eve-agent.js +1 -1
  110. package/dist/src/runtime/authorization-context.d.ts +5 -0
  111. package/dist/src/runtime/authorization-context.js +1 -1
  112. package/dist/src/runtime/connections/mcp-tracing.js +1 -1
  113. package/dist/src/runtime/connections/openapi-operations.js +1 -1
  114. package/dist/src/runtime/connections/scoped-authorization.d.ts +6 -0
  115. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  116. package/dist/src/runtime/resolve-connection.js +1 -1
  117. package/dist/src/setup/scaffold/create/project.js +1 -1
  118. package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
  119. package/dist/src/setup/scaffold/create/web-template.js +18 -10
  120. package/dist/src/shared/git.js +1 -1
  121. package/dist/src/shared/instrumentation-content.d.ts +1 -1
  122. package/dist/src/shared/instrumentation-content.js +1 -1
  123. package/dist/src/shared/instrumentation-decision.d.ts +3 -0
  124. package/dist/src/shared/instrumentation-decision.js +1 -1
  125. package/dist/src/shared/skill-package.js +1 -1
  126. package/dist/src/shared/trace-policy.js +1 -1
  127. package/dist/src/subagents/adapter.js +1 -1
  128. package/dist/src/subagents/event-proxy-step.d.ts +1 -1
  129. package/dist/src/subagents/event-proxy-step.js +1 -1
  130. package/dist/src/subagents/hitl-proxy.d.ts +1 -1
  131. package/dist/src/subagents/hitl-proxy.js +1 -1
  132. package/dist/src/svelte/index.js +1 -1
  133. package/dist/src/svelte/use-eve-agent.d.ts +6 -0
  134. package/dist/src/svelte/use-eve-agent.js +1 -1
  135. package/dist/src/tools/definition.d.ts +38 -1
  136. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  137. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  138. package/dist/src/tracing/eve/agent-otel-provider.js +1 -1
  139. package/dist/src/tracing/eve/gateway.d.ts +2 -1
  140. package/dist/src/tracing/eve/gateway.js +1 -1
  141. package/dist/src/tracing/eve/invoke-tool-span.js +1 -1
  142. package/dist/src/tracing/eve/otel-declaration.d.ts +9 -8
  143. package/dist/src/tracing/eve/policy.js +1 -1
  144. package/dist/src/vue/index.js +1 -1
  145. package/dist/src/vue/use-eve-agent.d.ts +6 -0
  146. package/dist/src/vue/use-eve-agent.js +1 -1
  147. package/docs/agent-config.md +48 -0
  148. package/docs/channels/eve.mdx +2 -0
  149. package/docs/connections/overview.mdx +9 -6
  150. package/docs/guides/frontend/overview.mdx +10 -1
  151. package/docs/guides/hooks.md +2 -2
  152. package/docs/guides/instrumentation/otel.mdx +3 -0
  153. package/docs/reference/cli.md +1 -1
  154. package/docs/reference/typescript-api.md +7 -6
  155. package/docs/sandbox/vercel.mdx +9 -0
  156. package/docs/skills.mdx +1 -1
  157. package/docs/tools/human-in-the-loop.md +21 -0
  158. package/package.json +1 -1
  159. package/dist/src/harness/proxy-input-requests.js +0 -1
@@ -1 +1 @@
1
- import{f as e,g as t,i as n,l as r,m as i,n as a,o,r as s,s as c,t as l,u,v as d}from"../../_chunks/workflow/mcp-CrGp4EC8.js";import{n as f,t as p}from"../../_chunks/workflow/delegation-BqhZ398D.js";import{createHash as m,randomBytes as h,randomUUID as g}from"node:crypto";var _=class{#e;#t;allocateSpanId(){return y(16)}deriveSpanId(e){return v(e)}deriveTraceId(e){let t=m(`sha256`).update(e).digest(`hex`).slice(0,32);return/^0+$/u.test(t)?`00000000000000000000000000000001`:t}generateSpanId(){let e=this.#e;return e===void 0?y(16):(this.#e=void 0,e)}generateTraceId(){let e=this.#t;return e===void 0?y(32):(this.#t=void 0,e)}withSpanId(e,t){this.#e=e;try{return t()}finally{this.#e=void 0}}withTraceId(e,t){this.#t=e;try{return t()}finally{this.#t=void 0}}};function v(e){let t=m(`sha256`).update(e).digest(`hex`).slice(0,16);return/^0+$/u.test(t)?`0000000000000001`:t}function y(e){let t;do{t=``;for(let n=0;n<e;n+=1)t+=`0123456789abcdef`[Math.trunc(Math.random()*16)]}while(!/[1-9a-f]/u.test(t));return t}function b(e,t,n,r){let i=!1;try{return e.run(t,()=>(i=!0,n()),r)}catch(t){if(i)throw t;if(e.suppressed!==void 0)try{return e.suppressed(()=>(i=!0,n()))}catch(e){if(i)throw e}return n()}}function x(e){function n(t,n=`complete`,r){try{return t()}catch(t){try{e.onError?.(t,{phase:n,reference:r})}catch{}return}}function r(r,i,a,o){let s=u(r.attributes,i)??r.attributes,c=i.emit?n(()=>e.telemetry.startSpan({...r,attributes:s},{reference:o,context:a}),`start`,o):void 0,l=c?.reference??{traceId:`0`.repeat(32),spanId:`0`.repeat(16),traceFlags:0},d=!1;return{reference:l,get capture(){return i},narrow(e){i=t(i,e)},get finished(){return d},setAttribute(e,t){let r=u({[e]:t},i);!d&&(r===void 0||e in r)&&n(()=>c?.setAttribute(e,r===void 0?t:r[e]))},addEvent(e,t,r){d||n(()=>c?.addEvent(e,t===void 0?void 0:u(t,i)??t,r))},fail(e,t){d||n(()=>c?.fail(i.recordOutputs?e:void 0,t??(e instanceof Error?e.name:void 0)))},setStatus(e){d||n(()=>c?.setStatus(e))},end(e){d||(d=!0,n(()=>c?.end(e)))},run(t){return d?t():b(e.telemetry,{type:r.type,reference:l,capture:i},t,a)}}}return{start:r,startReserved:(e,t,n,i)=>r(e,n,i,t)}}const S=32768,C=65536;function w(e,t){function n(n,r){try{let t=Reflect.apply(e[n],e,r);return t===void 0||new TextEncoder().encode(t).length>S?void 0:t}catch(e){try{t?.(e,{phase:`serialize`})}catch{}return}}return{json:e=>n(`json`,[e]),text:e=>n(`text`,[e]),inputMessages:e=>n(`inputMessages`,[e]),instructions:e=>n(`instructions`,[e]),toolDefinitions:e=>n(`toolDefinitions`,[e]),outputMessages:(e,t)=>n(`outputMessages`,[e,t]),toolResults:e=>n(`toolResults`,[e])}}function T(e){return new TextEncoder().encode(JSON.stringify({...e,children:void 0})).length}function ee(e){return JSON.parse(JSON.stringify(e))}function E(e,t=C,n=0){try{if(n>16||typeof e!=`object`||!e)return!1;let r=e;if(r.children!==void 0&&(!Array.isArray(r.children)||r.children.length>1e4||!r.children.every(e=>E(e,t,n+1)))||r.version!==1||r.finished!==void 0&&typeof r.finished!=`boolean`||r.childSequence!==void 0&&(!Number.isSafeInteger(r.childSequence)||r.childSequence<0)||typeof r.key!=`string`||typeof r.startTimeMs!=`number`||!Number.isFinite(r.startTimeMs)||r.reference.traceFlags!==0&&r.reference.traceFlags!==1||r.reference.tracestate!==void 0&&(typeof r.reference.tracestate!=`string`||r.reference.tracestate.length>512)||r.parent!==void 0&&(!/^[a-f0-9]{32}$/u.test(r.parent.traceId)||!/^[a-f0-9]{16}$/u.test(r.parent.spanId))||![r.identity.conversationId,r.identity.runId,r.identity.turnId].every(e=>typeof e==`string`))return!1;let i=r.data.options;return!(!{activation:[],step:[],model:[`provider`,`modelId`],tool:[`callId`,`name`],approval:[`requestId`,`callId`,`toolName`],memory:[`operation`,`phase`,`slot`,`storeId`]}[r.data.type].every(e=>typeof i[e]==`string`)||r.data.type===`activation`&&!Number.isSafeInteger(i.sequence)||r.data.type===`step`&&!Number.isSafeInteger(i.index)||r.data.type===`memory`&&i.operation!==`search_memory`&&i.operation!==`upsert_memory`||!/^[a-f0-9]{32}$/u.test(r.reference.traceId)||!/^[a-f0-9]{16}$/u.test(r.reference.spanId)||typeof r.reference.traceFlags!=`number`||![r.capture.emit,r.capture.recordInputs,r.capture.recordOutputs].every(e=>typeof e==`boolean`)||![`activation`,`step`,`model`,`tool`,`approval`,`memory`].includes(r.data.type)||typeof r.data.options!=`object`||r.data.options===null||T(r)>t)}catch{return!1}}function D(e,t){let n=e.terminal;e={...e,children:e.children?.map(n=>D({...n,capture:{emit:n.capture.emit&&e.capture.emit,recordInputs:n.capture.recordInputs&&e.capture.recordInputs,recordOutputs:n.capture.recordOutputs&&e.capture.recordOutputs}},t))},e={...e,terminal:n===void 0||e.finished?void 0:{...n,errorCode:n.errorCode??(n.error instanceof Error?n.error.name:void 0),error:e.capture.recordOutputs?n.error instanceof Error?{name:n.error.name,message:t.text(n.error.message)}:n.error:void 0,output:e.capture.recordOutputs?n.output:void 0,response:e.capture.recordOutputs?n.response:void 0,records:e.capture.recordInputs?n.records:void 0,model:n.model===void 0?void 0:{...n.model,content:e.capture.recordOutputs?n.model.content:void 0}}},e={...e,attributes:u(e.attributes??{},e.capture)??e.attributes};let r=s(e.data,e.capture),i;try{i=t.json(r)}catch{}let a=()=>{let t=s(r,{emit:e.capture.emit,recordInputs:!1,recordOutputs:!1});return t.type===`step`&&(t={...t,options:{...t.options,runtimeContext:void 0}}),t.type===`model`&&(t={...t,options:{...t.options,runtimeContext:void 0}}),JSON.parse(JSON.stringify({...e,version:1,data:t,terminal:e.terminal===void 0?void 0:{outcome:e.terminal.outcome,failed:e.terminal.failed,errorCode:e.terminal.errorCode,usage:e.terminal.usage},attributes:u(e.attributes??{},{recordInputs:!1,recordOutputs:!1})??e.attributes}))};if(i===void 0||new TextEncoder().encode(i).length>S)return a();try{let t=JSON.parse(JSON.stringify({...e,version:1,data:JSON.parse(i)}));return T(t)<=C?t:a()}catch{return a()}}const O=1e4,k={emit:!1,recordInputs:!1,recordOutputs:!1},te=new Set([`activation`,`tool`,`approval`]),ne=new Set([`tool`,`approval`]);function A(e){return encodeURIComponent(String(e))}function j(e){switch(e.type){case`step`:return`step:${A(e.options.index)}:${A(e.options.attempt??0)}`;case`tool`:return`tool:${A(e.options.callId)}`;case`approval`:return`approval:${A(e.options.requestId)}`;default:return}}function M(e){let t=e.failed||e.outcome===`failed`;return{...e,model:`result`in e?e.result:e.model,failed:t,errorCode:`errorType`in e?e.errorType:e.errorCode}}function N(e){let i=e.telemetry,d=w(e.serializer,e.onError),p=x({telemetry:i,onError:e.onError}),m=(t,n)=>{try{e.onError?.(t,n)}catch{}};function g(t,n,r,a,o){let s=i.ids;if(e.durable&&s!==void 0&&t.type!==`model`&&t.type!==`memory`){if(t.type===`activation`&&r!==void 0)return{traceId:r.traceId,spanId:s.spanId(n),traceFlags:o.emit?r.traceFlags&1:0};if(t.type===`activation`){let e=s.traceId(n);return{traceId:e,spanId:s.spanId(n),traceFlags:o.emit&&(i.samples?.(e,a)??!0)?1:0}}return r===void 0?void 0:{...r,spanId:s.spanId(n),isRemote:!1}}}async function _(e,t,n,r,i,a,o){try{return await v(e,t,n,r,i,a,o)}catch(t){return m(t,{phase:`start`,operation:n.type,reference:a.reference}),v(e,k,s(n,k),r,i,{...a,sample:!1,reference:{traceId:a.reference?.traceId??r?.reference.traceId??a.parent?.traceId??h(16).toString(`hex`),spanId:a.reference?.spanId??h(8).toString(`hex`),traceFlags:0}},o)}}async function v(h,v,y,x,S,C,w){if(C.terminal?.error!==null&&typeof C.terminal?.error==`object`&&!(C.terminal.error instanceof Error)&&`message`in C.terminal.error&&typeof C.terminal.error.message==`string`){let e=Error(C.terminal.error.message);e.name=C.terminal.errorCode??`Error`,C={...C,terminal:{...C.terminal,error:e}}}let T=C.key,E=C.startTimeMs??Date.now(),N=C.parent??x?.reference;v.emit&&(v=t(v,i.active()?.capture));let P=v,F=s(y,P),I=c({identity:h,data:F,attempt:S,capture:P,key:T,parent:N,startTimeMs:E,links:C.links},d);I={...I,attributes:{...I.attributes,...C.attributes}},F=D({key:T,identity:h,data:F,capture:P,reference:C.reference??{traceId:`0`.repeat(32),spanId:`0`.repeat(16),traceFlags:0},startTimeMs:E},d).data;let L=C.deferred??(e.durable&&te.has(F.type)),R=C.executionContext,z=C.reference??g(y,T,N,I,P);C.sample===!0&&z!==void 0&&(z={...z,traceFlags:z.traceFlags&1&&P.emit&&(N!==void 0||(i.samples?.(z.traceId,I)??!0))?1:0});let B=L?void 0:p.start(I,P,R,z),V=z??B?.reference;if(V===void 0)throw Error(`A deferred trace scope requires a reserved reference.`);let H=!!(V.traceFlags&1);P={emit:P.emit&&H,recordInputs:P.emit&&H&&P.recordInputs,recordOutputs:P.emit&&H&&P.recordOutputs},F=s(F,P);let U=C.finished??!1,W=C.terminal,G=new Map,K=new Set,q=C.childSequence??0,J=C.usage,Y=new Set(C.usageKeys??[]),X={},re=F.type===`tool`?F.options.callId:void 0;function Z(){w()}function Q(){return t(P,i.active()?.capture)}async function ie(t,n,r={}){let i=G.get(n);if(e.durable&&i!==void 0&&!i.settled)return i.refine(t,r.startTimeMs),i;if(U)throw Error(`The operation is not permitted in this trace scope.`);for(let[e,t]of G)t.settled&&G.delete(e);let o=P;G.size>=O&&(m(Error(`Trace unfinished-child limit reached.`),{phase:`start`,operation:t.type,reference:V}),o=k),t.type===`model`&&B!==void 0&&a(B,{"agent.model.id":t.options.modelId});let s=await _(h,o,t,$,t.type===`step`?{index:t.options.index,attempt:t.options.attempt??0}:S,{key:n,executionContext:R,links:r.links,startTimeMs:r.startTimeMs},w);return(o.emit||G.size<O)&&G.set(n,s),await w(),s}async function ae(e,t){let n=F.type===`step`||F.type===`activation`;for(let r of G.values())(t||!n||!ne.has(r.type))&&await r.release({failed:e.failed,error:e.error,outcome:`abandoned`})}async function oe(t){if(K.size>0&&await Promise.allSettled(K),U)return;let r=Q();r.recordOutputs||(t={...t,error:void 0}),W?.failed&&(t={...t,outcome:t.outcome===`completed`?`failed`:t.outcome,failed:!0,error:W.error,errorCode:t.errorCode??W.errorCode}),U=!0,W=t,await ae(t,t.failed===!0||!e.durable),B??=p.start(I,P,R,V);let i=F.type===`activation`&&t.usage===void 0?{...t,usage:J}:t;try{n(B,F,i,{...r,emit:P.emit},E,d)}catch(e){m(e,{phase:`complete`,operation:F.type,reference:V})}if(a(B,X),F.type===`model`&&t.model!==void 0){await x?.usage(t.model.usage,T);let e=t.model.content;if(r.recordOutputs&&P.recordOutputs&&e!==void 0){let n=d.outputMessages(e,t.model.finishReason);n!==void 0&&x?.turnContent({output:n})}}B.end(t.endTimeMs),await w()}let $={waitUntil(e){K.add(e),x?.waitUntil(e),e.then(()=>K.delete(e),()=>K.delete(e))},snapshot:()=>ee($.record()),attributes:e=>$.update({attributes:e}),modelCall:(e,t)=>$.child({type:`model`,options:e},t),fail(e){return $.error(e),$.complete({outcome:`failed`,failed:!0})},update(e){if(U)return;let t=u(e.attributes??{},Q())??e.attributes;F.type===`activation`&&(F={...F,options:{...F.options,attributes:{...F.options.attributes,...t}}}),I={...I,attributes:{...I.attributes,...t},links:e.links??I.links},B!==void 0&&a(B,t),Z()},useContext(e){R=e;for(let t of G.values())t.useContext(e)},refine(e,t){if(U||B!==void 0)return;if(t!==void 0&&t<E&&(E=t),e.type===`tool`&&F.type===`tool`){let t=F.options;F=s({type:`tool`,options:{...t,kind:t.kind??e.options.kind,arguments:t.arguments??(Q().recordInputs?e.options.arguments:void 0)}},P)}let n=c({identity:h,data:F,attempt:S,capture:P,key:T,parent:N,startTimeMs:E,links:I.links},d),r=Object.fromEntries(Object.entries(n.attributes).filter(([,e])=>e!==void 0));I={...I,name:n.name,kind:n.kind,startTimeMs:E,attributes:{...I.attributes,...r}},Z()},narrow(e){P={...t(P,e),emit:P.emit},F=s(F,P);let n=u(I.attributes,P)??I.attributes;I={...I,attributes:F.type===`activation`?{...n,"agent.trace.content.input":P.recordInputs,"agent.trace.content.output":P.recordOutputs}:n};let r=u(X,P)??X;for(let e of Object.keys(X))e in r||delete X[e];!P.recordOutputs&&W?.error!==void 0&&(W={...W,error:void 0}),B?.narrow(P);for(let e of G.values())e.narrow(P);Z()},async release(t){U?await ae(t,t.failed===!0||!e.durable):await oe(M(t))},record(){return D({version:1,finished:U,terminal:W,usage:J,usageKeys:[...Y],attributes:{...I.attributes,...X},childSequence:q,children:[...G.values()].filter(e=>!e.settled).map(e=>e.record()),key:T,identity:h,data:F,capture:P,reference:V,parent:N,startTimeMs:E,attempt:S,links:I.links},d)},get parent(){return N},get startTimeMs(){return E},child(t,n,r){if(!o(t).includes(F.type))throw Error(`The operation is not permitted in this trace scope.`);let i=n===void 0?(e.durable?j(t):void 0)??`${t.type}:${q++}`:`${t.type}:${A(n)}`;return ie(t,`${T}/${i}`,r)},find(e){let t=j(e),n=t===void 0?void 0:G.get(`${T}/${t}`);return n===void 0||n.settled?void 0:n},get children(){return[...G.values()].filter(e=>!e.settled)},type:F.type,reference:V,callId:re,get capture(){return P},mcp:l({serializer:d,...P,write(e){let t=u(e,Q())??e;Object.assign(X,t),B!==void 0&&a(B,t)},error(e,t){$.error(e,t)}}),get finished(){return U},get settled(){return U&&[...G.values()].every(e=>e.settled)},run(e,n){if(U)throw Error(`The trace scope has already finished.`);let r=t(t(P,n),i.active()?.capture),a=F.type===`tool`&&(F.options.kind===`subagent-call`||F.options.kind===`remote-agent-call`)?F.options:void 0,o=a===void 0?e:()=>f({caller:V,conversationId:h.conversationId,parentRunId:h.runId,parentCallId:a.callId,agentName:a.name,capture:r},e);return b(i,{type:$.type,reference:V,capture:r,mcp:$.mcp},o,R)},async complete(e=W??{}){U||await oe(M(e))},async usage(e,t){t!==void 0&&Y.has(t)||(t!==void 0&&Y.add(t),B!==void 0&&a(B,r(e)),J={inputTokens:e.inputTokens===void 0?J?.inputTokens:(J?.inputTokens??0)+e.inputTokens,outputTokens:e.outputTokens===void 0?J?.outputTokens:(J?.outputTokens??0)+e.outputTokens,costUsd:e.costUsd===void 0?J?.costUsd:(J?.costUsd??0)+e.costUsd},await x?.usage(e,t))},turnContent(e){if(F.type!==`activation`)return x?.turnContent(e);if(U)return;let t={};e.input!==void 0&&I.attributes[`gen_ai.input.messages`]===void 0&&(t[`gen_ai.input.messages`]=e.input),e.output!==void 0&&(t[`gen_ai.output.messages`]=e.output),Object.keys(t).length>0&&$.update({attributes:t})},error(e,t){W={...W,failed:!0,error:Q().recordOutputs?e:void 0,errorCode:t??(e instanceof Error?e.name:void 0)},B!==void 0&&B.fail(W.error,W.errorCode),Z()}};for(let e of C.children??[])G.set(e.key,await _(e.identity,t(e.capture,P),e.data,$,e.attempt,{...e,deferred:!0,executionContext:R},w));!U&&B!==void 0&&F.type===`step`&&B.addEvent(`step.started`,void 0,E);let se=I.attributes[`gen_ai.input.messages`];return!U&&F.type===`model`&&typeof se==`string`&&x?.turnContent({input:se}),$}return{start(e){return _(e.identity,e.capture,e.data,void 0,void 0,{key:e.key,parent:e.parent,reference:e.reference,sample:e.reference!==void 0&&e.data.type===`activation`,startTimeMs:e.startTimeMs,links:e.links,executionContext:e.context},e.onChange??(()=>Promise.resolve()))},async restore(e,n={}){if(!E(e)){m(Error(`Invalid tracing checkpoint.`),{phase:`restore`});return}return _(e.identity,t(e.capture,n.capture),e.data,void 0,e.attempt,{...e,deferred:!0,executionContext:n.context},n.onChange??(()=>Promise.resolve()))}}}function P(e,t,n){try{e?.(t,{phase:n})}catch{}}function F(e,t={outcome:`completed`},n){async function r(r,i){if(i===void 0)return e(r);let a=await e(r),o=t;try{let e=await a.run(()=>i(a));try{o=r.describe?.(e)??t}catch(e){P(n,e,`complete`)}return e}catch(e){throw o={outcome:`failed`,errorType:e instanceof Error?e.name:`_OTHER`,error:e},e}finally{try{await a.complete(o)}catch(e){P(n,e,`complete`)}}}return r}function I(e,t,n){let r=t=>Object.defineProperties(t,{finished:{get:()=>e.finished},capture:{get:()=>e.capture},parent:{get:()=>e.parent}}),i={type:e.type,reference:e.reference,get startTimeMs(){return e.startTimeMs},get parent(){return e.parent},get finished(){return e.finished},get capture(){return e.capture},run:(t,n)=>e.run(t,n),attributes:t=>e.attributes(t),complete:t=>e.complete(t),fail:t=>e.fail(t),recordError:(t,n)=>e.error(t,n)},a=async(t,r,i)=>I(await e.child(t,r,i),t,n),o=F(async({startTimeMs:e,...t})=>a({type:`tool`,options:t},void 0,{startTimeMs:e}),void 0,n),s=e=>e===void 0?void 0:I(e,e.record().data,n),c=F(async e=>a({type:`memory`,options:e}),void 0,n);if(t.type===`activation`)return r({...i,memory:c,links:t=>e.update({links:t}),findAttempt:t=>s(e.find({type:`step`,options:{index:t.stepIndex,attempt:t.attempt}})),findTool:t=>s(L(e,t)),attempt:F(async e=>a({type:`step`,options:{index:e.stepIndex,attempt:e.attempt,runtimeContext:e.runtimeContext,channel:e.channel}},void 0,{links:e.links}),void 0,n)});if(t.type===`step`){let t=e=>F(async t=>a({type:`tool`,options:{callId:t.callId,name:t.agentName,kind:e}}),void 0,n),s=(e,t)=>a({type:`model`,options:e},t);async function l(e,t){if(typeof t!=`function`)return s(e,t);let r=await s(e),i;try{i=await r.run(t)}catch(e){try{await r.fail(e)}catch(e){P(n,e,`complete`)}throw e}try{await r.complete({outcome:`completed`,result:i})}catch(e){P(n,e,`complete`)}return i.result}return r({...i,memory:c,tool:o,callSubAgent:t(`subagent-call`),callRemoteAgent:t(`remote-agent-call`),modelCall:l,async modelStream(t,r){let i=await s(t);try{let t=await i.run(r),a=Promise.resolve(t.completion).then(e=>i.complete({outcome:`completed`,result:e}),e=>i.fail(e)).catch(e=>P(n,e,`complete`));return e.waitUntil(a),t.result}catch(e){try{await i.fail(e)}catch(e){P(n,e,`complete`)}throw e}}})}return t.type===`tool`?r({...i,memory:c,tool:o,findApproval:n=>s(e.find({type:`approval`,options:{requestId:n,callId:t.options.callId,toolName:t.options.name}})),approval:F(async e=>a({type:`approval`,options:{...e,callId:t.options.callId,toolName:t.options.name}}),{outcome:`ignored`},n)}):i}function L(e,t){for(let n of e.children){if(n.type===`tool`&&n.callId===t)return n;if(n.type===`step`||n.type===`tool`){let e=L(n,t);if(e!==void 0)return e}}}const R={emit:!0,recordInputs:!1,recordOutputs:!1};function z(n){let r=n.telemetry??e(),i=n.checkpointer;if(i!==void 0&&r.ids===void 0)throw Error(`Durable agent tracing needs stable span IDs. Pass the AgentSpanIdGenerator installed on your tracer provider to otelTelemetry({ idGenerator }).`);let a=(e,t)=>{try{n.onError?.(e,t)}catch{}},o=N({telemetry:r,serializer:n.serializer??d,durable:i!==void 0,onError:n.onError}),s=new Map;function c(e){return i===void 0?`turn:${g()}`:[`turn`,e.runId,e.turnId].map(encodeURIComponent).join(`:`)}function l(e,t){let n=Promise.resolve();return()=>{let r=t();return i===void 0||r===void 0?n:(r.writes++,n=n.then(async()=>{try{if(r.root.settled)s.delete(e),await i.delete(e);else{let t=g();await i.set(e,ee({...r.root.record(),revision:t})),r.revision=t}}catch(e){a(e,{phase:`checkpoint`,operation:`activation`})}finally{r.writes--}}),n)}}async function u(e){try{return await i.get(e)}catch(e){a(e,{phase:`restore`,operation:`activation`});return}}async function f(e,t,n,r,a){let s=i===void 0?void 0:await u(e);if(t!==void 0&&(t.writes>0||s?.revision===t.revision))return r!==void 0&&t.root.useContext(r),a!==void 0&&t.root.narrow(a),t;let c,d=l(e,()=>c),f=s===void 0?void 0:await o.restore(s,{capture:a,context:r,onChange:d}),p=f??await n?.(d);if(p!==void 0)return c={root:p,revision:s?.revision,writes:0},f===void 0&&await d(),c}function m(e,t){let n=s.get(e),r=(async()=>t(n===void 0?void 0:await n.catch(()=>void 0)))();return s.set(e,r),r.then(t=>{(t===void 0||t.root.settled)&&s.delete(e)},()=>s.delete(e)),s.size>1e3&&s.delete(s.keys().next().value),r}function h(e,n){return i=>{let a=p(),s=t(e.capture??R,a?.capture),c=a!==void 0&&e.sequence===0,l=e.parent??(c&&a?.remote!==!0?a?.caller:void 0),u=[...c&&a?.remote===!0?[{relationship:`agent.dispatch`,context:a.caller}]:[],...e.links??[]];return o.start({identity:{...e.identity,conversationId:a?.conversationId??e.identity.conversationId,agentName:e.agentName,framework:e.framework},key:n,capture:s,parent:l,reference:r.ids===void 0?void 0:e.reference,startTimeMs:e.startTimeMs,data:{type:`activation`,options:{sequence:e.sequence,attributes:e.attributes,channel:e.channel,subagent:a!==void 0||e.lineage!==void 0,subagentName:a?.agentName??e.lineage?.agentName,parentRunId:a?.parentRunId??e.lineage?.parentRunId,parentCallId:a?.parentCallId??e.lineage?.parentCallId}},links:u.length===0?void 0:u,context:e.context,onChange:i})}}function _(e){return I(e,{type:`activation`,options:{sequence:0}},n.onError)}async function v(e){let t=c(e.identity);return _((i===void 0?await f(t,void 0,h(e,t),e.context):await m(t,n=>f(t,n,h(e,t),e.context,e.capture))).root)}async function y(e){if(i===void 0)return;let t=c(e.identity),n=await m(t,n=>f(t,n,void 0,e.context));return n===void 0?void 0:_(n.root)}async function b(e){try{await e()}catch(e){a(e,{phase:`complete`})}}async function x(e,t,n){let i=r.active(),s=await o.start({identity:t.identity,key:`memory:${g()}`,capture:t.capture??i?.capture??R,parent:t.parent??i?.reference,context:t.context,data:{type:`memory`,options:{operation:e,phase:t.phase,slot:t.slot,storeId:t.storeId}}}),c;try{c=await s.run(n)}catch(e){throw await s.fail(e).catch(e=>a(e,{phase:`complete`})),e}return await s.complete({outcome:`completed`,...t.describe?.(c)}).catch(e=>a(e,{phase:`complete`})),c}return{turn:F(v,void 0,n.onError),resume:y,memory:{search:(e,t)=>x(`search_memory`,e,t),write:(e,t)=>x(`upsert_memory`,e,t)},forceFlush:()=>b(()=>r.forceFlush()),shutdown:()=>b(()=>r.shutdown())}}export{_ as AgentSpanIdGenerator,z as createAgentTracing,i as currentCapture,e as otelTelemetry};
1
+ import{f as e,g as t,i as n,l as r,m as i,n as a,o,r as s,s as c,t as l,u,v as d}from"../../_chunks/workflow/mcp-C01bDEX-.js";import{n as f,t as p}from"../../_chunks/workflow/delegation-BqhZ398D.js";import{createHash as m,randomBytes as h,randomUUID as g}from"node:crypto";var _=class{#e;#t;allocateSpanId(){return y(16)}deriveSpanId(e){return v(e)}deriveTraceId(e){let t=m(`sha256`).update(e).digest(`hex`).slice(0,32);return/^0+$/u.test(t)?`00000000000000000000000000000001`:t}generateSpanId(){let e=this.#e;return e===void 0?y(16):(this.#e=void 0,e)}generateTraceId(){let e=this.#t;return e===void 0?y(32):(this.#t=void 0,e)}withSpanId(e,t){this.#e=e;try{return t()}finally{this.#e=void 0}}withTraceId(e,t){this.#t=e;try{return t()}finally{this.#t=void 0}}};function v(e){let t=m(`sha256`).update(e).digest(`hex`).slice(0,16);return/^0+$/u.test(t)?`0000000000000001`:t}function y(e){let t;do{t=``;for(let n=0;n<e;n+=1)t+=`0123456789abcdef`[Math.trunc(Math.random()*16)]}while(!/[1-9a-f]/u.test(t));return t}function b(e,t,n,r){let i=!1;try{return e.run(t,()=>(i=!0,n()),r)}catch(t){if(i)throw t;if(e.suppressed!==void 0)try{return e.suppressed(()=>(i=!0,n()))}catch(e){if(i)throw e}return n()}}function x(e){function n(t,n=`complete`,r){try{return t()}catch(t){try{e.onError?.(t,{phase:n,reference:r})}catch{}return}}function r(r,i,a,o){let s=u(r.attributes,i)??r.attributes,c=i.emit?n(()=>e.telemetry.startSpan({...r,attributes:s},{reference:o,context:a}),`start`,o):void 0,l=c?.reference??{traceId:`0`.repeat(32),spanId:`0`.repeat(16),traceFlags:0},d=!1;return{reference:l,get capture(){return i},narrow(e){i=t(i,e)},get finished(){return d},setAttribute(e,t){let r=u({[e]:t},i);!d&&(r===void 0||e in r)&&n(()=>c?.setAttribute(e,r===void 0?t:r[e]))},addEvent(e,t,r){d||n(()=>c?.addEvent(e,t===void 0?void 0:u(t,i)??t,r))},fail(e,t){d||n(()=>c?.fail(i.recordOutputs?e:void 0,t??(e instanceof Error?e.name:void 0)))},setStatus(e){d||n(()=>c?.setStatus(e))},end(e){d||(d=!0,n(()=>c?.end(e)))},run(t){return d?t():b(e.telemetry,{type:r.type,reference:l,capture:i},t,a)}}}return{start:r,startReserved:(e,t,n,i)=>r(e,n,i,t)}}const S=32768,C=65536;function w(e,t){function n(t,n){return r(()=>Reflect.apply(e[t],e,n))}function r(e){try{let t=e();return t===void 0||new TextEncoder().encode(t).length>S?void 0:t}catch(e){try{t?.(e,{phase:`serialize`})}catch{}return}}return{json:e=>n(`json`,[e]),text:e=>n(`text`,[e]),inputMessages:t=>{let n=0,i=r(()=>{let r=e.inputMessages(t);return n=r?.omitted??0,r?.json});return i===void 0?void 0:{json:i,omitted:n}},instructions:e=>n(`instructions`,[e]),toolDefinitions:e=>n(`toolDefinitions`,[e]),outputMessages:(e,t)=>n(`outputMessages`,[e,t]),toolResults:e=>n(`toolResults`,[e])}}function T(e){return new TextEncoder().encode(JSON.stringify({...e,children:void 0})).length}function ee(e){return JSON.parse(JSON.stringify(e))}function E(e,t=C,n=0){try{if(n>16||typeof e!=`object`||!e)return!1;let r=e;if(r.children!==void 0&&(!Array.isArray(r.children)||r.children.length>1e4||!r.children.every(e=>E(e,t,n+1)))||r.version!==1||r.finished!==void 0&&typeof r.finished!=`boolean`||r.childSequence!==void 0&&(!Number.isSafeInteger(r.childSequence)||r.childSequence<0)||typeof r.key!=`string`||typeof r.startTimeMs!=`number`||!Number.isFinite(r.startTimeMs)||r.reference.traceFlags!==0&&r.reference.traceFlags!==1||r.reference.tracestate!==void 0&&(typeof r.reference.tracestate!=`string`||r.reference.tracestate.length>512)||r.parent!==void 0&&(!/^[a-f0-9]{32}$/u.test(r.parent.traceId)||!/^[a-f0-9]{16}$/u.test(r.parent.spanId))||![r.identity.conversationId,r.identity.runId,r.identity.turnId].every(e=>typeof e==`string`))return!1;let i=r.data.options;return!(!{activation:[],step:[],model:[`provider`,`modelId`],tool:[`callId`,`name`],approval:[`requestId`,`callId`,`toolName`],memory:[`operation`,`phase`,`slot`,`storeId`]}[r.data.type].every(e=>typeof i[e]==`string`)||r.data.type===`activation`&&!Number.isSafeInteger(i.sequence)||r.data.type===`step`&&!Number.isSafeInteger(i.index)||r.data.type===`memory`&&i.operation!==`search_memory`&&i.operation!==`upsert_memory`||!/^[a-f0-9]{32}$/u.test(r.reference.traceId)||!/^[a-f0-9]{16}$/u.test(r.reference.spanId)||typeof r.reference.traceFlags!=`number`||![r.capture.emit,r.capture.recordInputs,r.capture.recordOutputs].every(e=>typeof e==`boolean`)||![`activation`,`step`,`model`,`tool`,`approval`,`memory`].includes(r.data.type)||typeof r.data.options!=`object`||r.data.options===null||T(r)>t)}catch{return!1}}function D(e,t){let n=e.terminal;e={...e,children:e.children?.map(n=>D({...n,capture:{emit:n.capture.emit&&e.capture.emit,recordInputs:n.capture.recordInputs&&e.capture.recordInputs,recordOutputs:n.capture.recordOutputs&&e.capture.recordOutputs}},t))},e={...e,terminal:n===void 0||e.finished?void 0:{...n,errorCode:n.errorCode??(n.error instanceof Error?n.error.name:void 0),error:e.capture.recordOutputs?n.error instanceof Error?{name:n.error.name,message:t.text(n.error.message)}:n.error:void 0,output:e.capture.recordOutputs?n.output:void 0,response:e.capture.recordOutputs?n.response:void 0,records:e.capture.recordInputs?n.records:void 0,model:n.model===void 0?void 0:{...n.model,content:e.capture.recordOutputs?n.model.content:void 0}}},e={...e,attributes:u(e.attributes??{},e.capture)??e.attributes};let r=s(e.data,e.capture),i;try{i=t.json(r)}catch{}let a=()=>{let t=s(r,{emit:e.capture.emit,recordInputs:!1,recordOutputs:!1});return t.type===`step`&&(t={...t,options:{...t.options,runtimeContext:void 0}}),t.type===`model`&&(t={...t,options:{...t.options,runtimeContext:void 0}}),JSON.parse(JSON.stringify({...e,version:1,data:t,terminal:e.terminal===void 0?void 0:{outcome:e.terminal.outcome,failed:e.terminal.failed,errorCode:e.terminal.errorCode,usage:e.terminal.usage},attributes:u(e.attributes??{},{recordInputs:!1,recordOutputs:!1})??e.attributes}))};if(i===void 0||new TextEncoder().encode(i).length>S)return a();try{let t=JSON.parse(JSON.stringify({...e,version:1,data:JSON.parse(i)}));return T(t)<=C?t:a()}catch{return a()}}const O=1e4,k={emit:!1,recordInputs:!1,recordOutputs:!1},te=new Set([`activation`,`tool`,`approval`]),ne=new Set([`tool`,`approval`]);function A(e){return encodeURIComponent(String(e))}function j(e){switch(e.type){case`step`:return`step:${A(e.options.index)}:${A(e.options.attempt??0)}`;case`tool`:return`tool:${A(e.options.callId)}`;case`approval`:return`approval:${A(e.options.requestId)}`;default:return}}function M(e){let t=e.failed||e.outcome===`failed`;return{...e,model:`result`in e?e.result:e.model,failed:t,errorCode:`errorType`in e?e.errorType:e.errorCode}}function N(e){let i=e.telemetry,d=w(e.serializer,e.onError),p=x({telemetry:i,onError:e.onError}),m=(t,n)=>{try{e.onError?.(t,n)}catch{}};function g(t,n,r,a,o){let s=i.ids;if(e.durable&&s!==void 0&&t.type!==`model`&&t.type!==`memory`){if(t.type===`activation`&&r!==void 0)return{traceId:r.traceId,spanId:s.spanId(n),traceFlags:o.emit?r.traceFlags&1:0};if(t.type===`activation`){let e=s.traceId(n);return{traceId:e,spanId:s.spanId(n),traceFlags:o.emit&&(i.samples?.(e,a)??!0)?1:0}}return r===void 0?void 0:{...r,spanId:s.spanId(n),isRemote:!1}}}async function _(e,t,n,r,i,a,o){try{return await v(e,t,n,r,i,a,o)}catch(t){return m(t,{phase:`start`,operation:n.type,reference:a.reference}),v(e,k,s(n,k),r,i,{...a,sample:!1,reference:{traceId:a.reference?.traceId??r?.reference.traceId??a.parent?.traceId??h(16).toString(`hex`),spanId:a.reference?.spanId??h(8).toString(`hex`),traceFlags:0}},o)}}async function v(h,v,y,x,S,C,w){if(C.terminal?.error!==null&&typeof C.terminal?.error==`object`&&!(C.terminal.error instanceof Error)&&`message`in C.terminal.error&&typeof C.terminal.error.message==`string`){let e=Error(C.terminal.error.message);e.name=C.terminal.errorCode??`Error`,C={...C,terminal:{...C.terminal,error:e}}}let T=C.key,E=C.startTimeMs??Date.now(),N=C.parent??x?.reference;v.emit&&(v=t(v,i.active()?.capture));let P=v,F=s(y,P),I=c({identity:h,data:F,attempt:S,capture:P,key:T,parent:N,startTimeMs:E,links:C.links},d);I={...I,attributes:{...I.attributes,...C.attributes}},F=D({key:T,identity:h,data:F,capture:P,reference:C.reference??{traceId:`0`.repeat(32),spanId:`0`.repeat(16),traceFlags:0},startTimeMs:E},d).data;let L=C.deferred??(e.durable&&te.has(F.type)),R=C.executionContext,z=C.reference??g(y,T,N,I,P);C.sample===!0&&z!==void 0&&(z={...z,traceFlags:z.traceFlags&1&&P.emit&&(N!==void 0||(i.samples?.(z.traceId,I)??!0))?1:0});let B=L?void 0:p.start(I,P,R,z),V=z??B?.reference;if(V===void 0)throw Error(`A deferred trace scope requires a reserved reference.`);let H=!!(V.traceFlags&1);P={emit:P.emit&&H,recordInputs:P.emit&&H&&P.recordInputs,recordOutputs:P.emit&&H&&P.recordOutputs},F=s(F,P);let U=C.finished??!1,W=C.terminal,G=new Map,K=new Set,q=C.childSequence??0,J=C.usage,Y=new Set(C.usageKeys??[]),X={},re=F.type===`tool`?F.options.callId:void 0;function Z(){w()}function Q(){return t(P,i.active()?.capture)}async function ie(t,n,r={}){let i=G.get(n);if(e.durable&&i!==void 0&&!i.settled)return i.refine(t,r.startTimeMs),i;if(U)throw Error(`The operation is not permitted in this trace scope.`);for(let[e,t]of G)t.settled&&G.delete(e);let o=P;G.size>=O&&(m(Error(`Trace unfinished-child limit reached.`),{phase:`start`,operation:t.type,reference:V}),o=k),t.type===`model`&&B!==void 0&&a(B,{"agent.model.id":t.options.modelId});let s=await _(h,o,t,$,t.type===`step`?{index:t.options.index,attempt:t.options.attempt??0}:S,{key:n,executionContext:R,links:r.links,startTimeMs:r.startTimeMs},w);return(o.emit||G.size<O)&&G.set(n,s),await w(),s}async function ae(e,t){let n=F.type===`step`||F.type===`activation`;for(let r of G.values())(t||!n||!ne.has(r.type))&&await r.release({failed:e.failed,error:e.error,outcome:`abandoned`})}async function oe(t){if(K.size>0&&await Promise.allSettled(K),U)return;let r=Q();r.recordOutputs||(t={...t,error:void 0}),W?.failed&&(t={...t,outcome:t.outcome===`completed`?`failed`:t.outcome,failed:!0,error:W.error,errorCode:t.errorCode??W.errorCode}),U=!0,W=t,await ae(t,t.failed===!0||!e.durable),B??=p.start(I,P,R,V);let i=F.type===`activation`&&t.usage===void 0?{...t,usage:J}:t;try{n(B,F,i,{...r,emit:P.emit},E,d)}catch(e){m(e,{phase:`complete`,operation:F.type,reference:V})}if(a(B,X),F.type===`model`&&t.model!==void 0){await x?.usage(t.model.usage,T);let e=t.model.content;if(r.recordOutputs&&P.recordOutputs&&e!==void 0){let n=d.outputMessages(e,t.model.finishReason);n!==void 0&&x?.turnContent({output:n})}}B.end(t.endTimeMs),await w()}let $={waitUntil(e){K.add(e),x?.waitUntil(e),e.then(()=>K.delete(e),()=>K.delete(e))},snapshot:()=>ee($.record()),attributes:e=>$.update({attributes:e}),modelCall:(e,t)=>$.child({type:`model`,options:e},t),fail(e){return $.error(e),$.complete({outcome:`failed`,failed:!0})},update(e){if(U)return;let t=u(e.attributes??{},Q())??e.attributes;F.type===`activation`&&(F={...F,options:{...F.options,attributes:{...F.options.attributes,...t}}}),I={...I,attributes:{...I.attributes,...t},links:e.links??I.links},B!==void 0&&a(B,t),Z()},useContext(e){R=e;for(let t of G.values())t.useContext(e)},refine(e,t){if(U||B!==void 0)return;if(t!==void 0&&t<E&&(E=t),e.type===`tool`&&F.type===`tool`){let t=F.options;F=s({type:`tool`,options:{...t,kind:t.kind??e.options.kind,arguments:t.arguments??(Q().recordInputs?e.options.arguments:void 0)}},P)}let n=c({identity:h,data:F,attempt:S,capture:P,key:T,parent:N,startTimeMs:E,links:I.links},d),r=Object.fromEntries(Object.entries(n.attributes).filter(([,e])=>e!==void 0));I={...I,name:n.name,kind:n.kind,startTimeMs:E,attributes:{...I.attributes,...r}},Z()},narrow(e){P={...t(P,e),emit:P.emit},F=s(F,P);let n=u(I.attributes,P)??I.attributes;I={...I,attributes:F.type===`activation`?{...n,"agent.trace.content.input":P.recordInputs,"agent.trace.content.output":P.recordOutputs}:n};let r=u(X,P)??X;for(let e of Object.keys(X))e in r||delete X[e];!P.recordOutputs&&W?.error!==void 0&&(W={...W,error:void 0}),B?.narrow(P);for(let e of G.values())e.narrow(P);Z()},async release(t){U?await ae(t,t.failed===!0||!e.durable):await oe(M(t))},record(){return D({version:1,finished:U,terminal:W,usage:J,usageKeys:[...Y],attributes:{...I.attributes,...X},childSequence:q,children:[...G.values()].filter(e=>!e.settled).map(e=>e.record()),key:T,identity:h,data:F,capture:P,reference:V,parent:N,startTimeMs:E,attempt:S,links:I.links},d)},get parent(){return N},get startTimeMs(){return E},child(t,n,r){if(!o(t).includes(F.type))throw Error(`The operation is not permitted in this trace scope.`);let i=n===void 0?(e.durable?j(t):void 0)??`${t.type}:${q++}`:`${t.type}:${A(n)}`;return ie(t,`${T}/${i}`,r)},find(e){let t=j(e),n=t===void 0?void 0:G.get(`${T}/${t}`);return n===void 0||n.settled?void 0:n},get children(){return[...G.values()].filter(e=>!e.settled)},type:F.type,reference:V,callId:re,get capture(){return P},mcp:l({serializer:d,...P,write(e){let t=u(e,Q())??e;Object.assign(X,t),B!==void 0&&a(B,t)},error(e,t){$.error(e,t)}}),get finished(){return U},get settled(){return U&&[...G.values()].every(e=>e.settled)},run(e,n){if(U)throw Error(`The trace scope has already finished.`);let r=t(t(P,n),i.active()?.capture),a=F.type===`tool`&&(F.options.kind===`subagent-call`||F.options.kind===`remote-agent-call`)?F.options:void 0,o=a===void 0?e:()=>f({caller:V,conversationId:h.conversationId,parentRunId:h.runId,parentCallId:a.callId,agentName:a.name,capture:r},e);return b(i,{type:$.type,reference:V,capture:r,mcp:$.mcp},o,R)},async complete(e=W??{}){U||await oe(M(e))},async usage(e,t){t!==void 0&&Y.has(t)||(t!==void 0&&Y.add(t),B!==void 0&&a(B,r(e)),J={inputTokens:e.inputTokens===void 0?J?.inputTokens:(J?.inputTokens??0)+e.inputTokens,outputTokens:e.outputTokens===void 0?J?.outputTokens:(J?.outputTokens??0)+e.outputTokens,costUsd:e.costUsd===void 0?J?.costUsd:(J?.costUsd??0)+e.costUsd},await x?.usage(e,t))},turnContent(e){if(F.type!==`activation`)return x?.turnContent(e);if(U)return;let t={};e.input!==void 0&&I.attributes[`gen_ai.input.messages`]===void 0&&(t[`gen_ai.input.messages`]=e.input),e.output!==void 0&&(t[`gen_ai.output.messages`]=e.output),Object.keys(t).length>0&&$.update({attributes:t})},error(e,t){W={...W,failed:!0,error:Q().recordOutputs?e:void 0,errorCode:t??(e instanceof Error?e.name:void 0)},B!==void 0&&B.fail(W.error,W.errorCode),Z()}};for(let e of C.children??[])G.set(e.key,await _(e.identity,t(e.capture,P),e.data,$,e.attempt,{...e,deferred:!0,executionContext:R},w));!U&&B!==void 0&&F.type===`step`&&B.addEvent(`step.started`,void 0,E);let se=I.attributes[`gen_ai.input.messages`];return!U&&F.type===`model`&&typeof se==`string`&&x?.turnContent({input:se}),$}return{start(e){return _(e.identity,e.capture,e.data,void 0,void 0,{key:e.key,parent:e.parent,reference:e.reference,sample:e.reference!==void 0&&e.data.type===`activation`,startTimeMs:e.startTimeMs,links:e.links,executionContext:e.context},e.onChange??(()=>Promise.resolve()))},async restore(e,n={}){if(!E(e)){m(Error(`Invalid tracing checkpoint.`),{phase:`restore`});return}return _(e.identity,t(e.capture,n.capture),e.data,void 0,e.attempt,{...e,deferred:!0,executionContext:n.context},n.onChange??(()=>Promise.resolve()))}}}function P(e,t,n){try{e?.(t,{phase:n})}catch{}}function F(e,t={outcome:`completed`},n){async function r(r,i){if(i===void 0)return e(r);let a=await e(r),o=t;try{let e=await a.run(()=>i(a));try{o=r.describe?.(e)??t}catch(e){P(n,e,`complete`)}return e}catch(e){throw o={outcome:`failed`,errorType:e instanceof Error?e.name:`_OTHER`,error:e},e}finally{try{await a.complete(o)}catch(e){P(n,e,`complete`)}}}return r}function I(e,t,n){let r=t=>Object.defineProperties(t,{finished:{get:()=>e.finished},capture:{get:()=>e.capture},parent:{get:()=>e.parent}}),i={type:e.type,reference:e.reference,get startTimeMs(){return e.startTimeMs},get parent(){return e.parent},get finished(){return e.finished},get capture(){return e.capture},run:(t,n)=>e.run(t,n),attributes:t=>e.attributes(t),complete:t=>e.complete(t),fail:t=>e.fail(t),recordError:(t,n)=>e.error(t,n)},a=async(t,r,i)=>I(await e.child(t,r,i),t,n),o=F(async({startTimeMs:e,...t})=>a({type:`tool`,options:t},void 0,{startTimeMs:e}),void 0,n),s=e=>e===void 0?void 0:I(e,e.record().data,n),c=F(async e=>a({type:`memory`,options:e}),void 0,n);if(t.type===`activation`)return r({...i,memory:c,links:t=>e.update({links:t}),findAttempt:t=>s(e.find({type:`step`,options:{index:t.stepIndex,attempt:t.attempt}})),findTool:t=>s(L(e,t)),attempt:F(async e=>a({type:`step`,options:{index:e.stepIndex,attempt:e.attempt,runtimeContext:e.runtimeContext,channel:e.channel}},void 0,{links:e.links}),void 0,n)});if(t.type===`step`){let t=e=>F(async t=>a({type:`tool`,options:{callId:t.callId,name:t.agentName,kind:e}}),void 0,n),s=(e,t)=>a({type:`model`,options:e},t);async function l(e,t){if(typeof t!=`function`)return s(e,t);let r=await s(e),i;try{i=await r.run(t)}catch(e){try{await r.fail(e)}catch(e){P(n,e,`complete`)}throw e}try{await r.complete({outcome:`completed`,result:i})}catch(e){P(n,e,`complete`)}return i.result}return r({...i,memory:c,tool:o,callSubAgent:t(`subagent-call`),callRemoteAgent:t(`remote-agent-call`),modelCall:l,async modelStream(t,r){let i=await s(t);try{let t=await i.run(r),a=Promise.resolve(t.completion).then(e=>i.complete({outcome:`completed`,result:e}),e=>i.fail(e)).catch(e=>P(n,e,`complete`));return e.waitUntil(a),t.result}catch(e){try{await i.fail(e)}catch(e){P(n,e,`complete`)}throw e}}})}return t.type===`tool`?r({...i,memory:c,tool:o,findApproval:n=>s(e.find({type:`approval`,options:{requestId:n,callId:t.options.callId,toolName:t.options.name}})),approval:F(async e=>a({type:`approval`,options:{...e,callId:t.options.callId,toolName:t.options.name}}),{outcome:`ignored`},n)}):i}function L(e,t){for(let n of e.children){if(n.type===`tool`&&n.callId===t)return n;if(n.type===`step`||n.type===`tool`){let e=L(n,t);if(e!==void 0)return e}}}const R={emit:!0,recordInputs:!1,recordOutputs:!1};function z(n){let r=n.telemetry??e(),i=n.checkpointer;if(i!==void 0&&r.ids===void 0)throw Error(`Durable agent tracing needs stable span IDs. Pass the AgentSpanIdGenerator installed on your tracer provider to otelTelemetry({ idGenerator }).`);let a=(e,t)=>{try{n.onError?.(e,t)}catch{}},o=N({telemetry:r,serializer:n.serializer??d,durable:i!==void 0,onError:n.onError}),s=new Map;function c(e){return i===void 0?`turn:${g()}`:[`turn`,e.runId,e.turnId].map(encodeURIComponent).join(`:`)}function l(e,t){let n=Promise.resolve();return()=>{let r=t();return i===void 0||r===void 0?n:(r.writes++,n=n.then(async()=>{try{if(r.root.settled)s.delete(e),await i.delete(e);else{let t=g();await i.set(e,ee({...r.root.record(),revision:t})),r.revision=t}}catch(e){a(e,{phase:`checkpoint`,operation:`activation`})}finally{r.writes--}}),n)}}async function u(e){try{return await i.get(e)}catch(e){a(e,{phase:`restore`,operation:`activation`});return}}async function f(e,t,n,r,a){let s=i===void 0?void 0:await u(e);if(t!==void 0&&(t.writes>0||s?.revision===t.revision))return r!==void 0&&t.root.useContext(r),a!==void 0&&t.root.narrow(a),t;let c,d=l(e,()=>c),f=s===void 0?void 0:await o.restore(s,{capture:a,context:r,onChange:d}),p=f??await n?.(d);if(p!==void 0)return c={root:p,revision:s?.revision,writes:0},f===void 0&&await d(),c}function m(e,t){let n=s.get(e),r=(async()=>t(n===void 0?void 0:await n.catch(()=>void 0)))();return s.set(e,r),r.then(t=>{(t===void 0||t.root.settled)&&s.delete(e)},()=>s.delete(e)),s.size>1e3&&s.delete(s.keys().next().value),r}function h(e,n){return i=>{let a=p(),s=t(e.capture??R,a?.capture),c=a!==void 0&&e.sequence===0,l=e.parent??(c&&a?.remote!==!0?a?.caller:void 0),u=[...c&&a?.remote===!0?[{relationship:`agent.dispatch`,context:a.caller}]:[],...e.links??[]];return o.start({identity:{...e.identity,conversationId:a?.conversationId??e.identity.conversationId,agentName:e.agentName,framework:e.framework},key:n,capture:s,parent:l,reference:r.ids===void 0?void 0:e.reference,startTimeMs:e.startTimeMs,data:{type:`activation`,options:{sequence:e.sequence,attributes:e.attributes,channel:e.channel,subagent:a!==void 0||e.lineage!==void 0,subagentName:a?.agentName??e.lineage?.agentName,parentRunId:a?.parentRunId??e.lineage?.parentRunId,parentCallId:a?.parentCallId??e.lineage?.parentCallId}},links:u.length===0?void 0:u,context:e.context,onChange:i})}}function _(e){return I(e,{type:`activation`,options:{sequence:0}},n.onError)}async function v(e){let t=c(e.identity);return _((i===void 0?await f(t,void 0,h(e,t),e.context):await m(t,n=>f(t,n,h(e,t),e.context,e.capture))).root)}async function y(e){if(i===void 0)return;let t=c(e.identity),n=await m(t,n=>f(t,n,void 0,e.context));return n===void 0?void 0:_(n.root)}async function b(e){try{await e()}catch(e){a(e,{phase:`complete`})}}async function x(e,t,n){let i=r.active(),s=await o.start({identity:t.identity,key:`memory:${g()}`,capture:t.capture??i?.capture??R,parent:t.parent??i?.reference,context:t.context,data:{type:`memory`,options:{operation:e,phase:t.phase,slot:t.slot,storeId:t.storeId}}}),c;try{c=await s.run(n)}catch(e){throw await s.fail(e).catch(e=>a(e,{phase:`complete`})),e}return await s.complete({outcome:`completed`,...t.describe?.(c)}).catch(e=>a(e,{phase:`complete`})),c}return{turn:F(v,void 0,n.onError),resume:y,memory:{search:(e,t)=>x(`search_memory`,e,t),write:(e,t)=>x(`upsert_memory`,e,t)},forceFlush:()=>b(()=>r.forceFlush()),shutdown:()=>b(()=>r.shutdown())}}export{_ as AgentSpanIdGenerator,z as createAgentTracing,i as currentCapture,e as otelTelemetry};
@@ -1 +1 @@
1
- import{S as e,_ as t,a as n,b as r,c as i,d as a,h as o,p as s,t as c,u as l,x as u,y as d}from"../../_chunks/workflow/mcp-CrGp4EC8.js";export{t as CONTENT_ATTRIBUTE_LIMIT,i as USAGE_FIELDS,a as activeTraceOperation,d as boundedPrincipalId,r as contentAttribute,n as invocationName,c as mcpLifecycle,u as telemetryByteLength,e as truncateTelemetryText,o as withCapture,s as withErrorContent,l as withoutDeclinedContent};
1
+ import{S as e,_ as t,a as n,b as r,c as i,d as a,h as o,p as s,t as c,u as l,x as u,y as d}from"../../_chunks/workflow/mcp-C01bDEX-.js";export{t as CONTENT_ATTRIBUTE_LIMIT,i as USAGE_FIELDS,a as activeTraceOperation,d as boundedPrincipalId,r as contentAttribute,n as invocationName,c as mcpLifecycle,u as telemetryByteLength,e as truncateTelemetryText,o as withCapture,s as withErrorContent,l as withoutDeclinedContent};
@@ -1,5 +1,5 @@
1
- import{D as e,E as t,c as n,l as r,r as i,s as a,u as o}from"./esm-DtrPCf49.js";const s=32768,c={json:p,text:m,inputMessages:e=>ne(e,e=>typeof e==`string`?e:void 0),instructions:re,toolDefinitions:se,outputMessages:ie,toolResults:ae},l=new TextEncoder,u=new TextDecoder;function d(e){return l.encode(e).length}function f(e,t){let n=e.slice(0,t+1),r=l.encode(n);if(n.length===e.length&&r.length<=t)return e;let i=`... [truncated]`.slice(0,t),a=Math.max(0,t-i.length);for(;a>0&&(r[a]&192)==128;)--a;return u.decode(r.subarray(0,a))+i}function ee(e){return typeof e==`string`&&e.length>0&&e.length<=1024&&d(e)<=1024?e:void 0}function te(e){let t=Error(f(e.message,4096));return t.name=f(e.name,128),t.stack=e.stack===void 0?void 0:f(e.stack,8192),t}function p(e){if(e===void 0)return;let t;try{t=JSON.stringify(e)}catch{return}if(t!==void 0)return m(t)}function ne(e,t){if(!Array.isArray(e))return;let n=e.flatMap(e=>{if(!x(e)||e.role===`system`||typeof e.role!=`string`)return[];let n=y(e.content);if(n.length===0)return[];let r=e.role===`user`?t?.(e.kind):void 0;return[r===void 0?{parts:n,role:e.role}:{kind:r,parts:n,role:e.role}]});for(let e=0;e<n.length;e+=1){let t=g(n.slice(e));if(t!==void 0)return t}return le(n)??g([])}function re(e){let t=ce(e);if(t!==void 0)return _(t,e=>[{content:e,type:`text`}])}function ie(e,t){let n=y(e),r=t===`tool-calls`?`tool_call`:t,i=e=>[{finish_reason:r,parts:e,role:`assistant`}];return g(i(n))??_(v(n),e=>i([{content:e,type:`text`}]),!0)}function ae(e){if(e.length===0)return;let t=h(e);if(t!==void 0&&t.length<=32768)return t;for(let t=s;t>=0;t=t>=256?Math.floor(t/2):-1){let n=h(e.map(e=>oe(e,t)));if(n!==void 0&&n.length<=32768)return n}}function oe(e,t){let n={toolName:e.toolName};for(let r of[`input`,`output`,`error`]){if(!(r in e))continue;let i=e[r],a=typeof i==`string`?i:h(i)??``;n[r]=a.length<=t?a:`${a.slice(0,t)}… [truncated]`}return n}function se(e){if(!Array.isArray(e))return;let t=e.flatMap(e=>{if(!x(e)||typeof e.name!=`string`)return[];let t={name:e.name};return typeof e.description==`string`&&(t.description=e.description),e.inputSchema!==void 0&&(t.parameters=e.inputSchema),[t]});if(t.length===0)return;let n=[],r=2;for(let e of t){let t=h(e);if(t===void 0)break;let i=r+(n.length===0?0:1)+t.length;if(i>32768)break;n.push(t),r=i}return`[${n.join(`,`)}]`}function ce(e){if(typeof e==`string`)return e.length===0?void 0:e;if(!x(e)&&!Array.isArray(e))return;let t=Array.isArray(e)?e:[e],n=[];for(let e of t)if(x(e)){if(typeof e.content==`string`)n.push(e.content);else if(Array.isArray(e.content))for(let t of e.content)x(t)&&t.type===`text`&&typeof t.text==`string`&&n.push(t.text)}let r=n.join(`
1
+ import{D as e,E as t,c as n,l as r,r as i,s as a,u as o}from"./esm-DtrPCf49.js";const s=32768,c={json:p,text:m,inputMessages:e=>ne(e,e=>typeof e==`string`?e:void 0),instructions:re,toolDefinitions:se,outputMessages:ie,toolResults:ae},l=new TextEncoder,u=new TextDecoder;function d(e){return l.encode(e).length}function f(e,t){let n=e.slice(0,t+1),r=l.encode(n);if(n.length===e.length&&r.length<=t)return e;let i=`... [truncated]`.slice(0,t),a=Math.max(0,t-i.length);for(;a>0&&(r[a]&192)==128;)--a;return u.decode(r.subarray(0,a))+i}function ee(e){return typeof e==`string`&&e.length>0&&e.length<=1024&&d(e)<=1024?e:void 0}function te(e){let t=Error(f(e.message,4096));return t.name=f(e.name,128),t.stack=e.stack===void 0?void 0:f(e.stack,8192),t}function p(e){if(e===void 0)return;let t;try{t=JSON.stringify(e)}catch{return}if(t!==void 0)return m(t)}function ne(e,t){if(!Array.isArray(e))return;let n=e.flatMap(e=>{if(!x(e)||e.role===`system`||typeof e.role!=`string`)return[];let n=y(e.content);if(n.length===0)return[];let r=e.role===`user`?t?.(e.kind):void 0;return[r===void 0?{parts:n,role:e.role}:{kind:r,parts:n,role:e.role}]});for(let e=0;e<n.length;e+=1){let t=g(n.slice(e));if(t!==void 0)return{json:t,omitted:e}}let r=le(n);return r===void 0?{json:`[]`,omitted:n.length}:{json:r,omitted:n.length-1}}function re(e){let t=ce(e);if(t!==void 0)return _(t,e=>[{content:e,type:`text`}])}function ie(e,t){let n=y(e),r=t===`tool-calls`?`tool_call`:t,i=e=>[{finish_reason:r,parts:e,role:`assistant`}];return g(i(n))??_(v(n),e=>i([{content:e,type:`text`}]),!0)}function ae(e){if(e.length===0)return;let t=h(e);if(t!==void 0&&t.length<=32768)return t;for(let t=s;t>=0;t=t>=256?Math.floor(t/2):-1){let n=h(e.map(e=>oe(e,t)));if(n!==void 0&&n.length<=32768)return n}}function oe(e,t){let n={toolName:e.toolName};for(let r of[`input`,`output`,`error`]){if(!(r in e))continue;let i=e[r],a=typeof i==`string`?i:h(i)??``;n[r]=a.length<=t?a:`${a.slice(0,t)}… [truncated]`}return n}function se(e){if(!Array.isArray(e))return;let t=e.flatMap(e=>{if(!x(e)||typeof e.name!=`string`)return[];let t={name:e.name};return typeof e.description==`string`&&(t.description=e.description),e.inputSchema!==void 0&&(t.parameters=e.inputSchema),[t]});if(t.length===0)return;let n=[],r=2;for(let e of t){let t=h(e);if(t===void 0)break;let i=r+(n.length===0?0:1)+t.length;if(i>32768)break;n.push(t),r=i}return`[${n.join(`,`)}]`}function ce(e){if(typeof e==`string`)return e.length===0?void 0:e;if(!x(e)&&!Array.isArray(e))return;let t=Array.isArray(e)?e:[e],n=[];for(let e of t)if(x(e)){if(typeof e.content==`string`)n.push(e.content);else if(Array.isArray(e.content))for(let t of e.content)x(t)&&t.type===`text`&&typeof t.text==`string`&&n.push(t.text)}let r=n.join(`
2
2
 
3
3
  `).trim();return r.length===0?void 0:r}function m(e){if(e.length!==0)return e.length<=32768?e:`${e.slice(0,s)}… [truncated]`}function h(e){try{return JSON.stringify(e)}catch{return}}function g(e){let t=h(e);return t!==void 0&&t.length<=32768?t:void 0}function le(e){let t=e.at(-1);if(t===void 0||typeof t.role!=`string`)return;let n=v(t.parts),r=typeof t.kind==`string`?{kind:t.kind,role:t.role}:{role:t.role};return _(n,e=>[{...r,parts:[{content:e,type:`text`}]}],!0)}function _(e,t,n=!1){if(!n&&e.length<=32768){let n=g(t(e));if(n!==void 0)return n}for(let n=Math.min(e.length,s);n>0;n-=256){let r=g(t(`${e.slice(0,n)}… [truncated]`));if(r!==void 0)return r}return g(t(`… [truncated]`))}function v(e){if(!Array.isArray(e))return``;let t=``;for(let n of e){if(!x(n)||n.type!==`text`||typeof n.content!=`string`)continue;let e=t.length===0?``:`
4
- `,r=32769-t.length-e.length;if(r<=0)break;t+=e+n.content.slice(0,r)}return t}function y(e){if(typeof e==`string`)return[{content:e,type:`text`}];if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=ue(n);e!==void 0&&t.push(e)}return t}function ue(e){if(x(e)&&typeof e.type==`string`)switch(e.type){case`text`:case`reasoning`:{let t=typeof e.text==`string`?e.text:e.content;return typeof t==`string`?{content:t,type:e.type}:void 0}case`tool-call`:return{arguments:e.input,id:b(e.toolCallId)??b(e.callId)??null,name:e.toolName,type:`tool_call`};case`tool-result`:return{id:b(e.toolCallId)??b(e.callId)??null,response:de(e.output),type:`tool_call_response`};case`tool-error`:return{id:b(e.toolCallId)??b(e.callId)??null,response:e.error instanceof Error?e.error.message:e.error,type:`tool_call_response`};default:return{type:e.type}}}function de(e){return x(e)?(e.type===`text`||e.type===`error-text`||e.type===`json`||e.type===`error-json`)&&`value`in e?e.value:e.type===`execution-denied`?{denied:!0,reason:e.reason}:e:e}function b(e){return typeof e==`string`?e:void 0}function x(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function fe(e,t,n){e.setAttribute(`error.type`,f(n??(t instanceof Error?t.name:`_OTHER`),128));let i=t!==void 0&&!(t instanceof Error);if(i){let e=p(t),n=typeof t==`object`&&t?Reflect.get(t,`message`):void 0,r=typeof t==`string`?m(t):typeof n==`string`?m(e===void 0?n:`${n}\n${e}`):e;r!==void 0&&(t=Error(r))}if(t instanceof Error){let a=te(t);i&&n!==void 0&&(a.name=f(n,128)),e.recordException(a),e.setStatus({code:r.ERROR,message:a.message})}else e.setStatus({code:r.ERROR})}function S(e,t){let n=e.emit&&(t?.emit??!0);return{emit:n,recordInputs:n&&e.recordInputs&&(t?.recordInputs??!0),recordOutputs:n&&e.recordOutputs&&(t?.recordOutputs??!0)}}function pe(e,t){let n=e.mcp;return{type:e.type,reference:e.reference,capture:t,mcp:n===void 0?void 0:{update:e=>n.update(e),error:(e,r)=>n.error(t.recordOutputs?e:void 0,r??(e instanceof Error?e.name:void 0)),arguments:e=>{t.recordInputs&&n.arguments(e)},result:e=>{t.recordOutputs&&n.result(e)}}}}const C=e(`agent.tracing.capture`);function me(){return a.active().getValue(C)}function w(e,t){return e.setValue(C,t)}const T=e(`agent.tracing.active-operation`),E=e(`OpenTelemetry SDK Context Key SUPPRESS_TRACING`);function D(e,t){return w(e,{emit:!0,recordInputs:t,recordOutputs:t})}function O(e){return e.setValue(E,!0)}function k(e=a.active()){return typeof e.getValue==`function`?e.getValue(T):void 0}function he(e,n){let r=n??t;return e===void 0?r:i.setSpan(r,i.wrapSpanContext(A(e)))}function A(e){return{...e,traceState:e.tracestate===void 0?void 0:n(e.tracestate)}}function ge(e){return{traceId:e.traceId,spanId:e.spanId,traceFlags:e.traceFlags,isRemote:e.isRemote,tracestate:e.traceState?.serialize()}}function j(e,t,n){return e?.attributes(t,n)??n}const _e={attributes(e,t){let n=t[`agent.run.id`];return ve()&&typeof n==`string`&&t[`vercel.session_id`]===void 0?{...t,"vercel.session_id":n}:t},link:(e,t)=>({"agent.link.type":t.relationship})};function ve(){return globalThis.process?.env?.VERCEL_ENV!==void 0}function M(e={}){let n=e.provider??i.getTracerProvider(),s=n.getTracer(e.tracerName??`agent.tracing`,e.tracerVersion),c=e.mapping??_e,l=e.idGenerator;function u(t){return e[t]??(async()=>{let e=n[t];if(e===void 0)throw Error(`The tracer provider does not support ${t}.`);await e.call(n)})}function d(e,t){let n=s.startSpan(e.name,{attributes:j(c,e,e.attributes),kind:e.kind===void 0?void 0:o[e.kind],root:e.root,startTime:e.startTimeMs,links:e.links?.map(t=>({context:A(t.context),attributes:c?.link(e,t)??{"agent.link.type":t.relationship}}))},he(e.root?void 0:e.parent,t));return{reference:ge(n.spanContext()),setAttribute(t,r){for(let[i,a]of Object.entries(j(c,e,{[t]:r})))a!==void 0&&n.setAttribute(i,a)},addEvent:(e,t,r)=>{n.addEvent(e,t,r)},fail:(e,t)=>fe(n,e,t),setStatus:e=>{n.setStatus({code:r[e]})},end:e=>{n.end(e)}}}return{startSpan(e,{reference:t,context:n}={}){if(t===void 0||l===void 0)return d(e,n);let r=l.withTraceId(t.traceId,()=>l.withSpanId(t.spanId,()=>d(e,n)));if(r.reference.spanId!==t.spanId||r.reference.traceId!==t.traceId)throw Error(`The tracer provider must use the telemetry's ID generator.`);return r},active:()=>k(),suppressed(e){return a.with(D(O(t),!1),e)},run(e,t,n){let r=S(e.capture,k()?.capture),o=i.setSpan(n??a.active(),i.wrapSpanContext(A(e.reference)));return r=S(r,o.getValue(T)?.capture),o=o.setValue(T,pe(e,r)),o=w(o,r),(!r.emit||!(e.reference.traceFlags&1))&&(o=O(o)),a.with(o,t)},samples:(t,n)=>e.samplesTrace?.(t,{name:n.name,attributes:j(c,n,n.attributes)})??!0,ids:l===void 0?void 0:{traceId:e=>l.deriveTraceId(e),spanId:e=>l.deriveSpanId(e)},forceFlush:u(`forceFlush`),shutdown:u(`shutdown`)}}const N=new Set([`agent.channel.delivery.input`,`agent.session.title`,`agent.approval.request`,`ai.documents`,`ai.prompt`,`ai.prompt.toolChoice`,`ai.prompt.tools`,`ai.value`,`ai.values`,`gen_ai.input.messages`,`gen_ai.memory.records`,`gen_ai.system_instructions`,`gen_ai.tool.call.arguments`,`gen_ai.tool.definitions`]),P=new Set([`agent.approval.response`,`ai.embedding`,`ai.embeddings`,`ai.ranking`,`ai.response.files`,`ai.response.object`,`ai.response.reasoning`,`ai.response.text`,`ai.response.toolCalls`,`ai.response.tool_calls`,`ai.response.tool_results`,`ai.toolCall.args`,`ai.toolCall.result`,`gen_ai.output.messages`,`gen_ai.tool.call.result`]),F=`agent.trace.content.input`,I=`agent.trace.content.output`;function L(e,t){return!t.recordInputs&&N.has(e)?!0:!t.recordOutputs&&P.has(e)}function R(e,t){return!t.recordInputs&&e[F]===!0||!t.recordOutputs&&e[I]===!0}function ye(e,t,n){return e===F&&t===!0&&!n.recordInputs||e===I&&t===!0&&!n.recordOutputs?!1:t}function z(e,t){let n=Object.keys(e);if(!n.some(e=>L(e,t))&&!R(e,t))return;let r={};for(let i of n)L(i,t)||(r[i]=ye(i,e[i],t));return r}const B={costUsd:`agent.usage.cost_usd`,inputTokens:`agent.usage.input_tokens`,outputTokens:`agent.usage.output_tokens`,cacheReadTokens:`agent.usage.cache_read_tokens`,cacheWriteTokens:`agent.usage.cache_write_tokens`};function be(e){return{"agent.run.id":e.runId,"agent.trace.schema.version":4,"gen_ai.conversation.id":e.conversationId}}function V(e,t=e){return{"operation.name":t,"resource.name":e}}function H(e){return{"agent.framework.name":e?.name||void 0,"agent.framework.version":e?.version||void 0}}function U(e,t=!1){return t?{[B.costUsd]:e.costUsd,"gen_ai.usage.input_tokens":e.inputTokens,"gen_ai.usage.output_tokens":e.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.inputTokenDetails?.cacheReadTokens,"gen_ai.usage.cache_write.input_tokens":e.inputTokenDetails?.cacheWriteTokens}:{[B.costUsd]:e.costUsd,[B.inputTokens]:e.inputTokens,[B.outputTokens]:e.outputTokens,[B.cacheReadTokens]:e.inputTokenDetails?.cacheReadTokens,[B.cacheWriteTokens]:e.inputTokenDetails?.cacheWriteTokens}}function W(e){let t={},n=new WeakSet,r=256;function i(e,a,o){if(!(r<=0||o>8||a==null)){if(typeof a==`string`||typeof a==`number`||typeof a==`boolean`)t[e]=a,--r;else if(Array.isArray(a))a.length<=256&&a.every(e=>typeof e==`string`||typeof e==`number`||typeof e==`boolean`)&&new Set(a.map(e=>typeof e)).size===1&&(t[e]=a,--r);else if(typeof a==`object`&&!n.has(a)){n.add(a);for(let t of Object.keys(a)){if(r<=0)break;i(`${e}.${t}`,Reflect.get(a,t),o+1)}n.delete(a)}}}return e!==void 0&&i(`ai.settings.context`,e,0),t}const G=e=>e===void 0?`invoke_agent`:`invoke_agent ${e}`,K=e=>`chat ${e}`,q=e=>`execute_tool ${e}`,J={approval:`agent.approval`,step:`agent.step`},Y={toolArguments:`gen_ai.tool.call.arguments`,toolResult:`gen_ai.tool.call.result`,approvalRequest:`agent.approval.request`,approvalResponse:`agent.approval.response`,memoryRecords:`gen_ai.memory.records`};function X(e,t){for(let[n,r]of Object.entries(t))r!==void 0&&e.setAttribute(n,r)}function Z(e){return{"agent.turn.id":e.attempt.turnId,"agent.step.index":e.attempt.index,"agent.step.attempt":e.attempt.attempt}}function Q(e,t){return z(e??{},t)??e}function xe(e,t){return{[Y.toolArguments]:t.capture.recordInputs?t.serializer.json(e):void 0}}function Se(e,t,n){n.capture.recordOutputs&&X(e,{[Y.toolResult]:n.serializer.json(t.output)})}const Ce={activation:{parents:[],prepare({options:e},t){let{identity:n,capture:r}=t;return{name:G(n.agentName),attributes:{...t.attributes,...H(n.framework),...V(G(n.agentName),`invoke_agent`),"agent.channel.kind":e.channel?.kind,"agent.session.origin":e.channel?.origin,"agent.name":n.agentName,"gen_ai.agent.name":n.agentName,"gen_ai.operation.name":`invoke_agent`,"agent.turn.id":n.turnId,"agent.turn.sequence":e.sequence,"agent.run.type":e.subagent?`subagent`:`session`,"agent.parent_call.id":e.parentCallId,"agent.parent_run.id":e.parentRunId,"agent.subagent.name":e.subagentName,"agent.trace.content.input":r.recordInputs,"agent.trace.content.output":r.recordOutputs,...Q(e.attributes,r)}}},complete(e,t,n,r){e.addEvent(`turn.started`,void 0,r.startTimeMs),(n.outcomeUnknown!==!0||n.failed===!0)&&e.addEvent(`turn.${r.outcome}`,void 0,n.endTimeMs)},redact(e,t){return{...e,options:{...e.options,attributes:Q(e.options.attributes,t)}}}},step:{parents:[`activation`],prepare({options:e},t){return{name:J.step,attributes:{...t.attributes,...H(t.identity.framework),...Z(t),...V(J.step,`workflow`),"gen_ai.operation.name":`workflow`,"agent.name":t.identity.agentName,"agent.channel.kind":e.channel?.kind===`unknown`?void 0:e.channel?.kind,"agent.session.origin":e.channel?.kind===`unknown`?void 0:e.channel?.origin,...W(e.runtimeContext)}}},complete(e,t,n){e.addEvent(n.failed?`step.failed`:`step.completed`,void 0,n.endTimeMs)}},model:{parents:[`step`],prepare({options:e},t){return{name:K(e.modelId),kind:`CLIENT`,attributes:{...t.attributes,...V(K(e.modelId),`chat`),"gen_ai.agent.name":t.identity.agentName,"gen_ai.operation.name":`chat`,"gen_ai.provider.name":e.provider,"gen_ai.request.model":e.modelId,...W(e.runtimeContext),...t.capture.recordInputs&&e.messages!==void 0?{"gen_ai.input.messages":t.serializer.inputMessages(e.messages),"gen_ai.system_instructions":t.serializer.instructions(e.instructions)}:void 0,"gen_ai.tool.definitions":t.capture.recordInputs?t.serializer.toolDefinitions(e.tools):void 0}}},complete(e,t,n,r){n.model!==void 0&&X(e,Oe(n.model,r.serializer,r.capture.recordOutputs))},redact(e,t){return t.recordInputs?e:{...e,options:{...e.options,messages:void 0,instructions:void 0,tools:void 0}}}},tool:{parents:[`step`,`tool`],prepare({options:e},t){let n=e.kind===`subagent-call`||e.kind===`remote-agent-call`;return{name:q(e.name),kind:e.kind===`remote-agent-call`?`CLIENT`:`INTERNAL`,attributes:{...t.attributes,...H(t.identity.framework),...Z(t),...V(q(e.name),`execute_tool`),"gen_ai.agent.name":n?e.name:t.identity.agentName,"gen_ai.operation.name":`execute_tool`,"gen_ai.tool.call.id":e.callId,"gen_ai.tool.name":e.name,"gen_ai.tool.type":`function`,"agent.action.kind":e.kind,"agent.action.name":e.kind===void 0?void 0:e.name,"agent.invocation.role":n?`caller`:void 0,...xe(e.arguments,t)}}},complete(e,t,n,r){n.outcome!==void 0&&X(e,{"agent.action.outcome":n.outcome}),Se(e,n,r)},redact(e,t){return t.recordInputs?e:{...e,options:{...e.options,arguments:void 0}}}},approval:{parents:[`tool`],prepare({options:e},t){return{name:J.approval,attributes:{...t.attributes,...H(t.identity.framework),...Z(t),...V(J.approval,`workflow`),"gen_ai.operation.name":`workflow`,"gen_ai.tool.call.id":e.callId,"agent.action.name":e.toolName,"agent.approval.kind":`tool-approval`,"agent.approval.request_id":e.requestId,[Y.approvalRequest]:t.capture.recordInputs?t.serializer.json(e.request):void 0}}},complete(e,t,n,r){r.capture.recordOutputs&&X(e,{[Y.approvalResponse]:r.serializer.json(n.response)})},redact(e,t){return t.recordInputs?e:{...e,options:{...e.options,request:void 0}}}},memory:{parents:[`activation`,`step`,`tool`],prepare({options:e},t){return{name:e.operation,kind:`CLIENT`,attributes:{...t.attributes,...V(e.operation),"gen_ai.operation.name":e.operation,"gen_ai.memory.store.id":e.storeId,"agent.memory.phase":e.phase,"agent.memory.slot":e.slot,"agent.turn.id":t.identity.turnId}}},complete(e,t,n,r){n.recordCount!==void 0&&X(e,{"gen_ai.memory.record.count":n.recordCount}),r.capture.recordInputs&&X(e,{[Y.memoryRecords]:r.serializer.json(n.records)})}}};function $(e){return Ce[e.type]}function we(e){return $(e).parents}function Te(e,t){let n={identity:e.identity,attributes:be(e.identity),attempt:{turnId:e.identity.turnId,index:e.attempt?.index??0,attempt:e.attempt?.attempt??0},capture:e.capture,serializer:t};return{type:e.data.type,operationId:e.key,kind:`INTERNAL`,...$(e.data).prepare(e.data,n),parent:e.parent,root:e.data.type===`activation`&&e.parent===void 0,startTimeMs:e.startTimeMs,links:e.links}}function Ee(e,t,n,r,i,a){let o=n.outcome??(n.failed?`failed`:`completed`),s=n.outcomeUnknown!==!0||n.failed===!0;(t.type===`activation`||t.type===`approval`)&&s&&X(e,{[t.type===`activation`?`agent.turn.outcome`:`agent.approval.outcome`]:o}),n.usage!==void 0&&X(e,U(n.usage,t.type===`activation`||t.type===`model`)),$(t).complete?.(e,t,n,{capture:r,startTimeMs:i,serializer:a,outcome:o}),n.failed&&e.fail(n.error,n.errorCode)}function De(e,t){return t.emit||(t={emit:!1,recordInputs:!1,recordOutputs:!1}),$(e).redact?.(e,t)??e}function Oe(e,t,n){let r={...U(e.usage,!0),"gen_ai.response.id":e.responseId,"gen_ai.response.model":e.responseModelId,"gen_ai.response.finish_reasons":[e.finishReason]};if(!n)return r;r[`ai.response.finish_reason`]=e.finishReason;let i=e.content;if(i===void 0)return r;r[`gen_ai.output.messages`]=t.outputMessages(i,e.finishReason),r[`ai.response.reasoning`]=t.text(i.filter(e=>e.type===`reasoning`).map(e=>e.text).filter(e=>e.trim().length>0).join(`
4
+ `,r=32769-t.length-e.length;if(r<=0)break;t+=e+n.content.slice(0,r)}return t}function y(e){if(typeof e==`string`)return[{content:e,type:`text`}];if(!Array.isArray(e))return[];let t=[];for(let n of e){let e=ue(n);e!==void 0&&t.push(e)}return t}function ue(e){if(x(e)&&typeof e.type==`string`)switch(e.type){case`text`:case`reasoning`:{let t=typeof e.text==`string`?e.text:e.content;return typeof t==`string`?{content:t,type:e.type}:void 0}case`tool-call`:return{arguments:e.input,id:b(e.toolCallId)??b(e.callId)??null,name:e.toolName,type:`tool_call`};case`tool-result`:return{id:b(e.toolCallId)??b(e.callId)??null,response:de(e.output),type:`tool_call_response`};case`tool-error`:return{id:b(e.toolCallId)??b(e.callId)??null,response:e.error instanceof Error?e.error.message:e.error,type:`tool_call_response`};default:return{type:e.type}}}function de(e){return x(e)?(e.type===`text`||e.type===`error-text`||e.type===`json`||e.type===`error-json`)&&`value`in e?e.value:e.type===`execution-denied`?{denied:!0,reason:e.reason}:e:e}function b(e){return typeof e==`string`?e:void 0}function x(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function fe(e,t,n){e.setAttribute(`error.type`,f(n??(t instanceof Error?t.name:`_OTHER`),128));let i=t!==void 0&&!(t instanceof Error);if(i){let e=p(t),n=typeof t==`object`&&t?Reflect.get(t,`message`):void 0,r=typeof t==`string`?m(t):typeof n==`string`?m(e===void 0?n:`${n}\n${e}`):e;r!==void 0&&(t=Error(r))}if(t instanceof Error){let a=te(t);i&&n!==void 0&&(a.name=f(n,128)),e.recordException(a),e.setStatus({code:r.ERROR,message:a.message})}else e.setStatus({code:r.ERROR})}function S(e,t){let n=e.emit&&(t?.emit??!0);return{emit:n,recordInputs:n&&e.recordInputs&&(t?.recordInputs??!0),recordOutputs:n&&e.recordOutputs&&(t?.recordOutputs??!0)}}function pe(e,t){let n=e.mcp;return{type:e.type,reference:e.reference,capture:t,mcp:n===void 0?void 0:{update:e=>n.update(e),error:(e,r)=>n.error(t.recordOutputs?e:void 0,r??(e instanceof Error?e.name:void 0)),arguments:e=>{t.recordInputs&&n.arguments(e)},result:e=>{t.recordOutputs&&n.result(e)}}}}const C=e(`agent.tracing.capture`);function me(){return a.active().getValue(C)}function w(e,t){return e.setValue(C,t)}const T=e(`agent.tracing.active-operation`),E=e(`OpenTelemetry SDK Context Key SUPPRESS_TRACING`);function D(e,t){return w(e,{emit:!0,recordInputs:t,recordOutputs:t})}function O(e){return e.setValue(E,!0)}function k(e=a.active()){return typeof e.getValue==`function`?e.getValue(T):void 0}function he(e,n){let r=n??t;return e===void 0?r:i.setSpan(r,i.wrapSpanContext(A(e)))}function A(e){return{...e,traceState:e.tracestate===void 0?void 0:n(e.tracestate)}}function ge(e){return{traceId:e.traceId,spanId:e.spanId,traceFlags:e.traceFlags,isRemote:e.isRemote,tracestate:e.traceState?.serialize()}}function j(e,t,n){return e?.attributes(t,n)??n}const _e={attributes(e,t){let n=t[`agent.run.id`];return ve()&&typeof n==`string`&&t[`vercel.session_id`]===void 0?{...t,"vercel.session_id":n}:t},link:(e,t)=>({"agent.link.type":t.relationship})};function ve(){return globalThis.process?.env?.VERCEL_ENV!==void 0}function M(e={}){let n=e.provider??i.getTracerProvider(),s=n.getTracer(e.tracerName??`agent.tracing`,e.tracerVersion),c=e.mapping??_e,l=e.idGenerator;function u(t){return e[t]??(async()=>{let e=n[t];if(e===void 0)throw Error(`The tracer provider does not support ${t}.`);await e.call(n)})}function d(e,t){let n=s.startSpan(e.name,{attributes:j(c,e,e.attributes),kind:e.kind===void 0?void 0:o[e.kind],root:e.root,startTime:e.startTimeMs,links:e.links?.map(t=>({context:A(t.context),attributes:c?.link(e,t)??{"agent.link.type":t.relationship}}))},he(e.root?void 0:e.parent,t));return{reference:ge(n.spanContext()),setAttribute(t,r){for(let[i,a]of Object.entries(j(c,e,{[t]:r})))a!==void 0&&n.setAttribute(i,a)},addEvent:(e,t,r)=>{n.addEvent(e,t,r)},fail:(e,t)=>fe(n,e,t),setStatus:e=>{n.setStatus({code:r[e]})},end:e=>{n.end(e)}}}return{startSpan(e,{reference:t,context:n}={}){if(t===void 0||l===void 0)return d(e,n);let r=l.withTraceId(t.traceId,()=>l.withSpanId(t.spanId,()=>d(e,n)));if(r.reference.spanId!==t.spanId||r.reference.traceId!==t.traceId)throw Error(`The tracer provider must use the telemetry's ID generator.`);return r},active:()=>k(),suppressed(e){return a.with(D(O(t),!1),e)},run(e,t,n){let r=S(e.capture,k()?.capture),o=i.setSpan(n??a.active(),i.wrapSpanContext(A(e.reference)));return r=S(r,o.getValue(T)?.capture),o=o.setValue(T,pe(e,r)),o=w(o,r),(!r.emit||!(e.reference.traceFlags&1))&&(o=O(o)),a.with(o,t)},samples:(t,n)=>e.samplesTrace?.(t,{name:n.name,attributes:j(c,n,n.attributes)})??!0,ids:l===void 0?void 0:{traceId:e=>l.deriveTraceId(e),spanId:e=>l.deriveSpanId(e)},forceFlush:u(`forceFlush`),shutdown:u(`shutdown`)}}const N=new Set([`agent.channel.delivery.input`,`agent.session.title`,`agent.approval.request`,`ai.documents`,`ai.prompt`,`ai.prompt.toolChoice`,`ai.prompt.tools`,`ai.value`,`ai.values`,`gen_ai.input.messages`,`gen_ai.memory.records`,`gen_ai.system_instructions`,`gen_ai.tool.call.arguments`,`gen_ai.tool.definitions`]),P=new Set([`agent.approval.response`,`ai.embedding`,`ai.embeddings`,`ai.ranking`,`ai.response.files`,`ai.response.object`,`ai.response.reasoning`,`ai.response.text`,`ai.response.toolCalls`,`ai.response.tool_calls`,`ai.response.tool_results`,`ai.toolCall.args`,`ai.toolCall.result`,`gen_ai.output.messages`,`gen_ai.tool.call.result`]),F=`agent.trace.content.input`,I=`agent.trace.content.output`;function L(e,t){return!t.recordInputs&&N.has(e)?!0:!t.recordOutputs&&P.has(e)}function R(e,t){return!t.recordInputs&&e[F]===!0||!t.recordOutputs&&e[I]===!0}function ye(e,t,n){return e===F&&t===!0&&!n.recordInputs||e===I&&t===!0&&!n.recordOutputs?!1:t}function z(e,t){let n=Object.keys(e);if(!n.some(e=>L(e,t))&&!R(e,t))return;let r={};for(let i of n)L(i,t)||(r[i]=ye(i,e[i],t));return r}const B={costUsd:`agent.usage.cost_usd`,inputTokens:`agent.usage.input_tokens`,outputTokens:`agent.usage.output_tokens`,cacheReadTokens:`agent.usage.cache_read_tokens`,cacheWriteTokens:`agent.usage.cache_write_tokens`};function be(e){return{"agent.run.id":e.runId,"agent.trace.schema.version":4,"gen_ai.conversation.id":e.conversationId}}function V(e,t=e){return{"operation.name":t,"resource.name":e}}function H(e){return{"agent.framework.name":e?.name||void 0,"agent.framework.version":e?.version||void 0}}function U(e,t=!1){return t?{[B.costUsd]:e.costUsd,"gen_ai.usage.input_tokens":e.inputTokens,"gen_ai.usage.output_tokens":e.outputTokens,"gen_ai.usage.cache_read.input_tokens":e.inputTokenDetails?.cacheReadTokens,"gen_ai.usage.cache_write.input_tokens":e.inputTokenDetails?.cacheWriteTokens}:{[B.costUsd]:e.costUsd,[B.inputTokens]:e.inputTokens,[B.outputTokens]:e.outputTokens,[B.cacheReadTokens]:e.inputTokenDetails?.cacheReadTokens,[B.cacheWriteTokens]:e.inputTokenDetails?.cacheWriteTokens}}function W(e){let t={},n=new WeakSet,r=256;function i(e,a,o){if(!(r<=0||o>8||a==null)){if(typeof a==`string`||typeof a==`number`||typeof a==`boolean`)t[e]=a,--r;else if(Array.isArray(a))a.length<=256&&a.every(e=>typeof e==`string`||typeof e==`number`||typeof e==`boolean`)&&new Set(a.map(e=>typeof e)).size===1&&(t[e]=a,--r);else if(typeof a==`object`&&!n.has(a)){n.add(a);for(let t of Object.keys(a)){if(r<=0)break;i(`${e}.${t}`,Reflect.get(a,t),o+1)}n.delete(a)}}}return e!==void 0&&i(`ai.settings.context`,e,0),t}const G=e=>e===void 0?`invoke_agent`:`invoke_agent ${e}`,K=e=>`chat ${e}`,q=e=>`execute_tool ${e}`,J={approval:`agent.approval`,step:`agent.step`},Y={toolArguments:`gen_ai.tool.call.arguments`,toolResult:`gen_ai.tool.call.result`,approvalRequest:`agent.approval.request`,approvalResponse:`agent.approval.response`,memoryRecords:`gen_ai.memory.records`};function X(e,t){for(let[n,r]of Object.entries(t))r!==void 0&&e.setAttribute(n,r)}function Z(e){return{"agent.turn.id":e.attempt.turnId,"agent.step.index":e.attempt.index,"agent.step.attempt":e.attempt.attempt}}function Q(e,t){return z(e??{},t)??e}function xe(e,t){return{[Y.toolArguments]:t.capture.recordInputs?t.serializer.json(e):void 0}}function Se(e,t,n){n.capture.recordOutputs&&X(e,{[Y.toolResult]:n.serializer.json(t.output)})}const Ce={activation:{parents:[],prepare({options:e},t){let{identity:n,capture:r}=t;return{name:G(n.agentName),attributes:{...t.attributes,...H(n.framework),...V(G(n.agentName),`invoke_agent`),"agent.channel.kind":e.channel?.kind,"agent.session.origin":e.channel?.origin,"agent.name":n.agentName,"gen_ai.agent.name":n.agentName,"gen_ai.operation.name":`invoke_agent`,"agent.turn.id":n.turnId,"agent.turn.sequence":e.sequence,"agent.run.type":e.subagent?`subagent`:`session`,"agent.parent_call.id":e.parentCallId,"agent.parent_run.id":e.parentRunId,"agent.subagent.name":e.subagentName,"agent.trace.content.input":r.recordInputs,"agent.trace.content.output":r.recordOutputs,...Q(e.attributes,r)}}},complete(e,t,n,r){e.addEvent(`turn.started`,void 0,r.startTimeMs),(n.outcomeUnknown!==!0||n.failed===!0)&&e.addEvent(`turn.${r.outcome}`,void 0,n.endTimeMs)},redact(e,t){return{...e,options:{...e.options,attributes:Q(e.options.attributes,t)}}}},step:{parents:[`activation`],prepare({options:e},t){return{name:J.step,attributes:{...t.attributes,...H(t.identity.framework),...Z(t),...V(J.step,`workflow`),"gen_ai.operation.name":`workflow`,"agent.name":t.identity.agentName,"agent.channel.kind":e.channel?.kind===`unknown`?void 0:e.channel?.kind,"agent.session.origin":e.channel?.kind===`unknown`?void 0:e.channel?.origin,...W(e.runtimeContext)}}},complete(e,t,n){e.addEvent(n.failed?`step.failed`:`step.completed`,void 0,n.endTimeMs)}},model:{parents:[`step`],prepare({options:e},t){let n=t.capture.recordInputs&&e.messages!==void 0?t.serializer.inputMessages(e.messages):void 0;return{name:K(e.modelId),kind:`CLIENT`,attributes:{...t.attributes,...V(K(e.modelId),`chat`),"gen_ai.agent.name":t.identity.agentName,"gen_ai.operation.name":`chat`,"gen_ai.provider.name":e.provider,"gen_ai.request.model":e.modelId,...W(e.runtimeContext),...t.capture.recordInputs&&e.messages!==void 0?{"gen_ai.input.messages":n?.json,"agent.input.messages.omitted":n?.omitted||void 0,"gen_ai.system_instructions":t.serializer.instructions(e.instructions)}:void 0,"gen_ai.tool.definitions":t.capture.recordInputs?t.serializer.toolDefinitions(e.tools):void 0}}},complete(e,t,n,r){n.model!==void 0&&X(e,Oe(n.model,r.serializer,r.capture.recordOutputs))},redact(e,t){return t.recordInputs?e:{...e,options:{...e.options,messages:void 0,instructions:void 0,tools:void 0}}}},tool:{parents:[`step`,`tool`],prepare({options:e},t){let n=e.kind===`subagent-call`||e.kind===`remote-agent-call`;return{name:q(e.name),kind:e.kind===`remote-agent-call`?`CLIENT`:`INTERNAL`,attributes:{...t.attributes,...H(t.identity.framework),...Z(t),...V(q(e.name),`execute_tool`),"gen_ai.agent.name":n?e.name:t.identity.agentName,"gen_ai.operation.name":`execute_tool`,"gen_ai.tool.call.id":e.callId,"gen_ai.tool.name":e.name,"gen_ai.tool.type":`function`,"agent.action.kind":e.kind,"agent.action.name":e.kind===void 0?void 0:e.name,"agent.invocation.role":n?`caller`:void 0,...xe(e.arguments,t)}}},complete(e,t,n,r){n.outcome!==void 0&&X(e,{"agent.action.outcome":n.outcome}),Se(e,n,r)},redact(e,t){return t.recordInputs?e:{...e,options:{...e.options,arguments:void 0}}}},approval:{parents:[`tool`],prepare({options:e},t){return{name:J.approval,attributes:{...t.attributes,...H(t.identity.framework),...Z(t),...V(J.approval,`workflow`),"gen_ai.operation.name":`workflow`,"gen_ai.tool.call.id":e.callId,"agent.action.name":e.toolName,"agent.approval.kind":`tool-approval`,"agent.approval.request_id":e.requestId,[Y.approvalRequest]:t.capture.recordInputs?t.serializer.json(e.request):void 0}}},complete(e,t,n,r){r.capture.recordOutputs&&X(e,{[Y.approvalResponse]:r.serializer.json(n.response)})},redact(e,t){return t.recordInputs?e:{...e,options:{...e.options,request:void 0}}}},memory:{parents:[`activation`,`step`,`tool`],prepare({options:e},t){return{name:e.operation,kind:`CLIENT`,attributes:{...t.attributes,...V(e.operation),"gen_ai.operation.name":e.operation,"gen_ai.memory.store.id":e.storeId,"agent.memory.phase":e.phase,"agent.memory.slot":e.slot,"agent.turn.id":t.identity.turnId}}},complete(e,t,n,r){n.recordCount!==void 0&&X(e,{"gen_ai.memory.record.count":n.recordCount}),r.capture.recordInputs&&X(e,{[Y.memoryRecords]:r.serializer.json(n.records)})}}};function $(e){return Ce[e.type]}function we(e){return $(e).parents}function Te(e,t){let n={identity:e.identity,attributes:be(e.identity),attempt:{turnId:e.identity.turnId,index:e.attempt?.index??0,attempt:e.attempt?.attempt??0},capture:e.capture,serializer:t};return{type:e.data.type,operationId:e.key,kind:`INTERNAL`,...$(e.data).prepare(e.data,n),parent:e.parent,root:e.data.type===`activation`&&e.parent===void 0,startTimeMs:e.startTimeMs,links:e.links}}function Ee(e,t,n,r,i,a){let o=n.outcome??(n.failed?`failed`:`completed`),s=n.outcomeUnknown!==!0||n.failed===!0;(t.type===`activation`||t.type===`approval`)&&s&&X(e,{[t.type===`activation`?`agent.turn.outcome`:`agent.approval.outcome`]:o}),n.usage!==void 0&&X(e,U(n.usage,t.type===`activation`||t.type===`model`)),$(t).complete?.(e,t,n,{capture:r,startTimeMs:i,serializer:a,outcome:o}),n.failed&&e.fail(n.error,n.errorCode)}function De(e,t){return t.emit||(t={emit:!1,recordInputs:!1,recordOutputs:!1}),$(e).redact?.(e,t)??e}function Oe(e,t,n){let r={...U(e.usage,!0),"gen_ai.response.id":e.responseId,"gen_ai.response.model":e.responseModelId,"gen_ai.response.finish_reasons":[e.finishReason]};if(!n)return r;r[`ai.response.finish_reason`]=e.finishReason;let i=e.content;if(i===void 0)return r;r[`gen_ai.output.messages`]=t.outputMessages(i,e.finishReason),r[`ai.response.reasoning`]=t.text(i.filter(e=>e.type===`reasoning`).map(e=>e.text).filter(e=>e.trim().length>0).join(`
5
5
  `)),r[`ai.response.text`]=t.text(i.filter(e=>e.type===`text`).map(e=>e.text).join(``));let a=i.filter(e=>e.type===`tool-call`).map(e=>({callId:e.callId,input:e.input,toolName:e.toolName}));a.length>0&&(r[`ai.response.tool_calls`]=t.json(a));let o=i.filter(e=>e.type===`tool-result`||e.type===`tool-error`).map(e=>e.type===`tool-result`?{callId:e.callId,input:e.input,output:e.output,toolName:e.toolName}:{callId:e.callId,input:e.input,error:e.error instanceof Error?e.error.message:e.error,toolName:e.toolName});return o.length>0&&(r[`ai.response.tool_results`]=t.toolResults(o)),r}function ke(e){return{update(t){t.connectionName!==void 0&&t.method!==void 0&&e.write({"agent.connection.name":t.connectionName,"mcp.method.name":t.method,"network.protocol.name":`http`,"network.transport":`tcp`,"mcp.protocol.version":t.protocolVersion,"jsonrpc.request.id":t.requestId,"gen_ai.operation.name":t.method===`tools/call`?`execute_tool`:void 0,"gen_ai.tool.name":t.method===`tools/call`?t.toolName:void 0}),t.sessionId!==void 0&&e.write({"mcp.session.id":t.sessionId}),t.statusCode!==void 0&&e.write({"rpc.response.status_code":t.statusCode})},error(t,n){e.error(e.recordOutputs?t:void 0,n??(t instanceof Error?t.name:void 0))},arguments(t){e.recordInputs&&e.write({"gen_ai.tool.call.arguments":e.serializer.json(t)})},result(t){e.recordOutputs&&e.write({"gen_ai.tool.call.result":e.serializer.json(t)})}}}export{f as S,s as _,G as a,p as b,B as c,k as d,M as f,S as g,w as h,Ee as i,U as l,me as m,X as n,we as o,D as p,De as r,Te as s,ke as t,z as u,c as v,d as x,ee as y};
@@ -11,8 +11,8 @@ declare const EXTENSION_CAPABILITY_CONTRACTS: {
11
11
  readonly dropped: {};
12
12
  };
13
13
  readonly tool: {
14
- readonly current: 88;
15
- readonly supported: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 29, 30, 31, 32, 34, 35, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88];
14
+ readonly current: 90;
15
+ readonly supported: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 29, 30, 31, 32, 34, 35, 76, 77, 78, 80, 81, 82, 84, 85, 86, 87, 88, 89, 90];
16
16
  readonly dropped: {
17
17
  readonly 14: "TaskExec.delegated was removed; migrate to workflow-backed background tools";
18
18
  readonly 15: "TaskExec replaces stageEffect with send";
@@ -75,8 +75,8 @@ declare const EXTENSION_CAPABILITY_CONTRACTS: {
75
75
  };
76
76
  };
77
77
  readonly dynamicTool: {
78
- readonly current: 83;
79
- readonly supported: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 31, 32, 33, 52, 54, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83];
78
+ readonly current: 84;
79
+ readonly supported: readonly [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22, 31, 32, 33, 52, 54, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 72, 73, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84];
80
80
  readonly dropped: {
81
81
  readonly 21: "Message and reasoning append events now expose deltas instead of cumulative snapshots.";
82
82
  readonly 23: "TaskExec.delegated was removed; migrate to workflow-backed background tools";
@@ -1 +1 @@
1
- import{readFile,writeFile}from"node:fs/promises";import{z}from"#compiled/zod/index.js";import{join}from"node:path";import{formatValidationError}from"#runtime/validation.js";const EXTENSION_COMPATIBILITY_MANIFEST_KIND=`eve-extension`,EXTENSION_COMPATIBILITY_MANIFEST_FORMAT_VERSION=2,EXTENSION_COMPATIBILITY_MANIFEST_FILENAME=`_manifest.json`,EXTENSION_CAPABILITY_CONTRACTS={extension:{current:1,supported:[1],dropped:{}},tool:{current:88,supported:[1,2,3,4,5,6,7,8,9,10,11,12,13,29,30,31,32,34,35,76,77,78,80,81,82,84,85,86,87,88],dropped:{14:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,15:`TaskExec replaces stageEffect with send`,16:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,17:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,18:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,19:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,20:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,21:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,22:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,23:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,24:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,25:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,26:`Background tools now use task yield descriptors`,27:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,28:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,33:`ctx.agent now accepts the subagent name as its first argument, derives invocation identity internally, and infers structured output types`,36:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,37:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,38:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,39:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,40:`runWorkflowProgram was made internal; use the workflow factory from eve/tools/workflow`,41:`workflow no longer accepts agents and its options argument is optional; use workflow() or workflow({ maxSubagents })`,42:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,43:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,44:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,45:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,46:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,47:`eve/experimental/evaluate was removed; import decide from eve/ai`,48:`eve/experimental/evaluate was removed; import decide from eve/ai`,49:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,50:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,51:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,52:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,53:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,54:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,55:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,56:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,57:`agentRouter() no longer accepts a model-facing outputSchema; structured subagent output is requested only through ctx.agent().`,58:`Workflow tools no longer accept execution or return background task receipts; every call blocks until it settles.`,59:`Workflow tools no longer accept execution or return background task receipts, and every call blocks until it settles. ctx.ask() no longer accepts dismissible and reports a withdrawn request as cancelled, workflow tool contexts carry interruptSignal, and ctx.agent(name) returns a session handle whose send() delivers a message and whose result() resolves the turn; ctx.agent(name, { message, agentId }) and AgentInput were removed. A ctx.ask() question parks the open turn with turn.waiting instead of ending it.`,60:`Workflow tools define exactly one of execute(input, ctx), task(input, ctx), or serve(receive, ctx): a task() call returns a receipt and runs as a task, a serve() call reaches a resumable task through receive() and its model input gains taskId, and stream events gained task.started and task.settled. Agent tools are serve() tools with taskId in place of agentId, and the subagent.* stream events were removed. ctx.interruptSignal and WorkflowTaskContext were removed: a steering message aborts the abortSignal of an execute call the turn waits on.`,61:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,62:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,63:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,64:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,65:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,66:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,67:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,68:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,69:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,70:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,71:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,72:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,73:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,74:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,75:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,79:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`,83:`webSearch provider "openai" was replaced by "native" before it shipped in a release`}},dynamicTool:{current:83,supported:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,31,32,33,52,54,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,77,78,79,80,81,82,83],dropped:{21:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,23:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,24:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,25:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,26:`Background tools now use task yield descriptors`,27:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,28:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,29:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,30:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,34:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,35:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,36:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,37:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,38:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,39:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,40:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,41:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,42:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,43:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,44:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,45:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,46:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,47:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,48:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,49:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,50:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,51:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,53:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,55:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,56:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,57:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`,58:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,59:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,71:`AI SDK evaluation models became decision models; auto() accepts decision models only`,74:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},channel:{current:60,supported:[1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,29,31,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,54,55,56,57,58,59,60],dropped:{12:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,19:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,20:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,21:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,22:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,23:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,24:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,25:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,26:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,27:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,28:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,30:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,32:`Run mode and caller-supplied output schemas were removed from channel operations; sessions always park, and send options, audience inputs, and ConversationContext no longer carry mode, while from().send() and from().respond() no longer accept outputSchema.`,33:`Background task delivery was removed: sends no longer accept taskDeliveryPolicy and message.completed always carries text.`,34:`Background task delivery was removed: sends no longer accept taskDeliveryPolicy and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,35:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`,53:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},schedule:{current:32,supported:[1,2,3,4,6,7,8,9,10,11,12,13,14,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],dropped:{5:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,16:`Background task delivery was removed: sends no longer accept taskDeliveryPolicy and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,17:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},subagent:{current:37,supported:[3,4,6,7,8,9,10,11,12,13,14,15,16,19,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],dropped:{1:`Persistent subagent sessions are now the default and the experimental opt-in was removed`,2:`Persistent subagent sessions are now the default and the experimental opt-in was removed`,5:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,17:`Removed experimental.instrumentationProviders; instrumentation is now always enabled for root agents.`,18:`Removed experimental.instrumentationProviders; instrumentation is now always enabled for root agents.`,20:`Run mode was removed and agent definitions no longer declare outputSchema; sessions always park, ConversationContext no longer carries mode, and structured output is requested per turn.`,21:`Background task execution was removed: subagent results no longer carry backgroundTask, message.completed always carries text, and experimental.tasks is gone. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,22:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},connection:{current:48,supported:[1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,24,26,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48],dropped:{9:`Dynamic connection resolvers no longer receive conversation or channel continuation data`,10:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,23:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,25:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,27:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,28:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,29:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`,30:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,31:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,42:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},hook:{current:45,supported:[20,21,22,23,25,27,31,32,33,34,35,36,37,38,39,41,42,43,44,45],dropped:{1:`Model identity moved from session.started runtime metadata to step.started call attribution.`,2:`Model identity moved from session.started runtime metadata to step.started call attribution.`,3:`Model identity moved from session.started runtime metadata to step.started call attribution.`,4:`Model identity moved from session.started runtime metadata to step.started call attribution.`,5:`Model identity moved from session.started runtime metadata to step.started call attribution.`,6:`Model identity moved from session.started runtime metadata to step.started call attribution.`,7:`Model identity moved from session.started runtime metadata to step.started call attribution.`,8:`Model identity moved from session.started runtime metadata to step.started call attribution.`,9:`Model identity moved from session.started runtime metadata to step.started call attribution.`,10:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,11:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,12:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,13:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,14:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,15:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,16:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,17:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,18:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,19:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,24:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,26:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,28:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text.`,29:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,30:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,40:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},skill:{current:3,supported:[1,2,3],dropped:{}},dynamicSkill:{current:37,supported:[1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,25,26,27,28,29,30,31,32,33,34,35,36,37],dropped:{13:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,22:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,23:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,24:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},instructions:{current:2,supported:[1,2],dropped:{}},dynamicInstructions:{current:38,supported:[1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,26,27,28,29,30,31,32,33,34,35,36,37,38],dropped:{14:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,23:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,24:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,25:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},config:{current:1,supported:[1],dropped:{}},state:{current:13,supported:[1,2,3,4,5,7,9,10,12,13],dropped:{6:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,8:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,11:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}}},EXTENSION_CAPABILITY_VERSIONS=Object.fromEntries(Object.entries(EXTENSION_CAPABILITY_CONTRACTS).map(([e,t])=>[e,t.current])),EXTENSION_CAPABILITY_SUPPORT=Object.keys(EXTENSION_CAPABILITY_CONTRACTS).reduce((e,t)=>(e[t]=EXTENSION_CAPABILITY_CONTRACTS[t].supported,e),{}),extensionCompatibilityManifestV1Schema=z.object({kind:z.literal(EXTENSION_COMPATIBILITY_MANIFEST_KIND),formatVersion:z.literal(1),builtWithEve:z.string().min(1),requires:z.record(z.string(),z.number().int().positive())}).strict(),extensionCompatibilityManifestV2Schema=extensionCompatibilityManifestV1Schema.extend({formatVersion:z.literal(2),build:z.object({externalDependencies:z.array(z.string().min(1)).readonly()}).strict().optional()}),extensionCompatibilityManifestSchema=z.union([extensionCompatibilityManifestV1Schema,extensionCompatibilityManifestV2Schema]);function serializeExtensionCompatibilityManifest(e){return`${JSON.stringify(e,null,2)}\n`}function parseExtensionCompatibilityManifest(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`Extension compatibility manifest "${t}" is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}let r=extensionCompatibilityManifestSchema.safeParse(n);if(!r.success)throw Error(`Extension compatibility manifest "${t}" is invalid. ${formatValidationError(r.error)}`);return r.data}async function readExtensionCompatibilityManifest(e){return parseExtensionCompatibilityManifest(await readFile(e,`utf8`),e)}async function writeExtensionCompatibilityManifest(e,t){await writeFile(join(e,EXTENSION_COMPATIBILITY_MANIFEST_FILENAME),serializeExtensionCompatibilityManifest(t),`utf8`)}function findUnsupportedExtensionCapabilities(e,t=EXTENSION_CAPABILITY_SUPPORT){return Object.entries(e.requires).flatMap(([e,n])=>{let r=Object.hasOwn(t,e)?t[e]??[]:[];return r.includes(n)?[]:[{capability:e,requiredVersion:n,supportedVersions:r}]}).sort((e,t)=>e.capability.localeCompare(t.capability))}export{EXTENSION_CAPABILITY_SUPPORT,EXTENSION_CAPABILITY_VERSIONS,EXTENSION_COMPATIBILITY_MANIFEST_FILENAME,EXTENSION_COMPATIBILITY_MANIFEST_FORMAT_VERSION,EXTENSION_COMPATIBILITY_MANIFEST_KIND,findUnsupportedExtensionCapabilities,parseExtensionCompatibilityManifest,readExtensionCompatibilityManifest,serializeExtensionCompatibilityManifest,writeExtensionCompatibilityManifest};
1
+ import{readFile,writeFile}from"node:fs/promises";import{z}from"#compiled/zod/index.js";import{join}from"node:path";import{formatValidationError}from"#runtime/validation.js";const EXTENSION_COMPATIBILITY_MANIFEST_KIND=`eve-extension`,EXTENSION_COMPATIBILITY_MANIFEST_FORMAT_VERSION=2,EXTENSION_COMPATIBILITY_MANIFEST_FILENAME=`_manifest.json`,EXTENSION_CAPABILITY_CONTRACTS={extension:{current:1,supported:[1],dropped:{}},tool:{current:90,supported:[1,2,3,4,5,6,7,8,9,10,11,12,13,29,30,31,32,34,35,76,77,78,80,81,82,84,85,86,87,88,89,90],dropped:{14:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,15:`TaskExec replaces stageEffect with send`,16:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,17:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,18:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,19:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,20:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,21:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,22:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,23:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,24:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,25:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,26:`Background tools now use task yield descriptors`,27:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,28:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,33:`ctx.agent now accepts the subagent name as its first argument, derives invocation identity internally, and infers structured output types`,36:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,37:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,38:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,39:`experimental_workflow and eve/tools/workflow were removed; migrate to the workflow factory from eve/tools/workflow`,40:`runWorkflowProgram was made internal; use the workflow factory from eve/tools/workflow`,41:`workflow no longer accepts agents and its options argument is optional; use workflow() or workflow({ maxSubagents })`,42:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,43:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,44:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,45:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,46:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,47:`eve/experimental/evaluate was removed; import decide from eve/ai`,48:`eve/experimental/evaluate was removed; import decide from eve/ai`,49:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,50:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,51:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,52:`Background defineTool and TaskExec were removed; use defineWorkflowTool for durable background work.`,53:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,54:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,55:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,56:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,57:`agentRouter() no longer accepts a model-facing outputSchema; structured subagent output is requested only through ctx.agent().`,58:`Workflow tools no longer accept execution or return background task receipts; every call blocks until it settles.`,59:`Workflow tools no longer accept execution or return background task receipts, and every call blocks until it settles. ctx.ask() no longer accepts dismissible and reports a withdrawn request as cancelled, workflow tool contexts carry interruptSignal, and ctx.agent(name) returns a session handle whose send() delivers a message and whose result() resolves the turn; ctx.agent(name, { message, agentId }) and AgentInput were removed. A ctx.ask() question parks the open turn with turn.waiting instead of ending it.`,60:`Workflow tools define exactly one of execute(input, ctx), task(input, ctx), or serve(receive, ctx): a task() call returns a receipt and runs as a task, a serve() call reaches a resumable task through receive() and its model input gains taskId, and stream events gained task.started and task.settled. Agent tools are serve() tools with taskId in place of agentId, and the subagent.* stream events were removed. ctx.interruptSignal and WorkflowTaskContext were removed: a steering message aborts the abortSignal of an execute call the turn waits on.`,61:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,62:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,63:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,64:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,65:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,66:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,67:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,68:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,69:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,70:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,71:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,72:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,73:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,74:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,75:`eve/ai evaluate was renamed to decide and AI SDK evaluation models became decision models; import decide from eve/ai`,79:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`,83:`webSearch provider "openai" was replaced by "native" before it shipped in a release`}},dynamicTool:{current:84,supported:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,22,31,32,33,52,54,60,61,62,63,64,65,66,67,68,69,70,72,73,75,76,77,78,79,80,81,82,83,84],dropped:{21:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,23:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,24:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,25:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,26:`Background tools now use task yield descriptors`,27:`TaskExec.delegated was removed; migrate to workflow-backed background tools`,28:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,29:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,30:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,34:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,35:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,36:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,37:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,38:`workflowMaxSubagents was removed with experimental_workflow; configure generated-program limits with the workflow factory`,39:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,40:`Legacy session history migration was removed; user-role messages require current provenance kinds.`,41:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,42:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,43:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,44:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,45:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,46:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,47:`autoModel and eve/experimental/evaluate were removed; import auto from eve/models`,48:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,49:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,50:`Background dynamic tools were removed; use a static defineWorkflowTool for durable background work.`,51:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,53:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,55:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,56:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,57:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`,58:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,59:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,71:`AI SDK evaluation models became decision models; auto() accepts decision models only`,74:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},channel:{current:60,supported:[1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,29,31,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,54,55,56,57,58,59,60],dropped:{12:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,19:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,20:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,21:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,22:`Continuation rekey was removed; channel extensions must use additive continuation.alias instead.`,23:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,24:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,25:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,26:`Task views no longer expose executor bindings; background work is owned by workflow runs.`,27:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,28:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,30:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,32:`Run mode and caller-supplied output schemas were removed from channel operations; sessions always park, and send options, audience inputs, and ConversationContext no longer carry mode, while from().send() and from().respond() no longer accept outputSchema.`,33:`Background task delivery was removed: sends no longer accept taskDeliveryPolicy and message.completed always carries text.`,34:`Background task delivery was removed: sends no longer accept taskDeliveryPolicy and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,35:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`,53:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},schedule:{current:32,supported:[1,2,3,4,6,7,8,9,10,11,12,13,14,15,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32],dropped:{5:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,16:`Background task delivery was removed: sends no longer accept taskDeliveryPolicy and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,17:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},subagent:{current:37,supported:[3,4,6,7,8,9,10,11,12,13,14,15,16,19,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],dropped:{1:`Persistent subagent sessions are now the default and the experimental opt-in was removed`,2:`Persistent subagent sessions are now the default and the experimental opt-in was removed`,5:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,17:`Removed experimental.instrumentationProviders; instrumentation is now always enabled for root agents.`,18:`Removed experimental.instrumentationProviders; instrumentation is now always enabled for root agents.`,20:`Run mode was removed and agent definitions no longer declare outputSchema; sessions always park, ConversationContext no longer carries mode, and structured output is requested per turn.`,21:`Background task execution was removed: subagent results no longer carry backgroundTask, message.completed always carries text, and experimental.tasks is gone. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,22:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},connection:{current:48,supported:[1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,21,22,24,26,32,33,34,35,36,37,38,39,40,41,43,44,45,46,47,48],dropped:{9:`Dynamic connection resolvers no longer receive conversation or channel continuation data`,10:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,23:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,25:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,27:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,28:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,29:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`,30:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,31:`Approval response policies now run for Cancel as well as Approve; a policy written for Approve only could reject every Cancel.`,42:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},hook:{current:45,supported:[20,21,22,23,25,27,31,32,33,34,35,36,37,38,39,41,42,43,44,45],dropped:{1:`Model identity moved from session.started runtime metadata to step.started call attribution.`,2:`Model identity moved from session.started runtime metadata to step.started call attribution.`,3:`Model identity moved from session.started runtime metadata to step.started call attribution.`,4:`Model identity moved from session.started runtime metadata to step.started call attribution.`,5:`Model identity moved from session.started runtime metadata to step.started call attribution.`,6:`Model identity moved from session.started runtime metadata to step.started call attribution.`,7:`Model identity moved from session.started runtime metadata to step.started call attribution.`,8:`Model identity moved from session.started runtime metadata to step.started call attribution.`,9:`Model identity moved from session.started runtime metadata to step.started call attribution.`,10:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,11:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,12:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,13:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,14:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,15:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,16:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,17:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,18:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,19:`The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,24:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,26:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,28:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text.`,29:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,30:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event hook events were removed; subscribe to task.started, task.settled, and agent.started.`,40:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}},skill:{current:3,supported:[1,2,3],dropped:{}},dynamicSkill:{current:37,supported:[1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,25,26,27,28,29,30,31,32,33,34,35,36,37],dropped:{13:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,22:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,23:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,24:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},instructions:{current:2,supported:[1,2],dropped:{}},dynamicInstructions:{current:38,supported:[1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,26,27,28,29,30,31,32,33,34,35,36,37,38],dropped:{14:`Message and reasoning append events now expose deltas instead of cumulative snapshots.`,23:`Run mode was removed; sessions always park and ConversationContext no longer carries mode.`,24:`Background task execution was removed: subagent results no longer carry backgroundTask and message.completed always carries text. input.resolved reports outcome "cancelled" when a workflow tool withdraws a ctx.ask() request, and stream events gained agent.started, published when a workflow run opens a ctx.agent session, and turn.waiting, which parks the open turn instead of emitting turn.completed and session.waiting.`,25:`Stream events gained task.started and task.settled, and input.requested, authorization events, and agent.started carry the taskId of the task they come from. The subagent.called, subagent.completed, subagent.started, and subagent.event stream events were removed; agent calls report task.started, task.settled, and agent.started.`}},config:{current:1,supported:[1],dropped:{}},state:{current:13,supported:[1,2,3,4,5,7,9,10,12,13],dropped:{6:`Sandbox sessions no longer expose core identity and mutable networking is provider-specific.`,8:`SandboxSession no longer exposes setNetworkPolicy; pass the configured environment to ctx.getSandbox(environment) to access network policy capabilities`,11:`Sandbox provider handle hooks were renamed to onSandboxStop and onSandboxDelete.`}}},EXTENSION_CAPABILITY_VERSIONS=Object.fromEntries(Object.entries(EXTENSION_CAPABILITY_CONTRACTS).map(([e,t])=>[e,t.current])),EXTENSION_CAPABILITY_SUPPORT=Object.keys(EXTENSION_CAPABILITY_CONTRACTS).reduce((e,t)=>(e[t]=EXTENSION_CAPABILITY_CONTRACTS[t].supported,e),{}),extensionCompatibilityManifestV1Schema=z.object({kind:z.literal(EXTENSION_COMPATIBILITY_MANIFEST_KIND),formatVersion:z.literal(1),builtWithEve:z.string().min(1),requires:z.record(z.string(),z.number().int().positive())}).strict(),extensionCompatibilityManifestV2Schema=extensionCompatibilityManifestV1Schema.extend({formatVersion:z.literal(2),build:z.object({externalDependencies:z.array(z.string().min(1)).readonly()}).strict().optional()}),extensionCompatibilityManifestSchema=z.union([extensionCompatibilityManifestV1Schema,extensionCompatibilityManifestV2Schema]);function serializeExtensionCompatibilityManifest(e){return`${JSON.stringify(e,null,2)}\n`}function parseExtensionCompatibilityManifest(e,t){let n;try{n=JSON.parse(e)}catch(e){throw Error(`Extension compatibility manifest "${t}" is not valid JSON: ${e instanceof Error?e.message:String(e)}`)}let r=extensionCompatibilityManifestSchema.safeParse(n);if(!r.success)throw Error(`Extension compatibility manifest "${t}" is invalid. ${formatValidationError(r.error)}`);return r.data}async function readExtensionCompatibilityManifest(e){return parseExtensionCompatibilityManifest(await readFile(e,`utf8`),e)}async function writeExtensionCompatibilityManifest(e,t){await writeFile(join(e,EXTENSION_COMPATIBILITY_MANIFEST_FILENAME),serializeExtensionCompatibilityManifest(t),`utf8`)}function findUnsupportedExtensionCapabilities(e,t=EXTENSION_CAPABILITY_SUPPORT){return Object.entries(e.requires).flatMap(([e,n])=>{let r=Object.hasOwn(t,e)?t[e]??[]:[];return r.includes(n)?[]:[{capability:e,requiredVersion:n,supportedVersions:r}]}).sort((e,t)=>e.capability.localeCompare(t.capability))}export{EXTENSION_CAPABILITY_SUPPORT,EXTENSION_CAPABILITY_VERSIONS,EXTENSION_COMPATIBILITY_MANIFEST_FILENAME,EXTENSION_COMPATIBILITY_MANIFEST_FORMAT_VERSION,EXTENSION_COMPATIBILITY_MANIFEST_KIND,findUnsupportedExtensionCapabilities,parseExtensionCompatibilityManifest,readExtensionCompatibilityManifest,serializeExtensionCompatibilityManifest,writeExtensionCompatibilityManifest};
@@ -1 +1 @@
1
- import{join,posix}from"node:path";import{stripLogicalPathExtension}from"#discover/filesystem.js";import{canonicalSourceSlot,extensionMountId}from"#compiler/source-graph.js";import{mountRefNamespace}from"#discover/extensions.js";const MODULE_KIND_BY_SLOT_ROOT={agent:`config`,channels:`channel`,extensions:`extension`,hooks:`hook`,instructions:`instructions`,memory:`memory`,sandbox:`sandbox`,schedules:`schedule`,skills:`skill`,tools:`tool`};function projectAgentSources(e){let t=e.owner??{kind:`application`},n=[],r=[],i=[];projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:createApplicationManifestSourceProjection(e.extensionScope),layer:e.layer??`application`,manifest:e.manifest,nodeId:e.nodeId,subagentsPath:posix.join(e.nodePath,`subagents`),owner:t,mountId:e.mountId,declarationMountIds:new Map(e.manifest.extensions.map(t=>[t.sourceId,posix.join(e.nodePath,`extensions`,mountRefNamespace(t.logicalPath))])),resources:r,subagents:i});for(let t of[...e.manifest.resolvedExtensions].sort((e,t)=>e.namespace.localeCompare(t.namespace))){let a=extensionMountId(e.nodePath,t.namespace),o=createExtensionManifestSourceProjection(t),s={kind:`extension`,mountId:a,namespace:t.namespace,packageName:t.packageName};projectManifest({externalDependencies:mergeDependencies(e.externalDependencies,t.externalDependencies),candidates:n,projection:o,layer:`extension-package`,manifest:t.manifest,nodeId:e.nodeId,subagentsPath:posix.join(a,`subagents`),owner:s,mountId:a,resources:r,sourceIdPrefix:`ext:${t.namespace}:`,subagents:i}),t.overrides!==void 0&&projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:o,layer:`extension-override`,manifest:t.overrides,nodeId:e.nodeId,subagentsPath:posix.join(a,`subagents`),owner:{kind:`application`},mountId:a,resources:r,sourceIdPrefix:`ext-override:${t.namespace}:`,subagents:i})}return{candidates:n,resources:r,subagents:i}}function projectSelectedSources(e){let t=new Map(e.resources.map(e=>[e.candidate.sourceId,e])),n=[];for(let r of e.candidates)if(isModuleCandidate(r))n.push(projectModuleCandidate(r));else{let e=t.get(r.sourceId);e!==void 0&&n.push(e)}return n}function createFilesystemModuleCandidate(e){return{backing:{externalDependencies:[...e.externalDependencies],...e.owner.kind===`extension`&&e.extensionScope!==void 0?{extensionScope:e.extensionScope}:{},kind:`filesystem`,mountId:e.mountId,sourcePath:join(e.sourceRoot,e.source.logicalPath)},exportName:e.source.exportName,form:`direct`,layer:e.layer,logicalPath:e.logicalPath,nodeId:e.nodeId,owner:e.owner,sourceId:e.sourceId??e.source.sourceId}}function createApplicationManifestSourceProjection(e){let t={logicalPath:e=>e,name:e=>e};return e!==void 0&&(t.extensionScope=e),t}function createExtensionManifestSourceProjection(e){let{namespace:t,sourceRoot:n}=e;return{extensionScope:{namespace:t,sourceRoot:n},logicalPath:e=>qualifyExtensionContributionLogicalPath(e,t),name:e=>`${t}__${e}`}}function projectManifest(e){let{projection:t}=e,sourceId=t=>`${e.sourceIdPrefix??``}${t}`,pushModule=(n,r,i=e.mountId)=>{let a=t.logicalPath(r??n.logicalPath),o=createFilesystemModuleCandidate({externalDependencies:e.externalDependencies,...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},layer:e.layer,logicalPath:a,nodeId:e.nodeId,owner:e.owner,mountId:i,source:n,sourceId:sourceId(n.sourceId),sourceRoot:e.manifest.agentRoot});e.candidates.push(o)},pushResource=(n,r)=>{let i=t.logicalPath(r.logicalPath),a={...r,...r.sourceKind===`skill-package`?{name:t.name(r.name)}:{},logicalPath:i,sourceId:sourceId(r.sourceId)},o={backing:{kind:`resource`,sourcePath:r.sourceKind===`skill-package`?r.skillFilePath:join(e.manifest.agentRoot,r.logicalPath)},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.resources.push({candidate:o,kind:n,source:a})};if(e.manifest.configModule!==void 0){let t=e.manifest.configModule.logicalPath;pushModule(e.manifest.configModule,canonicalSourceSlot(t)===`agent`?void 0:`agent.ts`)}for(let t of e.manifest.extensions)pushModule(t,void 0,e.declarationMountIds?.get(t.sourceId));for(let t of e.manifest.channels)pushModule(t);for(let t of e.manifest.connections)pushModule(t);for(let t of e.manifest.hooks)pushModule(t);for(let t of e.manifest.memories)pushModule(t);e.manifest.sandbox!==null&&pushModule(e.manifest.sandbox);for(let t of e.manifest.tools)pushModule(t);for(let t of e.manifest.instructions)t.sourceKind===`module`?pushModule(t):pushResource(`instructions`,t);for(let t of e.manifest.schedules)t.sourceKind===`module`?pushModule(t):pushResource(`schedule`,t);for(let t of e.manifest.skills)t.sourceKind===`module`?pushModule(t):pushResource(`skill`,t);for(let n of e.manifest.subagents){let r=t.name(n.subagentId),i=t.logicalPath(n.logicalPath);if(r===`agent`)throw Error(`Subagent "${i}" uses the reserved name "agent". Rename its path; eve reserves "agent" for the built-in root-copy target.`);let a={...n,logicalPath:i,sourceId:sourceId(n.sourceId),subagentId:r},o={backing:{kind:`resource`,sourcePath:n.entryPath},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.subagents.push({candidate:o,mountId:e.mountId,nodePath:posix.join(e.subagentsPath,n.subagentId),...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},owner:e.owner,source:a})}}function projectModuleCandidate(e){let t={exportName:e.exportName,logicalPath:e.logicalPath,sourceId:e.sourceId,sourceKind:`module`},n=canonicalSourceSlot(e.logicalPath);if(n.startsWith(`connections/`))return{candidate:e,kind:`connection`,source:{...t,connectionName:deriveConnectionName(e.logicalPath)}};let r=MODULE_KIND_BY_SLOT_ROOT[n.split(`/`,1)[0]];if(r===void 0)throw Error(`Agent module source slot "${e.logicalPath}" is not compiled yet.`);return{candidate:e,kind:r,source:t}}function isModuleCandidate(e){return e.backing.kind!==`resource`}const EXTENSION_CONTRIBUTION_ROOTS=new Set([`channels`,`connections`,`hooks`,`instructions`,`schedules`,`skills`,`subagents`,`tools`]);function qualifyExtensionContributionLogicalPath(e,t){let n=e.split(`/`);if(n.length===1){let n=stripLogicalPathExtension(e);if(n===`instructions`||n===`system`)return`instructions/${t}${e.slice(e.lastIndexOf(`.`))}`;throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`)}let r=n[0];if(!EXTENSION_CONTRIBUTION_ROOTS.has(r))throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`);return n[1]=`${t}__${n[1]}`,n.join(`/`)}function deriveConnectionName(e){let t=stripLogicalPathExtension(e).replace(/^connections\//,``);return t.endsWith(`/connection`)?t.slice(0,-11):t}function mergeDependencies(...e){return[...new Set(e.flat())]}export{projectAgentSources,projectSelectedSources,qualifyExtensionContributionLogicalPath};
1
+ import{join,posix}from"node:path";import{stripLogicalPathExtension}from"#discover/filesystem.js";import{canonicalSourceSlot,extensionMountId}from"#compiler/source-graph.js";import{mountRefNamespace}from"#discover/extensions.js";const MODULE_KIND_BY_SLOT_ROOT={agent:`config`,channels:`channel`,extensions:`extension`,hooks:`hook`,instructions:`instructions`,memory:`memory`,sandbox:`sandbox`,schedules:`schedule`,skills:`skill`,tools:`tool`};function projectAgentSources(e){let t=e.owner??{kind:`application`},n=[],r=[],i=[];projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:createApplicationManifestSourceProjection(e.extensionScope),layer:e.layer??`application`,manifest:e.manifest,nodeId:e.nodeId,subagentsPath:posix.join(e.nodePath,`subagents`),owner:t,mountId:e.mountId,declarationMountIds:new Map(e.manifest.extensions.map(t=>[t.sourceId,posix.join(e.nodePath,`extensions`,mountRefNamespace(t.logicalPath))])),resources:r,subagents:i});for(let t of[...e.manifest.resolvedExtensions].sort((e,t)=>e.namespace.localeCompare(t.namespace))){let a=extensionMountId(e.nodePath,t.namespace),o=createExtensionManifestSourceProjection(t),s={kind:`extension`,mountId:a,namespace:t.namespace,packageName:t.packageName};projectManifest({externalDependencies:mergeDependencies(e.externalDependencies,t.externalDependencies),candidates:n,projection:o,layer:`extension-package`,manifest:t.manifest,nodeId:e.nodeId,subagentsPath:posix.join(a,`subagents`),owner:s,mountId:a,resources:r,sourceIdPrefix:`ext:${t.namespace}:`,subagents:i}),t.overrides!==void 0&&projectManifest({externalDependencies:e.externalDependencies,candidates:n,projection:o,layer:`extension-override`,manifest:t.overrides,nodeId:e.nodeId,subagentsPath:posix.join(a,`subagents`),owner:{kind:`application`},mountId:a,resources:r,sourceIdPrefix:`ext-override:${t.namespace}:`,subagents:i})}return{candidates:n,resources:r,subagents:i}}function projectSelectedSources(e){let t=new Map(e.resources.map(e=>[e.candidate.sourceId,e])),n=[];for(let r of e.candidates)if(isModuleCandidate(r))n.push(projectModuleCandidate(r));else{let e=t.get(r.sourceId);e!==void 0&&n.push(e)}return n}function createFilesystemModuleCandidate(e){return{backing:{externalDependencies:[...e.externalDependencies],...e.owner.kind===`extension`&&e.extensionScope!==void 0?{extensionScope:e.extensionScope}:{},kind:`filesystem`,mountId:e.mountId,sourcePath:join(e.sourceRoot,e.source.logicalPath)},exportName:e.source.exportName,form:`direct`,layer:e.layer,logicalPath:e.logicalPath,nodeId:e.nodeId,owner:e.owner,sourceId:e.sourceId??e.source.sourceId}}function createApplicationManifestSourceProjection(e){let t={logicalPath:e=>e,name:e=>e};return e!==void 0&&(t.extensionScope=e),t}function createExtensionManifestSourceProjection(e){let{namespace:t,sourceRoot:n}=e;return{extensionScope:{namespace:t,sourceRoot:n},logicalPath:e=>qualifyExtensionContributionLogicalPath(e,t),name:e=>`${t}__${e}`}}function projectManifest(e){let{projection:t}=e,sourceId=t=>`${e.sourceIdPrefix??``}${t}`,pushModule=(n,r,i=e.mountId)=>{let a=t.logicalPath(r??n.logicalPath),o=createFilesystemModuleCandidate({externalDependencies:e.externalDependencies,...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},layer:e.layer,logicalPath:a,nodeId:e.nodeId,owner:e.owner,mountId:i,source:n,sourceId:sourceId(n.sourceId),sourceRoot:e.manifest.agentRoot});e.candidates.push(o)},pushResource=(n,r)=>{let i=t.logicalPath(r.logicalPath),a={...r,...r.sourceKind===`skill-package`?{name:t.name(r.name)}:{},logicalPath:i,sourceId:sourceId(r.sourceId)},o={backing:{kind:`resource`,sourcePath:r.sourceKind===`skill-package`?r.skillFilePath:join(e.manifest.agentRoot,r.logicalPath)},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.resources.push({candidate:o,kind:n,source:a})};if(e.manifest.configModule!==void 0){let t=e.manifest.configModule.logicalPath;pushModule(e.manifest.configModule,canonicalSourceSlot(t)===`agent`?void 0:`agent.ts`)}let n=new Set(e.manifest.resolvedExtensions.map(e=>e.namespace));for(let t of e.manifest.extensions)n.has(mountRefNamespace(t.logicalPath))&&pushModule(t,void 0,e.declarationMountIds?.get(t.sourceId));for(let t of e.manifest.channels)pushModule(t);for(let t of e.manifest.connections)pushModule(t);for(let t of e.manifest.hooks)pushModule(t);for(let t of e.manifest.memories)pushModule(t);e.manifest.sandbox!==null&&pushModule(e.manifest.sandbox);for(let t of e.manifest.tools)pushModule(t);for(let t of e.manifest.instructions)t.sourceKind===`module`?pushModule(t):pushResource(`instructions`,t);for(let t of e.manifest.schedules)t.sourceKind===`module`?pushModule(t):pushResource(`schedule`,t);for(let t of e.manifest.skills)t.sourceKind===`module`?pushModule(t):pushResource(`skill`,t);for(let n of e.manifest.subagents){let r=t.name(n.subagentId),i=t.logicalPath(n.logicalPath);if(r===`agent`)throw Error(`Subagent "${i}" uses the reserved name "agent". Rename its path; eve reserves "agent" for the built-in root-copy target.`);let a={...n,logicalPath:i,sourceId:sourceId(n.sourceId),subagentId:r},o={backing:{kind:`resource`,sourcePath:n.entryPath},form:`direct`,layer:e.layer,logicalPath:i,nodeId:e.nodeId,owner:e.owner,sourceId:a.sourceId};e.candidates.push(o),e.subagents.push({candidate:o,mountId:e.mountId,nodePath:posix.join(e.subagentsPath,n.subagentId),...t.extensionScope===void 0?{}:{extensionScope:t.extensionScope},owner:e.owner,source:a})}}function projectModuleCandidate(e){let t={exportName:e.exportName,logicalPath:e.logicalPath,sourceId:e.sourceId,sourceKind:`module`},n=canonicalSourceSlot(e.logicalPath);if(n.startsWith(`connections/`))return{candidate:e,kind:`connection`,source:{...t,connectionName:deriveConnectionName(e.logicalPath)}};let r=MODULE_KIND_BY_SLOT_ROOT[n.split(`/`,1)[0]];if(r===void 0)throw Error(`Agent module source slot "${e.logicalPath}" is not compiled yet.`);return{candidate:e,kind:r,source:t}}function isModuleCandidate(e){return e.backing.kind!==`resource`}const EXTENSION_CONTRIBUTION_ROOTS=new Set([`channels`,`connections`,`hooks`,`instructions`,`schedules`,`skills`,`subagents`,`tools`]);function qualifyExtensionContributionLogicalPath(e,t){let n=e.split(`/`);if(n.length===1){let n=stripLogicalPathExtension(e);if(n===`instructions`||n===`system`)return`instructions/${t}${e.slice(e.lastIndexOf(`.`))}`;throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`)}let r=n[0];if(!EXTENSION_CONTRIBUTION_ROOTS.has(r))throw Error(`Extension source slot "${e}" cannot be namespace-scoped.`);return n[1]=`${t}__${n[1]}`,n.join(`/`)}function deriveConnectionName(e){let t=stripLogicalPathExtension(e).replace(/^connections\//,``);return t.endsWith(`/connection`)?t.slice(0,-11):t}function mergeDependencies(...e){return[...new Set(e.flat())]}export{projectAgentSources,projectSelectedSources,qualifyExtensionContributionLogicalPath};
@@ -1 +1 @@
1
- import{loadContext}from"#context/container.js";import{TurnMemoryLocksKey}from"#context/keys.js";import{parseJsonObject}from"#shared/json.js";import{defineDynamic}from"#dynamic/definition.js";import{stampDurableDynamicToolCallbacks}from"#tools/durable-callbacks.js";import{isBrandedToolEntry}from"#tools/dynamic.js";import{resolveApprovalPolicy}from"#approval/definition.js";import{markDynamicCallbackRebind}from"#internal/dynamic-tool-rebind.js";function createMemoryToolDynamicDefinition(e,t){return markDynamicCallbackRebind(defineDynamic({events:{"turn.started":async(n,r)=>{let i=loadContext().get(TurnMemoryLocksKey)?.[t];if(i===void 0||e.provider.tools===void 0)return null;let a={...r,memory:{scope:i.scope,slot:t},turn:i.turn},o=await e.provider.tools(a);if(o===null)return null;if(typeof o!=`object`||Array.isArray(o))throw Error(`Memory slot "${t}" provider.tools() must return a tool map or null.`);return Object.fromEntries(Object.entries(o).map(([n,r])=>{let i=`${t}__${n}`;if(!isBrandedToolEntry(r))throw Error(`Memory provider tool "${i}" must be created with defineTool().`);let o=e.description===void 0?r.description:`${e.description}\n\n${r.description}`,s={...r,description:o};return stampDurableDynamicToolCallbacks(s,createProviderToolCallbacks({context:a,definition:e,key:n,tool:r})),[i,s]}))}}}))}function createProviderToolCallbacks(e){let{messages:t,...n}=e.context,r=parseJsonObject({context:n,key:e.key}),loadTool=async n=>{let r=n.key,i=n.context;if(typeof r!=`string`||typeof i!=`object`||!i)throw Error(`Memory provider tool callback has an invalid durable closure.`);let a=(await e.definition.provider.tools?.(readMemoryToolsContext({...i,messages:t})))?.[r];if(a===void 0||!isBrandedToolEntry(a))throw Error(`Memory provider tool "${r}" was removed or renamed.`);return a},i={execute:{callback:async(e,t,n)=>await(await loadTool(e)).execute(t,n),closure:r}};for(let t of[`inputSchema`,`outputSchema`])e.tool[t]!==void 0&&(i[t]={callback:async e=>(await loadTool(e))[t],closure:r});return e.tool.approval!==void 0&&(i.approvalRequest={callback:async(e,t)=>await resolveApprovalPolicy((await loadTool(e)).approval)(t),closure:r},typeof e.tool.approval!=`function`&&e.tool.approval.response!==void 0&&(i.approvalResponse={callback:async(t,n)=>{let r=(await loadTool(t)).approval;if(r===void 0||typeof r==`function`||r.response===void 0)throw Error(`Memory provider tool "${e.key}" approval response was removed.`);return await r.response(n)},closure:r})),e.tool.toModelOutput!==void 0&&(i.toModelOutput={callback:async(e,t)=>await(await loadTool(e)).toModelOutput(t),closure:r}),i}function readMemoryToolsContext(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Memory provider tool callback has an invalid durable context.`);let t=e;if(typeof t.channel!=`object`||t.channel===null||typeof t.memory!=`object`||t.memory===null||!Array.isArray(t.messages)||typeof t.session!=`object`||t.session===null||typeof t.turn!=`object`||t.turn===null)throw Error(`Memory provider tool callback has an invalid durable context.`);return t}export{createMemoryToolDynamicDefinition};
1
+ import{loadContext}from"#context/container.js";import{TurnMemoryLocksKey}from"#context/keys.js";import{parseJsonObject}from"#shared/json.js";import{defineDynamic}from"#dynamic/definition.js";import{stampDurableDynamicToolCallbacks}from"#tools/durable-callbacks.js";import{isBrandedToolEntry}from"#tools/dynamic.js";import{resolveApprovalPolicy}from"#approval/definition.js";import{markDynamicCallbackRebind}from"#internal/dynamic-tool-rebind.js";function createMemoryToolDynamicDefinition(e,t){return markDynamicCallbackRebind(defineDynamic({events:{"turn.started":async(n,r)=>{let i=loadContext().get(TurnMemoryLocksKey)?.[t];if(i===void 0||e.provider.tools===void 0)return null;let a={...r,memory:{scope:i.scope,slot:t},turn:i.turn},o=await e.provider.tools(a);if(o===null)return null;if(typeof o!=`object`||Array.isArray(o))throw Error(`Memory slot "${t}" provider.tools() must return a tool map or null.`);return Object.fromEntries(Object.entries(o).map(([n,r])=>{let i=`${t}__${n}`;if(!isBrandedToolEntry(r))throw Error(`Memory provider tool "${i}" must be created with defineTool().`);let o=e.description===void 0?r.description:`${e.description}\n\n${r.description}`,s={...r,description:o};return stampDurableDynamicToolCallbacks(s,createProviderToolCallbacks({context:a,definition:e,key:n,tool:r})),[i,s]}))}}}))}function createProviderToolCallbacks(e){let{messages:t,turn:{input:n,...r},...i}=e.context,a=parseJsonObject({context:{...i,turn:r},key:e.key}),loadTool=async r=>{let i=r.key,a=r.context;if(typeof i!=`string`||typeof a!=`object`||!a)throw Error(`Memory provider tool callback has an invalid durable closure.`);let o=readMemoryToolsContext({...a,messages:t}),s=(await e.definition.provider.tools?.({...o,turn:{...o.turn,input:n}}))?.[i];if(s===void 0||!isBrandedToolEntry(s))throw Error(`Memory provider tool "${i}" was removed or renamed.`);return s},o={execute:{callback:async(e,t,n)=>await(await loadTool(e)).execute(t,n),closure:a}};for(let t of[`inputSchema`,`outputSchema`])e.tool[t]!==void 0&&(o[t]={callback:async e=>(await loadTool(e))[t],closure:a});return e.tool.approval!==void 0&&(o.approvalRequest={callback:async(e,t)=>await resolveApprovalPolicy((await loadTool(e)).approval)(t),closure:a},typeof e.tool.approval!=`function`&&e.tool.approval.response!==void 0&&(o.approvalResponse={callback:async(t,n)=>{let r=(await loadTool(t)).approval;if(r===void 0||typeof r==`function`||r.response===void 0)throw Error(`Memory provider tool "${e.key}" approval response was removed.`);return await r.response(n)},closure:a})),e.tool.toModelOutput!==void 0&&(o.toModelOutput={callback:async(e,t)=>await(await loadTool(e)).toModelOutput(t),closure:a}),o}function readMemoryToolsContext(e){if(typeof e!=`object`||!e||Array.isArray(e))throw Error(`Memory provider tool callback has an invalid durable context.`);let t=e;if(typeof t.channel!=`object`||t.channel===null||typeof t.memory!=`object`||t.memory===null||!Array.isArray(t.messages)||typeof t.session!=`object`||t.session===null||typeof t.turn!=`object`||t.turn===null)throw Error(`Memory provider tool callback has an invalid durable context.`);return t}export{createMemoryToolDynamicDefinition};
@@ -1,9 +1,11 @@
1
1
  import type { AssertionResult } from "#evals/types.js";
2
2
  /**
3
- * The name an assertion is exported under. Gates carry a `gate:` prefix so
4
- * they do not share a column with a soft assertion of the same name, and so
5
- * experiments diff gate regressions the same way they diff soft scores.
6
- * Sinks with stricter label rules normalize this name themselves.
3
+ * The name an assertion is exported under: its label when it has one, so a
4
+ * labeled assertion keeps a stable column however its display name is built.
5
+ * Gates carry a `gate:` prefix so they do not share a column with a soft
6
+ * assertion of the same name, and so experiments diff gate regressions the
7
+ * same way they diff soft scores. Sinks with stricter label rules normalize
8
+ * this name themselves.
7
9
  */
8
10
  export declare function exportedAssertionName(assertion: AssertionResult): string;
9
11
  /** Assertions reported under one name, scored together. */
@@ -1 +1 @@
1
- function exportedAssertionName(e){return e.severity===`gate`?`gate:${e.name}`:e.name}function groupAssertionScores(e,t){let n=new Map;for(let r of e){let e=t(r),i=n.get(e);n.set(e,{score:minScore(i?.score,r.score),assertions:[...i?.assertions??[],r]})}return n}function composeAssertionScoreMetadata(e){return e.map(({key:e,name:t,severity:n,score:r})=>({key:e,name:t,severity:n,score:r}))}function minScore(e,t){return e===void 0?t:t===void 0?e:Math.min(e,t)}export{composeAssertionScoreMetadata,exportedAssertionName,groupAssertionScores};
1
+ function exportedAssertionName(e){let t=e.key??e.name;return e.severity===`gate`?`gate:${t}`:t}function groupAssertionScores(e,t){let n=new Map;for(let r of e){let e=t(r),i=n.get(e);n.set(e,{score:minScore(i?.score,r.score),assertions:[...i?.assertions??[],r]})}return n}function composeAssertionScoreMetadata(e){return e.map(({key:e,name:t,severity:n,score:r})=>({key:e,name:t,severity:n,score:r}))}function minScore(e,t){return e===void 0?t:t===void 0?e:Math.min(e,t)}export{composeAssertionScoreMetadata,exportedAssertionName,groupAssertionScores};
@@ -1,2 +1,2 @@
1
- import{composeAssertionScoreMetadata,exportedAssertionName,groupAssertionScores}from"#evals/runner/reporters/assertion-scores.js";import{resolveLocalGitMetadata}from"#evals/runner/resolve-git-metadata.js";function Braintrust(e={}){return new BraintrustReporter(e)}var BraintrustReporter=class{#e;#t;#n;#r=new Map;constructor(e){this.#e=e}async onRunStart(e,t){let n=await loadBraintrustSdk();this.#t=n;let r=resolveLocalGitMetadata(process.cwd());this.#r.clear();for(let t of e)this.#r.set(t.id,t);let i=resolveTags(e,t),a=resolveExperimentMetadata(e,t);this.#n=await n.init({project:this.#e.projectName??e[0]?.id??`eve evals`,projectId:this.#e.projectId,experiment:this.#e.experimentName,baseExperiment:this.#e.baseExperimentName,baseExperimentId:this.#e.baseExperimentId,update:this.#e.update,tags:i,metadata:a,noExitFlush:!0,setCurrent:!1,repoInfo:r.sha?{commit:r.sha,branch:r.branch}:null})}onEvalComplete(e){if(!this.#n)return;let t=this.#r.get(e.id),n={},r=groupAssertionScores(e.assertions,exportedAssertionName);for(let[e,t]of r)t.score!==void 0&&(n[e]=t.score);let i=e.assertions.filter(e=>e.passed===!1).map(e=>({...e})),a={...t?.metadata,eveSessionId:e.result.sessionId,eveStatus:e.result.status,eveVerdict:e.verdict,eveSkipReason:e.skipReason,eveToolCalls:e.result.derived.toolCalls.map(e=>e.name),eveSubagentCalls:e.result.derived.subagentCalls.map(e=>e.name),eveSkillLoads:e.result.derived.skillLoads.map(e=>e.skill),eveParked:e.result.derived.parked,eveAssertionScores:composeAssertionScoreMetadata(e.assertions)};e.result.traceContexts.length>0&&(a.eveTraceIds=[...new Set(e.result.traceContexts.map(e=>e.traceId))],a.eveTraceContexts=e.result.traceContexts),i.length>0&&(a.eveFailedAssertions=i),e.result.derived.failureCode&&(a.eveFailureCode=e.result.derived.failureCode);let o={toolCallCount:e.result.derived.toolCallCount,subagentCallCount:e.result.derived.subagentCallCount,messageCount:e.result.derived.messageCount,reasoningBlockCount:e.result.derived.reasoningBlockCount};this.#n.log({id:e.id,input:t?.description??``,output:e.result.output,error:e.error??void 0,scores:n,metadata:a,metrics:o,tags:t?.tags?[...t.tags]:void 0})}async onRunComplete(e){if(this.#n)try{this.#t&&await this.#t.flush();let e=await this.#n.summarize();e.experimentUrl&&console.log(`Braintrust experiment: ${e.experimentUrl}\n\n`)}finally{await this.#n.close(),this.#n=void 0,this.#t=void 0}}};async function loadBraintrustSdk(){try{return await import(`braintrust`)}catch{throw Error([`The 'braintrust' package is required for Braintrust reporting but was not found.`,``,`Install it with:`,` npm install braintrust`].join(`
1
+ import{composeAssertionScoreMetadata,exportedAssertionName,groupAssertionScores}from"#evals/runner/reporters/assertion-scores.js";import{resolveLocalGitMetadata}from"#evals/runner/resolve-git-metadata.js";function Braintrust(e={}){return new BraintrustReporter(e)}var BraintrustReporter=class{#e;#t;#n;#r=new Map;constructor(e){this.#e=e}async onRunStart(e,t){let n=await loadBraintrustSdk();this.#t=n;let r=resolveLocalGitMetadata(process.cwd());this.#r.clear();for(let t of e)this.#r.set(t.id,t);let i=resolveTags(e,t),a=resolveExperimentMetadata(e,t);this.#n=await n.init({project:this.#e.projectName??e[0]?.id??`eve evals`,projectId:this.#e.projectId,experiment:this.#e.experimentName,baseExperiment:this.#e.baseExperimentName,baseExperimentId:this.#e.baseExperimentId,update:this.#e.update,tags:i,metadata:a,noExitFlush:!0,setCurrent:!1,repoInfo:r.sha?{commit:r.sha,branch:r.branch}:null})}onEvalComplete(e){if(!this.#n)return;let t=this.#r.get(e.id),n={},r=groupAssertionScores(e.assertions,exportedAssertionName);for(let[e,t]of r)t.score!==void 0&&(n[e]=t.score);let i=e.assertions.filter(e=>e.passed===!1).map(e=>({...e})),a={...t?.metadata,eveSessionId:e.result.sessionId,eveStatus:e.result.status,eveVerdict:e.verdict,eveSkipReason:e.skipReason,eveToolCalls:e.result.derived.toolCalls.map(e=>e.name),eveSubagentCalls:e.result.derived.subagentCalls.map(e=>e.name),eveSkillLoads:e.result.derived.skillLoads.map(e=>e.skill),eveParked:e.result.derived.parked,eveAssertionScores:composeAssertionScoreMetadata(e.assertions)};e.result.traceContexts.length>0&&(a.eveTraceIds=[...new Set(e.result.traceContexts.map(e=>e.traceId))],a.eveTraceContexts=e.result.traceContexts),i.length>0&&(a.eveFailedAssertions=i),e.result.derived.failureCode&&(a.eveFailureCode=e.result.derived.failureCode);let o={toolCallCount:e.result.derived.toolCallCount,subagentCallCount:e.result.derived.subagentCallCount,messageCount:e.result.derived.messageCount,reasoningBlockCount:e.result.derived.reasoningBlockCount};this.#n.log({id:e.id,input:t?.description??``,output:e.result.output??``,error:e.error??void 0,scores:n,metadata:a,metrics:o,tags:t?.tags?[...t.tags]:void 0})}async onRunComplete(e){if(this.#n)try{this.#t&&await this.#t.flush();let e=await this.#n.summarize();e.experimentUrl&&console.log(`Braintrust experiment: ${e.experimentUrl}\n\n`)}finally{await this.#n.close(),this.#n=void 0,this.#t=void 0}}};async function loadBraintrustSdk(){try{return await import(`braintrust`)}catch{throw Error([`The 'braintrust' package is required for Braintrust reporting but was not found.`,``,`Install it with:`,` npm install braintrust`].join(`
2
2
  `))}}function resolveTags(e,t){let n=new Set([`eve`,`target:${t.kind}`]);for(let t of e){n.add(`eval:${t.id}`);for(let e of t.tags??[])n.add(e)}return[...n]}function resolveExperimentMetadata(e,t){return{eveEvalIds:e.map(e=>e.id),eveTargetKind:t.kind,eveTargetUrl:t.url,eveTimestamp:new Date().toISOString()}}export{Braintrust};
@@ -1,4 +1,4 @@
1
- import{isInputResponse}from"#shared/input.js";import{hasInternalRefScheme}from"#internal/attachments/url-refs.js";import{EVE_MESSAGE_STREAM_CONTENT_TYPE,EVE_MESSAGE_STREAM_FORMAT,EVE_MESSAGE_STREAM_VERSION,EVE_SESSION_ID_HEADER,EVE_STREAM_CONTROL_VERSION,EVE_STREAM_CONTROL_VERSION_QUERY,EVE_STREAM_FORMAT_HEADER,EVE_STREAM_LEASE_ENDED_CONTROL,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER}from"#protocol/message.js";import{parseJsonObject}from"#shared/json.js";import{LEGACY_REMOTE_AGENT_PROTOCOL_VERSION,splitLegacyTaskFields}from"#execution/legacy-remote-agent/protocol.js";import{collectUploadPolicyViolations,formatUploadPolicyViolation}from"#public/channels/upload-policy.js";import{strandedSessionResponse}from"#eve-channel/support.js";import{parseToolStubs}from"#tool-stubs/rules.js";import{parseSessionCallback}from"#channel/session-callback.js";import{isMissingWorkflowRunError}from"#internal/workflow/is-inactive-workflow-run-error.js";import{REMOTE_AGENT_PROTOCOL_MISMATCH,REMOTE_AGENT_PROTOCOL_VERSION,readRemoteAgentProtocolVersion}from"#protocol/remote-agent-protocol.js";import{parseTurnPolicyField}from"#eve-channel/turn-policy-request.js";import{validateMessageFreeCreate}from"#eve-channel/create-request.js";async function deriveOperationContinuationToken(e){let t=JSON.stringify([`eve:create-session:v1`,e.auth.authenticator,e.auth.issuer??null,e.auth.principalType,e.auth.principalId,e.operationId]),n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return`eve:op:${Array.from(new Uint8Array(n),e=>e.toString(16).padStart(2,`0`)).join(``).slice(0,32)}`}function parseCreateBody(e){let t=splitLegacyTaskFields(e),{payload:n}=t;if(n.inputResponses!==void 0)return Response.json({error:`'inputResponses' is only accepted for an existing session.`,ok:!1},{status:400});let r=parseMessageField(n.message);if(r instanceof Response)return r;let i=parseClientContextField(n.clientContext);if(i instanceof Response)return i;let a=parseCallbackField(n.callback);if(a instanceof Response)return a;let o=a===void 0?void 0:parseProtocolVersionField(n.protocolVersion);if(o instanceof Response)return o;let s=parseCapabilitiesField(n.capabilities);if(s instanceof Response)return s;let c=parseOutputSchemaField(n.outputSchema);if(c instanceof Response)return c;let l=validateMessageFreeCreate({callback:a,hasClientContext:n.clientContext!==void 0,hasMessageField:`message`in n,message:r,outputSchema:c});if(l!==void 0)return l;let u=n.operationId;if(u!==void 0&&(typeof u!=`string`||!u))return Response.json({error:`Expected 'operationId' to be a non-empty string.`,ok:!1},{status:400});let d={callback:a,capabilities:s,context:i,outputSchema:c};if(n.stubs!==void 0)try{d.stubs=parseToolStubs(n.stubs)}catch(e){return Response.json({ok:!1,error:e instanceof Error?e.message:`Invalid tool stubs.`},{status:400})}return r!==void 0&&(d.message=r),typeof u==`string`&&(d.operationId=u),o!==void 0&&(d.protocolVersion=o),o===LEGACY_REMOTE_AGENT_PROTOCOL_VERSION&&(d.legacyRemoteAgentCaller=t.taskId===void 0?{}:{taskId:t.taskId}),d}function parseSessionMessageBody(e){let{payload:t}=splitLegacyTaskFields(e);if(Object.hasOwn(t,`stubs`))return Response.json({ok:!1,error:`Tool stubs are fixed at session creation.`},{status:400});let n=rejectSessionContinuationToken(t);if(n!==null)return n;let r=parseMessageField(t.message);if(r instanceof Response)return r;let i=parseCallbackField(t.callback);if(i instanceof Response)return i;let a=parseInputResponses$1(t.inputResponses);if(a instanceof Response)return a;let o=parseClientContextField(t.clientContext);if(o instanceof Response)return o;let s=parseOutputSchemaField(t.outputSchema);if(s instanceof Response)return s;let c=parseTurnPolicyField(t.turnPolicy);return c instanceof Response?c:r===void 0&&a===void 0?Response.json({error:`Expected a non-empty 'message' or a non-empty 'inputResponses' array.`,ok:!1},{status:400}):r!==void 0&&a!==void 0?Response.json({error:`'message' and 'inputResponses' are mutually exclusive.`,ok:!1},{status:400}):{callback:i,message:r,inputResponses:a,context:o,outputSchema:s,turnPolicy:c}}async function parseCancelTurnBody(e){let t=await parseOptionalJsonRequest(e);if(t instanceof Response)return t;let n=rejectSessionContinuationToken(t);if(n!==null)return n;let r=t.turnId;return r!==void 0&&(typeof r!=`string`||r.length===0)?Response.json({error:`Expected 'turnId' to be a non-empty string.`,ok:!1},{status:400}):typeof r==`string`?{turnId:r}:{}}async function parseJsonRequest(e){let t;try{t=await e.json()}catch{return Response.json({error:`Invalid JSON body.`,ok:!1},{status:400})}return typeof t!=`object`||!t||Array.isArray(t)?Response.json({error:`Expected a JSON object.`,ok:!1},{status:400}):t}async function parseResetBody(e){let t=await parseOptionalJsonRequest(e);if(t instanceof Response)return t;let n=rejectSessionContinuationToken(t);if(n!==null)return n;let r=t.reason;return r!==void 0&&(typeof r!=`string`||r.length===0)?Response.json({error:`Expected 'reason' to be a non-empty string.`,ok:!1},{status:400}):r===void 0?{}:{reason:r}}async function parseSessionControlBody(e){let t=await parseOptionalJsonRequest(e);return t instanceof Response?t:rejectSessionContinuationToken(t)??t}async function parseOptionalJsonRequest(e){let t;try{t=await e.text()}catch{return Response.json({error:`Unreadable request body.`,ok:!1},{status:400})}if(t.trim().length===0)return{};let n;try{n=JSON.parse(t)}catch{return Response.json({error:`Invalid JSON body.`,ok:!1},{status:400})}return typeof n!=`object`||!n||Array.isArray(n)?Response.json({error:`Expected a JSON object.`,ok:!1},{status:400}):n}function rejectSessionContinuationToken(e){return`continuationToken`in e?Response.json({error:`Session-ID routes do not accept 'continuationToken'.`,ok:!1},{status:400}):null}function requireSessionId(e){return e.sessionId||Response.json({error:`Missing session id.`,ok:!1},{status:400})}async function createSessionStreamResponse(e,t){let n=parseStartIndex(e);if(n instanceof Response)return n;let r=parseFollow(e),i=!r||parseIncludeTailIndex(e);try{let a=t.getEventStream({follow:r,startIndex:n});a.catch(()=>{});let o;try{o=await t.getStreamTailIndex()}catch(e){throw a.then(e=>e.cancel()).catch(()=>{}),e}let s=await a,c=new URL(e.url).searchParams.get(EVE_STREAM_CONTROL_VERSION_QUERY)===EVE_STREAM_CONTROL_VERSION?EVE_STREAM_CONTROL_VERSION:void 0,l=new Headers({"cache-control":`no-store, no-transform`,"content-type":EVE_MESSAGE_STREAM_CONTENT_TYPE,"x-accel-buffering":`no`,[EVE_SESSION_ID_HEADER]:t.id,[EVE_STREAM_FORMAT_HEADER]:EVE_MESSAGE_STREAM_FORMAT,[EVE_STREAM_VERSION_HEADER]:EVE_MESSAGE_STREAM_VERSION});return i&&l.set(EVE_STREAM_TAIL_INDEX_HEADER,String(o)),new Response(serializeAsNdjson(s,e.signal,i?streamEventLimit(n,o):void 0,c!==void 0),{headers:l})}catch(e){let t=strandedSessionResponse(e);if(t!==void 0)return t;let n=isMissingWorkflowRunError(e);return Response.json({error:n?`Session not found.`:`Session stream unavailable.`,ok:!1},{status:n?404:503})}}function parseOutputSchemaField(e){if(e!==void 0)try{return parseJsonObject(e)}catch{return Response.json({error:`Expected 'outputSchema' to be a JSON-serializable object.`,ok:!1},{status:400})}}function parseCallbackField(e){if(e===void 0)return;let t=parseSessionCallback(e);return t.ok?t.callback:Response.json({error:t.message,ok:!1},{status:400})}function parseProtocolVersionField(e){if(e!==void 0&&typeof e!=`number`)return Response.json({error:`Expected 'protocolVersion' to be a number.`,ok:!1},{status:400});let t=readRemoteAgentProtocolVersion(e);return t===REMOTE_AGENT_PROTOCOL_VERSION||t===LEGACY_REMOTE_AGENT_PROTOCOL_VERSION?t:Response.json({code:REMOTE_AGENT_PROTOCOL_MISMATCH,error:`This deployment speaks eve remote agent protocol ${String(REMOTE_AGENT_PROTOCOL_VERSION)}, but the caller speaks protocol ${String(t)}. Upgrade both deployments to the same eve release.`,ok:!1,protocolVersion:REMOTE_AGENT_PROTOCOL_VERSION},{status:409})}function parseCapabilitiesField(e){if(e===void 0)return;if(typeof e!=`object`||!e||Array.isArray(e))return Response.json({error:`Expected 'capabilities' to be an object.`,ok:!1},{status:400});let t=Object.keys(e),n=Reflect.get(e,`requestInput`);return t.some(e=>e!==`requestInput`)||n!==void 0&&typeof n!=`boolean`?Response.json({error:`Expected 'capabilities.requestInput' to be a boolean when provided.`,ok:!1},{status:400}):n===void 0?{}:{requestInput:n}}function parseMessageField(e){if(e===void 0)return;if(typeof e==`string`)return e.length>0?e:void 0;if(!Array.isArray(e))return Response.json({error:`Expected 'message' to be a string or an array of text/file parts.`,ok:!1},{status:400});if(e.length===0)return;let t=[];for(let n of e){let e=parseMessagePart(n);if(e instanceof Response)return e;t.push(e)}return t}function parseMessagePart(e){if(typeof e!=`object`||!e)return Response.json({error:`Expected each message part to be an object.`,ok:!1},{status:400});let t=e;if(t.type===`text`)return typeof t.text!=`string`||t.text.length===0?Response.json({error:`Text parts require a non-empty 'text' string.`,ok:!1},{status:400}):{type:`text`,text:t.text};if(t.type===`file`){if(typeof t.mediaType!=`string`||t.mediaType.length===0)return Response.json({error:`File parts require a non-empty 'mediaType' string.`,ok:!1},{status:400});if(typeof t.data!=`string`)return Response.json({error:`File parts require a 'data' string (base64, data URL, or URL).`,ok:!1},{status:400});if(hasInternalRefScheme(t.data))return Response.json({error:`File part 'data' must not use a framework-internal ref scheme.`,ok:!1},{status:400});let e={type:`file`,mediaType:t.mediaType,data:t.data};return typeof t.filename==`string`&&t.filename.length>0&&(e.filename=t.filename),e}return Response.json({error:`Unsupported message part type "${String(t.type)}". Use 'text' or 'file'.`,ok:!1},{status:400})}function checkUploadPolicy(e,t){if(!e.message)return null;let n=collectUploadPolicyViolations(e.message,t);if(n.length===0)return null;let[r]=n;if(!r)return null;let i=r.kind===`too-large`?413:415;return Response.json({error:formatUploadPolicyViolation(r),ok:!1,violations:n.map(e=>e.kind===`too-large`?{byteLength:e.byteLength,filename:e.filename,kind:e.kind,limit:e.limit,mediaType:e.mediaType}:{allowedMediaTypes:e.allowedMediaTypes,filename:e.filename,kind:e.kind,mediaType:e.mediaType})},{status:i})}function parseInputResponses$1(e){if(e===void 0)return;if(!Array.isArray(e)||e.length===0)return Response.json({error:`Expected 'inputResponses' to be a non-empty array.`,ok:!1},{status:400});let t=e.filter(isInputResponse);return t.length===e.length?t:Response.json({error:`Expected every 'inputResponses' entry to match the HITL response schema.`,ok:!1},{status:400})}function parseClientContextField(e){if(e!==void 0){if(typeof e==`string`)return e.length>0?[toClientContextMessage(e)]:void 0;if(Array.isArray(e))return e.length===0?void 0:e.every(e=>typeof e==`string`&&e.length>0)?e.map(e=>toClientContextMessage(e)):Response.json({error:`Expected 'clientContext' array entries to be non-empty strings.`,ok:!1},{status:400});if(typeof e!=`object`||!e)return Response.json({error:`Expected 'clientContext' to be a string, string array, or JSON object.`,ok:!1},{status:400});try{let t=parseJsonObject(e);return[toClientContextMessage(JSON.stringify(t))]}catch{return Response.json({error:`Expected 'clientContext' to be a JSON-serializable object.`,ok:!1},{status:400})}}}function toClientContextMessage(e){return`Client context:
1
+ import{isInputResponse}from"#shared/input.js";import{hasInternalRefScheme}from"#internal/attachments/url-refs.js";import{EVE_MESSAGE_STREAM_CONTENT_TYPE,EVE_MESSAGE_STREAM_FORMAT,EVE_MESSAGE_STREAM_VERSION,EVE_SESSION_ID_HEADER,EVE_STREAM_CONTROL_VERSION,EVE_STREAM_CONTROL_VERSION_QUERY,EVE_STREAM_FORMAT_HEADER,EVE_STREAM_LEASE_ENDED_CONTROL,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER}from"#protocol/message.js";import{parseJsonObject}from"#shared/json.js";import{LEGACY_REMOTE_AGENT_PROTOCOL_VERSION,splitLegacyTaskFields}from"#execution/legacy-remote-agent/protocol.js";import{collectUploadPolicyViolations,formatUploadPolicyViolation}from"#public/channels/upload-policy.js";import{strandedSessionResponse}from"#eve-channel/support.js";import{parseToolStubs}from"#tool-stubs/rules.js";import{parseSessionCallback}from"#channel/session-callback.js";import{isExpiredWorkflowRunError,isMissingWorkflowRunError}from"#internal/workflow/is-inactive-workflow-run-error.js";import{REMOTE_AGENT_PROTOCOL_MISMATCH,REMOTE_AGENT_PROTOCOL_VERSION,readRemoteAgentProtocolVersion}from"#protocol/remote-agent-protocol.js";import{parseTurnPolicyField}from"#eve-channel/turn-policy-request.js";import{validateMessageFreeCreate}from"#eve-channel/create-request.js";async function deriveOperationContinuationToken(e){let t=JSON.stringify([`eve:create-session:v1`,e.auth.authenticator,e.auth.issuer??null,e.auth.principalType,e.auth.principalId,e.operationId]),n=await crypto.subtle.digest(`SHA-256`,new TextEncoder().encode(t));return`eve:op:${Array.from(new Uint8Array(n),e=>e.toString(16).padStart(2,`0`)).join(``).slice(0,32)}`}function parseCreateBody(e){let t=splitLegacyTaskFields(e),{payload:n}=t;if(n.inputResponses!==void 0)return Response.json({error:`'inputResponses' is only accepted for an existing session.`,ok:!1},{status:400});let r=parseMessageField(n.message);if(r instanceof Response)return r;let i=parseClientContextField(n.clientContext);if(i instanceof Response)return i;let a=parseCallbackField(n.callback);if(a instanceof Response)return a;let o=a===void 0?void 0:parseProtocolVersionField(n.protocolVersion);if(o instanceof Response)return o;let s=parseCapabilitiesField(n.capabilities);if(s instanceof Response)return s;let c=parseOutputSchemaField(n.outputSchema);if(c instanceof Response)return c;let l=validateMessageFreeCreate({callback:a,hasClientContext:n.clientContext!==void 0,hasMessageField:`message`in n,message:r,outputSchema:c});if(l!==void 0)return l;let u=n.operationId;if(u!==void 0&&(typeof u!=`string`||!u))return Response.json({error:`Expected 'operationId' to be a non-empty string.`,ok:!1},{status:400});let d={callback:a,capabilities:s,context:i,outputSchema:c};if(n.stubs!==void 0)try{d.stubs=parseToolStubs(n.stubs)}catch(e){return Response.json({ok:!1,error:e instanceof Error?e.message:`Invalid tool stubs.`},{status:400})}return r!==void 0&&(d.message=r),typeof u==`string`&&(d.operationId=u),o!==void 0&&(d.protocolVersion=o),o===LEGACY_REMOTE_AGENT_PROTOCOL_VERSION&&(d.legacyRemoteAgentCaller=t.taskId===void 0?{}:{taskId:t.taskId}),d}function parseSessionMessageBody(e){let{payload:t}=splitLegacyTaskFields(e);if(Object.hasOwn(t,`stubs`))return Response.json({ok:!1,error:`Tool stubs are fixed at session creation.`},{status:400});let n=rejectSessionContinuationToken(t);if(n!==null)return n;let r=parseMessageField(t.message);if(r instanceof Response)return r;let i=parseCallbackField(t.callback);if(i instanceof Response)return i;let a=parseInputResponses$1(t.inputResponses);if(a instanceof Response)return a;let o=parseClientContextField(t.clientContext);if(o instanceof Response)return o;let s=parseOutputSchemaField(t.outputSchema);if(s instanceof Response)return s;let c=parseTurnPolicyField(t.turnPolicy);return c instanceof Response?c:r===void 0&&a===void 0?Response.json({error:`Expected a non-empty 'message' or a non-empty 'inputResponses' array.`,ok:!1},{status:400}):r!==void 0&&a!==void 0?Response.json({error:`'message' and 'inputResponses' are mutually exclusive.`,ok:!1},{status:400}):{callback:i,message:r,inputResponses:a,context:o,outputSchema:s,turnPolicy:c}}async function parseCancelTurnBody(e){let t=await parseOptionalJsonRequest(e);if(t instanceof Response)return t;let n=rejectSessionContinuationToken(t);if(n!==null)return n;let r=t.turnId;return r!==void 0&&(typeof r!=`string`||r.length===0)?Response.json({error:`Expected 'turnId' to be a non-empty string.`,ok:!1},{status:400}):typeof r==`string`?{turnId:r}:{}}async function parseJsonRequest(e){let t;try{t=await e.json()}catch{return Response.json({error:`Invalid JSON body.`,ok:!1},{status:400})}return typeof t!=`object`||!t||Array.isArray(t)?Response.json({error:`Expected a JSON object.`,ok:!1},{status:400}):t}async function parseResetBody(e){let t=await parseOptionalJsonRequest(e);if(t instanceof Response)return t;let n=rejectSessionContinuationToken(t);if(n!==null)return n;let r=t.reason;return r!==void 0&&(typeof r!=`string`||r.length===0)?Response.json({error:`Expected 'reason' to be a non-empty string.`,ok:!1},{status:400}):r===void 0?{}:{reason:r}}async function parseSessionControlBody(e){let t=await parseOptionalJsonRequest(e);return t instanceof Response?t:rejectSessionContinuationToken(t)??t}async function parseOptionalJsonRequest(e){let t;try{t=await e.text()}catch{return Response.json({error:`Unreadable request body.`,ok:!1},{status:400})}if(t.trim().length===0)return{};let n;try{n=JSON.parse(t)}catch{return Response.json({error:`Invalid JSON body.`,ok:!1},{status:400})}return typeof n!=`object`||!n||Array.isArray(n)?Response.json({error:`Expected a JSON object.`,ok:!1},{status:400}):n}function rejectSessionContinuationToken(e){return`continuationToken`in e?Response.json({error:`Session-ID routes do not accept 'continuationToken'.`,ok:!1},{status:400}):null}function requireSessionId(e){return e.sessionId||Response.json({error:`Missing session id.`,ok:!1},{status:400})}async function createSessionStreamResponse(e,t){let n=parseStartIndex(e);if(n instanceof Response)return n;let r=parseFollow(e),i=!r||parseIncludeTailIndex(e);try{let a=t.getEventStream({follow:r,startIndex:n});a.catch(()=>{});let o;try{o=await t.getStreamTailIndex()}catch(e){throw a.then(e=>e.cancel()).catch(()=>{}),e}let s=await a,c=new URL(e.url).searchParams.get(EVE_STREAM_CONTROL_VERSION_QUERY)===EVE_STREAM_CONTROL_VERSION?EVE_STREAM_CONTROL_VERSION:void 0,l=new Headers({"cache-control":`no-store, no-transform`,"content-type":EVE_MESSAGE_STREAM_CONTENT_TYPE,"x-accel-buffering":`no`,[EVE_SESSION_ID_HEADER]:t.id,[EVE_STREAM_FORMAT_HEADER]:EVE_MESSAGE_STREAM_FORMAT,[EVE_STREAM_VERSION_HEADER]:EVE_MESSAGE_STREAM_VERSION});return i&&l.set(EVE_STREAM_TAIL_INDEX_HEADER,String(o)),new Response(serializeAsNdjson(s,e.signal,i?streamEventLimit(n,o):void 0,c!==void 0),{headers:l})}catch(e){let t=strandedSessionResponse(e);if(t!==void 0)return t;if(isExpiredWorkflowRunError(e))return Response.json({code:`session_expired`,error:`Session history is no longer available.`,ok:!1},{headers:{"cache-control":`no-store`},status:410});let n=isMissingWorkflowRunError(e);return Response.json({error:n?`Session not found.`:`Session stream unavailable.`,ok:!1},{status:n?404:503})}}function parseOutputSchemaField(e){if(e!==void 0)try{return parseJsonObject(e)}catch{return Response.json({error:`Expected 'outputSchema' to be a JSON-serializable object.`,ok:!1},{status:400})}}function parseCallbackField(e){if(e===void 0)return;let t=parseSessionCallback(e);return t.ok?t.callback:Response.json({error:t.message,ok:!1},{status:400})}function parseProtocolVersionField(e){if(e!==void 0&&typeof e!=`number`)return Response.json({error:`Expected 'protocolVersion' to be a number.`,ok:!1},{status:400});let t=readRemoteAgentProtocolVersion(e);return t===REMOTE_AGENT_PROTOCOL_VERSION||t===LEGACY_REMOTE_AGENT_PROTOCOL_VERSION?t:Response.json({code:REMOTE_AGENT_PROTOCOL_MISMATCH,error:`This deployment speaks eve remote agent protocol ${String(REMOTE_AGENT_PROTOCOL_VERSION)}, but the caller speaks protocol ${String(t)}. Upgrade both deployments to the same eve release.`,ok:!1,protocolVersion:REMOTE_AGENT_PROTOCOL_VERSION},{status:409})}function parseCapabilitiesField(e){if(e===void 0)return;if(typeof e!=`object`||!e||Array.isArray(e))return Response.json({error:`Expected 'capabilities' to be an object.`,ok:!1},{status:400});let t=Object.keys(e),n=Reflect.get(e,`requestInput`);return t.some(e=>e!==`requestInput`)||n!==void 0&&typeof n!=`boolean`?Response.json({error:`Expected 'capabilities.requestInput' to be a boolean when provided.`,ok:!1},{status:400}):n===void 0?{}:{requestInput:n}}function parseMessageField(e){if(e===void 0)return;if(typeof e==`string`)return e.length>0?e:void 0;if(!Array.isArray(e))return Response.json({error:`Expected 'message' to be a string or an array of text/file parts.`,ok:!1},{status:400});if(e.length===0)return;let t=[];for(let n of e){let e=parseMessagePart(n);if(e instanceof Response)return e;t.push(e)}return t}function parseMessagePart(e){if(typeof e!=`object`||!e)return Response.json({error:`Expected each message part to be an object.`,ok:!1},{status:400});let t=e;if(t.type===`text`)return typeof t.text!=`string`||t.text.length===0?Response.json({error:`Text parts require a non-empty 'text' string.`,ok:!1},{status:400}):{type:`text`,text:t.text};if(t.type===`file`){if(typeof t.mediaType!=`string`||t.mediaType.length===0)return Response.json({error:`File parts require a non-empty 'mediaType' string.`,ok:!1},{status:400});if(typeof t.data!=`string`)return Response.json({error:`File parts require a 'data' string (base64, data URL, or URL).`,ok:!1},{status:400});if(hasInternalRefScheme(t.data))return Response.json({error:`File part 'data' must not use a framework-internal ref scheme.`,ok:!1},{status:400});let e={type:`file`,mediaType:t.mediaType,data:t.data};return typeof t.filename==`string`&&t.filename.length>0&&(e.filename=t.filename),e}return Response.json({error:`Unsupported message part type "${String(t.type)}". Use 'text' or 'file'.`,ok:!1},{status:400})}function checkUploadPolicy(e,t){if(!e.message)return null;let n=collectUploadPolicyViolations(e.message,t);if(n.length===0)return null;let[r]=n;if(!r)return null;let i=r.kind===`too-large`?413:415;return Response.json({error:formatUploadPolicyViolation(r),ok:!1,violations:n.map(e=>e.kind===`too-large`?{byteLength:e.byteLength,filename:e.filename,kind:e.kind,limit:e.limit,mediaType:e.mediaType}:{allowedMediaTypes:e.allowedMediaTypes,filename:e.filename,kind:e.kind,mediaType:e.mediaType})},{status:i})}function parseInputResponses$1(e){if(e===void 0)return;if(!Array.isArray(e)||e.length===0)return Response.json({error:`Expected 'inputResponses' to be a non-empty array.`,ok:!1},{status:400});let t=e.filter(isInputResponse);return t.length===e.length?t:Response.json({error:`Expected every 'inputResponses' entry to match the HITL response schema.`,ok:!1},{status:400})}function parseClientContextField(e){if(e!==void 0){if(typeof e==`string`)return e.length>0?[toClientContextMessage(e)]:void 0;if(Array.isArray(e))return e.length===0?void 0:e.every(e=>typeof e==`string`&&e.length>0)?e.map(e=>toClientContextMessage(e)):Response.json({error:`Expected 'clientContext' array entries to be non-empty strings.`,ok:!1},{status:400});if(typeof e!=`object`||!e)return Response.json({error:`Expected 'clientContext' to be a string, string array, or JSON object.`,ok:!1},{status:400});try{let t=parseJsonObject(e);return[toClientContextMessage(JSON.stringify(t))]}catch{return Response.json({error:`Expected 'clientContext' to be a JSON-serializable object.`,ok:!1},{status:400})}}}function toClientContextMessage(e){return`Client context:
2
2
  ${e}`}function parseIncludeTailIndex(e){let t=new URL(e.url).searchParams.get(`includeTailIndex`);return t===`1`||t===`true`}function parseFollow(e){let t=new URL(e.url).searchParams.get(`follow`);return t!==`0`&&t!==`false`}function parseStartIndex(e){let t=new URL(e.url).searchParams.get(`startIndex`);if(t===null)return;let n=Number(t);return!/^-?\d+$/.test(t)||!Number.isSafeInteger(n)?Response.json({error:`Expected startIndex to be an integer.`,ok:!1},{status:400}):n}function streamEventLimit(e,t){if(t===void 0)return;let n=e===void 0?0:e<0?Math.max(0,t+1+e):e;return Math.max(0,t-n+1)}function serializeAsNdjson(e,t,n,r=!1){let i=new TextEncoder,a=0,o,s,clearTimers=()=>{clearTimeout(o),clearTimeout(s),o=void 0,s=void 0},scheduleHeartbeat=e=>{clearTimeout(o),o=setTimeout(()=>{try{e.enqueue(i.encode(`
3
3
  `)),scheduleHeartbeat(e)}catch{clearTimers()}},1e4)},startLease=e=>{scheduleHeartbeat(e),s=setTimeout(()=>{clearTimers();try{e.enqueue(i.encode(`${JSON.stringify(EVE_STREAM_LEASE_ENDED_CONTROL)}\n`)),e.terminate()}catch{}},6e4)},c=new TransformStream({start(e){e.enqueue(i.encode(`
4
4
  `)),n===0?e.terminate():r&&startLease(e)},transform(e,t){t.enqueue(i.encode(`${JSON.stringify(e)}\n`)),a+=1,a===n?(clearTimers(),t.terminate()):r&&scheduleHeartbeat(t)},flush(){clearTimers()}});return e.pipeTo(c.writable,{signal:t}).catch(()=>{}).finally(clearTimers),c.readable}export{checkUploadPolicy,createSessionStreamResponse,deriveOperationContinuationToken,parseCancelTurnBody,parseCreateBody,parseIncludeTailIndex,parseJsonRequest,parseOptionalJsonRequest,parseResetBody,parseSessionControlBody,parseSessionMessageBody,parseStartIndex,rejectSessionContinuationToken,requireSessionId};
@@ -1,5 +1,5 @@
1
1
  import type { DeliverPayload } from "#channel/types.js";
2
- import type { AuthorizationChallenge, AuthorizationResult, PendingAuthorizationState } from "#harness/authorization.js";
2
+ import type { AuthorizationChallenge, AuthorizationResult } from "#harness/authorization.js";
3
3
  export interface MatchedAuthorizationCallback {
4
4
  readonly challenge: AuthorizationChallenge;
5
5
  readonly result: {
@@ -8,7 +8,7 @@ export interface MatchedAuthorizationCallback {
8
8
  } & AuthorizationResult;
9
9
  }
10
10
  /** Matches each callback to exactly one pending authorization attempt. */
11
- export declare function matchAuthorizationCallbacks(pending: PendingAuthorizationState, payloads: readonly DeliverPayload[]): {
11
+ export declare function matchAuthorizationCallbacks(signIns: readonly AuthorizationChallenge[], payloads: readonly DeliverPayload[]): {
12
12
  readonly matches: readonly MatchedAuthorizationCallback[];
13
13
  readonly remainingPayloads: readonly DeliverPayload[];
14
14
  };
@@ -1 +1 @@
1
- function matchAuthorizationCallbacks(e,t){let n=[],r=[],i=new Set;for(let a of t){let t=a.authorizationCallback;if(t===void 0){r.push(a);continue}let o=e.challenges.find(e=>e.name===t.connectionName&&typeof t.attemptId==`string`&&e.attemptId===t.attemptId),s=o?.attemptId;o===void 0||s===void 0||o.principal===void 0||i.has(s)||(i.add(s),n.push({challenge:o,result:{attemptId:s,callback:t.callback,hookUrl:o.hookUrl,instanceId:o.instanceId,name:o.name,principal:o.principal,resume:o.resume}}))}return{matches:n,remainingPayloads:r}}export{matchAuthorizationCallbacks};
1
+ function matchAuthorizationCallbacks(e,t){let n=[],r=[],i=new Set;for(let a of t){let t=a.authorizationCallback;if(t===void 0){r.push(a);continue}let o=e.find(e=>e.name===t.connectionName&&typeof t.attemptId==`string`&&e.attemptId===t.attemptId),s=o?.attemptId;o===void 0||s===void 0||o.principal===void 0||i.has(s)||(i.add(s),n.push({challenge:o,result:{attemptId:s,callback:t.callback,hookUrl:o.hookUrl,instanceId:o.instanceId,name:o.name,principal:o.principal,resume:o.resume}}))}return{matches:n,remainingPayloads:r}}export{matchAuthorizationCallbacks};
@@ -1 +1 @@
1
- import{projectToDurableSession}from"#execution/session.js";import{hasProxyInputRequests}from"#harness/proxy-input-requests.js";import{DURABLE_SESSION_VERSION,DURABLE_SESSION_VERSION as DURABLE_SESSION_VERSION$1,readDurableSession}from"#execution/durable-session-read.js";function createDurableSessionState(e){return projectDurableSessionState(projectToDurableSession(e.session))}function createDurableSessionValues(e){return{history:e.history,sessionState:createDurableSessionState({session:e})}}function replaceDurableSessionSnapshot(e){return{...e.state,...projectDurableSessionState(e.session)}}function projectDurableSessionState(e){return{continuationToken:e.continuationToken,hasProxyInputRequests:hasProxyInputRequests(e.state),sessionId:e.sessionId,version:DURABLE_SESSION_VERSION$1,snapshot:{session:e}}}export{DURABLE_SESSION_VERSION,createDurableSessionState,createDurableSessionValues,readDurableSession,replaceDurableSessionSnapshot};
1
+ import{readHitlState}from"#harness/hitl/index.js";import{projectToDurableSession}from"#execution/session.js";import{DURABLE_SESSION_VERSION,DURABLE_SESSION_VERSION as DURABLE_SESSION_VERSION$1,readDurableSession}from"#execution/durable-session-read.js";function createDurableSessionState(e){return projectDurableSessionState(projectToDurableSession(e.session))}function createDurableSessionValues(e){return{history:e.history,sessionState:createDurableSessionState({session:e})}}function replaceDurableSessionSnapshot(e){return{...e.state,...projectDurableSessionState(e.session)}}function projectDurableSessionState(e){return{continuationToken:e.continuationToken,hasProxyInputRequests:readHitlState(e.state).relays.size>0,sessionId:e.sessionId,version:DURABLE_SESSION_VERSION$1,snapshot:{session:e}}}export{DURABLE_SESSION_VERSION,createDurableSessionState,createDurableSessionValues,readDurableSession,replaceDurableSessionSnapshot};
@@ -1 +1 @@
1
- import{runJsProgram}from"#execution/dynamic-workflow/workflow.js";async function runWorkflowProgramTask(e,t){"use workflow";return runJsProgram(e.js,t,{maxSubagents:e.maxSubagents??0})}runWorkflowProgramTask.workflowId=`workflow//eve@0.79.0//runWorkflowProgramTask`;export{runWorkflowProgramTask};
1
+ import{runJsProgram}from"#execution/dynamic-workflow/workflow.js";async function runWorkflowProgramTask(e,t){"use workflow";return runJsProgram(e.js,t,{maxSubagents:e.maxSubagents??0})}runWorkflowProgramTask.workflowId=`workflow//eve@0.79.1//runWorkflowProgramTask`;export{runWorkflowProgramTask};
@@ -1 +1 @@
1
- import{sessionCommandHookToken}from"#execution/session-inbox/address.js";import{ContinuationTokenKey,LegacyRemoteAgentCallerKey,SessionCallbackKey,SessionIdKey,SessionInboxKey}from"#context/keys.js";import{forwardLegacySessionInput}from"#execution/legacy-remote-agent/protocol.js";import{resolvedForParent}from"#harness/proxy-input-requests.js";import{postSessionCallbackRequest}from"#execution/session-callback-request.js";async function forwardSessionInput(e,t,n){let r=e.get(SessionCallbackKey);if(r===void 0)return!1;let i=e.get(LegacyRemoteAgentCallerKey);if(i!==void 0)return await forwardLegacySessionInput(e,i,t);if(t.type===`input.resolved`){let e=resolvedForParent(t.data);if(e===void 0)return!1;t={data:e,type:`input.resolved`}}if(t.type!==`input.requested`&&t.type!==`authorization.required`&&t.type!==`authorization.completed`&&t.type!==`approval.candidate`&&t.type!==`approval.settled`&&t.type!==`input.resolved`)return!1;let a=t.type===`input.requested`?{callId:r.callId,childContinuationToken:e.get(ContinuationTokenKey)??sessionCommandHookToken(e.require(SessionIdKey)),childSessionId:e.require(SessionIdKey),childSessionInbox:e.get(SessionInboxKey),event:t.data,inputSource:n??`session`,kind:`subagent-input-request`,subagentName:r.subagentName}:{callId:r.callId,childSessionId:e.require(SessionIdKey),event:t,kind:`subagent-authorization-event`,subagentName:r.subagentName},o=await postSessionCallbackRequest({body:a,url:r.url});if(!o.ok)throw Error(`Remote input callback failed with HTTP ${o.status}.`);return!0}export{forwardSessionInput};
1
+ import{sessionCommandHookToken}from"#execution/session-inbox/address.js";import{ContinuationTokenKey,LegacyRemoteAgentCallerKey,SessionCallbackKey,SessionIdKey,SessionInboxKey}from"#context/keys.js";import{forwardLegacySessionInput}from"#execution/legacy-remote-agent/protocol.js";import{resolvedForParent}from"#harness/hitl/relays.js";import{postSessionCallbackRequest}from"#execution/session-callback-request.js";async function forwardSessionInput(e,t,n){let r=e.get(SessionCallbackKey);if(r===void 0)return!1;let i=e.get(LegacyRemoteAgentCallerKey);if(i!==void 0)return await forwardLegacySessionInput(e,i,t);if(t.type===`input.resolved`){let e=resolvedForParent(t.data);if(e===void 0)return!1;t={data:e,type:`input.resolved`}}if(t.type!==`input.requested`&&t.type!==`authorization.required`&&t.type!==`authorization.completed`&&t.type!==`approval.candidate`&&t.type!==`approval.settled`&&t.type!==`input.resolved`)return!1;let a=t.type===`input.requested`?{callId:r.callId,childContinuationToken:e.get(ContinuationTokenKey)??sessionCommandHookToken(e.require(SessionIdKey)),childSessionId:e.require(SessionIdKey),childSessionInbox:e.get(SessionInboxKey),event:t.data,inputSource:n??`session`,kind:`subagent-input-request`,subagentName:r.subagentName}:{callId:r.callId,childSessionId:e.require(SessionIdKey),event:t,kind:`subagent-authorization-event`,subagentName:r.subagentName},o=await postSessionCallbackRequest({body:a,url:r.url});if(!o.ok)throw Error(`Remote input callback failed with HTTP ${o.status}.`);return!0}export{forwardSessionInput};