eve 0.75.1 → 0.76.2

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 (720) hide show
  1. package/CHANGELOG.md +63 -0
  2. package/dist/src/_virtual/_rolldown/runtime.js +1 -1
  3. package/dist/src/acp/adapter.js +1 -1
  4. package/dist/src/channel/channel-address.d.ts +3 -1
  5. package/dist/src/channel/channel-address.js +1 -1
  6. package/dist/src/channel/session-stranded-error.d.ts +25 -0
  7. package/dist/src/channel/session-stranded-error.js +1 -0
  8. package/dist/src/channel/session.d.ts +13 -6
  9. package/dist/src/channel/task-card.js +1 -1
  10. package/dist/src/channel/tool-eligibility.d.ts +1 -2
  11. package/dist/src/channel/types.d.ts +29 -1
  12. package/dist/src/chunks/{use-eve-agent-DK_T88EP.js → use-eve-agent-BtKWTEpm.js} +99 -24
  13. package/dist/src/chunks/{use-eve-agent-B2Kne9z6.js → use-eve-agent-jI6EsYAu.js} +99 -24
  14. package/dist/src/cli/commands/registry-project.d.ts +10 -3
  15. package/dist/src/cli/commands/registry-project.js +2 -2
  16. package/dist/src/cli/commands/registry.js +1 -1
  17. package/dist/src/cli/dev/environment.d.ts +0 -6
  18. package/dist/src/cli/dev/environment.js +1 -1
  19. package/dist/src/cli/dev/tui/conversation-view.js +1 -1
  20. package/dist/src/cli/dev/tui/runner.js +3 -3
  21. package/dist/src/cli/dev/tui/stranded-session.d.ts +9 -0
  22. package/dist/src/cli/dev/tui/stranded-session.js +1 -0
  23. package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
  24. package/dist/src/cli/dev/tui/transcript.js +1 -1
  25. package/dist/src/client/client-error.d.ts +16 -0
  26. package/dist/src/client/client-error.js +1 -1
  27. package/dist/src/client/client.js +1 -1
  28. package/dist/src/client/index.d.ts +3 -2
  29. package/dist/src/client/index.js +1 -1
  30. package/dist/src/client/message-action-parts.d.ts +3 -0
  31. package/dist/src/client/message-action-parts.js +1 -1
  32. package/dist/src/client/message-reducer-types.d.ts +6 -1
  33. package/dist/src/client/message-reducer.js +1 -1
  34. package/dist/src/client/open-stream.d.ts +5 -3
  35. package/dist/src/client/open-stream.js +1 -1
  36. package/dist/src/client/session-controls.js +1 -1
  37. package/dist/src/client/session.js +1 -1
  38. package/dist/src/client/transcript-reducer.d.ts +46 -0
  39. package/dist/src/client/transcript-reducer.js +2 -0
  40. package/dist/src/compiled/.vendor-stamp.json +3 -2
  41. package/dist/src/compiled/@eve/catalog/index.js +1 -1
  42. package/dist/src/compiled/@vercel/queue/index.d.ts +1066 -0
  43. package/dist/src/compiled/@vercel/queue/index.js +47 -0
  44. package/dist/src/compiler/connection-ownership.d.ts +6 -0
  45. package/dist/src/compiler/connection-ownership.js +1 -0
  46. package/dist/src/compiler/default-tool-policy.d.ts +0 -3
  47. package/dist/src/compiler/default-tool-policy.js +1 -1
  48. package/dist/src/compiler/extension-compatibility.d.ts +23 -22
  49. package/dist/src/compiler/extension-compatibility.js +1 -1
  50. package/dist/src/compiler/manifest.d.ts +9 -6
  51. package/dist/src/compiler/manifest.js +1 -1
  52. package/dist/src/compiler/normalize-agent-config.js +1 -1
  53. package/dist/src/compiler/normalize-connection.js +1 -1
  54. package/dist/src/compiler/normalize-manifest.js +1 -1
  55. package/dist/src/compiler/normalize-skill.d.ts +5 -0
  56. package/dist/src/compiler/normalize-skill.js +1 -1
  57. package/dist/src/compiler/normalize-subagent.d.ts +2 -1
  58. package/dist/src/compiler/normalize-subagent.js +1 -1
  59. package/dist/src/compiler/normalize-tool.js +1 -1
  60. package/dist/src/compiler/remote-agent-node.d.ts +2 -1
  61. package/dist/src/compiler/remote-agent-node.js +1 -1
  62. package/dist/src/connections/ownership.d.ts +18 -0
  63. package/dist/src/connections/ownership.js +1 -0
  64. package/dist/src/context/accessors.d.ts +1 -1
  65. package/dist/src/context/build-callback-context.js +1 -1
  66. package/dist/src/context/build-dynamic-tools.d.ts +3 -9
  67. package/dist/src/context/build-dynamic-tools.js +1 -1
  68. package/dist/src/context/dynamic-connection-lifecycle.js +1 -1
  69. package/dist/src/context/dynamic-resolve-context.js +1 -1
  70. package/dist/src/context/dynamic-skill-lifecycle.d.ts +2 -11
  71. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  72. package/dist/src/context/dynamic-subagent-lifecycle.js +1 -1
  73. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  74. package/dist/src/context/dynamic-tool-metadata.d.ts +1 -0
  75. package/dist/src/context/keys.d.ts +10 -4
  76. package/dist/src/context/keys.js +1 -1
  77. package/dist/src/context/memory-tools.js +1 -1
  78. package/dist/src/context/providers/session.d.ts +1 -0
  79. package/dist/src/context/providers/session.js +1 -1
  80. package/dist/src/context/schedule-collection-tools.js +1 -1
  81. package/dist/src/context/session-context.d.ts +8 -2
  82. package/dist/src/discover/grammar.d.ts +11 -0
  83. package/dist/src/discover/grammar.js +1 -1
  84. package/dist/src/discover/manifest.d.ts +1 -0
  85. package/dist/src/discover/manifest.js +1 -1
  86. package/dist/src/discover/skills.d.ts +1 -0
  87. package/dist/src/discover/skills.js +1 -1
  88. package/dist/src/dynamic/definition.d.ts +14 -6
  89. package/dist/src/evals/assertions/collector.d.ts +4 -0
  90. package/dist/src/evals/assertions/collector.js +1 -1
  91. package/dist/src/evals/assertions/run.d.ts +2 -3
  92. package/dist/src/evals/assertions/run.js +2 -2
  93. package/dist/src/evals/assertions/scoped.js +1 -1
  94. package/dist/src/evals/index.d.ts +1 -1
  95. package/dist/src/evals/match.d.ts +9 -6
  96. package/dist/src/evals/reported-tool-name.d.ts +9 -0
  97. package/dist/src/evals/reported-tool-name.js +1 -0
  98. package/dist/src/evals/runner/derive-run-facts.d.ts +3 -3
  99. package/dist/src/evals/runner/derive-run-facts.js +1 -1
  100. package/dist/src/evals/runner/execute-task.js +1 -1
  101. package/dist/src/evals/runner/reporters/braintrust.js +1 -1
  102. package/dist/src/evals/runner/reporters/datadog-runtime-trace-links.d.ts +11 -0
  103. package/dist/src/evals/runner/reporters/datadog-runtime-trace-links.js +1 -0
  104. package/dist/src/evals/runner/reporters/datadog.js +2 -2
  105. package/dist/src/evals/session.js +2 -2
  106. package/dist/src/evals/target.d.ts +7 -0
  107. package/dist/src/evals/target.js +1 -1
  108. package/dist/src/evals/types.d.ts +19 -2
  109. package/dist/src/eve-channel/index.js +1 -1
  110. package/dist/src/eve-channel/request.js +2 -2
  111. package/dist/src/eve-channel/support.d.ts +2 -0
  112. package/dist/src/eve-channel/support.js +1 -1
  113. package/dist/src/execution/agent-sessions/remote.js +1 -1
  114. package/dist/src/execution/agent-sessions/steps.js +1 -1
  115. package/dist/src/execution/catalog/connection-auth.d.ts +41 -0
  116. package/dist/src/execution/catalog/connection-auth.js +1 -0
  117. package/dist/src/execution/catalog/connection-entry.d.ts +16 -0
  118. package/dist/src/execution/catalog/connection-entry.js +1 -0
  119. package/dist/src/execution/catalog/listing.d.ts +9 -0
  120. package/dist/src/execution/catalog/listing.js +3 -0
  121. package/dist/src/execution/catalog/rank.d.ts +44 -0
  122. package/dist/src/execution/catalog/rank.js +1 -0
  123. package/dist/src/execution/catalog/search.d.ts +28 -0
  124. package/dist/src/execution/catalog/search.js +1 -0
  125. package/dist/src/execution/catalog/signatures.d.ts +11 -0
  126. package/dist/src/execution/catalog/signatures.js +1 -0
  127. package/dist/src/execution/catalog/skills.d.ts +24 -0
  128. package/dist/src/execution/catalog/skills.js +1 -0
  129. package/dist/src/execution/catalog/step-catalog.d.ts +51 -0
  130. package/dist/src/execution/catalog/step-catalog.js +1 -0
  131. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  132. package/dist/src/execution/dynamic-connections.js +1 -1
  133. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  134. package/dist/src/execution/eve-workflow-attributes.d.ts +15 -0
  135. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  136. package/dist/src/execution/install-workflow-world.d.ts +7 -0
  137. package/dist/src/execution/install-workflow-world.js +1 -0
  138. package/dist/src/execution/invoke-tool.js +1 -1
  139. package/dist/src/execution/legacy-session/authorization.js +1 -1
  140. package/dist/src/execution/legacy-session/inbox.js +1 -1
  141. package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
  142. package/dist/src/execution/node-step.js +1 -1
  143. package/dist/src/execution/session/active-turn.d.ts +1 -1
  144. package/dist/src/execution/session/entry.js +1 -1
  145. package/dist/src/execution/session/handoff-steps.d.ts +11 -0
  146. package/dist/src/execution/session/handoff-steps.js +1 -1
  147. package/dist/src/execution/session/pending-turn-state.js +1 -1
  148. package/dist/src/execution/session/program.js +1 -1
  149. package/dist/src/execution/session/timeout-steps.js +1 -1
  150. package/dist/src/execution/session/turn-step.js +1 -1
  151. package/dist/src/execution/session/turn.d.ts +5 -5
  152. package/dist/src/execution/session/turn.js +1 -1
  153. package/dist/src/execution/session-event-stream.d.ts +6 -0
  154. package/dist/src/execution/session-event-stream.js +1 -1
  155. package/dist/src/execution/session-inbox/address.d.ts +4 -0
  156. package/dist/src/execution/session-inbox/address.js +1 -1
  157. package/dist/src/execution/session-inbox/end-stranded-session.d.ts +22 -0
  158. package/dist/src/execution/session-inbox/end-stranded-session.js +1 -0
  159. package/dist/src/execution/session-inbox/hook-release.d.ts +4 -0
  160. package/dist/src/execution/session-inbox/hook-release.js +1 -0
  161. package/dist/src/execution/session-inbox/owner.d.ts +48 -0
  162. package/dist/src/execution/session-inbox/owner.js +1 -0
  163. package/dist/src/execution/session-inbox/resume.d.ts +12 -0
  164. package/dist/src/execution/session-inbox/resume.js +1 -1
  165. package/dist/src/execution/session-inbox/runnable-owner.d.ts +13 -0
  166. package/dist/src/execution/session-inbox/runnable-owner.js +1 -0
  167. package/dist/src/execution/session-inbox/stranded-replay-guard.d.ts +16 -0
  168. package/dist/src/execution/session-inbox/stranded-replay-guard.js +1 -0
  169. package/dist/src/execution/session.js +1 -1
  170. package/dist/src/execution/skills/instructions.d.ts +20 -10
  171. package/dist/src/execution/skills/instructions.js +2 -2
  172. package/dist/src/execution/tasks/calls.d.ts +6 -5
  173. package/dist/src/execution/tasks/calls.js +1 -1
  174. package/dist/src/execution/tasks/model-step.d.ts +10 -10
  175. package/dist/src/execution/tasks/model-step.js +1 -1
  176. package/dist/src/execution/tasks/render.d.ts +3 -3
  177. package/dist/src/execution/tasks/render.js +3 -3
  178. package/dist/src/execution/tasks/session.d.ts +2 -1
  179. package/dist/src/execution/tasks/table.d.ts +1 -1
  180. package/dist/src/execution/tasks/tool-entry-point.d.ts +1 -1
  181. package/dist/src/execution/tool-auth.js +1 -1
  182. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  183. package/dist/src/execution/tools/workflow/harness-definition.js +1 -1
  184. package/dist/src/execution/workflow-runtime.d.ts +5 -1
  185. package/dist/src/execution/workflow-runtime.js +1 -1
  186. package/dist/src/extensions/code/extension/extension.d.ts +4 -18
  187. package/dist/src/extensions/code/extension/instructions/github.d.ts +3 -0
  188. package/dist/src/extensions/code/extension/instructions/github.js +1 -0
  189. package/dist/src/extensions/code/extension/instructions.md +1 -13
  190. package/dist/src/extensions/code/extension/lib/diagnostics.d.ts +4 -2
  191. package/dist/src/extensions/code/extension/lib/diagnostics.js +3 -3
  192. package/dist/src/extensions/code/extension/lib/github-compat.d.ts +28 -0
  193. package/dist/src/extensions/code/extension/lib/github-compat.js +1 -0
  194. package/dist/src/extensions/code/extension/lib/grep-search.d.ts +3 -13
  195. package/dist/src/extensions/code/extension/lib/grep-search.js +2 -2
  196. package/dist/src/extensions/code/extension/lib/patch.d.ts +8 -2
  197. package/dist/src/extensions/code/extension/lib/patch.js +4 -4
  198. package/dist/src/extensions/code/extension/lib/repository-root.d.ts +3 -4
  199. package/dist/src/extensions/code/extension/lib/repository-root.js +1 -1
  200. package/dist/src/extensions/code/extension/lib/sandbox.d.ts +2 -1
  201. package/dist/src/extensions/code/extension/lib/sandbox.js +1 -1
  202. package/dist/src/extensions/code/extension/lib/tooling.d.ts +4 -4
  203. package/dist/src/extensions/code/extension/lib/tooling.js +7 -7
  204. package/dist/src/extensions/code/extension/lib/workspace-root.d.ts +31 -0
  205. package/dist/src/extensions/code/extension/lib/workspace-root.js +1 -0
  206. package/dist/src/extensions/code/extension/skills/pr.d.ts +6 -0
  207. package/dist/src/extensions/code/extension/skills/pr.js +1 -0
  208. package/dist/src/extensions/code/extension/tools/apply_patch.d.ts +2 -2
  209. package/dist/src/extensions/code/extension/tools/apply_patch.js +2 -2
  210. package/dist/src/extensions/code/extension/tools/gh.d.ts +4 -3
  211. package/dist/src/extensions/code/extension/tools/gh.js +1 -1
  212. package/dist/src/extensions/code/extension/tools/grep.js +1 -1
  213. package/dist/src/extensions/code/tools.d.ts +2 -1
  214. package/dist/src/extensions/code/tools.js +1 -1
  215. package/dist/src/extensions/git/extension/extension.d.ts +12 -0
  216. package/dist/src/extensions/git/extension/extension.js +1 -0
  217. package/dist/src/extensions/git/extension/instructions/github.d.ts +2 -0
  218. package/dist/src/extensions/git/extension/instructions/github.js +1 -0
  219. package/dist/src/extensions/git/extension/lib/gh-tool.d.ts +29 -0
  220. package/dist/src/extensions/git/extension/lib/gh-tool.js +1 -0
  221. package/dist/src/extensions/git/extension/lib/github-guidance.d.ts +3 -0
  222. package/dist/src/extensions/git/extension/lib/github-guidance.js +49 -0
  223. package/dist/src/extensions/{code → git}/extension/lib/github-shell.d.ts +1 -1
  224. package/dist/src/extensions/git/extension/lib/github-shell.js +1 -0
  225. package/dist/src/extensions/git/extension/lib/repository-root.d.ts +5 -0
  226. package/dist/src/extensions/git/extension/lib/repository-root.js +1 -0
  227. package/dist/src/extensions/git/extension/lib/sandbox.d.ts +6 -0
  228. package/dist/src/extensions/git/extension/lib/sandbox.js +1 -0
  229. package/dist/src/extensions/git/extension/lib/shell.d.ts +1 -0
  230. package/dist/src/extensions/git/extension/lib/shell.js +1 -0
  231. package/dist/src/extensions/git/extension/lib/tooling.d.ts +4 -0
  232. package/dist/src/extensions/git/extension/lib/tooling.js +1 -0
  233. package/dist/src/extensions/git/extension/skills/pr.d.ts +5 -0
  234. package/dist/src/extensions/git/extension/skills/pr.js +1 -0
  235. package/dist/src/extensions/git/extension/tools/gh.d.ts +28 -0
  236. package/dist/src/extensions/git/extension/tools/gh.js +1 -0
  237. package/dist/src/extensions/git/tools.d.ts +27 -0
  238. package/dist/src/extensions/git/tools.js +1 -0
  239. package/dist/src/framework/sources/registry.js +1 -1
  240. package/dist/src/harness/action-presentation.d.ts +2 -2
  241. package/dist/src/harness/action-result-helpers.d.ts +10 -2
  242. package/dist/src/harness/action-result-helpers.js +1 -1
  243. package/dist/src/harness/announcements.d.ts +2 -8
  244. package/dist/src/harness/announcements.js +1 -1
  245. package/dist/src/harness/compaction/step.js +1 -1
  246. package/dist/src/harness/coordination.d.ts +11 -11
  247. package/dist/src/harness/coordination.js +1 -1
  248. package/dist/src/harness/current-messages.d.ts +1 -5
  249. package/dist/src/harness/current-messages.js +1 -1
  250. package/dist/src/harness/emission.d.ts +2 -2
  251. package/dist/src/harness/emission.js +1 -1
  252. package/dist/src/harness/execute-call.d.ts +48 -0
  253. package/dist/src/harness/execute-call.js +1 -0
  254. package/dist/src/harness/execute-tool.d.ts +3 -1
  255. package/dist/src/harness/final-output.d.ts +2 -6
  256. package/dist/src/harness/final-output.js +1 -1
  257. package/dist/src/harness/hitl/approvals.d.ts +5 -0
  258. package/dist/src/harness/hitl/approvals.js +1 -1
  259. package/dist/src/harness/hitl/approved-calls.d.ts +3 -2
  260. package/dist/src/harness/hitl/approved-calls.js +1 -1
  261. package/dist/src/harness/hitl/candidates.d.ts +13 -2
  262. package/dist/src/harness/hitl/candidates.js +1 -1
  263. package/dist/src/harness/hitl/coordinator.d.ts +3 -3
  264. package/dist/src/harness/hitl/coordinator.js +1 -1
  265. package/dist/src/harness/hitl/index.d.ts +6 -4
  266. package/dist/src/harness/hitl/index.js +1 -1
  267. package/dist/src/harness/hitl/intake.d.ts +3 -3
  268. package/dist/src/harness/hitl/intake.js +1 -1
  269. package/dist/src/harness/input-extraction.d.ts +4 -1
  270. package/dist/src/harness/input-extraction.js +1 -1
  271. package/dist/src/harness/input-request-resolution.d.ts +15 -0
  272. package/dist/src/harness/input-request-resolution.js +1 -1
  273. package/dist/src/harness/model-call/call.d.ts +4 -6
  274. package/dist/src/harness/model-call/call.js +1 -1
  275. package/dist/src/harness/model-call/errors.d.ts +5 -6
  276. package/dist/src/harness/model-call/errors.js +1 -1
  277. package/dist/src/harness/model-call/recovery.d.ts +4 -3
  278. package/dist/src/harness/model-call/request.d.ts +5 -3
  279. package/dist/src/harness/model-call/request.js +1 -1
  280. package/dist/src/harness/model-call/response.d.ts +2 -1
  281. package/dist/src/harness/model-call/response.js +1 -1
  282. package/dist/src/harness/model-call/run.d.ts +5 -3
  283. package/dist/src/harness/model-call/run.js +1 -1
  284. package/dist/src/harness/model-call/tools.d.ts +12 -21
  285. package/dist/src/harness/model-call/tools.js +1 -1
  286. package/dist/src/harness/model-profile.d.ts +15 -3
  287. package/dist/src/harness/model-profile.js +1 -1
  288. package/dist/src/harness/prompt-cache.d.ts +6 -3
  289. package/dist/src/harness/prompt-cache.js +1 -1
  290. package/dist/src/harness/provider-safety.d.ts +2 -1
  291. package/dist/src/harness/provider-safety.js +1 -1
  292. package/dist/src/harness/provider-tools.d.ts +7 -6
  293. package/dist/src/harness/provider-tools.js +1 -1
  294. package/dist/src/harness/session-machine/commit.js +1 -1
  295. package/dist/src/harness/session-machine/transitions.d.ts +8 -3
  296. package/dist/src/harness/session-machine/transitions.js +1 -1
  297. package/dist/src/harness/step/after-model.js +1 -1
  298. package/dist/src/harness/step/context.js +1 -1
  299. package/dist/src/harness/step-hooks.d.ts +4 -6
  300. package/dist/src/harness/step-hooks.js +1 -1
  301. package/dist/src/harness/tool-call-input-errors.d.ts +2 -2
  302. package/dist/src/harness/tool-call-io.d.ts +3 -0
  303. package/dist/src/harness/tool-call-io.js +1 -1
  304. package/dist/src/harness/tools.d.ts +22 -19
  305. package/dist/src/harness/tools.js +1 -1
  306. package/dist/src/harness/types.d.ts +14 -0
  307. package/dist/src/instrumentation/lifecycle.d.ts +0 -1
  308. package/dist/src/instrumentation/native-events.js +1 -1
  309. package/dist/src/instrumentation/runtime.d.ts +2 -1
  310. package/dist/src/internal/application/compiled-artifacts.js +4 -4
  311. package/dist/src/internal/application/package.d.ts +1 -1
  312. package/dist/src/internal/application/package.js +1 -1
  313. package/dist/src/internal/application/stamped-package-version.d.ts +5 -0
  314. package/dist/src/internal/application/stamped-package-version.js +1 -0
  315. package/dist/src/internal/authored-definition/core.d.ts +3 -0
  316. package/dist/src/internal/authored-definition/core.js +1 -1
  317. package/dist/src/internal/authored-definition/schedule-collection.js +1 -1
  318. package/dist/src/internal/authored-definition/schema-backed.d.ts +2 -2
  319. package/dist/src/internal/authored-definition/schema-backed.js +1 -1
  320. package/dist/src/internal/authored-module.d.ts +2 -1
  321. package/dist/src/internal/authored-module.js +1 -1
  322. package/dist/src/internal/helpers/markdown.js +1 -1
  323. package/dist/src/internal/mcp/skills.js +1 -1
  324. package/dist/src/internal/model-auth/available-models.js +1 -1
  325. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  326. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
  327. package/dist/src/internal/nitro/host/local-schedules-runtime-plugin.d.ts +5 -0
  328. package/dist/src/internal/nitro/host/local-schedules-runtime-plugin.js +1 -0
  329. package/dist/src/internal/nitro/routes/schedule-collection-consumer.d.ts +6 -0
  330. package/dist/src/internal/nitro/routes/schedule-collection-consumer.js +1 -1
  331. package/dist/src/internal/schedules/consumer-route.d.ts +2 -0
  332. package/dist/src/internal/schedules/consumer-route.js +1 -1
  333. package/dist/src/internal/schedules/dev-environment.d.ts +2 -0
  334. package/dist/src/internal/schedules/dev-environment.js +1 -0
  335. package/dist/src/internal/vercel-agent-summary.d.ts +2 -2
  336. package/dist/src/internal/workflow/development-run-unavailable-error.d.ts +15 -0
  337. package/dist/src/internal/workflow/development-run-unavailable-error.js +1 -0
  338. package/dist/src/internal/workflow/development-world-server.js +1 -1
  339. package/dist/src/internal/workflow/vercel-world-defaults.d.ts +1 -1
  340. package/dist/src/internal/workflow/vercel-world-defaults.js +1 -1
  341. package/dist/src/internal/workflow-bundle/workflow-builders.js +1 -1
  342. package/dist/src/protocol/catalog-tools.d.ts +12 -0
  343. package/dist/src/protocol/catalog-tools.js +1 -0
  344. package/dist/src/protocol/message-version.js +1 -1
  345. package/dist/src/protocol/message.d.ts +15 -1
  346. package/dist/src/protocol/message.js +1 -1
  347. package/dist/src/protocol/remote-agent-protocol.d.ts +2 -0
  348. package/dist/src/protocol/remote-agent-protocol.js +1 -1
  349. package/dist/src/protocol/reply-tool.d.ts +2 -0
  350. package/dist/src/protocol/reply-tool.js +1 -0
  351. package/dist/src/protocol/runtime-tools.d.ts +6 -0
  352. package/dist/src/protocol/runtime-tools.js +1 -0
  353. package/dist/src/protocol/session-projection.js +1 -1
  354. package/dist/src/protocol/task-tools.d.ts +4 -4
  355. package/dist/src/protocol/task-tools.js +1 -1
  356. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +1 -1
  357. package/dist/src/public/channels/index.d.ts +1 -1
  358. package/dist/src/public/channels/index.js +1 -1
  359. package/dist/src/public/channels/linear/defaults.js +2 -2
  360. package/dist/src/public/channels/slack/action-status.d.ts +0 -9
  361. package/dist/src/public/channels/slack/action-status.js +1 -1
  362. package/dist/src/public/channels/slack/defaults.js +2 -2
  363. package/dist/src/public/channels/slack/task-card.d.ts +1 -1
  364. package/dist/src/public/context/index.d.ts +1 -1
  365. package/dist/src/public/definitions/callback-context.d.ts +1 -1
  366. package/dist/src/public/definitions/channel.d.ts +1 -0
  367. package/dist/src/public/definitions/channel.js +1 -1
  368. package/dist/src/public/definitions/connections/mcp.d.ts +4 -4
  369. package/dist/src/public/definitions/connections/openapi.d.ts +6 -7
  370. package/dist/src/public/definitions/remote-agent.d.ts +6 -3
  371. package/dist/src/public/definitions/workspace-agent.d.ts +6 -3
  372. package/dist/src/public/experimental/schedules/index.d.ts +1 -1
  373. package/dist/src/public/models/openai/chatgpt/model.js +1 -1
  374. package/dist/src/public/models/openai/chatgpt/transport.js +1 -1
  375. package/dist/src/public/schedules/providers/in-memory.js +1 -1
  376. package/dist/src/public/schedules/providers/vercel.js +1 -1
  377. package/dist/src/public/schedules/subscription.d.ts +36 -16
  378. package/dist/src/public/tanstack/index.d.ts +40 -0
  379. package/dist/src/public/tanstack/index.js +1 -0
  380. package/dist/src/public/tools/web-search.d.ts +1 -1
  381. package/dist/src/runtime/agent/bootstrap.d.ts +2 -1
  382. package/dist/src/runtime/agent/bootstrap.js +1 -1
  383. package/dist/src/runtime/agent/mock-model-adapter.js +2 -2
  384. package/dist/src/runtime/agent/mock-model-fixtures.js +2 -2
  385. package/dist/src/runtime/agent/mock-model-skill-selection.d.ts +2 -0
  386. package/dist/src/runtime/agent/mock-model-skill-selection.js +2 -2
  387. package/dist/src/runtime/agent/mock-structured-output.d.ts +1 -1
  388. package/dist/src/runtime/agent/resolve-model.js +1 -1
  389. package/dist/src/runtime/connections/mcp-client.js +1 -1
  390. package/dist/src/runtime/connections/registry.js +1 -1
  391. package/dist/src/runtime/connections/scoped-authorization.js +1 -1
  392. package/dist/src/runtime/connections/tool-result.d.ts +2 -2
  393. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  394. package/dist/src/runtime/resolve-agent.js +1 -1
  395. package/dist/src/runtime/resolve-tool.js +1 -1
  396. package/dist/src/runtime/schedules/collection-client.d.ts +12 -3
  397. package/dist/src/runtime/schedules/collection-client.js +1 -1
  398. package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +2 -2
  399. package/dist/src/runtime/subagents/dynamic-remote-agent-config.d.ts +2 -1
  400. package/dist/src/runtime/subagents/dynamic-remote-agent-config.js +1 -1
  401. package/dist/src/runtime/subagents/registry.d.ts +2 -1
  402. package/dist/src/runtime/subagents/registry.js +1 -1
  403. package/dist/src/runtime/tools/registry.d.ts +2 -0
  404. package/dist/src/runtime/tools/registry.js +1 -1
  405. package/dist/src/runtime/types.d.ts +3 -3
  406. package/dist/src/setup/connection-connector.js +1 -2
  407. package/dist/src/setup/flows/model-login.js +1 -1
  408. package/dist/src/setup/index.d.ts +1 -1
  409. package/dist/src/setup/index.js +1 -1
  410. package/dist/src/setup/integrations/slack/setup.d.ts +23 -3
  411. package/dist/src/setup/integrations/slack/setup.js +1 -1
  412. package/dist/src/setup/integrations/web/framework.d.ts +8 -0
  413. package/dist/src/setup/integrations/web/framework.js +1 -0
  414. package/dist/src/setup/integrations/web/hosting.d.ts +43 -0
  415. package/dist/src/setup/integrations/web/hosting.js +15 -0
  416. package/dist/src/setup/integrations/web/setup.d.ts +6 -10
  417. package/dist/src/setup/integrations/web/setup.js +23 -17
  418. package/dist/src/setup/primitives/process-output.d.ts +5 -0
  419. package/dist/src/setup/primitives/process-output.js +2 -1
  420. package/dist/src/setup/scaffold/create/project.js +1 -1
  421. package/dist/src/setup/scaffold/create/web-template.d.ts +7 -3
  422. package/dist/src/setup/scaffold/create/web-template.js +40 -3
  423. package/dist/src/setup/scaffold/update/channels.js +1 -1
  424. package/dist/src/setup/scaffold/update/update-slack-channel.d.ts +17 -0
  425. package/dist/src/setup/scaffold/update/update-slack-channel.js +1 -1
  426. package/dist/src/setup/slack-connect-create.d.ts +10 -2
  427. package/dist/src/setup/slack-connect-create.js +1 -1
  428. package/dist/src/setup/slack-connect-lifecycle.d.ts +92 -44
  429. package/dist/src/setup/slack-connect-lifecycle.js +1 -1
  430. package/dist/src/setup/slack-connect.d.ts +30 -11
  431. package/dist/src/setup/slack-connect.js +1 -1
  432. package/dist/src/setup/slack-setup-plan.d.ts +72 -0
  433. package/dist/src/setup/slack-setup-plan.js +1 -0
  434. package/dist/src/setup/slackbot.d.ts +75 -35
  435. package/dist/src/setup/slackbot.js +2 -1
  436. package/dist/src/setup/vercel-project-framework.js +1 -1
  437. package/dist/src/shared/action-label.d.ts +10 -0
  438. package/dist/src/shared/action-label.js +1 -0
  439. package/dist/src/shared/action-request-name.d.ts +3 -1
  440. package/dist/src/shared/action-request-name.js +1 -1
  441. package/dist/src/shared/action-types.d.ts +7 -8
  442. package/dist/src/shared/action-types.js +1 -1
  443. package/dist/src/shared/agent-definition.d.ts +36 -3
  444. package/dist/src/shared/agent-definition.js +1 -1
  445. package/dist/src/shared/chatgpt-model.d.ts +8 -0
  446. package/dist/src/shared/chatgpt-model.js +1 -1
  447. package/dist/src/shared/development-env-files.d.ts +4 -0
  448. package/dist/src/shared/development-env-files.js +1 -0
  449. package/dist/src/shared/input.d.ts +0 -1
  450. package/dist/src/shared/map-with-concurrency.d.ts +2 -0
  451. package/dist/src/shared/map-with-concurrency.js +1 -0
  452. package/dist/src/shared/skill-definition.d.ts +6 -0
  453. package/dist/src/shared/skill-package.d.ts +1 -0
  454. package/dist/src/shared/skill-package.js +1 -1
  455. package/dist/src/shared/web-search.d.ts +15 -2
  456. package/dist/src/shared/web-search.js +1 -1
  457. package/dist/src/subagents/callback-route.js +1 -1
  458. package/dist/src/svelte/index.js +1 -1
  459. package/dist/src/svelte/use-eve-agent.js +1 -1
  460. package/dist/src/tool-stubs/execute.d.ts +0 -3
  461. package/dist/src/tool-stubs/execute.js +1 -1
  462. package/dist/src/tool-stubs/rules.js +1 -1
  463. package/dist/src/tool-stubs/validate-targets.js +1 -1
  464. package/dist/src/tools/behavior.d.ts +3 -6
  465. package/dist/src/tools/definition.d.ts +5 -0
  466. package/dist/src/tools/dynamic.d.ts +5 -2
  467. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  468. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  469. package/dist/src/tools/provided/task-cancel.d.ts +1 -1
  470. package/dist/src/tools/provided/task-wait.d.ts +1 -1
  471. package/dist/src/tools/provided/web-search.d.ts +20 -7
  472. package/dist/src/tools/provided/web-search.js +1 -1
  473. package/dist/src/tools/schema.d.ts +5 -0
  474. package/dist/src/tools/schema.js +1 -1
  475. package/dist/src/{runtime/connections/tool-signature.d.ts → tools/signature.d.ts} +2 -2
  476. package/dist/src/tools/workflow-definition.d.ts +1 -1
  477. package/dist/src/tracing/agent-approval-instrumentation.js +1 -1
  478. package/dist/src/tracing/agent-otel-provider.js +2 -2
  479. package/dist/src/tracing/agent-otel-runtime-context.d.ts +1 -0
  480. package/dist/src/tracing/agent-otel-runtime-context.js +1 -1
  481. package/dist/src/tracing/agent-otel-turn-state.d.ts +6 -0
  482. package/dist/src/tracing/agent-otel-turn-state.js +1 -0
  483. package/dist/src/tracing/agent-tool-instrumentation.js +1 -1
  484. package/dist/src/tracing/agent-trace-context-codec.js +1 -1
  485. package/dist/src/tracing/agent-trace-state.d.ts +4 -1
  486. package/dist/src/vue/index.js +1 -1
  487. package/dist/src/vue/use-eve-agent.js +1 -1
  488. package/docs/agent-config.md +39 -8
  489. package/docs/channels/chat-sdk.mdx +1 -1
  490. package/docs/channels/custom.mdx +26 -0
  491. package/docs/channels/eve.mdx +8 -5
  492. package/docs/channels/slack.mdx +32 -82
  493. package/docs/code-extension.mdx +28 -7
  494. package/docs/concepts/built-in-tools.md +60 -43
  495. package/docs/concepts/context-control.md +1 -1
  496. package/docs/concepts/execution-model-and-durability.mdx +101 -1
  497. package/docs/concepts/project-structure.mdx +2 -2
  498. package/docs/concepts/sessions-runs-and-streaming.md +40 -38
  499. package/docs/connections/mcp.mdx +5 -5
  500. package/docs/connections/openapi.mdx +1 -1
  501. package/docs/connections/overview.mdx +4 -2
  502. package/docs/evals/assertions.mdx +5 -3
  503. package/docs/evals/reporters.mdx +3 -1
  504. package/docs/evals/tool-stubs.mdx +3 -1
  505. package/docs/extensions.md +2 -0
  506. package/docs/guides/client/messages.mdx +10 -1
  507. package/docs/guides/deployment/overview.md +2 -2
  508. package/docs/guides/dev-tui.md +4 -2
  509. package/docs/guides/dynamic-capabilities.md +14 -4
  510. package/docs/guides/frontend/meta.json +9 -1
  511. package/docs/guides/frontend/nextjs.mdx +1 -1
  512. package/docs/guides/frontend/overview.mdx +10 -9
  513. package/docs/guides/frontend/tanstack.mdx +201 -0
  514. package/docs/guides/remote-agents.md +10 -3
  515. package/docs/guides/session-context.md +1 -0
  516. package/docs/install-integrations.mdx +1 -1
  517. package/docs/instructions.mdx +6 -6
  518. package/docs/reference/cli.md +2 -2
  519. package/docs/reference/typescript-api.md +4 -4
  520. package/docs/skills.mdx +19 -4
  521. package/docs/subagents/index.mdx +5 -3
  522. package/docs/tools/human-in-the-loop.md +2 -0
  523. package/docs/tools/overview.mdx +22 -1
  524. package/docs/tools/tasks-upgrade.md +1 -1
  525. package/docs/tools/tasks.md +32 -32
  526. package/docs/tools/workflows.mdx +6 -6
  527. package/docs/tutorial/ship-it.mdx +1 -1
  528. package/docs/tutorial/team-playbooks.mdx +2 -2
  529. package/package.json +28 -6
  530. package/dist/src/execution/connection-announcement.d.ts +0 -7
  531. package/dist/src/execution/connection-announcement.js +0 -4
  532. package/dist/src/execution/tools/connection-approval.d.ts +0 -25
  533. package/dist/src/execution/tools/connection-approval.js +0 -1
  534. package/dist/src/execution/tools/connection-search-rank.d.ts +0 -21
  535. package/dist/src/execution/tools/connection-search-rank.js +0 -1
  536. package/dist/src/execution/tools/connection-target.d.ts +0 -18
  537. package/dist/src/execution/tools/connection-target.js +0 -1
  538. package/dist/src/execution/tools/connection-tools.d.ts +0 -4
  539. package/dist/src/execution/tools/connection-tools.js +0 -2
  540. package/dist/src/execution/tools/load-skill.d.ts +0 -10
  541. package/dist/src/execution/tools/load-skill.js +0 -1
  542. package/dist/src/extensions/code/extension/lib/github-shell.js +0 -1
  543. package/dist/src/extensions/code/extension/skills/pr/SKILL.md +0 -53
  544. package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.d.ts +0 -2
  545. package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.js +0 -1
  546. package/dist/src/harness/advertised-tools.d.ts +0 -26
  547. package/dist/src/harness/advertised-tools.js +0 -1
  548. package/dist/src/harness/nested-actions.d.ts +0 -23
  549. package/dist/src/harness/nested-actions.js +0 -1
  550. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cli-config.js +0 -1
  551. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/cred-storage.js +0 -1
  552. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/index.js +0 -1
  553. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.js +0 -1
  554. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/schema.zod.js +0 -1
  555. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.0/node_modules/@vercel/cli-config/dist/types.js +0 -1
  556. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/envpath.js +0 -1
  557. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errors.js +0 -2
  558. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/errutils.js +0 -1
  559. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/exec.js +0 -1
  560. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/fsutils.js +0 -1
  561. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/index.js +0 -1
  562. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/lookup.js +0 -1
  563. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.0/node_modules/@vercel/cli-exec/dist/safety.js +0 -1
  564. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/auth-errors.js +0 -1
  565. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +0 -1
  566. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-context.js +0 -1
  567. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +0 -1
  568. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +0 -2
  569. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/index.js +0 -1
  570. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/oauth.js +0 -1
  571. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-error.js +0 -1
  572. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-io.js +0 -1
  573. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token-util.js +0 -2
  574. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/token.js +0 -1
  575. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +0 -1
  576. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.0/node_modules/@vercel/oidc/dist/version.js +0 -1
  577. package/dist/src/node_modules/.pnpm/@vercel_queue@0.5.1_@opentelemetry_api@1.9.1/node_modules/@vercel/queue/dist/index.js +0 -36
  578. package/dist/src/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +0 -1
  579. package/dist/src/node_modules/.pnpm/brace-expansion@5.0.12/node_modules/brace-expansion/dist/esm/index.js +0 -1
  580. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +0 -1
  581. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +0 -1
  582. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +0 -1
  583. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +0 -1
  584. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +0 -1
  585. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -1
  586. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +0 -1
  587. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +0 -1
  588. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +0 -2
  589. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +0 -1
  590. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +0 -1
  591. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +0 -1
  592. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +0 -1
  593. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +0 -1
  594. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +0 -1
  595. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +0 -1
  596. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +0 -1
  597. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +0 -1
  598. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +0 -1
  599. package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +0 -1
  600. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +0 -1
  601. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +0 -1
  602. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +0 -1
  603. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +0 -1
  604. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +0 -1
  605. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +0 -1
  606. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +0 -1
  607. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +0 -1
  608. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +0 -1
  609. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +0 -1
  610. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +0 -1
  611. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +0 -1
  612. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +0 -1
  613. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +0 -1
  614. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +0 -1
  615. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +0 -1
  616. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +0 -1
  617. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +0 -1
  618. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +0 -1
  619. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +0 -1
  620. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +0 -1
  621. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +0 -1
  622. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +0 -1
  623. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +0 -1
  624. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +0 -1
  625. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +0 -1
  626. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +0 -1
  627. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +0 -1
  628. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +0 -1
  629. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +0 -1
  630. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +0 -1
  631. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +0 -1
  632. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +0 -1
  633. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +0 -1
  634. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +0 -1
  635. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +0 -1
  636. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +0 -1
  637. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +0 -1
  638. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +0 -1
  639. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +0 -1
  640. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +0 -1
  641. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +0 -1
  642. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +0 -1
  643. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +0 -1
  644. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +0 -1
  645. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +0 -1
  646. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +0 -1
  647. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +0 -1
  648. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +0 -1
  649. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +0 -1
  650. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +0 -1
  651. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +0 -1
  652. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +0 -1
  653. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +0 -1
  654. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +0 -1
  655. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +0 -1
  656. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +0 -1
  657. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +0 -1
  658. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +0 -1
  659. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +0 -1
  660. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +0 -1
  661. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +0 -1
  662. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +0 -1
  663. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +0 -1
  664. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +0 -1
  665. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +0 -1
  666. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +0 -1
  667. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +0 -1
  668. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +0 -1
  669. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +0 -1
  670. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +0 -1
  671. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +0 -1
  672. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +0 -1
  673. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +0 -1
  674. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +0 -1
  675. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +0 -1
  676. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +0 -1
  677. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +0 -1
  678. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +0 -1
  679. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +0 -1
  680. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +0 -1
  681. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +0 -1
  682. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +0 -1
  683. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +0 -1
  684. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +0 -1
  685. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +0 -1
  686. package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +0 -1
  687. package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +0 -1
  688. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -1
  689. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/ast.js +0 -1
  690. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/brace-expressions.js +0 -1
  691. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/escape.js +0 -1
  692. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/index.js +0 -1
  693. package/dist/src/node_modules/.pnpm/minimatch@10.2.6/node_modules/minimatch/dist/esm/unescape.js +0 -1
  694. package/dist/src/node_modules/.pnpm/mixpart@0.0.6/node_modules/mixpart/dist/index.js +0 -7
  695. package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +0 -1
  696. package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +0 -1
  697. package/dist/src/node_modules/.pnpm/os-paths@4.4.0/node_modules/os-paths/src/lib/index.js +0 -1
  698. package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +0 -1
  699. package/dist/src/node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js +0 -1
  700. package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +0 -1
  701. package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +0 -1
  702. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +0 -1
  703. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +0 -1
  704. package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +0 -2
  705. package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +0 -1
  706. package/dist/src/node_modules/.pnpm/xdg-app-paths@5.5.1/node_modules/xdg-app-paths/src/lib/index.js +0 -1
  707. package/dist/src/node_modules/.pnpm/xdg-portable@7.3.0/node_modules/xdg-portable/src/lib/index.js +0 -1
  708. package/dist/src/public/tools/load-skill.d.ts +0 -3
  709. package/dist/src/public/tools/load-skill.js +0 -1
  710. package/dist/src/runtime/skills/fragment-context.d.ts +0 -4
  711. package/dist/src/runtime/skills/fragment-context.js +0 -1
  712. package/dist/src/tools/framework/connection-tools.d.ts +0 -3
  713. package/dist/src/tools/framework/connection-tools.js +0 -1
  714. package/dist/src/tools/provided/load-skill.d.ts +0 -2
  715. package/dist/src/tools/provided/load-skill.js +0 -1
  716. /package/dist/src/extensions/{code → git}/extension/lib/github-shell-schema.d.ts +0 -0
  717. /package/dist/src/extensions/{code → git}/extension/lib/github-shell-schema.js +0 -0
  718. /package/dist/src/extensions/{code → git}/extension/lib/signed-commit.d.ts +0 -0
  719. /package/dist/src/extensions/{code → git}/extension/lib/signed-commit.js +0 -0
  720. /package/dist/src/{runtime/connections/tool-signature.js → tools/signature.js} +0 -0
