eve 0.55.0 → 0.57.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 (683) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/src/channel/adapter-context.d.ts +1 -1
  3. package/dist/src/channel/adapter.d.ts +2 -2
  4. package/dist/src/channel/audience.d.ts +3 -3
  5. package/dist/src/channel/channel-address.js +1 -1
  6. package/dist/src/channel/conversation-context.d.ts +4 -2
  7. package/dist/src/channel/conversation-context.js +1 -1
  8. package/dist/src/channel/session.d.ts +4 -3
  9. package/dist/src/channel/session.js +1 -1
  10. package/dist/src/channel/types.d.ts +7 -4
  11. package/dist/src/chunks/{use-eve-agent-D-KQzzyW.js → use-eve-agent-C2APNCdP.js} +45 -22
  12. package/dist/src/chunks/{use-eve-agent-CxPlg0KL.js → use-eve-agent-D0YnDLi_.js} +45 -22
  13. package/dist/src/cli/commands/init.d.ts +2 -6
  14. package/dist/src/cli/commands/init.js +1 -1
  15. package/dist/src/cli/commands/registry-metadata.d.ts +0 -18
  16. package/dist/src/cli/commands/registry-metadata.js +1 -1
  17. package/dist/src/cli/commands/registry-pnpm-build-policy-flow.js +1 -1
  18. package/dist/src/cli/commands/registry.js +1 -1
  19. package/dist/src/cli/commands/trace-detail.js +1 -1
  20. package/dist/src/cli/dev/environment.js +1 -1
  21. package/dist/src/cli/dev/run-interactive-ui.js +1 -1
  22. package/dist/src/cli/dev/tui/agent-header.js +1 -1
  23. package/dist/src/cli/dev/tui/blocks.d.ts +3 -6
  24. package/dist/src/cli/dev/tui/blocks.js +3 -3
  25. package/dist/src/cli/dev/tui/command-typeahead.js +1 -1
  26. package/dist/src/cli/dev/tui/markdown.d.ts +8 -1
  27. package/dist/src/cli/dev/tui/markdown.js +7 -7
  28. package/dist/src/cli/dev/tui/message-queue.d.ts +11 -7
  29. package/dist/src/cli/dev/tui/message-queue.js +1 -1
  30. package/dist/src/cli/dev/tui/model-editor.d.ts +1 -1
  31. package/dist/src/cli/dev/tui/model-editor.js +1 -1
  32. package/dist/src/cli/dev/tui/prompt-command-handler.d.ts +0 -3
  33. package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
  34. package/dist/src/cli/dev/tui/prompt-commands.d.ts +1 -1
  35. package/dist/src/cli/dev/tui/prompt-commands.js +1 -1
  36. package/dist/src/cli/dev/tui/question-panel.js +1 -1
  37. package/dist/src/cli/dev/tui/remote-auth-result.js +1 -1
  38. package/dist/src/cli/dev/tui/remote-auth.js +1 -1
  39. package/dist/src/cli/dev/tui/remote-startup.d.ts +10 -0
  40. package/dist/src/cli/dev/tui/remote-startup.js +1 -0
  41. package/dist/src/cli/dev/tui/runner.d.ts +16 -19
  42. package/dist/src/cli/dev/tui/runner.js +3 -1
  43. package/dist/src/cli/dev/tui/setup-commands.d.ts +7 -13
  44. package/dist/src/cli/dev/tui/setup-commands.js +2 -2
  45. package/dist/src/cli/dev/tui/setup-issues.d.ts +1 -1
  46. package/dist/src/cli/dev/tui/setup-issues.js +1 -1
  47. package/dist/src/cli/dev/tui/setup-panel.d.ts +5 -17
  48. package/dist/src/cli/dev/tui/setup-panel.js +5 -6
  49. package/dist/src/cli/dev/tui/status-line.d.ts +1 -8
  50. package/dist/src/cli/dev/tui/status-line.js +1 -1
  51. package/dist/src/cli/dev/tui/steering-stream.d.ts +15 -0
  52. package/dist/src/cli/dev/tui/steering-stream.js +1 -0
  53. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +8 -3
  54. package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
  55. package/dist/src/cli/dev/tui/test/mock-terminal.d.ts +2 -2
  56. package/dist/src/cli/dev/tui/test/mock-terminal.js +1 -1
  57. package/dist/src/cli/dev/tui/theme.d.ts +0 -2
  58. package/dist/src/cli/dev/tui/theme.js +1 -1
  59. package/dist/src/cli/dev/tui/tui.d.ts +4 -1
  60. package/dist/src/cli/dev/tui/vercel-status.d.ts +4 -2
  61. package/dist/src/cli/dev/tui/vercel-status.js +1 -1
  62. package/dist/src/cli/run.js +1 -1
  63. package/dist/src/cli/telemetry/index.d.ts +1 -1
  64. package/dist/src/cli/telemetry/index.js +1 -1
  65. package/dist/src/cli/ui/terminal-text.js +1 -1
  66. package/dist/src/client/agent-info-schema.d.ts +2 -57
  67. package/dist/src/client/agent-info-schema.js +1 -1
  68. package/dist/src/client/eve-agent-store-state.d.ts +19 -0
  69. package/dist/src/client/eve-agent-store.js +1 -1
  70. package/dist/src/client/ndjson.d.ts +2 -0
  71. package/dist/src/client/ndjson.js +3 -3
  72. package/dist/src/client/open-stream.d.ts +1 -0
  73. package/dist/src/client/open-stream.js +1 -1
  74. package/dist/src/compiled/.vendor-stamp.json +1 -1
  75. package/dist/src/compiled/@workflow/core/index.js +2 -2
  76. package/dist/src/compiled/@workflow/core/private.js +1 -1
  77. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -0
  78. package/dist/src/compiled/@workflow/core/runtime.js +2 -2
  79. package/dist/src/compiled/@workflow/core/serialization.js +1 -0
  80. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  81. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  82. package/dist/src/compiled/@workflow/world-vercel/index.js +2 -2
  83. package/dist/src/compiled/_chunks/workflow/attribute-changes-DTFAjP0J.js +6 -0
  84. package/dist/src/compiled/_chunks/workflow/{dist-PLkAQ-U7.js → dist-C5KCXSdI.js} +1 -1
  85. package/dist/src/compiled/_chunks/workflow/{frames-BvATzM2t.js → frames-DJw9L4rO.js} +3 -3
  86. package/dist/src/compiled/_chunks/workflow/global-DFW-hO6M.js +1 -0
  87. package/dist/src/compiled/_chunks/workflow/helpers-ClCA9Lmc.js +1 -0
  88. package/dist/src/compiled/_chunks/workflow/logger-D6vwIEf9.js +13 -0
  89. package/dist/src/compiled/_chunks/workflow/resume-hook-_baK8jaT.js +1 -0
  90. package/dist/src/compiled/_chunks/workflow/run-CRdL17z4.js +1 -0
  91. package/dist/src/compiled/_chunks/workflow/serialization-CWYPL4Eq.js +3 -0
  92. package/dist/src/compiled/_chunks/workflow/sleep-BL0kgJnT.js +1 -0
  93. package/dist/src/compiled/_chunks/workflow/wait-until-DyIt9lEx.js +1 -0
  94. package/dist/src/compiled/_chunks/workflow/{ws-transport-CVezyWwZ.js → ws-transport-Dl5FG4Sw.js} +1 -1
  95. package/dist/src/compiler/extension-compatibility.d.ts +27 -8
  96. package/dist/src/compiler/extension-compatibility.js +1 -1
  97. package/dist/src/compiler/manifest.d.ts +12 -11
  98. package/dist/src/compiler/manifest.js +1 -1
  99. package/dist/src/compiler/normalize-manifest.js +1 -1
  100. package/dist/src/compiler/normalize-tool.d.ts +0 -3
  101. package/dist/src/compiler/normalize-tool.js +1 -1
  102. package/dist/src/compiler/validate-artifact.js +1 -1
  103. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  104. package/dist/src/context/keys.d.ts +5 -1
  105. package/dist/src/context/keys.js +1 -1
  106. package/dist/src/eve-channel/audience.d.ts +2 -2
  107. package/dist/src/eve-channel/audience.js +1 -1
  108. package/dist/src/eve-channel/index.js +1 -1
  109. package/dist/src/eve-channel/request.js +4 -3
  110. package/dist/src/eve-channel/types.d.ts +5 -5
  111. package/dist/src/execution/activity-cohort.js +1 -1
  112. package/dist/src/execution/activity-collector.js +1 -1
  113. package/dist/src/execution/authorization-callback-match.d.ts +2 -1
  114. package/dist/src/execution/authorization-callback-match.js +1 -1
  115. package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
  116. package/dist/src/execution/cancel-indexed-session-tasks-step.js +1 -1
  117. package/dist/src/execution/cancelled-model-call-batch.d.ts +1 -1
  118. package/dist/src/execution/connections/callback-route.d.ts +1 -11
  119. package/dist/src/execution/connections/callback-route.js +1 -1
  120. package/dist/src/execution/continuation-conflict-step.d.ts +0 -1
  121. package/dist/src/execution/continuation-conflict-step.js +1 -1
  122. package/dist/src/execution/coordination-dispatch-shared.d.ts +1 -1
  123. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  124. package/dist/src/execution/coordination-dispatch-step.d.ts +2 -2
  125. package/dist/src/execution/coordination-dispatch-step.js +1 -1
  126. package/dist/src/execution/create-session-step.d.ts +1 -1
  127. package/dist/src/execution/create-session-step.js +1 -1
  128. package/dist/src/execution/durable-session-store.d.ts +10 -49
  129. package/dist/src/execution/durable-session-store.js +1 -1
  130. package/dist/src/execution/dynamic-workflow/program-step.d.ts +21 -0
  131. package/dist/src/execution/dynamic-workflow/program-step.js +1 -0
  132. package/dist/src/execution/dynamic-workflow/schema.d.ts +36 -0
  133. package/dist/src/execution/dynamic-workflow/schema.js +1 -0
  134. package/dist/src/execution/dynamic-workflow/security-step.d.ts +3 -0
  135. package/dist/src/execution/dynamic-workflow/security-step.js +1 -0
  136. package/dist/src/execution/dynamic-workflow/tool.d.ts +8 -0
  137. package/dist/src/execution/dynamic-workflow/tool.js +1 -0
  138. package/dist/src/execution/dynamic-workflow/workflow.d.ts +10 -0
  139. package/dist/src/execution/dynamic-workflow/workflow.js +1 -0
  140. package/dist/src/execution/eve-workflow-attributes.d.ts +2 -17
  141. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  142. package/dist/src/execution/hook-ownership.d.ts +2 -4
  143. package/dist/src/execution/hook-ownership.js +1 -1
  144. package/dist/src/execution/legacy-session/authorization.d.ts +9 -0
  145. package/dist/src/execution/legacy-session/authorization.js +1 -0
  146. package/dist/src/execution/legacy-session/completion-step.d.ts +10 -0
  147. package/dist/src/execution/legacy-session/completion-step.js +1 -0
  148. package/dist/src/execution/legacy-session/inbox.d.ts +24 -0
  149. package/dist/src/execution/legacy-session/inbox.js +1 -0
  150. package/dist/src/execution/legacy-session/input.d.ts +19 -0
  151. package/dist/src/execution/legacy-session/input.js +1 -0
  152. package/dist/src/execution/legacy-session/interrupt-step.d.ts +3 -0
  153. package/dist/src/execution/legacy-session/interrupt-step.js +1 -0
  154. package/dist/src/execution/legacy-session/prepare-step.d.ts +24 -0
  155. package/dist/src/execution/legacy-session/prepare-step.js +1 -0
  156. package/dist/src/execution/legacy-session/snapshot.d.ts +12 -0
  157. package/dist/src/execution/legacy-session/snapshot.js +1 -0
  158. package/dist/src/execution/legacy-session/turn-workflow.d.ts +8 -0
  159. package/dist/src/execution/legacy-session/turn-workflow.js +1 -0
  160. package/dist/src/execution/model-call-batching.d.ts +1 -0
  161. package/dist/src/execution/model-call-batching.js +1 -1
  162. package/dist/src/execution/node-step.d.ts +1 -5
  163. package/dist/src/execution/node-step.js +1 -1
  164. package/dist/src/execution/proxied-deliver-step.d.ts +2 -20
  165. package/dist/src/execution/proxied-deliver-step.js +1 -1
  166. package/dist/src/execution/reconcile-session-continuation-token.d.ts +1 -1
  167. package/dist/src/execution/report-dropped-wire-payload-step.d.ts +1 -1
  168. package/dist/src/execution/route-child-delivery.d.ts +2 -2
  169. package/dist/src/execution/route-child-delivery.js +1 -1
  170. package/dist/src/execution/runtime-context.js +1 -1
  171. package/dist/src/execution/sandbox/bindings/eve-image.js +1 -1
  172. package/dist/src/execution/session/accepted-deployment.d.ts +3 -0
  173. package/dist/src/execution/session/accepted-deployment.js +1 -0
  174. package/dist/src/execution/session/admission.d.ts +38 -0
  175. package/dist/src/execution/session/admission.js +1 -0
  176. package/dist/src/execution/session/entry-input.d.ts +42 -0
  177. package/dist/src/execution/session/entry-input.js +1 -0
  178. package/dist/src/execution/session/entry.d.ts +13 -0
  179. package/dist/src/execution/session/entry.js +1 -0
  180. package/dist/src/execution/session/event-sink.d.ts +31 -0
  181. package/dist/src/execution/session/event-sink.js +1 -0
  182. package/dist/src/execution/session/finalization.d.ts +33 -0
  183. package/dist/src/execution/session/finalization.js +1 -0
  184. package/dist/src/execution/session/handoff-steps.d.ts +22 -0
  185. package/dist/src/execution/session/handoff-steps.js +1 -0
  186. package/dist/src/execution/session/handoff.d.ts +69 -0
  187. package/dist/src/execution/session/handoff.js +1 -0
  188. package/dist/src/execution/session/hook-tokens.d.ts +11 -0
  189. package/dist/src/execution/session/hook-tokens.js +1 -0
  190. package/dist/src/execution/session/input-queue.d.ts +72 -0
  191. package/dist/src/execution/session/input-queue.js +1 -0
  192. package/dist/src/execution/session/next-input.d.ts +32 -0
  193. package/dist/src/execution/session/next-input.js +1 -0
  194. package/dist/src/execution/{pending-turn-state.d.ts → session/pending-turn-state.d.ts} +0 -1
  195. package/dist/src/execution/{pending-turn-state.js → session/pending-turn-state.js} +1 -1
  196. package/dist/src/execution/session/program.d.ts +47 -0
  197. package/dist/src/execution/session/program.js +1 -0
  198. package/dist/src/execution/session/route-selected-delivery.d.ts +9 -0
  199. package/dist/src/execution/session/route-selected-delivery.js +1 -0
  200. package/dist/src/execution/session/state-cursor.d.ts +31 -0
  201. package/dist/src/execution/session/state-cursor.js +1 -0
  202. package/dist/src/execution/{session-timeout-control.d.ts → session/timeout-control.d.ts} +1 -1
  203. package/dist/src/execution/session/timeout-control.js +1 -0
  204. package/dist/src/execution/{session-timeout-steps.d.ts → session/timeout-steps.d.ts} +3 -2
  205. package/dist/src/execution/session/timeout-steps.js +1 -0
  206. package/dist/src/execution/{session-timeout-workflow.d.ts → session/timeout-workflow.d.ts} +3 -1
  207. package/dist/src/execution/session/timeout-workflow.js +1 -0
  208. package/dist/src/execution/session/timeout.d.ts +3 -0
  209. package/dist/src/execution/session/timeout.js +1 -0
  210. package/dist/src/execution/session/turn-step-result.d.ts +4 -0
  211. package/dist/src/execution/session/turn-step-result.js +1 -0
  212. package/dist/src/execution/session/turn-step-types.d.ts +68 -0
  213. package/dist/src/execution/session/turn-step-types.js +1 -0
  214. package/dist/src/execution/{workflow-steps.d.ts → session/turn-step.d.ts} +1 -2
  215. package/dist/src/execution/session/turn-step.js +1 -0
  216. package/dist/src/execution/session/turn.d.ts +31 -0
  217. package/dist/src/execution/session/turn.js +1 -0
  218. package/dist/src/execution/session-inbox/address.d.ts +21 -0
  219. package/dist/src/execution/session-inbox/address.js +1 -0
  220. package/dist/src/execution/session-inbox/inbox.d.ts +54 -0
  221. package/dist/src/execution/session-inbox/inbox.js +1 -0
  222. package/dist/src/execution/session-inbox/protocol.d.ts +10 -0
  223. package/dist/src/execution/session-inbox/protocol.js +1 -0
  224. package/dist/src/execution/session-inbox/release-step.d.ts +5 -0
  225. package/dist/src/execution/session-inbox/release-step.js +1 -0
  226. package/dist/src/execution/session-inbox/resume.d.ts +21 -0
  227. package/dist/src/execution/session-inbox/resume.js +1 -0
  228. package/dist/src/execution/{turn-workflow-tool-run.d.ts → session-workflow-tool-run.d.ts} +2 -2
  229. package/dist/src/execution/session-workflow-tool-run.js +1 -0
  230. package/dist/src/execution/session.d.ts +0 -1
  231. package/dist/src/execution/session.js +2 -2
  232. package/dist/src/execution/settle-cancelled-turn-step.d.ts +2 -2
  233. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  234. package/dist/src/execution/skills/instructions.js +1 -1
  235. package/dist/src/execution/stable-workflow-names.d.ts +1 -1
  236. package/dist/src/execution/stable-workflow-names.js +1 -1
  237. package/dist/src/execution/task-input-response-route.js +1 -1
  238. package/dist/src/execution/tasks/child/steps.d.ts +1 -1
  239. package/dist/src/execution/tasks/child/steps.js +1 -1
  240. package/dist/src/execution/tasks/child/workflow.js +1 -1
  241. package/dist/src/execution/tasks/parent/delegate.d.ts +7 -0
  242. package/dist/src/execution/tasks/parent/delegate.js +1 -1
  243. package/dist/src/execution/tasks/parent/dispatch.js +1 -1
  244. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
  245. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  246. package/dist/src/execution/terminal-session-completion-step.d.ts +1 -1
  247. package/dist/src/execution/terminal-session-event.d.ts +1 -1
  248. package/dist/src/execution/terminal-session-event.js +1 -1
  249. package/dist/src/execution/terminal-session-failure-step.d.ts +1 -1
  250. package/dist/src/execution/terminal-session-failure-step.js +1 -1
  251. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  252. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  253. package/dist/src/execution/tools/subagent/accept-event-step.js +1 -1
  254. package/dist/src/execution/tools/subagent/emit-called-step.d.ts +1 -1
  255. package/dist/src/execution/tools/subagent/emit-called-step.js +1 -1
  256. package/dist/src/execution/tools/subagent/invoke-agent.d.ts +1 -1
  257. package/dist/src/execution/tools/subagent/invoke-agent.js +1 -1
  258. package/dist/src/execution/tools/subagent/invoke-preparation.d.ts +6 -0
  259. package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -1
  260. package/dist/src/execution/tools/subagent/invoke-step.d.ts +2 -0
  261. package/dist/src/execution/tools/subagent/invoke-step.js +1 -1
  262. package/dist/src/execution/tools/subagent/steer.d.ts +13 -0
  263. package/dist/src/execution/tools/subagent/steer.js +1 -0
  264. package/dist/src/execution/tools/subagent/task-agent-requests.d.ts +1 -1
  265. package/dist/src/execution/tools/subagent/task-agent-requests.js +1 -1
  266. package/dist/src/execution/tools/subagent/task-cancel.js +1 -1
  267. package/dist/src/execution/tools/workflow/ask.d.ts +0 -9
  268. package/dist/src/execution/tools/workflow/ask.js +1 -1
  269. package/dist/src/execution/tools/workflow/body.d.ts +0 -2
  270. package/dist/src/execution/tools/workflow/body.js +1 -1
  271. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.d.ts +1 -1
  272. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.js +1 -1
  273. package/dist/src/execution/tools/workflow/messages.d.ts +0 -1
  274. package/dist/src/execution/tools/workflow/messages.js +1 -1
  275. package/dist/src/execution/tools/workflow/owner.d.ts +3 -1
  276. package/dist/src/execution/tools/workflow/owner.js +1 -1
  277. package/dist/src/execution/tools/workflow/resume-hook-step.d.ts +1 -1
  278. package/dist/src/execution/tools/workflow/step-context.d.ts +0 -1
  279. package/dist/src/execution/tools/workflow/step-execution.js +1 -1
  280. package/dist/src/execution/tools/workflow/step.js +1 -1
  281. package/dist/src/execution/tools/workflow/workflow.js +1 -1
  282. package/dist/src/execution/workflow-runtime.d.ts +15 -18
  283. package/dist/src/execution/workflow-runtime.js +1 -1
  284. package/dist/src/harness/advertised-tools.d.ts +0 -3
  285. package/dist/src/harness/advertised-tools.js +1 -1
  286. package/dist/src/harness/authorization.d.ts +5 -37
  287. package/dist/src/harness/authorization.js +1 -1
  288. package/dist/src/harness/compaction.js +1 -1
  289. package/dist/src/harness/coordination.js +1 -1
  290. package/dist/src/harness/emission-state.d.ts +1 -0
  291. package/dist/src/harness/emission.js +1 -1
  292. package/dist/src/harness/generation-steering.d.ts +22 -0
  293. package/dist/src/harness/generation-steering.js +1 -0
  294. package/dist/src/harness/messages.d.ts +1 -1
  295. package/dist/src/harness/messages.js +1 -1
  296. package/dist/src/harness/prompt-cache.js +1 -1
  297. package/dist/src/harness/proxy-input-requests.d.ts +1 -1
  298. package/dist/src/harness/proxy-input-requests.js +1 -1
  299. package/dist/src/harness/semantic-errors/rules/gateway.js +1 -1
  300. package/dist/src/harness/semantic-errors/signals.js +1 -1
  301. package/dist/src/harness/session-limit-enforcement.js +1 -1
  302. package/dist/src/harness/tool-loop.js +2 -2
  303. package/dist/src/harness/types.d.ts +2 -21
  304. package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
  305. package/dist/src/instrumentation/channel-delivery.js +1 -1
  306. package/dist/src/instrumentation/content.js +1 -1
  307. package/dist/src/instrumentation/lifecycle.d.ts +6 -7
  308. package/dist/src/instrumentation/native-events.d.ts +2 -0
  309. package/dist/src/instrumentation/native-events.js +1 -1
  310. package/dist/src/instrumentation/runtime.js +1 -1
  311. package/dist/src/instrumentation/session-context.d.ts +2 -0
  312. package/dist/src/instrumentation/session-context.js +1 -1
  313. package/dist/src/internal/application/compiled-artifacts.js +3 -2
  314. package/dist/src/internal/application/package.js +1 -1
  315. package/dist/src/internal/authored-definition/connection.js +1 -1
  316. package/dist/src/internal/authored-definition/schema-backed.d.ts +3 -4
  317. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  318. package/dist/src/internal/gateway.d.ts +1 -0
  319. package/dist/src/internal/gateway.js +1 -1
  320. package/dist/src/internal/model-auth/api-key.d.ts +7 -0
  321. package/dist/src/internal/model-auth/api-key.js +1 -0
  322. package/dist/src/internal/model-auth/available-models.d.ts +2 -0
  323. package/dist/src/internal/model-auth/available-models.js +1 -0
  324. package/dist/src/internal/model-auth/development-broker-client.d.ts +3 -0
  325. package/dist/src/internal/model-auth/development-broker-client.js +1 -0
  326. package/dist/src/internal/model-auth/development-broker-protocol.d.ts +12 -0
  327. package/dist/src/internal/model-auth/development-broker-protocol.js +1 -0
  328. package/dist/src/internal/model-auth/development-broker-server.d.ts +4 -0
  329. package/dist/src/internal/model-auth/development-broker-server.js +1 -0
  330. package/dist/src/internal/model-auth/gateway-credential.d.ts +2 -0
  331. package/dist/src/internal/model-auth/gateway-credential.js +1 -0
  332. package/dist/src/internal/model-auth/store.d.ts +16 -0
  333. package/dist/src/internal/model-auth/store.js +1 -0
  334. package/dist/src/internal/model-auth/transport.d.ts +6 -0
  335. package/dist/src/internal/model-auth/transport.js +1 -0
  336. package/dist/src/internal/model-auth/vercel-cli.d.ts +7 -0
  337. package/dist/src/internal/model-auth/vercel-cli.js +1 -0
  338. package/dist/src/internal/model-auth/vercel-team.d.ts +3 -0
  339. package/dist/src/internal/model-auth/vercel-team.js +1 -0
  340. package/dist/src/internal/model-auth/vercel.d.ts +13 -0
  341. package/dist/src/internal/model-auth/vercel.js +1 -0
  342. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  343. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  344. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
  345. package/dist/src/internal/nitro/host/drained-nitro-dev-server.js +1 -1
  346. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  347. package/dist/src/internal/nitro/host/workflow-sandbox-runtime-plugin.js +1 -1
  348. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  349. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  350. package/dist/src/internal/nitro/routes/info.js +1 -1
  351. package/dist/src/internal/resolve-model-endpoint-status.d.ts +2 -0
  352. package/dist/src/internal/resolve-model-endpoint-status.js +1 -1
  353. package/dist/src/internal/vercel/api-resource.d.ts +4 -0
  354. package/dist/src/internal/vercel/api-resource.js +1 -0
  355. package/dist/src/internal/vercel/eve-service-contribution.js +1 -1
  356. package/dist/src/internal/vercel/vercel-services-config.d.ts +2 -0
  357. package/dist/src/internal/vercel/vercel-services-config.js +1 -1
  358. package/dist/src/internal/workflow/development-world-client.js +1 -1
  359. package/dist/src/internal/workflow/development-world-server.js +1 -1
  360. package/dist/src/internal/workflow/local-world-delivery-timeouts.d.ts +1 -1
  361. package/dist/src/internal/workflow/runtime.d.ts +1 -6
  362. package/dist/src/internal/workflow/runtime.js +1 -1
  363. package/dist/src/internal/workflow/vercel-world-defaults.d.ts +4 -0
  364. package/dist/src/internal/workflow/vercel-world-defaults.js +1 -0
  365. package/dist/src/protocol/activity.js +1 -1
  366. package/dist/src/protocol/message.d.ts +8 -0
  367. package/dist/src/protocol/message.js +2 -2
  368. package/dist/src/protocol/routes.d.ts +0 -2
  369. package/dist/src/protocol/routes.js +1 -1
  370. package/dist/src/public/channels/chat-sdk/audience.d.ts +2 -2
  371. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  372. package/dist/src/public/channels/index.d.ts +1 -1
  373. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  374. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  375. package/dist/src/public/channels/telegram/audience.d.ts +2 -2
  376. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  377. package/dist/src/public/connections/index.d.ts +1 -1
  378. package/dist/src/public/definitions/channel.d.ts +2 -2
  379. package/dist/src/public/definitions/channel.js +1 -1
  380. package/dist/src/public/definitions/connections/mcp.d.ts +1 -1
  381. package/dist/src/public/definitions/connections/openapi.d.ts +1 -1
  382. package/dist/src/public/models/anthropic/index.d.ts +3 -0
  383. package/dist/src/public/models/anthropic/index.js +1 -0
  384. package/dist/src/public/models/openai/chatgpt/codex-app-server.js +1 -1
  385. package/dist/src/public/models/openai/chatgpt/credential-store.js +1 -1
  386. package/dist/src/public/models/openai/chatgpt/oauth.js +1 -1
  387. package/dist/src/public/models/openai/chatgpt/transport.js +1 -1
  388. package/dist/src/public/models/openai/index.d.ts +4 -2
  389. package/dist/src/public/models/openai/index.js +1 -1
  390. package/dist/src/public/sandbox/docker-sandbox.d.ts +1 -1
  391. package/dist/src/public/sandbox/microsandbox-sandbox.d.ts +1 -1
  392. package/dist/src/public/sandbox/vercel-sandbox.d.ts +1 -1
  393. package/dist/src/public/tools/workflow.d.ts +1 -4
  394. package/dist/src/public/tools/workflow.js +1 -1
  395. package/dist/src/public/vercel/index.d.ts +2 -1
  396. package/dist/src/public/vercel/index.js +1 -1
  397. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  398. package/dist/src/runtime/agent/resolve-model.js +1 -1
  399. package/dist/src/runtime/connections/authorization-tokens.d.ts +2 -4
  400. package/dist/src/runtime/connections/principal.d.ts +6 -6
  401. package/dist/src/runtime/connections/principal.js +1 -1
  402. package/dist/src/runtime/prompt/compose.js +1 -1
  403. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  404. package/dist/src/runtime/resolve-agent.js +1 -1
  405. package/dist/src/runtime/resolve-tool.js +1 -1
  406. package/dist/src/runtime/tools/registry.js +1 -1
  407. package/dist/src/runtime/types.d.ts +3 -9
  408. package/dist/src/self-modification/agent.js +1 -1
  409. package/dist/src/self-modification/extension/classify-registry-item.d.ts +3 -3
  410. package/dist/src/self-modification/extension/classify-registry-item.js +1 -1
  411. package/dist/src/self-modification/extension/tools/search_registry.d.ts +1 -7
  412. package/dist/src/self-modification/extension/tools/search_registry.js +1 -1
  413. package/dist/src/self-modification/setup.d.ts +9 -3
  414. package/dist/src/self-modification/setup.js +2 -2
  415. package/dist/src/setup/cli/option-row.d.ts +2 -1
  416. package/dist/src/setup/cli/option-row.js +1 -1
  417. package/dist/src/setup/cli/prompt-ui.d.ts +2 -0
  418. package/dist/src/setup/cli/prompt-ui.js +1 -1
  419. package/dist/src/setup/cli/select-state.d.ts +1 -1
  420. package/dist/src/setup/cli/select-state.js +1 -1
  421. package/dist/src/setup/flows/chatgpt-auth.js +1 -1
  422. package/dist/src/setup/flows/deploy.d.ts +4 -9
  423. package/dist/src/setup/flows/deploy.js +1 -1
  424. package/dist/src/setup/flows/ensure-vercel-project.js +1 -1
  425. package/dist/src/setup/flows/install-vercel-cli.d.ts +2 -3
  426. package/dist/src/setup/flows/login.d.ts +3 -1
  427. package/dist/src/setup/flows/login.js +1 -1
  428. package/dist/src/setup/flows/model-login-connection.d.ts +36 -0
  429. package/dist/src/setup/flows/model-login-connection.js +1 -0
  430. package/dist/src/setup/flows/model-login-progress.d.ts +7 -0
  431. package/dist/src/setup/flows/model-login-progress.js +1 -0
  432. package/dist/src/setup/flows/model-login.d.ts +22 -0
  433. package/dist/src/setup/flows/model-login.js +1 -0
  434. package/dist/src/setup/flows/model-source-change.d.ts +7 -0
  435. package/dist/src/setup/flows/model-source-change.js +1 -1
  436. package/dist/src/setup/flows/model.d.ts +6 -24
  437. package/dist/src/setup/flows/model.js +1 -1
  438. package/dist/src/setup/flows/registry.d.ts +3 -19
  439. package/dist/src/setup/flows/registry.js +1 -1
  440. package/dist/src/setup/flows/vercel-model-login.d.ts +5 -0
  441. package/dist/src/setup/flows/vercel-model-login.js +1 -0
  442. package/dist/src/setup/integrations/self-modification/setup.d.ts +2 -0
  443. package/dist/src/setup/integrations/self-modification/setup.js +1 -1
  444. package/dist/src/setup/project-resolution.js +1 -1
  445. package/dist/src/setup/prompter.d.ts +3 -1
  446. package/dist/src/setup/provider-settings.d.ts +19 -6
  447. package/dist/src/setup/provider-settings.js +1 -1
  448. package/dist/src/setup/scaffold/create/project.js +6 -2
  449. package/dist/src/setup/vercel-project.js +0 -0
  450. package/dist/src/setup/with-spinner.d.ts +1 -1
  451. package/dist/src/setup/with-spinner.js +1 -1
  452. package/dist/src/shared/action-types.js +1 -1
  453. package/dist/src/shared/agent-definition.d.ts +6 -4
  454. package/dist/src/shared/channel-definition.d.ts +2 -2
  455. package/dist/src/shared/chatgpt-model.d.ts +2 -2
  456. package/dist/src/shared/chatgpt-model.js +1 -1
  457. package/dist/src/shared/connection-types.d.ts +20 -7
  458. package/dist/src/shared/conversation-context.d.ts +15 -0
  459. package/dist/src/shared/model-connection.d.ts +17 -0
  460. package/dist/src/shared/model-connection.js +1 -0
  461. package/dist/src/shared/model-endpoint-status.d.ts +2 -1
  462. package/dist/src/shared/model-helper.d.ts +26 -0
  463. package/dist/src/shared/model-helper.js +1 -0
  464. package/dist/src/shared/package-version.d.ts +2 -0
  465. package/dist/src/shared/package-version.js +1 -0
  466. package/dist/src/shared/validate-authorization.js +1 -1
  467. package/dist/src/shared/vercel-services.d.ts +1 -0
  468. package/dist/src/shared/vercel-services.js +1 -1
  469. package/dist/src/shared/workflow-sandbox.d.ts +18 -12
  470. package/dist/src/shared/workflow-sandbox.js +1 -1
  471. package/dist/src/source-change/agent-config-ast.d.ts +6 -0
  472. package/dist/src/source-change/agent-config-ast.js +1 -1
  473. package/dist/src/source-change/apply-model-selection.d.ts +3 -1
  474. package/dist/src/source-change/apply-model-selection.js +1 -2
  475. package/dist/src/source-change/static-source-change.js +1 -1
  476. package/dist/src/subagents/callback-route.js +1 -1
  477. package/dist/src/subagents/event-proxy-step.d.ts +3 -3
  478. package/dist/src/subagents/event-proxy-step.js +1 -1
  479. package/dist/src/subagents/handle-dispatch.d.ts +12 -2
  480. package/dist/src/subagents/handle-dispatch.js +1 -1
  481. package/dist/src/subagents/handles/operation-id.d.ts +1 -1
  482. package/dist/src/subagents/handles/query.d.ts +0 -6
  483. package/dist/src/subagents/handles/query.js +1 -1
  484. package/dist/src/subagents/handles/state-key.d.ts +1 -1
  485. package/dist/src/subagents/handles/store.d.ts +1 -1
  486. package/dist/src/subagents/handles/store.js +1 -1
  487. package/dist/src/subagents/hitl-proxy.d.ts +1 -1
  488. package/dist/src/subagents/parent-notification.d.ts +2 -2
  489. package/dist/src/subagents/parent-result.d.ts +1 -1
  490. package/dist/src/subagents/remote-dispatch.d.ts +1 -1
  491. package/dist/src/subagents/remote-dispatch.js +1 -1
  492. package/dist/src/subagents/start-local.js +1 -1
  493. package/dist/src/subagents/tool.js +1 -1
  494. package/dist/src/svelte/index.js +1 -1
  495. package/dist/src/svelte/use-eve-agent.js +1 -1
  496. package/dist/src/tasks/session-index.d.ts +11 -0
  497. package/dist/src/tasks/session-index.js +1 -1
  498. package/dist/src/tasks/types.d.ts +1 -1
  499. package/dist/src/tools/auth.d.ts +5 -6
  500. package/dist/src/tools/provided/workflow.d.ts +12 -0
  501. package/dist/src/tools/provided/workflow.js +1 -0
  502. package/dist/src/tools/workflow-program-input.d.ts +6 -0
  503. package/dist/src/tools/workflow-program-input.js +1 -0
  504. package/dist/src/tracing/agent-otel-provider.js +2 -2
  505. package/dist/src/tracing/agent-otel-runtime-context.d.ts +2 -1
  506. package/dist/src/tracing/agent-otel-runtime-context.js +1 -1
  507. package/dist/src/tracing/agent-otel-session-context.js +1 -1
  508. package/dist/src/tracing/agent-otel-usage.js +1 -1
  509. package/dist/src/tracing/agent-span-contract.d.ts +1 -0
  510. package/dist/src/tracing/agent-span-contract.js +1 -1
  511. package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
  512. package/dist/src/tracing/agent-trace-context-codec.js +1 -1
  513. package/dist/src/tracing/agent-trace-state.d.ts +2 -0
  514. package/dist/src/tracing/content-attributes.js +1 -1
  515. package/dist/src/tracing/local-instrumentation-runtime.d.ts +1 -1
  516. package/dist/src/tracing/local-instrumentation-runtime.js +1 -1
  517. package/dist/src/vue/index.js +1 -1
  518. package/dist/src/vue/use-eve-agent.js +1 -1
  519. package/docs/agent-config.md +23 -23
  520. package/docs/channels/chat-sdk.mdx +11 -2
  521. package/docs/channels/custom.mdx +32 -16
  522. package/docs/channels/eve.mdx +21 -19
  523. package/docs/channels/linear.mdx +7 -3
  524. package/docs/channels/linq.mdx +1 -1
  525. package/docs/channels/overview.mdx +17 -2
  526. package/docs/channels/photon.mdx +4 -1
  527. package/docs/channels/slack.mdx +12 -2
  528. package/docs/concepts/execution-model-and-durability.mdx +62 -13
  529. package/docs/concepts/sessions-runs-and-streaming.md +14 -5
  530. package/docs/connections/mcp.mdx +4 -1
  531. package/docs/connections/openapi.mdx +8 -2
  532. package/docs/connections/overview.mdx +16 -13
  533. package/docs/getting-started.mdx +8 -4
  534. package/docs/guides/deployment/self-hosting.md +1 -1
  535. package/docs/guides/deployment/vercel.mdx +3 -3
  536. package/docs/guides/dev-tui.md +58 -31
  537. package/docs/guides/dynamic-capabilities.md +4 -4
  538. package/docs/guides/frontend/overview.mdx +3 -1
  539. package/docs/guides/hooks.md +1 -1
  540. package/docs/guides/instrumentation/meta.json +5 -0
  541. package/docs/guides/instrumentation/otel.mdx +149 -0
  542. package/docs/guides/instrumentation/overview.md +199 -0
  543. package/docs/guides/instrumentation/providers.mdx +169 -0
  544. package/docs/guides/meta.json +0 -1
  545. package/docs/guides/remote-agents.md +19 -21
  546. package/docs/install-integrations.mdx +2 -4
  547. package/docs/memory/custom-provider.md +1 -1
  548. package/docs/patterns/multi-tenant-auth.md +3 -3
  549. package/docs/protocols/acp.md +1 -1
  550. package/docs/reference/cli.md +16 -16
  551. package/docs/reference/telemetry.md +1 -1
  552. package/docs/reference/typescript-api.md +21 -14
  553. package/docs/sandbox.mdx +3 -3
  554. package/docs/subagents/index.mdx +4 -4
  555. package/docs/tools/workflows.mdx +57 -2
  556. package/docs/tutorial/how-it-runs.mdx +1 -1
  557. package/package.json +6 -1
  558. package/dist/src/cli/commands/init-repl.d.ts +0 -80
  559. package/dist/src/cli/commands/init-repl.js +0 -1
  560. package/dist/src/cli/commands/init-self-modification.d.ts +0 -7
  561. package/dist/src/cli/commands/init-self-modification.js +0 -1
  562. package/dist/src/cli/commands/registry-package.d.ts +0 -52
  563. package/dist/src/cli/commands/registry-package.js +0 -1
  564. package/dist/src/cli/dev/tui/prompt-placeholder.d.ts +0 -12
  565. package/dist/src/cli/dev/tui/prompt-placeholder.js +0 -1
  566. package/dist/src/cli/dev/tui/remote-auth-command.d.ts +0 -11
  567. package/dist/src/cli/dev/tui/remote-auth-command.js +0 -3
  568. package/dist/src/compiled/_chunks/workflow/attribute-changes-BAcgmlXp.js +0 -20
  569. package/dist/src/compiled/_chunks/workflow/private-CFJkQA7R.js +0 -1
  570. package/dist/src/compiled/_chunks/workflow/resume-hook-BEHe0Uut.js +0 -1
  571. package/dist/src/compiled/_chunks/workflow/run-ChHLjaCt.js +0 -1
  572. package/dist/src/compiled/_chunks/workflow/sleep-BB2HuVie.js +0 -1
  573. package/dist/src/execution/accepted-delivery-deployment.d.ts +0 -7
  574. package/dist/src/execution/accepted-delivery-deployment.js +0 -1
  575. package/dist/src/execution/dispatch-turn-step.d.ts +0 -5
  576. package/dist/src/execution/dispatch-turn-step.js +0 -1
  577. package/dist/src/execution/durable-session-migrations/chain.d.ts +0 -38
  578. package/dist/src/execution/durable-session-migrations/chain.js +0 -1
  579. package/dist/src/execution/durable-session-migrations/snapshot.d.ts +0 -6
  580. package/dist/src/execution/durable-session-migrations/snapshot.js +0 -1
  581. package/dist/src/execution/durable-session-migrations/turn-workflow-v0-to-v1.d.ts +0 -12
  582. package/dist/src/execution/durable-session-migrations/turn-workflow-v0-to-v1.js +0 -1
  583. package/dist/src/execution/durable-session-migrations/turn-workflow-v1-to-v2.d.ts +0 -2
  584. package/dist/src/execution/durable-session-migrations/turn-workflow-v1-to-v2.js +0 -1
  585. package/dist/src/execution/durable-session-migrations/turn-workflow.d.ts +0 -88
  586. package/dist/src/execution/durable-session-migrations/turn-workflow.js +0 -1
  587. package/dist/src/execution/forward-turn-cancellation-step.d.ts +0 -6
  588. package/dist/src/execution/forward-turn-cancellation-step.js +0 -1
  589. package/dist/src/execution/forward-turn-delivery-step.d.ts +0 -6
  590. package/dist/src/execution/forward-turn-delivery-step.js +0 -1
  591. package/dist/src/execution/inline-turn.d.ts +0 -31
  592. package/dist/src/execution/inline-turn.js +0 -1
  593. package/dist/src/execution/next-driver-action.d.ts +0 -93
  594. package/dist/src/execution/parked-delivery-wait.d.ts +0 -54
  595. package/dist/src/execution/parked-delivery-wait.js +0 -1
  596. package/dist/src/execution/session-command-inbox.d.ts +0 -52
  597. package/dist/src/execution/session-command-inbox.js +0 -1
  598. package/dist/src/execution/session-command-token.d.ts +0 -6
  599. package/dist/src/execution/session-command-token.js +0 -1
  600. package/dist/src/execution/session-state-cursor.d.ts +0 -25
  601. package/dist/src/execution/session-state-cursor.js +0 -1
  602. package/dist/src/execution/session-timeout-control.js +0 -1
  603. package/dist/src/execution/session-timeout-steps.js +0 -1
  604. package/dist/src/execution/session-timeout-workflow.js +0 -1
  605. package/dist/src/execution/session-timeout.d.ts +0 -2
  606. package/dist/src/execution/session-timeout.js +0 -1
  607. package/dist/src/execution/turn-cancellation-control.d.ts +0 -30
  608. package/dist/src/execution/turn-cancellation-control.js +0 -1
  609. package/dist/src/execution/turn-cancellation-token.d.ts +0 -10
  610. package/dist/src/execution/turn-cancellation-token.js +0 -1
  611. package/dist/src/execution/turn-control-protocol.d.ts +0 -36
  612. package/dist/src/execution/turn-control-protocol.js +0 -1
  613. package/dist/src/execution/turn-control-receiver.d.ts +0 -54
  614. package/dist/src/execution/turn-control-receiver.js +0 -1
  615. package/dist/src/execution/turn-dispatch.d.ts +0 -39
  616. package/dist/src/execution/turn-dispatch.js +0 -1
  617. package/dist/src/execution/turn-execution-cursor.d.ts +0 -49
  618. package/dist/src/execution/turn-execution-cursor.js +0 -1
  619. package/dist/src/execution/turn-workflow-tool-run.js +0 -1
  620. package/dist/src/execution/turn-workflow.d.ts +0 -13
  621. package/dist/src/execution/turn-workflow.js +0 -1
  622. package/dist/src/execution/wire/session-inbox-contract.d.ts +0 -38
  623. package/dist/src/execution/wire/session-inbox-contract.js +0 -1
  624. package/dist/src/execution/wire/session-inbox-encoder.d.ts +0 -47
  625. package/dist/src/execution/wire/session-inbox-encoder.js +0 -1
  626. package/dist/src/execution/wire/session-inbox-resume.d.ts +0 -12
  627. package/dist/src/execution/wire/session-inbox-resume.js +0 -1
  628. package/dist/src/execution/wire/session-inbox-wire.d.ts +0 -29
  629. package/dist/src/execution/wire/session-inbox-wire.js +0 -1
  630. package/dist/src/execution/wire/session-inbox-wire.v0.d.ts +0 -5
  631. package/dist/src/execution/wire/session-inbox-wire.v0.js +0 -1
  632. package/dist/src/execution/wire/session-inbox-wire.v1.d.ts +0 -237
  633. package/dist/src/execution/wire/session-inbox-wire.v1.js +0 -1
  634. package/dist/src/execution/wire/session-inbox-wire.v2-migration.d.ts +0 -2
  635. package/dist/src/execution/wire/session-inbox-wire.v2-migration.js +0 -1
  636. package/dist/src/execution/wire/session-inbox-wire.v2.d.ts +0 -478
  637. package/dist/src/execution/wire/session-inbox-wire.v2.js +0 -1
  638. package/dist/src/execution/wire/session-inbox-wire.v2.migration.d.ts +0 -3
  639. package/dist/src/execution/wire/session-inbox-wire.v2.migration.js +0 -1
  640. package/dist/src/execution/wire/session-inbox-wire.v3.d.ts +0 -480
  641. package/dist/src/execution/wire/session-inbox-wire.v3.js +0 -1
  642. package/dist/src/execution/wire/session-inbox-wire.v3.migration.d.ts +0 -3
  643. package/dist/src/execution/wire/session-inbox-wire.v3.migration.js +0 -1
  644. package/dist/src/execution/wire/session-inbox-wire.v4.d.ts +0 -267
  645. package/dist/src/execution/wire/session-inbox-wire.v4.js +0 -1
  646. package/dist/src/execution/wire/session-inbox-wire.v4.migration.d.ts +0 -3
  647. package/dist/src/execution/wire/session-inbox-wire.v4.migration.js +0 -1
  648. package/dist/src/execution/wire/session-inbox-wire.v5.d.ts +0 -341
  649. package/dist/src/execution/wire/session-inbox-wire.v5.js +0 -1
  650. package/dist/src/execution/wire/session-inbox-wire.v5.migration.d.ts +0 -3
  651. package/dist/src/execution/wire/session-inbox-wire.v5.migration.js +0 -1
  652. package/dist/src/execution/wire/session-inbox-wire.v6.d.ts +0 -341
  653. package/dist/src/execution/wire/session-inbox-wire.v6.js +0 -1
  654. package/dist/src/execution/wire/session-inbox-wire.v7.d.ts +0 -342
  655. package/dist/src/execution/wire/session-inbox-wire.v7.js +0 -1
  656. package/dist/src/execution/workflow-entry-crash.d.ts +0 -39
  657. package/dist/src/execution/workflow-entry-crash.js +0 -1
  658. package/dist/src/execution/workflow-entry-finalization.d.ts +0 -28
  659. package/dist/src/execution/workflow-entry-finalization.js +0 -1
  660. package/dist/src/execution/workflow-entry.d.ts +0 -37
  661. package/dist/src/execution/workflow-entry.js +0 -1
  662. package/dist/src/execution/workflow-steps.js +0 -1
  663. package/dist/src/harness/workflow-continuation-security.d.ts +0 -5
  664. package/dist/src/harness/workflow-continuation-security.js +0 -1
  665. package/dist/src/harness/workflow-interrupt-state.d.ts +0 -20
  666. package/dist/src/harness/workflow-interrupt-state.js +0 -1
  667. package/dist/src/harness/workflow-lifecycle.d.ts +0 -32
  668. package/dist/src/harness/workflow-lifecycle.js +0 -1
  669. package/dist/src/harness/workflow-sandbox.d.ts +0 -28
  670. package/dist/src/harness/workflow-sandbox.js +0 -2
  671. package/dist/src/harness/workflow-subagent-limit.d.ts +0 -28
  672. package/dist/src/harness/workflow-subagent-limit.js +0 -1
  673. package/dist/src/harness/workflow-task-state.d.ts +0 -9
  674. package/dist/src/harness/workflow-task-state.js +0 -1
  675. package/dist/src/harness/workflow-tool-description.d.ts +0 -22
  676. package/dist/src/harness/workflow-tool-description.js +0 -37
  677. package/dist/src/subagents/handles/rebase.d.ts +0 -4
  678. package/dist/src/subagents/handles/rebase.js +0 -1
  679. package/dist/src/tools/workflow.d.ts +0 -37
  680. package/dist/src/tools/workflow.js +0 -1
  681. package/docs/guides/instrumentation-providers.md +0 -249
  682. package/docs/guides/instrumentation.md +0 -453
  683. /package/dist/src/{execution/next-driver-action.js → client/eve-agent-store-state.js} +0 -0
