eve 0.44.4 → 0.45.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (827) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +13 -12
  3. package/dist/src/acp/adapter.d.ts +1 -1
  4. package/dist/src/approval/definition.d.ts +84 -0
  5. package/dist/src/approval/definition.js +1 -0
  6. package/dist/src/{runtime/governance → channel}/auth/http-basic.d.ts +1 -1
  7. package/dist/src/{runtime/governance → channel}/auth/jwt-ecdsa.d.ts +1 -1
  8. package/dist/src/channel/auth/jwt-ecdsa.js +1 -0
  9. package/dist/src/{runtime/governance → channel}/auth/jwt-hmac.d.ts +1 -1
  10. package/dist/src/channel/auth/jwt-hmac.js +1 -0
  11. package/dist/src/{runtime/governance → channel}/auth/oidc.d.ts +1 -1
  12. package/dist/src/channel/auth/oidc.js +1 -0
  13. package/dist/src/{runtime/governance → channel}/auth/token-claims.d.ts +1 -1
  14. package/dist/src/{runtime/governance → channel}/auth/types.d.ts +1 -1
  15. package/dist/src/{runtime/governance → channel}/auth/vercel-oidc-project.d.ts +1 -1
  16. package/dist/src/channel/channel-operations.d.ts +1 -1
  17. package/dist/src/channel/channel-operations.js +1 -1
  18. package/dist/src/channel/instrumentation.d.ts +1 -0
  19. package/dist/src/channel/instrumentation.js +1 -1
  20. package/dist/src/channel/resolve-text.d.ts +1 -1
  21. package/dist/src/channel/routes.d.ts +1 -1
  22. package/dist/src/channel/session.d.ts +1 -1
  23. package/dist/src/channel/session.js +1 -1
  24. package/dist/src/channel/types.d.ts +2 -2
  25. package/dist/src/chunks/{use-eve-agent-BtsOXv3s.js → use-eve-agent-BH7Z6SDu.js} +397 -106
  26. package/dist/src/chunks/{use-eve-agent-BJwaMe5k.js → use-eve-agent-DI2j5XK8.js} +397 -106
  27. package/dist/src/cli/banner.js +1 -1
  28. package/dist/src/cli/commands/agent-instructions.js +2 -2
  29. package/dist/src/cli/commands/channel-add-conflicts.js +1 -1
  30. package/dist/src/cli/commands/extension-build.js +1 -1
  31. package/dist/src/cli/commands/extension-init.js +1 -1
  32. package/dist/src/cli/commands/info.js +1 -1
  33. package/dist/src/cli/commands/init.js +1 -1
  34. package/dist/src/cli/commands/integration-connect.d.ts +2 -0
  35. package/dist/src/cli/commands/integration-connect.js +1 -1
  36. package/dist/src/cli/commands/register-integration-commands.js +1 -1
  37. package/dist/src/cli/commands/trace.js +1 -1
  38. package/dist/src/cli/dev/tui/remote-auth.js +1 -1
  39. package/dist/src/cli/dev/tui/setup-selection-input.d.ts +3 -1
  40. package/dist/src/cli/dev/tui/setup-selection-input.js +2 -2
  41. package/dist/src/cli/dev/tui/terminal-renderer.js +2 -2
  42. package/dist/src/cli/dev/tui/traces/trace-conversation.d.ts +1 -1
  43. package/dist/src/cli/dev/tui/traces/trace-conversation.js +1 -1
  44. package/dist/src/cli/dev/tui/traces/trace-viewer-state.js +1 -1
  45. package/dist/src/cli/invoke/result.d.ts +1 -1
  46. package/dist/src/cli/ui/live-row.js +1 -1
  47. package/dist/src/cli/ui/output.js +1 -1
  48. package/dist/src/client/agent-info-schema.d.ts +1946 -302
  49. package/dist/src/client/agent-info-schema.js +1 -1
  50. package/dist/src/client/client.js +1 -1
  51. package/dist/src/client/eve-agent-store.d.ts +6 -5
  52. package/dist/src/client/eve-agent-store.js +1 -1
  53. package/dist/src/client/health-response-error.d.ts +5 -0
  54. package/dist/src/client/health-response-error.js +1 -0
  55. package/dist/src/client/health-schema.d.ts +7 -0
  56. package/dist/src/client/health-schema.js +1 -0
  57. package/dist/src/client/index.d.ts +6 -3
  58. package/dist/src/client/index.js +1 -1
  59. package/dist/src/client/message-action-parts.d.ts +2 -2
  60. package/dist/src/client/message-reducer-types.d.ts +1 -1
  61. package/dist/src/client/reducer.d.ts +1 -1
  62. package/dist/src/client/session-utils.d.ts +1 -1
  63. package/dist/src/client/session.d.ts +1 -1
  64. package/dist/src/client/session.js +1 -1
  65. package/dist/src/client/types.d.ts +3 -7
  66. package/dist/src/compiler/artifacts.d.ts +37 -11
  67. package/dist/src/compiler/artifacts.js +1 -1
  68. package/dist/src/compiler/channel-route-plan.d.ts +10 -0
  69. package/dist/src/compiler/channel-route-plan.js +1 -0
  70. package/dist/src/compiler/compile-agent.d.ts +2 -2
  71. package/dist/src/compiler/compile-agent.js +2 -2
  72. package/dist/src/compiler/compile-from-memory.d.ts +13 -52
  73. package/dist/src/compiler/compile-from-memory.js +1 -1
  74. package/dist/src/compiler/diagnostics.d.ts +38 -0
  75. package/dist/src/compiler/diagnostics.js +1 -0
  76. package/dist/src/compiler/extension-compatibility.d.ts +14 -11
  77. package/dist/src/compiler/extension-compatibility.js +1 -1
  78. package/dist/src/compiler/load-binding-namespace.d.ts +9 -0
  79. package/dist/src/compiler/load-binding-namespace.js +1 -0
  80. package/dist/src/compiler/manifest.d.ts +182 -51
  81. package/dist/src/compiler/manifest.js +1 -1
  82. package/dist/src/compiler/module-map.d.ts +12 -30
  83. package/dist/src/compiler/module-map.js +3 -3
  84. package/dist/src/compiler/node-source-state.d.ts +24 -0
  85. package/dist/src/compiler/node-source-state.js +1 -0
  86. package/dist/src/compiler/normalize-agent-config.d.ts +5 -1
  87. package/dist/src/compiler/normalize-agent-config.js +1 -1
  88. package/dist/src/compiler/normalize-channel.d.ts +8 -2
  89. package/dist/src/compiler/normalize-channel.js +1 -1
  90. package/dist/src/compiler/normalize-connection.d.ts +1 -1
  91. package/dist/src/compiler/normalize-connection.js +1 -1
  92. package/dist/src/compiler/normalize-helpers.d.ts +14 -4
  93. package/dist/src/compiler/normalize-helpers.js +1 -1
  94. package/dist/src/compiler/normalize-hook.d.ts +4 -11
  95. package/dist/src/compiler/normalize-hook.js +1 -1
  96. package/dist/src/compiler/normalize-instructions.d.ts +3 -3
  97. package/dist/src/compiler/normalize-instructions.js +1 -1
  98. package/dist/src/compiler/normalize-manifest-helpers.d.ts +29 -0
  99. package/dist/src/compiler/normalize-manifest-helpers.js +1 -0
  100. package/dist/src/compiler/normalize-manifest.d.ts +8 -4
  101. package/dist/src/compiler/normalize-manifest.js +1 -1
  102. package/dist/src/compiler/normalize-memory.d.ts +5 -0
  103. package/dist/src/compiler/normalize-memory.js +1 -0
  104. package/dist/src/compiler/normalize-sandbox.d.ts +1 -1
  105. package/dist/src/compiler/normalize-sandbox.js +1 -1
  106. package/dist/src/compiler/normalize-schedule.d.ts +2 -2
  107. package/dist/src/compiler/normalize-schedule.js +1 -1
  108. package/dist/src/compiler/normalize-skill.d.ts +2 -2
  109. package/dist/src/compiler/normalize-skill.js +1 -1
  110. package/dist/src/compiler/normalize-subagent.d.ts +21 -39
  111. package/dist/src/compiler/normalize-subagent.js +1 -1
  112. package/dist/src/compiler/normalize-tool.d.ts +2 -1
  113. package/dist/src/compiler/normalize-tool.js +1 -1
  114. package/dist/src/compiler/project-sources.d.ts +70 -0
  115. package/dist/src/compiler/project-sources.js +1 -0
  116. package/dist/src/compiler/remote-agent-node.d.ts +8 -0
  117. package/dist/src/compiler/remote-agent-node.js +1 -1
  118. package/dist/src/compiler/source-graph.d.ts +155 -0
  119. package/dist/src/compiler/source-graph.js +1 -0
  120. package/dist/src/compiler/validate-artifact.d.ts +17 -0
  121. package/dist/src/compiler/validate-artifact.js +1 -0
  122. package/dist/src/compiler/workspace-resources.js +1 -1
  123. package/dist/src/connections/errors.d.ts +125 -0
  124. package/dist/src/connections/errors.js +1 -0
  125. package/dist/src/context/build-base-tool-context.d.ts +2 -2
  126. package/dist/src/context/build-callback-context.d.ts +1 -1
  127. package/dist/src/context/build-dynamic-tools.js +1 -1
  128. package/dist/src/context/dynamic-instruction-lifecycle.js +1 -1
  129. package/dist/src/context/dynamic-resolve-context.d.ts +1 -1
  130. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  131. package/dist/src/context/dynamic-subagent-lifecycle.d.ts +0 -2
  132. package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
  133. package/dist/src/context/dynamic-tool-lifecycle.d.ts +10 -3
  134. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  135. package/dist/src/context/key-names.d.ts +12 -0
  136. package/dist/src/context/key-names.js +1 -0
  137. package/dist/src/context/keys.d.ts +33 -1
  138. package/dist/src/context/keys.js +1 -1
  139. package/dist/src/context/memory-event-lifecycle.d.ts +13 -0
  140. package/dist/src/context/memory-event-lifecycle.js +1 -0
  141. package/dist/src/context/memory-lifecycle.d.ts +52 -0
  142. package/dist/src/context/memory-lifecycle.js +1 -0
  143. package/dist/src/context/memory-tools.d.ts +12 -0
  144. package/dist/src/context/memory-tools.js +1 -0
  145. package/dist/src/context/providers/connection-key.d.ts +1 -1
  146. package/dist/src/context/providers/connection.d.ts +1 -1
  147. package/dist/src/context/session-context.d.ts +32 -0
  148. package/dist/src/discover/discover-agent.d.ts +0 -13
  149. package/dist/src/discover/discover-agent.js +1 -1
  150. package/dist/src/discover/discover-subagent.js +1 -1
  151. package/dist/src/discover/extensions.d.ts +6 -6
  152. package/dist/src/discover/extensions.js +1 -1
  153. package/dist/src/discover/filesystem.d.ts +2 -2
  154. package/dist/src/discover/filesystem.js +1 -1
  155. package/dist/src/discover/manifest.d.ts +9 -1
  156. package/dist/src/discover/manifest.js +1 -1
  157. package/dist/src/discover/memory.d.ts +14 -0
  158. package/dist/src/discover/memory.js +1 -0
  159. package/dist/src/discover/project.js +1 -1
  160. package/dist/src/dynamic/definition.d.ts +117 -0
  161. package/dist/src/dynamic/definition.js +1 -0
  162. package/dist/src/evals/autoevals-client.js +1 -1
  163. package/dist/src/evals/cli/eval.js +1 -1
  164. package/dist/src/evals/index.d.ts +1 -1
  165. package/dist/src/evals/match.d.ts +1 -1
  166. package/dist/src/evals/runner/reporters/console.js +1 -1
  167. package/dist/src/evals/session.d.ts +1 -1
  168. package/dist/src/evals/target.js +1 -1
  169. package/dist/src/evals/types.d.ts +1 -1
  170. package/dist/src/eve-channel/index.d.ts +12 -0
  171. package/dist/src/eve-channel/index.js +1 -0
  172. package/dist/src/eve-channel/request.d.ts +49 -0
  173. package/dist/src/eve-channel/request.js +3 -0
  174. package/dist/src/eve-channel/support.d.ts +34 -0
  175. package/dist/src/eve-channel/support.js +1 -0
  176. package/dist/src/eve-channel/types.d.ts +128 -0
  177. package/dist/src/eve-channel/types.js +1 -0
  178. package/dist/src/execution/agent-handle-dispatch.d.ts +1 -1
  179. package/dist/src/execution/agent-handle-dispatch.js +1 -1
  180. package/dist/src/execution/authorization-callback-match.d.ts +1 -1
  181. package/dist/src/execution/cancel-descendant-turns-step.js +1 -1
  182. package/dist/src/execution/compaction.js +1 -1
  183. package/dist/src/execution/connection-auth-tool-result.d.ts +1 -1
  184. package/dist/src/{runtime → execution}/connections/callback-route.d.ts +2 -20
  185. package/dist/src/execution/connections/callback-route.js +1 -0
  186. package/dist/src/execution/create-session-step.js +1 -1
  187. package/dist/src/execution/delegated-parent-notification.d.ts +2 -2
  188. package/dist/src/execution/delegated-parent-notification.js +1 -1
  189. package/dist/src/execution/delegated-parent-result.d.ts +1 -1
  190. package/dist/src/execution/delegated-parent-result.js +1 -1
  191. package/dist/src/execution/delegation-tool.d.ts +1 -1
  192. package/dist/src/execution/delegation-tool.js +1 -1
  193. package/dist/src/execution/dispatch-action-failures.d.ts +1 -1
  194. package/dist/src/execution/dispatch-runtime-actions-shared.d.ts +1 -2
  195. package/dist/src/execution/dispatch-runtime-actions-shared.js +1 -1
  196. package/dist/src/execution/dispatch-runtime-actions-step.js +1 -1
  197. package/dist/src/execution/dispatch-workflow-runtime-actions-step.d.ts +1 -1
  198. package/dist/src/execution/durable-session-migrations/turn-workflow.d.ts +1 -1
  199. package/dist/src/execution/durable-session-store.js +1 -1
  200. package/dist/src/execution/effective-output-schema.d.ts +2 -1
  201. package/dist/src/execution/eve-workflow-attributes.d.ts +6 -0
  202. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  203. package/dist/src/execution/forward-turn-cancellation-step.js +1 -1
  204. package/dist/src/execution/history-view.d.ts +2 -2
  205. package/dist/src/execution/history-view.js +1 -1
  206. package/dist/src/execution/node-step.js +1 -1
  207. package/dist/src/execution/remote-agent-dispatch.d.ts +10 -8
  208. package/dist/src/execution/remote-agent-dispatch.js +1 -1
  209. package/dist/src/execution/runtime-context.js +1 -1
  210. package/dist/src/execution/sandbox/{bash-tool.d.ts → bash.d.ts} +2 -2
  211. package/dist/src/execution/sandbox/bindings/vercel-credentials.js +1 -1
  212. package/dist/src/execution/sandbox/glob-tool.js +1 -1
  213. package/dist/src/execution/sandbox/grep-tool.js +1 -1
  214. package/dist/src/execution/sandbox/{read-file-tool.d.ts → read-file.d.ts} +2 -2
  215. package/dist/src/execution/sandbox/{read-file-tool.js → read-file.js} +1 -1
  216. package/dist/src/execution/sandbox/{write-file-tool.d.ts → write-file.d.ts} +2 -2
  217. package/dist/src/execution/sandbox/write-file.js +1 -0
  218. package/dist/src/execution/session-callback-route.d.ts +2 -0
  219. package/dist/src/execution/session-callback-route.js +1 -0
  220. package/dist/src/execution/session-callback-step.js +1 -1
  221. package/dist/src/execution/session-timeout-steps.js +1 -1
  222. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  223. package/dist/src/execution/subagent-adapter.js +1 -1
  224. package/dist/src/execution/subagent-hitl-proxy.d.ts +1 -1
  225. package/dist/src/execution/subagent-invocation.d.ts +0 -3
  226. package/dist/src/execution/subagent-invocation.js +1 -1
  227. package/dist/src/execution/subagent-start-local.d.ts +1 -2
  228. package/dist/src/execution/subagent-start-local.js +1 -1
  229. package/dist/src/execution/subagent-start-remote.d.ts +1 -2
  230. package/dist/src/execution/subagent-start-remote.js +1 -1
  231. package/dist/src/execution/subagent-tool.d.ts +4 -8
  232. package/dist/src/execution/subagent-tool.js +1 -1
  233. package/dist/src/execution/subagent-usage-span.d.ts +1 -1
  234. package/dist/src/execution/task-input-response-route.d.ts +2 -0
  235. package/dist/src/execution/task-input-response-route.js +1 -0
  236. package/dist/src/execution/tasks/child/instructions.js +1 -1
  237. package/dist/src/execution/tasks/child/update.d.ts +1 -1
  238. package/dist/src/execution/tasks/child/update.js +1 -1
  239. package/dist/src/execution/tasks/parent/continuation-dispatch.d.ts +1 -1
  240. package/dist/src/execution/tasks/parent/control-shared.d.ts +1 -1
  241. package/dist/src/execution/tasks/parent/delegate.d.ts +2 -2
  242. package/dist/src/execution/tasks/parent/delegate.js +1 -1
  243. package/dist/src/execution/tasks/parent/dispatch-task-step.js +1 -1
  244. package/dist/src/execution/tasks/parent/dispatch.d.ts +3 -1
  245. package/dist/src/execution/tasks/parent/dispatch.js +1 -1
  246. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
  247. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  248. package/dist/src/execution/terminate-child-sessions-step.d.ts +4 -5
  249. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  250. package/dist/src/execution/tool-auth.d.ts +5 -6
  251. package/dist/src/execution/tool-auth.js +1 -1
  252. package/dist/src/execution/tools/connection-search.d.ts +1 -0
  253. package/dist/src/execution/tools/connection-search.js +2 -0
  254. package/dist/src/{runtime/framework-tools → execution/tools}/file-state.d.ts +2 -2
  255. package/dist/src/execution/tools/load-skill.d.ts +6 -0
  256. package/dist/src/execution/tools/load-skill.js +1 -0
  257. package/dist/src/{runtime/framework-tools → execution/tools}/subagent/local.d.ts +7 -7
  258. package/dist/src/execution/tools/subagent/local.js +1 -0
  259. package/dist/src/{runtime/framework-tools → execution/tools}/subagent/remote.d.ts +5 -5
  260. package/dist/src/execution/tools/subagent/remote.js +1 -0
  261. package/dist/src/execution/tools/tasks.d.ts +18 -0
  262. package/dist/src/execution/tools/tasks.js +1 -0
  263. package/dist/src/{runtime/framework-tools → execution/tools}/todo.d.ts +0 -2
  264. package/dist/src/{runtime/framework-tools → execution/tools}/todo.js +1 -2
  265. package/dist/src/execution/turn-control-protocol.js +1 -1
  266. package/dist/src/execution/web-fetch/request.js +1 -1
  267. package/dist/src/execution/wire/session-inbox-resume.js +1 -1
  268. package/dist/src/execution/wire/session-inbox-wire.v1.js +1 -1
  269. package/dist/src/execution/workflow-entry.js +1 -1
  270. package/dist/src/execution/workflow-runtime.js +1 -1
  271. package/dist/src/execution/workflow-steps.d.ts +1 -3
  272. package/dist/src/execution/workflow-steps.js +1 -1
  273. package/dist/src/execution/workflow-trace-context.js +1 -1
  274. package/dist/src/framework/host-inventory.d.ts +8 -0
  275. package/dist/src/framework/host-inventory.js +1 -0
  276. package/dist/src/framework/sources/modules/agent.d.ts +4 -0
  277. package/dist/src/framework/sources/modules/agent.js +1 -0
  278. package/dist/src/framework/sources/modules/eve-channel.d.ts +1 -0
  279. package/dist/src/framework/sources/modules/eve-channel.js +1 -0
  280. package/dist/src/framework/sources/modules/home-channel.d.ts +2 -0
  281. package/dist/src/framework/sources/modules/home-channel.js +1 -0
  282. package/dist/src/framework/sources/modules/memory-wrapper.d.ts +2 -0
  283. package/dist/src/framework/sources/modules/memory-wrapper.js +1 -0
  284. package/dist/src/framework/sources/modules/sandbox.d.ts +2 -0
  285. package/dist/src/framework/sources/modules/sandbox.js +1 -0
  286. package/dist/src/framework/sources/registry.d.ts +6 -0
  287. package/dist/src/framework/sources/registry.js +1 -0
  288. package/dist/src/harness/action-result-helpers.d.ts +1 -1
  289. package/dist/src/harness/advertised-tools.js +1 -1
  290. package/dist/src/harness/authorization.d.ts +3 -3
  291. package/dist/src/harness/background-tools.d.ts +2 -2
  292. package/dist/src/harness/channel-delivery-instrumentation.js +1 -1
  293. package/dist/src/harness/compaction.js +1 -1
  294. package/dist/src/harness/emission.d.ts +1 -1
  295. package/dist/src/harness/emission.js +1 -1
  296. package/dist/src/harness/execute-tool.d.ts +3 -3
  297. package/dist/src/{runtime/framework-tools → harness}/final-output.d.ts +1 -1
  298. package/dist/src/harness/final-output.js +1 -0
  299. package/dist/src/harness/handles/query.d.ts +1 -1
  300. package/dist/src/harness/handles/store.d.ts +8 -0
  301. package/dist/src/harness/handles/store.js +1 -1
  302. package/dist/src/harness/hitl/approval-input-requests.d.ts +1 -1
  303. package/dist/src/harness/hitl/approval-prompt.d.ts +1 -1
  304. package/dist/src/harness/hitl/pending-input-resolution.d.ts +2 -2
  305. package/dist/src/harness/hitl/question-input-requests.d.ts +1 -1
  306. package/dist/src/harness/input-extraction.d.ts +1 -1
  307. package/dist/src/harness/input-extraction.js +1 -1
  308. package/dist/src/harness/input-request-class.d.ts +1 -1
  309. package/dist/src/harness/input-request-resolution.d.ts +1 -1
  310. package/dist/src/harness/input-requests.d.ts +2 -2
  311. package/dist/src/harness/instrumentation/lifecycle.d.ts +3 -0
  312. package/dist/src/harness/instrumentation/providers.js +1 -1
  313. package/dist/src/harness/instrumentation/runtime.d.ts +2 -1
  314. package/dist/src/harness/pending-input-batches.d.ts +1 -1
  315. package/dist/src/harness/prepare-trace-context.d.ts +3 -0
  316. package/dist/src/harness/prepare-trace-context.js +1 -1
  317. package/dist/src/harness/provider-safety.d.ts +7 -0
  318. package/dist/src/harness/provider-safety.js +1 -0
  319. package/dist/src/{runtime/framework-tools/web-search.d.ts → harness/provider-tool-schemas.d.ts} +1 -9
  320. package/dist/src/harness/provider-tool-schemas.js +1 -0
  321. package/dist/src/harness/provider-tools.js +1 -1
  322. package/dist/src/harness/proxy-input-requests.d.ts +1 -1
  323. package/dist/src/harness/request-input-tool.d.ts +4 -0
  324. package/dist/src/harness/request-input-tool.js +1 -0
  325. package/dist/src/harness/runtime-actions.d.ts +1 -1
  326. package/dist/src/harness/session-limit-continuation.d.ts +1 -1
  327. package/dist/src/harness/step-hooks.d.ts +2 -0
  328. package/dist/src/harness/step-hooks.js +1 -1
  329. package/dist/src/harness/stream-actions.d.ts +1 -1
  330. package/dist/src/harness/subagent-depth.d.ts +1 -1
  331. package/dist/src/harness/tool-call-action.d.ts +1 -1
  332. package/dist/src/harness/tool-call-input-errors.d.ts +1 -1
  333. package/dist/src/harness/tool-loop.js +2 -2
  334. package/dist/src/harness/tool-model-output.d.ts +1 -1
  335. package/dist/src/harness/tools.d.ts +1 -1
  336. package/dist/src/harness/tools.js +1 -1
  337. package/dist/src/harness/types.d.ts +3 -9
  338. package/dist/src/harness/workflow-runtime-action-state.d.ts +1 -1
  339. package/dist/src/harness/workflow-subagent-limit.d.ts +1 -1
  340. package/dist/src/instrumentation/provider.d.ts +117 -0
  341. package/dist/src/instrumentation/provider.js +1 -0
  342. package/dist/src/internal/application/compiled-artifacts.js +5 -4
  343. package/dist/src/internal/application/package.js +1 -1
  344. package/dist/src/internal/authored-definition/approval.d.ts +1 -1
  345. package/dist/src/internal/authored-definition/connection.js +1 -1
  346. package/dist/src/internal/authored-definition/core.js +1 -1
  347. package/dist/src/internal/authored-definition/memory.d.ts +2 -0
  348. package/dist/src/internal/authored-definition/memory.js +1 -0
  349. package/dist/src/internal/authored-definition/schema-backed.d.ts +7 -3
  350. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  351. package/dist/src/internal/authored-definition/source-identity.d.ts +17 -0
  352. package/dist/src/internal/authored-definition/source-identity.js +1 -0
  353. package/dist/src/internal/authored-module-map-loader.d.ts +1 -5
  354. package/dist/src/internal/authored-module-map-loader.js +1 -1
  355. package/dist/src/internal/dynamic-tool-rebind.d.ts +3 -0
  356. package/dist/src/internal/dynamic-tool-rebind.js +1 -0
  357. package/dist/src/internal/helpers/markdown.js +1 -1
  358. package/dist/src/internal/invocation/agent-invocation.d.ts +2 -2
  359. package/dist/src/internal/invocation/workflow-execution.d.ts +1 -1
  360. package/dist/src/internal/invocation/workflow-execution.js +1 -1
  361. package/dist/src/internal/materialized-authored-modules.js +1 -1
  362. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  363. package/dist/src/internal/nitro/host/application-route-registry.d.ts +2 -41
  364. package/dist/src/internal/nitro/host/application-route-registry.js +1 -1
  365. package/dist/src/internal/nitro/host/build-extension.js +1 -1
  366. package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
  367. package/dist/src/internal/nitro/host/configure-nitro-routes.js +3 -4
  368. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  369. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
  370. package/dist/src/internal/nitro/host/extension-capability-requirements.d.ts +2 -0
  371. package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
  372. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  373. package/dist/src/internal/nitro/host/start-production-server.js +3 -3
  374. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.d.ts +9 -215
  375. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  376. package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.d.ts +2 -13
  377. package/dist/src/internal/nitro/routes/agent-info/load-agent-info-data.js +1 -1
  378. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  379. package/dist/src/internal/nitro/routes/channel-route-context.d.ts +5 -0
  380. package/dist/src/internal/nitro/routes/channel-route-context.js +1 -1
  381. package/dist/src/internal/nitro/routes/index.d.ts +0 -9
  382. package/dist/src/internal/nitro/routes/index.js +2 -1
  383. package/dist/src/internal/nitro/routes/info.js +1 -1
  384. package/dist/src/internal/nitro/routes/runtime-stack.d.ts +5 -5
  385. package/dist/src/internal/nitro/routes/runtime-stack.js +1 -1
  386. package/dist/src/internal/programmatic-source-loader.d.ts +2 -0
  387. package/dist/src/internal/programmatic-source-loader.js +1 -0
  388. package/dist/src/internal/runtime-registry.d.ts +3 -4
  389. package/dist/src/protocol/message.d.ts +3 -3
  390. package/dist/src/protocol/routes.d.ts +2 -0
  391. package/dist/src/protocol/routes.js +1 -1
  392. package/dist/src/public/agents/auth.d.ts +10 -6
  393. package/dist/src/public/agents/auth.js +1 -1
  394. package/dist/src/public/channels/auth.d.ts +1 -1
  395. package/dist/src/public/channels/auth.js +1 -1
  396. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  397. package/dist/src/public/channels/discord/hitl.d.ts +1 -1
  398. package/dist/src/public/channels/discord/hitl.js +1 -1
  399. package/dist/src/public/channels/discord/inbound.d.ts +1 -0
  400. package/dist/src/public/channels/discord/inbound.js +1 -1
  401. package/dist/src/public/channels/eve.d.ts +1 -139
  402. package/dist/src/public/channels/eve.js +1 -3
  403. package/dist/src/public/channels/github/dispatch.d.ts +5 -0
  404. package/dist/src/public/channels/github/dispatch.js +1 -1
  405. package/dist/src/public/channels/github/githubChannel.js +1 -1
  406. package/dist/src/public/channels/github/inbound.d.ts +2 -0
  407. package/dist/src/public/channels/github/inbound.js +1 -1
  408. package/dist/src/public/channels/index.d.ts +1 -1
  409. package/dist/src/public/channels/index.js +1 -1
  410. package/dist/src/public/channels/linear/hitl.d.ts +1 -1
  411. package/dist/src/public/channels/linear/inbound.js +1 -1
  412. package/dist/src/public/channels/mcp.js +1 -1
  413. package/dist/src/public/channels/slack/action-status.d.ts +1 -1
  414. package/dist/src/public/channels/slack/hitl.d.ts +1 -1
  415. package/dist/src/public/channels/slack/hitl.js +1 -1
  416. package/dist/src/public/channels/slack/inbound.d.ts +9 -0
  417. package/dist/src/public/channels/slack/inbound.js +1 -1
  418. package/dist/src/public/channels/slack/interactions.js +1 -1
  419. package/dist/src/public/channels/slack/model-context.d.ts +3 -1
  420. package/dist/src/public/channels/slack/model-context.js +2 -2
  421. package/dist/src/public/channels/slack/session-operations.d.ts +1 -1
  422. package/dist/src/public/channels/slack/slackChannel.d.ts +1 -1
  423. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  424. package/dist/src/public/channels/teams/hitl.d.ts +1 -1
  425. package/dist/src/public/channels/teams/hitl.js +1 -1
  426. package/dist/src/public/channels/teams/inbound.d.ts +2 -0
  427. package/dist/src/public/channels/teams/inbound.js +1 -1
  428. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  429. package/dist/src/public/channels/teams/verify.js +1 -1
  430. package/dist/src/public/channels/telegram/api.d.ts +15 -0
  431. package/dist/src/public/channels/telegram/api.js +2 -2
  432. package/dist/src/public/channels/telegram/authorization-callback.d.ts +10 -0
  433. package/dist/src/public/channels/telegram/authorization-callback.js +1 -0
  434. package/dist/src/public/channels/telegram/authorization.d.ts +19 -0
  435. package/dist/src/public/channels/telegram/authorization.js +3 -0
  436. package/dist/src/public/channels/telegram/defaults.d.ts +1 -0
  437. package/dist/src/public/channels/telegram/defaults.js +3 -3
  438. package/dist/src/public/channels/telegram/hitl.d.ts +1 -1
  439. package/dist/src/public/channels/telegram/hitl.js +1 -1
  440. package/dist/src/public/channels/telegram/inbound.d.ts +1 -0
  441. package/dist/src/public/channels/telegram/inbound.js +1 -1
  442. package/dist/src/public/channels/telegram/index.d.ts +1 -1
  443. package/dist/src/public/channels/telegram/index.js +1 -1
  444. package/dist/src/public/channels/telegram/state.d.ts +6 -0
  445. package/dist/src/public/channels/telegram/state.js +1 -0
  446. package/dist/src/public/channels/telegram/telegramChannel.d.ts +11 -0
  447. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  448. package/dist/src/public/connections/errors.d.ts +1 -125
  449. package/dist/src/public/connections/errors.js +1 -1
  450. package/dist/src/public/connections/index.d.ts +2 -2
  451. package/dist/src/public/connections/index.js +1 -1
  452. package/dist/src/public/definitions/agent.d.ts +1 -1
  453. package/dist/src/public/definitions/agent.js +1 -1
  454. package/dist/src/public/definitions/approval.d.ts +2 -84
  455. package/dist/src/public/definitions/approval.js +1 -1
  456. package/dist/src/public/definitions/callback-context.d.ts +1 -32
  457. package/dist/src/public/definitions/connections/mcp.d.ts +1 -1
  458. package/dist/src/public/definitions/connections/mcp.js +1 -1
  459. package/dist/src/public/definitions/connections/openapi.d.ts +1 -1
  460. package/dist/src/public/definitions/connections/openapi.js +1 -1
  461. package/dist/src/public/definitions/connections/protocol.d.ts +1 -1
  462. package/dist/src/public/definitions/instructions.d.ts +2 -2
  463. package/dist/src/public/definitions/instructions.js +1 -1
  464. package/dist/src/public/definitions/skill.js +1 -1
  465. package/dist/src/public/index.d.ts +1 -1
  466. package/dist/src/public/instructions/index.d.ts +1 -1
  467. package/dist/src/public/instrumentation/provider.d.ts +1 -117
  468. package/dist/src/public/instrumentation/provider.js +1 -1
  469. package/dist/src/public/memory/index.d.ts +117 -0
  470. package/dist/src/public/memory/index.js +1 -0
  471. package/dist/src/public/memory/scope.d.ts +2 -0
  472. package/dist/src/public/memory/scope.js +1 -0
  473. package/dist/src/public/models/openai/chatgpt/auth.js +1 -1
  474. package/dist/src/public/next/server.js +1 -1
  475. package/dist/src/public/nuxt/dev-server.js +1 -1
  476. package/dist/src/public/sandbox/backends/default.d.ts +1 -49
  477. package/dist/src/public/sandbox/backends/default.js +1 -1
  478. package/dist/src/public/sandbox/backends/docker.d.ts +1 -14
  479. package/dist/src/public/sandbox/backends/docker.js +1 -1
  480. package/dist/src/public/sandbox/backends/just-bash.d.ts +1 -17
  481. package/dist/src/public/sandbox/backends/just-bash.js +1 -1
  482. package/dist/src/public/sandbox/backends/microsandbox.d.ts +1 -17
  483. package/dist/src/public/sandbox/backends/microsandbox.js +1 -1
  484. package/dist/src/public/sandbox/backends/vercel.d.ts +1 -30
  485. package/dist/src/public/sandbox/backends/vercel.js +1 -1
  486. package/dist/src/public/skills/index.d.ts +3 -3
  487. package/dist/src/public/skills/index.js +1 -1
  488. package/dist/src/public/sveltekit/dev-server.js +1 -1
  489. package/dist/src/public/tools/approval/index.d.ts +2 -2
  490. package/dist/src/public/tools/approval/index.js +1 -1
  491. package/dist/src/public/tools/bash.d.ts +3 -0
  492. package/dist/src/public/tools/bash.js +1 -0
  493. package/dist/src/public/tools/glob.d.ts +3 -0
  494. package/dist/src/public/tools/glob.js +1 -0
  495. package/dist/src/public/tools/grep.d.ts +3 -0
  496. package/dist/src/public/tools/grep.js +1 -0
  497. package/dist/src/public/tools/index.d.ts +6 -11
  498. package/dist/src/public/tools/index.js +1 -1
  499. package/dist/src/public/tools/load-skill.d.ts +3 -0
  500. package/dist/src/public/tools/load-skill.js +1 -0
  501. package/dist/src/public/tools/read-file.d.ts +3 -0
  502. package/dist/src/public/tools/read-file.js +1 -0
  503. package/dist/src/public/{tool-result-narrowing.d.ts → tools/result.d.ts} +2 -28
  504. package/dist/src/public/tools/result.js +1 -0
  505. package/dist/src/public/tools/sleep.d.ts +1 -0
  506. package/dist/src/public/tools/sleep.js +1 -0
  507. package/dist/src/public/tools/todo.d.ts +3 -0
  508. package/dist/src/public/tools/todo.js +1 -0
  509. package/dist/src/public/tools/web-fetch.d.ts +3 -0
  510. package/dist/src/public/tools/web-fetch.js +1 -0
  511. package/dist/src/public/tools/web-search.d.ts +3 -36
  512. package/dist/src/public/tools/web-search.js +1 -1
  513. package/dist/src/public/tools/workflow.d.ts +4 -0
  514. package/dist/src/public/tools/workflow.js +1 -0
  515. package/dist/src/public/tools/write-file.d.ts +3 -0
  516. package/dist/src/public/tools/write-file.js +1 -0
  517. package/dist/src/public/types/json.d.ts +1 -28
  518. package/dist/src/react/use-eve-agent.d.ts +1 -0
  519. package/dist/src/react/use-eve-agent.js +1 -1
  520. package/dist/src/runtime/actions/keys.d.ts +1 -1
  521. package/dist/src/runtime/actions/results.d.ts +1 -1
  522. package/dist/src/runtime/agent/bootstrap.js +1 -1
  523. package/dist/src/runtime/agent/mock-model-adapter.js +1 -1
  524. package/dist/src/runtime/connections/authorization-tokens.d.ts +1 -1
  525. package/dist/src/runtime/connections/mcp-client.d.ts +1 -1
  526. package/dist/src/runtime/connections/mcp-client.js +1 -1
  527. package/dist/src/runtime/connections/openapi-client.d.ts +1 -1
  528. package/dist/src/runtime/connections/openapi-client.js +1 -1
  529. package/dist/src/runtime/connections/principal.d.ts +1 -1
  530. package/dist/src/runtime/connections/principal.js +1 -1
  531. package/dist/src/runtime/connections/registry-types.d.ts +11 -0
  532. package/dist/src/runtime/connections/registry.d.ts +3 -2
  533. package/dist/src/runtime/connections/resolve-authorization.d.ts +2 -2
  534. package/dist/src/runtime/connections/resolve-authorization.js +1 -1
  535. package/dist/src/runtime/connections/scoped-authorization.d.ts +2 -2
  536. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  537. package/dist/src/runtime/loaders/compile-metadata.js +1 -1
  538. package/dist/src/runtime/loaders/manifest.js +1 -1
  539. package/dist/src/runtime/prompt/compose.d.ts +0 -6
  540. package/dist/src/runtime/prompt/compose.js +1 -1
  541. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  542. package/dist/src/runtime/resolve-agent.js +1 -1
  543. package/dist/src/runtime/resolve-connection.js +1 -1
  544. package/dist/src/runtime/resolve-dynamic-tool.d.ts +1 -0
  545. package/dist/src/runtime/resolve-dynamic-tool.js +1 -1
  546. package/dist/src/runtime/resolve-memory.d.ts +4 -0
  547. package/dist/src/runtime/resolve-memory.js +1 -0
  548. package/dist/src/runtime/resolve-tool.d.ts +2 -1
  549. package/dist/src/runtime/resolve-tool.js +1 -1
  550. package/dist/src/runtime/sandbox/keys.js +1 -1
  551. package/dist/src/runtime/sandbox/registry.d.ts +4 -20
  552. package/dist/src/runtime/sandbox/registry.js +1 -1
  553. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  554. package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
  555. package/dist/src/runtime/sessions/turn.d.ts +3 -1
  556. package/dist/src/runtime/skills/sandbox-access.d.ts +1 -1
  557. package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
  558. package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
  559. package/dist/src/runtime/subagents/registry.d.ts +0 -27
  560. package/dist/src/runtime/subagents/registry.js +1 -1
  561. package/dist/src/runtime/tools/registry.js +1 -1
  562. package/dist/src/runtime/types.d.ts +18 -27
  563. package/dist/src/sandbox/backends/default.d.ts +49 -0
  564. package/dist/src/sandbox/backends/default.js +1 -0
  565. package/dist/src/sandbox/backends/docker.d.ts +14 -0
  566. package/dist/src/sandbox/backends/docker.js +1 -0
  567. package/dist/src/sandbox/backends/just-bash.d.ts +17 -0
  568. package/dist/src/sandbox/backends/just-bash.js +1 -0
  569. package/dist/src/sandbox/backends/microsandbox.d.ts +17 -0
  570. package/dist/src/sandbox/backends/microsandbox.js +1 -0
  571. package/dist/src/sandbox/backends/vercel.d.ts +30 -0
  572. package/dist/src/sandbox/backends/vercel.js +1 -0
  573. package/dist/src/services/dev-client/runtime-artifacts.d.ts +2 -0
  574. package/dist/src/services/dev-client/runtime-artifacts.js +1 -1
  575. package/dist/src/services/dev-client.d.ts +1 -1
  576. package/dist/src/setup/channel-add-conflicts.js +1 -1
  577. package/dist/src/setup/cli/select-component.js +1 -1
  578. package/dist/src/setup/connection-connector.d.ts +2 -0
  579. package/dist/src/setup/connection-connector.js +1 -1
  580. package/dist/src/setup/flows/link.js +1 -1
  581. package/dist/src/setup/flows/model-source-change.js +1 -1
  582. package/dist/src/setup/flows/model.js +1 -1
  583. package/dist/src/setup/flows/registry.js +1 -1
  584. package/dist/src/setup/integrations/runner.js +1 -1
  585. package/dist/src/setup/prompter.js +1 -1
  586. package/dist/src/setup/scaffold/create/add-to-project.js +1 -1
  587. package/dist/src/setup/scaffold/create/project.js +2 -2
  588. package/dist/src/setup/scaffold/create/web-template.d.ts +10 -8
  589. package/dist/src/setup/scaffold/create/web-template.js +364 -120
  590. package/dist/src/setup/scaffold/update/channels.js +1 -1
  591. package/dist/src/setup/scaffold/update/connections.js +1 -1
  592. package/dist/src/setup/vercel-project.js +0 -0
  593. package/dist/src/{runtime/actions/types.d.ts → shared/action-types.d.ts} +12 -12
  594. package/dist/src/{runtime/actions/types.js → shared/action-types.js} +1 -1
  595. package/dist/src/shared/agent-definition.d.ts +3 -10
  596. package/dist/src/shared/agent-definition.js +1 -1
  597. package/dist/src/{runtime/connections/types.d.ts → shared/connection-types.d.ts} +3 -13
  598. package/dist/src/{runtime/input/types.d.ts → shared/input.d.ts} +1 -1
  599. package/dist/src/shared/input.js +1 -0
  600. package/dist/src/shared/instructions-definition.d.ts +2 -0
  601. package/dist/src/shared/instructions-definition.js +1 -1
  602. package/dist/src/shared/memory-definition.d.ts +2 -0
  603. package/dist/src/shared/memory-definition.js +1 -0
  604. package/dist/src/shared/memory-state.d.ts +55 -0
  605. package/dist/src/shared/memory-state.js +1 -0
  606. package/dist/src/shared/objects.d.ts +5 -0
  607. package/dist/src/shared/objects.js +1 -0
  608. package/dist/src/shared/sandbox-definition.d.ts +1 -1
  609. package/dist/src/shared/skill-definition.d.ts +2 -0
  610. package/dist/src/shared/skill-definition.js +1 -1
  611. package/dist/src/{execution/skills/types.d.ts → shared/skill-types.d.ts} +1 -1
  612. package/dist/src/shared/skill-types.js +1 -0
  613. package/dist/src/{runtime/connections → shared}/validate-authorization.d.ts +1 -1
  614. package/dist/src/shared/vercel-project.d.ts +1 -0
  615. package/dist/src/shared/vercel-project.js +1 -1
  616. package/dist/src/svelte/index.js +1 -1
  617. package/dist/src/svelte/use-eve-agent.d.ts +8 -4
  618. package/dist/src/svelte/use-eve-agent.js +1 -1
  619. package/dist/src/tasks/json.d.ts +4 -89
  620. package/dist/src/tasks/json.js +1 -1
  621. package/dist/src/tasks/session-index.d.ts +1 -1
  622. package/dist/src/tasks/task-id.d.ts +0 -1
  623. package/dist/src/tasks/task-id.js +1 -1
  624. package/dist/src/tasks/types.d.ts +1 -1
  625. package/dist/src/tasks/types.js +1 -1
  626. package/dist/src/{public/tools/approval/approval-helpers.d.ts → tools/approval/policies.d.ts} +1 -1
  627. package/dist/src/tools/approval/policies.js +1 -0
  628. package/dist/src/tools/auth.d.ts +35 -0
  629. package/dist/src/tools/auth.js +1 -0
  630. package/dist/src/{public/definitions/tool.d.ts → tools/definition.d.ts} +42 -138
  631. package/dist/src/tools/definition.js +1 -0
  632. package/dist/src/{shared/durable-dynamic-tool-callbacks.d.ts → tools/durable-callbacks.d.ts} +1 -1
  633. package/dist/src/tools/durable-callbacks.js +1 -0
  634. package/dist/src/tools/dynamic.d.ts +68 -0
  635. package/dist/src/tools/dynamic.js +1 -0
  636. package/dist/src/tools/framework/agent-contract.d.ts +8 -0
  637. package/dist/src/tools/framework/agent-contract.js +1 -0
  638. package/dist/src/tools/framework/agent.d.ts +17 -0
  639. package/dist/src/tools/framework/agent.js +1 -0
  640. package/dist/src/tools/framework/ask-question.d.ts +50 -0
  641. package/dist/src/tools/framework/ask-question.js +1 -0
  642. package/dist/src/tools/framework/connection-search.d.ts +3 -0
  643. package/dist/src/tools/framework/connection-search.js +1 -0
  644. package/dist/src/tools/framework/task-cancel.d.ts +29 -0
  645. package/dist/src/tools/framework/task-cancel.js +1 -0
  646. package/dist/src/tools/framework/task-contract.d.ts +167 -0
  647. package/dist/src/tools/framework/task-contract.js +1 -0
  648. package/dist/src/tools/framework/task-update.d.ts +9 -0
  649. package/dist/src/tools/framework/task-update.js +1 -0
  650. package/dist/src/{public/tools/output-builders.d.ts → tools/model-output.d.ts} +41 -1
  651. package/dist/src/tools/provided/bash.d.ts +29 -0
  652. package/dist/src/tools/provided/bash.js +1 -0
  653. package/dist/src/tools/provided/glob.d.ts +26 -0
  654. package/dist/src/tools/provided/glob.js +2 -0
  655. package/dist/src/{runtime/framework-tools → tools/provided}/grep.d.ts +10 -10
  656. package/dist/src/tools/provided/grep.js +2 -0
  657. package/dist/src/tools/provided/load-skill.d.ts +2 -0
  658. package/dist/src/tools/provided/load-skill.js +1 -0
  659. package/dist/src/tools/provided/read-file.d.ts +27 -0
  660. package/dist/src/tools/provided/read-file.js +2 -0
  661. package/dist/src/{public/tools/sleep/index.d.ts → tools/provided/sleep.d.ts} +3 -3
  662. package/dist/src/tools/provided/sleep.js +1 -0
  663. package/dist/src/tools/provided/todo.d.ts +8 -0
  664. package/dist/src/tools/provided/todo.js +2 -0
  665. package/dist/src/{runtime/framework-tools → tools/provided}/web-fetch.d.ts +5 -2
  666. package/dist/src/tools/provided/web-fetch.js +2 -0
  667. package/dist/src/tools/provided/web-search.d.ts +39 -0
  668. package/dist/src/tools/provided/web-search.js +1 -0
  669. package/dist/src/tools/provided/write-file.d.ts +23 -0
  670. package/dist/src/tools/provided/write-file.js +2 -0
  671. package/dist/src/tools/workflow.d.ts +37 -0
  672. package/dist/src/tools/workflow.js +1 -0
  673. package/dist/src/tracing/agent-action-instrumentation.js +1 -1
  674. package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
  675. package/dist/src/tracing/agent-channel-delivery-instrumentation.js +1 -1
  676. package/dist/src/tracing/agent-otel-provider.js +2 -2
  677. package/dist/src/tracing/agent-otel-session-context.d.ts +1 -1
  678. package/dist/src/tracing/agent-otel-session-context.js +1 -1
  679. package/dist/src/tracing/agent-span-id-generator.d.ts +1 -0
  680. package/dist/src/tracing/agent-span-id-generator.js +1 -1
  681. package/dist/src/tracing/agent-trace-context-store.d.ts +1 -1
  682. package/dist/src/tracing/agent-trace-context-store.js +1 -1
  683. package/dist/src/tracing/agent-trace-span-processor.js +1 -1
  684. package/dist/src/tracing/agent-trace-state.d.ts +2 -6
  685. package/dist/src/tracing/agent-trace-state.js +1 -1
  686. package/dist/src/tracing/install-instrumentation-runtime.js +1 -1
  687. package/dist/src/tracing/local-trace-reader.d.ts +1 -3
  688. package/dist/src/tracing/local-trace-reader.js +1 -1
  689. package/dist/src/tracing/otel-declaration.d.ts +1 -2
  690. package/dist/src/tracing/otel-registration.js +1 -1
  691. package/dist/src/tracing/sampled-trace.d.ts +10 -2
  692. package/dist/src/tracing/sampled-trace.js +1 -1
  693. package/dist/src/vue/index.js +1 -1
  694. package/dist/src/vue/use-eve-agent.d.ts +8 -4
  695. package/dist/src/vue/use-eve-agent.js +1 -1
  696. package/docs/agent-config.md +16 -4
  697. package/docs/channels/chat-sdk.mdx +1 -1
  698. package/docs/channels/discord.mdx +5 -1
  699. package/docs/channels/eve.mdx +19 -3
  700. package/docs/channels/github.mdx +2 -0
  701. package/docs/channels/linear.mdx +1 -1
  702. package/docs/channels/overview.mdx +1 -1
  703. package/docs/channels/slack.mdx +2 -0
  704. package/docs/channels/teams.mdx +1 -1
  705. package/docs/channels/telegram.mdx +2 -0
  706. package/docs/concepts/built-in-tools.md +30 -21
  707. package/docs/concepts/context-control.md +7 -0
  708. package/docs/concepts/default-harness.md +8 -0
  709. package/docs/concepts/sessions-runs-and-streaming.md +5 -3
  710. package/docs/concepts/state.md +8 -1
  711. package/docs/connections/overview.mdx +1 -1
  712. package/docs/extensions.md +8 -4
  713. package/docs/getting-started.mdx +9 -9
  714. package/docs/guides/auth-and-route-protection.md +3 -3
  715. package/docs/guides/client/output-schema.mdx +2 -2
  716. package/docs/guides/client/overview.mdx +4 -2
  717. package/docs/guides/dynamic-capabilities.md +3 -2
  718. package/docs/guides/frontend/nuxt.mdx +4 -3
  719. package/docs/guides/frontend/overview.mdx +21 -18
  720. package/docs/guides/frontend/sveltekit.mdx +4 -3
  721. package/docs/guides/frontend/use-eve-agent-svelte.mdx +5 -4
  722. package/docs/guides/frontend/use-eve-agent-vue.mdx +5 -4
  723. package/docs/guides/instrumentation.md +1 -0
  724. package/docs/guides/remote-agents.md +37 -18
  725. package/docs/memory.md +255 -0
  726. package/docs/meta.json +1 -0
  727. package/docs/patterns/multi-tenant-approvals.md +1 -1
  728. package/docs/patterns/multi-tenant-memory.md +108 -136
  729. package/docs/reference/cli.md +2 -4
  730. package/docs/reference/typescript-api.md +35 -31
  731. package/docs/sandbox.mdx +1 -1
  732. package/docs/subagents/index.mdx +11 -28
  733. package/docs/tools/human-in-the-loop.md +43 -2
  734. package/docs/tools/overview.mdx +1 -1
  735. package/package.json +68 -8
  736. package/dist/src/compiler/normalize-extension.d.ts +0 -80
  737. package/dist/src/compiler/normalize-extension.js +0 -1
  738. package/dist/src/execution/sandbox/write-file-tool.js +0 -1
  739. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.d.ts +0 -9
  740. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response-from-manifest.js +0 -1
  741. package/dist/src/internal/nitro/routes/health.d.ts +0 -14
  742. package/dist/src/internal/nitro/routes/health.js +0 -1
  743. package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +0 -1
  744. package/dist/src/public/definitions/tool.js +0 -1
  745. package/dist/src/public/tool-result-narrowing.js +0 -1
  746. package/dist/src/public/tools/approval/approval-helpers.js +0 -1
  747. package/dist/src/public/tools/defaults.d.ts +0 -46
  748. package/dist/src/public/tools/defaults.js +0 -1
  749. package/dist/src/public/tools/define-bash-tool.d.ts +0 -21
  750. package/dist/src/public/tools/define-bash-tool.js +0 -1
  751. package/dist/src/public/tools/define-glob-tool.d.ts +0 -22
  752. package/dist/src/public/tools/define-glob-tool.js +0 -1
  753. package/dist/src/public/tools/define-grep-tool.d.ts +0 -22
  754. package/dist/src/public/tools/define-grep-tool.js +0 -1
  755. package/dist/src/public/tools/define-read-file-tool.d.ts +0 -21
  756. package/dist/src/public/tools/define-read-file-tool.js +0 -1
  757. package/dist/src/public/tools/define-write-file-tool.d.ts +0 -22
  758. package/dist/src/public/tools/define-write-file-tool.js +0 -1
  759. package/dist/src/public/tools/internal.d.ts +0 -13
  760. package/dist/src/public/tools/internal.js +0 -1
  761. package/dist/src/public/tools/sleep/index.js +0 -1
  762. package/dist/src/runtime/connections/callback-route.js +0 -1
  763. package/dist/src/runtime/framework-channels/index.d.ts +0 -6
  764. package/dist/src/runtime/framework-channels/index.js +0 -1
  765. package/dist/src/runtime/framework-tools/agent.d.ts +0 -29
  766. package/dist/src/runtime/framework-tools/agent.js +0 -1
  767. package/dist/src/runtime/framework-tools/ask-question.d.ts +0 -35
  768. package/dist/src/runtime/framework-tools/ask-question.js +0 -1
  769. package/dist/src/runtime/framework-tools/bash.d.ts +0 -24
  770. package/dist/src/runtime/framework-tools/bash.js +0 -1
  771. package/dist/src/runtime/framework-tools/connection-search-dynamic.d.ts +0 -19
  772. package/dist/src/runtime/framework-tools/connection-search-dynamic.js +0 -2
  773. package/dist/src/runtime/framework-tools/final-output.js +0 -1
  774. package/dist/src/runtime/framework-tools/glob.d.ts +0 -26
  775. package/dist/src/runtime/framework-tools/glob.js +0 -2
  776. package/dist/src/runtime/framework-tools/grep.js +0 -2
  777. package/dist/src/runtime/framework-tools/index.d.ts +0 -39
  778. package/dist/src/runtime/framework-tools/index.js +0 -1
  779. package/dist/src/runtime/framework-tools/read-file.d.ts +0 -27
  780. package/dist/src/runtime/framework-tools/read-file.js +0 -2
  781. package/dist/src/runtime/framework-tools/skill.d.ts +0 -12
  782. package/dist/src/runtime/framework-tools/skill.js +0 -1
  783. package/dist/src/runtime/framework-tools/subagent/local.js +0 -1
  784. package/dist/src/runtime/framework-tools/subagent/remote.js +0 -1
  785. package/dist/src/runtime/framework-tools/tasks.d.ts +0 -91
  786. package/dist/src/runtime/framework-tools/tasks.js +0 -1
  787. package/dist/src/runtime/framework-tools/web-fetch.js +0 -2
  788. package/dist/src/runtime/framework-tools/web-search.js +0 -1
  789. package/dist/src/runtime/framework-tools/write-file.d.ts +0 -23
  790. package/dist/src/runtime/framework-tools/write-file.js +0 -2
  791. package/dist/src/runtime/governance/auth/jwt-ecdsa.js +0 -1
  792. package/dist/src/runtime/governance/auth/jwt-hmac.js +0 -1
  793. package/dist/src/runtime/governance/auth/oidc.js +0 -1
  794. package/dist/src/runtime/input/types.js +0 -1
  795. package/dist/src/runtime/session-callback-route.d.ts +0 -6
  796. package/dist/src/runtime/session-callback-route.js +0 -1
  797. package/dist/src/runtime/task-input-response-route.d.ts +0 -5
  798. package/dist/src/runtime/task-input-response-route.js +0 -1
  799. package/dist/src/shared/durable-dynamic-tool-callbacks.js +0 -1
  800. package/dist/src/shared/dynamic-tool-definition.d.ts +0 -154
  801. package/dist/src/shared/dynamic-tool-definition.js +0 -1
  802. package/dist/src/shared/eve-server-health.d.ts +0 -5
  803. package/dist/src/shared/eve-server-health.js +0 -1
  804. package/dist/src/shared/tool-definition.d.ts +0 -89
  805. /package/dist/src/{runtime/governance → channel}/auth/http-basic.js +0 -0
  806. /package/dist/src/{runtime/governance → channel}/auth/token-claims.js +0 -0
  807. /package/dist/src/{runtime/governance → channel}/auth/types.js +0 -0
  808. /package/dist/src/{runtime/governance → channel}/auth/vercel-oidc-project.js +0 -0
  809. /package/dist/src/{runtime/governance/network → channel}/ip-allow-list.d.ts +0 -0
  810. /package/dist/src/{runtime/governance/network → channel}/ip-allow-list.js +0 -0
  811. /package/dist/src/{execution/skills/types.js → context/session-context.js} +0 -0
  812. /package/dist/src/execution/sandbox/{bash-tool.js → bash.js} +0 -0
  813. /package/dist/src/{runtime/framework-tools → execution/tools}/file-state.js +0 -0
  814. /package/dist/src/{runtime/framework-tools → execution/tools}/sleep.d.ts +0 -0
  815. /package/dist/src/{runtime/framework-tools → execution/tools}/sleep.js +0 -0
  816. /package/dist/src/execution/web-fetch/{tool.d.ts → execute.d.ts} +0 -0
  817. /package/dist/src/execution/web-fetch/{tool.js → execute.js} +0 -0
  818. /package/dist/src/{shared/tool-definition.js → runtime/connections/registry-types.js} +0 -0
  819. /package/dist/src/{runtime/connections/types.js → shared/connection-types.js} +0 -0
  820. /package/dist/src/{runtime/sessions/auth.d.ts → shared/session-auth.d.ts} +0 -0
  821. /package/dist/src/{runtime/sessions/auth.js → shared/session-auth.js} +0 -0
  822. /package/dist/src/{runtime/connections → shared}/validate-authorization.js +0 -0
  823. /package/dist/src/{public/tools/output-builders.js → tools/model-output.js} +0 -0
  824. /package/dist/src/{shared/tool-schema.d.ts → tools/schema.d.ts} +0 -0
  825. /package/dist/src/{shared/tool-schema.js → tools/schema.js} +0 -0
  826. /package/dist/src/{shared/tool-task.d.ts → tools/task.d.ts} +0 -0
  827. /package/dist/src/{shared/tool-task.js → tools/task.js} +0 -0