@@ -1 +1 @@
1
- import{createHash}from"node:crypto";import{createLogger}from"#internal/logging.js";import{MAX_SKILL_FILE_BYTES,SKILL_ENTRY_FILE_NAME,SkillReadError,comparePaths,isSkillEntryFileName}from"#channel/skill-files.js";import{z}from"#compiled/zod/index.js";import{parseFrontmatter}from"#internal/helpers/frontmatter.js";import{ProtocolError,ProtocolErrorCode,ResourceNotFoundError}from"#compiled/@modelcontextprotocol/server/index.js";import{MCP_LIST_CACHE_HINT}from"#internal/mcp/streamable-http-server.js";import{Buffer}from"node:buffer";const MCP_SKILLS_EXTENSION=`io.modelcontextprotocol/skills`,MCP_SKILL_MAX_RESOURCES=512,MCP_SKILL_MAX_TOTAL_BYTES=16777216,SKILL_URI_PREFIX=`skill://`,log=createLogger(`mcp.skills`),warned=new Set;function warnOnce(e){warned.has(e)||(warned.add(e),log.warn(e))}function createMcpSkillsFeature(e){return{capabilities:{resources:{listChanged:!1},extensions:{[MCP_SKILLS_EXTENSION]:{directoryRead:!0}}},register(t){registerSkillHandlers(t,e.files,createSkillCatalog(e))}}}const snapshotCache=new WeakMap;function createSkillCatalog({files:e,skills:t}){let n=snapshotCache.get(t)??new Map;snapshotCache.set(t,n);let snapshot=async r=>{let i=t.find(e=>e.name===r);if(i===void 0)return;let a=n.get(r);return a===void 0&&(a=snapshotSkill(e,i),n.set(r,a),a.catch(()=>n.delete(r))),await a};return{async served(){let e=t.map(e=>e.name).sort(comparePaths),n=[];for(let t of e){let e=await snapshot(t);e!==void 0&&n.push(e)}return n},skill:snapshot}}function registerSkillHandlers(e,t,n){let r=e.server;r.setRequestHandler(`skills/list`,{params:z.looseObject({cursor:z.string().optional()})},async e=>(rejectCursor(e.cursor),{skills:(await n.served()).map(e=>e.entry),...MCP_LIST_CACHE_HINT})),r.setRequestHandler(`skills/get`,{params:z.looseObject({uri:z.string()})},async e=>{let t=parseSkillUri(e.uri),r=t?.path===SKILL_ENTRY_FILE_NAME?await n.skill(t.skill):void 0;if(r===void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown skill: ${e.uri}`,{uri:e.uri});return{skill:r.entry,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/directory/read`,{params:z.looseObject({uri:z.string(),cursor:z.string().optional()})},async e=>{rejectCursor(e.cursor);let t=parseSkillUri(e.uri),r=t===void 0?void 0:await n.skill(t.skill),i=r===void 0?void 0:listDirectory(r,t?.path);if(i===void 0)throw new ResourceNotFoundError(e.uri);return{resources:i,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/list`,async e=>(rejectCursor(e.params?.cursor),{resources:(await n.served()).map(e=>({uri:e.entry.uri,name:e.name,description:e.description,mimeType:mimeTypeFor(SKILL_ENTRY_FILE_NAME),size:e.document.bytes.byteLength}))})),r.setRequestHandler(`resources/templates/list`,async e=>(rejectCursor(e.params?.cursor),{resourceTemplates:[]})),r.setRequestHandler(`resources/read`,async e=>{let r=e.params?.uri;if(typeof r!=`string`)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`params.uri must be a string.`);let i=parseSkillUri(r),a=i?.path===void 0?void 0:await n.skill(i.skill),o=i?.path===void 0?void 0:a?.files.get(i.path);if(a===void 0||i?.path===void 0||o===void 0)throw new ResourceNotFoundError(r);let s=i.path===SKILL_ENTRY_FILE_NAME?a.document:toServedFile(await readListedFile(t,a.name,i.path,r));return{contents:[s.text===void 0?{uri:r,mimeType:o.mimeType,blob:Buffer.from(s.bytes).toString(`base64`)}:{uri:r,mimeType:o.mimeType,text:s.text}]}})}async function readListedFile(e,t,n,r){try{return await e.readFile(t,n)}catch(e){throw e instanceof SkillReadError&&e.code===`unknown-file`?new ResourceNotFoundError(r):e}}function toServedFile(e){let t=decodeText(e);return t===void 0?{bytes:e}:{bytes:e,text:t}}function decodeText(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}).decode(e)}catch{return}}function servedPaths(e,t,n){if(!isSafeSegment(e))return`its name is not a valid skill:// segment`;let r=n.find(e=>!e.split(`/`).every(isSafeSegment));if(r!==void 0)return`its directory "${r}" is not a valid skill:// path`;if(t.length>512)return`it has more than 512 files`;let i=new Map,a=0;for(let{path:e,size:n}of t){if(!e.split(`/`).every(isSafeSegment))return`its file "${e}" is not a valid skill:// path`;if(n>MAX_SKILL_FILE_BYTES)return`its file "${e}" is over ${MAX_SKILL_FILE_BYTES} bytes`;a+=n;let t=!e.includes(`/`)&&isSkillEntryFileName(e)?SKILL_ENTRY_FILE_NAME:e;if(i.has(t))return`it has more than one ${SKILL_ENTRY_FILE_NAME}`;i.set(t,e)}return i.has(SKILL_ENTRY_FILE_NAME)?a>16777216?`its files total more than ${MCP_SKILL_MAX_TOTAL_BYTES} bytes`:i:`it has no ${SKILL_ENTRY_FILE_NAME}`}async function snapshotSkill(e,t){let unserved=e=>{warnOnce(`mcpChannel does not serve the skill "${t.name}": ${e}.`)},[n,r]=await Promise.all([e.listFiles(t.name),e.listDirectories(t.name)]),i=servedPaths(t.name,n,r);if(typeof i==`string`)return unserved(i);let a=[...i.entries()].sort(([e],[t])=>comparePaths(e,t)),o=await mapWithConcurrency(a,8,async([,n])=>{try{return toServedFile(await e.readFile(t.name,n))}catch(e){if(e instanceof SkillReadError)return e.message;throw e}}),s=o.find(e=>typeof e==`string`);if(s!==void 0)return unserved(`a file did not read (${s})`);let c=o,l=a.findIndex(([e])=>e===SKILL_ENTRY_FILE_NAME),u=entryDocument(t,c[l]);if(u===void 0)return unserved(`its ${SKILL_ENTRY_FILE_NAME} is not UTF-8 text with frontmatter that meets the Agent Skills format`);if(c[l]=u,c.reduce((e,t)=>e+t.bytes.byteLength,0)>16777216||c.some(e=>e.bytes.byteLength>MAX_SKILL_FILE_BYTES))return unserved(`its files as read are over the size limits`);let d=new Map,f=[];for(let[e,[n]]of a.entries()){let r=c[e];d.set(n,{mimeType:servedMimeType(n,r),size:r.bytes.byteLength}),f.push({uri:skillFileUri(t.name,n),digest:`sha256:${createHash(`sha256`).update(r.bytes).digest(`hex`)}`,size:r.bytes.byteLength})}return{name:t.name,description:u.description,document:u,entry:{uri:skillFileUri(t.name,SKILL_ENTRY_FILE_NAME),frontmatter:u.frontmatter,resources:f},files:d,directories:new Set(r)}}function entryDocument(e,t){if(t.text===void 0)return;let n=parseFrontmatterJson(t.text);if(n===void 0)return;if(n.present&&n.data.name===e.name&&typeof n.data.description==`string`)return conforming({bytes:t.bytes,description:n.data.description,frontmatter:n.data,text:t.text});let r=typeof n.data.description==`string`?n.data.description:e.description,{name:i,description:a,...o}=n.data,s=`---\n${renderFrontmatter({name:e.name,description:r,...o})}---\n${n.content}`,c=parseFrontmatterJson(s);if(c!==void 0&&c.data.name===e.name)return conforming({bytes:new TextEncoder().encode(s),description:r,frontmatter:c.data,text:s})}const SKILL_NAME_PATTERN=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function conforming(e){let{name:t,description:n}=e.frontmatter;if(typeof t==`string`&&typeof n==`string`&&!(Array.from(t).length>64||!SKILL_NAME_PATTERN.test(t))&&!(n.trim().length===0||Array.from(n).length>1024))return e}function renderFrontmatter(e){return Object.entries(e).map(([e,t])=>`${/^[A-Za-z_][A-Za-z0-9_-]*$/u.test(e)?e:JSON.stringify(e)}: ${JSON.stringify(t)}\n`).join(``)}function parseFrontmatterJson(e){let t,n;try{n=parseFrontmatter(e),t=JSON.parse(JSON.stringify(n?.data??{}))}catch{return}if(typeof t==`object`&&t&&!Array.isArray(t))return{content:n?.content??e,data:t,present:n!==void 0}}function listDirectory(e,t){if(t!==void 0&&!e.directories.has(t))return;let n=t===void 0?``:`${t}/`,r=[],add=(t,i)=>{let a=t.slice(n.length);t.startsWith(n)&&!a.includes(`/`)&&r.push({uri:skillFileUri(e.name,t),name:a,mimeType:i})};for(let[t,n]of e.files)add(t,n.mimeType);for(let t of e.directories)add(t,`inode/directory`);return r.sort((e,t)=>comparePaths(e.name,t.name))}function parseSkillUri(e){if(!e.startsWith(SKILL_URI_PREFIX))return;let t=e.slice(8);if(/[?#\\\s]/u.test(t))return;let n=[];for(let e of t.split(`/`)){let t;try{t=decodeURIComponent(e)}catch{return}if(!isSafeSegment(t))return;n.push(t)}let[r,...i]=n;if(r!==void 0)return i.length===0?{skill:r}:{skill:r,path:i.join(`/`)}}function isSafeSegment(e){return e.length>0&&e!==`.`&&e!==`..`&&!e.includes(`/`)&&!e.includes(`\\`)&&!e.includes(`\0`)}function skillFileUri(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`${SKILL_URI_PREFIX}${encodeURIComponent(e)}/${n}`}function rejectCursor(e){if(e!==void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown cursor.`)}const MIME_TYPES=new Map([[`css`,`text/css`],[`csv`,`text/csv`],[`gif`,`image/gif`],[`htm`,`text/html`],[`html`,`text/html`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`js`,`text/javascript`],[`json`,`application/json`],[`md`,`text/markdown`],[`mjs`,`text/javascript`],[`pdf`,`application/pdf`],[`png`,`image/png`],[`py`,`text/x-python`],[`sh`,`text/x-shellscript`],[`svg`,`image/svg+xml`],[`ts`,`text/typescript`],[`txt`,`text/plain`],[`webp`,`image/webp`],[`xml`,`application/xml`],[`yaml`,`application/yaml`],[`yml`,`application/yaml`]]);function servedMimeType(e,t){let n=e.slice(e.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return(r<=0?void 0:MIME_TYPES.get(n.slice(r+1).toLowerCase()))??(t.text===void 0?`application/octet-stream`:`text/plain`)}function mimeTypeFor(e){return servedMimeType(e,{bytes:new Uint8Array})}async function mapWithConcurrency(e,t,n){let r=Array.from({length:e.length}),i=0;return await Promise.all(Array.from({length:Math.min(t,e.length)},async()=>{for(;i<e.length;){let t=i;i+=1,r[t]=await n(e[t])}})),r}export{MCP_SKILLS_EXTENSION,MCP_SKILL_MAX_RESOURCES,MCP_SKILL_MAX_TOTAL_BYTES,createMcpSkillsFeature,parseSkillUri};
1
+ import{createHash}from"node:crypto";import{createLogger}from"#internal/logging.js";import{MAX_SKILL_FILE_BYTES,SKILL_ENTRY_FILE_NAME,SkillReadError,comparePaths,isSkillEntryFileName}from"#channel/skill-files.js";import{z}from"#compiled/zod/index.js";import{parseFrontmatter}from"#internal/helpers/frontmatter.js";import{ProtocolError,ProtocolErrorCode,ResourceNotFoundError}from"#compiled/@modelcontextprotocol/server/index.js";import{MCP_LIST_CACHE_HINT}from"#internal/mcp/streamable-http-server.js";import{Buffer}from"node:buffer";import{mapWithConcurrency}from"#shared/map-with-concurrency.js";const MCP_SKILLS_EXTENSION=`io.modelcontextprotocol/skills`,MCP_SKILL_MAX_RESOURCES=512,MCP_SKILL_MAX_TOTAL_BYTES=16777216,SKILL_URI_PREFIX=`skill://`,log=createLogger(`mcp.skills`),warned=new Set;function warnOnce(e){warned.has(e)||(warned.add(e),log.warn(e))}function createMcpSkillsFeature(e){return{capabilities:{resources:{listChanged:!1},extensions:{[MCP_SKILLS_EXTENSION]:{directoryRead:!0}}},register(t){registerSkillHandlers(t,e.files,createSkillCatalog(e))}}}const snapshotCache=new WeakMap;function createSkillCatalog({files:e,skills:t}){let n=snapshotCache.get(t)??new Map;snapshotCache.set(t,n);let snapshot=async r=>{let i=t.find(e=>e.name===r);if(i===void 0)return;let a=n.get(r);return a===void 0&&(a=snapshotSkill(e,i),n.set(r,a),a.catch(()=>n.delete(r))),await a};return{async served(){let e=t.map(e=>e.name).sort(comparePaths),n=[];for(let t of e){let e=await snapshot(t);e!==void 0&&n.push(e)}return n},skill:snapshot}}function registerSkillHandlers(e,t,n){let r=e.server;r.setRequestHandler(`skills/list`,{params:z.looseObject({cursor:z.string().optional()})},async e=>(rejectCursor(e.cursor),{skills:(await n.served()).map(e=>e.entry),...MCP_LIST_CACHE_HINT})),r.setRequestHandler(`skills/get`,{params:z.looseObject({uri:z.string()})},async e=>{let t=parseSkillUri(e.uri),r=t?.path===SKILL_ENTRY_FILE_NAME?await n.skill(t.skill):void 0;if(r===void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown skill: ${e.uri}`,{uri:e.uri});return{skill:r.entry,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/directory/read`,{params:z.looseObject({uri:z.string(),cursor:z.string().optional()})},async e=>{rejectCursor(e.cursor);let t=parseSkillUri(e.uri),r=t===void 0?void 0:await n.skill(t.skill),i=r===void 0?void 0:listDirectory(r,t?.path);if(i===void 0)throw new ResourceNotFoundError(e.uri);return{resources:i,...MCP_LIST_CACHE_HINT}}),r.setRequestHandler(`resources/list`,async e=>(rejectCursor(e.params?.cursor),{resources:(await n.served()).map(e=>({uri:e.entry.uri,name:e.name,description:e.description,mimeType:mimeTypeFor(SKILL_ENTRY_FILE_NAME),size:e.document.bytes.byteLength}))})),r.setRequestHandler(`resources/templates/list`,async e=>(rejectCursor(e.params?.cursor),{resourceTemplates:[]})),r.setRequestHandler(`resources/read`,async e=>{let r=e.params?.uri;if(typeof r!=`string`)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`params.uri must be a string.`);let i=parseSkillUri(r),a=i?.path===void 0?void 0:await n.skill(i.skill),o=i?.path===void 0?void 0:a?.files.get(i.path);if(a===void 0||i?.path===void 0||o===void 0)throw new ResourceNotFoundError(r);let s=i.path===SKILL_ENTRY_FILE_NAME?a.document:toServedFile(await readListedFile(t,a.name,i.path,r));return{contents:[s.text===void 0?{uri:r,mimeType:o.mimeType,blob:Buffer.from(s.bytes).toString(`base64`)}:{uri:r,mimeType:o.mimeType,text:s.text}]}})}async function readListedFile(e,t,n,r){try{return await e.readFile(t,n)}catch(e){throw e instanceof SkillReadError&&e.code===`unknown-file`?new ResourceNotFoundError(r):e}}function toServedFile(e){let t=decodeText(e);return t===void 0?{bytes:e}:{bytes:e,text:t}}function decodeText(e){if(!e.includes(0))try{return new TextDecoder(`utf-8`,{fatal:!0,ignoreBOM:!0}).decode(e)}catch{return}}function servedPaths(e,t,n){if(!isSafeSegment(e))return`its name is not a valid skill:// segment`;let r=n.find(e=>!e.split(`/`).every(isSafeSegment));if(r!==void 0)return`its directory "${r}" is not a valid skill:// path`;if(t.length>512)return`it has more than 512 files`;let i=new Map,a=0;for(let{path:e,size:n}of t){if(!e.split(`/`).every(isSafeSegment))return`its file "${e}" is not a valid skill:// path`;if(n>MAX_SKILL_FILE_BYTES)return`its file "${e}" is over ${MAX_SKILL_FILE_BYTES} bytes`;a+=n;let t=!e.includes(`/`)&&isSkillEntryFileName(e)?SKILL_ENTRY_FILE_NAME:e;if(i.has(t))return`it has more than one ${SKILL_ENTRY_FILE_NAME}`;i.set(t,e)}return i.has(SKILL_ENTRY_FILE_NAME)?a>16777216?`its files total more than ${MCP_SKILL_MAX_TOTAL_BYTES} bytes`:i:`it has no ${SKILL_ENTRY_FILE_NAME}`}async function snapshotSkill(e,t){let unserved=e=>{warnOnce(`mcpChannel does not serve the skill "${t.name}": ${e}.`)},[n,r]=await Promise.all([e.listFiles(t.name),e.listDirectories(t.name)]),i=servedPaths(t.name,n,r);if(typeof i==`string`)return unserved(i);let a=[...i.entries()].sort(([e],[t])=>comparePaths(e,t)),o=await mapWithConcurrency(a,8,async([,n])=>{try{return toServedFile(await e.readFile(t.name,n))}catch(e){if(e instanceof SkillReadError)return e.message;throw e}}),s=o.find(e=>typeof e==`string`);if(s!==void 0)return unserved(`a file did not read (${s})`);let c=o,l=a.findIndex(([e])=>e===SKILL_ENTRY_FILE_NAME),u=entryDocument(t,c[l]);if(u===void 0)return unserved(`its ${SKILL_ENTRY_FILE_NAME} is not UTF-8 text with frontmatter that meets the Agent Skills format`);if(c[l]=u,c.reduce((e,t)=>e+t.bytes.byteLength,0)>16777216||c.some(e=>e.bytes.byteLength>MAX_SKILL_FILE_BYTES))return unserved(`its files as read are over the size limits`);let d=new Map,f=[];for(let[e,[n]]of a.entries()){let r=c[e];d.set(n,{mimeType:servedMimeType(n,r),size:r.bytes.byteLength}),f.push({uri:skillFileUri(t.name,n),digest:`sha256:${createHash(`sha256`).update(r.bytes).digest(`hex`)}`,size:r.bytes.byteLength})}return{name:t.name,description:u.description,document:u,entry:{uri:skillFileUri(t.name,SKILL_ENTRY_FILE_NAME),frontmatter:u.frontmatter,resources:f},files:d,directories:new Set(r)}}function entryDocument(e,t){if(t.text===void 0)return;let n=parseFrontmatterJson(t.text);if(n===void 0)return;if(n.present&&n.data.name===e.name&&typeof n.data.description==`string`)return conforming({bytes:t.bytes,description:n.data.description,frontmatter:n.data,text:t.text});let r=typeof n.data.description==`string`?n.data.description:e.description,{name:i,description:a,...o}=n.data,s=`---\n${renderFrontmatter({name:e.name,description:r,...o})}---\n${n.content}`,c=parseFrontmatterJson(s);if(c!==void 0&&c.data.name===e.name)return conforming({bytes:new TextEncoder().encode(s),description:r,frontmatter:c.data,text:s})}const SKILL_NAME_PATTERN=/^[a-z0-9]+(?:-[a-z0-9]+)*$/u;function conforming(e){let{name:t,description:n}=e.frontmatter;if(typeof t==`string`&&typeof n==`string`&&!(Array.from(t).length>64||!SKILL_NAME_PATTERN.test(t))&&!(n.trim().length===0||Array.from(n).length>1024))return e}function renderFrontmatter(e){return Object.entries(e).map(([e,t])=>`${/^[A-Za-z_][A-Za-z0-9_-]*$/u.test(e)?e:JSON.stringify(e)}: ${JSON.stringify(t)}\n`).join(``)}function parseFrontmatterJson(e){let t,n;try{n=parseFrontmatter(e),t=JSON.parse(JSON.stringify(n?.data??{}))}catch{return}if(typeof t==`object`&&t&&!Array.isArray(t))return{content:n?.content??e,data:t,present:n!==void 0}}function listDirectory(e,t){if(t!==void 0&&!e.directories.has(t))return;let n=t===void 0?``:`${t}/`,r=[],add=(t,i)=>{let a=t.slice(n.length);t.startsWith(n)&&!a.includes(`/`)&&r.push({uri:skillFileUri(e.name,t),name:a,mimeType:i})};for(let[t,n]of e.files)add(t,n.mimeType);for(let t of e.directories)add(t,`inode/directory`);return r.sort((e,t)=>comparePaths(e.name,t.name))}function parseSkillUri(e){if(!e.startsWith(SKILL_URI_PREFIX))return;let t=e.slice(8);if(/[?#\\\s]/u.test(t))return;let n=[];for(let e of t.split(`/`)){let t;try{t=decodeURIComponent(e)}catch{return}if(!isSafeSegment(t))return;n.push(t)}let[r,...i]=n;if(r!==void 0)return i.length===0?{skill:r}:{skill:r,path:i.join(`/`)}}function isSafeSegment(e){return e.length>0&&e!==`.`&&e!==`..`&&!e.includes(`/`)&&!e.includes(`\\`)&&!e.includes(`\0`)}function skillFileUri(e,t){let n=t.split(`/`).map(encodeURIComponent).join(`/`);return`${SKILL_URI_PREFIX}${encodeURIComponent(e)}/${n}`}function rejectCursor(e){if(e!==void 0)throw new ProtocolError(ProtocolErrorCode.InvalidParams,`Unknown cursor.`)}const MIME_TYPES=new Map([[`css`,`text/css`],[`csv`,`text/csv`],[`gif`,`image/gif`],[`htm`,`text/html`],[`html`,`text/html`],[`jpeg`,`image/jpeg`],[`jpg`,`image/jpeg`],[`js`,`text/javascript`],[`json`,`application/json`],[`md`,`text/markdown`],[`mjs`,`text/javascript`],[`pdf`,`application/pdf`],[`png`,`image/png`],[`py`,`text/x-python`],[`sh`,`text/x-shellscript`],[`svg`,`image/svg+xml`],[`ts`,`text/typescript`],[`txt`,`text/plain`],[`webp`,`image/webp`],[`xml`,`application/xml`],[`yaml`,`application/yaml`],[`yml`,`application/yaml`]]);function servedMimeType(e,t){let n=e.slice(e.lastIndexOf(`/`)+1),r=n.lastIndexOf(`.`);return(r<=0?void 0:MIME_TYPES.get(n.slice(r+1).toLowerCase()))??(t.text===void 0?`application/octet-stream`:`text/plain`)}function mimeTypeFor(e){return servedMimeType(e,{bytes:new Uint8Array})}export{MCP_SKILLS_EXTENSION,MCP_SKILL_MAX_RESOURCES,MCP_SKILL_MAX_TOTAL_BYTES,createMcpSkillsFeature,parseSkillUri};
@@ -1 +1 @@
1
- import{resolveModelApiKey}from"./api-key.js";import{authJson}from"./vercel.js";import"./transport.js";import{isObject}from"#shared/guards.js";import{getDefaultCodexTokenBroker}from"#public/models/openai/chatgpt/token-broker.js";const MODEL_CATALOG_MAX_BYTES=8388608;async function availableDirectModels(e,t,n){let r=await authJson(e===`openai`?`https://api.openai.com/v1/models`:`https://api.anthropic.com/v1/models?limit=1000`,{headers:e===`openai`?{authorization:`Bearer ${t}`}:{"x-api-key":t,"anthropic-version":`2023-06-01`},signal:n},MODEL_CATALOG_MAX_BYTES);if(!Array.isArray(r.data))throw Error(`The provider could not validate this key. Check it and retry /login.`);return r.data.flatMap(e=>isObject(e)&&typeof e.id==`string`?[e.id]:[])}async function availableHelperModels(e,t){if(e!==`chatgpt`)return availableDirectModels(e,await resolveModelApiKey(e),t);let n=await getDefaultCodexTokenBroker().getToken({reason:`request`}),r={authorization:`Bearer ${n.token}`,originator:`eve`};n.accountId&&(r[`ChatGPT-Account-Id`]=n.accountId);let i=await authJson(`https://chatgpt.com/backend-api/codex/models?client_version=0.148.0`,{headers:r,signal:t},MODEL_CATALOG_MAX_BYTES);if(!Array.isArray(i.models))throw Error(`Could not load ChatGPT models. Check your connection and retry /login.`);return i.models.flatMap(e=>isObject(e)&&typeof e.slug==`string`&&e.visibility!==`hide`?[e.slug]:[])}export{availableDirectModels,availableHelperModels};
1
+ import{resolveModelApiKey}from"./api-key.js";import{authJson}from"./vercel.js";import"./transport.js";import{isObject}from"#shared/guards.js";import{getDefaultCodexTokenBroker}from"#public/models/openai/chatgpt/token-broker.js";const MODEL_CATALOG_MAX_BYTES=8388608;async function availableDirectModels(e,t,n){let r=await authJson(e===`openai`?`https://api.openai.com/v1/models`:`https://api.anthropic.com/v1/models?limit=1000`,{headers:e===`openai`?{authorization:`Bearer ${t}`}:{"x-api-key":t,"anthropic-version":`2023-06-01`},signal:n},MODEL_CATALOG_MAX_BYTES);if(!Array.isArray(r.data))throw Error(`The provider could not validate this key. Check it and retry /login.`);return r.data.flatMap(e=>isObject(e)&&typeof e.id==`string`?[e.id]:[])}async function availableHelperModels(e,t){if(e!==`chatgpt`)return availableDirectModels(e,await resolveModelApiKey(e),t);let n=await getDefaultCodexTokenBroker().getToken({reason:`request`}),r={authorization:`Bearer ${n.token}`,originator:`eve`};n.accountId&&(r[`ChatGPT-Account-Id`]=n.accountId);let i=await authJson(`https://chatgpt.com/backend-api/codex/models?client_version=0.162.0`,{headers:r,signal:t},MODEL_CATALOG_MAX_BYTES);if(!Array.isArray(i.models))throw Error(`Could not load ChatGPT models. Check your connection and retry /login.`);return i.models.flatMap(e=>isObject(e)&&typeof e.slug==`string`&&e.visibility!==`hide`?[e.slug]:[])}export{availableDirectModels,availableHelperModels};
@@ -1 +1 @@
1
- import{readFile}from"node:fs/promises";import{dirname,isAbsolute,join,relative,resolve}from"node:path";import{resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath}from"#internal/application/package.js";import{fileURLToPath}from"node:url";import{resolveAuthoredTsConfigPath}from"#internal/authored-module-loader.js";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{createExtensionMountPlugin}from"#internal/bundler/extension-mount-plugin.js";import{createExtensionScopePlugin}from"#internal/bundler/extension-scope-plugin.js";import{applyWorkflowTransform}from"#internal/workflow-bundle/workflow-builders.js";import{createExtensionExternalDependencyPlugin,resolveExtensionExternalDependencyPaths}from"#internal/nitro/host/extension-external-dependency-plugin.js";import{createNitro}from"nitro/builder";import{prepareEveVersionedCacheDirectory,writeEveVersionedCacheMetadata}from"#internal/application/cache-metadata.js";import{createProductionNitroArtifactsConfig}from"#internal/nitro/host/artifacts-config.js";import{hasVercelScheduleCollections}from"#internal/schedules/consumer-route.js";import{configureInstrumentationEntry}from"#internal/nitro/host/instrumentation-entry.js";import{createCompiledSandboxProviderPrunePlugin}from"#internal/nitro/host/compiled-sandbox-provider-prune-plugin.js";import{createDevelopmentRuntimePrunePlugin}from"#internal/nitro/host/development-runtime-prune-plugin.js";import{prepareSkillServerAssets}from"#internal/nitro/host/skill-server-assets.js";import{configureDevelopmentNitroRoutes,configureProductionNitroRoutes}from"#internal/nitro/host/configure-nitro-routes.js";import{applyEveCronHandlerRoute}from"#internal/nitro/host/cron-handler-route.js";import{createNitroBundlerConfig}from"#internal/nitro/host/nitro-bundler-config.js";import{OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME,createOptionalEngineDependencyPlugin}from"#internal/nitro/host/optional-engine-dependency-plugin.js";import{addNitroRoutingImportSpecifierPlugin}from"#internal/nitro/host/nitro-routing-import-specifier-plugin.js";import{registerScheduleTaskHandlers}from"#internal/nitro/host/schedule-task-routes.js";import{createEveVercelOptions}from"#internal/nitro/host/vercel-build-output-config.js";const WORKFLOW_ALIAS_SPECIFIERS=[`workflow`,`workflow/api`,`workflow/errors`,`workflow/internal/builtins`,`workflow/internal/private`,`workflow/runtime`],INSTRUMENTATION_ALIAS_PATHS={"eve/instrumentation":`src/public/instrumentation/index.ts`,"eve/instrumentation/otel":`src/public/instrumentation/otel.ts`},WORKFLOW_TRANSFORM_PATCHED=Symbol(`eve.workflow-transform-patched`),LOCAL_SANDBOX_BACKEND_NAMES=new Set([`docker`,...Object.keys(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME)]);function resolveWorkflowAliases(){let e={};for(let t of WORKFLOW_ALIAS_SPECIFIERS)e[t]=resolveWorkflowModulePath(t);return e}function resolveProductionNitroPreset(){return process.env.VERCEL?`vercel`:void 0}function manifestHasWorkflowProgram(e){return[e,...e.subagents.map(e=>e.agent)].some(e=>e.tools.some(e=>e.workflowProgram!==void 0))}function manifestHasWebSocketChannel(e){return e.channelRoutes.effective.some(e=>e.method===`WEBSOCKET`)}function collectHostedTraceDependencies(e,t){let n=new Set(collectExtensionExternalDependencies(e.compileResult.manifest)),r=[...e.compileResult.manifest.config.build?.externalDependencies??[],...e.compileResult.manifest.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])];return[...new Set([...t,...r,...[...n].map(e=>`${e}*`)])].filter(e=>e!==EVE_PACKAGE_NAME&&e!==`${EVE_PACKAGE_NAME}*`)}function collectExtensionExternalDependencies(e){return[e,...e.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.flatMap(e=>e.externalDependencies))}function collectConfiguredSandboxProviderNames(e){let t=[e,...e.subagents.map(e=>e.agent)];return new Set(t.map(e=>e.sandbox?.providerName).filter(e=>typeof e==`string`))}function shouldPruneLocalSandboxProviders(e){return e.preset===`vercel`&&![...e.configuredBackendNames].some(e=>LOCAL_SANDBOX_BACKEND_NAMES.has(e))}function createDevelopmentWatchOptions(e){return{ignored:[e,join(e,`**`)]}}function normalizePath(e){return e.replaceAll(`\\`,`/`)}function stripPathQueryAndHash(e){let t=e.indexOf(`?`),n=e.indexOf(`#`),r=t===-1?n:n===-1?t:Math.min(t,n);return r===-1?e:e.slice(0,r)}function stripFileSystemPrefix(e){return e.startsWith(`/@fs/`)?e.slice(4):e}function resolveNitroModuleComparisonPath(e,t){return t.startsWith(`file://`)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(fileURLToPath(t)))):isAbsolute(t)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(t))):normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(resolve(e,t))))}function isWorkflowBundlePath(e,t){let n=normalizePath(e);return n.startsWith(t)||n.includes(`/.eve/workflow-cache/`)}function normalizeStepTransformComparisonPath(e){let t=normalizePath(e);return process.platform===`win32`?t.toLowerCase():t}function parseImportedModuleSpecifiers(e){let t=/^\s*import\s+(?:.+?\s+from\s+)?["']([^"']+)["'];?\s*$/gm,n=[];for(let r of e.matchAll(t)){let e=r[1];e!==void 0&&n.push(e)}return n}function resolveNitroImportPath(e,t,n){return t.startsWith(`workflow`)?resolveWorkflowModulePath(t):t.startsWith(`.`)||t.startsWith(`/`)||t.startsWith(`file://`)?resolveNitroModuleComparisonPath(n===void 0?e:dirname(resolveNitroModuleComparisonPath(e,n)),t):null}async function collectNitroStepTransformTargets(e,t){let n=await readFile(e,`utf8`),r=new Set;for(let i of parseImportedModuleSpecifiers(n)){let n=resolveNitroImportPath(t,i,e);n!==null&&r.add(normalizeStepTransformComparisonPath(n))}return r}async function addNitroStepNoExternals(e,t){if(e.options.noExternals===!0)return;let n;try{n=await collectNitroStepTransformTargets(t,e.options.rootDir)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}let r=Array.isArray(e.options.noExternals)?[...e.options.noExternals]:[];e.options.noExternals=[...new Set([...r,...n])]}function createRelativeTransformFilename(e,t){let n=createPackageRelativeTransformFilename(t);if(n!==void 0)return n;let r=normalizePath(e).replace(/\/$/,``),i=normalizePath(t),a=r.toLowerCase(),o=i.toLowerCase();if(o.startsWith(`${a}/`))return i.slice(r.length+1);if(o===a)return`.`;let s=relative(r,i).replaceAll(`\\`,`/`);if(s.startsWith(`../`)&&(s=s.split(`/`).filter(e=>e!==`..`).join(`/`)),s.includes(`:`)||s.startsWith(`/`)){let e=i.split(`/`).pop();return e===void 0||e.length===0?`unknown.ts`:e}return s}function createPackageRelativeTransformFilename(e){let t=normalizePath(resolvePackageRoot()).replace(/\/$/,``),n=normalizePath(e),r=t.toLowerCase(),i=n.toLowerCase(),a=`${t}/src/`,o=`${r}/src/`,s=`${t}/dist/src/`,c=`${r}/dist/src/`;if(i.startsWith(o))return`src/${n.slice(a.length)}`;if(i.startsWith(c))return`src/${n.slice(s.length)}`}function addWorkflowModuleSideEffectsPlugin(e,t){let n=[t,join(e.options.buildDir,`workflow`)].map(t=>resolveNitroModuleComparisonPath(e.options.rootDir,t));e.hooks.hook(`rollup:before`,(t,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-module-side-effects`,resolveId(t,r){let i=resolveNitroImportPath(e.options.rootDir,t,r)??resolveNitroModuleComparisonPath(e.options.rootDir,t);return n.some(e=>isWorkflowBundlePath(i,e))?{id:i,moduleSideEffects:`no-treeshake`}:null}})})}function addNitroStepModuleSideEffectsPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-step-module-side-effects`,async resolveId(n,r){let i=resolveNitroImportPath(e.options.rootDir,n,r);return i===null||!(await t()).has(normalizeStepTransformComparisonPath(i))?null:{id:i,moduleSideEffects:`no-treeshake`}}})})}function addNitroStepTransformPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({async transform(n,r){let i=await t(),a=resolveNitroModuleComparisonPath(e.options.rootDir,r);return i.has(normalizeStepTransformComparisonPath(a))?{code:(await applyWorkflowTransform(createRelativeTransformFilename(e.options.rootDir,a),n,`step`,a,e.options.rootDir)).code,map:null}:null},name:`eve:workflow-step-transform`})})}function addInstrumentationModuleSideEffectsPlugin(e,t){let n=new Set(t.map(normalizePath));e.hooks.hook(`rollup:before`,(e,t)=>{Array.isArray(t.plugins)&&t.plugins.unshift({name:`eve:instrumentation-module-side-effects`,resolveId(e){return n.has(normalizePath(e))?{id:e,moduleSideEffects:`no-treeshake`}:null}})})}function patchWorkflowTransformExcludePath(e,t){let n=normalizePath(t);e.hooks.hook(`rollup:before`,(e,t)=>{if(Array.isArray(t.plugins))for(let e of t.plugins){if(typeof e!=`object`||!e)continue;let t=e;if(t.name!==`workflow:transform`||t[WORKFLOW_TRANSFORM_PATCHED]===!0||typeof t.transform!=`function`)continue;let r=t.transform;t.transform=function(e,t,...i){return isWorkflowBundlePath(t,n)?null:r.call(this,e,t,...i)},t[WORKFLOW_TRANSFORM_PATCHED]=!0}})}function createApplicationNitroBundlerConfiguration(e,t){let{preset:n}=t,r=collectConfiguredSandboxProviderNames(e.compileResult.manifest),i=shouldPruneLocalSandboxProviders({configuredBackendNames:r,preset:n})?createCompiledSandboxProviderPrunePlugin():null,a=[],o=[];for(let[e,t]of Object.entries(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME))(r.has(e)?a:o).push(t);let s=createExtensionScopePlugin([e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.map(e=>({sourceRoot:e.sourceRoot,mountId:e.mountId})))),c=[e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts),l=[t.development?null:createDevelopmentRuntimePrunePlugin(),i,createOptionalEngineDependencyPlugin(o),createExtensionExternalDependencyPlugin(c),createExtensionMountPlugin(c,extensionOverridePaths(e.compileResult.manifest)),s].filter(e=>e!==null);return{nitroRolldownConfig:{tsconfig:resolveAuthoredTsConfigPath(e.appRoot)},nitroRollupConfig:createNitroBundlerConfig(l),tracedAppDependencies:collectHostedTraceDependencies(e,a),tracedAppDependencyPaths:resolveExtensionExternalDependencyPaths(c)}}function createApplicationNitroPlugins(e){let t=[e.compiledArtifacts.bootstrapPath,e.compiledArtifacts.workflowWorldPluginPath];return manifestHasWorkflowProgram(e.compileResult.manifest)&&t.push(resolvePackageSourceFilePath(`src/internal/nitro/host/workflow-sandbox-runtime-plugin.ts`)),e.compiledArtifacts.instrumentationPluginPath!==void 0&&t.push(e.compiledArtifacts.instrumentationPluginPath),t}function configureSharedApplicationNitro(e,t){t.compiledArtifacts.instrumentationPluginPath!==void 0&&configureInstrumentationEntry(e,t.compiledArtifacts.instrumentationPluginPath),addNitroRoutingImportSpecifierPlugin(e);let n=resolveWorkflowAliases();for(let[t,r]of Object.entries(n))e.options.alias[t]=r;for(let[t,n]of Object.entries(INSTRUMENTATION_ALIAS_PATHS))e.options.alias[t]=resolvePackageSourceFilePath(n);addWorkflowModuleSideEffectsPlugin(e,t.workflowBuildDir),patchWorkflowTransformExcludePath(e,t.workflowBuildDir),t.compiledArtifacts.instrumentationSourcePaths!==void 0&&addInstrumentationModuleSideEffectsPlugin(e,t.compiledArtifacts.instrumentationSourcePaths)}function configureNitroStepPlugins(e,t){let n,getTargets=()=>n??=collectNitroStepTransformTargets(t,e.options.rootDir),invalidate=()=>{n=void 0};return e.hooks.hook(`build:before`,invalidate),addNitroStepModuleSideEffectsPlugin(e,getTargets),addNitroStepTransformPlugin(e,getTargets),[invalidate]}function externalizeDevelopmentWorkflowBundle(e,t){let n=new Set([normalizePath(join(t.workflowBuildDir,`workflows.mjs`))]);e.hooks.hook(`rollup:before`,(e,t)=>{let r=t.external;t.external=(e,...t)=>{if(n.has(normalizePath(e)))return!0;if(typeof r==`function`)return r(e,...t)}})}async function createDevelopmentApplicationNitro(e){let t=e.workspace.nitroBuildDir,n=createApplicationNitroBundlerConfiguration(e,{development:!0,preset:void 0}),r=createApplicationNitroPlugins(e);e.compiledArtifacts.instrumentationPluginPath===void 0&&r.unshift(resolvePackageSourceFilePath(`src/internal/nitro/host/local-tracing-runtime-plugin.ts`)),await prepareEveVersionedCacheDirectory(t);let i=await createNitro({_cli:{command:`dev`},buildDir:t,dev:!0,features:{websocket:!0},logLevel:1,output:{dir:e.workspace.nitroOutputDir},plugins:r,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:n.nitroRolldownConfig,rollupConfig:n.nitroRollupConfig,rootDir:e.appRoot,serverDir:!1,traceDeps:n.tracedAppDependencies,traceOpts:{nft:{paths:n.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:!1}),watchOptions:createDevelopmentWatchOptions(e.appRoot)},{watch:!0});await writeEveVersionedCacheMetadata(t);let a=join(i.options.buildDir,`workflow`,`steps.mjs`);configureSharedApplicationNitro(i,e);let o=configureNitroStepPlugins(i,a);return i.hooks.hook(`dev:reload`,()=>{for(let e of o)e()}),externalizeDevelopmentWorkflowBundle(i,e),await configureDevelopmentNitroRoutes(i,e),await addNitroStepNoExternals(i,a),i}async function createProductionApplicationNitro(e,t){let n=resolveProductionNitroPreset(),r=createApplicationNitroBundlerConfiguration(e,{development:!1,preset:n}),i=createApplicationNitroPlugins(e);i.push(resolvePackageSourceFilePath(`src/internal/nitro/host/sandbox-shutdown-plugin.ts`)),await prepareEveVersionedCacheDirectory(t.buildDir);let{manifest:a,paths:o}=e.compileResult,s=await prepareSkillServerAssets({stagingDirectory:join(t.buildDir,`eve-skill-assets`),skills:a.skills.map(e=>e.name),skillsRoot:join(o.compileDirectoryPath,a.workspaceResourceRoot.logicalPath,`skills`)}),c=await createNitro({_cli:{command:`build`},buildDir:t.buildDir,dev:!1,features:{websocket:manifestHasWebSocketChannel(e.compileResult.manifest)},logging:{compressedSizes:!1},output:{dir:t.outputDir},preset:n,plugins:i,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:r.nitroRolldownConfig,rollupConfig:r.nitroRollupConfig,rootDir:e.appRoot,serverAssets:s,serverDir:!1,traceDeps:r.tracedAppDependencies,traceOpts:{nft:{paths:r.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:n===`vercel`,hasVercelScheduleCollections:hasVercelScheduleCollections(e.compileResult.manifest),publicRoutePrefix:t.publicRoutePrefix,workspaceMember:t.workspaceMember})});if(await writeEveVersionedCacheMetadata(t.buildDir),c.options.serverAssets=c.options.serverAssets.filter(e=>e.baseName!==`server`),configureSharedApplicationNitro(c,e),configureNitroStepPlugins(c,join(e.workflowBuildDir,`steps.mjs`)),e.scheduleRegistrations.length>0){applyEveCronHandlerRoute(c);let t=createProductionNitroArtifactsConfig(e.appRoot);registerScheduleTaskHandlers(c,{artifactsConfig:t,dispatchModulePath:resolvePackageSourceFilePath(`src/internal/nitro/routes/schedule-task.ts`),registrations:e.scheduleRegistrations})}return await configureProductionNitroRoutes(c,e),await addNitroStepNoExternals(c,join(e.workflowBuildDir,`steps.mjs`)),c}export{createDevelopmentApplicationNitro,createProductionApplicationNitro,shouldPruneLocalSandboxProviders};
1
+ import{readFile}from"node:fs/promises";import{dirname,isAbsolute,join,relative,resolve}from"node:path";import{resolvePackageRoot,resolvePackageSourceDirectoryPath,resolvePackageSourceFilePath,resolveWorkflowModulePath}from"#internal/application/package.js";import{fileURLToPath}from"node:url";import{resolveAuthoredTsConfigPath}from"#internal/authored-module-loader.js";import{extensionOverridePaths}from"#compiler/extension-mount-bindings.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{createExtensionMountPlugin}from"#internal/bundler/extension-mount-plugin.js";import{createExtensionScopePlugin}from"#internal/bundler/extension-scope-plugin.js";import{applyWorkflowTransform}from"#internal/workflow-bundle/workflow-builders.js";import{createExtensionExternalDependencyPlugin,resolveExtensionExternalDependencyPaths}from"#internal/nitro/host/extension-external-dependency-plugin.js";import{createNitro}from"nitro/builder";import{prepareEveVersionedCacheDirectory,writeEveVersionedCacheMetadata}from"#internal/application/cache-metadata.js";import{createProductionNitroArtifactsConfig}from"#internal/nitro/host/artifacts-config.js";import{hasVercelScheduleCollections,usesLocalVercelSchedules}from"#internal/schedules/consumer-route.js";import{configureInstrumentationEntry}from"#internal/nitro/host/instrumentation-entry.js";import{createCompiledSandboxProviderPrunePlugin}from"#internal/nitro/host/compiled-sandbox-provider-prune-plugin.js";import{createDevelopmentRuntimePrunePlugin}from"#internal/nitro/host/development-runtime-prune-plugin.js";import{prepareSkillServerAssets}from"#internal/nitro/host/skill-server-assets.js";import{configureDevelopmentNitroRoutes,configureProductionNitroRoutes}from"#internal/nitro/host/configure-nitro-routes.js";import{applyEveCronHandlerRoute}from"#internal/nitro/host/cron-handler-route.js";import{createNitroBundlerConfig}from"#internal/nitro/host/nitro-bundler-config.js";import{OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME,createOptionalEngineDependencyPlugin}from"#internal/nitro/host/optional-engine-dependency-plugin.js";import{addNitroRoutingImportSpecifierPlugin}from"#internal/nitro/host/nitro-routing-import-specifier-plugin.js";import{registerScheduleTaskHandlers}from"#internal/nitro/host/schedule-task-routes.js";import{createEveVercelOptions}from"#internal/nitro/host/vercel-build-output-config.js";const WORKFLOW_ALIAS_SPECIFIERS=[`workflow`,`workflow/api`,`workflow/errors`,`workflow/internal/builtins`,`workflow/internal/private`,`workflow/runtime`],INSTRUMENTATION_ALIAS_PATHS={"eve/instrumentation":`src/public/instrumentation/index.ts`,"eve/instrumentation/otel":`src/public/instrumentation/otel.ts`},WORKFLOW_TRANSFORM_PATCHED=Symbol(`eve.workflow-transform-patched`),EVE_NITRO_BUILDER=`rolldown`,LOCAL_SANDBOX_BACKEND_NAMES=new Set([`docker`,...Object.keys(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME)]);function resolveWorkflowAliases(){let e={};for(let t of WORKFLOW_ALIAS_SPECIFIERS)e[t]=resolveWorkflowModulePath(t);return e}function resolveProductionNitroPreset(){return process.env.VERCEL?`vercel`:void 0}function manifestHasWorkflowProgram(e){return[e,...e.subagents.map(e=>e.agent)].some(e=>e.tools.some(e=>e.workflowProgram!==void 0))}function manifestHasWebSocketChannel(e){return e.channelRoutes.effective.some(e=>e.method===`WEBSOCKET`)}function collectHostedTraceDependencies(e,t){let n=new Set(collectExtensionExternalDependencies(e.compileResult.manifest)),r=[...e.compileResult.manifest.config.build?.externalDependencies??[],...e.compileResult.manifest.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])];return[...new Set([...t,...r,...[...n].map(e=>`${e}*`)])].filter(e=>e!==EVE_PACKAGE_NAME&&e!==`${EVE_PACKAGE_NAME}*`)}function collectExtensionExternalDependencies(e){return[e,...e.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.flatMap(e=>e.externalDependencies))}function collectConfiguredSandboxProviderNames(e){let t=[e,...e.subagents.map(e=>e.agent)];return new Set(t.map(e=>e.sandbox?.providerName).filter(e=>typeof e==`string`))}function shouldPruneLocalSandboxProviders(e){return e.preset===`vercel`&&![...e.configuredBackendNames].some(e=>LOCAL_SANDBOX_BACKEND_NAMES.has(e))}function createDevelopmentWatchOptions(e){return{ignored:[e,join(e,`**`)]}}function normalizePath(e){return e.replaceAll(`\\`,`/`)}function stripPathQueryAndHash(e){let t=e.indexOf(`?`),n=e.indexOf(`#`),r=t===-1?n:n===-1?t:Math.min(t,n);return r===-1?e:e.slice(0,r)}function stripFileSystemPrefix(e){return e.startsWith(`/@fs/`)?e.slice(4):e}function resolveNitroModuleComparisonPath(e,t){return t.startsWith(`file://`)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(fileURLToPath(t)))):isAbsolute(t)?normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(t))):normalizePath(stripFileSystemPrefix(stripPathQueryAndHash(resolve(e,t))))}function isWorkflowBundlePath(e,t){let n=normalizePath(e);return n.startsWith(t)||n.includes(`/.eve/workflow-cache/`)}function normalizeStepTransformComparisonPath(e){let t=normalizePath(e);return process.platform===`win32`?t.toLowerCase():t}function parseImportedModuleSpecifiers(e){let t=/^\s*import\s+(?:.+?\s+from\s+)?["']([^"']+)["'];?\s*$/gm,n=[];for(let r of e.matchAll(t)){let e=r[1];e!==void 0&&n.push(e)}return n}function resolveNitroImportPath(e,t,n){return t.startsWith(`workflow`)?resolveWorkflowModulePath(t):t.startsWith(`.`)||t.startsWith(`/`)||t.startsWith(`file://`)?resolveNitroModuleComparisonPath(n===void 0?e:dirname(resolveNitroModuleComparisonPath(e,n)),t):null}async function collectNitroStepTransformTargets(e,t){let n=await readFile(e,`utf8`),r=new Set;for(let i of parseImportedModuleSpecifiers(n)){let n=resolveNitroImportPath(t,i,e);n!==null&&r.add(normalizeStepTransformComparisonPath(n))}return r}async function addNitroStepNoExternals(e,t){if(e.options.noExternals===!0)return;let n;try{n=await collectNitroStepTransformTargets(t,e.options.rootDir)}catch(e){if(e instanceof Error&&`code`in e&&e.code===`ENOENT`)return;throw e}let r=Array.isArray(e.options.noExternals)?[...e.options.noExternals]:[];e.options.noExternals=[...new Set([...r,...n])]}function createRelativeTransformFilename(e,t){let n=createPackageRelativeTransformFilename(t);if(n!==void 0)return n;let r=normalizePath(e).replace(/\/$/,``),i=normalizePath(t),a=r.toLowerCase(),o=i.toLowerCase();if(o.startsWith(`${a}/`))return i.slice(r.length+1);if(o===a)return`.`;let s=relative(r,i).replaceAll(`\\`,`/`);if(s.startsWith(`../`)&&(s=s.split(`/`).filter(e=>e!==`..`).join(`/`)),s.includes(`:`)||s.startsWith(`/`)){let e=i.split(`/`).pop();return e===void 0||e.length===0?`unknown.ts`:e}return s}function createPackageRelativeTransformFilename(e){let t=normalizePath(resolvePackageRoot()).replace(/\/$/,``),n=normalizePath(e),r=t.toLowerCase(),i=n.toLowerCase(),a=`${t}/src/`,o=`${r}/src/`,s=`${t}/dist/src/`,c=`${r}/dist/src/`;if(i.startsWith(o))return`src/${n.slice(a.length)}`;if(i.startsWith(c))return`src/${n.slice(s.length)}`}function addWorkflowModuleSideEffectsPlugin(e,t){let n=[t,join(e.options.buildDir,`workflow`)].map(t=>resolveNitroModuleComparisonPath(e.options.rootDir,t));e.hooks.hook(`rollup:before`,(t,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-module-side-effects`,resolveId(t,r){let i=resolveNitroImportPath(e.options.rootDir,t,r)??resolveNitroModuleComparisonPath(e.options.rootDir,t);return n.some(e=>isWorkflowBundlePath(i,e))?{id:i,moduleSideEffects:`no-treeshake`}:null}})})}function addNitroStepModuleSideEffectsPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({name:`eve:workflow-step-module-side-effects`,async resolveId(n,r){let i=resolveNitroImportPath(e.options.rootDir,n,r);return i===null||!(await t()).has(normalizeStepTransformComparisonPath(i))?null:{id:i,moduleSideEffects:`no-treeshake`}}})})}function addNitroStepTransformPlugin(e,t){e.hooks.hook(`rollup:before`,(n,r)=>{Array.isArray(r.plugins)&&r.plugins.unshift({async transform(n,r){let i=await t(),a=resolveNitroModuleComparisonPath(e.options.rootDir,r);return i.has(normalizeStepTransformComparisonPath(a))?{code:(await applyWorkflowTransform(createRelativeTransformFilename(e.options.rootDir,a),n,`step`,a,e.options.rootDir)).code,map:null}:null},name:`eve:workflow-step-transform`})})}function addInstrumentationModuleSideEffectsPlugin(e,t){let n=new Set(t.map(normalizePath));e.hooks.hook(`rollup:before`,(e,t)=>{Array.isArray(t.plugins)&&t.plugins.unshift({name:`eve:instrumentation-module-side-effects`,resolveId(e){return n.has(normalizePath(e))?{id:e,moduleSideEffects:`no-treeshake`}:null}})})}function patchWorkflowTransformExcludePath(e,t){let n=normalizePath(t);e.hooks.hook(`rollup:before`,(e,t)=>{if(Array.isArray(t.plugins))for(let e of t.plugins){if(typeof e!=`object`||!e)continue;let t=e;if(t.name!==`workflow:transform`||t[WORKFLOW_TRANSFORM_PATCHED]===!0||typeof t.transform!=`function`)continue;let r=t.transform;t.transform=function(e,t,...i){return isWorkflowBundlePath(t,n)?null:r.call(this,e,t,...i)},t[WORKFLOW_TRANSFORM_PATCHED]=!0}})}function createApplicationNitroBundlerConfiguration(e,t){let{preset:n}=t,r=collectConfiguredSandboxProviderNames(e.compileResult.manifest),i=shouldPruneLocalSandboxProviders({configuredBackendNames:r,preset:n})?createCompiledSandboxProviderPrunePlugin():null,a=[],o=[];for(let[e,t]of Object.entries(OPTIONAL_ENGINE_PACKAGES_BY_BACKEND_NAME))(r.has(e)?a:o).push(t);let s=createExtensionScopePlugin([e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts.map(e=>({sourceRoot:e.sourceRoot,mountId:e.mountId})))),c=[e.compileResult.manifest,...e.compileResult.manifest.subagents.map(e=>e.agent)].flatMap(e=>e.extensionMounts),l=[t.development?null:createDevelopmentRuntimePrunePlugin(),i,createOptionalEngineDependencyPlugin(o),createExtensionExternalDependencyPlugin(c),createExtensionMountPlugin(c,extensionOverridePaths(e.compileResult.manifest)),s].filter(e=>e!==null);return{nitroRolldownConfig:{tsconfig:resolveAuthoredTsConfigPath(e.appRoot)},nitroRollupConfig:createNitroBundlerConfig(l),tracedAppDependencies:collectHostedTraceDependencies(e,a),tracedAppDependencyPaths:resolveExtensionExternalDependencyPaths(c)}}function createApplicationNitroPlugins(e){let t=[e.compiledArtifacts.bootstrapPath,e.compiledArtifacts.workflowWorldPluginPath];return manifestHasWorkflowProgram(e.compileResult.manifest)&&t.push(resolvePackageSourceFilePath(`src/internal/nitro/host/workflow-sandbox-runtime-plugin.ts`)),e.compiledArtifacts.instrumentationPluginPath!==void 0&&t.push(e.compiledArtifacts.instrumentationPluginPath),t}function configureSharedApplicationNitro(e,t){t.compiledArtifacts.instrumentationPluginPath!==void 0&&configureInstrumentationEntry(e,t.compiledArtifacts.instrumentationPluginPath),addNitroRoutingImportSpecifierPlugin(e);let n=resolveWorkflowAliases();for(let[t,r]of Object.entries(n))e.options.alias[t]=r;for(let[t,n]of Object.entries(INSTRUMENTATION_ALIAS_PATHS))e.options.alias[t]=resolvePackageSourceFilePath(n);addWorkflowModuleSideEffectsPlugin(e,t.workflowBuildDir),patchWorkflowTransformExcludePath(e,t.workflowBuildDir),t.compiledArtifacts.instrumentationSourcePaths!==void 0&&addInstrumentationModuleSideEffectsPlugin(e,t.compiledArtifacts.instrumentationSourcePaths)}function configureNitroStepPlugins(e,t){let n,getTargets=()=>n??=collectNitroStepTransformTargets(t,e.options.rootDir),invalidate=()=>{n=void 0};return e.hooks.hook(`build:before`,invalidate),addNitroStepModuleSideEffectsPlugin(e,getTargets),addNitroStepTransformPlugin(e,getTargets),[invalidate]}function externalizeDevelopmentWorkflowBundle(e,t){let n=new Set([normalizePath(join(t.workflowBuildDir,`workflows.mjs`))]);e.hooks.hook(`rollup:before`,(e,t)=>{let r=t.external;t.external=(e,...t)=>{if(n.has(normalizePath(e)))return!0;if(typeof r==`function`)return r(e,...t)}})}async function createDevelopmentApplicationNitro(e){let t=e.workspace.nitroBuildDir,n=createApplicationNitroBundlerConfiguration(e,{development:!0,preset:void 0}),r=createApplicationNitroPlugins(e);usesLocalVercelSchedules(e.compileResult.manifest)&&r.push(resolvePackageSourceFilePath(`src/internal/nitro/host/local-schedules-runtime-plugin.ts`)),e.compiledArtifacts.instrumentationPluginPath===void 0&&r.unshift(resolvePackageSourceFilePath(`src/internal/nitro/host/local-tracing-runtime-plugin.ts`)),await prepareEveVersionedCacheDirectory(t);let i=await createNitro({_cli:{command:`dev`},builder:EVE_NITRO_BUILDER,buildDir:t,dev:!0,features:{websocket:!0},logLevel:1,output:{dir:e.workspace.nitroOutputDir},plugins:r,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:n.nitroRolldownConfig,rollupConfig:n.nitroRollupConfig,rootDir:e.appRoot,serverDir:!1,traceDeps:n.tracedAppDependencies,traceOpts:{nft:{paths:n.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:!1}),watchOptions:createDevelopmentWatchOptions(e.appRoot)},{watch:!0});await writeEveVersionedCacheMetadata(t);let a=join(i.options.buildDir,`workflow`,`steps.mjs`);configureSharedApplicationNitro(i,e);let o=configureNitroStepPlugins(i,a);return i.hooks.hook(`dev:reload`,()=>{for(let e of o)e()}),externalizeDevelopmentWorkflowBundle(i,e),await configureDevelopmentNitroRoutes(i,e),await addNitroStepNoExternals(i,a),i}async function createProductionApplicationNitro(e,t){let n=resolveProductionNitroPreset(),r=createApplicationNitroBundlerConfiguration(e,{development:!1,preset:n}),i=createApplicationNitroPlugins(e);i.push(resolvePackageSourceFilePath(`src/internal/nitro/host/sandbox-shutdown-plugin.ts`)),await prepareEveVersionedCacheDirectory(t.buildDir);let{manifest:a,paths:o}=e.compileResult,s=await prepareSkillServerAssets({stagingDirectory:join(t.buildDir,`eve-skill-assets`),skills:a.skills.map(e=>e.name),skillsRoot:join(o.compileDirectoryPath,a.workspaceResourceRoot.logicalPath,`skills`)}),c=await createNitro({_cli:{command:`build`},builder:EVE_NITRO_BUILDER,buildDir:t.buildDir,dev:!1,features:{websocket:manifestHasWebSocketChannel(e.compileResult.manifest)},logging:{compressedSizes:!1},output:{dir:t.outputDir},preset:n,plugins:i,publicAssets:[],scanDirs:[resolvePackageSourceDirectoryPath(`src/execution`)],rolldownConfig:r.nitroRolldownConfig,rollupConfig:r.nitroRollupConfig,rootDir:e.appRoot,serverAssets:s,serverDir:!1,traceDeps:r.tracedAppDependencies,traceOpts:{nft:{paths:r.tracedAppDependencyPaths}},vercel:createEveVercelOptions({agentName:e.compileResult.manifest.config.name,enabled:n===`vercel`,hasVercelScheduleCollections:hasVercelScheduleCollections(e.compileResult.manifest),publicRoutePrefix:t.publicRoutePrefix,workspaceMember:t.workspaceMember})});if(await writeEveVersionedCacheMetadata(t.buildDir),c.options.serverAssets=c.options.serverAssets.filter(e=>e.baseName!==`server`),configureSharedApplicationNitro(c,e),configureNitroStepPlugins(c,join(e.workflowBuildDir,`steps.mjs`)),e.scheduleRegistrations.length>0){applyEveCronHandlerRoute(c);let t=createProductionNitroArtifactsConfig(e.appRoot);registerScheduleTaskHandlers(c,{artifactsConfig:t,dispatchModulePath:resolvePackageSourceFilePath(`src/internal/nitro/routes/schedule-task.ts`),registrations:e.scheduleRegistrations})}return await configureProductionNitroRoutes(c,e),await addNitroStepNoExternals(c,join(e.workflowBuildDir,`steps.mjs`)),c}export{createDevelopmentApplicationNitro,createProductionApplicationNitro,shouldPruneLocalSandboxProviders};
@@ -1 +1 @@
1
- import{createHash}from"node:crypto";import{readFile}from"node:fs/promises";import{readDevelopmentEnvironmentHostValues}from"#cli/dev/environment.js";import{computeChannelRouteRegistrations}from"#internal/nitro/host/channel-routes.js";async function computeDevelopmentHostFingerprint(e){let t=e.compileResult.manifest,n=[t,...t.subagents.map(e=>e.agent)],r={agentName:t.config.name,bundler:{externalDependencies:[...new Set([...t.config.build?.externalDependencies??[],...t.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])])].sort((e,t)=>e.localeCompare(t)),extensionScopes:n.flatMap(e=>e.extensionMounts).map(e=>({mountId:e.mountId,sourceRoot:e.sourceRoot})).sort((e,t)=>e.mountId.localeCompare(t.mountId)),sandboxProviders:[...new Set(n.map(e=>e.sandbox?.providerName).filter(e=>e!==void 0))].sort((e,t)=>e.localeCompare(t))},channels:computeChannelRouteRegistrations(e),environment:readDevelopmentEnvironmentHostValues(e.appRoot),instrumentation:await readInstrumentationSource(e),workflow:{authoredSources:e.generation.workflowSourceFingerprint??null,enabled:n.some(e=>e.tools.some(e=>e.workflowProgram!==void 0)),world:t.config.experimental?.workflow?.world??`local`}};return createHash(`sha256`).update(JSON.stringify(r)).digest(`hex`)}async function readInstrumentationSource(e){let t=e.compiledArtifacts.instrumentationSourcePaths,n=e.compiledArtifacts.instrumentationLayout;if(t===void 0||n===void 0)return null;let r=await Promise.all(t.map(async e=>await readFile(e,`utf8`)));return{kind:n.kind,modules:r.map((e,t)=>({slot:n.slots[t],source:e}))}}export{computeDevelopmentHostFingerprint};
1
+ import{createHash}from"node:crypto";import{readFile}from"node:fs/promises";import{readDevelopmentEnvironmentHostValues}from"#cli/dev/environment.js";import{computeChannelRouteRegistrations}from"#internal/nitro/host/channel-routes.js";import{usesLocalVercelSchedules}from"#internal/schedules/consumer-route.js";async function computeDevelopmentHostFingerprint(e){let t=e.compileResult.manifest,n=[t,...t.subagents.map(e=>e.agent)],r={agentName:t.config.name,bundler:{externalDependencies:[...new Set([...t.config.build?.externalDependencies??[],...t.subagents.flatMap(e=>e.configResolver===void 0?e.agent.config.build?.externalDependencies??[]:e.configResolver.build?.externalDependencies??[])])].sort((e,t)=>e.localeCompare(t)),extensionScopes:n.flatMap(e=>e.extensionMounts).map(e=>({mountId:e.mountId,sourceRoot:e.sourceRoot})).sort((e,t)=>e.mountId.localeCompare(t.mountId)),sandboxProviders:[...new Set(n.map(e=>e.sandbox?.providerName).filter(e=>e!==void 0))].sort((e,t)=>e.localeCompare(t))},channels:computeChannelRouteRegistrations(e),environment:readDevelopmentEnvironmentHostValues(e.appRoot),instrumentation:await readInstrumentationSource(e),localScheduleConsumer:usesLocalVercelSchedules(t),workflow:{authoredSources:e.generation.workflowSourceFingerprint??null,enabled:n.some(e=>e.tools.some(e=>e.workflowProgram!==void 0)),world:t.config.experimental?.workflow?.world??`local`}};return createHash(`sha256`).update(JSON.stringify(r)).digest(`hex`)}async function readInstrumentationSource(e){let t=e.compiledArtifacts.instrumentationSourcePaths,n=e.compiledArtifacts.instrumentationLayout;if(t===void 0||n===void 0)return null;let r=await Promise.all(t.map(async e=>await readFile(e,`utf8`)));return{kind:n.kind,modules:r.map((e,t)=>({slot:n.slots[t],source:e}))}}export{computeDevelopmentHostFingerprint};
@@ -0,0 +1,5 @@
1
+ export default function installLocalSchedulesRuntimePlugin(nitroApp: {
2
+ readonly hooks: {
3
+ hook(name: "close", handler: () => void): unknown;
4
+ };
5
+ }): void;
@@ -0,0 +1 @@
1
+ import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{DEVELOPMENT_WORKER_APP_ROOT_ENV}from"#internal/workflow/development-world-protocol.js";import{readDevelopmentRuntimeArtifactsSnapshotRoot}from"#internal/nitro/dev-runtime-artifacts.js";import{createDevelopmentGenerationArtifactsSource,createDevelopmentNitroArtifactsConfig}from"#internal/nitro/host/artifacts-config.js";import{createEveScheduleQueueTrigger,hasVercelScheduleCollections}from"#internal/schedules/consumer-route.js";import{PollingQueueClient}from"#compiled/@vercel/queue/index.js";import{createScheduleCollectionConsumer}from"#internal/nitro/routes/schedule-collection-consumer.js";function installLocalSchedulesRuntimePlugin(e){let t=process.env[DEVELOPMENT_WORKER_APP_ROOT_ENV],n=process.env.VERCEL_QUEUE_BASE_URL,r=process.env.VERCEL_QUEUE_TOKEN;if(!t||!n||!r)throw Error("Local Vercel Schedules requires eve's dev worker and the local Queues API. Start eve through `vc dev` with a CLI that supports local Schedules and Queues.");let i=new URL(n),a=new PollingQueueClient({deploymentId:null,region:`dev1`,resolveBaseUrl:()=>i,token:r}),o=createDevelopmentNitroArtifactsConfig({appRoot:t}),s,c=!1,l,u,poll=async()=>{let e=1e3;try{let e=readDevelopmentRuntimeArtifactsSnapshotRoot(o.devRuntimeArtifactsPointerPath);if(e===void 0)return;if(s?.root!==e){let n=await loadCompiledManifest({compiledArtifactsSource:createDevelopmentGenerationArtifactsSource({appRoot:t,runtimeAppRoot:e})});s={root:e,consumer:createScheduleCollectionConsumer(createDevelopmentNitroArtifactsConfig({appRoot:t,configuredWorld:n.config.experimental?.workflow?.world})),trigger:hasVercelScheduleCollections(n)?createEveScheduleQueueTrigger(n.config.name):void 0}}if(!c&&s.trigger!==void 0){let{consumer:e,trigger:{topic:t,maxDeliveries:n,retryAfterSeconds:r}}=s;await a.receive(t,t,async(t,n)=>{if(c)throw Error(`Local schedule consumer is closing.`);await e.handler(t,n)},{retry:(t,i)=>e.retry(t,i)??(i.deliveryCount>=n?{acknowledge:!0}:{afterSeconds:r})})}u=void 0}catch(t){if(c)return;let n=t instanceof Error?t.message:`Unknown local schedule error`;for(let e of[r,process.env.VERCEL_SCHEDULE_TOKEN])e&&(n=n.replaceAll(e,`[redacted]`));n=n.slice(0,1e3),n!==u&&(console.warn(`[eve] Local schedule delivery failed: ${n}. Check vc dev's local Queues and Schedules APIs; retrying in 5s.`),u=n),e=5e3}finally{c||(l=setTimeout(()=>void poll(),e),l.unref())}};e.hooks.hook(`close`,()=>{c=!0,clearTimeout(l)}),poll()}export{installLocalSchedulesRuntimePlugin as default};
@@ -1,3 +1,9 @@
1
+ import { type MessageHandler, type RetryHandler } from "#compiled/@vercel/queue/index.js";
1
2
  import type { NitroArtifactsConfig } from "#internal/nitro/routes/runtime-artifacts.js";