@@ -169,13 +169,10 @@ export type CompiledToolDefinition = InternalToolDefinition & ModuleSourceRef &
169
169
  readonly hasExecute: boolean;
170
170
  readonly hasModelOutputProjection: boolean;
171
171
  readonly requiresApproval: boolean;
172
+ readonly workflowProgram?: {
173
+ readonly maxSubagents: number;
174
+ };
172
175
  };
173
- /**
174
- * Serializable configuration for the experimental framework `Workflow` tool.
175
- */
176
- export interface CompiledWorkflowToolDefinition extends ModuleSourceRef {
177
- readonly maxSubagents?: number;
178
- }
179
176
  /**
180
177
  * Compiled dynamic tool resolver entry. The resolver function lives in the
181
178
  * compiled module map; the manifest entry carries only the metadata needed
@@ -349,7 +346,6 @@ declare const compiledAgentResourcesSchema: z.ZodObject<{
349
346
  warnings: z.ZodNumber;
350
347
  }, z.core.$strict>;
351
348
  sourceComposition: z.ZodType<AgentSourceComposition, unknown, z.core.$ZodTypeInternals<AgentSourceComposition, unknown>>;
352
- workflowTool: z.ZodOptional<z.ZodType<CompiledWorkflowToolDefinition, unknown, z.core.$ZodTypeInternals<CompiledWorkflowToolDefinition, unknown>>>;
353
349
  dynamicInstructions: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicInstructionsDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicInstructionsDefinition, unknown>>>>;
354
350
  dynamicSkills: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicSkillDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicSkillDefinition, unknown>>>>;
355
351
  dynamicTools: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicToolDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicToolDefinition, unknown>>>>;
@@ -439,6 +435,9 @@ declare const compiledAgentResourcesSchema: z.ZodObject<{
439
435
  requiresApproval: z.ZodBoolean;
440
436
  sourceId: z.ZodString;
441
437
  sourceKind: z.ZodLiteral<"module">;
438
+ workflowProgram: z.ZodOptional<z.ZodObject<{
439
+ maxSubagents: z.ZodNumber;
440
+ }, z.core.$strict>>;
442
441
  }, z.core.$strict>>;
443
442
  workspaceResourceRoot: z.ZodObject<{
444
443
  contentHash: z.ZodOptional<z.ZodString>;
@@ -473,7 +472,6 @@ declare const compiledAgentNodeManifestSchema: z.ZodObject<{
473
472
  warnings: z.ZodNumber;
474
473
  }, z.core.$strict>;
475
474
  sourceComposition: z.ZodType<AgentSourceComposition, unknown, z.core.$ZodTypeInternals<AgentSourceComposition, unknown>>;
476
- workflowTool: z.ZodOptional<z.ZodType<CompiledWorkflowToolDefinition, unknown, z.core.$ZodTypeInternals<CompiledWorkflowToolDefinition, unknown>>>;
477
475
  dynamicInstructions: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicInstructionsDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicInstructionsDefinition, unknown>>>>;
478
476
  dynamicSkills: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicSkillDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicSkillDefinition, unknown>>>>;
479
477
  dynamicTools: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicToolDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicToolDefinition, unknown>>>>;
@@ -563,6 +561,9 @@ declare const compiledAgentNodeManifestSchema: z.ZodObject<{
563
561
  requiresApproval: z.ZodBoolean;
564
562
  sourceId: z.ZodString;
565
563
  sourceKind: z.ZodLiteral<"module">;
564
+ workflowProgram: z.ZodOptional<z.ZodObject<{
565
+ maxSubagents: z.ZodNumber;
566
+ }, z.core.$strict>>;
566
567
  }, z.core.$strict>>;
567
568
  workspaceResourceRoot: z.ZodObject<{
568
569
  contentHash: z.ZodOptional<z.ZodString>;
@@ -629,7 +630,6 @@ export declare const compiledAgentManifestSchema: z.ZodObject<{
629
630
  warnings: z.ZodNumber;
630
631
  }, z.core.$strict>;
631
632
  sourceComposition: z.ZodType<AgentSourceComposition, unknown, z.core.$ZodTypeInternals<AgentSourceComposition, unknown>>;
632
- workflowTool: z.ZodOptional<z.ZodType<CompiledWorkflowToolDefinition, unknown, z.core.$ZodTypeInternals<CompiledWorkflowToolDefinition, unknown>>>;
633
633
  dynamicInstructions: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicInstructionsDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicInstructionsDefinition, unknown>>>>;
634
634
  dynamicSkills: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicSkillDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicSkillDefinition, unknown>>>>;
635
635
  dynamicTools: z.ZodDefault<z.ZodArray<z.ZodType<CompiledDynamicToolDefinition, unknown, z.core.$ZodTypeInternals<CompiledDynamicToolDefinition, unknown>>>>;
@@ -720,6 +720,9 @@ export declare const compiledAgentManifestSchema: z.ZodObject<{
720
720
  requiresApproval: z.ZodBoolean;
721
721
  sourceId: z.ZodString;
722
722
  sourceKind: z.ZodLiteral<"module">;
723
+ workflowProgram: z.ZodOptional<z.ZodObject<{
724
+ maxSubagents: z.ZodNumber;
725
+ }, z.core.$strict>>;
723
726
  }, z.core.$strict>>;
724
727
  version: z.ZodLiteral<48>;
725
728
  workspaceResourceRoot: z.ZodObject<{
@@ -737,7 +740,6 @@ export interface CreateCompiledAgentResourcesInput {
737
740
  readonly dynamicConnections?: readonly CompiledDynamicConnectionDefinition[];
738
741
  readonly diagnosticsSummary?: DiscoverDiagnosticsSummary;
739
742
  readonly sourceComposition: AgentSourceComposition;
740
- readonly workflowTool?: CompiledWorkflowToolDefinition;
741
743
  readonly dynamicInstructions?: readonly CompiledDynamicInstructionsDefinition[];
742
744
  readonly dynamicSkills?: readonly CompiledDynamicSkillDefinition[];
743
745
  readonly dynamicTools?: readonly CompiledDynamicToolDefinition[];
@@ -790,7 +792,6 @@ export declare function createCompiledAgentManifest(input: {
790
792
  readonly dynamicConnections?: readonly CompiledDynamicConnectionDefinition[];
791
793
  readonly diagnosticsSummary?: DiscoverDiagnosticsSummary;
792
794
  readonly sourceComposition: AgentSourceComposition;
793
- readonly workflowTool?: CompiledWorkflowToolDefinition;
794
795
  readonly dynamicInstructions?: readonly CompiledDynamicInstructionsDefinition[];
795
796
  readonly dynamicSkills?: readonly CompiledDynamicSkillDefinition[];
796
797
  readonly dynamicTools?: readonly CompiledDynamicToolDefinition[];
@@ -1 +1 @@
1
- import{z}from"#compiled/zod/index.js";import{discoverDiagnosticsSummarySchema}from"#discover/diagnostics.js";import{compiledRemoteAgentNodeSchema}from"#compiler/remote-agent-node.js";import{jsonObjectSchema}from"#shared/json-schemas.js";import{AGENT_WORKFLOW_RETENTION_VALUES}from"#shared/agent-definition.js";import{validateCompiledAgentManifest,validateCompiledAgentResources}from"#compiler/validate-artifact.js";const COMPILED_AGENT_MANIFEST_KIND=`eve-agent-compiled-manifest`,ROOT_COMPILED_AGENT_NODE_ID=`__root__`,COMPILED_AGENT_MANIFEST_VERSION=48,agentSourceOwnerSchema=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`application`)}).strict(),z.object({feature:z.string().min(1),kind:z.literal(`framework`)}).strict(),z.object({kind:z.literal(`extension`),namespace:z.string().min(1),packageName:z.string().min(1)}).strict()]),moduleSourceRefSchema=z.object({exportName:z.string().optional(),sourceKind:z.literal(`module`),logicalPath:z.string(),sourceId:z.string()}).strict(),filesystemModuleBackingSchema=z.object({externalDependencies:z.array(z.string()).readonly(),extensionScope:z.object({namespace:z.string(),sourceRoot:z.string()}).strict().optional(),kind:z.literal(`filesystem`),sourcePath:z.string()}).strict(),programmaticModuleBackingSchema=z.object({dependencies:z.record(z.string(),z.string()).readonly().optional(),kind:z.literal(`programmatic`),moduleId:z.string(),parameters:jsonObjectSchema.optional(),registryId:z.string(),revision:z.string(),semanticRevision:z.string().optional()}).strict(),resourceSourceBackingSchema=z.object({kind:z.literal(`resource`),sourcePath:z.string()}).strict(),agentModuleBackingSchema=z.discriminatedUnion(`kind`,[filesystemModuleBackingSchema,programmaticModuleBackingSchema]),compiledModuleBindingSchema=z.object({backing:agentModuleBackingSchema,logicalPath:z.string(),owner:agentSourceOwnerSchema,usage:z.object({compile:z.boolean(),runtimeEntry:z.boolean()}).strict()}).strict(),agentSourceDescriptorSchema=z.object({backing:z.discriminatedUnion(`kind`,[filesystemModuleBackingSchema,programmaticModuleBackingSchema,resourceSourceBackingSchema]),form:z.enum([`derived`,`direct`]),layer:z.enum([`framework-default`,`extension-package`,`extension-override`,`application`]),logicalPath:z.string(),owner:agentSourceOwnerSchema,sourceId:z.string()}).strict(),agentSourceCompositionSchema=z.object({entries:z.array(z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`shadowed`),source:agentSourceDescriptorSchema,winnerSourceId:z.string()}).strict(),z.object({kind:z.literal(`disabled`),source:agentSourceDescriptorSchema}).strict()])).readonly()}).strict(),compiledDynamicModelDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),sourceKind:z.literal(`module`),logicalPath:z.string(),sourceId:z.string()}).strict(),channelMethodSchema=z.union([z.literal(`GET`),z.literal(`HEAD`),z.literal(`POST`),z.literal(`PUT`),z.literal(`PATCH`),z.literal(`DELETE`),z.literal(`OPTIONS`),z.literal(`WEBSOCKET`)]),compiledChannelCorsSchema=z.object({origin:z.union([z.literal(`*`),z.literal(`null`),z.array(z.string())]).optional(),methods:z.union([z.literal(`*`),z.array(z.string())]).optional(),allowHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),exposeHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),credentials:z.boolean().optional(),maxAge:z.union([z.string(),z.literal(!1)]).optional(),preflight:z.object({statusCode:z.number().int().min(100).max(599).optional()}).strict().optional()}).strict(),compiledChannelDefinitionSchema=z.object({kind:z.literal(`channel`),name:z.string(),logicalPath:z.string(),method:channelMethodSchema,urlPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional(),adapterKind:z.string().optional(),cors:compiledChannelCorsSchema.optional()}).strict(),compiledChannelPreflightDefinitionSchema=z.object({cors:compiledChannelCorsSchema,method:z.literal(`OPTIONS`),sourceIds:z.array(z.string()).readonly(),urlPath:z.string()}).strict(),compiledShadowedChannelRouteSchema=z.object({method:channelMethodSchema,source:agentSourceDescriptorSchema,urlPath:z.string(),winnerSourceId:z.string()}).strict(),compiledChannelRoutePlanSchema=z.object({effective:z.array(compiledChannelDefinitionSchema).readonly(),preflight:z.array(compiledChannelPreflightDefinitionSchema).readonly(),shadowed:z.array(compiledShadowedChannelRouteSchema).readonly()}).strict(),modelRoutingSchema=z.union([z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}).strict(),z.object({kind:z.literal(`external`),provider:z.string()}).strict()]),compiledRuntimeModelReferenceSchema=z.object({contextWindowTokens:z.number().int().positive().optional(),id:z.string(),maxOutputTokens:z.number().int().positive().optional(),source:moduleSourceRefSchema.optional(),providerOptions:z.record(z.string(),jsonObjectSchema).optional(),routing:modelRoutingSchema}).strict(),compiledAgentBuildDefinitionSchema=z.object({externalDependencies:z.array(z.string()).optional()}).strict(),compiledAgentWorkflowWorldDefinitionSchema=z.string(),compiledAgentWorkflowDefinitionSchema=z.object({modelCallsPerStep:z.number().int().positive().optional(),retention:z.literal(AGENT_WORKFLOW_RETENTION_VALUES).optional(),world:compiledAgentWorkflowWorldDefinitionSchema.optional()}).strict(),compiledAgentCompactionDefinitionSchema=z.object({model:compiledRuntimeModelReferenceSchema.optional(),thresholdPercent:z.number().finite().min(0).max(1).optional()}).strict(),sessionTokenLimitSchema=z.union([z.number().int().positive(),z.literal(!1)]),sessionTokenCostLimitSchema=z.union([z.number().finite().positive(),z.literal(!1)]),sessionTimeoutSchema=z.union([z.number().int().positive(),z.literal(!1)]),compiledAgentLimitsDefinitionSchema=z.object({maxInputTokensPerSession:sessionTokenLimitSchema.optional(),maxOutputTokensPerSession:sessionTokenLimitSchema.optional(),maxTokenCostUsdPerSession:sessionTokenCostLimitSchema.optional(),sessionTimeoutMs:sessionTimeoutSchema.optional()}).strict(),compiledWorkflowToolDefinitionSchema=z.object({exportName:z.string().optional(),logicalPath:z.string(),maxSubagents:z.number().int().positive().optional(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledAgentConfigBaseFields={build:compiledAgentBuildDefinitionSchema.optional(),compaction:compiledAgentCompactionDefinitionSchema.optional(),defaultTools:z.boolean().optional(),description:z.string().optional(),experimental:z.object({instrumentationProviders:z.boolean().optional(),workflow:compiledAgentWorkflowDefinitionSchema.optional()}).strict().optional(),name:z.string(),outputSchema:jsonObjectSchema.optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional(),source:moduleSourceRefSchema,limits:compiledAgentLimitsDefinitionSchema.optional()},compiledAgentConfigSchema=z.union([z.object({...compiledAgentConfigBaseFields,model:compiledRuntimeModelReferenceSchema}).strict(),z.object({...compiledAgentConfigBaseFields,dynamicModel:compiledDynamicModelDefinitionSchema}).strict()]),compiledInstructionsBaseFields={content:z.string(),name:z.string(),logicalPath:z.string(),role:z.enum([`system`,`user`]),sourceId:z.string()},compiledInstructionsSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledInstructionsBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledInstructionsBaseFields,sourceKind:z.literal(`module`)}).strict()]),compiledSkillBaseFields={name:z.string(),description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional(),sourceId:z.string(),logicalPath:z.string()},compiledSkillSourceSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledSkillBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledSkillBaseFields,sourceKind:z.literal(`module`),exportName:z.string().optional()}).strict(),z.object({...compiledSkillBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`skill-package`),skillId:z.string(),skillFilePath:z.string(),rootPath:z.string(),assetsPath:z.string().optional(),referencesPath:z.string().optional(),scriptsPath:z.string().optional()}).strict()]),compiledScheduleBaseFields={cron:z.string(),hasRun:z.boolean(),name:z.string(),logicalPath:z.string(),markdown:z.string().optional(),sourceId:z.string()},compiledScheduleDefinitionSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledScheduleBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledScheduleBaseFields,sourceKind:z.literal(`module`)}).strict()]),compiledSandboxDefinitionSchema=z.object({backendName:z.string().optional(),description:z.string().optional(),inheritsParent:z.boolean().optional(),exportName:z.string().optional(),logicalPath:z.string(),revalidationKey:z.string().optional(),sourceHash:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledSandboxWorkspaceSchema=z.object({logicalPath:z.string(),rootEntries:z.array(z.string()).readonly(),sourceId:z.string(),sourcePath:z.string()}).strict(),compiledWorkspaceResourceRootSchema=z.object({contentHash:z.string().optional(),logicalPath:z.string(),rootEntries:z.array(z.string()).readonly()}).strict(),compiledConnectionDefinitionSchema=z.object({connectionName:z.string(),description:z.string(),exportName:z.string().optional(),logicalPath:z.string(),protocol:z.enum([`mcp`,`openapi`]).default(`mcp`),sourceId:z.string(),sourceKind:z.literal(`module`),url:z.string(),vercelConnect:z.object({connector:z.string()}).strict().optional()}).strict(),compiledDynamicConnectionDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),extensionNamespace:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledToolBehaviorSchema=z.object({availability:z.array(z.enum([`delegated-task-child`,`requires-request-input`,`root-session`])).readonly(),handling:z.discriminatedUnion(`kind`,[z.object({action:z.enum([`self-agent`,`task-cancel`]),kind:z.literal(`dispatch`)}).strict(),z.object({kind:z.literal(`provider-tool`),provider:z.enum([`exa`,`parallel`])}).strict(),z.object({kind:z.literal(`request-input`),request:z.literal(`question`)}).strict(),z.object({kind:z.literal(`workflow-tool`),workflowId:z.string()}).strict()]).optional(),presentation:z.literal(`load-skill`).optional(),shape:z.object({lifetime:z.enum([`step`,`task`]),suspend:z.enum([`none`,`workflow`])}).strict().optional()}).strict(),compiledToolDefinitionSchema=z.object({behavior:compiledToolBehaviorSchema.optional(),description:z.string(),execution:z.literal(`background`).optional(),exportName:z.string().optional(),hasExecute:z.boolean(),hasModelOutputProjection:z.boolean(),inputSchema:jsonObjectSchema.nullable(),logicalPath:z.string(),name:z.string(),outputSchema:jsonObjectSchema.optional(),requiresApproval:z.boolean(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicToolDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),extensionNamespace:z.string().optional(),logicalPath:z.string(),rebindMissingCallbacks:z.boolean().optional(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledMemoryDefinitionSchema=z.object({description:z.string().optional(),exportName:z.string().optional(),logicalPath:z.string(),slot:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),visibility:z.enum([`scope`,`session`])}).strict(),compiledDynamicSkillDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),extensionNamespace:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicInstructionsDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledHookDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledExtensionMountSchema=z.object({externalDependencies:z.array(z.string()).readonly(),namespace:z.string(),packageName:z.string(),packageNamespace:z.string(),sourceRoot:z.string(),mountSourceId:z.string(),mountLogicalPath:z.string()}).strict(),compiledAgentResourceFields={agentRoot:z.string(),appRoot:z.string(),bindings:z.record(z.string(),compiledModuleBindingSchema),channelRoutes:compiledChannelRoutePlanSchema,connections:z.array(compiledConnectionDefinitionSchema),dynamicConnections:z.array(compiledDynamicConnectionDefinitionSchema).default([]),diagnosticsSummary:discoverDiagnosticsSummarySchema,sourceComposition:agentSourceCompositionSchema,workflowTool:compiledWorkflowToolDefinitionSchema.optional(),dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),extensionMounts:z.array(compiledExtensionMountSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),memories:z.array(compiledMemoryDefinitionSchema).default([]),sandbox:compiledSandboxDefinitionSchema,sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),remoteAgents:z.array(compiledRemoteAgentNodeSchema),skills:z.array(compiledSkillSourceSchema).readonly(),instructions:z.array(compiledInstructionsSchema).readonly().default([]),instrumentation:moduleSourceRefSchema.optional(),tools:z.array(compiledToolDefinitionSchema),workspaceResourceRoot:compiledWorkspaceResourceRootSchema},compiledAgentResourcesSchema=z.object(compiledAgentResourceFields).strict(),compiledAgentNodeManifestSchema=z.object({...compiledAgentResourceFields,config:compiledAgentConfigSchema}).strict(),compiledSubagentNodeBaseFields={backing:resourceSourceBackingSchema,entryPath:z.string(),logicalPath:z.string(),name:z.string(),nodeId:z.string(),owner:agentSourceOwnerSchema,parentNodeId:z.string(),rootPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional()},compiledDynamicSubagentDefinitionSchema=z.object({build:compiledAgentBuildDefinitionSchema.optional(),eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledSubagentNodeSchema=z.union([z.object({...compiledSubagentNodeBaseFields,agent:compiledAgentNodeManifestSchema,description:z.string()}).strict(),z.object({...compiledSubagentNodeBaseFields,agent:compiledAgentResourcesSchema,configResolver:compiledDynamicSubagentDefinitionSchema}).strict()]),compiledAgentManifestSchema=z.object({agentRoot:z.string(),appRoot:z.string(),bindings:z.record(z.string(),compiledModuleBindingSchema),extensionMounts:z.array(compiledExtensionMountSchema).default([]),channelRoutes:compiledChannelRoutePlanSchema,config:compiledAgentConfigSchema,connections:z.array(compiledConnectionDefinitionSchema),dynamicConnections:z.array(compiledDynamicConnectionDefinitionSchema).default([]),diagnosticsSummary:discoverDiagnosticsSummarySchema,sourceComposition:agentSourceCompositionSchema,workflowTool:compiledWorkflowToolDefinitionSchema.optional(),dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),memories:z.array(compiledMemoryDefinitionSchema).default([]),kind:z.literal(COMPILED_AGENT_MANIFEST_KIND),remoteAgents:z.array(compiledRemoteAgentNodeSchema),sandbox:compiledSandboxDefinitionSchema,sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),skills:z.array(compiledSkillSourceSchema).readonly(),subagents:z.array(compiledSubagentNodeSchema),instructions:z.array(compiledInstructionsSchema).readonly().default([]),instrumentation:moduleSourceRefSchema.optional(),tools:z.array(compiledToolDefinitionSchema),version:z.literal(48),workspaceResourceRoot:compiledWorkspaceResourceRootSchema}).strict();function createCompiledAgentResources(e){return{agentRoot:e.agentRoot,appRoot:e.appRoot,bindings:{...e.bindings},channelRoutes:{effective:[...e.channelRoutes.effective],preflight:[...e.channelRoutes.preflight],shadowed:[...e.channelRoutes.shadowed]},connections:[...e.connections??[]],dynamicConnections:[...e.dynamicConnections??[]],diagnosticsSummary:e.diagnosticsSummary??{errors:0,warnings:0},sourceComposition:{entries:[...e.sourceComposition.entries]},workflowTool:e.workflowTool===void 0?void 0:{...e.workflowTool},dynamicInstructions:[...e.dynamicInstructions??[]],dynamicSkills:[...e.dynamicSkills??[]],dynamicTools:[...e.dynamicTools??[]],extensionMounts:[...e.extensionMounts??[]],hooks:[...e.hooks??[]],memories:[...e.memories??[]],instructions:[...e.instructions??[]],instrumentation:e.instrumentation===void 0?void 0:{...e.instrumentation},remoteAgents:[...e.remoteAgents??[]],sandbox:e.sandbox,sandboxWorkspaces:[...e.sandboxWorkspaces??[]],schedules:[...e.schedules??[]],skills:[...e.skills??[]],tools:[...e.tools??[]],workspaceResourceRoot:e.workspaceResourceRoot??{logicalPath:``,rootEntries:deriveResourceRootEntries({sandboxWorkspaces:e.sandboxWorkspaces,skills:e.skills})}}}function createCompiledAgentNodeManifest(e){let t={...createCompiledAgentResources(e),config:cloneCompiledAgentDefinition(e.config)};return validateCompiledAgentResources(t,{allowUnknownResourceWinners:!0}),t}function cloneCompiledAgentDefinition(e){let t={build:e.build===void 0?void 0:{externalDependencies:e.build.externalDependencies===void 0?void 0:[...e.build.externalDependencies]},compaction:{model:e.compaction?.model===void 0?void 0:cloneCompiledRuntimeModelReference(e.compaction.model),thresholdPercent:e.compaction?.thresholdPercent},defaultTools:e.defaultTools,description:e.description,experimental:e.experimental===void 0?void 0:{instrumentationProviders:e.experimental.instrumentationProviders,workflow:e.experimental.workflow===void 0?void 0:{modelCallsPerStep:e.experimental.workflow.modelCallsPerStep,retention:e.experimental.workflow.retention,world:e.experimental.workflow.world}},name:e.name,outputSchema:e.outputSchema,reasoning:e.reasoning,limits:e.limits===void 0?void 0:{maxInputTokensPerSession:e.limits.maxInputTokensPerSession,maxOutputTokensPerSession:e.limits.maxOutputTokensPerSession,maxTokenCostUsdPerSession:e.limits.maxTokenCostUsdPerSession,sessionTimeoutMs:e.limits.sessionTimeoutMs},source:{...e.source}};return e.dynamicModel===void 0?{...t,model:cloneCompiledRuntimeModelReference(e.model)}:{...t,dynamicModel:{...e.dynamicModel}}}function deriveResourceRootEntries(e){let t=new Set;for(let n of e.sandboxWorkspaces??[])for(let e of n.rootEntries)t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))}function createCompiledSubagentNodeId(e,t){return e===`__root__`?t:`${e}::${t}`}function createCompiledAgentManifest(e){let t={...createCompiledAgentNodeManifest(e),kind:COMPILED_AGENT_MANIFEST_KIND,extensionMounts:[...e.extensionMounts??[]],subagents:[...e.subagents??[]],version:48};return validateCompiledAgentManifest(t),t}function cloneCompiledRuntimeModelReference(e){let t={id:e.id,routing:cloneModelRouting(e.routing)};return e.contextWindowTokens!==void 0&&(t.contextWindowTokens=e.contextWindowTokens),e.maxOutputTokens!==void 0&&(t.maxOutputTokens=e.maxOutputTokens),e.providerOptions!==void 0&&(t.providerOptions={...e.providerOptions}),e.source!==void 0&&(t.source={...e.source}),t}function cloneModelRouting(e){return e.kind===`external`?{kind:`external`,provider:e.provider}:e.byok===void 0?{kind:`gateway`,target:e.target}:{kind:`gateway`,target:e.target,byok:e.byok}}export{COMPILED_AGENT_MANIFEST_KIND,COMPILED_AGENT_MANIFEST_VERSION,ROOT_COMPILED_AGENT_NODE_ID,compiledAgentManifestSchema,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId,deriveResourceRootEntries};
1
+ import{z}from"#compiled/zod/index.js";import{discoverDiagnosticsSummarySchema}from"#discover/diagnostics.js";import{compiledRemoteAgentNodeSchema}from"#compiler/remote-agent-node.js";import{jsonObjectSchema}from"#shared/json-schemas.js";import{AGENT_WORKFLOW_RETENTION_VALUES}from"#shared/agent-definition.js";import{validateCompiledAgentManifest,validateCompiledAgentResources}from"#compiler/validate-artifact.js";const COMPILED_AGENT_MANIFEST_KIND=`eve-agent-compiled-manifest`,ROOT_COMPILED_AGENT_NODE_ID=`__root__`,COMPILED_AGENT_MANIFEST_VERSION=48,agentSourceOwnerSchema=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`application`)}).strict(),z.object({feature:z.string().min(1),kind:z.literal(`framework`)}).strict(),z.object({kind:z.literal(`extension`),namespace:z.string().min(1),packageName:z.string().min(1)}).strict()]),moduleSourceRefSchema=z.object({exportName:z.string().optional(),sourceKind:z.literal(`module`),logicalPath:z.string(),sourceId:z.string()}).strict(),filesystemModuleBackingSchema=z.object({externalDependencies:z.array(z.string()).readonly(),extensionScope:z.object({namespace:z.string(),sourceRoot:z.string()}).strict().optional(),kind:z.literal(`filesystem`),sourcePath:z.string()}).strict(),programmaticModuleBackingSchema=z.object({dependencies:z.record(z.string(),z.string()).readonly().optional(),kind:z.literal(`programmatic`),moduleId:z.string(),parameters:jsonObjectSchema.optional(),registryId:z.string(),revision:z.string(),semanticRevision:z.string().optional()}).strict(),resourceSourceBackingSchema=z.object({kind:z.literal(`resource`),sourcePath:z.string()}).strict(),agentModuleBackingSchema=z.discriminatedUnion(`kind`,[filesystemModuleBackingSchema,programmaticModuleBackingSchema]),compiledModuleBindingSchema=z.object({backing:agentModuleBackingSchema,logicalPath:z.string(),owner:agentSourceOwnerSchema,usage:z.object({compile:z.boolean(),runtimeEntry:z.boolean()}).strict()}).strict(),agentSourceDescriptorSchema=z.object({backing:z.discriminatedUnion(`kind`,[filesystemModuleBackingSchema,programmaticModuleBackingSchema,resourceSourceBackingSchema]),form:z.enum([`derived`,`direct`]),layer:z.enum([`framework-default`,`extension-package`,`extension-override`,`application`]),logicalPath:z.string(),owner:agentSourceOwnerSchema,sourceId:z.string()}).strict(),agentSourceCompositionSchema=z.object({entries:z.array(z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`shadowed`),source:agentSourceDescriptorSchema,winnerSourceId:z.string()}).strict(),z.object({kind:z.literal(`disabled`),source:agentSourceDescriptorSchema}).strict()])).readonly()}).strict(),compiledDynamicModelDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),sourceKind:z.literal(`module`),logicalPath:z.string(),sourceId:z.string()}).strict(),channelMethodSchema=z.union([z.literal(`GET`),z.literal(`HEAD`),z.literal(`POST`),z.literal(`PUT`),z.literal(`PATCH`),z.literal(`DELETE`),z.literal(`OPTIONS`),z.literal(`WEBSOCKET`)]),compiledChannelCorsSchema=z.object({origin:z.union([z.literal(`*`),z.literal(`null`),z.array(z.string())]).optional(),methods:z.union([z.literal(`*`),z.array(z.string())]).optional(),allowHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),exposeHeaders:z.union([z.literal(`*`),z.array(z.string())]).optional(),credentials:z.boolean().optional(),maxAge:z.union([z.string(),z.literal(!1)]).optional(),preflight:z.object({statusCode:z.number().int().min(100).max(599).optional()}).strict().optional()}).strict(),compiledChannelDefinitionSchema=z.object({kind:z.literal(`channel`),name:z.string(),logicalPath:z.string(),method:channelMethodSchema,urlPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional(),adapterKind:z.string().optional(),cors:compiledChannelCorsSchema.optional()}).strict(),compiledChannelPreflightDefinitionSchema=z.object({cors:compiledChannelCorsSchema,method:z.literal(`OPTIONS`),sourceIds:z.array(z.string()).readonly(),urlPath:z.string()}).strict(),compiledShadowedChannelRouteSchema=z.object({method:channelMethodSchema,source:agentSourceDescriptorSchema,urlPath:z.string(),winnerSourceId:z.string()}).strict(),compiledChannelRoutePlanSchema=z.object({effective:z.array(compiledChannelDefinitionSchema).readonly(),preflight:z.array(compiledChannelPreflightDefinitionSchema).readonly(),shadowed:z.array(compiledShadowedChannelRouteSchema).readonly()}).strict(),modelRoutingSchema=z.union([z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}).strict(),z.object({kind:z.literal(`external`),provider:z.string()}).strict()]),compiledRuntimeModelReferenceSchema=z.object({contextWindowTokens:z.number().int().positive().optional(),id:z.string(),maxOutputTokens:z.number().int().positive().optional(),source:moduleSourceRefSchema.optional(),providerOptions:z.record(z.string(),jsonObjectSchema).optional(),routing:modelRoutingSchema}).strict(),compiledAgentBuildDefinitionSchema=z.object({externalDependencies:z.array(z.string()).optional()}).strict(),compiledAgentWorkflowWorldDefinitionSchema=z.string(),compiledAgentWorkflowDefinitionSchema=z.object({modelCallsPerStep:z.number().int().positive().optional(),retention:z.literal(AGENT_WORKFLOW_RETENTION_VALUES).optional(),world:compiledAgentWorkflowWorldDefinitionSchema.optional()}).strict(),compiledAgentCompactionDefinitionSchema=z.object({model:compiledRuntimeModelReferenceSchema.optional(),thresholdPercent:z.number().finite().min(0).max(1).optional()}).strict(),sessionTokenLimitSchema=z.union([z.number().int().positive(),z.literal(!1)]),sessionTokenCostLimitSchema=z.union([z.number().finite().positive(),z.literal(!1)]),sessionTimeoutSchema=z.union([z.number().int().positive(),z.literal(!1)]),compiledAgentLimitsDefinitionSchema=z.object({maxInputTokensPerSession:sessionTokenLimitSchema.optional(),maxOutputTokensPerSession:sessionTokenLimitSchema.optional(),maxTokenCostUsdPerSession:sessionTokenCostLimitSchema.optional(),sessionTimeoutMs:sessionTimeoutSchema.optional()}).strict(),compiledAgentConfigBaseFields={build:compiledAgentBuildDefinitionSchema.optional(),compaction:compiledAgentCompactionDefinitionSchema.optional(),defaultTools:z.boolean().optional(),description:z.string().optional(),experimental:z.object({instrumentationProviders:z.boolean().optional(),workflow:compiledAgentWorkflowDefinitionSchema.optional()}).strict().optional(),name:z.string(),outputSchema:jsonObjectSchema.optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional(),source:moduleSourceRefSchema,limits:compiledAgentLimitsDefinitionSchema.optional()},compiledAgentConfigSchema=z.union([z.object({...compiledAgentConfigBaseFields,model:compiledRuntimeModelReferenceSchema}).strict(),z.object({...compiledAgentConfigBaseFields,dynamicModel:compiledDynamicModelDefinitionSchema}).strict()]),compiledInstructionsBaseFields={content:z.string(),name:z.string(),logicalPath:z.string(),role:z.enum([`system`,`user`]),sourceId:z.string()},compiledInstructionsSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledInstructionsBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledInstructionsBaseFields,sourceKind:z.literal(`module`)}).strict()]),compiledSkillBaseFields={name:z.string(),description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional(),sourceId:z.string(),logicalPath:z.string()},compiledSkillSourceSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledSkillBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledSkillBaseFields,sourceKind:z.literal(`module`),exportName:z.string().optional()}).strict(),z.object({...compiledSkillBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`skill-package`),skillId:z.string(),skillFilePath:z.string(),rootPath:z.string(),assetsPath:z.string().optional(),referencesPath:z.string().optional(),scriptsPath:z.string().optional()}).strict()]),compiledScheduleBaseFields={cron:z.string(),hasRun:z.boolean(),name:z.string(),logicalPath:z.string(),markdown:z.string().optional(),sourceId:z.string()},compiledScheduleDefinitionSchema=z.discriminatedUnion(`sourceKind`,[z.object({...compiledScheduleBaseFields,owner:agentSourceOwnerSchema,sourceKind:z.literal(`markdown`)}).strict(),z.object({...compiledScheduleBaseFields,sourceKind:z.literal(`module`)}).strict()]),compiledSandboxDefinitionSchema=z.object({backendName:z.string().optional(),description:z.string().optional(),inheritsParent:z.boolean().optional(),exportName:z.string().optional(),logicalPath:z.string(),revalidationKey:z.string().optional(),sourceHash:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledSandboxWorkspaceSchema=z.object({logicalPath:z.string(),rootEntries:z.array(z.string()).readonly(),sourceId:z.string(),sourcePath:z.string()}).strict(),compiledWorkspaceResourceRootSchema=z.object({contentHash:z.string().optional(),logicalPath:z.string(),rootEntries:z.array(z.string()).readonly()}).strict(),compiledConnectionDefinitionSchema=z.object({connectionName:z.string(),description:z.string(),exportName:z.string().optional(),logicalPath:z.string(),protocol:z.enum([`mcp`,`openapi`]).default(`mcp`),sourceId:z.string(),sourceKind:z.literal(`module`),url:z.string(),vercelConnect:z.object({connector:z.string()}).strict().optional()}).strict(),compiledDynamicConnectionDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),extensionNamespace:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledToolBehaviorSchema=z.object({availability:z.array(z.enum([`delegated-task-child`,`requires-request-input`,`root-session`])).readonly(),handling:z.discriminatedUnion(`kind`,[z.object({action:z.enum([`self-agent`,`task-cancel`]),kind:z.literal(`dispatch`)}).strict(),z.object({kind:z.literal(`provider-tool`),provider:z.enum([`exa`,`parallel`])}).strict(),z.object({kind:z.literal(`request-input`),request:z.literal(`question`)}).strict(),z.object({kind:z.literal(`workflow-tool`),workflowId:z.string()}).strict()]).optional(),presentation:z.literal(`load-skill`).optional(),shape:z.object({lifetime:z.enum([`step`,`task`]),suspend:z.enum([`none`,`workflow`])}).strict().optional()}).strict(),compiledToolDefinitionSchema=z.object({behavior:compiledToolBehaviorSchema.optional(),description:z.string(),execution:z.literal(`background`).optional(),exportName:z.string().optional(),hasExecute:z.boolean(),hasModelOutputProjection:z.boolean(),inputSchema:jsonObjectSchema.nullable(),logicalPath:z.string(),name:z.string(),outputSchema:jsonObjectSchema.optional(),requiresApproval:z.boolean(),sourceId:z.string(),sourceKind:z.literal(`module`),workflowProgram:z.object({maxSubagents:z.number().int().positive()}).strict().optional()}).strict(),compiledDynamicToolDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),extensionNamespace:z.string().optional(),logicalPath:z.string(),rebindMissingCallbacks:z.boolean().optional(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledMemoryDefinitionSchema=z.object({description:z.string().optional(),exportName:z.string().optional(),logicalPath:z.string(),slot:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),visibility:z.enum([`scope`,`session`])}).strict(),compiledDynamicSkillDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),extensionNamespace:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledDynamicInstructionsDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledHookDefinitionSchema=z.object({eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),slug:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledExtensionMountSchema=z.object({externalDependencies:z.array(z.string()).readonly(),namespace:z.string(),packageName:z.string(),packageNamespace:z.string(),sourceRoot:z.string(),mountSourceId:z.string(),mountLogicalPath:z.string()}).strict(),compiledAgentResourceFields={agentRoot:z.string(),appRoot:z.string(),bindings:z.record(z.string(),compiledModuleBindingSchema),channelRoutes:compiledChannelRoutePlanSchema,connections:z.array(compiledConnectionDefinitionSchema),dynamicConnections:z.array(compiledDynamicConnectionDefinitionSchema).default([]),diagnosticsSummary:discoverDiagnosticsSummarySchema,sourceComposition:agentSourceCompositionSchema,dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),extensionMounts:z.array(compiledExtensionMountSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),memories:z.array(compiledMemoryDefinitionSchema).default([]),sandbox:compiledSandboxDefinitionSchema,sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),remoteAgents:z.array(compiledRemoteAgentNodeSchema),skills:z.array(compiledSkillSourceSchema).readonly(),instructions:z.array(compiledInstructionsSchema).readonly().default([]),instrumentation:moduleSourceRefSchema.optional(),tools:z.array(compiledToolDefinitionSchema),workspaceResourceRoot:compiledWorkspaceResourceRootSchema},compiledAgentResourcesSchema=z.object(compiledAgentResourceFields).strict(),compiledAgentNodeManifestSchema=z.object({...compiledAgentResourceFields,config:compiledAgentConfigSchema}).strict(),compiledSubagentNodeBaseFields={backing:resourceSourceBackingSchema,entryPath:z.string(),logicalPath:z.string(),name:z.string(),nodeId:z.string(),owner:agentSourceOwnerSchema,parentNodeId:z.string(),rootPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`),exportName:z.string().optional()},compiledDynamicSubagentDefinitionSchema=z.object({build:compiledAgentBuildDefinitionSchema.optional(),eventNames:z.array(z.string()).readonly(),exportName:z.string().optional(),logicalPath:z.string(),sourceId:z.string(),sourceKind:z.literal(`module`)}).strict(),compiledSubagentNodeSchema=z.union([z.object({...compiledSubagentNodeBaseFields,agent:compiledAgentNodeManifestSchema,description:z.string()}).strict(),z.object({...compiledSubagentNodeBaseFields,agent:compiledAgentResourcesSchema,configResolver:compiledDynamicSubagentDefinitionSchema}).strict()]),compiledAgentManifestSchema=z.object({agentRoot:z.string(),appRoot:z.string(),bindings:z.record(z.string(),compiledModuleBindingSchema),extensionMounts:z.array(compiledExtensionMountSchema).default([]),channelRoutes:compiledChannelRoutePlanSchema,config:compiledAgentConfigSchema,connections:z.array(compiledConnectionDefinitionSchema),dynamicConnections:z.array(compiledDynamicConnectionDefinitionSchema).default([]),diagnosticsSummary:discoverDiagnosticsSummarySchema,sourceComposition:agentSourceCompositionSchema,dynamicInstructions:z.array(compiledDynamicInstructionsDefinitionSchema).default([]),dynamicSkills:z.array(compiledDynamicSkillDefinitionSchema).default([]),dynamicTools:z.array(compiledDynamicToolDefinitionSchema).default([]),hooks:z.array(compiledHookDefinitionSchema),memories:z.array(compiledMemoryDefinitionSchema).default([]),kind:z.literal(COMPILED_AGENT_MANIFEST_KIND),remoteAgents:z.array(compiledRemoteAgentNodeSchema),sandbox:compiledSandboxDefinitionSchema,sandboxWorkspaces:z.array(compiledSandboxWorkspaceSchema),schedules:z.array(compiledScheduleDefinitionSchema),skills:z.array(compiledSkillSourceSchema).readonly(),subagents:z.array(compiledSubagentNodeSchema),instructions:z.array(compiledInstructionsSchema).readonly().default([]),instrumentation:moduleSourceRefSchema.optional(),tools:z.array(compiledToolDefinitionSchema),version:z.literal(48),workspaceResourceRoot:compiledWorkspaceResourceRootSchema}).strict();function createCompiledAgentResources(e){return{agentRoot:e.agentRoot,appRoot:e.appRoot,bindings:{...e.bindings},channelRoutes:{effective:[...e.channelRoutes.effective],preflight:[...e.channelRoutes.preflight],shadowed:[...e.channelRoutes.shadowed]},connections:[...e.connections??[]],dynamicConnections:[...e.dynamicConnections??[]],diagnosticsSummary:e.diagnosticsSummary??{errors:0,warnings:0},sourceComposition:{entries:[...e.sourceComposition.entries]},dynamicInstructions:[...e.dynamicInstructions??[]],dynamicSkills:[...e.dynamicSkills??[]],dynamicTools:[...e.dynamicTools??[]],extensionMounts:[...e.extensionMounts??[]],hooks:[...e.hooks??[]],memories:[...e.memories??[]],instructions:[...e.instructions??[]],instrumentation:e.instrumentation===void 0?void 0:{...e.instrumentation},remoteAgents:[...e.remoteAgents??[]],sandbox:e.sandbox,sandboxWorkspaces:[...e.sandboxWorkspaces??[]],schedules:[...e.schedules??[]],skills:[...e.skills??[]],tools:[...e.tools??[]],workspaceResourceRoot:e.workspaceResourceRoot??{logicalPath:``,rootEntries:deriveResourceRootEntries({sandboxWorkspaces:e.sandboxWorkspaces,skills:e.skills})}}}function createCompiledAgentNodeManifest(e){let t={...createCompiledAgentResources(e),config:cloneCompiledAgentDefinition(e.config)};return validateCompiledAgentResources(t,{allowUnknownResourceWinners:!0}),t}function cloneCompiledAgentDefinition(e){let t={build:e.build===void 0?void 0:{externalDependencies:e.build.externalDependencies===void 0?void 0:[...e.build.externalDependencies]},compaction:{model:e.compaction?.model===void 0?void 0:cloneCompiledRuntimeModelReference(e.compaction.model),thresholdPercent:e.compaction?.thresholdPercent},defaultTools:e.defaultTools,description:e.description,experimental:e.experimental===void 0?void 0:{instrumentationProviders:e.experimental.instrumentationProviders,workflow:e.experimental.workflow===void 0?void 0:{modelCallsPerStep:e.experimental.workflow.modelCallsPerStep,retention:e.experimental.workflow.retention,world:e.experimental.workflow.world}},name:e.name,outputSchema:e.outputSchema,reasoning:e.reasoning,limits:e.limits===void 0?void 0:{maxInputTokensPerSession:e.limits.maxInputTokensPerSession,maxOutputTokensPerSession:e.limits.maxOutputTokensPerSession,maxTokenCostUsdPerSession:e.limits.maxTokenCostUsdPerSession,sessionTimeoutMs:e.limits.sessionTimeoutMs},source:{...e.source}};return e.dynamicModel===void 0?{...t,model:cloneCompiledRuntimeModelReference(e.model)}:{...t,dynamicModel:{...e.dynamicModel}}}function deriveResourceRootEntries(e){let t=new Set;for(let n of e.sandboxWorkspaces??[])for(let e of n.rootEntries)t.add(e);return[...t].sort((e,t)=>e.localeCompare(t))}function createCompiledSubagentNodeId(e,t){return e===`__root__`?t:`${e}::${t}`}function createCompiledAgentManifest(e){let t={...createCompiledAgentNodeManifest(e),kind:COMPILED_AGENT_MANIFEST_KIND,extensionMounts:[...e.extensionMounts??[]],subagents:[...e.subagents??[]],version:48};return validateCompiledAgentManifest(t),t}function cloneCompiledRuntimeModelReference(e){let t={id:e.id,routing:cloneModelRouting(e.routing)};return e.contextWindowTokens!==void 0&&(t.contextWindowTokens=e.contextWindowTokens),e.maxOutputTokens!==void 0&&(t.maxOutputTokens=e.maxOutputTokens),e.providerOptions!==void 0&&(t.providerOptions={...e.providerOptions}),e.source!==void 0&&(t.source={...e.source}),t}function cloneModelRouting(e){return e.kind===`external`?{kind:`external`,provider:e.provider}:e.byok===void 0?{kind:`gateway`,target:e.target}:{kind:`gateway`,target:e.target,byok:e.byok}}export{COMPILED_AGENT_MANIFEST_KIND,COMPILED_AGENT_MANIFEST_VERSION,ROOT_COMPILED_AGENT_NODE_ID,compiledAgentManifestSchema,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId,deriveResourceRootEntries};
@@ -1 +1 @@
1
- import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{ROOT_COMPILED_AGENT_NODE_ID,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId}from"#compiler/manifest.js";import{summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{canonicalSourceSlot,composeAgentModuleCandidates,createAgentModuleBinding,createProgrammaticModuleCandidates,describeAgentSourceCandidate,disableComposedCandidate,instantiateProgrammaticTemplate,isAgentModuleCandidate}from"#compiler/source-graph.js";import{frameworkAgentSourceRegistry,memoryWrapperTemplate}from"#framework/sources/registry.js";import{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertRootOwnedSpecialTool,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,withDiagnosticsSummary,withExtensionNamespace}from"#compiler/normalize-manifest-helpers.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{assertRemoteAgentDefinitionHasNoLocalPackageEntries,normalizeSubagentConfig}from"#compiler/normalize-subagent.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{NodeModuleEvaluationContext,markConfigRuntimeEntries}from"#compiler/module-lifecycle.js";import{assertInstrumentationLayoutConfig}from"#compiler/instrumentation-layout-config.js";import{compileAgentConfig}from"#compiler/normalize-agent-config.js";import{compileConnectionDefinition}from"#compiler/normalize-connection.js";import{applyDefaultToolPolicy,assertFrameworkToolPolicy}from"#compiler/default-tool-policy.js";import{resolveWorkspaceSubagentDefinition}from"#compiler/resolve-workspace-subagent.js";import{workspaceSubagentName}from"#public/definitions/workspace-agent.js";import{compileHookEntry}from"#compiler/normalize-hook.js";import{compileInstructionsEntry}from"#compiler/normalize-instructions.js";import{compileMemoryDefinition,deriveMemorySlot}from"#compiler/normalize-memory.js";import{compileSandboxDefinition}from"#compiler/normalize-sandbox.js";import{compileScheduleDefinition}from"#compiler/normalize-schedule.js";import{compileSkillSource}from"#compiler/normalize-skill.js";import{compileToolEntry}from"#compiler/normalize-tool.js";import{createCompiledChannelRoutePlan}from"#compiler/channel-route-plan.js";import{finalizeNodeSourceState}from"#compiler/node-source-state.js";import{projectAgentSources,projectSelectedSources}from"#compiler/project-sources.js";async function compileAgentManifest(e,t={}){let n=[frameworkAgentSourceRegistry,...t.sourceRegistries??[]];assertUniqueRegistryIds(n);let r={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:n},i=t.diagnostics??[],a=await new AgentGraphCompiler(r,n,i).compileStaticNode({inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,owner:{kind:`application`}}),o=summarizeCompilerDiagnostics(i),s=withDiagnosticsSummary(a.descendants,o);return createCompiledAgentManifest({...a.manifest,diagnosticsSummary:o,subagents:s})}var AgentGraphCompiler=class{context;registries;diagnostics;constructor(e,t,n){this.context=e,this.registries=t,this.diagnostics=n}async compileStaticNode(e){let t=await this.createPhaseOneNodeSourceState(e,e.inheritedExternalDependencies),n=await compileAgentConfig(e.manifest,this.context,{binding:t.selectedConfig.binding,definition:t.selectedConfig.definition,source:t.selectedConfig.source});assertRootOnlyConfig(n,e.isRoot,e.manifest.agentId),applyDefaultToolPolicy(t,n);let r=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));r.length>0&&(n={...n,build:{...n.build,externalDependencies:r}});let i=finalizeNodeSourceState(t,r);markConfigRuntimeEntries(n,i.evaluation),assertInstrumentationLayoutConfig(n,i);let a=await this.compileResources(e,i),o=await this.compileChildren(e,i,r),s=createCompiledAgentNodeManifest({...a,config:n,remoteAgents:o.remoteAgents});return{descendants:o.nodes,manifest:s}}async compileChildren(e,t,n){let r=[],i=[],a=collectSelectedSourceIds(t.composed),o=t.projected.subagents.filter(e=>a.has(e.candidate.sourceId));for(let t of o){let a=t.source,o=createCompiledSubagentNodeId(e.nodeId,a.sourceId),s={extensionScope:t.extensionScope??e.extensionScope,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:a.manifest,nodeId:o,owner:t.owner,parentNodeId:e.nodeId},c=await this.createPhaseOneNodeSourceState(s,n),l=normalizeSubagentConfig(c.selectedConfig.definition,`Expected the subagent config export "${c.selectedConfig.source.exportName??`default`}" from "${a.entryPath}" to match the public eve shape.`);if(l.kind===`remote`){let n=workspaceSubagentName(c.selectedConfig.definition),r=n===void 0?l:await resolveWorkspaceSubagentDefinition({definition:l,name:n,registries:this.registries,source:a});assertRemoteAgentDefinitionHasNoLocalPackageEntries(a);let s=c.selectedConfig.source.sourceId;c.evaluation.setBindings({[s]:c.selectedConfig.binding}),c.evaluation.requireRuntimeEntry(s);let u=c.evaluation.finalizeBindings()[s];if(u===void 0)throw Error(`Remote subagent "${o}" has no finalized config binding.`);i.push(createCompiledRemoteAgent({binding:u,definition:r,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,source:a,sourceRef:c.selectedConfig.source}));continue}let u,d;l.kind===`local`?(u=await compileAgentConfig(a.manifest,this.context,{binding:c.selectedConfig.binding,definition:l.definition,source:c.selectedConfig.source}),assertRootOnlyConfig(u,!1,a.manifest.agentId),applyDefaultToolPolicy(c,u)):d=l.build?.externalDependencies;let f=mergeExternalDependencies(n,u?.build?.externalDependencies,d,a.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));u!==void 0&&f.length>0&&(u={...u,build:{...u.build,externalDependencies:f}});let p=finalizeNodeSourceState(c,f);u===void 0?p.evaluation.requireRuntimeEntry(c.selectedConfig.source.sourceId):markConfigRuntimeEntries(u,p.evaluation),u!==void 0&&assertInstrumentationLayoutConfig(u,p);let m=await this.compileResources(s,p),h=await this.compileChildren(s,p,f),g={backing:t.candidate.backing,entryPath:a.entryPath,logicalPath:a.logicalPath,name:a.subagentId,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,rootPath:a.rootPath,sourceId:a.sourceId,sourceKind:`module`},_;_=u===void 0?{...g,agent:createCompiledAgentResources({...m,remoteAgents:h.remoteAgents}),configResolver:{build:l.kind===`dynamic`?l.build:void 0,eventNames:l.kind===`dynamic`?l.eventNames:[],exportName:c.selectedConfig.source.exportName,logicalPath:c.selectedConfig.source.logicalPath,sourceId:c.selectedConfig.source.sourceId,sourceKind:`module`}}:{...g,agent:createCompiledAgentNodeManifest({...m,config:u,remoteAgents:h.remoteAgents}),description:expectSubagentDescription(u,a)},r.push(_,...h.nodes)}return{nodes:r,remoteAgents:i}}composeNodeSources(e,t){let n=projectAgentSources({externalDependencies:t,extensionScope:e.extensionScope,layer:e.layer,manifest:e.manifest,nodeId:e.nodeId,owner:e.owner}),r=[],i=[];for(let t of this.registries){let n=t===frameworkAgentSourceRegistry;for(let a of t.registrations){if(a.applyTo===`root`&&!e.isRoot)continue;!n&&a.applyTo===`all-local-nodes`&&assertApplicationOverlayCanApplyToAllNodes(a.source.modules.map(e=>e.logicalPath));let t=createProgrammaticModuleCandidates({layer:n?`framework-default`:`application`,nodeId:e.nodeId,owner:n?{feature:a.source.id,kind:`framework`}:{kind:`application`},registration:a});(n?r:i).push(...t)}}let a=[...n.candidates,...i].filter(e=>e.backing.kind!==`resource`&&(canonicalSourceSlot(e.logicalPath)===`memory`||canonicalSourceSlot(e.logicalPath).startsWith(`memory/`))).map(e=>{let t=deriveMemorySlot(e.logicalPath);return instantiateProgrammaticTemplate({anchor:e,dependencies:{memory:e},logicalPath:`tools/${t}.ts`,owner:{feature:`memory`,kind:`framework`},parameters:{memoryExportName:e.exportName??`default`,memoryLogicalPath:e.logicalPath,slot:t},template:memoryWrapperTemplate})}),o=[...r,...n.candidates,...a,...i],s=composeAgentModuleCandidates(o),c=projectSelectedSources({candidates:s.selected.values(),resources:n.resources});return{composed:s,orderedCandidates:o,projected:n,sourcesBySourceId:new Map(c.map(e=>[e.candidate.sourceId,e])),subagentsBySourceId:new Map(n.subagents.map(e=>[e.candidate.sourceId,e]))}}async createPhaseOneNodeSourceState(e,t){let n=this.composeNodeSources(e,t),r=new NodeModuleEvaluationContext(this.registries);return r.setBindings(Object.fromEntries([...n.composed.selected.values()].filter(isAgentModuleCandidate).map(e=>[e.sourceId,createAgentModuleBinding(e)]))),{evaluation:r,graph:n,selectedConfig:await this.loadSelectedConfig(n,r)}}async loadSelectedConfig(e,t){let n=e.composed.selected.get(`agent`);if(n===void 0||!isAgentModuleCandidate(n))throw Error(`Every local agent node requires a selected module-backed agent.ts source.`);let r=createAgentModuleBinding(n),i=e.sourcesBySourceId.get(n.sourceId);if(i?.source.sourceKind!==`module`)throw Error(`Selected agent config source "${n.sourceId}" was not projected.`);let a=i.source;return{binding:r,candidate:n,definition:await loadModuleBackedDefinition({binding:r,kind:`agent config`,loadNamespace:t.loadNamespace,source:a}),source:a}}async compileResources(e,t){let n=[],r=[],i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[],m,h,g,_=collectSelectedSourceIds(t.composed),v=t.evaluation.loadNamespace;for(let y of t.orderedCandidates){if(!_.has(y.sourceId))continue;let b=t.sourcesBySourceId.get(y.sourceId);if(b===void 0)continue;let x=t.bindings[y.sourceId],S={binding:x,loadNamespace:v,owner:y.owner};switch(b.kind){case`config`:case`extension`:break;case`channel`:{let n=await compileChannelDefinition(e.manifest.agentRoot,b.source,{binding:x,loadNamespace:v});n.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:y,composed:t.composed}),delete t.bindings[y.sourceId],_.delete(y.sourceId)):p.push(...n.definitions);break}case`connection`:{let n=await compileConnectionDefinition(e.manifest.agentRoot,b.source,{binding:x,loadNamespace:v});n.kind===`connection`?c.push(n.definition):l.push(withExtensionNamespace(n.definition,y.owner)),t.evaluation.requireRuntimeEntry(y.sourceId);break}case`hook`:d.push(await compileHookEntry(b.source,{binding:x,loadNamespace:v})),t.evaluation.requireRuntimeEntry(y.sourceId);break;case`instructions`:{let n=await compileInstructionsEntry(e.manifest.agentRoot,b.source,S);n.kind===`instructions`?o.push(n.definition):(s.push(n.definition),t.evaluation.requireRuntimeEntry(y.sourceId));break}case`instrumentation`:h=b.source,t.evaluation.requireRuntimeEntry(y.sourceId);break;case`memory`:u.push(await compileMemoryDefinition(b.source,{binding:x,loadNamespace:v})),t.evaluation.requireRuntimeEntry(y.sourceId);break;case`sandbox`:m=await compileSandboxDefinition(e.manifest.agentRoot,b.source,{binding:x,loadNamespace:v}),m.inheritsParent||t.evaluation.requireRuntimeEntry(y.sourceId);break;case`schedule`:{let n=await compileScheduleDefinition(e.manifest.agentRoot,b.source,S);f.push(n),n.sourceKind===`module`&&n.hasRun&&t.evaluation.requireRuntimeEntry(y.sourceId);break}case`skill`:{let n=await compileSkillSource(e.manifest.agentRoot,b.source,S);n.kind===`skill`?i.push(n.definition):(a.push(withExtensionNamespace(n.definition,y.owner)),t.evaluation.requireRuntimeEntry(y.sourceId));break}case`tool`:{let i=await compileToolEntry(e.manifest.agentRoot,b.source,{binding:x,loadNamespace:v});assertFrameworkToolPolicy(y,i),i.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:y,composed:t.composed}),delete t.bindings[y.sourceId],_.delete(y.sourceId)):i.kind===`tool`?(n.push(i.definition),i.definition.hasExecute&&t.evaluation.requireRuntimeEntry(y.sourceId)):i.kind===`dynamic-tool`?(r.push(withExtensionNamespace(i.definition,y.owner)),t.evaluation.requireRuntimeEntry(y.sourceId)):i.kind===`workflow-tool`?(assertRootOwnedSpecialTool(y,`Workflow`),g={...b.source,maxSubagents:i.maxSubagents}):(assertNonExtensionSpecialTool(y,`Web search`),n.push(i.definition));break}}}if(m===void 0)throw Error(`Agent node "${e.nodeId}" has no selected sandbox source.`);assertUniqueBy(n,e=>e.name,`tool name`),assertUniqueBy(r,e=>e.slug,`dynamic tool slug`),assertUniqueBy(c,e=>e.connectionName,`connection name`),assertUniqueBy(l,e=>e.slug,`dynamic connection slug`),assertUniqueBy(i,e=>e.name,`skill name`);let y=createCompiledChannelRoutePlan({bindings:t.bindings,channels:p,diagnostics:this.diagnostics,nodeId:e.nodeId,sources:Object.fromEntries(t.orderedCandidates.map(e=>[e.sourceId,describeAgentSourceCandidate(e)]))});for(let e of y.effective)t.evaluation.requireRuntimeEntry(e.sourceId);let b=compileExtensionMounts(e.manifest,t.composed);for(let e of b)t.evaluation.requireRuntimeEntry(e.mountSourceId);let x=t.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,bindings:x,channelRoutes:y,connections:c,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:l,dynamicInstructions:s,dynamicSkills:a,dynamicTools:r,extensionMounts:b,hooks:d,memories:u,instructions:o,instrumentation:h,sandbox:m,sandboxWorkspaces:e.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:f,skills:i,sourceComposition:t.composed.composition,tools:n,workflowTool:g})}};export{compileAgentManifest};
1
+ import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{ROOT_COMPILED_AGENT_NODE_ID,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId}from"#compiler/manifest.js";import{summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{canonicalSourceSlot,composeAgentModuleCandidates,createAgentModuleBinding,createProgrammaticModuleCandidates,describeAgentSourceCandidate,disableComposedCandidate,instantiateProgrammaticTemplate,isAgentModuleCandidate}from"#compiler/source-graph.js";import{frameworkAgentSourceRegistry,memoryWrapperTemplate}from"#framework/sources/registry.js";import{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,withDiagnosticsSummary,withExtensionNamespace}from"#compiler/normalize-manifest-helpers.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{assertRemoteAgentDefinitionHasNoLocalPackageEntries,normalizeSubagentConfig}from"#compiler/normalize-subagent.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{NodeModuleEvaluationContext,markConfigRuntimeEntries}from"#compiler/module-lifecycle.js";import{assertInstrumentationLayoutConfig}from"#compiler/instrumentation-layout-config.js";import{compileAgentConfig}from"#compiler/normalize-agent-config.js";import{compileConnectionDefinition}from"#compiler/normalize-connection.js";import{applyDefaultToolPolicy,assertFrameworkToolPolicy}from"#compiler/default-tool-policy.js";import{resolveWorkspaceSubagentDefinition}from"#compiler/resolve-workspace-subagent.js";import{workspaceSubagentName}from"#public/definitions/workspace-agent.js";import{compileHookEntry}from"#compiler/normalize-hook.js";import{compileInstructionsEntry}from"#compiler/normalize-instructions.js";import{compileMemoryDefinition,deriveMemorySlot}from"#compiler/normalize-memory.js";import{compileSandboxDefinition}from"#compiler/normalize-sandbox.js";import{compileScheduleDefinition}from"#compiler/normalize-schedule.js";import{compileSkillSource}from"#compiler/normalize-skill.js";import{compileToolEntry}from"#compiler/normalize-tool.js";import{createCompiledChannelRoutePlan}from"#compiler/channel-route-plan.js";import{finalizeNodeSourceState}from"#compiler/node-source-state.js";import{projectAgentSources,projectSelectedSources}from"#compiler/project-sources.js";async function compileAgentManifest(e,t={}){let n=[frameworkAgentSourceRegistry,...t.sourceRegistries??[]];assertUniqueRegistryIds(n);let r={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:n},i=t.diagnostics??[],a=await new AgentGraphCompiler(r,n,i).compileStaticNode({inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,owner:{kind:`application`}}),o=summarizeCompilerDiagnostics(i),s=withDiagnosticsSummary(a.descendants,o);return createCompiledAgentManifest({...a.manifest,diagnosticsSummary:o,subagents:s})}var AgentGraphCompiler=class{context;registries;diagnostics;constructor(e,t,n){this.context=e,this.registries=t,this.diagnostics=n}async compileStaticNode(e){let t=await this.createPhaseOneNodeSourceState(e,e.inheritedExternalDependencies),n=await compileAgentConfig(e.manifest,this.context,{binding:t.selectedConfig.binding,definition:t.selectedConfig.definition,source:t.selectedConfig.source});assertRootOnlyConfig(n,e.isRoot,e.manifest.agentId),applyDefaultToolPolicy(t,n);let r=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));r.length>0&&(n={...n,build:{...n.build,externalDependencies:r}});let i=finalizeNodeSourceState(t,r);markConfigRuntimeEntries(n,i.evaluation),assertInstrumentationLayoutConfig(n,i);let a=await this.compileResources(e,i),o=await this.compileChildren(e,i,r),s=createCompiledAgentNodeManifest({...a,config:n,remoteAgents:o.remoteAgents});return{descendants:o.nodes,manifest:s}}async compileChildren(e,t,n){let r=[],i=[],a=collectSelectedSourceIds(t.composed),o=t.projected.subagents.filter(e=>a.has(e.candidate.sourceId));for(let t of o){let a=t.source,o=createCompiledSubagentNodeId(e.nodeId,a.sourceId),s={extensionScope:t.extensionScope??e.extensionScope,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:a.manifest,nodeId:o,owner:t.owner,parentNodeId:e.nodeId},c=await this.createPhaseOneNodeSourceState(s,n),l=normalizeSubagentConfig(c.selectedConfig.definition,`Expected the subagent config export "${c.selectedConfig.source.exportName??`default`}" from "${a.entryPath}" to match the public eve shape.`);if(l.kind===`remote`){let n=workspaceSubagentName(c.selectedConfig.definition),r=n===void 0?l:await resolveWorkspaceSubagentDefinition({definition:l,name:n,registries:this.registries,source:a});assertRemoteAgentDefinitionHasNoLocalPackageEntries(a);let s=c.selectedConfig.source.sourceId;c.evaluation.setBindings({[s]:c.selectedConfig.binding}),c.evaluation.requireRuntimeEntry(s);let u=c.evaluation.finalizeBindings()[s];if(u===void 0)throw Error(`Remote subagent "${o}" has no finalized config binding.`);i.push(createCompiledRemoteAgent({binding:u,definition:r,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,source:a,sourceRef:c.selectedConfig.source}));continue}let u,d;l.kind===`local`?(u=await compileAgentConfig(a.manifest,this.context,{binding:c.selectedConfig.binding,definition:l.definition,source:c.selectedConfig.source}),assertRootOnlyConfig(u,!1,a.manifest.agentId),applyDefaultToolPolicy(c,u)):d=l.build?.externalDependencies;let f=mergeExternalDependencies(n,u?.build?.externalDependencies,d,a.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));u!==void 0&&f.length>0&&(u={...u,build:{...u.build,externalDependencies:f}});let p=finalizeNodeSourceState(c,f);u===void 0?p.evaluation.requireRuntimeEntry(c.selectedConfig.source.sourceId):markConfigRuntimeEntries(u,p.evaluation),u!==void 0&&assertInstrumentationLayoutConfig(u,p);let m=await this.compileResources(s,p),h=await this.compileChildren(s,p,f),g={backing:t.candidate.backing,entryPath:a.entryPath,logicalPath:a.logicalPath,name:a.subagentId,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,rootPath:a.rootPath,sourceId:a.sourceId,sourceKind:`module`},_;_=u===void 0?{...g,agent:createCompiledAgentResources({...m,remoteAgents:h.remoteAgents}),configResolver:{build:l.kind===`dynamic`?l.build:void 0,eventNames:l.kind===`dynamic`?l.eventNames:[],exportName:c.selectedConfig.source.exportName,logicalPath:c.selectedConfig.source.logicalPath,sourceId:c.selectedConfig.source.sourceId,sourceKind:`module`}}:{...g,agent:createCompiledAgentNodeManifest({...m,config:u,remoteAgents:h.remoteAgents}),description:expectSubagentDescription(u,a)},r.push(_,...h.nodes)}return{nodes:r,remoteAgents:i}}composeNodeSources(e,t){let n=projectAgentSources({externalDependencies:t,extensionScope:e.extensionScope,layer:e.layer,manifest:e.manifest,nodeId:e.nodeId,owner:e.owner}),r=[],i=[];for(let t of this.registries){let n=t===frameworkAgentSourceRegistry;for(let a of t.registrations){if(a.applyTo===`root`&&!e.isRoot)continue;!n&&a.applyTo===`all-local-nodes`&&assertApplicationOverlayCanApplyToAllNodes(a.source.modules.map(e=>e.logicalPath));let t=createProgrammaticModuleCandidates({layer:n?`framework-default`:`application`,nodeId:e.nodeId,owner:n?{feature:a.source.id,kind:`framework`}:{kind:`application`},registration:a});(n?r:i).push(...t)}}let a=[...n.candidates,...i].filter(e=>e.backing.kind!==`resource`&&(canonicalSourceSlot(e.logicalPath)===`memory`||canonicalSourceSlot(e.logicalPath).startsWith(`memory/`))).map(e=>{let t=deriveMemorySlot(e.logicalPath);return instantiateProgrammaticTemplate({anchor:e,dependencies:{memory:e},logicalPath:`tools/${t}.ts`,owner:{feature:`memory`,kind:`framework`},parameters:{memoryExportName:e.exportName??`default`,memoryLogicalPath:e.logicalPath,slot:t},template:memoryWrapperTemplate})}),o=[...r,...n.candidates,...a,...i],s=composeAgentModuleCandidates(o),c=projectSelectedSources({candidates:s.selected.values(),resources:n.resources});return{composed:s,orderedCandidates:o,projected:n,sourcesBySourceId:new Map(c.map(e=>[e.candidate.sourceId,e])),subagentsBySourceId:new Map(n.subagents.map(e=>[e.candidate.sourceId,e]))}}async createPhaseOneNodeSourceState(e,t){let n=this.composeNodeSources(e,t),r=new NodeModuleEvaluationContext(this.registries);return r.setBindings(Object.fromEntries([...n.composed.selected.values()].filter(isAgentModuleCandidate).map(e=>[e.sourceId,createAgentModuleBinding(e)]))),{evaluation:r,graph:n,selectedConfig:await this.loadSelectedConfig(n,r)}}async loadSelectedConfig(e,t){let n=e.composed.selected.get(`agent`);if(n===void 0||!isAgentModuleCandidate(n))throw Error(`Every local agent node requires a selected module-backed agent.ts source.`);let r=createAgentModuleBinding(n),i=e.sourcesBySourceId.get(n.sourceId);if(i?.source.sourceKind!==`module`)throw Error(`Selected agent config source "${n.sourceId}" was not projected.`);let a=i.source;return{binding:r,candidate:n,definition:await loadModuleBackedDefinition({binding:r,kind:`agent config`,loadNamespace:t.loadNamespace,source:a}),source:a}}async compileResources(e,t){let n=[],r=[],i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[],m,h,g=collectSelectedSourceIds(t.composed),_=t.evaluation.loadNamespace;for(let v of t.orderedCandidates){if(!g.has(v.sourceId))continue;let y=t.sourcesBySourceId.get(v.sourceId);if(y===void 0)continue;let b=t.bindings[v.sourceId],x={binding:b,loadNamespace:_,owner:v.owner};switch(y.kind){case`config`:case`extension`:break;case`channel`:{let n=await compileChannelDefinition(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_});n.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:v,composed:t.composed}),delete t.bindings[v.sourceId],g.delete(v.sourceId)):p.push(...n.definitions);break}case`connection`:{let n=await compileConnectionDefinition(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_});n.kind===`connection`?c.push(n.definition):l.push(withExtensionNamespace(n.definition,v.owner)),t.evaluation.requireRuntimeEntry(v.sourceId);break}case`hook`:d.push(await compileHookEntry(y.source,{binding:b,loadNamespace:_})),t.evaluation.requireRuntimeEntry(v.sourceId);break;case`instructions`:{let n=await compileInstructionsEntry(e.manifest.agentRoot,y.source,x);n.kind===`instructions`?o.push(n.definition):(s.push(n.definition),t.evaluation.requireRuntimeEntry(v.sourceId));break}case`instrumentation`:h=y.source,t.evaluation.requireRuntimeEntry(v.sourceId);break;case`memory`:u.push(await compileMemoryDefinition(y.source,{binding:b,loadNamespace:_})),t.evaluation.requireRuntimeEntry(v.sourceId);break;case`sandbox`:m=await compileSandboxDefinition(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_}),m.inheritsParent||t.evaluation.requireRuntimeEntry(v.sourceId);break;case`schedule`:{let n=await compileScheduleDefinition(e.manifest.agentRoot,y.source,x);f.push(n),n.sourceKind===`module`&&n.hasRun&&t.evaluation.requireRuntimeEntry(v.sourceId);break}case`skill`:{let n=await compileSkillSource(e.manifest.agentRoot,y.source,x);n.kind===`skill`?i.push(n.definition):(a.push(withExtensionNamespace(n.definition,v.owner)),t.evaluation.requireRuntimeEntry(v.sourceId));break}case`tool`:{let i=await compileToolEntry(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_});assertFrameworkToolPolicy(v,i),i.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:v,composed:t.composed}),delete t.bindings[v.sourceId],g.delete(v.sourceId)):i.kind===`tool`?(n.push(i.definition),i.definition.hasExecute&&t.evaluation.requireRuntimeEntry(v.sourceId)):i.kind===`dynamic-tool`?(r.push(withExtensionNamespace(i.definition,v.owner)),t.evaluation.requireRuntimeEntry(v.sourceId)):(assertNonExtensionSpecialTool(v,`Web search`),n.push(i.definition));break}}}if(m===void 0)throw Error(`Agent node "${e.nodeId}" has no selected sandbox source.`);assertUniqueBy(n,e=>e.name,`tool name`),assertUniqueBy(r,e=>e.slug,`dynamic tool slug`),assertUniqueBy(c,e=>e.connectionName,`connection name`),assertUniqueBy(l,e=>e.slug,`dynamic connection slug`),assertUniqueBy(i,e=>e.name,`skill name`);let v=createCompiledChannelRoutePlan({bindings:t.bindings,channels:p,diagnostics:this.diagnostics,nodeId:e.nodeId,sources:Object.fromEntries(t.orderedCandidates.map(e=>[e.sourceId,describeAgentSourceCandidate(e)]))});for(let e of v.effective)t.evaluation.requireRuntimeEntry(e.sourceId);let y=compileExtensionMounts(e.manifest,t.composed);for(let e of y)t.evaluation.requireRuntimeEntry(e.mountSourceId);let b=t.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,bindings:b,channelRoutes:v,connections:c,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:l,dynamicInstructions:s,dynamicSkills:a,dynamicTools:r,extensionMounts:y,hooks:d,memories:u,instructions:o,instrumentation:h,sandbox:m,sandboxWorkspaces:e.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:f,skills:i,sourceComposition:t.composed.composition,tools:n})}};export{compileAgentManifest};
@@ -14,9 +14,6 @@ export type CompiledToolEntry = {
14
14
  } | {
15
15
  readonly kind: "disabled";
16
16
  readonly name: string;
17
- } | {
18
- readonly kind: "workflow-tool";
19
- readonly maxSubagents?: number;
20
17
  } | {
21
18
  readonly definition: CompiledToolDefinition;
22
19
  readonly kind: "web-search-tool";
@@ -1 +1 @@
1
- import{stripLogicalPathExtension}from"#discover/filesystem.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{normalizeToolDefinition}from"#internal/authored-definition/schema-backed.js";async function compileToolEntry(e,t,n){let r=normalizeToolDefinition(await loadModuleBackedDefinition({binding:n.binding,kind:`tool`,loadNamespace:n.loadNamespace,source:t}),`Expected the tool export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`),i=stripLogicalPathExtension(t.logicalPath).replace(/^tools\//,``).replaceAll(`/`,`-`);if(r.kind===`disabled`)return{kind:`disabled`,name:i};if(r.kind===`workflow-tool`)return{kind:`workflow-tool`,maxSubagents:r.maxSubagents};if(r.kind===`web-search-tool`){if(i!==`web_search`)throw Error(`The webSearch() definition must be exported from "tools/web_search.ts", not "${t.logicalPath}".`);return{definition:{behavior:{availability:[],handling:{kind:`provider-tool`,provider:r.provider}},description:`Search the web for real-time information. Use this to find up-to-date information about current events, recent developments, or topics that may have changed since the knowledge cutoff.`,exportName:t.exportName,hasExecute:!1,hasModelOutputProjection:!1,inputSchema:null,logicalPath:t.logicalPath,name:i,sourceId:t.sourceId,sourceKind:`module`,requiresApproval:!1},kind:`web-search-tool`}}if(r.kind===`dynamic-tool`)return{kind:`dynamic-tool`,definition:{eventNames:[...r.eventNames],exportName:t.exportName,logicalPath:t.logicalPath,rebindMissingCallbacks:r.rebindMissingCallbacks||void 0,slug:i,sourceId:t.sourceId,sourceKind:`module`}};let a=readWorkflowFunctionId(r.definition.execute),o={lifetime:r.definition.execution===`background`?`task`:`step`,suspend:a===void 0?`none`:`workflow`};return{kind:`tool`,definition:{behavior:a===void 0?r.definition.behavior===void 0?{availability:[],shape:o}:{...r.definition.behavior,shape:o}:{availability:[],handling:{kind:`workflow-tool`,workflowId:a},shape:o},description:r.definition.description,execution:r.definition.execution,exportName:t.exportName,hasExecute:r.definition.hasExecute,hasModelOutputProjection:r.definition.hasModelOutputProjection,inputSchema:r.definition.inputSchema??null,logicalPath:t.logicalPath,name:i,outputSchema:r.definition.outputSchema,requiresApproval:r.definition.hasApproval,sourceId:t.sourceId,sourceKind:`module`}}}export{compileToolEntry};
1
+ import{stripLogicalPathExtension}from"#discover/filesystem.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{normalizeToolDefinition}from"#internal/authored-definition/schema-backed.js";async function compileToolEntry(e,t,n){let r=normalizeToolDefinition(await loadModuleBackedDefinition({binding:n.binding,kind:`tool`,loadNamespace:n.loadNamespace,source:t}),`Expected the tool export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`),i=stripLogicalPathExtension(t.logicalPath).replace(/^tools\//,``).replaceAll(`/`,`-`);if(r.kind===`disabled`)return{kind:`disabled`,name:i};if(r.kind===`web-search-tool`){if(i!==`web_search`)throw Error(`The webSearch() definition must be exported from "tools/web_search.ts", not "${t.logicalPath}".`);return{definition:{behavior:{availability:[],handling:{kind:`provider-tool`,provider:r.provider}},description:`Search the web for real-time information. Use this to find up-to-date information about current events, recent developments, or topics that may have changed since the knowledge cutoff.`,exportName:t.exportName,hasExecute:!1,hasModelOutputProjection:!1,inputSchema:null,logicalPath:t.logicalPath,name:i,sourceId:t.sourceId,sourceKind:`module`,requiresApproval:!1},kind:`web-search-tool`}}if(r.kind===`dynamic-tool`)return{kind:`dynamic-tool`,definition:{eventNames:[...r.eventNames],exportName:t.exportName,logicalPath:t.logicalPath,rebindMissingCallbacks:r.rebindMissingCallbacks||void 0,slug:i,sourceId:t.sourceId,sourceKind:`module`}};let a=readWorkflowFunctionId(r.definition.execute),o={lifetime:r.definition.execution===`background`?`task`:`step`,suspend:a===void 0?`none`:`workflow`};return{kind:`tool`,definition:{behavior:a===void 0?r.definition.behavior===void 0?{availability:[],shape:o}:{...r.definition.behavior,shape:o}:{availability:[],handling:{kind:`workflow-tool`,workflowId:a},shape:o},description:r.definition.description,execution:r.definition.execution,exportName:t.exportName,hasExecute:r.definition.hasExecute,hasModelOutputProjection:r.definition.hasModelOutputProjection,inputSchema:r.definition.inputSchema??null,logicalPath:t.logicalPath,name:i,outputSchema:r.definition.outputSchema,requiresApproval:r.definition.hasApproval,sourceId:t.sourceId,sourceKind:`module`,workflowProgram:r.definition.workflowProgram}}}export{compileToolEntry};
@@ -1 +1 @@
1
- import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{collectRuntimeModuleBindingsForManifest}from"#compiler/module-map.js";import{HOST_HTTP_INVENTORY}from"#framework/host-inventory.js";function validateCompiledAgentManifest(e){let t=new Map([[ROOT_COMPILED_AGENT_NODE_ID,e]]);for(let n of e.subagents)t.has(n.nodeId)&&fail(`subagent node id "${n.nodeId}" is duplicated`),t.set(n.nodeId,n.agent),validateSubagentRecord(n);validateSubagentTree(e,t),validateCompiledAgentResources(e,{activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===ROOT_COMPILED_AGENT_NODE_ID).map(e=>e.sourceId)});for(let t of e.subagents)validateCompiledAgentResources(t.agent,{additionalModuleSources:t.configResolver===void 0?[]:[t.configResolver],activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===t.nodeId).map(e=>e.sourceId)});for(let[n,r]of t)validateUniqueIdentities([...r.tools.map(e=>({identity:e.name,kind:`tool`})),...r.remoteAgents.map(e=>({identity:e.name,kind:`remote agent`})),...e.subagents.filter(e=>e.parentNodeId===n).map(e=>({identity:e.name,kind:`local agent`}))],`tool and subagent public name`)}function validateSubagentTree(e,t){let n=new Map(e.subagents.map(e=>[e.nodeId,e.parentNodeId]));for(let r of e.subagents){t.has(r.parentNodeId)||fail(`subagent node "${r.nodeId}" has missing parent "${r.parentNodeId}"`);let e=new Set,i=r.nodeId;for(;i!==ROOT_COMPILED_AGENT_NODE_ID;){e.has(i)&&fail(`subagent graph contains a cycle at node "${i}"`),e.add(i);let t=n.get(i);t===void 0&&fail(`subagent node "${r.nodeId}" is not reachable from the root`),i=t}}}function validateCompiledModuleMap(e,t){let n=new Map([[`__root__`,new Set(collectRuntimeModuleBindingsForManifest(e).map(e=>e.sourceId))],...e.subagents.map(e=>[e.nodeId,new Set(collectRuntimeModuleBindingsForManifest(e.agent).map(e=>e.sourceId))])]),r=Object.keys(t.nodes);(r.length!==n.size||r.some(e=>!n.has(e)))&&fail(`compiled module map node set does not match the manifest`);for(let[e,r]of n){let n=t.nodes[e];n===void 0&&fail(`compiled module map node "${e}" is missing`);let i=Object.keys(n.modules);(i.length!==r.size||i.some(e=>!r.has(e)))&&fail(`compiled module map sources for node "${e}" do not match its bindings`)}}function validateCompiledAgentResources(e,t={}){validateUniqueIdentities(e.tools.map(e=>({identity:e.name,kind:`tool`})),`tool name`),validateUniqueIdentities(e.dynamicTools.map(e=>({identity:e.slug,kind:`dynamic tool`})),`dynamic tool slug`),validateUniqueIdentities(e.skills.map(e=>({identity:e.name,kind:`skill`})),`skill name`),validateUniqueIdentities(e.dynamicSkills.map(e=>({identity:e.slug,kind:`dynamic skill`})),`dynamic skill slug`),validateUniqueIdentities(e.instructions.map(e=>({identity:e.name,kind:`instructions`})),`instructions name`),validateUniqueIdentities(e.dynamicInstructions.map(e=>({identity:e.slug,kind:`dynamic instructions`})),`dynamic instructions slug`),validateUniqueIdentities(e.connections.map(e=>({identity:e.connectionName,kind:`connection`})),`connection name`),validateUniqueIdentities(e.dynamicConnections.map(e=>({identity:e.slug,kind:`dynamic connection`})),`dynamic connection slug`),validateUniqueIdentities(e.hooks.map(e=>({identity:e.slug,kind:`hook`})),`hook slug`),validateUniqueIdentities(e.memories.map(e=>({identity:e.slot,kind:`memory`})),`memory slot`),validateUniqueIdentities(e.schedules.map(e=>({identity:e.name,kind:`schedule`})),`schedule name`);let n=collectReferencedModuleSources(e);for(let e of t.additionalModuleSources??[])n.set(e.sourceId,{logicalPath:e.logicalPath});for(let[t,r]of n){let n=e.bindings[t];n===void 0&&fail(`module source "${t}" has no compiled binding`),validateBinding(t,r.logicalPath,n)}for(let t of Object.keys(e.bindings))n.has(t)||fail(`compiled binding "${t}" is not referenced by its node manifest`);validateProgrammaticBindingDependencies(e.bindings);let r=new Set([...n.keys(),...collectActiveResourceSourceIds(e),...e.remoteAgents.map(e=>e.sourceId),...t.activeResourceSourceIds??[]]),i=new Set;for(let n of e.sourceComposition.entries){if(n.kind===`disabled`){i.has(n.source.sourceId)&&fail(`disabled composition source "${n.source.sourceId}" is duplicated`),i.add(n.source.sourceId),e.bindings[n.source.sourceId]!==void 0&&fail(`disabled source "${n.source.sourceId}" retains an active binding`);continue}!r.has(n.winnerSourceId)&&!i.has(n.winnerSourceId)&&!e.sourceComposition.entries.some(e=>e.kind===`disabled`&&e.source.sourceId===n.winnerSourceId)&&t.allowUnknownResourceWinners!==!0&&fail(`shadowed source "${n.source.sourceId}" has dangling winner "${n.winnerSourceId}"`)}validateChannelRoutePlan(e);for(let t of e.remoteAgents)validateBinding(t.sourceId,t.logicalPath,t.binding),t.parentNodeId.length===0&&fail(`remote agent "${t.sourceId}" has no parent`)}function validateSubagentRecord(e){if((e.backing.kind!==`resource`||e.backing.sourcePath.length===0)&&fail(`subagent "${e.nodeId}" has no physical resource backing`),e.parentNodeId.length===0&&fail(`subagent "${e.nodeId}" has no parent`),e.configResolver!==void 0){let t=e.agent.bindings[e.configResolver.sourceId];t===void 0&&fail(`dynamic subagent "${e.nodeId}" config resolver has no binding`),validateBinding(e.configResolver.sourceId,e.configResolver.logicalPath,t)}}function validateBinding(e,t,n){!n.usage.compile&&!n.usage.runtimeEntry&&fail(`compiled binding "${e}" has no compile or runtime usage`),n.logicalPath!==t&&fail(`compiled binding "${e}" targets "${n.logicalPath}", not "${t}"`),n.owner.kind===`extension`&&n.backing.kind===`filesystem`&&n.backing.extensionScope===void 0&&fail(`extension-owned filesystem binding "${e}" has no extension scope`)}function validateProgrammaticBindingDependencies(e){let t=new Set,n=new Set,visit=r=>{if(n.has(r))return;t.has(r)&&fail(`programmatic binding dependency cycle includes "${r}"`);let i=e[r];if(i===void 0&&fail(`programmatic binding dependency "${r}" is missing`),t.add(r),i.backing.kind===`programmatic`)for(let[t,n]of Object.entries(i.backing.dependencies??{}))t.trim().length===0&&fail(`programmatic binding "${r}" has an empty dependency alias`),e[n]===void 0&&fail(`programmatic binding "${r}" depends on missing binding "${n}"`),i.usage.runtimeEntry&&e[n]?.usage.runtimeEntry!==!0&&fail(`runtime binding "${r}" depends on non-runtime binding "${n}"`),visit(n);t.delete(r),n.add(r)};for(let t of Object.keys(e))visit(t)}function collectReferencedModuleSources(e){let t=new Map,add=e=>{let n=t.get(e.sourceId);n!==void 0&&n.logicalPath!==e.logicalPath&&fail(`module source "${e.sourceId}" is referenced with two logical paths`),t.set(e.sourceId,{logicalPath:e.logicalPath})};`config`in e&&(add(e.config.source),e.config.model?.source!==void 0&&add(e.config.model.source),e.config.dynamicModel!==void 0&&add(e.config.dynamicModel));for(let t of e.channelRoutes.effective)add(t);for(let t of e.channelRoutes.shadowed)t.source.backing.kind!==`resource`&&add(t.source);for(let t of e.connections)add(t);for(let t of e.dynamicConnections)add(t);for(let t of e.tools)add(t);for(let t of e.dynamicInstructions)add(t);for(let t of e.dynamicSkills)add(t);for(let t of e.dynamicTools)add(t);for(let t of e.hooks)add(t);for(let t of e.memories)add(t);for(let t of e.instructions)t.sourceKind===`module`&&add(t);e.instrumentation!==void 0&&add(e.instrumentation),e.workflowTool!==void 0&&add(e.workflowTool);for(let t of e.skills)t.sourceKind===`module`&&add(t);for(let t of e.schedules)t.sourceKind===`module`&&add(t);add(e.sandbox);for(let t of e.extensionMounts)add({logicalPath:t.mountLogicalPath,sourceId:t.mountSourceId});return t}function collectActiveResourceSourceIds(e){return[...e.instructions.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.skills.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.schedules.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.sandboxWorkspaces.map(e=>e.sourceId)]}function validateChannelRoutePlan(e){let t=new Set,n=new Set;for(let r of e.channelRoutes.effective){let i=routeIdentity(r);t.has(i)&&fail(`effective channel route "${i}" is duplicated`),t.add(i),n.add(r.sourceId),e.bindings[r.sourceId]===void 0&&fail(`effective channel route source "${r.sourceId}" has no binding`),HOST_HTTP_INVENTORY.find(e=>methodsOverlap(r.method,e.method)&&patternsOverlap(r.urlPath,e.path))!==void 0&&fail(`effective route ${r.method} ${r.urlPath} overlaps reserved host route`)}for(let t of e.channelRoutes.shadowed)n.has(t.winnerSourceId)||fail(`shadowed channel route has dangling winner "${t.winnerSourceId}"`);let r=new Set;for(let t of e.channelRoutes.preflight){let n=normalizePattern(t.urlPath);r.has(n)&&fail(`generated preflight "${n}" is duplicated`),r.add(n),t.sourceIds.length===0&&fail(`generated preflight "${n}" has no causes`);for(let r of t.sourceIds)e.channelRoutes.effective.find(e=>e.sourceId===r&&e.cors!==void 0&&e.method!==`WEBSOCKET`&&patternsOverlap(e.urlPath,t.urlPath))===void 0&&fail(`generated preflight "${n}" has invalid cause "${r}"`)}}function routeIdentity(e){return`${e.method} ${normalizePattern(e.urlPath)}`}function normalizePattern(e){return splitPath(e).map(e=>isParameter(e)?`:`:e).join(`/`)}function patternsOverlap(e,t){let n=splitPath(e),r=splitPath(t);return n.length===r.length&&n.every((e,t)=>e===r[t]||isParameter(e)||isParameter(r[t]))}function splitPath(e){return e.replace(/^\/+|\/+$/g,``).split(`/`)}function isParameter(e){return e.startsWith(`:`)||/^\[[^\]]+\]$/.test(e)}function methodsOverlap(e,t){return e===`ALL`||t===`ALL`||e===t}function validateUniqueIdentities(e,t){let n=new Map;for(let r of e){let e=n.get(r.identity);e!==void 0&&fail(`${t} "${r.identity}" is shared by ${e} and ${r.kind}`),n.set(r.identity,r.kind)}}function fail(e){throw Error(`Invalid compiled eve artifact: ${e}.`)}export{validateCompiledAgentManifest,validateCompiledAgentResources,validateCompiledModuleMap};
1
+ import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{collectRuntimeModuleBindingsForManifest}from"#compiler/module-map.js";import{HOST_HTTP_INVENTORY}from"#framework/host-inventory.js";function validateCompiledAgentManifest(e){let t=new Map([[ROOT_COMPILED_AGENT_NODE_ID,e]]);for(let n of e.subagents)t.has(n.nodeId)&&fail(`subagent node id "${n.nodeId}" is duplicated`),t.set(n.nodeId,n.agent),validateSubagentRecord(n);validateSubagentTree(e,t),validateCompiledAgentResources(e,{activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===ROOT_COMPILED_AGENT_NODE_ID).map(e=>e.sourceId)});for(let t of e.subagents)validateCompiledAgentResources(t.agent,{additionalModuleSources:t.configResolver===void 0?[]:[t.configResolver],activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===t.nodeId).map(e=>e.sourceId)});for(let[n,r]of t)validateUniqueIdentities([...r.tools.map(e=>({identity:e.name,kind:`tool`})),...r.remoteAgents.map(e=>({identity:e.name,kind:`remote agent`})),...e.subagents.filter(e=>e.parentNodeId===n).map(e=>({identity:e.name,kind:`local agent`}))],`tool and subagent public name`)}function validateSubagentTree(e,t){let n=new Map(e.subagents.map(e=>[e.nodeId,e.parentNodeId]));for(let r of e.subagents){t.has(r.parentNodeId)||fail(`subagent node "${r.nodeId}" has missing parent "${r.parentNodeId}"`);let e=new Set,i=r.nodeId;for(;i!==ROOT_COMPILED_AGENT_NODE_ID;){e.has(i)&&fail(`subagent graph contains a cycle at node "${i}"`),e.add(i);let t=n.get(i);t===void 0&&fail(`subagent node "${r.nodeId}" is not reachable from the root`),i=t}}}function validateCompiledModuleMap(e,t){let n=new Map([[`__root__`,new Set(collectRuntimeModuleBindingsForManifest(e).map(e=>e.sourceId))],...e.subagents.map(e=>[e.nodeId,new Set(collectRuntimeModuleBindingsForManifest(e.agent).map(e=>e.sourceId))])]),r=Object.keys(t.nodes);(r.length!==n.size||r.some(e=>!n.has(e)))&&fail(`compiled module map node set does not match the manifest`);for(let[e,r]of n){let n=t.nodes[e];n===void 0&&fail(`compiled module map node "${e}" is missing`);let i=Object.keys(n.modules);(i.length!==r.size||i.some(e=>!r.has(e)))&&fail(`compiled module map sources for node "${e}" do not match its bindings`)}}function validateCompiledAgentResources(e,t={}){validateUniqueIdentities(e.tools.map(e=>({identity:e.name,kind:`tool`})),`tool name`),validateUniqueIdentities(e.dynamicTools.map(e=>({identity:e.slug,kind:`dynamic tool`})),`dynamic tool slug`),validateUniqueIdentities(e.skills.map(e=>({identity:e.name,kind:`skill`})),`skill name`),validateUniqueIdentities(e.dynamicSkills.map(e=>({identity:e.slug,kind:`dynamic skill`})),`dynamic skill slug`),validateUniqueIdentities(e.instructions.map(e=>({identity:e.name,kind:`instructions`})),`instructions name`),validateUniqueIdentities(e.dynamicInstructions.map(e=>({identity:e.slug,kind:`dynamic instructions`})),`dynamic instructions slug`),validateUniqueIdentities(e.connections.map(e=>({identity:e.connectionName,kind:`connection`})),`connection name`),validateUniqueIdentities(e.dynamicConnections.map(e=>({identity:e.slug,kind:`dynamic connection`})),`dynamic connection slug`),validateUniqueIdentities(e.hooks.map(e=>({identity:e.slug,kind:`hook`})),`hook slug`),validateUniqueIdentities(e.memories.map(e=>({identity:e.slot,kind:`memory`})),`memory slot`),validateUniqueIdentities(e.schedules.map(e=>({identity:e.name,kind:`schedule`})),`schedule name`);let n=collectReferencedModuleSources(e);for(let e of t.additionalModuleSources??[])n.set(e.sourceId,{logicalPath:e.logicalPath});for(let[t,r]of n){let n=e.bindings[t];n===void 0&&fail(`module source "${t}" has no compiled binding`),validateBinding(t,r.logicalPath,n)}for(let t of Object.keys(e.bindings))n.has(t)||fail(`compiled binding "${t}" is not referenced by its node manifest`);validateProgrammaticBindingDependencies(e.bindings);let r=new Set([...n.keys(),...collectActiveResourceSourceIds(e),...e.remoteAgents.map(e=>e.sourceId),...t.activeResourceSourceIds??[]]),i=new Set;for(let n of e.sourceComposition.entries){if(n.kind===`disabled`){i.has(n.source.sourceId)&&fail(`disabled composition source "${n.source.sourceId}" is duplicated`),i.add(n.source.sourceId),e.bindings[n.source.sourceId]!==void 0&&fail(`disabled source "${n.source.sourceId}" retains an active binding`);continue}!r.has(n.winnerSourceId)&&!i.has(n.winnerSourceId)&&!e.sourceComposition.entries.some(e=>e.kind===`disabled`&&e.source.sourceId===n.winnerSourceId)&&t.allowUnknownResourceWinners!==!0&&fail(`shadowed source "${n.source.sourceId}" has dangling winner "${n.winnerSourceId}"`)}validateChannelRoutePlan(e);for(let t of e.remoteAgents)validateBinding(t.sourceId,t.logicalPath,t.binding),t.parentNodeId.length===0&&fail(`remote agent "${t.sourceId}" has no parent`)}function validateSubagentRecord(e){if((e.backing.kind!==`resource`||e.backing.sourcePath.length===0)&&fail(`subagent "${e.nodeId}" has no physical resource backing`),e.parentNodeId.length===0&&fail(`subagent "${e.nodeId}" has no parent`),e.configResolver!==void 0){let t=e.agent.bindings[e.configResolver.sourceId];t===void 0&&fail(`dynamic subagent "${e.nodeId}" config resolver has no binding`),validateBinding(e.configResolver.sourceId,e.configResolver.logicalPath,t)}}function validateBinding(e,t,n){!n.usage.compile&&!n.usage.runtimeEntry&&fail(`compiled binding "${e}" has no compile or runtime usage`),n.logicalPath!==t&&fail(`compiled binding "${e}" targets "${n.logicalPath}", not "${t}"`),n.owner.kind===`extension`&&n.backing.kind===`filesystem`&&n.backing.extensionScope===void 0&&fail(`extension-owned filesystem binding "${e}" has no extension scope`)}function validateProgrammaticBindingDependencies(e){let t=new Set,n=new Set,visit=r=>{if(n.has(r))return;t.has(r)&&fail(`programmatic binding dependency cycle includes "${r}"`);let i=e[r];if(i===void 0&&fail(`programmatic binding dependency "${r}" is missing`),t.add(r),i.backing.kind===`programmatic`)for(let[t,n]of Object.entries(i.backing.dependencies??{}))t.trim().length===0&&fail(`programmatic binding "${r}" has an empty dependency alias`),e[n]===void 0&&fail(`programmatic binding "${r}" depends on missing binding "${n}"`),i.usage.runtimeEntry&&e[n]?.usage.runtimeEntry!==!0&&fail(`runtime binding "${r}" depends on non-runtime binding "${n}"`),visit(n);t.delete(r),n.add(r)};for(let t of Object.keys(e))visit(t)}function collectReferencedModuleSources(e){let t=new Map,add=e=>{let n=t.get(e.sourceId);n!==void 0&&n.logicalPath!==e.logicalPath&&fail(`module source "${e.sourceId}" is referenced with two logical paths`),t.set(e.sourceId,{logicalPath:e.logicalPath})};`config`in e&&(add(e.config.source),e.config.model?.source!==void 0&&add(e.config.model.source),e.config.dynamicModel!==void 0&&add(e.config.dynamicModel));for(let t of e.channelRoutes.effective)add(t);for(let t of e.channelRoutes.shadowed)t.source.backing.kind!==`resource`&&add(t.source);for(let t of e.connections)add(t);for(let t of e.dynamicConnections)add(t);for(let t of e.tools)add(t);for(let t of e.dynamicInstructions)add(t);for(let t of e.dynamicSkills)add(t);for(let t of e.dynamicTools)add(t);for(let t of e.hooks)add(t);for(let t of e.memories)add(t);for(let t of e.instructions)t.sourceKind===`module`&&add(t);e.instrumentation!==void 0&&add(e.instrumentation);for(let t of e.skills)t.sourceKind===`module`&&add(t);for(let t of e.schedules)t.sourceKind===`module`&&add(t);add(e.sandbox);for(let t of e.extensionMounts)add({logicalPath:t.mountLogicalPath,sourceId:t.mountSourceId});return t}function collectActiveResourceSourceIds(e){return[...e.instructions.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.skills.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.schedules.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.sandboxWorkspaces.map(e=>e.sourceId)]}function validateChannelRoutePlan(e){let t=new Set,n=new Set;for(let r of e.channelRoutes.effective){let i=routeIdentity(r);t.has(i)&&fail(`effective channel route "${i}" is duplicated`),t.add(i),n.add(r.sourceId),e.bindings[r.sourceId]===void 0&&fail(`effective channel route source "${r.sourceId}" has no binding`),HOST_HTTP_INVENTORY.find(e=>methodsOverlap(r.method,e.method)&&patternsOverlap(r.urlPath,e.path))!==void 0&&fail(`effective route ${r.method} ${r.urlPath} overlaps reserved host route`)}for(let t of e.channelRoutes.shadowed)n.has(t.winnerSourceId)||fail(`shadowed channel route has dangling winner "${t.winnerSourceId}"`);let r=new Set;for(let t of e.channelRoutes.preflight){let n=normalizePattern(t.urlPath);r.has(n)&&fail(`generated preflight "${n}" is duplicated`),r.add(n),t.sourceIds.length===0&&fail(`generated preflight "${n}" has no causes`);for(let r of t.sourceIds)e.channelRoutes.effective.find(e=>e.sourceId===r&&e.cors!==void 0&&e.method!==`WEBSOCKET`&&patternsOverlap(e.urlPath,t.urlPath))===void 0&&fail(`generated preflight "${n}" has invalid cause "${r}"`)}}function routeIdentity(e){return`${e.method} ${normalizePattern(e.urlPath)}`}function normalizePattern(e){return splitPath(e).map(e=>isParameter(e)?`:`:e).join(`/`)}function patternsOverlap(e,t){let n=splitPath(e),r=splitPath(t);return n.length===r.length&&n.every((e,t)=>e===r[t]||isParameter(e)||isParameter(r[t]))}function splitPath(e){return e.replace(/^\/+|\/+$/g,``).split(`/`)}function isParameter(e){return e.startsWith(`:`)||/^\[[^\]]+\]$/.test(e)}function methodsOverlap(e,t){return e===`ALL`||t===`ALL`||e===t}function validateUniqueIdentities(e,t){let n=new Map;for(let r of e){let e=n.get(r.identity);e!==void 0&&fail(`${t} "${r.identity}" is shared by ${e} and ${r.kind}`),n.set(r.identity,r.kind)}}function fail(e){throw Error(`Invalid compiled eve artifact: ${e}.`)}export{validateCompiledAgentManifest,validateCompiledAgentResources,validateCompiledModuleMap};
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{DynamicSkillManifestKey,SandboxKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{ALLOWED_DYNAMIC_SKILL_EVENTS}from"#dynamic/definition.js";import{normalizeSkillPackage,removeSkillPackageFromSandbox,writeSkillPackageToSandbox}from"#shared/skill-package.js";import{ContextKey}from"#context/key.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{isBrandedSkillEntry}from"#shared/skill-definition.js";import{formatAvailableSkillsSection}from"#execution/skills/instructions.js";import{resolveSandboxSkillRoot}from"#shared/skill-paths.js";const log=createLogger(`dynamic-skills`);function qualifyDynamicSkillNames(e,t,n){let r=Object.keys(n),i=[];if(r.length===0)return i;if(t)return i.push({name:e.slug,entryKey:r[0],entry:n[r[0]]}),i;let a=e.extensionNamespace===void 0?``:`${e.extensionNamespace}__`;for(let e of r)i.push({name:`${a}${e}`,entryKey:e,entry:n[e]});return i}async function formatDynamicSkillAnnouncement(e){let t=await e.ctx.require(SandboxKey).get(),n=t===null?void 0:await resolveSandboxSkillRoot({sandbox:t});return formatAvailableSkillsSection(Object.values(e.manifest).flat(),{skillRoot:n})??``}const PendingSkillAnnouncementKey=new ContextKey(`eve.pendingSkillAnnouncement`);async function dispatchDynamicSkillEvent(e){let{ctx:t,resolvers:n,event:r,messages:i}=e;if(t.get(PendingSkillAnnouncementKey)===void 0){let e=t.get(DynamicSkillManifestKey);e!==void 0&&Object.keys(e).length>0&&t.setVirtualContext(PendingSkillAnnouncementKey,await formatDynamicSkillAnnouncement({ctx:t,manifest:e}))}if(!ALLOWED_DYNAMIC_SKILL_EVENTS.has(r.type))return;let a=n.filter(e=>e.eventNames.includes(r.type));if(a.length===0)return;let o=buildResolveContext(t,i),s=t.get(DynamicSkillManifestKey)??{},c=[],l=await Promise.allSettled(a.map(async e=>{let t=e.events[r.type];if(t===void 0)return null;let n=await t(r,o);if(n==null)return{resolver:e,named:[]};let i,a;return isBrandedSkillEntry(n)?(i={_single:n},a=!0):(i=n,a=!1),{resolver:e,named:qualifyDynamicSkillNames(e,a,i)}}));for(let e of l){if(e.status===`rejected`){log.error(`Dynamic skill resolver (${r.type}) threw — skipping.`,{error:toErrorMessage(e.reason)});continue}e.value!==null&&c.push({resolver:e.value.resolver,skills:e.value.named.map(({name:e,entry:t})=>normalizeSkillPackage({...t,name:e}))})}if(c.length===0)return;let u={...s};for(let{resolver:e,skills:t}of c)t.length===0?delete u[e.slug]:u[e.slug]=t.map(e=>({description:e.description,name:e.name}));let d=new Map;for(let[e,t]of Object.entries(u))for(let{name:n}of t){let t=d.get(n);if(t!==void 0)throw Error(`Dynamic skill "${n}" from resolver "${e}" collides with dynamic resolver "${t}". Namespace the map key manually, e.g. "${e}__${n}".`);d.set(n,e)}let f=await t.require(SandboxKey).get();if(f!==null){let e=new Set(Object.values(u).flat().map(e=>e.name)),t=new Set;for(let{resolver:n}of c)for(let r of s[n.slug]??[])e.has(r.name)||t.add(r.name);for(let e of t)await removeSkillPackageFromSandbox({name:e,sandbox:f});for(let{skills:e}of c)for(let t of e)await writeSkillPackageToSandbox({sandbox:f,skill:t})}t.set(DynamicSkillManifestKey,u),t.setVirtualContext(PendingSkillAnnouncementKey,await formatDynamicSkillAnnouncement({ctx:t,manifest:u}))}export{PendingSkillAnnouncementKey,dispatchDynamicSkillEvent};
1
+ import{createLogger}from"#internal/logging.js";import{DynamicSkillManifestKey,SandboxKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{ALLOWED_DYNAMIC_SKILL_EVENTS}from"#dynamic/definition.js";import{normalizeSkillPackage,removeSkillPackageFromSandbox,writeSkillPackageToSandbox}from"#shared/skill-package.js";import{ContextKey}from"#context/key.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{isBrandedSkillEntry}from"#shared/skill-definition.js";import{formatAvailableSkillsSection}from"#execution/skills/instructions.js";import{resolveSandboxSkillRoot}from"#shared/skill-paths.js";const log=createLogger(`dynamic-skills`);function qualifyDynamicSkillNames(e,t,n){let r=Object.keys(n),i=[];if(r.length===0)return i;if(t)return i.push({name:e.slug,entryKey:r[0],entry:n[r[0]]}),i;let a=e.extensionNamespace===void 0?``:`${e.extensionNamespace}__`;for(let e of r)i.push({name:`${a}${e}`,entryKey:e,entry:n[e]});return i}async function formatDynamicSkillAnnouncement(e){let t=await e.ctx.require(SandboxKey).get(),n=t===null?void 0:await resolveSandboxSkillRoot({sandbox:t});return formatAvailableSkillsSection(Object.values(e.manifest).flat(),{skillRoot:n})??`Available skills: none`}const PendingSkillAnnouncementKey=new ContextKey(`eve.pendingSkillAnnouncement`);async function dispatchDynamicSkillEvent(e){let{ctx:t,resolvers:n,event:r,messages:i}=e;if(t.get(PendingSkillAnnouncementKey)===void 0){let e=t.get(DynamicSkillManifestKey);e!==void 0&&Object.keys(e).length>0&&t.setVirtualContext(PendingSkillAnnouncementKey,await formatDynamicSkillAnnouncement({ctx:t,manifest:e}))}if(!ALLOWED_DYNAMIC_SKILL_EVENTS.has(r.type))return;let a=n.filter(e=>e.eventNames.includes(r.type));if(a.length===0)return;let o=buildResolveContext(t,i),s=t.get(DynamicSkillManifestKey)??{},c=[],l=await Promise.allSettled(a.map(async e=>{let t=e.events[r.type];if(t===void 0)return null;let n=await t(r,o);if(n==null)return{resolver:e,named:[]};let i,a;return isBrandedSkillEntry(n)?(i={_single:n},a=!0):(i=n,a=!1),{resolver:e,named:qualifyDynamicSkillNames(e,a,i)}}));for(let e of l){if(e.status===`rejected`){log.error(`Dynamic skill resolver (${r.type}) threw — skipping.`,{error:toErrorMessage(e.reason)});continue}e.value!==null&&c.push({resolver:e.value.resolver,skills:e.value.named.map(({name:e,entry:t})=>normalizeSkillPackage({...t,name:e}))})}if(c.length===0)return;let u={...s};for(let{resolver:e,skills:t}of c)t.length===0?delete u[e.slug]:u[e.slug]=t.map(e=>({description:e.description,name:e.name}));let d=new Map;for(let[e,t]of Object.entries(u))for(let{name:n}of t){let t=d.get(n);if(t!==void 0)throw Error(`Dynamic skill "${n}" from resolver "${e}" collides with dynamic resolver "${t}". Namespace the map key manually, e.g. "${e}__${n}".`);d.set(n,e)}let f=await t.require(SandboxKey).get();if(f!==null){let e=new Set(Object.values(u).flat().map(e=>e.name)),t=new Set;for(let{resolver:n}of c)for(let r of s[n.slug]??[])e.has(r.name)||t.add(r.name);for(let e of t)await removeSkillPackageFromSandbox({name:e,sandbox:f});for(let{skills:e}of c)for(let t of e)await writeSkillPackageToSandbox({sandbox:f,skill:t})}t.set(DynamicSkillManifestKey,u),t.setVirtualContext(PendingSkillAnnouncementKey,await formatDynamicSkillAnnouncement({ctx:t,manifest:u}))}export{PendingSkillAnnouncementKey,dispatchDynamicSkillEvent};
@@ -6,7 +6,7 @@
6
6
  import type { LanguageModel, ModelMessage, SystemModelMessage } from "ai";
7
7
  import type { ActivityObserverConfig, ChannelDeliveryMetadata, ChannelInstrumentationProjection, SessionAuthContext, SessionCallback, SessionCapabilities, SessionParent, SessionTraceContext, SessionTurn } from "#channel/types.js";
8
8
  import { ContextKey } from "#context/key.js";
9
- import { type SessionInboxAddress } from "#execution/wire/session-inbox-contract.js";
9
+ import { type SessionInboxAddress } from "#execution/session-inbox/address.js";
10
10
  import type { InstrumentationChannelDeliveryRef } from "#instrumentation/lifecycle.js";
11
11
  import type { UserModelMessage } from "#harness/messages.js";
12
12
  import type { HandleEventFn } from "#harness/types.js";
@@ -49,6 +49,8 @@ export declare const SessionIdKey: ContextKey<string>;
49
49
  export declare const ConversationIdKey: ContextKey<string>;
50
50
  export declare const SessionInboxKey: ContextKey<SessionInboxAddress>;
51
51
  export declare const ContinuationTokenKey: ContextKey<string>;
52
+ /** Every channel continuation address requested for this session, in claim order. */
53
+ export declare const ContinuationHookTokensKey: ContextKey<readonly string[]>;
52
54
  export declare const ChannelRequestIdKey: ContextKey<string>;
