eve 0.54.4 → 0.55.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/src/channel/adapter.d.ts +3 -2
  3. package/dist/src/channel/audience.d.ts +16 -0
  4. package/dist/src/channel/audience.js +1 -0
  5. package/dist/src/channel/conversation-context.d.ts +3 -0
  6. package/dist/src/channel/conversation-context.js +1 -0
  7. package/dist/src/channel/instrumentation.js +1 -1
  8. package/dist/src/channel/types.d.ts +9 -0
  9. package/dist/src/cli/commands/agent-prompt/scaffold.md +5 -4
  10. package/dist/src/cli/commands/init-target.js +2 -2
  11. package/dist/src/cli/commands/init.js +1 -1
  12. package/dist/src/cli/dev/environment.js +1 -1
  13. package/dist/src/cli/dev/tui/terminal-renderer.js +9 -9
  14. package/dist/src/compiled/.vendor-stamp.json +1 -1
  15. package/dist/src/compiler/extension-compatibility.d.ts +16 -16
  16. package/dist/src/compiler/extension-compatibility.js +1 -1
  17. package/dist/src/context/dynamic-resolve-context.js +1 -1
  18. package/dist/src/discover/filesystem.d.ts +3 -1
  19. package/dist/src/discover/filesystem.js +1 -1
  20. package/dist/src/discover/skills.js +1 -1
  21. package/dist/src/dynamic/definition.d.ts +6 -0
  22. package/dist/src/eve-channel/audience.d.ts +3 -0
  23. package/dist/src/eve-channel/audience.js +1 -0
  24. package/dist/src/eve-channel/index.js +1 -1
  25. package/dist/src/eve-channel/types.d.ts +14 -1
  26. package/dist/src/execution/activity-work.d.ts +2 -0
  27. package/dist/src/execution/activity-work.js +1 -1
  28. package/dist/src/execution/channel-context.js +1 -1
  29. package/dist/src/execution/coordination-dispatch-shared.d.ts +1 -0
  30. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  31. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  32. package/dist/src/execution/runtime-context.js +1 -1
  33. package/dist/src/execution/scheduled-launch-delivery.d.ts +7 -0
  34. package/dist/src/execution/scheduled-launch-delivery.js +1 -0
  35. package/dist/src/execution/session-activity.js +1 -1
  36. package/dist/src/execution/tasks/child/steps.js +1 -1
  37. package/dist/src/execution/tasks/parent/delegate.d.ts +2 -0
  38. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  39. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  40. package/dist/src/execution/tools/subagent/invoke-step.d.ts +2 -0
  41. package/dist/src/execution/tools/subagent/invoke-step.js +1 -1
  42. package/dist/src/execution/tools/subagent/start.d.ts +5 -0
  43. package/dist/src/execution/tools/subagent/start.js +1 -1
  44. package/dist/src/execution/wire/session-inbox-contract.d.ts +2 -2
  45. package/dist/src/execution/wire/session-inbox-contract.js +1 -1
  46. package/dist/src/execution/wire/session-inbox-encoder.d.ts +6 -2
  47. package/dist/src/execution/wire/session-inbox-encoder.js +1 -1
  48. package/dist/src/execution/wire/session-inbox-resume.js +1 -1
  49. package/dist/src/execution/wire/session-inbox-wire.js +1 -1
  50. package/dist/src/execution/wire/session-inbox-wire.v7.d.ts +342 -0
  51. package/dist/src/execution/wire/session-inbox-wire.v7.js +1 -0
  52. package/dist/src/execution/workflow-steps.js +1 -1
  53. package/dist/src/harness/action-presentation.d.ts +5 -0
  54. package/dist/src/harness/action-presentation.js +1 -1
  55. package/dist/src/harness/background-tools.d.ts +3 -1
  56. package/dist/src/harness/emission.js +1 -1
  57. package/dist/src/harness/step-hooks.js +1 -1
  58. package/dist/src/harness/tool-loop.js +1 -1
  59. package/dist/src/harness/tools.js +1 -1
  60. package/dist/src/harness/workflow-lifecycle.js +1 -1
  61. package/dist/src/instrumentation/channel-delivery.js +1 -1
  62. package/dist/src/instrumentation/content-policy.d.ts +2 -2
  63. package/dist/src/instrumentation/principal-summary.d.ts +3 -3
  64. package/dist/src/instrumentation/runtime-global.d.ts +4 -0
  65. package/dist/src/instrumentation/runtime-global.js +1 -0
  66. package/dist/src/instrumentation/runtime.d.ts +5 -9
  67. package/dist/src/instrumentation/runtime.js +1 -1
  68. package/dist/src/instrumentation/session-context.d.ts +1 -0
  69. package/dist/src/instrumentation/session-context.js +1 -1
  70. package/dist/src/instrumentation/session-init.d.ts +5 -0
  71. package/dist/src/instrumentation/session-init.js +1 -0
  72. package/dist/src/instrumentation/setup-context.js +1 -1
  73. package/dist/src/internal/application/dev-environment.d.ts +3 -0
  74. package/dist/src/internal/application/dev-environment.js +1 -1
  75. package/dist/src/internal/application/output-publication-journal.js +1 -1
  76. package/dist/src/internal/application/output-publication-lock.js +1 -1
  77. package/dist/src/internal/application/package.js +1 -1
  78. package/dist/src/internal/authored-definition/connection.js +1 -1
  79. package/dist/src/internal/instrumentation.d.ts +1 -12
  80. package/dist/src/internal/instrumentation.js +1 -1
  81. package/dist/src/internal/logging.js +1 -1
  82. package/dist/src/internal/nitro/host/build-application.js +1 -1
  83. package/dist/src/protocol/activity.d.ts +1 -0
  84. package/dist/src/protocol/activity.js +1 -1
  85. package/dist/src/public/channels/chat-sdk/audience.d.ts +8 -0
  86. package/dist/src/public/channels/chat-sdk/audience.js +1 -1
  87. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +0 -2
  88. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -1
  89. package/dist/src/public/channels/discord/audience.js +1 -1
  90. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  91. package/dist/src/public/channels/discord/index.d.ts +0 -1
  92. package/dist/src/public/channels/index.d.ts +2 -3
  93. package/dist/src/public/channels/slack/activity-plan.js +1 -1
  94. package/dist/src/public/channels/slack/defaults.d.ts +2 -2
  95. package/dist/src/public/channels/slack/defaults.js +3 -3
  96. package/dist/src/public/channels/slack/hitl.d.ts +20 -4
  97. package/dist/src/public/channels/slack/hitl.js +2 -2
  98. package/dist/src/public/channels/slack/index.d.ts +1 -1
  99. package/dist/src/public/channels/slack/interactions.js +1 -1
  100. package/dist/src/public/channels/slack/private-approval-delivery.d.ts +11 -0
  101. package/dist/src/public/channels/slack/private-approval-delivery.js +1 -0
  102. package/dist/src/public/channels/slack/slackChannel.d.ts +27 -4
  103. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  104. package/dist/src/public/channels/teams/hitl.js +1 -1
  105. package/dist/src/public/channels/teams/index.d.ts +0 -1
  106. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  107. package/dist/src/public/channels/teams/verify.js +1 -1
  108. package/dist/src/public/channels/telegram/audience.d.ts +7 -0
  109. package/dist/src/public/channels/telegram/audience.js +1 -1
  110. package/dist/src/public/channels/telegram/index.d.ts +0 -1
  111. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  112. package/dist/src/public/channels/twilio/twilioChannel.d.ts +0 -2
  113. package/dist/src/public/channels/twilio/twilioChannel.js +1 -1
  114. package/dist/src/public/definitions/channel.d.ts +2 -1
  115. package/dist/src/public/definitions/channel.js +1 -1
  116. package/dist/src/public/definitions/connections/mcp.d.ts +6 -0
  117. package/dist/src/public/definitions/workspace-agent.js +1 -1
  118. package/dist/src/public/models/openai/chatgpt/auth.js +1 -1
  119. package/dist/src/public/models/openai/chatgpt/codex-app-server.js +1 -1
  120. package/dist/src/public/models/openai/chatgpt/credential-store.js +1 -1
  121. package/dist/src/public/next/index.d.ts +6 -4
  122. package/dist/src/public/next/index.js +1 -1
  123. package/dist/src/public/next/server.js +1 -1
  124. package/dist/src/public/next/vercel-output-config.d.ts +1 -0
  125. package/dist/src/runtime/connections/mcp-client.js +1 -1
  126. package/dist/src/runtime/resolve-connection.js +1 -1
  127. package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
  128. package/dist/src/runtime/types.d.ts +1 -0
  129. package/dist/src/self-modification/agent.d.ts +7 -1
  130. package/dist/src/self-modification/agent.js +1 -1
  131. package/dist/src/self-modification/extension/instructions.js +6 -9
  132. package/dist/src/setup/flows/chatgpt-auth.js +1 -1
  133. package/dist/src/setup/flows/registry.js +1 -1
  134. package/dist/src/setup/provider-settings.js +1 -1
  135. package/dist/src/setup/scaffold/create/project.js +1 -1
  136. package/dist/src/shared/channel-audience.d.ts +0 -3
  137. package/dist/src/shared/channel-definition.d.ts +13 -4
  138. package/dist/src/shared/conversation-context.d.ts +47 -0
  139. package/dist/src/shared/conversation-context.js +1 -0
  140. package/dist/src/shared/forwarded-trace-policy.d.ts +2 -1
  141. package/dist/src/shared/forwarded-trace-policy.js +1 -1
  142. package/dist/src/shared/instrumentation-channel-kind.d.ts +3 -0
  143. package/dist/src/shared/instrumentation-channel-kind.js +1 -0
  144. package/dist/src/shared/instrumentation-content.d.ts +9 -4
  145. package/dist/src/shared/instrumentation-content.js +1 -1
  146. package/dist/src/shared/trace-policy.d.ts +7 -6
  147. package/dist/src/shared/trace-policy.js +1 -1
  148. package/dist/src/subagents/handle-dispatch.d.ts +2 -1
  149. package/dist/src/subagents/handle-dispatch.js +1 -1
  150. package/dist/src/subagents/remote-dispatch.js +1 -1
  151. package/dist/src/subagents/start-local.d.ts +1 -0
  152. package/dist/src/subagents/start-local.js +1 -1
  153. package/dist/src/subagents/start-remote.d.ts +2 -0
  154. package/dist/src/subagents/start-remote.js +1 -1
  155. package/dist/src/subagents/tool.d.ts +3 -0
  156. package/dist/src/subagents/tool.js +1 -1
  157. package/dist/src/tasks/session-index.d.ts +2 -0
  158. package/dist/src/tasks/session-index.js +1 -1
  159. package/dist/src/tracing/agent-invocation-coordinator.d.ts +3 -2
  160. package/dist/src/tracing/agent-invocation-coordinator.js +1 -1
  161. package/dist/src/tracing/agent-memory-instrumentation.d.ts +3 -1
  162. package/dist/src/tracing/agent-memory-instrumentation.js +1 -1
  163. package/dist/src/tracing/agent-otel-provider.d.ts +2 -0
  164. package/dist/src/tracing/agent-otel-provider.js +2 -2
  165. package/dist/src/tracing/agent-otel-session-context.d.ts +2 -0
  166. package/dist/src/tracing/agent-otel-session-context.js +1 -1
  167. package/dist/src/tracing/agent-trace-context-store.js +1 -1
  168. package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
  169. package/dist/src/tracing/local-instrumentation-runtime.d.ts +1 -1
  170. package/dist/src/tracing/local-instrumentation-runtime.js +1 -1
  171. package/docs/channels/custom.mdx +22 -2
  172. package/docs/channels/eve.mdx +39 -0
  173. package/docs/channels/slack.mdx +47 -0
  174. package/docs/connections/mcp.mdx +14 -0
  175. package/docs/guides/frontend/nextjs.mdx +12 -10
  176. package/docs/guides/instrumentation-providers.md +10 -8
  177. package/docs/guides/instrumentation.md +2 -2
  178. package/docs/guides/remote-agents.md +1 -1
  179. package/docs/install-integrations.mdx +1 -1
  180. package/docs/reference/cli.md +9 -8
  181. package/docs/subagents/index.mdx +3 -1
  182. package/package.json +1 -1