2
3
  /** Receives verified Vercel Schedules occurrences and dispatches at-least-once callbacks. */
3
4
  export declare function handleScheduleCollectionConsumer(config: NitroArtifactsConfig, request: Request): Promise<Response>;
5
+ /** Shares occurrence verification and dispatch between hosted callbacks and local queue polling. */
6
+ export declare function createScheduleCollectionConsumer(config: NitroArtifactsConfig): {
7
+ readonly handler: MessageHandler<unknown>;
8
+ readonly retry: RetryHandler;
9
+ };
@@ -1 +1 @@
1
- import{handleCallback as handleCallback2}from"../../../node_modules/.pnpm/@vercel_queue@0.5.1_@opentelemetry_api@1.9.1/node_modules/@vercel/queue/dist/index.js";import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{parseSchedulePayload}from"#runtime/schedules/payload.js";import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES}from"#internal/schedules/consumer-route.js";import{resolveNitroCompiledArtifactsSource}from"#internal/nitro/routes/runtime-artifacts.js";import{SchedulesApiError,SchedulesClient}from"#compiled/@vercel/schedules/index.js";import{PermanentScheduleMessageError,expectScheduleQueueMessage,verifyScheduleDelivery}from"#internal/schedules/verify-delivery.js";import{readVercelScheduleClientOptions}from"#public/schedules/providers/vercel.js";import{dispatchScheduledOccurrence}from"#runtime/schedules/dispatch-occurrence.js";import{ScheduleCollectionNotDeployedError,loadScheduleCollectionDefinition}from"#runtime/schedules/load-collection.js";import{deriveEveScheduleQueueTopic}from"#runtime/schedules/queue-namespace.js";async function handleScheduleCollectionConsumer(e,t){return await handleCallback2(async(t,n)=>{let r=expectScheduleQueueMessage(t),i=r.payload.eve.application,a=r.payload.eve.collection,o=resolveNitroCompiledArtifactsSource(e),[s,c]=await Promise.all([getCompiledRuntimeAgentBundle({compiledArtifactsSource:o}),loadCompiledManifest({compiledArtifactsSource:o})]);if(c.config.name!==i)throw new PermanentScheduleMessageError(`Schedule application does not match this agent.`);if(!r.namespace.startsWith(`eve-`)||n.topicName!==deriveEveScheduleQueueTopic(i))throw new PermanentScheduleMessageError(`Schedule delivery does not match this agent.`);let l;try{l=await loadScheduleCollectionDefinition(s,a,{manifest:c,providerKind:`vercel`})}catch(e){throw e instanceof ScheduleCollectionNotDeployedError?new PermanentScheduleMessageError(e.message):e}let u={collection:a,executionId:r.executionId??n.messageId,name:r.name,scheduleId:r.scheduleId,scheduledAt:r.scheduledAt??r.firedAt??n.createdAt.toISOString()};try{let e;try{e=parseSchedulePayload(r.payload.payload,{application:i,collection:a})}catch{throw new PermanentScheduleMessageError(`Scheduled collection request is invalid.`)}await dispatchScheduledOccurrence({bundle:s,collection:a,definition:l,occurrence:u,payload:e,verifyDelivery:async()=>verifyScheduleDelivery(r,await getSchedule(l,r),i,n.topicName)})}catch(e){throw(e instanceof PermanentScheduleMessageError||n.deliveryCount>=EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES)&&await l.events?.[`occurrence.failed`]?.({collection:a,executionId:u.executionId,name:u.name,occurrence:u,reason:e instanceof Error?e.message:`Scheduled occurrence failed.`,scheduledAt:u.scheduledAt,scheduleId:u.scheduleId,type:`occurrence.failed`}),e}},{retry(e){return e instanceof PermanentScheduleMessageError?{acknowledge:!0}:void 0}})(t)}async function getSchedule(e,t){try{return await new SchedulesClient(readVercelScheduleClientOptions(e.provider)??{}).get({name:t.name,namespace:t.namespace})}catch(e){throw e instanceof SchedulesApiError&&e.status===404?new PermanentScheduleMessageError(`Schedule delivery does not match this agent.`):e}}export{handleScheduleCollectionConsumer};
1
+ import{loadCompiledManifest}from"#runtime/loaders/manifest.js";import{parseSchedulePayload}from"#runtime/schedules/payload.js";import{getCompiledRuntimeAgentBundle}from"#runtime/sessions/compiled-agent-cache.js";import{EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES}from"#internal/schedules/consumer-route.js";import{resolveNitroCompiledArtifactsSource}from"#internal/nitro/routes/runtime-artifacts.js";import{handleCallback}from"#compiled/@vercel/queue/index.js";import{SchedulesApiError,SchedulesClient}from"#compiled/@vercel/schedules/index.js";import{PermanentScheduleMessageError,expectScheduleQueueMessage,verifyScheduleDelivery}from"#internal/schedules/verify-delivery.js";import{readVercelScheduleClientOptions}from"#public/schedules/providers/vercel.js";import{dispatchScheduledOccurrence}from"#runtime/schedules/dispatch-occurrence.js";import{ScheduleCollectionNotDeployedError,loadScheduleCollectionDefinition}from"#runtime/schedules/load-collection.js";import{deriveEveScheduleQueueTopic}from"#runtime/schedules/queue-namespace.js";async function handleScheduleCollectionConsumer(e,t){let{handler:n,retry:r}=createScheduleCollectionConsumer(e);return await handleCallback(n,{retry:r})(t)}function createScheduleCollectionConsumer(e){return{handler:async(t,n)=>{let r=expectScheduleQueueMessage(t),i=r.payload.eve.application,a=r.payload.eve.collection,o=resolveNitroCompiledArtifactsSource(e),[s,c]=await Promise.all([getCompiledRuntimeAgentBundle({compiledArtifactsSource:o}),loadCompiledManifest({compiledArtifactsSource:o})]);if(c.config.name!==i)throw new PermanentScheduleMessageError(`Schedule application does not match this agent.`);if(!r.namespace.startsWith(`eve-`)||n.topicName!==deriveEveScheduleQueueTopic(i))throw new PermanentScheduleMessageError(`Schedule delivery does not match this agent.`);let l;try{l=await loadScheduleCollectionDefinition(s,a,{manifest:c,providerKind:`vercel`})}catch(e){throw e instanceof ScheduleCollectionNotDeployedError?new PermanentScheduleMessageError(e.message):e}let u={collection:a,executionId:r.executionId??n.messageId,name:r.name,scheduleId:r.scheduleId,scheduledAt:r.scheduledAt??r.firedAt??n.createdAt.toISOString()};try{let e;try{e=parseSchedulePayload(r.payload.payload,{application:i,collection:a})}catch{throw new PermanentScheduleMessageError(`Scheduled collection request is invalid.`)}await dispatchScheduledOccurrence({bundle:s,collection:a,definition:l,occurrence:u,payload:e,verifyDelivery:async()=>verifyScheduleDelivery(r,await getSchedule(l,r),i,n.topicName)})}catch(e){throw(e instanceof PermanentScheduleMessageError||n.deliveryCount>=EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES)&&await l.events?.[`occurrence.failed`]?.({collection:a,executionId:u.executionId,name:u.name,occurrence:u,reason:e instanceof Error?e.message:`Scheduled occurrence failed.`,scheduledAt:u.scheduledAt,scheduleId:u.scheduleId,type:`occurrence.failed`}),e}},retry(e){return e instanceof PermanentScheduleMessageError?{acknowledge:!0}:void 0}}}async function getSchedule(e,t){try{return await new SchedulesClient(readVercelScheduleClientOptions(e.provider)??{}).get({name:t.name,namespace:t.namespace})}catch(e){throw e instanceof SchedulesApiError&&e.status===404?new PermanentScheduleMessageError(`Schedule delivery does not match this agent.`):e}}export{createScheduleCollectionConsumer,handleScheduleCollectionConsumer};
@@ -1,3 +1,4 @@
1
+ import type { CompiledAgentManifest } from "#compiler/manifest.js";
1
2
  export declare const EVE_SCHEDULE_COLLECTION_CONSUMER_ROUTE_PATH = "/.well-known/eve/v1/schedules/consumer";