53
55
  /** Parent-verified local client provenance, valid only for the current dev host secret. */
54
56
  export interface LocalDevRequestProvenance {
@@ -59,6 +61,8 @@ export interface LocalDevRequestProvenance {
59
61
  export declare const LocalDevRequestKey: ContextKey<LocalDevRequestProvenance>;
60
62
  /** Authored schedule whose dispatch created this session. */
61
63
  export declare const ScheduleIdKey: ContextKey<string>;
64
+ /** Display title derived from the session's initial input. */
65
+ export declare const SessionTitleKey: ContextKey<string>;
62
66
  export declare const ChannelDeliveryKey: ContextKey<ChannelDeliveryMetadata>;
63
67
  /** Accepted messages whose response owns the current turn's durable stream events. */
64
68
  export declare const TurnDeliveryIdsKey: ContextKey<readonly string[]>;
@@ -1 +1 @@
1
- import{ContextKey}from"#context/key.js";import{SESSION_INBOX_CONTEXT_KEY}from"#execution/wire/session-inbox-contract.js";import{SESSION_CALLBACK_CONTEXT_KEY_NAME}from"#context/key-names.js";const AuthKey=new ContextKey(`eve.auth`),InitiatorAuthKey=new ContextKey(`eve.initiatorAuth`),SessionIdKey=new ContextKey(`eve.sessionId`),ConversationIdKey=new ContextKey(`eve.conversationId`),SessionInboxKey=new ContextKey(SESSION_INBOX_CONTEXT_KEY),ContinuationTokenKey=new ContextKey(`eve.continuationToken`),ChannelRequestIdKey=new ContextKey(`eve.channelRequestId`),LocalDevRequestKey=new ContextKey(`eve.internal.localDevRequest`),ScheduleIdKey=new ContextKey(`eve.scheduleId`),ChannelDeliveryKey=new ContextKey(`eve.channelDelivery`),TurnDeliveryIdsKey=new ContextKey(`eve.turnDeliveryIds`),TurnTaskDeliveryKey=new ContextKey(`eve.turnTaskDelivery`),HistoryStateKey=new ContextKey(`eve.historyState`),ActiveChannelDeliveriesKey=new ContextKey(`eve.activeChannelDeliveries`),ChannelInstrumentationKey=new ContextKey(`eve.channelInstrumentation`),ModeKey=new ContextKey(`eve.mode`),ParentSessionKey=new ContextKey(`eve.parentSession`),ParentTraceContextKey=new ContextKey(`eve.parentTraceContext`),SessionTraceSeedKey=new ContextKey(`eve.sessionTraceSeed`),OtelTraceEnabledKey=new ContextKey(`eve.otelTraceEnabled`),CapabilitiesKey=new ContextKey(`eve.capabilities`),ActivityObserverKey=new ContextKey(`eve.activityObserver`),ActivityRootTurnIdKey=new ContextKey(`eve.activityRootTurnId`),ActivityPendingBlockersKey=new ContextKey(`eve.activityPendingBlockers`),SessionCallbackKey=new ContextKey(SESSION_CALLBACK_CONTEXT_KEY_NAME),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),HandleEventKey=new ContextKey(`eve.internal.handleEvent`),StaticModelReferenceKey=new ContextKey(`eve.staticModelReference`),SessionDynamicModelReferenceKey=new ContextKey(`eve.sessionDynamicModelReference`),TurnDynamicModelReferenceKey=new ContextKey(`eve.turnDynamicModelReference`),RuntimeModelMetadataCacheKey=new ContextKey(`eve.runtimeModelMetadataCache`),LiveStepDynamicModelSelectionKey=new ContextKey(`eve.liveStepDynamicModelSelection`),SessionDynamicToolMetadataKey=new ContextKey(`eve.sessionDynamicToolMetadata`),SessionDynamicToolRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicToolRuntimeRevision`),TurnDynamicToolMetadataKey=new ContextKey(`eve.turnDynamicToolMetadata`),TurnMemoryLocksKey=new ContextKey(`eve.memory.turnLocks`),PreparedMemoryPreambleKey=new ContextKey(`eve.memory.preparedPreamble`),PendingMemoryCommitKey=new ContextKey(`eve.memory.pendingCommit`),PreparedMemoryCompactionKey=new ContextKey(`eve.memory.preparedCompaction`),StepDynamicToolMetadataKey=new ContextKey(`eve.stepDynamicToolMetadata`),SessionDynamicSubagentSelectionsKey=new ContextKey(`eve.sessionDynamicSubagentSelections`),TurnDynamicSubagentSelectionsKey=new ContextKey(`eve.turnDynamicSubagentSelections`),SessionDynamicSubagentRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicSubagentRuntimeRevision`),DynamicSubagentAgentConfigKey=new ContextKey(`eve.dynamicSubagentAgentConfig`),DynamicSkillManifestKey=new ContextKey(`eve.dynamicSkillManifest`),SessionDynamicInstructionsKey=new ContextKey(`eve.sessionDynamicInstructions`),TurnDynamicInstructionsKey=new ContextKey(`eve.turnDynamicInstructions`),DynamicInstructionResolveMessagesKey=new ContextKey(`eve.dynamicInstructionResolveMessages`),PendingDynamicInstructionUserMessagesKey=new ContextKey(`eve.pendingDynamicInstructionUserMessages`);export{ActiveChannelDeliveriesKey,ActivityObserverKey,ActivityPendingBlockersKey,ActivityRootTurnIdKey,AuthKey,CapabilitiesKey,ChannelDeliveryKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationTokenKey,ConversationIdKey,DynamicInstructionResolveMessagesKey,DynamicSkillManifestKey,DynamicSubagentAgentConfigKey,HandleEventKey,HistoryStateKey,InitiatorAuthKey,LiveStepDynamicModelSelectionKey,LocalDevRequestKey,ModeKey,OtelTraceEnabledKey,ParentSessionKey,ParentTraceContextKey,PendingDynamicInstructionUserMessagesKey,PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,RuntimeModelMetadataCacheKey,SandboxKey,ScheduleIdKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicModelReferenceKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,SessionInboxKey,SessionKey,SessionTraceSeedKey,StaticModelReferenceKey,StepDynamicToolMetadataKey,TurnDeliveryIdsKey,TurnDynamicInstructionsKey,TurnDynamicModelReferenceKey,TurnDynamicSubagentSelectionsKey,TurnDynamicToolMetadataKey,TurnMemoryLocksKey,TurnTaskDeliveryKey};
1
+ import{SESSION_INBOX_CONTEXT_KEY}from"#execution/session-inbox/address.js";import{ContextKey}from"#context/key.js";import{SESSION_CALLBACK_CONTEXT_KEY_NAME}from"#context/key-names.js";const AuthKey=new ContextKey(`eve.auth`),InitiatorAuthKey=new ContextKey(`eve.initiatorAuth`),SessionIdKey=new ContextKey(`eve.sessionId`),ConversationIdKey=new ContextKey(`eve.conversationId`),SessionInboxKey=new ContextKey(SESSION_INBOX_CONTEXT_KEY),ContinuationTokenKey=new ContextKey(`eve.continuationToken`),ContinuationHookTokensKey=new ContextKey(`eve.continuationHookTokens`),ChannelRequestIdKey=new ContextKey(`eve.channelRequestId`),LocalDevRequestKey=new ContextKey(`eve.internal.localDevRequest`),ScheduleIdKey=new ContextKey(`eve.scheduleId`),SessionTitleKey=new ContextKey(`eve.sessionTitle`),ChannelDeliveryKey=new ContextKey(`eve.channelDelivery`),TurnDeliveryIdsKey=new ContextKey(`eve.turnDeliveryIds`),TurnTaskDeliveryKey=new ContextKey(`eve.turnTaskDelivery`),HistoryStateKey=new ContextKey(`eve.historyState`),ActiveChannelDeliveriesKey=new ContextKey(`eve.activeChannelDeliveries`),ChannelInstrumentationKey=new ContextKey(`eve.channelInstrumentation`),ModeKey=new ContextKey(`eve.mode`),ParentSessionKey=new ContextKey(`eve.parentSession`),ParentTraceContextKey=new ContextKey(`eve.parentTraceContext`),SessionTraceSeedKey=new ContextKey(`eve.sessionTraceSeed`),OtelTraceEnabledKey=new ContextKey(`eve.otelTraceEnabled`),CapabilitiesKey=new ContextKey(`eve.capabilities`),ActivityObserverKey=new ContextKey(`eve.activityObserver`),ActivityRootTurnIdKey=new ContextKey(`eve.activityRootTurnId`),ActivityPendingBlockersKey=new ContextKey(`eve.activityPendingBlockers`),SessionCallbackKey=new ContextKey(SESSION_CALLBACK_CONTEXT_KEY_NAME),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),HandleEventKey=new ContextKey(`eve.internal.handleEvent`),StaticModelReferenceKey=new ContextKey(`eve.staticModelReference`),SessionDynamicModelReferenceKey=new ContextKey(`eve.sessionDynamicModelReference`),TurnDynamicModelReferenceKey=new ContextKey(`eve.turnDynamicModelReference`),RuntimeModelMetadataCacheKey=new ContextKey(`eve.runtimeModelMetadataCache`),LiveStepDynamicModelSelectionKey=new ContextKey(`eve.liveStepDynamicModelSelection`),SessionDynamicToolMetadataKey=new ContextKey(`eve.sessionDynamicToolMetadata`),SessionDynamicToolRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicToolRuntimeRevision`),TurnDynamicToolMetadataKey=new ContextKey(`eve.turnDynamicToolMetadata`),TurnMemoryLocksKey=new ContextKey(`eve.memory.turnLocks`),PreparedMemoryPreambleKey=new ContextKey(`eve.memory.preparedPreamble`),PendingMemoryCommitKey=new ContextKey(`eve.memory.pendingCommit`),PreparedMemoryCompactionKey=new ContextKey(`eve.memory.preparedCompaction`),StepDynamicToolMetadataKey=new ContextKey(`eve.stepDynamicToolMetadata`),SessionDynamicSubagentSelectionsKey=new ContextKey(`eve.sessionDynamicSubagentSelections`),TurnDynamicSubagentSelectionsKey=new ContextKey(`eve.turnDynamicSubagentSelections`),SessionDynamicSubagentRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicSubagentRuntimeRevision`),DynamicSubagentAgentConfigKey=new ContextKey(`eve.dynamicSubagentAgentConfig`),DynamicSkillManifestKey=new ContextKey(`eve.dynamicSkillManifest`),SessionDynamicInstructionsKey=new ContextKey(`eve.sessionDynamicInstructions`),TurnDynamicInstructionsKey=new ContextKey(`eve.turnDynamicInstructions`),DynamicInstructionResolveMessagesKey=new ContextKey(`eve.dynamicInstructionResolveMessages`),PendingDynamicInstructionUserMessagesKey=new ContextKey(`eve.pendingDynamicInstructionUserMessages`);export{ActiveChannelDeliveriesKey,ActivityObserverKey,ActivityPendingBlockersKey,ActivityRootTurnIdKey,AuthKey,CapabilitiesKey,ChannelDeliveryKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationHookTokensKey,ContinuationTokenKey,ConversationIdKey,DynamicInstructionResolveMessagesKey,DynamicSkillManifestKey,DynamicSubagentAgentConfigKey,HandleEventKey,HistoryStateKey,InitiatorAuthKey,LiveStepDynamicModelSelectionKey,LocalDevRequestKey,ModeKey,OtelTraceEnabledKey,ParentSessionKey,ParentTraceContextKey,PendingDynamicInstructionUserMessagesKey,PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,RuntimeModelMetadataCacheKey,SandboxKey,ScheduleIdKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicModelReferenceKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,SessionInboxKey,SessionKey,SessionTitleKey,SessionTraceSeedKey,StaticModelReferenceKey,StepDynamicToolMetadataKey,TurnDeliveryIdsKey,TurnDynamicInstructionsKey,TurnDynamicModelReferenceKey,TurnDynamicSubagentSelectionsKey,TurnDynamicToolMetadataKey,TurnMemoryLocksKey,TurnTaskDeliveryKey};
@@ -1,3 +1,3 @@
1
1
  import type { ChannelAudience } from "#shared/channel-audience.js";
