eve 0.73.0 → 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 (314) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/src/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/src/channel/schedule.d.ts +20 -6
  4. package/dist/src/channel/schedule.js +1 -1
  5. package/dist/src/channel/types.d.ts +4 -0
  6. package/dist/src/chunks/{use-eve-agent-C1GYGCtb.js → use-eve-agent-DOOXadF0.js} +13 -3
  7. package/dist/src/chunks/{use-eve-agent-hZJ7CB8t.js → use-eve-agent-mP0M7SrL.js} +13 -3
  8. package/dist/src/cli/dev/tui/stream-format.js +2 -2
  9. package/dist/src/client/message-reducer.js +1 -1
  10. package/dist/src/compiled/.vendor-stamp.json +2 -1
  11. package/dist/src/compiled/@vercel/schedules/index.d.ts +158 -0
  12. package/dist/src/compiled/@vercel/schedules/index.js +17 -0
  13. package/dist/src/compiler/extension-compatibility.d.ts +18 -18
  14. package/dist/src/compiler/extension-compatibility.js +1 -1
  15. package/dist/src/compiler/load-binding-namespace.d.ts +5 -0
  16. package/dist/src/compiler/load-binding-namespace.js +1 -1
  17. package/dist/src/compiler/manifest.d.ts +39 -0
  18. package/dist/src/compiler/manifest.js +1 -1
  19. package/dist/src/compiler/memory-wrapper-candidates.d.ts +2 -0
  20. package/dist/src/compiler/memory-wrapper-candidates.js +1 -0
  21. package/dist/src/compiler/module-lifecycle.d.ts +1 -1
  22. package/dist/src/compiler/module-lifecycle.js +1 -1
  23. package/dist/src/compiler/module-map.js +1 -1
  24. package/dist/src/compiler/normalize-agent-config.js +1 -1
  25. package/dist/src/compiler/normalize-manifest.js +1 -1
  26. package/dist/src/compiler/normalize-schedule-collection.d.ts +3 -0
  27. package/dist/src/compiler/normalize-schedule-collection.js +1 -0
  28. package/dist/src/compiler/normalize-schedule.d.ts +2 -2
  29. package/dist/src/compiler/normalize-schedule.js +1 -1
  30. package/dist/src/compiler/resolve-workspace-subagent.js +1 -1
  31. package/dist/src/compiler/schedule-collection-wrapper-candidates.d.ts +2 -0
  32. package/dist/src/compiler/schedule-collection-wrapper-candidates.js +1 -0
  33. package/dist/src/compiler/validate-artifact.js +1 -1
  34. package/dist/src/context/build-callback-context.js +1 -1
  35. package/dist/src/context/dynamic-resolve-context.js +1 -1
  36. package/dist/src/context/key-names.d.ts +1 -0
  37. package/dist/src/context/key-names.js +1 -1
  38. package/dist/src/context/keys.d.ts +2 -0
  39. package/dist/src/context/keys.js +1 -1
  40. package/dist/src/context/schedule-collection-tools.d.ts +9 -0
  41. package/dist/src/context/schedule-collection-tools.js +1 -0
  42. package/dist/src/context/session-context.d.ts +4 -1
  43. package/dist/src/context/session-schedule.d.ts +9 -0
  44. package/dist/src/context/session-schedule.js +1 -0
  45. package/dist/src/dynamic/definition.d.ts +1 -0
  46. package/dist/src/execution/agent-sessions/context.d.ts +2 -0
  47. package/dist/src/execution/agent-sessions/context.js +1 -1
  48. package/dist/src/execution/agent-sessions/steps.js +1 -1
  49. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  50. package/dist/src/execution/runtime-context.js +1 -1
  51. package/dist/src/execution/session/entry.js +1 -1
  52. package/dist/src/execution/session/turn-step.js +1 -1
  53. package/dist/src/execution/session/turn.js +1 -1
  54. package/dist/src/execution/session-inbox/protocol.js +1 -1
  55. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  56. package/dist/src/execution/tools/connection-tools.js +1 -1
  57. package/dist/src/framework/sources/modules/schedule-collection-wrapper.d.ts +2 -0
  58. package/dist/src/framework/sources/modules/schedule-collection-wrapper.js +1 -0
  59. package/dist/src/framework/sources/registry.d.ts +1 -0
  60. package/dist/src/framework/sources/registry.js +1 -1
  61. package/dist/src/harness/compaction/step.js +1 -1
  62. package/dist/src/harness/emission.d.ts +1 -0
  63. package/dist/src/harness/emission.js +1 -1
  64. package/dist/src/harness/model-call/call.d.ts +5 -0
  65. package/dist/src/harness/model-call/call.js +1 -1
  66. package/dist/src/harness/session-machine/transitions.d.ts +13 -0
  67. package/dist/src/harness/session-machine/transitions.js +1 -1
  68. package/dist/src/harness/stream-actions.d.ts +6 -1
  69. package/dist/src/harness/stream-actions.js +1 -1
  70. package/dist/src/harness/tools.js +1 -1
  71. package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
  72. package/dist/src/instrumentation/lifecycle.d.ts +1 -0
  73. package/dist/src/internal/application/package.js +1 -1
  74. package/dist/src/internal/authored-definition/schedule-collection.d.ts +2 -0
  75. package/dist/src/internal/authored-definition/schedule-collection.js +1 -0
  76. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  77. package/dist/src/internal/authored-module-loader.d.ts +7 -0
  78. package/dist/src/internal/authored-module-loader.js +2 -2
  79. package/dist/src/internal/authored-module-map-loader.js +1 -1
  80. package/dist/src/internal/authored-runtime-modules.d.ts +1 -0
  81. package/dist/src/internal/authored-runtime-modules.js +1 -1
  82. package/dist/src/internal/nitro/development-generation.js +1 -1
  83. package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
  84. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  85. package/dist/src/internal/nitro/host/extension-capability-requirements.js +1 -1
  86. package/dist/src/internal/nitro/host/vercel-build-output-config.d.ts +12 -0
  87. package/dist/src/internal/nitro/host/vercel-build-output-config.js +1 -1
  88. package/dist/src/internal/nitro/routes/schedule-collection-consumer.d.ts +3 -0
  89. package/dist/src/internal/nitro/routes/schedule-collection-consumer.js +1 -0
  90. package/dist/src/internal/schedules/consumer-route.d.ts +17 -0
  91. package/dist/src/internal/schedules/consumer-route.js +1 -0
  92. package/dist/src/internal/schedules/verify-delivery.d.ts +25 -0
  93. package/dist/src/internal/schedules/verify-delivery.js +1 -0
  94. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  95. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cli-config.js +1 -0
  96. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cred-storage.js +1 -0
  97. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/index.js +1 -0
  98. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.js +1 -0
  99. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.zod.js +1 -0
  100. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/types.js +1 -0
  101. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/envpath.js +1 -0
  102. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errors.js +2 -0
  103. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errutils.js +1 -0
  104. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/exec.js +1 -0
  105. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/fsutils.js +1 -0
  106. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/index.js +1 -0
  107. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/lookup.js +1 -0
  108. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/safety.js +1 -0
  109. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/auth-errors.js +1 -0
  110. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +1 -0
  111. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-context.js +1 -0
  112. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +1 -0
  113. 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
  114. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/index.js +1 -0
  115. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/oauth.js +1 -0
  116. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-error.js +1 -0
  117. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-io.js +1 -0
  118. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-util.js +2 -0
  119. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token.js +1 -0
  120. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +1 -0
  121. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/version.js +1 -0
  122. 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
  123. package/dist/src/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +1 -0
  124. package/dist/src/node_modules/.pnpm/brace-expansion@5.0.12/node_modules/brace-expansion/dist/esm/index.js +1 -0
  125. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +1 -0
  126. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +1 -0
  127. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +1 -0
  128. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +1 -0
  129. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +1 -0
  130. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +1 -0
  131. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +1 -0
  132. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +1 -0
  133. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +2 -0
  134. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +1 -0
  135. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +1 -0
  136. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +1 -0
  137. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +1 -0
  138. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +1 -0
  139. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +1 -0
  140. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +1 -0
  141. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +1 -0
  142. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +1 -0
  143. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +1 -0
  144. package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +1 -0
  145. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +1 -0
  146. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +1 -0
  147. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +1 -0
  148. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +1 -0
  149. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +1 -0
  150. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +1 -0
  151. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +1 -0
  152. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +1 -0
  153. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +1 -0
  154. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +1 -0
  155. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +1 -0
  156. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +1 -0
  157. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +1 -0
  158. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +1 -0
  159. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +1 -0
  160. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +1 -0
  161. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +1 -0
  162. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +1 -0
  163. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +1 -0
  164. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +1 -0
  165. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +1 -0
  166. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +1 -0
  167. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +1 -0
  168. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +1 -0
  169. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +1 -0
  170. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +1 -0
  171. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +1 -0
  172. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +1 -0
  173. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +1 -0
  174. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +1 -0
  175. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +1 -0
  176. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +1 -0
  177. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +1 -0
  178. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +1 -0
  179. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +1 -0
  180. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +1 -0
  181. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +1 -0
  182. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +1 -0
  183. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +1 -0
  184. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +1 -0
  185. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +1 -0
  186. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +1 -0
  187. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +1 -0
  188. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +1 -0
  189. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +1 -0
  190. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +1 -0
  191. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +1 -0
  192. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +1 -0
  193. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +1 -0
  194. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +1 -0
  195. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +1 -0
  196. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +1 -0
  197. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +1 -0
  198. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +1 -0
  199. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +1 -0
  200. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +1 -0
  201. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +1 -0
  202. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +1 -0
  203. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +1 -0
  204. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +1 -0
  205. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +1 -0
  206. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +1 -0
  207. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +1 -0
  208. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +1 -0
  209. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +1 -0
  210. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +1 -0
  211. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +1 -0
  212. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +1 -0
  213. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +1 -0
  214. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +1 -0
  215. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +1 -0
  216. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +1 -0
  217. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +1 -0
  218. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +1 -0
  219. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +1 -0
  220. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +1 -0
  221. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +1 -0
  222. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +1 -0
  223. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +1 -0
  224. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +1 -0
  225. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +1 -0
  226. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +1 -0
  227. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +1 -0
  228. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +1 -0
  229. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +1 -0
  230. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +1 -0
  231. package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +1 -0
  232. package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +1 -0
  233. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js +1 -0
  234. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js +1 -0
  235. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js +1 -0
  236. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js +1 -0
  237. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js +1 -0
  238. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js +1 -0
  239. package/dist/src/node_modules/.pnpm/mixpart@0.0.6/node_modules/mixpart/dist/index.js +7 -0
  240. package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +1 -0
  241. package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +1 -0
  242. package/dist/src/node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js +1 -0
  243. package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +1 -0
  244. package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +1 -0
  245. package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +1 -0
  246. package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +1 -0
  247. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +1 -0
  248. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +1 -0
  249. package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +2 -0
  250. package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +1 -0
  251. package/dist/src/node_modules/.pnpm/xdg-app-paths@5.5.1/node_modules/xdg-app-paths/src/lib/index.js +1 -0
  252. package/dist/src/node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js +1 -0
  253. package/dist/src/public/channels/slack/index.d.ts +1 -0
  254. package/dist/src/public/channels/slack/index.js +1 -1
  255. package/dist/src/public/experimental/schedules/client.d.ts +7 -0
  256. package/dist/src/public/experimental/schedules/client.js +1 -0
  257. package/dist/src/public/experimental/schedules/index.d.ts +5 -0
  258. package/dist/src/public/experimental/schedules/index.js +1 -0
  259. package/dist/src/public/experimental/schedules/testing.d.ts +2 -0
  260. package/dist/src/public/experimental/schedules/testing.js +1 -0
  261. package/dist/src/public/experimental/schedules/vercel.d.ts +2 -0
  262. package/dist/src/public/experimental/schedules/vercel.js +1 -0
  263. package/dist/src/public/memory/scope.js +1 -1
  264. package/dist/src/public/schedules/provider-types.d.ts +16 -0
  265. package/dist/src/public/schedules/provider-types.js +1 -0
  266. package/dist/src/public/schedules/providers/in-memory.d.ts +5 -0
  267. package/dist/src/public/schedules/providers/in-memory.js +1 -0
  268. package/dist/src/public/schedules/providers/vercel.d.ts +10 -0
  269. package/dist/src/public/schedules/providers/vercel.js +1 -0
  270. package/dist/src/public/schedules/scope.d.ts +2 -0
  271. package/dist/src/public/schedules/scope.js +1 -0
  272. package/dist/src/public/schedules/subscription.d.ts +259 -0
  273. package/dist/src/public/schedules/subscription.js +1 -0
  274. package/dist/src/public/schedules/testing.d.ts +1 -0
  275. package/dist/src/public/schedules/testing.js +1 -0
  276. package/dist/src/runtime/schedules/collection-client.d.ts +20 -0
  277. package/dist/src/runtime/schedules/collection-client.js +1 -0
  278. package/dist/src/runtime/schedules/dispatch-occurrence.d.ts +12 -0
  279. package/dist/src/runtime/schedules/dispatch-occurrence.js +1 -0
  280. package/dist/src/runtime/schedules/load-collection.d.ts +14 -0
  281. package/dist/src/runtime/schedules/load-collection.js +1 -0
  282. package/dist/src/runtime/schedules/payload.d.ts +24 -0
  283. package/dist/src/runtime/schedules/payload.js +1 -0
  284. package/dist/src/runtime/schedules/provider-types.d.ts +1 -0
  285. package/dist/src/runtime/schedules/provider-types.js +1 -0
  286. package/dist/src/runtime/schedules/queue-namespace.d.ts +2 -0
  287. package/dist/src/runtime/schedules/queue-namespace.js +1 -0
  288. package/dist/src/runtime/schedules/record.d.ts +4 -0
  289. package/dist/src/runtime/schedules/record.js +1 -0
  290. package/dist/src/runtime/schedules/validation.d.ts +6 -0
  291. package/dist/src/runtime/schedules/validation.js +1 -0
  292. package/dist/src/runtime/sessions/runtime-context-keys.js +1 -1
  293. package/dist/src/setup/scaffold/create/project.js +1 -1
  294. package/dist/src/shared/principal-scope.d.ts +2 -0
  295. package/dist/src/shared/principal-scope.js +1 -0
  296. package/dist/src/shared/schedule-collection-definition.d.ts +11 -0
  297. package/dist/src/shared/schedule-collection-definition.js +1 -0
  298. package/dist/src/shared/schedule-collection-tools.d.ts +1 -0
  299. package/dist/src/shared/schedule-collection-tools.js +1 -0
  300. package/dist/src/subagents/tool.d.ts +1 -0
  301. package/dist/src/subagents/tool.js +1 -1
  302. package/dist/src/svelte/index.js +1 -1
  303. package/dist/src/svelte/use-eve-agent.js +1 -1
  304. package/dist/src/tools/framework/agent.js +1 -1
  305. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  306. package/dist/src/tools/provided/read-file.js +1 -1
  307. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  308. package/dist/src/tracing/agent-otel-content.d.ts +2 -0
  309. package/dist/src/tracing/agent-otel-content.js +2 -2
  310. package/dist/src/tracing/agent-otel-provider.js +1 -1
  311. package/dist/src/vue/index.js +1 -1
  312. package/dist/src/vue/use-eve-agent.js +1 -1
  313. package/docs/tools/workflows.mdx +6 -4
  314. package/package.json +22 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,21 @@