2
3
  /** Deliveries the queue attempts before giving up on an occurrence. */
3
4
  export declare const EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES = 10;
@@ -9,6 +10,7 @@ export declare function createEveScheduleQueueTrigger(agentName: string): {
9
10
  initialDelaySeconds: number;
10
11
  maxDeliveries: number;
11
12
  };
13
+ export declare function usesLocalVercelSchedules(manifest: Pick<CompiledAgentManifest, "scheduleCollections">): boolean;
12
14
  /** Whether a build needs the Vercel schedule consumer: its route and its queue trigger. */
13
15
  export declare function hasVercelScheduleCollections(manifest: {
14
16
  readonly scheduleCollections?: readonly {
@@ -1 +1 @@
1
- import{deriveEveScheduleQueueTopic}from"#runtime/schedules/queue-namespace.js";const EVE_SCHEDULE_COLLECTION_CONSUMER_ROUTE_PATH=`/.well-known/eve/v1/schedules/consumer`,EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES=10;function createEveScheduleQueueTrigger(e){return{type:`queue/v2beta`,topic:deriveEveScheduleQueueTopic(e),retryAfterSeconds:5,initialDelaySeconds:0,maxDeliveries:10}}function hasVercelScheduleCollections(e){return e.scheduleCollections?.some(e=>e.providerKind===`vercel`)??!1}export{EVE_SCHEDULE_COLLECTION_CONSUMER_ROUTE_PATH,EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES,createEveScheduleQueueTrigger,hasVercelScheduleCollections};
1
+ import{deriveEveScheduleQueueTopic}from"#runtime/schedules/queue-namespace.js";import{isVercelSchedulesDevEnvironment}from"#internal/schedules/dev-environment.js";const EVE_SCHEDULE_COLLECTION_CONSUMER_ROUTE_PATH=`/.well-known/eve/v1/schedules/consumer`,EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES=10;function createEveScheduleQueueTrigger(e){return{type:`queue/v2beta`,topic:deriveEveScheduleQueueTopic(e),retryAfterSeconds:5,initialDelaySeconds:0,maxDeliveries:10}}function usesLocalVercelSchedules(e){return isVercelSchedulesDevEnvironment()&&hasVercelScheduleCollections(e)}function hasVercelScheduleCollections(e){return e.scheduleCollections?.some(e=>e.providerKind===`vercel`)??!1}export{EVE_SCHEDULE_COLLECTION_CONSUMER_ROUTE_PATH,EVE_SCHEDULE_CONSUMER_MAX_DELIVERIES,createEveScheduleQueueTrigger,hasVercelScheduleCollections,usesLocalVercelSchedules};
@@ -0,0 +1,2 @@
1
+ /** Matches the Schedules SDK's CLI-hosted local environment selection. */
2
+ export declare function isVercelSchedulesDevEnvironment(): boolean;
@@ -0,0 +1 @@
1
+ function isVercelSchedulesDevEnvironment(){return process.env.NODE_ENV===`development`&&process.env.VERCEL_DEPLOYMENT_ID===void 0&&process.env.VERCEL_SCHEDULE_DEV_API_VERSION!==void 0}export{isVercelSchedulesDevEnvironment};
@@ -159,8 +159,8 @@ export interface VercelEveSandboxEntry {
159
159
  /**
160
160
  * One authored skill exposed to the dashboard.
161
161
  *
162
- * Skills are markdown procedures the model loads on demand through the
163
- * framework-owned `load_skill` tool. The summary lists the available
162
+ * Skills are markdown procedures the model loads on demand with
163
+ * `eve__skill({ name })`. The summary lists the available
164
164
  * skills by `name` + `description` so the dashboard can render the
165
165
  * surface without pulling each skill's full markdown body. Consumers
166
166
  * that need the full content can drill in through a dedicated endpoint
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Raised by the `eve dev` World when a caller looks up a hook whose run
3
+ * belongs to a generation this dev server will not execute. It crosses the
4
+ * parent/worker boundary as a plain error, so identity is its name and its
5
+ * enumerable fields rather than the class.
6
+ */
7
+ export declare class DevelopmentRunUnavailableError extends Error {
8
+ readonly availability: "dormant" | "ineligible";
9
+ readonly runId: string;
10
+ constructor(input: {
11
+ readonly availability: "dormant" | "ineligible";
12
+ readonly runId: string;
13
+ });
14
+ static is(value: unknown): value is DevelopmentRunUnavailableError;
15
+ }
@@ -0,0 +1 @@
1
+ const NAME=`DevelopmentRunUnavailableError`;var DevelopmentRunUnavailableError=class extends Error{availability;runId;constructor(e){super(`Local Workflow run was not resumed. Start a new conversation, or restart eve dev with --resume to attempt recovery.`),this.name=NAME,this.availability=e.availability,this.runId=e.runId}static is(e){return e instanceof Error&&e.name===NAME&&typeof e.runId==`string`}};export{DevelopmentRunUnavailableError};
@@ -1 +1 @@
1
- import{LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH,resolveLocalWorkflowWorldDataDirectory}from"#internal/workflow/local-world-data-directory.js";import{DEVELOPMENT_WORKFLOW_DELIVERY_HEADER,DEVELOPMENT_WORKFLOW_STREAM_ROUTE,DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER,DEVELOPMENT_WORKFLOW_WORLD_ROUTE,DEVELOPMENT_WORLD_OPERATIONS}from"#internal/workflow/development-world-protocol.js";import{timingSafeEqualStrings}from"#internal/nitro/dev-client-address.js";import{listDevelopmentGenerationIds}from"#internal/nitro/dev-runtime-generation-metadata.js";import{deriveEveWorkflowQueuePrefix}from"#internal/workflow/queue-namespace.js";import{decodeDevelopmentWorldValue,encodeDevelopmentWorldValue,serializeDevelopmentWorldError}from"#internal/workflow/development-world-codec.js";import{cancelExpiredDevelopmentRun}from"#internal/workflow/cancel-expired-development-run.js";import{readDevelopmentGenerationAvailability}from"#internal/workflow/development-runtime-compatibility.js";import{createWorld}from"#compiled/@workflow/world-local/index.js";import{applyLocalWorkflowWorldDeliveryTimeoutDefaults}from"#internal/workflow/local-world-delivery-timeouts.js";function createParentDevelopmentWorkflowWorld(e){return new LocalParentDevelopmentWorkflowWorld(e)}var LocalParentDevelopmentWorkflowWorld=class{#e;#t;#n;#r;#i;#a;#o=new Map;#s=!1;#c=!1;#l=Promise.resolve();constructor(e){if(e.transportSecret.length<16)throw Error(`Development Workflow transport secret is too short to be trusted.`);this.#a=e.resume===!0,this.#e=e.agentName,this.#t=e.appRoot,this.#n=e.resolveActiveGenerationId,this.#r=e.transportSecret,applyLocalWorkflowWorldDeliveryTimeoutDefaults(),this.#i=createWorld({dataDir:resolveLocalWorkflowWorldDataDirectory(e.appRoot),recoverActiveRuns:!1})}async start(){if(this.#c)return;let e=this.#n();this.#o.clear();for(let t of await listDevelopmentGenerationIds(this.#t)){if(t===e)continue;if(!this.#a){this.#o.set(t,{kind:`dormant`});continue}let n=await readDevelopmentGenerationAvailability(this.#t,t);n.kind===`ineligible`&&this.#o.set(t,n)}await this.#i.start?.(),this.#c=!0;try{if(await this.#u(),!this.#a)return;let e=new Set;await reenqueueActiveDevelopmentRuns({enqueue:this.#m.bind(this),prefix:deriveEveWorkflowQueuePrefix(this.#e),world:this.#i,canRecover:async t=>{let n=await this.#_(t);return n.kind===`ineligible`&&!e.has(t)&&(e.add(t),console.warn(`[eve:dev] Skipping retained Workflow generation "${t}": ${n.reason}`)),n.kind===`ready`}})}catch(e){throw this.#c=!1,e}}async close(){this.#s||(this.#s=!0,this.#c=!1,await this.#l.catch(()=>void 0),await this.#i.close?.())}async handleRequest(e){let t=new URL(e.url);if(t.pathname===DEVELOPMENT_WORKFLOW_WORLD_ROUTE)return await this.#f(e);if(t.pathname===DEVELOPMENT_WORKFLOW_STREAM_ROUTE)return await this.#p(e,t)}async reconcileExpiredRuns(){!this.#c||this.#s||await this.#u()}#u(){return this.#l=this.#l.catch(()=>void 0).then(async()=>{if(this.#s)return;let e=await this.#d();for(let t of e)await cancelExpiredDevelopmentRun(this.#i,t)}),this.#l}async#d(){let e=[];for(let t of[`pending`,`running`]){let n;do{let r;try{r=await this.#i.runs.list({pagination:{cursor:n,limit:1e3},resolveData:`none`,status:t})}catch(e){throw Error(`Failed to read the app's active local Workflow runs. Remove "${LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH}" to discard them.`,{cause:e})}for(let t of r.data)(await readDevelopmentGenerationAvailability(this.#t,t.deploymentId)).kind===`missing`&&e.push(t.runId);n=r.hasMore?r.cursor??void 0:void 0}while(n!==void 0)}return e}async#f(e){if(!this.#g(e)||e.method!==`POST`)return Response.json({error:`Workflow World request is not trusted.`},{status:401});try{let t=decodeDevelopmentWorldValue(await e.text()),n=await this.#h(t);return new Response(encodeDevelopmentWorldValue(n))}catch(e){return new Response(encodeDevelopmentWorldValue(serializeDevelopmentWorldError(e)),{status:500})}}async#p(e,t){if(!this.#g(e)||e.method!==`GET`)return Response.json({error:`Workflow World request is not trusted.`},{status:401});let n=t.searchParams.get(`runId`),r=t.searchParams.get(`name`),i=t.searchParams.get(`startIndex`);if(n===null||r===null)return Response.json({error:`Workflow stream request is malformed.`},{status:400});let a=i===null||i===``?void 0:Number(i);if(i===``||a!==void 0&&!Number.isInteger(a))return Response.json({error:`Workflow stream start index is invalid.`},{status:400});try{return new Response(await this.#i.streams.get(n,r,a))}catch(e){return new Response(encodeDevelopmentWorldValue(serializeDevelopmentWorldError(e)),{status:500})}}async#m(...e){let[t,n,r]=e;return await this.#i.queue(t,n,{...r,headers:{...r?.headers,[DEVELOPMENT_WORKFLOW_DELIVERY_HEADER]:this.#r}})}async#h(e){if(!isDevelopmentWorldRequest(e))throw Error(`Development Workflow World call is malformed.`);if(e.operation===`eve.getGenerationAvailability`)return await this.#_(e.generationId);let t=[...e.arguments];if(e.operation===`getDeploymentId`||e.operation===`resolveLatestDeploymentId`)return this.#n();if(e.operation===`queue`)return await this.#m(...t);if(e.operation===`hooks.getByToken`||e.operation===`hooks.get`){if(!this.#c)throw Error(`Local Workflow World is still starting.`);let n=e.operation===`hooks.getByToken`?await this.#i.hooks.getByToken(...t):await this.#i.hooks.get(...t),r=await this.#i.runs.get(n.runId,{resolveData:`none`}),i=await this.#_(r.deploymentId);if(i.kind===`dormant`||i.kind===`ineligible`)throw Error(`Local Workflow run was not resumed. Start a new conversation, or restart eve dev with --resume to attempt recovery.`);return n}if(e.operation===`streams.writeMulti`&&this.#i.streams.writeMulti===void 0){for(let e of t[2])await this.#i.streams.write(t[0],t[1],e);return}let n=e.operation.indexOf(`.`),r=this.#i[e.operation.slice(0,n)],i=typeof r==`object`&&r?r[e.operation.slice(n+1)]:void 0;if(typeof i==`function`)return await Reflect.apply(i,r,t)}#g(e){let t=e.headers.get(DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER);return t!==null&&timingSafeEqualStrings(t,this.#r)}async#_(e){let t=await readDevelopmentGenerationAvailability(this.#t,e);return t.kind===`ready`?this.#o.get(e)??t:t}};const DEVELOPMENT_WORLD_OPERATION_SET=new Set(DEVELOPMENT_WORLD_OPERATIONS);function isDevelopmentWorldRequest(e){return isObject(e)&&typeof e.operation==`string`&&(e.operation===`eve.getGenerationAvailability`?typeof e.generationId==`string`:DEVELOPMENT_WORLD_OPERATION_SET.has(e.operation)&&Array.isArray(e.arguments))}function isObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function reenqueueActiveDevelopmentRuns(e){for(let t of[`pending`,`running`]){let n;do{let r;try{r=await e.world.runs.list({pagination:{cursor:n},resolveData:`none`,status:t})}catch(e){throw Error(`Failed to read the app's active local Workflow runs. Remove "${LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH}" to discard them.`,{cause:e})}for(let t of r.data)await e.canRecover(t.deploymentId)&&await e.enqueue(`${e.prefix}${t.workflowName}`,{runId:t.runId});n=r.hasMore?r.cursor??void 0:void 0}while(n!==void 0)}}export{createParentDevelopmentWorkflowWorld};
1
+ import{LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH,resolveLocalWorkflowWorldDataDirectory}from"#internal/workflow/local-world-data-directory.js";import{DevelopmentRunUnavailableError}from"#internal/workflow/development-run-unavailable-error.js";import{DEVELOPMENT_WORKFLOW_DELIVERY_HEADER,DEVELOPMENT_WORKFLOW_STREAM_ROUTE,DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER,DEVELOPMENT_WORKFLOW_WORLD_ROUTE,DEVELOPMENT_WORLD_OPERATIONS}from"#internal/workflow/development-world-protocol.js";import{timingSafeEqualStrings}from"#internal/nitro/dev-client-address.js";import{listDevelopmentGenerationIds}from"#internal/nitro/dev-runtime-generation-metadata.js";import{deriveEveWorkflowQueuePrefix}from"#internal/workflow/queue-namespace.js";import{decodeDevelopmentWorldValue,encodeDevelopmentWorldValue,serializeDevelopmentWorldError}from"#internal/workflow/development-world-codec.js";import{cancelExpiredDevelopmentRun}from"#internal/workflow/cancel-expired-development-run.js";import{readDevelopmentGenerationAvailability}from"#internal/workflow/development-runtime-compatibility.js";import{createWorld}from"#compiled/@workflow/world-local/index.js";import{applyLocalWorkflowWorldDeliveryTimeoutDefaults}from"#internal/workflow/local-world-delivery-timeouts.js";function createParentDevelopmentWorkflowWorld(e){return new LocalParentDevelopmentWorkflowWorld(e)}var LocalParentDevelopmentWorkflowWorld=class{#e;#t;#n;#r;#i;#a;#o=new Map;#s=!1;#c=!1;#l=Promise.resolve();constructor(e){if(e.transportSecret.length<16)throw Error(`Development Workflow transport secret is too short to be trusted.`);this.#a=e.resume===!0,this.#e=e.agentName,this.#t=e.appRoot,this.#n=e.resolveActiveGenerationId,this.#r=e.transportSecret,applyLocalWorkflowWorldDeliveryTimeoutDefaults(),this.#i=createWorld({dataDir:resolveLocalWorkflowWorldDataDirectory(e.appRoot),recoverActiveRuns:!1})}async start(){if(this.#c)return;let e=this.#n();this.#o.clear();for(let t of await listDevelopmentGenerationIds(this.#t)){if(t===e)continue;if(!this.#a){this.#o.set(t,{kind:`dormant`});continue}let n=await readDevelopmentGenerationAvailability(this.#t,t);n.kind===`ineligible`&&this.#o.set(t,n)}await this.#i.start?.(),this.#c=!0;try{if(await this.#u(),!this.#a)return;let e=new Set;await reenqueueActiveDevelopmentRuns({enqueue:this.#m.bind(this),prefix:deriveEveWorkflowQueuePrefix(this.#e),world:this.#i,canRecover:async t=>{let n=await this.#_(t);return n.kind===`ineligible`&&!e.has(t)&&(e.add(t),console.warn(`[eve:dev] Skipping retained Workflow generation "${t}": ${n.reason}`)),n.kind===`ready`}})}catch(e){throw this.#c=!1,e}}async close(){this.#s||(this.#s=!0,this.#c=!1,await this.#l.catch(()=>void 0),await this.#i.close?.())}async handleRequest(e){let t=new URL(e.url);if(t.pathname===DEVELOPMENT_WORKFLOW_WORLD_ROUTE)return await this.#f(e);if(t.pathname===DEVELOPMENT_WORKFLOW_STREAM_ROUTE)return await this.#p(e,t)}async reconcileExpiredRuns(){!this.#c||this.#s||await this.#u()}#u(){return this.#l=this.#l.catch(()=>void 0).then(async()=>{if(this.#s)return;let e=await this.#d();for(let t of e)await cancelExpiredDevelopmentRun(this.#i,t)}),this.#l}async#d(){let e=[];for(let t of[`pending`,`running`]){let n;do{let r;try{r=await this.#i.runs.list({pagination:{cursor:n,limit:1e3},resolveData:`none`,status:t})}catch(e){throw Error(`Failed to read the app's active local Workflow runs. Remove "${LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH}" to discard them.`,{cause:e})}for(let t of r.data)(await readDevelopmentGenerationAvailability(this.#t,t.deploymentId)).kind===`missing`&&e.push(t.runId);n=r.hasMore?r.cursor??void 0:void 0}while(n!==void 0)}return e}async#f(e){if(!this.#g(e)||e.method!==`POST`)return Response.json({error:`Workflow World request is not trusted.`},{status:401});try{let t=decodeDevelopmentWorldValue(await e.text()),n=await this.#h(t);return new Response(encodeDevelopmentWorldValue(n))}catch(e){return new Response(encodeDevelopmentWorldValue(serializeDevelopmentWorldError(e)),{status:500})}}async#p(e,t){if(!this.#g(e)||e.method!==`GET`)return Response.json({error:`Workflow World request is not trusted.`},{status:401});let n=t.searchParams.get(`runId`),r=t.searchParams.get(`name`),i=t.searchParams.get(`startIndex`);if(n===null||r===null)return Response.json({error:`Workflow stream request is malformed.`},{status:400});let a=i===null||i===``?void 0:Number(i);if(i===``||a!==void 0&&!Number.isInteger(a))return Response.json({error:`Workflow stream start index is invalid.`},{status:400});try{return new Response(await this.#i.streams.get(n,r,a))}catch(e){return new Response(encodeDevelopmentWorldValue(serializeDevelopmentWorldError(e)),{status:500})}}async#m(...e){let[t,n,r]=e;return await this.#i.queue(t,n,{...r,headers:{...r?.headers,[DEVELOPMENT_WORKFLOW_DELIVERY_HEADER]:this.#r}})}async#h(e){if(!isDevelopmentWorldRequest(e))throw Error(`Development Workflow World call is malformed.`);if(e.operation===`eve.getGenerationAvailability`)return await this.#_(e.generationId);let t=[...e.arguments];if(e.operation===`getDeploymentId`||e.operation===`resolveLatestDeploymentId`)return this.#n();if(e.operation===`queue`)return await this.#m(...t);if(e.operation===`hooks.getByToken`||e.operation===`hooks.get`){if(!this.#c)throw Error(`Local Workflow World is still starting.`);let n=e.operation===`hooks.getByToken`?await this.#i.hooks.getByToken(...t):await this.#i.hooks.get(...t),r=await this.#i.runs.get(n.runId,{resolveData:`none`}),i=await this.#_(r.deploymentId);if(i.kind===`dormant`||i.kind===`ineligible`)throw new DevelopmentRunUnavailableError({availability:i.kind,runId:n.runId});return n}if(e.operation===`streams.writeMulti`&&this.#i.streams.writeMulti===void 0){for(let e of t[2])await this.#i.streams.write(t[0],t[1],e);return}let n=e.operation.indexOf(`.`),r=this.#i[e.operation.slice(0,n)],i=typeof r==`object`&&r?r[e.operation.slice(n+1)]:void 0;if(typeof i==`function`)return await Reflect.apply(i,r,t)}#g(e){let t=e.headers.get(DEVELOPMENT_WORKFLOW_TRANSPORT_HEADER);return t!==null&&timingSafeEqualStrings(t,this.#r)}async#_(e){let t=await readDevelopmentGenerationAvailability(this.#t,e);return t.kind===`ready`?this.#o.get(e)??t:t}};const DEVELOPMENT_WORLD_OPERATION_SET=new Set(DEVELOPMENT_WORLD_OPERATIONS);function isDevelopmentWorldRequest(e){return isObject(e)&&typeof e.operation==`string`&&(e.operation===`eve.getGenerationAvailability`?typeof e.generationId==`string`:DEVELOPMENT_WORLD_OPERATION_SET.has(e.operation)&&Array.isArray(e.arguments))}function isObject(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}async function reenqueueActiveDevelopmentRuns(e){for(let t of[`pending`,`running`]){let n;do{let r;try{r=await e.world.runs.list({pagination:{cursor:n},resolveData:`none`,status:t})}catch(e){throw Error(`Failed to read the app's active local Workflow runs. Remove "${LOCAL_WORKFLOW_WORLD_DATA_DIRECTORY_RELATIVE_PATH}" to discard them.`,{cause:e})}for(let t of r.data)await e.canRecover(t.deploymentId)&&await e.enqueue(`${e.prefix}${t.workflowName}`,{runId:t.runId});n=r.hasMore?r.cursor??void 0:void 0}while(n!==void 0)}}export{createParentDevelopmentWorkflowWorld};
@@ -1,4 +1,4 @@
1
1
  /** Configure the freshly constructed built-in Vercel World before installation. */
2
2
  export declare function applyVercelWorkflowWorldDefaults(world: {
3
3
  streamFlushIntervalMs?: number;
4
- }, env?: Record<string, string | undefined>): void;
4
+ }): void;
@@ -1 +1 @@
1
- function applyVercelWorkflowWorldDefaults(e,t=process.env){e.streamFlushIntervalMs??=10,(t.WORKFLOW_STREAMS_TRANSPORT===void 0||t.WORKFLOW_STREAMS_TRANSPORT===``)&&(t.WORKFLOW_STREAMS_TRANSPORT=`ws`)}export{applyVercelWorkflowWorldDefaults};
1
+ function applyVercelWorkflowWorldDefaults(e){e.streamFlushIntervalMs??=10}export{applyVercelWorkflowWorldDefaults};
@@ -1 +1 @@
1
- import{existsSync,readFileSync,realpathSync}from"node:fs";import{dirname,isAbsolute,join,relative,resolve,sep}from"node:path";import{AGENT_TOOL_SERVE_WORKFLOW_NAME}from"#runtime/subagents/workflow-reference.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{STABLE_WORKFLOW_NAMES}from"#execution/stable-workflow-names.js";import{prepareAuthoredWorkflowDirectives}from"#internal/workflow-bundle/authored-workflow-directives.js";import{findWorkflowDirectiveFunctions,stripJavaScriptExtension,transformWorkflowDirectives}from"#internal/workflow-bundle/workflow-transformer.js";const packageJsonCache=new Map,projectDepsCache=new Map;async function applyWorkflowTransform(e,t,n,r,i,a=new Set([...STABLE_WORKFLOW_NAMES,AGENT_TOOL_SERVE_WORKFLOW_NAME])){let o=i??process.cwd(),s=r===void 0?isAbsolute(e)?e:join(o,e):r,{moduleSpecifier:c,stableModuleSpecifier:l}=resolveModuleSpecifier(s,o,n===`metadata`);if(r!==void 0&&isAuthoredApplicationModule(r,o)){let e=n===!1?void 0:await prepareAuthoredWorkflowDirectives({filePath:r,source:t});return transformWorkflowDirectives({authored:!0,authorizeSteps:!0,filename:authoredRelativePath(r,o),mode:e?.hasDirectives===!0&&n,moduleSpecifier:authoredModuleIdBase(r,o),source:e?.source??t,stableModuleSpecifier:void 0,stableWorkflowNames:a})}return transformWorkflowDirectives({authorizeSteps:isPackageTestFixtureModule(s),filename:e,mode:n,moduleSpecifier:c,source:t,stableModuleSpecifier:l,stableWorkflowNames:a})}function isPackageTestFixtureModule(e){return e.replace(/\\/g,`/`).includes(`/src/internal/testing/`)}function isAuthoredApplicationModule(e,t){if(!isAbsolute(e))return!1;let n=toRealPath(t).replace(/\\/g,`/`).replace(/\/$/,``),r=toRealPath(e).replace(/\\/g,`/`);if(isInNodeModules(r))return!1;if(!r.startsWith(`${n}/`)){let e=findPackageRoot(n);if(e===null||findPackageRoot(dirname(r))!==e)return!1}return findPackageJson(r)?.name!==EVE_PACKAGE_NAME}function authoredRelativePath(e,t){return toRelativeImportPath(toRealPath(e),toRealPath(t)).replace(/^\.\//,``)}function authoredModuleIdBase(e,t){let n=stripJavaScriptExtension(authoredRelativePath(e,t));return n.startsWith(`../`)?n:`./${n}`}const packageRootCache=new Map;function findPackageRoot(e){let t=packageRootCache.get(e);if(t!==void 0)return t;let n=dirname(e),r=existsSync(join(e,`package.json`))?e:n===e?null:findPackageRoot(n);return packageRootCache.set(e,r),r}function toRealPath(e){try{return realpathSync(e)}catch{return resolve(e)}}async function findWorkflowPatterns(e,t){let n=await findWorkflowDirectiveFunctions(e,t);return{hasSerde:t.includes(`workflow.serde`)||t.includes(`@serde`)||t.includes(`workflowSerde`)||t.includes(`__workflow_serde`),hasUseStep:n.some(e=>e.directive===`use step`),hasUseWorkflow:n.some(e=>e.directive===`use workflow`)}}function getImportPath(e,t){let n=isInNodeModules(e),r=!n&&isWorkspacePackage(e,t);if(n||r){let n=findPackageJson(e);if(n!==null){let i=getProjectDependencies(t).has(n.name);if(!(r||i))return{importPath:toRelativeImportPath(e,t),isPackage:!1};let a=resolveExportSubpath(e,n);return a?{importPath:`${n.name}${a}`,isPackage:!0}:isRootEntrypointFile(e,n)?{importPath:n.name,isPackage:!0}:{importPath:toRelativeImportPath(e,t),isPackage:!1}}}return{importPath:toRelativeImportPath(e,t),isPackage:!1}}function resolveModuleSpecifier(e,t,n=!1){let r=isInNodeModules(e),i=!r&&isWorkspacePackage(e,t),a=findPackageJson(e);if(n&&a!==null)return{moduleSpecifier:`${a.name}@${a.version}`,stableModuleSpecifier:a.name};if(!r&&!i)return{moduleSpecifier:void 0,stableModuleSpecifier:a?.name===EVE_PACKAGE_NAME?EVE_PACKAGE_NAME:void 0};if(a===null)return{moduleSpecifier:void 0,stableModuleSpecifier:void 0};let o=resolveExportSubpath(e,a),s=o?`${a.name}${o}`:a.name;return{moduleSpecifier:`${s}@${a.version}`,stableModuleSpecifier:s}}function findPackageJson(e){let t=dirname(e),n=[];for(;t!==dirname(t);){let e=packageJsonCache.get(t);if(e!==void 0){for(let t of n)packageJsonCache.set(t,e);return e}n.push(t);let r=join(t,`package.json`);if(existsSync(r))try{let e=JSON.parse(readFileSync(r,`utf8`));if(typeof e.name==`string`&&typeof e.version==`string`){let r={dir:t,exports:e.exports,main:e.main,module:e.module,name:e.name,version:e.version};packageJsonCache.set(t,r);for(let e of n)packageJsonCache.set(e,r);return r}}catch{}t=dirname(t)}for(let e of n)packageJsonCache.set(e,null);return null}function resolveExportSubpath(e,t){if(t.exports===null||typeof t.exports!=`object`||Array.isArray(t.exports))return``;let n=e.replace(/\\/g,`/`),r=t.dir.replace(/\\/g,`/`),i=n.startsWith(`${r}/`)?`./${n.substring(r.length+1)}`:null;if(i===null)return``;for(let[e,n]of Object.entries(t.exports)){let t=resolveExportTarget(n);if(t!==null&&normalizeExportPath(t)===i)return e===`.`?``:e.substring(1)}return``}function resolveExportTarget(e){if(typeof e==`string`)return e;if(Array.isArray(e)){for(let t of e){let e=resolveExportTarget(t);if(e!==null)return e}return null}if(typeof e==`object`&&e)for(let t of[`workflow`,`default`,`require`,`import`,`node`]){let n=e[t],r=resolveExportTarget(n);if(r!==null)return r}return null}function normalizeExportPath(e){return e.startsWith(`./`)?e:`./${e}`}function isInNodeModules(e){return e.split(sep).join(`/`).includes(`/node_modules/`)}function getProjectDependencies(e){let t=projectDepsCache.get(e);if(t!==void 0)return t;let n=new Set,r=join(e,`package.json`);if(existsSync(r))try{let e=JSON.parse(readFileSync(r,`utf8`));for(let t of[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`]){let r=e[t];if(typeof r==`object`&&r&&!Array.isArray(r))for(let e of Object.keys(r))n.add(e)}}catch{}return projectDepsCache.set(e,n),n}function isWorkspacePackage(e,t){if(isInNodeModules(e))return!1;let n=findPackageJson(e);return n===null||resolve(n.dir)===resolve(t)?!1:getProjectDependencies(t).has(n.name)}function toRelativeImportPath(e,t){let n=t.replace(/\\/g,`/`),r=e.replace(/\\/g,`/`),i=r.startsWith(`${n}/`)?r.substring(n.length+1):relative(t,e).replace(/\\/g,`/`);return i.startsWith(`.`)||(i=`./${i}`),i}function hasRootExport(e){if(typeof e==`string`||Array.isArray(e))return!0;if(typeof e!=`object`||!e)return!1;let t=Object.keys(e);return t.length>0&&t.every(e=>!e.startsWith(`.`))?!0:`.`in e}function normalizePackageTargetPath(e){let t=e.replace(/\\/g,`/`);return t.startsWith(`./`)?t.substring(2):t.startsWith(`/`)?t.substring(1):t}function isRootEntrypointFile(e,t){let n=e.replace(/\\/g,`/`),r=t.dir.replace(/\\/g,`/`);if(!n.startsWith(`${r}/`))return!1;let i=n.substring(r.length+1);if(t.exports!==void 0){let e;if(t.exports!==null&&typeof t.exports==`object`&&`.`in t.exports)e=t.exports[`.`];else if(hasRootExport(t.exports))e=t.exports;else return!1;let n=resolveExportTarget(e);return n!==null&&normalizePackageTargetPath(n)===i}return[t.module,t.main,`index.js`,`index.mjs`,`index.cjs`,`index.ts`,`index.mts`,`index.cts`].flatMap(e=>typeof e==`string`?[normalizePackageTargetPath(e)]:[]).includes(i)}export{applyWorkflowTransform,findWorkflowPatterns,getImportPath,isAuthoredApplicationModule};
1
+ import{existsSync,readFileSync,realpathSync}from"node:fs";import{dirname,isAbsolute,join,relative,resolve,sep}from"node:path";import{AGENT_TOOL_SERVE_WORKFLOW_NAME}from"#runtime/subagents/workflow-reference.js";import{STABLE_WORKFLOW_NAMES}from"#execution/stable-workflow-names.js";import{EVE_PACKAGE_NAME}from"#internal/package-name.js";import{prepareAuthoredWorkflowDirectives}from"#internal/workflow-bundle/authored-workflow-directives.js";import{findWorkflowDirectiveFunctions,stripJavaScriptExtension,transformWorkflowDirectives}from"#internal/workflow-bundle/workflow-transformer.js";const packageJsonCache=new Map,projectDepsCache=new Map;async function applyWorkflowTransform(e,t,n,r,i,a=new Set([...STABLE_WORKFLOW_NAMES,AGENT_TOOL_SERVE_WORKFLOW_NAME])){let o=i??process.cwd(),s=r===void 0?isAbsolute(e)?e:join(o,e):r,{moduleSpecifier:c,stableModuleSpecifier:l}=resolveModuleSpecifier(s,o,n===`metadata`);if(r!==void 0&&isAuthoredApplicationModule(r,o)){let e=n===!1?void 0:await prepareAuthoredWorkflowDirectives({filePath:r,source:t});return transformWorkflowDirectives({authored:!0,authorizeSteps:!0,filename:authoredRelativePath(r,o),mode:e?.hasDirectives===!0&&n,moduleSpecifier:authoredModuleIdBase(r,o),source:e?.source??t,stableModuleSpecifier:void 0,stableWorkflowNames:a})}return transformWorkflowDirectives({authorizeSteps:isPackageTestFixtureModule(s),filename:e,mode:n,moduleSpecifier:c,source:t,stableModuleSpecifier:l,stableWorkflowNames:a})}function isPackageTestFixtureModule(e){return e.replace(/\\/g,`/`).includes(`/src/internal/testing/`)}function isAuthoredApplicationModule(e,t){if(!isAbsolute(e))return!1;let n=toRealPath(t).replace(/\\/g,`/`).replace(/\/$/,``),r=toRealPath(e).replace(/\\/g,`/`);if(isInNodeModules(r))return!1;if(!r.startsWith(`${n}/`)){let e=findPackageRoot(n);if(e===null||findPackageRoot(dirname(r))!==e)return!1}return findPackageJson(r)?.name!==EVE_PACKAGE_NAME}function authoredRelativePath(e,t){return toRelativeImportPath(toRealPath(e),toRealPath(t)).replace(/^\.\//,``)}function authoredModuleIdBase(e,t){let n=stripJavaScriptExtension(authoredRelativePath(e,t));return n.startsWith(`../`)?n:`./${n}`}const packageRootCache=new Map;function findPackageRoot(e){let t=packageRootCache.get(e);if(t!==void 0)return t;let n=dirname(e),r=existsSync(join(e,`package.json`))?e:n===e?null:findPackageRoot(n);return packageRootCache.set(e,r),r}function toRealPath(e){try{return realpathSync(e)}catch{return resolve(e)}}async function findWorkflowPatterns(e,t){let n=await findWorkflowDirectiveFunctions(e,t);return{hasSerde:t.includes(`workflow.serde`)||t.includes(`@serde`)||t.includes(`workflowSerde`)||t.includes(`__workflow_serde`),hasUseStep:n.some(e=>e.directive===`use step`),hasUseWorkflow:n.some(e=>e.directive===`use workflow`)}}function getImportPath(e,t){let n=isInNodeModules(e),r=!n&&isWorkspacePackage(e,t);if(n||r){let n=findPackageJson(e);if(n!==null){let i=getProjectDependencies(t).has(n.name);if(!(r||i))return{importPath:toRelativeImportPath(e,t),isPackage:!1};let a=resolveExportSubpath(e,n);return a?{importPath:`${n.name}${a}`,isPackage:!0}:isRootEntrypointFile(e,n)?{importPath:n.name,isPackage:!0}:{importPath:toRelativeImportPath(e,t),isPackage:!1}}}return{importPath:toRelativeImportPath(e,t),isPackage:!1}}function resolveModuleSpecifier(e,t,n=!1){let r=isInNodeModules(e),i=!r&&isWorkspacePackage(e,t),a=findPackageJson(e);if(n&&a!==null)return{moduleSpecifier:`${a.name}@${a.version}`,stableModuleSpecifier:a.name};if(!r&&!i)return{moduleSpecifier:void 0,stableModuleSpecifier:a?.name===EVE_PACKAGE_NAME?EVE_PACKAGE_NAME:void 0};if(a===null)return{moduleSpecifier:void 0,stableModuleSpecifier:void 0};let o=resolveExportSubpath(e,a),s=o?`${a.name}${o}`:a.name;return{moduleSpecifier:`${s}@${a.version}`,stableModuleSpecifier:s}}function findPackageJson(e){let t=dirname(e),n=[];for(;t!==dirname(t);){let e=packageJsonCache.get(t);if(e!==void 0){for(let t of n)packageJsonCache.set(t,e);return e}n.push(t);let r=join(t,`package.json`);if(existsSync(r))try{let e=JSON.parse(readFileSync(r,`utf8`));if(typeof e.name==`string`&&typeof e.version==`string`){let r={dir:t,exports:e.exports,main:e.main,module:e.module,name:e.name,version:e.version};packageJsonCache.set(t,r);for(let e of n)packageJsonCache.set(e,r);return r}}catch{}t=dirname(t)}for(let e of n)packageJsonCache.set(e,null);return null}function resolveExportSubpath(e,t){if(t.exports===null||typeof t.exports!=`object`||Array.isArray(t.exports))return``;let n=e.replace(/\\/g,`/`),r=t.dir.replace(/\\/g,`/`),i=n.startsWith(`${r}/`)?`./${n.substring(r.length+1)}`:null;if(i===null)return``;for(let[e,n]of Object.entries(t.exports)){let t=resolveExportTarget(n);if(t!==null&&normalizeExportPath(t)===i)return e===`.`?``:e.substring(1)}return``}function resolveExportTarget(e){if(typeof e==`string`)return e;if(Array.isArray(e)){for(let t of e){let e=resolveExportTarget(t);if(e!==null)return e}return null}if(typeof e==`object`&&e)for(let t of[`workflow`,`default`,`require`,`import`,`node`]){let n=e[t],r=resolveExportTarget(n);if(r!==null)return r}return null}function normalizeExportPath(e){return e.startsWith(`./`)?e:`./${e}`}function isInNodeModules(e){return e.split(sep).join(`/`).includes(`/node_modules/`)}function getProjectDependencies(e){let t=projectDepsCache.get(e);if(t!==void 0)return t;let n=new Set,r=join(e,`package.json`);if(existsSync(r))try{let e=JSON.parse(readFileSync(r,`utf8`));for(let t of[`dependencies`,`devDependencies`,`peerDependencies`,`optionalDependencies`]){let r=e[t];if(typeof r==`object`&&r&&!Array.isArray(r))for(let e of Object.keys(r))n.add(e)}}catch{}return projectDepsCache.set(e,n),n}function isWorkspacePackage(e,t){if(isInNodeModules(e))return!1;let n=findPackageJson(e);return n===null||resolve(n.dir)===resolve(t)?!1:getProjectDependencies(t).has(n.name)}function toRelativeImportPath(e,t){let n=t.replace(/\\/g,`/`),r=e.replace(/\\/g,`/`),i=r.startsWith(`${n}/`)?r.substring(n.length+1):relative(t,e).replace(/\\/g,`/`);return i.startsWith(`.`)||(i=`./${i}`),i}function hasRootExport(e){if(typeof e==`string`||Array.isArray(e))return!0;if(typeof e!=`object`||!e)return!1;let t=Object.keys(e);return t.length>0&&t.every(e=>!e.startsWith(`.`))?!0:`.`in e}function normalizePackageTargetPath(e){let t=e.replace(/\\/g,`/`);return t.startsWith(`./`)?t.substring(2):t.startsWith(`/`)?t.substring(1):t}function isRootEntrypointFile(e,t){let n=e.replace(/\\/g,`/`),r=t.dir.replace(/\\/g,`/`);if(!n.startsWith(`${r}/`))return!1;let i=n.substring(r.length+1);if(t.exports!==void 0){let e;if(t.exports!==null&&typeof t.exports==`object`&&`.`in t.exports)e=t.exports[`.`];else if(hasRootExport(t.exports))e=t.exports;else return!1;let n=resolveExportTarget(e);return n!==null&&normalizePackageTargetPath(n)===i}return[t.module,t.main,`index.js`,`index.mjs`,`index.cjs`,`index.ts`,`index.mts`,`index.cts`].flatMap(e=>typeof e==`string`?[normalizePackageTargetPath(e)]:[]).includes(i)}export{applyWorkflowTransform,findWorkflowPatterns,getImportPath,isAuthoredApplicationModule};
@@ -0,0 +1,12 @@
1
+ export declare const SEARCH_TOOL_NAME = "eve__search";
2
+ /** Calls a deferred entry or connection tool by name. */
3
+ export declare const CALL_TOOL_NAME = "eve__tool";
4
+ /** Loads a skill by name. */
5
+ export declare const SKILL_TOOL_NAME = "eve__skill";
6
+ /**
7
+ * The name an `eve__skill` call takes once it resolves inside the harness,
8
+ * where it reports as a `load-skill` action named for its skill. The colon
9
+ * keeps it out of the tool namespace, because skills and tools have separate
10
+ * names. Stream events and client message parts never carry it.
11
+ */
12
+ export declare const SKILL_ENTRY_NAME = "eve:load-skill";
@@ -0,0 +1 @@
1
+ const SEARCH_TOOL_NAME=`eve__search`,CALL_TOOL_NAME=`eve__tool`,SKILL_TOOL_NAME=`eve__skill`,SKILL_ENTRY_NAME=`eve:load-skill`;export{CALL_TOOL_NAME,SEARCH_TOOL_NAME,SKILL_ENTRY_NAME,SKILL_TOOL_NAME};
@@ -1 +1 @@
1
- import{EVE_MESSAGE_STREAM_VERSION}from"#protocol/message.js";const currentMessageStreamVersion=EVE_MESSAGE_STREAM_VERSION;function normalizeMessageStreamEvent(e,t){switch(e){case`21`:case`22`:case`23`:case`24`:return normalizeLegacyMessageStreamEvent(e,t);case`25`:case`26`:return validateDeltaMessageStreamEvent(e,t);default:return assertNever(e)}}function normalizePersistedMessageStreamEvent(e){return e.type===`message.appended`&&`messageSoFar`in e.data||e.type===`reasoning.appended`&&`reasoningSoFar`in e.data||e.type===`action.input.appended`&&`inputTextOffset`in e.data?normalizeLegacyMessageStreamEvent(void 0,e):normalizeMessageStreamEvent(currentMessageStreamVersion,e)}function normalizeLegacyMessageStreamEvent(e,t){if(t.type===`message.appended`)return assertLegacyAppendSnapshot(t.data.messageSoFar,t.data.messageDelta,`message`,e),{data:{messageDelta:t.data.messageDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,turnId:t.data.turnId},meta:t.meta,type:`message.appended`};if(t.type===`reasoning.appended`)return assertLegacyAppendSnapshot(t.data.reasoningSoFar,t.data.reasoningDelta,`reasoning`,e),{data:{reasoningDelta:t.data.reasoningDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,turnId:t.data.turnId},meta:t.meta,type:`reasoning.appended`};if(t.type===`action.input.appended`){if(e!==void 0&&e!==`24`)throw TypeError(`Invalid action input append for stream version ${e}.`);return assertLegacyActionInputOffset(t.data.inputTextOffset,e),{data:{callId:t.data.callId,inputTextDelta:t.data.inputTextDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,toolName:t.data.toolName,turnId:t.data.turnId},meta:t.meta,type:`action.input.appended`}}return t}function validateDeltaMessageStreamEvent(e,t){return t.type===`message.appended`?(assertAppendDelta(t.data.messageDelta,`message`,e),assertUnsupportedAppendField(t.data,`messageOffset`,`message`,e),assertUnsupportedAppendField(t.data,`messageSoFar`,`message`,e)):t.type===`reasoning.appended`?(assertAppendDelta(t.data.reasoningDelta,`reasoning`,e),assertUnsupportedAppendField(t.data,`reasoningOffset`,`reasoning`,e),assertUnsupportedAppendField(t.data,`reasoningSoFar`,`reasoning`,e)):t.type===`action.input.appended`&&(assertAppendDelta(t.data.inputTextDelta,`action input`,e),assertUnsupportedAppendField(t.data,`inputTextOffset`,`action input`,e)),t}function assertAppendDelta(e,t,n){if(typeof e!=`string`)throw TypeError(`Invalid ${t} append delta for stream version ${n}.`)}function assertUnsupportedAppendField(e,t,n,r){if(t in e)throw TypeError(`Invalid ${n} append shape for stream version ${r}.`)}function assertNever(e){throw TypeError(`Unsupported message stream version: ${String(e)}.`)}function assertLegacyActionInputOffset(e,t){if(!Number.isSafeInteger(e)||e<0){let e=t===void 0?`persisted stream`:`stream version ${t}`;throw TypeError(`Invalid action input append offset for ${e}.`)}}function assertLegacyAppendSnapshot(e,t,n,r){let i=e.length-t.length;if(i<0||e.slice(i)!==t){let e=r===void 0?`persisted stream`:`stream version ${r}`;throw TypeError(`Invalid cumulative ${n} append for ${e}.`)}}export{normalizeMessageStreamEvent,normalizePersistedMessageStreamEvent};
1
+ import{EVE_MESSAGE_STREAM_VERSION}from"#protocol/message.js";const currentMessageStreamVersion=EVE_MESSAGE_STREAM_VERSION;function normalizeMessageStreamEvent(e,t){return nameSkillLoads(normalizeAppendEvent(e,t))}function normalizeAppendEvent(e,t){switch(e){case`21`:case`22`:case`23`:case`24`:return normalizeLegacyMessageStreamEvent(e,t);case`25`:case`26`:return validateDeltaMessageStreamEvent(e,t);default:return assertNever(e)}}function normalizePersistedMessageStreamEvent(e){return e.type===`message.appended`&&`messageSoFar`in e.data||e.type===`reasoning.appended`&&`reasoningSoFar`in e.data||e.type===`action.input.appended`&&`inputTextOffset`in e.data?normalizeLegacyMessageStreamEvent(void 0,e):normalizeMessageStreamEvent(currentMessageStreamVersion,e)}function normalizeLegacyMessageStreamEvent(e,t){if(t.type===`message.appended`)return assertLegacyAppendSnapshot(t.data.messageSoFar,t.data.messageDelta,`message`,e),{data:{messageDelta:t.data.messageDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,turnId:t.data.turnId},meta:t.meta,type:`message.appended`};if(t.type===`reasoning.appended`)return assertLegacyAppendSnapshot(t.data.reasoningSoFar,t.data.reasoningDelta,`reasoning`,e),{data:{reasoningDelta:t.data.reasoningDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,turnId:t.data.turnId},meta:t.meta,type:`reasoning.appended`};if(t.type===`action.input.appended`){if(e!==void 0&&e!==`24`)throw TypeError(`Invalid action input append for stream version ${e}.`);return assertLegacyActionInputOffset(t.data.inputTextOffset,e),{data:{callId:t.data.callId,inputTextDelta:t.data.inputTextDelta,sequence:t.data.sequence,stepIndex:t.data.stepIndex,toolName:t.data.toolName,turnId:t.data.turnId},meta:t.meta,type:`action.input.appended`}}return t}function nameSkillLoads(e){return e.type!==`actions.requested`||!e.data.actions.some(isUnnamedSkillLoad)?e:{...e,data:{...e.data,actions:e.data.actions.map(e=>isUnnamedSkillLoad(e)?{...e,name:releasedSkillName(e)}:e)}}}function isUnnamedSkillLoad(e){return e.kind===`load-skill`&&typeof Reflect.get(e,`name`)!=`string`}function releasedSkillName(e){let t=e.input.skill;return typeof t==`string`?t:`load_skill`}function validateDeltaMessageStreamEvent(e,t){return t.type===`message.appended`?(assertAppendDelta(t.data.messageDelta,`message`,e),assertUnsupportedAppendField(t.data,`messageOffset`,`message`,e),assertUnsupportedAppendField(t.data,`messageSoFar`,`message`,e)):t.type===`reasoning.appended`?(assertAppendDelta(t.data.reasoningDelta,`reasoning`,e),assertUnsupportedAppendField(t.data,`reasoningOffset`,`reasoning`,e),assertUnsupportedAppendField(t.data,`reasoningSoFar`,`reasoning`,e)):t.type===`action.input.appended`&&(assertAppendDelta(t.data.inputTextDelta,`action input`,e),assertUnsupportedAppendField(t.data,`inputTextOffset`,`action input`,e)),t}function assertAppendDelta(e,t,n){if(typeof e!=`string`)throw TypeError(`Invalid ${t} append delta for stream version ${n}.`)}function assertUnsupportedAppendField(e,t,n,r){if(t in e)throw TypeError(`Invalid ${n} append shape for stream version ${r}.`)}function assertNever(e){throw TypeError(`Unsupported message stream version: ${String(e)}.`)}function assertLegacyActionInputOffset(e,t){if(!Number.isSafeInteger(e)||e<0){let e=t===void 0?`persisted stream`:`stream version ${t}`;throw TypeError(`Invalid action input append offset for ${e}.`)}}function assertLegacyAppendSnapshot(e,t,n,r){let i=e.length-t.length;if(i<0||e.slice(i)!==t){let e=r===void 0?`persisted stream`:`stream version ${r}`;throw TypeError(`Invalid cumulative ${n} append for ${e}.`)}}export{normalizeMessageStreamEvent,normalizePersistedMessageStreamEvent};
@@ -85,6 +85,17 @@ export interface SubagentSessionInvocationMetadata {
85
85
  readonly parentTurnId: string;
86
86
  readonly name: string;
87
87
  }
88
+ /**
89
+ * The session this one replaced. Present on a session eve started in place of
90
+ * one whose deployment was retired, when the next ordinary channel message
91
+ * arrived before the earlier session timed out. This session has its own id,
92
+ * stream, auth, and state, and starts with no history from its predecessor;
93
+ * read the predecessor with `sessions.attach(sessionId)` from `eve/server`.
94
+ */
95
+ export interface SessionPredecessor {
96
+ /** Id of the session this one replaced. Its recorded history stays readable. */
97
+ readonly sessionId: string;
98
+ }
88
99
  /**
89
100
  * Runtime identity metadata attached to the `session.started` event.
90
101
  *
@@ -139,6 +150,8 @@ export type HandleMessageRequestBody = {
139
150
  export interface SessionStartedStreamEvent {
140
151
  data: {
141
152
  invocation?: SubagentSessionInvocationMetadata;
153
+ /** Present when this session replaced one that could no longer run. */
154
+ predecessor?: SessionPredecessor;
142
155
  runtime?: RuntimeIdentity;
143
156
  trace?: RuntimeTraceContext;
144
157
  };
@@ -399,7 +412,7 @@ export interface TaskSettledStreamEvent {
399
412
  type: "task.settled";
400
413
  }
401
414
  /**
402
- * Why the session cancelled a task call: the model called `task_cancel`,
415
+ * Why the session cancelled a task call: the model called `eve__task_cancel`,
403
416
  * someone cancelled the turn (or, between turns, the tasks still working), or
404
417
  * the turn ended while the task still worked.
405
418
  */
@@ -796,6 +809,7 @@ export declare function isTurnFailureEvent<TEvent extends UnstampedMessageStream
796
809
  */
797
810
  export declare function createSessionStartedEvent(input?: {
798
811
  readonly invocation?: SubagentSessionInvocationMetadata;
812
+ readonly predecessor?: SessionPredecessor;
799
813
  readonly runtime?: RuntimeIdentity;
800
814
  readonly trace?: RuntimeTraceContext;
801
815
  }): SessionStartedStreamEvent;
@@ -1,2 +1,2 @@
1
- import{deserializeUrlFilePart,hasInternalRefScheme,isSerializedUrlFilePart}from"#internal/attachments/url-refs.js";import{createEveSessionStreamRoutePath,createEveSubagentStreamRoutePath}from"#protocol/routes.js";import{decodeSandboxRef,isSandboxRefUrl}from"#internal/attachments/sandbox-refs.js";import{createEventId}from"#protocol/event-id.js";const EVE_SESSION_ID_HEADER=`x-eve-session-id`,EVE_STREAM_FORMAT_HEADER=`x-eve-stream-format`,EVE_STREAM_TAIL_INDEX_HEADER=`x-eve-stream-tail-index`,EVE_STREAM_VERSION_HEADER=`x-eve-stream-version`,EVE_MESSAGE_STREAM_CONTENT_TYPE=`application/x-ndjson; charset=utf-8`,EVE_MESSAGE_STREAM_FORMAT=`ndjson`,EVE_MESSAGE_STREAM_VERSION=`26`,EVE_STREAM_CONTROL_VERSION=`1`,EVE_STREAM_CONTROL_VERSION_QUERY=`streamControlVersion`,EVE_STREAM_LEASE_ENDED_CONTROL={$eve:`stream.lease-ended`,version:1},textEncoder=new TextEncoder;function isCurrentTurnBoundaryEvent(e){return e.type===`session.completed`||e.type===`session.failed`||e.type===`session.waiting`}function isTurnFailureEvent(e){return e.type===`session.failed`||e.type===`step.failed`||e.type===`turn.failed`}function createSessionStartedEvent(e){let t={};return e?.invocation!==void 0&&(t.invocation=e.invocation),e?.runtime!==void 0&&(t.runtime=e.runtime),e?.trace!==void 0&&(t.trace=e.trace),{data:t,type:`session.started`}}function createTurnStartedEvent(e){let t={sequence:e.sequence,turnId:e.turnId};return e.trace!==void 0&&(t.trace=e.trace),{data:t,type:`turn.started`}}function createMessageReceivedEvent(e){return{data:{message:summarizeUserContent(e.message),parts:projectUserContentParts(e.message),sequence:e.sequence,turnId:e.turnId},type:`message.received`}}function summarizeUserContent(e){if(typeof e==`string`)return e;let t=[];for(let n of e)if(n.type===`text`)t.push(n.text);else if(n.type===`file`){let e=n.filename??n.mediaType;t.push(`[file: ${e} (${n.mediaType})]`)}else n.type===`image`&&t.push(`[image: ${n.mediaType??`image`}]`);return t.join(`
1
+ import{deserializeUrlFilePart,hasInternalRefScheme,isSerializedUrlFilePart}from"#internal/attachments/url-refs.js";import{createEveSessionStreamRoutePath,createEveSubagentStreamRoutePath}from"#protocol/routes.js";import{decodeSandboxRef,isSandboxRefUrl}from"#internal/attachments/sandbox-refs.js";import{createEventId}from"#protocol/event-id.js";const EVE_SESSION_ID_HEADER=`x-eve-session-id`,EVE_STREAM_FORMAT_HEADER=`x-eve-stream-format`,EVE_STREAM_TAIL_INDEX_HEADER=`x-eve-stream-tail-index`,EVE_STREAM_VERSION_HEADER=`x-eve-stream-version`,EVE_MESSAGE_STREAM_CONTENT_TYPE=`application/x-ndjson; charset=utf-8`,EVE_MESSAGE_STREAM_FORMAT=`ndjson`,EVE_MESSAGE_STREAM_VERSION=`26`,EVE_STREAM_CONTROL_VERSION=`1`,EVE_STREAM_CONTROL_VERSION_QUERY=`streamControlVersion`,EVE_STREAM_LEASE_ENDED_CONTROL={$eve:`stream.lease-ended`,version:1},textEncoder=new TextEncoder;function isCurrentTurnBoundaryEvent(e){return e.type===`session.completed`||e.type===`session.failed`||e.type===`session.waiting`}function isTurnFailureEvent(e){return e.type===`session.failed`||e.type===`step.failed`||e.type===`turn.failed`}function createSessionStartedEvent(e){let t={};return e?.invocation!==void 0&&(t.invocation=e.invocation),e?.predecessor!==void 0&&(t.predecessor=e.predecessor),e?.runtime!==void 0&&(t.runtime=e.runtime),e?.trace!==void 0&&(t.trace=e.trace),{data:t,type:`session.started`}}function createTurnStartedEvent(e){let t={sequence:e.sequence,turnId:e.turnId};return e.trace!==void 0&&(t.trace=e.trace),{data:t,type:`turn.started`}}function createMessageReceivedEvent(e){return{data:{message:summarizeUserContent(e.message),parts:projectUserContentParts(e.message),sequence:e.sequence,turnId:e.turnId},type:`message.received`}}function summarizeUserContent(e){if(typeof e==`string`)return e;let t=[];for(let n of e)if(n.type===`text`)t.push(n.text);else if(n.type===`file`){let e=n.filename??n.mediaType;t.push(`[file: ${e} (${n.mediaType})]`)}else n.type===`image`&&t.push(`[image: ${n.mediaType??`image`}]`);return t.join(`
2
2
  `)}function projectUserContentParts(e){if(typeof e==`string`)return[{text:e,type:`text`}];let t=[];for(let n of e)n.type===`text`?t.push({text:n.text,type:`text`}):n.type===`file`?t.push(projectFileLikePart(n.data,n.mediaType,n.filename)):n.type===`image`&&t.push(projectFileLikePart(n.image,n.mediaType??`application/octet-stream`,void 0));return t}function projectFileLikePart(e,t,n){if(isSandboxRefUrl(e)){let t=decodeSandboxRef(e);return createProjectedFilePart({filename:basenameOf(n??t.path),mediaType:t.mediaType,size:t.size})}let r=projectTaggedFileData(e,t,n);if(r!==void 0)return r;let i=byteLengthOf(e);return createProjectedFilePart(i===void 0?{filename:n,mediaType:t,...clientUrlFragment(e)}:{filename:n,mediaType:t,size:i})}function projectTaggedFileData(e,t,n){if(isTaggedFileData(e))switch(e.type){case`data`:{let r=byteLengthOf(e.data);return createProjectedFilePart(r===void 0?{filename:n,mediaType:t}:{filename:n,mediaType:t,size:r})}case`reference`:case`text`:return createProjectedFilePart({filename:n,mediaType:t});case`url`:return createProjectedFilePart({filename:n,mediaType:t,...clientUrlFragment(e.url)})}}function createProjectedFilePart(e){let t={mediaType:e.mediaType,type:`file`};return e.filename!==void 0&&(t.filename=e.filename),e.size!==void 0&&(t.size=e.size),e.url!==void 0&&(t.url=e.url),t}function isTaggedFileData(e){if(typeof e!=`object`||!e)return!1;let t=e.type;return t===`data`||t===`reference`||t===`text`||t===`url`}function byteLengthOf(e){if(e instanceof Uint8Array||e instanceof ArrayBuffer)return e.byteLength}function clientUrlFragment(e){if(isSerializedUrlFilePart(e))try{let t=deserializeUrlFilePart(e);return isClientResolvableUrl(t)?{url:t.href}:{}}catch{return{}}if(e instanceof URL)return isClientResolvableUrl(e)?{url:e.href}:{};if(typeof e!=`string`||hasInternalRefScheme(e))return{};if(e.startsWith(`data:`))return{url:e};try{let t=new URL(e);return isClientResolvableUrl(t)?{url:t.href}:{}}catch{return{}}}function isClientResolvableUrl(e){return e.protocol===`http:`||e.protocol===`https:`||e.protocol===`data:`}function basenameOf(e){let t=e.replaceAll(`\\`,`/`),n=t.slice(t.lastIndexOf(`/`)+1);return n.length>0?n:e}function createActionsRequestedEvent(e){return{data:{actions:e.actions,...optionalPresentation(e.presentation),sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`actions.requested`}}function optionalPresentation(e){return e===void 0?{}:{presentation:e}}function createActionInputAppendedEvent(e){return{data:{callId:e.callId,inputTextDelta:e.inputTextDelta,sequence:e.sequence,stepIndex:e.stepIndex,toolName:e.toolName,turnId:e.turnId},type:`action.input.appended`}}function createAuthorizationRequiredEvent(e){let t={description:e.description,name:e.name,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId};return e.attemptId!==void 0&&(t.attemptId=e.attemptId),e.authorization!==void 0&&(t.authorization=e.authorization),e.candidateId!==void 0&&(t.candidateId=e.candidateId),e.principalId!==void 0&&(t.principalId=e.principalId),e.webhookUrl!==void 0&&(t.webhookUrl=e.webhookUrl),e.taskId!==void 0&&(t.taskId=e.taskId),{data:t,type:`authorization.required`}}function createAuthorizationCompletedEvent(e){let t={name:e.name,outcome:e.outcome,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId};return e.attemptId!==void 0&&(t.attemptId=e.attemptId),e.authorization!==void 0&&(t.authorization=e.authorization),e.candidateId!==void 0&&(t.candidateId=e.candidateId),e.principalId!==void 0&&(t.principalId=e.principalId),e.reason!==void 0&&(t.reason=e.reason),e.taskId!==void 0&&(t.taskId=e.taskId),{data:t,type:`authorization.completed`}}function createApprovalCandidateEvent(e){return{data:e,type:`approval.candidate`}}function createApprovalSettledEvent(e){return{data:e,type:`approval.settled`}}function createInputRequestedEvent(e){let t={requests:e.requests,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId};return e.callId!==void 0&&(t.callId=e.callId),e.taskId!==void 0&&(t.taskId=e.taskId),{data:t,type:`input.requested`}}function createInputResolvedEvent(e){return{data:{resolutions:e.resolutions,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`input.resolved`}}function createActionResultEvent(e){let t=e.rejected===!0?{error:buildActionResultError(e.result),status:`rejected`}:normalizeActionResultOutcome(e.result);return{data:{error:t.error,...optionalPresentation(e.presentation),result:e.result,sequence:e.sequence,status:t.status,stepIndex:e.stepIndex,turnId:e.turnId},type:`action.result`}}function createActionPartialEvent(e){return{data:{...optionalPresentation(e.presentation),result:e.result,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`action.partial`}}function createTaskStartedEvent(e){return{data:{callId:e.callId,kind:e.kind,name:e.name,taskId:e.taskId,turnId:e.turnId},type:`task.started`}}function createTaskSettledEvent(e){let t={callId:e.callId,...e.kind!==void 0&&{kind:e.kind},...e.name!==void 0&&{name:e.name},status:e.status,taskId:e.taskId,turnId:e.turnId};return e.output!==void 0&&(t.output=e.output),e.error!==void 0&&(t.error=e.error),e.cancel!==void 0&&(t.cancel=e.cancel),{data:t,type:`task.settled`}}function createAgentStartedEvent(e){let t={callId:e.callId,turnId:e.turnId,name:e.name,sessionId:e.sessionId,streamPath:createEveSessionStreamRoutePath(e.sessionId)};return e.taskId!==void 0&&(t.taskId=e.taskId),e.remote!==void 0&&(t.remote=e.remote,t.streamPath=createEveSubagentStreamRoutePath({callId:e.callId,childSessionId:e.sessionId,parentSessionId:e.parentSessionId})),{data:t,type:`agent.started`}}function createMessageAppendedEvent(e){return{data:{messageDelta:e.messageDelta,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`message.appended`}}function createReasoningAppendedEvent(e){return{data:{reasoningDelta:e.reasoningDelta,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`reasoning.appended`}}function createMessageCompletedEvent(e){return{data:{finishReason:e.finishReason??`stop`,message:e.message,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`message.completed`}}function createReasoningCompletedEvent(e){return{data:{reasoning:e.reasoning,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`reasoning.completed`}}function createResultCompletedEvent(e){return{data:{result:e.result,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`result.completed`}}function createStepStartedEvent(e){return{data:{modelId:e.modelId,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`step.started`}}function createStepCompletedEvent(e){let t={finishReason:e.finishReason,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId};return e.usage!==void 0&&(t.usage=e.usage),e.providerMetadata!==void 0&&(t.providerMetadata=e.providerMetadata),{data:t,type:`step.completed`}}function createStepFailedEvent(e){return{data:{code:e.code,details:e.details,message:e.message,sequence:e.sequence,stepIndex:e.stepIndex,turnId:e.turnId},type:`step.failed`}}function createTurnCompletedEvent(e){return{data:{sequence:e.sequence,turnId:e.turnId},type:`turn.completed`}}function createTurnWaitingEvent(e){return{data:{on:e.on,sequence:e.sequence,turnId:e.turnId,...e.usage!==void 0&&{usage:e.usage}},type:`turn.waiting`}}function createTurnFailedEvent(e){return{data:{code:e.code,details:e.details,message:e.message,sequence:e.sequence,turnId:e.turnId},type:`turn.failed`}}function createTurnCancelledEvent(e){return{data:{sequence:e.sequence,turnId:e.turnId},type:`turn.cancelled`}}function createContextClearedEvent(e){return{data:{sequence:e.sequence,sessionId:e.sessionId,turnId:e.turnId},type:`context.cleared`}}function createCompactionRequestedEvent(e){return{data:{modelId:e.modelId,sequence:e.sequence,sessionId:e.sessionId,stepIndex:e.stepIndex,turnId:e.turnId,usageInputTokens:e.usageInputTokens??null},type:`compaction.requested`}}function createCompactionCompletedEvent(e){return{data:{modelId:e.modelId,sequence:e.sequence,sessionId:e.sessionId,stepIndex:e.stepIndex,turnId:e.turnId},type:`compaction.completed`}}function createSessionWaitingEvent(e){return{data:{continuationToken:``,...e!==void 0&&{usage:e},wait:`next-user-message`},type:`session.waiting`}}function createSessionFailedEvent(e){return{data:{code:e.code,details:e.details,message:e.message,sessionId:e.sessionId,...e.usage!==void 0&&{usage:e.usage}},type:`session.failed`}}function createSessionCompletedEvent(e){return e===void 0?{type:`session.completed`}:{data:{usage:e},type:`session.completed`}}function stampMessageStreamEvent(e,t){let n={at:new Date().toISOString(),id:createEventId()};return t!==void 0&&t.length>0&&(n.deliveryIds=t),{...e,meta:n}}function encodeMessageStreamEvent(e){return textEncoder.encode(`${JSON.stringify(e)}\n`)}function normalizeActionResultOutcome(e){let t=readActionResultOutputError(e.output);return e.isError===!0?{error:buildActionResultError(e),status:`failed`}:t===void 0?{status:`completed`}:{error:t,status:`failed`}}function buildActionResultError(e){let t=readActionResultOutputError(e.output);return t===void 0?{code:`ACTION_RESULT_FAILED`,message:formatActionResultOutput(e.output)}:t}function readActionResultOutputError(e){let t=parseActionResultOutputRecord(e);if(t===void 0)return;let n=typeof t.code==`string`&&t.code.length>0?t.code:void 0,r=typeof t.message==`string`&&t.message.length>0?t.message:void 0;if(n!==void 0&&r!==void 0)return{code:n,message:r}}function parseActionResultOutputRecord(e){if(typeof e==`object`&&e)return e;if(typeof e!=`string`)return;let t=e.trim();if(t.length!==0)try{let e=JSON.parse(t);if(typeof e==`object`&&e)return e}catch{return}}function formatActionResultOutput(e){if(typeof e==`string`)return e;let t=JSON.stringify(e);return typeof t==`string`&&t.length>0?t:`Action failed.`}export{EVE_MESSAGE_STREAM_CONTENT_TYPE,EVE_MESSAGE_STREAM_FORMAT,EVE_MESSAGE_STREAM_VERSION,EVE_SESSION_ID_HEADER,EVE_STREAM_CONTROL_VERSION,EVE_STREAM_CONTROL_VERSION_QUERY,EVE_STREAM_FORMAT_HEADER,EVE_STREAM_LEASE_ENDED_CONTROL,EVE_STREAM_TAIL_INDEX_HEADER,EVE_STREAM_VERSION_HEADER,createActionInputAppendedEvent,createActionPartialEvent,createActionResultEvent,createActionsRequestedEvent,createAgentStartedEvent,createApprovalCandidateEvent,createApprovalSettledEvent,createAuthorizationCompletedEvent,createAuthorizationRequiredEvent,createCompactionCompletedEvent,createCompactionRequestedEvent,createContextClearedEvent,createInputRequestedEvent,createInputResolvedEvent,createMessageAppendedEvent,createMessageCompletedEvent,createMessageReceivedEvent,createReasoningAppendedEvent,createReasoningCompletedEvent,createResultCompletedEvent,createSessionCompletedEvent,createSessionFailedEvent,createSessionStartedEvent,createSessionWaitingEvent,createStepCompletedEvent,createStepFailedEvent,createStepStartedEvent,createTaskSettledEvent,createTaskStartedEvent,createTurnCancelledEvent,createTurnCompletedEvent,createTurnFailedEvent,createTurnStartedEvent,createTurnWaitingEvent,encodeMessageStreamEvent,isCurrentTurnBoundaryEvent,isTurnFailureEvent,stampMessageStreamEvent};
@@ -7,6 +7,8 @@
7
7
  export declare const REMOTE_AGENT_PROTOCOL_VERSION = 2;
8
8
  /** Error code a receiver answers when the caller speaks another protocol version. */
9
9
  export declare const REMOTE_AGENT_PROTOCOL_MISMATCH = "REMOTE_AGENT_PROTOCOL_MISMATCH";
10
+ /** Protocol of eve 0.66–0.68, which sent no version. */
11
+ export declare const UNVERSIONED_REMOTE_AGENT_PROTOCOL = 1;
10
12
  /** Reads a peer's protocol version, treating an absent one as the unversioned protocol. */
11
13
  export declare function readRemoteAgentProtocolVersion(value: unknown): number;
12
14
  /** The caller's message when a remote agent's deployment speaks another version. */
@@ -1 +1 @@
1
- const REMOTE_AGENT_PROTOCOL_VERSION=2,REMOTE_AGENT_PROTOCOL_MISMATCH=`REMOTE_AGENT_PROTOCOL_MISMATCH`;function readRemoteAgentProtocolVersion(e){return typeof e==`number`?e:1}function formatRemoteAgentProtocolMismatch(e){return`Remote agent "${e.name}" speaks eve remote agent protocol ${String(e.receiverVersion)}, but this deployment speaks protocol 2. Upgrade both deployments to the same eve release.`}export{REMOTE_AGENT_PROTOCOL_MISMATCH,REMOTE_AGENT_PROTOCOL_VERSION,formatRemoteAgentProtocolMismatch,readRemoteAgentProtocolVersion};
1
+ const REMOTE_AGENT_PROTOCOL_VERSION=2,REMOTE_AGENT_PROTOCOL_MISMATCH=`REMOTE_AGENT_PROTOCOL_MISMATCH`,UNVERSIONED_REMOTE_AGENT_PROTOCOL=1;function readRemoteAgentProtocolVersion(e){return typeof e==`number`?e:1}function formatRemoteAgentProtocolMismatch(e){return`Remote agent "${e.name}" speaks eve remote agent protocol ${String(e.receiverVersion)}, but this deployment speaks protocol 2. Upgrade both deployments to the same eve release.`}export{REMOTE_AGENT_PROTOCOL_MISMATCH,REMOTE_AGENT_PROTOCOL_VERSION,UNVERSIONED_REMOTE_AGENT_PROTOCOL,formatRemoteAgentProtocolMismatch,readRemoteAgentProtocolVersion};
@@ -0,0 +1,2 @@
1
+ /** The model-visible name of the tool a session with an output schema calls to reply with its structured result. */
2
+ export declare const REPLY_TOOL_NAME = "eve__reply";
@@ -0,0 +1 @@
1
+ const REPLY_TOOL_NAME=`eve__reply`;export{REPLY_TOOL_NAME};
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Why `name` is taken, for errors to quote; undefined when the name is free.
3
+ * Nothing authored or dynamic may be named `eve` or start with `eve__`: a
4
+ * connection or extension named `eve` would own every `eve__` name.
5
+ */
6
+ export declare function eveNamespaceReservation(name: string): string | undefined;
@@ -0,0 +1 @@
1
+ function eveNamespaceReservation(e){return e===`eve`||e.startsWith(`eve__`)?`eve reserves the "eve" namespace for its built-in tools`:void 0}export{eveNamespaceReservation};
@@ -1 +1 @@
1
- function initialSessionProjection(){return{authorizations:{},calls:{},candidates:{},inputs:{},nextSequence:0,tasks:{},turns:{}}}function updateTurn(e,t,n){let r=e.turns[t];if(r===void 0)return e;let i=n(r);return i===r?e:{...e,turns:{...e.turns,[t]:i}}}function putTask(e,t){return e.tasks[t.taskId]===t?e:{...e,tasks:{...e.tasks,[t.taskId]:t}}}function putTaskCall(e,t){return e.calls[t.callId]===t?e:{...e,calls:{...e.calls,[t.callId]:t}}}function putCall(e,t){return e.calls[t.callId]===t?e:{...e,calls:{...e.calls,[t.callId]:t}}}function updateTask(e,t,n){let r=e.tasks[t];return r===void 0?e:putTask(e,n(r))}function updateCall(e,t,n){let r=e.calls[t];return r===void 0?e:putCall(e,n(r))}const SETTLED_CALL_STATUSES=new Set([`completed`,`failed`,`rejected`,`cancelled`]);function isSettledCallStatus(e){return SETTLED_CALL_STATUSES.has(e)}function settleCall(e,t,n){if(e.taskId!==void 0||isSettledCallStatus(e.status))return e;let{requestId:r,error:i,...a}=e,o={...a,status:t};return e.requestId!==void 0&&(o.requestId=e.requestId),n!==void 0&&(o.error=n),o}function actionName(e){switch(e.kind){case`load-skill`:return`load_skill`;case`subagent-call`:case`remote-agent-call`:return e.name;case`tool-call`:case`workflow-tool-call`:return e.toolName}}function resultName(e){switch(e.kind){case`load-skill-result`:return`load_skill`;case`subagent-result`:return e.subagentName;default:return e.toolName}}function callStatusAfterApproval(e){switch(e){case`approved`:return`running`;case`denied`:return`rejected`;case`cancelled`:return`cancelled`;default:return}}function foldSession(e,t){let n=t;switch(n.type){case`session.started`:return e.started?e:{...e,started:!0};case`turn.started`:{let{sequence:t,turnId:r}=n.data,i={turnId:r,sequence:t,status:`active`};return{...e,activeTurnId:r,nextSequence:Math.max(e.nextSequence,t+1),turns:{...e.turns,[r]:i}}}case`step.started`:return updateTurn(e,n.data.turnId,e=>{if(!e.waiting&&e.stepIndex===n.data.stepIndex)return e;let{waiting:t,...r}=e;return{...r,stepIndex:n.data.stepIndex}});case`turn.waiting`:return updateTurn(e,n.data.turnId,e=>e.status===`active`&&!e.waiting?{...e,waiting:!0}:e);case`message.appended`:case`message.completed`:case`result.completed`:return(n.type===`message.appended`?n.data.messageDelta.length>0:n.type!==`message.completed`||(n.data.message?.length??0)>0)?updateTurn(e,n.data.turnId,e=>e.outputStarted?e:{...e,outputStarted:!0}):e;case`turn.completed`:case`turn.cancelled`:case`turn.failed`:{let{turnId:t}=n.data,r=n.type===`turn.completed`?`completed`:n.type===`turn.failed`?`failed`:`cancelled`,{waiting:i,...a}=e.turns[t]??{turnId:t,sequence:n.data.sequence};return{...e,activeTurnId:e.activeTurnId===t?void 0:e.activeTurnId,turns:{...e.turns,[t]:{...a,status:r}}}}case`context.cleared`:return{...e,calls:Object.fromEntries(Object.entries(e.calls).filter(([,e])=>e.taskId!==void 0))};case`session.waiting`:return e.activeTurnId===void 0?e:{...e,activeTurnId:void 0};case`session.completed`:case`session.failed`:{let{activeTurnId:t,...n}=e;return{...n,ended:!0}}case`actions.requested`:{let t;for(let r of n.data.actions)e.calls[r.callId]===void 0&&(t??={...e.calls},t[r.callId]={callId:r.callId,name:actionName(r),turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:`running`});return t===void 0?e:{...e,calls:t}}case`action.result`:{let{result:t,status:r,error:i}=n.data,a=e.calls[t.callId];if(a?.taskId!==void 0)return e;let o=r===`rejected`||i?.code===`TOOL_EXECUTION_DENIED`?`rejected`:r===`failed`||t.isError===!0?`failed`:`completed`;if(a===void 0){let r={callId:t.callId,name:resultName(t),turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:o};return i!==void 0&&(r.error=i),putCall(e,r)}return updateCall(e,t.callId,e=>settleCall(e,o,i))}case`task.started`:{let{callId:t,kind:r,name:i,taskId:a,turnId:o}=n.data,s=e.tasks[a]??{taskId:a,name:i,kind:r,calls:{}},c=e;s.calls[t]===void 0&&(c=putTask(c,putTaskCall(s,{callId:t,turnId:o,status:`working`})));let l=c.calls[t];if(l?.taskId===a)return c;let u={callId:t,name:l?.name??i,stepIndex:l?.stepIndex??0,taskId:a,turnId:l?.turnId??o};return l?.requestId!==void 0&&(u.requestId=l.requestId),putCall(c,u)}case`task.settled`:{let{callId:t,error:r,output:i,status:a,taskId:o}=n.data;return updateTask(e,o,e=>{let n=e.calls[t];if(n===void 0||n.status!==`working`)return e;let o={callId:t,turnId:n.turnId,status:a};return putTaskCall(e,a===`completed`&&i!==void 0?{...o,output:i}:a===`failed`&&r!==void 0?{...o,error:r}:o)})}case`input.requested`:{let t={...e.inputs},r;for(let i of n.data.requests){if(t[i.requestId]!==void 0)continue;let a={request:i,sequence:n.data.sequence,turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:`open`};if(n.data.taskId!==void 0&&(a.taskId=n.data.taskId),n.data.callId!==void 0&&(a.callId=n.data.callId),t[i.requestId]=a,i.kind!==`tool-approval`||isRelayed(n.data))continue;let{callId:o,toolName:s}=i.action;r??={...e.calls};let c=r[o];c?.taskId===void 0&&(c!==void 0&&isSettledCallStatus(c.status)||(r[o]={...c??{callId:o,name:s,turnId:n.data.turnId,stepIndex:n.data.stepIndex},requestId:i.requestId,status:`awaiting-input`}))}return r===void 0?{...e,inputs:t}:{...e,calls:r,inputs:t}}case`approval.candidate`:{let{candidateId:t,outcome:r,requestId:i}=n.data;e={...e,candidates:{...e.candidates,[t]:{candidateId:t,outcome:r,requestId:i}}};let a=e.inputs[n.data.requestId];if(a===void 0||a.status===`settled`||n.data.outcome===`pending`||a.status===`open`)return e;let{response:o,...s}=a;return{...e,inputs:{...e.inputs,[n.data.requestId]:{...s,status:`open`}}}}case`approval.settled`:{let t=e.inputs[n.data.requestId];if(t===void 0||t.status===`settled`)return e;let r=n.data.outcome===`approved`?`approved`:`denied`;return settleApprovalCall({...e,inputs:{...e.inputs,[n.data.requestId]:{...t,status:`settled`,outcome:r}}},t,r)}case`input.resolved`:{let t=e;for(let e of n.data.resolutions){let n=t.inputs[e.requestId];if(n===void 0||n.status===`settled`)continue;let r=e.response??n.response,i={...n,status:`settled`,outcome:e.outcome};r!==void 0&&(i.response=r),t={...t,inputs:{...t.inputs,[e.requestId]:i}},t=settleApprovalCall(t,n,e.outcome)}return t}case`authorization.required`:{let t=n.data.attemptId??n.data.name,r={attemptId:t,name:n.data.name,sequence:n.data.sequence,turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:`required`};return n.data.taskId!==void 0&&(r.taskId=n.data.taskId),n.data.principalId!==void 0&&(r.principalId=n.data.principalId),n.data.candidateId!==void 0&&(r.candidateId=n.data.candidateId),n.data.webhookUrl!==void 0&&(r.awaitsCallback=!0),{...e,authorizations:{...e.authorizations,[t]:r}}}case`authorization.completed`:{let t=n.data.attemptId??n.data.name,r={...e.authorizations[t]??{attemptId:t,name:n.data.name,sequence:n.data.sequence,turnId:n.data.turnId,stepIndex:n.data.stepIndex},status:n.data.outcome};return{...e,authorizations:{...e.authorizations,[t]:r}}}default:return e}}function isRelayed(e){return e.callId!==void 0||e.taskId!==void 0}function settleApprovalCall(e,t,n){if(t.request.kind!==`tool-approval`||isRelayed(t))return e;let r=callStatusAfterApproval(n);return r===void 0?e:updateCall(e,t.request.action.callId,e=>e.status!==`awaiting-input`||e.requestId!==t.request.requestId?e:r===`running`?{...e,status:r}:settleCall(e,r))}function turnCoordinates(e){let t=e.activeTurnId===void 0?void 0:e.turns[e.activeTurnId];return t===void 0?{sequence:e.nextSequence,stepIndex:0,turnId:`turn_${e.nextSequence}`}:{sequence:t.sequence,stepIndex:t.stepIndex??0,turnId:t.turnId}}function openInputs(e){return Object.values(e.inputs).filter(e=>e.status!==`settled`)}function openSignIns(e){return Object.values(e.authorizations).filter(e=>e.status===`required`)}function workingTaskCalls(e){return Object.values(e.tasks).flatMap(e=>Object.values(e.calls).filter(e=>e.status===`working`))}function callStatus(e,t,n={}){let r=e.calls[t];if(r===void 0)return;let i=reportedCallStatus(e,r);if(i!==`running`||r.taskId!==void 0)return i;let a=e.turns[r.turnId];return n.streaming===!1||a!==void 0&&a.status!==`active`?`interrupted`:i}function reportedCallStatus(e,t){if(t.taskId===void 0)return t.status;let n=e.tasks[t.taskId]?.calls[t.callId]?.status;return n===void 0||n===`working`?`running`:n}function pruneSessionProjection(e,t={}){let n=new Set(t.requestIds),r=new Set(t.callIds),i=Object.fromEntries(Object.entries(e.calls).filter(([t,i])=>!isSettledCallStatus(reportedCallStatus(e,i))&&callStatus(e,t)!==`interrupted`||r.has(t)||i.requestId!==void 0&&n.has(i.requestId)));for(let e of Object.values(i))e.requestId!==void 0&&n.add(e.requestId);let a=Object.fromEntries(Object.entries(e.inputs).filter(([e,t])=>t.status!==`settled`||n.has(e))),o=new Set(Object.values(i).flatMap(e=>e.taskId===void 0?[]:[e.callId])),s={};for(let[t,n]of Object.entries(e.tasks)){let e=Object.entries(n.calls).filter(([e,t])=>t.status===`working`||o.has(e));e.length>0&&(s[t]={...n,calls:Object.fromEntries(e)})}let c=Object.fromEntries(Object.entries(e.authorizations).filter(([,e])=>e.status===`required`)),l=new Set([...e.activeTurnId===void 0?[]:[e.activeTurnId],...Object.values(a).map(e=>e.turnId),...Object.values(i).map(e=>e.turnId),...Object.values(c).map(e=>e.turnId)]),u=Object.fromEntries(Object.entries(e.turns).filter(([e])=>l.has(e))),d=Object.fromEntries(Object.entries(e.candidates).filter(([,e])=>e.requestId in a));return{...e,authorizations:c,calls:i,candidates:d,inputs:a,tasks:s,turns:u}}export{callStatus,foldSession,initialSessionProjection,isSettledCallStatus,openInputs,openSignIns,pruneSessionProjection,reportedCallStatus,turnCoordinates,workingTaskCalls};
1
+ function initialSessionProjection(){return{authorizations:{},calls:{},candidates:{},inputs:{},nextSequence:0,tasks:{},turns:{}}}function updateTurn(e,t,n){let r=e.turns[t];if(r===void 0)return e;let i=n(r);return i===r?e:{...e,turns:{...e.turns,[t]:i}}}function putTask(e,t){return e.tasks[t.taskId]===t?e:{...e,tasks:{...e.tasks,[t.taskId]:t}}}function putTaskCall(e,t){return e.calls[t.callId]===t?e:{...e,calls:{...e.calls,[t.callId]:t}}}function putCall(e,t){return e.calls[t.callId]===t?e:{...e,calls:{...e.calls,[t.callId]:t}}}function updateTask(e,t,n){let r=e.tasks[t];return r===void 0?e:putTask(e,n(r))}function updateCall(e,t,n){let r=e.calls[t];return r===void 0?e:putCall(e,n(r))}const SETTLED_CALL_STATUSES=new Set([`completed`,`failed`,`rejected`,`cancelled`]);function isSettledCallStatus(e){return SETTLED_CALL_STATUSES.has(e)}function settleCall(e,t,n){if(e.taskId!==void 0||isSettledCallStatus(e.status))return e;let{requestId:r,error:i,...a}=e,o={...a,status:t};return e.requestId!==void 0&&(o.requestId=e.requestId),n!==void 0&&(o.error=n),o}function actionName(e){switch(e.kind){case`load-skill`:return e.name;case`subagent-call`:case`remote-agent-call`:return e.name;case`tool-call`:case`workflow-tool-call`:return e.toolName}}function resultName(e){switch(e.kind){case`load-skill-result`:return e.name;case`subagent-result`:return e.subagentName;default:return e.toolName}}function callStatusAfterApproval(e){switch(e){case`approved`:return`running`;case`denied`:return`rejected`;case`cancelled`:return`cancelled`;default:return}}function foldSession(e,t){let n=t;switch(n.type){case`session.started`:return e.started?e:{...e,started:!0};case`turn.started`:{let{sequence:t,turnId:r}=n.data,i={turnId:r,sequence:t,status:`active`};return{...e,activeTurnId:r,nextSequence:Math.max(e.nextSequence,t+1),turns:{...e.turns,[r]:i}}}case`step.started`:return updateTurn(e,n.data.turnId,e=>{if(!e.waiting&&e.stepIndex===n.data.stepIndex)return e;let{waiting:t,...r}=e;return{...r,stepIndex:n.data.stepIndex}});case`turn.waiting`:return updateTurn(e,n.data.turnId,e=>e.status===`active`&&!e.waiting?{...e,waiting:!0}:e);case`message.appended`:case`message.completed`:case`result.completed`:return(n.type===`message.appended`?n.data.messageDelta.length>0:n.type!==`message.completed`||(n.data.message?.length??0)>0)?updateTurn(e,n.data.turnId,e=>e.outputStarted?e:{...e,outputStarted:!0}):e;case`turn.completed`:case`turn.cancelled`:case`turn.failed`:{let{turnId:t}=n.data,r=n.type===`turn.completed`?`completed`:n.type===`turn.failed`?`failed`:`cancelled`,{waiting:i,...a}=e.turns[t]??{turnId:t,sequence:n.data.sequence};return{...e,activeTurnId:e.activeTurnId===t?void 0:e.activeTurnId,turns:{...e.turns,[t]:{...a,status:r}}}}case`context.cleared`:return{...e,calls:Object.fromEntries(Object.entries(e.calls).filter(([,e])=>e.taskId!==void 0))};case`session.waiting`:return e.activeTurnId===void 0?e:{...e,activeTurnId:void 0};case`session.completed`:case`session.failed`:{let{activeTurnId:t,...n}=e;return{...n,ended:!0}}case`actions.requested`:{let t;for(let r of n.data.actions)e.calls[r.callId]===void 0&&(t??={...e.calls},t[r.callId]={callId:r.callId,name:actionName(r),turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:`running`});return t===void 0?e:{...e,calls:t}}case`action.result`:{let{result:t,status:r,error:i}=n.data,a=e.calls[t.callId];if(a?.taskId!==void 0)return e;let o=r===`rejected`||i?.code===`TOOL_EXECUTION_DENIED`?`rejected`:r===`failed`||t.isError===!0?`failed`:`completed`;if(a===void 0){let r={callId:t.callId,name:resultName(t),turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:o};return i!==void 0&&(r.error=i),putCall(e,r)}return updateCall(e,t.callId,e=>settleCall(e,o,i))}case`task.started`:{let{callId:t,kind:r,name:i,taskId:a,turnId:o}=n.data,s=e.tasks[a]??{taskId:a,name:i,kind:r,calls:{}},c=e;s.calls[t]===void 0&&(c=putTask(c,putTaskCall(s,{callId:t,turnId:o,status:`working`})));let l=c.calls[t];if(l?.taskId===a)return c;let u={callId:t,name:l?.name??i,stepIndex:l?.stepIndex??0,taskId:a,turnId:l?.turnId??o};return l?.requestId!==void 0&&(u.requestId=l.requestId),putCall(c,u)}case`task.settled`:{let{callId:t,error:r,output:i,status:a,taskId:o}=n.data;return updateTask(e,o,e=>{let n=e.calls[t];if(n===void 0||n.status!==`working`)return e;let o={callId:t,turnId:n.turnId,status:a};return putTaskCall(e,a===`completed`&&i!==void 0?{...o,output:i}:a===`failed`&&r!==void 0?{...o,error:r}:o)})}case`input.requested`:{let t={...e.inputs},r;for(let i of n.data.requests){if(t[i.requestId]!==void 0)continue;let a={request:i,sequence:n.data.sequence,turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:`open`};if(n.data.taskId!==void 0&&(a.taskId=n.data.taskId),n.data.callId!==void 0&&(a.callId=n.data.callId),t[i.requestId]=a,i.kind!==`tool-approval`||isRelayed(n.data))continue;let{callId:o,toolName:s}=i.action;r??={...e.calls};let c=r[o];c?.taskId===void 0&&(c!==void 0&&isSettledCallStatus(c.status)||(r[o]={...c??{callId:o,name:s,turnId:n.data.turnId,stepIndex:n.data.stepIndex},requestId:i.requestId,status:`awaiting-input`}))}return r===void 0?{...e,inputs:t}:{...e,calls:r,inputs:t}}case`approval.candidate`:{let{candidateId:t,outcome:r,requestId:i}=n.data;e={...e,candidates:{...e.candidates,[t]:{candidateId:t,outcome:r,requestId:i}}};let a=e.inputs[n.data.requestId];if(a===void 0||a.status===`settled`||n.data.outcome===`pending`||a.status===`open`)return e;let{response:o,...s}=a;return{...e,inputs:{...e.inputs,[n.data.requestId]:{...s,status:`open`}}}}case`approval.settled`:{let t=e.inputs[n.data.requestId];if(t===void 0||t.status===`settled`)return e;let r=n.data.outcome===`approved`?`approved`:`denied`;return settleApprovalCall({...e,inputs:{...e.inputs,[n.data.requestId]:{...t,status:`settled`,outcome:r}}},t,r)}case`input.resolved`:{let t=e;for(let e of n.data.resolutions){let n=t.inputs[e.requestId];if(n===void 0||n.status===`settled`)continue;let r=e.response??n.response,i={...n,status:`settled`,outcome:e.outcome};r!==void 0&&(i.response=r),t={...t,inputs:{...t.inputs,[e.requestId]:i}},t=settleApprovalCall(t,n,e.outcome)}return t}case`authorization.required`:{let t=n.data.attemptId??n.data.name,r={attemptId:t,name:n.data.name,sequence:n.data.sequence,turnId:n.data.turnId,stepIndex:n.data.stepIndex,status:`required`};return n.data.taskId!==void 0&&(r.taskId=n.data.taskId),n.data.principalId!==void 0&&(r.principalId=n.data.principalId),n.data.candidateId!==void 0&&(r.candidateId=n.data.candidateId),n.data.webhookUrl!==void 0&&(r.awaitsCallback=!0),{...e,authorizations:{...e.authorizations,[t]:r}}}case`authorization.completed`:{let t=n.data.attemptId??n.data.name,r={...e.authorizations[t]??{attemptId:t,name:n.data.name,sequence:n.data.sequence,turnId:n.data.turnId,stepIndex:n.data.stepIndex},status:n.data.outcome};return{...e,authorizations:{...e.authorizations,[t]:r}}}default:return e}}function isRelayed(e){return e.callId!==void 0||e.taskId!==void 0}function settleApprovalCall(e,t,n){if(t.request.kind!==`tool-approval`||isRelayed(t))return e;let r=callStatusAfterApproval(n);return r===void 0?e:updateCall(e,t.request.action.callId,e=>e.status!==`awaiting-input`||e.requestId!==t.request.requestId?e:r===`running`?{...e,status:r}:settleCall(e,r))}function turnCoordinates(e){let t=e.activeTurnId===void 0?void 0:e.turns[e.activeTurnId];return t===void 0?{sequence:e.nextSequence,stepIndex:0,turnId:`turn_${e.nextSequence}`}:{sequence:t.sequence,stepIndex:t.stepIndex??0,turnId:t.turnId}}function openInputs(e){return Object.values(e.inputs).filter(e=>e.status!==`settled`)}function openSignIns(e){return Object.values(e.authorizations).filter(e=>e.status===`required`)}function workingTaskCalls(e){return Object.values(e.tasks).flatMap(e=>Object.values(e.calls).filter(e=>e.status===`working`))}function callStatus(e,t,n={}){let r=e.calls[t];if(r===void 0)return;let i=reportedCallStatus(e,r);if(i!==`running`||r.taskId!==void 0)return i;let a=e.turns[r.turnId];return n.streaming===!1||a!==void 0&&a.status!==`active`?`interrupted`:i}function reportedCallStatus(e,t){if(t.taskId===void 0)return t.status;let n=e.tasks[t.taskId]?.calls[t.callId]?.status;return n===void 0||n===`working`?`running`:n}function pruneSessionProjection(e,t={}){let n=new Set(t.requestIds),r=new Set(t.callIds),i=Object.fromEntries(Object.entries(e.calls).filter(([t,i])=>!isSettledCallStatus(reportedCallStatus(e,i))&&callStatus(e,t)!==`interrupted`||r.has(t)||i.requestId!==void 0&&n.has(i.requestId)));for(let e of Object.values(i))e.requestId!==void 0&&n.add(e.requestId);let a=Object.fromEntries(Object.entries(e.inputs).filter(([e,t])=>t.status!==`settled`||n.has(e))),o=new Set(Object.values(i).flatMap(e=>e.taskId===void 0?[]:[e.callId])),s={};for(let[t,n]of Object.entries(e.tasks)){let e=Object.entries(n.calls).filter(([e,t])=>t.status===`working`||o.has(e));e.length>0&&(s[t]={...n,calls:Object.fromEntries(e)})}let c=Object.fromEntries(Object.entries(e.authorizations).filter(([,e])=>e.status===`required`)),l=new Set([...e.activeTurnId===void 0?[]:[e.activeTurnId],...Object.values(a).map(e=>e.turnId),...Object.values(i).map(e=>e.turnId),...Object.values(c).map(e=>e.turnId)]),u=Object.fromEntries(Object.entries(e.turns).filter(([e])=>l.has(e))),d=Object.fromEntries(Object.entries(e.candidates).filter(([,e])=>e.requestId in a));return{...e,authorizations:c,calls:i,candidates:d,inputs:a,tasks:s,turns:u}}export{callStatus,foldSession,initialSessionProjection,isSettledCallStatus,openInputs,openSignIns,pruneSessionProjection,reportedCallStatus,turnCoordinates,workingTaskCalls};
@@ -1,13 +1,13 @@
1
1
  import type { ActionResultStreamEvent } from "#protocol/message.js";
2
- export declare const TASK_WAIT_TOOL_NAME = "task_wait";
3
- export declare const TASK_CANCEL_TOOL_NAME = "task_cancel";
4
- /** The task tools' names; authored tools cannot use them. */
2
+ export declare const TASK_WAIT_TOOL_NAME = "eve__task_wait";
3
+ export declare const TASK_CANCEL_TOOL_NAME = "eve__task_cancel";
4
+ /** The task tools' names. */
5
5
  export declare const TASK_TOOL_NAMES: readonly string[];
6
6
  /**
7
7
  * Whether a tool call is the model managing its own tasks. The stream keeps
8
8
  * these calls so evals and traces can see them, but activity surfaces hide
9
9
  * them: people see the tasks, not the model waiting on or stopping them. The
10
- * names are reserved, so no authored tool matches.
10
+ * `eve` namespace is reserved, so no authored tool matches.
11
11
  */
12
12
  export declare function isTaskControlTool(toolName: string): boolean;
13
13
  export declare const TOO_MANY_TASKS_CODE = "TOO_MANY_TASKS";
@@ -1 +1 @@
1
- const TASK_WAIT_TOOL_NAME=`task_wait`,TASK_CANCEL_TOOL_NAME=`task_cancel`,TASK_TOOL_NAMES=[TASK_WAIT_TOOL_NAME,TASK_CANCEL_TOOL_NAME];function isTaskControlTool(e){return TASK_TOOL_NAMES.includes(e)}const TOO_MANY_TASKS_CODE=`TOO_MANY_TASKS`,UNKNOWN_TASK_CODE=`UNKNOWN_TASK`,TASK_RETRY_ERROR_CODES=[TOO_MANY_TASKS_CODE,UNKNOWN_TASK_CODE];function isTaskRetryRefusal(e){if(e.data.status!==`failed`||e.data.result.kind!==`tool-result`)return!1;let t=e.data.result.output;if(typeof t!=`object`||!t)return!1;let n=Reflect.get(t,`code`);return typeof n==`string`&&TASK_RETRY_ERROR_CODES.includes(n)}export{TASK_CANCEL_TOOL_NAME,TASK_TOOL_NAMES,TASK_WAIT_TOOL_NAME,TOO_MANY_TASKS_CODE,UNKNOWN_TASK_CODE,isTaskControlTool,isTaskRetryRefusal};
1
+ const TASK_WAIT_TOOL_NAME=`eve__task_wait`,TASK_CANCEL_TOOL_NAME=`eve__task_cancel`,TASK_TOOL_NAMES=[TASK_WAIT_TOOL_NAME,TASK_CANCEL_TOOL_NAME];function isTaskControlTool(e){return TASK_TOOL_NAMES.includes(e)}const TOO_MANY_TASKS_CODE=`TOO_MANY_TASKS`,UNKNOWN_TASK_CODE=`UNKNOWN_TASK`,TASK_RETRY_ERROR_CODES=[TOO_MANY_TASKS_CODE,UNKNOWN_TASK_CODE];function isTaskRetryRefusal(e){if(e.data.status!==`failed`||e.data.result.kind!==`tool-result`)return!1;let t=e.data.result.output;if(typeof t!=`object`||!t)return!1;let n=Reflect.get(t,`code`);return typeof n==`string`&&TASK_RETRY_ERROR_CODES.includes(n)}export{TASK_CANCEL_TOOL_NAME,TASK_TOOL_NAMES,TASK_WAIT_TOOL_NAME,TOO_MANY_TASKS_CODE,UNKNOWN_TASK_CODE,isTaskControlTool,isTaskRetryRefusal};