2
- import type { AudienceInput } from "#shared/conversation-context.js";
3
- export declare function defaultEveAudience(input: Omit<AudienceInput<undefined>, "state">): ChannelAudience;
2
+ import type { AudienceContext } from "#shared/conversation-context.js";
3
+ export declare function defaultEveAudience(input: Omit<AudienceContext<undefined>, "state">): ChannelAudience;
@@ -1 +1 @@
1
- function defaultEveAudience(e){let t=e.auth?.principalType??`anonymous`;return t===`anonymous`?`public`:t===`user`||t===`service`||t===`runtime`?`private`:`unknown`}export{defaultEveAudience};
1
+ function defaultEveAudience(e){return e.caller.type===`principal`&&(e.caller.principal.kind===`user`||e.caller.principal.kind===`service`||e.caller.principal.kind===`runtime`)?`private`:`unknown`}export{defaultEveAudience};
@@ -1 +1 @@
1
- import{EVE_ACTIVITY_ROUTE_PATTERN,EVE_CALLBACK_ROUTE_PATTERN,EVE_CONNECTION_CALLBACK_ROUTE_PATTERN,EVE_HEALTH_ROUTE_PATH,EVE_INFO_ROUTE_PATH,EVE_LEGACY_CONNECTION_CALLBACK_ROUTE_PATTERN,EVE_SESSION_CANCEL_ROUTE_PATTERN,EVE_SESSION_CLEAR_ROUTE_PATTERN,EVE_SESSION_COMPACT_ROUTE_PATTERN,EVE_SESSION_RESET_ROUTE_PATTERN,EVE_SESSION_ROUTE_PATH,EVE_SESSION_ROUTE_PATTERN,EVE_SESSION_STREAM_ROUTE_PATTERN,EVE_SUBAGENT_STREAM_ROUTE_PATTERN,EVE_TASK_INPUT_ROUTE_PATTERN,createEveSessionStreamRoutePath,createEveSubagentStreamRoutePath}from"#protocol/routes.js";import{attachClientContext}from"#internal/client-context.js";import{createLogger,logError}from"#internal/logging.js";import{FAIL_CLOSED_FORWARDED_TRACE_ASSERTION,formatTraceContentCeiling}from"#shared/forwarded-trace-policy.js";import{EVE_SESSION_ID_HEADER,EVE_STREAM_FORMAT_HEADER,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER}from"#protocol/message.js";import{DELETE,GET,HEAD,PATCH,POST,PUT,defineChannel}from"#public/definitions/channel.js";import{resolveForwardedPrincipal}from"#channel/forwarded-principal.js";import{handleConnectionCallbackRequest,handleLegacyConnectionCallbackRequest}from"#execution/connections/callback-route.js";import{handleActivityRequest}from"#execution/activity-route.js";import{handleSessionCallbackRequest}from"#subagents/callback-route.js";import{handleTaskInputResponseRequest}from"#execution/task-input-response-route.js";import{WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest}from"#execution/workflow-webhook-route.js";import{readAgentInfoRouteResponse,readRemoteAgentStreamHeadersResolver,readRouteSessionCreator}from"#internal/nitro/routes/channel-route-context.js";import{parseTraceparent,readAgentDispatchTraceContext}from"#protocol/traceparent.js";import{readForwardedAudienceBaggage,readForwardedParentSessionBaggage}from"#protocol/baggage.js";import{readConversationBaggage}from"#tracing/conversation-context.js";import{routeAuth}from"#public/channels/auth.js";import{defaultEveAudience}from"#eve-channel/audience.js";import{mergeUploadPolicy}from"#public/channels/upload-policy.js";import{checkUploadPolicy,createSessionStreamResponse,deriveOperationContinuationToken,parseCancelTurnBody,parseCreateBody,parseIncludeTailIndex,parseJsonRequest,parseResetBody,parseSessionControlBody,parseSessionMessageBody,parseStartIndex,rejectSessionContinuationToken,requireSessionId}from"#eve-channel/request.js";import{findRemoteSubagentBinding,healthResponse,normalizeEveCors,resolveOnMessage}from"#eve-channel/support.js";export*from"#eve-channel/types.js";const log=createLogger(`eve.channel`);function eveChannel(e){let t=mergeUploadPolicy(e.uploadPolicy);return defineChannel({cors:normalizeEveCors(e.cors),turnPolicy:e.turnPolicy,audience:t=>{let n=e.audience??defaultEveAudience;return typeof n==`function`?n(t):n},routes:[GET(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),HEAD(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),GET(EVE_INFO_ROUTE_PATH,async(t,n)=>{let r=await routeAuth(t,e.auth);if(r instanceof Response)return r;let i=readAgentInfoRouteResponse(n);return i===void 0?Response.json({error:`Agent info route requires internal channel dispatch context.`,ok:!1},{status:500}):await i()}),GET(EVE_CONNECTION_CALLBACK_ROUTE_PATTERN,handleConnectionCallbackRequest),POST(EVE_CONNECTION_CALLBACK_ROUTE_PATTERN,handleConnectionCallbackRequest),GET(EVE_LEGACY_CONNECTION_CALLBACK_ROUTE_PATTERN,handleLegacyConnectionCallbackRequest),POST(EVE_LEGACY_CONNECTION_CALLBACK_ROUTE_PATTERN,handleLegacyConnectionCallbackRequest),POST(EVE_ACTIVITY_ROUTE_PATTERN,handleActivityRequest),POST(EVE_CALLBACK_ROUTE_PATTERN,handleSessionCallbackRequest),POST(EVE_TASK_INPUT_ROUTE_PATTERN,handleTaskInputResponseRequest),GET(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),POST(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),PUT(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),PATCH(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),DELETE(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),POST(EVE_SESSION_ROUTE_PATH,async(n,r)=>{let i=await routeAuth(n,e.auth);if(i instanceof Response)return i;let a=await parseJsonRequest(n);if(a instanceof Response)return a;let o=rejectSessionContinuationToken(a);if(o!==null)return o;let s=await resolveForwardedPrincipal({trustedForwarders:e.trustedForwarders,forwarder:i,payload:a});if(s instanceof Response)return s;let c=parseCreateBody(a);if(c instanceof Response)return c;let l=c.callback===void 0?`absent`:readForwardedParentSessionBaggage(n.headers.get(`baggage`)),u;if(typeof l==`object`){if(l.callId!==c.callback?.callId)log.warn(`ignoring remote parent lineage with a mismatched callback`,{forwarder:i.principalId});else{let t=s.accepted;if(!t&&e.trustedForwarders!==void 0)try{t=await e.trustedForwarders(i)}catch(e){let t=logError(log,`trustedForwarders handler failed`,e,{forwarder:i.principalId});return Response.json({error:`trustedForwarders handler failed.`,errorId:t,ok:!1},{status:500})}t?u=l:log.warn(`ignoring remote parent lineage from an untrusted forwarder`,{forwarder:i.principalId})}}else l===`malformed`&&log.warn(`ignoring malformed remote parent lineage`,{forwarder:i.principalId});let d=c.callback===void 0?void 0:parseTraceparent(n.headers.get(`traceparent`)),f=c.callback===void 0?void 0:readAgentDispatchTraceContext(n.headers.get(`tracestate`),d)??d,p=checkUploadPolicy(c,t);if(p!==null)return p;if(c.operationId!==void 0&&s.auth.principalType===`anonymous`)return Response.json({error:`operationId requires an authenticated principal.`,ok:!1},{status:400});let m=c.operationId===void 0?void 0:await deriveOperationContinuationToken({auth:s.auth,operationId:c.operationId});if(m!==void 0){let e=await r.resolveSession(m);if(e!==void 0)return Response.json({ok:!0,sessionId:e.id,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:e.id},status:202})}let h=d===void 0?`absent`:readForwardedAudienceBaggage(n.headers.get(`baggage`)),g=s.accepted&&d!==void 0&&(d.traceFlags&1)==1?typeof h==`object`?h:h===`malformed`?FAIL_CLOSED_FORWARDED_TRACE_ASSERTION:void 0:void 0,_=f;g!==void 0&&f!==void 0&&(_={...f,forwardedTracePolicy:g}),h===`malformed`?log.warn(`using metadata-only policy for malformed forwarded audience baggage`,{forwarder:i.principalId}):typeof h==`object`&&(g===void 0?log.warn(`ignoring forwarded trace policy without an accepted sampled principal`,{forwarder:i.principalId}):log.info(`accepted forwarded trace policy`,{audience:h.originAudience,ceiling:formatTraceContentCeiling(h.ceiling),forwarder:i.principalId}));let v=await resolveOnMessage({auth:s.auth,config:e,message:c.message,request:n});if(v instanceof Response)return v;let y=readRouteSessionCreator(r);if(y===void 0)return Response.json({error:`Session creation requires internal channel dispatch context.`,ok:!1},{status:500});let b;try{b=await y({activityObserver:c.activityObserver,audienceAuth:i,auth:v.auth,capabilities:c.capabilities??(c.mode===`task`?void 0:{requestInput:!0}),callback:c.callback,continuationToken:m,initiatorAuth:s.accepted?s.initiatorAuth:void 0,input:attachClientContext({message:c.message,context:v.context,outputSchema:c.outputSchema},c.context),mode:c.mode??`conversation`,conversationId:c.callback===void 0?void 0:readConversationBaggage(n.headers.get(`baggage`)),parent:u,parentTraceContext:_,title:v.title})}catch(e){let t=logError(log,`session-create request failed`,e);return Response.json({error:`Failed to create the session.`,errorId:t,ok:!1},{status:500})}return Response.json({ok:!0,sessionId:b.sessionId,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:b.sessionId},status:202})}),POST(EVE_SESSION_ROUTE_PATTERN,async(n,{attachSession:r,params:i})=>{let a=await routeAuth(n,e.auth);if(a instanceof Response)return a;let o=requireSessionId(i);if(o instanceof Response)return o;let s=await parseJsonRequest(n);if(s instanceof Response)return s;let c=await resolveForwardedPrincipal({trustedForwarders:e.trustedForwarders,forwarder:a,payload:s});if(c instanceof Response)return c;let l=parseSessionMessageBody(s);if(l instanceof Response)return l;let u=checkUploadPolicy(l,t);if(u!==null)return u;let d,f=c.auth;if(l.message!==void 0){let t=await resolveOnMessage({auth:c.auth,config:e,message:l.message,request:n,sessionId:o});if(t instanceof Response)return t;d=t.context,f=t.auth}let p;try{let e=r(o),t=attachClientContext({activityObserver:l.activityObserver,auth:f,callback:l.callback,context:d,outputSchema:l.outputSchema,turnPolicy:l.turnPolicy},l.context);p=l.inputResponses===void 0?await e.send(l.message,t):await e.respond(l.inputResponses,t)}catch(e){let t=logError(log,`session-message request failed`,e,{sessionId:o});return Response.json({error:`Failed to send the session message.`,errorId:t,ok:!1},{status:500})}return p.status===`session_not_active`?Response.json({code:`session_not_active`,error:`The session is no longer active.`,ok:!1},{headers:{"cache-control":`no-store`},status:409}):Response.json({ok:!0,sessionId:p.sessionId,status:`accepted`,deliveryId:p.deliveryId},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:p.sessionId},status:202})}),POST(EVE_SESSION_CANCEL_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseCancelTurnBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).cancel({taskId:o.taskId,tasks:o.tasks,turnId:o.turnId})}catch(e){let t=logError(log,`cancel-turn request failed`,e,{sessionId:a});return Response.json({error:`Failed to cancel the turn.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`accepted`?{ok:!0,sessionId:s.sessionId,status:`accepted`}:{ok:!0,status:`no_active_turn`},{headers:{"cache-control":`no-store`},status:s.status===`accepted`?202:200})}),POST(EVE_SESSION_COMPACT_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseSessionControlBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).compact()}catch(e){let t=logError(log,`session-compaction request failed`,e,{sessionId:a});return Response.json({error:`Failed to compact the session.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`accepted`?{ok:!0,sessionId:s.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:s.status===`accepted`?202:200})}),POST(EVE_SESSION_CLEAR_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseSessionControlBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).clear()}catch(e){let t=logError(log,`session-clear request failed`,e,{sessionId:a});return Response.json({error:`Failed to clear the session context.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`accepted`?{ok:!0,sessionId:s.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:s.status===`accepted`?202:200})}),POST(EVE_SESSION_RESET_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseResetBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).reset({reason:o.reason})}catch(e){let t=logError(log,`session-reset request failed`,e,{sessionId:a});return Response.json({error:`Failed to reset the session.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`reset`?{ok:!0,previousSessionId:s.previousSessionId,status:`reset`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`}})}),GET(EVE_SESSION_STREAM_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);return a instanceof Response?a:await createSessionStreamResponse(t,n(a))}),GET(EVE_SUBAGENT_STREAM_ROUTE_PATTERN,async(t,n)=>{let r=await routeAuth(t,e.auth);if(r instanceof Response)return r;let i=n.params.parentSessionId,a=n.params.callId,o=n.params.childSessionId;if(!i||!a||!o)return Response.json({error:`Missing subagent stream coordinates.`,ok:!1},{status:400});let s=parseStartIndex(t);if(s instanceof Response)return s;let c=parseIncludeTailIndex(t),l=createEveSubagentStreamRoutePath({callId:a,childSessionId:o,parentSessionId:i}),u;try{let e=n.attachSession(i),t=await findRemoteSubagentBinding({callId:a,childSessionId:o,childStreamPath:l,parentSessionId:i,parent:e});if(t===void 0)throw Error(`Remote subagent binding not found.`);u=t}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let d=readRemoteAgentStreamHeadersResolver(n);if(d===void 0)return Response.json({error:`Subagent stream proxy requires internal channel dispatch context.`,ok:!1},{status:500});let f;try{f=await d({name:u.data.toolName,resolverId:u.data.remote.resolverId,url:u.data.remote.url})}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let p=new URL(createEveSessionStreamRoutePath(o).replace(/^\/+/,``),`${u.data.remote.url.replace(/\/+$/,``)}/`);s!==void 0&&p.searchParams.set(`startIndex`,String(s)),c&&p.searchParams.set(`includeTailIndex`,`1`);let m=await fetch(p,{cache:`no-store`,headers:f,redirect:`manual`,signal:t.signal}),h=new Headers;for(let e of[`cache-control`,`content-type`,`x-accel-buffering`,EVE_SESSION_ID_HEADER,EVE_STREAM_FORMAT_HEADER,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER]){let t=m.headers.get(e);t!==null&&h.set(e,t)}return new Response(m.body,{headers:h,status:m.status,statusText:m.statusText})})],events:e.events})}export{eveChannel};
1
+ import{EVE_ACTIVITY_ROUTE_PATTERN,EVE_CALLBACK_ROUTE_PATTERN,EVE_CONNECTION_CALLBACK_ROUTE_PATTERN,EVE_HEALTH_ROUTE_PATH,EVE_INFO_ROUTE_PATH,EVE_ROUTE_PREFIX,EVE_SESSION_CANCEL_ROUTE_PATTERN,EVE_SESSION_CLEAR_ROUTE_PATTERN,EVE_SESSION_COMPACT_ROUTE_PATTERN,EVE_SESSION_RESET_ROUTE_PATTERN,EVE_SESSION_ROUTE_PATH,EVE_SESSION_ROUTE_PATTERN,EVE_SESSION_STREAM_ROUTE_PATTERN,EVE_SUBAGENT_STREAM_ROUTE_PATTERN,EVE_TASK_INPUT_ROUTE_PATTERN,createEveSessionStreamRoutePath,createEveSubagentStreamRoutePath}from"#protocol/routes.js";import{attachClientContext}from"#internal/client-context.js";import{createLogger,logError}from"#internal/logging.js";import{FAIL_CLOSED_FORWARDED_TRACE_ASSERTION,formatTraceContentCeiling}from"#shared/forwarded-trace-policy.js";import{EVE_SESSION_ID_HEADER,EVE_STREAM_CONTROL_VERSION_QUERY,EVE_STREAM_FORMAT_HEADER,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER}from"#protocol/message.js";import{DELETE,GET,HEAD,PATCH,POST,PUT,defineChannel}from"#public/definitions/channel.js";import{handleExpiredLegacyAuthorization}from"#execution/legacy-session/authorization.js";import{resolveForwardedPrincipal}from"#channel/forwarded-principal.js";import{handleConnectionCallbackRequest}from"#execution/connections/callback-route.js";import{handleActivityRequest}from"#execution/activity-route.js";import{handleSessionCallbackRequest}from"#subagents/callback-route.js";import{handleTaskInputResponseRequest}from"#execution/task-input-response-route.js";import{WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest}from"#execution/workflow-webhook-route.js";import{readAgentInfoRouteResponse,readRemoteAgentStreamHeadersResolver,readRouteSessionCreator}from"#internal/nitro/routes/channel-route-context.js";import{parseTraceparent,readAgentDispatchTraceContext}from"#protocol/traceparent.js";import{readForwardedAudienceBaggage,readForwardedParentSessionBaggage}from"#protocol/baggage.js";import{readConversationBaggage}from"#tracing/conversation-context.js";import{routeAuth}from"#public/channels/auth.js";import{defaultEveAudience}from"#eve-channel/audience.js";import{mergeUploadPolicy}from"#public/channels/upload-policy.js";import{checkUploadPolicy,createSessionStreamResponse,deriveOperationContinuationToken,parseCancelTurnBody,parseCreateBody,parseIncludeTailIndex,parseJsonRequest,parseResetBody,parseSessionControlBody,parseSessionMessageBody,parseStartIndex,rejectSessionContinuationToken,requireSessionId}from"#eve-channel/request.js";import{findRemoteSubagentBinding,healthResponse,normalizeEveCors,resolveOnMessage}from"#eve-channel/support.js";export*from"#eve-channel/types.js";const log=createLogger(`eve.channel`);function eveChannel(e){let t=mergeUploadPolicy(e.uploadPolicy);return defineChannel({cors:normalizeEveCors(e.cors),turnPolicy:e.turnPolicy,audience:t=>{let n=e.audience??defaultEveAudience;return typeof n==`function`?n(t):n},routes:[GET(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),HEAD(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),GET(EVE_INFO_ROUTE_PATH,async(t,n)=>{let r=await routeAuth(t,e.auth);if(r instanceof Response)return r;let i=readAgentInfoRouteResponse(n);return i===void 0?Response.json({error:`Agent info route requires internal channel dispatch context.`,ok:!1},{status:500}):await i()}),GET(`${EVE_ROUTE_PREFIX}/connections/:name/callback/:token`,handleExpiredLegacyAuthorization),POST(`${EVE_ROUTE_PREFIX}/connections/:name/callback/:token`,handleExpiredLegacyAuthorization),GET(EVE_CONNECTION_CALLBACK_ROUTE_PATTERN,handleConnectionCallbackRequest),POST(EVE_CONNECTION_CALLBACK_ROUTE_PATTERN,handleConnectionCallbackRequest),POST(EVE_ACTIVITY_ROUTE_PATTERN,handleActivityRequest),POST(EVE_CALLBACK_ROUTE_PATTERN,handleSessionCallbackRequest),POST(EVE_TASK_INPUT_ROUTE_PATTERN,handleTaskInputResponseRequest),GET(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),POST(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),PUT(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),PATCH(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),DELETE(WORKFLOW_WEBHOOK_ROUTE_PATTERN,handleWorkflowWebhookRequest),POST(EVE_SESSION_ROUTE_PATH,async(n,r)=>{let i=await routeAuth(n,e.auth);if(i instanceof Response)return i;let a=await parseJsonRequest(n);if(a instanceof Response)return a;let o=rejectSessionContinuationToken(a);if(o!==null)return o;let s=await resolveForwardedPrincipal({trustedForwarders:e.trustedForwarders,forwarder:i,payload:a});if(s instanceof Response)return s;let c=parseCreateBody(a);if(c instanceof Response)return c;let l=c.callback===void 0?`absent`:readForwardedParentSessionBaggage(n.headers.get(`baggage`)),u;if(typeof l==`object`){if(l.callId!==c.callback?.callId)log.warn(`ignoring remote parent lineage with a mismatched callback`,{forwarder:i.principalId});else{let t=s.accepted;if(!t&&e.trustedForwarders!==void 0)try{t=await e.trustedForwarders(i)}catch(e){let t=logError(log,`trustedForwarders handler failed`,e,{forwarder:i.principalId});return Response.json({error:`trustedForwarders handler failed.`,errorId:t,ok:!1},{status:500})}t?u=l:log.warn(`ignoring remote parent lineage from an untrusted forwarder`,{forwarder:i.principalId})}}else l===`malformed`&&log.warn(`ignoring malformed remote parent lineage`,{forwarder:i.principalId});let d=c.callback===void 0?void 0:parseTraceparent(n.headers.get(`traceparent`)),f=c.callback===void 0?void 0:readAgentDispatchTraceContext(n.headers.get(`tracestate`),d)??d,p=checkUploadPolicy(c,t);if(p!==null)return p;if(c.operationId!==void 0&&s.auth.principalType===`anonymous`)return Response.json({error:`operationId requires an authenticated principal.`,ok:!1},{status:400});let m=c.operationId===void 0?void 0:await deriveOperationContinuationToken({auth:s.auth,operationId:c.operationId});if(m!==void 0){let e=await r.resolveSession(m);if(e!==void 0)return Response.json({ok:!0,sessionId:e.id,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:e.id},status:202})}let h=d===void 0?`absent`:readForwardedAudienceBaggage(n.headers.get(`baggage`)),g=s.accepted&&d!==void 0&&(d.traceFlags&1)==1?typeof h==`object`?h:h===`malformed`?FAIL_CLOSED_FORWARDED_TRACE_ASSERTION:void 0:void 0,_=f;g!==void 0&&f!==void 0&&(_={...f,forwardedTracePolicy:g}),h===`malformed`?log.warn(`using metadata-only policy for malformed forwarded audience baggage`,{forwarder:i.principalId}):typeof h==`object`&&(g===void 0?log.warn(`ignoring forwarded trace policy without an accepted sampled principal`,{forwarder:i.principalId}):log.info(`accepted forwarded trace policy`,{audience:h.originAudience,ceiling:formatTraceContentCeiling(h.ceiling),forwarder:i.principalId}));let v=await resolveOnMessage({auth:s.auth,config:e,message:c.message,request:n});if(v instanceof Response)return v;let y=readRouteSessionCreator(r);if(y===void 0)return Response.json({error:`Session creation requires internal channel dispatch context.`,ok:!1},{status:500});let b;try{b=await y({activityObserver:c.activityObserver,audienceAuth:i,auth:v.auth,capabilities:c.capabilities??(c.mode===`task`?void 0:{requestInput:!0}),callback:c.callback,continuationToken:m,initiatorAuth:s.accepted?s.initiatorAuth:void 0,input:attachClientContext({message:c.message,context:v.context,outputSchema:c.outputSchema},c.context),mode:c.mode??`conversation`,conversationId:c.callback===void 0?void 0:readConversationBaggage(n.headers.get(`baggage`)),parent:u,parentTraceContext:_,title:v.title})}catch(e){let t=logError(log,`session-create request failed`,e);return Response.json({error:`Failed to create the session.`,errorId:t,ok:!1},{status:500})}return Response.json({ok:!0,sessionId:b.sessionId,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:b.sessionId},status:202})}),POST(EVE_SESSION_ROUTE_PATTERN,async(n,{attachSession:r,params:i})=>{let a=await routeAuth(n,e.auth);if(a instanceof Response)return a;let o=requireSessionId(i);if(o instanceof Response)return o;let s=await parseJsonRequest(n);if(s instanceof Response)return s;let c=await resolveForwardedPrincipal({trustedForwarders:e.trustedForwarders,forwarder:a,payload:s});if(c instanceof Response)return c;let l=parseSessionMessageBody(s);if(l instanceof Response)return l;let u=checkUploadPolicy(l,t);if(u!==null)return u;let d,f=c.auth;if(l.message!==void 0){let t=await resolveOnMessage({auth:c.auth,config:e,message:l.message,request:n,sessionId:o});if(t instanceof Response)return t;d=t.context,f=t.auth}let p;try{let e=r(o),t=attachClientContext({activityObserver:l.activityObserver,auth:f,callback:l.callback,context:d,outputSchema:l.outputSchema,turnPolicy:l.turnPolicy},l.context);p=l.inputResponses===void 0?await e.send(l.message,t):await e.respond(l.inputResponses,t)}catch(e){let t=logError(log,`session-message request failed`,e,{sessionId:o});return Response.json({error:`Failed to send the session message.`,errorId:t,ok:!1},{status:500})}return p.status===`session_not_active`?Response.json({code:`session_not_active`,error:`The session is no longer active.`,ok:!1},{headers:{"cache-control":`no-store`},status:409}):Response.json({ok:!0,sessionId:p.sessionId,status:`accepted`,deliveryId:p.deliveryId},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:p.sessionId},status:202})}),POST(EVE_SESSION_CANCEL_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseCancelTurnBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).cancel({taskId:o.taskId,tasks:o.tasks,turnId:o.turnId})}catch(e){let t=logError(log,`cancel-turn request failed`,e,{sessionId:a});return Response.json({error:`Failed to cancel the turn.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`accepted`?{ok:!0,sessionId:s.sessionId,status:`accepted`}:{ok:!0,status:`no_active_turn`},{headers:{"cache-control":`no-store`},status:s.status===`accepted`?202:200})}),POST(EVE_SESSION_COMPACT_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseSessionControlBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).compact()}catch(e){let t=logError(log,`session-compaction request failed`,e,{sessionId:a});return Response.json({error:`Failed to compact the session.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`accepted`?{ok:!0,sessionId:s.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:s.status===`accepted`?202:200})}),POST(EVE_SESSION_CLEAR_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseSessionControlBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).clear()}catch(e){let t=logError(log,`session-clear request failed`,e,{sessionId:a});return Response.json({error:`Failed to clear the session context.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`accepted`?{ok:!0,sessionId:s.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:s.status===`accepted`?202:200})}),POST(EVE_SESSION_RESET_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);if(a instanceof Response)return a;let o=await parseResetBody(t);if(o instanceof Response)return o;let s;try{s=await n(a).reset({reason:o.reason})}catch(e){let t=logError(log,`session-reset request failed`,e,{sessionId:a});return Response.json({error:`Failed to reset the session.`,errorId:t,ok:!1},{status:500})}return Response.json(s.status===`reset`?{ok:!0,previousSessionId:s.previousSessionId,status:`reset`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`}})}),GET(EVE_SESSION_STREAM_ROUTE_PATTERN,async(t,{attachSession:n,params:r})=>{let i=await routeAuth(t,e.auth);if(i instanceof Response)return i;let a=requireSessionId(r);return a instanceof Response?a:await createSessionStreamResponse(t,n(a))}),GET(EVE_SUBAGENT_STREAM_ROUTE_PATTERN,async(t,n)=>{let r=await routeAuth(t,e.auth);if(r instanceof Response)return r;let i=n.params.parentSessionId,a=n.params.callId,o=n.params.childSessionId;if(!i||!a||!o)return Response.json({error:`Missing subagent stream coordinates.`,ok:!1},{status:400});let s=parseStartIndex(t);if(s instanceof Response)return s;let c=parseIncludeTailIndex(t),l=createEveSubagentStreamRoutePath({callId:a,childSessionId:o,parentSessionId:i}),u;try{let e=n.attachSession(i),t=await findRemoteSubagentBinding({callId:a,childSessionId:o,childStreamPath:l,parentSessionId:i,parent:e});if(t===void 0)throw Error(`Remote subagent binding not found.`);u=t}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let d=readRemoteAgentStreamHeadersResolver(n);if(d===void 0)return Response.json({error:`Subagent stream proxy requires internal channel dispatch context.`,ok:!1},{status:500});let f;try{f=await d({name:u.data.toolName,resolverId:u.data.remote.resolverId,url:u.data.remote.url})}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let p=new URL(createEveSessionStreamRoutePath(o).replace(/^\/+/,``),`${u.data.remote.url.replace(/\/+$/,``)}/`);s!==void 0&&p.searchParams.set(`startIndex`,String(s));let m=new URL(t.url).searchParams.get(EVE_STREAM_CONTROL_VERSION_QUERY);m!==null&&p.searchParams.set(EVE_STREAM_CONTROL_VERSION_QUERY,m),c&&p.searchParams.set(`includeTailIndex`,`1`);let h=await fetch(p,{cache:`no-store`,headers:f,redirect:`manual`,signal:t.signal}),g=new Headers;for(let e of[`cache-control`,`content-type`,`x-accel-buffering`,EVE_SESSION_ID_HEADER,EVE_STREAM_FORMAT_HEADER,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER]){let t=h.headers.get(e);t!==null&&g.set(e,t)}return new Response(h.body,{headers:g,status:h.status,statusText:h.statusText})})],events:e.events})}export{eveChannel};
@@ -1,3 +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_FORMAT_HEADER,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER}from"#protocol/message.js";import{parseJsonObject}from"#shared/json.js";import{collectUploadPolicyViolations,formatUploadPolicyViolation}from"#public/channels/upload-policy.js";import{parseSessionCallback}from"#channel/session-callback.js";import{parseActivityObserverField,validateActivityObserverBinding}from"#eve-channel/activity-observer-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){if(e.inputResponses!==void 0)return Response.json({error:`'inputResponses' is only accepted for an existing session.`,ok:!1},{status:400});let t=parseMessageField(e.message);if(t instanceof Response)return t;let n=parseClientContextField(e.clientContext);if(n instanceof Response)return n;let r=parseCallbackField(e.callback);if(r instanceof Response)return r;let i=parseCapabilitiesField(e.capabilities);if(i instanceof Response)return i;let a=parseActivityObserverField(e.activityObserver);if(a instanceof Response)return a;if(a!==void 0){let e=validateActivityObserverBinding(a,r);if(e!==void 0)return e}let o=parseModeField(e.mode);if(o instanceof Response)return o;let s=parseOutputSchemaField(e.outputSchema);if(s instanceof Response)return s;if(t===void 0)return Response.json({error:`Missing or empty 'message' field.`,ok:!1},{status:400});let c=e.operationId;if(c!==void 0&&(typeof c!=`string`||!c))return Response.json({error:`Expected 'operationId' to be a non-empty string.`,ok:!1},{status:400});let l={activityObserver:a,callback:r,capabilities:i,message:t,mode:o,context:n,outputSchema:s};return typeof c==`string`&&(l.operationId=c),l}function parseSessionMessageBody(e){let t=rejectSessionContinuationToken(e);if(t!==null)return t;let n=parseMessageField(e.message);if(n instanceof Response)return n;let r=parseCallbackField(e.callback);if(r instanceof Response)return r;let i=parseActivityObserverField(e.activityObserver);if(i instanceof Response)return i;if(i!==void 0){let e=validateActivityObserverBinding(i,r);if(e!==void 0)return e}let a=parseInputResponses$1(e.inputResponses);if(a instanceof Response)return a;let o=parseClientContextField(e.clientContext);if(o instanceof Response)return o;let s=parseOutputSchemaField(e.outputSchema);if(s instanceof Response)return s;let c=parseTurnPolicyField(e.turnPolicy);return c instanceof Response?c:n===void 0&&a===void 0?Response.json({error:`Expected a non-empty 'message' or a non-empty 'inputResponses' array.`,ok:!1},{status:400}):n!==void 0&&a!==void 0?Response.json({error:`'message' and 'inputResponses' are mutually exclusive.`,ok:!1},{status:400}):{activityObserver:i,callback:r,message:n,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,i=t.taskId,a=t.tasks;if(r!==void 0&&(typeof r!=`string`||r.length===0))return Response.json({error:`Expected 'turnId' to be a non-empty string.`,ok:!1},{status:400});if(a!==void 0&&typeof a!=`boolean`)return Response.json({error:`Expected 'tasks' to be a boolean.`,ok:!1},{status:400});if(i!==void 0&&(typeof i!=`string`||i.length===0))return Response.json({error:`Expected 'taskId' to be a non-empty string.`,ok:!1},{status:400});let o={};return typeof i==`string`&&(o.taskId=i),typeof a==`boolean`&&(o.tasks=a),typeof r==`string`&&(o.turnId=r),o}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=parseIncludeTailIndex(e);try{let i=r?await t.getStreamTailIndex():void 0,a=await t.getEventStream({startIndex:n}),o=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!==void 0&&o.set(EVE_STREAM_TAIL_INDEX_HEADER,String(i)),new Response(serializeAsNdjson(a,e.signal,streamEventLimit(n,i)),{headers:o})}catch{return Response.json({error:`Session not found.`,ok:!1},{status:404})}}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 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 parseModeField(e){if(e!==void 0)return e===`conversation`||e===`task`?e:Response.json({error:`Expected 'mode' to be either 'conversation' or 'task'.`,ok:!1},{status:400})}function parseTurnPolicyField(e){if(e!==void 0)return e===`queue`||e===`steer`?e:Response.json({error:`Expected 'turnPolicy' to be either 'queue' or 'steer'.`,ok:!1},{status:400})}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
- ${e}`}function parseIncludeTailIndex(e){let t=new URL(e.url).searchParams.get(`includeTailIndex`);return t===`1`||t===`true`}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){let r=new TextEncoder,i=0,a=new TransformStream({start(e){e.enqueue(r.encode(`
3
- `)),n===0&&e.terminate()},transform(e,t){t.enqueue(r.encode(`${JSON.stringify(e)}\n`)),i+=1,i===n&&t.terminate()}});return e.pipeTo(a.writable,{signal:t}).catch(()=>{}),a.readable}export{checkUploadPolicy,createSessionStreamResponse,deriveOperationContinuationToken,parseCancelTurnBody,parseCreateBody,parseIncludeTailIndex,parseJsonRequest,parseResetBody,parseSessionControlBody,parseSessionMessageBody,parseStartIndex,rejectSessionContinuationToken,requireSessionId};
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{collectUploadPolicyViolations,formatUploadPolicyViolation}from"#public/channels/upload-policy.js";import{parseSessionCallback}from"#channel/session-callback.js";import{parseActivityObserverField,validateActivityObserverBinding}from"#eve-channel/activity-observer-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){if(e.inputResponses!==void 0)return Response.json({error:`'inputResponses' is only accepted for an existing session.`,ok:!1},{status:400});let t=parseMessageField(e.message);if(t instanceof Response)return t;let n=parseClientContextField(e.clientContext);if(n instanceof Response)return n;let r=parseCallbackField(e.callback);if(r instanceof Response)return r;let i=parseCapabilitiesField(e.capabilities);if(i instanceof Response)return i;let a=parseActivityObserverField(e.activityObserver);if(a instanceof Response)return a;if(a!==void 0){let e=validateActivityObserverBinding(a,r);if(e!==void 0)return e}let o=parseModeField(e.mode);if(o instanceof Response)return o;let s=parseOutputSchemaField(e.outputSchema);if(s instanceof Response)return s;if(t===void 0)return Response.json({error:`Missing or empty 'message' field.`,ok:!1},{status:400});let c=e.operationId;if(c!==void 0&&(typeof c!=`string`||!c))return Response.json({error:`Expected 'operationId' to be a non-empty string.`,ok:!1},{status:400});let l={activityObserver:a,callback:r,capabilities:i,message:t,mode:o,context:n,outputSchema:s};return typeof c==`string`&&(l.operationId=c),l}function parseSessionMessageBody(e){let t=rejectSessionContinuationToken(e);if(t!==null)return t;let n=parseMessageField(e.message);if(n instanceof Response)return n;let r=parseCallbackField(e.callback);if(r instanceof Response)return r;let i=parseActivityObserverField(e.activityObserver);if(i instanceof Response)return i;if(i!==void 0){let e=validateActivityObserverBinding(i,r);if(e!==void 0)return e}let a=parseInputResponses$1(e.inputResponses);if(a instanceof Response)return a;let o=parseClientContextField(e.clientContext);if(o instanceof Response)return o;let s=parseOutputSchemaField(e.outputSchema);if(s instanceof Response)return s;let c=parseTurnPolicyField(e.turnPolicy);return c instanceof Response?c:n===void 0&&a===void 0?Response.json({error:`Expected a non-empty 'message' or a non-empty 'inputResponses' array.`,ok:!1},{status:400}):n!==void 0&&a!==void 0?Response.json({error:`'message' and 'inputResponses' are mutually exclusive.`,ok:!1},{status:400}):{activityObserver:i,callback:r,message:n,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,i=t.taskId,a=t.tasks;if(r!==void 0&&(typeof r!=`string`||r.length===0))return Response.json({error:`Expected 'turnId' to be a non-empty string.`,ok:!1},{status:400});if(a!==void 0&&typeof a!=`boolean`)return Response.json({error:`Expected 'tasks' to be a boolean.`,ok:!1},{status:400});if(i!==void 0&&(typeof i!=`string`||i.length===0))return Response.json({error:`Expected 'taskId' to be a non-empty string.`,ok:!1},{status:400});let o={};return typeof i==`string`&&(o.taskId=i),typeof a==`boolean`&&(o.tasks=a),typeof r==`string`&&(o.turnId=r),o}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=parseIncludeTailIndex(e);try{let i=r?await t.getStreamTailIndex():void 0,a=await t.getEventStream({startIndex:n}),o=new URL(e.url).searchParams.get(EVE_STREAM_CONTROL_VERSION_QUERY)===EVE_STREAM_CONTROL_VERSION?EVE_STREAM_CONTROL_VERSION:void 0,s=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!==void 0&&s.set(EVE_STREAM_TAIL_INDEX_HEADER,String(i)),new Response(serializeAsNdjson(a,e.signal,streamEventLimit(n,i),o!==void 0),{headers:s})}catch{return Response.json({error:`Session not found.`,ok:!1},{status:404})}}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 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 parseModeField(e){if(e!==void 0)return e===`conversation`||e===`task`?e:Response.json({error:`Expected 'mode' to be either 'conversation' or 'task'.`,ok:!1},{status:400})}function parseTurnPolicyField(e){if(e!==void 0)return e===`queue`||e===`steer`?e:Response.json({error:`Expected 'turnPolicy' to be either 'queue' or 'steer'.`,ok:!1},{status:400})}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
+ ${e}`}function parseIncludeTailIndex(e){let t=new URL(e.url).searchParams.get(`includeTailIndex`);return t===`1`||t===`true`}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
+ `)),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
+ `)),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,parseResetBody,parseSessionControlBody,parseSessionMessageBody,parseStartIndex,rejectSessionContinuationToken,requireSessionId};
@@ -3,7 +3,7 @@ import type { SessionAuthContext, TurnPolicy } from "#channel/types.js";
3
3
  import type { TrustedForwarders } from "#channel/forwarded-principal.js";
4
4
  import type { AuthFn } from "#public/channels/auth.js";
5
5
  import type { UploadPolicyInput } from "#public/channels/upload-policy.js";
6
- import type { AudienceInput, Channel, ChannelContinuationOps, ChannelEvents, ChannelMethod } from "#public/definitions/channel.js";
6
+ import type { AudienceContext, Channel, ChannelContinuationOps, ChannelEvents, ChannelMethod } from "#public/definitions/channel.js";
7
7
  import type { ChannelAudience } from "#shared/channel-audience.js";
8
8
  /**
9
9
  * Event-handler channel context exposed by `eveChannel({ events })`. The default eve HTTP channel
@@ -80,15 +80,15 @@ export interface EveChannelInput {
80
80
  /**
81
81
  * Conversation audience classification, fixed when the session is created.
82
82
  *
83
- * By default, anonymous callers are `public` and `user`, `service`, or
84
- * `runtime` principals are `private`. Every other principal type is
85
- * `unknown`, which trace consumers treat as non-public.
83
+ * By default, `user`, `service`, and `runtime` principals are `private`.
84
+ * Anonymous callers and every other principal type are `unknown`, which
85
+ * trace consumers treat as non-public.
86
86
  *
87
87
  * Pass a constant audience, or a function receiving the authenticated
88
88
  * principal, channel, run mode, and deployment environment. Continuation
89
89
  * turns from a different caller do not reclassify an existing session.
90
90
  */
91
- readonly audience?: ChannelAudience | ((input: Omit<AudienceInput<undefined>, "state">) => ChannelAudience);
91
+ readonly audience?: ChannelAudience | ((input: Omit<AudienceContext<undefined>, "state">) => ChannelAudience);
92
92
  /**
93
93
  * The trusted-forwarders policy: which transport-authenticated callers may
94
94
  * assert a forwarded principal, callback-marked public trace audience, or
@@ -1 +1 @@
1
- import{ActivityObserverKey,ActivityPendingBlockersKey,ActivityRootTurnIdKey}from"#context/keys.js";import{activityRequestIdsForRootTurn,activityRootTurnIdForInputResponses}from"#harness/pending-input-batches.js";function updateActivityRootForDelivery(e){if(!e.ctx.has(ActivityObserverKey))return;if(e.taskRootTurnId!==void 0){e.ctx.set(ActivityRootTurnIdKey,e.taskRootTurnId);return}let t=e.delivery;if(t===void 0)return;if(t.payloads.some(e=>e.message!==void 0)&&t.taskDeliveryId===void 0){e.ctx.set(ActivityRootTurnIdKey,e.activeTurnId),e.ctx.delete(ActivityPendingBlockersKey);return}let n=new Set(t.payloads.flatMap(e=>(e.inputResponses??[]).map(e=>e.requestId)));if(n.size===0)return;let r=activityRootTurnIdForInputResponses(e.sessionState,n)??e.ctx.get(ActivityRootTurnIdKey)??e.activeTurnId;e.ctx.set(ActivityRootTurnIdKey,r),e.ctx.set(ActivityPendingBlockersKey,activityRequestIdsForRootTurn(e.sessionState,r))}function restoreAuthorizationActivity(e){let t=e.matches.map(e=>e.result.attemptId??e.candidateId??e.result.name),n=t.map(t=>e.pending.activityRootTurnIds?.[t]).find(Boolean);return n!==void 0&&(e.ctx.set(ActivityRootTurnIdKey,n),e.ctx.set(ActivityPendingBlockersKey,Object.entries(e.pending.activityRootTurnIds??{}).flatMap(([e,t])=>t===n?[e]:[]))),clearActivityBlockers(e.ctx,t),t}function updateActivityBlockers(e,t){e.has(ActivityObserverKey)&&(t.type===`input.requested`?addActivityBlockers(e,t.data.requests.map(e=>e.requestId)):t.type===`input.resolved`?clearActivityBlockers(e,t.data.resolutions.map(e=>e.requestId)):t.type===`authorization.required`?addActivityBlockers(e,[authorizationBlockerId(t)]):t.type===`authorization.completed`&&clearActivityBlockers(e,[authorizationBlockerId(t)]))}function clearActivityBlockers(e,t){let n=new Set(t),r=(e.get(ActivityPendingBlockersKey)??[]).filter(e=>!n.has(e));r.length===0?e.delete(ActivityPendingBlockersKey):e.set(ActivityPendingBlockersKey,r)}function addActivityBlockers(e,t){e.set(ActivityPendingBlockersKey,[...new Set([...e.get(ActivityPendingBlockersKey)??[],...t])])}function authorizationBlockerId(e){return e.data.attemptId??e.data.candidateId??`${e.data.turnId}:${String(e.data.stepIndex)}:${e.data.name}`}export{clearActivityBlockers,restoreAuthorizationActivity,updateActivityBlockers,updateActivityRootForDelivery};
1
+ import{ActivityObserverKey,ActivityPendingBlockersKey,ActivityRootTurnIdKey}from"#context/keys.js";import{activityRequestIdsForRootTurn,activityRootTurnIdForInputResponses}from"#harness/pending-input-batches.js";function updateActivityRootForDelivery(e){if(!e.ctx.has(ActivityObserverKey))return;if(e.taskRootTurnId!==void 0){e.ctx.set(ActivityRootTurnIdKey,e.taskRootTurnId);return}let t=e.delivery;if(t===void 0)return;if(t.payloads.some(e=>e.message!==void 0)&&t.taskDeliveryId===void 0){e.ctx.set(ActivityRootTurnIdKey,e.activeTurnId),e.ctx.delete(ActivityPendingBlockersKey);return}let n=new Set(t.payloads.flatMap(e=>(e.inputResponses??[]).map(e=>e.requestId)));if(n.size===0)return;let r=activityRootTurnIdForInputResponses(e.sessionState,n)??e.ctx.get(ActivityRootTurnIdKey)??e.activeTurnId;e.ctx.set(ActivityRootTurnIdKey,r),e.ctx.set(ActivityPendingBlockersKey,activityRequestIdsForRootTurn(e.sessionState,r))}function restoreAuthorizationActivity(e){let t=e.matches.map(e=>e.result.attemptId),n=t.map(t=>e.pending.activityRootTurnIds?.[t]).find(Boolean);return n!==void 0&&(e.ctx.set(ActivityRootTurnIdKey,n),e.ctx.set(ActivityPendingBlockersKey,Object.entries(e.pending.activityRootTurnIds??{}).flatMap(([e,t])=>t===n?[e]:[]))),clearActivityBlockers(e.ctx,t),t}function updateActivityBlockers(e,t){e.has(ActivityObserverKey)&&(t.type===`input.requested`?addActivityBlockers(e,t.data.requests.map(e=>e.requestId)):t.type===`input.resolved`?clearActivityBlockers(e,t.data.resolutions.map(e=>e.requestId)):t.type===`authorization.required`?addActivityBlockers(e,[authorizationBlockerId(t)]):t.type===`authorization.completed`&&clearActivityBlockers(e,[authorizationBlockerId(t)]))}function clearActivityBlockers(e,t){let n=new Set(t),r=(e.get(ActivityPendingBlockersKey)??[]).filter(e=>!n.has(e));r.length===0?e.delete(ActivityPendingBlockersKey):e.set(ActivityPendingBlockersKey,r)}function addActivityBlockers(e,t){e.set(ActivityPendingBlockersKey,[...new Set([...e.get(ActivityPendingBlockersKey)??[],...t])])}function authorizationBlockerId(e){return e.data.attemptId??e.data.candidateId??`${e.data.turnId}:${String(e.data.stepIndex)}:${e.data.name}`}export{clearActivityBlockers,restoreAuthorizationActivity,updateActivityBlockers,updateActivityRootForDelivery};