1
1
  # eve
2
2
 
3
+ ## 0.74.0
4
+
5
+ ### Minor Changes
6
+
7
+ - bc101b5: Add experimental `defineDynamicSchedules` with direct operation tools, optional `preparePayload` creation preparation, top-level per-operation approval, and creator-bound execution. Create approval receives prepared data and rejects changed results before writing; `ctx.session.schedule` exposes scheduled-turn provenance without auth attributes.
8
+
9
+ ### Patch Changes
10
+
11
+ - 51648e3: Manual compaction now resolves step-scoped dynamic models before summarizing a session.
12
+ - 880dd8b: Record offered tool definitions on GenAI chat spans and expose them to lifecycle handlers when input capture is enabled.
13
+ - f528669: Settle tool calls when a model call is retried and remove unresolved tool parts when a turn ends.
14
+ - 8751775: The experimental Vercel schedule provider includes Schedules SDK alpha.11 in the published package without adding a runtime dependency. Provider requests receive the operation's abort signal, and failed disable calls after inactive creation report that the schedule may remain active.
15
+ - b9470fe: `Shift+Enter` now inserts a newline in the `eve dev` prompt in Warp, which sends a bare line feed for it. `Ctrl+J` inserts a newline too, instead of sending the message.
16
+ - 8751775: Schedule subscriptions default to Vercel Schedules in production and process-local storage under `eve dev`, so an explicit `provider` is no longer required. Pass a provider to override the backend, or use `vercelScheduleProvider` from `eve/experimental/schedules/vercel` to customize the Vercel endpoint.
17
+ - 0b5bb5b: Workflow tools in an `agents/<name>/` workspace member now compile with the workflow ID that the deployment registers, so calls no longer fail with "is not registered as a workflow in this deployment". Members can also import workflow and step modules from the shared root package, such as `lib/`, and `eve dev` rebuilds when shared modules imported from outside the agent directory change.
18
+
3
19
  ## 0.73.0
4
20
 
5
21
  ### Minor Changes
@@ -1 +1 @@
1
- import"node:module";export{};
1
+ import"node:module";var __create=Object.create,__defProp=Object.defineProperty,__getOwnPropDesc=Object.getOwnPropertyDescriptor,__getOwnPropNames=Object.getOwnPropertyNames,__getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty,__commonJSMin=(e,t)=>()=>(t||(e((t={exports:{}}).exports,t),e=null),t.exports),__copyProps=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=__getOwnPropNames(t),a=0,o=i.length,s;a<o;a++)s=i[a],!__hasOwnProp.call(e,s)&&s!==n&&__defProp(e,s,{get:(e=>t[e]).bind(null,s),enumerable:!(r=__getOwnPropDesc(t,s))||r.enumerable});return e},__toESM=(e,t,n)=>(n=e==null?{}:__create(__getProtoOf(e)),__copyProps(t||!e||!e.__esModule||!__hasOwnProp.call(e,`default`)?__defProp(n,`default`,{value:e,enumerable:!0}):n,e));export{__commonJSMin,__toESM};
@@ -2,6 +2,8 @@ import type { ChannelAdapter } from "#channel/adapter.js";
2
2
  import { type Session } from "#channel/session.js";
3
3
  import type { Runtime } from "#channel/types.js";
4
4
  import type { ScheduleRunHandler } from "#public/definitions/schedule.js";
5
+ import type { DynamicSchedulesDefinition, ScheduleOccurrenceIdentity } from "#public/schedules/subscription.js";
6
+ import { type ScheduleCollectionPayload } from "#runtime/schedules/payload.js";
5
7
  import type { ResolvedChannelDefinition } from "#runtime/types.js";
6
8
  export { SCHEDULE_APP_AUTH } from "#channel/schedule-auth.js";
7
9
  /**
@@ -18,11 +20,23 @@ export declare const SCHEDULE_ADAPTER: ChannelAdapter;
18
20
  * Loaded shape of one schedule for the dispatcher. Either `run` is
19
21
  * defined (authored handler) or `markdown` is defined (fire-and-forget).
20
22
  */
