eve 0.50.0 → 0.51.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 (450) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/src/acp/adapter.js +1 -1
  3. package/dist/src/channel/types.d.ts +12 -19
  4. package/dist/src/chunks/{use-eve-agent-DUMU6dap.js → use-eve-agent-B4xN7-fK.js} +4 -4
  5. package/dist/src/chunks/{use-eve-agent-B5I-k6Ek.js → use-eve-agent-C3vUG5g2.js} +4 -4
  6. package/dist/src/cli/acp/command.d.ts +1 -1
  7. package/dist/src/cli/acp/command.js +2 -2
  8. package/dist/src/cli/agent-command.d.ts +5 -0
  9. package/dist/src/cli/agent-command.js +1 -0
  10. package/dist/src/cli/application-command.d.ts +2 -0
  11. package/dist/src/cli/commands/build.d.ts +1 -1
  12. package/dist/src/cli/commands/build.js +1 -1
  13. package/dist/src/cli/commands/deploy.d.ts +2 -0
  14. package/dist/src/cli/commands/deploy.js +1 -1
  15. package/dist/src/cli/commands/init-agent-workspace.d.ts +14 -0
  16. package/dist/src/cli/commands/init-agent-workspace.js +1 -0
  17. package/dist/src/cli/commands/init-repl.js +1 -1
  18. package/dist/src/cli/commands/init.d.ts +2 -13
  19. package/dist/src/cli/commands/init.js +1 -1
  20. package/dist/src/cli/commands/integration-connect.js +1 -1
  21. package/dist/src/cli/commands/link.d.ts +2 -0
  22. package/dist/src/cli/commands/link.js +1 -1
  23. package/dist/src/cli/commands/preconditions.d.ts +15 -0
  24. package/dist/src/cli/commands/preconditions.js +1 -1
  25. package/dist/src/cli/commands/register-integration-commands.d.ts +1 -1
  26. package/dist/src/cli/commands/register-integration-commands.js +1 -1
  27. package/dist/src/cli/commands/register-registry-commands.js +2 -2
  28. package/dist/src/cli/commands/registry.js +1 -1
  29. package/dist/src/cli/dev/environment.d.ts +1 -1
  30. package/dist/src/cli/dev/environment.js +1 -1
  31. package/dist/src/cli/dev/local-server-process.js +1 -1
  32. package/dist/src/cli/dev/tui/runner.js +1 -1
  33. package/dist/src/cli/invoke/command.d.ts +1 -1
  34. package/dist/src/cli/invoke/command.js +1 -1
  35. package/dist/src/cli/option-parsers.d.ts +1 -0
  36. package/dist/src/cli/option-parsers.js +1 -1
  37. package/dist/src/cli/run.js +3 -3
  38. package/dist/src/client/agent-info-schema.d.ts +0 -1
  39. package/dist/src/client/agent-info-schema.js +1 -1
  40. package/dist/src/client/message-action-parts.js +1 -1
  41. package/dist/src/compiled/.vendor-stamp.json +1 -1
  42. package/dist/src/compiler/extension-compatibility.d.ts +18 -18
  43. package/dist/src/compiler/extension-compatibility.js +1 -1
  44. package/dist/src/compiler/manifest.js +1 -1
  45. package/dist/src/compiler/normalize-agent-config.js +1 -1
  46. package/dist/src/compiler/normalize-manifest-helpers.js +1 -1
  47. package/dist/src/compiler/normalize-manifest.js +1 -1
  48. package/dist/src/context/build-dynamic-tools.js +1 -1
  49. package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
  50. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  51. package/dist/src/context/dynamic-tool-metadata.d.ts +1 -0
  52. package/dist/src/context/keys.d.ts +0 -3
  53. package/dist/src/context/keys.js +1 -1
  54. package/dist/src/discover/project.js +1 -1
  55. package/dist/src/evals/cli/eval.js +1 -1
  56. package/dist/src/evals/mock-model.js +1 -1
  57. package/dist/src/eve-channel/index.js +1 -1
  58. package/dist/src/execution/activity-work-id.js +1 -1
  59. package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
  60. package/dist/src/execution/channel-context.js +1 -1
  61. package/dist/src/execution/coordination-dispatch-shared.d.ts +103 -0
  62. package/dist/src/execution/coordination-dispatch-shared.js +1 -0
  63. package/dist/src/execution/coordination-dispatch-step.d.ts +7 -0
  64. package/dist/src/execution/coordination-dispatch-step.js +1 -0
  65. package/dist/src/execution/create-session-step.d.ts +1 -2
  66. package/dist/src/execution/create-session-step.js +1 -1
  67. package/dist/src/execution/deliver-payloads.js +1 -1
  68. package/dist/src/execution/dispatch-action-failures.d.ts +5 -5
  69. package/dist/src/execution/dispatch-action-failures.js +1 -1
  70. package/dist/src/execution/dispatch-start-operation.d.ts +1 -1
  71. package/dist/src/execution/dispatch-start-operation.js +1 -1
  72. package/dist/src/execution/durable-session-store.d.ts +1 -1
  73. package/dist/src/execution/eve-workflow-attributes.d.ts +1 -1
  74. package/dist/src/execution/inline-turn.js +1 -1
  75. package/dist/src/execution/next-driver-action.d.ts +7 -10
  76. package/dist/src/execution/node-step.d.ts +1 -2
  77. package/dist/src/execution/node-step.js +1 -1
  78. package/dist/src/execution/pending-turn-state.d.ts +1 -2
  79. package/dist/src/execution/pending-turn-state.js +1 -1
  80. package/dist/src/execution/proxied-deliver-step.js +1 -1
  81. package/dist/src/execution/route-child-delivery.js +1 -1
  82. package/dist/src/execution/runtime-context.js +1 -1
  83. package/dist/src/execution/session-command-inbox.d.ts +2 -3
  84. package/dist/src/execution/session.d.ts +1 -1
  85. package/dist/src/execution/session.js +2 -2
  86. package/dist/src/execution/settle-cancelled-turn-step.d.ts +1 -1
  87. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  88. package/dist/src/execution/stable-workflow-names.d.ts +1 -1
  89. package/dist/src/execution/stable-workflow-names.js +1 -1
  90. package/dist/src/execution/task-event-callback.js +1 -1
  91. package/dist/src/execution/tasks/child/steps.d.ts +18 -18
  92. package/dist/src/execution/tasks/child/steps.js +1 -1
  93. package/dist/src/execution/tasks/child/update-step.d.ts +6 -0
  94. package/dist/src/execution/tasks/child/update-step.js +1 -0
  95. package/dist/src/execution/tasks/child/update.d.ts +7 -10
  96. package/dist/src/execution/tasks/child/update.js +1 -1
  97. package/dist/src/execution/tasks/child/workflow.d.ts +21 -29
  98. package/dist/src/execution/tasks/child/workflow.js +1 -1
  99. package/dist/src/execution/tasks/parent/control-shared.d.ts +6 -17
  100. package/dist/src/execution/tasks/parent/control-shared.js +1 -1
  101. package/dist/src/execution/tasks/parent/delegate.d.ts +15 -50
  102. package/dist/src/execution/tasks/parent/delegate.js +1 -1
  103. package/dist/src/execution/tasks/parent/dispatch.d.ts +19 -34
  104. package/dist/src/execution/tasks/parent/dispatch.js +1 -1
  105. package/dist/src/execution/tasks/parent/hitl-proxy-steps.d.ts +5 -15
  106. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
  107. package/dist/src/execution/tasks/parent/run-parent.d.ts +2 -2
  108. package/dist/src/execution/tasks/parent/task-cancel.d.ts +11 -0
  109. package/dist/src/execution/tasks/parent/task-cancel.js +1 -0
  110. package/dist/src/execution/tasks/parent/tool-execution.d.ts +2 -3
  111. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  112. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  113. package/dist/src/execution/tools/subagent/accept-event-step.d.ts +7 -0
  114. package/dist/src/execution/tools/subagent/accept-event-step.js +1 -0
  115. package/dist/src/execution/tools/subagent/emit-called-step.d.ts +9 -0
  116. package/dist/src/execution/tools/subagent/emit-called-step.js +1 -0
  117. package/dist/src/execution/tools/subagent/invoke-agent.d.ts +51 -0
  118. package/dist/src/execution/tools/subagent/invoke-agent.js +1 -0
  119. package/dist/src/execution/tools/subagent/invoke-preparation.d.ts +37 -0
  120. package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -0
  121. package/dist/src/execution/tools/subagent/invoke-step.d.ts +55 -0
  122. package/dist/src/execution/tools/subagent/invoke-step.js +1 -0
  123. package/dist/src/execution/tools/subagent/receipt-identity.d.ts +11 -0
  124. package/dist/src/execution/tools/subagent/receipt-identity.js +1 -0
  125. package/dist/src/execution/{dispatch-runtime-actions-start.d.ts → tools/subagent/start.d.ts} +17 -5
  126. package/dist/src/execution/tools/subagent/start.js +1 -0
  127. package/dist/src/execution/tools/subagent/task-agent-requests.d.ts +24 -0
  128. package/dist/src/execution/tools/subagent/task-agent-requests.js +1 -0
  129. package/dist/src/execution/tools/subagent/task-cancel.d.ts +10 -0
  130. package/dist/src/execution/tools/subagent/task-cancel.js +1 -0
  131. package/dist/src/execution/tools/tasks.d.ts +10 -0
  132. package/dist/src/execution/tools/tasks.js +1 -0
  133. package/dist/src/execution/{tool-run → tools/workflow}/answer.d.ts +1 -1
  134. package/dist/src/execution/tools/workflow/answer.js +1 -0
  135. package/dist/src/execution/tools/workflow/ask.d.ts +22 -0
  136. package/dist/src/execution/tools/workflow/ask.js +1 -0
  137. package/dist/src/execution/tools/workflow/background.d.ts +18 -0
  138. package/dist/src/execution/tools/workflow/background.js +1 -0
  139. package/dist/src/execution/tools/workflow/body.d.ts +25 -0
  140. package/dist/src/execution/tools/workflow/body.js +1 -0
  141. package/dist/src/execution/tools/workflow/cancel.d.ts +11 -0
  142. package/dist/src/execution/tools/workflow/cancel.js +1 -0
  143. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.d.ts +7 -0
  144. package/dist/src/execution/tools/workflow/emit-workflow-tool-run-report-step.js +1 -0
  145. package/dist/src/execution/tools/workflow/messages.d.ts +88 -0
  146. package/dist/src/execution/tools/workflow/messages.js +1 -0
  147. package/dist/src/execution/tools/workflow/owner-inbox.d.ts +13 -0
  148. package/dist/src/execution/tools/workflow/owner-inbox.js +1 -0
  149. package/dist/src/execution/tools/workflow/owner.d.ts +13 -0
  150. package/dist/src/execution/tools/workflow/owner.js +1 -0
  151. package/dist/src/execution/tools/workflow/run-control.d.ts +18 -0
  152. package/dist/src/execution/tools/workflow/run-control.js +1 -0
  153. package/dist/src/execution/tools/workflow/start.d.ts +33 -0
  154. package/dist/src/execution/tools/workflow/start.js +1 -0
  155. package/dist/src/execution/tools/workflow/types.d.ts +26 -0
  156. package/dist/src/execution/tools/workflow/types.js +1 -0
  157. package/dist/src/execution/tools/workflow/workflow.d.ts +3 -0
  158. package/dist/src/execution/tools/workflow/workflow.js +1 -0
  159. package/dist/src/execution/turn-workflow-tool-run.d.ts +16 -0
  160. package/dist/src/execution/turn-workflow-tool-run.js +1 -0
  161. package/dist/src/execution/turn-workflow.js +1 -1
  162. package/dist/src/execution/wire/session-inbox-contract.d.ts +2 -2
  163. package/dist/src/execution/wire/session-inbox-contract.js +1 -1
  164. package/dist/src/execution/wire/session-inbox-encoder.d.ts +6 -2
  165. package/dist/src/execution/wire/session-inbox-encoder.js +1 -1
  166. package/dist/src/execution/wire/session-inbox-wire.d.ts +3 -3
  167. package/dist/src/execution/wire/session-inbox-wire.js +1 -1
  168. package/dist/src/execution/wire/session-inbox-wire.v1.js +1 -1
  169. package/dist/src/execution/wire/session-inbox-wire.v4.d.ts +267 -0
  170. package/dist/src/execution/wire/session-inbox-wire.v4.js +1 -0
  171. package/dist/src/execution/wire/session-inbox-wire.v4.migration.d.ts +3 -0
  172. package/dist/src/execution/wire/session-inbox-wire.v4.migration.js +1 -0
  173. package/dist/src/execution/workflow-entry-finalization.d.ts +6 -0
  174. package/dist/src/execution/workflow-entry-finalization.js +1 -1
  175. package/dist/src/execution/workflow-entry.d.ts +2 -1
  176. package/dist/src/execution/workflow-entry.js +1 -1
  177. package/dist/src/execution/workflow-runtime.d.ts +1 -1
  178. package/dist/src/execution/workflow-runtime.js +1 -1
  179. package/dist/src/execution/workflow-steps.js +1 -1
  180. package/dist/src/framework/sources/registry.js +1 -1
  181. package/dist/src/harness/advertised-tools.d.ts +1 -7
  182. package/dist/src/harness/advertised-tools.js +1 -1
  183. package/dist/src/harness/background-tools.d.ts +8 -2
  184. package/dist/src/harness/{runtime-actions.d.ts → coordination.d.ts} +40 -27
  185. package/dist/src/harness/coordination.js +1 -0
  186. package/dist/src/harness/emission.d.ts +9 -2
  187. package/dist/src/harness/emission.js +1 -1
  188. package/dist/src/harness/execute-tool.d.ts +52 -0
  189. package/dist/src/harness/hitl/session-limit-input-requests.js +1 -1
  190. package/dist/src/harness/input-requests.js +1 -1
  191. package/dist/src/harness/proxy-input-requests.d.ts +6 -2
  192. package/dist/src/harness/stale-input-responses.js +1 -1
  193. package/dist/src/harness/step-hooks.d.ts +1 -2
  194. package/dist/src/harness/step-hooks.js +1 -1
  195. package/dist/src/harness/tool-call-action.js +1 -1
  196. package/dist/src/harness/tool-call-input-errors.js +1 -1
  197. package/dist/src/harness/tool-loop.js +2 -2
  198. package/dist/src/harness/tools.js +1 -1
  199. package/dist/src/harness/turn-tag-state.d.ts +3 -1
  200. package/dist/src/harness/types.d.ts +4 -7
  201. package/dist/src/harness/workflow-interrupt-state.js +1 -1
  202. package/dist/src/harness/workflow-lifecycle.d.ts +10 -0
  203. package/dist/src/harness/workflow-lifecycle.js +1 -1
  204. package/dist/src/harness/workflow-sandbox.d.ts +1 -1
  205. package/dist/src/harness/workflow-sandbox.js +2 -2
  206. package/dist/src/harness/workflow-subagent-limit.d.ts +7 -7
  207. package/dist/src/harness/workflow-subagent-limit.js +1 -1
  208. package/dist/src/harness/workflow-task-state.d.ts +9 -0
  209. package/dist/src/harness/workflow-task-state.js +1 -0
  210. package/dist/src/harness/workflow-tool-runs.d.ts +27 -0
  211. package/dist/src/harness/workflow-tool-runs.js +1 -0
  212. package/dist/src/instrumentation/native-events.js +1 -1
  213. package/dist/src/instrumentation/parent-lineage.js +1 -1
  214. package/dist/src/internal/agent-name.d.ts +4 -0
  215. package/dist/src/internal/agent-name.js +1 -0
  216. package/dist/src/internal/agent-workspace.d.ts +15 -0
  217. package/dist/src/internal/agent-workspace.js +1 -0
  218. package/dist/src/internal/application/package.js +1 -1
  219. package/dist/src/internal/authored-definition/core.js +1 -1
  220. package/dist/src/internal/nitro/host/build-application.js +1 -1
  221. package/dist/src/internal/nitro/host/start-development-server.js +1 -1
  222. package/dist/src/internal/nitro/host/start-production-server.js +3 -3
  223. package/dist/src/internal/nitro/routes/runtime-stack.js +1 -1
  224. package/dist/src/internal/project-context.d.ts +26 -0
  225. package/dist/src/internal/project-context.js +1 -0
  226. package/dist/src/internal/vercel/assemble-eve-services.d.ts +17 -0
  227. package/dist/src/internal/vercel/assemble-eve-services.js +1 -0
  228. package/dist/src/internal/vercel/build-agent-workspace.d.ts +3 -0
  229. package/dist/src/internal/vercel/build-agent-workspace.js +1 -0
  230. package/dist/src/internal/vercel/build-command.d.ts +4 -0
  231. package/dist/src/internal/vercel/build-command.js +1 -0
  232. package/dist/src/internal/vercel/eve-service-contribution.d.ts +27 -0
  233. package/dist/src/internal/vercel/eve-service-contribution.js +1 -0
  234. package/dist/src/internal/vercel/vercel-service-config-operations.d.ts +18 -0
  235. package/dist/src/internal/vercel/vercel-service-config-operations.js +1 -0
  236. package/dist/src/internal/vercel/vercel-service-name.d.ts +6 -0
  237. package/dist/src/internal/vercel/vercel-service-name.js +1 -0
  238. package/dist/src/internal/vercel/vercel-services-config.d.ts +53 -0
  239. package/dist/src/internal/vercel/vercel-services-config.js +1 -0
  240. package/dist/src/internal/workflow-bundle/builder.js +1 -1
  241. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  242. package/dist/src/protocol/message.d.ts +2 -0
  243. package/dist/src/protocol/message.js +1 -1
  244. package/dist/src/public/channels/slack/action-status.js +1 -1
  245. package/dist/src/public/memory/file/backends/vercel-blob.js +1 -1
  246. package/dist/src/public/next/index.js +1 -1
  247. package/dist/src/public/next/vercel-output-config.js +1 -1
  248. package/dist/src/public/workflow/index.d.ts +3 -1
  249. package/dist/src/public/workflow/index.js +1 -1
  250. package/dist/src/runtime/actions/results.d.ts +3 -3
  251. package/dist/src/runtime/actions/results.js +1 -1
  252. package/dist/src/runtime/agent/bootstrap-model-utils.js +1 -1
  253. package/dist/src/runtime/agent/bootstrap.d.ts +1 -0
  254. package/dist/src/runtime/agent/bootstrap.js +1 -1
  255. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  256. package/dist/src/runtime/channels/registry.js +1 -1
  257. package/dist/src/runtime/prompt/compose.d.ts +0 -1
  258. package/dist/src/runtime/prompt/compose.js +1 -1
  259. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  260. package/dist/src/runtime/resolve-agent.js +1 -1
  261. package/dist/src/runtime/sessions/turn.d.ts +16 -1
  262. package/dist/src/runtime/subagents/registry.js +1 -1
  263. package/dist/src/runtime/subagents/workflow-reference.d.ts +5 -0
  264. package/dist/src/runtime/subagents/workflow-reference.js +1 -0
  265. package/dist/src/runtime/subagents/workflow.d.ts +8 -0
  266. package/dist/src/runtime/subagents/workflow.js +1 -0
  267. package/dist/src/runtime/tools/registry.js +1 -1
  268. package/dist/src/setup/integrations/discord/setup.js +1 -1
  269. package/dist/src/setup/integrations/file-memory/vercel.js +1 -1
  270. package/dist/src/setup/integrations/linear/setup.js +1 -1
  271. package/dist/src/setup/integrations/linq/setup.js +3 -3
  272. package/dist/src/setup/integrations/shopify/setup.js +1 -1
  273. package/dist/src/setup/scaffold/create/project.js +1 -1
  274. package/dist/src/setup/scaffold/update/channels.d.ts +4 -12
  275. package/dist/src/setup/scaffold/update/channels.js +1 -1
  276. package/dist/src/shared/action-types.d.ts +74 -14
  277. package/dist/src/shared/action-types.js +1 -1
  278. package/dist/src/shared/json.js +1 -1
  279. package/dist/src/shared/workflow-sandbox.d.ts +1 -1
  280. package/dist/src/{execution/subagent-adapter-state.d.ts → subagents/adapter-state.d.ts} +2 -0
  281. package/dist/src/{execution/subagent-adapter-state.js → subagents/adapter-state.js} +1 -1
  282. package/dist/src/subagents/adapter.js +1 -0
  283. package/dist/src/{harness → subagents}/agent-handle-errors.d.ts +6 -0
  284. package/dist/src/subagents/agent-handle-errors.js +1 -0
  285. package/dist/src/subagents/callback-route.js +1 -0
  286. package/dist/src/subagents/callback-step.js +1 -0
  287. package/dist/src/{execution/agent-continuation-bundle.d.ts → subagents/continuation-bundle.d.ts} +1 -1
  288. package/dist/src/subagents/continuation-bundle.js +1 -0
  289. package/dist/src/{execution/subagent-event-proxy-step.d.ts → subagents/event-proxy-step.d.ts} +2 -8
  290. package/dist/src/subagents/event-proxy-step.js +1 -0
  291. package/dist/src/subagents/handle-dispatch.d.ts +54 -0
  292. package/dist/src/subagents/handle-dispatch.js +1 -0
  293. package/dist/src/{harness → subagents}/handles/prompt.d.ts +4 -4
  294. package/dist/src/{harness → subagents}/handles/prompt.js +1 -1
  295. package/dist/src/{harness → subagents}/handles/query.d.ts +8 -2
  296. package/dist/src/subagents/handles/query.js +1 -0
  297. package/dist/src/subagents/handles/rebase.d.ts +4 -0
  298. package/dist/src/subagents/handles/rebase.js +1 -0
  299. package/dist/src/{harness → subagents}/handles/store.d.ts +90 -15
  300. package/dist/src/subagents/handles/store.js +1 -0
  301. package/dist/src/subagents/handles/transitions.d.ts +103 -0
  302. package/dist/src/subagents/handles/transitions.js +1 -0
  303. package/dist/src/{execution/delegated-parent-notification.d.ts → subagents/parent-notification.d.ts} +1 -7
  304. package/dist/src/subagents/parent-notification.js +1 -0
  305. package/dist/src/subagents/parent-result.js +1 -0
  306. package/dist/src/{execution/remote-agent-dispatch.d.ts → subagents/remote-dispatch.d.ts} +3 -2
  307. package/dist/src/subagents/remote-dispatch.js +1 -0
  308. package/dist/src/{execution/subagent-start-local.d.ts → subagents/start-local.d.ts} +5 -6
  309. package/dist/src/subagents/start-local.js +1 -0
  310. package/dist/src/{execution/subagent-start-remote.d.ts → subagents/start-remote.d.ts} +5 -5
  311. package/dist/src/subagents/start-remote.js +1 -0
  312. package/dist/src/{execution/subagent-tool.d.ts → subagents/tool.d.ts} +5 -3
  313. package/dist/src/subagents/tool.js +1 -0
  314. package/dist/src/svelte/index.js +1 -1
  315. package/dist/src/svelte/use-eve-agent.js +1 -1
  316. package/dist/src/tasks/json.js +1 -1
  317. package/dist/src/tasks/session-index.d.ts +2 -3
  318. package/dist/src/tasks/session-index.js +1 -1
  319. package/dist/src/tasks/task-id.d.ts +3 -4
  320. package/dist/src/tasks/task-id.js +1 -1
  321. package/dist/src/tasks/transitions.d.ts +3 -47
  322. package/dist/src/tasks/transitions.js +1 -1
  323. package/dist/src/tasks/types.d.ts +69 -247
  324. package/dist/src/tasks/types.js +1 -1
  325. package/dist/src/tools/dynamic.d.ts +3 -1
  326. package/dist/src/tools/framework/agent.d.ts +18 -2
  327. package/dist/src/tools/framework/agent.js +1 -1
  328. package/dist/src/tools/framework/task-cancel.d.ts +2 -6
  329. package/dist/src/tools/framework/task-contract.d.ts +44 -65
  330. package/dist/src/tools/framework/task-contract.js +1 -1
  331. package/dist/src/tools/framework/task-update.d.ts +1 -0
  332. package/dist/src/tools/framework/task-update.js +1 -1
  333. package/dist/src/vue/index.js +1 -1
  334. package/dist/src/vue/use-eve-agent.js +1 -1
  335. package/docs/concepts/built-in-tools.md +9 -90
  336. package/docs/concepts/context-control.md +2 -2
  337. package/docs/concepts/execution-model-and-durability.mdx +1 -1
  338. package/docs/concepts/sessions-runs-and-streaming.md +3 -3
  339. package/docs/guides/deployment/vercel.mdx +20 -2
  340. package/docs/guides/dynamic-capabilities.md +2 -2
  341. package/docs/guides/frontend/overview.mdx +1 -1
  342. package/docs/guides/instrumentation-providers.md +242 -0
  343. package/docs/guides/instrumentation.md +2 -0
  344. package/docs/guides/meta.json +1 -0
  345. package/docs/guides/remote-agents.md +8 -9
  346. package/docs/reference/cli.md +5 -2
  347. package/docs/sandbox.mdx +2 -0
  348. package/docs/subagents/index.mdx +9 -8
  349. package/docs/tools/overview.mdx +11 -10
  350. package/docs/tools/workflows.mdx +52 -18
  351. package/package.json +1 -1
  352. package/dist/src/execution/agent-continuation-bundle.js +0 -1
  353. package/dist/src/execution/agent-handle-dispatch.d.ts +0 -79
  354. package/dist/src/execution/agent-handle-dispatch.js +0 -1
  355. package/dist/src/execution/delegated-parent-notification.js +0 -1
  356. package/dist/src/execution/delegated-parent-result.js +0 -1
  357. package/dist/src/execution/delegation-tool.d.ts +0 -10
  358. package/dist/src/execution/delegation-tool.js +0 -1
  359. package/dist/src/execution/dispatch-runtime-actions-shared.d.ts +0 -165
  360. package/dist/src/execution/dispatch-runtime-actions-shared.js +0 -1
  361. package/dist/src/execution/dispatch-runtime-actions-start.js +0 -1
  362. package/dist/src/execution/dispatch-runtime-actions-step.d.ts +0 -18
  363. package/dist/src/execution/dispatch-runtime-actions-step.js +0 -1
  364. package/dist/src/execution/dispatch-workflow-runtime-actions-step.d.ts +0 -18
  365. package/dist/src/execution/dispatch-workflow-runtime-actions-step.js +0 -1
  366. package/dist/src/execution/finalize-terminal-session.d.ts +0 -17
  367. package/dist/src/execution/finalize-terminal-session.js +0 -1
  368. package/dist/src/execution/prepared-agent-action.d.ts +0 -7
  369. package/dist/src/execution/prepared-agent-action.js +0 -1
  370. package/dist/src/execution/remote-agent-dispatch.js +0 -1
  371. package/dist/src/execution/session-callback-route.js +0 -1
  372. package/dist/src/execution/session-callback-step.js +0 -1
  373. package/dist/src/execution/subagent-adapter.js +0 -1
  374. package/dist/src/execution/subagent-event-proxy-step.js +0 -1
  375. package/dist/src/execution/subagent-start-local.js +0 -1
  376. package/dist/src/execution/subagent-start-remote.js +0 -1
  377. package/dist/src/execution/subagent-tool.js +0 -1
  378. package/dist/src/execution/tasks/child/instructions.d.ts +0 -3
  379. package/dist/src/execution/tasks/child/instructions.js +0 -1
  380. package/dist/src/execution/tasks/parent/agent-identity.d.ts +0 -13
  381. package/dist/src/execution/tasks/parent/agent-identity.js +0 -1
  382. package/dist/src/execution/tasks/parent/agent-views.d.ts +0 -7
  383. package/dist/src/execution/tasks/parent/agent-views.js +0 -1
  384. package/dist/src/execution/tasks/parent/continuation-dispatch.d.ts +0 -43
  385. package/dist/src/execution/tasks/parent/continuation-dispatch.js +0 -1
  386. package/dist/src/execution/tasks/parent/dispatch-task-step.d.ts +0 -19
  387. package/dist/src/execution/tasks/parent/dispatch-task-step.js +0 -1
  388. package/dist/src/execution/tool-run/answer.js +0 -1
  389. package/dist/src/execution/tool-run/background.d.ts +0 -14
  390. package/dist/src/execution/tool-run/background.js +0 -1
  391. package/dist/src/execution/tool-run/cancel.d.ts +0 -7
  392. package/dist/src/execution/tool-run/cancel.js +0 -1
  393. package/dist/src/execution/tool-run/dispatch.d.ts +0 -24
  394. package/dist/src/execution/tool-run/dispatch.js +0 -1
  395. package/dist/src/execution/tool-run/emit-run-report-step.d.ts +0 -7
  396. package/dist/src/execution/tool-run/emit-run-report-step.js +0 -1
  397. package/dist/src/execution/tool-run/messages.d.ts +0 -70
  398. package/dist/src/execution/tool-run/messages.js +0 -1
  399. package/dist/src/execution/tool-run/owner-inbox.d.ts +0 -11
  400. package/dist/src/execution/tool-run/owner-inbox.js +0 -1
  401. package/dist/src/execution/tool-run/owner.d.ts +0 -13
  402. package/dist/src/execution/tool-run/owner.js +0 -1
  403. package/dist/src/execution/tool-run/run-control.d.ts +0 -18
  404. package/dist/src/execution/tool-run/run-control.js +0 -1
  405. package/dist/src/execution/tool-run/start.d.ts +0 -11
  406. package/dist/src/execution/tool-run/start.js +0 -1
  407. package/dist/src/execution/tool-run/types.d.ts +0 -21
  408. package/dist/src/execution/tool-run/types.js +0 -1
  409. package/dist/src/execution/tool-run/workflow.d.ts +0 -9
  410. package/dist/src/execution/tool-run/workflow.js +0 -1
  411. package/dist/src/execution/tools/subagent/local.d.ts +0 -40
  412. package/dist/src/execution/tools/subagent/local.js +0 -1
  413. package/dist/src/execution/tools/subagent/remote.d.ts +0 -26
  414. package/dist/src/execution/tools/subagent/remote.js +0 -1
  415. package/dist/src/harness/agent-handle-errors.js +0 -1
  416. package/dist/src/harness/handles/query.js +0 -1
  417. package/dist/src/harness/handles/store.js +0 -1
  418. package/dist/src/harness/handles/transitions.d.ts +0 -167
  419. package/dist/src/harness/handles/transitions.js +0 -1
  420. package/dist/src/harness/runtime-actions.js +0 -1
  421. package/dist/src/harness/subagent-depth.d.ts +0 -10
  422. package/dist/src/harness/subagent-depth.js +0 -1
  423. package/dist/src/harness/tool-runs.d.ts +0 -21
  424. package/dist/src/harness/tool-runs.js +0 -1
  425. package/dist/src/harness/workflow-runtime-action-state.d.ts +0 -9
  426. package/dist/src/harness/workflow-runtime-action-state.js +0 -1
  427. package/dist/src/runtime/actions/keys.d.ts +0 -14
  428. package/dist/src/runtime/actions/keys.js +0 -1
  429. package/dist/src/tasks/wire.d.ts +0 -25
  430. package/dist/src/tasks/wire.js +0 -1
  431. /package/dist/src/execution/{tool-run → tools/workflow}/owner-channels.d.ts +0 -0
  432. /package/dist/src/execution/{tool-run → tools/workflow}/owner-channels.js +0 -0
  433. /package/dist/src/execution/{tool-run → tools/workflow}/resume-hook-step.d.ts +0 -0
  434. /package/dist/src/execution/{tool-run → tools/workflow}/resume-hook-step.js +0 -0
  435. /package/dist/src/{execution/subagent-adapter.d.ts → subagents/adapter.d.ts} +0 -0
  436. /package/dist/src/{execution/session-callback-route.d.ts → subagents/callback-route.d.ts} +0 -0
  437. /package/dist/src/{execution/session-callback-step.d.ts → subagents/callback-step.d.ts} +0 -0
  438. /package/dist/src/{harness → subagents}/handles/operation-id.d.ts +0 -0
  439. /package/dist/src/{harness → subagents}/handles/operation-id.js +0 -0
  440. /package/dist/src/{harness → subagents}/handles/state-key.d.ts +0 -0
  441. /package/dist/src/{harness → subagents}/handles/state-key.js +0 -0
  442. /package/dist/src/{execution/subagent-hitl-proxy.d.ts → subagents/hitl-proxy.d.ts} +0 -0
  443. /package/dist/src/{execution/subagent-hitl-proxy.js → subagents/hitl-proxy.js} +0 -0
  444. /package/dist/src/{execution/subagent-invocation.d.ts → subagents/invocation.d.ts} +0 -0
  445. /package/dist/src/{execution/subagent-invocation.js → subagents/invocation.js} +0 -0
  446. /package/dist/src/{execution/delegated-parent-result.d.ts → subagents/parent-result.d.ts} +0 -0
  447. /package/dist/src/{execution/remote-agent-route-url.d.ts → subagents/remote-route-url.d.ts} +0 -0
  448. /package/dist/src/{execution/remote-agent-route-url.js → subagents/remote-route-url.js} +0 -0
  449. /package/dist/src/{harness/subagent-token-budget.d.ts → subagents/token-budget.d.ts} +0 -0
  450. /package/dist/src/{harness/subagent-token-budget.js → subagents/token-budget.js} +0 -0
