eve 0.72.1 → 0.74.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/src/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/src/channel/agent-description.d.ts +49 -9
  4. package/dist/src/channel/agent-description.js +1 -1
  5. package/dist/src/channel/invoke-tool.d.ts +26 -4
  6. package/dist/src/channel/invoke-tool.js +1 -1
  7. package/dist/src/channel/principal-identity.d.ts +9 -0
  8. package/dist/src/channel/principal-identity.js +1 -0
  9. package/dist/src/channel/prompt-queue.d.ts +31 -0
  10. package/dist/src/channel/prompt-queue.js +1 -0
  11. package/dist/src/channel/routes.d.ts +19 -4
  12. package/dist/src/channel/schedule.d.ts +20 -6
  13. package/dist/src/channel/schedule.js +1 -1
  14. package/dist/src/channel/skill-files.d.ts +114 -0
  15. package/dist/src/channel/skill-files.js +1 -0
  16. package/dist/src/channel/types.d.ts +4 -0
  17. package/dist/src/chunks/{use-eve-agent-C1GYGCtb.js → use-eve-agent-DOOXadF0.js} +13 -3
  18. package/dist/src/chunks/{use-eve-agent-hZJ7CB8t.js → use-eve-agent-mP0M7SrL.js} +13 -3
  19. package/dist/src/cli/commands/agent-instructions.js +1 -1
  20. package/dist/src/cli/commands/extension-init.js +1 -1
  21. package/dist/src/cli/commands/init-agent-workspace.js +1 -1
  22. package/dist/src/cli/commands/init-project.js +1 -1
  23. package/dist/src/cli/commands/init.js +1 -1
  24. package/dist/src/cli/dev/diagnostic-dump.js +1 -1
  25. package/dist/src/cli/dev/tui/blocks.d.ts +6 -0
  26. package/dist/src/cli/dev/tui/blocks.js +2 -2
  27. package/dist/src/cli/dev/tui/markdown.d.ts +5 -0
  28. package/dist/src/cli/dev/tui/markdown.js +2 -2
  29. package/dist/src/cli/dev/tui/stream-format.js +2 -2
  30. package/dist/src/cli/dev/tui/transcript-parts.d.ts +4 -1
  31. package/dist/src/cli/dev/tui/transcript-parts.js +2 -2
  32. package/dist/src/cli/dev/tui/transcript.js +1 -1
  33. package/dist/src/client/message-reducer.js +1 -1
  34. package/dist/src/compiled/.vendor-stamp.json +9 -8
  35. package/dist/src/compiled/@eve/catalog/index.js +1 -1
  36. package/dist/src/compiled/@modelcontextprotocol/server/index.d.ts +68 -7
  37. package/dist/src/compiled/@vercel/schedules/index.d.ts +158 -0
  38. package/dist/src/compiled/@vercel/schedules/index.js +17 -0
  39. package/dist/src/compiled/@workflow/core/capabilities.d.ts +33 -6
  40. package/dist/src/compiled/@workflow/core/flushable-stream.d.ts +2 -0
  41. package/dist/src/compiled/@workflow/core/index.d.ts +1 -0
  42. package/dist/src/compiled/@workflow/core/index.js +2 -2
  43. package/dist/src/compiled/@workflow/core/private.js +1 -1
  44. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +6 -0
  45. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  46. package/dist/src/compiled/@workflow/core/runtime.js +3 -3
  47. package/dist/src/compiled/@workflow/core/serialization/codec.d.ts +8 -8
  48. package/dist/src/compiled/@workflow/core/serialization/compression.d.ts +13 -5
  49. package/dist/src/compiled/@workflow/core/serialization.d.ts +9 -9
  50. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  51. package/dist/src/compiled/@workflow/core/symbols.d.ts +2 -0
  52. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +2 -2
  53. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  54. package/dist/src/compiled/@workflow/core/workflow/index.d.ts +1 -0
  55. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  56. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  57. package/dist/src/compiled/@workflow/world/events.d.ts +11 -0
  58. package/dist/src/compiled/@workflow/world/hooks.d.ts +2 -0
  59. package/dist/src/compiled/@workflow/world/interfaces.d.ts +6 -0
  60. package/dist/src/compiled/@workflow/world-local/index.js +3 -3
  61. package/dist/src/compiled/@workflow/world-vercel/index.js +13 -13
  62. package/dist/src/compiled/_chunks/workflow/{attribute-changes-VaTKT4K8.js → attribute-changes-CSqvJx6j.js} +2 -2
  63. package/dist/src/compiled/_chunks/workflow/{dist-B7NC1c9-.js → dist-DmXynLVH.js} +1 -1
  64. package/dist/src/compiled/_chunks/workflow/dist-T5NnW-0k.js +3 -0
  65. package/dist/src/compiled/_chunks/workflow/helpers-BXCuoPUb.js +1 -0
  66. package/dist/src/compiled/_chunks/workflow/private-Dlf90Zvn.js +1 -0
  67. package/dist/src/compiled/_chunks/workflow/resume-hook-CvENCrxc.js +1 -0
  68. package/dist/src/compiled/_chunks/workflow/{run-DYKeqbob.js → run-8pLWuR2U.js} +6 -6
  69. package/dist/src/compiled/_chunks/workflow/serialization-vDozzDhh.js +16 -0
  70. package/dist/src/compiled/_chunks/workflow/sleep-BMqbraZM.js +1 -0
  71. package/dist/src/compiled/_chunks/workflow/wait-until-A344L2AG.js +1 -0
  72. package/dist/src/compiled/shadcn-registry/index.js +3408 -35163
  73. package/dist/src/compiler/artifacts.js +1 -1
  74. package/dist/src/compiler/compile-agent.js +1 -1
  75. package/dist/src/compiler/development-extensions.js +1 -1
  76. package/dist/src/compiler/extension-compatibility.d.ts +18 -18
  77. package/dist/src/compiler/extension-compatibility.js +1 -1
  78. package/dist/src/compiler/load-binding-namespace.d.ts +5 -0
  79. package/dist/src/compiler/load-binding-namespace.js +1 -1
  80. package/dist/src/compiler/manifest.d.ts +39 -0
  81. package/dist/src/compiler/manifest.js +1 -1
  82. package/dist/src/compiler/memory-wrapper-candidates.d.ts +2 -0
  83. package/dist/src/compiler/memory-wrapper-candidates.js +1 -0
  84. package/dist/src/compiler/module-lifecycle.d.ts +1 -1
  85. package/dist/src/compiler/module-lifecycle.js +1 -1
  86. package/dist/src/compiler/module-map.js +1 -1
  87. package/dist/src/compiler/normalize-agent-config.js +1 -1
  88. package/dist/src/compiler/normalize-manifest.js +1 -1
  89. package/dist/src/compiler/normalize-schedule-collection.d.ts +3 -0
  90. package/dist/src/compiler/normalize-schedule-collection.js +1 -0
  91. package/dist/src/compiler/normalize-schedule.d.ts +2 -2
  92. package/dist/src/compiler/normalize-schedule.js +1 -1
  93. package/dist/src/compiler/resolve-workspace-subagent.js +1 -1
  94. package/dist/src/compiler/schedule-collection-wrapper-candidates.d.ts +2 -0
  95. package/dist/src/compiler/schedule-collection-wrapper-candidates.js +1 -0
  96. package/dist/src/compiler/validate-artifact.js +1 -1
  97. package/dist/src/context/build-callback-context.js +1 -1
  98. package/dist/src/context/dynamic-resolve-context.js +1 -1
  99. package/dist/src/context/key-names.d.ts +1 -0
  100. package/dist/src/context/key-names.js +1 -1
  101. package/dist/src/context/keys.d.ts +2 -0
  102. package/dist/src/context/keys.js +1 -1
  103. package/dist/src/context/providers/session.js +1 -1
  104. package/dist/src/context/schedule-collection-tools.d.ts +9 -0
  105. package/dist/src/context/schedule-collection-tools.js +1 -0
  106. package/dist/src/context/session-context.d.ts +4 -1
  107. package/dist/src/context/session-schedule.d.ts +9 -0
  108. package/dist/src/context/session-schedule.js +1 -0
  109. package/dist/src/context/turn-principals.d.ts +12 -0
  110. package/dist/src/context/turn-principals.js +1 -0
  111. package/dist/src/dynamic/definition.d.ts +1 -0
  112. package/dist/src/evals/cli/eval-client.js +1 -1
  113. package/dist/src/evals/cli/eval.js +1 -1
  114. package/dist/src/execution/agent-sessions/context.d.ts +2 -0
  115. package/dist/src/execution/agent-sessions/context.js +1 -1
  116. package/dist/src/execution/agent-sessions/steps.js +1 -1
  117. package/dist/src/execution/cancelled-model-call-batch.js +1 -1
  118. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  119. package/dist/src/execution/invoke-tool.d.ts +6 -2
  120. package/dist/src/execution/invoke-tool.js +1 -1
  121. package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
  122. package/dist/src/execution/node-step.d.ts +1 -0
  123. package/dist/src/execution/node-step.js +1 -1
  124. package/dist/src/execution/publish-session-events.js +1 -1
  125. package/dist/src/execution/runtime-context.js +1 -1
  126. package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
  127. package/dist/src/execution/sandbox/bindings/vercel-errors.d.ts +11 -0
  128. package/dist/src/execution/sandbox/bindings/vercel-errors.js +2 -1
  129. package/dist/src/execution/sandbox/bindings/vercel-tool-sessions.d.ts +7 -0
  130. package/dist/src/execution/sandbox/bindings/vercel-tool-sessions.js +1 -0
  131. package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
  132. package/dist/src/execution/sandbox/development-lazy-prewarm.js +1 -1
  133. package/dist/src/execution/sandbox/ensure.d.ts +14 -1
  134. package/dist/src/execution/sandbox/ensure.js +1 -1
  135. package/dist/src/execution/sandbox/prewarm.js +1 -1
  136. package/dist/src/execution/session/active-turn.d.ts +2 -1
  137. package/dist/src/execution/session/active-turn.js +1 -1
  138. package/dist/src/execution/session/entry.d.ts +10 -1
  139. package/dist/src/execution/session/entry.js +1 -1
  140. package/dist/src/execution/session/program.d.ts +4 -0
  141. package/dist/src/execution/session/program.js +1 -1
  142. package/dist/src/execution/session/timeout-control.d.ts +1 -2
  143. package/dist/src/execution/session/timeout-control.js +1 -1
  144. package/dist/src/execution/session/turn-control.d.ts +7 -0
  145. package/dist/src/execution/session/turn-control.js +1 -0
  146. package/dist/src/execution/session/turn-step.js +1 -1
  147. package/dist/src/execution/session/turn.d.ts +2 -0
  148. package/dist/src/execution/session/turn.js +1 -1
  149. package/dist/src/execution/session-inbox/protocol.js +1 -1
  150. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  151. package/dist/src/execution/tool-session/id.d.ts +22 -0
  152. package/dist/src/execution/tool-session/id.js +1 -0
  153. package/dist/src/execution/tool-session/sandbox.d.ts +22 -0
  154. package/dist/src/execution/tool-session/sandbox.js +1 -0
  155. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  156. package/dist/src/execution/tools/connection-tools.js +1 -1
  157. package/dist/src/framework/sources/modules/schedule-collection-wrapper.d.ts +2 -0
  158. package/dist/src/framework/sources/modules/schedule-collection-wrapper.js +1 -0
  159. package/dist/src/framework/sources/registry.d.ts +1 -0
  160. package/dist/src/framework/sources/registry.js +1 -1
  161. package/dist/src/harness/compaction/step.js +1 -1
  162. package/dist/src/harness/emission.d.ts +1 -0
  163. package/dist/src/harness/emission.js +1 -1
  164. package/dist/src/harness/hitl/approvals.d.ts +1 -1
  165. package/dist/src/harness/hitl/approvals.js +1 -1
  166. package/dist/src/harness/hitl/delivery.d.ts +9 -2
  167. package/dist/src/harness/hitl/delivery.js +1 -1
  168. package/dist/src/harness/hitl/intake.js +1 -1
  169. package/dist/src/harness/model-call/call.d.ts +5 -0
  170. package/dist/src/harness/model-call/call.js +1 -1
  171. package/dist/src/harness/model-call/usage.js +1 -1
  172. package/dist/src/harness/open-input-request.d.ts +8 -0
  173. package/dist/src/harness/open-input-request.js +1 -0
  174. package/dist/src/harness/session-machine/current.js +1 -1
  175. package/dist/src/harness/session-machine/transitions.d.ts +13 -0
  176. package/dist/src/harness/session-machine/transitions.js +1 -1
  177. package/dist/src/harness/stream-actions.d.ts +6 -1
  178. package/dist/src/harness/stream-actions.js +1 -1
  179. package/dist/src/harness/tool-loop.js +1 -1
  180. package/dist/src/harness/tools.js +1 -1
  181. package/dist/src/harness/types.d.ts +2 -0
  182. package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
  183. package/dist/src/instrumentation/lifecycle.d.ts +1 -0
  184. package/dist/src/internal/application/cache-metadata.js +1 -1
  185. package/dist/src/internal/application/compiled-artifacts.js +1 -1
  186. package/dist/src/internal/application/package.js +1 -1
  187. package/dist/src/internal/application/paths.js +1 -1
  188. package/dist/src/internal/application/runtime-compiled-artifacts-source.js +1 -1
  189. package/dist/src/internal/authored-definition/connection.js +1 -1
  190. package/dist/src/internal/authored-definition/schedule-collection.d.ts +2 -0
  191. package/dist/src/internal/authored-definition/schedule-collection.js +1 -0
  192. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  193. package/dist/src/internal/authored-module-loader.d.ts +7 -0
  194. package/dist/src/internal/authored-module-loader.js +2 -2
  195. package/dist/src/internal/authored-module-map-loader.js +1 -1
  196. package/dist/src/internal/authored-package-boundary.js +1 -1
  197. package/dist/src/internal/authored-runtime-modules.d.ts +1 -0
  198. package/dist/src/internal/authored-runtime-modules.js +1 -1
  199. package/dist/src/internal/invocation/metadata.js +1 -1
  200. package/dist/src/internal/mcp/forwarded-principal-header.d.ts +31 -0
  201. package/dist/src/internal/mcp/forwarded-principal-header.js +1 -0
  202. package/dist/src/internal/mcp/published-tools.d.ts +9 -2
  203. package/dist/src/internal/mcp/published-tools.js +1 -1
  204. package/dist/src/internal/mcp/skills.d.ts +57 -0
  205. package/dist/src/internal/mcp/skills.js +1 -0
  206. package/dist/src/internal/mcp/streamable-http-server.d.ts +38 -6
  207. package/dist/src/internal/mcp/streamable-http-server.js +1 -1
  208. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  209. package/dist/src/internal/nitro/development-generation.js +1 -1
  210. package/dist/src/internal/nitro/host/artifacts-config.js +1 -1
  211. package/dist/src/internal/nitro/host/build-application.js +1 -1
  212. package/dist/src/internal/nitro/host/build-extension.js +1 -1
  213. package/dist/src/internal/nitro/host/build-vercel-agent-summary.js +1 -1
  214. package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
  215. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  216. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  217. package/dist/src/internal/nitro/host/dev-runner.js +1 -1
  218. package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
  219. package/dist/src/internal/nitro/host/local-tracing-runtime-plugin.js +1 -1
  220. package/dist/src/internal/nitro/host/skill-server-assets.d.ts +29 -0
  221. package/dist/src/internal/nitro/host/skill-server-assets.js +1 -0
  222. package/dist/src/internal/nitro/host/start-production-server.js +1 -1
  223. package/dist/src/internal/nitro/host/vercel-build-output-config.d.ts +12 -0
  224. package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -1
  225. package/dist/src/internal/nitro/host/workspace-extensions.js +1 -1
  226. package/dist/src/internal/nitro/routes/channel-dispatch.js +1 -1
  227. package/dist/src/internal/nitro/routes/channel-route-context.d.ts +4 -0
  228. package/dist/src/internal/nitro/routes/channel-route-context.js +1 -1
  229. package/dist/src/internal/nitro/routes/schedule-collection-consumer.d.ts +3 -0
  230. package/dist/src/internal/nitro/routes/schedule-collection-consumer.js +1 -0
  231. package/dist/src/internal/schedules/consumer-route.d.ts +17 -0
  232. package/dist/src/internal/schedules/consumer-route.js +1 -0
  233. package/dist/src/internal/schedules/verify-delivery.d.ts +25 -0
  234. package/dist/src/internal/schedules/verify-delivery.js +1 -0
  235. package/dist/src/internal/vercel/build-agent-workspace.js +1 -1
  236. package/dist/src/internal/workflow/development-world-client.js +1 -1
  237. package/dist/src/internal/workflow/validate-world.js +1 -1
  238. package/dist/src/internal/workflow/vercel-world-defaults.js +1 -1
  239. package/dist/src/internal/workflow-bundle/builder-support.js +1 -1
  240. package/dist/src/internal/workflow-bundle/builder.js +1 -1
  241. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  242. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cli-config.js +1 -0
  243. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cred-storage.js +1 -0
  244. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/index.js +1 -0
  245. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.js +1 -0
  246. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.zod.js +1 -0
  247. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/types.js +1 -0
  248. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/envpath.js +1 -0
  249. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errors.js +2 -0
  250. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errutils.js +1 -0
  251. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/exec.js +1 -0
  252. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/fsutils.js +1 -0
  253. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/index.js +1 -0
  254. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/lookup.js +1 -0
  255. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/safety.js +1 -0
  256. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/auth-errors.js +1 -0
  257. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +1 -0
  258. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-context.js +1 -0
  259. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +1 -0
  260. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +2 -0
  261. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/index.js +1 -0
  262. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/oauth.js +1 -0
  263. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-error.js +1 -0
  264. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-io.js +1 -0
  265. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-util.js +2 -0
  266. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token.js +1 -0
  267. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +1 -0
  268. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/version.js +1 -0
  269. package/dist/src/node_modules/.pnpm/@vercel_queue@0.5.1_@opentelemetry_api@1.9.1/node_modules/@vercel/queue/dist/index.js +36 -0
  270. package/dist/src/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +1 -0
  271. package/dist/src/node_modules/.pnpm/brace-expansion@5.0.12/node_modules/brace-expansion/dist/esm/index.js +1 -0
  272. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +1 -0
  273. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +1 -0
  274. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +1 -0
  275. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +1 -0
  276. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +1 -0
  277. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +1 -0
  278. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +1 -0
  279. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +1 -0
  280. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +2 -0
  281. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +1 -0
  282. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +1 -0
  283. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +1 -0
  284. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +1 -0
  285. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +1 -0
  286. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +1 -0
  287. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +1 -0
  288. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +1 -0
  289. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +1 -0
  290. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +1 -0
  291. package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +1 -0
  292. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +1 -0
  293. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +1 -0
  294. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +1 -0
  295. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +1 -0
  296. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +1 -0
  297. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +1 -0
  298. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +1 -0
  299. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +1 -0
  300. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +1 -0
  301. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +1 -0
  302. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +1 -0
  303. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +1 -0
  304. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +1 -0
  305. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +1 -0
  306. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +1 -0
  307. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +1 -0
  308. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +1 -0
  309. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +1 -0
  310. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +1 -0
  311. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +1 -0
  312. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +1 -0
  313. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +1 -0
  314. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +1 -0
  315. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +1 -0
  316. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +1 -0
  317. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +1 -0
  318. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +1 -0
  319. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +1 -0
  320. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +1 -0
  321. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +1 -0
  322. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +1 -0
  323. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +1 -0
  324. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +1 -0
  325. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +1 -0
  326. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +1 -0
  327. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +1 -0
  328. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +1 -0
  329. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +1 -0
  330. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +1 -0
  331. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +1 -0
  332. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +1 -0
  333. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +1 -0
  334. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +1 -0
  335. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +1 -0
  336. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +1 -0
  337. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +1 -0
  338. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +1 -0
  339. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +1 -0
  340. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +1 -0
  341. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +1 -0
  342. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +1 -0
  343. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +1 -0
  344. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +1 -0
  345. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +1 -0
  346. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +1 -0
  347. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +1 -0
  348. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +1 -0
  349. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +1 -0
  350. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +1 -0
  351. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +1 -0
  352. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +1 -0
  353. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +1 -0
  354. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +1 -0
  355. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +1 -0
  356. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +1 -0
  357. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +1 -0
  358. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +1 -0
  359. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +1 -0
  360. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +1 -0
  361. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +1 -0
  362. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +1 -0
  363. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +1 -0
  364. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +1 -0
  365. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +1 -0
  366. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +1 -0
  367. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +1 -0
  368. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +1 -0
  369. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +1 -0
  370. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +1 -0
  371. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +1 -0
  372. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +1 -0
  373. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +1 -0
  374. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +1 -0
  375. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +1 -0
  376. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +1 -0
  377. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +1 -0
  378. package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +1 -0
  379. package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +1 -0
  380. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js +1 -0
  381. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js +1 -0
  382. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js +1 -0
  383. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js +1 -0
  384. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js +1 -0
  385. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js +1 -0
  386. package/dist/src/node_modules/.pnpm/mixpart@0.0.6/node_modules/mixpart/dist/index.js +7 -0
  387. package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +1 -0
  388. package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +1 -0
  389. package/dist/src/node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js +1 -0
  390. package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +1 -0
  391. package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +1 -0
  392. package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +1 -0
  393. package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +1 -0
  394. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +1 -0
  395. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +1 -0
  396. package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +2 -0
  397. package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +1 -0
  398. package/dist/src/node_modules/.pnpm/xdg-app-paths@5.5.1/node_modules/xdg-app-paths/src/lib/index.js +1 -0
  399. package/dist/src/node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js +1 -0
  400. package/dist/src/public/channels/chat-sdk/authorization.js +1 -1
  401. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +7 -1
  402. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
  403. package/dist/src/public/channels/discord/defaults.d.ts +8 -7
  404. package/dist/src/public/channels/discord/discordChannel.d.ts +21 -1
  405. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  406. package/dist/src/public/channels/discord/index.d.ts +1 -1
  407. package/dist/src/public/channels/github/defaults.js +3 -3
  408. package/dist/src/public/channels/github/githubChannel.d.ts +4 -1
  409. package/dist/src/public/channels/github/state.d.ts +2 -1
  410. package/dist/src/public/channels/index.d.ts +1 -1
  411. package/dist/src/public/channels/linear/defaults.js +1 -1
  412. package/dist/src/public/channels/linear/linearChannel.d.ts +4 -1
  413. package/dist/src/public/channels/mcp.d.ts +26 -5
  414. package/dist/src/public/channels/mcp.js +1 -1
  415. package/dist/src/public/channels/slack/index.d.ts +1 -0
  416. package/dist/src/public/channels/slack/index.js +1 -1
  417. package/dist/src/public/channels/slack/interactions.js +1 -1
  418. package/dist/src/public/channels/slack/slackChannel.d.ts +6 -0
  419. package/dist/src/public/channels/twilio/defaults.js +2 -4
  420. package/dist/src/public/channels/twilio/twilioChannel.d.ts +4 -1
  421. package/dist/src/public/definitions/channel.d.ts +1 -1
  422. package/dist/src/public/definitions/connections/mcp.d.ts +11 -0
  423. package/dist/src/public/experimental/schedules/client.d.ts +7 -0
  424. package/dist/src/public/experimental/schedules/client.js +1 -0
  425. package/dist/src/public/experimental/schedules/index.d.ts +5 -0
  426. package/dist/src/public/experimental/schedules/index.js +1 -0
  427. package/dist/src/public/experimental/schedules/testing.d.ts +2 -0
  428. package/dist/src/public/experimental/schedules/testing.js +1 -0
  429. package/dist/src/public/experimental/schedules/vercel.d.ts +2 -0
  430. package/dist/src/public/experimental/schedules/vercel.js +1 -0
  431. package/dist/src/public/memory/scope.js +1 -1
  432. package/dist/src/public/schedules/provider-types.d.ts +16 -0
  433. package/dist/src/public/schedules/provider-types.js +1 -0
  434. package/dist/src/public/schedules/providers/in-memory.d.ts +5 -0
  435. package/dist/src/public/schedules/providers/in-memory.js +1 -0
  436. package/dist/src/public/schedules/providers/vercel.d.ts +10 -0
  437. package/dist/src/public/schedules/providers/vercel.js +1 -0
  438. package/dist/src/public/schedules/scope.d.ts +2 -0
  439. package/dist/src/public/schedules/scope.js +1 -0
  440. package/dist/src/public/schedules/subscription.d.ts +259 -0
  441. package/dist/src/public/schedules/subscription.js +1 -0
  442. package/dist/src/public/schedules/testing.d.ts +1 -0
  443. package/dist/src/public/schedules/testing.js +1 -0
  444. package/dist/src/public/sveltekit/dev-server.js +1 -1
  445. package/dist/src/runtime/cache-key.js +1 -1
  446. package/dist/src/runtime/connections/mcp-client.js +1 -1
  447. package/dist/src/runtime/loaders/compile-metadata.js +1 -1
  448. package/dist/src/runtime/loaders/manifest.js +1 -1
  449. package/dist/src/runtime/loaders/module-map.js +1 -1
  450. package/dist/src/runtime/resolve-connection.js +1 -1
  451. package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
  452. package/dist/src/runtime/schedules/collection-client.d.ts +20 -0
  453. package/dist/src/runtime/schedules/collection-client.js +1 -0
  454. package/dist/src/runtime/schedules/dispatch-occurrence.d.ts +12 -0
  455. package/dist/src/runtime/schedules/dispatch-occurrence.js +1 -0
  456. package/dist/src/runtime/schedules/load-collection.d.ts +14 -0
  457. package/dist/src/runtime/schedules/load-collection.js +1 -0
  458. package/dist/src/runtime/schedules/payload.d.ts +24 -0
  459. package/dist/src/runtime/schedules/payload.js +1 -0
  460. package/dist/src/runtime/schedules/provider-types.d.ts +1 -0
  461. package/dist/src/runtime/schedules/provider-types.js +1 -0
  462. package/dist/src/runtime/schedules/queue-namespace.d.ts +2 -0
  463. package/dist/src/runtime/schedules/queue-namespace.js +1 -0
  464. package/dist/src/runtime/schedules/record.d.ts +4 -0
  465. package/dist/src/runtime/schedules/record.js +1 -0
  466. package/dist/src/runtime/schedules/validation.d.ts +6 -0
  467. package/dist/src/runtime/schedules/validation.js +1 -0
  468. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  469. package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
  470. package/dist/src/runtime/sessions/runtime-session.d.ts +10 -0
  471. package/dist/src/runtime/sessions/runtime-session.js +1 -1
  472. package/dist/src/runtime/types.d.ts +2 -0
  473. package/dist/src/self-modification/config.d.ts +4 -63
  474. package/dist/src/self-modification/config.js +1 -1
  475. package/dist/src/self-modification/credentials.d.ts +1 -1
  476. package/dist/src/self-modification/deployed-sandbox.d.ts +14 -0
  477. package/dist/src/self-modification/deployed-sandbox.js +1 -0
  478. package/dist/src/self-modification/extension/config-schema.d.ts +2 -17
  479. package/dist/src/self-modification/extension/config-schema.js +1 -1
  480. package/dist/src/self-modification/extension/local-only.d.ts +1 -1
  481. package/dist/src/self-modification/extension/local-only.js +1 -1
  482. package/dist/src/self-modification/extension/subagents/agent/agent.d.ts +1 -1
  483. package/dist/src/self-modification/extension/subagents/agent/agent.js +1 -1
  484. package/dist/src/self-modification/extension/subagents/agent/instructions.js +3 -35
  485. package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.d.ts +3 -31
  486. package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.js +1 -1
  487. package/dist/src/self-modification/git-workspace.d.ts +1 -2
  488. package/dist/src/self-modification/git-workspace.js +1 -1
  489. package/dist/src/self-modification/github-publisher.d.ts +1 -1
  490. package/dist/src/self-modification/mode.d.ts +4 -4
  491. package/dist/src/self-modification/mode.js +1 -1
  492. package/dist/src/self-modification/proposal.js +1 -1
  493. package/dist/src/self-modification/remote/config-schema.d.ts +20 -0
  494. package/dist/src/self-modification/remote/config-schema.js +1 -0
  495. package/dist/src/self-modification/remote/config.d.ts +66 -0
  496. package/dist/src/self-modification/remote/config.js +1 -0
  497. package/dist/src/self-modification/remote/extension.d.ts +5 -0
  498. package/dist/src/self-modification/remote/extension.js +1 -0
  499. package/dist/src/self-modification/remote/production-registry-add.js +1 -0
  500. package/dist/src/self-modification/remote/subagents/agent/agent.d.ts +4 -0
  501. package/dist/src/self-modification/remote/subagents/agent/agent.js +1 -0
  502. package/dist/src/self-modification/remote/subagents/agent/instructions.d.ts +2 -0
  503. package/dist/src/self-modification/remote/subagents/agent/instructions.js +5 -0
  504. package/dist/src/self-modification/remote/subagents/agent/sandbox.d.ts +2 -0
  505. package/dist/src/self-modification/remote/subagents/agent/sandbox.js +1 -0
  506. package/dist/src/self-modification/remote/subagents/agent/tools/edit_file.d.ts +1 -0
  507. package/dist/src/self-modification/remote/subagents/agent/tools/edit_file.js +1 -0
  508. package/dist/src/self-modification/remote/subagents/agent/tools/publish.js +1 -0
  509. package/dist/src/self-modification/remote/subagents/agent/tools/registry_add.d.ts +32 -0
  510. package/dist/src/self-modification/remote/subagents/agent/tools/registry_add.js +1 -0
  511. package/dist/src/self-modification/remote/subagents/agent/tools/search_models.d.ts +1 -0
  512. package/dist/src/self-modification/remote/subagents/agent/tools/search_models.js +1 -0
  513. package/dist/src/self-modification/remote/subagents/agent/tools/search_registry.d.ts +1 -0
  514. package/dist/src/self-modification/remote/subagents/agent/tools/search_registry.js +1 -0
  515. package/dist/src/self-modification/sandbox.d.ts +1 -6
  516. package/dist/src/self-modification/sandbox.js +1 -1
  517. package/dist/src/self-modification/scaffold.js +1 -1
  518. package/dist/src/self-modification/setup.d.ts +6 -0
  519. package/dist/src/self-modification/setup.js +46 -48
  520. package/dist/src/self-modification/subagent-guidance.d.ts +15 -0
  521. package/dist/src/self-modification/subagent-guidance.js +29 -0
  522. package/dist/src/services/dev-client/request-headers.js +1 -1
  523. package/dist/src/setup/flows/model-source-change.js +1 -1
  524. package/dist/src/setup/integrations/self-modification/setup.js +1 -1
  525. package/dist/src/setup/project-resolution.js +1 -1
  526. package/dist/src/setup/scaffold/create/project.js +1 -1
  527. package/dist/src/setup/verified-remote-client.d.ts +3 -0
  528. package/dist/src/setup/verified-remote-client.js +1 -1
  529. package/dist/src/shared/framework-eve-server.js +1 -1
  530. package/dist/src/shared/principal-scope.d.ts +2 -0
  531. package/dist/src/shared/principal-scope.js +1 -0
  532. package/dist/src/shared/schedule-collection-definition.d.ts +11 -0
  533. package/dist/src/shared/schedule-collection-definition.js +1 -0
  534. package/dist/src/shared/schedule-collection-tools.d.ts +1 -0
  535. package/dist/src/shared/schedule-collection-tools.js +1 -0
  536. package/dist/src/subagents/hitl-proxy.js +1 -1
  537. package/dist/src/subagents/tool.d.ts +1 -0
  538. package/dist/src/subagents/tool.js +1 -1
  539. package/dist/src/svelte/index.js +1 -1
  540. package/dist/src/svelte/use-eve-agent.js +1 -1
  541. package/dist/src/tools/framework/agent.js +1 -1
  542. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  543. package/dist/src/tools/provided/read-file.js +1 -1
  544. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  545. package/dist/src/tracing/agent-otel-content.d.ts +2 -0
  546. package/dist/src/tracing/agent-otel-content.js +2 -2
  547. package/dist/src/tracing/agent-otel-provider.js +1 -1
  548. package/dist/src/tracing/invoke-tool-span.d.ts +1 -0
  549. package/dist/src/vue/index.js +1 -1
  550. package/dist/src/vue/use-eve-agent.js +1 -1
  551. package/docs/channels/chat-sdk.mdx +27 -0
  552. package/docs/channels/custom.mdx +5 -2
  553. package/docs/channels/discord.mdx +22 -0
  554. package/docs/channels/mcp.mdx +102 -4
  555. package/docs/channels/slack.mdx +1 -1
  556. package/docs/connections/mcp.mdx +19 -0
  557. package/docs/evals/targets.mdx +5 -1
  558. package/docs/guides/self-modification.md +50 -3
  559. package/docs/tools/human-in-the-loop.md +14 -2
  560. package/docs/tools/workflows.mdx +6 -4
  561. package/docs/tutorial/guard-the-spend.mdx +1 -1
  562. package/package.json +46 -8
  563. package/dist/src/compiled/@workflow/core/runtime/vm-serde-bundle.generated.d.ts +0 -14
  564. package/dist/src/compiled/_chunks/workflow/dist-CaNNONeg.js +0 -3
  565. package/dist/src/compiled/_chunks/workflow/global-DKbOgrts.js +0 -1
  566. package/dist/src/compiled/_chunks/workflow/helpers-CP9TjeO8.js +0 -1
  567. package/dist/src/compiled/_chunks/workflow/logger-oqfblE3p.js +0 -14
  568. package/dist/src/compiled/_chunks/workflow/resume-hook-yq-NAdBu.js +0 -1
  569. package/dist/src/compiled/_chunks/workflow/serialization-APSKphN5.js +0 -3
  570. package/dist/src/compiled/_chunks/workflow/sleep-Ba8SExMt.js +0 -1
  571. package/dist/src/compiled/_chunks/workflow/wait-until-Dc9s3yyP.js +0 -1
  572. package/dist/src/self-modification/extension/production-registry-add.js +0 -1
  573. package/dist/src/self-modification/extension/subagents/agent/tools/publish.js +0 -1
  574. /package/dist/src/self-modification/{extension → remote}/production-registry-add.d.ts +0 -0
  575. /package/dist/src/self-modification/{extension → remote}/subagents/agent/tools/publish.d.ts +0 -0