21
- interface ScheduleDispatchInput {
23
+ export interface ScheduleDispatchInput {
22
24
  readonly scheduleId: string;
23
25
  readonly run?: ScheduleRunHandler;
24
26
  readonly markdown?: string;
25
27
  }
28
+ /** Sessions started by dispatch and background work registered by the handler. */
29
+ export interface ScheduleDispatchResult {
30
+ readonly sessions: readonly Session[];
31
+ readonly waitUntilTasks: readonly Promise<unknown>[];
32
+ }
33
+ export interface ScheduleCollectionDispatchInput {
34
+ readonly collectionId: string;
35
+ readonly definition: DynamicSchedulesDefinition<any, any, any>;
36
+ readonly payload: ScheduleCollectionPayload<unknown>;
37
+ readonly occurrence: ScheduleOccurrenceIdentity;
38
+ readonly verifyDelivery?: () => Promise<void>;
39
+ }
26
40
  /**
27
41
  * Dispatches scheduled task execution.
28
42
  *
@@ -38,12 +52,10 @@ interface ScheduleDispatchInput {
38
52
  *
39
53
  * Returns a {@link ScheduleDispatchResult} carrying any sessions the
40
54
  * handler started (for telemetry / task-result observability) and the
41
- * `waitUntil` promises the handler registered.
55
+ * `waitUntil` promises the handler registered. Subscription callbacks resolve
56
+ * creator auth and await their registered work before returning; their channel
57
+ * sends start fresh, unattended sessions rather than resume a conversation.
42
58
  */
43
- interface ScheduleDispatchResult {
44
- readonly sessions: readonly Session[];
45
- readonly waitUntilTasks: readonly Promise<unknown>[];
46
- }
47
59
  export declare class ScheduleDispatcher {
48
60
  private readonly runtime;
49
61
  private readonly channels;
@@ -52,7 +64,9 @@ export declare class ScheduleDispatcher {
52
64
  readonly channels: readonly ResolvedChannelDefinition[];
53
65
  });
54
66
  trigger(input: ScheduleDispatchInput): Promise<ScheduleDispatchResult>;
67
+ triggerCollection(input: ScheduleCollectionDispatchInput): Promise<ScheduleDispatchResult>;
55
68
  private triggerInScope;
69
+ private createHandlerContext;
56
70
  private runMarkdown;
57
71
  }
58
72
  /**
@@ -1 +1 @@
1
- import{createSession}from"#channel/session.js";import{ContextContainer,contextStorage}from"#context/container.js";import{SCHEDULE_APP_AUTH,SCHEDULE_APP_AUTH as SCHEDULE_APP_AUTH$1}from"#channel/schedule-auth.js";import{createCrossChannelToFn,toCrossChannelTargets}from"#channel/cross-channel-receive.js";import{ScheduleIdKey}from"#context/keys.js";import{expectFunction}from"#internal/authored-module.js";const SCHEDULE_ADAPTER_KIND=`schedule`,SCHEDULE_ADAPTER={kind:SCHEDULE_ADAPTER_KIND};var ScheduleDispatcher=class{runtime;channels;constructor(e){this.runtime=e.runtime,this.channels=e.channels}async trigger(e){let t=new ContextContainer;return t.set(ScheduleIdKey,e.scheduleId),await contextStorage.run(t,()=>this.triggerInScope(e))}async triggerInScope(e){let t=[],n=[],r=createCrossChannelToFn(this.runtime,toCrossChannelTargets(this.channels)),i={appAuth:SCHEDULE_APP_AUTH$1,to(e,n){let i=r(e,n);return{async send(e,n){let r=await i.send(e,n);return t.push(r),r}}},waitUntil(e){n.push(e)}};if(e.run)await e.run(i);else if(e.markdown!==void 0){let n=await this.runMarkdown(e.markdown);t.push(n)}else throw Error(`Schedule "${e.scheduleId}" has neither "run" nor "markdown" — at least one must be set.`);return{sessions:t,waitUntilTasks:n}}async runMarkdown(e){let t=await this.runtime.createSession({adapter:SCHEDULE_ADAPTER,auth:SCHEDULE_APP_AUTH$1,input:{message:e}});return createSession(t.sessionId,this.runtime)}};function expectScheduleRun(e,t,n){let r=e;if(typeof r!=`object`||!r)throw Error(`Schedule export "${n??`default`}" from "${t}" must be an object.`);return expectFunction(r.run,`Expected the schedule export "${n??`default`}" from "${t}" to export a \`run\` handler function.`)}export{SCHEDULE_ADAPTER,SCHEDULE_ADAPTER_KIND,SCHEDULE_APP_AUTH,ScheduleDispatcher,expectScheduleRun};
1
+ import{randomUUID}from"node:crypto";import{createSession}from"#channel/session.js";import{ContextContainer,contextStorage}from"#context/container.js";import{scheduleDisplayName}from"#runtime/schedules/record.js";import{SCHEDULE_APP_AUTH,SCHEDULE_APP_AUTH as SCHEDULE_APP_AUTH$1}from"#channel/schedule-auth.js";import{createCrossChannelToFn,toCrossChannelTargets}from"#channel/cross-channel-receive.js";import{AuthKey,OccurrenceIdKey,ScheduleIdKey,ScheduleInstanceKey}from"#context/keys.js";import{expectFunction}from"#internal/authored-module.js";import{parseSchedulePayload,validateSchedulePayload}from"#runtime/schedules/payload.js";const SCHEDULE_ADAPTER_KIND=`schedule`,SCHEDULE_ADAPTER={kind:SCHEDULE_ADAPTER_KIND};var ScheduleDispatcher=class{runtime;channels;constructor(e){this.runtime=e.runtime,this.channels=e.channels}async trigger(e){let t=new ContextContainer;return t.set(ScheduleIdKey,e.scheduleId),await contextStorage.run(t,()=>this.triggerInScope(e))}async triggerCollection(e){let{envelope:t}=parseSchedulePayload(e.payload,{application:e.payload.eve.application,collection:e.collectionId}),{definition:n}=e,r={...e.occurrence,displayName:scheduleDisplayName(e.occurrence.name)},i=n.preparePayload===void 0?await validateSchedulePayload(n.inputSchema,t.payload):t.payload;await e.verifyDelivery?.();let a=await n.auth({principal:t.principal,payload:i,occurrence:r});if(a===null)throw Error(`Scheduled execution is no longer authorized.`);if(a.principalId!==t.principal.principalId||a.principalType!==t.principal.type||a.authenticator!==t.principal.authenticator||a.issuer!==t.principal.issuer||a.subject!==t.principal.subject)throw Error(`Scheduled execution auth must resolve the schedule creator.`);let o=a,s=new ContextContainer;return s.set(ScheduleIdKey,e.collectionId),s.set(AuthKey,o),s.set(OccurrenceIdKey,r.executionId),s.set(ScheduleInstanceKey,r.name),await contextStorage.run(s,async()=>{let e={...this.runtime,resolveContinuation:async()=>void 0,dispatchContinuation:async e=>{if(e.command.kind!==`send`)throw Error(`Scheduled channel receive can only start a fresh session.`);return{status:`session_not_active`}},createSession:async e=>await this.runtime.createSession({...e,auth:o,initiatorAuth:o,capabilities:{requestInput:!1},continuationToken:`eve-scheduled-send:${randomUUID()}`,continuationConflictCommand:void 0})},{args:t,sessions:a,waitUntilTasks:s}=this.createHandlerContext(e);return await n.run({payload:i,occurrence:r,auth:o,to:(e,n)=>({send:r=>t.to(e,n).send(r,{auth:o})}),waitUntil:t.waitUntil}),await Promise.all(s),{sessions:a,waitUntilTasks:s}})}async triggerInScope(e){let{args:t,sessions:n,waitUntilTasks:r}=this.createHandlerContext();if(e.run)await e.run(t);else if(e.markdown!==void 0)n.push(await this.runMarkdown(e.markdown));else throw Error(`Schedule "${e.scheduleId}" has neither "run" nor "markdown" — at least one must be set.`);return{sessions:n,waitUntilTasks:r}}createHandlerContext(e=this.runtime){let t=[],n=[],r=createCrossChannelToFn(e,toCrossChannelTargets(this.channels));return{args:{appAuth:SCHEDULE_APP_AUTH$1,to(e,n){let i=r(e,n);return{async send(e,n){let r=await i.send(e,n);return t.push(r),r}}},waitUntil(e){n.push(e)}},sessions:t,waitUntilTasks:n}}async runMarkdown(e){let t=await this.runtime.createSession({adapter:SCHEDULE_ADAPTER,auth:SCHEDULE_APP_AUTH$1,input:{message:e}});return createSession(t.sessionId,this.runtime)}};function expectScheduleRun(e,t,n){let r=e;if(typeof r!=`object`||!r)throw Error(`Schedule export "${n??`default`}" from "${t}" must be an object.`);return expectFunction(r.run,`Expected the schedule export "${n??`default`}" from "${t}" to export a \`run\` handler function.`)}export{SCHEDULE_ADAPTER,SCHEDULE_ADAPTER_KIND,SCHEDULE_APP_AUTH,ScheduleDispatcher,expectScheduleRun};
@@ -165,6 +165,7 @@ export type SessionCommand = {
165
165
  /** Initial workflow title when delivering to a prewarmed session. */
166
166
  readonly title?: string;
167
167
  readonly kind: "send";
168
+ readonly schedule?: import("#context/session-schedule.js").SessionSchedule;
168
169
  readonly payload: DeliverPayload;
169
170
  readonly delivery?: ChannelDeliveryMetadata;
170
171
  readonly requestId?: string;
@@ -220,6 +221,7 @@ export interface DispatchSessionInput<TCommand extends SessionCommand = SessionC
220
221
  * metadata so both cross the durable hook boundary outside adapter-owned data.
221
222
  */