@@ -1,6 +1,7 @@
1
1
  import type { AgentInvocationRequest } from "#execution/tools/subagent/invoke-agent.js";
2
2
  import type { RuntimeSubagentResult } from "#shared/action-types.js";
3
3
  import type { HandleEventFn } from "#harness/types.js";
4
+ import type { ActivityWorkIdentityV1 } from "#protocol/activity.js";
4
5
  import { type SubagentCalledStreamEvent } from "#protocol/message.js";
5
6
  import { type DurableSessionState } from "#execution/durable-session-store.js";
6
7
  import type { RuntimeSubagentChildResult } from "#shared/action-types.js";
@@ -22,6 +23,7 @@ export type TaskAgentInvocationDispatchResult = {
22
23
  } | AgentInvocationDispatchResult;
23
24
  /** Dispatches one owner-scoped local or remote agent invocation. */
24
25
  export declare function dispatchAgentInvocation(input: {
26
+ readonly activityWorkIdentity?: ActivityWorkIdentityV1;
25
27
  readonly callbackBaseUrl: string;
26
28
  readonly emit?: HandleEventFn;
27
29
  readonly replyTo: string;
@@ -1 +1 @@
1
- import{createSubagentCalledEvent}from"#protocol/message.js";import{workflowEntryReference}from"#execution/workflow-runtime.js";import{getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{deriveAgentOperationId}from"#subagents/handles/operation-id.js";import{readDurableSession,replaceDurableSessionSnapshot}from"#execution/durable-session-store.js";import{getAgentHandleStore,writeHandles}from"#subagents/handles/store.js";import{projectToDurableSession}from"#execution/session.js";import{findSessionTaskEntry}from"#tasks/session-index.js";import{AGENT_BUSY,AGENT_MISMATCH,AGENT_UNREACHABLE,formatAgentBusyMessage}from"#subagents/agent-handle-errors.js";import{clearProxyInputRequestsForChild,clearProxyInputRequestsForTask}from"#harness/proxy-input-requests.js";import{readLatestTaskView}from"#execution/tasks/parent/run-parent.js";import{abandonAgentInvocationOwners,applyTaskAgentHandleCommand}from"#subagents/handles/transitions.js";import{accumulateSessionUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{isTerminalTaskStatus}from"#tasks/types.js";import{resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{createSubagentReceiptIdentity}from"#execution/tools/subagent/receipt-identity.js";import{createAgentErrorResult,dispatchToClaimedAgentAddress}from"#subagents/handle-dispatch.js";import{createAgentContinuationBundle}from"#subagents/continuation-bundle.js";import{startSubagent}from"#execution/tools/subagent/start.js";import{prepareOwnerAgentInvocation}from"#execution/tools/subagent/invoke-preparation.js";import{prepareAgentInvocationTrace}from"#tracing/agent-invocation-coordinator.js";import{flushAgentInvocationTraces,settleAgentInvocationTrace}from"#tracing/agent-invocation-terminal.js";async function dispatchAgentInvocation(e){let t=await readDurableSession(e.sessionState),n=getAgentHandleStore(t.state)?.handles??[],r=await prepareOwnerAgentInvocation({invocation:e.request.input,invocationId:e.request.invocationId,knownAgentIds:n.map(e=>e.identity.id),serializedContext:e.serializedContext,sessionState:e.sessionState}),i=r.plan[0];if(i===void 0)throw Error(`Agent invocation produced no executable plan entry.`);if(i.kind===`reject`)return{kind:`failed`,result:i.result,serializedContext:r.serializedContext,sessionState:e.sessionState};let a=i.kind===`start`?i.target.action:i.action,o=prepareAgentInvocationTrace({channelMetadata:r.channelMetadata,invocation:a,ownerId:e.ownerId,serializedContext:r.serializedContext,sessionId:r.session.sessionId,sessionState:t.state,startTimeMs:Date.now(),taskId:e.taskId,turnId:r.batch.event.turnId}),s=r.session,currentAgentHandles=()=>getAgentHandleStore(s.state)?.handles??[],sessionState=()=>replaceDurableSessionSnapshot({session:projectToDurableSession(s),state:e.sessionState}),failed=async e=>({kind:`failed`,result:e,serializedContext:await flushAgentInvocationTraces(o.fail(e)),sessionState:sessionState()}),applyHandleCommand=e=>{let t=applyTaskAgentHandleCommand(s,e);return s=t.session,t.result},c,l;if(i.kind===`resume`){let t=currentAgentHandles().filter(t=>t.phase===`claimed`&&t.ownerId===e.ownerId&&t.callId===i.action.callId&&t.identity.id===i.agentId);if(t.length>1)throw Error(`Invocation owner "${e.ownerId}" has multiple claims for "${i.action.callId}".`);let n=t[0];if(n===void 0){let t=deriveAgentOperationId({callId:i.action.callId,parentSessionId:r.session.sessionId,parentTurnId:r.batch.event.turnId}),a=applyHandleCommand({agentId:i.agentId,callId:i.action.callId,expectedTarget:i.action.kind===`remote-agent-call`?`remote`:`local`,invokedName:i.action.kind===`remote-agent-call`?i.action.remoteAgentName:i.action.subagentName,kind:`claim`,operationId:t,ownerId:e.ownerId});if(n=readClaimedHandle(a),n===void 0)return failed(createTaskClaimError(i.action,i.agentId,a))}let a=createAgentContinuationBundle({action:i.action,bundle:r.bundle,dynamicRemoteAgent:i.dynamicRemoteAgent});c=await dispatchToClaimedAgentAddress({action:i.action,auth:r.auth,bundle:a,currentSession:s,parentToken:e.replyTo,handle:n,taskId:e.taskId}),c.kind===`error`&&c.deliveryPermanent===!0&&applyHandleCommand({agentId:i.agentId,kind:`remove`,ownerId:e.ownerId}),l=n.identity.id}else{let t=i.target.action,n=currentAgentHandles().filter(n=>n.phase===`reserved`&&n.ownerId===e.ownerId&&n.callId===t.callId&&n.identity.name===t.name&&n.identity.nodeId===t.nodeId),a=n.length===1?{identity:n[0].identity,operation:{id:n[0].operationId}}:createSubagentReceiptIdentity({callId:t.callId,subagentName:t.kind===`remote-agent-call`?t.remoteAgentName:t.subagentName,nodeId:t.nodeId,parentSessionId:r.session.sessionId,parentTurnId:r.batch.event.turnId});if(n.length>1)throw Error(`Invocation owner "${e.ownerId}" has multiple reservations for "${t.callId}".`);if(n.length===0&&applyHandleCommand({identity:a.identity,callId:t.callId,kind:`reserve`,operationId:a.operation.id,ownerId:e.ownerId}).kind!==`ready`)throw Error(`Agent handle store rejected start operation "${a.operation.id}".`);if(c=await startSubagent({auth:r.auth,batchEvent:r.batch.event,bundle:r.bundle,callbackBaseUrl:e.callbackBaseUrl,capabilities:r.capabilities,channelMetadata:r.channelMetadata,currentSession:s,fanoutSize:r.fanoutSize,initiatorAuth:r.initiatorAuth,localDevRequest:r.localDevRequest,parentContinuationToken:e.replyTo,activityObserver:r.activityObserver,sandboxSessionId:r.sandboxSessionId,session:s,taskId:e.taskId,target:i.target,trace:o.dispatch}),l=a.identity.id,c.kind===`error`)applyHandleCommand({agentId:l,kind:`remove`,ownerId:e.ownerId});else if(readClaimedHandle(applyHandleCommand({address:c.address,kind:`confirm`,operationId:a.operation.id,ownerId:e.ownerId}))===void 0)throw Error(`Agent handle store could not confirm start operation "${a.operation.id}".`)}if(c.kind===`error`)return failed(c.result);let u=i.kind===`resume`?i.action:i.target.action,d=i.kind===`resume`?i.dynamicRemoteAgent:i.target.kind===`remote`?i.target.dynamicRemoteAgent:void 0,f=createSubagentCalledEvent({agentId:l,callId:c.callId,childSessionId:c.address.sessionId,name:c.name,remote:c.address.kind===`agent/remote`?{resolverId:d===void 0?u.nodeId:d.credentialsStepId,url:c.address.url}:void 0,sequence:r.batch.event.sequence,sessionId:r.session.sessionId,toolName:c.toolName,turnId:r.batch.event.turnId,workflowId:workflowEntryReference.workflowId});return e.emit!==void 0&&await e.emit(f),{kind:`dispatched`,agentId:l,event:f,serializedContext:o.serializedContext,sessionState:sessionState()}}async function dispatchTaskAgentInvocationStep(e){"use step";if(e.taskId!==void 0){let t=await readDurableSession(e.sessionState),n=findSessionTaskEntry(t.state,e.taskId);if(n===void 0)return{kind:`not-admitted`,sessionState:e.sessionState};let r=await readLatestTaskView({taskRunId:n.taskRunId});if(r===void 0||isTerminalTaskStatus(r.status))return{kind:`not-admitted`,sessionState:e.sessionState}}return await dispatchAgentInvocation({...e,callbackBaseUrl:resolveWorkflowCallbackBaseUrl(getWorkflowMetadata().url)})}async function settleTaskAgentInvocationStep(e){"use step";let t=await readDurableSession(e.sessionState),n=await flushAgentInvocationTraces(settleAgentInvocationTrace({acceptedAtMs:Date.now(),result:e.result,serializedContext:e.serializedContext,sessionId:t.sessionId})),r=getAgentHandleStore(t.state)?.handles??[],i=r.filter(t=>t.phase===`claimed`&&t.ownerId===e.ownerId),a=i.find(t=>t.phase===`claimed`&&t.callId===e.result.callId)??(i.length===1?i[0]:void 0);if(a?.phase!==`claimed`)return{serializedContext:n,sessionState:e.sessionState};let o=e.result.outcome.kind===`terminal`?r.filter(e=>e!==a):r.map(t=>t===a?e.result.outcome.result.kind===`cancelled`?{address:a.address,identity:a.identity,lastStatus:`(cancelled)`,phase:`parked`}:{address:a.address,identity:a.identity,phase:`available`}:t),s=writeHandles(t,o);return e.result.outcome.kind===`terminal`&&(s=e.taskId===void 0?`continuationToken`in a.address?clearProxyInputRequestsForChild(s,a.address.continuationToken):s:clearProxyInputRequestsForTask(s,e.taskId)),e.accumulateUsage!==!1&&(s=setTurnUsageState(s,accumulateSessionUsage({previous:getTurnUsageState(s.state),usage:e.result.outcome.usageDelta}))),{serializedContext:n,sessionState:replaceDurableSessionSnapshot({session:s,state:e.sessionState})}}async function releaseAgentInvocationOwnerStep(e){"use step";let t=await readDurableSession(e.sessionState),n=e.cancelled?abandonAgentInvocationOwners(t,new Set([e.ownerId])):applyTaskAgentHandleCommand(t,{kind:`release-owner`,ownerId:e.ownerId}).session;return{sessionState:n===t?e.sessionState:replaceDurableSessionSnapshot({session:n,state:e.sessionState})}}function readClaimedHandle(e){let t=e.kind===`ready`?e.handle:void 0;return t?.phase===`claimed`?t:void 0}function createTaskClaimError(e,t,n){return n.kind===`mismatch`?createAgentErrorResult({action:e,code:AGENT_MISMATCH,message:`Agent "${t}" no longer matches this subagent definition. Start a new agent instead.`}):n.kind===`busy`?createAgentErrorResult({action:e,code:AGENT_BUSY,message:formatAgentBusyMessage({agentId:t,agentName:n.handle.identity.name,ownerId:`ownerId`in n.handle?n.handle.ownerId:void 0})}):createAgentErrorResult({action:e,code:AGENT_UNREACHABLE,message:`Agent with id "${t}" is no longer reachable.`})}export{dispatchAgentInvocation,dispatchTaskAgentInvocationStep,releaseAgentInvocationOwnerStep,settleTaskAgentInvocationStep};
1
+ import{createSubagentCalledEvent}from"#protocol/message.js";import{workflowEntryReference}from"#execution/workflow-runtime.js";import{getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{deriveAgentOperationId}from"#subagents/handles/operation-id.js";import{readDurableSession,replaceDurableSessionSnapshot}from"#execution/durable-session-store.js";import{getAgentHandleStore,writeHandles}from"#subagents/handles/store.js";import{projectToDurableSession}from"#execution/session.js";import{findSessionTaskEntry}from"#tasks/session-index.js";import{AGENT_BUSY,AGENT_MISMATCH,AGENT_UNREACHABLE,formatAgentBusyMessage}from"#subagents/agent-handle-errors.js";import{clearProxyInputRequestsForChild,clearProxyInputRequestsForTask}from"#harness/proxy-input-requests.js";import{readLatestTaskView}from"#execution/tasks/parent/run-parent.js";import{abandonAgentInvocationOwners,applyTaskAgentHandleCommand}from"#subagents/handles/transitions.js";import{accumulateSessionUsage,getTurnUsageState,setTurnUsageState}from"#harness/turn-tag-state.js";import{isTerminalTaskStatus}from"#tasks/types.js";import{resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{createSubagentReceiptIdentity}from"#execution/tools/subagent/receipt-identity.js";import{createAgentErrorResult,dispatchToClaimedAgentAddress}from"#subagents/handle-dispatch.js";import{createAgentContinuationBundle}from"#subagents/continuation-bundle.js";import{startSubagent}from"#execution/tools/subagent/start.js";import{prepareOwnerAgentInvocation}from"#execution/tools/subagent/invoke-preparation.js";import{prepareAgentInvocationTrace}from"#tracing/agent-invocation-coordinator.js";import{flushAgentInvocationTraces,settleAgentInvocationTrace}from"#tracing/agent-invocation-terminal.js";async function dispatchAgentInvocation(e){let t=await readDurableSession(e.sessionState),n=getAgentHandleStore(t.state)?.handles??[],r=await prepareOwnerAgentInvocation({invocation:e.request.input,invocationId:e.request.invocationId,knownAgentIds:n.map(e=>e.identity.id),serializedContext:e.serializedContext,sessionState:e.sessionState}),i=r.plan[0];if(i===void 0)throw Error(`Agent invocation produced no executable plan entry.`);if(i.kind===`reject`)return{kind:`failed`,result:i.result,serializedContext:r.serializedContext,sessionState:e.sessionState};let a=i.kind===`start`?i.target.action:i.action,o=prepareAgentInvocationTrace({conversation:r.inheritedConversation,invocation:a,ownerId:e.ownerId,serializedContext:r.serializedContext,sessionId:r.session.sessionId,sessionState:t.state,startTimeMs:Date.now(),taskId:e.taskId,turnId:r.batch.event.turnId}),s=r.activityObserver===void 0||e.activityWorkIdentity===void 0?void 0:{sink:r.activityObserver.sink,workIdentity:e.activityWorkIdentity},c=r.session,currentAgentHandles=()=>getAgentHandleStore(c.state)?.handles??[],sessionState=()=>replaceDurableSessionSnapshot({session:projectToDurableSession(c),state:e.sessionState}),failed=async e=>({kind:`failed`,result:e,serializedContext:await flushAgentInvocationTraces(o.fail(e)),sessionState:sessionState()}),applyHandleCommand=e=>{let t=applyTaskAgentHandleCommand(c,e);return c=t.session,t.result},l,u;if(i.kind===`resume`){let t=currentAgentHandles().filter(t=>t.phase===`claimed`&&t.ownerId===e.ownerId&&t.callId===i.action.callId&&t.identity.id===i.agentId);if(t.length>1)throw Error(`Invocation owner "${e.ownerId}" has multiple claims for "${i.action.callId}".`);let n=t[0];if(n===void 0){let t=deriveAgentOperationId({callId:i.action.callId,parentSessionId:r.session.sessionId,parentTurnId:r.batch.event.turnId}),a=applyHandleCommand({agentId:i.agentId,callId:i.action.callId,expectedTarget:i.action.kind===`remote-agent-call`?`remote`:`local`,invokedName:i.action.kind===`remote-agent-call`?i.action.remoteAgentName:i.action.subagentName,kind:`claim`,operationId:t,ownerId:e.ownerId});if(n=readClaimedHandle(a),n===void 0)return failed(createTaskClaimError(i.action,i.agentId,a))}let a=createAgentContinuationBundle({action:i.action,bundle:r.bundle,dynamicRemoteAgent:i.dynamicRemoteAgent});l=await dispatchToClaimedAgentAddress({activityObserver:s,action:i.action,auth:r.auth,bundle:a,currentSession:c,parentToken:e.replyTo,handle:n,taskId:e.taskId}),l.kind===`error`&&l.deliveryPermanent===!0&&applyHandleCommand({agentId:i.agentId,kind:`remove`,ownerId:e.ownerId}),u=n.identity.id}else{let t=i.target.action,n=currentAgentHandles().filter(n=>n.phase===`reserved`&&n.ownerId===e.ownerId&&n.callId===t.callId&&n.identity.name===t.name&&n.identity.nodeId===t.nodeId),a=n.length===1?{identity:n[0].identity,operation:{id:n[0].operationId}}:createSubagentReceiptIdentity({callId:t.callId,subagentName:t.kind===`remote-agent-call`?t.remoteAgentName:t.subagentName,nodeId:t.nodeId,parentSessionId:r.session.sessionId,parentTurnId:r.batch.event.turnId});if(n.length>1)throw Error(`Invocation owner "${e.ownerId}" has multiple reservations for "${t.callId}".`);if(n.length===0&&applyHandleCommand({identity:a.identity,callId:t.callId,kind:`reserve`,operationId:a.operation.id,ownerId:e.ownerId}).kind!==`ready`)throw Error(`Agent handle store rejected start operation "${a.operation.id}".`);if(l=await startSubagent({auth:r.auth,batchEvent:r.batch.event,bundle:r.bundle,callbackBaseUrl:e.callbackBaseUrl,capabilities:r.capabilities,channelMetadata:r.channelMetadata,inheritedConversation:r.inheritedConversation,currentSession:c,fanoutSize:r.fanoutSize,initiatorAuth:r.initiatorAuth,localDevRequest:r.localDevRequest,parentContinuationToken:e.replyTo,activityObserver:r.activityObserver,taskActivityObserver:s,sandboxSessionId:r.sandboxSessionId,session:c,taskId:e.taskId,target:i.target,trace:o.dispatch}),u=a.identity.id,l.kind===`error`)applyHandleCommand({agentId:u,kind:`remove`,ownerId:e.ownerId});else if(readClaimedHandle(applyHandleCommand({address:l.address,kind:`confirm`,operationId:a.operation.id,ownerId:e.ownerId}))===void 0)throw Error(`Agent handle store could not confirm start operation "${a.operation.id}".`)}if(l.kind===`error`)return failed(l.result);let d=i.kind===`resume`?i.action:i.target.action,f=i.kind===`resume`?i.dynamicRemoteAgent:i.target.kind===`remote`?i.target.dynamicRemoteAgent:void 0,p=createSubagentCalledEvent({agentId:u,callId:l.callId,childSessionId:l.address.sessionId,name:l.name,remote:l.address.kind===`agent/remote`?{resolverId:f===void 0?d.nodeId:f.credentialsStepId,url:l.address.url}:void 0,sequence:r.batch.event.sequence,sessionId:r.session.sessionId,toolName:l.toolName,turnId:r.batch.event.turnId,workflowId:workflowEntryReference.workflowId});return e.emit!==void 0&&await e.emit(p),{kind:`dispatched`,agentId:u,event:p,serializedContext:o.serializedContext,sessionState:sessionState()}}async function dispatchTaskAgentInvocationStep(e){"use step";let t;if(e.taskId!==void 0){let n=await readDurableSession(e.sessionState),r=findSessionTaskEntry(n.state,e.taskId);if(r===void 0)return{kind:`not-admitted`,sessionState:e.sessionState};let i=await readLatestTaskView({taskRunId:r.taskRunId});if(i===void 0||isTerminalTaskStatus(i.status))return{kind:`not-admitted`,sessionState:e.sessionState};r.metadata.kind===`subagent`&&(t=r.activityWorkIdentity)}return await dispatchAgentInvocation({...e,activityWorkIdentity:t,callbackBaseUrl:resolveWorkflowCallbackBaseUrl(getWorkflowMetadata().url)})}async function settleTaskAgentInvocationStep(e){"use step";let t=await readDurableSession(e.sessionState),n=await flushAgentInvocationTraces(settleAgentInvocationTrace({acceptedAtMs:Date.now(),result:e.result,serializedContext:e.serializedContext,sessionId:t.sessionId})),r=getAgentHandleStore(t.state)?.handles??[],i=r.filter(t=>t.phase===`claimed`&&t.ownerId===e.ownerId),a=i.find(t=>t.phase===`claimed`&&t.callId===e.result.callId)??(i.length===1?i[0]:void 0);if(a?.phase!==`claimed`)return{serializedContext:n,sessionState:e.sessionState};let o=e.result.outcome.kind===`terminal`?r.filter(e=>e!==a):r.map(t=>t===a?e.result.outcome.result.kind===`cancelled`?{address:a.address,identity:a.identity,lastStatus:`(cancelled)`,phase:`parked`}:{address:a.address,identity:a.identity,phase:`available`}:t),s=writeHandles(t,o);return e.result.outcome.kind===`terminal`&&(s=e.taskId===void 0?`continuationToken`in a.address?clearProxyInputRequestsForChild(s,a.address.continuationToken):s:clearProxyInputRequestsForTask(s,e.taskId)),e.accumulateUsage!==!1&&(s=setTurnUsageState(s,accumulateSessionUsage({previous:getTurnUsageState(s.state),usage:e.result.outcome.usageDelta}))),{serializedContext:n,sessionState:replaceDurableSessionSnapshot({session:s,state:e.sessionState})}}async function releaseAgentInvocationOwnerStep(e){"use step";let t=await readDurableSession(e.sessionState),n=e.cancelled?abandonAgentInvocationOwners(t,new Set([e.ownerId])):applyTaskAgentHandleCommand(t,{kind:`release-owner`,ownerId:e.ownerId}).session;return{sessionState:n===t?e.sessionState:replaceDurableSessionSnapshot({session:n,state:e.sessionState})}}function readClaimedHandle(e){let t=e.kind===`ready`?e.handle:void 0;return t?.phase===`claimed`?t:void 0}function createTaskClaimError(e,t,n){return n.kind===`mismatch`?createAgentErrorResult({action:e,code:AGENT_MISMATCH,message:`Agent "${t}" no longer matches this subagent definition. Start a new agent instead.`}):n.kind===`busy`?createAgentErrorResult({action:e,code:AGENT_BUSY,message:formatAgentBusyMessage({agentId:t,agentName:n.handle.identity.name,ownerId:`ownerId`in n.handle?n.handle.ownerId:void 0})}):createAgentErrorResult({action:e,code:AGENT_UNREACHABLE,message:`Agent with id "${t}" is no longer reachable.`})}export{dispatchAgentInvocation,dispatchTaskAgentInvocationStep,releaseAgentInvocationOwnerStep,settleTaskAgentInvocationStep};
@@ -29,6 +29,7 @@ export declare function startSubagent(input: {
29
29
  readonly callbackBaseUrl: string | undefined;
30
30
  readonly capabilities: Parameters<typeof buildSubagentRunInput>[0]["capabilities"];
31
31
  readonly channelMetadata: Parameters<typeof buildSubagentRunInput>[0]["channelMetadata"];
32
+ readonly inheritedConversation?: Parameters<typeof buildSubagentRunInput>[0]["inheritedConversation"];
32
33
  readonly currentSession: RuntimeSession;
33
34
  readonly fanoutSize: number;
34
35
  readonly initiatorAuth: Parameters<typeof buildSubagentRunInput>[0]["initiatorAuth"];
@@ -37,6 +38,10 @@ export declare function startSubagent(input: {
37
38
  readonly activityObserver?: ActivityObserverConfig & {
38
39
  readonly workIdentity: ActivityWorkIdentityV1;
39
40
  };
41
+ /** The backing agent reports as this task, rather than as a separate child work item. */
42
+ readonly taskActivityObserver?: ActivityObserverConfig & {
43
+ readonly workIdentity: ActivityWorkIdentityV1;
44
+ };
40
45
  readonly sandboxSessionId: string;
41
46
  readonly session: RuntimeSession;
42
47
  readonly taskId?: string;
@@ -1 +1 @@
1
- import{resolveConversationId}from"#tracing/conversation-context.js";import"#subagents/tool.js";import{startLocalSubagent}from"#subagents/start-local.js";import{startRemoteSubagent}from"#subagents/start-remote.js";async function startSubagent(e){let{trace:t}=e,n={conversationId:t.conversationId??resolveConversationId(e.session.rootSessionId??e.session.sessionId),lineage:{callId:e.target.action.callId,rootSessionId:e.session.rootSessionId??e.session.sessionId,sessionId:e.session.sessionId,turn:{id:e.batchEvent.turnId,sequence:e.batchEvent.sequence}},continuationToken:e.parentContinuationToken,traceContext:t.parentTraceContext,originAudience:t.originAudience};switch(e.target.kind){case`local`:return startLocalSubagent({action:e.target.action,auth:e.auth,bundle:e.bundle,capabilities:e.capabilities,channelMetadata:e.channelMetadata,currentSession:e.currentSession,dynamicSubagentAgentConfig:e.target.dynamicSubagentAgentConfig,fanoutSize:e.fanoutSize,initiatorAuth:e.initiatorAuth,localDevRequest:e.localDevRequest,parent:n,activityObserver:e.activityObserver,sandboxSessionId:e.sandboxSessionId,session:e.session,source:e.target.source,taskId:e.taskId});case`remote`:return startRemoteSubagent({action:e.target.action,auth:e.auth,bundle:e.bundle,callbackBaseUrl:e.callbackBaseUrl,currentSession:e.currentSession,dynamicRemoteAgent:e.target.dynamicRemoteAgent,initiatorAuth:e.initiatorAuth,parent:n,activityObserver:e.activityObserver,session:e.session,taskId:e.taskId});default:return e.target}}export{startSubagent};
1
+ import{resolveConversationId}from"#tracing/conversation-context.js";import"#subagents/tool.js";import{startLocalSubagent}from"#subagents/start-local.js";import{startRemoteSubagent}from"#subagents/start-remote.js";async function startSubagent(e){let{trace:t}=e,n={conversationId:t.conversationId??resolveConversationId(e.session.rootSessionId??e.session.sessionId),lineage:{callId:e.target.action.callId,rootSessionId:e.session.rootSessionId??e.session.sessionId,sessionId:e.session.sessionId,turn:{id:e.batchEvent.turnId,sequence:e.batchEvent.sequence}},continuationToken:e.parentContinuationToken,traceContext:t.parentTraceContext,originAudience:t.originAudience};switch(e.target.kind){case`local`:return startLocalSubagent({action:e.target.action,auth:e.auth,bundle:e.bundle,capabilities:e.capabilities,channelMetadata:e.channelMetadata,inheritedConversation:e.inheritedConversation,currentSession:e.currentSession,dynamicSubagentAgentConfig:e.target.dynamicSubagentAgentConfig,fanoutSize:e.fanoutSize,initiatorAuth:e.initiatorAuth,localDevRequest:e.localDevRequest,parent:n,activityObserver:e.taskActivityObserver??e.activityObserver,sandboxSessionId:e.sandboxSessionId,session:e.session,source:e.target.source,taskId:e.taskId});case`remote`:return startRemoteSubagent({action:e.target.action,auth:e.auth,bundle:e.bundle,callbackBaseUrl:e.callbackBaseUrl,currentSession:e.currentSession,dynamicRemoteAgent:e.target.dynamicRemoteAgent,initiatorAuth:e.initiatorAuth,parent:n,activityObserver:e.activityObserver,taskActivityObserver:e.taskActivityObserver,session:e.session,taskId:e.taskId});default:return e.target}}export{startSubagent};
@@ -1,8 +1,8 @@
1
1
  /** Every explicit session-inbox wire version still supported by producers. */
2
- export declare const SESSION_INBOX_WIRE_VERSIONS: readonly [1, 2, 3, 4, 5, 6];
2
+ export declare const SESSION_INBOX_WIRE_VERSIONS: readonly [1, 2, 3, 4, 5, 6, 7];
3
3
  export type SessionInboxWireVersion = (typeof SESSION_INBOX_WIRE_VERSIONS)[number];
4
4
  /** Current persisted session-inbox wire version. */
5
- export declare const SESSION_INBOX_WIRE_VERSION: 1 | 2 | 3 | 4 | 5 | 6;
5
+ export declare const SESSION_INBOX_WIRE_VERSION: 1 | 2 | 3 | 4 | 5 | 6 | 7;
6
6
  /** Hook metadata field advertising the consumer's inbox wire capability. */
7
7
  export declare const SESSION_INBOX_WIRE_VERSION_METADATA_KEY = "sessionInboxWireVersion";
8
8
  /**
@@ -1 +1 @@
1
- const SESSION_INBOX_WIRE_VERSIONS=[1,2,3,4,5,6],SESSION_INBOX_WIRE_VERSION=SESSION_INBOX_WIRE_VERSIONS[SESSION_INBOX_WIRE_VERSIONS.length-1],SESSION_INBOX_WIRE_VERSION_METADATA_KEY=`sessionInboxWireVersion`,WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY=`workflowTaskAuthorization`,SESSION_INBOX_CONTEXT_KEY=`eve.sessionInbox`;function isSessionInboxAddress(e){return typeof e!=`object`||!e?!1:`sessionId`in e&&typeof e.sessionId==`string`&&e.sessionId.length>0&&!e.sessionId.includes(`:`)&&`version`in e&&typeof e.version==`number`&&Number.isSafeInteger(e.version)&&e.version>0}function isSessionInboxWireVersion(e){return SESSION_INBOX_WIRE_VERSIONS.some(t=>t===e)}var SessionInboxWireError=class extends Error{constructor(e){super(e),this.name=`SessionInboxWireError`}};export{SESSION_INBOX_CONTEXT_KEY,SESSION_INBOX_WIRE_VERSION,SESSION_INBOX_WIRE_VERSIONS,SESSION_INBOX_WIRE_VERSION_METADATA_KEY,SessionInboxWireError,WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY,isSessionInboxAddress,isSessionInboxWireVersion};
1
+ const SESSION_INBOX_WIRE_VERSIONS=[1,2,3,4,5,6,7],SESSION_INBOX_WIRE_VERSION=SESSION_INBOX_WIRE_VERSIONS[SESSION_INBOX_WIRE_VERSIONS.length-1],SESSION_INBOX_WIRE_VERSION_METADATA_KEY=`sessionInboxWireVersion`,WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY=`workflowTaskAuthorization`,SESSION_INBOX_CONTEXT_KEY=`eve.sessionInbox`;function isSessionInboxAddress(e){return typeof e!=`object`||!e?!1:`sessionId`in e&&typeof e.sessionId==`string`&&e.sessionId.length>0&&!e.sessionId.includes(`:`)&&`version`in e&&typeof e.version==`number`&&Number.isSafeInteger(e.version)&&e.version>0}function isSessionInboxWireVersion(e){return SESSION_INBOX_WIRE_VERSIONS.some(t=>t===e)}var SessionInboxWireError=class extends Error{constructor(e){super(e),this.name=`SessionInboxWireError`}};export{SESSION_INBOX_CONTEXT_KEY,SESSION_INBOX_WIRE_VERSION,SESSION_INBOX_WIRE_VERSIONS,SESSION_INBOX_WIRE_VERSION_METADATA_KEY,SessionInboxWireError,WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY,isSessionInboxAddress,isSessionInboxWireVersion};
@@ -6,9 +6,10 @@ import { type SessionInboxWireTarget, type SessionInboxWireVersion } from "#exec
6
6
  import { type SessionInboxWireV4 } from "#execution/wire/session-inbox-wire.v4.js";
7
7
  import { type SessionInboxWireV5 } from "#execution/wire/session-inbox-wire.v5.js";
8
8
  import { type SessionInboxWireV6 } from "#execution/wire/session-inbox-wire.v6.js";
9
+ import { type SessionInboxWireV7 } from "#execution/wire/session-inbox-wire.v7.js";
9
10
  type SessionInboxCommand = DeliverHookPayload | SessionCommand | SessionTimeoutHookPayload;
10
11
  /** Current wire type consumed after migration. */
11
- export type SessionInboxWire = SessionInboxWireV6;
12
+ export type SessionInboxWire = SessionInboxWireV7;
12
13
  type LegacySessionInboxWireTarget = Extract<SessionInboxWireTarget, {
13
14
  readonly version: 0;
14
15
  }>;
@@ -31,11 +32,14 @@ declare function encode(command: SessionInboxCommand, target: {
31
32
  declare function encode(command: SessionInboxCommand, target: {
32
33
  readonly version: 6;
33
34
  }): SessionInboxWireV6;
35
+ declare function encode(command: SessionInboxCommand, target: {
36
+ readonly version: 7;
37
+ }): SessionInboxWireV7;
34
38
  declare function encode(command: SessionInboxCommand, target: {
35
39
  readonly version: SessionInboxWireVersion;
36
40
  }): unknown;
37
41
  declare function encode(command: SessionInboxCommand, target: LegacySessionInboxWireTarget): Record<string, unknown>;
38
- declare function encode(command: SessionInboxCommand, target: SessionInboxWireTarget): SessionInboxWireV1 | SessionInboxWireV2 | SessionInboxWireV3 | SessionInboxWireV4 | SessionInboxWireV5 | SessionInboxWireV6 | Record<string, unknown>;
42
+ declare function encode(command: SessionInboxCommand, target: SessionInboxWireTarget): SessionInboxWireV1 | SessionInboxWireV2 | SessionInboxWireV3 | SessionInboxWireV4 | SessionInboxWireV5 | SessionInboxWireV6 | SessionInboxWireV7 | Record<string, unknown>;
39
43
  /** Server/step-safe producer facade. */
40
44
  export declare const sessionInboxWire: {
41
45
  readonly encode: typeof encode;
@@ -1 +1 @@
1
- import{SessionInboxWireError,isSessionInboxWireVersion}from"#execution/wire/session-inbox-contract.js";import{encodeSessionCommandV1}from"#execution/wire/session-inbox-wire.v1.js";import{encodeSessionCommandV2}from"#execution/wire/session-inbox-wire.v2.js";import{encodeSessionCommandV3}from"#execution/wire/session-inbox-wire.v3.js";import{encodeSessionCommandV0}from"#execution/wire/session-inbox-wire.v0.js";import{encodeSessionCommandV4}from"#execution/wire/session-inbox-wire.v4.js";import{encodeSessionCommandV5}from"#execution/wire/session-inbox-wire.v5.js";import{encodeSessionCommandV6}from"#execution/wire/session-inbox-wire.v6.js";const versionedEncoders={1:e=>encodeSessionCommandV1(withoutAcceptedDeployment(withoutOwnedTaskCancellation(e))),2:e=>encodeSessionCommandV2(withoutAcceptedDeployment(withoutOwnedTaskCancellation(e))),3:e=>encodeSessionCommandV3(withoutOwnedTaskCancellation(e)),4:e=>encodeSessionCommandV4(withoutOwnedTaskCancellation(e)),5:e=>encodeSessionCommandV5(withoutOwnedTaskCancellation(e)),6:encodeSessionCommandV6};function encode(e,t){if(e.kind===`cancel`&&e.tasks===!0&&t.version<6)throw new SessionInboxWireError(`Cannot encode session-owned task cancellation for wire version ${t.version}.`);if(t.version===0){let n=t.variant===`send`&&e.kind===`send`&&e.payload.task!==void 0?encodeSessionCommandV5(e):void 0,r=encodeSessionCommandV0(encodeSessionCommandV1(withoutCurrentTaskMessages(withoutAcceptedDeployment(withoutOwnedTaskCancellation(e)))),t.variant);n?.kind===`deliver`&&(r={...r,payload:n.payload});let i=r,a=i.delivery,o=readAcceptedDeploymentId(e);return t.variant!==`send`||o===void 0||i.kind!==`send`||typeof a!=`object`||!a?r:{...r,delivery:{...a,acceptedDeploymentId:o}}}if(isSessionInboxWireVersion(t.version))return versionedEncoders[t.version](e);throw new SessionInboxWireError(`Cannot encode session inbox payload for unknown wire version ${JSON.stringify(t.version)}.`)}function withoutOwnedTaskCancellation(e){if(e.kind!==`cancel`||e.tasks===void 0)return e;let{tasks:t,...n}=e;return n}function withoutCurrentTaskMessages(e){if(e.kind!==`send`||e.payload.task===void 0)return e;let{agentRequests:t,inputRequests:n,...r}=e.payload.task;return{...e,payload:{...e.payload,task:r}}}function withoutAcceptedDeployment(e){if(e.kind===`send`&&e.delivery?.acceptedDeploymentId!==void 0){let{acceptedDeploymentId:t,...n}=e.delivery;return{...e,delivery:n}}return e.kind!==`deliver`||e.deliveryMetadata===void 0?e:{...e,deliveryMetadata:e.deliveryMetadata.map(e=>{let{acceptedDeploymentId:t,...n}=e;return n})}}function readAcceptedDeploymentId(e){if(e.kind===`send`)return e.delivery?.acceptedDeploymentId;if(e.kind===`deliver`)return e.deliveryMetadata?.find(e=>e.payloadIndex===0)?.acceptedDeploymentId}const sessionInboxWire={encode};export{sessionInboxWire};
1
+ import{SessionInboxWireError,isSessionInboxWireVersion}from"#execution/wire/session-inbox-contract.js";import{encodeSessionCommandV1}from"#execution/wire/session-inbox-wire.v1.js";import{encodeSessionCommandV2}from"#execution/wire/session-inbox-wire.v2.js";import{encodeSessionCommandV3}from"#execution/wire/session-inbox-wire.v3.js";import{encodeSessionCommandV0}from"#execution/wire/session-inbox-wire.v0.js";import{encodeSessionCommandV4}from"#execution/wire/session-inbox-wire.v4.js";import{encodeSessionCommandV5}from"#execution/wire/session-inbox-wire.v5.js";import{encodeSessionCommandV6}from"#execution/wire/session-inbox-wire.v6.js";import{encodeSessionCommandV7}from"#execution/wire/session-inbox-wire.v7.js";const versionedEncoders={1:e=>encodeSessionCommandV1(withoutAcceptedDeployment(withoutOwnedTaskCancellation(e))),2:e=>encodeSessionCommandV2(withoutAcceptedDeployment(withoutOwnedTaskCancellation(e))),3:e=>encodeSessionCommandV3(withoutOwnedTaskCancellation(e)),4:e=>encodeSessionCommandV4(withoutOwnedTaskCancellation(e)),5:e=>encodeSessionCommandV5(withoutOwnedTaskCancellation(e)),6:encodeSessionCommandV6,7:encodeSessionCommandV7};function encode(e,t){if(e.kind===`cancel`&&e.tasks===!0&&t.version<6)throw new SessionInboxWireError(`Cannot encode session-owned task cancellation for wire version ${t.version}.`);let n=t.version<7?withoutActivityLabels(e):e;if(t.version===0){let r=t.variant===`send`&&n.kind===`send`&&n.payload.task!==void 0?encodeSessionCommandV5(n):void 0,i=encodeSessionCommandV0(encodeSessionCommandV1(withoutCurrentTaskMessages(withoutAcceptedDeployment(withoutOwnedTaskCancellation(n)))),t.variant);r?.kind===`deliver`&&(i={...i,payload:r.payload});let a=i,o=a.delivery,s=readAcceptedDeploymentId(e);return t.variant!==`send`||s===void 0||a.kind!==`send`||typeof o!=`object`||!o?i:{...i,delivery:{...o,acceptedDeploymentId:s}}}if(isSessionInboxWireVersion(t.version))return versionedEncoders[t.version](n);throw new SessionInboxWireError(`Cannot encode session inbox payload for unknown wire version ${JSON.stringify(t.version)}.`)}function withoutActivityLabels(e){if(e.kind!==`send`&&e.kind!==`deliver`||e.caller?.activityObserver?.workIdentity?.label===void 0)return e;let{label:t,...n}=e.caller.activityObserver.workIdentity;return{...e,caller:{...e.caller,activityObserver:{...e.caller.activityObserver,workIdentity:n}}}}function withoutOwnedTaskCancellation(e){if(e.kind!==`cancel`||e.tasks===void 0)return e;let{tasks:t,...n}=e;return n}function withoutCurrentTaskMessages(e){if(e.kind!==`send`||e.payload.task===void 0)return e;let{agentRequests:t,inputRequests:n,...r}=e.payload.task;return{...e,payload:{...e.payload,task:r}}}function withoutAcceptedDeployment(e){if(e.kind===`send`&&e.delivery?.acceptedDeploymentId!==void 0){let{acceptedDeploymentId:t,...n}=e.delivery;return{...e,delivery:n}}return e.kind!==`deliver`||e.deliveryMetadata===void 0?e:{...e,deliveryMetadata:e.deliveryMetadata.map(e=>{let{acceptedDeploymentId:t,...n}=e;return n})}}function readAcceptedDeploymentId(e){if(e.kind===`send`)return e.delivery?.acceptedDeploymentId;if(e.kind===`deliver`)return e.deliveryMetadata?.find(e=>e.payloadIndex===0)?.acceptedDeploymentId}const sessionInboxWire={encode};export{sessionInboxWire};
@@ -1 +1 @@
1
- import{isSessionCommandHookToken,sessionCommandHookToken}from"#execution/session-command-token.js";import{isObject}from"#shared/guards.js";import{SESSION_INBOX_WIRE_VERSION_METADATA_KEY,SessionInboxWireError,WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY,isSessionInboxAddress,isSessionInboxWireVersion}from"#execution/wire/session-inbox-contract.js";import{getHookByToken,getRawHookByToken,resumeHook}from"#internal/workflow/runtime.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";import{sessionInboxWire}from"#execution/wire/session-inbox-encoder.js";async function resumeSessionInbox(e,t){if(typeof e!=`string`){if(!isSessionInboxAddress(e))throw new SessionInboxWireError(`Session inbox target has an invalid address.`);if(!isSessionInboxWireVersion(e.version))throw new SessionInboxWireError(`Session inbox target declares unsupported wire version ${JSON.stringify(e.version)}.`);return await resumeHook(sessionCommandHookToken(e.sessionId),sessionInboxWire.encode(t,{version:e.version}))}let n=e;if(isStableInboxFastPathCompatible(n,t))return await resumeHook(n,sessionInboxWire.encode(t,{variant:`send`,version:0}));let r=await getHookByToken(n),i=await resolveSessionInboxWireTarget(r);return await resumeHook(r,sessionInboxWire.encode(t,i))}function isStableInboxFastPathCompatible(e,t){return!isSessionCommandHookToken(e)||t.kind===`cancel`&&t.tasks===!0?!1:!(`caller`in t&&t.caller?.activityObserver!==void 0)}async function sessionDriverSupportsWorkflowTaskAuthorization(e){let t=await(await getHookByToken(sessionCommandHookToken(e))).metadata;return isObject(t)&&t[WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY]===!0}async function resolveSessionInboxWireTarget(e){let t=await e.metadata;if(isObject(t)&&SESSION_INBOX_WIRE_VERSION_METADATA_KEY in t){let e=t[SESSION_INBOX_WIRE_VERSION_METADATA_KEY];if(isSessionInboxWireVersion(e))return{version:e};throw new SessionInboxWireError(`Session inbox target declares unsupported wire version ${JSON.stringify(e)}.`)}let n=sessionCommandHookToken(e.runId);if(e.token===n)return{variant:`send`,version:0};try{let t=await getRawHookByToken(n);if(t.runId!==e.runId)throw new SessionInboxWireError(`Stable session inbox ${JSON.stringify(n)} belongs to run ${JSON.stringify(t.runId)}, expected ${JSON.stringify(e.runId)}.`);return{variant:`send`,version:0}}catch(e){if(HookNotFoundError.is(e))return{variant:`deliver`,version:0};throw e}}export{resolveSessionInboxWireTarget,resumeSessionInbox,sessionDriverSupportsWorkflowTaskAuthorization};
1
+ import{isObject}from"#shared/guards.js";import{isSessionCommandHookToken,sessionCommandHookToken}from"#execution/session-command-token.js";import{SESSION_INBOX_WIRE_VERSION_METADATA_KEY,SessionInboxWireError,WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY,isSessionInboxAddress,isSessionInboxWireVersion}from"#execution/wire/session-inbox-contract.js";import{getHookByToken,getRawHookByToken,resumeHook}from"#internal/workflow/runtime.js";import{HookNotFoundError}from"#compiled/@workflow/errors/index.js";import{sessionInboxWire}from"#execution/wire/session-inbox-encoder.js";async function resumeSessionInbox(e,t){if(typeof e!=`string`){if(!isSessionInboxAddress(e))throw new SessionInboxWireError(`Session inbox target has an invalid address.`);if(!isSessionInboxWireVersion(e.version))throw new SessionInboxWireError(`Session inbox target declares unsupported wire version ${JSON.stringify(e.version)}.`);return await resumeHook(sessionCommandHookToken(e.sessionId),sessionInboxWire.encode(t,{version:e.version}))}let n=e;if(isStableInboxFastPathCompatible(n,t))return await resumeHook(n,sessionInboxWire.encode(t,{variant:`send`,version:0}));let r=await getHookByToken(n),i=await resolveSessionInboxWireTarget(r);return await resumeHook(r,sessionInboxWire.encode(t,i))}function isStableInboxFastPathCompatible(e,t){return!isSessionCommandHookToken(e)||t.kind===`cancel`&&t.tasks===!0?!1:!(`caller`in t&&t.caller?.activityObserver!==void 0)}async function sessionDriverSupportsWorkflowTaskAuthorization(e){let t=await(await getHookByToken(sessionCommandHookToken(e))).metadata;return isObject(t)&&t[WORKFLOW_TASK_AUTHORIZATION_METADATA_KEY]===!0}async function resolveSessionInboxWireTarget(e){let t=await e.metadata;if(isObject(t)&&SESSION_INBOX_WIRE_VERSION_METADATA_KEY in t){let e=t[SESSION_INBOX_WIRE_VERSION_METADATA_KEY];if(isSessionInboxWireVersion(e))return{version:e};throw new SessionInboxWireError(`Session inbox target declares unsupported wire version ${JSON.stringify(e)}.`)}let n=sessionCommandHookToken(e.runId);if(e.token===n)return{variant:`send`,version:0};try{let t=await getRawHookByToken(n);if(t.runId!==e.runId)throw new SessionInboxWireError(`Stable session inbox ${JSON.stringify(n)} belongs to run ${JSON.stringify(t.runId)}, expected ${JSON.stringify(e.runId)}.`);return{variant:`send`,version:0}}catch(e){if(HookNotFoundError.is(e))return{variant:`deliver`,version:0};throw e}}export{resolveSessionInboxWireTarget,resumeSessionInbox,sessionDriverSupportsWorkflowTaskAuthorization};
@@ -1 +1 @@
1
- import{isObject}from"#shared/guards.js";import{SESSION_INBOX_WIRE_VERSION,SessionInboxWireError,SessionInboxWireError as SessionInboxWireError$1}from"#execution/wire/session-inbox-contract.js";import{sessionInboxWireV0Migration}from"#execution/wire/session-inbox-wire.v0.js";import{runMigrationChain}from"#execution/durable-session-migrations/chain.js";import{normalizeSessionInboxWireV2}from"#execution/wire/session-inbox-wire.v2-migration.js";import{sessionInboxWireV1Migration}from"#execution/wire/session-inbox-wire.v2.migration.js";import{sessionInboxWireV2Migration}from"#execution/wire/session-inbox-wire.v3.migration.js";import{sessionInboxWireV3Migration}from"#execution/wire/session-inbox-wire.v4.migration.js";import{sessionInboxWireV4Migration}from"#execution/wire/session-inbox-wire.v5.migration.js";const WIRE_LABEL=`session inbox payload`,sessionInboxMigrations=[sessionInboxWireV0Migration,sessionInboxWireV1Migration,sessionInboxWireV2Migration,sessionInboxWireV3Migration,sessionInboxWireV4Migration,{from:5,migrate(e){if(!isObject(e))throw Error(`session inbox wire v5 value is not an object.`);return{...e,version:6}},to:6}];function decode(e){let t=typeof e==`object`&&e&&`version`in e?e.version:void 0;if(typeof e==`object`&&e&&`version`in e&&typeof t!=`number`)throw new SessionInboxWireError$1(`${WIRE_LABEL}: value has no numeric "version" field.`);let n=normalizeSessionInboxWireV2(e);if((t===1||t===2||t===3)&&containsCurrentTaskMessages(n))throw new SessionInboxWireError$1(`${WIRE_LABEL} does not match wire version ${t}.`);let r;try{r=runMigrationChain({initialVersion:0,label:WIRE_LABEL,migrations:sessionInboxMigrations,targetVersion:SESSION_INBOX_WIRE_VERSION,value:n})}catch(e){throw new SessionInboxWireError$1(e instanceof Error?e.message:String(e))}let i=normalizeSessionInboxWireV2(r);if(i.version!==SESSION_INBOX_WIRE_VERSION)throw new SessionInboxWireError$1(`${WIRE_LABEL} declares version ${JSON.stringify(i.version)}, expected ${SESSION_INBOX_WIRE_VERSION}.`);if(typeof t==`number`&&t>=2&&i.kind===`deliver`&&!(`payload`in i))throw new SessionInboxWireError$1(`${WIRE_LABEL} does not match wire version ${t}.`);return normalizeWire(i)}const sessionInboxWire={decode};function containsCurrentTaskMessages(e){return!isObject(e)||e.kind!==`deliver`?!1:(Array.isArray(e.payloads)?e.payloads:[]).some(e=>{if(!isObject(e)||!isObject(e.task))return!1;if(Object.hasOwn(e.task,`agentRequests`))return!0;let t=e.task.inputRequests;return Array.isArray(t)&&t.some(e=>isObject(e)&&(`request`in e||`requests`in e))})}function normalizeWire(e){switch(e.kind){case`deliver`:return{auth:e.auth,caller:e.caller,deliveryMetadata:e.deliveryMetadata,kind:`deliver`,payloads:e.payloads,requestId:e.requestId,taskDeliveryId:e.taskDeliveryId,turnPolicy:e.turnPolicy};case`session-timeout`:return{kind:`session-timeout`};case`clear`:return{kind:`clear`};case`compact`:return{kind:`compact`};case`reset`:return{kind:`reset`,reason:e.reason};case`cancel`:return{kind:`cancel`,taskId:e.taskId,tasks:e.tasks,turnId:e.turnId};default:throw new SessionInboxWireError$1(`${WIRE_LABEL} has an unrecognized kind ${JSON.stringify(e.kind)}.`)}}export{SessionInboxWireError,sessionInboxWire};
1
+ import{isObject}from"#shared/guards.js";import{SESSION_INBOX_WIRE_VERSION,SessionInboxWireError,SessionInboxWireError as SessionInboxWireError$1}from"#execution/wire/session-inbox-contract.js";import{sessionInboxWireV0Migration}from"#execution/wire/session-inbox-wire.v0.js";import{runMigrationChain}from"#execution/durable-session-migrations/chain.js";import{normalizeSessionInboxWireV2}from"#execution/wire/session-inbox-wire.v2-migration.js";import{sessionInboxWireV1Migration}from"#execution/wire/session-inbox-wire.v2.migration.js";import{sessionInboxWireV2Migration}from"#execution/wire/session-inbox-wire.v3.migration.js";import{sessionInboxWireV3Migration}from"#execution/wire/session-inbox-wire.v4.migration.js";import{sessionInboxWireV4Migration}from"#execution/wire/session-inbox-wire.v5.migration.js";const WIRE_LABEL=`session inbox payload`,sessionInboxMigrations=[sessionInboxWireV0Migration,sessionInboxWireV1Migration,sessionInboxWireV2Migration,sessionInboxWireV3Migration,sessionInboxWireV4Migration,{from:5,migrate(e){if(!isObject(e))throw Error(`session inbox wire v5 value is not an object.`);return{...e,version:6}},to:6},{from:6,migrate(e){if(!isObject(e))throw Error(`session inbox wire v6 value is not an object.`);return{...e,version:7}},to:7}];function decode(e){let t=typeof e==`object`&&e&&`version`in e?e.version:void 0;if(typeof e==`object`&&e&&`version`in e&&typeof t!=`number`)throw new SessionInboxWireError$1(`${WIRE_LABEL}: value has no numeric "version" field.`);let n=normalizeSessionInboxWireV2(e);if((t===1||t===2||t===3)&&containsCurrentTaskMessages(n))throw new SessionInboxWireError$1(`${WIRE_LABEL} does not match wire version ${t}.`);let r;try{r=runMigrationChain({initialVersion:0,label:WIRE_LABEL,migrations:sessionInboxMigrations,targetVersion:SESSION_INBOX_WIRE_VERSION,value:n})}catch(e){throw new SessionInboxWireError$1(e instanceof Error?e.message:String(e))}let i=normalizeSessionInboxWireV2(r);if(i.version!==SESSION_INBOX_WIRE_VERSION)throw new SessionInboxWireError$1(`${WIRE_LABEL} declares version ${JSON.stringify(i.version)}, expected ${SESSION_INBOX_WIRE_VERSION}.`);if(typeof t==`number`&&t>=2&&i.kind===`deliver`&&!(`payload`in i))throw new SessionInboxWireError$1(`${WIRE_LABEL} does not match wire version ${t}.`);return normalizeWire(i)}const sessionInboxWire={decode};function containsCurrentTaskMessages(e){return!isObject(e)||e.kind!==`deliver`?!1:(Array.isArray(e.payloads)?e.payloads:[]).some(e=>{if(!isObject(e)||!isObject(e.task))return!1;if(Object.hasOwn(e.task,`agentRequests`))return!0;let t=e.task.inputRequests;return Array.isArray(t)&&t.some(e=>isObject(e)&&(`request`in e||`requests`in e))})}function normalizeWire(e){switch(e.kind){case`deliver`:return{auth:e.auth,caller:e.caller,deliveryMetadata:e.deliveryMetadata,kind:`deliver`,payloads:e.payloads,requestId:e.requestId,taskDeliveryId:e.taskDeliveryId,turnPolicy:e.turnPolicy};case`session-timeout`:return{kind:`session-timeout`};case`clear`:return{kind:`clear`};case`compact`:return{kind:`compact`};case`reset`:return{kind:`reset`,reason:e.reason};case`cancel`:return{kind:`cancel`,taskId:e.taskId,tasks:e.tasks,turnId:e.turnId};default:throw new SessionInboxWireError$1(`${WIRE_LABEL} has an unrecognized kind ${JSON.stringify(e.kind)}.`)}}export{SessionInboxWireError,sessionInboxWire};
@@ -0,0 +1,342 @@
1
+ import { z } from "#compiled/zod/index.js";
2
+ import type { DeliverHookPayload, SessionCommand, SessionTimeoutHookPayload } from "#channel/types.js";
3
+ /** Version 7 adds optional presentation labels to delegated activity work. */
4
+ export declare const sessionInboxWireV7Schema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5
+ auth: z.ZodOptional<z.ZodNullable<z.ZodObject<{
6
+ attributes: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
7
+ authenticator: z.ZodString;
8
+ issuer: z.ZodOptional<z.ZodString>;
9
+ principalId: z.ZodString;
10
+ principalType: z.ZodString;
11
+ subject: z.ZodOptional<z.ZodString>;
12
+ }, z.core.$strict>>>;
13
+ kind: z.ZodLiteral<"deliver">;
14
+ requestId: z.ZodOptional<z.ZodString>;
15
+ taskDeliveryId: z.ZodOptional<z.ZodString>;
16
+ turnPolicy: z.ZodOptional<z.ZodEnum<{
17
+ queue: "queue";
18
+ steer: "steer";
19
+ }>>;
20
+ deliveryMetadata: z.ZodOptional<z.ZodArray<z.ZodObject<{
21
+ channelKind: z.ZodString;
22
+ channelName: z.ZodString;
23
+ deliveryId: z.ZodString;
24
+ payloadIndex: z.ZodNumber;
25
+ requestId: z.ZodOptional<z.ZodString>;
26
+ requestTraceContext: z.ZodOptional<z.ZodObject<{
27
+ spanId: z.ZodString;
28
+ traceFlags: z.ZodNumber;
29
+ traceId: z.ZodString;
30
+ }, z.core.$strict>>;
31
+ acceptedDeploymentId: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$strict>>>;
33
+ payload: z.ZodObject<{
34
+ context: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ inputResponses: z.ZodOptional<z.ZodArray<z.ZodObject<{
36
+ optionId: z.ZodOptional<z.ZodString>;
37
+ requestId: z.ZodString;
38
+ text: z.ZodOptional<z.ZodString>;
39
+ }, z.core.$strict>>>;
40
+ message: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
41
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>>;
42
+ text: z.ZodString;
43
+ type: z.ZodLiteral<"text">;
44
+ }, z.core.$strict>, z.ZodObject<{
45
+ image: z.ZodCustom<URL | import("ai").DataContent, URL | import("ai").DataContent>;
46
+ mediaType: z.ZodOptional<z.ZodString>;
47
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>>;
48
+ type: z.ZodLiteral<"image">;
49
+ }, z.core.$strict>, z.ZodObject<{
50
+ data: z.ZodCustom<URL | import("ai").DataContent, URL | import("ai").DataContent>;
51
+ filename: z.ZodOptional<z.ZodString>;
52
+ mediaType: z.ZodString;
53
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>>;
54
+ type: z.ZodLiteral<"file">;
55
+ }, z.core.$strict>], "type">>]>>;
56
+ outputSchema: z.ZodOptional<z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>;
57
+ task: z.ZodOptional<z.ZodObject<{
58
+ agentRequests: z.ZodOptional<z.ZodArray<z.ZodObject<{
59
+ replyTo: z.ZodString;
60
+ request: z.ZodDiscriminatedUnion<[z.ZodObject<{
61
+ input: z.ZodObject<{
62
+ agentId: z.ZodOptional<z.ZodString>;
63
+ message: z.ZodString;
64
+ outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>>>;
65
+ target: z.ZodString;
66
+ }, z.core.$strict>;
67
+ invocationId: z.ZodString;
68
+ kind: z.ZodLiteral<"agent-invoke">;
69
+ }, z.core.$strict>, z.ZodObject<{
70
+ kind: z.ZodLiteral<"agent-settled">;
71
+ result: z.ZodObject<{
72
+ backgroundTask: z.ZodOptional<z.ZodObject<{
73
+ status: z.ZodLiteral<"working">;
74
+ taskId: z.ZodString;
75
+ }, z.core.$strict>>;
76
+ callId: z.ZodString;
77
+ isError: z.ZodOptional<z.ZodBoolean>;
78
+ kind: z.ZodLiteral<"subagent-result">;
79
+ origin: z.ZodLiteral<"child">;
80
+ outcome: z.ZodDiscriminatedUnion<[z.ZodObject<{
81
+ kind: z.ZodLiteral<"parked">;
82
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
83
+ kind: z.ZodLiteral<"succeeded">;
84
+ output: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
85
+ }, z.core.$strict>, z.ZodObject<{
86
+ error: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
87
+ kind: z.ZodLiteral<"failed">;
88
+ }, z.core.$strict>, z.ZodObject<{
89
+ kind: z.ZodLiteral<"cancelled">;
90
+ }, z.core.$strict>], "kind">;
91
+ usageDelta: z.ZodObject<{
92
+ cacheReadTokens: z.ZodNumber;
93
+ cacheWriteTokens: z.ZodNumber;
94
+ inputTokens: z.ZodNumber;
95
+ outputTokens: z.ZodNumber;
96
+ costUsd: z.ZodOptional<z.ZodNumber>;
97
+ }, z.core.$strip>;
98
+ }, z.core.$strict>, z.ZodObject<{
99
+ kind: z.ZodLiteral<"terminal">;
100
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
101
+ kind: z.ZodLiteral<"succeeded">;
102
+ output: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
103
+ }, z.core.$strict>, z.ZodObject<{
104
+ error: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
105
+ kind: z.ZodLiteral<"failed">;
106
+ }, z.core.$strict>, z.ZodObject<{
107
+ kind: z.ZodLiteral<"cancelled">;
108
+ }, z.core.$strict>], "kind">;
109
+ usageDelta: z.ZodObject<{
110
+ cacheReadTokens: z.ZodNumber;
111
+ cacheWriteTokens: z.ZodNumber;
112
+ inputTokens: z.ZodNumber;
113
+ outputTokens: z.ZodNumber;
114
+ costUsd: z.ZodOptional<z.ZodNumber>;
115
+ }, z.core.$strip>;
116
+ }, z.core.$strict>], "kind">;
117
+ output: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
118
+ subagentName: z.ZodString;
119
+ usage: z.ZodOptional<z.ZodObject<{
120
+ cacheReadTokens: z.ZodNumber;
121
+ cacheWriteTokens: z.ZodNumber;
122
+ inputTokens: z.ZodNumber;
123
+ outputTokens: z.ZodNumber;
124
+ costUsd: z.ZodOptional<z.ZodNumber>;
125
+ }, z.core.$strip>>;
126
+ }, z.core.$strict>;
127
+ }, z.core.$strict>], "kind">;
128
+ taskId: z.ZodString;
129
+ }, z.core.$strict>>>;
130
+ authorizationEvents: z.ZodOptional<z.ZodArray<z.ZodObject<{
131
+ hookPayload: z.ZodObject<{
132
+ callId: z.ZodString;
133
+ childSessionId: z.ZodString;
134
+ event: z.ZodCustom<Record<string, unknown>, Record<string, unknown>>;
135
+ kind: z.ZodLiteral<"subagent-authorization-event">;
136
+ subagentName: z.ZodString;
137
+ }, z.core.$strict>;
138
+ taskId: z.ZodString;
139
+ }, z.core.$strict>>>;
140
+ inputRequests: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
141
+ replyTo: z.ZodString;
142
+ sequence: z.ZodNumber;
143
+ stepIndex: z.ZodNumber;
144
+ taskId: z.ZodString;
145
+ turnId: z.ZodString;
146
+ request: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
147
+ }, z.core.$loose>, z.ZodObject<{
148
+ replyTo: z.ZodString;
149
+ sequence: z.ZodNumber;
150
+ stepIndex: z.ZodNumber;
151
+ taskId: z.ZodString;
152
+ turnId: z.ZodString;
153
+ requests: z.ZodArray<z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>>;
154
+ }, z.core.$loose>]>>>;
155
+ views: z.ZodOptional<z.ZodArray<z.ZodType<import("../../tasks/types.ts").TaskView, unknown, z.core.$ZodTypeInternals<import("../../tasks/types.ts").TaskView, unknown>>>>;
156
+ }, z.core.$strict>>;
157
+ }, z.core.$loose>;
158
+ payloads: z.ZodArray<z.ZodObject<{
159
+ context: z.ZodOptional<z.ZodArray<z.ZodString>>;
160
+ inputResponses: z.ZodOptional<z.ZodArray<z.ZodObject<{
161
+ optionId: z.ZodOptional<z.ZodString>;
162
+ requestId: z.ZodString;
163
+ text: z.ZodOptional<z.ZodString>;
164
+ }, z.core.$strict>>>;
165
+ message: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
166
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>>;
167
+ text: z.ZodString;
168
+ type: z.ZodLiteral<"text">;
169
+ }, z.core.$strict>, z.ZodObject<{
170
+ image: z.ZodCustom<URL | import("ai").DataContent, URL | import("ai").DataContent>;
171
+ mediaType: z.ZodOptional<z.ZodString>;
172
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>>;
173
+ type: z.ZodLiteral<"image">;
174
+ }, z.core.$strict>, z.ZodObject<{
175
+ data: z.ZodCustom<URL | import("ai").DataContent, URL | import("ai").DataContent>;
176
+ filename: z.ZodOptional<z.ZodString>;
177
+ mediaType: z.ZodString;
178
+ providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>>;
179
+ type: z.ZodLiteral<"file">;
180
+ }, z.core.$strict>], "type">>]>>;
181
+ outputSchema: z.ZodOptional<z.ZodType<import("../../shared/json.ts").JsonObject, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonObject, unknown>>>;
182
+ task: z.ZodOptional<z.ZodObject<{
183
+ agentRequests: z.ZodOptional<z.ZodArray<z.ZodObject<{
184
+ replyTo: z.ZodString;
185
+ request: z.ZodDiscriminatedUnion<[z.ZodObject<{
186
+ input: z.ZodObject<{
187
+ agentId: z.ZodOptional<z.ZodString>;
188
+ message: z.ZodString;
189
+ outputSchema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>>>;
190
+ target: z.ZodString;
191
+ }, z.core.$strict>;
192
+ invocationId: z.ZodString;
193
+ kind: z.ZodLiteral<"agent-invoke">;
194
+ }, z.core.$strict>, z.ZodObject<{
195
+ kind: z.ZodLiteral<"agent-settled">;
196
+ result: z.ZodObject<{
197
+ backgroundTask: z.ZodOptional<z.ZodObject<{
198
+ status: z.ZodLiteral<"working">;
199
+ taskId: z.ZodString;
200
+ }, z.core.$strict>>;
201
+ callId: z.ZodString;
202
+ isError: z.ZodOptional<z.ZodBoolean>;
203
+ kind: z.ZodLiteral<"subagent-result">;
204
+ origin: z.ZodLiteral<"child">;
205
+ outcome: z.ZodDiscriminatedUnion<[z.ZodObject<{
206
+ kind: z.ZodLiteral<"parked">;
207
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
208
+ kind: z.ZodLiteral<"succeeded">;
209
+ output: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
210
+ }, z.core.$strict>, z.ZodObject<{
211
+ error: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
212
+ kind: z.ZodLiteral<"failed">;
213
+ }, z.core.$strict>, z.ZodObject<{
214
+ kind: z.ZodLiteral<"cancelled">;
215
+ }, z.core.$strict>], "kind">;
216
+ usageDelta: z.ZodObject<{
217
+ cacheReadTokens: z.ZodNumber;
218
+ cacheWriteTokens: z.ZodNumber;
219
+ inputTokens: z.ZodNumber;
220
+ outputTokens: z.ZodNumber;
221
+ costUsd: z.ZodOptional<z.ZodNumber>;
222
+ }, z.core.$strip>;
223
+ }, z.core.$strict>, z.ZodObject<{
224
+ kind: z.ZodLiteral<"terminal">;
225
+ result: z.ZodDiscriminatedUnion<[z.ZodObject<{
226
+ kind: z.ZodLiteral<"succeeded">;
227
+ output: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
228
+ }, z.core.$strict>, z.ZodObject<{
229
+ error: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
230
+ kind: z.ZodLiteral<"failed">;
231
+ }, z.core.$strict>, z.ZodObject<{
232
+ kind: z.ZodLiteral<"cancelled">;
233
+ }, z.core.$strict>], "kind">;
234
+ usageDelta: z.ZodObject<{
235
+ cacheReadTokens: z.ZodNumber;
236
+ cacheWriteTokens: z.ZodNumber;
237
+ inputTokens: z.ZodNumber;
238
+ outputTokens: z.ZodNumber;
239
+ costUsd: z.ZodOptional<z.ZodNumber>;
240
+ }, z.core.$strip>;
241
+ }, z.core.$strict>], "kind">;
242
+ output: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
243
+ subagentName: z.ZodString;
244
+ usage: z.ZodOptional<z.ZodObject<{
245
+ cacheReadTokens: z.ZodNumber;
246
+ cacheWriteTokens: z.ZodNumber;
247
+ inputTokens: z.ZodNumber;
248
+ outputTokens: z.ZodNumber;
249
+ costUsd: z.ZodOptional<z.ZodNumber>;
250
+ }, z.core.$strip>>;
251
+ }, z.core.$strict>;
252
+ }, z.core.$strict>], "kind">;
253
+ taskId: z.ZodString;
254
+ }, z.core.$strict>>>;
255
+ authorizationEvents: z.ZodOptional<z.ZodArray<z.ZodObject<{
256
+ hookPayload: z.ZodObject<{
257
+ callId: z.ZodString;
258
+ childSessionId: z.ZodString;
259
+ event: z.ZodCustom<Record<string, unknown>, Record<string, unknown>>;
260
+ kind: z.ZodLiteral<"subagent-authorization-event">;
261
+ subagentName: z.ZodString;
262
+ }, z.core.$strict>;
263
+ taskId: z.ZodString;
264
+ }, z.core.$strict>>>;
265
+ inputRequests: z.ZodOptional<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
266
+ replyTo: z.ZodString;
267
+ sequence: z.ZodNumber;
268
+ stepIndex: z.ZodNumber;
269
+ taskId: z.ZodString;
270
+ turnId: z.ZodString;
271
+ request: z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>;
272
+ }, z.core.$loose>, z.ZodObject<{
273
+ replyTo: z.ZodString;
274
+ sequence: z.ZodNumber;
275
+ stepIndex: z.ZodNumber;
276
+ taskId: z.ZodString;
277
+ turnId: z.ZodString;
278
+ requests: z.ZodArray<z.ZodType<import("../../shared/json.ts").JsonValue, unknown, z.core.$ZodTypeInternals<import("../../shared/json.ts").JsonValue, unknown>>>;
279
+ }, z.core.$loose>]>>>;
280
+ views: z.ZodOptional<z.ZodArray<z.ZodType<import("../../tasks/types.ts").TaskView, unknown, z.core.$ZodTypeInternals<import("../../tasks/types.ts").TaskView, unknown>>>>;
281
+ }, z.core.$strict>>;
282
+ }, z.core.$loose>>;
283
+ caller: z.ZodOptional<z.ZodObject<{
284
+ callId: z.ZodString;
285
+ replyTo: z.ZodDiscriminatedUnion<[z.ZodObject<{
286
+ kind: z.ZodLiteral<"hook">;
287
+ token: z.ZodString;
288
+ }, z.core.$strict>, z.ZodObject<{
289
+ kind: z.ZodLiteral<"callback">;
290
+ token: z.ZodString;
291
+ url: z.ZodString;
292
+ }, z.core.$strict>], "kind">;
293
+ subagentName: z.ZodString;
294
+ taskId: z.ZodOptional<z.ZodString>;
295
+ activityObserver: z.ZodOptional<z.ZodObject<{
296
+ sink: z.ZodObject<{
297
+ url: z.ZodString;
298
+ version: z.ZodLiteral<1>;
299
+ }, z.core.$strict>;
300
+ workIdentity: z.ZodOptional<z.ZodObject<{
301
+ callId: z.ZodOptional<z.ZodString>;
302
+ id: z.ZodString;
303
+ kind: z.ZodEnum<{
304
+ "remote-agent": "remote-agent";
305
+ "root-turn": "root-turn";
306
+ subagent: "subagent";
307
+ task: "task";
308
+ }>;
309
+ name: z.ZodOptional<z.ZodString>;
310
+ parentId: z.ZodOptional<z.ZodString>;
311
+ rootSessionId: z.ZodString;
312
+ rootTurnId: z.ZodString;
313
+ sessionId: z.ZodOptional<z.ZodString>;
314
+ turnId: z.ZodOptional<z.ZodString>;
315
+ label: z.ZodOptional<z.ZodString>;
316
+ }, z.core.$strict>>;
317
+ }, z.core.$strict>>;
318
+ }, z.core.$strict>>;
319
+ version: z.ZodLiteral<7>;
320
+ }, z.core.$strict>, z.ZodObject<{
321
+ kind: z.ZodLiteral<"session-timeout">;
322
+ version: z.ZodLiteral<7>;
323
+ }, z.core.$strict>, z.ZodObject<{
324
+ kind: z.ZodLiteral<"clear">;
325
+ version: z.ZodLiteral<7>;
326
+ }, z.core.$strict>, z.ZodObject<{
327
+ kind: z.ZodLiteral<"compact">;
328
+ version: z.ZodLiteral<7>;
329
+ }, z.core.$strict>, z.ZodObject<{
330
+ kind: z.ZodLiteral<"reset">;
331
+ reason: z.ZodOptional<z.ZodString>;
332
+ version: z.ZodLiteral<7>;
333
+ }, z.core.$strict>, z.ZodObject<{
334
+ kind: z.ZodLiteral<"cancel">;
335
+ taskId: z.ZodOptional<z.ZodString>;
336
+ turnId: z.ZodOptional<z.ZodString>;
337
+ tasks: z.ZodOptional<z.ZodBoolean>;
338
+ version: z.ZodLiteral<7>;
339
+ }, z.core.$strict>], "kind">;
340
+ export type SessionInboxWireV7 = z.infer<typeof sessionInboxWireV7Schema>;
341
+ /** Builds and validates one complete version-7 wire value. */
342
+ export declare function encodeSessionCommandV7(command: DeliverHookPayload | SessionCommand | SessionTimeoutHookPayload): SessionInboxWireV7;
@@ -0,0 +1 @@
1
+ import{z}from"#compiled/zod/index.js";import{formatValidationError}from"#runtime/validation.js";import{SessionInboxWireError}from"#execution/wire/session-inbox-contract.js";import{encodeSessionCommandV6,sessionInboxWireV6Schema}from"#execution/wire/session-inbox-wire.v6.js";const v6=sessionInboxWireV6Schema.options,v6Deliver=v6[0],v6Caller=v6Deliver.shape.caller.unwrap(),v6ActivityObserver=v6Caller.shape.activityObserver.unwrap(),v6WorkIdentity=v6ActivityObserver.shape.workIdentity.unwrap(),version=z.literal(7),sessionInboxWireV7Schema=z.discriminatedUnion(`kind`,[v6Deliver.extend({caller:v6Caller.extend({activityObserver:v6ActivityObserver.extend({workIdentity:v6WorkIdentity.extend({label:z.string().optional()}).optional()}).optional()}).optional(),version}),v6[1].extend({version}),v6[2].extend({version}),v6[3].extend({version}),v6[4].extend({version}),v6[5].extend({version})]);function encodeSessionCommandV7(e){let t=readActivityLabel(e),n=encodeSessionCommandV6(withoutActivityLabel(e)),r=t===void 0||n.kind!==`deliver`||n.caller===void 0?{...n,version:7}:{...n,caller:{...n.caller,activityObserver:{...n.caller.activityObserver,workIdentity:{...n.caller.activityObserver.workIdentity,label:t}}},version:7},i=sessionInboxWireV7Schema.safeParse(r);if(!i.success)throw new SessionInboxWireError(`Produced a session inbox payload that does not match wire version 7: ${formatValidationError(i.error)}`);return i.data}function readActivityLabel(e){return e.kind===`send`||e.kind===`deliver`?e.caller?.activityObserver?.workIdentity?.label:void 0}function withoutActivityLabel(e){if(e.kind!==`send`&&e.kind!==`deliver`||e.caller?.activityObserver?.workIdentity?.label===void 0)return e;let{label:t,...n}=e.caller.activityObserver.workIdentity;return{...e,caller:{...e.caller,activityObserver:{...e.caller.activityObserver,workIdentity:n}}}}export{encodeSessionCommandV7,sessionInboxWireV7Schema};