@@ -1 +1 @@
1
- import{randomUUID}from"node:crypto";import{noDevelopmentExtensions,prepareDevelopmentExtensions}from"#compiler/development-extensions.js";import{ROOT_COMPILED_AGENT_NODE_ID,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId}from"#compiler/manifest.js";import{summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{canonicalSourceSlot,composeAgentModuleCandidates,createAgentModuleBinding,createProgrammaticModuleCandidates,disableComposedCandidate,instantiateProgrammaticTemplate,isAgentModuleCandidate}from"#compiler/source-graph.js";import{bindingMountId}from"#compiler/extension-mount-bindings.js";import{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileChannelRoutes,compileExtensionMounts,createCompiledRemoteAgent,createExtensionCompileMounts,expectSubagentDescription,loadSelectedNodeConfig,mergeExternalDependencies,withDiagnosticsSummary,withExtensionNamespace}from"#compiler/normalize-manifest-helpers.js";import{assertRemoteAgentDefinitionHasNoLocalPackageEntries,normalizeSubagentConfig}from"#compiler/normalize-subagent.js";import{NodeModuleEvaluationContext,markConfigRuntimeEntries}from"#compiler/module-lifecycle.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{compileAgentConfig}from"#compiler/normalize-agent-config.js";import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{compileConnectionDefinition}from"#compiler/normalize-connection.js";import{applyAgentToolPolicy,applyDefaultToolPolicy,assertFrameworkToolPolicy,canDisableToolWithoutSelectedSource}from"#compiler/default-tool-policy.js";import{resolveWorkspaceSubagentDefinition}from"#compiler/resolve-workspace-subagent.js";import{workspaceSubagentName}from"#public/definitions/workspace-agent.js";import{compileHookEntry}from"#compiler/normalize-hook.js";import{compileInstructionsEntry}from"#compiler/normalize-instructions.js";import{compileMemoryDefinition,deriveMemorySlot}from"#compiler/normalize-memory.js";import{compileSandboxDefinition}from"#compiler/normalize-sandbox.js";import{compileScheduleDefinition}from"#compiler/normalize-schedule.js";import{compileSkillSource}from"#compiler/normalize-skill.js";import{compileToolEntry}from"#compiler/normalize-tool.js";import{finalizeNodeSourceState}from"#compiler/node-source-state.js";import{projectAgentSources,projectSelectedSources}from"#compiler/project-sources.js";import{frameworkAgentSourceRegistry,memoryWrapperTemplate}from"#framework/sources/registry.js";async function compileAgentManifest(e,t={}){let n=[frameworkAgentSourceRegistry,...t.sourceRegistries??[]];assertUniqueRegistryIds(n);let r={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:n},i=t.diagnostics??[],a=await prepareDevelopmentExtensions({diagnostics:i,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,selection:t.developmentExtensions??noDevelopmentExtensions()}),o=await new AgentGraphCompiler(r,n,i).compileStaticNode({developmentExtensionCandidates:a.candidates,inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:a.manifest,nodeId:ROOT_COMPILED_AGENT_NODE_ID,nodePath:``,owner:{kind:`application`}}),s=summarizeCompilerDiagnostics(i),c=withDiagnosticsSummary(o.descendants,s);return createCompiledAgentManifest({...o.manifest,diagnosticsSummary:s,subagents:c})}var AgentGraphCompiler=class{context;registries;diagnostics;mounts=new Map;evaluationId=randomUUID();constructor(e,t,n){this.context=e,this.registries=t,this.diagnostics=n}async compileStaticNode(e){let t=await this.createPhaseOneNodeSourceState(e,e.inheritedExternalDependencies),n=await compileAgentConfig(e.manifest,this.context,{binding:t.selectedConfig.binding,definition:t.selectedConfig.definition,source:t.selectedConfig.source});assertRootOnlyConfig(n,e.isRoot,e.manifest.agentId),applyAgentToolPolicy(t,n),applyDefaultToolPolicy(t,n);let r=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));r.length>0&&(n={...n,build:{...n.build,externalDependencies:r}});let i=finalizeNodeSourceState(t,r);markConfigRuntimeEntries(n,i.evaluation);let a=await this.compileResources(e,i),o=await this.compileChildren(e,i,r),s=createCompiledAgentNodeManifest({...a,config:n,remoteAgents:o.remoteAgents});return{descendants:o.nodes,manifest:s}}async compileChildren(e,t,n){let r=[],i=[],a=collectSelectedSourceIds(t.composed),o=t.projected.subagents.filter(e=>a.has(e.candidate.sourceId));for(let t of o){let a=t.source,o=createCompiledSubagentNodeId(e.nodeId,a.sourceId),s={extensionScope:t.extensionScope??e.extensionScope,mountId:t.mountId,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:a.manifest,nodeId:o,nodePath:t.nodePath,owner:t.owner,parentNodeId:e.nodeId},c=await this.createPhaseOneNodeSourceState(s,n),l=normalizeSubagentConfig(c.selectedConfig.definition,`Expected the subagent config export "${c.selectedConfig.source.exportName??`default`}" from "${a.entryPath}" to match the public eve shape.`);if(l.kind===`remote`){let n=workspaceSubagentName(c.selectedConfig.definition),r=n===void 0?l:await resolveWorkspaceSubagentDefinition({definition:l,name:n,registries:this.registries,source:a});assertRemoteAgentDefinitionHasNoLocalPackageEntries(a);let s=c.selectedConfig.source.sourceId;c.evaluation.setBindings({[s]:c.selectedConfig.binding}),c.evaluation.requireRuntimeEntry(s);let u=c.evaluation.finalizeBindings()[s];if(u===void 0)throw Error(`Remote subagent "${o}" has no finalized config binding.`);i.push(createCompiledRemoteAgent({binding:u,definition:r,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,source:a,sourceRef:c.selectedConfig.source}));continue}let u,d;l.kind===`local`?(u=await compileAgentConfig(a.manifest,this.context,{binding:c.selectedConfig.binding,definition:l.definition,source:c.selectedConfig.source}),assertRootOnlyConfig(u,!1,a.manifest.agentId),applyAgentToolPolicy(c,u),applyDefaultToolPolicy(c,u)):d=l.build?.externalDependencies;let f=mergeExternalDependencies(n,u?.build?.externalDependencies,d,a.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));u!==void 0&&f.length>0&&(u={...u,build:{...u.build,externalDependencies:f}});let p=finalizeNodeSourceState(c,f);u===void 0?p.evaluation.requireRuntimeEntry(c.selectedConfig.source.sourceId):markConfigRuntimeEntries(u,p.evaluation);let m=await this.compileResources(s,p),h=await this.compileChildren(s,p,f),g={backing:t.candidate.backing,entryPath:a.entryPath,logicalPath:a.logicalPath,name:a.subagentId,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,rootPath:a.rootPath,sourceId:a.sourceId,sourceKind:`module`},_;_=u===void 0?{...g,agent:createCompiledAgentResources({...m,remoteAgents:h.remoteAgents}),configResolver:{build:l.kind===`dynamic`?l.build:void 0,eventNames:l.kind===`dynamic`?l.eventNames:[],exportName:c.selectedConfig.source.exportName,logicalPath:c.selectedConfig.source.logicalPath,sourceId:c.selectedConfig.source.sourceId,sourceKind:`module`}}:{...g,agent:createCompiledAgentNodeManifest({...m,config:u,remoteAgents:h.remoteAgents}),description:expectSubagentDescription(u,a)},r.push(_,...h.nodes)}return{nodes:r,remoteAgents:i}}composeNodeSources(e,t){let n=projectAgentSources({externalDependencies:t,extensionScope:e.extensionScope,mountId:e.mountId,layer:e.layer,manifest:e.manifest,nodeId:e.nodeId,nodePath:e.nodePath,owner:e.owner}),r=[],i=[];for(let t of this.registries){let n=t===frameworkAgentSourceRegistry;for(let a of t.registrations){if(a.applyTo===`root`&&!e.isRoot)continue;!n&&a.applyTo===`all-local-nodes`&&assertApplicationOverlayCanApplyToAllNodes(a.source.modules.map(e=>e.logicalPath));let t=createProgrammaticModuleCandidates({layer:n?`framework-default`:`application`,nodeId:e.nodeId,owner:n?{feature:a.source.id,kind:`framework`}:{kind:`application`},registration:a});(n?r:i).push(...t)}}let a=[...n.candidates,...i].filter(e=>e.backing.kind!==`resource`&&(canonicalSourceSlot(e.logicalPath)===`memory`||canonicalSourceSlot(e.logicalPath).startsWith(`memory/`))).map(e=>{let t=deriveMemorySlot(e.logicalPath);return instantiateProgrammaticTemplate({anchor:e,dependencies:{memory:e},logicalPath:`tools/${t}.ts`,owner:{feature:`memory`,kind:`framework`},parameters:{memoryExportName:e.exportName??`default`,memoryLogicalPath:e.logicalPath,slot:t},template:memoryWrapperTemplate})}),o=[...r,...e.developmentExtensionCandidates??[],...n.candidates,...a,...i],s=composeAgentModuleCandidates(o),c=projectSelectedSources({candidates:s.selected.values(),resources:n.resources});return{composed:s,orderedCandidates:o,projected:n,sourcesBySourceId:new Map(c.map(e=>[e.candidate.sourceId,e])),subagentsBySourceId:new Map(n.subagents.map(e=>[e.candidate.sourceId,e]))}}async createPhaseOneNodeSourceState(e,t){let n=this.composeNodeSources(e,t),{mounts:r,sourceIds:i}=createExtensionCompileMounts(e.manifest,e.nodePath);for(let[e,t]of r)this.mounts.set(e,t);let a=new NodeModuleEvaluationContext(this.registries,e=>i.get(bindingMountId(e)??``),this.mounts,this.evaluationId);return a.setBindings(Object.fromEntries([...n.composed.selected.values()].filter(isAgentModuleCandidate).map(e=>[e.sourceId,createAgentModuleBinding(e)]))),{evaluation:a,graph:n,selectedConfig:await loadSelectedNodeConfig(n,a)}}async compileResources(e,t){let n=[],r=[],i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[],m,h=collectSelectedSourceIds(t.composed),g=t.evaluation.loadNamespace;for(let _ of t.orderedCandidates){if(!h.has(_.sourceId))continue;let v=t.sourcesBySourceId.get(_.sourceId);if(v===void 0)continue;let y=t.bindings[_.sourceId],b={binding:y,loadNamespace:g,owner:_.owner};switch(v.kind){case`config`:case`extension`:break;case`channel`:{let n=await compileChannelDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});n.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:_,composed:t.composed}),delete t.bindings[_.sourceId],h.delete(_.sourceId)):p.push(...n.definitions);break}case`connection`:{let n=await compileConnectionDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});n.kind===`connection`?c.push(n.definition):l.push(withExtensionNamespace(n.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId);break}case`hook`:d.push(await compileHookEntry(v.source,{binding:y,loadNamespace:g})),t.evaluation.requireRuntimeEntry(_.sourceId);break;case`instructions`:{let n=await compileInstructionsEntry(e.manifest.agentRoot,v.source,b);n.kind===`instructions`?o.push(n.definition):(s.push(n.definition),t.evaluation.requireRuntimeEntry(_.sourceId));break}case`memory`:u.push(await compileMemoryDefinition(v.source,{binding:y,loadNamespace:g})),t.evaluation.requireRuntimeEntry(_.sourceId);break;case`sandbox`:m=await compileSandboxDefinition(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g}),m.inheritsParent||t.evaluation.requireRuntimeEntry(_.sourceId);break;case`schedule`:{let n=await compileScheduleDefinition(e.manifest.agentRoot,v.source,b);f.push(n),n.sourceKind===`module`&&n.hasRun&&t.evaluation.requireRuntimeEntry(_.sourceId);break}case`skill`:{let n=await compileSkillSource(e.manifest.agentRoot,v.source,b);n.kind===`skill`?i.push(n.definition):(a.push(withExtensionNamespace(n.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId));break}case`tool`:{assertFrameworkToolPolicy(_);let i=await compileToolEntry(e.manifest.agentRoot,v.source,{binding:y,loadNamespace:g});i.kind===`disabled`?(t.composed=disableComposedCandidate({allowUnmatched:canDisableToolWithoutSelectedSource(t,i.name),candidate:_,composed:t.composed}),delete t.bindings[_.sourceId],h.delete(_.sourceId)):i.kind===`tool`?(n.push(i.definition),i.definition.hasExecute&&t.evaluation.requireRuntimeEntry(_.sourceId)):i.kind===`dynamic-tool`?(r.push(withExtensionNamespace(i.definition,_.owner)),t.evaluation.requireRuntimeEntry(_.sourceId)):(assertNonExtensionSpecialTool(_,`Web search`),n.push(i.definition));break}}}if(m===void 0)throw Error(`Agent node "${e.nodeId}" has no selected sandbox source.`);assertUniqueBy(n,e=>e.name,`tool name`),assertUniqueBy(r,e=>e.slug,`dynamic tool slug`),assertUniqueBy(c,e=>e.connectionName,`connection name`),assertUniqueBy(l,e=>e.slug,`dynamic connection slug`),assertUniqueBy(i,e=>e.name,`skill name`);let _=compileChannelRoutes(t,p,this.diagnostics,e.nodeId),v=compileExtensionMounts(e.manifest,t.composed,e.nodePath);for(let e of v)t.evaluation.requireRuntimeEntry(e.mountSourceId);let y=t.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,bindings:y,channelRoutes:_,connections:c,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:l,dynamicInstructions:s,dynamicSkills:a,dynamicTools:r,extensionMounts:v,hooks:d,memories:u,instructions:o,sandbox:m,sandboxWorkspaces:e.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:f,skills:i,sourceComposition:t.composed.composition,tools:n})}};export{compileAgentManifest};
1
+ import{randomUUID}from"node:crypto";import{noDevelopmentExtensions,prepareDevelopmentExtensions}from"#compiler/development-extensions.js";import{ROOT_COMPILED_AGENT_NODE_ID,createCompiledAgentManifest,createCompiledAgentNodeManifest,createCompiledAgentResources,createCompiledSubagentNodeId}from"#compiler/manifest.js";import{summarizeCompilerDiagnostics}from"#compiler/diagnostics.js";import{composeAgentModuleCandidates,createAgentModuleBinding,createProgrammaticModuleCandidates,disableComposedCandidate,isAgentModuleCandidate}from"#compiler/source-graph.js";import{compileMemoryDefinition}from"#compiler/normalize-memory.js";import{frameworkAgentSourceRegistry}from"#framework/sources/registry.js";import{bindingMountId}from"#compiler/extension-mount-bindings.js";import{assertApplicationOverlayCanApplyToAllNodes,assertNonExtensionSpecialTool,assertRootOnlyConfig,assertUniqueBy,assertUniqueRegistryIds,collectSelectedSourceIds,compileChannelRoutes,compileExtensionMounts,createCompiledRemoteAgent,createExtensionCompileMounts,expectSubagentDescription,loadSelectedNodeConfig,mergeExternalDependencies,withDiagnosticsSummary,withExtensionNamespace}from"#compiler/normalize-manifest-helpers.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";import{assertRemoteAgentDefinitionHasNoLocalPackageEntries,normalizeSubagentConfig}from"#compiler/normalize-subagent.js";import{NodeModuleEvaluationContext,markConfigRuntimeEntries}from"#compiler/module-lifecycle.js";import{createCompiledRuntimeModelCatalogLoader}from"#compiler/model-catalog.js";import{compileAgentConfig}from"#compiler/normalize-agent-config.js";import{compileChannelDefinition}from"#compiler/normalize-channel.js";import{compileConnectionDefinition}from"#compiler/normalize-connection.js";import{applyAgentToolPolicy,applyDefaultToolPolicy,assertFrameworkToolPolicy,canDisableToolWithoutSelectedSource}from"#compiler/default-tool-policy.js";import{resolveWorkspaceSubagentDefinition}from"#compiler/resolve-workspace-subagent.js";import{workspaceSubagentName}from"#public/definitions/workspace-agent.js";import{compileHookEntry}from"#compiler/normalize-hook.js";import{compileInstructionsEntry}from"#compiler/normalize-instructions.js";import{createMemoryWrapperCandidates}from"#compiler/memory-wrapper-candidates.js";import{compileSandboxDefinition}from"#compiler/normalize-sandbox.js";import{compileScheduleDefinition}from"#compiler/normalize-schedule.js";import{compileScheduleCollectionDefinition}from"#compiler/normalize-schedule-collection.js";import{isScheduleCollectionDefinition}from"#shared/schedule-collection-definition.js";import{createScheduleCollectionWrapperCandidates}from"#compiler/schedule-collection-wrapper-candidates.js";import{compileSkillSource}from"#compiler/normalize-skill.js";import{compileToolEntry}from"#compiler/normalize-tool.js";import{finalizeNodeSourceState}from"#compiler/node-source-state.js";import{projectAgentSources,projectSelectedSources}from"#compiler/project-sources.js";async function compileAgentManifest(e,t={}){let n=[frameworkAgentSourceRegistry,...t.sourceRegistries??[]];assertUniqueRegistryIds(n);let r={modelCatalog:createCompiledRuntimeModelCatalogLoader(e.appRoot),registries:n},i=t.diagnostics??[],a=await prepareDevelopmentExtensions({diagnostics:i,manifest:e,nodeId:ROOT_COMPILED_AGENT_NODE_ID,selection:t.developmentExtensions??noDevelopmentExtensions()}),o=await new AgentGraphCompiler(r,n,i).compileStaticNode({developmentExtensionCandidates:a.candidates,inheritedExternalDependencies:[],isRoot:!0,layer:`application`,manifest:a.manifest,nodeId:ROOT_COMPILED_AGENT_NODE_ID,nodePath:``,owner:{kind:`application`}}),s=summarizeCompilerDiagnostics(i),c=withDiagnosticsSummary(o.descendants,s);return createCompiledAgentManifest({...o.manifest,diagnosticsSummary:s,subagents:c})}var AgentGraphCompiler=class{context;registries;diagnostics;mounts=new Map;evaluationId=randomUUID();constructor(e,t,n){this.context=e,this.registries=t,this.diagnostics=n}async compileStaticNode(e){let t=await this.createPhaseOneNodeSourceState(e,e.inheritedExternalDependencies),n=await compileAgentConfig(e.manifest,this.context,{binding:t.selectedConfig.binding,definition:t.selectedConfig.definition,source:t.selectedConfig.source});assertRootOnlyConfig(n,e.isRoot,e.manifest.agentId),applyAgentToolPolicy(t,n),applyDefaultToolPolicy(t,n);let r=mergeExternalDependencies(e.inheritedExternalDependencies,n.build?.externalDependencies,e.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));r.length>0&&(n={...n,build:{...n.build,externalDependencies:r}});let i=finalizeNodeSourceState(t,r);markConfigRuntimeEntries(n,i.evaluation);let a=await this.compileResources(e,i),o=await this.compileChildren(e,i,r),s=createCompiledAgentNodeManifest({...a,config:n,remoteAgents:o.remoteAgents});return{descendants:o.nodes,manifest:s}}async compileChildren(e,t,n){let r=[],i=[],a=collectSelectedSourceIds(t.composed),o=t.projected.subagents.filter(e=>a.has(e.candidate.sourceId));for(let t of o){let a=t.source,o=createCompiledSubagentNodeId(e.nodeId,a.sourceId),s={extensionScope:t.extensionScope??e.extensionScope,mountId:t.mountId,inheritedExternalDependencies:n,isRoot:!1,layer:t.candidate.layer,manifest:a.manifest,nodeId:o,nodePath:t.nodePath,owner:t.owner,parentNodeId:e.nodeId},c=await this.createPhaseOneNodeSourceState(s,n),l=normalizeSubagentConfig(c.selectedConfig.definition,`Expected the subagent config export "${c.selectedConfig.source.exportName??`default`}" from "${a.entryPath}" to match the public eve shape.`);if(l.kind===`remote`){let n=workspaceSubagentName(c.selectedConfig.definition),r=n===void 0?l:await resolveWorkspaceSubagentDefinition({definition:l,name:n,registries:this.registries,source:a});assertRemoteAgentDefinitionHasNoLocalPackageEntries(a);let s=c.selectedConfig.source.sourceId;c.evaluation.setBindings({[s]:c.selectedConfig.binding}),c.evaluation.requireRuntimeEntry(s);let u=c.evaluation.finalizeBindings()[s];if(u===void 0)throw Error(`Remote subagent "${o}" has no finalized config binding.`);i.push(createCompiledRemoteAgent({binding:u,definition:r,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,source:a,sourceRef:c.selectedConfig.source}));continue}let u,d;l.kind===`local`?(u=await compileAgentConfig(a.manifest,this.context,{binding:c.selectedConfig.binding,definition:l.definition,source:c.selectedConfig.source}),assertRootOnlyConfig(u,!1,a.manifest.agentId),applyAgentToolPolicy(c,u),applyDefaultToolPolicy(c,u)):d=l.build?.externalDependencies;let f=mergeExternalDependencies(n,u?.build?.externalDependencies,d,a.manifest.resolvedExtensions.flatMap(e=>e.externalDependencies));u!==void 0&&f.length>0&&(u={...u,build:{...u.build,externalDependencies:f}});let p=finalizeNodeSourceState(c,f);u===void 0?p.evaluation.requireRuntimeEntry(c.selectedConfig.source.sourceId):markConfigRuntimeEntries(u,p.evaluation);let m=await this.compileResources(s,p),h=await this.compileChildren(s,p,f),g={backing:t.candidate.backing,entryPath:a.entryPath,logicalPath:a.logicalPath,name:a.subagentId,nodeId:o,owner:t.owner,parentNodeId:e.nodeId,rootPath:a.rootPath,sourceId:a.sourceId,sourceKind:`module`},_;_=u===void 0?{...g,agent:createCompiledAgentResources({...m,remoteAgents:h.remoteAgents}),configResolver:{build:l.kind===`dynamic`?l.build:void 0,eventNames:l.kind===`dynamic`?l.eventNames:[],exportName:c.selectedConfig.source.exportName,logicalPath:c.selectedConfig.source.logicalPath,sourceId:c.selectedConfig.source.sourceId,sourceKind:`module`}}:{...g,agent:createCompiledAgentNodeManifest({...m,config:u,remoteAgents:h.remoteAgents}),description:expectSubagentDescription(u,a)},r.push(_,...h.nodes)}return{nodes:r,remoteAgents:i}}composeNodeSources(e,t){let n=projectAgentSources({externalDependencies:t,extensionScope:e.extensionScope,mountId:e.mountId,layer:e.layer,manifest:e.manifest,nodeId:e.nodeId,nodePath:e.nodePath,owner:e.owner}),r=[],i=[];for(let t of this.registries){let n=t===frameworkAgentSourceRegistry;for(let a of t.registrations){if(a.applyTo===`root`&&!e.isRoot)continue;!n&&a.applyTo===`all-local-nodes`&&assertApplicationOverlayCanApplyToAllNodes(a.source.modules.map(e=>e.logicalPath));let t=createProgrammaticModuleCandidates({layer:n?`framework-default`:`application`,nodeId:e.nodeId,owner:n?{feature:a.source.id,kind:`framework`}:{kind:`application`},registration:a});(n?r:i).push(...t)}}let a=[...r,...e.developmentExtensionCandidates??[],...n.candidates,...createMemoryWrapperCandidates([...n.candidates,...i]),...createScheduleCollectionWrapperCandidates([...n.candidates,...i],e.manifest.agentId),...i],o=composeAgentModuleCandidates(a),s=projectSelectedSources({candidates:o.selected.values(),resources:n.resources});return{composed:o,orderedCandidates:a,projected:n,sourcesBySourceId:new Map(s.map(e=>[e.candidate.sourceId,e])),subagentsBySourceId:new Map(n.subagents.map(e=>[e.candidate.sourceId,e]))}}async createPhaseOneNodeSourceState(e,t){let n=this.composeNodeSources(e,t),{mounts:r,sourceIds:i}=createExtensionCompileMounts(e.manifest,e.nodePath);for(let[e,t]of r)this.mounts.set(e,t);let a=new NodeModuleEvaluationContext(this.registries,e=>i.get(bindingMountId(e)??``),this.mounts,this.evaluationId,e.manifest.appRoot);return a.setBindings(Object.fromEntries([...n.composed.selected.values()].filter(isAgentModuleCandidate).map(e=>[e.sourceId,createAgentModuleBinding(e)]))),{evaluation:a,graph:n,selectedConfig:await loadSelectedNodeConfig(n,a)}}async compileResources(e,t){let n=[],r=[],i=[],a=[],o=[],s=[],c=[],l=[],u=[],d=[],f=[],p=[],m=[],h,g=collectSelectedSourceIds(t.composed),_=t.evaluation.loadNamespace;for(let v of t.orderedCandidates){if(!g.has(v.sourceId))continue;let y=t.sourcesBySourceId.get(v.sourceId);if(y===void 0)continue;let b=t.bindings[v.sourceId],x={binding:b,loadNamespace:_,owner:v.owner};switch(y.kind){case`config`:case`extension`:break;case`channel`:{let n=await compileChannelDefinition(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_});n.kind===`disabled`?(t.composed=disableComposedCandidate({candidate:v,composed:t.composed}),delete t.bindings[v.sourceId],g.delete(v.sourceId)):m.push(...n.definitions);break}case`connection`:{let n=await compileConnectionDefinition(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_});n.kind===`connection`?c.push(n.definition):l.push(withExtensionNamespace(n.definition,v.owner)),t.evaluation.requireRuntimeEntry(v.sourceId);break}case`hook`:d.push(await compileHookEntry(y.source,{binding:b,loadNamespace:_})),t.evaluation.requireRuntimeEntry(v.sourceId);break;case`instructions`:{let n=await compileInstructionsEntry(e.manifest.agentRoot,y.source,x);n.kind===`instructions`?o.push(n.definition):(s.push(n.definition),t.evaluation.requireRuntimeEntry(v.sourceId));break}case`memory`:u.push(await compileMemoryDefinition(y.source,{binding:b,loadNamespace:_})),t.evaluation.requireRuntimeEntry(v.sourceId);break;case`sandbox`:h=await compileSandboxDefinition(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_}),h.inheritsParent||t.evaluation.requireRuntimeEntry(v.sourceId);break;case`schedule`:{let n=y.source.sourceKind===`module`?await loadModuleBackedDefinition({binding:b,loadNamespace:_,kind:`schedule`,source:y.source}):y.source.definition;if(isScheduleCollectionDefinition(n)){p.push(compileScheduleCollectionDefinition(y.source,n)),t.evaluation.requireRuntimeEntry(v.sourceId);break}let r=compileScheduleDefinition(e.manifest.agentRoot,y.source,n,x.owner);f.push(r),r.sourceKind===`module`&&r.hasRun&&t.evaluation.requireRuntimeEntry(v.sourceId);break}case`skill`:{let n=await compileSkillSource(e.manifest.agentRoot,y.source,x);n.kind===`skill`?i.push(n.definition):(a.push(withExtensionNamespace(n.definition,v.owner)),t.evaluation.requireRuntimeEntry(v.sourceId));break}case`tool`:{assertFrameworkToolPolicy(v);let i=await compileToolEntry(e.manifest.agentRoot,y.source,{binding:b,loadNamespace:_});i.kind===`disabled`?(t.composed=disableComposedCandidate({allowUnmatched:canDisableToolWithoutSelectedSource(t,i.name),candidate:v,composed:t.composed}),delete t.bindings[v.sourceId],g.delete(v.sourceId)):i.kind===`tool`?(n.push(i.definition),i.definition.hasExecute&&t.evaluation.requireRuntimeEntry(v.sourceId)):i.kind===`dynamic-tool`?(r.push(withExtensionNamespace(i.definition,v.owner)),t.evaluation.requireRuntimeEntry(v.sourceId)):(assertNonExtensionSpecialTool(v,`Web search`),n.push(i.definition));break}}}if(h===void 0)throw Error(`Agent node "${e.nodeId}" has no selected sandbox source.`);assertUniqueBy(n,e=>e.name,`tool name`),assertUniqueBy(r,e=>e.slug,`dynamic tool slug`),assertUniqueBy(c,e=>e.connectionName,`connection name`),assertUniqueBy(l,e=>e.slug,`dynamic connection slug`),assertUniqueBy(i,e=>e.name,`skill name`);let v=compileChannelRoutes(t,m,this.diagnostics,e.nodeId),y=compileExtensionMounts(e.manifest,t.composed,e.nodePath);for(let e of y)t.evaluation.requireRuntimeEntry(e.mountSourceId);let b=t.evaluation.finalizeBindings();return createCompiledAgentResources({agentRoot:e.manifest.agentRoot,appRoot:e.manifest.appRoot,bindings:b,channelRoutes:v,connections:c,diagnosticsSummary:summarizeCompilerDiagnostics(this.diagnostics),dynamicConnections:l,dynamicInstructions:s,dynamicSkills:a,dynamicTools:r,extensionMounts:y,hooks:d,memories:u,instructions:o,sandbox:h,sandboxWorkspaces:e.manifest.sandboxWorkspaces.map(e=>({logicalPath:e.logicalPath,rootEntries:[...e.rootEntries],sourceId:e.sourceId,sourcePath:e.sourcePath})),schedules:f,scheduleCollections:p,skills:i,sourceComposition:t.composed.composition,tools:n})}};export{compileAgentManifest};
@@ -0,0 +1,3 @@
1
+ import type { CompiledScheduleCollectionDefinition } from "#compiler/manifest.js";
2
+ import type { ScheduleSourceRef } from "#discover/manifest.js";
3
+ export declare function compileScheduleCollectionDefinition(source: ScheduleSourceRef, value: unknown): CompiledScheduleCollectionDefinition;
@@ -0,0 +1 @@
1
+ import{stripLogicalPathExtension}from"#discover/filesystem.js";import{normalizeScheduleCollectionDefinition}from"#internal/authored-definition/schedule-collection.js";function compileScheduleCollectionDefinition(e,t){if(e.sourceKind!==`module`)throw Error(`Schedule collections must be authored as modules: "${e.logicalPath}".`);let n=normalizeScheduleCollectionDefinition(t,`Expected the schedule collection export "${e.exportName??`default`}" from "${e.logicalPath}" to match the public eve shape.`),r={logicalPath:e.logicalPath,name:stripLogicalPathExtension(e.logicalPath).replace(/^schedules\//u,``),providerKind:n.provider.kind,sourceId:e.sourceId,sourceKind:`module`};return n.description!==void 0&&(r.description=n.description),n.tool!==void 0&&(r.tools=n.tool),r}export{compileScheduleCollectionDefinition};
@@ -1,6 +1,6 @@
1
1
  import type { ScheduleSourceRef } from "#discover/manifest.js";
2
2
  import type { CompiledScheduleDefinition } from "#compiler/manifest.js";
3
- import { type SourceDefinitionCompileOptions } from "#compiler/normalize-helpers.js";
3
+ import type { AgentSourceOwner } from "#compiler/source-graph.js";
4
4
  /**
5
5
  * Compiles one authored schedule into the normalized shape consumed by
6
6
  * the runtime scheduler.
@@ -12,4 +12,4 @@ import { type SourceDefinitionCompileOptions } from "#compiler/normalize-helpers
12
12
  * path under `schedules/` minus the extension
13
13
  * (`schedules/billing/invoice-sweep.ts` → `"billing/invoice-sweep"`).
14
14
  */
15
- export declare function compileScheduleDefinition(_agentRoot: string, source: ScheduleSourceRef, options: SourceDefinitionCompileOptions): Promise<CompiledScheduleDefinition>;
15
+ export declare function compileScheduleDefinition(_agentRoot: string, source: ScheduleSourceRef, value: unknown, owner: AgentSourceOwner): CompiledScheduleDefinition;
@@ -1 +1 @@
1
- import{stripLogicalPathExtension}from"#discover/filesystem.js";import{normalizeScheduleDefinition}from"#internal/authored-definition/core.js";import{loadModuleBackedDefinition,requireModuleBackedDefinitionLoadOptions}from"#compiler/normalize-helpers.js";import{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{workflowCallbackErrorMessage}from"#shared/workflow-tool-context.js";async function compileScheduleDefinition(e,t,n){let r=t.sourceKind===`markdown`?normalizeScheduleDefinition(t.definition,`Expected the compiled schedule definition at "${t.logicalPath}" to match the public eve shape.`):normalizeScheduleDefinition(await loadModuleBackedDefinition({...requireModuleBackedDefinitionLoadOptions(n,t.logicalPath),kind:`schedule`,source:t}),`Expected the schedule export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`);if(readWorkflowFunctionId(r.run)!==void 0)throw Error(`${t.logicalPath}: ${workflowCallbackErrorMessage(`schedule`)}`);let i={cron:r.cron,hasRun:r.run!==void 0,logicalPath:t.logicalPath,name:deriveScheduleName(t.logicalPath),sourceId:t.sourceId,sourceKind:t.sourceKind},a=r.markdown===void 0?i:{...i,markdown:r.markdown.trim()};return t.sourceKind===`module`?{...a,sourceKind:`module`}:{...a,owner:n.owner,sourceKind:`markdown`}}function deriveScheduleName(e){return stripLogicalPathExtension(e).replace(/^schedules\//,``)}export{compileScheduleDefinition};
1
+ import{stripLogicalPathExtension}from"#discover/filesystem.js";import{normalizeScheduleDefinition}from"#internal/authored-definition/core.js";import{readWorkflowFunctionId}from"#internal/workflow/reference.js";import{workflowCallbackErrorMessage}from"#shared/workflow-tool-context.js";function compileScheduleDefinition(e,t,n,r){let i=normalizeScheduleDefinition(n,t.sourceKind===`markdown`?`Expected the compiled schedule definition at "${t.logicalPath}" to match the public eve shape.`:`Expected the schedule export "${t.exportName??`default`}" from "${t.logicalPath}" to match the public eve shape.`);if(readWorkflowFunctionId(i.run)!==void 0)throw Error(`${t.logicalPath}: ${workflowCallbackErrorMessage(`schedule`)}`);let a={cron:i.cron,hasRun:i.run!==void 0,logicalPath:t.logicalPath,name:deriveScheduleName(t.logicalPath),sourceId:t.sourceId,sourceKind:t.sourceKind},o=i.markdown===void 0?a:{...a,markdown:i.markdown.trim()};return t.sourceKind===`module`?{...o,sourceKind:`module`}:{...o,owner:r,sourceKind:`markdown`}}function deriveScheduleName(e){return stripLogicalPathExtension(e).replace(/^schedules\//,``)}export{compileScheduleDefinition};
@@ -1 +1 @@
1
- import{findEveProjectContext}from"#internal/project-context.js";import{discoverAgent}from"#discover/discover-agent.js";import{createCompiledBindingNamespaceLoader}from"#compiler/load-binding-namespace.js";import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";async function resolveWorkspaceSubagentDefinition(e){let t=await findEveProjectContext(e.source.rootPath);if(t?.kind!==`workspace-member`)throw Error(`Workspace subagent "${e.source.logicalPath}" must be authored by an agent workspace member.`);let n=t.workspace.members.find(t=>t.name===e.name);if(n===void 0)throw Error(`Workspace subagent "${e.source.logicalPath}" targets unknown workspace member ${JSON.stringify(e.name)}.`);if(e.definition.description.trim().length>0)return e.definition;let{resolveDiscoveryProject:r}=await import(`#discover/project.js`),i=await r(n.appRoot),a=(await discoverAgent({agentRoot:i.agentRoot,appRoot:i.appRoot})).manifest.configModule;if(a===void 0)throw Error(`Workspace member ${JSON.stringify(e.name)} has no agent config module.`);let o={backing:{externalDependencies:[],kind:`filesystem`,sourcePath:`${i.agentRoot}/${a.logicalPath}`},logicalPath:a.logicalPath,owner:{kind:`application`}},s=normalizeAgentDefinition(await loadModuleBackedDefinition({binding:o,kind:`agent config`,loadNamespace:createCompiledBindingNamespaceLoader({bindings:{[a.sourceId]:o},registries:e.registries}),source:a}),`Expected workspace member ${JSON.stringify(e.name)} agent config to match the public eve shape.`);if(s.description===void 0||s.description.trim().length===0)throw Error(`Workspace member ${JSON.stringify(e.name)} must define a non-empty description.`);return{...e.definition,description:s.description}}export{resolveWorkspaceSubagentDefinition};
1
+ import{findEveProjectContext}from"#internal/project-context.js";import{discoverAgent}from"#discover/discover-agent.js";import{createCompiledBindingNamespaceLoader}from"#compiler/load-binding-namespace.js";import{normalizeAgentDefinition}from"#internal/authored-definition/core.js";import{loadModuleBackedDefinition}from"#compiler/normalize-helpers.js";async function resolveWorkspaceSubagentDefinition(e){let t=await findEveProjectContext(e.source.rootPath);if(t?.kind!==`workspace-member`)throw Error(`Workspace subagent "${e.source.logicalPath}" must be authored by an agent workspace member.`);let n=t.workspace.members.find(t=>t.name===e.name);if(n===void 0)throw Error(`Workspace subagent "${e.source.logicalPath}" targets unknown workspace member ${JSON.stringify(e.name)}.`);if(e.definition.description.trim().length>0)return e.definition;let{resolveDiscoveryProject:r}=await import(`#discover/project.js`),i=await r(n.appRoot),a=(await discoverAgent({agentRoot:i.agentRoot,appRoot:i.appRoot})).manifest.configModule;if(a===void 0)throw Error(`Workspace member ${JSON.stringify(e.name)} has no agent config module.`);let o={backing:{externalDependencies:[],kind:`filesystem`,sourcePath:`${i.agentRoot}/${a.logicalPath}`},logicalPath:a.logicalPath,owner:{kind:`application`}},s=normalizeAgentDefinition(await loadModuleBackedDefinition({binding:o,kind:`agent config`,loadNamespace:createCompiledBindingNamespaceLoader({appRoot:i.appRoot,bindings:{[a.sourceId]:o},registries:e.registries}),source:a}),`Expected workspace member ${JSON.stringify(e.name)} agent config to match the public eve shape.`);if(s.description===void 0||s.description.trim().length===0)throw Error(`Workspace member ${JSON.stringify(e.name)} must define a non-empty description.`);return{...e.definition,description:s.description}}export{resolveWorkspaceSubagentDefinition};
@@ -0,0 +1,2 @@
1
+ import { type AgentModuleCandidate, type AgentSourceCandidate } from "#compiler/source-graph.js";
2
+ export declare function createScheduleCollectionWrapperCandidates(candidates: readonly AgentSourceCandidate[], application: string): AgentModuleCandidate[];
@@ -0,0 +1 @@
1
+ import{stripLogicalPathExtension}from"#discover/filesystem.js";import{canonicalSourceSlot,instantiateProgrammaticTemplate}from"#compiler/source-graph.js";import{scheduleCollectionWrapperTemplate}from"#framework/sources/registry.js";import{scheduleCollectionToolPrefix}from"#shared/schedule-collection-tools.js";function createScheduleCollectionWrapperCandidates(e,t){return e.filter(e=>e.backing.kind!==`resource`&&canonicalSourceSlot(e.logicalPath).startsWith(`schedules/`)).map(e=>{let n=stripLogicalPathExtension(e.logicalPath).slice(10);return instantiateProgrammaticTemplate({anchor:e,dependencies:{collection:e},logicalPath:`tools/${scheduleCollectionToolPrefix(n)}.ts`,owner:{feature:`schedule-collection`,kind:`framework`},parameters:{application:t,collection:n,collectionExportName:e.exportName??`default`,collectionLogicalPath:e.logicalPath},template:scheduleCollectionWrapperTemplate})})}export{createScheduleCollectionWrapperCandidates};
@@ -1 +1 @@
1
- import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{collectRuntimeModuleBindingsForManifest}from"#compiler/module-map.js";import{HOST_HTTP_INVENTORY}from"#framework/host-inventory.js";function validateCompiledAgentManifest(e){let t=new Map([[ROOT_COMPILED_AGENT_NODE_ID,e]]);for(let n of e.subagents)t.has(n.nodeId)&&fail(`subagent node id "${n.nodeId}" is duplicated`),t.set(n.nodeId,n.agent),validateSubagentRecord(n);validateSubagentTree(e,t),validateCompiledAgentResources(e,{activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===ROOT_COMPILED_AGENT_NODE_ID).map(e=>e.sourceId)});for(let t of e.subagents)validateCompiledAgentResources(t.agent,{additionalModuleSources:t.configResolver===void 0?[]:[t.configResolver],activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===t.nodeId).map(e=>e.sourceId)});for(let[n,r]of t)validateUniqueIdentities([...r.tools.map(e=>({identity:e.name,kind:`tool`})),...r.remoteAgents.map(e=>({identity:e.name,kind:`remote agent`})),...e.subagents.filter(e=>e.parentNodeId===n).map(e=>({identity:e.name,kind:`local agent`}))],`tool and subagent public name`)}function validateSubagentTree(e,t){let n=new Map(e.subagents.map(e=>[e.nodeId,e.parentNodeId]));for(let r of e.subagents){t.has(r.parentNodeId)||fail(`subagent node "${r.nodeId}" has missing parent "${r.parentNodeId}"`);let e=new Set,i=r.nodeId;for(;i!==ROOT_COMPILED_AGENT_NODE_ID;){e.has(i)&&fail(`subagent graph contains a cycle at node "${i}"`),e.add(i);let t=n.get(i);t===void 0&&fail(`subagent node "${r.nodeId}" is not reachable from the root`),i=t}}}function validateCompiledModuleMap(e,t){let n=new Map([[`__root__`,new Set(collectRuntimeModuleBindingsForManifest(e).map(e=>e.sourceId))],...e.subagents.map(e=>[e.nodeId,new Set(collectRuntimeModuleBindingsForManifest(e.agent).map(e=>e.sourceId))])]),r=Object.keys(t.nodes);(r.length!==n.size||r.some(e=>!n.has(e)))&&fail(`compiled module map node set does not match the manifest`);for(let[e,r]of n){let n=t.nodes[e];n===void 0&&fail(`compiled module map node "${e}" is missing`);let i=Object.keys(n.modules);(i.length!==r.size||i.some(e=>!r.has(e)))&&fail(`compiled module map sources for node "${e}" do not match its bindings`)}}function validateCompiledAgentResources(e,t={}){validateUniqueIdentities(e.tools.map(e=>({identity:e.name,kind:`tool`})),`tool name`),validateUniqueIdentities(e.dynamicTools.map(e=>({identity:e.slug,kind:`dynamic tool`})),`dynamic tool slug`),validateUniqueIdentities(e.skills.map(e=>({identity:e.name,kind:`skill`})),`skill name`),validateUniqueIdentities(e.dynamicSkills.map(e=>({identity:e.slug,kind:`dynamic skill`})),`dynamic skill slug`),validateUniqueIdentities(e.instructions.map(e=>({identity:e.name,kind:`instructions`})),`instructions name`),validateUniqueIdentities(e.dynamicInstructions.map(e=>({identity:e.slug,kind:`dynamic instructions`})),`dynamic instructions slug`),validateUniqueIdentities(e.connections.map(e=>({identity:e.connectionName,kind:`connection`})),`connection name`),validateUniqueIdentities(e.dynamicConnections.map(e=>({identity:e.slug,kind:`dynamic connection`})),`dynamic connection slug`),validateUniqueIdentities(e.hooks.map(e=>({identity:e.slug,kind:`hook`})),`hook slug`),validateUniqueIdentities(e.memories.map(e=>({identity:e.slot,kind:`memory`})),`memory slot`),validateUniqueIdentities(e.schedules.map(e=>({identity:e.name,kind:`schedule`})),`schedule name`);let n=collectReferencedModuleSources(e);for(let e of t.additionalModuleSources??[])n.set(e.sourceId,{logicalPath:e.logicalPath});for(let[t,r]of n){let n=e.bindings[t];n===void 0&&fail(`module source "${t}" has no compiled binding`),validateBinding(t,r.logicalPath,n)}for(let t of Object.keys(e.bindings))n.has(t)||fail(`compiled binding "${t}" is not referenced by its node manifest`);validateProgrammaticBindingDependencies(e.bindings);let r=new Set([...n.keys(),...collectActiveResourceSourceIds(e),...e.remoteAgents.map(e=>e.sourceId),...t.activeResourceSourceIds??[]]),i=new Set;for(let n of e.sourceComposition.entries){if(n.kind===`disabled`){i.has(n.source.sourceId)&&fail(`disabled composition source "${n.source.sourceId}" is duplicated`),i.add(n.source.sourceId),e.bindings[n.source.sourceId]!==void 0&&fail(`disabled source "${n.source.sourceId}" retains an active binding`);continue}!r.has(n.winnerSourceId)&&!i.has(n.winnerSourceId)&&!e.sourceComposition.entries.some(e=>e.kind===`disabled`&&e.source.sourceId===n.winnerSourceId)&&t.allowUnknownResourceWinners!==!0&&fail(`shadowed source "${n.source.sourceId}" has dangling winner "${n.winnerSourceId}"`)}validateChannelRoutePlan(e);for(let t of e.remoteAgents)validateBinding(t.sourceId,t.logicalPath,t.binding),t.parentNodeId.length===0&&fail(`remote agent "${t.sourceId}" has no parent`)}function validateSubagentRecord(e){if(e.name===`agent`&&fail(`subagent name "agent" is reserved for the built-in root-copy target`),(e.backing.kind!==`resource`||e.backing.sourcePath.length===0)&&fail(`subagent "${e.nodeId}" has no physical resource backing`),e.parentNodeId.length===0&&fail(`subagent "${e.nodeId}" has no parent`),e.configResolver!==void 0){let t=e.agent.bindings[e.configResolver.sourceId];t===void 0&&fail(`dynamic subagent "${e.nodeId}" config resolver has no binding`),validateBinding(e.configResolver.sourceId,e.configResolver.logicalPath,t)}}function validateBinding(e,t,n){!n.usage.compile&&!n.usage.runtimeEntry&&fail(`compiled binding "${e}" has no compile or runtime usage`),n.logicalPath!==t&&fail(`compiled binding "${e}" targets "${n.logicalPath}", not "${t}"`),n.owner.kind===`extension`&&n.backing.kind===`filesystem`&&n.backing.extensionScope===void 0&&fail(`extension-owned filesystem binding "${e}" has no extension scope`)}function validateProgrammaticBindingDependencies(e){let t=new Set,n=new Set,visit=r=>{if(n.has(r))return;t.has(r)&&fail(`programmatic binding dependency cycle includes "${r}"`);let i=e[r];if(i===void 0&&fail(`programmatic binding dependency "${r}" is missing`),t.add(r),i.backing.kind===`programmatic`)for(let[t,n]of Object.entries(i.backing.dependencies??{}))t.trim().length===0&&fail(`programmatic binding "${r}" has an empty dependency alias`),e[n]===void 0&&fail(`programmatic binding "${r}" depends on missing binding "${n}"`),i.usage.runtimeEntry&&e[n]?.usage.runtimeEntry!==!0&&fail(`runtime binding "${r}" depends on non-runtime binding "${n}"`),visit(n);t.delete(r),n.add(r)};for(let t of Object.keys(e))visit(t)}function collectReferencedModuleSources(e){let t=new Map,add=e=>{let n=t.get(e.sourceId);n!==void 0&&n.logicalPath!==e.logicalPath&&fail(`module source "${e.sourceId}" is referenced with two logical paths`),t.set(e.sourceId,{logicalPath:e.logicalPath})};`config`in e&&(add(e.config.source),e.config.model?.source!==void 0&&add(e.config.model.source),e.config.dynamicModel!==void 0&&add(e.config.dynamicModel));for(let t of e.channelRoutes.effective)add(t);for(let t of e.channelRoutes.shadowed)t.source.backing.kind!==`resource`&&add(t.source);for(let t of e.connections)add(t);for(let t of e.dynamicConnections)add(t);for(let t of e.tools)add(t);for(let t of e.dynamicInstructions)add(t);for(let t of e.dynamicSkills)add(t);for(let t of e.dynamicTools)add(t);for(let t of e.hooks)add(t);for(let t of e.memories)add(t);for(let t of e.instructions)t.sourceKind===`module`&&add(t);for(let t of e.skills)t.sourceKind===`module`&&add(t);for(let t of e.schedules)t.sourceKind===`module`&&add(t);add(e.sandbox);for(let t of e.extensionMounts)add({logicalPath:t.mountLogicalPath,sourceId:t.mountSourceId});return t}function collectActiveResourceSourceIds(e){return[...e.instructions.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.skills.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.schedules.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.sandboxWorkspaces.map(e=>e.sourceId)]}function validateChannelRoutePlan(e){let t=new Set,n=new Set;for(let r of e.channelRoutes.effective){let i=routeIdentity(r);t.has(i)&&fail(`effective channel route "${i}" is duplicated`),t.add(i),n.add(r.sourceId),e.bindings[r.sourceId]===void 0&&fail(`effective channel route source "${r.sourceId}" has no binding`),HOST_HTTP_INVENTORY.find(e=>methodsOverlap(r.method,e.method)&&patternsOverlap(r.urlPath,e.path))!==void 0&&fail(`effective route ${r.method} ${r.urlPath} overlaps reserved host route`)}for(let t of e.channelRoutes.shadowed)n.has(t.winnerSourceId)||fail(`shadowed channel route has dangling winner "${t.winnerSourceId}"`);let r=new Set;for(let t of e.channelRoutes.preflight){let n=normalizePattern(t.urlPath);r.has(n)&&fail(`generated preflight "${n}" is duplicated`),r.add(n),t.sourceIds.length===0&&fail(`generated preflight "${n}" has no causes`);for(let r of t.sourceIds)e.channelRoutes.effective.find(e=>e.sourceId===r&&e.cors!==void 0&&e.method!==`WEBSOCKET`&&patternsOverlap(e.urlPath,t.urlPath))===void 0&&fail(`generated preflight "${n}" has invalid cause "${r}"`)}}function routeIdentity(e){return`${e.method} ${normalizePattern(e.urlPath)}`}function normalizePattern(e){return splitPath(e).map(e=>isParameter(e)?`:`:e).join(`/`)}function patternsOverlap(e,t){let n=splitPath(e),r=splitPath(t);return n.length===r.length&&n.every((e,t)=>e===r[t]||isParameter(e)||isParameter(r[t]))}function splitPath(e){return e.replace(/^\/+|\/+$/g,``).split(`/`)}function isParameter(e){return e.startsWith(`:`)||/^\[[^\]]+\]$/.test(e)}function methodsOverlap(e,t){return e===`ALL`||t===`ALL`||e===t}function validateUniqueIdentities(e,t){let n=new Map;for(let r of e){let e=n.get(r.identity);e!==void 0&&fail(`${t} "${r.identity}" is shared by ${e} and ${r.kind}`),n.set(r.identity,r.kind)}}function fail(e){throw Error(`Invalid compiled eve artifact: ${e}.`)}export{validateCompiledAgentManifest,validateCompiledAgentResources,validateCompiledModuleMap};
1
+ import{ROOT_COMPILED_AGENT_NODE_ID}from"#compiler/manifest.js";import{collectRuntimeModuleBindingsForManifest}from"#compiler/module-map.js";import{HOST_HTTP_INVENTORY}from"#framework/host-inventory.js";function validateCompiledAgentManifest(e){let t=new Map([[ROOT_COMPILED_AGENT_NODE_ID,e]]);for(let n of e.subagents)t.has(n.nodeId)&&fail(`subagent node id "${n.nodeId}" is duplicated`),t.set(n.nodeId,n.agent),validateSubagentRecord(n);validateSubagentTree(e,t),validateCompiledAgentResources(e,{activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===ROOT_COMPILED_AGENT_NODE_ID).map(e=>e.sourceId)});for(let t of e.subagents)validateCompiledAgentResources(t.agent,{additionalModuleSources:t.configResolver===void 0?[]:[t.configResolver],activeResourceSourceIds:e.subagents.filter(e=>e.parentNodeId===t.nodeId).map(e=>e.sourceId)});for(let[n,r]of t)validateUniqueIdentities([...r.tools.map(e=>({identity:e.name,kind:`tool`})),...r.remoteAgents.map(e=>({identity:e.name,kind:`remote agent`})),...e.subagents.filter(e=>e.parentNodeId===n).map(e=>({identity:e.name,kind:`local agent`}))],`tool and subagent public name`)}function validateSubagentTree(e,t){let n=new Map(e.subagents.map(e=>[e.nodeId,e.parentNodeId]));for(let r of e.subagents){t.has(r.parentNodeId)||fail(`subagent node "${r.nodeId}" has missing parent "${r.parentNodeId}"`);let e=new Set,i=r.nodeId;for(;i!==ROOT_COMPILED_AGENT_NODE_ID;){e.has(i)&&fail(`subagent graph contains a cycle at node "${i}"`),e.add(i);let t=n.get(i);t===void 0&&fail(`subagent node "${r.nodeId}" is not reachable from the root`),i=t}}}function validateCompiledModuleMap(e,t){let n=new Map([[`__root__`,new Set(collectRuntimeModuleBindingsForManifest(e).map(e=>e.sourceId))],...e.subagents.map(e=>[e.nodeId,new Set(collectRuntimeModuleBindingsForManifest(e.agent).map(e=>e.sourceId))])]),r=Object.keys(t.nodes);(r.length!==n.size||r.some(e=>!n.has(e)))&&fail(`compiled module map node set does not match the manifest`);for(let[e,r]of n){let n=t.nodes[e];n===void 0&&fail(`compiled module map node "${e}" is missing`);let i=Object.keys(n.modules);(i.length!==r.size||i.some(e=>!r.has(e)))&&fail(`compiled module map sources for node "${e}" do not match its bindings`)}}function validateCompiledAgentResources(e,t={}){validateUniqueIdentities(e.tools.map(e=>({identity:e.name,kind:`tool`})),`tool name`),validateUniqueIdentities(e.dynamicTools.map(e=>({identity:e.slug,kind:`dynamic tool`})),`dynamic tool slug`),validateUniqueIdentities(e.skills.map(e=>({identity:e.name,kind:`skill`})),`skill name`),validateUniqueIdentities(e.dynamicSkills.map(e=>({identity:e.slug,kind:`dynamic skill`})),`dynamic skill slug`),validateUniqueIdentities(e.instructions.map(e=>({identity:e.name,kind:`instructions`})),`instructions name`),validateUniqueIdentities(e.dynamicInstructions.map(e=>({identity:e.slug,kind:`dynamic instructions`})),`dynamic instructions slug`),validateUniqueIdentities(e.connections.map(e=>({identity:e.connectionName,kind:`connection`})),`connection name`),validateUniqueIdentities(e.dynamicConnections.map(e=>({identity:e.slug,kind:`dynamic connection`})),`dynamic connection slug`),validateUniqueIdentities(e.hooks.map(e=>({identity:e.slug,kind:`hook`})),`hook slug`),validateUniqueIdentities(e.memories.map(e=>({identity:e.slot,kind:`memory`})),`memory slot`),validateUniqueIdentities(e.schedules.map(e=>({identity:e.name,kind:`schedule`})),`schedule name`),validateUniqueIdentities(e.scheduleCollections.map(e=>({identity:e.name,kind:`schedule collection`})),`schedule collection name`);let n=collectReferencedModuleSources(e);for(let e of t.additionalModuleSources??[])n.set(e.sourceId,{logicalPath:e.logicalPath});for(let[t,r]of n){let n=e.bindings[t];n===void 0&&fail(`module source "${t}" has no compiled binding`),validateBinding(t,r.logicalPath,n)}for(let t of Object.keys(e.bindings))n.has(t)||fail(`compiled binding "${t}" is not referenced by its node manifest`);validateProgrammaticBindingDependencies(e.bindings);let r=new Set([...n.keys(),...collectActiveResourceSourceIds(e),...e.remoteAgents.map(e=>e.sourceId),...t.activeResourceSourceIds??[]]),i=new Set;for(let n of e.sourceComposition.entries){if(n.kind===`disabled`){i.has(n.source.sourceId)&&fail(`disabled composition source "${n.source.sourceId}" is duplicated`),i.add(n.source.sourceId),e.bindings[n.source.sourceId]!==void 0&&fail(`disabled source "${n.source.sourceId}" retains an active binding`);continue}!r.has(n.winnerSourceId)&&!i.has(n.winnerSourceId)&&!e.sourceComposition.entries.some(e=>e.kind===`disabled`&&e.source.sourceId===n.winnerSourceId)&&t.allowUnknownResourceWinners!==!0&&fail(`shadowed source "${n.source.sourceId}" has dangling winner "${n.winnerSourceId}"`)}validateChannelRoutePlan(e);for(let t of e.remoteAgents)validateBinding(t.sourceId,t.logicalPath,t.binding),t.parentNodeId.length===0&&fail(`remote agent "${t.sourceId}" has no parent`)}function validateSubagentRecord(e){if(e.name===`agent`&&fail(`subagent name "agent" is reserved for the built-in root-copy target`),(e.backing.kind!==`resource`||e.backing.sourcePath.length===0)&&fail(`subagent "${e.nodeId}" has no physical resource backing`),e.parentNodeId.length===0&&fail(`subagent "${e.nodeId}" has no parent`),e.configResolver!==void 0){let t=e.agent.bindings[e.configResolver.sourceId];t===void 0&&fail(`dynamic subagent "${e.nodeId}" config resolver has no binding`),validateBinding(e.configResolver.sourceId,e.configResolver.logicalPath,t)}}function validateBinding(e,t,n){!n.usage.compile&&!n.usage.runtimeEntry&&fail(`compiled binding "${e}" has no compile or runtime usage`),n.logicalPath!==t&&fail(`compiled binding "${e}" targets "${n.logicalPath}", not "${t}"`),n.owner.kind===`extension`&&n.backing.kind===`filesystem`&&n.backing.extensionScope===void 0&&fail(`extension-owned filesystem binding "${e}" has no extension scope`)}function validateProgrammaticBindingDependencies(e){let t=new Set,n=new Set,visit=r=>{if(n.has(r))return;t.has(r)&&fail(`programmatic binding dependency cycle includes "${r}"`);let i=e[r];if(i===void 0&&fail(`programmatic binding dependency "${r}" is missing`),t.add(r),i.backing.kind===`programmatic`)for(let[t,n]of Object.entries(i.backing.dependencies??{}))t.trim().length===0&&fail(`programmatic binding "${r}" has an empty dependency alias`),e[n]===void 0&&fail(`programmatic binding "${r}" depends on missing binding "${n}"`),i.usage.runtimeEntry&&e[n]?.usage.runtimeEntry!==!0&&fail(`runtime binding "${r}" depends on non-runtime binding "${n}"`),visit(n);t.delete(r),n.add(r)};for(let t of Object.keys(e))visit(t)}function collectReferencedModuleSources(e){let t=new Map,add=e=>{let n=t.get(e.sourceId);n!==void 0&&n.logicalPath!==e.logicalPath&&fail(`module source "${e.sourceId}" is referenced with two logical paths`),t.set(e.sourceId,{logicalPath:e.logicalPath})};`config`in e&&(add(e.config.source),e.config.model?.source!==void 0&&add(e.config.model.source),e.config.dynamicModel!==void 0&&add(e.config.dynamicModel));for(let t of e.channelRoutes.effective)add(t);for(let t of e.channelRoutes.shadowed)t.source.backing.kind!==`resource`&&add(t.source);for(let t of e.connections)add(t);for(let t of e.dynamicConnections)add(t);for(let t of e.tools)add(t);for(let t of e.dynamicInstructions)add(t);for(let t of e.dynamicSkills)add(t);for(let t of e.dynamicTools)add(t);for(let t of e.hooks)add(t);for(let t of e.memories)add(t);for(let t of e.instructions)t.sourceKind===`module`&&add(t);for(let t of e.skills)t.sourceKind===`module`&&add(t);for(let t of e.schedules)t.sourceKind===`module`&&add(t);for(let t of e.scheduleCollections)add(t);add(e.sandbox);for(let t of e.extensionMounts)add({logicalPath:t.mountLogicalPath,sourceId:t.mountSourceId});return t}function collectActiveResourceSourceIds(e){return[...e.instructions.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.skills.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.schedules.filter(e=>e.sourceKind!==`module`).map(e=>e.sourceId),...e.sandboxWorkspaces.map(e=>e.sourceId)]}function validateChannelRoutePlan(e){let t=new Set,n=new Set;for(let r of e.channelRoutes.effective){let i=routeIdentity(r);t.has(i)&&fail(`effective channel route "${i}" is duplicated`),t.add(i),n.add(r.sourceId),e.bindings[r.sourceId]===void 0&&fail(`effective channel route source "${r.sourceId}" has no binding`),HOST_HTTP_INVENTORY.find(e=>methodsOverlap(r.method,e.method)&&patternsOverlap(r.urlPath,e.path))!==void 0&&fail(`effective route ${r.method} ${r.urlPath} overlaps reserved host route`)}for(let t of e.channelRoutes.shadowed)n.has(t.winnerSourceId)||fail(`shadowed channel route has dangling winner "${t.winnerSourceId}"`);let r=new Set;for(let t of e.channelRoutes.preflight){let n=normalizePattern(t.urlPath);r.has(n)&&fail(`generated preflight "${n}" is duplicated`),r.add(n),t.sourceIds.length===0&&fail(`generated preflight "${n}" has no causes`);for(let r of t.sourceIds)e.channelRoutes.effective.find(e=>e.sourceId===r&&e.cors!==void 0&&e.method!==`WEBSOCKET`&&patternsOverlap(e.urlPath,t.urlPath))===void 0&&fail(`generated preflight "${n}" has invalid cause "${r}"`)}}function routeIdentity(e){return`${e.method} ${normalizePattern(e.urlPath)}`}function normalizePattern(e){return splitPath(e).map(e=>isParameter(e)?`:`:e).join(`/`)}function patternsOverlap(e,t){let n=splitPath(e),r=splitPath(t);return n.length===r.length&&n.every((e,t)=>e===r[t]||isParameter(e)||isParameter(r[t]))}function splitPath(e){return e.replace(/^\/+|\/+$/g,``).split(`/`)}function isParameter(e){return e.startsWith(`:`)||/^\[[^\]]+\]$/.test(e)}function methodsOverlap(e,t){return e===`ALL`||t===`ALL`||e===t}function validateUniqueIdentities(e,t){let n=new Map;for(let r of e){let e=n.get(r.identity);e!==void 0&&fail(`${t} "${r.identity}" is shared by ${e} and ${r.kind}`),n.set(r.identity,r.kind)}}function fail(e){throw Error(`Invalid compiled eve artifact: ${e}.`)}export{validateCompiledAgentManifest,validateCompiledAgentResources,validateCompiledModuleMap};
@@ -1 +1 @@
1
- import{loadContext}from"#context/container.js";import{DynamicSkillSandboxKey,SandboxKey,SessionKey}from"#context/keys.js";function buildCallbackContext(){let e=loadContext(),t=e.require(SessionKey);return{session:{id:t.sessionId,auth:t.auth,turn:t.turn,parent:t.parent},getSandbox(t){let n=e.get(SandboxKey);if(n===void 0)throw Error(`eve sandbox runtime access is unavailable in the current async context. Call ctx.getSandbox() only from authored runtime functions such as tools, hooks, and channel events.`);if(t!==void 0&&n.environment!==t)throw Error(`The requested sandbox environment is not active for the current session.`);return n.get().then(t=>{if(t===null)throw Error(`The sandbox is not available in the current authored runtime context.`);return withRuntimeSandboxLifecycle(t,async t=>{if(n.delete===void 0)throw Error(`The active sandbox runtime does not support deletion.`);await n.delete(t),e.delete(DynamicSkillSandboxKey)},async()=>await n.stop())})}}}function withRuntimeSandboxLifecycle(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(i===`delete`)return t;if(i===`stop`)return n;let a=Reflect.get(e,i,e);return typeof a==`function`?a.bind(e):a},getOwnPropertyDescriptor(t,n){if(n===`delete`||n===`stop`)return{configurable:!0,enumerable:!0,writable:!1};let r=Reflect.getOwnPropertyDescriptor(e,n);return r===void 0?void 0:{...r,configurable:!0}},has(t,n){return n===`delete`||n===`stop`||Reflect.has(e,n)},ownKeys(){return[...new Set([...Reflect.ownKeys(e),`delete`,`stop`])]}})}export{buildCallbackContext,withRuntimeSandboxLifecycle};
1
+ import{loadContext}from"#context/container.js";import{DynamicSkillSandboxKey,SandboxKey,SessionKey}from"#context/keys.js";import{readSessionSchedule}from"#context/session-schedule.js";function buildCallbackContext(){let e=loadContext(),t=e.require(SessionKey);return{session:{id:t.sessionId,auth:t.auth,turn:t.turn,parent:t.parent,schedule:readSessionSchedule(e)},getSandbox(t){let n=e.get(SandboxKey);if(n===void 0)throw Error(`eve sandbox runtime access is unavailable in the current async context. Call ctx.getSandbox() only from authored runtime functions such as tools, hooks, and channel events.`);if(t!==void 0&&n.environment!==t)throw Error(`The requested sandbox environment is not active for the current session.`);return n.get().then(t=>{if(t===null)throw Error(`The sandbox is not available in the current authored runtime context.`);return withRuntimeSandboxLifecycle(t,async t=>{if(n.delete===void 0)throw Error(`The active sandbox runtime does not support deletion.`);await n.delete(t),e.delete(DynamicSkillSandboxKey)},async()=>await n.stop())})}}}function withRuntimeSandboxLifecycle(e,t,n){return new Proxy(Object.create(null),{get(r,i){if(i===`delete`)return t;if(i===`stop`)return n;let a=Reflect.get(e,i,e);return typeof a==`function`?a.bind(e):a},getOwnPropertyDescriptor(t,n){if(n===`delete`||n===`stop`)return{configurable:!0,enumerable:!0,writable:!1};let r=Reflect.getOwnPropertyDescriptor(e,n);return r===void 0?void 0:{...r,configurable:!0}},has(t,n){return n===`delete`||n===`stop`||Reflect.has(e,n)},ownKeys(){return[...new Set([...Reflect.ownKeys(e),`delete`,`stop`])]}})}export{buildCallbackContext,withRuntimeSandboxLifecycle};
@@ -1 +1 @@
1
- import{ConversationContextKey}from"#shared/conversation-context.js";import{getAdapterKind}from"#channel/adapter.js";import{AuthKey,ChannelInstrumentationKey,ContinuationTokenKey,InitiatorAuthKey,SessionIdKey}from"#context/keys.js";import{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{getEffectiveModelSelection}from"#context/effective-model.js";function buildResolveContext(e,t){let n=e.get(SessionIdKey)??``,r=e.get(AuthKey)??null,i=e.get(InitiatorAuthKey)??null,a=e.get(ChannelKey),o=e.get(ContinuationTokenKey),s=e.get(ChannelInstrumentationKey),c=getEffectiveModelSelection(e);return{model:c===null?null:{id:c.reference.id},session:{id:n,auth:{current:r,initiator:i}},channel:{kind:a===void 0?void 0:getAdapterKind(a),continuationToken:o,metadata:s?.metadata},...e.get(ConversationContextKey)===void 0?void 0:{conversation:e.get(ConversationContextKey)},messages:t}}export{buildResolveContext};
1
+ import{ConversationContextKey}from"#shared/conversation-context.js";import{getAdapterKind}from"#channel/adapter.js";import{AuthKey,ChannelInstrumentationKey,ContinuationTokenKey,InitiatorAuthKey,SessionIdKey}from"#context/keys.js";import{readSessionSchedule}from"#context/session-schedule.js";import{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{getEffectiveModelSelection}from"#context/effective-model.js";function buildResolveContext(e,t){let n=e.get(SessionIdKey)??``,r=e.get(AuthKey)??null,i=e.get(InitiatorAuthKey)??null,a=e.get(ChannelKey),o=e.get(ContinuationTokenKey),s=e.get(ChannelInstrumentationKey),c=getEffectiveModelSelection(e);return{model:c===null?null:{id:c.reference.id},session:{id:n,schedule:readSessionSchedule(e),auth:{current:r,initiator:i}},channel:{kind:a===void 0?void 0:getAdapterKind(a),continuationToken:o,metadata:s?.metadata},...e.get(ConversationContextKey)===void 0?void 0:{conversation:e.get(ConversationContextKey)},messages:t}}export{buildResolveContext};
@@ -8,5 +8,6 @@
8
8
  * keys construct themselves from these constants, so the names cannot
9
9
  * silently drift apart.
10
10
  */
11
+ export declare const BUNDLE_CONTEXT_KEY_NAME = "eve.bundle";
11
12
  export declare const CHANNEL_CONTEXT_KEY_NAME = "eve.channel";
12
13
  export declare const SESSION_CALLBACK_CONTEXT_KEY_NAME = "eve.sessionCallback";
@@ -1 +1 @@
1
- const CHANNEL_CONTEXT_KEY_NAME=`eve.channel`,SESSION_CALLBACK_CONTEXT_KEY_NAME=`eve.sessionCallback`;export{CHANNEL_CONTEXT_KEY_NAME,SESSION_CALLBACK_CONTEXT_KEY_NAME};
1
+ const BUNDLE_CONTEXT_KEY_NAME=`eve.bundle`,CHANNEL_CONTEXT_KEY_NAME=`eve.channel`,SESSION_CALLBACK_CONTEXT_KEY_NAME=`eve.sessionCallback`;export{BUNDLE_CONTEXT_KEY_NAME,CHANNEL_CONTEXT_KEY_NAME,SESSION_CALLBACK_CONTEXT_KEY_NAME};
@@ -63,8 +63,10 @@ export interface LocalDevRequestProvenance {
63
63
  readonly signature: string;
64
64
  }
65
65
  export declare const LocalDevRequestKey: ContextKey<LocalDevRequestProvenance>;
66
+ export declare const OccurrenceIdKey: ContextKey<string>;
66
67
  /** Authored schedule whose dispatch created this session. */
67
68
  export declare const ScheduleIdKey: ContextKey<string>;
69
+ export declare const ScheduleInstanceKey: ContextKey<string>;
68
70
  /** Display title derived from the session's initial input. */
69
71
  export declare const SessionTitleKey: ContextKey<string>;
70
72
  export declare const ChannelDeliveryKey: ContextKey<ChannelDeliveryMetadata>;
@@ -1 +1 @@
1
- import{SESSION_INBOX_CONTEXT_KEY}from"#execution/session-inbox/address.js";import{ContextKey}from"#context/key.js";import{SESSION_CALLBACK_CONTEXT_KEY_NAME}from"#context/key-names.js";const AuthKey=new ContextKey(`eve.auth`),InitiatorAuthKey=new ContextKey(`eve.initiatorAuth`),SessionIdKey=new ContextKey(`eve.sessionId`),ConversationIdKey=new ContextKey(`eve.conversationId`),SessionInboxKey=new ContextKey(SESSION_INBOX_CONTEXT_KEY),ContinuationTokenKey=new ContextKey(`eve.continuationToken`),ContinuationHookTokensKey=new ContextKey(`eve.continuationHookTokens`),ChannelRequestIdKey=new ContextKey(`eve.channelRequestId`),LocalDevRequestKey=new ContextKey(`eve.internal.localDevRequest`),ScheduleIdKey=new ContextKey(`eve.scheduleId`),SessionTitleKey=new ContextKey(`eve.sessionTitle`),ChannelDeliveryKey=new ContextKey(`eve.channelDelivery`),TurnDeliveryIdsKey=new ContextKey(`eve.turnDeliveryIds`),HistoryStateKey=new ContextKey(`eve.historyState`),ActiveChannelDeliveriesKey=new ContextKey(`eve.activeChannelDeliveries`),ChannelInstrumentationKey=new ContextKey(`eve.channelInstrumentation`),ParentSessionKey=new ContextKey(`eve.parentSession`),TraceRootKey=new ContextKey(`eve.traceRoot`),ParentTraceContextKey=new ContextKey(`eve.parentTraceContext`),SessionTraceSeedKey=new ContextKey(`eve.sessionTraceSeed`),OtelTraceEnabledKey=new ContextKey(`eve.otelTraceEnabled`),CapabilitiesKey=new ContextKey(`eve.capabilities`),SessionCallbackKey=new ContextKey(SESSION_CALLBACK_CONTEXT_KEY_NAME),LegacyRemoteAgentCallerKey=new ContextKey(`eve.legacyRemoteAgentCaller`),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),HandleEventKey=new ContextKey(`eve.internal.handleEvent`),StaticModelReferenceKey=new ContextKey(`eve.staticModelReference`),SessionDynamicModelReferenceKey=new ContextKey(`eve.sessionDynamicModelReference`),TurnDynamicModelReferenceKey=new ContextKey(`eve.turnDynamicModelReference`),RuntimeModelMetadataCacheKey=new ContextKey(`eve.runtimeModelMetadataCache`),LiveStepDynamicModelSelectionKey=new ContextKey(`eve.liveStepDynamicModelSelection`),SessionDynamicToolMetadataKey=new ContextKey(`eve.sessionDynamicToolMetadata`),SessionDynamicToolRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicToolRuntimeRevision`),TurnDynamicToolMetadataKey=new ContextKey(`eve.turnDynamicToolMetadata`),TurnMemoryLocksKey=new ContextKey(`eve.memory.turnLocks`),PreparedMemoryPreambleKey=new ContextKey(`eve.memory.preparedPreamble`),PendingMemoryCommitKey=new ContextKey(`eve.memory.pendingCommit`),PreparedMemoryCompactionKey=new ContextKey(`eve.memory.preparedCompaction`),StepDynamicToolMetadataKey=new ContextKey(`eve.stepDynamicToolMetadata`),SessionDynamicSubagentSelectionsKey=new ContextKey(`eve.sessionDynamicSubagentSelections`),TurnDynamicSubagentSelectionsKey=new ContextKey(`eve.turnDynamicSubagentSelections`),SessionDynamicSubagentRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicSubagentRuntimeRevision`),DynamicSubagentAgentConfigKey=new ContextKey(`eve.dynamicSubagentAgentConfig`),DynamicSkillManifestKey=new ContextKey(`eve.dynamicSkillManifest`),DynamicSkillSandboxKey=new ContextKey(`eve.dynamicSkillSandbox`),SessionDynamicInstructionsKey=new ContextKey(`eve.sessionDynamicInstructions`),TurnDynamicInstructionsKey=new ContextKey(`eve.turnDynamicInstructions`),DynamicInstructionResolveMessagesKey=new ContextKey(`eve.dynamicInstructionResolveMessages`),PendingDynamicInstructionUserMessagesKey=new ContextKey(`eve.pendingDynamicInstructionUserMessages`);export{ActiveChannelDeliveriesKey,AuthKey,CapabilitiesKey,ChannelDeliveryKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationHookTokensKey,ContinuationTokenKey,ConversationIdKey,DynamicInstructionResolveMessagesKey,DynamicSkillManifestKey,DynamicSkillSandboxKey,DynamicSubagentAgentConfigKey,HandleEventKey,HistoryStateKey,InitiatorAuthKey,LegacyRemoteAgentCallerKey,LiveStepDynamicModelSelectionKey,LocalDevRequestKey,OtelTraceEnabledKey,ParentSessionKey,ParentTraceContextKey,PendingDynamicInstructionUserMessagesKey,PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,RuntimeModelMetadataCacheKey,SandboxKey,ScheduleIdKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicModelReferenceKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,SessionInboxKey,SessionKey,SessionTitleKey,SessionTraceSeedKey,StaticModelReferenceKey,StepDynamicToolMetadataKey,TraceRootKey,TurnDeliveryIdsKey,TurnDynamicInstructionsKey,TurnDynamicModelReferenceKey,TurnDynamicSubagentSelectionsKey,TurnDynamicToolMetadataKey,TurnMemoryLocksKey};
1
+ import{SESSION_INBOX_CONTEXT_KEY}from"#execution/session-inbox/address.js";import{ContextKey}from"#context/key.js";import{SESSION_CALLBACK_CONTEXT_KEY_NAME}from"#context/key-names.js";const AuthKey=new ContextKey(`eve.auth`),InitiatorAuthKey=new ContextKey(`eve.initiatorAuth`),SessionIdKey=new ContextKey(`eve.sessionId`),ConversationIdKey=new ContextKey(`eve.conversationId`),SessionInboxKey=new ContextKey(SESSION_INBOX_CONTEXT_KEY),ContinuationTokenKey=new ContextKey(`eve.continuationToken`),ContinuationHookTokensKey=new ContextKey(`eve.continuationHookTokens`),ChannelRequestIdKey=new ContextKey(`eve.channelRequestId`),LocalDevRequestKey=new ContextKey(`eve.internal.localDevRequest`),OccurrenceIdKey=new ContextKey(`eve.scheduleOccurrenceId`),ScheduleIdKey=new ContextKey(`eve.scheduleId`),ScheduleInstanceKey=new ContextKey(`eve.scheduleInstance`),SessionTitleKey=new ContextKey(`eve.sessionTitle`),ChannelDeliveryKey=new ContextKey(`eve.channelDelivery`),TurnDeliveryIdsKey=new ContextKey(`eve.turnDeliveryIds`),HistoryStateKey=new ContextKey(`eve.historyState`),ActiveChannelDeliveriesKey=new ContextKey(`eve.activeChannelDeliveries`),ChannelInstrumentationKey=new ContextKey(`eve.channelInstrumentation`),ParentSessionKey=new ContextKey(`eve.parentSession`),TraceRootKey=new ContextKey(`eve.traceRoot`),ParentTraceContextKey=new ContextKey(`eve.parentTraceContext`),SessionTraceSeedKey=new ContextKey(`eve.sessionTraceSeed`),OtelTraceEnabledKey=new ContextKey(`eve.otelTraceEnabled`),CapabilitiesKey=new ContextKey(`eve.capabilities`),SessionCallbackKey=new ContextKey(SESSION_CALLBACK_CONTEXT_KEY_NAME),LegacyRemoteAgentCallerKey=new ContextKey(`eve.legacyRemoteAgentCaller`),SessionKey=new ContextKey(`eve.session`),SandboxKey=new ContextKey(`eve.sandbox`),HandleEventKey=new ContextKey(`eve.internal.handleEvent`),StaticModelReferenceKey=new ContextKey(`eve.staticModelReference`),SessionDynamicModelReferenceKey=new ContextKey(`eve.sessionDynamicModelReference`),TurnDynamicModelReferenceKey=new ContextKey(`eve.turnDynamicModelReference`),RuntimeModelMetadataCacheKey=new ContextKey(`eve.runtimeModelMetadataCache`),LiveStepDynamicModelSelectionKey=new ContextKey(`eve.liveStepDynamicModelSelection`),SessionDynamicToolMetadataKey=new ContextKey(`eve.sessionDynamicToolMetadata`),SessionDynamicToolRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicToolRuntimeRevision`),TurnDynamicToolMetadataKey=new ContextKey(`eve.turnDynamicToolMetadata`),TurnMemoryLocksKey=new ContextKey(`eve.memory.turnLocks`),PreparedMemoryPreambleKey=new ContextKey(`eve.memory.preparedPreamble`),PendingMemoryCommitKey=new ContextKey(`eve.memory.pendingCommit`),PreparedMemoryCompactionKey=new ContextKey(`eve.memory.preparedCompaction`),StepDynamicToolMetadataKey=new ContextKey(`eve.stepDynamicToolMetadata`),SessionDynamicSubagentSelectionsKey=new ContextKey(`eve.sessionDynamicSubagentSelections`),TurnDynamicSubagentSelectionsKey=new ContextKey(`eve.turnDynamicSubagentSelections`),SessionDynamicSubagentRuntimeRevisionKey=new ContextKey(`eve.sessionDynamicSubagentRuntimeRevision`),DynamicSubagentAgentConfigKey=new ContextKey(`eve.dynamicSubagentAgentConfig`),DynamicSkillManifestKey=new ContextKey(`eve.dynamicSkillManifest`),DynamicSkillSandboxKey=new ContextKey(`eve.dynamicSkillSandbox`),SessionDynamicInstructionsKey=new ContextKey(`eve.sessionDynamicInstructions`),TurnDynamicInstructionsKey=new ContextKey(`eve.turnDynamicInstructions`),DynamicInstructionResolveMessagesKey=new ContextKey(`eve.dynamicInstructionResolveMessages`),PendingDynamicInstructionUserMessagesKey=new ContextKey(`eve.pendingDynamicInstructionUserMessages`);export{ActiveChannelDeliveriesKey,AuthKey,CapabilitiesKey,ChannelDeliveryKey,ChannelInstrumentationKey,ChannelRequestIdKey,ContinuationHookTokensKey,ContinuationTokenKey,ConversationIdKey,DynamicInstructionResolveMessagesKey,DynamicSkillManifestKey,DynamicSkillSandboxKey,DynamicSubagentAgentConfigKey,HandleEventKey,HistoryStateKey,InitiatorAuthKey,LegacyRemoteAgentCallerKey,LiveStepDynamicModelSelectionKey,LocalDevRequestKey,OccurrenceIdKey,OtelTraceEnabledKey,ParentSessionKey,ParentTraceContextKey,PendingDynamicInstructionUserMessagesKey,PendingMemoryCommitKey,PreparedMemoryCompactionKey,PreparedMemoryPreambleKey,RuntimeModelMetadataCacheKey,SandboxKey,ScheduleIdKey,ScheduleInstanceKey,SessionCallbackKey,SessionDynamicInstructionsKey,SessionDynamicModelReferenceKey,SessionDynamicSubagentRuntimeRevisionKey,SessionDynamicSubagentSelectionsKey,SessionDynamicToolMetadataKey,SessionDynamicToolRuntimeRevisionKey,SessionIdKey,SessionInboxKey,SessionKey,SessionTitleKey,SessionTraceSeedKey,StaticModelReferenceKey,StepDynamicToolMetadataKey,TraceRootKey,TurnDeliveryIdsKey,TurnDynamicInstructionsKey,TurnDynamicModelReferenceKey,TurnDynamicSubagentSelectionsKey,TurnDynamicToolMetadataKey,TurnMemoryLocksKey};
@@ -1 +1 @@
1
- import{AuthKey,InitiatorAuthKey,ParentSessionKey,SessionIdKey,SessionKey}from"#context/keys.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";import{projectionFor}from"#harness/session-machine/current.js";const sessionProvider={key:SessionKey,create(e,t){let n=e.require(AuthKey),r=turnPosition(projectionFor(e,t.state)),i=activeTurnId(r);return{value:Object.freeze({auth:{current:n,initiator:e.get(InitiatorAuthKey)??n},parent:e.get(ParentSessionKey),sessionId:e.require(SessionIdKey),turn:{id:i,sequence:r.sequence}})}}};export{sessionProvider};
1
+ import{projectionFor}from"#harness/session-machine/current.js";import{AuthKey,InitiatorAuthKey,ParentSessionKey,SessionIdKey,SessionKey}from"#context/keys.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";const sessionProvider={key:SessionKey,create(e,t){let n=e.require(AuthKey),r=turnPosition(projectionFor(e,t.state)),i=activeTurnId(r);return{value:Object.freeze({auth:{current:n,initiator:e.get(InitiatorAuthKey)??n},parent:e.get(ParentSessionKey),sessionId:e.require(SessionIdKey),turn:{id:i,sequence:r.sequence}})}}};export{sessionProvider};
@@ -0,0 +1,9 @@
1
+ import type { StandardSchemaV1 } from "#compiled/@standard-schema/spec/index.js";
2
+ import type { DynamicSchedulesDefinition } from "#public/schedules/subscription.js";
3
+ import type { DynamicToolEntry } from "#tools/dynamic.js";
4
+ export declare function createScheduleCollectionToolDynamicDefinition<TInput, TPrepared = TInput>(definition: DynamicSchedulesDefinition<TInput, StandardSchemaV1<unknown, TInput>, TPrepared>, identity: {
5
+ readonly application: string;
6
+ readonly collection: string;
7
+ }): import("#dynamic/definition.js").DynamicSentinel<{
8
+ [x: string]: DynamicToolEntry<Record<string, unknown>, any>;
9
+ } | null>;
@@ -0,0 +1 @@
1
+ import{z}from"#compiled/zod/index.js";import{contextStorage,loadContext}from"#context/container.js";import{scheduleDisplayName}from"#runtime/schedules/record.js";import{isDeepStrictEqual}from"node:util";import{parseJsonObject}from"#shared/json.js";import{defineDynamic}from"#dynamic/definition.js";import{scheduleCollectionToolPrefix}from"#shared/schedule-collection-tools.js";import{readSessionSchedule}from"#context/session-schedule.js";import{readDurableDynamicToolCallbacks,stampDurableDynamicToolCallbacks}from"#tools/durable-callbacks.js";import{ContextKey}from"#context/key.js";import{markDynamicCallbackRebind}from"#internal/dynamic-tool-rebind.js";import{isApprovalRecheck}from"#harness/approval-recheck.js";import{bindScheduleCollection,schedules}from"#public/experimental/schedules/client.js";import{assertScheduleManagementAllowed}from"#runtime/schedules/collection-client.js";import{MAX_SCHEDULE_DELAY_MINUTES}from"#runtime/schedules/validation.js";import{always}from"#tools/approval/policies.js";import{defineTool}from"#tools/definition.js";const PreparedCreatesKey=new ContextKey(`eve.schedulePreparedCreates`),nameSchema=z.string().min(1).max(256).regex(/^[0-9A-Za-z][0-9A-Za-z._-]*$/).describe(`Readable display label; it may repeat. Creation returns a unique management name.`),nameInput=z.object({name:z.string().min(1).max(256).describe(`Exact unique management name returned by create/get/list, not the display label.`)}).strict(),timezoneSchema=z.string().describe(`IANA timezone; omission means UTC. Delays need no timezone.`),expressionSchema=z.discriminatedUnion(`type`,[z.object({type:z.literal(`cron`),cron:z.string().describe(`Five-field cron: minute hour day-of-month month day-of-week.`),timezone:timezoneSchema.optional(),jitter:z.number().int().min(1).max(15).optional()}).strict(),z.object({type:z.literal(`single`),at:z.string().describe(`Local YYYY-MM-DDTHH:mm, without offset or fractions.`),timezone:timezoneSchema.optional()}).strict(),z.object({type:z.literal(`delay`),minutes:z.number().int().min(1).max(MAX_SCHEDULE_DELAY_MINUTES)}).strict()]);function createScheduleCollectionToolDynamicDefinition(e,t){return markDynamicCallbackRebind(defineDynamic({events:{"turn.started":async(n,r)=>{let i=contextStorage.getStore();if(e.tool===!1||r.session.schedule!==void 0||i!==void 0&&readSessionSchedule(i)!==void 0)return null;let a=`${scheduleCollectionToolPrefix(t.collection)}__`,keyFor=e=>`${a}create:${e}`,o=z.object({name:nameSchema,expression:expressionSchema,payload:e.inputSchema}).strict(),s=e.approval?.create??always(),c={request:async t=>{try{let n=await o.parseAsync(t.toolInput),r=await(await bindScheduleCollection(e)).prepareCreate(n),i=keyFor(t.callId),a=loadContext().get(PreparedCreatesKey)??{};if(isApprovalRecheck(t)){if(a[i]===void 0||!isDeepStrictEqual(a[i],r))return{type:`denied`,reason:`The prepared schedule changed or its approval expired. Request a new creation approval.`}}else{let e={...Object.fromEntries(Object.entries(a).filter(([e])=>e!==i).slice(-31)),[i]:r};for(;Buffer.byteLength(JSON.stringify(e))>524288;)delete e[Object.keys(e)[0]];loadContext().set(PreparedCreatesKey,e)}let c={...t,toolInput:{...n,payload:r.envelope.payload},payload:r.envelope.payload};return typeof s==`function`?await s(c):await s.request(c)}catch(e){return{type:`denied`,reason:e instanceof Error?e.message:`Schedule preparation failed.`}}}};typeof s!=`function`&&s.response!==void 0&&(c.response=async e=>{let t=loadContext().get(PreparedCreatesKey)?.[keyFor(e.request.callId)];return t===void 0?{status:`rejected`,reason:`The prepared schedule approval expired. Request creation again.`}:await s.response({...e,request:{...e.request,toolInput:{...e.request.toolInput,payload:t.envelope.payload}},payload:t.envelope.payload})});let define=(t,n,r,i,a)=>{let o=t===`create`?c:e.approval?.[t]??(t===`get`||t===`list`?void 0:always()),s=defineTool({description:`${e.description?`${e.description}\n\n`:``}${r}`,inputSchema:i,approval:o,label:{start:e=>e.name?`${n}: ${scheduleDisplayName(e.name)}`:n},execute:(e,t)=>(assertScheduleManagementAllowed(),a(e,t))});return stampCallbacks(s),s};return{[`${a}create`]:define(`create`,`Create schedule`,`Create future work, not an immediate action. The display name may repeat; use the returned unique name for management. For relative requests use expression { type: 'delay', minutes: 1 }; eve resolves timing after approval and rounds up to minute precision (up to 59 seconds later). Do not guess the clock or ask for a timezone for delays. Preparation validates the destination before approval; a changed prepared payload requires fresh approval.`,o,async(t,n)=>{let r=keyFor(n.callId),i=loadContext().get(PreparedCreatesKey)?.[r];if(i===void 0)throw Error(`Schedule creation has no prepared approval snapshot. Request creation again.`);let a=await(await bindScheduleCollection(e)).create(t,i),o={...loadContext().get(PreparedCreatesKey)};return delete o[r],loadContext().set(PreparedCreatesKey,o),a}),[`${a}get`]:define(`get`,`Read schedule`,`Read timing/state; stored payload is not returned.`,nameInput,async({name:t})=>await(await schedules(e)).get(t)),[`${a}list`]:define(`list`,`List schedules`,`List identity, timing/state, and timestamps; payload is not returned.`,z.object({cursor:z.string().optional(),limit:z.number().int().min(1).max(100).optional()}).strict(),async t=>await(await schedules(e)).list(t)),[`${a}enable`]:define(`enable`,`Enable schedule`,`Enable future occurrences.`,nameInput,async({name:t})=>await(await schedules(e)).enable(t)),[`${a}disable`]:define(`disable`,`Disable schedule`,`Disable future occurrences; already started work is not cancelled.`,nameInput,async({name:t})=>await(await schedules(e)).disable(t)),[`${a}invoke`]:define(`invoke`,`Run schedule`,`Enqueue an extra occurrence as the original creator; acceptance is not execution success.`,nameInput,async({name:t})=>(await(await schedules(e)).invoke(t),{accepted:!0})),[`${a}delete`]:define(`delete`,`Delete schedule`,`Delete a schedule; already started work is not cancelled.`,nameInput,async({name:t})=>({deleted:await(await schedules(e)).delete(t)}))}}}}))}function stampCallbacks(e){let t=parseJsonObject({}),n={...readDurableDynamicToolCallbacks(e),execute:{callback:async(t,n,r)=>await e.execute(n,r),closure:t},inputSchema:{callback:()=>e.inputSchema,closure:t},label:{start:{callback:(t,n)=>e.label.start(n),closure:t}}};if(e.approval!==void 0){let r=e.approval;n.approvalRequest={callback:async(e,t)=>typeof r==`function`?await r(t):await r.request(t),closure:t},typeof r!=`function`&&r.response!==void 0&&(n.approvalResponse={callback:async(e,t)=>await r.response(t),closure:t})}stampDurableDynamicToolCallbacks(e,n)}export{createScheduleCollectionToolDynamicDefinition};
@@ -1,7 +1,8 @@
1
1
  import type { SandboxEnvironment } from "#shared/sandbox-environment.js";
2
2
  import type { RuntimeSandboxSession, RuntimeSandboxSessionFor, SandboxSession } from "#shared/sandbox-session.js";
3
3
  import type { SessionAuth, SessionParent, SessionTurn } from "#context/keys.js";
4
- export type { SessionAuth, SessionParent, SessionTurn };
4
+ import type { SessionSchedule } from "#context/session-schedule.js";
5
+ export type { SessionAuth, SessionParent, SessionTurn, SessionSchedule };
5
6
  /**
6
7
  * Shared runtime context available to all authored callbacks that run
7
8
  * inside the ALS-scoped harness step (tools, hooks, channel events).
@@ -19,6 +20,8 @@ export interface SessionContext {
19
20
  readonly auth: SessionAuth;
20
21
  readonly turn: SessionTurn;
21
22
  readonly parent?: SessionParent;
23
+ /** Present only for scheduled work; not an application-supplied auth attribute. */
24
+ readonly schedule?: SessionSchedule;
22
25
  };
23
26
  /**
24
27
  * Resolves the session's sandbox. Throws when no sandbox is available
@@ -0,0 +1,9 @@
1
+ import type { ContextReader } from "#context/key.js";
2
+ /** Framework-owned provenance for the scheduled work that started the current turn. */
3
+ export interface SessionSchedule {
4
+ readonly definition: string;
5
+ readonly instance?: string;
6
+ readonly occurrenceId?: string;
7
+ }
8
+ export declare function readSerializedSessionSchedule(values: Readonly<Record<string, unknown>>): SessionSchedule | undefined;
9
+ export declare function readSessionSchedule(context: Pick<ContextReader, "get">): SessionSchedule | undefined;
@@ -0,0 +1 @@
1
+ import{OccurrenceIdKey,ScheduleIdKey,ScheduleInstanceKey}from"#context/keys.js";function readSerializedSessionSchedule(e){let t=e[ScheduleIdKey.name];if(typeof t!=`string`)return;let n=e[ScheduleInstanceKey.name],r=e[OccurrenceIdKey.name];return{definition:t,instance:typeof n==`string`?n:void 0,occurrenceId:typeof r==`string`?r:void 0}}function readSessionSchedule(e){let t=e.get(ScheduleIdKey);if(t!==void 0)return{definition:t,instance:e.get(ScheduleInstanceKey),occurrenceId:e.get(OccurrenceIdKey)}}export{readSerializedSessionSchedule,readSessionSchedule};
@@ -0,0 +1,12 @@
1
+ import type { SessionAuthContext } from "#channel/types.js";
2
+ /**
3
+ * The active turn's caller and, when it differs, its initiator, read the same
4
+ * way for every consumer that attributes work to a person. `undefined` when
5
+ * the turn has no authenticated caller. Anonymous principals read as absent:
6
+ * every anonymous caller shares one synthetic identity, so one cannot be told
7
+ * apart from another, or vouched for.
8
+ */
9
+ export declare function readTurnPrincipals(): {
10
+ readonly current: SessionAuthContext;
11
+ readonly initiator?: SessionAuthContext;
12
+ } | undefined;
@@ -0,0 +1 @@
1
+ import{contextStorage}from"#context/container.js";import{AuthKey,InitiatorAuthKey,SessionKey}from"#context/keys.js";function readTurnPrincipals(){let e=contextStorage.getStore(),t=e?.get(SessionKey)?.auth,n=identified(e?.get(AuthKey)??t?.current);if(n===void 0)return;let r=identified(e?.get(InitiatorAuthKey)??t?.initiator);return r===void 0||r===n?{current:n}:{current:n,initiator:r}}function identified(e){return e==null||e.principalType===`anonymous`?void 0:e}export{readTurnPrincipals};
@@ -34,6 +34,7 @@ export interface DynamicResolveContext {
34
34
  readonly session: {
35
35
  readonly id: string;
36
36
  readonly auth: SessionAuth;
37
+ readonly schedule?: import("#context/session-schedule.js").SessionSchedule;
37
38
  };
38
39
  /** Channel metadata for the request that triggered this resolve. */
39
40
  readonly channel: {
@@ -1 +1 @@
1
- import{resolveDevelopmentClientOptions}from"#services/dev-client/client-options.js";import{resolveVerifiedRemoteDevelopmentClient}from"#setup/verified-remote-client.js";import{Client}from"#client/client.js";function resolveEvalClientOptions(e){if(e.kind===`local`)return{host:e.url};let t=resolveDevelopmentClientOptions(e.url),n=process.env.EVE_EVAL_AUTH_TOKEN?.trim();return n?{...t,auth:{bearer:n},redirect:`manual`}:t}async function createEvalClient(e,t={}){let n=resolveEvalClientOptions(e);if(e.kind===`local`||n.auth!==void 0||t.workspaceRoot===void 0)return new Client(n);let{options:r}=await resolveVerifiedRemoteDevelopmentClient({serverUrl:e.url,workspaceRoot:t.workspaceRoot,deps:t.deps});return new Client({...n,...r})}export{createEvalClient,resolveEvalClientOptions};
1
+ import{resolveDevelopmentClientOptions}from"#services/dev-client/client-options.js";import{resolveVerifiedRemoteDevelopmentClient}from"#setup/verified-remote-client.js";import{Client}from"#client/client.js";import{readVercelProjectLink}from"#internal/vercel/project-link.js";function resolveEvalClientOptions(e){if(e.kind===`local`)return{host:e.url};let t=resolveDevelopmentClientOptions(e.url),n=process.env.EVE_EVAL_AUTH_TOKEN?.trim();return n?{...t,auth:{bearer:n},redirect:`manual`}:t}async function createEvalClient(e,t={}){let n=resolveEvalClientOptions(e);if(e.kind===`local`||n.auth!==void 0||t.workspaceRoot===void 0)return new Client(n);let r=process.env.VERCEL_ORG_ID?.trim(),i=process.env.VERCEL_PROJECT_ID?.trim(),a=r&&i?{orgId:r,projectId:i}:await readVercelProjectLink(t.workspaceRoot),{options:o}=await resolveVerifiedRemoteDevelopmentClient({projectSource:a,serverUrl:e.url,workspaceRoot:t.workspaceRoot,deps:t.deps});return new Client({...n,...o})}export{createEvalClient,resolveEvalClientOptions};
@@ -1,4 +1,4 @@
1
- import{randomUUID}from"node:crypto";import{readFile}from"node:fs/promises";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{basename,join}from"node:path";import{noDevelopmentExtensions}from"#compiler/development-extensions.js";import{EVE_EVALUATION_ENV_FLAG,EVE_EVALUATION_RUN_ID_ENV}from"#internal/application/dev-environment.js";import{shutdownActiveSandboxHandles}from"#execution/sandbox/active-handles.js";import{createDevelopmentServer}from"#internal/nitro/host.js";import{createEvalClient}from"#evals/cli/eval-client.js";import{filterEvalsByTags}from"#evals/cli/filter.js";import{discoverAndImportEvals,discoverEvalConfig,findMisplacedEvalDirs}from"#evals/runner/discover.js";import{runEvals}from"#evals/runner/run-evals.js";import{Console}from"#evals/runner/reporters/console.js";import{JUnit}from"#evals/runner/reporters/junit.js";import{resolveEvalTargetHandle}from"#evals/target.js";async function runEvalCommand(e,t,n,r=process.cwd()){await loadDevelopmentEnvironmentFiles(r);let i=e.length>0?e:void 0,a=await discoverAndImportEvals(r,i);if(a.length===0){let e=await findMisplacedEvalDirs(r);e.length>0?n.error(`No evals found under evals/, but eval files are present inside agent/:
1
+ import{randomUUID}from"node:crypto";import{readFile}from"node:fs/promises";import{basename,join}from"node:path";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{noDevelopmentExtensions}from"#compiler/development-extensions.js";import{EVE_EVALUATION_ENV_FLAG,EVE_EVALUATION_RUN_ID_ENV}from"#internal/application/dev-environment.js";import{shutdownActiveSandboxHandles}from"#execution/sandbox/active-handles.js";import{createDevelopmentServer}from"#internal/nitro/host.js";import{createEvalClient}from"#evals/cli/eval-client.js";import{filterEvalsByTags}from"#evals/cli/filter.js";import{discoverAndImportEvals,discoverEvalConfig,findMisplacedEvalDirs}from"#evals/runner/discover.js";import{runEvals}from"#evals/runner/run-evals.js";import{Console}from"#evals/runner/reporters/console.js";import{JUnit}from"#evals/runner/reporters/junit.js";import{resolveEvalTargetHandle}from"#evals/target.js";async function runEvalCommand(e,t,n,r=process.cwd()){await loadDevelopmentEnvironmentFiles(r);let i=e.length>0?e:void 0,a=await discoverAndImportEvals(r,i);if(a.length===0){let e=await findMisplacedEvalDirs(r);e.length>0?n.error(`No evals found under evals/, but eval files are present inside agent/:
2
2
  `+e.map(e=>` - ${e}`).join(`
3
3
  `)+`
4
4
  eve eval only scans the top-level evals/ directory (a sibling of agent/). Move these files there.`):i?n.error(`No evals found matching: ${i.join(`, `)}`):n.error(`No evals found. Create files under evals/ with the *.eval.ts extension.`),process.exitCode=2;return}let o=t.tag??[],s=t.excludeTag??[],c=filterEvalsByTags({evaluations:a,includeTags:o,excludeTags:[]});if(c.length===0){n.error(`No evals matched the provided tags (${o.join(`, `)}).`),process.exitCode=2;return}let l=filterEvalsByTags({evaluations:c,includeTags:[],excludeTags:s});if(t.list===!0){printEvalList(l,t.json===!0,n);return}if(l.length===0){n.log(`All ${c.length} matching evals are excluded by tags (${s.join(`, `)}); nothing to run.`);return}let u,d;try{u=parsePositiveInteger(t.maxConcurrency,`--max-concurrency`),d=parseNonNegativeInteger(t.timeout,`--timeout`)}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let f;try{f=await discoverEvalConfig(r)}catch(e){n.error(e instanceof Error?e.message:String(e)),process.exitCode=2;return}let p,m,h,g;try{if(g=await f.setup?.(),t.url)h=await createEvalClient({kind:`remote`,url:t.url},{workspaceRoot:r}),m=await resolveEvalTargetHandle({client:h,expectedAgentName:await readExpectedAgentName(r),kind:`remote`,url:t.url});else{process.env[EVE_EVALUATION_ENV_FLAG]=`1`,process.env[EVE_EVALUATION_RUN_ID_ENV]=randomUUID(),p=createDevelopmentServer(r,{developmentExtensions:noDevelopmentExtensions(),host:`127.0.0.1`,port:0});let e=await p.start();h=await createEvalClient({kind:`local`,url:e.url}),m=await resolveEvalTargetHandle({client:h,expectedAgentName:await readExpectedAgentName(r),kind:`local`,url:e.url})}let e=t.json===!0?[]:[Console()];t.junit!==void 0&&e.push(JUnit({filePath:t.junit}));let i=await runEvals({evaluations:l,config:f,setupContext:g,target:m,client:h,appRoot:r,reporters:e,includeEvalReporters:t.skipReport!==!0,maxConcurrency:u,timeoutMs:d,onEvalLog:t.verbose===!0?(e,t)=>n.log(`[${e}] ${t}`):void 0});t.json&&n.log(JSON.stringify(i,null,2));let a=i.failed>0,o=t.strict===!0&&i.scored>0;(a||o)&&(process.exitCode=1)}finally{for(let e of[()=>p?.close(),()=>p&&shutdownActiveSandboxHandles({log:e=>n.error(e)}),()=>f.teardown?.(g)])try{await e()}catch(e){n.error(`Eval cleanup failed: ${e instanceof Error?e.message:String(e)}`),process.exitCode=1}}let _=typeof process.exitCode==`number`?process.exitCode:0;await flushStandardStreams(),process.exit(_)}async function flushStandardStreams(){await Promise.all([flushStream(process.stdout),flushStream(process.stderr)])}async function flushStream(e){await new Promise(t=>{let n=!1,settle=()=>{n||(n=!0,setImmediate(()=>{e.off(`error`,settle),t()}))};e.once(`error`,settle);try{e.write(``,settle)}catch{settle()}})}function parsePositiveInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<1)throw Error(`${t} must be a positive integer; got "${e}".`);return n}function parseNonNegativeInteger(e,t){if(e===void 0)return;let n=Number(e);if(!Number.isInteger(n)||n<0)throw Error(`${t} must be a non-negative integer; got "${e}".`);return n}function printEvalList(e,t,n){if(t){let t=e.map(e=>({id:e.id,description:e.description,tags:e.tags}));n.log(JSON.stringify(t,null,2));return}for(let t of e){let e=t.description===void 0?``:` — ${t.description}`,r=t.tags!==void 0&&t.tags.length>0?` [${t.tags.join(`, `)}]`:``;n.log(`${t.id}${r}${e}`)}}async function readExpectedAgentName(e){try{let t=JSON.parse(await readFile(join(e,`package.json`),`utf8`));return typeof t.name==`string`&&t.name.length>0?t.name:basename(e)}catch{return basename(e)}}export{runEvalCommand};