222
223
  export interface DeliverHookPayload {
224
+ readonly schedule?: import("#context/session-schedule.js").SessionSchedule;
223
225
  /** Initial workflow title; ignored once session initialization has run. */
224
226
  readonly title?: string;
225
227
  readonly auth?: SessionAuthContext | null;
@@ -357,6 +359,8 @@ export interface SessionCapabilities {
357
359
  * subagent tool wrapper).
358
360
  */
359
361
  export interface RunInput {
362
+ /** Server-supplied provenance inherited by locally delegated scheduled work. */
363
+ readonly schedule?: import("#context/session-schedule.js").SessionSchedule;
360
364
  readonly adapter: ChannelAdapter<any>;
361
365
  /**
362
366
  * Registered channel name for root sessions started from an authored
@@ -3469,6 +3469,10 @@ function reduceContent(data, event) {
3469
3469
  }
3470
3470
  case "action.result": {
3471
3471
  if (conversationProjection(data).calls[event.data.result.callId]?.taskId !== void 0) return data;
3472
+ if (event.data.error?.code === "MODEL_CALL_ATTEMPT_RETRIED") return updateAssistantMessage(data, event.data.turnId, (message) => ({
3473
+ ...message,
3474
+ parts: message.parts.filter((part) => part.type !== "dynamic-tool" || part.toolCallId !== event.data.result.callId)
3475
+ }));
3472
3476
  const existing = findToolPart(data, event.data.result.callId);
3473
3477
  const descriptor = normalizeActionResult(event.data.result);
3474
3478
  const succeeded = event.data.status === void 0 || event.data.status === "completed" ? event.data.result.isError !== true && event.data.error === void 0 : false;
@@ -3570,7 +3574,7 @@ function reduceContent(data, event) {
3570
3574
  ...message.metadata,
3571
3575
  status: "complete"
3572
3576
  },
3573
- parts: removeStreamingToolParts(closeStreamingRuns(message.parts))
3577
+ parts: removeUnsettledToolParts(closeStreamingRuns(message.parts), conversationProjection(data))
3574
3578
  }));
3575
3579
  default: return data;
3576
3580
  }
@@ -3605,8 +3609,14 @@ function closeStreamingRuns(parts, stepIndex) {
3605
3609
  state: "done"
3606
3610
  } : part);
3607
3611
  }
3608
- function removeStreamingToolParts(parts) {
3609
- return parts.filter((part) => part.type !== "dynamic-tool" || part.state !== "input-streaming");
3612
+ function removeUnsettledToolParts(parts, projection) {
3613
+ return parts.filter((part) => {
3614
+ if (part.type !== "dynamic-tool") return true;
3615
+ if (part.state === "input-streaming") return false;
3616
+ if (part.state !== "input-available") return true;
3617
+ const call = projection.calls[part.toolCallId];
3618
+ return call === void 0 || call.taskId !== void 0 || reportedCallStatus(projection, call) !== "running";
3619
+ });
3610
3620
  }
3611
3621
  function updateAssistantMessage(data, turnId, update) {
3612
3622
  const message = data.messages.find((message) => message.role === "assistant" && message.metadata?.turnId === turnId) ?? createAssistantMessage(turnId);
@@ -3470,6 +3470,10 @@ function reduceContent(data, event) {
3470
3470
  }
3471
3471
  case "action.result": {
3472
3472
  if (conversationProjection(data).calls[event.data.result.callId]?.taskId !== void 0) return data;
3473
+ if (event.data.error?.code === "MODEL_CALL_ATTEMPT_RETRIED") return updateAssistantMessage(data, event.data.turnId, (message) => ({
3474
+ ...message,
3475
+ parts: message.parts.filter((part) => part.type !== "dynamic-tool" || part.toolCallId !== event.data.result.callId)
3476
+ }));
3473
3477
  const existing = findToolPart(data, event.data.result.callId);
3474
3478
  const descriptor = normalizeActionResult(event.data.result);
3475
3479
  const succeeded = event.data.status === void 0 || event.data.status === "completed" ? event.data.result.isError !== true && event.data.error === void 0 : false;
@@ -3571,7 +3575,7 @@ function reduceContent(data, event) {
3571
3575
  ...message.metadata,
3572
3576
  status: "complete"
3573
3577
  },
3574
- parts: removeStreamingToolParts(closeStreamingRuns(message.parts))
3578
+ parts: removeUnsettledToolParts(closeStreamingRuns(message.parts), conversationProjection(data))
3575
3579
  }));
3576
3580
  default: return data;
3577
3581
  }
@@ -3606,8 +3610,14 @@ function closeStreamingRuns(parts, stepIndex) {
3606
3610
  state: "done"
3607
3611
  } : part);
3608
3612
  }
3609
- function removeStreamingToolParts(parts) {
3610
- return parts.filter((part) => part.type !== "dynamic-tool" || part.state !== "input-streaming");
3613
+ function removeUnsettledToolParts(parts, projection) {
3614
+ return parts.filter((part) => {
3615
+ if (part.type !== "dynamic-tool") return true;
3616
+ if (part.state === "input-streaming") return false;
3617
+ if (part.state !== "input-available") return true;
3618
+ const call = projection.calls[part.toolCallId];
3619
+ return call === void 0 || call.taskId !== void 0 || reportedCallStatus(projection, call) !== "running";
3620
+ });
3611
3621
  }
3612
3622
  function updateAssistantMessage(data, turnId, update) {
3613
3623
  const message = data.messages.find((message) => message.role === "assistant" && message.metadata?.turnId === turnId) ?? createAssistantMessage(turnId);
@@ -1,4 +1,4 @@
1
1
  const CSI_FINAL=/[\u0040-\u007e]/u,PASTE_START=`\x1B[200~`,PASTE_END=`\x1B[201~`;function sanitizePastedText(e){let t=``;for(let n of e.replace(/\r\n?/gu,`
2
2
  `)){if(n===`
3
- `||n===` `){t+=n;continue}let e=n.codePointAt(0);e!==void 0&&(e<32||e===127||e>=128&&e<=159||(t+=n))}return t}function isIncompletePaste(e){return e.startsWith(PASTE_START)&&!e.includes(PASTE_END,6)}function stripPasteStart(e){return e.startsWith(PASTE_START)?e.slice(6):e}function isIncompleteOsc(e){return e.startsWith(`\x1B]`)&&!e.includes(`\x07`,2)&&!e.includes(`\x1B\\`,2)}function stripPromptControlCharacters(e){let t=``;for(let n of e)n>=` `&&n!==``&&(t+=n);return t}function nextKey(e){let t=e[0];if(t===void 0)return{consumed:0,incomplete:!0};if(t===`\x1B`){if(e.length===1)return{consumed:0,incomplete:!0};let t=e[1];if(t===`O`)return e.length<3?{consumed:0,incomplete:!0}:{key:parseKey(Buffer.from(e.slice(0,3))),consumed:3};if(t===`[`){if(e.startsWith(PASTE_START)){let t=e.indexOf(PASTE_END,6);return t===-1?{consumed:0,incomplete:!0}:{key:{type:`text`,value:sanitizePastedText(e.slice(6,t)),framing:`bracketed-paste`},consumed:t+6}}for(let t=2;t<e.length;t+=1)if(CSI_FINAL.test(e[t]))return{key:parseKey(Buffer.from(e.slice(0,t+1))),consumed:t+1};return{consumed:0,incomplete:!0}}if(t===`]`){let t=e.indexOf(`\x07`,2),n=e.indexOf(`\x1B\\`,2);if(t===-1&&n===-1)return{consumed:0,incomplete:!0};let r=t===-1?n:n===-1?t:Math.min(t,n);return{key:{type:`osc`,value:e.slice(2,r)},consumed:r+(r===t?1:2)}}return t===`b`||t===`B`?{key:{type:`alt-b`},consumed:2}:t===`f`||t===`F`?{key:{type:`alt-f`},consumed:2}:t===`y`||t===`Y`?{key:{type:`alt-y`},consumed:2}:t===``||t===`\b`?{key:{type:`alt-backspace`},consumed:2}:{key:{type:`escape`},consumed:1}}if(t<` `||t===``)return{key:parseKey(Buffer.from(t)),consumed:1};let n=1;for(;n<e.length;){let t=e[n];if(t===`\x1B`||t<` `||t===``)break;n+=1}return{key:parseKey(Buffer.from(e.slice(0,n))),consumed:n}}const SGR_MOUSE=RegExp(`^\x1B\\[<(\\d+);(\\d+);(\\d+)([Mm])$`,`u`);function parseKey(e){let t=e.toString(`utf8`),n=SGR_MOUSE.exec(t);if(n!==null)return{type:`mouse`,action:n[4]===`M`?`press`:`release`,button:Number(n[1]),x:Number(n[2]),y:Number(n[3])};switch(t){case``:return{type:`ctrl-a`};case``:return{type:`ctrl-b`};case``:return{type:`ctrl-e`};case``:return{type:`ctrl-f`};case``:return{type:`ctrl-d`};case`\v`:return{type:`ctrl-k`};case``:return{type:`ctrl-n`};case``:return{type:`ctrl-p`};case`\f`:return{type:`ctrl-l`};case``:return{type:`ctrl-r`};case``:return{type:`ctrl-u`};case``:return{type:`ctrl-w`};case``:return{type:`ctrl-y`};case``:return{type:`ctrl-c`};case`\r`:case`
4
- `:return{type:`enter`};case`\x1B[27;2;13~`:case`\x1B[13;2u`:return{type:`newline`};case``:case`\b`:return{type:`backspace`};case`\x1B[A`:case`\x1BOA`:return{type:`up`};case`\x1B[B`:case`\x1BOB`:return{type:`down`};case`\x1B[C`:case`\x1BOC`:return{type:`right`};case`\x1B[D`:case`\x1BOD`:return{type:`left`};case`\x1B[1;3C`:case`\x1B[1;5C`:case`\x1B[5C`:return{type:`alt-f`};case`\x1B[1;3D`:case`\x1B[1;5D`:case`\x1B[5D`:return{type:`alt-b`};case`\x1B[H`:case`\x1BOH`:case`\x1B[1~`:return{type:`home`};case`\x1B[F`:case`\x1BOF`:case`\x1B[4~`:return{type:`end`};case`\x1B[3~`:return{type:`delete`};case`\x1B[127;3u`:case`\x1B[8;3u`:case`\x1B[27;3;127~`:case`\x1B[27;3;8~`:return{type:`alt-backspace`};case` `:return{type:`tab`};case`\x1B`:return{type:`escape`};default:{let e=stripPromptControlCharacters(t);return e.length>0?{type:`text`,value:e,framing:`unframed`}:{type:`ignore`}}}}async function*takeUntil(e,t){let n=e[Symbol.asyncIterator](),r=t.then(()=>({done:!0,value:void 0}));try{for(;;){let e=n.next();e.catch(()=>{});let t=await Promise.race([e,r]);if(t.done)break;yield t.value}}finally{n.return?.()?.catch(()=>{})}}function formatCompactTokenCount(e){if(e<1e3)return`${e}`;let t=e<1e6?e/1e3:e/1e6,n=e<1e6?`K`:`M`;return`${t.toFixed(1).replace(/\.0$/,``)}${n}`}function formatTurnDuration(e){let t=Math.max(1,Math.round(e/1e3)),n=t%60,r=Math.floor(t/60);if(r===0)return`${n}s`;let i=r%60,a=Math.floor(r/60);return a===0?n===0?`${i}min`:`${i}min ${n}s`:i===0?`${a}h`:`${a}h ${i}min`}function formatTokenFlow(e,t){let n=formatCompactTokenCount(e.inputTokens),r=formatCompactTokenCount(e.outputTokens),i=`${t.arrowUp} ${n} ${t.arrowDown} ${r}`,a=formatContextPercentage(e.inputTokens,e.contextSize);return a==null?i:`${i} ${a}`}function formatContextPercentage(e,t){if(!(t==null||t<=0||!Number.isFinite(t)))return`${Math.round(e/t*100).toLocaleString()}%`}function formatAssistantResponseStats(e,t){if(t===`tokensPerSecond`)return formatTokensPerSecond(e.tokensPerSecond);if(e.outputTokens!=null)return`${e.outputTokens.toLocaleString()} output tokens`}function formatTokensPerSecond(e){if(e!=null)return`${formatNumber(e)} tok/s`}function formatNumber(e){return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:1})}export{formatAssistantResponseStats,formatCompactTokenCount,formatTokenFlow,formatTurnDuration,isIncompleteOsc,isIncompletePaste,nextKey,parseKey,sanitizePastedText,stripPasteStart,stripPromptControlCharacters,takeUntil};
3
+ `||n===` `){t+=n;continue}let e=n.codePointAt(0);e!==void 0&&(e<32||e===127||e>=128&&e<=159||(t+=n))}return t}function isIncompletePaste(e){return e.startsWith(PASTE_START)&&!e.includes(PASTE_END,6)}function stripPasteStart(e){return e.startsWith(PASTE_START)?e.slice(6):e}function isIncompleteOsc(e){return e.startsWith(`\x1B]`)&&!e.includes(`\x07`,2)&&!e.includes(`\x1B\\`,2)}function stripPromptControlCharacters(e){let t=``;for(let n of e)n>=` `&&n!==``&&(t+=n);return t}function nextKey(e){let t=e[0];if(t===void 0)return{consumed:0,incomplete:!0};if(t===`\x1B`){if(e.length===1)return{consumed:0,incomplete:!0};let t=e[1];if(t===`O`)return e.length<3?{consumed:0,incomplete:!0}:{key:parseKey(Buffer.from(e.slice(0,3))),consumed:3};if(t===`[`){if(e.startsWith(PASTE_START)){let t=e.indexOf(PASTE_END,6);return t===-1?{consumed:0,incomplete:!0}:{key:{type:`text`,value:sanitizePastedText(e.slice(6,t)),framing:`bracketed-paste`},consumed:t+6}}for(let t=2;t<e.length;t+=1)if(CSI_FINAL.test(e[t]))return{key:parseKey(Buffer.from(e.slice(0,t+1))),consumed:t+1};return{consumed:0,incomplete:!0}}if(t===`]`){let t=e.indexOf(`\x07`,2),n=e.indexOf(`\x1B\\`,2);if(t===-1&&n===-1)return{consumed:0,incomplete:!0};let r=t===-1?n:n===-1?t:Math.min(t,n);return{key:{type:`osc`,value:e.slice(2,r)},consumed:r+(r===t?1:2)}}return t===`b`||t===`B`?{key:{type:`alt-b`},consumed:2}:t===`f`||t===`F`?{key:{type:`alt-f`},consumed:2}:t===`y`||t===`Y`?{key:{type:`alt-y`},consumed:2}:t===``||t===`\b`?{key:{type:`alt-backspace`},consumed:2}:{key:{type:`escape`},consumed:1}}if(t<` `||t===``)return{key:parseKey(Buffer.from(t)),consumed:1};let n=1;for(;n<e.length;){let t=e[n];if(t===`\x1B`||t<` `||t===``)break;n+=1}return{key:parseKey(Buffer.from(e.slice(0,n))),consumed:n}}const SGR_MOUSE=RegExp(`^\x1B\\[<(\\d+);(\\d+);(\\d+)([Mm])$`,`u`);function parseKey(e){let t=e.toString(`utf8`),n=SGR_MOUSE.exec(t);if(n!==null)return{type:`mouse`,action:n[4]===`M`?`press`:`release`,button:Number(n[1]),x:Number(n[2]),y:Number(n[3])};switch(t){case``:return{type:`ctrl-a`};case``:return{type:`ctrl-b`};case``:return{type:`ctrl-e`};case``:return{type:`ctrl-f`};case``:return{type:`ctrl-d`};case`\v`:return{type:`ctrl-k`};case``:return{type:`ctrl-n`};case``:return{type:`ctrl-p`};case`\f`:return{type:`ctrl-l`};case``:return{type:`ctrl-r`};case``:return{type:`ctrl-u`};case``:return{type:`ctrl-w`};case``:return{type:`ctrl-y`};case``:return{type:`ctrl-c`};case`\r`:return{type:`enter`};case`
4
+ `:case`\x1B[27;2;13~`:case`\x1B[13;2u`:return{type:`newline`};case``:case`\b`:return{type:`backspace`};case`\x1B[A`:case`\x1BOA`:return{type:`up`};case`\x1B[B`:case`\x1BOB`:return{type:`down`};case`\x1B[C`:case`\x1BOC`:return{type:`right`};case`\x1B[D`:case`\x1BOD`:return{type:`left`};case`\x1B[1;3C`:case`\x1B[1;5C`:case`\x1B[5C`:return{type:`alt-f`};case`\x1B[1;3D`:case`\x1B[1;5D`:case`\x1B[5D`:return{type:`alt-b`};case`\x1B[H`:case`\x1BOH`:case`\x1B[1~`:return{type:`home`};case`\x1B[F`:case`\x1BOF`:case`\x1B[4~`:return{type:`end`};case`\x1B[3~`:return{type:`delete`};case`\x1B[127;3u`:case`\x1B[8;3u`:case`\x1B[27;3;127~`:case`\x1B[27;3;8~`:return{type:`alt-backspace`};case` `:return{type:`tab`};case`\x1B`:return{type:`escape`};default:{let e=stripPromptControlCharacters(t);return e.length>0?{type:`text`,value:e,framing:`unframed`}:{type:`ignore`}}}}async function*takeUntil(e,t){let n=e[Symbol.asyncIterator](),r=t.then(()=>({done:!0,value:void 0}));try{for(;;){let e=n.next();e.catch(()=>{});let t=await Promise.race([e,r]);if(t.done)break;yield t.value}}finally{n.return?.()?.catch(()=>{})}}function formatCompactTokenCount(e){if(e<1e3)return`${e}`;let t=e<1e6?e/1e3:e/1e6,n=e<1e6?`K`:`M`;return`${t.toFixed(1).replace(/\.0$/,``)}${n}`}function formatTurnDuration(e){let t=Math.max(1,Math.round(e/1e3)),n=t%60,r=Math.floor(t/60);if(r===0)return`${n}s`;let i=r%60,a=Math.floor(r/60);return a===0?n===0?`${i}min`:`${i}min ${n}s`:i===0?`${a}h`:`${a}h ${i}min`}function formatTokenFlow(e,t){let n=formatCompactTokenCount(e.inputTokens),r=formatCompactTokenCount(e.outputTokens),i=`${t.arrowUp} ${n} ${t.arrowDown} ${r}`,a=formatContextPercentage(e.inputTokens,e.contextSize);return a==null?i:`${i} ${a}`}function formatContextPercentage(e,t){if(!(t==null||t<=0||!Number.isFinite(t)))return`${Math.round(e/t*100).toLocaleString()}%`}function formatAssistantResponseStats(e,t){if(t===`tokensPerSecond`)return formatTokensPerSecond(e.tokensPerSecond);if(e.outputTokens!=null)return`${e.outputTokens.toLocaleString()} output tokens`}function formatTokensPerSecond(e){if(e!=null)return`${formatNumber(e)} tok/s`}function formatNumber(e){return Number.isInteger(e)?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:1})}export{formatAssistantResponseStats,formatCompactTokenCount,formatTokenFlow,formatTurnDuration,isIncompleteOsc,isIncompletePaste,nextKey,parseKey,sanitizePastedText,stripPasteStart,stripPromptControlCharacters,takeUntil};
@@ -1 +1 @@
1
- import{foldSession,initialSessionProjection}from"#protocol/session-projection.js";import{createToolMetadata,mergeToolMetadata,normalizeActionRequest,normalizeActionResult,stringifyUnknown,toMessageInputRequest}from"#client/message-action-parts.js";import{conversationProjection,withConversationProjection}from"#client/conversation-projection.js";import{createAuthorizationCompletedPart,createAuthorizationRequiredPart}from"#client/authorization-message-parts.js";import{optimisticUserMessageId,partKey,projectReceivedParts,upsertMessage}from"#client/message-reducer-primitives.js";import{messageRun}from"#client/message-run-parts.js";import{toolPartState}from"#client/tool-part-state.js";function receivedMessageEventId(e){return e.meta.id??`${e.data.turnId}:${e.data.sequence}`}function defaultMessageReducer(){return{initial(){return withConversationProjection({messages:[]},initialSessionProjection())},reduce(e,t){return reduceMessageData(e,t)}}}function reduceMessageData(e,t){let n=foldSession(conversationProjection(e),t),r=withConversationProjection(reduceContent(e,t),n),i=toolCallIds(r,t);return withConversationProjection(i.length===0?r:withToolPartStates(r,i),n)}function reduceContent(e,t){switch(t.type){case`client.message.submitted`:case`client.message.failed`:return upsertMessage(e,{id:optimisticUserMessageId(t.data.submissionId),metadata:{optimistic:!0,status:t.type===`client.message.failed`?`failed`:`submitted`},parts:[{type:`text`,text:t.data.message}],role:`user`},t.data.turnId);case`message.received`:return upsertMessage(e,{id:`${receivedMessageEventId(t)}:user`,metadata:{status:`complete`,turnId:t.data.turnId},parts:projectReceivedParts(t.data.parts,t.data.message),role:`user`},t.data.turnId);case`step.started`:return updateAssistantMessage(e,t.data.turnId,e=>ensureStepStartPart(e,t.data.stepIndex));case`step.completed`:return e.messages.find(e=>e.role===`assistant`&&e.metadata?.turnId===t.data.turnId)===void 0?e:updateAssistantMessage(e,t.data.turnId,e=>({...e,parts:closeStreamingRuns(e.parts,t.data.stepIndex)}));case`reasoning.appended`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`append`,delta:t.data.reasoningDelta,id:t.meta?.id,stepIndex:t.data.stepIndex,type:`reasoning`}));case`reasoning.completed`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`complete`,stepIndex:t.data.stepIndex,text:t.data.reasoning,id:t.meta?.id,type:`reasoning`}));case`action.input.appended`:{let n=findToolPart(e,t.data.callId);if(n!==void 0&&n.state!==`input-streaming`)return e;let r=(n?.state===`input-streaming`?n.inputText:``)+t.data.inputTextDelta;return upsertToolPart(e,t.data.turnId,t.data.stepIndex,{input:void 0,inputText:r,state:`input-streaming`,stepIndex:t.data.stepIndex,toolCallId:t.data.callId,toolMetadata:n?.toolMetadata??{eve:{kind:`unknown`,name:t.data.toolName}},toolName:t.data.toolName,type:`dynamic-tool`})}case`actions.requested`:{let n=e;for(let e of t.data.actions){let r=findToolPart(n,e.callId);if(r!==void 0&&r.state!==`input-streaming`)continue;let i=normalizeActionRequest(e);n=updateAssistantMessage(n,t.data.turnId,n=>upsertPart(ensureStepStartPart(n,t.data.stepIndex),{input:`input`in e?e.input:void 0,state:`input-available`,stepIndex:t.data.stepIndex,toolCallId:e.callId,toolMetadata:createToolMetadata(i),toolName:i.toolName,type:`dynamic-tool`}))}return n}case`input.requested`:{let n=e;for(let e of t.data.requests){let r=findToolPart(n,e.action.callId);if(r?.approval?.id===e.requestId||r!==void 0&&isSettledToolPart(r))continue;let i=normalizeActionRequest(e.action);n=updateAssistantMessage(n,t.data.turnId,n=>upsertPart(ensureStepStartPart(n,t.data.stepIndex),{...r,approval:{id:e.requestId},input:e.action.input,state:`approval-requested`,stepIndex:r?.stepIndex??t.data.stepIndex,toolCallId:e.action.callId,toolMetadata:createToolMetadata(i,{inputRequest:toMessageInputRequest(e)}),toolName:i.toolName,type:`dynamic-tool`}))}return n}case`action.result`:{if(conversationProjection(e).calls[t.data.result.callId]?.taskId!==void 0)return e;let n=findToolPart(e,t.data.result.callId),r=normalizeActionResult(t.data.result),i=t.data.status===void 0||t.data.status===`completed`?t.data.result.isError!==!0&&t.data.error===void 0:!1,a={...n,input:n?.input,stepIndex:n?.stepIndex??t.data.stepIndex,toolCallId:t.data.result.callId,toolMetadata:mergeToolMetadata(n?.toolMetadata,createToolMetadata(r)),toolName:n?.toolName??r.toolName,type:`dynamic-tool`},o=i?{errorText:void 0,output:t.data.result.output}:{errorText:t.data.error?.message??stringifyUnknown(t.data.result.output),output:void 0};return upsertToolPart(e,t.data.turnId,t.data.stepIndex,{...a,...o,partial:void 0})}case`action.partial`:{let n=findToolPart(e,t.data.result.callId);if(n!==void 0&&isSettledToolPart(n))return e;let r=normalizeActionResult(t.data.result);return upsertToolPart(e,t.data.turnId,t.data.stepIndex,{...n,input:n?.input,output:t.data.result.output,partial:!0,state:`output-available`,stepIndex:n?.stepIndex??t.data.stepIndex,toolCallId:t.data.result.callId,toolMetadata:mergeToolMetadata(n?.toolMetadata,createToolMetadata(r)),toolName:n?.toolName??r.toolName,type:`dynamic-tool`})}case`input.resolved`:{let n=e;for(let{requestId:e,response:r}of t.data.resolutions){let t=r===void 0?void 0:findToolPartByApprovalId(n,e);t!==void 0&&(n=replaceToolPart(n,{...t,toolMetadata:mergeToolMetadata(t.toolMetadata,{eve:{inputResponse:r,kind:t.toolMetadata?.eve?.kind??`unknown`,name:t.toolMetadata?.eve?.name??t.toolName}})}))}return n}case`task.settled`:{let n=findToolPart(e,t.data.callId);if(n===void 0)return e;let{error:r,output:i,status:a}=t.data,o=a===`completed`?{output:i}:{errorText:r?.message};return replaceToolPart(e,{...n,...o})}case`authorization.required`:return updateAssistantMessage(e,t.data.turnId,e=>upsertPart(ensureStepStartPart(e,t.data.stepIndex),createAuthorizationRequiredPart(t)));case`authorization.completed`:return completeAuthorization(e,t);case`message.appended`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`append`,delta:t.data.messageDelta,id:t.meta?.id,stepIndex:t.data.stepIndex,type:`text`}));case`message.completed`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`complete`,stepIndex:t.data.stepIndex,text:t.data.message,id:t.meta?.id,type:`text`}));case`result.completed`:return updateAssistantMessage(e,t.data.turnId,e=>({...e,metadata:{...e.metadata,result:t.data.result}}));case`turn.completed`:case`turn.cancelled`:case`turn.failed`:return t.type===`turn.failed`&&!e.messages.some(e=>e.role===`assistant`&&e.metadata?.turnId===t.data.turnId)?e:updateAssistantMessage(e,t.data.turnId,e=>({...e,metadata:{...e.metadata,status:`complete`},parts:removeStreamingToolParts(closeStreamingRuns(e.parts))}));default:return e}}function toolCallIds(e,t){let byRequest=t=>findToolPartByApprovalId(e,t)?.toolCallId??[];switch(t.type){case`actions.requested`:return t.data.actions.map(e=>e.callId);case`input.requested`:return t.data.requests.map(e=>e.action.callId);case`action.result`:case`action.partial`:return[t.data.result.callId];case`task.started`:case`task.settled`:return[t.data.callId];case`input.resolved`:return t.data.resolutions.flatMap(e=>byRequest(e.requestId));case`approval.settled`:return[byRequest(t.data.requestId)].flat();default:return[]}}function withToolPartStates(e,t){let n=e;for(let r of new Set(t)){let t=findToolPart(n,r);if(t===void 0)continue;let i=toolPartState(n,t);i!==t&&(n=withConversationProjection(replaceToolPart(n,i),conversationProjection(e)))}return n}function closeStreamingRuns(e,t){return e.map(e=>(e.type===`text`||e.type===`reasoning`)&&e.state===`streaming`&&(t===void 0||e.stepIndex===t)?{...e,state:`done`}:e)}function removeStreamingToolParts(e){return e.filter(e=>e.type!==`dynamic-tool`||e.state!==`input-streaming`)}function updateAssistantMessage(e,t,n){let r=e.messages.find(e=>e.role===`assistant`&&e.metadata?.turnId===t)??createAssistantMessage(t);return upsertMessage(e,n(r))}function createAssistantMessage(e){return{id:`${e}:assistant`,metadata:{status:`streaming`,turnId:e},parts:[],role:`assistant`}}function ensureStepStartPart(e,t){let n=e.parts.filter(e=>e.type===`step-start`).length;if(n>t)return e;let r=t-n+1;return{...e,parts:[...e.parts,...Array.from({length:r},()=>({type:`step-start`}))]}}function upsertPart(e,t){let n=e.parts.findIndex(e=>partKey(e)===partKey(t)),r=n===-1?[...e.parts,t]:[...e.parts.slice(0,n),t,...e.parts.slice(n+1)];return{...e,metadata:{...e.metadata,status:t.type===`text`&&t.state===`done`?`complete`:`streaming`},parts:r}}function upsertToolPart(e,t,n,r){let i=updateToolPart(e,r.toolCallId,r);return i===e?updateAssistantMessage(e,t,e=>upsertPart(ensureStepStartPart(e,n),r)):i}function updateToolPart(e,t,n){let r=e.messages.find(e=>e.role===`assistant`&&e.parts.some(e=>e.type===`dynamic-tool`&&e.toolCallId===t));return r?upsertMessage(e,upsertPart(r,n)):e}function replaceToolPart(e,t){let n=e.messages.find(e=>e.parts.some(e=>e.type===`dynamic-tool`&&e.toolCallId===t.toolCallId));return n===void 0?e:upsertMessage(e,{...n,parts:n.parts.map(e=>partKey(e)===partKey(t)?t:e)})}function completeAuthorization(e,t){let n=findPendingAuthorizationPart(e,t.data.name,t.data.attemptId),r=createAuthorizationCompletedPart(t,n);return updateAssistantMessage(e,n?.turnId??t.data.turnId,e=>upsertPart(ensureStepStartPart(e,r.stepIndex),r))}function findToolPart(e,t){for(let n of e.messages)for(let e of n.parts)if(e.type===`dynamic-tool`&&e.toolCallId===t)return e}function isSettledToolPart(e){return e.state===`output-denied`||e.state===`output-error`||e.state===`output-available`&&e.partial!==!0}function findPendingAuthorizationPart(e,t,n){for(let r=e.messages.length-1;r>=0;--r){let i=e.messages[r];if(i?.role===`assistant`)for(let e=i.parts.length-1;e>=0;--e){let r=i.parts[e];if(r?.type===`authorization`&&r.state===`required`&&(n===void 0?r.attemptId===void 0&&r.name===t:r.attemptId===n))return r}}}function findToolPartByApprovalId(e,t){for(let n of e.messages)for(let e of n.parts)if(e.type===`dynamic-tool`&&e.approval?.id===t)return e}export{defaultMessageReducer};
1
+ import{foldSession,initialSessionProjection,reportedCallStatus}from"#protocol/session-projection.js";import{createToolMetadata,mergeToolMetadata,normalizeActionRequest,normalizeActionResult,stringifyUnknown,toMessageInputRequest}from"#client/message-action-parts.js";import{conversationProjection,withConversationProjection}from"#client/conversation-projection.js";import{createAuthorizationCompletedPart,createAuthorizationRequiredPart}from"#client/authorization-message-parts.js";import{optimisticUserMessageId,partKey,projectReceivedParts,upsertMessage}from"#client/message-reducer-primitives.js";import{messageRun}from"#client/message-run-parts.js";import{toolPartState}from"#client/tool-part-state.js";function receivedMessageEventId(e){return e.meta.id??`${e.data.turnId}:${e.data.sequence}`}function defaultMessageReducer(){return{initial(){return withConversationProjection({messages:[]},initialSessionProjection())},reduce(e,t){return reduceMessageData(e,t)}}}function reduceMessageData(e,t){let n=foldSession(conversationProjection(e),t),r=withConversationProjection(reduceContent(e,t),n),i=toolCallIds(r,t);return withConversationProjection(i.length===0?r:withToolPartStates(r,i),n)}function reduceContent(e,t){switch(t.type){case`client.message.submitted`:case`client.message.failed`:return upsertMessage(e,{id:optimisticUserMessageId(t.data.submissionId),metadata:{optimistic:!0,status:t.type===`client.message.failed`?`failed`:`submitted`},parts:[{type:`text`,text:t.data.message}],role:`user`},t.data.turnId);case`message.received`:return upsertMessage(e,{id:`${receivedMessageEventId(t)}:user`,metadata:{status:`complete`,turnId:t.data.turnId},parts:projectReceivedParts(t.data.parts,t.data.message),role:`user`},t.data.turnId);case`step.started`:return updateAssistantMessage(e,t.data.turnId,e=>ensureStepStartPart(e,t.data.stepIndex));case`step.completed`:return e.messages.find(e=>e.role===`assistant`&&e.metadata?.turnId===t.data.turnId)===void 0?e:updateAssistantMessage(e,t.data.turnId,e=>({...e,parts:closeStreamingRuns(e.parts,t.data.stepIndex)}));case`reasoning.appended`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`append`,delta:t.data.reasoningDelta,id:t.meta?.id,stepIndex:t.data.stepIndex,type:`reasoning`}));case`reasoning.completed`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`complete`,stepIndex:t.data.stepIndex,text:t.data.reasoning,id:t.meta?.id,type:`reasoning`}));case`action.input.appended`:{let n=findToolPart(e,t.data.callId);if(n!==void 0&&n.state!==`input-streaming`)return e;let r=(n?.state===`input-streaming`?n.inputText:``)+t.data.inputTextDelta;return upsertToolPart(e,t.data.turnId,t.data.stepIndex,{input:void 0,inputText:r,state:`input-streaming`,stepIndex:t.data.stepIndex,toolCallId:t.data.callId,toolMetadata:n?.toolMetadata??{eve:{kind:`unknown`,name:t.data.toolName}},toolName:t.data.toolName,type:`dynamic-tool`})}case`actions.requested`:{let n=e;for(let e of t.data.actions){let r=findToolPart(n,e.callId);if(r!==void 0&&r.state!==`input-streaming`)continue;let i=normalizeActionRequest(e);n=updateAssistantMessage(n,t.data.turnId,n=>upsertPart(ensureStepStartPart(n,t.data.stepIndex),{input:`input`in e?e.input:void 0,state:`input-available`,stepIndex:t.data.stepIndex,toolCallId:e.callId,toolMetadata:createToolMetadata(i),toolName:i.toolName,type:`dynamic-tool`}))}return n}case`input.requested`:{let n=e;for(let e of t.data.requests){let r=findToolPart(n,e.action.callId);if(r?.approval?.id===e.requestId||r!==void 0&&isSettledToolPart(r))continue;let i=normalizeActionRequest(e.action);n=updateAssistantMessage(n,t.data.turnId,n=>upsertPart(ensureStepStartPart(n,t.data.stepIndex),{...r,approval:{id:e.requestId},input:e.action.input,state:`approval-requested`,stepIndex:r?.stepIndex??t.data.stepIndex,toolCallId:e.action.callId,toolMetadata:createToolMetadata(i,{inputRequest:toMessageInputRequest(e)}),toolName:i.toolName,type:`dynamic-tool`}))}return n}case`action.result`:{if(conversationProjection(e).calls[t.data.result.callId]?.taskId!==void 0)return e;if(t.data.error?.code===`MODEL_CALL_ATTEMPT_RETRIED`)return updateAssistantMessage(e,t.data.turnId,e=>({...e,parts:e.parts.filter(e=>e.type!==`dynamic-tool`||e.toolCallId!==t.data.result.callId)}));let n=findToolPart(e,t.data.result.callId),r=normalizeActionResult(t.data.result),i=t.data.status===void 0||t.data.status===`completed`?t.data.result.isError!==!0&&t.data.error===void 0:!1,a={...n,input:n?.input,stepIndex:n?.stepIndex??t.data.stepIndex,toolCallId:t.data.result.callId,toolMetadata:mergeToolMetadata(n?.toolMetadata,createToolMetadata(r)),toolName:n?.toolName??r.toolName,type:`dynamic-tool`},o=i?{errorText:void 0,output:t.data.result.output}:{errorText:t.data.error?.message??stringifyUnknown(t.data.result.output),output:void 0};return upsertToolPart(e,t.data.turnId,t.data.stepIndex,{...a,...o,partial:void 0})}case`action.partial`:{let n=findToolPart(e,t.data.result.callId);if(n!==void 0&&isSettledToolPart(n))return e;let r=normalizeActionResult(t.data.result);return upsertToolPart(e,t.data.turnId,t.data.stepIndex,{...n,input:n?.input,output:t.data.result.output,partial:!0,state:`output-available`,stepIndex:n?.stepIndex??t.data.stepIndex,toolCallId:t.data.result.callId,toolMetadata:mergeToolMetadata(n?.toolMetadata,createToolMetadata(r)),toolName:n?.toolName??r.toolName,type:`dynamic-tool`})}case`input.resolved`:{let n=e;for(let{requestId:e,response:r}of t.data.resolutions){let t=r===void 0?void 0:findToolPartByApprovalId(n,e);t!==void 0&&(n=replaceToolPart(n,{...t,toolMetadata:mergeToolMetadata(t.toolMetadata,{eve:{inputResponse:r,kind:t.toolMetadata?.eve?.kind??`unknown`,name:t.toolMetadata?.eve?.name??t.toolName}})}))}return n}case`task.settled`:{let n=findToolPart(e,t.data.callId);if(n===void 0)return e;let{error:r,output:i,status:a}=t.data,o=a===`completed`?{output:i}:{errorText:r?.message};return replaceToolPart(e,{...n,...o})}case`authorization.required`:return updateAssistantMessage(e,t.data.turnId,e=>upsertPart(ensureStepStartPart(e,t.data.stepIndex),createAuthorizationRequiredPart(t)));case`authorization.completed`:return completeAuthorization(e,t);case`message.appended`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`append`,delta:t.data.messageDelta,id:t.meta?.id,stepIndex:t.data.stepIndex,type:`text`}));case`message.completed`:return updateAssistantMessage(e,t.data.turnId,e=>messageRun.transition(ensureStepStartPart(e,t.data.stepIndex),{kind:`complete`,stepIndex:t.data.stepIndex,text:t.data.message,id:t.meta?.id,type:`text`}));case`result.completed`:return updateAssistantMessage(e,t.data.turnId,e=>({...e,metadata:{...e.metadata,result:t.data.result}}));case`turn.completed`:case`turn.cancelled`:case`turn.failed`:return t.type===`turn.failed`&&!e.messages.some(e=>e.role===`assistant`&&e.metadata?.turnId===t.data.turnId)?e:updateAssistantMessage(e,t.data.turnId,t=>({...t,metadata:{...t.metadata,status:`complete`},parts:removeUnsettledToolParts(closeStreamingRuns(t.parts),conversationProjection(e))}));default:return e}}function toolCallIds(e,t){let byRequest=t=>findToolPartByApprovalId(e,t)?.toolCallId??[];switch(t.type){case`actions.requested`:return t.data.actions.map(e=>e.callId);case`input.requested`:return t.data.requests.map(e=>e.action.callId);case`action.result`:case`action.partial`:return[t.data.result.callId];case`task.started`:case`task.settled`:return[t.data.callId];case`input.resolved`:return t.data.resolutions.flatMap(e=>byRequest(e.requestId));case`approval.settled`:return[byRequest(t.data.requestId)].flat();default:return[]}}function withToolPartStates(e,t){let n=e;for(let r of new Set(t)){let t=findToolPart(n,r);if(t===void 0)continue;let i=toolPartState(n,t);i!==t&&(n=withConversationProjection(replaceToolPart(n,i),conversationProjection(e)))}return n}function closeStreamingRuns(e,t){return e.map(e=>(e.type===`text`||e.type===`reasoning`)&&e.state===`streaming`&&(t===void 0||e.stepIndex===t)?{...e,state:`done`}:e)}function removeUnsettledToolParts(e,t){return e.filter(e=>{if(e.type!==`dynamic-tool`)return!0;if(e.state===`input-streaming`)return!1;if(e.state!==`input-available`)return!0;let n=t.calls[e.toolCallId];return n===void 0||n.taskId!==void 0||reportedCallStatus(t,n)!==`running`})}function updateAssistantMessage(e,t,n){let r=e.messages.find(e=>e.role===`assistant`&&e.metadata?.turnId===t)??createAssistantMessage(t);return upsertMessage(e,n(r))}function createAssistantMessage(e){return{id:`${e}:assistant`,metadata:{status:`streaming`,turnId:e},parts:[],role:`assistant`}}function ensureStepStartPart(e,t){let n=e.parts.filter(e=>e.type===`step-start`).length;if(n>t)return e;let r=t-n+1;return{...e,parts:[...e.parts,...Array.from({length:r},()=>({type:`step-start`}))]}}function upsertPart(e,t){let n=e.parts.findIndex(e=>partKey(e)===partKey(t)),r=n===-1?[...e.parts,t]:[...e.parts.slice(0,n),t,...e.parts.slice(n+1)];return{...e,metadata:{...e.metadata,status:t.type===`text`&&t.state===`done`?`complete`:`streaming`},parts:r}}function upsertToolPart(e,t,n,r){let i=updateToolPart(e,r.toolCallId,r);return i===e?updateAssistantMessage(e,t,e=>upsertPart(ensureStepStartPart(e,n),r)):i}function updateToolPart(e,t,n){let r=e.messages.find(e=>e.role===`assistant`&&e.parts.some(e=>e.type===`dynamic-tool`&&e.toolCallId===t));return r?upsertMessage(e,upsertPart(r,n)):e}function replaceToolPart(e,t){let n=e.messages.find(e=>e.parts.some(e=>e.type===`dynamic-tool`&&e.toolCallId===t.toolCallId));return n===void 0?e:upsertMessage(e,{...n,parts:n.parts.map(e=>partKey(e)===partKey(t)?t:e)})}function completeAuthorization(e,t){let n=findPendingAuthorizationPart(e,t.data.name,t.data.attemptId),r=createAuthorizationCompletedPart(t,n);return updateAssistantMessage(e,n?.turnId??t.data.turnId,e=>upsertPart(ensureStepStartPart(e,r.stepIndex),r))}function findToolPart(e,t){for(let n of e.messages)for(let e of n.parts)if(e.type===`dynamic-tool`&&e.toolCallId===t)return e}function isSettledToolPart(e){return e.state===`output-denied`||e.state===`output-error`||e.state===`output-available`&&e.partial!==!0}function findPendingAuthorizationPart(e,t,n){for(let r=e.messages.length-1;r>=0;--r){let i=e.messages[r];if(i?.role===`assistant`)for(let e=i.parts.length-1;e>=0;--e){let r=i.parts[e];if(r?.type===`authorization`&&r.state===`required`&&(n===void 0?r.attemptId===void 0&&r.name===t:r.attemptId===n))return r}}}function findToolPartByApprovalId(e,t){for(let n of e.messages)for(let e of n.parts)if(e.type===`dynamic-tool`&&e.approval?.id===t)return e}export{defaultMessageReducer};
@@ -48,6 +48,7 @@
48
48
  "@vercel/otel": "2.1.3",
49
49
  "@vercel/sandbox": "3.3.0",
50
50
  "@vercel/sdk": "1.28.8",
51
+ "@vercel/schedules": "0.0.0-alpha.11",
51
52
  "@workflow/core": "5.1.0",
52
53
  "@workflow/errors": "5.0.2",
53
54
  "@workflow/serde": "5.0.0",
@@ -57,7 +58,7 @@
57
58
  "zod": "4.5.4",
58
59
  "zod-validation-error": "5.0.0"
59
60
  },
60
- "scriptHash": "c0ae47437e3c485f9e61e405bd669710b64f7be286ed4aaa3600e2fe4b41b0a5",
61
+ "scriptHash": "f4dd2f26745407f5b94342ad15f90a1bf4d0cb1fe83bdebaf282f96684006c66",
61
62
  "toolVersions": {
62
63
  "rolldown": "1.2.9",
63
64
  "typescript": "7.0.2"
@@ -0,0 +1,158 @@
1
+ interface SchedulesApiClientOptions {
2
+ baseUrl?: string;
3
+ token?: string;
4
+ fetch?: typeof fetch;
5
+ }
6
+ declare class SchedulesApiError extends Error {
7
+ readonly status: number;
8
+ constructor(status: number, message: string);
9
+ }
10
+ declare class SchedulesApiClient {
11
+ private readonly baseUrl?;
12
+ private readonly token?;
13
+ private readonly fetchImpl;
14
+ private readonly configurationError?;
15
+ constructor(options?: SchedulesApiClientOptions);
16
+ protected getToken(): Promise<string>;
17
+ protected request<T>(method: string, path: string, body?: unknown): Promise<T>;
18
+ }
19
+
20
+ declare const DEFAULT_SCHEDULES_BASE_URL = "https://vercel-schedules.com";
21
+
22
+ type ScheduleExpression = {
23
+ type: 'cron';
24
+ cron: string;
25
+ } | {
26
+ type: 'single';
27
+ /** Datetime in YYYY-MM-DDTHH:mm or YYYY-MM-DDTHH:mm:00 format, with no timezone suffix. */
28
+ at: string;
29
+ };
30
+ type ScheduleTarget = {
31
+ type: 'queue';
32
+ topic: string;
33
+ } | {
34
+ type: 'function';
35
+ function: string;
36
+ };
37
+ type CreateScheduleTarget = {
38
+ topic: string;
39
+ };
40
+ type ScheduleState = 'active' | 'inactive';
41
+ type ScheduleSource = 'static' | 'dynamic';
42
+ interface Schedule {
43
+ scheduleId: string;
44
+ ownerId: string;
45
+ projectId: string;
46
+ trackId: string;
47
+ name: string;
48
+ namespace: string;
49
+ expression: ScheduleExpression;
50
+ /** IANA timezone used for cron expressions and one-time schedules. */
51
+ timezone: string;
52
+ jitter?: number;
53
+ target: ScheduleTarget;
54
+ state: ScheduleState;
55
+ source: ScheduleSource;
56
+ createdAt: number;
57
+ updatedAt: number;
58
+ }
59
+ interface CreateScheduleParams {
60
+ name: string;
61
+ namespace?: string;
62
+ expression: ScheduleExpression;
63
+ /** IANA timezone for cron expressions and local one-time schedules. Defaults to UTC. */
64
+ timezone?: string;
65
+ jitter?: number;
66
+ target: CreateScheduleTarget;
67
+ payload?: unknown;
68
+ }
69
+ type CreateScheduleResponse = Schedule & {
70
+ target: Extract<ScheduleTarget, {
71
+ type: 'queue';
72
+ }>;
73
+ };
74
+ interface ScheduleIdentifier {
75
+ name: string;
76
+ namespace?: string;
77
+ }
78
+ interface UpdateScheduleParams extends ScheduleIdentifier {
79
+ expression?: ScheduleExpression;
80
+ timezone?: string;
81
+ jitter?: number | null;
82
+ target?: CreateScheduleTarget;
83
+ payload?: unknown;
84
+ }
85
+ type UpdateScheduleResponse = Schedule;
86
+ type InvokeScheduleParams = ScheduleIdentifier;
87
+ interface ListSchedulesParams {
88
+ namespace?: string;
89
+ cursor?: string;
90
+ limit?: number;
91
+ }
92
+ interface ListSchedulesResponse {
93
+ data: Schedule[];
94
+ cursor: string | null;
95
+ }
96
+
97
+ declare class SchedulesClient extends SchedulesApiClient {
98
+ create({ target, ...params }: CreateScheduleParams): Promise<CreateScheduleResponse>;
99
+ list(params?: ListSchedulesParams): Promise<ListSchedulesResponse>;
100
+ get({ name, namespace }: ScheduleIdentifier): Promise<Schedule>;
101
+ update({ name, namespace, target, ...params }: UpdateScheduleParams): Promise<UpdateScheduleResponse>;
102
+ delete({ name, namespace }: ScheduleIdentifier): Promise<void>;
103
+ enable({ name, namespace }: ScheduleIdentifier): Promise<Schedule>;
104
+ disable({ name, namespace }: ScheduleIdentifier): Promise<Schedule>;
105
+ invoke({ name, namespace }: InvokeScheduleParams): Promise<void>;
106
+ }
107
+
108
+ declare const schedules: SchedulesClient;
109
+
110
+ /** CloudEvent type used for schedule function dispatches. */
111
+ declare const SCHEDULE_CLOUD_EVENT_TYPE = "com.vercel.schedule.v1beta";
112
+ declare const CLOUD_EVENT_SPEC_VERSION_HEADER = "ce-specversion";
113
+ declare const CLOUD_EVENT_TYPE_HEADER = "ce-type";
114
+ declare const CLOUD_EVENT_SOURCE_HEADER = "ce-source";
115
+ declare const CLOUD_EVENT_ID_HEADER = "ce-id";
116
+ declare const SCHEDULE_SCHEDULED_AT_HEADER = "ce-vssscheduledat";
117
+ declare const SCHEDULE_ID_HEADER = "ce-vssscheduleid";
118
+ declare const SCHEDULE_NAME_HEADER = "ce-vssschedulename";
119
+ declare const SCHEDULE_NAMESPACE_HEADER = "ce-vssnamespace";
120
+ declare const SCHEDULE_SOURCE_HEADER = "ce-vssschedulesource";
121
+ interface ScheduleMetadata {
122
+ /** Unique identifier of the schedule. */
123
+ scheduleId: string;
124
+ /** Unique identifier for this schedule occurrence. */
125
+ executionId: string;
126
+ /** Schedule name, unique within its project and namespace. */
127
+ name: string;
128
+ /** Namespace the schedule belongs to. */
129
+ namespace: string;
130
+ /**
131
+ * Nominal scheduled time for this occurrence, based on the schedule expression.
132
+ * Does not account for jitter. The dispatch may arrive later within the jitter window.
133
+ */
134
+ scheduledAt: Date;
135
+ /** How the schedule was defined, such as `static`. */
136
+ source: string;
137
+ }
138
+ type ScheduleHandler = (metadata: ScheduleMetadata) => void | Promise<void>;
139
+ declare class ScheduleEventParseError extends Error {
140
+ cause?: unknown;
141
+ constructor(message: string, options?: {
142
+ cause?: unknown;
143
+ });
144
+ }
145
+ /** Parses schedule metadata from a binary-mode schedule CloudEvent. */
146
+ declare function parseScheduleEvent(request: Request): Promise<ScheduleMetadata>;
147
+ /**
148
+ * Creates a web-standard route handler for schedule dispatches.
149
+ *
150
+ * ```ts
151
+ * export const POST = handleSchedule(async (metadata) => {
152
+ * console.log(metadata.name, metadata.scheduledAt);
153
+ * });
154
+ * ```
155
+ */
156
+ declare function handleSchedule(handler: ScheduleHandler): (request: Request) => Promise<Response>;
157
+
158
+ export { CLOUD_EVENT_ID_HEADER, CLOUD_EVENT_SOURCE_HEADER, CLOUD_EVENT_SPEC_VERSION_HEADER, CLOUD_EVENT_TYPE_HEADER, type CreateScheduleParams, type CreateScheduleResponse, type CreateScheduleTarget, DEFAULT_SCHEDULES_BASE_URL, type InvokeScheduleParams, type ListSchedulesParams, type ListSchedulesResponse, SCHEDULE_CLOUD_EVENT_TYPE, SCHEDULE_ID_HEADER, SCHEDULE_NAMESPACE_HEADER, SCHEDULE_NAME_HEADER, SCHEDULE_SCHEDULED_AT_HEADER, SCHEDULE_SOURCE_HEADER, type Schedule, ScheduleEventParseError, type ScheduleExpression, type ScheduleHandler, type ScheduleIdentifier, type ScheduleMetadata, type ScheduleSource, type ScheduleState, type ScheduleTarget, schedules as Schedules, type SchedulesApiClientOptions, SchedulesApiError, SchedulesClient, type UpdateScheduleParams, type UpdateScheduleResponse, handleSchedule, parseScheduleEvent };