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
@@ -26,6 +26,17 @@ export interface McpClientConnectionDefinition {
26
26
  * initialize handshake; that handshake still negotiates a supported version.
27
27
  */
28
28
  readonly protocolVersionDiscovery?: boolean;
29
+ /**
30
+ * Whether to forward the calling turn's user and initiator to the server in
31
+ * the `eve-forwarded-principal` header, so an eve agent's `mcpChannel` can
32
+ * run its published tools as that user. The server must set
33
+ * `trustedForwarders` and trust this connection's route-authenticated
34
+ * identity; otherwise it refuses the request with 403. Anonymous callers
35
+ * are not forwarded. Requests carrying the header fail rather than follow
36
+ * a redirect.
37
+ * @default false
38
+ */
39
+ readonly forwardPrincipal?: boolean;
29
40
  /**
30
41
  * Human-readable summary of the connection and its tools.
31
42
  *
@@ -0,0 +1,7 @@
1
+ import type { StandardSchemaV1 } from "#compiled/@standard-schema/spec/index.js";
2
+ import type { DefinedDynamicSchedules, ScheduleClient } from "#public/schedules/subscription.js";
3
+ import { type ScheduleCollectionClient } from "#runtime/schedules/collection-client.js";
4
+ /** Binds a registered subscription to a scope authorized on every operation. */
5
+ export declare function schedules<TPayload, TPrepared = TPayload>(collection: DefinedDynamicSchedules<TPayload, StandardSchemaV1<unknown, TPayload>, TPrepared>): Promise<ScheduleClient<TPayload>>;
6
+ /** Shared binding for model approval preview and code-only client access. */
7
+ export declare function bindScheduleCollection<TPayload, TPrepared = TPayload>(collection: DefinedDynamicSchedules<TPayload, StandardSchemaV1<unknown, TPayload>, TPrepared>): Promise<ScheduleCollectionClient<TPayload, TPrepared>>;
@@ -0,0 +1 @@
1
+ import{getAdapterKind}from"#channel/adapter.js";import{loadContext}from"#context/container.js";import{AuthKey,ChannelInstrumentationKey,ContinuationTokenKey,InitiatorAuthKey,SessionIdKey}from"#context/keys.js";import{readScheduleCollectionSource}from"#shared/schedule-collection-definition.js";import{normalizeScheduleCollectionDefinition}from"#internal/authored-definition/schedule-collection.js";import{readSessionSchedule}from"#context/session-schedule.js";import{ChannelKey}from"#runtime/sessions/runtime-context-keys.js";import{createScheduleCollectionClient}from"#runtime/schedules/collection-client.js";async function schedules(e){return await bindScheduleCollection(e)}async function bindScheduleCollection(e){let t=readScheduleCollectionSource(e);if(t===void 0)throw Error(`schedules(): subscription must be a stamped agent/schedules module export.`);let n=normalizeScheduleCollectionDefinition(e,`Invalid schedule subscription ${t.logicalPath}.`),r=loadContext(),i=r.get(ChannelKey);return createScheduleCollectionClient(n,{abortSignal:new AbortController().signal,session:{id:r.get(SessionIdKey)??``,schedule:readSessionSchedule(r),auth:{current:r.get(AuthKey)??null,initiator:r.get(InitiatorAuthKey)??null}},channel:{kind:i===void 0?void 0:getAdapterKind(i),continuationToken:r.get(ContinuationTokenKey),metadata:r.get(ChannelInstrumentationKey)?.metadata},application:t.application,collection:t.collection})}export{bindScheduleCollection,schedules};
@@ -0,0 +1,5 @@
1
+ /** Experimental dynamic schedule subscriptions. APIs may change without notice. */
2
+ export { schedules } from "#public/experimental/schedules/client.js";
3
+ export { defineDynamicSchedules, type DefinedDynamicSchedules, type DynamicSchedulesDefinition, type DynamicSchedulesRunArgs, type DynamicSchedulesToFn, type ScheduleCreateApproval, type ScheduleApprovals, type ScheduleClient, type ScheduleClientCreate, type ScheduleCreate, type ScheduleExpression, type ScheduleTiming, type ScheduleList, type ScheduleOccurrence, type ScheduleOccurrenceIdentity, type SchedulePrincipalReference, type ScheduleOccurrenceEvent, type SchedulePage, type ScheduleProvider, type ScheduleRecord, type ScheduleScopeContext, type ScheduleScopeResolverResult, type ScheduleOperation, type ScheduleState, } from "#public/schedules/subscription.js";
4
+ export type { ScheduleDelivery, ScheduleDeliveryTarget, ScheduleProviderContext, } from "#runtime/schedules/provider-types.js";
5
+ export { byPrincipal } from "#public/schedules/scope.js";
@@ -0,0 +1 @@
1
+ import{schedules}from"#public/experimental/schedules/client.js";import{defineDynamicSchedules}from"#public/schedules/subscription.js";import{byPrincipal}from"#public/schedules/scope.js";export{byPrincipal,defineDynamicSchedules,schedules};
@@ -0,0 +1,2 @@
1
+ /** Experimental in-memory dynamic schedule collections for tests. */
2
+ export { inMemoryScheduleProvider, type InMemoryScheduleProviderOptions, } from "#public/schedules/providers/in-memory.js";
@@ -0,0 +1 @@
1
+ import{inMemoryScheduleProvider}from"#public/schedules/providers/in-memory.js";export{inMemoryScheduleProvider};
@@ -0,0 +1,2 @@
1
+ /** Experimental Vercel-backed dynamic schedule collections. */
2
+ export { vercelScheduleProvider, type VercelScheduleProviderOptions, } from "#public/schedules/providers/vercel.js";
@@ -0,0 +1 @@
1
+ import{vercelScheduleProvider}from"#public/schedules/providers/vercel.js";export{vercelScheduleProvider};
@@ -1 +1 @@
1
- const DISABLED_PRINCIPAL_TYPES=new Set([`anonymous`,`runtime`]);function byPrincipal(e){let t=e.session.auth.current;return t===null||DISABLED_PRINCIPAL_TYPES.has(t.principalType)?null:t.principalType===`local-dev`?`local-dev`:JSON.stringify([t.principalType,t.authenticator,t.issuer??null,t.principalId])}export{byPrincipal};
1
+ import{principalScope}from"#shared/principal-scope.js";function byPrincipal(e){return principalScope(e.session.auth)}export{byPrincipal};
@@ -0,0 +1,16 @@
1
+ import type { ScheduleOccurrence } from "#public/schedules/subscription.js";
2
+ export interface ScheduleDelivery<TPayload = unknown> {
3
+ readonly payload: TPayload;
4
+ readonly occurrence: ScheduleOccurrence;
5
+ }
6
+ export interface ScheduleDeliveryTarget {
7
+ readonly key: string;
8
+ readonly deliver?: (delivery: ScheduleDelivery<any>) => Promise<void>;
9
+ }
10
+ export interface ScheduleProviderContext {
11
+ readonly abortSignal: AbortSignal;
12
+ readonly collection: string;
13
+ readonly namespace: string;
14
+ readonly operationId: string;
15
+ readonly target: ScheduleDeliveryTarget;
16
+ }
@@ -0,0 +1 @@
1
+ export{};
@@ -0,0 +1,5 @@
1
+ import type { ScheduleProvider } from "#public/schedules/subscription.js";
2
+ export interface InMemoryScheduleProviderOptions {
3
+ readonly now?: () => Date;
4
+ }
5
+ export declare function inMemoryScheduleProvider(options?: InMemoryScheduleProviderOptions): ScheduleProvider;
@@ -0,0 +1 @@
1
+ import{createHash,randomUUID}from"node:crypto";function inMemoryScheduleProvider(e={}){let t=new Map,n=new Map,r=new Map,i=new Set,a=new Set,o=e.now??(()=>new Date);return{kind:`in-memory`,async create(e,a){return withOperationResult(n,e.operationId,()=>{let n=scheduleKey(e,a.name);if(t.has(n))throw Error(`Schedule ${JSON.stringify(a.name)} already exists.`);let s=o().getTime(),c={createdAt:s,expression:normalizeExpression(a.expression),payload:a.payload,name:a.name,scheduleId:allocateScheduleId(e,a.name,r,i),state:a.expression.type===`single`&&Date.parse(a.expression.at)<=s?`completed`:a.state??`active`,target:e.target,updatedAt:s};return t.set(n,c),publicRecord(c)})},async list(e,n){let r=[...t.entries()].filter(([t])=>t.startsWith(collectionPrefix(e))).map(([,e])=>publicRecord(e)).sort((e,t)=>e.name.localeCompare(t.name)),i=decodeCursor(n.cursor),a=normalizeLimit(n.limit),o=r.slice(i,i+a),s=i+o.length;return{cursor:s<r.length?String(s):null,data:o}},async get(e,n){let r=t.get(scheduleKey(e,n));return r===void 0?null:publicRecord(r)},async enable(e,r){return setState(t,n,e,r,`active`,o)},async disable(e,r){return setState(t,n,e,r,`inactive`,o)},async invoke(e,r){let i=n.get(e.operationId);if(i!==void 0){e.target.deliver!==void 0&&await e.target.deliver(i);return}let s=requireSchedule(t,scheduleKey(e,r),r);if(s.state===`completed`)throw Error(`Completed schedule ${JSON.stringify(r)} cannot be invoked.`);let c=o().toISOString(),l={payload:s.payload,occurrence:{executionId:allocateOccurrenceId(e.operationId,a),name:s.name,scheduleId:s.scheduleId,scheduledAt:c}};n.set(e.operationId,l),s.target.deliver!==void 0&&await s.target.deliver(l)},async delete(e,i){return withOperationResult(n,e.operationId,()=>{let n=scheduleKey(e,i),a=t.delete(n);return a&&r.delete(n),a})}}}async function setState(e,t,n,r,i,a){return withOperationResult(t,n.operationId,()=>{let t=scheduleKey(n,r),o={...requireSchedule(e,t,r),state:i,updatedAt:a().getTime()};return e.set(t,o),publicRecord(o)})}function requireSchedule(e,t,n){let r=e.get(t);if(r===void 0)throw Error(`Schedule ${JSON.stringify(n)} was not found.`);return r}function withOperationResult(e,t,n){if(e.has(t))return e.get(t);let r=n();return e.set(t,r),r}function allocateOccurrenceId(e,t){let n=`manual_${createHash(`sha256`).update(e).digest(`base64url`)}`,r=n,i=0;for(;t.has(r);)r=`${n}_${++i}`;return t.add(r),r}function normalizeExpression(e){if(e.type===`cron`){let t={type:`cron`,cron:e.cron.trim().replace(/\s+/gu,` `)};return e.timezone!==void 0&&(t.timezone=e.timezone),e.jitter!==void 0&&(t.jitter=e.jitter),t}let t={type:`single`,at:e.at};return e.timezone!==void 0&&(t.timezone=e.timezone),t}function publicRecord(e){return{createdAt:e.createdAt,expression:e.expression,name:e.name,scheduleId:e.scheduleId,state:e.state,updatedAt:e.updatedAt}}function collectionPrefix(e){return`${e.collection}\0${e.namespace}\0`}function scheduleKey(e,t){return`${collectionPrefix(e)}${t}`}function allocateScheduleId(e,t,n,r){let i=scheduleKey(e,t),a=n.get(i);if(a!==void 0)return a;let o;do o=`mem_${createHash(`sha256`).update(`${i}:${randomUUID()}`).digest(`hex`)}`;while(r.has(o));return n.set(i,o),r.add(o),o}function normalizeLimit(e){if(e===void 0)return 20;if(!Number.isSafeInteger(e)||e<1||e>100)throw Error(`Schedule list limit must be an integer from 1 through 100.`);return e}function decodeCursor(e){if(e===void 0)return 0;let t=Number(e);if(!Number.isSafeInteger(t)||t<0)throw Error(`Invalid schedule cursor.`);return t}export{inMemoryScheduleProvider};
@@ -0,0 +1,10 @@
1
+ import type { ScheduleProvider } from "#public/schedules/subscription.js";
2
+ /** Client options of a Vercel provider, so delivery verification talks to the same endpoint. */
3
+ export declare function readVercelScheduleClientOptions(provider: ScheduleProvider): VercelScheduleProviderOptions | undefined;
4
+ export interface VercelScheduleProviderOptions {
5
+ /** Overrides the public Vercel Schedules endpoint. */
6
+ readonly baseUrl?: string;
7
+ readonly fetch?: typeof fetch;
8
+ }
9
+ /** Uses ambient OIDC on Vercel and process-local storage under `eve dev`. */
10
+ export declare function vercelScheduleProvider(options?: VercelScheduleProviderOptions): ScheduleProvider;
@@ -0,0 +1 @@
1
+ import{isEveDevEnvironment}from"#internal/application/dev-environment.js";import{deriveEveScheduleQueueTopic}from"#runtime/schedules/queue-namespace.js";import{inMemoryScheduleProvider}from"#public/schedules/providers/in-memory.js";const DEVELOPMENT_PROVIDER=inMemoryScheduleProvider(),CLIENT_OPTIONS=new WeakMap;function readVercelScheduleClientOptions(e){return CLIENT_OPTIONS.get(e)}function vercelScheduleProvider(e={}){if(isEveDevEnvironment())return DEVELOPMENT_PROVIDER;let client=t=>createClient(e,t),t={kind:`vercel`,async create(e,t){let n=await client(e.abortSignal),r=await n.create({expression:toVercelExpression(t.expression),jitter:t.expression.type===`cron`?t.expression.jitter:void 0,name:t.name,namespace:e.namespace,payload:createDispatchPayload(e,t.payload),target:{topic:deriveEveScheduleQueueTopic(e.target.key)},timezone:t.expression.timezone});if(t.state===`inactive`)try{r=await n.disable({name:t.name,namespace:e.namespace})}catch(e){throw Error(`Schedule ${JSON.stringify(t.name)} was created active, but disabling it failed; it may remain active.`,{cause:e})}return fromVercelSchedule(r)},async list(e,t){let n=t.cursor?.trim()||void 0,r={namespace:e.namespace};n!==void 0&&(r.cursor=n),t.limit!==void 0&&(r.limit=t.limit);let i=await(await client(e.abortSignal)).list(r);return{cursor:i.cursor,data:i.data.map(fromVercelSchedule)}},async get(e,t){let n=await getScheduleOrNull(await client(e.abortSignal),t,e.namespace);return n===null?null:fromVercelSchedule(n)},async enable(e,t){return fromVercelSchedule(await(await client(e.abortSignal)).enable({name:t,namespace:e.namespace}))},async disable(e,t){return fromVercelSchedule(await(await client(e.abortSignal)).disable({name:t,namespace:e.namespace}))},async invoke(e,t){await(await client(e.abortSignal)).invoke({name:t,namespace:e.namespace})},async delete(e,t){try{return await(await client(e.abortSignal)).delete({name:t,namespace:e.namespace}),!0}catch(e){if(isNotFoundError(e))return!1;throw e}}};return CLIENT_OPTIONS.set(t,e),t}async function createClient(e,t){assertSupportedVercelEnvironment();let{SchedulesClient:n}=await import(`#compiled/@vercel/schedules/index.js`);t.throwIfAborted();let r=e.fetch??fetch;return new n({...e,fetch:(e,n)=>r(e,{...n,signal:t})})}function createDispatchPayload(e,t){return{eve:{application:e.target.key,collection:e.collection,version:1},payload:t}}function toVercelExpression(e){return e.type===`cron`?{type:`cron`,cron:e.cron}:{type:`single`,at:e.at}}function fromVercelSchedule(e){let t;if(e.expression.type===`cron`){let n={type:`cron`,cron:e.expression.cron,timezone:e.timezone};e.jitter!==void 0&&(n.jitter=e.jitter),t=n}else t={type:`single`,at:e.expression.at,timezone:e.timezone};return{createdAt:e.createdAt,expression:t,name:e.name,scheduleId:e.scheduleId,state:e.state,updatedAt:e.updatedAt}}async function getScheduleOrNull(e,t,n){try{return await e.get({name:t,namespace:n})}catch(e){if(isNotFoundError(e))return null;throw e}}function isNotFoundError(e){return typeof e==`object`&&!!e&&Reflect.get(e,`name`)===`SchedulesApiError`&&Reflect.get(e,`status`)===404}function assertSupportedVercelEnvironment(){if(!process.env.VERCEL?.trim())throw Error(`vercelScheduleProvider() requires a Vercel production deployment or eve dev.`);if(process.env.VERCEL_ENV!==`production`)throw Error("Vercel Schedules currently supports production deployments only. Deploy with `vercel --prod`.")}export{readVercelScheduleClientOptions,vercelScheduleProvider};
@@ -0,0 +1,2 @@
1
+ import type { ScheduleScopeContext } from "#public/schedules/subscription.js";
2
+ export declare function byPrincipal(context: ScheduleScopeContext): string | null;
@@ -0,0 +1 @@
1
+ import{principalScope}from"#shared/principal-scope.js";function byPrincipal(e){return principalScope(e.session.auth)}export{byPrincipal};
@@ -0,0 +1,259 @@
1
+ import type { StandardSchemaV1 } from "#compiled/@standard-schema/spec/index.js";
2
+ import type { SessionSchedule } from "#context/session-schedule.js";
3
+ import type { SessionAuth } from "#context/keys.js";
4
+ import type { SessionAuthContext } from "#channel/types.js";
5
+ import type { ScheduleHandlerArgs } from "#public/definitions/schedule.js";
6
+ import type { ExactDefinition } from "#public/definitions/exact.js";
7
+ import type { Approval, ApprovalContext, ApprovalStatus, ApprovalResponseContext, ApprovalResponseDecision } from "#approval/definition.js";
8
+ import type { UserContent } from "ai";
9
+ import type { ChannelReference } from "#channel/compiled-channel.js";
10
+ import type { InferReceiveTarget } from "#channel/receive-target.js";
11
+ import type { Session } from "#channel/session.js";
12
+ import { SCHEDULE_COLLECTION_DEFINITION_BRAND } from "#shared/schedule-collection-definition.js";
13
+ import type { ScheduleProviderContext } from "#runtime/schedules/provider-types.js";
14
+ /** A provider namespace scope, represented by one key or a hierarchical key path. */
15
+ export type ScheduleScopeValue = string | readonly string[];
16
+ /** Return `null` to deny the current schedule operation. */
17
+ export type ScheduleScopeResolverResult = ScheduleScopeValue | null;
18
+ export type ScheduleOperation = "create" | "get" | "list" | "enable" | "disable" | "invoke" | "delete";
19
+ /** Trusted caller context used to authorize each management operation. */
20
+ export interface ScheduleScopeContext {
21
+ readonly abortSignal: AbortSignal;
22
+ readonly operation?: ScheduleOperation;
23
+ readonly name?: string;
24
+ readonly session: {
25
+ readonly id: string;
26
+ readonly auth: SessionAuth;
27
+ readonly schedule?: SessionSchedule;
28
+ };
29
+ readonly channel: {
30
+ readonly kind?: string;
31
+ readonly continuationToken?: string;
32
+ readonly metadata?: Readonly<Record<string, unknown>>;
33
+ };
34
+ }
35
+ /** Stable creator reference; never a snapshot of credentials or permissions. */
36
+ export interface SchedulePrincipalReference {
37
+ readonly type: string;
38
+ readonly authenticator: string;
39
+ readonly issuer?: string;
40
+ readonly principalId: string;
41
+ readonly subject?: string;
42
+ }
43
+ /** Framework-owned envelope stored alongside timing with the provider. */
44
+ export interface ScheduleEnvelope<TPayload = unknown> {
45
+ readonly version: 3;
46
+ readonly payload: TPayload;
47
+ readonly scope: ScheduleScopeValue;
48
+ readonly principal: SchedulePrincipalReference;
49
+ }
50
+ export interface ScheduleOccurrenceIdentity {
51
+ /** Readable schedule label; name remains the unique management identifier. */
52
+ readonly displayName?: string;
53
+ readonly collection: string;
54
+ readonly scheduleId: string;
55
+ readonly name: string;
56
+ readonly executionId: string;
57
+ readonly scheduledAt: string;
58
+ }
59
+ /** Callback completion is distinct from completion of the agent sessions it starts. */
60
+ export interface ScheduleOccurrenceEvent<TPayload = unknown> {
61
+ readonly type: "occurrence.dispatched" | "occurrence.failed";
62
+ readonly collection: string;
63
+ readonly executionId: string;
64
+ readonly name: string;
65
+ readonly scheduleId: string;
66
+ readonly scheduledAt: string;
67
+ readonly occurrence: ScheduleOccurrenceIdentity;
68
+ readonly sessionIds?: readonly string[];
69
+ readonly reason?: string;
70
+ readonly schedule?: ScheduleEnvelope<TPayload>;
71
+ }
72
+ export type ScheduleOccurrenceEventHandler<TPayload = unknown> = (event: ScheduleOccurrenceEvent<TPayload>) => void | Promise<void>;
73
+ export type ScheduleExpression = {
74
+ readonly type: "cron";
75
+ readonly cron: string;
76
+ readonly timezone?: string;
77
+ readonly jitter?: number;
78
+ } | {
79
+ readonly type: "single";
80
+ readonly at: string;
81
+ readonly timezone?: string;
82
+ };
83
+ /** Relative delays are resolved once at the client call boundary using eve's clock. */
84
+ export type ScheduleTiming = ScheduleExpression | {
85
+ readonly type: "delay";
86
+ readonly minutes: number;
87
+ };
88
+ export type ScheduleState = "active" | "inactive" | "completed";
89
+ /** Provider projection; payload and creator data are not read back. */
90
+ export interface ScheduleRecord {
91
+ /** Human-readable label; multiple schedules may share it. */
92
+ readonly displayName?: string;
93
+ readonly createdAt: number;
94
+ readonly expression: ScheduleExpression;
95
+ readonly name: string;
96
+ readonly scheduleId: string;
97
+ readonly state: ScheduleState;
98
+ readonly updatedAt: number;
99
+ }
100
+ export interface SchedulePage {
101
+ readonly cursor: string | null;
102
+ readonly data: readonly ScheduleRecord[];
103
+ }
104
+ export interface ScheduleCreate<TPayload> {
105
+ readonly expression: ScheduleExpression;
106
+ readonly payload: TPayload;
107
+ readonly name: string;
108
+ readonly state?: ScheduleState;
109
+ }
110
+ export interface ScheduleList {
111
+ readonly cursor?: string;
112
+ readonly limit?: number;
113
+ }
114
+ export interface ScheduleOccurrence {
115
+ readonly executionId: string;
116
+ readonly name: string;
117
+ readonly scheduleId: string;
118
+ readonly scheduledAt: string;
119
+ }
120
+ /** Storage and occurrence transport supplied by a schedule backend. */
121
+ export interface ScheduleProvider {
122
+ readonly kind: string;
123
+ create<TPayload>(context: ScheduleProviderContext, schedule: ScheduleCreate<TPayload>): Promise<ScheduleRecord>;
124
+ list(context: ScheduleProviderContext, query: ScheduleList): Promise<SchedulePage>;
125
+ get(context: ScheduleProviderContext, name: string): Promise<ScheduleRecord | null>;
126
+ enable(context: ScheduleProviderContext, name: string): Promise<ScheduleRecord>;
127
+ disable(context: ScheduleProviderContext, name: string): Promise<ScheduleRecord>;
128
+ invoke(context: ScheduleProviderContext, name: string): Promise<void>;
129
+ delete(context: ScheduleProviderContext, name: string): Promise<boolean>;
130
+ }
131
+ export interface ScheduleClientCreate<TPayload> {
132
+ readonly expression: ScheduleTiming;
133
+ /** Display label. Creation allocates a unique management name returned in the receipt. */
134
+ readonly name: string;
135
+ readonly payload: TPayload;
136
+ }
137
+ export interface SchedulePageResult {
138
+ readonly cursor: string | null;
139
+ readonly data: readonly ScheduleRecord[];
140
+ }
141
+ /** Authenticated client; payload and creator identity are immutable after creation. */
142
+ export interface ScheduleClient<TPayload> {
143
+ create(input: ScheduleClientCreate<TPayload>): Promise<ScheduleRecord>;
144
+ delete(name: string): Promise<boolean>;
145
+ disable(name: string): Promise<ScheduleRecord>;
146
+ enable(name: string): Promise<ScheduleRecord>;
147
+ get(name: string): Promise<ScheduleRecord | null>;
148
+ invoke(name: string): Promise<void>;
149
+ list(input?: ScheduleList): Promise<SchedulePageResult>;
150
+ }
151
+ /** Starts fresh unattended work bound to the resolved creator; callers cannot choose another identity. */
152
+ export type DynamicSchedulesToFn = <TChannel extends ChannelReference<unknown>>(channel: TChannel, target: InferReceiveTarget<TChannel>) => {
153
+ send(message: string | UserContent): Promise<Session>;
154
+ };
155
+ export type ScheduleCreateApproval<TPrepared> = ((context: ApprovalContext & {
156
+ readonly payload: TPrepared;
157
+ }) => ApprovalStatus | Promise<ApprovalStatus>) | {
158
+ readonly request: (context: ApprovalContext & {
159
+ readonly payload: TPrepared;
160
+ }) => ApprovalStatus | Promise<ApprovalStatus>;
161
+ readonly response?: (context: ApprovalResponseContext & {
162
+ readonly payload: TPrepared;
163
+ }) => ApprovalResponseDecision | Promise<ApprovalResponseDecision>;
164
+ };
165
+ export type ScheduleApprovals<TPrepared> = Partial<Record<Exclude<ScheduleOperation, "create">, Approval>> & {
166
+ readonly create?: ScheduleCreateApproval<TPrepared>;
167
+ };
168
+ /** Execution context; `to` starts fresh, unattended sessions as the resolved creator. */
169
+ export interface DynamicSchedulesRunArgs<TPayload> extends Pick<ScheduleHandlerArgs, "waitUntil"> {
170
+ readonly to: DynamicSchedulesToFn;
171
+ readonly payload: TPayload;
172
+ readonly occurrence: ScheduleOccurrenceIdentity;
173
+ readonly auth: SessionAuthContext;
174
+ }
175
+ /** Defines dynamically created schedules whose occurrences invoke authored code. */
176
+ export interface DynamicSchedulesDefinition<TPayload = unknown, TSchema extends StandardSchemaV1<unknown, TPayload> = StandardSchemaV1<unknown, TPayload>, TPrepared = TPayload> {
177
+ readonly description?: string;
178
+ /** Model-facing payload schema. Destination intent may be resolved by `run`. */
179
+ readonly inputSchema: TSchema;
180
+ /** Resolved backend. defineDynamicSchedules defaults omitted providers to Vercel Schedules. */
181
+ readonly provider: ScheduleProvider;
182
+ /**
183
+ * Validates application policy and enriches a creation payload before the provider write.
184
+ * The caller constructs input; eve validates it with `inputSchema`, authorizes creation
185
+ * through `scope`, then calls `preparePayload` with trusted creation context. eve checks that the
186
+ * result is bounded JSON and persists it; `inputSchema` describes caller input, not stored prepared output.
187
+ * Throw an actionable error to reject creation without writing a schedule.
188
+ *
189
+ * A common use is capturing the current channel destination: derive channel/workspace
190
+ * references from verified caller context, replace any model-supplied references, and
191
+ * return them with the task. Keep captured fields out of the input schema.
192
+ * Channel-less or delegated callers may lack that context; reject those cases explicitly.
193
+ *
194
+ * Runs only on creation. Model calls invoke preparePayload before approval and again before
195
+ * writing; execution fails if the prepared result differs from the approved snapshot.
196
+ * Authenticated clients invoke preparePayload once before writing without model approval. Reads, enable/disable operations, and occurrence execution do not call it. Omission
197
+ * stores validated input unchanged. Creation retries may call it again, so avoid
198
+ * irreversible side effects; state changes never recapture a different destination.
199
+ * `auth`, `run`, and occurrence events receive the inferred return type. Declare `preparePayload`
200
+ * before those callbacks for contextual inference, or annotate its return type explicitly.
201
+ * Prepared application data is not revalidated against the input schema at execution;
202
+ * validate the application's persisted contract in authored code when necessary.
203
+ */
204
+ readonly preparePayload?: (payload: TPayload, context: ScheduleScopeContext & {
205
+ readonly operation: "create";
206
+ readonly name: string;
207
+ }) => TPrepared | Promise<TPrepared>;
208
+ /** Authorizes every management operation. Defaults to `byPrincipal`. */
209
+ readonly scope?: (context: ScheduleScopeContext & {
210
+ readonly operation: ScheduleOperation;
211
+ }) => ScheduleScopeResolverResult | Promise<ScheduleScopeResolverResult>;
212
+ /** Resolves the captured creator to current execution auth; return `null` to deny. */
213
+ readonly auth: (context: {
214
+ readonly principal: SchedulePrincipalReference;
215
+ readonly payload: NoInfer<TPrepared>;
216
+ readonly occurrence: ScheduleOccurrenceIdentity;
217
+ }) => SessionAuthContext | null | Promise<SessionAuthContext | null>;
218
+ /** May repeat on provider retries. Key external effects on the occurrence identity. */
219
+ readonly run: (args: DynamicSchedulesRunArgs<NoInfer<TPrepared>>) => void | Promise<void>;
220
+ readonly events?: {
221
+ /** After `run` and registered `waitUntil` work succeed; may repeat on retries. */
222
+ readonly "occurrence.dispatched"?: ScheduleOccurrenceEventHandler<NoInfer<TPrepared>>;
223
+ /** On a permanent provider failure or after its retry budget is exhausted. */
224
+ readonly "occurrence.failed"?: ScheduleOccurrenceEventHandler<NoInfer<TPrepared>>;
225
+ };
226
+ /** Expose operation tools directly (default true), or false for code-only scheduling. */
227
+ readonly tool?: boolean;
228
+ /** Model-call policies keyed by operation. Create receives the validated prepared payload. */
229
+ readonly approval?: ScheduleApprovals<NoInfer<TPrepared>>;
230
+ }
231
+ export type DefinedDynamicSchedules<TPayload = unknown, TSchema extends StandardSchemaV1<unknown, TPayload> = StandardSchemaV1<unknown, TPayload>, TPrepared = TPayload> = DynamicSchedulesDefinition<TPayload, TSchema, TPrepared> & {
232
+ readonly [SCHEDULE_COLLECTION_DEFINITION_BRAND]: true;
233
+ };
234
+ type DynamicSchedulesOptions<TInput, TSchema extends StandardSchemaV1<unknown, TInput>, TPrepared = TInput> = Omit<DynamicSchedulesDefinition<TInput, TSchema, TPrepared>, "provider" | "tool" | "approval"> & {
235
+ /** Defaults to vercelScheduleProvider(): hosted production scheduling, process-local storage in eve dev. */
236
+ readonly provider?: ScheduleProvider;
237
+ } & ({
238
+ readonly tool: false;
239
+ readonly approval?: never;
240
+ } | {
241
+ readonly tool?: true;
242
+ readonly approval?: ScheduleApprovals<NoInfer<TPrepared>>;
243
+ });
244
+ /**
245
+ * Defines a dynamic schedule subscription. Export it from `agent/schedules/`;
246
+ * identity comes from the module path. inputSchema validates caller input,
247
+ * while eve captures creator identity separately and re-resolves it on every attempt.
248
+ * `run` chooses destinations and starts work; no creation conversation is implicitly captured.
249
+ * Provider defaults to vercelScheduleProvider(); pass provider explicitly to select another backend.
250
+ * The default supports Vercel production and eve dev, not preview or self-hosted scheduling.
251
+ */
252
+ export declare function defineDynamicSchedules<TInput, TPrepared>(definition: Omit<DynamicSchedulesOptions<TInput, StandardSchemaV1<unknown, TInput>, TPrepared>, "preparePayload"> & {
253
+ readonly preparePayload: (payload: TInput, context: ScheduleScopeContext & {
254
+ readonly operation: "create";
255
+ readonly name: string;
256
+ }) => TPrepared | Promise<TPrepared>;
257
+ }): DefinedDynamicSchedules<TInput, StandardSchemaV1<unknown, TInput>, TPrepared>;
258
+ export declare function defineDynamicSchedules<TSchema extends StandardSchemaV1<unknown, unknown>>(definition: ExactDefinition<DynamicSchedulesOptions<StandardSchemaV1.InferOutput<TSchema>, TSchema>, DynamicSchedulesOptions<StandardSchemaV1.InferOutput<TSchema>, TSchema>>): DefinedDynamicSchedules<StandardSchemaV1.InferOutput<TSchema>, TSchema>;
259
+ export {};
@@ -0,0 +1 @@
1
+ import{SCHEDULE_COLLECTION_DEFINITION_BRAND}from"#shared/schedule-collection-definition.js";import{vercelScheduleProvider}from"#public/schedules/providers/vercel.js";function defineDynamicSchedules(e){return Object.assign(e,{provider:e.provider??vercelScheduleProvider(),tool:e.tool??!0,[SCHEDULE_COLLECTION_DEFINITION_BRAND]:!0}),e}export{defineDynamicSchedules};
@@ -0,0 +1 @@
1
+ export { inMemoryScheduleProvider, type InMemoryScheduleProviderOptions, } from "#public/schedules/providers/in-memory.js";
@@ -0,0 +1 @@
1
+ import{inMemoryScheduleProvider}from"#public/schedules/providers/in-memory.js";export{inMemoryScheduleProvider};
@@ -1 +1 @@
1
- import{normalizeOrigin}from"./routing.js";import{mkdir,open,readFile,rm,stat,writeFile}from"node:fs/promises";import{resolvePackageRoot}from"#internal/application/package.js";import{join}from"node:path";import{spawn}from"node:child_process";import{readDevelopmentRuntimeArtifactsRevision}from"#services/dev-client/runtime-artifacts.js";const EVE_BASE_URL_ENV=`EVE_BASE_URL`,DEFAULT_SERVER_READY_TIMEOUT_MS=3e4,DEV_SERVER_REGISTRY_TIMEOUT_MS=3e4,LOCAL_SERVER_URL_PATTERN=/https?:\/\/(?:\[[^\]\s]+\]|[^\s/:[\]]+)(?::\d+)?/;function isNodeErrorWithCode(e,t){return e instanceof Error&&`code`in e&&e.code===t}function delay(e){return new Promise(t=>setTimeout(t,e))}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function resolveEveCacheDirectory(e){return join(e,`.eve`)}function resolveEveDevServerRegistryPath(e){return join(resolveEveCacheDirectory(e),`sveltekit-dev-server.json`)}function resolveEveDevServerLockPath(e){return join(resolveEveCacheDirectory(e),`sveltekit-dev-server.lock`)}function normalizeDevServerRegistry(e){if(isRecord(e)&&typeof e.appRoot==`string`&&typeof e.origin==`string`&&typeof e.updatedAt==`string`&&(e.pid===null||typeof e.pid==`number`))try{return{appRoot:e.appRoot,origin:normalizeOrigin(e.origin),pid:e.pid,updatedAt:e.updatedAt}}catch{return}}async function readUsableEveDevServerRegistry(e){try{let t=normalizeDevServerRegistry(JSON.parse(await readFile(resolveEveDevServerRegistryPath(e),`utf8`)));return t===void 0||t.appRoot!==e||await readDevelopmentRuntimeArtifactsRevision({serverUrl:t.origin,timeoutMs:1e3})===void 0?void 0:t.origin}catch(e){if(isNodeErrorWithCode(e,`ENOENT`))return;throw e}}async function writeEveDevServerRegistry(e,t){await mkdir(resolveEveCacheDirectory(e),{recursive:!0}),await writeFile(resolveEveDevServerRegistryPath(e),`${JSON.stringify({appRoot:e,origin:t.origin,pid:t.process?.pid??null,updatedAt:new Date().toISOString()},null,2)}\n`)}async function removeStaleEveDevServerLock(e){try{let t=await stat(e);Date.now()-t.mtimeMs>3e4&&await rm(e,{force:!0})}catch(e){if(!isNodeErrorWithCode(e,`ENOENT`))throw e}}async function acquireEveDevServerLock(e){let t=resolveEveCacheDirectory(e),n=resolveEveDevServerLockPath(e),r=Date.now()+DEV_SERVER_REGISTRY_TIMEOUT_MS;for(await mkdir(t,{recursive:!0});;)try{let e=await open(n,`wx`);return await e.writeFile(`${String(process.pid)}\n`),await e.close(),async()=>{await rm(n,{force:!0})}}catch(t){if(!isNodeErrorWithCode(t,`EEXIST`))throw t;if(await readUsableEveDevServerRegistry(e)!==void 0)return async()=>{};if(await removeStaleEveDevServerLock(n),Date.now()>r)throw Error(`Timed out after ${DEV_SERVER_REGISTRY_TIMEOUT_MS}ms waiting for another SvelteKit process to start eve.`);await delay(100)}}function createEveBinaryPath(){return join(resolvePackageRoot(),`bin`,`eve.js`)}function startServerProcess(e){return new Promise((t,n)=>{let r=spawn(e.command,e.args,{cwd:e.cwd,env:{...process.env,...e.env},stdio:[`ignore`,`pipe`,`pipe`]}),i=setTimeout(()=>{r.kill(),n(Error(`Timed out after ${DEFAULT_SERVER_READY_TIMEOUT_MS}ms waiting for eve to print its server URL.`))},DEFAULT_SERVER_READY_TIMEOUT_MS),cleanup=()=>{clearTimeout(i),r.off(`error`,handleError),r.off(`exit`,handleEarlyExit)},handleError=e=>{cleanup(),n(e)},handleEarlyExit=(e,t)=>{cleanup(),n(Error(`eve server process exited before printing its server URL (code ${String(e)}, signal ${String(t)}).`))},a=!1,handleOutput=e=>{if(a)return;let n=LOCAL_SERVER_URL_PATTERN.exec(e.toString(`utf8`));n!==null&&(a=!0,cleanup(),t({origin:normalizeOrigin(n[0]),process:r}))};r.once(`error`,handleError),r.once(`exit`,handleEarlyExit),r.stdout.on(`data`,e=>{process.stdout.write(e),handleOutput(e)}),r.stderr.on(`data`,e=>{process.stderr.write(e),handleOutput(e)})})}function installProcessShutdown(e){let t=e.process;if(t===void 0)return e;let close=()=>{process.off(`beforeExit`,close),process.off(`exit`,close),t.killed||t.kill()};return process.once(`beforeExit`,close),process.once(`exit`,close),e}function startEveDevServer(e){return startServerProcess({args:[createEveBinaryPath(),`dev`,`--no-ui`,`--port`,`0`],command:process.execPath,cwd:e}).then(e=>(process.env[EVE_BASE_URL_ENV]=e.origin,installProcessShutdown(e)))}async function resolveSharedEveDevServer(e){let t=await readUsableEveDevServerRegistry(e);if(t!==void 0)return process.env[EVE_BASE_URL_ENV]=t,{origin:t};let n=await acquireEveDevServerLock(e);try{let t=await readUsableEveDevServerRegistry(e);if(t!==void 0)return process.env[EVE_BASE_URL_ENV]=t,{origin:t};let n=await startEveDevServer(e);return await writeEveDevServerRegistry(e,n),n}finally{await n()}}export{EVE_BASE_URL_ENV,normalizeDevServerRegistry,resolveSharedEveDevServer};
1
+ import{normalizeOrigin}from"./routing.js";import{mkdir,open,readFile,rm,stat,writeFile}from"node:fs/promises";import{join}from"node:path";import{resolvePackageRoot}from"#internal/application/package.js";import{spawn}from"node:child_process";import{readDevelopmentRuntimeArtifactsRevision}from"#services/dev-client/runtime-artifacts.js";const EVE_BASE_URL_ENV=`EVE_BASE_URL`,DEFAULT_SERVER_READY_TIMEOUT_MS=3e4,DEV_SERVER_REGISTRY_TIMEOUT_MS=3e4,LOCAL_SERVER_URL_PATTERN=/https?:\/\/(?:\[[^\]\s]+\]|[^\s/:[\]]+)(?::\d+)?/;function isNodeErrorWithCode(e,t){return e instanceof Error&&`code`in e&&e.code===t}function delay(e){return new Promise(t=>setTimeout(t,e))}function isRecord(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function resolveEveCacheDirectory(e){return join(e,`.eve`)}function resolveEveDevServerRegistryPath(e){return join(resolveEveCacheDirectory(e),`sveltekit-dev-server.json`)}function resolveEveDevServerLockPath(e){return join(resolveEveCacheDirectory(e),`sveltekit-dev-server.lock`)}function normalizeDevServerRegistry(e){if(isRecord(e)&&typeof e.appRoot==`string`&&typeof e.origin==`string`&&typeof e.updatedAt==`string`&&(e.pid===null||typeof e.pid==`number`))try{return{appRoot:e.appRoot,origin:normalizeOrigin(e.origin),pid:e.pid,updatedAt:e.updatedAt}}catch{return}}async function readUsableEveDevServerRegistry(e){try{let t=normalizeDevServerRegistry(JSON.parse(await readFile(resolveEveDevServerRegistryPath(e),`utf8`)));return t===void 0||t.appRoot!==e||await readDevelopmentRuntimeArtifactsRevision({serverUrl:t.origin,timeoutMs:1e3})===void 0?void 0:t.origin}catch(e){if(isNodeErrorWithCode(e,`ENOENT`))return;throw e}}async function writeEveDevServerRegistry(e,t){await mkdir(resolveEveCacheDirectory(e),{recursive:!0}),await writeFile(resolveEveDevServerRegistryPath(e),`${JSON.stringify({appRoot:e,origin:t.origin,pid:t.process?.pid??null,updatedAt:new Date().toISOString()},null,2)}\n`)}async function removeStaleEveDevServerLock(e){try{let t=await stat(e);Date.now()-t.mtimeMs>3e4&&await rm(e,{force:!0})}catch(e){if(!isNodeErrorWithCode(e,`ENOENT`))throw e}}async function acquireEveDevServerLock(e){let t=resolveEveCacheDirectory(e),n=resolveEveDevServerLockPath(e),r=Date.now()+DEV_SERVER_REGISTRY_TIMEOUT_MS;for(await mkdir(t,{recursive:!0});;)try{let e=await open(n,`wx`);return await e.writeFile(`${String(process.pid)}\n`),await e.close(),async()=>{await rm(n,{force:!0})}}catch(t){if(!isNodeErrorWithCode(t,`EEXIST`))throw t;if(await readUsableEveDevServerRegistry(e)!==void 0)return async()=>{};if(await removeStaleEveDevServerLock(n),Date.now()>r)throw Error(`Timed out after ${DEV_SERVER_REGISTRY_TIMEOUT_MS}ms waiting for another SvelteKit process to start eve.`);await delay(100)}}function createEveBinaryPath(){return join(resolvePackageRoot(),`bin`,`eve.js`)}function startServerProcess(e){return new Promise((t,n)=>{let r=spawn(e.command,e.args,{cwd:e.cwd,env:{...process.env,...e.env},stdio:[`ignore`,`pipe`,`pipe`]}),i=setTimeout(()=>{r.kill(),n(Error(`Timed out after ${DEFAULT_SERVER_READY_TIMEOUT_MS}ms waiting for eve to print its server URL.`))},DEFAULT_SERVER_READY_TIMEOUT_MS),cleanup=()=>{clearTimeout(i),r.off(`error`,handleError),r.off(`exit`,handleEarlyExit)},handleError=e=>{cleanup(),n(e)},handleEarlyExit=(e,t)=>{cleanup(),n(Error(`eve server process exited before printing its server URL (code ${String(e)}, signal ${String(t)}).`))},a=!1,handleOutput=e=>{if(a)return;let n=LOCAL_SERVER_URL_PATTERN.exec(e.toString(`utf8`));n!==null&&(a=!0,cleanup(),t({origin:normalizeOrigin(n[0]),process:r}))};r.once(`error`,handleError),r.once(`exit`,handleEarlyExit),r.stdout.on(`data`,e=>{process.stdout.write(e),handleOutput(e)}),r.stderr.on(`data`,e=>{process.stderr.write(e),handleOutput(e)})})}function installProcessShutdown(e){let t=e.process;if(t===void 0)return e;let close=()=>{process.off(`beforeExit`,close),process.off(`exit`,close),t.killed||t.kill()};return process.once(`beforeExit`,close),process.once(`exit`,close),e}function startEveDevServer(e){return startServerProcess({args:[createEveBinaryPath(),`dev`,`--no-ui`,`--port`,`0`],command:process.execPath,cwd:e}).then(e=>(process.env[EVE_BASE_URL_ENV]=e.origin,installProcessShutdown(e)))}async function resolveSharedEveDevServer(e){let t=await readUsableEveDevServerRegistry(e);if(t!==void 0)return process.env[EVE_BASE_URL_ENV]=t,{origin:t};let n=await acquireEveDevServerLock(e);try{let t=await readUsableEveDevServerRegistry(e);if(t!==void 0)return process.env[EVE_BASE_URL_ENV]=t,{origin:t};let n=await startEveDevServer(e);return await writeEveDevServerRegistry(e,n),n}finally{await n()}}export{EVE_BASE_URL_ENV,normalizeDevServerRegistry,resolveSharedEveDevServer};
@@ -1 +1 @@
1
- import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{getRuntimeCompiledArtifactsCacheKey}from"#runtime/compiled-artifacts-source.js";import{loadCompileMetadata}from"#runtime/loaders/compile-metadata.js";async function resolveRuntimeCompiledArtifactsVersionedCacheKey(e){let t=getRuntimeCompiledArtifactsCacheKey(e),n=await resolveCompileMetadataMtimeMs(e);try{let r=(await loadCompileMetadata({compiledArtifactsSource:e}))?.discovery.sourceGraphHash;return r===void 0||r.length===0?n===void 0?t:`${t}:mtime-${formatMtimeMsForCacheKey(n)}`:n===void 0?`${t}:${r}`:`${t}:${r}:mtime-${formatMtimeMsForCacheKey(n)}`}catch{return n===void 0?t:`${t}:mtime-${formatMtimeMsForCacheKey(n)}`}}async function resolveCompileMetadataMtimeMs(e){if(e.kind!==`disk`)return;let{stat:t}=await import(`node:fs/promises`),{compileMetadataPath:n}=resolveRuntimeCompilerArtifactPaths(e.appRoot);try{return(await t(n)).mtimeMs}catch{return}}function formatMtimeMsForCacheKey(e){return Math.floor(e).toString(36)}export{resolveRuntimeCompiledArtifactsVersionedCacheKey};
1
+ import{getRuntimeCompiledArtifactsCacheKey}from"#runtime/compiled-artifacts-source.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{loadCompileMetadata}from"#runtime/loaders/compile-metadata.js";async function resolveRuntimeCompiledArtifactsVersionedCacheKey(e){let t=getRuntimeCompiledArtifactsCacheKey(e),n=await resolveCompileMetadataMtimeMs(e);try{let r=(await loadCompileMetadata({compiledArtifactsSource:e}))?.discovery.sourceGraphHash;return r===void 0||r.length===0?n===void 0?t:`${t}:mtime-${formatMtimeMsForCacheKey(n)}`:n===void 0?`${t}:${r}`:`${t}:${r}:mtime-${formatMtimeMsForCacheKey(n)}`}catch{return n===void 0?t:`${t}:mtime-${formatMtimeMsForCacheKey(n)}`}}async function resolveCompileMetadataMtimeMs(e){if(e.kind!==`disk`)return;let{stat:t}=await import(`node:fs/promises`),{compileMetadataPath:n}=resolveRuntimeCompilerArtifactPaths(e.appRoot);try{return(await t(n)).mtimeMs}catch{return}}function formatMtimeMsForCacheKey(e){return Math.floor(e).toString(36)}export{resolveRuntimeCompiledArtifactsVersionedCacheKey};
@@ -1 +1 @@
1
- import{isObject}from"#shared/guards.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{ConnectionAuthorizationRequiredError,isConnectionAuthorizationRequiredError}from"#connections/errors.js";import{evictScopedToken,resolveScopedToken}from"#runtime/connections/scoped-authorization.js";import{resolveConnectionAuthorization}from"#runtime/connections/resolve-authorization.js";import{createMCPClient}from"#compiled/@ai-sdk/mcp/index.js";import{omitProvidedArgumentsFromSchema,resolveProvidedArguments}from"#runtime/connections/provided-arguments.js";import{createMcpTraceFetch,withMcpToolCallSpan,withMcpToolsListSpan}from"#runtime/connections/mcp-tracing.js";var McpConnectionClient=class{#e;#t;#n;#r;#i;#a=!1;constructor(e){this.#i=e}async connect(){if(this.#t!==void 0)return this.#t;if(this.#e!==void 0)return this.#e;this.#e=this.#o();try{return this.#t=await this.#e,this.#t}catch(e){throw this.#e=void 0,e}}async#o(){let{anonymous:e,headers:t}=await resolveConnectionHeaders(this.#i,{anonymousWhenAuthorizationRequired:!0});this.#a=e;let n=this.#i.url,r=createMcpTraceFetch({connectionName:this.#i.connectionName,getProtocolVersion:()=>this.#t?.initializeResult?.protocolVersion});try{return await createMCPClient({protocolVersionDiscovery:this.#i.protocolVersionDiscovery,transport:{fetch:r,headers:t,type:`http`,url:n}})}catch(e){if(!isMcpHttpFallbackRetryableError(e))throw e;return await createMCPClient({protocolVersionDiscovery:this.#i.protocolVersionDiscovery,transport:{fetch:r,headers:t,type:`sse`,url:n}})}}async getToolMetadata(){return(await this.#s()).metadata}async executeTool(e,t,n){let r;try{let{tools:i}=await this.#s(),a=i[e];if(a?.execute===void 0)throw Error(`Tool "${e}" not found in connection "${this.#i.connectionName}".`);let o=a.execute,s=await resolveProvidedArguments({args:t,callId:n.callId,connection:this.#i,toolName:e});r=await withMcpToolCallSpan({arguments:t,connectionName:this.#i.connectionName,execute:async()=>await o(s,{abortSignal:n.abortSignal}),protocolVersion:this.#t?.initializeResult?.protocolVersion,toolName:e})}catch(e){return await this.#u(e)}return isMcpAuthChallengeResult(r)?await this.#d(`the server asked for sign-in to call "${e}"`):r}async#s(){if(this.#r!==void 0)return this.#r;if(this.#n!==void 0)return this.#n;this.#n=this.#c();try{return this.#r=await this.#n,this.#r}catch(e){throw this.#n=void 0,e}}async#c(){try{return await this.#l()}catch(e){return await this.#u(e)}}async#l(){let e=await this.connect(),t=await withMcpToolsListSpan({connectionName:this.#i.connectionName,execute:()=>e.listTools(),protocolVersion:e.initializeResult?.protocolVersion}),n=this.#i.tools,r=n===void 0?t.tools:t.tools.filter(e=>passesToolFilter(e.name,n)),i=Object.keys(this.#i.toolCall?.providedArguments??{}),a=r.map(e=>({...e,inputSchema:omitProvidedArgumentsFromSchema(e.inputSchema,i)})),o=e.toolsFromDefinitions({tools:a});return{metadata:a.map(e=>({annotations:e.annotations,description:e.description??``,inputSchema:e.inputSchema??{},name:e.name,outputSchema:`outputSchema`in e&&e.outputSchema!==void 0?e.outputSchema:void 0})),tools:o}}async close(){this.#t!==void 0&&(await this.#t.close(),this.#t=void 0),this.#e=void 0,this.#n=void 0,this.#r=void 0,this.#a=!1}async#u(e){if(!isMcpAuthRequiredError(e))throw e;return await this.#d(this.#a?`the server requires sign-in`:`the server rejected the token`)}async#d(e){throw this.#a||await this.#f(),await this.close(),new ConnectionAuthorizationRequiredError(this.#i.connectionName,{message:`Connection "${this.#i.connectionName}" requires authorization (${e}).`})}async#f(){let e=await resolveConnectionAuthorization(this.#i);e!==void 0&&await evictScopedToken({authorization:e,connection:{url:this.#i.url},instanceId:this.#i.instanceId,scope:this.#i.connectionName})}};function isMcpAuthRequiredError(e){return readHttpStatus(e)===401}const MCP_WWW_AUTHENTICATE_META_KEY=`mcp/www_authenticate`;function isMcpAuthChallengeResult(e){if(!isObject(e)||e.isError!==!0||!isObject(e._meta))return!1;let t=e._meta[MCP_WWW_AUTHENTICATE_META_KEY];return(typeof t==`string`||Array.isArray(t))&&t.length>0}function isMcpHttpFallbackRetryableError(e){let t=readHttpStatus(e);return t===400||t===404||t===405}function readHttpStatus(e){for(let t of walkErrorChain(e)){if(!isObject(t))continue;let e=readStatusField(t);if(e!==void 0)return e;let n=t.response;if(isObject(n)){let e=readStatusField(n);if(e!==void 0)return e}if(typeof t.message==`string`){let e=/\bHTTP\s+(\d{3})\b/u.exec(t.message);if(e?.[1]!==void 0)return Number(e[1])}}}function readStatusField(e){if(typeof e.status==`number`)return e.status;if(typeof e.statusCode==`number`)return e.statusCode}function*walkErrorChain(e){let t=e,n=new Set;for(;t!=null&&!n.has(t);){if(n.add(t),yield t,!isObject(t)||!(`cause`in t))return;t=t.cause}}function passesToolFilter(e,t){return t===void 0?!0:`allow`in t?t.allow.includes(e):!t.block.includes(e)}async function resolveHeaders(e){let{headers:t}=await resolveConnectionHeaders(e,{anonymousWhenAuthorizationRequired:!1});return t}async function resolveConnectionHeaders(e,t){let n={},r=!1,i,getCallbackContext=()=>i??=buildCallbackContext(),a=await resolveConnectionAuthorization(e,typeof e.authorization==`function`?getCallbackContext():void 0);if(a!==void 0)try{n.Authorization=`Bearer ${(await resolveToken(e,a)).token}`}catch(e){if(!t.anonymousWhenAuthorizationRequired||!isConnectionAuthorizationRequiredError(e))throw e;r=!0}if(e.headers!==void 0){let t=await resolveHeadersDefinition(e.headers,getCallbackContext);for(let[r,i]of Object.entries(t)){if(a!==void 0&&r.toLowerCase()===`authorization`)throw Error(`Connection "${e.connectionName}" headers must not include an "Authorization" key when "authorization" is also provided.`);n[r]=i}}return{anonymous:r,headers:n}}async function resolveToken(e,t){return await resolveScopedToken({authorization:t,connection:{url:e.url},instanceId:e.instanceId,scope:e.connectionName})}async function resolveHeadersDefinition(e,t){if(typeof e==`function`)return{...await e(t())};let n={},r=Object.entries(e);for(let[e,i]of r)n[e]=await resolveHeaderValue(i,t);return n}async function resolveHeaderValue(e,t){return typeof e==`function`?await e(t()):await e}export{MCP_WWW_AUTHENTICATE_META_KEY,McpConnectionClient,isMcpAuthChallengeResult,isMcpAuthRequiredError,passesToolFilter,resolveHeaders};
1
+ import{isObject}from"#shared/guards.js";import{buildCallbackContext}from"#context/build-callback-context.js";import{ConnectionAuthorizationRequiredError,isConnectionAuthorizationRequiredError}from"#connections/errors.js";import{evictScopedToken,resolveScopedToken}from"#runtime/connections/scoped-authorization.js";import{resolveConnectionAuthorization}from"#runtime/connections/resolve-authorization.js";import{FORWARDED_PRINCIPAL_HEADER,encodeForwardedPrincipalHeader}from"#internal/mcp/forwarded-principal-header.js";import{createMCPClient}from"#compiled/@ai-sdk/mcp/index.js";import{readTurnPrincipals}from"#context/turn-principals.js";import{omitProvidedArgumentsFromSchema,resolveProvidedArguments}from"#runtime/connections/provided-arguments.js";import{createMcpTraceFetch,withMcpToolCallSpan,withMcpToolsListSpan}from"#runtime/connections/mcp-tracing.js";var McpConnectionClient=class{#e;#t;#n;#r;#i;#a=!1;constructor(e){this.#i=e}async connect(){if(this.#t!==void 0)return this.#t;if(this.#e!==void 0)return this.#e;this.#e=this.#o();try{return this.#t=await this.#e,this.#t}catch(e){throw this.#e=void 0,e}}async#o(){let{anonymous:e,headers:t}=await resolveConnectionHeaders(this.#i,{anonymousWhenAuthorizationRequired:!0});this.#a=e;let n=this.#i.url,r=createMcpTraceFetch({connectionName:this.#i.connectionName,fetcher:this.#s(),getProtocolVersion:()=>this.#t?.initializeResult?.protocolVersion});try{return await createMCPClient({protocolVersionDiscovery:this.#i.protocolVersionDiscovery,transport:{fetch:r,headers:t,type:`http`,url:n}})}catch(e){if(!isMcpHttpFallbackRetryableError(e))throw e;return await createMCPClient({protocolVersionDiscovery:this.#i.protocolVersionDiscovery,transport:{fetch:r,headers:t,type:`sse`,url:n}})}}#s(){if(this.#i.forwardPrincipal!==!0)return;let e=this.#i.connectionName;return async(t,n)=>{let r=readTurnPrincipals();if(r===void 0)return await globalThis.fetch(t,n);let i=new Headers(n?.headers);return i.set(FORWARDED_PRINCIPAL_HEADER,encodeForwardedPrincipalHeader(r,e)),await globalThis.fetch(t,{...n,headers:i,redirect:`error`})}}async getToolMetadata(){return(await this.#c()).metadata}async executeTool(e,t,n){let r;try{let{tools:i}=await this.#c(),a=i[e];if(a?.execute===void 0)throw Error(`Tool "${e}" not found in connection "${this.#i.connectionName}".`);let o=a.execute,s=await resolveProvidedArguments({args:t,callId:n.callId,connection:this.#i,toolName:e});r=await withMcpToolCallSpan({arguments:t,connectionName:this.#i.connectionName,execute:async()=>await o(s,{abortSignal:n.abortSignal}),protocolVersion:this.#t?.initializeResult?.protocolVersion,toolName:e})}catch(e){return await this.#d(e)}return isMcpAuthChallengeResult(r)?await this.#f(`the server asked for sign-in to call "${e}"`):r}async#c(){if(this.#r!==void 0)return this.#r;if(this.#n!==void 0)return this.#n;this.#n=this.#l();try{return this.#r=await this.#n,this.#r}catch(e){throw this.#n=void 0,e}}async#l(){try{return await this.#u()}catch(e){return await this.#d(e)}}async#u(){let e=await this.connect(),t=await withMcpToolsListSpan({connectionName:this.#i.connectionName,execute:()=>e.listTools(),protocolVersion:e.initializeResult?.protocolVersion}),n=this.#i.tools,r=n===void 0?t.tools:t.tools.filter(e=>passesToolFilter(e.name,n)),i=Object.keys(this.#i.toolCall?.providedArguments??{}),a=r.map(e=>({...e,inputSchema:omitProvidedArgumentsFromSchema(e.inputSchema,i)})),o=e.toolsFromDefinitions({tools:a});return{metadata:a.map(e=>({annotations:e.annotations,description:e.description??``,inputSchema:e.inputSchema??{},name:e.name,outputSchema:`outputSchema`in e&&e.outputSchema!==void 0?e.outputSchema:void 0})),tools:o}}async close(){this.#t!==void 0&&(await this.#t.close(),this.#t=void 0),this.#e=void 0,this.#n=void 0,this.#r=void 0,this.#a=!1}async#d(e){if(!isMcpAuthRequiredError(e))throw e;return await this.#f(this.#a?`the server requires sign-in`:`the server rejected the token`)}async#f(e){throw this.#a||await this.#p(),await this.close(),new ConnectionAuthorizationRequiredError(this.#i.connectionName,{message:`Connection "${this.#i.connectionName}" requires authorization (${e}).`})}async#p(){let e=await resolveConnectionAuthorization(this.#i);e!==void 0&&await evictScopedToken({authorization:e,connection:{url:this.#i.url},instanceId:this.#i.instanceId,scope:this.#i.connectionName})}};function isMcpAuthRequiredError(e){return readHttpStatus(e)===401}const MCP_WWW_AUTHENTICATE_META_KEY=`mcp/www_authenticate`;function isMcpAuthChallengeResult(e){if(!isObject(e)||e.isError!==!0||!isObject(e._meta))return!1;let t=e._meta[MCP_WWW_AUTHENTICATE_META_KEY];return(typeof t==`string`||Array.isArray(t))&&t.length>0}function isMcpHttpFallbackRetryableError(e){let t=readHttpStatus(e);return t===400||t===404||t===405}function readHttpStatus(e){for(let t of walkErrorChain(e)){if(!isObject(t))continue;let e=readStatusField(t);if(e!==void 0)return e;let n=t.response;if(isObject(n)){let e=readStatusField(n);if(e!==void 0)return e}if(typeof t.message==`string`){let e=/\bHTTP\s+(\d{3})\b/u.exec(t.message);if(e?.[1]!==void 0)return Number(e[1])}}}function readStatusField(e){if(typeof e.status==`number`)return e.status;if(typeof e.statusCode==`number`)return e.statusCode}function*walkErrorChain(e){let t=e,n=new Set;for(;t!=null&&!n.has(t);){if(n.add(t),yield t,!isObject(t)||!(`cause`in t))return;t=t.cause}}function passesToolFilter(e,t){return t===void 0?!0:`allow`in t?t.allow.includes(e):!t.block.includes(e)}async function resolveHeaders(e){let{headers:t}=await resolveConnectionHeaders(e,{anonymousWhenAuthorizationRequired:!1});return t}async function resolveConnectionHeaders(e,t){let n={},r=!1,i,getCallbackContext=()=>i??=buildCallbackContext(),a=await resolveConnectionAuthorization(e,typeof e.authorization==`function`?getCallbackContext():void 0);if(a!==void 0)try{n.Authorization=`Bearer ${(await resolveToken(e,a)).token}`}catch(e){if(!t.anonymousWhenAuthorizationRequired||!isConnectionAuthorizationRequiredError(e))throw e;r=!0}if(e.headers!==void 0){let t=await resolveHeadersDefinition(e.headers,getCallbackContext);for(let[r,i]of Object.entries(t)){if(a!==void 0&&r.toLowerCase()===`authorization`)throw Error(`Connection "${e.connectionName}" headers must not include an "Authorization" key when "authorization" is also provided.`);n[r]=i}}return{anonymous:r,headers:n}}async function resolveToken(e,t){return await resolveScopedToken({authorization:t,connection:{url:e.url},instanceId:e.instanceId,scope:e.connectionName})}async function resolveHeadersDefinition(e,t){if(typeof e==`function`)return{...await e(t())};let n={},r=Object.entries(e);for(let[e,i]of r)n[e]=await resolveHeaderValue(i,t);return n}async function resolveHeaderValue(e,t){return typeof e==`function`?await e(t()):await e}export{MCP_WWW_AUTHENTICATE_META_KEY,McpConnectionClient,isMcpAuthChallengeResult,isMcpAuthRequiredError,passesToolFilter,resolveHeaders};
@@ -1 +1 @@
1
- import{z}from"#compiled/zod/index.js";import{COMPILE_METADATA_KIND,COMPILE_METADATA_VERSION}from"#compiler/artifacts.js";import{formatValidationError}from"#runtime/validation.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";const compileArtifactDigestSchema=z.object({path:z.string(),sha256:z.string()}).strict(),compileMetadataSchema=z.object({compile:z.object({manifest:compileArtifactDigestSchema,moduleMap:compileArtifactDigestSchema}).strict(),discovery:z.object({diagnostics:compileArtifactDigestSchema,manifest:compileArtifactDigestSchema,sourceGraphHash:z.string(),summary:z.object({errors:z.number().finite(),warnings:z.number().finite()}).strict()}).strict(),generator:z.object({name:z.string(),version:z.string()}).strict(),kind:z.literal(COMPILE_METADATA_KIND),status:z.union([z.literal(`failed`),z.literal(`ready`)]),version:z.literal(COMPILE_METADATA_VERSION)}).strict();var LoadCompileMetadataError=class extends Error{metadataPath;constructor(e,t){super(e),this.name=`LoadCompileMetadataError`,t!==void 0&&(this.metadataPath=t)}};async function loadCompileMetadata(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compileMetadataPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompileMetadataError(formatLoadErrorMessage(e),t)}return parseCompileMetadata(n,t)}let n=readBundledCompiledArtifacts()?.metadata;return n===void 0?null:parseCompileMetadata(n,`bundled compile metadata`)}function parseCompileMetadata(e,t){let n=compileMetadataSchema.safeParse(e);if(!n.success)throw new LoadCompileMetadataError(`Expected "${t}" to contain valid eve compile metadata. ${formatValidationError(n.error)}`,t);return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown compile metadata load failure.`}export{loadCompileMetadata};
1
+ import{z}from"#compiled/zod/index.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{COMPILE_METADATA_KIND,COMPILE_METADATA_VERSION}from"#compiler/artifacts.js";import{formatValidationError}from"#runtime/validation.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";const compileArtifactDigestSchema=z.object({path:z.string(),sha256:z.string()}).strict(),compileMetadataSchema=z.object({compile:z.object({manifest:compileArtifactDigestSchema,moduleMap:compileArtifactDigestSchema}).strict(),discovery:z.object({diagnostics:compileArtifactDigestSchema,manifest:compileArtifactDigestSchema,sourceGraphHash:z.string(),summary:z.object({errors:z.number().finite(),warnings:z.number().finite()}).strict()}).strict(),generator:z.object({name:z.string(),version:z.string()}).strict(),kind:z.literal(COMPILE_METADATA_KIND),status:z.union([z.literal(`failed`),z.literal(`ready`)]),version:z.literal(COMPILE_METADATA_VERSION)}).strict();var LoadCompileMetadataError=class extends Error{metadataPath;constructor(e,t){super(e),this.name=`LoadCompileMetadataError`,t!==void 0&&(this.metadataPath=t)}};async function loadCompileMetadata(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compileMetadataPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompileMetadataError(formatLoadErrorMessage(e),t)}return parseCompileMetadata(n,t)}let n=readBundledCompiledArtifacts()?.metadata;return n===void 0?null:parseCompileMetadata(n,`bundled compile metadata`)}function parseCompileMetadata(e,t){let n=compileMetadataSchema.safeParse(e);if(!n.success)throw new LoadCompileMetadataError(`Expected "${t}" to contain valid eve compile metadata. ${formatValidationError(n.error)}`,t);return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown compile metadata load failure.`}export{loadCompileMetadata};
@@ -1 +1 @@
1
- import{compiledAgentManifestSchema}from"#compiler/manifest.js";import{formatValidationError}from"#runtime/validation.js";import{validateCompiledAgentManifest}from"#compiler/validate-artifact.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";const BUNDLED_MANIFEST_SOURCE=`bundled compiled manifest`;var LoadCompiledManifestError=class extends Error{manifestPath;constructor(e,t){super(e),this.name=`LoadCompiledManifestError`,t!==void 0&&(this.manifestPath=t)}};async function loadCompiledManifest(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compiledManifestPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompiledManifestError(formatLoadErrorMessage(e),t)}return parseCompiledManifest(n,t)}let n=readBundledCompiledArtifacts();if(n!==null)return parseCompiledManifest(n.manifest,BUNDLED_MANIFEST_SOURCE);throw new LoadCompiledManifestError(`Compiled manifest is unavailable without an app root or bundled compiled artifacts.`,BUNDLED_MANIFEST_SOURCE)}function parseCompiledManifest(e,t){let n=compiledAgentManifestSchema.safeParse(e);if(!n.success)throw new LoadCompiledManifestError(`Expected "${t}" to contain a valid compiled eve agent manifest. ${formatValidationError(n.error)}`,t);try{validateCompiledAgentManifest(n.data)}catch(e){throw new LoadCompiledManifestError(`Expected "${t}" to contain a semantically valid compiled eve agent manifest. ${formatLoadErrorMessage(e)}`,t)}return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown manifest load failure.`}export{LoadCompiledManifestError,loadCompiledManifest};
1
+ import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{compiledAgentManifestSchema}from"#compiler/manifest.js";import{formatValidationError}from"#runtime/validation.js";import{validateCompiledAgentManifest}from"#compiler/validate-artifact.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";const BUNDLED_MANIFEST_SOURCE=`bundled compiled manifest`;var LoadCompiledManifestError=class extends Error{manifestPath;constructor(e,t){super(e),this.name=`LoadCompiledManifestError`,t!==void 0&&(this.manifestPath=t)}};async function loadCompiledManifest(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).compiledManifestPath:void 0;if(t!==void 0){let{readFile:e}=await import(`node:fs/promises`),n;try{n=JSON.parse(await e(t,`utf8`))}catch(e){throw new LoadCompiledManifestError(formatLoadErrorMessage(e),t)}return parseCompiledManifest(n,t)}let n=readBundledCompiledArtifacts();if(n!==null)return parseCompiledManifest(n.manifest,BUNDLED_MANIFEST_SOURCE);throw new LoadCompiledManifestError(`Compiled manifest is unavailable without an app root or bundled compiled artifacts.`,BUNDLED_MANIFEST_SOURCE)}function parseCompiledManifest(e,t){let n=compiledAgentManifestSchema.safeParse(e);if(!n.success)throw new LoadCompiledManifestError(`Expected "${t}" to contain a valid compiled eve agent manifest. ${formatValidationError(n.error)}`,t);try{validateCompiledAgentManifest(n.data)}catch(e){throw new LoadCompiledManifestError(`Expected "${t}" to contain a semantically valid compiled eve agent manifest. ${formatLoadErrorMessage(e)}`,t)}return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown manifest load failure.`}export{LoadCompiledManifestError,loadCompiledManifest};
@@ -1 +1 @@
1
- import{compiledModuleMapSchema}from"#compiler/module-map.js";import{formatValidationError}from"#runtime/validation.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";const BUNDLED_MODULE_MAP_SOURCE=`bundled compiled module map`;var LoadCompiledModuleMapError=class extends Error{moduleMapPath;constructor(e,t){super(e),this.name=`LoadCompiledModuleMapError`,t!==void 0&&(this.moduleMapPath=t)}};async function loadCompiledModuleMap(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).moduleMapPath:void 0;if(t!==void 0){let e=createFileImportSpecifier(t);try{let n=await import(e);return parseCompiledModuleMap(n.moduleMap??n.default,t)}catch(e){throw new LoadCompiledModuleMapError(formatLoadErrorMessage(e),t)}}let n=readBundledCompiledArtifacts();if(n!==null)return parseCompiledModuleMap(n.moduleMap,BUNDLED_MODULE_MAP_SOURCE);throw new LoadCompiledModuleMapError(`Compiled module map is unavailable without an app root or bundled compiled artifacts.`,BUNDLED_MODULE_MAP_SOURCE)}function parseCompiledModuleMap(e,t){let n=compiledModuleMapSchema.safeParse(e);if(!n.success)throw new LoadCompiledModuleMapError(`Expected "${t}" to export a valid compiled eve module map. ${formatValidationError(n.error)}`,t);return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown module-map load failure.`}function createFileImportSpecifier(e){let t=e.replaceAll(`\\`,`/`);return/^[A-Za-z]:\//.test(t)?`file:///${encodeURI(t)}`:t.startsWith(`/`)?`file://${encodeURI(t)}`:t}export{LoadCompiledModuleMapError,loadCompiledModuleMap};
1
+ import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{compiledModuleMapSchema}from"#compiler/module-map.js";import{formatValidationError}from"#runtime/validation.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";const BUNDLED_MODULE_MAP_SOURCE=`bundled compiled module map`;var LoadCompiledModuleMapError=class extends Error{moduleMapPath;constructor(e,t){super(e),this.name=`LoadCompiledModuleMapError`,t!==void 0&&(this.moduleMapPath=t)}};async function loadCompiledModuleMap(e){let t=e.compiledArtifactsSource.kind===`disk`?resolveRuntimeCompilerArtifactPaths(e.compiledArtifactsSource.appRoot).moduleMapPath:void 0;if(t!==void 0){let e=createFileImportSpecifier(t);try{let n=await import(e);return parseCompiledModuleMap(n.moduleMap??n.default,t)}catch(e){throw new LoadCompiledModuleMapError(formatLoadErrorMessage(e),t)}}let n=readBundledCompiledArtifacts();if(n!==null)return parseCompiledModuleMap(n.moduleMap,BUNDLED_MODULE_MAP_SOURCE);throw new LoadCompiledModuleMapError(`Compiled module map is unavailable without an app root or bundled compiled artifacts.`,BUNDLED_MODULE_MAP_SOURCE)}function parseCompiledModuleMap(e,t){let n=compiledModuleMapSchema.safeParse(e);if(!n.success)throw new LoadCompiledModuleMapError(`Expected "${t}" to export a valid compiled eve module map. ${formatValidationError(n.error)}`,t);return n.data}function formatLoadErrorMessage(e){return e instanceof Error?e.message:`Unknown module-map load failure.`}function createFileImportSpecifier(e){let t=e.replaceAll(`\\`,`/`);return/^[A-Za-z]:\//.test(t)?`file:///${encodeURI(t)}`:t.startsWith(`/`)?`file://${encodeURI(t)}`:t}export{LoadCompiledModuleMapError,loadCompiledModuleMap};
@@ -1 +1 @@
1
- import{expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{normalizeMcpClientConnectionDefinition,normalizeOpenApiConnectionDefinition}from"#internal/authored-definition/connection.js";import{readStampedConnectionProtocol}from"#public/definitions/connections/protocol.js";import{registerDefinitionSource}from"#internal/authored-definition/source-identity.js";import{normalizeAuthorizationSpec}from"#shared/validate-authorization.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{createConnectionInstanceId}from"#runtime/connections/instance-identity.js";async function resolveConnectionDefinition(e,t,n){try{let r=await loadResolvedModuleExport({definition:e,kindLabel:`connection`,moduleMap:t,nodeId:n}),i=expectObjectRecord(r,`Expected the connection export "${e.exportName??`default`}" from "${e.logicalPath}" to return an object.`);registerDefinitionSource(i,{kind:`connection`,logicalPath:e.logicalPath,name:e.connectionName},`connection:${e.url}`);let a=i.auth!==void 0,o=i.headers!==void 0,s=e.protocol===`openapi`?i.operations:i.tools,c={connectionName:e.connectionName,description:e.description,exportName:e.exportName,logicalPath:e.logicalPath,instanceId:createConnectionInstanceId({connectionName:e.connectionName,instanceKey:typeof i.instanceKey==`string`?i.instanceKey:void 0,protocol:e.protocol,sourceId:e.sourceId,url:e.url}),protocol:e.protocol,sourceId:e.sourceId,sourceKind:`module`,url:e.url};if(a){if(typeof i.auth==`function`)c.authorization=i.auth;else try{c.authorization=normalizeAuthorizationSpec(i.auth,`Connection "${e.connectionName}" at "${e.logicalPath}":`)}catch(t){throw new ResolveAgentError(toErrorMessage(t),{logicalPath:e.logicalPath,sourceId:e.sourceId})}}if(e.protocol===`mcp`&&i.protocolVersionDiscovery!==void 0){if(typeof i.protocolVersionDiscovery!=`boolean`)throw Error(`"protocolVersionDiscovery" must be a boolean.`);c.protocolVersionDiscovery=i.protocolVersionDiscovery}return o&&(c.headers=i.headers),i.toolCall!==void 0&&(c.toolCall=i.toolCall),s!==void 0&&(c.tools=s),e.protocol===`openapi`&&i.spec!==void 0&&(c.spec=i.spec),typeof i.approval==`function`&&(c.approval=i.approval),c}catch(t){throw t instanceof ResolveAgentError?t:new ResolveAgentError(`Failed to resolve connection "${e.connectionName}" from "${e.logicalPath}": ${toErrorMessage(t)}`,{logicalPath:e.logicalPath,sourceId:e.sourceId})}}function resolveDynamicConnectionValue(e,t){let n=readStampedConnectionProtocol(e),r=`Dynamic connection "${t.connectionName}" from "${t.logicalPath}" must be created by defineMcpClientConnection() or defineOpenAPIConnection().`;if(n===void 0)throw Error(r);if(registerDefinitionSource(e,{kind:`connection`,logicalPath:t.logicalPath,name:t.connectionName}),n===`openapi`){let i=normalizeOpenApiConnectionDefinition(e,r);return assertAuthenticatedDynamicInstanceKey(i.auth,i.instanceKey,r),omitUndefined({approval:i.approval,authorization:i.auth,connectionName:t.connectionName,description:i.description,exportName:t.exportName,headers:i.headers,instanceId:createConnectionInstanceId({connectionName:t.connectionName,instanceKey:i.instanceKey,protocol:n,sourceId:t.sourceId,url:i.baseUrl??``}),logicalPath:t.logicalPath,protocol:n,sourceId:t.sourceId,sourceKind:`module`,spec:i.spec,toolCall:i.toolCall,tools:i.operations,url:i.baseUrl??``})}let i=normalizeMcpClientConnectionDefinition(e,r);return assertAuthenticatedDynamicInstanceKey(i.auth,i.instanceKey,r),omitUndefined({approval:i.approval,authorization:i.auth,connectionName:t.connectionName,description:i.description,exportName:t.exportName,headers:i.headers,instanceId:createConnectionInstanceId({connectionName:t.connectionName,instanceKey:i.instanceKey,protocol:n,sourceId:t.sourceId,url:i.url}),logicalPath:t.logicalPath,protocol:n,sourceId:t.sourceId,sourceKind:`module`,toolCall:i.toolCall,protocolVersionDiscovery:i.protocolVersionDiscovery,tools:i.tools,url:i.url})}function assertAuthenticatedDynamicInstanceKey(e,t,n){if(e!==void 0&&t===void 0)throw Error(`${n} Authenticated dynamic connections must set "instanceKey" to a stable, non-secret account or tenant identifier.`)}function omitUndefined(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}export{resolveConnectionDefinition,resolveDynamicConnectionValue};
1
+ import{expectObjectRecord}from"#internal/authored-module.js";import{toErrorMessage}from"#shared/errors.js";import{normalizeMcpClientConnectionDefinition,normalizeOpenApiConnectionDefinition}from"#internal/authored-definition/connection.js";import{readStampedConnectionProtocol}from"#public/definitions/connections/protocol.js";import{registerDefinitionSource}from"#internal/authored-definition/source-identity.js";import{normalizeAuthorizationSpec}from"#shared/validate-authorization.js";import{ResolveAgentError,loadResolvedModuleExport}from"#runtime/resolve-helpers.js";import{createConnectionInstanceId}from"#runtime/connections/instance-identity.js";async function resolveConnectionDefinition(e,t,n){try{let r=await loadResolvedModuleExport({definition:e,kindLabel:`connection`,moduleMap:t,nodeId:n}),i=expectObjectRecord(r,`Expected the connection export "${e.exportName??`default`}" from "${e.logicalPath}" to return an object.`);registerDefinitionSource(i,{kind:`connection`,logicalPath:e.logicalPath,name:e.connectionName},`connection:${e.url}`);let a=i.auth!==void 0,o=i.headers!==void 0,s=e.protocol===`openapi`?i.operations:i.tools,c={connectionName:e.connectionName,description:e.description,exportName:e.exportName,logicalPath:e.logicalPath,instanceId:createConnectionInstanceId({connectionName:e.connectionName,instanceKey:typeof i.instanceKey==`string`?i.instanceKey:void 0,protocol:e.protocol,sourceId:e.sourceId,url:e.url}),protocol:e.protocol,sourceId:e.sourceId,sourceKind:`module`,url:e.url};if(a){if(typeof i.auth==`function`)c.authorization=i.auth;else try{c.authorization=normalizeAuthorizationSpec(i.auth,`Connection "${e.connectionName}" at "${e.logicalPath}":`)}catch(t){throw new ResolveAgentError(toErrorMessage(t),{logicalPath:e.logicalPath,sourceId:e.sourceId})}}if(e.protocol===`mcp`&&i.protocolVersionDiscovery!==void 0){if(typeof i.protocolVersionDiscovery!=`boolean`)throw Error(`"protocolVersionDiscovery" must be a boolean.`);c.protocolVersionDiscovery=i.protocolVersionDiscovery}if(e.protocol===`mcp`&&i.forwardPrincipal!==void 0){if(typeof i.forwardPrincipal!=`boolean`)throw Error(`"forwardPrincipal" must be a boolean.`);c.forwardPrincipal=i.forwardPrincipal}return o&&(c.headers=i.headers),i.toolCall!==void 0&&(c.toolCall=i.toolCall),s!==void 0&&(c.tools=s),e.protocol===`openapi`&&i.spec!==void 0&&(c.spec=i.spec),typeof i.approval==`function`&&(c.approval=i.approval),c}catch(t){throw t instanceof ResolveAgentError?t:new ResolveAgentError(`Failed to resolve connection "${e.connectionName}" from "${e.logicalPath}": ${toErrorMessage(t)}`,{logicalPath:e.logicalPath,sourceId:e.sourceId})}}function resolveDynamicConnectionValue(e,t){let n=readStampedConnectionProtocol(e),r=`Dynamic connection "${t.connectionName}" from "${t.logicalPath}" must be created by defineMcpClientConnection() or defineOpenAPIConnection().`;if(n===void 0)throw Error(r);if(registerDefinitionSource(e,{kind:`connection`,logicalPath:t.logicalPath,name:t.connectionName}),n===`openapi`){let i=normalizeOpenApiConnectionDefinition(e,r);return assertAuthenticatedDynamicInstanceKey(i.auth,i.instanceKey,r),omitUndefined({approval:i.approval,authorization:i.auth,connectionName:t.connectionName,description:i.description,exportName:t.exportName,headers:i.headers,instanceId:createConnectionInstanceId({connectionName:t.connectionName,instanceKey:i.instanceKey,protocol:n,sourceId:t.sourceId,url:i.baseUrl??``}),logicalPath:t.logicalPath,protocol:n,sourceId:t.sourceId,sourceKind:`module`,spec:i.spec,toolCall:i.toolCall,tools:i.operations,url:i.baseUrl??``})}let i=normalizeMcpClientConnectionDefinition(e,r);return assertAuthenticatedDynamicInstanceKey(i.auth,i.instanceKey,r),omitUndefined({approval:i.approval,authorization:i.auth,connectionName:t.connectionName,description:i.description,exportName:t.exportName,headers:i.headers,instanceId:createConnectionInstanceId({connectionName:t.connectionName,instanceKey:i.instanceKey,protocol:n,sourceId:t.sourceId,url:i.url}),logicalPath:t.logicalPath,protocol:n,sourceId:t.sourceId,sourceKind:`module`,toolCall:i.toolCall,protocolVersionDiscovery:i.protocolVersionDiscovery,forwardPrincipal:i.forwardPrincipal,tools:i.tools,url:i.url})}function assertAuthenticatedDynamicInstanceKey(e,t,n){if(e!==void 0&&t===void 0)throw Error(`${n} Authenticated dynamic connections must set "instanceKey" to a stable, non-secret account or tenant identifier.`)}function omitUndefined(e){return Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0))}export{resolveConnectionDefinition,resolveDynamicConnectionValue};
@@ -1 +1 @@
1
- import{randomUUID}from"node:crypto";import{readFile,rename,rm,writeFile}from"node:fs/promises";import{createSandboxPreparedArtifactsManifest,sandboxPreparedArtifactsManifestSchema}from"#shared/sandbox-prepared-artifacts.js";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";async function writeSandboxPreparedArtifactsManifest(e){if(e.entries.length===0)return;let t=`${e.compileDirectoryPath}/sandbox-prepared-artifacts.json`,n=null;try{n=sandboxPreparedArtifactsManifestSchema.parse(JSON.parse(await readFile(t,`utf8`)))}catch(e){if(!(e instanceof Error&&`code`in e&&e.code===`ENOENT`))throw e}let r=new Map(n?.entries.map(e=>[e.nodeId,e]));for(let t of e.entries)r.set(t.nodeId,t);let i=`${t}.${randomUUID()}.tmp`;try{await writeFile(i,`${JSON.stringify(createSandboxPreparedArtifactsManifest([...r.values()]),null,2)}\n`),await rename(i,t)}finally{await rm(i,{force:!0})}}async function loadSandboxPreparedArtifact(e){let t=(await loadSandboxPreparedArtifactsManifest(e.compiledArtifactsSource))?.entries.find(t=>t.nodeId===e.nodeId);if(t!==void 0&&t.providerName!==e.providerName)throw Error(`Prepared sandbox artifact for node "${e.nodeId}" belongs to provider "${t.providerName}", not "${e.providerName}".`);return t?.artifact}async function loadSandboxPreparedArtifactsManifest(e){if(e.kind===`bundled`)return readBundledCompiledArtifacts()?.sandboxPreparedArtifacts??null;let t=resolveRuntimeCompilerArtifactPaths(e.appRoot).sandboxPreparedArtifactsPath;try{return sandboxPreparedArtifactsManifestSchema.parse(JSON.parse(await readFile(t,`utf8`)))}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return null;throw e}}export{loadSandboxPreparedArtifact,writeSandboxPreparedArtifactsManifest};
1
+ import{randomUUID}from"node:crypto";import{readFile,rename,rm,writeFile}from"node:fs/promises";import{resolveRuntimeCompilerArtifactPaths}from"#runtime/loaders/artifact-paths.js";import{createSandboxPreparedArtifactsManifest,sandboxPreparedArtifactsManifestSchema}from"#shared/sandbox-prepared-artifacts.js";import{readBundledCompiledArtifacts}from"#runtime/loaders/bundled-artifacts.js";async function writeSandboxPreparedArtifactsManifest(e){if(e.entries.length===0)return;let t=`${e.compileDirectoryPath}/sandbox-prepared-artifacts.json`,n=null;try{n=sandboxPreparedArtifactsManifestSchema.parse(JSON.parse(await readFile(t,`utf8`)))}catch(e){if(!(e instanceof Error&&`code`in e&&e.code===`ENOENT`))throw e}let r=new Map(n?.entries.map(e=>[e.nodeId,e]));for(let t of e.entries)r.set(t.nodeId,t);let i=`${t}.${randomUUID()}.tmp`;try{await writeFile(i,`${JSON.stringify(createSandboxPreparedArtifactsManifest([...r.values()]),null,2)}\n`),await rename(i,t)}finally{await rm(i,{force:!0})}}async function loadSandboxPreparedArtifact(e){let t=(await loadSandboxPreparedArtifactsManifest(e.compiledArtifactsSource))?.entries.find(t=>t.nodeId===e.nodeId);if(t!==void 0&&t.providerName!==e.providerName)throw Error(`Prepared sandbox artifact for node "${e.nodeId}" belongs to provider "${t.providerName}", not "${e.providerName}".`);return t?.artifact}async function loadSandboxPreparedArtifactsManifest(e){if(e.kind===`bundled`)return readBundledCompiledArtifacts()?.sandboxPreparedArtifacts??null;let t=resolveRuntimeCompilerArtifactPaths(e.appRoot).sandboxPreparedArtifactsPath;try{return sandboxPreparedArtifactsManifestSchema.parse(JSON.parse(await readFile(t,`utf8`)))}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return null;throw e}}export{loadSandboxPreparedArtifact,writeSandboxPreparedArtifactsManifest};
@@ -0,0 +1,20 @@
1
+ import type { StandardSchemaV1 } from "#compiled/@standard-schema/spec/index.js";
2
+ import type { SessionSchedule } from "#context/session-schedule.js";
3
+ import type { ScheduleClient, ScheduleClientCreate, DynamicSchedulesDefinition, ScheduleEnvelope, ScheduleScopeContext } from "#public/schedules/subscription.js";
4
+ export interface ScheduleBoundCallContext extends ScheduleScopeContext {
5
+ readonly application: string;
6
+ readonly collection: string;
7
+ readonly operationId?: () => string;
8
+ }
9
+ export interface PreparedScheduleCreate<TPrepared = unknown> {
10
+ readonly displayName: string;
11
+ readonly expression: import("#public/schedules/subscription.js").ScheduleTiming;
12
+ readonly envelope: ScheduleEnvelope<TPrepared>;
13
+ }
14
+ /** Internal capabilities used by generated create approval; authored clients expose only create. */
15
+ export interface ScheduleCollectionClient<TInput, TPrepared> extends ScheduleClient<TInput> {
16
+ prepareCreate(input: ScheduleClientCreate<TInput>): Promise<PreparedScheduleCreate<TInput | TPrepared>>;
17
+ create(input: ScheduleClientCreate<TInput>, approved?: PreparedScheduleCreate): Promise<import("#public/schedules/subscription.js").ScheduleRecord>;
18
+ }
19
+ export declare function createScheduleCollectionClient<TPayload, TPrepared = TPayload>(definition: DynamicSchedulesDefinition<TPayload, StandardSchemaV1<unknown, TPayload>, TPrepared>, callContext: ScheduleBoundCallContext): ScheduleCollectionClient<TPayload, TPrepared>;
20
+ export declare function assertScheduleManagementAllowed(schedule?: SessionSchedule): void;
@@ -0,0 +1 @@
1
+ import{createHash,randomUUID}from"node:crypto";import{contextStorage,loadContext}from"#context/container.js";import{projectScheduleRecord}from"#runtime/schedules/record.js";import{createScheduleCollectionPayload,validateSchedulePayload}from"#runtime/schedules/payload.js";import{isDeepStrictEqual}from"node:util";import{readSessionSchedule}from"#context/session-schedule.js";import{BundleKey}from"#runtime/sessions/runtime-context-keys.js";import{resolveScheduleTiming,validateScheduleListLimit,validateScheduleName}from"#runtime/schedules/validation.js";import{dispatchScheduledOccurrence}from"#runtime/schedules/dispatch-occurrence.js";import{byPrincipal}from"#public/schedules/scope.js";function createScheduleCollectionClient(e,t){let n=t.operationId??randomUUID,contextFor=(e,n)=>{let r={...t,operation:e};return n!==void 0&&(r.name=n),r},resolveNamespace=async(r,i)=>{assertScheduleManagementAllowed(t.session.schedule);let a=contextFor(r,i),o=e.scope===void 0?byPrincipal(a):await e.scope({...a,operation:r});if(o===null)throw Error(`Schedule ${r} is not available in this context.`);return validateScope(o),{scope:o,provider:{abortSignal:t.abortSignal,collection:t.collection,namespace:deriveScheduleNamespace(t.application,t.collection,o),operationId:n(),target:{key:t.application,deliver:async({payload:n,occurrence:r})=>{await dispatchScheduledOccurrence({bundle:loadContext().require(BundleKey),collection:t.collection,definition:e,occurrence:{...r,collection:t.collection},payload:n})}}}}},prepareCreation=async n=>{let r=validateScheduleName(n.name);resolveScheduleTiming(n.expression);let{scope:i,provider:a}=await resolveNamespace(`create`,r),o=principalReference(t.session.auth.current);if(o===null)throw Error(`Creating a schedule requires an authenticated principal.`);let s=await validateSchedulePayload(e.inputSchema,n.payload),c={version:3,payload:e.preparePayload===void 0?s:await e.preparePayload(s,{...contextFor(`create`,r),operation:`create`,name:r}),scope:i,principal:o},l=createScheduleCollectionPayload({application:t.application,collection:t.collection,envelope:c}),u={displayName:r,expression:JSON.parse(JSON.stringify(n.expression)),envelope:l.envelope};if(Buffer.byteLength(JSON.stringify(u))>65536)throw Error(`Prepared schedule creation exceeds the 64 KB limit, including timing and payload.`);return{prepared:u,provider:a}};return{async prepareCreate(e){return(await prepareCreation(e)).prepared},async create(n,r){let{prepared:i,provider:a}=await prepareCreation(n);if(r!==void 0&&!isDeepStrictEqual(i,r))throw Error(`Schedule creation changed after approval. Request a new creation approval; no schedule was written.`);let o=`${i.displayName.slice(0,218)}--${randomUUID()}`,s=resolveScheduleTiming(n.expression),c=createScheduleCollectionPayload({application:t.application,collection:t.collection,envelope:i.envelope});return projectScheduleRecord(await e.provider.create(a,{expression:s,name:o,payload:c}))},async delete(t){let n=validateScheduleName(t),{provider:r}=await resolveNamespace(`delete`,n);return await e.provider.delete(r,n)},async disable(t){let n=validateScheduleName(t),{provider:r}=await resolveNamespace(`disable`,n);return projectScheduleRecord(await e.provider.disable(r,n))},async enable(t){let n=validateScheduleName(t),{provider:r}=await resolveNamespace(`enable`,n);return projectScheduleRecord(await e.provider.enable(r,n))},async get(t){let n=validateScheduleName(t),{provider:r}=await resolveNamespace(`get`,n),i=await e.provider.get(r,n);return i===null?null:projectScheduleRecord(i)},async invoke(t){let n=validateScheduleName(t),{provider:r}=await resolveNamespace(`invoke`,n);await e.provider.invoke(r,n)},async list(t={}){let n=validateScheduleListLimit(t.limit),{provider:r}=await resolveNamespace(`list`),i={};t.cursor?.trim()&&(i.cursor=t.cursor.trim()),n!==void 0&&(i.limit=n);let a=await e.provider.list(r,i);return{...a,data:a.data.map(projectScheduleRecord)}}}}function assertScheduleManagementAllowed(e){let t=contextStorage.getStore();if(e!==void 0||t!==void 0&&readSessionSchedule(t)!==void 0)throw Error(`Schedule management is unavailable during scheduled execution.`)}function principalReference(e){if(e===null||e.principalType===`anonymous`||e.principalType===`runtime`)return null;let t={type:e.principalType,authenticator:e.authenticator,principalId:e.principalId};return e.issuer!==void 0&&(t.issuer=e.issuer),e.subject!==void 0&&(t.subject=e.subject),t}function validateScope(e){let t=typeof e==`string`?[e]:e;if(t.length===0||t.some(e=>typeof e!=`string`||e.trim().length===0))throw Error(`Schedule scope must be a non-empty string or tuple of non-empty strings.`)}function deriveScheduleNamespace(e,t,n){if(e.trim().length===0)throw Error(`Schedule application must not be empty.`);return`eve-${createHash(`sha256`).update(JSON.stringify([`eve-schedule-namespace-v2`,e,t,n])).digest(`base64url`)}`}export{assertScheduleManagementAllowed,createScheduleCollectionClient};
@@ -0,0 +1,12 @@
1
+ import type { DynamicSchedulesDefinition, ScheduleOccurrenceIdentity } from "#public/schedules/subscription.js";
2
+ import type { ScheduleCollectionPayload } from "#runtime/schedules/payload.js";
3
+ import type { CompiledRuntimeAgentBundle } from "#runtime/sessions/compiled-agent-cache.js";
4
+ /** Dispatches an at-least-once callback and reports the sessions it started, if any. */
5
+ export declare function dispatchScheduledOccurrence(input: {
6
+ readonly bundle: Pick<CompiledRuntimeAgentBundle, "compiledArtifactsSource" | "graph">;
7
+ readonly collection: string;
8
+ readonly definition: DynamicSchedulesDefinition<any, any, any>;
9
+ readonly occurrence: ScheduleOccurrenceIdentity;
10
+ readonly payload: ScheduleCollectionPayload<unknown>;
11
+ readonly verifyDelivery?: () => Promise<void>;
12
+ }): Promise<void>;
@@ -0,0 +1 @@
1
+ import{scheduleDisplayName}from"#runtime/schedules/record.js";import{createWorkflowRuntime}from"#execution/workflow-runtime.js";import{ScheduleDispatcher}from"#channel/schedule.js";async function dispatchScheduledOccurrence(e){let t={...e.occurrence,displayName:scheduleDisplayName(e.occurrence.name)},n=await new ScheduleDispatcher({runtime:createWorkflowRuntime({compiledArtifactsSource:e.bundle.compiledArtifactsSource}),channels:e.bundle.graph.root.channels}).triggerCollection({collectionId:e.collection,definition:e.definition,occurrence:t,payload:e.payload,verifyDelivery:e.verifyDelivery});await e.definition.events?.[`occurrence.dispatched`]?.({collection:e.collection,executionId:e.occurrence.executionId,name:t.name,occurrence:t,scheduledAt:e.occurrence.scheduledAt,scheduleId:e.occurrence.scheduleId,sessionIds:n.sessions.map(e=>e.id),schedule:e.payload.envelope,type:`occurrence.dispatched`})}export{dispatchScheduledOccurrence};