@@ -1,5 +1,6 @@
1
1
  import type { ChannelInstrumentationProjection, RunSessionLimits, SessionCapabilities, SessionParent, SessionTraceRoot } from "#channel/types.js";
2
2
  import type { LocalDevRequestProvenance } from "#context/keys.js";
3
+ import { type SessionSchedule } from "#context/session-schedule.js";
3
4
  import type { DynamicSubagentSelections } from "#execution/agent-sessions/target.js";
4
5
  import type { PreparedCoordinationDispatch } from "#execution/coordination-dispatch-shared.js";
5
6
  import { type DurableCompiledArtifactsSource } from "#runtime/durable-compiled-artifacts-source.js";
@@ -23,6 +24,7 @@ export interface AgentSessionContext {
23
24
  readonly bundle: AgentSessionBundle;
24
25
  /** Forwarded unchanged, so a session asks a person only when its caller can. */
25
26
  readonly capabilities?: SessionCapabilities;
27
+ readonly schedule?: SessionSchedule;
26
28
  readonly channelMetadata?: ChannelInstrumentationProjection;
27
29
  readonly conversation?: ConversationContext;
28
30
  /** Dynamic agents the calling turn selected, by node id. */
@@ -1 +1 @@
1
- import{serializeDurableCompiledArtifactsSource}from"#runtime/durable-compiled-artifacts-source.js";import{findTask,readTaskTable}from"#execution/tasks/table.js";import{resolveRemainingSessionTokenLimits}from"#subagents/token-budget.js";import{resolveToolCallAgentTrace}from"#tracing/agent-invocation-coordinator.js";function resolveStepAgentLimits(e){let t=readTaskTable(e.session.state),n=e.plan.filter(({entry:e})=>e.entryPoint===`serve`&&findTask(t,e.taskId)?.kind===`agent`).length;return resolveRemainingSessionTokenLimits(e.session,n)}function captureAgentSessionContext(e,t,n){let{batch:r,session:i}=e;return{agents:e.workflowAgents,bundle:{nodeId:e.bundle.nodeId,source:serializeDurableCompiledArtifactsSource(e.bundle.compiledArtifactsSource)},capabilities:e.capabilities,channelMetadata:e.channelMetadata,conversation:e.inheritedConversation,dynamicSelections:e.dynamicSubagentSelections,limits:n,localDevRequest:e.localDevRequest,parent:{callId:t,rootSessionId:i.rootSessionId??i.sessionId,sessionId:i.sessionId,turn:{id:r.event.turnId,sequence:r.event.sequence}},sandbox:{sessionId:e.sandboxSessionId,state:i.sandboxState},traceRoot:e.traceRoot,trace:resolveToolCallAgentTrace({callId:t,conversation:e.inheritedConversation,serializedContext:e.serializedContext,sessionId:i.sessionId,turnId:r.event.turnId})}}export{captureAgentSessionContext,resolveStepAgentLimits};
1
+ import{readSerializedSessionSchedule}from"#context/session-schedule.js";import{serializeDurableCompiledArtifactsSource}from"#runtime/durable-compiled-artifacts-source.js";import{findTask,readTaskTable}from"#execution/tasks/table.js";import{resolveRemainingSessionTokenLimits}from"#subagents/token-budget.js";import{resolveToolCallAgentTrace}from"#tracing/agent-invocation-coordinator.js";function resolveStepAgentLimits(e){let t=readTaskTable(e.session.state),n=e.plan.filter(({entry:e})=>e.entryPoint===`serve`&&findTask(t,e.taskId)?.kind===`agent`).length;return resolveRemainingSessionTokenLimits(e.session,n)}function captureAgentSessionContext(e,t,n){let{batch:r,session:i}=e;return{agents:e.workflowAgents,bundle:{nodeId:e.bundle.nodeId,source:serializeDurableCompiledArtifactsSource(e.bundle.compiledArtifactsSource)},capabilities:e.capabilities,schedule:readSerializedSessionSchedule(e.serializedContext),channelMetadata:e.channelMetadata,conversation:e.inheritedConversation,dynamicSelections:e.dynamicSubagentSelections,limits:n,localDevRequest:e.localDevRequest,parent:{callId:t,rootSessionId:i.rootSessionId??i.sessionId,sessionId:i.sessionId,turn:{id:r.event.turnId,sequence:r.event.sequence}},sandbox:{sessionId:e.sandboxSessionId,state:i.sandboxState},traceRoot:e.traceRoot,trace:resolveToolCallAgentTrace({callId:t,conversation:e.inheritedConversation,serializedContext:e.serializedContext,sessionId:i.sessionId,turnId:r.event.turnId})}}export{captureAgentSessionContext,resolveStepAgentLimits};
@@ -1 +1 @@
1
- import{createLogger,logError}from"#internal/logging.js";import{sessionInboxHookToken}from"#execution/session-inbox/address.js";import{ContextContainer,contextStorage}from"#context/container.js";import{createEveCallbackRoutePath}from"#protocol/routes.js";import{createWorkflowRuntime,dispatchWorkflowSessionCommand,requestWorkflowTurnCancellation,waitForCommandHookOwner}from"#execution/workflow-runtime.js";import{resolveDurableCompiledArtifactsSource}from"#runtime/durable-compiled-artifacts-source.js";import{getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{createWorkflowCallbackUrl,resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{resolveAgentAction,resolveAgentStartTarget}from"#execution/agent-sessions/target.js";import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{cancelRemoteAgentTurn,continueRemoteAgentSession,resetRemoteAgentSession,resolveRemoteAgentForAction,startRemoteAgentSession}from"#execution/agent-sessions/remote.js";import{buildSubagentRunInput}from"#subagents/tool.js";import{resolveConversationId}from"#shared/conversation-identity.js";const log=createLogger(`execution.agent-sessions`),RUN_FINISHED_REASON=`The workflow run that opened this session finished.`;async function openAgentSessionStep(e){"use step";let{context:t}=e,n=await loadAgentSessionBundle(t),r=resolveAgentAction({bundle:n,callId:t.parent.callId,dynamicSelections:t.dynamicSelections,input:{message:e.message,outputSchema:e.outputSchema,target:e.name}}),i=resolveAgentStartTarget({action:r,bundle:n,dynamicSelections:t.dynamicSelections,isRootSession:t.parent.rootSessionId===t.parent.sessionId}),a={auth:e.auth,bundle:n,context:t,key:e.key,replyTo:e.replyTo};return i.kind===`remote`?await startRemoteSession({...a,target:i}):await startLocalSession({...a,target:i})}async function sendAgentSessionMessageStep(e){"use step";let{address:t,context:n}=e;if(t.kind===`remote`){let r=await resolveSessionRemote(n,t);await continueRemoteAgentSession({auth:e.auth.current,callback:{callId:n.parent.callId,subagentName:t.name,token:e.replyTo,url:createWorkflowCallbackUrl(t.callbackBaseUrl,createEveCallbackRoutePath(e.replyTo))},message:e.message,outputSchema:e.outputSchema,remote:r,sessionId:t.sessionId});return}if((await dispatchWorkflowSessionCommand({command:{auth:e.auth.current,caller:{callId:n.parent.callId,replyTo:{kind:`hook`,token:e.replyTo},subagentName:t.name},kind:`send`,payload:{message:e.message,outputSchema:e.outputSchema}},sessionId:t.sessionId})).status!==`accepted`)throw Error(`Agent "${t.name}" can no longer receive messages; its session ended.`)}async function cancelAgentSessionTurnStep(e){"use step";let{address:t}=e;try{if(t.kind===`remote`){let n=await resolveSessionRemote(e.context,t);await cancelRemoteAgentTurn({remote:n,sessionId:t.sessionId});return}await requestWorkflowTurnCancellation({sessionId:t.sessionId})}catch(e){logError(log,`failed to cancel an agent session turn`,e,{name:t.name,sessionId:t.sessionId})}}async function endAgentSessionsStep(e){"use step";await Promise.all(e.sessions.map(endAgentSession))}async function endAgentSession({address:e,context:t}){try{if(e.kind===`remote`){let n=await resolveSessionRemote(t,e);await resetRemoteAgentSession({reason:RUN_FINISHED_REASON,remote:n,sessionId:e.sessionId});return}await dispatchWorkflowSessionCommand({command:{kind:`reset`,reason:RUN_FINISHED_REASON},sessionId:e.sessionId})}catch(t){logError(log,`failed to end an agent session`,t,{name:e.name,sessionId:e.sessionId})}}async function startLocalSession(e){let{auth:t,bundle:n,context:r,target:i}=e,{action:a}=i,{childContinuationToken:o,runInput:s}=buildSubagentRunInput({action:a,auth:t.current,capabilities:r.capabilities,channelMetadata:r.channelMetadata,continuationKey:e.key,graph:n.graph,inheritedConversation:r.conversation,initiatorAuth:t.initiator,limits:r.limits,parent:createParentContext(r,e.replyTo),sandboxSessionId:r.sandbox.sessionId,selfAgent:i.source.type===`runtime`,session:{continuationToken:e.replyTo,sandboxState:r.sandbox.state,sessionId:r.parent.sessionId},source:i.source}),c=createWorkflowRuntime({compiledArtifactsSource:n.compiledArtifactsSource,dynamicSubagentAgentConfig:i.dynamicSubagentAgentConfig,nodeId:a.nodeId});await contextStorage.run(new ContextContainer({localDevRequest:r.localDevRequest}),()=>c.createSession(s));let l=await waitForCommandHookOwner(sessionInboxHookToken(o));return{kind:`local`,name:a.name,nodeId:a.nodeId,sessionId:l.runId}}async function startRemoteSession(e){let{auth:t,bundle:n,context:r,target:i}=e,{action:a}=i,o=resolveRemoteAgentForAction({dynamicRemoteAgent:i.dynamicRemoteAgent,nodeId:a.nodeId,registry:n.subagentRegistry.subagentsByNodeId,remoteAgentName:a.remoteAgentName}),s=resolveWorkflowCallbackBaseUrl(getWorkflowMetadata().url),c=await startRemoteAgentSession({action:a,auth:t.current,callbackBaseUrl:s,capabilities:r.capabilities,initiatorAuth:t.initiator,operationId:`agent-session:${e.key}`,originAudience:r.trace.originAudience,parent:createParentContext(r,e.replyTo),remote:o,session:{continuationToken:e.replyTo}});return{callbackBaseUrl:s,kind:`remote`,forwardPrincipal:o.forwardPrincipal,name:a.remoteAgentName,nodeId:a.nodeId,resolverId:i.dynamicRemoteAgent?.credentialsStepId??a.nodeId,sessionId:c.sessionId,url:o.url}}function createParentContext(e,t){return{continuationToken:t,conversationId:e.trace.conversationId??resolveConversationId(e.parent.rootSessionId),lineage:e.parent,originAudience:e.trace.originAudience,traceContext:e.trace.parentTraceContext,traceRoot:e.traceRoot}}async function resolveSessionRemote(e,t){let n=await loadAgentSessionBundle(e),r=e.dynamicSelections[t.nodeId];return{...resolveRemoteAgentForAction({dynamicRemoteAgent:r?.kind===`remote`?r.remoteAgent:void 0,nodeId:t.nodeId,registry:n.subagentRegistry.subagentsByNodeId,remoteAgentName:t.name}),url:t.url}}async function loadAgentSessionBundle(e){return await getCompiledRuntimeAgentBundle({compiledArtifactsSource:resolveDurableCompiledArtifactsSource(e.bundle.source),nodeId:e.bundle.nodeId})}export{cancelAgentSessionTurnStep,endAgentSessionsStep,openAgentSessionStep,sendAgentSessionMessageStep};
1
+ import{createLogger,logError}from"#internal/logging.js";import{sessionInboxHookToken}from"#execution/session-inbox/address.js";import{ContextContainer,contextStorage}from"#context/container.js";import{createEveCallbackRoutePath}from"#protocol/routes.js";import{createWorkflowRuntime,dispatchWorkflowSessionCommand,requestWorkflowTurnCancellation,waitForCommandHookOwner}from"#execution/workflow-runtime.js";import{resolveDurableCompiledArtifactsSource}from"#runtime/durable-compiled-artifacts-source.js";import{getWorkflowMetadata}from"#compiled/@workflow/core/index.js";import{createWorkflowCallbackUrl,resolveWorkflowCallbackBaseUrl}from"#execution/workflow-callback-url.js";import{resolveAgentAction,resolveAgentStartTarget}from"#execution/agent-sessions/target.js";import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{cancelRemoteAgentTurn,continueRemoteAgentSession,resetRemoteAgentSession,resolveRemoteAgentForAction,startRemoteAgentSession}from"#execution/agent-sessions/remote.js";import{buildSubagentRunInput}from"#subagents/tool.js";import{resolveConversationId}from"#shared/conversation-identity.js";const log=createLogger(`execution.agent-sessions`),RUN_FINISHED_REASON=`The workflow run that opened this session finished.`;async function openAgentSessionStep(e){"use step";let{context:t}=e,n=await loadAgentSessionBundle(t),r=resolveAgentAction({bundle:n,callId:t.parent.callId,dynamicSelections:t.dynamicSelections,input:{message:e.message,outputSchema:e.outputSchema,target:e.name}}),i=resolveAgentStartTarget({action:r,bundle:n,dynamicSelections:t.dynamicSelections,isRootSession:t.parent.rootSessionId===t.parent.sessionId}),a={auth:e.auth,bundle:n,context:t,key:e.key,replyTo:e.replyTo};return i.kind===`remote`?await startRemoteSession({...a,target:i}):await startLocalSession({...a,target:i})}async function sendAgentSessionMessageStep(e){"use step";let{address:t,context:n}=e;if(t.kind===`remote`){let r=await resolveSessionRemote(n,t);await continueRemoteAgentSession({auth:e.auth.current,callback:{callId:n.parent.callId,subagentName:t.name,token:e.replyTo,url:createWorkflowCallbackUrl(t.callbackBaseUrl,createEveCallbackRoutePath(e.replyTo))},message:e.message,outputSchema:e.outputSchema,remote:r,sessionId:t.sessionId});return}if((await dispatchWorkflowSessionCommand({command:{auth:e.auth.current,schedule:n.schedule,caller:{callId:n.parent.callId,replyTo:{kind:`hook`,token:e.replyTo},subagentName:t.name},kind:`send`,payload:{message:e.message,outputSchema:e.outputSchema}},sessionId:t.sessionId})).status!==`accepted`)throw Error(`Agent "${t.name}" can no longer receive messages; its session ended.`)}async function cancelAgentSessionTurnStep(e){"use step";let{address:t}=e;try{if(t.kind===`remote`){let n=await resolveSessionRemote(e.context,t);await cancelRemoteAgentTurn({remote:n,sessionId:t.sessionId});return}await requestWorkflowTurnCancellation({sessionId:t.sessionId})}catch(e){logError(log,`failed to cancel an agent session turn`,e,{name:t.name,sessionId:t.sessionId})}}async function endAgentSessionsStep(e){"use step";await Promise.all(e.sessions.map(endAgentSession))}async function endAgentSession({address:e,context:t}){try{if(e.kind===`remote`){let n=await resolveSessionRemote(t,e);await resetRemoteAgentSession({reason:RUN_FINISHED_REASON,remote:n,sessionId:e.sessionId});return}await dispatchWorkflowSessionCommand({command:{kind:`reset`,reason:RUN_FINISHED_REASON},sessionId:e.sessionId})}catch(t){logError(log,`failed to end an agent session`,t,{name:e.name,sessionId:e.sessionId})}}async function startLocalSession(e){let{auth:t,bundle:n,context:r,target:i}=e,{action:a}=i,{childContinuationToken:o,runInput:s}=buildSubagentRunInput({action:a,auth:t.current,capabilities:r.capabilities,schedule:r.schedule,channelMetadata:r.channelMetadata,continuationKey:e.key,graph:n.graph,inheritedConversation:r.conversation,initiatorAuth:t.initiator,limits:r.limits,parent:createParentContext(r,e.replyTo),sandboxSessionId:r.sandbox.sessionId,selfAgent:i.source.type===`runtime`,session:{continuationToken:e.replyTo,sandboxState:r.sandbox.state,sessionId:r.parent.sessionId},source:i.source}),c=createWorkflowRuntime({compiledArtifactsSource:n.compiledArtifactsSource,dynamicSubagentAgentConfig:i.dynamicSubagentAgentConfig,nodeId:a.nodeId});await contextStorage.run(new ContextContainer({localDevRequest:r.localDevRequest}),()=>c.createSession(s));let l=await waitForCommandHookOwner(sessionInboxHookToken(o));return{kind:`local`,name:a.name,nodeId:a.nodeId,sessionId:l.runId}}async function startRemoteSession(e){let{auth:t,bundle:n,context:r,target:i}=e,{action:a}=i,o=resolveRemoteAgentForAction({dynamicRemoteAgent:i.dynamicRemoteAgent,nodeId:a.nodeId,registry:n.subagentRegistry.subagentsByNodeId,remoteAgentName:a.remoteAgentName}),s=resolveWorkflowCallbackBaseUrl(getWorkflowMetadata().url),c=await startRemoteAgentSession({action:a,auth:t.current,callbackBaseUrl:s,capabilities:r.capabilities,initiatorAuth:t.initiator,operationId:`agent-session:${e.key}`,originAudience:r.trace.originAudience,parent:createParentContext(r,e.replyTo),remote:o,session:{continuationToken:e.replyTo}});return{callbackBaseUrl:s,kind:`remote`,forwardPrincipal:o.forwardPrincipal,name:a.remoteAgentName,nodeId:a.nodeId,resolverId:i.dynamicRemoteAgent?.credentialsStepId??a.nodeId,sessionId:c.sessionId,url:o.url}}function createParentContext(e,t){return{continuationToken:t,conversationId:e.trace.conversationId??resolveConversationId(e.parent.rootSessionId),lineage:e.parent,originAudience:e.trace.originAudience,traceContext:e.trace.parentTraceContext,traceRoot:e.traceRoot}}async function resolveSessionRemote(e,t){let n=await loadAgentSessionBundle(e),r=e.dynamicSelections[t.nodeId];return{...resolveRemoteAgentForAction({dynamicRemoteAgent:r?.kind===`remote`?r.remoteAgent:void 0,nodeId:t.nodeId,registry:n.subagentRegistry.subagentsByNodeId,remoteAgentName:t.name}),url:t.url}}async function loadAgentSessionBundle(e){return await getCompiledRuntimeAgentBundle({compiledArtifactsSource:resolveDurableCompiledArtifactsSource(e.bundle.source),nodeId:e.bundle.nodeId})}export{cancelAgentSessionTurnStep,endAgentSessionsStep,openAgentSessionStep,sendAgentSessionMessageStep};
@@ -1 +1 @@
1
- import{contextStorage}from"#context/container.js";import{AuthKey,TurnDeliveryIdsKey}from"#context/keys.js";import{saveSessionProjection}from"#harness/session-machine/current.js";import{createDurableSessionValues}from"#execution/durable-session-store.js";import{preserveSerializedSessionDynamicModelSelection}from"#context/serialized-dynamic-model-selection.js";import{serializeContext}from"#context/serialize.js";import{preserveCancelledTurnMessage}from"#execution/cancelled-turn-message.js";import{preserveSerializedInstrumentationState}from"#instrumentation/state.js";import{preserveSerializedAgentTraceState}from"#tracing/agent-trace-context-store.js";async function createCancelledModelCallBatchResult(e){let t=serializeContext(e.ctx),n=e.checkpoint?.result.session??e.initialSession,r=e.checkpoint===void 0?await contextStorage.run(e.ctx,()=>preserveCancelledTurnMessage(n,e.stepInput)):n,i={...e.checkpoint?.serializedContext??e.beforeBatchContext,[AuthKey.name]:t[AuthKey.name],[TurnDeliveryIdsKey.name]:t[TurnDeliveryIdsKey.name]};return{action:`cancelled`,serializedContext:preserveSerializedInstrumentationState(preserveSerializedAgentTraceState(preserveSerializedSessionDynamicModelSelection(i,t),t),t),...createDurableSessionValues(saveSessionProjection(r,e.ctx))}}export{createCancelledModelCallBatchResult};
1
+ import{contextStorage}from"#context/container.js";import{saveSessionProjection}from"#harness/session-machine/current.js";import{AuthKey,TurnDeliveryIdsKey}from"#context/keys.js";import{createDurableSessionValues}from"#execution/durable-session-store.js";import{preserveSerializedSessionDynamicModelSelection}from"#context/serialized-dynamic-model-selection.js";import{serializeContext}from"#context/serialize.js";import{preserveCancelledTurnMessage}from"#execution/cancelled-turn-message.js";import{preserveSerializedInstrumentationState}from"#instrumentation/state.js";import{preserveSerializedAgentTraceState}from"#tracing/agent-trace-context-store.js";async function createCancelledModelCallBatchResult(e){let t=serializeContext(e.ctx),n=e.checkpoint?.result.session??e.initialSession,r=e.checkpoint===void 0?await contextStorage.run(e.ctx,()=>preserveCancelledTurnMessage(n,e.stepInput)):n,i={...e.checkpoint?.serializedContext??e.beforeBatchContext,[AuthKey.name]:t[AuthKey.name],[TurnDeliveryIdsKey.name]:t[TurnDeliveryIdsKey.name]};return{action:`cancelled`,serializedContext:preserveSerializedInstrumentationState(preserveSerializedAgentTraceState(preserveSerializedSessionDynamicModelSelection(i,t),t),t),...createDurableSessionValues(saveSessionProjection(r,e.ctx))}}export{createCancelledModelCallBatchResult};
@@ -1 +1 @@
1
- import{runJsProgram}from"#execution/dynamic-workflow/workflow.js";async function runWorkflowProgramTask(e,t){"use workflow";return runJsProgram(e.js,t,{maxSubagents:e.maxSubagents??0})}runWorkflowProgramTask.workflowId=`workflow//eve@0.72.1//runWorkflowProgramTask`;export{runWorkflowProgramTask};
1
+ import{runJsProgram}from"#execution/dynamic-workflow/workflow.js";async function runWorkflowProgramTask(e,t){"use workflow";return runJsProgram(e.js,t,{maxSubagents:e.maxSubagents??0})}runWorkflowProgramTask.workflowId=`workflow//eve@0.74.0//runWorkflowProgramTask`;export{runWorkflowProgramTask};
@@ -29,7 +29,11 @@ export interface InvokeToolManifest extends CompiledToolBindings {
29
29
  readonly tools: readonly Pick<CompiledToolDefinition, "behavior" | "hasExecute" | "name" | "sourceId">[];
30
30
  }
31
31
  /**
32
- * Runs one tool outside a turn; see `InvokeToolFn` for the contract. Each call
33
- * gets a fresh session id, so nothing it opens is shared with another call.
32
+ * Runs one tool outside a turn; see `InvokeToolFn` for the contract. A call
33
+ * without a key gets a fresh session id, so nothing it opens is shared with
34
+ * another call. A keyed call derives its session id from the caller and key.
35
+ * Either way the session's authored state is call-scoped: tool sessions keep
36
+ * only their sandbox. An anonymous caller is denied a keyed call: with one
37
+ * shared principal, the key alone would name the session.
34
38
  */
35
39
  export declare function invokeTool(runtime: InvokeToolRuntime, name: string, input: unknown, options: InvokeToolOptions): Promise<InvokeToolResult>;
@@ -1 +1 @@
1
- import{createLogger,logError}from"#internal/logging.js";import{compiledToolOwner,isInvocableCompiledTool}from"#channel/tool-eligibility.js";import{ContextContainer,contextStorage}from"#context/container.js";import{AuthKey,InitiatorAuthKey,SandboxKey,SessionIdKey,SessionKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{resolveApprovalPolicy}from"#approval/definition.js";import{ensureSandboxAccess}from"#execution/sandbox/ensure.js";import{context,trace}from"#compiled/@opentelemetry/api/index.js";import{isConnectionAuthorizationFailedError}from"#connections/errors.js";import{AuthorizationHookKey,CallbackBaseUrlKey,isAuthorizationSignal,modelFacingAuthorizationOutput}from"#harness/authorization.js";import{checkToolCallInput,toolCallModelOutput}from"#harness/tool-call-io.js";import{normalizeToolJsonOutput}from"#harness/tool-model-output.js";import{isAsyncIterable}from"#shared/async-iterable.js";import{createUlid}from"#shared/ulid.js";import{withInvokeToolSpan}from"#tracing/invoke-tool-span.js";const log=createLogger(`invoke-tool`);function ineligibility(e,t){if(!isInvocableCompiledTool(e,t))return compiledToolOwner(e,t).kind===`framework`?`it is a framework tool, which needs a conversation`:t.behavior?.handling===void 0?`it has no server-side execute`:`the harness or the model provider runs it, not its execute`}async function invokeTool(e,t,n,r){let i=e.manifest.tools.find(e=>e.name===t),a=e.tools.get(t);if(i===void 0||a===void 0)return failed(`The agent has no tool named "${t}".`);let o=ineligibility(e.manifest,i)??(a.execute===void 0?`it has no server-side execute`:void 0);if(o!==void 0)return failed(`Tool "${t}" cannot be invoked outside a conversation: ${o}.`);let s=`call_${createUlid()}`,c=`call_session_${createUlid()}`;return await withInvokeToolSpan({agentName:e.agentName,auth:r.auth,callId:s,origin:e.origin,sessionId:c,toolName:t},i=>runInvocation({callId:s,definition:a,input:n,name:t,observer:i,options:r,runtime:e,sessionId:c}))}async function runInvocation(e){let{callId:t,definition:n,name:r,observer:i,options:a,runtime:o,sessionId:s}=e,c=await checkToolCallInput(n,e.input,t);if(c.kind===`threw`)return i.failedWith(c.error),failedFromError(c.error,r,`input validation failed`);if(c.kind===`invalid`)return{message:c.message,status:`invalid-input`};let l=await callSandbox(o,s),u=createCallContext({auth:a.auth,callId:t,callbackBaseUrl:o.callbackBaseUrl,sessionId:s});u.setVirtualContext(SandboxKey,l.access),o.bundle!==void 0&&u.setVirtualContext(BundleKey,o.bundle);try{return await contextStorage.run(u,()=>runCall({callId:t,definition:n,input:c.value,observer:i,signal:a.signal}))}finally{await l.release().catch(e=>{logError(log,`failed to delete a call's sandbox`,e,{sessionId:s,toolName:r})})}}async function callSandbox(e,t){let n=await ensureSandboxAccess({compiledArtifactsSource:e.compiledArtifactsSource,nodeId:e.nodeId,ownsSandbox:!0,registry:e.sandboxRegistry,sessionId:t,state:null}),r;return{access:{...n,get(){let e=n.get();return r=e,e}},async release(){r!==void 0&&await r.catch(()=>null)!==null&&await n.delete?.()}}}function createCallContext(e){let t=new ContextContainer;return t.set(AuthKey,e.auth),t.set(InitiatorAuthKey,e.auth),t.set(SessionIdKey,e.sessionId),t.setVirtualContext(SessionKey,{auth:{current:e.auth,initiator:e.auth},sessionId:e.sessionId,turn:{id:e.callId,sequence:0}}),t.set(CallbackBaseUrlKey,e.callbackBaseUrl.replace(/\/$/,``)),t.setVirtualContext(AuthorizationHookKey,`invoke-tool:${e.callId}`),t}async function runCall(e){let{callId:t,definition:n,observer:r}=e,i=e.signal??new AbortController().signal;if(n.approval!==void 0){let a;try{a=await resolveApprovalPolicy(n.approval)({...buildCallbackContext(),abortSignal:i,approvedTools:new Set,callId:t,toolInput:e.input,toolName:n.name})}catch(e){return r.failedWith(e),failedFromError(e,n.name,`approval policy failed`)}let o=decideApproval(a);if(o.kind===`denied`)return denied(o.reason);if(o.kind===`user-approval`)return{status:`approval-required`}}let a={abortSignal:i,messages:[],toolCallId:t};await r.executing(e.input);let o,s,c=!1,l=performance.now(),elapsed=()=>performance.now()-l,u;try{o=await n.execute(e.input,a),isAsyncIterable(o)&&(o=await lastIterated(o)),c=!0,isAuthorizationSignal(o)||(s=normalizeToolJsonOutput({boundary:`execute`,output:o,toolCallId:t,toolName:n.name})),u=elapsed()}catch(e){return await r.executed({durationMs:elapsed(),error:e,type:`error`}),r.failedWith(e),c?failedFromError(e,n.name,`tool output could not be serialized`):isConnectionAuthorizationFailedError(e)?failed(toErrorMessage(e)):failedFromError(e,n.name,`tool execution failed`)}if(isAuthorizationSignal(o))return await r.executed({durationMs:u,output:modelFacingAuthorizationOutput(o),type:`result`}),{connections:o.challenges.map(e=>e.name),status:`authorization-required`};await r.executed({durationMs:u,output:s,type:`result`});try{return{modelOutput:await toolCallModelOutput(n,s,t),output:s,status:`completed`}}catch(e){return r.failedWith(e),failedFromError(e,n.name,`tool output could not be serialized`)}}function decideApproval(e){if(e===!0||e===`user-approval`)return{kind:`user-approval`};if(e===`denied`)return{kind:`denied`};if(typeof e==`object`&&e){if(e.type===`user-approval`)return{kind:`user-approval`};if(e.type===`denied`)return{kind:`denied`,reason:e.reason}}return{kind:`run`}}async function lastIterated(e){let t;for await(let n of e)t=n;return t}function denied(e){return e===void 0?{status:`denied`}:{reason:e,status:`denied`}}function failed(e){return{message:e,status:`failed`}}function failedFromError(e,t,n){let r=context.with(trace.deleteSpan(context.active()),()=>logError(log,`invokeTool ${n}`,e,{toolName:t}));return{errorId:r,message:`Tool "${t}" failed: ${n}. The error is logged with id ${r}.`,status:`failed`}}export{invokeTool};
1
+ import{createLogger,logError}from"#internal/logging.js";import{compiledToolOwner,isInvocableCompiledTool}from"#channel/tool-eligibility.js";import{ContextContainer,contextStorage}from"#context/container.js";import{AuthKey,InitiatorAuthKey,SandboxKey,SessionIdKey,SessionKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{resolveApprovalPolicy}from"#approval/definition.js";import{ensureSandboxAccess}from"#execution/sandbox/ensure.js";import{context,trace}from"#compiled/@opentelemetry/api/index.js";import{isAnonymousPrincipal}from"#channel/principal-identity.js";import{isConnectionAuthorizationFailedError}from"#connections/errors.js";import{deriveToolSessionId,validateToolSessionKey}from"#execution/tool-session/id.js";import{ToolSessionSandboxUnsupportedError,assertToolSessionSandboxSupport,releaseToolSessionHandle}from"#execution/tool-session/sandbox.js";import{AuthorizationHookKey,CallbackBaseUrlKey,isAuthorizationSignal,modelFacingAuthorizationOutput}from"#harness/authorization.js";import{checkToolCallInput,toolCallModelOutput}from"#harness/tool-call-io.js";import{normalizeToolJsonOutput}from"#harness/tool-model-output.js";import{isAsyncIterable}from"#shared/async-iterable.js";import{createUlid}from"#shared/ulid.js";import{withInvokeToolSpan}from"#tracing/invoke-tool-span.js";const log=createLogger(`invoke-tool`);function ineligibility(e,t){if(!isInvocableCompiledTool(e,t))return compiledToolOwner(e,t).kind===`framework`?`it is a framework tool, which needs a conversation`:t.behavior?.handling===void 0?`it has no server-side execute`:`the harness or the model provider runs it, not its execute`}async function invokeTool(e,t,n,r){let i=e.manifest.tools.find(e=>e.name===t),a=e.tools.get(t);if(i===void 0||a===void 0)return failed(`The agent has no tool named "${t}".`);let o=ineligibility(e.manifest,i)??(a.execute===void 0?`it has no server-side execute`:void 0);if(o!==void 0)return failed(`Tool "${t}" cannot be invoked outside a conversation: ${o}.`);let s=r.key,c=s===void 0?void 0:validateToolSessionKey(s);if(c!==void 0)return{message:c,status:`invalid-input`};if(s!==void 0&&isAnonymousPrincipal(r.auth))return denied(`Tool sessions need an authenticated caller: an anonymous caller cannot send a key. Call without a key for a one-off session.`);let l=`call_${createUlid()}`,u=`call_session_${createUlid()}`,d=s===void 0?u:deriveToolSessionId({current:r.auth,forwardedBy:r.forwardedBy,key:s});return await withInvokeToolSpan({agentName:e.agentName,auth:r.auth,callId:l,origin:e.origin,sessionId:u,toolName:t},i=>runInvocation({callId:l,definition:a,input:n,name:t,observer:i,options:r,runtime:e,sessionId:d}))}async function runInvocation(e){let{callId:t,definition:n,name:r,observer:i,options:a,runtime:o,sessionId:s}=e,c=await checkToolCallInput(n,e.input,t);if(c.kind===`threw`)return i.failedWith(c.error),failedFromError(c.error,r,`input validation failed`);if(c.kind===`invalid`)return{message:c.message,status:`invalid-input`};let l=a.key===void 0?await callSandbox(o,s):await keyedSandbox(o,s),u=createCallContext({auth:a.auth,initiator:a.initiator??a.auth,callId:t,callbackBaseUrl:o.callbackBaseUrl,sessionId:s});u.setVirtualContext(SandboxKey,l.access),o.bundle!==void 0&&u.setVirtualContext(BundleKey,o.bundle);try{return await contextStorage.run(u,()=>runCall({callId:t,definition:n,input:c.value,observer:i,signal:a.signal}))}finally{await l.release().catch(e=>{logError(log,`failed to release a call's sandbox`,e,{sessionId:s,toolName:r})})}}async function keyedSandbox(e,t){let n=await ensureSandboxAccess({compiledArtifactsSource:e.compiledArtifactsSource,nodeId:e.nodeId,ownsSandbox:!1,registry:e.sandboxRegistry,sessionId:t,state:null});return{access:{...n,async get(){return assertToolSessionSandboxSupport(e.sandboxRegistry),await n.get()}},async release(){let t=await n.detach();t!==void 0&&await releaseToolSessionHandle(e.sandboxRegistry,t)}}}async function callSandbox(e,t){let n=await ensureSandboxAccess({compiledArtifactsSource:e.compiledArtifactsSource,nodeId:e.nodeId,ownsSandbox:!0,registry:e.sandboxRegistry,sessionId:t,state:null}),r;return{access:{...n,get(){let e=n.get();return r=e,e}},async release(){r!==void 0&&await r.catch(()=>null)!==null&&await n.delete?.()}}}function createCallContext(e){let t=new ContextContainer;return t.set(AuthKey,e.auth),t.set(InitiatorAuthKey,e.initiator),t.set(SessionIdKey,e.sessionId),t.setVirtualContext(SessionKey,{auth:{current:e.auth,initiator:e.initiator},sessionId:e.sessionId,turn:{id:e.callId,sequence:0}}),t.set(CallbackBaseUrlKey,e.callbackBaseUrl.replace(/\/$/,``)),t.setVirtualContext(AuthorizationHookKey,`invoke-tool:${e.callId}`),t}async function runCall(e){let{callId:t,definition:n,observer:r}=e,i=e.signal??new AbortController().signal;if(n.approval!==void 0){let a;try{a=await resolveApprovalPolicy(n.approval)({...buildCallbackContext(),abortSignal:i,approvedTools:new Set,callId:t,toolInput:e.input,toolName:n.name})}catch(e){return r.failedWith(e),failedFromError(e,n.name,`approval policy failed`)}let o=decideApproval(a);if(o.kind===`denied`)return denied(o.reason);if(o.kind===`user-approval`)return{status:`approval-required`}}let a={abortSignal:i,messages:[],toolCallId:t};await r.executing(e.input);let o,s,c=!1,l=performance.now(),elapsed=()=>performance.now()-l,u;try{o=await n.execute(e.input,a),isAsyncIterable(o)&&(o=await lastIterated(o)),c=!0,isAuthorizationSignal(o)||(s=normalizeToolJsonOutput({boundary:`execute`,output:o,toolCallId:t,toolName:n.name})),u=elapsed()}catch(e){return await r.executed({durationMs:elapsed(),error:e,type:`error`}),r.failedWith(e),c?failedFromError(e,n.name,`tool output could not be serialized`):isConnectionAuthorizationFailedError(e)||e instanceof ToolSessionSandboxUnsupportedError?failed(toErrorMessage(e)):failedFromError(e,n.name,`tool execution failed`)}if(isAuthorizationSignal(o))return await r.executed({durationMs:u,output:modelFacingAuthorizationOutput(o),type:`result`}),{connections:o.challenges.map(e=>e.name),status:`authorization-required`};await r.executed({durationMs:u,output:s,type:`result`});try{return{modelOutput:await toolCallModelOutput(n,s,t),output:s,status:`completed`}}catch(e){return r.failedWith(e),failedFromError(e,n.name,`tool output could not be serialized`)}}function decideApproval(e){if(e===!0||e===`user-approval`)return{kind:`user-approval`};if(e===`denied`)return{kind:`denied`};if(typeof e==`object`&&e){if(e.type===`user-approval`)return{kind:`user-approval`};if(e.type===`denied`)return{kind:`denied`,reason:e.reason}}return{kind:`run`}}async function lastIterated(e){let t;for await(let n of e)t=n;return t}function denied(e){return e===void 0?{status:`denied`}:{reason:e,status:`denied`}}function failed(e){return{message:e,status:`failed`}}function failedFromError(e,t,n){let r=context.with(trace.deleteSpan(context.active()),()=>logError(log,`invokeTool ${n}`,e,{toolName:t}));return{errorId:r,message:`Tool "${t}" failed: ${n}. The error is logged with id ${r}.`,status:`failed`}}export{invokeTool};
@@ -1 +1 @@
1
- import{completeLegacyDriverStep}from"./completion-step.js";import{interruptLegacySessionStep}from"./interrupt-step.js";import{prepareLegacySessionStep}from"./prepare-step.js";import{sessionCommandHookToken}from"#execution/session-inbox/address.js";import{isHookConflictError}from"#execution/hook-ownership.js";import{sessionTimeoutDeadline}from"#execution/session/timeout.js";import{sessionHookTokens}from"#execution/session/hook-tokens.js";import{createSessionInbox}from"#execution/session-inbox/inbox.js";import{failSession,runPreparedSession}from"#execution/session/program.js";async function turnWorkflow(e){"use workflow";let t=await prepareLegacySessionStep(e),{sessionId:n}=t.sessionState,r=createSessionInbox(n);try{await r.claimSessionHook(sessionCommandHookToken(n))}catch(e){if(isHookConflictError(e))return;throw e}let{sessionWritable:i}=t.input,a;try{await r.claimSessionHooks(sessionHookTokens(t)),a=await interruptLegacySessionStep(t)}catch(e){return await r.dispose(),await failSession({error:e,serializedContext:t.serializedContext,sessionId:n,sessionState:t.sessionState,sessionWritable:i})}await runPreparedSession({anchor:{kind:`self`,notify:e=>completeLegacyDriverStep({completionToken:t.input.completionToken,history:t.history,result:e,serializedContext:t.serializedContext,sessionState:t.sessionState,sessionWritable:i})},caller:void 0,capabilities:t.input.capabilities,deploymentId:t.deploymentId,history:a.history,start:{input:t.input.delivery===void 0?void 0:{...t.input.delivery,caller:void 0},kind:`turn`},retention:t.input.retention,serializedContext:a.serializedContext,sessionId:n,sessionState:a.sessionState,sessionTimeoutMs:t.sessionTimeoutMs,sessionTimeoutDeadline:sessionTimeoutDeadline(t.sessionTimeoutMs,Date.now()),sessionWritable:i},r)}turnWorkflow.workflowId=`workflow//eve//turnWorkflow`;export{turnWorkflow};
1
+ import{completeLegacyDriverStep}from"./completion-step.js";import{interruptLegacySessionStep}from"./interrupt-step.js";import{prepareLegacySessionStep}from"./prepare-step.js";import{sessionCommandHookToken}from"#execution/session-inbox/address.js";import{isHookConflictError}from"#execution/hook-ownership.js";import{sessionTimeoutDeadline}from"#execution/session/timeout.js";import{sessionHookTokens}from"#execution/session/hook-tokens.js";import{createSessionInbox}from"#execution/session-inbox/inbox.js";import{failSession,runPreparedSession}from"#execution/session/program.js";import{createSessionTimeoutControl}from"#execution/session/timeout-control.js";async function turnWorkflow(e){"use workflow";let t=await prepareLegacySessionStep(e),{sessionId:n}=t.sessionState,r=createSessionInbox(n);try{await r.claimSessionHook(sessionCommandHookToken(n))}catch(e){if(isHookConflictError(e))return;throw e}let{sessionWritable:i}=t.input,a;try{await r.claimSessionHooks(sessionHookTokens(t)),a=await interruptLegacySessionStep(t)}catch(e){return await r.dispose(),await failSession({error:e,serializedContext:t.serializedContext,sessionId:n,sessionState:t.sessionState,sessionWritable:i})}let o=sessionTimeoutDeadline(t.sessionTimeoutMs,Date.now());await runPreparedSession({anchor:{kind:`self`,notify:e=>completeLegacyDriverStep({completionToken:t.input.completionToken,history:t.history,result:e,serializedContext:t.serializedContext,sessionState:t.sessionState,sessionWritable:i})},caller:void 0,capabilities:t.input.capabilities,deploymentId:t.deploymentId,history:a.history,start:{input:t.input.delivery===void 0?void 0:{...t.input.delivery,caller:void 0},kind:`turn`},retention:t.input.retention,serializedContext:a.serializedContext,sessionId:n,sessionState:a.sessionState,sessionTimeoutControl:o===void 0?void 0:createSessionTimeoutControl({deadline:o,sessionId:n}),sessionTimeoutMs:t.sessionTimeoutMs,sessionTimeoutDeadline:o,sessionWritable:i},r)}turnWorkflow.workflowId=`workflow//eve//turnWorkflow`;export{turnWorkflow};
@@ -47,6 +47,7 @@ interface CreateExecutionNodeStepInput {
47
47
  readonly historyProjector?: HistoryViewProjector;
48
48
  readonly historyView?: PreparedHistoryView;
49
49
  readonly instrumentation: ExecutionInstrumentation | undefined;
50
+ readonly titleAttributeWrite?: ToolLoopHarnessConfig["titleAttributeWrite"];
50
51
  readonly modelResolutionScope: RuntimeModelResolutionScope;
51
52
  readonly node: ResolvedRuntimeAgentNode;
52
53
  }
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{UNSPECIFIED_INPUT_SCHEMA}from"#tools/schema.js";import{createToolExecuteWithAuth}from"#execution/tool-auth.js";import{resolveRuntimeModelReference}from"#runtime/agent/resolve-model.js";import{createPreparedWorkflowToolHarnessDefinition,createWorkflowToolHarnessDefinition}from"#execution/tools/workflow/harness-definition.js";import{isFrameworkTool}from"#tools/provided/framework-tool.js";import{dispatchDynamicModelEvent}from"#context/dynamic-model-lifecycle.js";import{preparePersistedStepDynamicToolMetadata}from"#context/dynamic-tool-lifecycle.js";import{createToolLoopHarness}from"#harness/tool-loop.js";import{workflowIdForHandling}from"#runtime/subagents/workflow-reference.js";import{findRegisteredRuntimeTool}from"#runtime/tools/registry.js";import{WEB_SEARCH_TOOL_NAME,resolveWebSearchActivityLabel}from"#harness/provider-tool-schemas.js";const log=createLogger(`execution.node-step`);function createExecutionNodeStep(e){let t=createRuntimeModelResolver(e.modelResolutionScope),n=e.node.turnAgent.dynamicModel===void 0?void 0:createRuntimeDynamicModelEventDispatcher(e.modelResolutionScope,e.node.turnAgent.dynamicModel,e.abortSignal),r=createNodeHarnessTools({node:e.node}),i=e.instrumentation,a=i?.prepareExecution(),o=createToolLoopHarness({steeringSignal:e.steeringSignal,abortSignal:e.abortSignal,capabilities:e.capabilities,clearOnly:e.clearOnly,compactOnly:e.compactOnly,handleEvent:e.handleEvent,historyProjector:e.historyProjector,historyView:e.historyView,instrumentation:a,prepareApprovalTurn:e.prepareApprovalTurn,signInCompletions:e.signInCompletions,resolveStepDynamicTools:t=>preparePersistedStepDynamicToolMetadata({...t,resolvers:e.node.agent.dynamicToolResolvers??[]}),dispatchDynamicModelEvent:n,resolveModel:t,runtimeIdentity:buildRuntimeIdentity(e.node),tools:r});return i===void 0?o:async(e,t)=>{try{return await o(e,t)}finally{await i.flush()}}}function buildRuntimeIdentity(e){let t=resolveInstalledPackageInfo(),n={agentId:e.turnAgent.id,agentName:e.agent.config?.name,eveVersion:t.version},r=process.env.VERCEL_GIT_COMMIT_SHA?.trim(),i=process.env.VERCEL_GIT_COMMIT_REF?.trim(),a=process.env.VERCEL_DEPLOYMENT_CREATED_AT?.trim();return r||i||a?{...n,build:{deployedAt:a||void 0,gitBranch:i||void 0,gitSha:r||void 0}}:n}function createRuntimeModelResolver(e){return t=>resolveRuntimeModelReference(t,e)}function createRuntimeDynamicModelEventDispatcher(e,t,n){return r=>dispatchDynamicModelEvent({abortSignal:n,ctx:r.ctx,dynamicModel:t,event:r.event,messages:r.messages,scope:e})}function createNodeHarnessTools(e){let t=new Map;for(let n of e.node.turnAgent.tools){let r=resolveHarnessToolDefinition({node:e.node,tool:n});r!==null&&t.set(n.name,r)}return t}function resolveHarnessToolDefinition(e){let t=findRegisteredRuntimeTool(e.node.toolRegistry,e.tool.name),n=workflowIdForHandling(e.tool.behavior?.handling);return n===void 0?t===null?(log.warn(`declared tool is not registered — omitting from toolset`,{toolName:e.tool.name,nodeId:e.node.nodeId}),null):createRegisteredHarnessToolDefinition({behavior:e.tool.behavior,definition:t.definition,rootOnly:e.tool.rootOnly}):t===null?createPreparedWorkflowToolHarnessDefinition(e.tool):createWorkflowToolHarnessDefinition({executeInput:t.definition.executeInput,definition:createRegisteredHarnessToolDefinition({behavior:e.tool.behavior,definition:t.definition,rootOnly:e.tool.rootOnly}),workflowId:n})}function createRegisteredHarnessToolDefinition(e){let t=e.definition,n=t.execute;return{availableInSubagents:t.availableInSubagents,label:t.label??(t.owner.kind===`framework`&&t.name===WEB_SEARCH_TOOL_NAME?{start:resolveWebSearchActivityLabel}:void 0),approvalKey:t.approvalKey,behavior:e.behavior,description:t.description,endsTurn:t.endsTurn,executeInput:t.executeInput,execute:resolveAuthoredExecute({rawExecute:n,scope:t.name}),frameworkTool:isFrameworkTool(t)||t.owner.kind===`framework`,frameworkAction:t.behavior?.presentation===`load-skill`?`load-skill`:void 0,inputSchema:t.inputSchema??UNSPECIFIED_INPUT_SCHEMA,name:t.name,approval:t.approval,outputSchema:t.outputSchema,rootOnly:e.rootOnly,toModelOutput:t.toModelOutput}}function resolveAuthoredExecute(e){let{rawExecute:t,scope:n}=e;return t===void 0?void 0:createToolExecuteWithAuth({execute:t,scope:n})}export{buildRuntimeIdentity,createExecutionNodeStep,createNodeHarnessTools};
1
+ import{createLogger}from"#internal/logging.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{UNSPECIFIED_INPUT_SCHEMA}from"#tools/schema.js";import{createToolExecuteWithAuth}from"#execution/tool-auth.js";import{resolveRuntimeModelReference}from"#runtime/agent/resolve-model.js";import{createPreparedWorkflowToolHarnessDefinition,createWorkflowToolHarnessDefinition}from"#execution/tools/workflow/harness-definition.js";import{isFrameworkTool}from"#tools/provided/framework-tool.js";import{dispatchDynamicModelEvent}from"#context/dynamic-model-lifecycle.js";import{preparePersistedStepDynamicToolMetadata}from"#context/dynamic-tool-lifecycle.js";import{createToolLoopHarness}from"#harness/tool-loop.js";import{workflowIdForHandling}from"#runtime/subagents/workflow-reference.js";import{findRegisteredRuntimeTool}from"#runtime/tools/registry.js";import{WEB_SEARCH_TOOL_NAME,resolveWebSearchActivityLabel}from"#harness/provider-tool-schemas.js";const log=createLogger(`execution.node-step`);function createExecutionNodeStep(e){let t=createRuntimeModelResolver(e.modelResolutionScope),n=e.node.turnAgent.dynamicModel===void 0?void 0:createRuntimeDynamicModelEventDispatcher(e.modelResolutionScope,e.node.turnAgent.dynamicModel,e.abortSignal),r=createNodeHarnessTools({node:e.node}),i=e.instrumentation,a=i?.prepareExecution(),o=createToolLoopHarness({steeringSignal:e.steeringSignal,abortSignal:e.abortSignal,capabilities:e.capabilities,clearOnly:e.clearOnly,compactOnly:e.compactOnly,handleEvent:e.handleEvent,historyProjector:e.historyProjector,historyView:e.historyView,instrumentation:a,prepareApprovalTurn:e.prepareApprovalTurn,signInCompletions:e.signInCompletions,resolveStepDynamicTools:t=>preparePersistedStepDynamicToolMetadata({...t,resolvers:e.node.agent.dynamicToolResolvers??[]}),dispatchDynamicModelEvent:n,resolveModel:t,runtimeIdentity:buildRuntimeIdentity(e.node),tools:r,titleAttributeWrite:e.titleAttributeWrite});return i===void 0?o:async(e,t)=>{try{return await o(e,t)}finally{await i.flush()}}}function buildRuntimeIdentity(e){let t=resolveInstalledPackageInfo(),n={agentId:e.turnAgent.id,agentName:e.agent.config?.name,eveVersion:t.version},r=process.env.VERCEL_GIT_COMMIT_SHA?.trim(),i=process.env.VERCEL_GIT_COMMIT_REF?.trim(),a=process.env.VERCEL_DEPLOYMENT_CREATED_AT?.trim();return r||i||a?{...n,build:{deployedAt:a||void 0,gitBranch:i||void 0,gitSha:r||void 0}}:n}function createRuntimeModelResolver(e){return t=>resolveRuntimeModelReference(t,e)}function createRuntimeDynamicModelEventDispatcher(e,t,n){return r=>dispatchDynamicModelEvent({abortSignal:n,ctx:r.ctx,dynamicModel:t,event:r.event,messages:r.messages,scope:e})}function createNodeHarnessTools(e){let t=new Map;for(let n of e.node.turnAgent.tools){let r=resolveHarnessToolDefinition({node:e.node,tool:n});r!==null&&t.set(n.name,r)}return t}function resolveHarnessToolDefinition(e){let t=findRegisteredRuntimeTool(e.node.toolRegistry,e.tool.name),n=workflowIdForHandling(e.tool.behavior?.handling);return n===void 0?t===null?(log.warn(`declared tool is not registered — omitting from toolset`,{toolName:e.tool.name,nodeId:e.node.nodeId}),null):createRegisteredHarnessToolDefinition({behavior:e.tool.behavior,definition:t.definition,rootOnly:e.tool.rootOnly}):t===null?createPreparedWorkflowToolHarnessDefinition(e.tool):createWorkflowToolHarnessDefinition({executeInput:t.definition.executeInput,definition:createRegisteredHarnessToolDefinition({behavior:e.tool.behavior,definition:t.definition,rootOnly:e.tool.rootOnly}),workflowId:n})}function createRegisteredHarnessToolDefinition(e){let t=e.definition,n=t.execute;return{availableInSubagents:t.availableInSubagents,label:t.label??(t.owner.kind===`framework`&&t.name===WEB_SEARCH_TOOL_NAME?{start:resolveWebSearchActivityLabel}:void 0),approvalKey:t.approvalKey,behavior:e.behavior,description:t.description,endsTurn:t.endsTurn,executeInput:t.executeInput,execute:resolveAuthoredExecute({rawExecute:n,scope:t.name}),frameworkTool:isFrameworkTool(t)||t.owner.kind===`framework`,frameworkAction:t.behavior?.presentation===`load-skill`?`load-skill`:void 0,inputSchema:t.inputSchema??UNSPECIFIED_INPUT_SCHEMA,name:t.name,approval:t.approval,outputSchema:t.outputSchema,rootOnly:e.rootOnly,toModelOutput:t.toModelOutput}}function resolveAuthoredExecute(e){let{rawExecute:t,scope:n}=e;return t===void 0?void 0:createToolExecuteWithAuth({execute:t,scope:n})}export{buildRuntimeIdentity,createExecutionNodeStep,createNodeHarnessTools};