@@ -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{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=47,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({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)]),sessionTimeoutSchema=z.union([z.number().int().positive(),z.literal(!1)]),compiledAgentLimitsDefinitionSchema=z.object({maxInputTokensPerSession:sessionTokenLimitSchema.optional(),maxOutputTokensPerSession:sessionTokenLimitSchema.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(),description:z.string().optional(),experimental:z.object({instrumentationProviders:z.boolean().optional(),tasks: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`,`task-update`]),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()}).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(47),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},description:e.description,experimental:e.experimental===void 0?void 0:{instrumentationProviders:e.experimental.instrumentationProviders,tasks:e.experimental.tasks,workflow:e.experimental.workflow===void 0?void 0:{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,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:47};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{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=47,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({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)]),sessionTimeoutSchema=z.union([z.number().int().positive(),z.literal(!1)]),compiledAgentLimitsDefinitionSchema=z.object({maxInputTokensPerSession:sessionTokenLimitSchema.optional(),maxOutputTokensPerSession:sessionTokenLimitSchema.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(),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`,`task-update`]),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()}).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(47),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},description:e.description,experimental:e.experimental===void 0?void 0:{instrumentationProviders:e.experimental.instrumentationProviders,workflow:e.experimental.workflow===void 0?void 0:{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,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:47};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{isAbsolute,relative,resolve}from"node:path";import{createCompiledBindingNamespaceLoader}from"#compiler/load-binding-namespace.js";import{normalizeLogicalPath}from"#discover/filesystem.js";import{toErrorMessage}from"#shared/errors.js";import{serializeOutputSchema}from"#tools/schema.js";import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{classifyModelRouting}from"#internal/classify-model-routing.js";import{isChatGptModelRouting}from"#shared/chatgpt-model.js";import{parseJsonObject}from"#shared/json.js";import{isDynamicModelDefinition}from"#shared/agent-definition.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";async function compileAgentConfig(e,t,n){let i=n.source,a=formatAgentConfigModulePath(e,i,n.binding),o=normalizeAgentDefinition(Object.hasOwn(n,`definition`)?n.definition:await loadModuleBackedDefinition({binding:n.binding,displayPath:a,kind:`agent config`,loadNamespace:createCompiledBindingNamespaceLoader({bindings:{[i.sourceId]:n.binding},registries:t.registries}),source:i}),`Expected the agent config export "${i.exportName??`default`}" from "${a}" to match the public eve shape.`),s=isDynamicModelDefinition(o.model)?o.model:void 0,c=s===void 0?await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the primary compaction trigger model`,contextWindowTokens:o.modelContextWindowTokens,providerOptions:o.modelOptions?.providerOptions,source:i,sourcePath:a,value:o.model}):void 0,l={},u={compaction:l,name:e.agentId,source:{...i}};o.description!==void 0&&(u.description=o.description);let d;s!==void 0&&(d={eventNames:Object.keys(s.events),exportName:i.exportName,sourceKind:`module`,logicalPath:i.logicalPath,sourceId:i.sourceId});let f=normalizeExperimentalDefinition(o.experimental);if(f!==void 0&&(u.experimental=f),o.build!==void 0&&(u.build={externalDependencies:o.build.externalDependencies===void 0?void 0:[...o.build.externalDependencies]}),o.outputSchema!==void 0&&(u.outputSchema=serializeOutputSchema(o.outputSchema)),o.reasoning!==void 0&&(u.reasoning=o.reasoning),o.limits!==void 0&&(u.limits={maxInputTokensPerSession:o.limits.maxInputTokensPerSession,maxOutputTokensPerSession:o.limits.maxOutputTokensPerSession,sessionTimeoutMs:o.limits.sessionTimeoutMs}),o.compaction?.model!==void 0&&(l.model=await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the compaction summary model`,contextWindowTokens:o.compaction.modelContextWindowTokens,providerOptions:o.modelOptions?.providerOptions,source:i,sourcePath:a,value:o.compaction.model})),o.compaction?.thresholdPercent!==void 0&&(l.thresholdPercent=o.compaction.thresholdPercent),d!==void 0)return{...u,dynamicModel:d};if(c===void 0)throw Error(`Expected a static agent model to compile to a concrete model reference.`);return{...u,model:c}}function normalizeExperimentalDefinition(e){if(e===void 0)return;let t={};return e.instrumentationProviders!==void 0&&(t.instrumentationProviders=e.instrumentationProviders),e.tasks!==void 0&&(t.tasks=e.tasks),e.workflow!==void 0&&(t.workflow={world:e.workflow.world}),t}async function normalizeAuthoredModelReference(e){if(typeof e.value==`string`)return await withCompiledRuntimeModelLimits({id:formatLanguageModelGatewayId(e.value),providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(e.value,e.providerOptions)},e);let t=e.source;if(t===void 0)throw Error(`Expected ${e.purpose} to provide a valid AI SDK language model reference.`);let n=e.value,r=n.specificationVersion;if(r!==`v2`&&r!==`v3`&&r!==`v4`||typeof n.provider!=`string`||typeof n.modelId!=`string`||typeof n.doGenerate!=`function`||typeof n.doStream!=`function`)throw Error(`Expected the authored agent config export "${t.exportName??`default`}" from "${e.sourcePath??t.logicalPath}" to provide a valid AI SDK language model.`);let i={id:formatLanguageModelGatewayId(n),source:{exportName:t.exportName,sourceKind:`module`,logicalPath:t.logicalPath,sourceId:t.sourceId},providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(n,e.providerOptions)};if(e.contextWindowTokens===void 0){if(isChatGptModelRouting(i.routing))return{...i,contextWindowTokens:2e5};try{let t=await e.modelCatalog.getByProviderModelId(n.provider,n.modelId);if(t)return{...i,id:t.slug,contextWindowTokens:t.limits.contextWindowTokens,maxOutputTokens:t.limits.maxOutputTokens}}catch{}}return await withCompiledRuntimeModelLimits(i,e)}function formatAgentConfigModulePath(e,n,r){return r.backing.kind===`programmatic`?n.logicalPath:normalizeLogicalPath(relative(resolveTopLevelAgentRoot(e),r.backing.sourcePath))}function resolveTopLevelAgentRoot(e){let t=resolve(e.appRoot),r=resolve(t,`agent`);return isPathInsideOrEqual(r,resolve(e.agentRoot))?r:t}function isPathInsideOrEqual(n,r){let i=relative(n,r);return i===``||!i.startsWith(`..`)&&!isAbsolute(i)}async function withCompiledRuntimeModelLimits(e,t){if(t.contextWindowTokens!==void 0)return{...e,contextWindowTokens:t.contextWindowTokens};let n;try{n=await t.modelCatalog.getModelLimits(e.id)}catch(n){throw Error(`Failed to load AI Gateway model metadata for ${t.purpose} "${e.id}". ${toErrorMessage(n)}`)}if(n===null)throw Error(`Cannot compile agent compaction because ${t.purpose} "${e.id}" does not have known AI Gateway context window metadata.`);return{...e,contextWindowTokens:n.contextWindowTokens,maxOutputTokens:n.maxOutputTokens}}function parseProviderOptionsRecord(e){if(e===void 0)return;let t={};for(let[n,r]of Object.entries(e))t[n]=parseJsonObject(r);return t}export{compileAgentConfig};
1
+ import{isAbsolute,relative,resolve}from"node:path";import{createCompiledBindingNamespaceLoader}from"#compiler/load-binding-namespace.js";import{normalizeLogicalPath}from"#discover/filesystem.js";import{toErrorMessage}from"#shared/errors.js";import{serializeOutputSchema}from"#tools/schema.js";import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{formatLanguageModelGatewayId}from"#internal/runtime-model.js";import{classifyModelRouting}from"#internal/classify-model-routing.js";import{isChatGptModelRouting}from"#shared/chatgpt-model.js";import{parseJsonObject}from"#shared/json.js";import{isDynamicModelDefinition}from"#shared/agent-definition.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";async function compileAgentConfig(e,t,n){let i=n.source,a=formatAgentConfigModulePath(e,i,n.binding),o=normalizeAgentDefinition(Object.hasOwn(n,`definition`)?n.definition:await loadModuleBackedDefinition({binding:n.binding,displayPath:a,kind:`agent config`,loadNamespace:createCompiledBindingNamespaceLoader({bindings:{[i.sourceId]:n.binding},registries:t.registries}),source:i}),`Expected the agent config export "${i.exportName??`default`}" from "${a}" to match the public eve shape.`),s=isDynamicModelDefinition(o.model)?o.model:void 0,c=s===void 0?await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the primary compaction trigger model`,contextWindowTokens:o.modelContextWindowTokens,providerOptions:o.modelOptions?.providerOptions,source:i,sourcePath:a,value:o.model}):void 0,l={},u={compaction:l,name:e.agentId,source:{...i}};o.description!==void 0&&(u.description=o.description);let d;s!==void 0&&(d={eventNames:Object.keys(s.events),exportName:i.exportName,sourceKind:`module`,logicalPath:i.logicalPath,sourceId:i.sourceId});let f=normalizeExperimentalDefinition(o.experimental);if(f!==void 0&&(u.experimental=f),o.build!==void 0&&(u.build={externalDependencies:o.build.externalDependencies===void 0?void 0:[...o.build.externalDependencies]}),o.outputSchema!==void 0&&(u.outputSchema=serializeOutputSchema(o.outputSchema)),o.reasoning!==void 0&&(u.reasoning=o.reasoning),o.limits!==void 0&&(u.limits={maxInputTokensPerSession:o.limits.maxInputTokensPerSession,maxOutputTokensPerSession:o.limits.maxOutputTokensPerSession,sessionTimeoutMs:o.limits.sessionTimeoutMs}),o.compaction?.model!==void 0&&(l.model=await normalizeAuthoredModelReference({modelCatalog:t.modelCatalog,purpose:`the compaction summary model`,contextWindowTokens:o.compaction.modelContextWindowTokens,providerOptions:o.modelOptions?.providerOptions,source:i,sourcePath:a,value:o.compaction.model})),o.compaction?.thresholdPercent!==void 0&&(l.thresholdPercent=o.compaction.thresholdPercent),d!==void 0)return{...u,dynamicModel:d};if(c===void 0)throw Error(`Expected a static agent model to compile to a concrete model reference.`);return{...u,model:c}}function normalizeExperimentalDefinition(e){if(e===void 0)return;let t={};return e.instrumentationProviders!==void 0&&(t.instrumentationProviders=e.instrumentationProviders),e.workflow!==void 0&&(t.workflow={world:e.workflow.world}),t}async function normalizeAuthoredModelReference(e){if(typeof e.value==`string`)return await withCompiledRuntimeModelLimits({id:formatLanguageModelGatewayId(e.value),providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(e.value,e.providerOptions)},e);let t=e.source;if(t===void 0)throw Error(`Expected ${e.purpose} to provide a valid AI SDK language model reference.`);let n=e.value,r=n.specificationVersion;if(r!==`v2`&&r!==`v3`&&r!==`v4`||typeof n.provider!=`string`||typeof n.modelId!=`string`||typeof n.doGenerate!=`function`||typeof n.doStream!=`function`)throw Error(`Expected the authored agent config export "${t.exportName??`default`}" from "${e.sourcePath??t.logicalPath}" to provide a valid AI SDK language model.`);let i={id:formatLanguageModelGatewayId(n),source:{exportName:t.exportName,sourceKind:`module`,logicalPath:t.logicalPath,sourceId:t.sourceId},providerOptions:parseProviderOptionsRecord(e.providerOptions),routing:classifyModelRouting(n,e.providerOptions)};if(e.contextWindowTokens===void 0){if(isChatGptModelRouting(i.routing))return{...i,contextWindowTokens:2e5};try{let t=await e.modelCatalog.getByProviderModelId(n.provider,n.modelId);if(t)return{...i,id:t.slug,contextWindowTokens:t.limits.contextWindowTokens,maxOutputTokens:t.limits.maxOutputTokens}}catch{}}return await withCompiledRuntimeModelLimits(i,e)}function formatAgentConfigModulePath(e,n,r){return r.backing.kind===`programmatic`?n.logicalPath:normalizeLogicalPath(relative(resolveTopLevelAgentRoot(e),r.backing.sourcePath))}function resolveTopLevelAgentRoot(e){let t=resolve(e.appRoot),r=resolve(t,`agent`);return isPathInsideOrEqual(r,resolve(e.agentRoot))?r:t}function isPathInsideOrEqual(n,r){let i=relative(n,r);return i===``||!i.startsWith(`..`)&&!isAbsolute(i)}async function withCompiledRuntimeModelLimits(e,t){if(t.contextWindowTokens!==void 0)return{...e,contextWindowTokens:t.contextWindowTokens};let n;try{n=await t.modelCatalog.getModelLimits(e.id)}catch(n){throw Error(`Failed to load AI Gateway model metadata for ${t.purpose} "${e.id}". ${toErrorMessage(n)}`)}if(n===null)throw Error(`Cannot compile agent compaction because ${t.purpose} "${e.id}" does not have known AI Gateway context window metadata.`);return{...e,contextWindowTokens:n.contextWindowTokens,maxOutputTokens:n.maxOutputTokens}}function parseProviderOptionsRecord(e){if(e===void 0)return;let t={};for(let[n,r]of Object.entries(e))t[n]=parseJsonObject(r);return t}export{compileAgentConfig};
@@ -1 +1 @@
1
- import{posix}from"node:path";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{canonicalSourceSlot}from"#compiler/source-graph.js";import{mountRefNamespace,packageStateNamespace}from"#discover/extensions.js";import"#compiler/normalize-subagent.js";function collectSelectedSourceIds(e){return new Set([...e.selected.values()].map(e=>e.sourceId))}function assertRootOnlyConfig(e,t,n){if(!t){if(e.experimental?.workflow!==void 0)throw Error(`Workflow runtime configuration is only supported on the root agent config. Remove "experimental.workflow" from "${n}".`);if(e.experimental?.tasks!==void 0)throw Error(`Background tasks are only supported on the root agent config. Remove "experimental.tasks" from "${n}".`)}}function assertApplicationOverlayCanApplyToAllNodes(e){let t=e.find(e=>{let t=canonicalSourceSlot(e);return t===`agent`||t.startsWith(`channels/`)||t.startsWith(`schedules/`)||t.startsWith(`subagents/`)||t.startsWith(`extensions/`)});if(t!==void 0)throw Error(`Application programmatic source registered for all local nodes cannot declare "${t}".`)}function assertUniqueRegistryIds(e){let t=new Set;for(let n of e)for(let e of n.sources.keys()){if(t.has(e))throw Error(`Programmatic agent source id "${e}" is registered more than once.`);t.add(e)}}function assertRootOwnedSpecialTool(e,n){if(e.nodeId!==ROOT_COMPILED_AGENT_NODE_ID)throw Error(`${n} can only be enabled on the root agent.`);assertNonExtensionSpecialTool(e,n)}function assertNonExtensionSpecialTool(e,t){if(e.owner.kind===`extension`)throw Error(`${t} cannot be configured by an extension source.`)}function withExtensionNamespace(e,t){return t.kind===`extension`?{...e,extensionNamespace:t.namespace}:e}function assertUniqueBy(e,t,n){let r=new Set;for(let i of e){let e=t(i);if(r.has(e))throw Error(`Compiled ${n} "${e}" is declared more than once.`);r.add(e)}}function expectSubagentDescription(e,t){if(e.description===void 0||e.description.trim().length===0)throw Error(`Subagent "${t.logicalPath}" must define a non-empty description.`);return e.description}function createCompiledRemoteAgent(t){let n=t.source.logicalPath.endsWith(`.ts`)||t.source.logicalPath.endsWith(`.js`)?t.source.logicalPath:posix.join(t.source.logicalPath,`agent.ts`),r=t.source.sourceId,i={backing:t.binding.backing,logicalPath:n,owner:t.owner,usage:t.binding.usage},a={backing:{kind:`resource`,sourcePath:t.source.entryPath},binding:i,description:t.definition.description,entryPath:t.source.entryPath,logicalPath:n,name:t.source.subagentId,nodeId:t.nodeId,owner:t.owner,parentNodeId:t.parentNodeId,path:t.definition.path,rootPath:t.source.rootPath,sourceId:r,sourceKind:`module`};return t.sourceRef.exportName!==void 0&&Object.assign(a,{exportName:t.sourceRef.exportName}),t.definition.outputSchema!==void 0&&Object.assign(a,{outputSchema:t.definition.outputSchema}),t.definition.url!==void 0&&Object.assign(a,{url:t.definition.url}),a}function compileExtensionMounts(e,t){let n=collectSelectedSourceIds(t);return e.resolvedExtensions.flatMap(t=>{let a=e.extensions.find(e=>mountRefNamespace(e.logicalPath)===t.namespace);return a===void 0||!n.has(a.sourceId)?[]:[{externalDependencies:[...t.externalDependencies],mountLogicalPath:a.logicalPath,mountSourceId:a.sourceId,namespace:t.namespace,packageName:t.packageName,packageNamespace:packageStateNamespace(t.packageName),sourceRoot:t.sourceRoot}]})}function mergeExternalDependencies(...e){return[...new Set(e.flatMap(e=>e??[]))]}export{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertRootOwnedSpecialTool,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,withExtensionNamespace};
1
+ import{posix}from"node:path";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{canonicalSourceSlot}from"#compiler/source-graph.js";import{mountRefNamespace,packageStateNamespace}from"#discover/extensions.js";import"#compiler/normalize-subagent.js";function collectSelectedSourceIds(e){return new Set([...e.selected.values()].map(e=>e.sourceId))}function assertRootOnlyConfig(e,t,n){if(!t&&e.experimental?.workflow!==void 0)throw Error(`Workflow runtime configuration is only supported on the root agent config. Remove "experimental.workflow" from "${n}".`)}function assertApplicationOverlayCanApplyToAllNodes(e){let t=e.find(e=>{let t=canonicalSourceSlot(e);return t===`agent`||t.startsWith(`channels/`)||t.startsWith(`schedules/`)||t.startsWith(`subagents/`)||t.startsWith(`extensions/`)});if(t!==void 0)throw Error(`Application programmatic source registered for all local nodes cannot declare "${t}".`)}function assertUniqueRegistryIds(e){let t=new Set;for(let n of e)for(let e of n.sources.keys()){if(t.has(e))throw Error(`Programmatic agent source id "${e}" is registered more than once.`);t.add(e)}}function assertRootOwnedSpecialTool(e,n){if(e.nodeId!==ROOT_COMPILED_AGENT_NODE_ID)throw Error(`${n} can only be enabled on the root agent.`);assertNonExtensionSpecialTool(e,n)}function assertNonExtensionSpecialTool(e,t){if(e.owner.kind===`extension`)throw Error(`${t} cannot be configured by an extension source.`)}function withExtensionNamespace(e,t){return t.kind===`extension`?{...e,extensionNamespace:t.namespace}:e}function assertUniqueBy(e,t,n){let r=new Set;for(let i of e){let e=t(i);if(r.has(e))throw Error(`Compiled ${n} "${e}" is declared more than once.`);r.add(e)}}function expectSubagentDescription(e,t){if(e.description===void 0||e.description.trim().length===0)throw Error(`Subagent "${t.logicalPath}" must define a non-empty description.`);return e.description}function createCompiledRemoteAgent(t){let n=t.source.logicalPath.endsWith(`.ts`)||t.source.logicalPath.endsWith(`.js`)?t.source.logicalPath:posix.join(t.source.logicalPath,`agent.ts`),r=t.source.sourceId,i={backing:t.binding.backing,logicalPath:n,owner:t.owner,usage:t.binding.usage},a={backing:{kind:`resource`,sourcePath:t.source.entryPath},binding:i,description:t.definition.description,entryPath:t.source.entryPath,logicalPath:n,name:t.source.subagentId,nodeId:t.nodeId,owner:t.owner,parentNodeId:t.parentNodeId,path:t.definition.path,rootPath:t.source.rootPath,sourceId:r,sourceKind:`module`};return t.sourceRef.exportName!==void 0&&Object.assign(a,{exportName:t.sourceRef.exportName}),t.definition.outputSchema!==void 0&&Object.assign(a,{outputSchema:t.definition.outputSchema}),t.definition.url!==void 0&&Object.assign(a,{url:t.definition.url}),a}function compileExtensionMounts(e,t){let n=collectSelectedSourceIds(t);return e.resolvedExtensions.flatMap(t=>{let a=e.extensions.find(e=>mountRefNamespace(e.logicalPath)===t.namespace);return a===void 0||!n.has(a.sourceId)?[]:[{externalDependencies:[...t.externalDependencies],mountLogicalPath:a.logicalPath,mountSourceId:a.sourceId,namespace:t.namespace,packageName:t.packageName,packageNamespace:packageStateNamespace(t.packageName),sourceRoot:t.sourceRoot}]})}function mergeExternalDependencies(...e){return[...new Set(e.flatMap(e=>e??[]))]}export{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertRootOwnedSpecialTool,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,withExtensionNamespace};
@@ -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,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{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,r={}){let i=[frameworkAgentSourceRegistry,...r.sourceRegistries??[]];assertUniqueRegistryIds(i);let a={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:i},s=r.diagnostics??[],c=await new AgentGraphCompiler(a,i,s).compileStaticNode({inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,owner:{kind:`application`}}),l=[c.manifest,...c.descendants.map(e=>e.agent)].flatMap(e=>e.tools).find(e=>e.execution===`background`);if(l!==void 0&&c.manifest.config.experimental?.tasks!==!0)throw Error(`Background tool "${l.name}" requires experimental.tasks: true in the root agent config.`);let u=summarizeCompilerDiagnostics(s),d=c.descendants.map(e=>(e.configResolver,{...e,agent:{...e.agent,diagnosticsSummary:u}}));return createCompiledAgentManifest({...c.manifest,diagnosticsSummary:u,subagents:d})}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);let i=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));i.length>0&&(n={...n,build:{...n.build,externalDependencies:i}});let a=finalizeNodeSourceState(t,i);markConfigRuntimeEntries(n,a.evaluation),assertInstrumentationLayoutConfig(n,a);let o=await this.compileResources(e,a),s=await this.compileChildren(e,a,i),c=createCompiledAgentNodeManifest({...o,config:n,remoteAgents:s.remoteAgents});return{descendants:s.nodes,manifest:c}}async compileChildren(e,t,n){let o=[],s=[],c=collectSelectedSourceIds(t.composed),l=t.projected.subagents.filter(e=>c.has(e.candidate.sourceId));for(let t of l){let c=t.source,l=createCompiledSubagentNodeId(e.nodeId,c.sourceId),u={extensionScope:t.extensionScope??e.extensionScope,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:c.manifest,nodeId:l,owner:t.owner,parentNodeId:e.nodeId},d=await this.createPhaseOneNodeSourceState(u,n),f=normalizeSubagentConfig(d.selectedConfig.definition,`Expected the subagent config export "${d.selectedConfig.source.exportName??`default`}" from "${c.entryPath}" to match the public eve shape.`);if(f.kind===`remote`){assertRemoteAgentDefinitionHasNoLocalPackageEntries(c);let n=d.selectedConfig.source.sourceId;d.evaluation.setBindings({[n]:d.selectedConfig.binding}),d.evaluation.requireRuntimeEntry(n);let r=d.evaluation.finalizeBindings()[n];if(r===void 0)throw Error(`Remote subagent "${l}" has no finalized config binding.`);s.push(createCompiledRemoteAgent({binding:r,definition:f,nodeId:l,owner:t.owner,parentNodeId:e.nodeId,source:c,sourceRef:d.selectedConfig.source}));continue}let p,m;f.kind===`local`?(p=await compileAgentConfig(c.manifest,this.context,{binding:d.selectedConfig.binding,definition:f.definition,source:d.selectedConfig.source}),assertRootOnlyConfig(p,!1,c.manifest.agentId)):m=f.build?.externalDependencies;let h=mergeExternalDependencies(n,p?.build?.externalDependencies,m,c.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));p!==void 0&&h.length>0&&(p={...p,build:{...p.build,externalDependencies:h}});let g=finalizeNodeSourceState(d,h);p===void 0?g.evaluation.requireRuntimeEntry(d.selectedConfig.source.sourceId):markConfigRuntimeEntries(p,g.evaluation),p!==void 0&&assertInstrumentationLayoutConfig(p,g);let _=await this.compileResources(u,g),v=await this.compileChildren(u,g,h),b={backing:t.candidate.backing,entryPath:c.entryPath,logicalPath:c.logicalPath,name:c.subagentId,nodeId:l,owner:t.owner,parentNodeId:e.nodeId,rootPath:c.rootPath,sourceId:c.sourceId,sourceKind:`module`},x;x=p===void 0?{...b,agent:createCompiledAgentResources({..._,remoteAgents:v.remoteAgents}),configResolver:{build:f.kind===`dynamic`?f.build:void 0,eventNames:f.kind===`dynamic`?f.eventNames:[],exportName:d.selectedConfig.source.exportName,logicalPath:d.selectedConfig.source.logicalPath,sourceId:d.selectedConfig.source.sourceId,sourceKind:`module`}}:{...b,agent:createCompiledAgentNodeManifest({..._,config:p,remoteAgents:v.remoteAgents}),description:expectSubagentDescription(p,c)},o.push(x,...v.nodes)}return{nodes:o,remoteAgents:s}}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],l=composeAgentModuleCandidates(o),d=projectSelectedSources({candidates:l.selected.values(),resources:n.resources});return{composed:l,orderedCandidates:o,projected:n,sourcesBySourceId:new Map(d.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(t,n){let r=[],a=[],s=[],c=[],l=[],u=[],p=[],m=[],h=[],g=[],_=[],y=[],S,C,w,T=collectSelectedSourceIds(n.composed),E=n.evaluation.loadNamespace;for(let i of n.orderedCandidates){if(!T.has(i.sourceId))continue;let o=n.sourcesBySourceId.get(i.sourceId);if(o===void 0)continue;let d=n.bindings[i.sourceId],x={binding:d,loadNamespace:E,owner:i.owner};switch(o.kind){case`config`:case`extension`:break;case`channel`:{let r=await compileChannelDefinition(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E});r.kind===`disabled`?(n.composed=disableComposedCandidate({candidate:i,composed:n.composed}),delete n.bindings[i.sourceId],T.delete(i.sourceId)):y.push(...r.definitions);break}case`connection`:{let e=await compileConnectionDefinition(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E});e.kind===`connection`?p.push(e.definition):m.push(withExtensionNamespace(e.definition,i.owner)),n.evaluation.requireRuntimeEntry(i.sourceId);break}case`hook`:g.push(await compileHookEntry(o.source,{binding:d,loadNamespace:E})),n.evaluation.requireRuntimeEntry(i.sourceId);break;case`instructions`:{let e=await compileInstructionsEntry(t.manifest.agentRoot,o.source,x);e.kind===`instructions`?l.push(e.definition):(u.push(e.definition),n.evaluation.requireRuntimeEntry(i.sourceId));break}case`instrumentation`:C=o.source,n.evaluation.requireRuntimeEntry(i.sourceId);break;case`memory`:h.push(await compileMemoryDefinition(o.source,{binding:d,loadNamespace:E})),n.evaluation.requireRuntimeEntry(i.sourceId);break;case`sandbox`:S=await compileSandboxDefinition(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E}),S.inheritsParent||n.evaluation.requireRuntimeEntry(i.sourceId);break;case`schedule`:{let e=await compileScheduleDefinition(t.manifest.agentRoot,o.source,x);_.push(e),e.sourceKind===`module`&&e.hasRun&&n.evaluation.requireRuntimeEntry(i.sourceId);break}case`skill`:{let e=await compileSkillSource(t.manifest.agentRoot,o.source,x);e.kind===`skill`?s.push(e.definition):(c.push(withExtensionNamespace(e.definition,i.owner)),n.evaluation.requireRuntimeEntry(i.sourceId));break}case`tool`:{let e=await compileToolEntry(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E});e.kind===`disabled`?(n.composed=disableComposedCandidate({candidate:i,composed:n.composed}),delete n.bindings[i.sourceId],T.delete(i.sourceId)):e.kind===`tool`?(r.push(e.definition),e.definition.hasExecute&&n.evaluation.requireRuntimeEntry(i.sourceId)):e.kind===`dynamic-tool`?(a.push(withExtensionNamespace(e.definition,i.owner)),n.evaluation.requireRuntimeEntry(i.sourceId)):e.kind===`workflow-tool`?(assertRootOwnedSpecialTool(i,`Workflow`),w={...o.source,maxSubagents:e.maxSubagents}):(assertNonExtensionSpecialTool(i,`Web search`),r.push(e.definition));break}}}if(S===void 0)throw Error(`Agent node "${t.nodeId}" has no selected sandbox source.`);assertUniqueBy(r,e=>e.name,`tool name`),assertUniqueBy(a,e=>e.slug,`dynamic tool slug`),assertUniqueBy(p,e=>e.connectionName,`connection name`),assertUniqueBy(m,e=>e.slug,`dynamic connection slug`),assertUniqueBy(s,e=>e.name,`skill name`);let D=createCompiledChannelRoutePlan({bindings:n.bindings,channels:y,diagnostics:this.diagnostics,nodeId:t.nodeId,sources:Object.fromEntries(n.orderedCandidates.map(e=>[e.sourceId,describeAgentSourceCandidate(e)]))});for(let e of D.effective)n.evaluation.requireRuntimeEntry(e.sourceId);let O=compileExtensionMounts(t.manifest,n.composed);for(let e of O)n.evaluation.requireRuntimeEntry(e.mountSourceId);let k=n.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:t.manifest.agentRoot,appRoot:t.manifest.appRoot,bindings:k,channelRoutes:D,connections:p,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:m,dynamicInstructions:u,dynamicSkills:c,dynamicTools:a,extensionMounts:O,hooks:g,memories:h,instructions:l,instrumentation:C,sandbox:S,sandboxWorkspaces:t.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:_,skills:s,sourceComposition:n.composed.composition,tools:r,workflowTool:w})}};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,assertRootOwnedSpecialTool,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileExtensionMounts,createCompiledRemoteAgent,expectSubagentDescription,mergeExternalDependencies,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{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,r={}){let i=[frameworkAgentSourceRegistry,...r.sourceRegistries??[]];assertUniqueRegistryIds(i);let a={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:i},s=r.diagnostics??[],c=await new AgentGraphCompiler(a,i,s).compileStaticNode({inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,owner:{kind:`application`}}),l=summarizeCompilerDiagnostics(s),u=c.descendants.map(e=>(e.configResolver,{...e,agent:{...e.agent,diagnosticsSummary:l}}));return createCompiledAgentManifest({...c.manifest,diagnosticsSummary:l,subagents:u})}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);let i=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));i.length>0&&(n={...n,build:{...n.build,externalDependencies:i}});let a=finalizeNodeSourceState(t,i);markConfigRuntimeEntries(n,a.evaluation),assertInstrumentationLayoutConfig(n,a);let o=await this.compileResources(e,a),s=await this.compileChildren(e,a,i),c=createCompiledAgentNodeManifest({...o,config:n,remoteAgents:s.remoteAgents});return{descendants:s.nodes,manifest:c}}async compileChildren(e,t,n){let o=[],s=[],c=collectSelectedSourceIds(t.composed),l=t.projected.subagents.filter(e=>c.has(e.candidate.sourceId));for(let t of l){let c=t.source,l=createCompiledSubagentNodeId(e.nodeId,c.sourceId),u={extensionScope:t.extensionScope??e.extensionScope,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:c.manifest,nodeId:l,owner:t.owner,parentNodeId:e.nodeId},d=await this.createPhaseOneNodeSourceState(u,n),f=normalizeSubagentConfig(d.selectedConfig.definition,`Expected the subagent config export "${d.selectedConfig.source.exportName??`default`}" from "${c.entryPath}" to match the public eve shape.`);if(f.kind===`remote`){assertRemoteAgentDefinitionHasNoLocalPackageEntries(c);let n=d.selectedConfig.source.sourceId;d.evaluation.setBindings({[n]:d.selectedConfig.binding}),d.evaluation.requireRuntimeEntry(n);let r=d.evaluation.finalizeBindings()[n];if(r===void 0)throw Error(`Remote subagent "${l}" has no finalized config binding.`);s.push(createCompiledRemoteAgent({binding:r,definition:f,nodeId:l,owner:t.owner,parentNodeId:e.nodeId,source:c,sourceRef:d.selectedConfig.source}));continue}let p,m;f.kind===`local`?(p=await compileAgentConfig(c.manifest,this.context,{binding:d.selectedConfig.binding,definition:f.definition,source:d.selectedConfig.source}),assertRootOnlyConfig(p,!1,c.manifest.agentId)):m=f.build?.externalDependencies;let h=mergeExternalDependencies(n,p?.build?.externalDependencies,m,c.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));p!==void 0&&h.length>0&&(p={...p,build:{...p.build,externalDependencies:h}});let g=finalizeNodeSourceState(d,h);p===void 0?g.evaluation.requireRuntimeEntry(d.selectedConfig.source.sourceId):markConfigRuntimeEntries(p,g.evaluation),p!==void 0&&assertInstrumentationLayoutConfig(p,g);let _=await this.compileResources(u,g),v=await this.compileChildren(u,g,h),b={backing:t.candidate.backing,entryPath:c.entryPath,logicalPath:c.logicalPath,name:c.subagentId,nodeId:l,owner:t.owner,parentNodeId:e.nodeId,rootPath:c.rootPath,sourceId:c.sourceId,sourceKind:`module`},x;x=p===void 0?{...b,agent:createCompiledAgentResources({..._,remoteAgents:v.remoteAgents}),configResolver:{build:f.kind===`dynamic`?f.build:void 0,eventNames:f.kind===`dynamic`?f.eventNames:[],exportName:d.selectedConfig.source.exportName,logicalPath:d.selectedConfig.source.logicalPath,sourceId:d.selectedConfig.source.sourceId,sourceKind:`module`}}:{...b,agent:createCompiledAgentNodeManifest({..._,config:p,remoteAgents:v.remoteAgents}),description:expectSubagentDescription(p,c)},o.push(x,...v.nodes)}return{nodes:o,remoteAgents:s}}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],l=composeAgentModuleCandidates(o),d=projectSelectedSources({candidates:l.selected.values(),resources:n.resources});return{composed:l,orderedCandidates:o,projected:n,sourcesBySourceId:new Map(d.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(t,n){let r=[],a=[],s=[],c=[],l=[],u=[],p=[],m=[],h=[],g=[],_=[],y=[],S,C,w,T=collectSelectedSourceIds(n.composed),E=n.evaluation.loadNamespace;for(let i of n.orderedCandidates){if(!T.has(i.sourceId))continue;let o=n.sourcesBySourceId.get(i.sourceId);if(o===void 0)continue;let d=n.bindings[i.sourceId],x={binding:d,loadNamespace:E,owner:i.owner};switch(o.kind){case`config`:case`extension`:break;case`channel`:{let r=await compileChannelDefinition(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E});r.kind===`disabled`?(n.composed=disableComposedCandidate({candidate:i,composed:n.composed}),delete n.bindings[i.sourceId],T.delete(i.sourceId)):y.push(...r.definitions);break}case`connection`:{let e=await compileConnectionDefinition(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E});e.kind===`connection`?p.push(e.definition):m.push(withExtensionNamespace(e.definition,i.owner)),n.evaluation.requireRuntimeEntry(i.sourceId);break}case`hook`:g.push(await compileHookEntry(o.source,{binding:d,loadNamespace:E})),n.evaluation.requireRuntimeEntry(i.sourceId);break;case`instructions`:{let e=await compileInstructionsEntry(t.manifest.agentRoot,o.source,x);e.kind===`instructions`?l.push(e.definition):(u.push(e.definition),n.evaluation.requireRuntimeEntry(i.sourceId));break}case`instrumentation`:C=o.source,n.evaluation.requireRuntimeEntry(i.sourceId);break;case`memory`:h.push(await compileMemoryDefinition(o.source,{binding:d,loadNamespace:E})),n.evaluation.requireRuntimeEntry(i.sourceId);break;case`sandbox`:S=await compileSandboxDefinition(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E}),S.inheritsParent||n.evaluation.requireRuntimeEntry(i.sourceId);break;case`schedule`:{let e=await compileScheduleDefinition(t.manifest.agentRoot,o.source,x);_.push(e),e.sourceKind===`module`&&e.hasRun&&n.evaluation.requireRuntimeEntry(i.sourceId);break}case`skill`:{let e=await compileSkillSource(t.manifest.agentRoot,o.source,x);e.kind===`skill`?s.push(e.definition):(c.push(withExtensionNamespace(e.definition,i.owner)),n.evaluation.requireRuntimeEntry(i.sourceId));break}case`tool`:{let e=await compileToolEntry(t.manifest.agentRoot,o.source,{binding:d,loadNamespace:E});e.kind===`disabled`?(n.composed=disableComposedCandidate({candidate:i,composed:n.composed}),delete n.bindings[i.sourceId],T.delete(i.sourceId)):e.kind===`tool`?(r.push(e.definition),e.definition.hasExecute&&n.evaluation.requireRuntimeEntry(i.sourceId)):e.kind===`dynamic-tool`?(a.push(withExtensionNamespace(e.definition,i.owner)),n.evaluation.requireRuntimeEntry(i.sourceId)):e.kind===`workflow-tool`?(assertRootOwnedSpecialTool(i,`Workflow`),w={...o.source,maxSubagents:e.maxSubagents}):(assertNonExtensionSpecialTool(i,`Web search`),r.push(e.definition));break}}}if(S===void 0)throw Error(`Agent node "${t.nodeId}" has no selected sandbox source.`);assertUniqueBy(r,e=>e.name,`tool name`),assertUniqueBy(a,e=>e.slug,`dynamic tool slug`),assertUniqueBy(p,e=>e.connectionName,`connection name`),assertUniqueBy(m,e=>e.slug,`dynamic connection slug`),assertUniqueBy(s,e=>e.name,`skill name`);let D=createCompiledChannelRoutePlan({bindings:n.bindings,channels:y,diagnostics:this.diagnostics,nodeId:t.nodeId,sources:Object.fromEntries(n.orderedCandidates.map(e=>[e.sourceId,describeAgentSourceCandidate(e)]))});for(let e of D.effective)n.evaluation.requireRuntimeEntry(e.sourceId);let O=compileExtensionMounts(t.manifest,n.composed);for(let e of O)n.evaluation.requireRuntimeEntry(e.mountSourceId);let k=n.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:t.manifest.agentRoot,appRoot:t.manifest.appRoot,bindings:k,channelRoutes:D,connections:p,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:m,dynamicInstructions:u,dynamicSkills:c,dynamicTools:a,extensionMounts:O,hooks:g,memories:h,instructions:l,instrumentation:C,sandbox:S,sandboxWorkspaces:t.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:_,skills:s,sourceComposition:n.composed.composition,tools:r,workflowTool:w})}};export{compileAgentManifest};
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{SessionDynamicToolMetadataKey,StepDynamicToolMetadataKey,TurnDynamicToolMetadataKey}from"#context/keys.js";import{toInputSchema,toOutputSchema}from"#tools/schema.js";import{isCurrentDynamicToolMetadata}from"#context/dynamic-tool-metadata.js";import{createToolExecuteWithAuth}from"#execution/tool-auth.js";import{callDurableDynamicCallback,lookupDurableDynamicCallback}from"#tools/durable-callbacks.js";const log=createLogger(`dynamic-tools`);function missingCallbackError(e,t){return Error(`Dynamic tool "${e.name}" cannot replay its ${t} callback because it is not registered in this process. The tool was removed or renamed since this call was parked, or its resolver did not run. Restore the tool definition or start a new session.`)}function buildReplayedApproval(e){let t=e.callbacks.approvalRequest;if(t===void 0)return;let n=lookupDurableDynamicCallback(e.name,`approvalRequest`),r=n===void 0?async()=>(log.error(missingCallbackError(e,`approvalRequest`).message),`user-approval`):async e=>await callDurableDynamicCallback(n,t.closure,e),i=e.callbacks.approvalResponse;if(i===void 0)return r;let a=lookupDurableDynamicCallback(e.name,`approvalResponse`);return{request:r,response:a===void 0?async()=>{let t=missingCallbackError(e,`approvalResponse`);return log.error(t.message),{reason:t.message,status:`rejected`}}:async e=>await callDurableDynamicCallback(a,i.closure,e)}}function replayDynamicTools(e){return e.map(e=>{let t=e.callbacks.execute,n=lookupDurableDynamicCallback(e.name,`execute`),r=e.callbacks.toModelOutput,o=r===void 0?void 0:lookupDurableDynamicCallback(e.name,`toModelOutput`);return{description:e.description,execute:createToolExecuteWithAuth({scope:e.name,execute:(r,i)=>{if(n===void 0)throw missingCallbackError(e,`execute`);return callDurableDynamicCallback(n,t.closure,r,i)}}),inputSchema:toInputSchema(e.inputSchema),name:e.name,approval:buildReplayedApproval(e),outputSchema:toOutputSchema(e.outputSchema),...r===void 0?{}:{toModelOutput:t=>{if(o===void 0)throw missingCallbackError(e,`toModelOutput`);return callDurableDynamicCallback(o,r.closure,t)}}}})}function requireCurrentDynamicToolMetadata(e){let t=e.find(e=>!isCurrentDynamicToolMetadata(e));if(t!==void 0)throw Error(`Dynamic tool "${t.name}" reached replay before its persisted metadata was converted to the current schema.`);return e}function buildResponseAuthorizationTools(e){let t=new Map;for(let n of e.context===void 0?[]:buildDynamicTools(e.context))t.has(n.name)||t.set(n.name,n);for(let[n,r]of e.authoredTools)t.has(n)||t.set(n,r);return t}function buildDynamicTools(e){let i=replayDynamicTools(requireCurrentDynamicToolMetadata(e.get(StepDynamicToolMetadataKey)??[])),a=replayDynamicTools(requireCurrentDynamicToolMetadata(e.get(TurnDynamicToolMetadataKey)??[])),o=replayDynamicTools(requireCurrentDynamicToolMetadata(e.get(SessionDynamicToolMetadataKey)??[]));return[...i,...a,...o]}export{buildDynamicTools,buildResponseAuthorizationTools,replayDynamicTools};
1
+ import{createLogger}from"#internal/logging.js";import{SessionDynamicToolMetadataKey,StepDynamicToolMetadataKey,TurnDynamicToolMetadataKey}from"#context/keys.js";import{toInputSchema,toOutputSchema}from"#tools/schema.js";import{isCurrentDynamicToolMetadata}from"#context/dynamic-tool-metadata.js";import{createToolExecuteWithAuth}from"#execution/tool-auth.js";import{callDurableDynamicCallback,lookupDurableDynamicCallback}from"#tools/durable-callbacks.js";const log=createLogger(`dynamic-tools`);function missingCallbackError(e,t){return Error(`Dynamic tool "${e.name}" cannot replay its ${t} callback because it is not registered in this process. The tool was removed or renamed since this call was parked, or its resolver did not run. Restore the tool definition or start a new session.`)}function buildReplayedApproval(e){let t=e.callbacks.approvalRequest;if(t===void 0)return;let n=lookupDurableDynamicCallback(e.name,`approvalRequest`),r=n===void 0?async()=>(log.error(missingCallbackError(e,`approvalRequest`).message),`user-approval`):async e=>await callDurableDynamicCallback(n,t.closure,e),i=e.callbacks.approvalResponse;if(i===void 0)return r;let a=lookupDurableDynamicCallback(e.name,`approvalResponse`);return{request:r,response:a===void 0?async()=>{let t=missingCallbackError(e,`approvalResponse`);return log.error(t.message),{reason:t.message,status:`rejected`}}:async e=>await callDurableDynamicCallback(a,i.closure,e)}}function replayDynamicTools(e){return e.map(e=>{let t=e.callbacks.execute,n=lookupDurableDynamicCallback(e.name,`execute`),r=e.callbacks.toModelOutput,o=r===void 0?void 0:lookupDurableDynamicCallback(e.name,`toModelOutput`);return{description:e.description,execute:e.execution===`background`?createToolExecuteWithAuth({execution:`background`,scope:e.name,execute:(r,i,a)=>{if(n===void 0)throw missingCallbackError(e,`execute`);return callDurableDynamicCallback(n,t.closure,r,i,a)}}):createToolExecuteWithAuth({scope:e.name,execute:(r,i)=>{if(n===void 0)throw missingCallbackError(e,`execute`);return callDurableDynamicCallback(n,t.closure,r,i)}}),inputSchema:toInputSchema(e.inputSchema),name:e.name,execution:e.execution,approval:buildReplayedApproval(e),outputSchema:toOutputSchema(e.outputSchema),...r===void 0?{}:{toModelOutput:t=>{if(o===void 0)throw missingCallbackError(e,`toModelOutput`);return callDurableDynamicCallback(o,r.closure,t)}}}})}function requireCurrentDynamicToolMetadata(e){let t=e.find(e=>!isCurrentDynamicToolMetadata(e));if(t!==void 0)throw Error(`Dynamic tool "${t.name}" reached replay before its persisted metadata was converted to the current schema.`);return e}function buildResponseAuthorizationTools(e){let t=new Map;for(let n of e.context===void 0?[]:buildDynamicTools(e.context))t.has(n.name)||t.set(n.name,n);for(let[n,r]of e.authoredTools)t.has(n)||t.set(n,r);return t}function buildDynamicTools(e){let i=replayDynamicTools(requireCurrentDynamicToolMetadata(e.get(StepDynamicToolMetadataKey)??[])),a=replayDynamicTools(requireCurrentDynamicToolMetadata(e.get(TurnDynamicToolMetadataKey)??[])),o=replayDynamicTools(requireCurrentDynamicToolMetadata(e.get(SessionDynamicToolMetadataKey)??[]));return[...i,...a,...o]}export{buildDynamicTools,buildResponseAuthorizationTools,replayDynamicTools};
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,TasksEnabledKey,TurnDynamicSubagentSelectionsKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{createBackgroundSubagentHarnessDefinition,createHarnessDelegationToolDefinition}from"#execution/delegation-tool.js";import{createPreparedRuntimeSubagentTool}from"#runtime/subagents/registry.js";import{normalizeDynamicSubagentAgentConfig}from"#runtime/subagents/dynamic-agent-config.js";import{normalizeDynamicRemoteAgentConfig}from"#runtime/subagents/dynamic-remote-agent-config.js";const log=createLogger(`dynamic-subagents`),ALLOWED_DYNAMIC_SUBAGENT_EVENTS=new Set([`session.started`,`turn.started`]);async function resolveSelections(e){let t=await Promise.allSettled(e.resolvers.map(async t=>{let n=t.events[e.event.type];if(n===void 0)return[t.nodeId,null];let r=await n(e.event,buildResolveContext(e.ctx,e.messages));if(r==null)return[t.nodeId,null];if(isRemoteAgentDefinition(r)){let e=await normalizeDynamicRemoteAgentConfig({name:t.name,value:r}),n=createPreparedRuntimeSubagentTool({description:e.description,kind:`remote`,logicalPath:t.logicalPath,name:t.name,nodeId:t.nodeId,outputSchema:e.outputSchema,path:e.path,sourceId:t.sourceId,sourceKind:t.sourceKind,url:e.url});return[t.nodeId,{kind:`remote`,prepared:n,remoteAgent:e}]}let i=await normalizeDynamicSubagentAgentConfig({name:t.name,state:e.ctx,value:r}),a=createPreparedRuntimeSubagentTool({description:i.description,kind:`subagent`,logicalPath:t.logicalPath,name:t.name,nodeId:t.nodeId,sourceId:t.sourceId,sourceKind:t.sourceKind});return[t.nodeId,{agentConfig:i,kind:`subagent`,prepared:a}]})),n={};for(let r=0;r<t.length;r+=1){let i=t[r],o=e.resolvers[r];if(i.status===`rejected`){log.error(`Dynamic subagent resolver (${e.event.type}) threw — omitting subagent.`,{error:toErrorMessage(i.reason),subagentName:o.name}),n[o.nodeId]=null;continue}n[i.value[0]]=i.value[1]}return n}function isRemoteAgentDefinition(e){return typeof e==`object`&&!!e&&e.kind===`remote`}async function dispatchDynamicSubagentEvent(e){if(!ALLOWED_DYNAMIC_SUBAGENT_EVENTS.has(e.event.type))return;let t=e.resolvers.filter(t=>t.eventNames.includes(e.event.type)),r=await resolveSelections({...e,resolvers:t});e.event.type===`session.started`?e.ctx.set(SessionDynamicSubagentSelectionsKey,r):e.ctx.set(TurnDynamicSubagentSelectionsKey,r)}async function refreshDynamicSessionSubagentsForRuntimeRevision(e){if(e.ctx.get(SessionDynamicSubagentRuntimeRevisionKey)===e.runtimeRevision)return;let r=e.resolvers.filter(e=>e.eventNames.includes(`session.started`)),i=await resolveSelections({...e,resolvers:r});e.ctx.set(SessionDynamicSubagentSelectionsKey,i),e.ctx.set(SessionDynamicSubagentRuntimeRevisionKey,e.runtimeRevision)}function buildDynamicSubagentTools(e){let t=e.get(SessionDynamicSubagentSelectionsKey)??{},a=e.get(TurnDynamicSubagentSelectionsKey)??{},o={...t,...a},s=[],c=new Set;for(let t of Object.values(o))if(t!==null){if(c.has(t.prepared.name))throw Error(`Found multiple active dynamic subagents named "${t.prepared.name}". Subagent names must be unique at runtime.`);c.add(t.prepared.name),s.push(e.get(TasksEnabledKey)===!0?createBackgroundSubagentHarnessDefinition(t.prepared):createHarnessDelegationToolDefinition(t.prepared))}return s}function getDynamicSubagentSelection(e,t){let r=e.get(TurnDynamicSubagentSelectionsKey)??{};return Object.hasOwn(r,t)?r[t]??void 0:(e.get(SessionDynamicSubagentSelectionsKey)??{})[t]??void 0}export{buildDynamicSubagentTools,dispatchDynamicSubagentEvent,getDynamicSubagentSelection,refreshDynamicSessionSubagentsForRuntimeRevision};
1
+ import{createLogger}from"#internal/logging.js";import{SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,TurnDynamicSubagentSelectionsKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{createPreparedWorkflowToolHarnessDefinition}from"#execution/tools/workflow/background.js";import{createPreparedRuntimeSubagentTool}from"#runtime/subagents/registry.js";import{normalizeDynamicSubagentAgentConfig}from"#runtime/subagents/dynamic-agent-config.js";import{normalizeDynamicRemoteAgentConfig}from"#runtime/subagents/dynamic-remote-agent-config.js";const log=createLogger(`dynamic-subagents`),ALLOWED_DYNAMIC_SUBAGENT_EVENTS=new Set([`session.started`,`turn.started`]);async function resolveSelections(e){let t=await Promise.allSettled(e.resolvers.map(async t=>{let n=t.events[e.event.type];if(n===void 0)return[t.nodeId,null];let r=await n(e.event,buildResolveContext(e.ctx,e.messages));if(r==null)return[t.nodeId,null];if(isRemoteAgentDefinition(r)){let e=await normalizeDynamicRemoteAgentConfig({name:t.name,value:r}),n=createPreparedRuntimeSubagentTool({description:e.description,kind:`remote`,logicalPath:t.logicalPath,name:t.name,nodeId:t.nodeId,outputSchema:e.outputSchema,path:e.path,sourceId:t.sourceId,sourceKind:t.sourceKind,url:e.url});return[t.nodeId,{kind:`remote`,prepared:n,remoteAgent:e}]}let i=await normalizeDynamicSubagentAgentConfig({name:t.name,state:e.ctx,value:r}),o=createPreparedRuntimeSubagentTool({description:i.description,kind:`subagent`,logicalPath:t.logicalPath,name:t.name,nodeId:t.nodeId,sourceId:t.sourceId,sourceKind:t.sourceKind});return[t.nodeId,{agentConfig:i,kind:`subagent`,prepared:o}]})),n={};for(let r=0;r<t.length;r+=1){let a=t[r],o=e.resolvers[r];if(a.status===`rejected`){log.error(`Dynamic subagent resolver (${e.event.type}) threw — omitting subagent.`,{error:toErrorMessage(a.reason),subagentName:o.name}),n[o.nodeId]=null;continue}n[a.value[0]]=a.value[1]}return n}function isRemoteAgentDefinition(e){return typeof e==`object`&&!!e&&e.kind===`remote`}async function dispatchDynamicSubagentEvent(e){if(!ALLOWED_DYNAMIC_SUBAGENT_EVENTS.has(e.event.type))return;let t=e.resolvers.filter(t=>t.eventNames.includes(e.event.type)),i=await resolveSelections({...e,resolvers:t});e.event.type===`session.started`?e.ctx.set(SessionDynamicSubagentSelectionsKey,i):e.ctx.set(TurnDynamicSubagentSelectionsKey,i)}async function refreshDynamicSessionSubagentsForRuntimeRevision(e){if(e.ctx.get(SessionDynamicSubagentRuntimeRevisionKey)===e.runtimeRevision)return;let r=e.resolvers.filter(e=>e.eventNames.includes(`session.started`)),i=await resolveSelections({...e,resolvers:r});e.ctx.set(SessionDynamicSubagentSelectionsKey,i),e.ctx.set(SessionDynamicSubagentRuntimeRevisionKey,e.runtimeRevision)}function buildDynamicSubagentTools(e){let t=e.get(SessionDynamicSubagentSelectionsKey)??{},i=e.get(TurnDynamicSubagentSelectionsKey)??{},a={...t,...i},s=[],c=new Set;for(let e of Object.values(a))if(e!==null){if(c.has(e.prepared.name))throw Error(`Found multiple active dynamic subagents named "${e.prepared.name}". Subagent names must be unique at runtime.`);c.add(e.prepared.name),s.push(createPreparedWorkflowToolHarnessDefinition(e.prepared))}return s}function getDynamicSubagentSelection(e,t){let i=e.get(TurnDynamicSubagentSelectionsKey)??{};return Object.hasOwn(i,t)?i[t]??void 0:(e.get(SessionDynamicSubagentSelectionsKey)??{})[t]??void 0}export{buildDynamicSubagentTools,dispatchDynamicSubagentEvent,getDynamicSubagentSelection,refreshDynamicSessionSubagentsForRuntimeRevision};
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,StepDynamicToolMetadataKey,TurnDynamicToolMetadataKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{serializeInputSchema,serializeOutputSchema}from"#tools/schema.js";import{parseJsonObject}from"#shared/json.js";import{ALLOWED_DYNAMIC_TOOL_EVENTS}from"#dynamic/definition.js";import{isCurrentDynamicToolMetadata,toCurrentDynamicToolMetadataList}from"#context/dynamic-tool-metadata.js";import{hasUnregisteredDurableDynamicCallbacks,readDurableDynamicToolCallbacks,registerDurableDynamicCallback}from"#tools/durable-callbacks.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{replayDynamicTools}from"#context/build-dynamic-tools.js";import{isBrandedToolEntry}from"#tools/dynamic.js";const log=createLogger(`dynamic-tools`);function qualifyDynamicToolNames(e,t,n){let r=Object.keys(n);if(r.length===0)return[];if(t){let t=r[0];return[{name:e.slug,entryKey:t,entry:n[t]}]}let i=e.extensionNamespace===void 0?``:`${e.extensionNamespace}__`;return r.map(e=>({entry:n[e],entryKey:e,name:`${i}${e}`}))}function replayDynamicSessionTools(e,t){return replayDynamicTools(e)}function durableKeyForEvent(e){switch(e){case`session.started`:return SessionDynamicToolMetadataKey;case`turn.started`:return TurnDynamicToolMetadataKey;case`step.started`:return StepDynamicToolMetadataKey;default:return}}function readDynamicToolResult(e,t){if(isBrandedToolEntry(t))return{entries:{_single:t},isSingle:!0};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Dynamic tool resolver "${e.logicalPath}" must return defineTool(), a map of defineTool() values, or null.`);let n={};for(let[r,i]of Object.entries(t)){if(!isBrandedToolEntry(i))throw Error(`Dynamic tool resolver "${e.logicalPath}" returned "${r}" without defineTool(). Wrap every dynamic tool entry in defineTool().`);n[r]=i}return{entries:n,isSingle:!1}}function validateReference(e){if(e.stamped===void 0){if(e.required)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. Author the callback inline in transformed source or use an eve durable callback helper.`);return}let t=Object.keys(e.stamped).filter(e=>e!==`closure`&&e!==`callback`);if(t.includes(`stepId`))throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" was persisted by a pre-release eve version that identified callbacks by build offset. Start a new session to re-resolve it.`);if(t.length>0)throw Error(`Dynamic tool "${e.name}" has invalid ${e.phase} callback metadata: unknown key(s) ${t.join(`, `)}.`);if(typeof e.stamped.callback!=`function`)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. Author the callback inline in transformed source or use an eve durable callback helper.`);let n;try{n=parseJsonObject(e.stamped.closure)}catch(t){throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" has a non-serializable capture. ${toErrorMessage(t)}`)}return registerDurableDynamicCallback({callback:e.stamped.callback,phase:e.phase,toolName:e.name}),{closure:n}}function validateDurableDynamicToolCallbacks(e,t){let n=readDurableDynamicToolCallbacks(t)??{},r=Object.keys(n).filter(e=>e!==`execute`&&e!==`approvalRequest`&&e!==`approvalResponse`&&e!==`toModelOutput`);if(r.length>0)throw Error(`Dynamic tool "${e}" has unknown durable callback phase(s): ${r.join(`, `)}.`);let i=t.approval!==void 0,a=t.approval!==void 0&&typeof t.approval!=`function`&&t.approval.response!==void 0,o=validateReference({name:e,phase:`execute`,stamped:n.execute,required:!0}),s=validateReference({name:e,phase:`approvalRequest`,stamped:n.approvalRequest,required:i}),c=validateReference({name:e,phase:`approvalResponse`,stamped:n.approvalResponse,required:a}),l=validateReference({name:e,phase:`toModelOutput`,stamped:n.toModelOutput,required:t.toModelOutput!==void 0}),u={execute:o};return s!==void 0&&(u.approvalRequest=s),c!==void 0&&(u.approvalResponse=c),l!==void 0&&(u.toModelOutput=l),u}function createMetadata(e){return{callbacks:validateDurableDynamicToolCallbacks(e.name,e.entry),description:e.entry.description,entryKey:e.entryKey,inputSchema:serializeInputSchema(e.entry.inputSchema),name:e.name,outputSchema:serializeOutputSchema(e.entry.outputSchema),resolverSlug:e.resolver.slug}}async function resolveToolsFromEvent(e,t,n,r){let i=await Promise.allSettled(t.map(async t=>{let i=t.events[n.type];if(i===void 0)return null;let a=await i(n,buildResolveContext(e,r));if(a==null)return null;let{entries:o,isSingle:s}=readDynamicToolResult(t,a);return{metadata:qualifyDynamicToolNames(t,s,o).map(({name:e,entryKey:n,entry:r})=>createMetadata({entry:r,entryKey:n,name:e,resolver:t})),resolver:t}})),a=[],s=new Map;for(let e of i){if(e.status===`rejected`){log.error(`Dynamic tool resolver (${n.type}) failed — skipping its complete result.`,{error:toErrorMessage(e.reason)});continue}if(e.value!==null){for(let t of e.value.metadata){let n=s.get(t.name);if(n!==void 0&&n!==e.value.resolver.slug)throw Error(`Dynamic tool "${t.name}" from resolver "${e.value.resolver.slug}" collides with dynamic resolver "${n}". Namespace the map key manually.`);s.set(t.name,e.value.resolver.slug)}a.push(...e.value.metadata)}}return{metadata:a}}const resolvedStepTools=new WeakMap;function stepCoordinate(e){return`${e.data.turnId}:${String(e.data.stepIndex)}`}function storeResolvedStepTools(e){e.ctx.set(StepDynamicToolMetadataKey,e.metadata);let t=stepCoordinate(e.event);resolvedStepTools.set(e.ctx,{coordinate:t,metadata:e.metadata})}async function resolveStepDynamicTools(e){let t=stepCoordinate(e.event),n=resolvedStepTools.get(e.ctx);if(n?.coordinate===t){e.ctx.set(StepDynamicToolMetadataKey,n.metadata);return}let r=e.resolvers.filter(e=>e.eventNames.includes(`step.started`)),{metadata:a}=r.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,r,e.event,e.messages);storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:a})}async function preparePersistedStepDynamicToolMetadata(e){let t=e.ctx.get(StepDynamicToolMetadataKey)??[],n=t.filter(isCurrentDynamicToolMetadata);if(n.length===t.length&&!hasUnregisteredDurableDynamicCallbacks(n)){n.length>0&&storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:n});return}await resolveStepDynamicTools(e);let r=e.ctx.get(StepDynamicToolMetadataKey)??[];storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:toCurrentDynamicToolMetadataList(t,r.filter(isCurrentDynamicToolMetadata))})}async function dispatchDynamicToolEvent(e){if(!ALLOWED_DYNAMIC_TOOL_EVENTS.has(e.event.type))return;if(e.event.type===`step.started`){await resolveStepDynamicTools({...e,event:e.event});return}e.event.type===`turn.started`&&e.ctx.set(StepDynamicToolMetadataKey,[]);let t=e.resolvers.filter(t=>t.eventNames.includes(e.event.type)),{metadata:r}=t.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,t,e.event,e.messages),a=durableKeyForEvent(e.event.type);if(a===void 0)return;if(e.event.type===`session.started`){e.ctx.set(SessionDynamicToolMetadataKey,r);return}let o=new Set(t.map(e=>e.slug)),s=(e.ctx.get(a)??[]).filter(e=>!o.has(e.resolverSlug));e.ctx.set(a,[...s,...r])}async function refreshDynamicSessionToolsForRuntimeRevision(e){let t=e.ctx.get(SessionDynamicToolMetadataKey)??[],i=t.filter(isCurrentDynamicToolMetadata),a=i.length!==t.length,o=e.ctx.get(SessionDynamicToolRuntimeRevisionKey)!==e.runtimeRevision;if(!o&&!a&&!hasUnregisteredDurableDynamicCallbacks(i))return;let s=e.resolvers.filter(e=>e.eventNames.includes(`session.started`)),{metadata:c}=s.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,s,e.event,e.messages);e.ctx.set(SessionDynamicToolMetadataKey,o?c:toCurrentDynamicToolMetadataList(t,c)),e.ctx.set(SessionDynamicToolRuntimeRevisionKey,e.runtimeRevision)}async function rebindMissingCompiledDynamicToolCallbacks(e){let n=e.ctx.get(TurnDynamicToolMetadataKey)??[],r=n.filter(e=>!isCurrentDynamicToolMetadata(e)||hasUnregisteredDurableDynamicCallbacks([e]));if(r.length===0)return;let i=new Set(r.map(e=>e.resolverSlug)),o=new Set(n.filter(e=>!isCurrentDynamicToolMetadata(e)).map(e=>e.resolverSlug)),s=e.resolvers.filter(e=>i.has(e.slug)&&(o.has(e.slug)||e.rebindMissingCallbacks===!0));if(s.length===0){e.ctx.set(TurnDynamicToolMetadataKey,toCurrentDynamicToolMetadataList(n));return}let c=toCurrentDynamicToolMetadataList(n,(await contextStorage.run(e.ctx,async()=>await resolveToolsFromEvent(e.ctx,s,e.event,e.messages))).metadata);e.ctx.set(TurnDynamicToolMetadataKey,c);let l=c.filter(e=>r.some(t=>t.resolverSlug===e.resolverSlug&&t.name===e.name)&&hasUnregisteredDurableDynamicCallbacks([e]));if(l.length>0)throw Error(`Dynamic tool callback rebind did not restore: ${l.map(e=>e.name).join(`, `)}. The tool may have been renamed or removed.`)}export{dispatchDynamicToolEvent,preparePersistedStepDynamicToolMetadata,rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision,replayDynamicSessionTools,resolveStepDynamicTools,validateDurableDynamicToolCallbacks};
1
+ import{createLogger}from"#internal/logging.js";import{contextStorage}from"#context/container.js";import{SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,StepDynamicToolMetadataKey,TurnDynamicToolMetadataKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{serializeInputSchema,serializeOutputSchema}from"#tools/schema.js";import{parseJsonObject}from"#shared/json.js";import{ALLOWED_DYNAMIC_TOOL_EVENTS}from"#dynamic/definition.js";import{isCurrentDynamicToolMetadata,toCurrentDynamicToolMetadataList}from"#context/dynamic-tool-metadata.js";import{hasUnregisteredDurableDynamicCallbacks,readDurableDynamicToolCallbacks,registerDurableDynamicCallback}from"#tools/durable-callbacks.js";import{buildResolveContext}from"#context/dynamic-resolve-context.js";import{replayDynamicTools}from"#context/build-dynamic-tools.js";import{isBrandedToolEntry}from"#tools/dynamic.js";const log=createLogger(`dynamic-tools`);function qualifyDynamicToolNames(e,t,n){let r=Object.keys(n);if(r.length===0)return[];if(t){let t=r[0];return[{name:e.slug,entryKey:t,entry:n[t]}]}let i=e.extensionNamespace===void 0?``:`${e.extensionNamespace}__`;return r.map(e=>({entry:n[e],entryKey:e,name:`${i}${e}`}))}function replayDynamicSessionTools(e,t){return replayDynamicTools(e)}function durableKeyForEvent(e){switch(e){case`session.started`:return SessionDynamicToolMetadataKey;case`turn.started`:return TurnDynamicToolMetadataKey;case`step.started`:return StepDynamicToolMetadataKey;default:return}}function readDynamicToolResult(e,t){if(isBrandedToolEntry(t))return{entries:{_single:t},isSingle:!0};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`Dynamic tool resolver "${e.logicalPath}" must return defineTool(), a map of defineTool() values, or null.`);let n={};for(let[r,i]of Object.entries(t)){if(!isBrandedToolEntry(i))throw Error(`Dynamic tool resolver "${e.logicalPath}" returned "${r}" without defineTool(). Wrap every dynamic tool entry in defineTool().`);n[r]=i}return{entries:n,isSingle:!1}}function validateReference(e){if(e.stamped===void 0){if(e.required)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. Author the callback inline in transformed source or use an eve durable callback helper.`);return}let t=Object.keys(e.stamped).filter(e=>e!==`closure`&&e!==`callback`);if(t.includes(`stepId`))throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" was persisted by a pre-release eve version that identified callbacks by build offset. Start a new session to re-resolve it.`);if(t.length>0)throw Error(`Dynamic tool "${e.name}" has invalid ${e.phase} callback metadata: unknown key(s) ${t.join(`, `)}.`);if(typeof e.stamped.callback!=`function`)throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" does not have a durable descriptor. Author the callback inline in transformed source or use an eve durable callback helper.`);let n;try{n=parseJsonObject(e.stamped.closure)}catch(t){throw Error(`Dynamic tool "${e.name}" callback "${e.phase}" has a non-serializable capture. ${toErrorMessage(t)}`)}return registerDurableDynamicCallback({callback:e.stamped.callback,phase:e.phase,toolName:e.name}),{closure:n}}function validateDurableDynamicToolCallbacks(e,t){let n=readDurableDynamicToolCallbacks(t)??{},r=Object.keys(n).filter(e=>e!==`execute`&&e!==`approvalRequest`&&e!==`approvalResponse`&&e!==`toModelOutput`);if(r.length>0)throw Error(`Dynamic tool "${e}" has unknown durable callback phase(s): ${r.join(`, `)}.`);let i=t.approval!==void 0,a=t.approval!==void 0&&typeof t.approval!=`function`&&t.approval.response!==void 0,o=validateReference({name:e,phase:`execute`,stamped:n.execute,required:!0}),s=validateReference({name:e,phase:`approvalRequest`,stamped:n.approvalRequest,required:i}),c=validateReference({name:e,phase:`approvalResponse`,stamped:n.approvalResponse,required:a}),l=validateReference({name:e,phase:`toModelOutput`,stamped:n.toModelOutput,required:t.toModelOutput!==void 0}),u={execute:o};return s!==void 0&&(u.approvalRequest=s),c!==void 0&&(u.approvalResponse=c),l!==void 0&&(u.toModelOutput=l),u}function createMetadata(e){return{callbacks:validateDurableDynamicToolCallbacks(e.name,e.entry),description:e.entry.description,execution:e.entry.execution===`background`?`background`:void 0,entryKey:e.entryKey,inputSchema:serializeInputSchema(e.entry.inputSchema),name:e.name,outputSchema:serializeOutputSchema(e.entry.outputSchema),resolverSlug:e.resolver.slug}}async function resolveToolsFromEvent(e,t,n,r){let i=await Promise.allSettled(t.map(async t=>{let i=t.events[n.type];if(i===void 0)return null;let a=await i(n,buildResolveContext(e,r));if(a==null)return null;let{entries:o,isSingle:s}=readDynamicToolResult(t,a);return{metadata:qualifyDynamicToolNames(t,s,o).map(({name:e,entryKey:n,entry:r})=>createMetadata({entry:r,entryKey:n,name:e,resolver:t})),resolver:t}})),a=[],s=new Map;for(let e of i){if(e.status===`rejected`){log.error(`Dynamic tool resolver (${n.type}) failed — skipping its complete result.`,{error:toErrorMessage(e.reason)});continue}if(e.value!==null){for(let t of e.value.metadata){let n=s.get(t.name);if(n!==void 0&&n!==e.value.resolver.slug)throw Error(`Dynamic tool "${t.name}" from resolver "${e.value.resolver.slug}" collides with dynamic resolver "${n}". Namespace the map key manually.`);s.set(t.name,e.value.resolver.slug)}a.push(...e.value.metadata)}}return{metadata:a}}const resolvedStepTools=new WeakMap;function stepCoordinate(e){return`${e.data.turnId}:${String(e.data.stepIndex)}`}function storeResolvedStepTools(e){e.ctx.set(StepDynamicToolMetadataKey,e.metadata);let t=stepCoordinate(e.event);resolvedStepTools.set(e.ctx,{coordinate:t,metadata:e.metadata})}async function resolveStepDynamicTools(e){let t=stepCoordinate(e.event),n=resolvedStepTools.get(e.ctx);if(n?.coordinate===t){e.ctx.set(StepDynamicToolMetadataKey,n.metadata);return}let r=e.resolvers.filter(e=>e.eventNames.includes(`step.started`)),{metadata:a}=r.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,r,e.event,e.messages);storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:a})}async function preparePersistedStepDynamicToolMetadata(e){let t=e.ctx.get(StepDynamicToolMetadataKey)??[],n=t.filter(isCurrentDynamicToolMetadata);if(n.length===t.length&&!hasUnregisteredDurableDynamicCallbacks(n)){n.length>0&&storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:n});return}await resolveStepDynamicTools(e);let r=e.ctx.get(StepDynamicToolMetadataKey)??[];storeResolvedStepTools({ctx:e.ctx,event:e.event,metadata:toCurrentDynamicToolMetadataList(t,r.filter(isCurrentDynamicToolMetadata))})}async function dispatchDynamicToolEvent(e){if(!ALLOWED_DYNAMIC_TOOL_EVENTS.has(e.event.type))return;if(e.event.type===`step.started`){await resolveStepDynamicTools({...e,event:e.event});return}e.event.type===`turn.started`&&e.ctx.set(StepDynamicToolMetadataKey,[]);let t=e.resolvers.filter(t=>t.eventNames.includes(e.event.type)),{metadata:r}=t.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,t,e.event,e.messages),a=durableKeyForEvent(e.event.type);if(a===void 0)return;if(e.event.type===`session.started`){e.ctx.set(SessionDynamicToolMetadataKey,r);return}let o=new Set(t.map(e=>e.slug)),s=(e.ctx.get(a)??[]).filter(e=>!o.has(e.resolverSlug));e.ctx.set(a,[...s,...r])}async function refreshDynamicSessionToolsForRuntimeRevision(e){let t=e.ctx.get(SessionDynamicToolMetadataKey)??[],i=t.filter(isCurrentDynamicToolMetadata),a=i.length!==t.length,o=e.ctx.get(SessionDynamicToolRuntimeRevisionKey)!==e.runtimeRevision;if(!o&&!a&&!hasUnregisteredDurableDynamicCallbacks(i))return;let s=e.resolvers.filter(e=>e.eventNames.includes(`session.started`)),{metadata:c}=s.length===0?{metadata:[]}:await resolveToolsFromEvent(e.ctx,s,e.event,e.messages);e.ctx.set(SessionDynamicToolMetadataKey,o?c:toCurrentDynamicToolMetadataList(t,c)),e.ctx.set(SessionDynamicToolRuntimeRevisionKey,e.runtimeRevision)}async function rebindMissingCompiledDynamicToolCallbacks(e){let n=e.ctx.get(TurnDynamicToolMetadataKey)??[],r=n.filter(e=>!isCurrentDynamicToolMetadata(e)||hasUnregisteredDurableDynamicCallbacks([e]));if(r.length===0)return;let i=new Set(r.map(e=>e.resolverSlug)),o=new Set(n.filter(e=>!isCurrentDynamicToolMetadata(e)).map(e=>e.resolverSlug)),s=e.resolvers.filter(e=>i.has(e.slug)&&(o.has(e.slug)||e.rebindMissingCallbacks===!0));if(s.length===0){e.ctx.set(TurnDynamicToolMetadataKey,toCurrentDynamicToolMetadataList(n));return}let c=toCurrentDynamicToolMetadataList(n,(await contextStorage.run(e.ctx,async()=>await resolveToolsFromEvent(e.ctx,s,e.event,e.messages))).metadata);e.ctx.set(TurnDynamicToolMetadataKey,c);let l=c.filter(e=>r.some(t=>t.resolverSlug===e.resolverSlug&&t.name===e.name)&&hasUnregisteredDurableDynamicCallbacks([e]));if(l.length>0)throw Error(`Dynamic tool callback rebind did not restore: ${l.map(e=>e.name).join(`, `)}. The tool may have been renamed or removed.`)}export{dispatchDynamicToolEvent,preparePersistedStepDynamicToolMetadata,rebindMissingCompiledDynamicToolCallbacks,refreshDynamicSessionToolsForRuntimeRevision,replayDynamicSessionTools,resolveStepDynamicTools,validateDurableDynamicToolCallbacks};
@@ -3,6 +3,7 @@ import type { DurableDynamicToolCallbacks } from "#tools/durable-callbacks.js";
3
3
  interface DynamicToolMetadataBase {
4
4
  readonly name: string;
5
5
  readonly description: string;
6
+ readonly execution?: "background";
6
7
  readonly inputSchema: JsonObject;
7
8
  readonly outputSchema?: JsonObject;
8
9
  readonly resolverSlug: string;
@@ -80,7 +80,6 @@ export declare const ParentTraceContextKey: ContextKey<SessionTraceContext>;
80
80
  export type SessionTraceSeed = SessionTraceContext;
81
81
  export declare const SessionTraceSeedKey: ContextKey<SessionTraceContext>;
82
82
  export declare const OtelTraceEnabledKey: ContextKey<boolean>;
83
- export declare const SubagentDepthKey: ContextKey<number>;
84
83
  /**
85
84
  * Session-level capability flags (see {@link SessionCapabilities}). Set
86
85
  * on root runs by channel routes and inherited pointwise by subagent
@@ -155,8 +154,6 @@ export interface PreparedMemoryCompaction {
155
154
  export declare const PreparedMemoryCompactionKey: ContextKey<PreparedMemoryCompaction>;
156
155
  /** Step-scoped dynamic tool metadata, replaced before each model step. */
157
156
  export declare const StepDynamicToolMetadataKey: ContextKey<readonly PersistedDynamicToolMetadata[]>;
158
- /** Whether this turn executes subagent definitions as durable background tools. */
159
- export declare const TasksEnabledKey: ContextKey<boolean>;
160
157
  export type DurableDynamicSubagentSelection = {
161
158
  readonly agentConfig: DynamicSubagentAgentConfig;
162
159
  readonly kind: "subagent";
@@ -1 +1 @@
1
- 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`),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`),TurnTaskDeliveryKey=new ContextKey(`eve.turnTaskDelivery`),TurnTaskStateKey=new ContextKey(`eve.turnTaskState`),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`),SubagentDepthKey=new ContextKey(`eve.subagentDepth`),CapabilitiesKey=new ContextKey(`eve.capabilities`),ActivityObserverKey=new ContextKey(`eve.activityObserver`),SessionCallbackKey=new ContextKey(SESSION_CALLBACK_CONTEXT_KEY_NAME),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),HandleEventKey=new ContextKey(`eve.internal.handleEvent`),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`),TasksEnabledKey=new ContextKey(`eve.tasksEnabled`),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,AuthKey,CapabilitiesKey,ChannelDeliveryKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationTokenKey,DynamicInstructionResolveMessagesKey,DynamicSkillManifestKey,DynamicSubagentAgentConfigKey,HandleEventKey,InitiatorAuthKey,LiveStepDynamicModelSelectionKey,LocalDevRequestKey,ModeKey,OtelTraceEnabledKey,ParentSessionKey,ParentTraceContextKey,PendingDynamicInstructionUserMessagesKey,PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,RuntimeModelMetadataCacheKey,SandboxKey,ScheduleIdKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicModelReferenceKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,SessionKey,SessionTraceSeedKey,StepDynamicToolMetadataKey,SubagentDepthKey,TasksEnabledKey,TurnDynamicInstructionsKey,TurnDynamicModelReferenceKey,TurnDynamicSubagentSelectionsKey,TurnDynamicToolMetadataKey,TurnMemoryLocksKey,TurnTaskDeliveryKey,TurnTaskStateKey};
1
+ 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`),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`),TurnTaskDeliveryKey=new ContextKey(`eve.turnTaskDelivery`),TurnTaskStateKey=new ContextKey(`eve.turnTaskState`),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`),SessionCallbackKey=new ContextKey(SESSION_CALLBACK_CONTEXT_KEY_NAME),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),HandleEventKey=new ContextKey(`eve.internal.handleEvent`),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,AuthKey,CapabilitiesKey,ChannelDeliveryKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationTokenKey,DynamicInstructionResolveMessagesKey,DynamicSkillManifestKey,DynamicSubagentAgentConfigKey,HandleEventKey,InitiatorAuthKey,LiveStepDynamicModelSelectionKey,LocalDevRequestKey,ModeKey,OtelTraceEnabledKey,ParentSessionKey,ParentTraceContextKey,PendingDynamicInstructionUserMessagesKey,PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,RuntimeModelMetadataCacheKey,SandboxKey,ScheduleIdKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicModelReferenceKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,SessionKey,SessionTraceSeedKey,StepDynamicToolMetadataKey,TurnDynamicInstructionsKey,TurnDynamicModelReferenceKey,TurnDynamicSubagentSelectionsKey,TurnDynamicToolMetadataKey,TurnMemoryLocksKey,TurnTaskDeliveryKey,TurnTaskStateKey};
@@ -1 +1 @@
1
- import{basename,dirname,join,resolve}from"node:path";import{classifyAgentRootEntry,getDirectoryEntryType,isProjectMarkerEntry}from"#discover/filesystem.js";import{DISCOVER_PROJECT_NOT_FOUND,createDiscoverErrorDiagnostic}from"#discover/diagnostics.js";import{createDiskProjectSource}from"#discover/project-source.js";var DiscoveryProjectResolutionError=class extends Error{diagnostic;constructor(e){super(e.message),this.name=`DiscoveryProjectResolutionError`,this.diagnostic=e}};async function resolveDiscoveryProject(e=process.cwd(),n={}){let r=n.source??createDiskProjectSource(),i=await resolveSearchDirectory(r,e),a=i;for(;;){let e=await tryResolveNestedProjectFromAgentDirectory(r,a);if(e!==null)return e;let n=await tryResolveNestedProjectFromAppRoot(r,a);if(n!==null)return n;if(await isFlatAgentRoot(r,a))return{agentRoot:a,appRoot:a,layout:`flat`};let i=dirname(a);if(i===a)break;a=i}throw new DiscoveryProjectResolutionError(createDiscoverErrorDiagnostic({code:DISCOVER_PROJECT_NOT_FOUND,message:`Could not resolve an eve agent root from "${i}".`,sourcePath:i}))}async function resolveSearchDirectory(e,n){let i=resolve(n);return await e.stat(i)===`directory`?i:dirname(i)}async function tryResolveNestedProjectFromAgentDirectory(n,r){if(basename(r)!==`agent`)return null;let i=dirname(r);return await hasProjectMarkers(n,i)?{agentRoot:r,appRoot:i,layout:`nested`}:null}async function tryResolveNestedProjectFromAppRoot(e,t){if(!await hasProjectMarkers(e,t))return null;let r=join(t,`agent`);return await directoryExists(e,r)?{agentRoot:r,appRoot:t,layout:`nested`}:null}async function isFlatAgentRoot(e,t){let n=await readDirectoryEntryTypes(e,t);return Array.from(n.entries()).some(([e,t])=>{let n=classifyAgentRootEntry(e,t);return n!==`unknown`&&n!==`ignored-directory`&&n!==`lib-directory`&&n!==`memory-directory`})}async function hasProjectMarkers(e,t){let n=await readDirectoryEntryTypes(e,t);return Array.from(n.entries()).some(([e,t])=>isProjectMarkerEntry(e,t))}async function readDirectoryEntryTypes(e,t){if(await e.stat(t)!==`directory`)return new Map;let n=await e.readDirectory(t);return new Map(n.map(e=>[e.name,getDirectoryEntryType(e)]))}async function directoryExists(e,t){return await e.stat(t)===`directory`}export{DiscoveryProjectResolutionError,resolveDiscoveryProject};
1
+ import{basename,dirname,join,resolve}from"node:path";import{resolveNamedAgentProjectContext}from"#internal/project-context.js";import{classifyAgentRootEntry,getDirectoryEntryType,isProjectMarkerEntry}from"#discover/filesystem.js";import{DISCOVER_PROJECT_NOT_FOUND,createDiscoverErrorDiagnostic}from"#discover/diagnostics.js";import{createDiskProjectSource}from"#discover/project-source.js";var DiscoveryProjectResolutionError=class extends Error{diagnostic;constructor(e){super(e.message),this.name=`DiscoveryProjectResolutionError`,this.diagnostic=e}};async function resolveDiscoveryProject(e=process.cwd(),n={}){let r=n.source??createDiskProjectSource(),i=await resolveSearchDirectory(r,e),a=i;for(;;){let e=await tryResolveNestedProjectFromAgentDirectory(r,a);if(e!==null)return e;let n=await tryResolveNestedProjectFromAppRoot(r,a);if(n!==null)return n;if(await isFlatAgentRoot(r,a))return{agentRoot:a,appRoot:a,layout:`flat`};let i=dirname(a);if(i===a)break;a=i}throw new DiscoveryProjectResolutionError(createDiscoverErrorDiagnostic({code:DISCOVER_PROJECT_NOT_FOUND,message:`Could not resolve an eve agent root from "${i}".`,sourcePath:i}))}async function resolveSearchDirectory(e,n){let i=resolve(n);return await e.stat(i)===`directory`?i:dirname(i)}async function tryResolveNestedProjectFromAgentDirectory(n,r){if(basename(r)!==`agent`)return null;let i=dirname(r);return await isNestedProjectRoot(n,i)?{agentRoot:r,appRoot:i,layout:`nested`}:null}async function tryResolveNestedProjectFromAppRoot(e,t){if(!await isNestedProjectRoot(e,t))return null;let r=join(t,`agent`);return await directoryExists(e,r)?{agentRoot:r,appRoot:t,layout:`nested`}:null}async function isNestedProjectRoot(e,t){return await hasProjectMarkers(e,t)?!0:await resolveNamedAgentProjectContext(t,{source:e})!==void 0}async function isFlatAgentRoot(e,t){let n=await readDirectoryEntryTypes(e,t);return Array.from(n.entries()).some(([e,t])=>{let n=classifyAgentRootEntry(e,t);return n!==`unknown`&&n!==`ignored-directory`&&n!==`lib-directory`&&n!==`memory-directory`})}async function hasProjectMarkers(e,t){let n=await readDirectoryEntryTypes(e,t);return Array.from(n.entries()).some(([e,t])=>isProjectMarkerEntry(e,t))}async function readDirectoryEntryTypes(e,t){if(await e.stat(t)!==`directory`)return new Map;let n=await e.readDirectory(t);return new Map(n.map(e=>[e.name,getDirectoryEntryType(e)]))}async function directoryExists(e,t){return await e.stat(t)===`directory`}export{DiscoveryProjectResolutionError,resolveDiscoveryProject};
@@ -1,4 +1,4 @@
1
- import{randomUUID}from"node:crypto";import{readFile}from"node:fs/promises";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{basename,join}from"node:path";import{createDevelopmentServer}from"#internal/nitro/host.js";import{EVE_EVALUATION_ENV_FLAG,EVE_EVALUATION_RUN_ID_ENV}from"#internal/application/dev-environment.js";import{shutdownActiveSandboxHandles}from"#execution/sandbox/active-handles.js";import{createEvalClient}from"#evals/cli/eval-client.js";import{filterEvalsByTags}from"#evals/cli/filter.js";import{discoverAndImportEvals,discoverEvalConfig,findMisplacedEvalDirs}from"#evals/runner/discover.js";import{runEvals}from"#evals/runner/run-evals.js";import{Console}from"#evals/runner/reporters/console.js";import{JUnit}from"#evals/runner/reporters/junit.js";import{resolveEvalTargetHandle}from"#evals/target.js";async function runEvalCommand(t,r,i,s=process.cwd()){loadDevelopmentEnvironmentFiles(s);let c=t.length>0?t:void 0,l=await discoverAndImportEvals(s,c);if(l.length===0){let e=await findMisplacedEvalDirs(s);e.length>0?i.error(`No evals found under evals/, but eval files are present inside agent/:
1
+ import{randomUUID}from"node:crypto";import{readFile}from"node:fs/promises";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{basename,join}from"node:path";import{createDevelopmentServer}from"#internal/nitro/host.js";import{EVE_EVALUATION_ENV_FLAG,EVE_EVALUATION_RUN_ID_ENV}from"#internal/application/dev-environment.js";import{shutdownActiveSandboxHandles}from"#execution/sandbox/active-handles.js";import{createEvalClient}from"#evals/cli/eval-client.js";import{filterEvalsByTags}from"#evals/cli/filter.js";import{discoverAndImportEvals,discoverEvalConfig,findMisplacedEvalDirs}from"#evals/runner/discover.js";import{runEvals}from"#evals/runner/run-evals.js";import{Console}from"#evals/runner/reporters/console.js";import{JUnit}from"#evals/runner/reporters/junit.js";import{resolveEvalTargetHandle}from"#evals/target.js";async function runEvalCommand(t,r,i,s=process.cwd()){await loadDevelopmentEnvironmentFiles(s);let c=t.length>0?t:void 0,l=await discoverAndImportEvals(s,c);if(l.length===0){let e=await findMisplacedEvalDirs(s);e.length>0?i.error(`No evals found under evals/, but eval files are present inside agent/:
2
2
  `+e.map(e=>` - ${e}`).join(`
3
3
  `)+`
4
4
  eve eval only scans the top-level evals/ directory (a sibling of agent/). Move these files there.`):c?i.error(`No evals found matching: ${c.join(`, `)}`):i.error(`No evals found. Create files under evals/ with the *.eval.ts extension.`),process.exitCode=2;return}let u=r.tag??[],d=r.excludeTag??[],f=filterEvalsByTags({evaluations:l,includeTags:u,excludeTags:[]});if(f.length===0){i.error(`No evals matched the provided tags (${u.join(`, `)}).`),process.exitCode=2;return}let p=filterEvalsByTags({evaluations:f,includeTags:[],excludeTags:d});if(r.list===!0){printEvalList(p,r.json===!0,i);return}if(p.length===0){i.log(`All ${f.length} matching evals are excluded by tags (${d.join(`, `)}); nothing to run.`);return}let m,h;try{m=parsePositiveInteger(r.maxConcurrency,`--max-concurrency`),h=parseNonNegativeInteger(r.timeout,`--timeout`)}catch(e){i.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let g;try{g=await discoverEvalConfig(s)}catch(e){i.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let _,v,y;try{if(r.url)y=await createEvalClient({kind:`remote`,url:r.url},{workspaceRoot:s}),v=await resolveEvalTargetHandle({client:y,expectedAgentName:await readExpectedAgentName(s),kind:`remote`,url:r.url});else{process.env[EVE_EVALUATION_ENV_FLAG]=`1`,process.env[EVE_EVALUATION_RUN_ID_ENV]=randomUUID(),_=createDevelopmentServer(s,{host:`127.0.0.1`,port:0});let t=await _.start();y=await createEvalClient({kind:`local`,url:t.url}),v=await resolveEvalTargetHandle({client:y,expectedAgentName:await readExpectedAgentName(s),kind:`local`,url:t.url})}let t=r.json===!0?[]:[Console()];r.junit!==void 0&&t.push(JUnit({filePath:r.junit}));let n=await runEvals({evaluations:p,config:g,target:v,client:y,appRoot:s,reporters:t,includeEvalReporters:r.skipReport!==!0,maxConcurrency:m,timeoutMs:h,onEvalLog:r.verbose===!0?(e,t)=>i.log(`[${e}] ${t}`):void 0});r.json&&i.log(JSON.stringify(n,null,2));let a=n.failed>0,o=r.strict===!0&&n.scored>0;(a||o)&&(process.exitCode=1)}finally{_&&(await _.close(),await shutdownActiveSandboxHandles({log:e=>i.error(e)}))}let b=typeof process.exitCode==`number`?process.exitCode:0;process.exit(b)}function parsePositiveInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<1)throw Error(`${t} must be a positive integer; got "${e}".`);return n}function parseNonNegativeInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<0)throw Error(`${t} must be a non-negative integer; got "${e}".`);return n}function printEvalList(e,t,n){if(t){let t=e.map(e=>({id:e.id,description:e.description,tags:e.tags}));n.log(JSON.stringify(t,null,2));return}for(let t of e){let e=t.description===void 0?``:` — ${t.description}`,r=t.tags!==void 0&&t.tags.length>0?` [${t.tags.join(`, `)}]`:``;n.log(`${t.id}${r}${e}`)}}async function readExpectedAgentName(e){try{let n=JSON.parse(await readFile(join(e,`package.json`),`utf8`));return typeof n.name==`string`&&n.name.length>0?n.name:basename(e)}catch{return basename(e)}}export{runEvalCommand};