@@ -1,4 +1,4 @@
1
- import{z}from"#compiled/zod/index.js";import{LOAD_SKILL_TOOL_NAME}from"#runtime/skills/fragment-context.js";import{MockLanguageModelV3}from"ai/test";import{FINAL_OUTPUT_TOOL_NAME}from"#runtime/framework-tools/final-output.js";import{BOOTSTRAP_RUNTIME_MODEL_ID,BOOTSTRAP_RUNTIME_SYSTEM_PROMPT}from"#runtime/agent/bootstrap.js";import{createBootstrapGenerateResult,createBootstrapStreamResult,estimateTokenCount,getLastUserPromptText,getPromptContentText,getPromptText,isAgentsAnnouncementText}from"#runtime/agent/bootstrap-model-utils.js";import{createMockAuthoredToolInput,formatToolOutput,resolveMockFixtureToken,resolveWeatherCity}from"#runtime/agent/mock-model-fixtures.js";import{findRelevantSkill,getActivatedSkillIds,getAvailableSkills}from"#runtime/agent/mock-model-skill-selection.js";import{createJsonSchemaSample}from"#runtime/agent/mock-structured-output.js";const authoredRuntimeModelMocks=new Map,bootstrapWeatherPayloadSchema=z.object({city:z.string(),condition:z.string(),summary:z.string(),temperatureF:z.number().finite()}).strict();function shouldMockAuthoredRuntimeModels(){return process.env.NODE_ENV===`test`||process.env.EVE_MOCK_AUTHORED_MODELS===`1`}function createMockAuthoredRuntimeModel(e){let t=authoredRuntimeModelMocks.get(e.id);if(t!==void 0)return t;let r=new MockLanguageModelV3({modelId:e.id,provider:`eve-runtime-mock`,doGenerate:async t=>createMockModelResult(t,e.id),doStream:async t=>createBootstrapStreamResult(createMockModelResult(t,e.id))});return authoredRuntimeModelMocks.set(e.id,r),r}function createMockModelResult(e,t){let n=getLastAuthoredToolResult(e.prompt);if(n!==null){let r=createFollowUpToolCallResult({modelId:t,options:e,result:n});if(r!==null)return r}else{let n=createParallelAuthoredToolCallsResult(e,t)??createSubagentDelegationResult(e,t)??createSkillLoadResult(e.prompt,t)??createAuthoredToolCallResult(e,t);if(n!==null)return n}let r=createFinalOutputResult(e,t);if(r!==null)return r;let i=n===null?createAssistantMessage(e.prompt):formatToolResultReply(n,e.prompt);return createBootstrapGenerateResult({inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(i),text:i})}function createFinalOutputResult(e,t){let n=getAvailableTools(e).find(e=>e.name===FINAL_OUTPUT_TOOL_NAME);if(n===void 0)return null;let i=createJsonSchemaSample(n.inputSchema);return createToolCallGenerateResult({input:i,inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(JSON.stringify(i)),toolCallId:createToolCallId(FINAL_OUTPUT_TOOL_NAME),toolName:FINAL_OUTPUT_TOOL_NAME})}function resolveMockAuthoredRuntimeModel(e){return!shouldMockAuthoredRuntimeModels()||e.id===BOOTSTRAP_RUNTIME_MODEL_ID?null:createMockAuthoredRuntimeModel(e)}function createSkillLoadResult(e,n){let r=getLastUserPromptText(e);if(r===null||getActivatedSkillIds(e).length>0)return null;let i=findRelevantSkill(getAvailableSkills(e),r);return i===null?null:createToolCallGenerateResult({input:{skill:i.name},inputTokens:estimateTokenCount(getPromptText(e)),modelId:n,outputTokens:estimateTokenCount(i.name),toolCallId:`call_load_skill`,toolName:LOAD_SKILL_TOOL_NAME})}const SUBAGENT_TOOL_NAME=`agent`,SUBAGENT_DELEGATION_DIRECTIVE=/\bdelegate\s+to\s+a\s+subagent\s*:\s*(.+)$/iu,PARALLEL_AUTHORED_TOOLS_DIRECTIVE=/^call tools in parallel:\s*(.+)$/imu;function createParallelAuthoredToolCallsResult(e,t){let n=getLastUserPromptText(e.prompt);if(n===null)return null;let r=PARALLEL_AUTHORED_TOOLS_DIRECTIVE.exec(n)?.[1]?.split(`,`).map(e=>e.trim()).filter(Boolean);if(r===void 0||r.length<2||new Set(r).size!==r.length)return null;let i=new Map(getAvailableTools(e).map(e=>[e.name,e])),a=[];for(let e of r){let t=i.get(e);if(t===void 0)return null;a.push(t)}let o=resolveWeatherCity(n);return createToolCallsGenerateResult({calls:a.map(e=>({input:createMockAuthoredToolInput(e,n,o),toolCallId:createToolCallId(e.name),toolName:e.name})),inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(n)})}function createSubagentDelegationResult(e,t){let n=getLastUserPromptText(e.prompt);if(n===null)return null;let r=SUBAGENT_DELEGATION_DIRECTIVE.exec(n);if(r?.[1]===void 0||getAvailableTools(e).find(e=>e.name===SUBAGENT_TOOL_NAME)===void 0)return null;let i={message:r[1].trim()};return createToolCallGenerateResult({input:i,inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(i.message),toolCallId:createToolCallId(SUBAGENT_TOOL_NAME),toolName:SUBAGENT_TOOL_NAME})}function createAuthoredToolCallResult(e,t){let n=getLastUserPromptText(e.prompt);if(n===null)return null;let r=findRelevantTool(getAvailableTools(e),n);if(r===null)return null;let i=createMockAuthoredToolInput(r,n,resolveWeatherCity(n));return createToolCallGenerateResult({input:i,inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(Object.values(i).join(` `)),toolCallId:createToolCallId(r.name),toolName:r.name})}function createFollowUpToolCallResult(e){let t=findNextExplicitToolAfterResult({previousToolName:e.result.toolName,prompt:e.options.prompt,tools:getAvailableTools(e.options)});if(t===null)return null;let n=createFollowUpToolInput(e.result.output);return n===null?null:createToolCallGenerateResult({input:n,inputTokens:estimateTokenCount(getPromptText(e.options.prompt)),modelId:e.modelId,outputTokens:estimateTokenCount(Object.values(n).join(` `)),toolCallId:createToolCallId(t.name),toolName:t.name})}function createAssistantMessage(e){let t=getLastUserPromptText(e)??`Hello from eve`,n=getSystemPromptLabels(e),r=resolveSystemProbe(e),i=resolveMockFixtureToken(e);return i===null?n.length>0?r===null?`Bootstrap reply [${n.join(`, `)}]: ${t}`:`Bootstrap reply [${n.join(`, `)}; probe=${r}]: ${t}`:r===null?`Bootstrap reply: ${t}`:`Bootstrap reply [probe=${r}]: ${t}`:i}function formatToolResultReply(e,t){if(e.isError)return`Local weather tool failed: ${formatToolOutput(e.output)}`;if(isWeatherPayload(e.output))return`Used local weather tool for ${e.output.city}: ${e.output.condition}, ${e.output.temperatureF}F. ${e.output.summary}`;let n=getLastUserPromptText(t)??`Hello from eve`;return`Used ${e.toolName} for "${n}": ${formatToolOutput(e.output)}`}function createToolCallGenerateResult(e){return createToolCallsGenerateResult({calls:[{input:e.input,toolCallId:e.toolCallId,toolName:e.toolName}],inputTokens:e.inputTokens,modelId:e.modelId,outputTokens:e.outputTokens})}function createToolCallsGenerateResult(e){return{content:e.calls.map(e=>({input:JSON.stringify(e.input),toolCallId:e.toolCallId,toolName:e.toolName,type:`tool-call`})),finishReason:{raw:void 0,unified:`tool-calls`},response:{id:`bootstrap-response`,modelId:e.modelId,timestamp:new Date(`2026-03-16T00:00:00.000Z`)},usage:{inputTokens:{cacheRead:0,cacheWrite:0,noCache:e.inputTokens,total:e.inputTokens},outputTokens:{reasoning:0,text:e.outputTokens,total:e.outputTokens}},warnings:[]}}function getAvailableTools(e){return(e.tools??[]).flatMap(e=>e.type===`function`?[{description:e.description,inputSchema:`inputSchema`in e?e.inputSchema:void 0,name:e.name,outputSchema:`outputSchema`in e?e.outputSchema:void 0}]:[])}function getLastAuthoredToolResult(e){for(let n of[...e].reverse()){if(n.role===`user`){if(isAgentsAnnouncementText(getPromptContentText(n.content).trim()))continue;return null}if(!(n.role!==`tool`&&n.role!==`assistant`)){for(let e of[...n.content].reverse())if(!(typeof e==`string`||e.type!==`tool-result`)&&e.toolName!==LOAD_SKILL_TOOL_NAME)return{isError:e.output.type===`error-json`||e.output.type===`error-text`||e.output.type===`execution-denied`,output:e.output.type===`execution-denied`?{reason:e.output.reason??null,type:e.output.type}:e.output.value,toolCallId:e.toolCallId,toolName:e.toolName}}}return null}function findNextExplicitToolAfterResult(e){let t=getLastUserPromptText(e.prompt);if(t===null)return null;let n=normalizeText(t),r=n.indexOf(normalizeText(e.previousToolName));return r<0?null:e.tools.filter(t=>t.name!==e.previousToolName).flatMap(e=>{let t=n.indexOf(normalizeText(e.name),r+1);return t<0?[]:[{index:t,tool:e}]}).sort((e,t)=>e.index-t.index)[0]?.tool??null}function createFollowUpToolInput(e){return isRecord(e)&&typeof e.stepKey==`string`?{stepKey:e.stepKey}:null}function getSystemPromptLabels(e){let t=e.filter(e=>e.role===`system`);if(t.length===0)return[];let n=t.flatMap(e=>{let t=getPromptContentText(e.content);if(t.startsWith(`Available skills
1
+ import{z}from"#compiled/zod/index.js";import{LOAD_SKILL_TOOL_NAME}from"#runtime/skills/fragment-context.js";import{MockLanguageModelV3}from"ai/test";import{FINAL_OUTPUT_TOOL_NAME}from"#harness/final-output.js";import{BOOTSTRAP_RUNTIME_MODEL_ID,BOOTSTRAP_RUNTIME_SYSTEM_PROMPT}from"#runtime/agent/bootstrap.js";import{createBootstrapGenerateResult,createBootstrapStreamResult,estimateTokenCount,getLastUserPromptText,getPromptContentText,getPromptText,isAgentsAnnouncementText}from"#runtime/agent/bootstrap-model-utils.js";import{createMockAuthoredToolInput,formatToolOutput,resolveMockFixtureToken,resolveWeatherCity}from"#runtime/agent/mock-model-fixtures.js";import{findRelevantSkill,getActivatedSkillIds,getAvailableSkills}from"#runtime/agent/mock-model-skill-selection.js";import{createJsonSchemaSample}from"#runtime/agent/mock-structured-output.js";const authoredRuntimeModelMocks=new Map,bootstrapWeatherPayloadSchema=z.object({city:z.string(),condition:z.string(),summary:z.string(),temperatureF:z.number().finite()}).strict();function shouldMockAuthoredRuntimeModels(){return process.env.NODE_ENV===`test`||process.env.EVE_MOCK_AUTHORED_MODELS===`1`}function createMockAuthoredRuntimeModel(e){let t=authoredRuntimeModelMocks.get(e.id);if(t!==void 0)return t;let r=new MockLanguageModelV3({modelId:e.id,provider:`eve-runtime-mock`,doGenerate:async t=>createMockModelResult(t,e.id),doStream:async t=>createBootstrapStreamResult(createMockModelResult(t,e.id))});return authoredRuntimeModelMocks.set(e.id,r),r}function createMockModelResult(e,t){let n=getLastAuthoredToolResult(e.prompt);if(n!==null){let r=createFollowUpToolCallResult({modelId:t,options:e,result:n});if(r!==null)return r}else{let n=createParallelAuthoredToolCallsResult(e,t)??createSubagentDelegationResult(e,t)??createSkillLoadResult(e.prompt,t)??createAuthoredToolCallResult(e,t);if(n!==null)return n}let r=createFinalOutputResult(e,t);if(r!==null)return r;let i=n===null?createAssistantMessage(e.prompt):formatToolResultReply(n,e.prompt);return createBootstrapGenerateResult({inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(i),text:i})}function createFinalOutputResult(e,t){let n=getAvailableTools(e).find(e=>e.name===FINAL_OUTPUT_TOOL_NAME);if(n===void 0)return null;let i=createJsonSchemaSample(n.inputSchema);return createToolCallGenerateResult({input:i,inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(JSON.stringify(i)),toolCallId:createToolCallId(FINAL_OUTPUT_TOOL_NAME),toolName:FINAL_OUTPUT_TOOL_NAME})}function resolveMockAuthoredRuntimeModel(e){return!shouldMockAuthoredRuntimeModels()||e.id===BOOTSTRAP_RUNTIME_MODEL_ID?null:createMockAuthoredRuntimeModel(e)}function createSkillLoadResult(e,n){let r=getLastUserPromptText(e);if(r===null||getActivatedSkillIds(e).length>0)return null;let i=findRelevantSkill(getAvailableSkills(e),r);return i===null?null:createToolCallGenerateResult({input:{skill:i.name},inputTokens:estimateTokenCount(getPromptText(e)),modelId:n,outputTokens:estimateTokenCount(i.name),toolCallId:`call_load_skill`,toolName:LOAD_SKILL_TOOL_NAME})}const SUBAGENT_TOOL_NAME=`agent`,SUBAGENT_DELEGATION_DIRECTIVE=/\bdelegate\s+to\s+a\s+subagent\s*:\s*(.+)$/iu,PARALLEL_AUTHORED_TOOLS_DIRECTIVE=/^call tools in parallel:\s*(.+)$/imu;function createParallelAuthoredToolCallsResult(e,t){let n=getLastUserPromptText(e.prompt);if(n===null)return null;let r=PARALLEL_AUTHORED_TOOLS_DIRECTIVE.exec(n)?.[1]?.split(`,`).map(e=>e.trim()).filter(Boolean);if(r===void 0||r.length<2||new Set(r).size!==r.length)return null;let i=new Map(getAvailableTools(e).map(e=>[e.name,e])),a=[];for(let e of r){let t=i.get(e);if(t===void 0)return null;a.push(t)}let o=resolveWeatherCity(n);return createToolCallsGenerateResult({calls:a.map(e=>({input:createMockAuthoredToolInput(e,n,o),toolCallId:createToolCallId(e.name),toolName:e.name})),inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(n)})}function createSubagentDelegationResult(e,t){let n=getLastUserPromptText(e.prompt);if(n===null)return null;let r=SUBAGENT_DELEGATION_DIRECTIVE.exec(n);if(r?.[1]===void 0||getAvailableTools(e).find(e=>e.name===SUBAGENT_TOOL_NAME)===void 0)return null;let i={message:r[1].trim()};return createToolCallGenerateResult({input:i,inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(i.message),toolCallId:createToolCallId(SUBAGENT_TOOL_NAME),toolName:SUBAGENT_TOOL_NAME})}function createAuthoredToolCallResult(e,t){let n=getLastUserPromptText(e.prompt);if(n===null)return null;let r=findRelevantTool(getAvailableTools(e),n);if(r===null)return null;let i=createMockAuthoredToolInput(r,n,resolveWeatherCity(n));return createToolCallGenerateResult({input:i,inputTokens:estimateTokenCount(getPromptText(e.prompt)),modelId:t,outputTokens:estimateTokenCount(Object.values(i).join(` `)),toolCallId:createToolCallId(r.name),toolName:r.name})}function createFollowUpToolCallResult(e){let t=findNextExplicitToolAfterResult({previousToolName:e.result.toolName,prompt:e.options.prompt,tools:getAvailableTools(e.options)});if(t===null)return null;let n=createFollowUpToolInput(e.result.output);return n===null?null:createToolCallGenerateResult({input:n,inputTokens:estimateTokenCount(getPromptText(e.options.prompt)),modelId:e.modelId,outputTokens:estimateTokenCount(Object.values(n).join(` `)),toolCallId:createToolCallId(t.name),toolName:t.name})}function createAssistantMessage(e){let t=getLastUserPromptText(e)??`Hello from eve`,n=getSystemPromptLabels(e),r=resolveSystemProbe(e),i=resolveMockFixtureToken(e);return i===null?n.length>0?r===null?`Bootstrap reply [${n.join(`, `)}]: ${t}`:`Bootstrap reply [${n.join(`, `)}; probe=${r}]: ${t}`:r===null?`Bootstrap reply: ${t}`:`Bootstrap reply [probe=${r}]: ${t}`:i}function formatToolResultReply(e,t){if(e.isError)return`Local weather tool failed: ${formatToolOutput(e.output)}`;if(isWeatherPayload(e.output))return`Used local weather tool for ${e.output.city}: ${e.output.condition}, ${e.output.temperatureF}F. ${e.output.summary}`;let n=getLastUserPromptText(t)??`Hello from eve`;return`Used ${e.toolName} for "${n}": ${formatToolOutput(e.output)}`}function createToolCallGenerateResult(e){return createToolCallsGenerateResult({calls:[{input:e.input,toolCallId:e.toolCallId,toolName:e.toolName}],inputTokens:e.inputTokens,modelId:e.modelId,outputTokens:e.outputTokens})}function createToolCallsGenerateResult(e){return{content:e.calls.map(e=>({input:JSON.stringify(e.input),toolCallId:e.toolCallId,toolName:e.toolName,type:`tool-call`})),finishReason:{raw:void 0,unified:`tool-calls`},response:{id:`bootstrap-response`,modelId:e.modelId,timestamp:new Date(`2026-03-16T00:00:00.000Z`)},usage:{inputTokens:{cacheRead:0,cacheWrite:0,noCache:e.inputTokens,total:e.inputTokens},outputTokens:{reasoning:0,text:e.outputTokens,total:e.outputTokens}},warnings:[]}}function getAvailableTools(e){return(e.tools??[]).flatMap(e=>e.type===`function`?[{description:e.description,inputSchema:`inputSchema`in e?e.inputSchema:void 0,name:e.name,outputSchema:`outputSchema`in e?e.outputSchema:void 0}]:[])}function getLastAuthoredToolResult(e){for(let n of[...e].reverse()){if(n.role===`user`){if(isAgentsAnnouncementText(getPromptContentText(n.content).trim()))continue;return null}if(!(n.role!==`tool`&&n.role!==`assistant`)){for(let e of[...n.content].reverse())if(!(typeof e==`string`||e.type!==`tool-result`)&&e.toolName!==LOAD_SKILL_TOOL_NAME)return{isError:e.output.type===`error-json`||e.output.type===`error-text`||e.output.type===`execution-denied`,output:e.output.type===`execution-denied`?{reason:e.output.reason??null,type:e.output.type}:e.output.value,toolCallId:e.toolCallId,toolName:e.toolName}}}return null}function findNextExplicitToolAfterResult(e){let t=getLastUserPromptText(e.prompt);if(t===null)return null;let n=normalizeText(t),r=n.indexOf(normalizeText(e.previousToolName));return r<0?null:e.tools.filter(t=>t.name!==e.previousToolName).flatMap(e=>{let t=n.indexOf(normalizeText(e.name),r+1);return t<0?[]:[{index:t,tool:e}]}).sort((e,t)=>e.index-t.index)[0]?.tool??null}function createFollowUpToolInput(e){return isRecord(e)&&typeof e.stepKey==`string`?{stepKey:e.stepKey}:null}function getSystemPromptLabels(e){let t=e.filter(e=>e.role===`system`);if(t.length===0)return[];let n=t.flatMap(e=>{let t=getPromptContentText(e.content);if(t.startsWith(`Available skills
2
2
  `))return[];let n=t.split(`
3
3
  `).map(e=>e.trim()).filter(e=>e.length>0),r=[];for(let e of n){if(e===BOOTSTRAP_RUNTIME_SYSTEM_PROMPT||e===`Available skills`)continue;let t=/^System \((.+)\)$/.exec(e);if(t?.[1]){r.push(t[1]);continue}let n=/^Skill \((.+)\)$/.exec(e);n?.[1]&&r.push(n[1])}if(r.length>0)return r;let i=n.find(e=>e!==BOOTSTRAP_RUNTIME_SYSTEM_PROMPT&&e!==`Available skills`);return i===void 0?[]:[i]});return[...new Set(n)]}function findRelevantTool(e,n){let r=normalizeText(n),i=e.find(e=>e.name!==`agent`&&e.name!==LOAD_SKILL_TOOL_NAME&&r.includes(normalizeText(e.name)));return i===void 0?/\b(forecast|temperature|weather|wind|rain|snow)\b/u.test(r)?e.find(e=>/\b(forecast|temperature|weather|wind|rain|snow)\b/u.test(normalizeText(`${e.name} ${e.description??``}`)))??null:null:i}function normalizeText(e){return e.toLowerCase().replace(/[^a-z0-9]+/gu,` `).trim()}function createToolCallId(e){return`call_${e.toLowerCase().replace(/[^a-z0-9]+/gu,`_`).replace(/^_+|_+$/gu,``)||`tool`}`}function resolveSystemProbe(e){let t=e.filter(e=>e.role===`system`).map(e=>getPromptContentText(e.content)).join(`
4
4
  `);return/hmr-probe:\s*([^\n]+)/iu.exec(t)?.[1]?.trim()||null}function isWeatherPayload(e){return bootstrapWeatherPayloadSchema.safeParse(e).success}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}export{createMockAuthoredRuntimeModel,resolveMockAuthoredRuntimeModel,shouldMockAuthoredRuntimeModels};
@@ -14,7 +14,7 @@
14
14
  */
15
15
  import type { AlsContext } from "#context/container.js";
16
16
  import { ContextKey } from "#context/key.js";
17
- import type { TokenResult } from "#runtime/connections/types.js";
17
+ import type { TokenResult } from "#shared/connection-types.js";
18
18
  /**
19
19
  * Virtual context key mapping connection name to a per-principal
20
20
  * {@link TokenResult} cache.
@@ -1,7 +1,7 @@
1
1
  import { type MCPClient } from "#compiled/@ai-sdk/mcp/index.js";
2
2
  import type { ToolSet } from "ai";
3
3
  import type { ResolvedConnectionDefinition } from "#runtime/types.js";
4
- import type { ConnectionClient, ConnectionToolExecuteOptions, ConnectionToolMetadata, ToolFilterDefinition } from "#runtime/connections/types.js";
4
+ import type { ConnectionClient, ConnectionToolExecuteOptions, ConnectionToolMetadata, ToolFilterDefinition } from "#shared/connection-types.js";
5
5
  /**
6
6
  * Wraps one `MCPClient` from `@ai-sdk/mcp` for a single connection.
7
7
  *
@@ -1 +1 @@
1
- import{isObject}from"#shared/guards.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{ConnectionAuthorizationRequiredError}from"#public/connections/errors.js";import{evictScopedToken,resolveScopedToken}from"#runtime/connections/scoped-authorization.js";import{createMCPClient}from"#compiled/@ai-sdk/mcp/index.js";import{resolveConnectionAuthorization}from"#runtime/connections/resolve-authorization.js";import{omitProvidedArgumentsFromSchema,resolveProvidedArguments}from"#runtime/connections/provided-arguments.js";var McpConnectionClient=class{#e;#t;#n;#r;#i;constructor(e){this.#i=e}async connect(){if(this.#t!==void 0)return this.#t;if(this.#e!==void 0)return this.#e;this.#e=this.#a();try{return this.#t=await this.#e,this.#t}catch(e){throw this.#e=void 0,e}}async#a(){let e=await resolveHeaders(this.#i),t=this.#i.url;try{return await createMCPClient({transport:{type:`http`,url:t,headers:e}})}catch(n){if(!isMcpHttpFallbackRetryableError(n))throw n;return await createMCPClient({transport:{type:`sse`,url:t,headers:e}})}}async getToolMetadata(){return(await this.#o()).metadata}async getTools(){return(await this.#o()).tools}async executeTool(e,t,n){try{let{tools:r}=await this.#o(),i=r[e];if(i?.execute===void 0)throw Error(`Tool "${e}" not found in connection "${this.#i.connectionName}".`);let a=await resolveProvidedArguments({args:t,connection:this.#i,toolName:e});return await i.execute(a,{abortSignal:n?.abortSignal})}catch(e){return await this.#l(e)}}async#o(){if(this.#r!==void 0)return this.#r;if(this.#n!==void 0)return this.#n;this.#n=this.#s();try{return this.#r=await this.#n,this.#r}catch(e){throw this.#n=void 0,e}}async#s(){try{return await this.#c()}catch(e){return await this.#l(e)}}async#c(){let e=await this.connect(),t=await e.listTools(),n=this.#i.tools,r=n===void 0?t.tools:t.tools.filter(e=>passesToolFilter(e.name,n)),i=Object.keys(this.#i.toolCall?.providedArguments??{}),a=r.map(e=>({...e,inputSchema:omitProvidedArgumentsFromSchema(e.inputSchema,i)})),o=e.toolsFromDefinitions({tools:a});return{metadata:a.map(e=>({annotations:e.annotations,description:e.description??``,inputSchema:e.inputSchema??{},name:e.name,outputSchema:`outputSchema`in e&&e.outputSchema!==void 0?e.outputSchema:void 0})),tools:o}}async close(){this.#t!==void 0&&(await this.#t.close(),this.#t=void 0),this.#e=void 0,this.#n=void 0,this.#r=void 0}async#l(e){throw isMcpAuthRequiredError(e)?(await this.#u(),await this.close(),new ConnectionAuthorizationRequiredError(this.#i.connectionName,{message:`Connection "${this.#i.connectionName}" requires authorization (the server rejected the token).`})):e}async#u(){let e=await resolveConnectionAuthorization(this.#i);e!==void 0&&await evictScopedToken({authorization:e,connection:{url:this.#i.url},scope:this.#i.connectionName})}};function isMcpAuthRequiredError(e){return readHttpStatus(e)===401}function isMcpHttpFallbackRetryableError(e){let t=readHttpStatus(e);return t===400||t===404||t===405}function readHttpStatus(t){for(let n of walkErrorChain(t)){if(!isObject(n))continue;let t=readStatusField(n);if(t!==void 0)return t;let r=n.response;if(isObject(r)){let e=readStatusField(r);if(e!==void 0)return e}if(typeof n.message==`string`){let e=/\bHTTP\s+(\d{3})\b/u.exec(n.message);if(e?.[1]!==void 0)return Number(e[1])}}}function readStatusField(e){if(typeof e.status==`number`)return e.status;if(typeof e.statusCode==`number`)return e.statusCode}function*walkErrorChain(t){let n=t,r=new Set;for(;n!=null&&!r.has(n);){if(r.add(n),yield n,!isObject(n)||!(`cause`in n))return;n=n.cause}}function passesToolFilter(e,t){return t===void 0?!0:`allow`in t?t.allow.includes(e):!t.block.includes(e)}async function resolveHeaders(e){let n={},r,getCallbackContext=()=>r??=buildCallbackContext(),i=await resolveConnectionAuthorization(e,typeof e.authorization==`function`?getCallbackContext():void 0);if(i!==void 0&&(n.Authorization=`Bearer ${(await resolveToken(e,i)).token}`),e.headers!==void 0){let t=await resolveHeadersDefinition(e.headers,getCallbackContext);for(let[r,a]of Object.entries(t)){if(i!==void 0&&r.toLowerCase()===`authorization`)throw Error(`Connection "${e.connectionName}" headers must not include an "Authorization" key when "authorization" is also provided.`);n[r]=a}}return n}async function resolveToken(e,t){return await resolveScopedToken({authorization:t,connection:{url:e.url},scope:e.connectionName})}async function resolveHeadersDefinition(e,t){if(typeof e==`function`)return{...await e(t())};let n={},r=Object.entries(e);for(let[e,i]of r)n[e]=await resolveHeaderValue(i,t);return n}async function resolveHeaderValue(e,t){return typeof e==`function`?await e(t()):await e}export{McpConnectionClient,isMcpAuthRequiredError,passesToolFilter,resolveHeaders};
1
+ import{isObject}from"#shared/guards.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{ConnectionAuthorizationRequiredError}from"#connections/errors.js";import{evictScopedToken,resolveScopedToken}from"#runtime/connections/scoped-authorization.js";import{resolveConnectionAuthorization}from"#runtime/connections/resolve-authorization.js";import{createMCPClient}from"#compiled/@ai-sdk/mcp/index.js";import{omitProvidedArgumentsFromSchema,resolveProvidedArguments}from"#runtime/connections/provided-arguments.js";var McpConnectionClient=class{#e;#t;#n;#r;#i;constructor(e){this.#i=e}async connect(){if(this.#t!==void 0)return this.#t;if(this.#e!==void 0)return this.#e;this.#e=this.#a();try{return this.#t=await this.#e,this.#t}catch(e){throw this.#e=void 0,e}}async#a(){let e=await resolveHeaders(this.#i),t=this.#i.url;try{return await createMCPClient({transport:{type:`http`,url:t,headers:e}})}catch(n){if(!isMcpHttpFallbackRetryableError(n))throw n;return await createMCPClient({transport:{type:`sse`,url:t,headers:e}})}}async getToolMetadata(){return(await this.#o()).metadata}async getTools(){return(await this.#o()).tools}async executeTool(e,t,n){try{let{tools:r}=await this.#o(),i=r[e];if(i?.execute===void 0)throw Error(`Tool "${e}" not found in connection "${this.#i.connectionName}".`);let a=await resolveProvidedArguments({args:t,connection:this.#i,toolName:e});return await i.execute(a,{abortSignal:n?.abortSignal})}catch(e){return await this.#l(e)}}async#o(){if(this.#r!==void 0)return this.#r;if(this.#n!==void 0)return this.#n;this.#n=this.#s();try{return this.#r=await this.#n,this.#r}catch(e){throw this.#n=void 0,e}}async#s(){try{return await this.#c()}catch(e){return await this.#l(e)}}async#c(){let e=await this.connect(),t=await e.listTools(),n=this.#i.tools,r=n===void 0?t.tools:t.tools.filter(e=>passesToolFilter(e.name,n)),i=Object.keys(this.#i.toolCall?.providedArguments??{}),a=r.map(e=>({...e,inputSchema:omitProvidedArgumentsFromSchema(e.inputSchema,i)})),o=e.toolsFromDefinitions({tools:a});return{metadata:a.map(e=>({annotations:e.annotations,description:e.description??``,inputSchema:e.inputSchema??{},name:e.name,outputSchema:`outputSchema`in e&&e.outputSchema!==void 0?e.outputSchema:void 0})),tools:o}}async close(){this.#t!==void 0&&(await this.#t.close(),this.#t=void 0),this.#e=void 0,this.#n=void 0,this.#r=void 0}async#l(e){throw isMcpAuthRequiredError(e)?(await this.#u(),await this.close(),new ConnectionAuthorizationRequiredError(this.#i.connectionName,{message:`Connection "${this.#i.connectionName}" requires authorization (the server rejected the token).`})):e}async#u(){let e=await resolveConnectionAuthorization(this.#i);e!==void 0&&await evictScopedToken({authorization:e,connection:{url:this.#i.url},scope:this.#i.connectionName})}};function isMcpAuthRequiredError(e){return readHttpStatus(e)===401}function isMcpHttpFallbackRetryableError(e){let t=readHttpStatus(e);return t===400||t===404||t===405}function readHttpStatus(t){for(let n of walkErrorChain(t)){if(!isObject(n))continue;let t=readStatusField(n);if(t!==void 0)return t;let r=n.response;if(isObject(r)){let e=readStatusField(r);if(e!==void 0)return e}if(typeof n.message==`string`){let e=/\bHTTP\s+(\d{3})\b/u.exec(n.message);if(e?.[1]!==void 0)return Number(e[1])}}}function readStatusField(e){if(typeof e.status==`number`)return e.status;if(typeof e.statusCode==`number`)return e.statusCode}function*walkErrorChain(t){let n=t,r=new Set;for(;n!=null&&!r.has(n);){if(r.add(n),yield n,!isObject(n)||!(`cause`in n))return;n=n.cause}}function passesToolFilter(e,t){return t===void 0?!0:`allow`in t?t.allow.includes(e):!t.block.includes(e)}async function resolveHeaders(e){let n={},r,getCallbackContext=()=>r??=buildCallbackContext(),i=await resolveConnectionAuthorization(e,typeof e.authorization==`function`?getCallbackContext():void 0);if(i!==void 0&&(n.Authorization=`Bearer ${(await resolveToken(e,i)).token}`),e.headers!==void 0){let t=await resolveHeadersDefinition(e.headers,getCallbackContext);for(let[r,a]of Object.entries(t)){if(i!==void 0&&r.toLowerCase()===`authorization`)throw Error(`Connection "${e.connectionName}" headers must not include an "Authorization" key when "authorization" is also provided.`);n[r]=a}}return n}async function resolveToken(e,t){return await resolveScopedToken({authorization:t,connection:{url:e.url},scope:e.connectionName})}async function resolveHeadersDefinition(e,t){if(typeof e==`function`)return{...await e(t())};let n={},r=Object.entries(e);for(let[e,i]of r)n[e]=await resolveHeaderValue(i,t);return n}async function resolveHeaderValue(e,t){return typeof e==`function`?await e(t()):await e}export{McpConnectionClient,isMcpAuthRequiredError,passesToolFilter,resolveHeaders};
@@ -1,7 +1,7 @@
1
1
  import { type ToolSet } from "ai";
2
2
  import type { ResolvedConnectionDefinition } from "#runtime/types.js";
3
3
  import { type OpenApiOperation } from "#runtime/connections/openapi-operations.js";
4
- import type { ConnectionClient, ConnectionToolExecuteOptions, ConnectionToolMetadata } from "#runtime/connections/types.js";
4
+ import type { ConnectionClient, ConnectionToolExecuteOptions, ConnectionToolMetadata } from "#shared/connection-types.js";
5
5
  interface OpenApiToolCache {
6
6
  readonly metadata: readonly ConnectionToolMetadata[];
7
7
  readonly operations: ReadonlyMap<string, OpenApiOperation>;
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{isLoopbackHostname}from"#shared/network-address.js";import{isObject}from"#shared/guards.js";import{toInputSchema}from"#shared/tool-schema.js";import{tool}from"ai";import{omitProvidedArgumentsFromSchema,resolveProvidedArguments}from"#runtime/connections/provided-arguments.js";import{passesToolFilter,resolveHeaders}from"#runtime/connections/mcp-client.js";import{HTTP_METHODS,operationDescription,operationName,uniqueName}from"#runtime/connections/openapi-operations.js";import{buildInputSchema,deref,derefSchema,isArray}from"#runtime/connections/openapi-schema.js";import{applySecurity,resolveSecurity}from"#runtime/connections/openapi-security.js";import{extractServerUrl,parseSpecDocument}from"#runtime/connections/openapi-spec.js";const log=createLogger(`runtime.connections.openapi-client`),SWAGGER_PARAMETER_SCHEMA_KEYS=[`default`,`enum`,`exclusiveMaximum`,`exclusiveMinimum`,`format`,`items`,`maximum`,`maxItems`,`maxLength`,`minimum`,`minItems`,`minLength`,`multipleOf`,`pattern`,`type`,`uniqueItems`];var OpenApiConnectionClient=class{#e;#t;#n;constructor(e){this.#n=e}async connect(){return this.#r()}async getToolMetadata(){return(await this.#r()).metadata}async getTools(){return(await this.#r()).tools}async executeTool(e,t,r){let i=await this.#r(),a=i.operations.get(e);if(a===void 0)throw Error(`Tool "${e}" not found in connection "${this.#n.connectionName}".`);return this.#f(a,i.baseUrl,isObject(t)?t:{},{abortSignal:r?.abortSignal})}async close(){this.#e=void 0,this.#t=void 0}async#r(){if(this.#t!==void 0)return this.#t;if(this.#e!==void 0)return this.#e;this.#e=this.#i();try{return this.#t=await this.#e,this.#t}catch(e){throw this.#e=void 0,e}}async#i(){let e=await this.#o(),t=this.#a(e),o=this.#s(e),c=this.#n.tools,l=c===void 0?o:o.filter(e=>passesToolFilter(e.toolName,c)),u=[],d=new Map,f={},p=Object.keys(this.#n.toolCall?.providedArguments??{});for(let e of l){let o=omitProvidedArgumentsFromSchema(e.inputSchema,p),s;try{s=toInputSchema(o)}catch(t){log.warn(`omitting OpenAPI operation with an invalid input schema`,{connectionName:this.#n.connectionName,error:t,toolName:e.toolName});continue}d.set(e.toolName,e),u.push({description:e.description,inputSchema:o,name:e.toolName}),f[e.toolName]=tool({description:e.description,inputSchema:s,execute:async(r,i)=>this.#f(e,t,isObject(r)?r:{},{abortSignal:i?.abortSignal})})}return{metadata:u,operations:d,tools:f,baseUrl:t}}#a(e){let t=this.#n.url,n=typeof t==`string`&&t.trim().length>0?t:extractServerUrl(e,this.#n.spec);if(n===void 0)throw Error(`OpenAPI connection "${this.#n.connectionName}" has no base URL: set "baseUrl" or ensure the document declares an absolute "servers" entry or Swagger "host".`);return assertSecureUrl(n,this.#n.connectionName,`base`),n}async#o(){let e=this.#n.spec;if(e===void 0)throw Error(`OpenAPI connection "${this.#n.connectionName}" is missing its "spec" source.`);if(typeof e!=`string`)return e;assertSecureUrl(e,this.#n.connectionName,`spec`);let t;try{t=await fetch(e,{headers:{accept:`application/json, application/yaml, text/yaml, */*`}})}catch(t){throw Error(`OpenAPI connection "${this.#n.connectionName}" failed to fetch its spec from "${e}": ${String(t)}`)}if(t.redirected&&assertSecureUrl(t.url,this.#n.connectionName,`spec`),!t.ok)throw Error(`OpenAPI connection "${this.#n.connectionName}" failed to fetch its spec from "${e}": HTTP ${t.status}.`);let r=await t.text(),i;try{i=parseSpecDocument(r)}catch(t){throw Error(`OpenAPI connection "${this.#n.connectionName}" spec at "${e}" could not be parsed as JSON or YAML: ${String(t)}`)}if(!isObject(i))throw Error(`OpenAPI connection "${this.#n.connectionName}" spec at "${e}" is not an OpenAPI document object.`);return i}#s(e){let t=e.paths;if(!isObject(t))return[];let r=[],i=new Set;for(let[a,o]of Object.entries(t)){if(!isObject(o))continue;let t=isArray(o.parameters)?o.parameters:[];for(let s of HTTP_METHODS){let c=o[s];if(!isObject(c))continue;let l=uniqueName(operationName(c,s,a),i),m=isArray(c.parameters)?c.parameters:[],h=[...t,...m],g=this.#c(e,h),_=this.#l(e,c.requestBody,h);r.push({toolName:l,method:s,pathTemplate:a,description:operationDescription(c),parameters:g,requestBody:_,inputSchema:buildInputSchema(g,_),security:resolveSecurity(e,c)})}}return r}#c(e,t){let r=[];for(let i of t){let t=isObject(i)?deref(e,i):i;if(!isObject(t))continue;let a=t.in;if(a!==`path`&&a!==`query`&&a!==`header`&&a!==`cookie`||typeof t.name!=`string`)continue;let o=this.#u(e,t);r.push({name:t.name,location:a,required:t.required===!0||a===`path`,schema:o,description:typeof t.description==`string`?t.description:void 0})}return r}#l(e,t,r=[]){if(isObject(t)){let r=deref(e,t);if(isObject(r)&&isObject(r.content)){let t=r.content,i=`application/json`in t?`application/json`:Object.keys(t)[0];if(i!==void 0){let a=t[i],o=isObject(a)&&isObject(a.schema)?derefSchema(e,a.schema):{};return{required:r.required===!0,contentType:i,schema:o}}}}return this.#d(e,r)}#u(e,t){if(isObject(t.schema))return derefSchema(e,t.schema);let r={};for(let e of SWAGGER_PARAMETER_SCHEMA_KEYS)t[e]!==void 0&&(r[e]=t[e]);return derefSchema(e,r)}#d(e,t){for(let r of t){let t=isObject(r)?deref(e,r):r;if(!isObject(t)||t.in!==`body`)continue;let i=isObject(t.schema)?derefSchema(e,t.schema):{};return{required:t.required===!0,contentType:`application/json`,schema:i}}}async#f(e,t,n,r){let i=await resolveProvidedArguments({args:n,connection:this.#n,toolName:e.toolName}),a=await resolveHeaders(this.#n),s=e.pathTemplate,l=new URLSearchParams,u=[];for(let t of e.parameters){let e=i[t.name];e!=null&&(t.location===`path`?s=s.replace(`{${t.name}}`,encodeURIComponent(String(e))):t.location===`query`?appendQuery(l,t.name,e):t.location===`cookie`?u.push(`${t.name}=${encodeURIComponent(String(e))}`):a[t.name]=String(e))}if(applySecurity(e.security,this.#n,a,l,u),u.length>0){let e=a.cookie??a.Cookie;delete a.Cookie,a.cookie=[e,...u].filter(e=>!!e).join(`; `)}let d=new URL(joinPath(t,s));d.search=l.toString();let f;e.requestBody!==void 0&&i.body!==void 0&&(f=JSON.stringify(i.body),a[`content-type`]=e.requestBody.contentType);let p=await fetch(d,{method:e.method.toUpperCase(),headers:a,body:f,signal:r?.abortSignal});return{status:p.status,statusText:p.statusText,body:await readResponseBody(p)}}};function appendQuery(e,t,n){if(isArray(n)){for(let r of n)e.append(t,String(r));return}e.append(t,String(n))}function joinPath(e,t){return`${e.endsWith(`/`)?e.slice(0,-1):e}${t.startsWith(`/`)?t:`/${t}`}`}function assertSecureUrl(e,n,r){let i;try{i=new URL(e)}catch{throw Error(`OpenAPI connection "${n}" has an invalid ${r} URL "${e}".`)}if(i.protocol!==`https:`&&!(i.protocol===`http:`&&isLoopbackHostname(i.hostname)))throw Error(`OpenAPI connection "${n}" must use https for its ${r} (got "${i.protocol}//${i.host}").`)}async function readResponseBody(e){let t=await e.text();if(t.length===0)return null;if((e.headers.get(`content-type`)??``).includes(`application/json`))try{return JSON.parse(t)}catch{return t}return t}export{OpenApiConnectionClient};
1
+ import{createLogger}from"#internal/logging.js";import{isLoopbackHostname}from"#shared/network-address.js";import{isObject}from"#shared/guards.js";import{toInputSchema}from"#tools/schema.js";import{tool}from"ai";import{omitProvidedArgumentsFromSchema,resolveProvidedArguments}from"#runtime/connections/provided-arguments.js";import{passesToolFilter,resolveHeaders}from"#runtime/connections/mcp-client.js";import{HTTP_METHODS,operationDescription,operationName,uniqueName}from"#runtime/connections/openapi-operations.js";import{buildInputSchema,deref,derefSchema,isArray}from"#runtime/connections/openapi-schema.js";import{applySecurity,resolveSecurity}from"#runtime/connections/openapi-security.js";import{extractServerUrl,parseSpecDocument}from"#runtime/connections/openapi-spec.js";const log=createLogger(`runtime.connections.openapi-client`),SWAGGER_PARAMETER_SCHEMA_KEYS=[`default`,`enum`,`exclusiveMaximum`,`exclusiveMinimum`,`format`,`items`,`maximum`,`maxItems`,`maxLength`,`minimum`,`minItems`,`minLength`,`multipleOf`,`pattern`,`type`,`uniqueItems`];var OpenApiConnectionClient=class{#e;#t;#n;constructor(e){this.#n=e}async connect(){return this.#r()}async getToolMetadata(){return(await this.#r()).metadata}async getTools(){return(await this.#r()).tools}async executeTool(e,t,r){let i=await this.#r(),a=i.operations.get(e);if(a===void 0)throw Error(`Tool "${e}" not found in connection "${this.#n.connectionName}".`);return this.#f(a,i.baseUrl,isObject(t)?t:{},{abortSignal:r?.abortSignal})}async close(){this.#e=void 0,this.#t=void 0}async#r(){if(this.#t!==void 0)return this.#t;if(this.#e!==void 0)return this.#e;this.#e=this.#i();try{return this.#t=await this.#e,this.#t}catch(e){throw this.#e=void 0,e}}async#i(){let e=await this.#o(),t=this.#a(e),o=this.#s(e),c=this.#n.tools,l=c===void 0?o:o.filter(e=>passesToolFilter(e.toolName,c)),u=[],d=new Map,f={},p=Object.keys(this.#n.toolCall?.providedArguments??{});for(let e of l){let o=omitProvidedArgumentsFromSchema(e.inputSchema,p),s;try{s=toInputSchema(o)}catch(t){log.warn(`omitting OpenAPI operation with an invalid input schema`,{connectionName:this.#n.connectionName,error:t,toolName:e.toolName});continue}d.set(e.toolName,e),u.push({description:e.description,inputSchema:o,name:e.toolName}),f[e.toolName]=tool({description:e.description,inputSchema:s,execute:async(r,i)=>this.#f(e,t,isObject(r)?r:{},{abortSignal:i?.abortSignal})})}return{metadata:u,operations:d,tools:f,baseUrl:t}}#a(e){let t=this.#n.url,n=typeof t==`string`&&t.trim().length>0?t:extractServerUrl(e,this.#n.spec);if(n===void 0)throw Error(`OpenAPI connection "${this.#n.connectionName}" has no base URL: set "baseUrl" or ensure the document declares an absolute "servers" entry or Swagger "host".`);return assertSecureUrl(n,this.#n.connectionName,`base`),n}async#o(){let e=this.#n.spec;if(e===void 0)throw Error(`OpenAPI connection "${this.#n.connectionName}" is missing its "spec" source.`);if(typeof e!=`string`)return e;assertSecureUrl(e,this.#n.connectionName,`spec`);let t;try{t=await fetch(e,{headers:{accept:`application/json, application/yaml, text/yaml, */*`}})}catch(t){throw Error(`OpenAPI connection "${this.#n.connectionName}" failed to fetch its spec from "${e}": ${String(t)}`)}if(t.redirected&&assertSecureUrl(t.url,this.#n.connectionName,`spec`),!t.ok)throw Error(`OpenAPI connection "${this.#n.connectionName}" failed to fetch its spec from "${e}": HTTP ${t.status}.`);let r=await t.text(),i;try{i=parseSpecDocument(r)}catch(t){throw Error(`OpenAPI connection "${this.#n.connectionName}" spec at "${e}" could not be parsed as JSON or YAML: ${String(t)}`)}if(!isObject(i))throw Error(`OpenAPI connection "${this.#n.connectionName}" spec at "${e}" is not an OpenAPI document object.`);return i}#s(e){let t=e.paths;if(!isObject(t))return[];let r=[],i=new Set;for(let[a,o]of Object.entries(t)){if(!isObject(o))continue;let t=isArray(o.parameters)?o.parameters:[];for(let s of HTTP_METHODS){let c=o[s];if(!isObject(c))continue;let l=uniqueName(operationName(c,s,a),i),m=isArray(c.parameters)?c.parameters:[],h=[...t,...m],g=this.#c(e,h),_=this.#l(e,c.requestBody,h);r.push({toolName:l,method:s,pathTemplate:a,description:operationDescription(c),parameters:g,requestBody:_,inputSchema:buildInputSchema(g,_),security:resolveSecurity(e,c)})}}return r}#c(e,t){let r=[];for(let i of t){let t=isObject(i)?deref(e,i):i;if(!isObject(t))continue;let a=t.in;if(a!==`path`&&a!==`query`&&a!==`header`&&a!==`cookie`||typeof t.name!=`string`)continue;let o=this.#u(e,t);r.push({name:t.name,location:a,required:t.required===!0||a===`path`,schema:o,description:typeof t.description==`string`?t.description:void 0})}return r}#l(e,t,r=[]){if(isObject(t)){let r=deref(e,t);if(isObject(r)&&isObject(r.content)){let t=r.content,i=`application/json`in t?`application/json`:Object.keys(t)[0];if(i!==void 0){let a=t[i],o=isObject(a)&&isObject(a.schema)?derefSchema(e,a.schema):{};return{required:r.required===!0,contentType:i,schema:o}}}}return this.#d(e,r)}#u(e,t){if(isObject(t.schema))return derefSchema(e,t.schema);let r={};for(let e of SWAGGER_PARAMETER_SCHEMA_KEYS)t[e]!==void 0&&(r[e]=t[e]);return derefSchema(e,r)}#d(e,t){for(let r of t){let t=isObject(r)?deref(e,r):r;if(!isObject(t)||t.in!==`body`)continue;let i=isObject(t.schema)?derefSchema(e,t.schema):{};return{required:t.required===!0,contentType:`application/json`,schema:i}}}async#f(e,t,n,r){let i=await resolveProvidedArguments({args:n,connection:this.#n,toolName:e.toolName}),a=await resolveHeaders(this.#n),s=e.pathTemplate,l=new URLSearchParams,u=[];for(let t of e.parameters){let e=i[t.name];e!=null&&(t.location===`path`?s=s.replace(`{${t.name}}`,encodeURIComponent(String(e))):t.location===`query`?appendQuery(l,t.name,e):t.location===`cookie`?u.push(`${t.name}=${encodeURIComponent(String(e))}`):a[t.name]=String(e))}if(applySecurity(e.security,this.#n,a,l,u),u.length>0){let e=a.cookie??a.Cookie;delete a.Cookie,a.cookie=[e,...u].filter(e=>!!e).join(`; `)}let d=new URL(joinPath(t,s));d.search=l.toString();let f;e.requestBody!==void 0&&i.body!==void 0&&(f=JSON.stringify(i.body),a[`content-type`]=e.requestBody.contentType);let p=await fetch(d,{method:e.method.toUpperCase(),headers:a,body:f,signal:r?.abortSignal});return{status:p.status,statusText:p.statusText,body:await readResponseBody(p)}}};function appendQuery(e,t,n){if(isArray(n)){for(let r of n)e.append(t,String(r));return}e.append(t,String(n))}function joinPath(e,t){return`${e.endsWith(`/`)?e.slice(0,-1):e}${t.startsWith(`/`)?t:`/${t}`}`}function assertSecureUrl(e,n,r){let i;try{i=new URL(e)}catch{throw Error(`OpenAPI connection "${n}" has an invalid ${r} URL "${e}".`)}if(i.protocol!==`https:`&&!(i.protocol===`http:`&&isLoopbackHostname(i.hostname)))throw Error(`OpenAPI connection "${n}" must use https for its ${r} (got "${i.protocol}//${i.host}").`)}async function readResponseBody(e){let t=await e.text();if(t.length===0)return null;if((e.headers.get(`content-type`)??``).includes(`application/json`))try{return JSON.parse(t)}catch{return t}return t}export{OpenApiConnectionClient};
@@ -11,7 +11,7 @@
11
11
  */
12
12
  import { type AlsContext } from "#context/container.js";
13
13
  import { type SessionAuthContext } from "#context/keys.js";
14
- import type { AuthorizationDefinition, ConnectionPrincipal } from "#runtime/connections/types.js";
14
+ import type { AuthorizationDefinition, ConnectionPrincipal } from "#shared/connection-types.js";
15
15
  /**
16
16
  * Stable string key identifying one principal within a connection's
17
17
  * per-principal token cache.
@@ -1 +1 @@
1
- import{AuthKey}from"#context/keys.js";import{contextStorage}from"#context/container.js";import{ConnectionAuthorizationFailedError}from"#public/connections/errors.js";function principalKey(e){return e.type===`app`?`app`:e.issuer===void 0?`user:${e.id}`:`user:${e.issuer}:${e.id}`}function resolveConnectionPrincipal(n,r,i=contextStorage.getStore()){return resolveConnectionPrincipalFromAuth(n,r,i?.get(AuthKey),i)}function resolveConnectionPrincipalFromAuth(e,t,r,i){if(t.principalType===`app`)return{type:`app`};if(r==null||r.principalType!==`user`)throw new ConnectionAuthorizationFailedError(e,{message:buildUserPrincipalRequiredMessage(e,t,i,r),reason:`principal_required`,retryable:!1});return t.vercelConnect!==void 0&&isVercelDevelopmentUser(r)?{attributes:r.attributes,id:r.subject??r.principalId,type:`user`}:{attributes:r.attributes,id:r.principalId,issuer:r.issuer??r.authenticator,type:`user`}}function isVercelDevelopmentUser(e){return e.authenticator===`oidc`&&e.issuer?.startsWith(`https://oidc.vercel.com/`)===!0&&e.attributes.environment===`development`&&e.subject===e.attributes.user_id}function buildUserPrincipalRequiredMessage(e,t,n,r){let i;return i=n===void 0?`it was invoked outside an eve context, so no authenticated user can be resolved.`:r==null?`the active session has no authenticated user.`:t.vercelConnect!==void 0&&r.authenticator===`local-dev`?`the local request fell back to local development access instead of authenticating a Vercel user. Ensure this directory is linked and the Vercel CLI can mint a Vercel OIDC token, then retry.`:`the active session is scoped to "${r.principalType}", not an authenticated user.`,`Connection "${e}" is user-scoped, but ${i} User-scoped connections require route auth that resolves an authenticated user. If this connection should use credentials shared by the agent instead, configure it as an app-scoped connection.`}export{principalKey,resolveConnectionPrincipal,resolveConnectionPrincipalFromAuth};
1
+ import{isVercelOidcIssuer}from"#shared/vercel-project.js";import{AuthKey}from"#context/keys.js";import{contextStorage}from"#context/container.js";import{ConnectionAuthorizationFailedError}from"#connections/errors.js";function principalKey(e){return e.type===`app`?`app`:e.issuer===void 0?`user:${e.id}`:`user:${e.issuer}:${e.id}`}function resolveConnectionPrincipal(e,r,i=contextStorage.getStore()){return resolveConnectionPrincipalFromAuth(e,r,i?.get(AuthKey),i)}function resolveConnectionPrincipalFromAuth(e,t,n,i){if(t.principalType===`app`)return{type:`app`};if(n==null||n.principalType!==`user`)throw new ConnectionAuthorizationFailedError(e,{message:buildUserPrincipalRequiredMessage(e,t,i,n),reason:`principal_required`,retryable:!1});return t.vercelConnect!==void 0&&isVercelDevelopmentUser(n)?{attributes:n.attributes,id:n.subject??n.principalId,type:`user`}:{attributes:n.attributes,id:n.principalId,issuer:n.issuer??n.authenticator,type:`user`}}function isVercelDevelopmentUser(t){return t.authenticator===`oidc`&&isVercelOidcIssuer(t.issuer)&&t.attributes.environment===`development`&&t.subject===t.attributes.user_id}function buildUserPrincipalRequiredMessage(e,t,n,r){let i;return i=n===void 0?`it was invoked outside an eve context, so no authenticated user can be resolved.`:r==null?`the active session has no authenticated user.`:t.vercelConnect!==void 0&&r.authenticator===`local-dev`?`the local request fell back to local development access instead of authenticating a Vercel user. Ensure this directory is linked and the Vercel CLI can mint a Vercel OIDC token, then retry.`:`the active session is scoped to "${r.principalType}", not an authenticated user.`,`Connection "${e}" is user-scoped, but ${i} User-scoped connections require route auth that resolves an authenticated user. If this connection should use credentials shared by the agent instead, configure it as an app-scoped connection.`}export{principalKey,resolveConnectionPrincipal,resolveConnectionPrincipalFromAuth};
@@ -0,0 +1,11 @@
1
+ import type { Approval } from "#approval/definition.js";
2
+ import type { ConnectionClient } from "#shared/connection-types.js";
3
+ import type { ResolvedConnectionDefinition } from "#runtime/types.js";
4
+ /** Per-session container mapping compiled connection names to live clients. */
5
+ export interface ConnectionRegistry {
6
+ dispose(): Promise<void>;
7
+ getClient(connectionName: string): ConnectionClient;
8
+ getConnectionApproval(connectionName: string): Approval | undefined;
9
+ getConnectionNames(): readonly string[];
10
+ getConnections(): readonly ResolvedConnectionDefinition[];
11
+ }
@@ -1,6 +1,7 @@
1
- import type { Approval } from "#public/definitions/approval.js";
1
+ import type { Approval } from "#approval/definition.js";
2
2
  import type { ResolvedConnectionDefinition } from "#runtime/types.js";
3
- import type { ConnectionClient, ConnectionRegistry } from "#runtime/connections/types.js";
3
+ import type { ConnectionClient } from "#shared/connection-types.js";
4
+ import type { ConnectionRegistry } from "#runtime/connections/registry-types.js";
4
5
  /**
5
6
  * Per-session container mapping connection names to lazily-initialized
6
7
  * client wrappers.
@@ -1,6 +1,6 @@
1
- import type { SessionContext } from "#public/definitions/callback-context.js";
1
+ import type { SessionContext } from "#context/session-context.js";
2
2
  import type { ResolvedConnectionDefinition } from "#runtime/types.js";
3
- import type { AuthorizationDefinition } from "#runtime/connections/types.js";
3
+ import type { AuthorizationDefinition } from "#shared/connection-types.js";
4
4
  type ResolvedAuthorization = Readonly<AuthorizationDefinition> | undefined;
5
5
  /**
6
6
  * Resolves and validates the auth provider for the active connection call.
@@ -1 +1 @@
1
- import{contextStorage}from"#context/container.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{ContextKey}from"#context/key.js";import{normalizeAuthorizationSpec}from"#runtime/connections/validate-authorization.js";const ConnectionAuthorizationResolversKey=new ContextKey(`eve.connectionAuthorizationResolvers`);async function resolveConnectionAuthorization(t,n){let r=t.authorization;if(r===void 0||typeof r!=`function`)return r;let i=contextStorage.getStore();if(i===void 0)return await resolveDynamicAuthorization(t,n);let a=getResolverCache(i),o=a.get(t);return o===void 0&&(o=resolveDynamicAuthorization(t,n),a.set(t,o)),await o}async function resolveDynamicAuthorization(e,n){let i=e.authorization;return typeof i==`function`?normalizeAuthorizationSpec(await i(n??buildCallbackContext()),`Connection "${e.connectionName}" auth resolver:`):i}function getResolverCache(e){let t=e.get(ConnectionAuthorizationResolversKey);if(t!==void 0)return t;let n=new Map;return e.setVirtualContext(ConnectionAuthorizationResolversKey,n),n}export{resolveConnectionAuthorization};
1
+ import{contextStorage}from"#context/container.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{ContextKey}from"#context/key.js";import{normalizeAuthorizationSpec}from"#shared/validate-authorization.js";const ConnectionAuthorizationResolversKey=new ContextKey(`eve.connectionAuthorizationResolvers`);async function resolveConnectionAuthorization(t,n){let r=t.authorization;if(r===void 0||typeof r!=`function`)return r;let i=contextStorage.getStore();if(i===void 0)return await resolveDynamicAuthorization(t,n);let a=getResolverCache(i),o=a.get(t);return o===void 0&&(o=resolveDynamicAuthorization(t,n),a.set(t,o)),await o}async function resolveDynamicAuthorization(e,n){let i=e.authorization;return typeof i==`function`?normalizeAuthorizationSpec(await i(n??buildCallbackContext()),`Connection "${e.connectionName}" auth resolver:`):i}function getResolverCache(e){let t=e.get(ConnectionAuthorizationResolversKey);if(t!==void 0)return t;let n=new Map;return e.setVirtualContext(ConnectionAuthorizationResolversKey,n),n}export{resolveConnectionAuthorization};
@@ -9,10 +9,10 @@
9
9
  * is identical across both, so it lives here once instead of being
10
10
  * duplicated per caller.
11
11
  */
12
- import type { ConnectionAuthorizationChallenge } from "#public/connections/errors.js";
12
+ import type { ConnectionAuthorizationChallenge } from "#connections/errors.js";
13
13
  import { type AuthorizationSignal } from "#harness/authorization.js";
14
14
  import type { SessionAuthContext } from "#context/keys.js";
15
- import { type AuthorizationDefinition, type ConnectionAuthorizationContext, type TokenResult } from "#runtime/connections/types.js";
15
+ import { type AuthorizationDefinition, type ConnectionAuthorizationContext, type TokenResult } from "#shared/connection-types.js";
16
16
  /**
17
17
  * Everything the scoped authorization helpers need to drive one
18
18
  * authorization strategy: the cache/callback {@link scope}, the
@@ -1 +1 @@
1
- import{contextStorage,loadContext}from"#context/container.js";import{consumeAuthorizationResult,createAuthorizationAttempt,requestAuthorization}from"#harness/authorization.js";import{supportsInteractiveAuthorization}from"#runtime/connections/types.js";import{evictCachedToken,readCachedToken,writeCachedToken}from"#runtime/connections/authorization-tokens.js";import{principalKey,resolveConnectionPrincipal,resolveConnectionPrincipalFromAuth}from"#runtime/connections/principal.js";const LOCAL_HTTP_VERCEL_CONNECT_HOSTNAMES=new Set([`127.0.0.1`,`[::1]`]);async function resolveScopedToken(t){let{scope:n,authorization:r,connection:i}=t,a=contextStorage.getStore(),o=resolveScopedPrincipal(t,a);if(a===void 0)return await r.getToken({connection:i,principal:o});let u=principalKey(o),d=readCachedToken(a,n,u);if(d!==void 0)return d;let f=await r.getToken({connection:i,principal:o});return writeCachedToken(a,n,u,f),f}async function evictScopedToken(t){let{scope:n,authorization:r,connection:i}=t,a=contextStorage.getStore();if(a===void 0)return;let s;try{s=resolveScopedPrincipal(t,a),evictCachedToken(a,n,principalKey(s))}catch{return}try{await r.evict?.({connection:i,principal:s})}catch{}}async function completeScopedAuthorization(e){let{scope:r,authorization:i,connection:o}=e;if(!supportsInteractiveAuthorization(i))return!1;let s=consumeAuthorizationResult(r);if(s===void 0)return!1;let u=i,d=loadContext(),f=s.principal??resolveScopedPrincipal(e,d),p=await u.completeAuthorization({callbackUrl:s.hookUrl,connection:o,principal:f,resume:s.resume,callback:s.callback});return writeCachedToken(d,r,principalKey(f),p),!0}async function startScopedAuthorization(e){let{scope:t,authorization:n,connection:o}=e;if(!supportsInteractiveAuthorization(n))return;let s=createAuthorizationAttempt(t);if(s===void 0)return;let c=n,l=resolveScopedPrincipal(e),u=resolveAuthorizationCallbackUrl({authorization:n,callbackUrl:s.hookUrl}),{challenge:d,resume:f}=await c.startAuthorization({callbackUrl:u,connection:o,principal:l});return requestAuthorization([{attemptId:s.attemptId,challenge:stampChallengeDisplayName(d,n),hookUrl:u,name:t,principal:l,resume:f}])}function resolveScopedPrincipal(e,t){return e.boundResponder===void 0?resolveConnectionPrincipal(e.scope,e.authorization,t):resolveConnectionPrincipalFromAuth(e.scope,e.authorization,e.boundResponder,t)}function resolveAuthorizationCallbackUrl(e){if(e.authorization.vercelConnect===void 0)return e.callbackUrl;let t;try{t=new URL(e.callbackUrl)}catch{return e.callbackUrl}return t.protocol!==`http:`||!LOCAL_HTTP_VERCEL_CONNECT_HOSTNAMES.has(t.hostname)?e.callbackUrl:(t.hostname=`localhost`,t.toString())}function stampChallengeDisplayName(e,t){let n=t.displayName??e.displayName;return n===e.displayName?e:{...e,displayName:n}}export{completeScopedAuthorization,evictScopedToken,resolveAuthorizationCallbackUrl,resolveScopedToken,stampChallengeDisplayName,startScopedAuthorization};
1
+ import{contextStorage,loadContext}from"#context/container.js";import{consumeAuthorizationResult,createAuthorizationAttempt,requestAuthorization}from"#harness/authorization.js";import{supportsInteractiveAuthorization}from"#shared/connection-types.js";import{evictCachedToken,readCachedToken,writeCachedToken}from"#runtime/connections/authorization-tokens.js";import{principalKey,resolveConnectionPrincipal,resolveConnectionPrincipalFromAuth}from"#runtime/connections/principal.js";const LOCAL_HTTP_VERCEL_CONNECT_HOSTNAMES=new Set([`127.0.0.1`,`[::1]`]);async function resolveScopedToken(t){let{scope:n,authorization:r,connection:i}=t,a=contextStorage.getStore(),o=resolveScopedPrincipal(t,a);if(a===void 0)return await r.getToken({connection:i,principal:o});let u=principalKey(o),d=readCachedToken(a,n,u);if(d!==void 0)return d;let f=await r.getToken({connection:i,principal:o});return writeCachedToken(a,n,u,f),f}async function evictScopedToken(t){let{scope:n,authorization:r,connection:i}=t,a=contextStorage.getStore();if(a===void 0)return;let s;try{s=resolveScopedPrincipal(t,a),evictCachedToken(a,n,principalKey(s))}catch{return}try{await r.evict?.({connection:i,principal:s})}catch{}}async function completeScopedAuthorization(e){let{scope:r,authorization:i,connection:o}=e;if(!supportsInteractiveAuthorization(i))return!1;let s=consumeAuthorizationResult(r);if(s===void 0)return!1;let u=i,d=loadContext(),f=s.principal??resolveScopedPrincipal(e,d),p=await u.completeAuthorization({callbackUrl:s.hookUrl,connection:o,principal:f,resume:s.resume,callback:s.callback});return writeCachedToken(d,r,principalKey(f),p),!0}async function startScopedAuthorization(e){let{scope:t,authorization:n,connection:o}=e;if(!supportsInteractiveAuthorization(n))return;let s=createAuthorizationAttempt(t);if(s===void 0)return;let c=n,l=resolveScopedPrincipal(e),u=resolveAuthorizationCallbackUrl({authorization:n,callbackUrl:s.hookUrl}),{challenge:d,resume:f}=await c.startAuthorization({callbackUrl:u,connection:o,principal:l});return requestAuthorization([{attemptId:s.attemptId,challenge:stampChallengeDisplayName(d,n),hookUrl:u,name:t,principal:l,resume:f}])}function resolveScopedPrincipal(e,t){return e.boundResponder===void 0?resolveConnectionPrincipal(e.scope,e.authorization,t):resolveConnectionPrincipalFromAuth(e.scope,e.authorization,e.boundResponder,t)}function resolveAuthorizationCallbackUrl(e){if(e.authorization.vercelConnect===void 0)return e.callbackUrl;let t;try{t=new URL(e.callbackUrl)}catch{return e.callbackUrl}return t.protocol!==`http:`||!LOCAL_HTTP_VERCEL_CONNECT_HOSTNAMES.has(t.hostname)?e.callbackUrl:(t.hostname=`localhost`,t.toString())}function stampChallengeDisplayName(e,t){let n=t.displayName??e.displayName;return n===e.displayName?e:{...e,displayName:n}}export{completeScopedAuthorization,evictScopedToken,resolveAuthorizationCallbackUrl,resolveScopedToken,stampChallengeDisplayName,startScopedAuthorization};
@@ -1 +1 @@
1
- import{z}from"#compiled/zod/index.js";import{COMPILE_METADATA_KIND,COMPILE_METADATA_VERSION}from"#compiler/artifacts.js";import{formatValidationError}from"#runtime/validation.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";const compileArtifactDigestSchema=z.object({path:z.string(),sha256:z.string()}).strict(),compileMetadataSchema=z.object({compile:z.object({moduleMap:compileArtifactDigestSchema}).strict(),discovery:z.object({diagnostics:compileArtifactDigestSchema,manifest:compileArtifactDigestSchema,sourceGraphHash:z.string(),summary:z.object({errors:z.number().finite(),warnings:z.number().finite()}).strict()}).strict(),generator:z.object({name:z.string(),version:z.string()}).strict(),kind:z.literal(COMPILE_METADATA_KIND),status:z.union([z.literal(`failed`),z.literal(`ready`)]),version:z.literal(COMPILE_METADATA_VERSION)}).strict();var LoadCompileMetadataError=class extends Error{metadataPath;constructor(e,t){super(e),this.name=`LoadCompileMetadataError`,t!==void 0&&(this.metadataPath=t)}};async function loadCompileMetadata(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compileMetadataPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompileMetadataError(formatLoadErrorMessage(e),t)}return parseCompileMetadata(n,t)}let n=readBundledCompiledArtifacts()?.metadata;return n===void 0?null:parseCompileMetadata(n,`bundled compile metadata`)}function parseCompileMetadata(e,t){let n=compileMetadataSchema.safeParse(e);if(!n.success)throw new LoadCompileMetadataError(`Expected "${t}" to contain valid eve compile metadata. ${formatValidationError(n.error)}`,t);return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown compile metadata load failure.`}export{loadCompileMetadata};
1
+ import{z}from"#compiled/zod/index.js";import{COMPILE_METADATA_KIND,COMPILE_METADATA_VERSION}from"#compiler/artifacts.js";import{formatValidationError}from"#runtime/validation.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";const compileArtifactDigestSchema=z.object({path:z.string(),sha256:z.string()}).strict(),compileMetadataSchema=z.object({compile:z.object({manifest:compileArtifactDigestSchema,moduleMap:compileArtifactDigestSchema}).strict(),discovery:z.object({diagnostics:compileArtifactDigestSchema,manifest:compileArtifactDigestSchema,sourceGraphHash:z.string(),summary:z.object({errors:z.number().finite(),warnings:z.number().finite()}).strict()}).strict(),generator:z.object({name:z.string(),version:z.string()}).strict(),kind:z.literal(COMPILE_METADATA_KIND),status:z.union([z.literal(`failed`),z.literal(`ready`)]),version:z.literal(COMPILE_METADATA_VERSION)}).strict();var LoadCompileMetadataError=class extends Error{metadataPath;constructor(e,t){super(e),this.name=`LoadCompileMetadataError`,t!==void 0&&(this.metadataPath=t)}};async function loadCompileMetadata(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compileMetadataPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompileMetadataError(formatLoadErrorMessage(e),t)}return parseCompileMetadata(n,t)}let n=readBundledCompiledArtifacts()?.metadata;return n===void 0?null:parseCompileMetadata(n,`bundled compile metadata`)}function parseCompileMetadata(e,t){let n=compileMetadataSchema.safeParse(e);if(!n.success)throw new LoadCompileMetadataError(`Expected "${t}" to contain valid eve compile metadata. ${formatValidationError(n.error)}`,t);return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown compile metadata load failure.`}export{loadCompileMetadata};
@@ -1 +1 @@
1
- import{compiledAgentManifestSchema}from"#compiler/manifest.js";import{formatValidationError}from"#runtime/validation.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";const BUNDLED_MANIFEST_SOURCE=`bundled compiled manifest`;var LoadCompiledManifestError=class extends Error{manifestPath;constructor(e,t){super(e),this.name=`LoadCompiledManifestError`,t!==void 0&&(this.manifestPath=t)}};async function loadCompiledManifest(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compiledManifestPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompiledManifestError(formatLoadErrorMessage(e),t)}return parseCompiledManifest(n,t)}let a=readBundledCompiledArtifacts();if(a!==null)return parseCompiledManifest(a.manifest,BUNDLED_MANIFEST_SOURCE);throw new LoadCompiledManifestError(`Compiled manifest is unavailable without an app root or bundled compiled artifacts.`,BUNDLED_MANIFEST_SOURCE)}function parseCompiledManifest(n,r){let i=compiledAgentManifestSchema.safeParse(n);if(!i.success)throw new LoadCompiledManifestError(`Expected "${r}" to contain a valid compiled eve agent manifest. ${formatValidationError(i.error)}`,r);return i.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown manifest load failure.`}export{LoadCompiledManifestError,loadCompiledManifest};
1
+ import{compiledAgentManifestSchema}from"#compiler/manifest.js";import{formatValidationError}from"#runtime/validation.js";import{validateCompiledAgentManifest}from"#compiler/validate-artifact.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";const BUNDLED_MANIFEST_SOURCE=`bundled compiled manifest`;var LoadCompiledManifestError=class extends Error{manifestPath;constructor(e,t){super(e),this.name=`LoadCompiledManifestError`,t!==void 0&&(this.manifestPath=t)}};async function loadCompiledManifest(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compiledManifestPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompiledManifestError(formatLoadErrorMessage(e),t)}return parseCompiledManifest(n,t)}let n=readBundledCompiledArtifacts();if(n!==null)return parseCompiledManifest(n.manifest,BUNDLED_MANIFEST_SOURCE);throw new LoadCompiledManifestError(`Compiled manifest is unavailable without an app root or bundled compiled artifacts.`,BUNDLED_MANIFEST_SOURCE)}function parseCompiledManifest(r,i){let a=compiledAgentManifestSchema.safeParse(r);if(!a.success)throw new LoadCompiledManifestError(`Expected "${i}" to contain a valid compiled eve agent manifest. ${formatValidationError(a.error)}`,i);try{validateCompiledAgentManifest(a.data)}catch(e){throw new LoadCompiledManifestError(`Expected "${i}" to contain a semantically valid compiled eve agent manifest. ${formatLoadErrorMessage(e)}`,i)}return a.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown manifest load failure.`}export{LoadCompiledManifestError,loadCompiledManifest};
@@ -7,12 +7,6 @@ import type { WorkspaceRuntimeSpec } from "#runtime/workspace/types.js";
7
7
  interface ComposeRuntimeBasePromptInput {
8
8
  connections?: readonly ResolvedConnectionDefinition[];
9
9
  instructions?: readonly ResolvedInstructionsDefinition[];
10
- /**
11
- * Whether the agent opted into `experimental.subagentPersistentSessions`.
12
- * Gates the agent-messaging prompt block that documents `agentId`
13
- * continuation and the `<agents>` listing.
14
- */
15
- persistentSubagentSessions?: boolean;
16
10
  tasksEnabled?: boolean;
17
11
  skills?: readonly ResolvedSkillDefinition[];
18
12
  subagentsAvailable?: boolean;
@@ -1,4 +1,4 @@
1
1
  import{formatAvailableSkillsSection}from"#execution/skills/instructions.js";import{createWorkspacePromptSection}from"#runtime/workspace/spec.js";import{formatConnectionsSection}from"#runtime/prompt/connections.js";function composeRuntimeBasePrompt(e){return[...createInstructionsPromptBlocks(e.instructions),...createWorkspacePromptBlocks(e.workspaceSpec),...e.toolsAvailable?[`Tool execution
2
- A single tool or subagent call runs as one serial action. If you call multiple independent tools or subagents in one response, eve treats that batch as parallel work. Only batch work that is independent and does not rely on another call in the same response.`]:[],...e.subagentsAvailable&&e.persistentSubagentSessions?[e.tasksEnabled?"Agent messaging\nSubagent calls start durable background tasks and return immediately with a task receipt. After delegating, continue helping the user or end your turn. The task will notify you when it completes, fails, needs input, or sends an update; completion and failure notifications include the task's result. Agents you have already delegated to remain visible in the framework-authored `<agents>` conversation note. `availability=busy` means the listed task still owns that agent session: wait for its notification or use task_cancel with its taskId instead of starting a continuation. `availability=available` means no nonterminal task owns the session, so you may pass agentId to the original subagent tool to continue it. Calling a subagent without agentId always starts a new agent session.":"Agent messaging\nAgents you have already delegated to stay available after they answer. eve injects the current `<agents>` list into the conversation as a note labeled `[Agents]`; it is added automatically by the framework, not written by the user, and never requires a reply. The list is only a record of those existing agents — their `agentId`, name, and latest status. It does not limit which subagent tools you can call: your tool list is the source of truth, and any subagent tool can always be called without `agentId` to start a new agent, including when the `<agents>` list is empty or absent. Pass `agentId` to the same subagent tool only to continue one of those existing agents' sessions."]:[],...createConnectionsPromptBlocks(e.connections),...createSkillsPromptBlocks(e.skills)]}function createInstructionsPromptBlocks(e){let t=(e??[]).filter(e=>e.role===`system`&&e.content.trim().length>0);if(t.length===0)return[];let n=t.length===1?t[0]:void 0;return[`Instructions (${n!==void 0&&!n.sourceId.startsWith(`ext:`)&&!n.sourceId.startsWith(`ext-override:`)?n.name:`instructions`})\n${t.map(e=>e.content).join(`
2
+ A single tool or subagent call runs as one serial action. If you call multiple independent tools or subagents in one response, eve treats that batch as parallel work. Only batch work that is independent and does not rely on another call in the same response.`]:[],...e.subagentsAvailable?[e.tasksEnabled?"Agent messaging\nSubagent calls start durable background tasks and return immediately with a task receipt. After delegating, continue helping the user or end your turn. The task will notify you when it completes, fails, needs input, or sends an update; completion and failure notifications include the task's result. Agents you have already delegated to remain visible in the framework-authored `<agents>` conversation note. `availability=busy` means the listed task still owns that agent session: wait for its notification or use task_cancel with its taskId instead of starting a continuation. `availability=available` means no nonterminal task owns the session, so you may pass agentId to the original subagent tool to continue it. Calling a subagent without agentId always starts a new agent session.":"Agent messaging\nAgents you have already delegated to stay available after they answer. eve injects the current `<agents>` list into the conversation as a note labeled `[Agents]`; it is added automatically by the framework, not written by the user, and never requires a reply. The list is only a record of those existing agents — their `agentId`, name, and latest status. It does not limit which subagent tools you can call: your tool list is the source of truth, and any subagent tool can always be called without `agentId` to start a new agent, including when the `<agents>` list is empty or absent. Pass `agentId` to the same subagent tool only to continue one of those existing agents' sessions."]:[],...createConnectionsPromptBlocks(e.connections),...createSkillsPromptBlocks(e.skills)]}function createInstructionsPromptBlocks(e){let t=(e??[]).filter(e=>e.role===`system`&&e.content.trim().length>0);if(t.length===0)return[];let n=t.length===1?t[0]:void 0;return[`Instructions (${n!==void 0&&n.owner.kind!==`extension`?n.name:`instructions`})\n${t.map(e=>e.content).join(`
3
3
 
4
4
  `).trim()}`]}function createWorkspacePromptBlocks(e){if(e===void 0)return[];let n=createWorkspacePromptSection(e);return n===void 0?[]:[n]}function createConnectionsPromptBlocks(e){return!e||e.length===0?[]:[formatConnectionsSection(e)]}function createSkillsPromptBlocks(t){if(!t||t.length===0)return[];let n=formatAvailableSkillsSection(t);return n===null?[]:[n]}export{composeRuntimeBasePrompt};
@@ -1 +1 @@
1
- import{expectObjectRecord}from"#internal/authored-module.js";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{createRuntimeSubagentRegistry}from"#runtime/subagents/registry.js";import{LOAD_SKILL_TOOL_NAME}from"#runtime/skills/fragment-context.js";import{createRuntimeToolRegistry}from"#runtime/tools/registry.js";import{ROOT_RUNTIME_AGENT_NODE_ID}from"#runtime/graph.js";import{WORKFLOW_TOOL_NAME}from"#shared/workflow-sandbox.js";import{getAllFrameworkChannelNames,getFrameworkChannelDefinitions}from"#runtime/framework-channels/index.js";import{getAllFrameworkToolNames,getFrameworkDynamicToolResolvers,getFrameworkToolDefinitions}from"#runtime/framework-tools/index.js";import{resolveAgent}from"#runtime/resolve-agent.js";import{loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{createResolvedRuntimeTurnAgent}from"#runtime/agent/bootstrap.js";import{createWorkspacePromptSection}from"#runtime/workspace/spec.js";import{createRuntimeHookRegistry}from"#runtime/hooks/registry.js";import{resolveDynamicSubagentDefinition}from"#runtime/resolve-dynamic-subagent.js";import{createRuntimeSandboxRegistry}from"#runtime/sandbox/registry.js";var ResolveRuntimeAgentGraphError=class extends Error{logicalPath;nodeId;sourceId;constructor(e,t={}){super(e),this.name=`ResolveRuntimeAgentGraphError`,t.logicalPath!==void 0&&(this.logicalPath=t.logicalPath),t.nodeId!==void 0&&(this.nodeId=t.nodeId),t.sourceId!==void 0&&(this.sourceId=t.sourceId)}};async function resolveRuntimeAgentGraph(e){let n=new Map,r=createChildNodeIdsByParentNodeId(e.manifest),i=new Map(e.manifest.subagents.map(e=>[e.nodeId,e])),a=await resolveRuntimeAgentNode({childNodeIdsByParentNodeId:r,manifest:e.manifest,moduleMap:e.moduleMap,nodeId:ROOT_COMPILED_AGENT_NODE_ID,nodesByNodeId:n,subagentNodesById:i});return attachInheritedSandboxWorkspaceResources({manifest:e.manifest,nodesByNodeId:n}),{nodesByNodeId:n,root:a}}async function resolveRuntimeAgentNode(e){let t=toRuntimeNodeId(e.nodeId);if(e.nodesByNodeId.has(t))throw new ResolveRuntimeAgentGraphError(`Found multiple runtime agent nodes for node id "${t}".`,{nodeId:t,sourceId:e.sourceId});let a=await resolveAgent({manifest:e.manifest,moduleMap:e.moduleMap,nodeId:e.nodeId}),s=getFrameworkToolDefinitions({authoredSkills:a.skills}),c=new Set(s.map(e=>e.name)),l=getAllFrameworkToolNames(),u=new Set(a.tools.map(e=>e.name));for(let n of a.disabledFrameworkTools)if(!l.has(n))throw new ResolveRuntimeAgentGraphError(`agent/tools/${n}.ts exports disableTool() but "${n}" is not a framework tool. Rename the file to one of: ${[...l].sort().join(`, `)}.`,{nodeId:t,sourceId:e.sourceId});let d=new Set(a.disabledFrameworkTools),f=await createRuntimeToolRegistry({tools:[...s.filter(e=>!u.has(e.name)&&!d.has(e.name)),...a.tools]},{reservedToolNames:[WORKFLOW_TOOL_NAME,...c.has(LOAD_SKILL_TOOL_NAME)||u.has(LOAD_SKILL_TOOL_NAME)?[]:[LOAD_SKILL_TOOL_NAME]]}),p=new Set(a.channels.map(e=>e.name)),m=getAllFrameworkChannelNames();for(let n of a.disabledFrameworkChannels)if(!m.has(n))throw new ResolveRuntimeAgentGraphError(`agent/channels/${n}.ts exports disableRoute() but "${n}" is not a framework channel. Rename the file to one of: ${[...m].sort().join(`, `)}.`,{nodeId:t,sourceId:e.sourceId});let h=new Set(a.disabledFrameworkChannels),g=[...getFrameworkChannelDefinitions().filter(e=>!p.has(e.name)&&!h.has(e.name)),...a.channels],_=createRuntimeSandboxRegistry({authoredSandbox:a.sandbox,workspaceResourceRoot:a.workspaceResourceRoot}),v=createRuntimeSubagentRegistry({persistentSessions:a.config?.experimental?.tasks===!0||a.config?.experimental?.subagentPersistentSessions===!0,reservedToolNames:[LOAD_SKILL_TOOL_NAME,...f.preparedTools.map(e=>e.name)],subagents:await resolveRuntimeSubagents({childNodeIdsByParentNodeId:e.childNodeIdsByParentNodeId,manifest:e.manifest,moduleMap:e.moduleMap,nodesByNodeId:e.nodesByNodeId,parentNodeId:e.nodeId,subagentNodesById:e.subagentNodesById})}),y={...a,dynamicToolResolvers:[...a.dynamicToolResolvers,...getFrameworkDynamicToolResolvers()]},b={agent:y,channels:g,hookRegistry:createRuntimeHookRegistry(y.hooks),nodeId:t,sandboxRegistry:_,sourceId:e.sourceId,subagentRegistry:v,toolRegistry:f,turnAgent:createResolvedRuntimeTurnAgent({agent:y,id:e.agentId,nodeId:t,tools:[...f.preparedTools,...v.preparedTools]})};return e.nodesByNodeId.set(t,b),b}async function resolveRuntimeSubagents(e){let t=[],n=e.childNodeIdsByParentNodeId.get(e.parentNodeId)??[];for(let r of n){let n=e.subagentNodesById.get(r);if(n===void 0)throw new ResolveRuntimeAgentGraphError(`Missing compiled subagent node "${r}" while resolving runtime subagents.`,{nodeId:toRuntimeNodeId(e.parentNodeId),sourceId:r});t.push(await resolveRuntimeSubagent({childNodeIdsByParentNodeId:e.childNodeIdsByParentNodeId,moduleMap:e.moduleMap,nodesByNodeId:e.nodesByNodeId,sourceRef:n,subagentNodesById:e.subagentNodesById}))}for(let n of e.manifest.remoteAgents)t.push(await resolveRuntimeRemoteAgent({moduleMap:e.moduleMap,nodeScopeId:e.parentNodeId,sourceRef:n}));return t}async function resolveRuntimeSubagent(e){let t={...e.sourceRef.configResolver===void 0?{description:e.sourceRef.description}:{dynamic:await resolveDynamicSubagentDefinition({definition:e.sourceRef.configResolver,moduleMap:e.moduleMap,nodeId:e.sourceRef.nodeId})},kind:`subagent`,logicalPath:e.sourceRef.logicalPath,name:e.sourceRef.name,nodeId:toRuntimeNodeId(e.sourceRef.nodeId),sourceId:e.sourceRef.sourceId,sourceKind:`module`};return await resolveRuntimeAgentNode({agentId:e.sourceRef.name,childNodeIdsByParentNodeId:e.childNodeIdsByParentNodeId,manifest:e.sourceRef.agent,moduleMap:e.moduleMap,nodeId:e.sourceRef.nodeId,nodesByNodeId:e.nodesByNodeId,sourceId:e.sourceRef.sourceId,subagentNodesById:e.subagentNodesById}),t}async function resolveRuntimeRemoteAgent(t){let n=expectObjectRecord(await loadResolvedModuleExport({definition:t.sourceRef,kindLabel:`remote agent`,moduleMap:t.moduleMap,nodeId:t.nodeScopeId}),`Expected remote agent source "${t.sourceRef.logicalPath}" to export an object.`),r={description:t.sourceRef.description,kind:`remote`,logicalPath:t.sourceRef.logicalPath,name:t.sourceRef.name,nodeId:toRuntimeNodeId(t.sourceRef.nodeId),outputSchema:t.sourceRef.outputSchema,path:t.sourceRef.path,sourceId:t.sourceRef.sourceId,sourceKind:`module`,url:await resolveRemoteAgentUrl({bakedUrl:t.sourceRef.url,logicalPath:t.sourceRef.logicalPath,resolvedUrl:n.url})};typeof n.auth==`function`&&(r.auth=n.auth),n.forwardPrincipal===!0&&(r.forwardPrincipal=!0);let i=resolveRemoteAgentHeaders(n.headers);return i!==void 0&&(r.headers=i),r}async function resolveRemoteAgentUrl(e){if(typeof e.resolvedUrl==`function`){let t=await e.resolvedUrl();if(typeof t!=`string`||t.length===0)throw Error(`Remote agent "${e.logicalPath}" url function must return a non-empty string.`);return t}let t=e.bakedUrl??(typeof e.resolvedUrl==`string`?e.resolvedUrl:``);if(t.length===0)throw Error(`Remote agent "${e.logicalPath}" is missing a url.`);return t}function resolveRemoteAgentHeaders(e){if(e===void 0)return;if(typeof e==`function`)return e;if(typeof e!=`object`||!e||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function attachInheritedSandboxWorkspaceResources(e){let t=new Map(e.manifest.subagentEdges.map(e=>[e.childNodeId,e.parentNodeId]));for(let[n,r]of e.nodesByNodeId){if(r.sandboxRegistry.sandbox.definition.inheritsParent!==!0)continue;if(r.agent.dynamicSkillResolvers.length>0)throw new ResolveRuntimeAgentGraphError(`Sandbox "${r.sandboxRegistry.sandbox.definition.logicalPath}" selects parent.sandbox but agent node "${n}" defines dynamic skills. Remove the child dynamic skills or give the child its own sandbox.`,{nodeId:n});let i=t.get(n);if(i===void 0)throw new ResolveRuntimeAgentGraphError(`Sandbox "${r.sandboxRegistry.sandbox.definition.logicalPath}" selects parent.sandbox but agent node "${n}" has no parent.`,{nodeId:n});let a=resolveSandboxOwnerNode({nodeId:i,nodesByNodeId:e.nodesByNodeId,parentNodeIdByChildNodeId:t});r.sandboxRegistry.sandbox.inheritance={definition:a.sandboxRegistry.sandbox.definition,nodeId:a.nodeId,workspaceResourceRoot:a.sandboxRegistry.sandbox.workspaceResourceRoot};let o=createWorkspacePromptSection(a.agent.workspaceSpec);o!==void 0&&(r.turnAgent.instructions=[...r.turnAgent.instructions,o])}}function resolveSandboxOwnerNode(e){let t=e.nodesByNodeId.get(toRuntimeNodeId(e.nodeId));if(t===void 0)throw new ResolveRuntimeAgentGraphError(`Missing parent runtime node "${e.nodeId}".`,{nodeId:e.nodeId});if(t.sandboxRegistry.sandbox.definition.inheritsParent!==!0)return t;let n=e.parentNodeIdByChildNodeId.get(e.nodeId);if(n===void 0)throw new ResolveRuntimeAgentGraphError(`Inherited sandbox node "${e.nodeId}" has no parent.`,{nodeId:e.nodeId});return resolveSandboxOwnerNode({...e,nodeId:n})}function createChildNodeIdsByParentNodeId(e){let t=new Map;for(let n of e.subagentEdges){let e=t.get(n.parentNodeId);if(e===void 0){t.set(n.parentNodeId,[n.childNodeId]);continue}e.push(n.childNodeId)}return t}function toRuntimeNodeId(e){return e===ROOT_COMPILED_AGENT_NODE_ID?ROOT_RUNTIME_AGENT_NODE_ID:e}export{resolveRuntimeAgentGraph};
1
+ import{expectObjectRecord}from"#internal/authored-module.js";import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{validateCompiledModuleMap}from"#compiler/validate-artifact.js";import{createRuntimeSubagentRegistry}from"#runtime/subagents/registry.js";import{LOAD_SKILL_TOOL_NAME}from"#runtime/skills/fragment-context.js";import{createRuntimeToolRegistry}from"#runtime/tools/registry.js";import{ROOT_RUNTIME_AGENT_NODE_ID}from"#runtime/graph.js";import{WORKFLOW_TOOL_NAME}from"#shared/workflow-sandbox.js";import{loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{createResolvedRuntimeTurnAgent}from"#runtime/agent/bootstrap.js";import{createWorkspacePromptSection}from"#runtime/workspace/spec.js";import{createRuntimeHookRegistry}from"#runtime/hooks/registry.js";import{resolveAgent}from"#runtime/resolve-agent.js";import{resolveDynamicSubagentDefinition}from"#runtime/resolve-dynamic-subagent.js";import{createRuntimeSandboxRegistry}from"#runtime/sandbox/registry.js";var ResolveRuntimeAgentGraphError=class extends Error{logicalPath;nodeId;sourceId;constructor(e,t={}){super(e),this.name=`ResolveRuntimeAgentGraphError`,t.logicalPath!==void 0&&(this.logicalPath=t.logicalPath),t.nodeId!==void 0&&(this.nodeId=t.nodeId),t.sourceId!==void 0&&(this.sourceId=t.sourceId)}};async function resolveRuntimeAgentGraph(e){validateCompiledModuleMap(e.manifest,e.moduleMap);let r=new Map,i=createChildNodeIdsByParentNodeId(e.manifest),a=new Map(e.manifest.subagents.map(e=>[e.nodeId,e])),o=await resolveRuntimeAgentNode({childNodeIdsByParentNodeId:i,manifest:e.manifest,moduleMap:e.moduleMap,nodeId:ROOT_COMPILED_AGENT_NODE_ID,nodesByNodeId:r,subagentNodesById:a});return attachInheritedSandboxWorkspaceResources({manifest:e.manifest,nodesByNodeId:r}),{nodesByNodeId:r,root:o}}async function resolveRuntimeAgentNode(e){let t=toRuntimeNodeId(e.nodeId);if(e.nodesByNodeId.has(t))throw new ResolveRuntimeAgentGraphError(`Found multiple runtime agent nodes for node id "${t}".`,{nodeId:t,sourceId:e.sourceId});let n=await resolveAgent({manifest:e.manifest,moduleMap:e.moduleMap,nodeId:e.nodeId}),o=await createRuntimeToolRegistry({tools:n.tools},{reservedToolNames:[WORKFLOW_TOOL_NAME]}),s=createRuntimeSandboxRegistry({sandbox:n.sandbox,workspaceResourceRoot:n.workspaceResourceRoot}),c=createRuntimeSubagentRegistry({reservedToolNames:[LOAD_SKILL_TOOL_NAME,...o.preparedTools.map(e=>e.name)],subagents:await resolveRuntimeSubagents({childNodeIdsByParentNodeId:e.childNodeIdsByParentNodeId,manifest:e.manifest,moduleMap:e.moduleMap,nodesByNodeId:e.nodesByNodeId,parentNodeId:e.nodeId,subagentNodesById:e.subagentNodesById})}),l={agent:n,channels:n.channels,hookRegistry:createRuntimeHookRegistry(n.hooks),nodeId:t,sandboxRegistry:s,sourceId:e.sourceId,subagentRegistry:c,toolRegistry:o,turnAgent:createResolvedRuntimeTurnAgent({agent:n,id:e.agentId,nodeId:t,tools:[...o.preparedTools,...c.preparedTools]})};return e.nodesByNodeId.set(t,l),l}async function resolveRuntimeSubagents(e){let t=[],n=e.childNodeIdsByParentNodeId.get(e.parentNodeId)??[];for(let r of n){let n=e.subagentNodesById.get(r);if(n===void 0)throw new ResolveRuntimeAgentGraphError(`Missing compiled subagent node "${r}" while resolving runtime subagents.`,{nodeId:toRuntimeNodeId(e.parentNodeId),sourceId:r});t.push(await resolveRuntimeSubagent({childNodeIdsByParentNodeId:e.childNodeIdsByParentNodeId,moduleMap:e.moduleMap,nodesByNodeId:e.nodesByNodeId,sourceRef:n,subagentNodesById:e.subagentNodesById}))}for(let n of e.manifest.remoteAgents)t.push(await resolveRuntimeRemoteAgent({moduleMap:e.moduleMap,nodeScopeId:e.parentNodeId,sourceRef:n}));return t}async function resolveRuntimeSubagent(e){let t={...e.sourceRef.configResolver===void 0?{description:e.sourceRef.description}:{dynamic:await resolveDynamicSubagentDefinition({definition:e.sourceRef.configResolver,moduleMap:e.moduleMap,nodeId:e.sourceRef.nodeId})},kind:`subagent`,logicalPath:e.sourceRef.logicalPath,name:e.sourceRef.name,nodeId:toRuntimeNodeId(e.sourceRef.nodeId),sourceId:e.sourceRef.sourceId,sourceKind:`module`};return await resolveRuntimeAgentNode({agentId:e.sourceRef.name,childNodeIdsByParentNodeId:e.childNodeIdsByParentNodeId,manifest:e.sourceRef.agent,moduleMap:e.moduleMap,nodeId:e.sourceRef.nodeId,nodesByNodeId:e.nodesByNodeId,sourceId:e.sourceRef.sourceId,subagentNodesById:e.subagentNodesById}),t}async function resolveRuntimeRemoteAgent(t){let n=expectObjectRecord(await loadResolvedModuleExport({definition:t.sourceRef,kindLabel:`remote agent`,moduleMap:t.moduleMap,nodeId:t.nodeScopeId}),`Expected remote agent source "${t.sourceRef.logicalPath}" to export an object.`),r={description:t.sourceRef.description,kind:`remote`,logicalPath:t.sourceRef.logicalPath,name:t.sourceRef.name,nodeId:toRuntimeNodeId(t.sourceRef.nodeId),outputSchema:t.sourceRef.outputSchema,path:t.sourceRef.path,sourceId:t.sourceRef.sourceId,sourceKind:`module`,url:await resolveRemoteAgentUrl({bakedUrl:t.sourceRef.url,logicalPath:t.sourceRef.logicalPath,resolvedUrl:n.url})};typeof n.auth==`function`&&(r.auth=n.auth),n.forwardPrincipal===!0&&(r.forwardPrincipal=!0);let i=resolveRemoteAgentHeaders(n.headers);return i!==void 0&&(r.headers=i),r}async function resolveRemoteAgentUrl(e){if(typeof e.resolvedUrl==`function`){let t=await e.resolvedUrl();if(typeof t!=`string`||t.length===0)throw Error(`Remote agent "${e.logicalPath}" url function must return a non-empty string.`);return t}let t=e.bakedUrl??(typeof e.resolvedUrl==`string`?e.resolvedUrl:``);if(t.length===0)throw Error(`Remote agent "${e.logicalPath}" is missing a url.`);return t}function resolveRemoteAgentHeaders(e){if(e===void 0)return;if(typeof e==`function`)return e;if(typeof e!=`object`||!e||Array.isArray(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return t}function attachInheritedSandboxWorkspaceResources(e){let t=new Map(e.manifest.subagents.map(e=>[e.nodeId,e.parentNodeId]));for(let[n,r]of e.nodesByNodeId){if(r.sandboxRegistry.sandbox.definition.inheritsParent!==!0)continue;if(r.agent.dynamicSkillResolvers.length>0)throw new ResolveRuntimeAgentGraphError(`Sandbox "${r.sandboxRegistry.sandbox.definition.logicalPath}" selects parent.sandbox but agent node "${n}" defines dynamic skills. Remove the child dynamic skills or give the child its own sandbox.`,{nodeId:n});let i=t.get(n);if(i===void 0)throw new ResolveRuntimeAgentGraphError(`Sandbox "${r.sandboxRegistry.sandbox.definition.logicalPath}" selects parent.sandbox but agent node "${n}" has no parent.`,{nodeId:n});let a=resolveSandboxOwnerNode({nodeId:i,nodesByNodeId:e.nodesByNodeId,parentNodeIdByChildNodeId:t});r.sandboxRegistry.sandbox.inheritance={definition:a.sandboxRegistry.sandbox.definition,nodeId:a.nodeId,workspaceResourceRoot:a.sandboxRegistry.sandbox.workspaceResourceRoot};let o=createWorkspacePromptSection(a.agent.workspaceSpec);o!==void 0&&(r.turnAgent.instructions=[...r.turnAgent.instructions,o])}}function resolveSandboxOwnerNode(e){let t=e.nodesByNodeId.get(toRuntimeNodeId(e.nodeId));if(t===void 0)throw new ResolveRuntimeAgentGraphError(`Missing parent runtime node "${e.nodeId}".`,{nodeId:e.nodeId});if(t.sandboxRegistry.sandbox.definition.inheritsParent!==!0)return t;let n=e.parentNodeIdByChildNodeId.get(e.nodeId);if(n===void 0)throw new ResolveRuntimeAgentGraphError(`Inherited sandbox node "${e.nodeId}" has no parent.`,{nodeId:e.nodeId});return resolveSandboxOwnerNode({...e,nodeId:n})}function createChildNodeIdsByParentNodeId(e){let t=new Map;for(let n of e.subagents){let e=t.get(n.parentNodeId);if(e===void 0){t.set(n.parentNodeId,[n.nodeId]);continue}e.push(n.nodeId)}return t}function toRuntimeNodeId(e){return e===ROOT_COMPILED_AGENT_NODE_ID?ROOT_RUNTIME_AGENT_NODE_ID:e}export{resolveRuntimeAgentGraph};
@@ -1 +1 @@
1
- import{ResolveAgentError,createResolvedModuleSourceRef}from"#runtime/resolve-helpers.js";import{resolveDynamicToolDefinition}from"#runtime/resolve-dynamic-tool.js";import{resolveChannelDefinition}from"#runtime/resolve-channel.js";import{resolveConnectionDefinition}from"#runtime/resolve-connection.js";import{resolveHookDefinition}from"#runtime/resolve-hook.js";import{resolveSandboxDefinition}from"#runtime/resolve-sandbox.js";import{resolveDynamicInstructionsDefinition}from"#runtime/resolve-dynamic-instructions.js";import{resolveDynamicSkillDefinition}from"#runtime/resolve-dynamic-skill.js";import{resolveToolDefinition}from"#runtime/resolve-tool.js";async function resolveAgent(e){let t=e.manifest.skills.map(e=>({...e,metadata:e.metadata===void 0?void 0:{...e.metadata}})),i=[],a=[];for(let t of e.manifest.channels){if(t.kind===`disabled`){a.push(t.name);continue}i.push(await resolveChannelDefinition(t,e.moduleMap,e.nodeId))}let o=await Promise.all(e.manifest.tools.map(t=>resolveToolDefinition(t,e.moduleMap,e.nodeId))),s=await Promise.all((e.manifest.dynamicInstructions??[]).map(t=>resolveDynamicInstructionsDefinition(t,e.moduleMap,e.nodeId))),c=await Promise.all((e.manifest.dynamicSkills??[]).map(t=>resolveDynamicSkillDefinition(t,e.moduleMap,e.nodeId))),l=await Promise.all(e.manifest.dynamicTools.map(t=>resolveDynamicToolDefinition(t,e.moduleMap,e.nodeId))),u=await Promise.all(e.manifest.hooks.map(t=>resolveHookDefinition(t,e.moduleMap,e.nodeId))),d=await Promise.all(e.manifest.connections.map(t=>resolveConnectionDefinition(t,e.moduleMap,e.nodeId))),f=e.manifest.sandbox===null?null:await resolveSandboxDefinition(e.manifest.sandbox,e.moduleMap,e.nodeId),p=e.manifest.instructions.map(createResolvedInstructionsDefinition),m=e.manifest.workspaceResourceRoot,h={channels:i,connections:d,disabledFrameworkChannels:a,disabledFrameworkTools:[...e.manifest.disabledFrameworkTools],workflowTool:e.manifest.workflowTool===void 0?void 0:{maxSubagents:e.manifest.workflowTool.maxSubagents},webSearchProvider:e.manifest.webSearchProvider,dynamicInstructionsResolvers:s,dynamicSkillResolvers:c,dynamicToolResolvers:l,hooks:u,instructions:p,metadata:{agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,diagnosticsSummary:e.manifest.diagnosticsSummary},sandbox:f,workspaceResourceRoot:m,skills:t,tools:o,workspaceSpec:{rootEntries:[...m.rootEntries]}};return`config`in e.manifest?{...h,config:createResolvedAgentConfig(e.manifest)}:h}function createResolvedInstructionsDefinition(e){return{content:e.content,name:e.name,logicalPath:e.logicalPath,role:e.role,sourceId:e.sourceId,sourceKind:e.sourceKind}}function createResolvedAgentConfig(e){let n={name:e.config.name};if(e.config.compaction!==void 0){let t={};e.config.compaction.model!==void 0&&(t.model=e.config.compaction.model.source===void 0?{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,maxOutputTokens:e.config.compaction.model.maxOutputTokens,providerOptions:e.config.compaction.model.providerOptions}:{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,maxOutputTokens:e.config.compaction.model.maxOutputTokens,providerOptions:e.config.compaction.model.providerOptions,source:{exportName:e.config.compaction.model.source.exportName,sourceKind:`module`,logicalPath:e.config.compaction.model.source.logicalPath,sourceId:e.config.compaction.model.source.sourceId}}),e.config.compaction.thresholdPercent!==void 0&&(t.thresholdPercent=e.config.compaction.thresholdPercent),n.compaction=t}if(e.config.experimental!==void 0&&(n.experimental={instrumentationProviders:e.config.experimental.instrumentationProviders,subagentPersistentSessions:e.config.experimental.subagentPersistentSessions,tasks:e.config.experimental.tasks,workflow:e.config.experimental.workflow===void 0?void 0:{world:e.config.experimental.workflow.world}}),e.config.outputSchema!==void 0&&(n.outputSchema=e.config.outputSchema),e.config.reasoning!==void 0&&(n.reasoning=e.config.reasoning),e.config.source!==void 0&&(n.source=createResolvedModuleSourceRef(e.config.source)),e.config.limits!==void 0&&(n.limits={maxInputTokensPerSession:e.config.limits.maxInputTokensPerSession,maxOutputTokensPerSession:e.config.limits.maxOutputTokensPerSession,sessionTimeoutMs:e.config.limits.sessionTimeoutMs}),e.config.dynamicModel!==void 0)return{...n,dynamicModel:{...createResolvedModuleSourceRef(e.config.dynamicModel),eventNames:[...e.config.dynamicModel.eventNames]}};let r=e.config.model;return{...n,model:r.source===void 0?{id:r.id,contextWindowTokens:r.contextWindowTokens,maxOutputTokens:r.maxOutputTokens,providerOptions:r.providerOptions}:{contextWindowTokens:r.contextWindowTokens,id:r.id,maxOutputTokens:r.maxOutputTokens,providerOptions:r.providerOptions,source:{exportName:r.source.exportName,sourceKind:`module`,logicalPath:r.source.logicalPath,sourceId:r.source.sourceId}}}}export{ResolveAgentError,resolveAgent};
1
+ import{ResolveAgentError,createResolvedModuleSourceRef}from"#runtime/resolve-helpers.js";import{resolveChannelDefinition}from"#runtime/resolve-channel.js";import{resolveConnectionDefinition}from"#runtime/resolve-connection.js";import{resolveHookDefinition}from"#runtime/resolve-hook.js";import{resolveSandboxDefinition}from"#runtime/resolve-sandbox.js";import{resolveDynamicInstructionsDefinition}from"#runtime/resolve-dynamic-instructions.js";import{resolveDynamicSkillDefinition}from"#runtime/resolve-dynamic-skill.js";import{resolveDynamicToolDefinition}from"#runtime/resolve-dynamic-tool.js";import{resolveToolDefinition}from"#runtime/resolve-tool.js";import{resolveMemoryDefinition}from"#runtime/resolve-memory.js";async function resolveAgent(e){let t=e.manifest.skills.map(t=>({...t,owner:requireCompiledSourceOwner(e.manifest,t),metadata:t.metadata===void 0?void 0:{...t.metadata}})),i=await Promise.all(e.manifest.channelRoutes.effective.map(t=>resolveChannelDefinition(t,e.moduleMap,e.nodeId))),a=await Promise.all(e.manifest.tools.map(t=>resolveToolDefinition(t,e.moduleMap,e.nodeId,requireBindingOwner(e.manifest,t.sourceId)))),o=await Promise.all((e.manifest.dynamicInstructions??[]).map(t=>resolveDynamicInstructionsDefinition(t,e.moduleMap,e.nodeId))),s=await Promise.all((e.manifest.dynamicSkills??[]).map(t=>resolveDynamicSkillDefinition(t,e.moduleMap,e.nodeId))),c=await Promise.all(e.manifest.dynamicTools.map(t=>resolveDynamicToolDefinition(t,e.moduleMap,e.nodeId))),l=await Promise.all(e.manifest.hooks.map(t=>resolveHookDefinition(t,e.moduleMap,e.nodeId))),u=await Promise.all(e.manifest.connections.map(t=>resolveConnectionDefinition(t,e.moduleMap,e.nodeId))),d=await Promise.all(e.manifest.memories.map(t=>resolveMemoryDefinition(t,e.moduleMap,e.nodeId))),f=await resolveSandboxDefinition(e.manifest.sandbox,e.moduleMap,e.nodeId),p=e.manifest.instructions.map(t=>createResolvedInstructionsDefinition(e.manifest,t)),m=e.manifest.workspaceResourceRoot,h={channels:i,connections:u,workflowTool:e.manifest.workflowTool===void 0?void 0:{maxSubagents:e.manifest.workflowTool.maxSubagents},webSearchProvider:e.manifest.webSearchProvider,dynamicInstructionsResolvers:o,dynamicSkillResolvers:s,dynamicToolResolvers:c,hooks:l,instructions:p,metadata:{agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,diagnosticsSummary:e.manifest.diagnosticsSummary},memories:d,sandbox:f,workspaceResourceRoot:m,skills:t,tools:a,workspaceSpec:{rootEntries:[...m.rootEntries]}};return`config`in e.manifest?{...h,config:createResolvedAgentConfig(e.manifest)}:h}function requireBindingOwner(e,t){let n=e.bindings[t];if(n===void 0)throw Error(`Compiled source "${t}" has no binding.`);return n.owner}function createResolvedInstructionsDefinition(e,t){return{content:t.content,name:t.name,owner:requireCompiledSourceOwner(e,t),logicalPath:t.logicalPath,role:t.role,sourceId:t.sourceId,sourceKind:t.sourceKind}}function requireCompiledSourceOwner(e,t){let n=e.bindings[t.sourceId]?.owner??t.owner;if(n===void 0)throw Error(`Compiled source "${t.sourceId}" has no owner.`);return n}function createResolvedAgentConfig(e){let n={name:e.config.name};if(e.config.compaction!==void 0){let t={};e.config.compaction.model!==void 0&&(t.model=e.config.compaction.model.source===void 0?{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,maxOutputTokens:e.config.compaction.model.maxOutputTokens,providerOptions:e.config.compaction.model.providerOptions}:{contextWindowTokens:e.config.compaction.model.contextWindowTokens,id:e.config.compaction.model.id,maxOutputTokens:e.config.compaction.model.maxOutputTokens,providerOptions:e.config.compaction.model.providerOptions,source:{exportName:e.config.compaction.model.source.exportName,sourceKind:`module`,logicalPath:e.config.compaction.model.source.logicalPath,sourceId:e.config.compaction.model.source.sourceId}}),e.config.compaction.thresholdPercent!==void 0&&(t.thresholdPercent=e.config.compaction.thresholdPercent),n.compaction=t}if(e.config.experimental!==void 0&&(n.experimental={instrumentationProviders:e.config.experimental.instrumentationProviders,tasks:e.config.experimental.tasks,workflow:e.config.experimental.workflow===void 0?void 0:{world:e.config.experimental.workflow.world}}),e.config.outputSchema!==void 0&&(n.outputSchema=e.config.outputSchema),e.config.reasoning!==void 0&&(n.reasoning=e.config.reasoning),e.config.source!==void 0&&(n.source=createResolvedModuleSourceRef(e.config.source)),e.config.limits!==void 0&&(n.limits={maxInputTokensPerSession:e.config.limits.maxInputTokensPerSession,maxOutputTokensPerSession:e.config.limits.maxOutputTokensPerSession,sessionTimeoutMs:e.config.limits.sessionTimeoutMs}),e.config.dynamicModel!==void 0)return{...n,dynamicModel:{...createResolvedModuleSourceRef(e.config.dynamicModel),eventNames:[...e.config.dynamicModel.eventNames]}};let r=e.config.model;return{...n,model:r.source===void 0?{id:r.id,contextWindowTokens:r.contextWindowTokens,maxOutputTokens:r.maxOutputTokens,providerOptions:r.providerOptions}:{contextWindowTokens:r.contextWindowTokens,id:r.id,maxOutputTokens:r.maxOutputTokens,providerOptions:r.providerOptions,source:{exportName:r.source.exportName,sourceKind:`module`,logicalPath:r.source.logicalPath,sourceId:r.source.sourceId}}}}export{ResolveAgentError,resolveAgent};
@@ -1 +1 @@
1
- import{expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{normalizeAuthorizationSpec}from"#runtime/connections/validate-authorization.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{registerDefinitionSource,stampDefinitionKey}from"#public/tool-result-narrowing.js";async function resolveConnectionDefinition(t,n,r){try{let i=expectObjectRecord(await loadResolvedModuleExport({definition:t,kindLabel:`connection`,moduleMap:n,nodeId:r}),`Expected the connection export "${t.exportName??`default`}" from "${t.logicalPath}" to return an object.`),a={kind:`connection`,logicalPath:t.logicalPath,name:t.connectionName},o=`connection-source:${t.sourceId}`;stampDefinitionKey(i,o),registerDefinitionSource(o,a),registerDefinitionSource(`connection:${t.url}`,a);let s=i.auth!==void 0,c=i.headers!==void 0,l=t.protocol===`openapi`?i.operations:i.tools,u={connectionName:t.connectionName,description:t.description,exportName:t.exportName,logicalPath:t.logicalPath,protocol:t.protocol,sourceId:t.sourceId,sourceKind:`module`,url:t.url};if(s)if(typeof i.auth==`function`)u.authorization=i.auth;else try{u.authorization=normalizeAuthorizationSpec(i.auth,`Connection "${t.connectionName}" at "${t.logicalPath}":`)}catch(e){throw new ResolveAgentError(toErrorMessage(e),{logicalPath:t.logicalPath,sourceId:t.sourceId})}return c&&(u.headers=i.headers),i.toolCall!==void 0&&(u.toolCall=i.toolCall),l!==void 0&&(u.tools=l),t.protocol===`openapi`&&i.spec!==void 0&&(u.spec=i.spec),typeof i.approval==`function`&&(u.approval=i.approval),u}catch(e){throw e instanceof ResolveAgentError?e:new ResolveAgentError(`Failed to resolve connection "${t.connectionName}" from "${t.logicalPath}": ${toErrorMessage(e)}`,{logicalPath:t.logicalPath,sourceId:t.sourceId})}}export{resolveConnectionDefinition};
1
+ import{expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{registerDefinitionSource,stampDefinitionKey}from"#internal/authored-definition/source-identity.js";import{normalizeAuthorizationSpec}from"#shared/validate-authorization.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";async function resolveConnectionDefinition(t,n,r){try{let i=expectObjectRecord(await loadResolvedModuleExport({definition:t,kindLabel:`connection`,moduleMap:n,nodeId:r}),`Expected the connection export "${t.exportName??`default`}" from "${t.logicalPath}" to return an object.`),a={kind:`connection`,logicalPath:t.logicalPath,name:t.connectionName},o=`connection-source:${t.sourceId}`;stampDefinitionKey(i,o),registerDefinitionSource(o,a),registerDefinitionSource(`connection:${t.url}`,a);let s=i.auth!==void 0,c=i.headers!==void 0,l=t.protocol===`openapi`?i.operations:i.tools,u={connectionName:t.connectionName,description:t.description,exportName:t.exportName,logicalPath:t.logicalPath,protocol:t.protocol,sourceId:t.sourceId,sourceKind:`module`,url:t.url};if(s)if(typeof i.auth==`function`)u.authorization=i.auth;else try{u.authorization=normalizeAuthorizationSpec(i.auth,`Connection "${t.connectionName}" at "${t.logicalPath}":`)}catch(e){throw new ResolveAgentError(toErrorMessage(e),{logicalPath:t.logicalPath,sourceId:t.sourceId})}return c&&(u.headers=i.headers),i.toolCall!==void 0&&(u.toolCall=i.toolCall),l!==void 0&&(u.tools=l),t.protocol===`openapi`&&i.spec!==void 0&&(u.spec=i.spec),typeof i.approval==`function`&&(u.approval=i.approval),u}catch(e){throw e instanceof ResolveAgentError?e:new ResolveAgentError(`Failed to resolve connection "${t.connectionName}" from "${t.logicalPath}": ${toErrorMessage(e)}`,{logicalPath:t.logicalPath,sourceId:t.sourceId})}}export{resolveConnectionDefinition};
@@ -5,6 +5,7 @@ import type { ResolvedDynamicToolResolver } from "#runtime/types.js";
5
5
  type DynamicToolResolverSource = Readonly<ModuleSourceRef & {
6
6
  readonly extensionNamespace?: string;
7
7
  readonly slug: string;
8
+ readonly rebindMissingCallbacks?: boolean;
8
9
  }>;
9
10
  /**
10
11
  * Resolves one compiled dynamic tool entry into a runtime-owned resolver
@@ -1 +1 @@
1
- import{expectFunction,expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{isDynamicSentinel}from"#shared/dynamic-tool-definition.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{registerDefinitionSource,stampDefinitionKey}from"#public/tool-result-narrowing.js";async function resolveDynamicToolDefinition(e,t,r){try{return resolveLoadedDynamicToolDefinition(await loadResolvedModuleExport({definition:e,kindLabel:`dynamic-tool`,moduleMap:t,nodeId:r}),e,e.eventNames)}catch(t){throw t instanceof ResolveAgentError?t:new ResolveAgentError(`Failed to resolve dynamic tool from "${e.logicalPath}": ${toErrorMessage(t)}`,{logicalPath:e.logicalPath,sourceId:e.sourceId})}}function resolveLoadedDynamicToolDefinition(e,t,n){let r=expectDynamicToolValue(e,t);return createResolvedDynamicToolResolver(r,t,n??Object.keys(r.events))}function createResolvedDynamicToolResolver(t,n,r){let i={};for(let a of r)i[a]=expectFunction(t.events[a],describe(n,`to provide a handler for event "${a}"`));let a=`dynamic-tool-source:${n.sourceId}`;return stampDefinitionKey(t,a),registerDefinitionSource(a,{kind:`tool`,logicalPath:n.logicalPath,name:n.slug}),{eventNames:[...r],events:i,exportName:n.exportName,extensionNamespace:n.extensionNamespace,logicalPath:n.logicalPath,slug:n.slug,sourceId:n.sourceId,sourceKind:`module`}}function expectDynamicToolValue(e,n){let i=expectObjectRecord(e,describe(n,`to return an object`));if(!isDynamicSentinel(i))throw Error(describe(n,`to be created by defineDynamic()`));return expectObjectRecord(i.events,describe(n,`to provide an events object`)),i}function describe(e,t){return`Expected the dynamic tool export "${e.exportName??`default`}" from "${e.logicalPath}" ${t}.`}export{resolveDynamicToolDefinition,resolveLoadedDynamicToolDefinition};
1
+ import{expectFunction,expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{isDynamicSentinel}from"#dynamic/definition.js";import{registerDefinitionSource,stampDefinitionKey}from"#internal/authored-definition/source-identity.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";async function resolveDynamicToolDefinition(e,t,r){try{return resolveLoadedDynamicToolDefinition(await loadResolvedModuleExport({definition:e,kindLabel:`dynamic-tool`,moduleMap:t,nodeId:r}),e,e.eventNames)}catch(t){throw t instanceof ResolveAgentError?t:new ResolveAgentError(`Failed to resolve dynamic tool from "${e.logicalPath}": ${toErrorMessage(t)}`,{logicalPath:e.logicalPath,sourceId:e.sourceId})}}function resolveLoadedDynamicToolDefinition(e,t,n){let r=expectDynamicToolValue(e,t);return createResolvedDynamicToolResolver(r,t,n??Object.keys(r.events))}function createResolvedDynamicToolResolver(t,n,r){let a={};for(let i of r)a[i]=expectFunction(t.events[i],describe(n,`to provide a handler for event "${i}"`));let o=`dynamic-tool-source:${n.sourceId}`;return stampDefinitionKey(t,o),registerDefinitionSource(o,{kind:`tool`,logicalPath:n.logicalPath,name:n.slug}),{eventNames:[...r],events:a,exportName:n.exportName,extensionNamespace:n.extensionNamespace,logicalPath:n.logicalPath,rebindMissingCallbacks:n.rebindMissingCallbacks,slug:n.slug,sourceId:n.sourceId,sourceKind:`module`}}function expectDynamicToolValue(e,n){let i=expectObjectRecord(e,describe(n,`to return an object`));if(!isDynamicSentinel(i))throw Error(describe(n,`to be created by defineDynamic()`));return expectObjectRecord(i.events,describe(n,`to provide an events object`)),i}function describe(e,t){return`Expected the dynamic tool export "${e.exportName??`default`}" from "${e.logicalPath}" ${t}.`}export{resolveDynamicToolDefinition,resolveLoadedDynamicToolDefinition};
@@ -0,0 +1,4 @@
1
+ import type { CompiledMemoryDefinition } from "#compiler/manifest.js";
2
+ import type { CompiledModuleMap } from "#compiler/module-map.js";
3
+ import type { ResolvedMemoryDefinition } from "#runtime/types.js";
4
+ export declare function resolveMemoryDefinition(compiled: CompiledMemoryDefinition, moduleMap: CompiledModuleMap, nodeId: string | undefined): Promise<ResolvedMemoryDefinition>;
@@ -0,0 +1 @@
1
+ import{toErrorMessage}from"#shared/errors.js";import{normalizeMemoryDefinition}from"#internal/authored-definition/memory.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";async function resolveMemoryDefinition(t,n,r){try{return{...normalizeMemoryDefinition(await loadResolvedModuleExport({definition:t,kindLabel:`memory`,moduleMap:n,nodeId:r}),`Expected the memory export "${t.exportName??`default`}" from "${t.logicalPath}" to be created with defineMemory().`),description:t.description,exportName:t.exportName,logicalPath:t.logicalPath,slot:t.slot,sourceId:t.sourceId,sourceKind:`module`,visibility:t.visibility}}catch(e){throw e instanceof ResolveAgentError?e:new ResolveAgentError(`Failed to resolve memory from "${t.logicalPath}": ${toErrorMessage(e)}`,{logicalPath:t.logicalPath,sourceId:t.sourceId})}}export{resolveMemoryDefinition};
@@ -1,6 +1,7 @@
1
1
  import type { CompiledToolDefinition } from "#compiler/manifest.js";
2
2
  import type { CompiledModuleMap } from "#compiler/module-map.js";
3
3
  import type { ResolvedToolDefinition } from "#runtime/types.js";
4
+ import type { AgentSourceOwner } from "#compiler/source-graph.js";
4
5
  /**
5
6
  * Resolves one compiled authored tool into a runtime-owned definition
6
7
  * with live callbacks reattached from the authored module.
@@ -10,4 +11,4 @@ import type { ResolvedToolDefinition } from "#runtime/types.js";
10
11
  * otherwise rehydrated into live validators. Optional hooks are reattached
11
12
  * from the live module export.
12
13
  */
13
- export declare function resolveToolDefinition(definition: CompiledToolDefinition, moduleMap: CompiledModuleMap, nodeId: string | undefined): Promise<ResolvedToolDefinition>;
14
+ export declare function resolveToolDefinition(definition: CompiledToolDefinition, moduleMap: CompiledModuleMap, nodeId: string | undefined, owner: AgentSourceOwner): Promise<ResolvedToolDefinition>;
@@ -1 +1 @@
1
- import{expectFunction,expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{isToolSchema,toInputSchema,toOutputSchema}from"#shared/tool-schema.js";import{normalizeApproval}from"#internal/authored-definition/approval.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{registerDefinitionSource,stampDefinitionKey}from"#public/tool-result-narrowing.js";async function resolveToolDefinition(i,o,s){try{let n=expectObjectRecord(await loadResolvedModuleExport({definition:i,kindLabel:`tool`,moduleMap:o,nodeId:s}),describe(i,`to return an object`)),a={kind:`tool`,logicalPath:i.logicalPath,name:i.name},c=`tool-source:${i.sourceId}`;stampDefinitionKey(n,c),registerDefinitionSource(c,a),registerDefinitionSource(`tool:${n.description}`,a);let l=expectFunction(n.execute,describe(i,`to provide an execute function`)),u=isToolSchema(n.inputSchema)?n.inputSchema:toInputSchema(i.inputSchema),d=isToolSchema(n.outputSchema)?n.outputSchema:toOutputSchema(i.outputSchema);return{description:i.description,execute:l,execution:i.execution,exportName:i.exportName,inputSchema:u,logicalPath:i.logicalPath,name:i.name,outputSchema:d,sourceId:i.sourceId,sourceKind:`module`,...extractOptionalHooks(n,i)}}catch(e){throw e instanceof ResolveAgentError?e:new ResolveAgentError(`Failed to attach the tool execute function from "${i.logicalPath}": ${toErrorMessage(e)}`,{logicalPath:i.logicalPath,sourceId:i.sourceId})}}function extractOptionalHooks(t,n){let r={};return t.approval!==void 0&&(r.approval=normalizeApproval(t.approval,describe(n,`to provide a valid approval definition`))),t.toModelOutput!==void 0&&(r.toModelOutput=expectFunction(t.toModelOutput,describe(n,`to provide a toModelOutput function`))),r}function describe(e,t){return`Expected the tool export "${e.exportName??`default`}" from "${e.logicalPath}" ${t}.`}export{resolveToolDefinition};
1
+ import{expectFunction,expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{isToolSchema,toInputSchema,toOutputSchema}from"#tools/schema.js";import{registerDefinitionSource,stampDefinitionKey}from"#internal/authored-definition/source-identity.js";import{normalizeApproval}from"#internal/authored-definition/approval.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";async function resolveToolDefinition(i,o,s,c){if(!i.hasExecute)return{description:i.description,inputSchema:toInputSchema(i.inputSchema),logicalPath:i.logicalPath,name:i.name,outputSchema:toOutputSchema(i.outputSchema),owner:c,sourceId:i.sourceId,sourceKind:`module`};try{let n=expectObjectRecord(await loadResolvedModuleExport({definition:i,kindLabel:`tool`,moduleMap:o,nodeId:s}),describe(i,`to return an object`)),a={kind:`tool`,logicalPath:i.logicalPath,name:i.name,owner:c},l=`tool-source:${i.sourceId}`;stampDefinitionKey(n,l),registerDefinitionSource(l,a),registerDefinitionSource(`tool:${n.description}`,a);let u=expectFunction(n.execute,describe(i,`to provide an execute function`)),d=isToolSchema(n.inputSchema)?n.inputSchema:toInputSchema(i.inputSchema),f=isToolSchema(n.outputSchema)?n.outputSchema:toOutputSchema(i.outputSchema);return{description:i.description,execute:u,execution:i.execution,exportName:i.exportName,inputSchema:d,logicalPath:i.logicalPath,name:i.name,owner:c,outputSchema:f,sourceId:i.sourceId,sourceKind:`module`,...extractOptionalHooks(n,i)}}catch(e){throw e instanceof ResolveAgentError?e:new ResolveAgentError(`Failed to attach the tool execute function from "${i.logicalPath}": ${toErrorMessage(e)}`,{logicalPath:i.logicalPath,sourceId:i.sourceId})}}function extractOptionalHooks(t,n){let r={};return t.approval!==void 0&&(r.approval=normalizeApproval(t.approval,describe(n,`to provide a valid approval definition`))),t.toModelOutput!==void 0&&(r.toModelOutput=expectFunction(t.toModelOutput,describe(n,`to provide a toModelOutput function`))),r}function describe(e,t){return`Expected the tool export "${e.exportName??`default`}" from "${e.logicalPath}" ${t}.`}export{resolveToolDefinition};
@@ -1 +1 @@
1
- import{createHash}from"node:crypto";import{realpath}from"node:fs/promises";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{resolveVercelProjectIdFromEnvironment}from"#shared/vercel-project.js";import{getRuntimeCompiledArtifactsCacheKey,getRuntimeCompiledArtifactsSandboxAppRoot}from"#runtime/compiled-artifacts-source.js";import{loadCompileMetadata}from"#runtime/loaders/compile-metadata.js";async function createRuntimeSandboxKeys(e){let t=await deriveRuntimeSandboxKeyParts(e);return{sessionKey:buildRuntimeSandboxSessionKey(e,t),templateKey:buildRuntimeSandboxTemplateKey(e,t)}}async function createRuntimeSandboxTemplateKey(e){return buildRuntimeSandboxTemplateKey(e,await deriveRuntimeSandboxKeyParts(e))}async function deriveRuntimeSandboxKeyParts(e){let t=await loadCompileMetadataForKeys(e.compiledArtifactsSource);return{metadata:t,scope:await resolveRuntimeSandboxScope(e),versionHash:e.templatePlan.kind===`none`?null:resolveRuntimeSandboxVersionHash({compiledArtifactsSource:e.compiledArtifactsSource,metadata:t,nodeId:e.nodeId,sourceId:e.sourceId,templatePlan:e.templatePlan})}}function buildRuntimeSandboxTemplateKey(e,t){if(t.versionHash===null)return null;let n=createStableHash(`${resolvePackageVersionForTemplateKey(t.metadata)}:7:${t.versionHash}`).slice(0,20);return sanitizeRuntimeSandboxKey(`eve-sbx-tpl-${e.backendName}-${t.scope}-${n}`)}function buildRuntimeSandboxSessionKey(e,t){let n=createStableHash(`7:${t.versionHash??`none`}`).slice(0,12),r=sanitizeRuntimeSandboxKey(e.nodeId);return sanitizeRuntimeSandboxKey(`eve-sbx-ses-${e.backendName}-${t.scope}-${n}-${e.sessionId}-${r}`)}function resolvePackageVersionForTemplateKey(e){return e?.generator.version??resolveInstalledPackageInfo().version}async function loadCompileMetadataForKeys(e){try{return await loadCompileMetadata({compiledArtifactsSource:e})}catch{return null}}async function resolveRuntimeSandboxScope(e){if(e.backendName===`vercel`){let e=resolveVercelProjectIdFromEnvironment();if(e!==void 0)return createStableHash(`vercel-project:${e}`).slice(0,16)}let n=getRuntimeCompiledArtifactsSandboxAppRoot(e.compiledArtifactsSource);return n===void 0?createStableHash(getRuntimeCompiledArtifactsCacheKey(e.compiledArtifactsSource)).slice(0,16):createStableHash(await realpath(n)).slice(0,16)}function resolveRuntimeSandboxVersionHash(e){let t=e.templatePlan.contentHash??resolveSourceGraphHash(e.metadata,e.compiledArtifactsSource);return e.templatePlan.kind===`bootstrap`?createStableHash(`bootstrap:${e.templatePlan.revalidationKey??``}:${e.templatePlan.sourceHash}:${t}:${e.nodeId}:${e.sourceId}`):createStableHash(`workspace-content:${t}:${e.nodeId}:${e.sourceId}`)}function resolveSourceGraphHash(e,t){return e?.discovery.sourceGraphHash??getRuntimeCompiledArtifactsCacheKey(t)}function createStableHash(t){return createHash(`sha256`).update(t).digest(`hex`)}function sanitizeRuntimeSandboxKey(e){return e.replaceAll(/[^a-zA-Z0-9._-]+/g,`-`).slice(0,120)}export{createRuntimeSandboxKeys,createRuntimeSandboxTemplateKey};
1
+ import{createHash}from"node:crypto";import{realpath}from"node:fs/promises";import{resolveVercelProjectIdFromEnvironment}from"#shared/vercel-project.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{getRuntimeCompiledArtifactsCacheKey,getRuntimeCompiledArtifactsSandboxAppRoot}from"#runtime/compiled-artifacts-source.js";import{loadCompileMetadata}from"#runtime/loaders/compile-metadata.js";async function createRuntimeSandboxKeys(e){let t=await deriveRuntimeSandboxKeyParts(e);return{sessionKey:buildRuntimeSandboxSessionKey(e,t),templateKey:buildRuntimeSandboxTemplateKey(e,t)}}async function createRuntimeSandboxTemplateKey(e){return buildRuntimeSandboxTemplateKey(e,await deriveRuntimeSandboxKeyParts(e))}async function deriveRuntimeSandboxKeyParts(e){let t=await loadCompileMetadataForKeys(e.compiledArtifactsSource);return{metadata:t,scope:await resolveRuntimeSandboxScope(e),versionHash:e.templatePlan.kind===`none`?null:resolveRuntimeSandboxVersionHash({compiledArtifactsSource:e.compiledArtifactsSource,metadata:t,nodeId:e.nodeId,sourceId:e.sourceId,templatePlan:e.templatePlan})}}function buildRuntimeSandboxTemplateKey(e,t){if(t.versionHash===null)return null;let n=createStableHash(`${resolvePackageVersionForTemplateKey(t.metadata)}:7:${t.versionHash}`).slice(0,20);return sanitizeRuntimeSandboxKey(`eve-sbx-tpl-${e.backendName}-${t.scope}-${n}`)}function buildRuntimeSandboxSessionKey(e,t){let n=createStableHash(`7:${t.versionHash??`none`}`).slice(0,12),r=sanitizeRuntimeSandboxKey(e.nodeId);return sanitizeRuntimeSandboxKey(`eve-sbx-ses-${e.backendName}-${t.scope}-${n}-${e.sessionId}-${r}`)}function resolvePackageVersionForTemplateKey(e){return e?.generator.version??resolveInstalledPackageInfo().version}async function loadCompileMetadataForKeys(e){try{return await loadCompileMetadata({compiledArtifactsSource:e})}catch{return null}}async function resolveRuntimeSandboxScope(e){if(e.backendName===`vercel`){let e=resolveVercelProjectIdFromEnvironment();if(e!==void 0)return createStableHash(`vercel-project:${e}`).slice(0,16)}let r=getRuntimeCompiledArtifactsSandboxAppRoot(e.compiledArtifactsSource);return r===void 0?createStableHash(getRuntimeCompiledArtifactsCacheKey(e.compiledArtifactsSource)).slice(0,16):createStableHash(await realpath(r)).slice(0,16)}function resolveRuntimeSandboxVersionHash(e){let t=e.templatePlan.contentHash??resolveSourceGraphHash(e.metadata,e.compiledArtifactsSource);return e.templatePlan.kind===`bootstrap`?createStableHash(`bootstrap:${e.templatePlan.revalidationKey??``}:${e.templatePlan.sourceHash}:${t}:${e.nodeId}:${e.sourceId}`):createStableHash(`workspace-content:${t}:${e.nodeId}:${e.sourceId}`)}function resolveSourceGraphHash(e,t){return e?.discovery.sourceGraphHash??getRuntimeCompiledArtifactsCacheKey(t)}function createStableHash(t){return createHash(`sha256`).update(t).digest(`hex`)}function sanitizeRuntimeSandboxKey(e){return e.replaceAll(/[^a-zA-Z0-9._-]+/g,`-`).slice(0,120)}export{createRuntimeSandboxKeys,createRuntimeSandboxTemplateKey};
@@ -7,7 +7,6 @@ import type { ResolvedSandboxDefinition } from "#runtime/types.js";
7
7
  * to distinguish the shared framework sandbox from per-node authored
8
8
  * overrides.
9
9
  */
10
- export declare const DEFAULT_SANDBOX_SOURCE_ID = "eve:default-sandbox";
11
10
  /**
12
11
  * Resolved sandbox tracked by the runtime-owned registry.
13
12
  *
@@ -36,32 +35,17 @@ export interface RuntimeRegisteredSandbox {
36
35
  * startup path.
37
36
  *
38
37
  * Every agent owns exactly one sandbox, so the registry is just a
39
- * single record. When the author provides a `sandbox.<ext>` (or
40
- * `sandbox/sandbox.<ext>`) override, that authored definition replaces
41
- * the framework default. Production always populates it; tests that
38
+ * single record populated from the selected compiled sandbox source.
39
+ * Production always populates it; tests that
42
40
  * need a `null` sandbox cast through `as RuntimeSandboxRegistry`.
43
41
  */
44
42
  export interface RuntimeSandboxRegistry {
45
43
  readonly sandbox: RuntimeRegisteredSandbox;
46
44
  }
47
45
  /**
48
- * Builds the runtime-owned registry for one resolved authored agent's
49
- * sandbox, preferring the authored override and falling back to the
50
- * framework default.
46
+ * Builds the runtime-owned registry for one selected compiled sandbox.
51
47
  */
52
48
  export declare function createRuntimeSandboxRegistry(input: {
53
- readonly authoredSandbox: ResolvedSandboxDefinition | null;
49
+ readonly sandbox: ResolvedSandboxDefinition;
54
50
  readonly workspaceResourceRoot: CompiledWorkspaceResourceRoot;
55
51
  }): RuntimeSandboxRegistry;
56
- /**
57
- * Builds the framework default sandbox definition used when no agent
58
- * authored override is present.
59
- *
60
- * The `backend` is resolved through {@link defaultSandbox} on each
61
- * call so the framework default picks up the same environment-aware
62
- * fallback as authored sandboxes that omit `backend` (`vercel()`
63
- * on hosted Vercel, then Docker, microsandbox, or just-bash by availability). Implemented as
64
- * a factory rather than a constant so the environment is read at
65
- * graph-resolution time rather than at module-load time.
66
- */
67
- export declare function createFrameworkSandboxDefinition(): ResolvedSandboxDefinition;
@@ -1 +1 @@
1
- import{defaultSandbox}from"#public/sandbox/backends/default.js";const DEFAULT_SANDBOX_SOURCE_ID=`eve:default-sandbox`;function createRuntimeSandboxRegistry(e){let t=e.authoredSandbox??createFrameworkSandboxDefinition();if(t.inheritsParent===!0&&(e.workspaceResourceRoot.contentHash!==void 0||e.workspaceResourceRoot.rootEntries.length>0))throw Error(`Sandbox "${t.logicalPath}" selects parent.sandbox but has managed workspace resources. Remove the child workspace or give the child its own sandbox.`);return{sandbox:{definition:t,workspaceResourceRoot:e.workspaceResourceRoot}}}function createFrameworkSandboxDefinition(){return{backend:defaultSandbox(),logicalPath:`eve:framework/default-sandbox`,sourceId:DEFAULT_SANDBOX_SOURCE_ID,sourceKind:`module`}}export{DEFAULT_SANDBOX_SOURCE_ID,createFrameworkSandboxDefinition,createRuntimeSandboxRegistry};
1
+ function createRuntimeSandboxRegistry(e){let t=e.sandbox;if(t.inheritsParent===!0&&(e.workspaceResourceRoot.contentHash!==void 0||e.workspaceResourceRoot.rootEntries.length>0))throw Error(`Sandbox "${t.logicalPath}" selects parent.sandbox but has managed workspace resources. Remove the child workspace or give the child its own sandbox.`);return{sandbox:{definition:t,workspaceResourceRoot:e.workspaceResourceRoot}}}export{createRuntimeSandboxRegistry};
@@ -1 +1 @@
1
- import{resolvePackageSourceFilePath}from"#internal/application/package.js";import{pathToFileURL}from"node:url";import{getRuntimeCompiledArtifactsCacheKey}from"#runtime/compiled-artifacts-source.js";import{getResolvedRuntimeAgentNode}from"#runtime/graph.js";import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{resolveRuntimeAgentGraph}from"#runtime/resolve-agent-graph.js";import{resolveRuntimeCompiledArtifactsVersionedCacheKey}from"#runtime/cache-key.js";import{loadCompiledModuleMap}from"#runtime/loaders/module-map.js";import{getActiveRuntimeSession}from"#runtime/sessions/runtime-session.js";import{createRuntimeAdapterRegistry}from"#runtime/channels/registry.js";const isCacheDisabled=process.env.EVE_DISABLE_AGENT_CACHE===`1`;function isDevelopmentRuntimeSnapshotRoot(e){return e.replaceAll(`\\`,`/`).includes(`/.eve/dev-runtime/snapshots/`)}function normalizeCompiledArtifactsSource(t){return t.kind!==`disk`||t.moduleMapLoaderPath!==void 0||!isDevelopmentRuntimeSnapshotRoot(t.appRoot)?t:{...t,moduleMapLoaderPath:resolvePackageSourceFilePath(`src/internal/authored-module-map-loader.ts`)}}async function loadFullBundle(e){let t=normalizeCompiledArtifactsSource(e),[n,r]=await Promise.all([loadCompiledManifest({compiledArtifactsSource:t}),loadRuntimeCompiledModuleMap(t)]),o=await resolveRuntimeAgentGraph({manifest:n,moduleMap:r}),s=o.root;return{adapterRegistry:createRuntimeAdapterRegistry({channels:collectResolvedChannels(o)}),compiledArtifactsSource:t,graph:o,hookRegistry:s.hookRegistry,moduleMap:r,resolvedAgent:s.agent,subagentRegistry:s.subagentRegistry,toolRegistry:s.toolRegistry,turnAgent:s.turnAgent}}async function loadRuntimeCompiledModuleMap(e){return e.kind===`disk`&&e.moduleMapLoaderPath!==void 0?await loadAuthoredSourceCompiledModuleMap(e):await loadCompiledModuleMap({compiledArtifactsSource:e})}async function loadAuthoredSourceCompiledModuleMap(e){if(e.moduleMapLoaderPath===void 0)throw Error(`Authored-source module map loading requires "moduleMapLoaderPath" in the compiled artifacts source.`);return await(await import(pathToFileURL(e.moduleMapLoaderPath).href)).loadCompiledModuleMapFromAuthoredSource({compiledArtifactsSource:e})}async function getOrLoadFullBundle(e){let t=normalizeCompiledArtifactsSource(e);if(isCacheDisabled)return loadFullBundle(t);let r=getActiveRuntimeSession(),i=getRuntimeCompiledArtifactsCacheKey(t),a=await resolveRuntimeCompiledArtifactsVersionedCacheKey(t),s=r.bundleCacheKeyBySourceKey.get(i);s!==void 0&&s!==a&&r.bundleCache.delete(s),r.bundleCacheKeyBySourceKey.set(i,a);let c=r.bundleCache.get(a);if(c!==void 0)return c;let l=loadFullBundle(t).catch(e=>{throw r.bundleCache.delete(a),r.bundleCacheKeyBySourceKey.get(i)===a&&r.bundleCacheKeyBySourceKey.delete(i),e});return r.bundleCache.set(a,l),l}async function getCompiledRuntimeAgentBundle(e){let t=await getOrLoadFullBundle(e.compiledArtifactsSource);if(e.nodeId===void 0)return t;let n=getResolvedRuntimeAgentNode(t.graph,e.nodeId);return{adapterRegistry:t.adapterRegistry,compiledArtifactsSource:t.compiledArtifactsSource,graph:{nodesByNodeId:t.graph.nodesByNodeId,root:n},hookRegistry:n.hookRegistry,moduleMap:t.moduleMap,nodeId:e.nodeId,resolvedAgent:n.agent,subagentRegistry:n.subagentRegistry,toolRegistry:n.toolRegistry,turnAgent:n.turnAgent}}function clearCompiledRuntimeAgentBundleCache(){let e=getActiveRuntimeSession();e.bundleCache.clear(),e.bundleCacheKeyBySourceKey.clear()}function collectResolvedChannels(e){let t=new Map;for(let n of e.nodesByNodeId.values())for(let e of n.channels)t.set(`${e.sourceId}:${e.name}`,e);return[...t.values()]}export{clearCompiledRuntimeAgentBundleCache,getCompiledRuntimeAgentBundle};
1
+ import{resolvePackageSourceFilePath}from"#internal/application/package.js";import{pathToFileURL}from"node:url";import{getRuntimeCompiledArtifactsCacheKey}from"#runtime/compiled-artifacts-source.js";import{getResolvedRuntimeAgentNode}from"#runtime/graph.js";import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{resolveRuntimeAgentGraph}from"#runtime/resolve-agent-graph.js";import{resolveRuntimeCompiledArtifactsVersionedCacheKey}from"#runtime/cache-key.js";import{getActiveRuntimeSession}from"#runtime/sessions/runtime-session.js";import{createRuntimeAdapterRegistry}from"#runtime/channels/registry.js";import{loadCompiledModuleMap}from"#runtime/loaders/module-map.js";const isCacheDisabled=process.env.EVE_DISABLE_AGENT_CACHE===`1`;function isDevelopmentRuntimeSnapshotRoot(e){return e.replaceAll(`\\`,`/`).includes(`/.eve/dev-runtime/snapshots/`)}function normalizeCompiledArtifactsSource(t){return t.kind!==`disk`||t.moduleMapLoaderPath!==void 0||!isDevelopmentRuntimeSnapshotRoot(t.appRoot)?t:{...t,moduleMapLoaderPath:resolvePackageSourceFilePath(`src/internal/authored-module-map-loader.ts`)}}async function loadFullBundle(e){let t=normalizeCompiledArtifactsSource(e),[n,r]=await Promise.all([loadCompiledManifest({compiledArtifactsSource:t}),loadRuntimeCompiledModuleMap(t)]),o=await resolveRuntimeAgentGraph({manifest:n,moduleMap:r}),s=o.root;return{adapterRegistry:createRuntimeAdapterRegistry({channels:collectResolvedChannels(o)}),compiledArtifactsSource:t,graph:o,hookRegistry:s.hookRegistry,moduleMap:r,resolvedAgent:s.agent,subagentRegistry:s.subagentRegistry,toolRegistry:s.toolRegistry,turnAgent:s.turnAgent}}async function loadRuntimeCompiledModuleMap(e){return e.kind===`disk`&&e.moduleMapLoaderPath!==void 0?await loadAuthoredSourceCompiledModuleMap(e):await loadCompiledModuleMap({compiledArtifactsSource:e})}async function loadAuthoredSourceCompiledModuleMap(e){if(e.moduleMapLoaderPath===void 0)throw Error(`Authored-source module map loading requires "moduleMapLoaderPath" in the compiled artifacts source.`);return await(await import(pathToFileURL(e.moduleMapLoaderPath).href)).loadCompiledModuleMapFromAuthoredSource({compiledArtifactsSource:e})}async function getOrLoadFullBundle(e){let t=normalizeCompiledArtifactsSource(e);if(isCacheDisabled)return loadFullBundle(t);let r=getActiveRuntimeSession(),i=getRuntimeCompiledArtifactsCacheKey(t),a=await resolveRuntimeCompiledArtifactsVersionedCacheKey(t),c=r.bundleCacheKeyBySourceKey.get(i);c!==void 0&&c!==a&&r.bundleCache.delete(c),r.bundleCacheKeyBySourceKey.set(i,a);let l=r.bundleCache.get(a);if(l!==void 0)return l;let u=loadFullBundle(t).catch(e=>{throw r.bundleCache.delete(a),r.bundleCacheKeyBySourceKey.get(i)===a&&r.bundleCacheKeyBySourceKey.delete(i),e});return r.bundleCache.set(a,u),u}async function getCompiledRuntimeAgentBundle(e){let t=await getOrLoadFullBundle(e.compiledArtifactsSource);if(e.nodeId===void 0)return t;let n=getResolvedRuntimeAgentNode(t.graph,e.nodeId);return{adapterRegistry:t.adapterRegistry,compiledArtifactsSource:t.compiledArtifactsSource,graph:{nodesByNodeId:t.graph.nodesByNodeId,root:n},hookRegistry:n.hookRegistry,moduleMap:t.moduleMap,nodeId:e.nodeId,resolvedAgent:n.agent,subagentRegistry:n.subagentRegistry,toolRegistry:n.toolRegistry,turnAgent:n.turnAgent}}function clearCompiledRuntimeAgentBundleCache(){let e=getActiveRuntimeSession();e.bundleCache.clear(),e.bundleCacheKeyBySourceKey.clear()}function collectResolvedChannels(e){let t=new Map;for(let n of e.nodesByNodeId.values())for(let e of n.channels)t.set(`${e.sourceId}:${e.name}`,e);return[...t.values()]}export{clearCompiledRuntimeAgentBundleCache,getCompiledRuntimeAgentBundle};
@@ -1 +1 @@
1
- import{getAdapterKind}from"#channel/adapter.js";import{ContextKey}from"#context/key.js";import{buildChannelInstrumentationProjection}from"#channel/instrumentation.js";import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{resolveDurableCompiledArtifactsSource,serializeDurableCompiledArtifactsSource}from"#runtime/durable-compiled-artifacts-source.js";import{deserializeRuntimeAdapter}from"#runtime/channels/registry.js";const ChannelKey=new ContextKey(`eve.channel`,{codec:{serialize(t){let r=buildChannelInstrumentationProjection({adapter:t});return{kind:getAdapterKind(t),state:t.state?{...t.state}:{},audience:r.metadata.audience}},deserialize(e,t){let n=t.get(BundleKey);if(n===void 0)throw Error(`Cannot deserialize "eve.channel" before "eve.bundle". The runtime bundle must be present in context.`);return deserializeRuntimeAdapter(n.adapterRegistry,e)}}}),BundleKey=new ContextKey(`eve.bundle`,{codec:{serialize:e=>({nodeId:e.nodeId,source:serializeDurableCompiledArtifactsSource(e.compiledArtifactsSource)}),deserialize:e=>{let{source:t,nodeId:n}=e;return getCompiledRuntimeAgentBundle({compiledArtifactsSource:resolveDurableCompiledArtifactsSource(t),nodeId:n})}}});export{BundleKey,ChannelKey};
1
+ import{getAdapterKind}from"#channel/adapter.js";import{ContextKey}from"#context/key.js";import{CHANNEL_CONTEXT_KEY_NAME}from"#context/key-names.js";import{buildChannelInstrumentationProjection}from"#channel/instrumentation.js";import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{resolveDurableCompiledArtifactsSource,serializeDurableCompiledArtifactsSource}from"#runtime/durable-compiled-artifacts-source.js";import{deserializeRuntimeAdapter}from"#runtime/channels/registry.js";const ChannelKey=new ContextKey(CHANNEL_CONTEXT_KEY_NAME,{codec:{serialize(t){let n=buildChannelInstrumentationProjection({adapter:t});return{kind:getAdapterKind(t),state:t.state?{...t.state}:{},audience:n.metadata.audience}},deserialize(e,t){let n=t.get(BundleKey);if(n===void 0)throw Error(`Cannot deserialize "eve.channel" before "eve.bundle". The runtime bundle must be present in context.`);return deserializeRuntimeAdapter(n.adapterRegistry,e)}}}),BundleKey=new ContextKey(`eve.bundle`,{codec:{serialize:e=>({nodeId:e.nodeId,source:serializeDurableCompiledArtifactsSource(e.compiledArtifactsSource)}),deserialize:e=>{let{source:t,nodeId:n}=e;return getCompiledRuntimeAgentBundle({compiledArtifactsSource:resolveDurableCompiledArtifactsSource(t),nodeId:n})}}});export{BundleKey,ChannelKey};
@@ -1,12 +1,14 @@
1
1
  import type { Node } from "#shared/node.js";
2
2
  import type { SourceRef } from "#shared/source-ref.js";
3
- import type { InternalToolDefinition } from "#shared/tool-definition.js";
3
+ import type { InternalToolDefinition } from "#tools/definition.js";
4
+ import type { AgentSourceOwner } from "#compiler/source-graph.js";
4
5
  /**
5
6
  * Serializable authored tool descriptor prepared by the runtime for one
6
7
  * harness turn.
7
8
  */
8
9
  export type PreparedRuntimeAuthoredTool = Readonly<InternalToolDefinition & SourceRef & {
9
10
  kind: "authored-tool";
11
+ owner: AgentSourceOwner;
10
12
  }>;
11
13
  type PreparedRuntimeDelegationToolBase<TKind extends "remote" | "subagent"> = Readonly<InternalToolDefinition & SourceRef & Node & {
12
14
  kind: TKind;
@@ -1,5 +1,5 @@
1
1
  import type { SandboxAccess } from "#sandbox/state.js";
2
- import type { SkillHandle } from "#execution/skills/types.js";
2
+ import type { SkillHandle } from "#shared/skill-types.js";
3
3
  /**
4
4
  * Validates a skill id before it is used as one path segment under
5
5
  * the sandbox skill root.