@@ -1 +1 @@
1
- import{MockLanguageModelV3}from"ai/test";import{AGENTS_SNIPPET_LABEL}from"#harness/handles/prompt.js";import{isPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";const RESPONSE_TIMESTAMP=Date.parse(`2026-01-01T00:00:00.000Z`);function mockModel(t={}){let n=normalizeOptions(t),r=normalizeResponder(n.respond),i=n.modelId??`model`;return new MockLanguageModelV3({modelId:i,provider:n.provider??`eve-mock`,doGenerate:async e=>createGenerateResult(await r(createRequest(e)),e,i),doStream:async e=>createStreamResult(createGenerateResult(await r(createRequest(e)),e,i))})}function normalizeOptions(e){return typeof e==`string`||typeof e==`function`?{respond:e}:e}function normalizeResponder(e){if(typeof e==`function`)return e;let t=e??`Mock response`;return()=>t}function createRequest(e){let t=e.prompt.map(e=>({role:e.role,text:extractMessageText(e)})),n=t.filter(e=>e.role===`user`).map(e=>e.text).filter(e=>!isFrameworkScaffolding(e));return{lastUserMessage:n.at(-1)??null,messages:t,toolResults:extractToolResults(e),tools:extractTools(e),userMessageCount:n.length,userMessages:n}}function isFrameworkScaffolding(e){let r=e.trim();return r.startsWith(AGENTS_SNIPPET_LABEL)||isPendingApprovalsSnippet(r)}function extractMessageText(e){return typeof e.content==`string`?e.content:e.content.flatMap(e=>{switch(e.type){case`reasoning`:case`text`:return[e.text];case`tool-result`:return[formatValue(normalizeToolOutput(e.output))];default:return[]}}).join(``)}function extractTools(e){return(e.tools??[]).map(e=>e.type===`function`?{description:e.description,inputSchema:e.inputSchema,name:e.name}:{name:e.name})}function extractToolResults(e){return e.prompt.flatMap(e=>typeof e.content==`string`?[]:e.content.flatMap(e=>e.type===`tool-result`?[{id:e.toolCallId,isError:e.output.type===`error-json`||e.output.type===`error-text`||e.output.type===`execution-denied`,name:e.toolName,output:normalizeToolOutput(e.output)}]:[]))}function normalizeToolOutput(e){switch(e.type){case`error-json`:case`error-text`:case`json`:case`text`:return e.value;case`execution-denied`:return e.reason??`Tool execution denied`;case`content`:return e.value}}function createGenerateResult(e,t,n){let i=typeof e==`string`?{text:e}:e,a=i.toolCalls??[];if(!(`text`in i)&&a.length===0)throw Error(`mockModel responders must return text or at least one item in "toolCalls".`);let o=[];i.text!==void 0&&o.push({text:i.text,type:`text`});for(let[e,n]of a.entries())o.push({input:JSON.stringify(n.input??{}),toolCallId:n.id??`mock-tool-call-${countUserMessages(t)}-${countToolResults(t)}-${e+1}`,toolName:n.name,type:`tool-call`});let s=t.prompt.map(e=>extractMessageText(e)).join(` `),c=[i.text??``,...a.map(e=>formatValue(e.input??{}))].join(` `),l=i.usage?.inputTokens??estimateTokens(s),u=i.usage?.outputTokens??estimateTokens(c);return{content:o,finishReason:{raw:void 0,unified:a.length>0?`tool-calls`:`stop`},response:{id:`mock-response-${countUserMessages(t)}-${countToolResults(t)}`,modelId:n,timestamp:new Date(RESPONSE_TIMESTAMP)},usage:{inputTokens:{cacheRead:0,cacheWrite:0,noCache:l,total:l},outputTokens:{reasoning:0,text:u,total:u}},warnings:[]}}function createStreamResult(e){let t=[{type:`stream-start`,warnings:e.warnings}];e.response!==void 0&&t.push({...e.response,type:`response-metadata`});let n=0;for(let r of e.content){if(r.type===`text`){let e=`mock-text-${n}`;n+=1,t.push({id:e,type:`text-start`}),r.text.length>0&&t.push({delta:r.text,id:e,type:`text-delta`}),t.push({id:e,type:`text-end`});continue}r.type===`tool-call`&&t.push(r)}return t.push({finishReason:e.finishReason,type:`finish`,usage:e.usage}),{stream:new ReadableStream({start(e){for(let n of t)e.enqueue(n);e.close()}})}}function countUserMessages(e){return e.prompt.filter(e=>e.role===`user`).length}function countToolResults(e){return extractToolResults(e).length}function estimateTokens(e){return Math.max(1,Math.ceil(e.trim().length/4))}function formatValue(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}export{mockModel};
1
+ import{MockLanguageModelV3}from"ai/test";import{AGENTS_SNIPPET_LABEL}from"#subagents/handles/prompt.js";import{isPendingApprovalsSnippet}from"#harness/hitl/approval-prompt.js";const RESPONSE_TIMESTAMP=Date.parse(`2026-01-01T00:00:00.000Z`);function mockModel(t={}){let n=normalizeOptions(t),r=normalizeResponder(n.respond),i=n.modelId??`model`;return new MockLanguageModelV3({modelId:i,provider:n.provider??`eve-mock`,doGenerate:async e=>createGenerateResult(await r(createRequest(e)),e,i),doStream:async e=>createStreamResult(createGenerateResult(await r(createRequest(e)),e,i))})}function normalizeOptions(e){return typeof e==`string`||typeof e==`function`?{respond:e}:e}function normalizeResponder(e){if(typeof e==`function`)return e;let t=e??`Mock response`;return()=>t}function createRequest(e){let t=e.prompt.map(e=>({role:e.role,text:extractMessageText(e)})),n=t.filter(e=>e.role===`user`).map(e=>e.text).filter(e=>!isFrameworkScaffolding(e));return{lastUserMessage:n.at(-1)??null,messages:t,toolResults:extractToolResults(e),tools:extractTools(e),userMessageCount:n.length,userMessages:n}}function isFrameworkScaffolding(e){let r=e.trim();return r.startsWith(AGENTS_SNIPPET_LABEL)||isPendingApprovalsSnippet(r)}function extractMessageText(e){return typeof e.content==`string`?e.content:e.content.flatMap(e=>{switch(e.type){case`reasoning`:case`text`:return[e.text];case`tool-result`:return[formatValue(normalizeToolOutput(e.output))];default:return[]}}).join(``)}function extractTools(e){return(e.tools??[]).map(e=>e.type===`function`?{description:e.description,inputSchema:e.inputSchema,name:e.name}:{name:e.name})}function extractToolResults(e){return e.prompt.flatMap(e=>typeof e.content==`string`?[]:e.content.flatMap(e=>e.type===`tool-result`?[{id:e.toolCallId,isError:e.output.type===`error-json`||e.output.type===`error-text`||e.output.type===`execution-denied`,name:e.toolName,output:normalizeToolOutput(e.output)}]:[]))}function normalizeToolOutput(e){switch(e.type){case`error-json`:case`error-text`:case`json`:case`text`:return e.value;case`execution-denied`:return e.reason??`Tool execution denied`;case`content`:return e.value}}function createGenerateResult(e,t,n){let i=typeof e==`string`?{text:e}:e,a=i.toolCalls??[];if(!(`text`in i)&&a.length===0)throw Error(`mockModel responders must return text or at least one item in "toolCalls".`);let o=[];i.text!==void 0&&o.push({text:i.text,type:`text`});for(let[e,n]of a.entries())o.push({input:JSON.stringify(n.input??{}),toolCallId:n.id??`mock-tool-call-${countUserMessages(t)}-${countToolResults(t)}-${e+1}`,toolName:n.name,type:`tool-call`});let s=t.prompt.map(e=>extractMessageText(e)).join(` `),c=[i.text??``,...a.map(e=>formatValue(e.input??{}))].join(` `),l=i.usage?.inputTokens??estimateTokens(s),u=i.usage?.outputTokens??estimateTokens(c);return{content:o,finishReason:{raw:void 0,unified:a.length>0?`tool-calls`:`stop`},response:{id:`mock-response-${countUserMessages(t)}-${countToolResults(t)}`,modelId:n,timestamp:new Date(RESPONSE_TIMESTAMP)},usage:{inputTokens:{cacheRead:0,cacheWrite:0,noCache:l,total:l},outputTokens:{reasoning:0,text:u,total:u}},warnings:[]}}function createStreamResult(e){let t=[{type:`stream-start`,warnings:e.warnings}];e.response!==void 0&&t.push({...e.response,type:`response-metadata`});let n=0;for(let r of e.content){if(r.type===`text`){let e=`mock-text-${n}`;n+=1,t.push({id:e,type:`text-start`}),r.text.length>0&&t.push({delta:r.text,id:e,type:`text-delta`}),t.push({id:e,type:`text-end`});continue}r.type===`tool-call`&&t.push(r)}return t.push({finishReason:e.finishReason,type:`finish`,usage:e.usage}),{stream:new ReadableStream({start(e){for(let n of t)e.enqueue(n);e.close()}})}}function countUserMessages(e){return e.prompt.filter(e=>e.role===`user`).length}function countToolResults(e){return extractToolResults(e).length}function estimateTokens(e){return Math.max(1,Math.ceil(e.trim().length/4))}function formatValue(e){if(typeof e==`string`)return e;try{return JSON.stringify(e)??String(e)}catch{return String(e)}}export{mockModel};
@@ -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{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"#execution/session-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}from"#protocol/traceparent.js";import{readForwardedAudienceBaggage}from"#protocol/baggage.js";import{FAIL_CLOSED_FORWARDED_TRACE_ASSERTION,formatTraceContentCeiling}from"#shared/forwarded-trace-policy.js";import{routeAuth}from"#public/channels/auth.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(g){let _=mergeUploadPolicy(g.uploadPolicy);return defineChannel({cors:normalizeEveCors(g.cors),turnPolicy:g.turnPolicy,routes:[GET(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),HEAD(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),GET(EVE_INFO_ROUTE_PATH,async(e,t)=>{let n=await routeAuth(e,g.auth);if(n instanceof Response)return n;let r=readAgentInfoRouteResponse(t);return r===void 0?Response.json({error:`Agent info route requires internal channel dispatch context.`,ok:!1},{status:500}):await r()}),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(e,t)=>{let n=await routeAuth(e,g.auth);if(n instanceof Response)return n;let r=await parseJsonRequest(e);if(r instanceof Response)return r;let i=rejectSessionContinuationToken(r);if(i!==null)return i;let a=await resolveForwardedPrincipal({trustedForwarders:g.trustedForwarders,forwarder:n,payload:r});if(a instanceof Response)return a;let o=parseCreateBody(r);if(o instanceof Response)return o;let s=o.callback===void 0?void 0:parseTraceparent(e.headers.get(`traceparent`)),c=checkUploadPolicy(o,_);if(c!==null)return c;if(o.operationId!==void 0&&a.auth.principalType===`anonymous`)return Response.json({error:`operationId requires an authenticated principal.`,ok:!1},{status:400});let l=o.operationId===void 0?void 0:await deriveOperationContinuationToken({auth:a.auth,operationId:o.operationId});if(l!==void 0){let e=await t.resolveSession(l);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 u=s===void 0?`absent`:readForwardedAudienceBaggage(e.headers.get(`baggage`)),d=a.accepted&&s!==void 0&&(s.traceFlags&1)==1?typeof u==`object`?u:u===`malformed`?FAIL_CLOSED_FORWARDED_TRACE_ASSERTION:void 0:void 0,f=s;d!==void 0&&s!==void 0&&(f={...s,forwardedTracePolicy:d}),u===`malformed`?log.warn(`using metadata-only policy for malformed forwarded audience baggage`,{forwarder:n.principalId}):typeof u==`object`&&(d===void 0?log.warn(`ignoring forwarded trace policy without an accepted sampled principal`,{forwarder:n.principalId}):log.info(`accepted forwarded trace policy`,{audience:u.originAudience,ceiling:formatTraceContentCeiling(u.ceiling),forwarder:n.principalId}));let p=await resolveOnMessage({auth:a.auth,config:g,message:o.message,request:e});if(p instanceof Response)return p;let m=readRouteSessionCreator(t);if(m===void 0)return Response.json({error:`Session creation requires internal channel dispatch context.`,ok:!1},{status:500});let h;try{h=await m({activityObserver:o.activityObserver,auth:p.auth,capabilities:o.capabilities??(o.mode===`task`?void 0:{requestInput:!0}),callback:o.callback,continuationToken:l,initiatorAuth:a.accepted?a.initiatorAuth:void 0,input:attachClientContext({message:o.message,context:p.context,outputSchema:o.outputSchema},o.context),mode:o.mode??`conversation`,parentTraceContext:f,title:p.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:h.sessionId,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:h.sessionId},status:202})}),POST(EVE_SESSION_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseJsonRequest(e);if(a instanceof Response)return a;let o=await resolveForwardedPrincipal({trustedForwarders:g.trustedForwarders,forwarder:r,payload:a});if(o instanceof Response)return o;let s=parseSessionMessageBody(a);if(s instanceof Response)return s;let c=checkUploadPolicy(s,_);if(c!==null)return c;let l,u=o.auth;if(s.message!==void 0){let t=await resolveOnMessage({auth:o.auth,config:g,message:s.message,request:e,sessionId:i});if(t instanceof Response)return t;l=t.context,u=t.auth}let d;try{let e=t(i),n=attachClientContext({activityObserver:s.activityObserver,auth:u,callback:s.callback,context:l,outputSchema:s.outputSchema,turnPolicy:s.turnPolicy},s.context);d=s.inputResponses===void 0?await e.send(s.message,n):await e.respond(s.inputResponses,n)}catch(e){let t=logError(log,`session-message request failed`,e,{sessionId:i});return Response.json({error:`Failed to send the session message.`,errorId:t,ok:!1},{status:500})}return d.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:d.sessionId,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:d.sessionId},status:202})}),POST(EVE_SESSION_CANCEL_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseCancelTurnBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).cancel({taskId:a.taskId,turnId:a.turnId})}catch(e){let t=logError(log,`cancel-turn request failed`,e,{sessionId:i});return Response.json({error:`Failed to cancel the turn.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`accepted`?{ok:!0,sessionId:o.sessionId,status:`accepted`}:{ok:!0,status:`no_active_turn`},{headers:{"cache-control":`no-store`},status:o.status===`accepted`?202:200})}),POST(EVE_SESSION_COMPACT_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseSessionControlBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).compact()}catch(e){let t=logError(log,`session-compaction request failed`,e,{sessionId:i});return Response.json({error:`Failed to compact the session.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`accepted`?{ok:!0,sessionId:o.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:o.status===`accepted`?202:200})}),POST(EVE_SESSION_CLEAR_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseSessionControlBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).clear()}catch(e){let t=logError(log,`session-clear request failed`,e,{sessionId:i});return Response.json({error:`Failed to clear the session context.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`accepted`?{ok:!0,sessionId:o.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:o.status===`accepted`?202:200})}),POST(EVE_SESSION_RESET_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseResetBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).reset({reason:a.reason})}catch(e){let t=logError(log,`session-reset request failed`,e,{sessionId:i});return Response.json({error:`Failed to reset the session.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`reset`?{ok:!0,previousSessionId:o.previousSessionId,status:`reset`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`}})}),GET(EVE_SESSION_STREAM_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);return i instanceof Response?i:await createSessionStreamResponse(e,t(i))}),GET(EVE_SUBAGENT_STREAM_ROUTE_PATTERN,async(e,t)=>{let n=await routeAuth(e,g.auth);if(n instanceof Response)return n;let r=t.params.parentSessionId,i=t.params.callId,a=t.params.childSessionId;if(!r||!i||!a)return Response.json({error:`Missing subagent stream coordinates.`,ok:!1},{status:400});let o=parseStartIndex(e);if(o instanceof Response)return o;let s=parseIncludeTailIndex(e),c=createEveSubagentStreamRoutePath({callId:i,childSessionId:a,parentSessionId:r}),l;try{let e=await findRemoteSubagentBinding({callId:i,childSessionId:a,childStreamPath:c,parentSessionId:r,parent:t.attachSession(r)});if(e===void 0)throw Error(`Remote subagent binding not found.`);l=e}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let u=readRemoteAgentStreamHeadersResolver(t);if(u===void 0)return Response.json({error:`Subagent stream proxy requires internal channel dispatch context.`,ok:!1},{status:500});let d;try{d=await u({name:l.data.toolName,resolverId:l.data.remote.resolverId,url:l.data.remote.url})}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let f=new URL(createEveSessionStreamRoutePath(a).replace(/^\/+/,``),`${l.data.remote.url.replace(/\/+$/,``)}/`);o!==void 0&&f.searchParams.set(`startIndex`,String(o)),s&&f.searchParams.set(`includeTailIndex`,`1`);let p=await fetch(f,{cache:`no-store`,headers:d,redirect:`manual`,signal:e.signal}),m=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=p.headers.get(e);t!==null&&m.set(e,t)}return new Response(p.body,{headers:m,status:p.status,statusText:p.statusText})})],events:g.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_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{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}from"#protocol/traceparent.js";import{readForwardedAudienceBaggage}from"#protocol/baggage.js";import{FAIL_CLOSED_FORWARDED_TRACE_ASSERTION,formatTraceContentCeiling}from"#shared/forwarded-trace-policy.js";import{routeAuth}from"#public/channels/auth.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(g){let _=mergeUploadPolicy(g.uploadPolicy);return defineChannel({cors:normalizeEveCors(g.cors),turnPolicy:g.turnPolicy,routes:[GET(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),HEAD(EVE_HEALTH_ROUTE_PATH,async()=>healthResponse()),GET(EVE_INFO_ROUTE_PATH,async(e,t)=>{let n=await routeAuth(e,g.auth);if(n instanceof Response)return n;let r=readAgentInfoRouteResponse(t);return r===void 0?Response.json({error:`Agent info route requires internal channel dispatch context.`,ok:!1},{status:500}):await r()}),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(e,t)=>{let n=await routeAuth(e,g.auth);if(n instanceof Response)return n;let r=await parseJsonRequest(e);if(r instanceof Response)return r;let i=rejectSessionContinuationToken(r);if(i!==null)return i;let a=await resolveForwardedPrincipal({trustedForwarders:g.trustedForwarders,forwarder:n,payload:r});if(a instanceof Response)return a;let o=parseCreateBody(r);if(o instanceof Response)return o;let s=o.callback===void 0?void 0:parseTraceparent(e.headers.get(`traceparent`)),c=checkUploadPolicy(o,_);if(c!==null)return c;if(o.operationId!==void 0&&a.auth.principalType===`anonymous`)return Response.json({error:`operationId requires an authenticated principal.`,ok:!1},{status:400});let l=o.operationId===void 0?void 0:await deriveOperationContinuationToken({auth:a.auth,operationId:o.operationId});if(l!==void 0){let e=await t.resolveSession(l);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 u=s===void 0?`absent`:readForwardedAudienceBaggage(e.headers.get(`baggage`)),d=a.accepted&&s!==void 0&&(s.traceFlags&1)==1?typeof u==`object`?u:u===`malformed`?FAIL_CLOSED_FORWARDED_TRACE_ASSERTION:void 0:void 0,f=s;d!==void 0&&s!==void 0&&(f={...s,forwardedTracePolicy:d}),u===`malformed`?log.warn(`using metadata-only policy for malformed forwarded audience baggage`,{forwarder:n.principalId}):typeof u==`object`&&(d===void 0?log.warn(`ignoring forwarded trace policy without an accepted sampled principal`,{forwarder:n.principalId}):log.info(`accepted forwarded trace policy`,{audience:u.originAudience,ceiling:formatTraceContentCeiling(u.ceiling),forwarder:n.principalId}));let p=await resolveOnMessage({auth:a.auth,config:g,message:o.message,request:e});if(p instanceof Response)return p;let m=readRouteSessionCreator(t);if(m===void 0)return Response.json({error:`Session creation requires internal channel dispatch context.`,ok:!1},{status:500});let h;try{h=await m({activityObserver:o.activityObserver,auth:p.auth,capabilities:o.capabilities??(o.mode===`task`?void 0:{requestInput:!0}),callback:o.callback,continuationToken:l,initiatorAuth:a.accepted?a.initiatorAuth:void 0,input:attachClientContext({message:o.message,context:p.context,outputSchema:o.outputSchema},o.context),mode:o.mode??`conversation`,parentTraceContext:f,title:p.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:h.sessionId,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:h.sessionId},status:202})}),POST(EVE_SESSION_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseJsonRequest(e);if(a instanceof Response)return a;let o=await resolveForwardedPrincipal({trustedForwarders:g.trustedForwarders,forwarder:r,payload:a});if(o instanceof Response)return o;let s=parseSessionMessageBody(a);if(s instanceof Response)return s;let c=checkUploadPolicy(s,_);if(c!==null)return c;let l,u=o.auth;if(s.message!==void 0){let t=await resolveOnMessage({auth:o.auth,config:g,message:s.message,request:e,sessionId:i});if(t instanceof Response)return t;l=t.context,u=t.auth}let d;try{let e=t(i),n=attachClientContext({activityObserver:s.activityObserver,auth:u,callback:s.callback,context:l,outputSchema:s.outputSchema,turnPolicy:s.turnPolicy},s.context);d=s.inputResponses===void 0?await e.send(s.message,n):await e.respond(s.inputResponses,n)}catch(e){let t=logError(log,`session-message request failed`,e,{sessionId:i});return Response.json({error:`Failed to send the session message.`,errorId:t,ok:!1},{status:500})}return d.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:d.sessionId,status:`accepted`},{headers:{"cache-control":`no-store`,[EVE_SESSION_ID_HEADER]:d.sessionId},status:202})}),POST(EVE_SESSION_CANCEL_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseCancelTurnBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).cancel({taskId:a.taskId,turnId:a.turnId})}catch(e){let t=logError(log,`cancel-turn request failed`,e,{sessionId:i});return Response.json({error:`Failed to cancel the turn.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`accepted`?{ok:!0,sessionId:o.sessionId,status:`accepted`}:{ok:!0,status:`no_active_turn`},{headers:{"cache-control":`no-store`},status:o.status===`accepted`?202:200})}),POST(EVE_SESSION_COMPACT_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseSessionControlBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).compact()}catch(e){let t=logError(log,`session-compaction request failed`,e,{sessionId:i});return Response.json({error:`Failed to compact the session.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`accepted`?{ok:!0,sessionId:o.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:o.status===`accepted`?202:200})}),POST(EVE_SESSION_CLEAR_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseSessionControlBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).clear()}catch(e){let t=logError(log,`session-clear request failed`,e,{sessionId:i});return Response.json({error:`Failed to clear the session context.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`accepted`?{ok:!0,sessionId:o.sessionId,status:`accepted`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`},status:o.status===`accepted`?202:200})}),POST(EVE_SESSION_RESET_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);if(i instanceof Response)return i;let a=await parseResetBody(e);if(a instanceof Response)return a;let o;try{o=await t(i).reset({reason:a.reason})}catch(e){let t=logError(log,`session-reset request failed`,e,{sessionId:i});return Response.json({error:`Failed to reset the session.`,errorId:t,ok:!1},{status:500})}return Response.json(o.status===`reset`?{ok:!0,previousSessionId:o.previousSessionId,status:`reset`}:{ok:!0,status:`no_active_session`},{headers:{"cache-control":`no-store`}})}),GET(EVE_SESSION_STREAM_ROUTE_PATTERN,async(e,{attachSession:t,params:n})=>{let r=await routeAuth(e,g.auth);if(r instanceof Response)return r;let i=requireSessionId(n);return i instanceof Response?i:await createSessionStreamResponse(e,t(i))}),GET(EVE_SUBAGENT_STREAM_ROUTE_PATTERN,async(e,t)=>{let n=await routeAuth(e,g.auth);if(n instanceof Response)return n;let r=t.params.parentSessionId,i=t.params.callId,a=t.params.childSessionId;if(!r||!i||!a)return Response.json({error:`Missing subagent stream coordinates.`,ok:!1},{status:400});let o=parseStartIndex(e);if(o instanceof Response)return o;let s=parseIncludeTailIndex(e),c=createEveSubagentStreamRoutePath({callId:i,childSessionId:a,parentSessionId:r}),l;try{let e=await findRemoteSubagentBinding({callId:i,childSessionId:a,childStreamPath:c,parentSessionId:r,parent:t.attachSession(r)});if(e===void 0)throw Error(`Remote subagent binding not found.`);l=e}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let u=readRemoteAgentStreamHeadersResolver(t);if(u===void 0)return Response.json({error:`Subagent stream proxy requires internal channel dispatch context.`,ok:!1},{status:500});let d;try{d=await u({name:l.data.toolName,resolverId:l.data.remote.resolverId,url:l.data.remote.url})}catch{return Response.json({error:`Subagent stream not found.`,ok:!1},{status:404})}let f=new URL(createEveSessionStreamRoutePath(a).replace(/^\/+/,``),`${l.data.remote.url.replace(/\/+$/,``)}/`);o!==void 0&&f.searchParams.set(`startIndex`,String(o)),s&&f.searchParams.set(`includeTailIndex`,`1`);let p=await fetch(f,{cache:`no-store`,headers:d,redirect:`manual`,signal:e.signal}),m=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=p.headers.get(e);t!==null&&m.set(e,t)}return new Response(p.body,{headers:m,status:p.status,statusText:p.statusText})})],events:g.events})}export{eveChannel};
@@ -1 +1 @@
1
- import{createHash}from"node:crypto";import{deriveAgentOperationId}from"#harness/handles/operation-id.js";function deriveRootTurnActivityWorkId(e){return`root:${hashTuple([e.sessionId,e.turnId])}`}function deriveChildActivityWorkId(e){return`work:${deriveAgentOperationId(e)}`}function hashTuple(t){return createHash(`sha256`).update(JSON.stringify(t)).digest(`hex`)}export{deriveChildActivityWorkId,deriveRootTurnActivityWorkId};
1
+ import{createHash}from"node:crypto";import{deriveAgentOperationId}from"#subagents/handles/operation-id.js";function deriveRootTurnActivityWorkId(e){return`root:${hashTuple([e.sessionId,e.turnId])}`}function deriveChildActivityWorkId(e){return`work:${deriveAgentOperationId(e)}`}function hashTuple(t){return createHash(`sha256`).update(JSON.stringify(t)).digest(`hex`)}export{deriveChildActivityWorkId,deriveRootTurnActivityWorkId};
@@ -1 +1 @@
1
- import{createLogger,logError}from"#internal/logging.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{requestWorkflowTurnCancellation}from"#execution/workflow-runtime.js";import{cancelRemoteAgentTurn,isRetryableRemoteAgentCancelError,resolveRemoteAgentForAction}from"#execution/remote-agent-dispatch.js";import{getAgentHandleStore}from"#harness/handles/store.js";import{deserializeContext}from"#context/serialize.js";import{readDurableSession}from"#execution/durable-session-store.js";import{cancelToolRun}from"#execution/tool-run/cancel.js";import{getToolRuns}from"#harness/tool-runs.js";import{getDynamicSubagentSelection}from"#context/dynamic-subagent-lifecycle.js";const log=createLogger(`execution.cancel-descendant-turns`);async function cancelDescendantTurnsStep(e){"use step";let r,i;try{let t=await readDurableSession(e.sessionState);r=(getAgentHandleStore(t.state)?.handles??[]).filter(e=>e.phase===`running`),i=getToolRuns(t.state)}catch(n){logError(log,`failed to read pending descendants during cancellation`,n,{sessionId:e.sessionState.sessionId});return}if(await Promise.all(i.map(e=>cancelToolRun(e,`The turn that called the tool was cancelled.`))),r.length===0)return;let a,getRemoteContext=()=>a??=deserializeContext(e.serializedContext).then(e=>({ctx:e,registry:e.require(BundleKey).subagentRegistry.subagentsByNodeId}));await Promise.all(r.map(e=>e.address.kind===`agent/remote`?cancelRemoteDescendant({handle:e,remoteContext:getRemoteContext()}):cancelLocalDescendant({handle:e})))}async function cancelLocalDescendant(e){let{handle:n}=e;try{let e=await requestCancellationWithRetry({request:()=>requestWorkflowTurnCancellation({sessionId:n.address.sessionId}),shouldRetryError:()=>!1});e.status!==`accepted`&&log.warn(`descendant cancel was never accepted; the child may run to completion`,{callId:n.operation.callId,childSessionId:n.address.sessionId,finalStatus:e.status,subagentName:n.identity.name})}catch(e){logError(log,`failed to cancel local descendant turn`,e,{callId:n.operation.callId,childSessionId:n.address.sessionId,subagentName:n.identity.name})}}async function cancelRemoteDescendant(e){let{handle:n}=e;if(n.address.kind!==`agent/remote`)return;let r=n.address.url;try{let{ctx:t,registry:o}=await e.remoteContext,s=getDynamicSubagentSelection(t,n.identity.nodeId),c={...await resolveRemoteAgentForAction({dynamicRemoteAgent:s?.kind===`remote`?s.remoteAgent:void 0,nodeId:n.identity.nodeId,remoteAgentName:n.identity.name,registry:o}),url:r},l=await requestCancellationWithRetry({request:()=>cancelRemoteAgentTurn({remote:c,sessionId:n.address.sessionId}),shouldRetryError:isRetryableRemoteAgentCancelError});l.status!==`accepted`&&log.warn(`remote descendant cancel was never accepted; the child may run to completion`,{callId:n.operation.callId,childSessionId:n.address.sessionId,finalStatus:l.status,remoteAgentName:n.identity.name})}catch(e){logError(log,`failed to cancel remote descendant turn`,e,{callId:n.operation.callId,childSessionId:n.address.sessionId,remoteAgentName:n.identity.name})}}async function requestCancellationWithRetry(e){let t=250,n={status:`no_active_turn`};for(let r=1;r<=8;r+=1){try{if(n=await e.request(),n.status===`accepted`||r===8)return n}catch(t){if(!e.shouldRetryError(t)||r===8)throw t}await new Promise(e=>setTimeout(e,t)),t=Math.min(t*2,1500)}return n}export{cancelDescendantTurnsStep};
1
+ import{createLogger,logError}from"#internal/logging.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{requestWorkflowTurnCancellation}from"#execution/workflow-runtime.js";import{deserializeContext}from"#context/serialize.js";import{readDurableSession}from"#execution/durable-session-store.js";import{cancelRemoteAgentTurn,isRetryableRemoteAgentCancelError,resolveRemoteAgentForAction}from"#subagents/remote-dispatch.js";import{cancelWorkflowToolRun}from"#execution/tools/workflow/cancel.js";import{getWorkflowToolRuns}from"#harness/workflow-tool-runs.js";import{getAgentHandleStore}from"#subagents/handles/store.js";import{getDynamicSubagentSelection}from"#context/dynamic-subagent-lifecycle.js";const log=createLogger(`execution.cancel-descendant-turns`);async function cancelDescendantTurnsStep(e){"use step";let r,o;try{let t=await readDurableSession(e.sessionState);o=getWorkflowToolRuns(t.state);let n=new Set(o.map(e=>e.runId));r=(getAgentHandleStore(t.state)?.handles??[]).filter(e=>e.phase===`running`||e.phase===`claimed`&&n.has(e.ownerId))}catch(n){logError(log,`failed to read pending descendants during cancellation`,n,{sessionId:e.sessionState.sessionId});return}if(await Promise.all(o.map(e=>cancelWorkflowToolRun(e,`The turn that called the tool was cancelled.`))),r.length===0)return;let s,getRemoteContext=()=>s??=deserializeContext(e.serializedContext).then(e=>({ctx:e,registry:e.require(BundleKey).subagentRegistry.subagentsByNodeId}));await Promise.all(r.map(e=>e.address.kind===`agent/remote`?cancelRemoteDescendant({handle:e,remoteContext:getRemoteContext()}):cancelLocalDescendant({handle:e})))}async function cancelLocalDescendant(e){let{handle:n}=e;try{let e=await requestCancellationWithRetry({request:()=>requestWorkflowTurnCancellation({sessionId:n.address.sessionId}),shouldRetryError:()=>!1});e.status!==`accepted`&&log.warn(`descendant cancel was never accepted; the child may run to completion`,{callId:readHandleCallId(n),childSessionId:n.address.sessionId,finalStatus:e.status,subagentName:n.identity.name})}catch(e){logError(log,`failed to cancel local descendant turn`,e,{callId:readHandleCallId(n),childSessionId:n.address.sessionId,subagentName:n.identity.name})}}async function cancelRemoteDescendant(e){let{handle:n}=e;if(n.address.kind!==`agent/remote`)return;let r=n.address.url;try{let{ctx:t,registry:i}=await e.remoteContext,a=getDynamicSubagentSelection(t,n.identity.nodeId),c={...await resolveRemoteAgentForAction({dynamicRemoteAgent:a?.kind===`remote`?a.remoteAgent:void 0,nodeId:n.identity.nodeId,remoteAgentName:n.identity.name,registry:i}),url:r},l=await requestCancellationWithRetry({request:()=>cancelRemoteAgentTurn({remote:c,sessionId:n.address.sessionId}),shouldRetryError:isRetryableRemoteAgentCancelError});l.status!==`accepted`&&log.warn(`remote descendant cancel was never accepted; the child may run to completion`,{callId:readHandleCallId(n),childSessionId:n.address.sessionId,finalStatus:l.status,remoteAgentName:n.identity.name})}catch(e){logError(log,`failed to cancel remote descendant turn`,e,{callId:readHandleCallId(n),childSessionId:n.address.sessionId,remoteAgentName:n.identity.name})}}function readHandleCallId(e){return e.phase===`running`?e.operation.callId:e.callId}async function requestCancellationWithRetry(e){let t=250,n={status:`no_active_turn`};for(let r=1;r<=8;r+=1){try{if(n=await e.request(),n.status===`accepted`||r===8)return n}catch(t){if(!e.shouldRetryError(t)||r===8)throw t}await new Promise(e=>setTimeout(e,t)),t=Math.min(t*2,1500)}return n}export{cancelDescendantTurnsStep};
@@ -1 +1 @@
1
- import{ChannelInstrumentationKey}from"#context/keys.js";import{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{buildChannelInstrumentationProjection}from"#channel/instrumentation.js";function setChannelContext(e,t,n={}){e.set(ChannelKey,t),e.set(ChannelInstrumentationKey,buildChannelInstrumentationProjection({adapter:t,channelName:n.channelName,existingKind:e.get(ChannelInstrumentationKey)?.kind}))}export{setChannelContext};
1
+ import{ChannelInstrumentationKey}from"#context/keys.js";import{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{buildChannelInstrumentationProjection}from"#channel/instrumentation.js";function setChannelContext(e,t,n={}){let r=e.get(ChannelInstrumentationKey),i=buildChannelInstrumentationProjection({adapter:t,channelName:n.channelName,existingKind:r?.kind});e.set(ChannelKey,t),e.set(ChannelInstrumentationKey,{...i,metadata:t.instrumentation?.metadata===void 0&&r!==void 0?r.metadata:i.metadata})}export{setChannelContext};