eve 0.81.1 → 0.83.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (687) hide show
  1. package/CHANGELOG.md +93 -0
  2. package/NOTICE +1 -1
  3. package/dist/src/channel/channel-address.d.ts +21 -2
  4. package/dist/src/channel/channel-address.js +1 -1
  5. package/dist/src/channel/channel-operations.d.ts +32 -1
  6. package/dist/src/channel/channel-operations.js +1 -1
  7. package/dist/src/channel/delivery-idempotency.d.ts +4 -0
  8. package/dist/src/channel/delivery-idempotency.js +1 -0
  9. package/dist/src/channel/pending-authorization.d.ts +5 -0
  10. package/dist/src/channel/pending-authorization.js +1 -1
  11. package/dist/src/channel/routes.d.ts +6 -0
  12. package/dist/src/channel/session.d.ts +7 -0
  13. package/dist/src/channel/session.js +1 -1
  14. package/dist/src/channel/types.d.ts +19 -11
  15. package/dist/src/chunks/{use-eve-agent-DLkjJIm3.js → use-eve-agent-3-WRmJkd.js} +76 -5
  16. package/dist/src/chunks/{use-eve-agent-Bp6nbhfV.js → use-eve-agent-Ci5dr0aR.js} +76 -5
  17. package/dist/src/cli/dev/command-options.d.ts +1 -0
  18. package/dist/src/cli/dev/diagnostic-dump.js +1 -1
  19. package/dist/src/cli/dev/local-server-child.js +1 -1
  20. package/dist/src/cli/dev/local-server-cleanup.js +1 -1
  21. package/dist/src/cli/dev/tui/question-panel.d.ts +4 -1
  22. package/dist/src/cli/dev/tui/question-panel.js +1 -1
  23. package/dist/src/cli/dev/tui/terminal-renderer.js +4 -4
  24. package/dist/src/cli/run.d.ts +1 -0
  25. package/dist/src/cli/run.js +1 -1
  26. package/dist/src/client/eve-agent-store.d.ts +1 -1
  27. package/dist/src/client/eve-agent-store.js +1 -1
  28. package/dist/src/client/index.d.ts +2 -1
  29. package/dist/src/client/message-reducer-types.d.ts +7 -3
  30. package/dist/src/client/message-reducer.js +1 -1
  31. package/dist/src/client/session-controls.d.ts +6 -0
  32. package/dist/src/client/session-controls.js +1 -1
  33. package/dist/src/client/session.d.ts +4 -0
  34. package/dist/src/client/session.js +1 -1
  35. package/dist/src/client/transcript-reducer.d.ts +6 -3
  36. package/dist/src/client/transcript-reducer.js +1 -1
  37. package/dist/src/compiled/.vendor-stamp.json +8 -8
  38. package/dist/src/compiled/@eve/catalog/index.js +1 -1
  39. package/dist/src/compiled/@workflow/core/events-consumer.d.ts +2 -0
  40. package/dist/src/compiled/@workflow/core/index.js +2 -2
  41. package/dist/src/compiled/@workflow/core/private.d.ts +5 -3
  42. package/dist/src/compiled/@workflow/core/private.js +1 -1
  43. package/dist/src/compiled/@workflow/core/runtime/constants.d.ts +1 -37
  44. package/dist/src/compiled/@workflow/core/runtime/event-limit-warning.d.ts +32 -0
  45. package/dist/src/compiled/@workflow/core/runtime/helpers.d.ts +5 -6
  46. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  47. package/dist/src/compiled/@workflow/core/runtime/runs.d.ts +8 -0
  48. package/dist/src/compiled/@workflow/core/runtime/start.d.ts +16 -0
  49. package/dist/src/compiled/@workflow/core/runtime/suspension-handler.d.ts +15 -18
  50. package/dist/src/compiled/@workflow/core/runtime/vm-mode.d.ts +20 -0
  51. package/dist/src/compiled/@workflow/core/runtime.js +4 -4
  52. package/dist/src/compiled/@workflow/core/seeded-nanoid.d.ts +2 -0
  53. package/dist/src/compiled/@workflow/core/serialization/compression.d.ts +14 -3
  54. package/dist/src/compiled/@workflow/core/serialization.d.ts +1 -1
  55. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  56. package/dist/src/compiled/@workflow/core/telemetry/semantic-conventions.d.ts +0 -18
  57. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  58. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  59. package/dist/src/compiled/@workflow/errors/index.d.ts +48 -0
  60. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  61. package/dist/src/compiled/@workflow/world/env-config.d.ts +24 -0
  62. package/dist/src/compiled/@workflow/world/events.d.ts +126 -7
  63. package/dist/src/compiled/@workflow/world/index.d.ts +3 -3
  64. package/dist/src/compiled/@workflow/world/interfaces.d.ts +59 -8
  65. package/dist/src/compiled/@workflow/world/queue.d.ts +71 -9
  66. package/dist/src/compiled/@workflow/world/recovery.d.ts +6 -0
  67. package/dist/src/compiled/@workflow/world/test-support/duplicate-event-fixtures.d.ts +3 -0
  68. package/dist/src/compiled/@workflow/world/test-support/in-band-fence-conformance.d.ts +46 -0
  69. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  70. package/dist/src/compiled/@workflow/world-vercel/index.js +18 -18
  71. package/dist/src/compiled/_chunks/workflow/{attribute-changes-BW-kbMMn.js → attribute-changes-7se_SE2q.js} +3 -3
  72. package/dist/src/compiled/_chunks/workflow/dist-CcnNPAp4.js +1 -0
  73. package/dist/src/compiled/_chunks/workflow/dist-S9cZRway.js +3 -0
  74. package/dist/src/compiled/_chunks/workflow/helpers-CxNRXH0a.js +1 -0
  75. package/dist/src/compiled/_chunks/workflow/private-DLYTSBbu.js +1 -0
  76. package/dist/src/compiled/_chunks/workflow/resume-hook-CPiIfe8r.js +1 -0
  77. package/dist/src/compiled/_chunks/workflow/{run-DzdAqdb1.js → run-BJSLCXR4.js} +6 -6
  78. package/dist/src/compiled/_chunks/workflow/serialization-B9gneT9Z.js +15 -0
  79. package/dist/src/compiled/_chunks/workflow/sleep-BL0oQs3R.js +1 -0
  80. package/dist/src/compiled/_chunks/workflow/{wait-until-xbRRDuUf.js → wait-until-BPou0RGO.js} +1 -1
  81. package/dist/src/compiled/_chunks/workflow/workflow-routes-BaljomCk.js +1 -0
  82. package/dist/src/compiled/{@ai-sdk/code-mode → run}/LICENSE +1 -1
  83. package/dist/src/compiled/run/index.d.ts +384 -0
  84. package/dist/src/compiled/run/index.js +650 -0
  85. package/dist/src/compiler/extension-compatibility.d.ts +28 -20
  86. package/dist/src/compiler/extension-compatibility.js +1 -1
  87. package/dist/src/compiler/load-binding-namespace.d.ts +2 -0
  88. package/dist/src/compiler/load-binding-namespace.js +1 -1
  89. package/dist/src/compiler/manifest.js +1 -1
  90. package/dist/src/compiler/module-lifecycle.d.ts +1 -1
  91. package/dist/src/compiler/module-lifecycle.js +1 -1
  92. package/dist/src/compiler/module-map.js +1 -1
  93. package/dist/src/compiler/normalize-agent-config.js +1 -1
  94. package/dist/src/compiler/normalize-manifest.js +1 -1
  95. package/dist/src/compiler/normalize-sandbox.js +1 -1
  96. package/dist/src/compiler/project-sources.d.ts +6 -0
  97. package/dist/src/compiler/project-sources.js +1 -1
  98. package/dist/src/compiler/workspace-resources.js +1 -1
  99. package/dist/src/context/build-callback-context.js +1 -1
  100. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  101. package/dist/src/context/keys.d.ts +2 -0
  102. package/dist/src/context/keys.js +1 -1
  103. package/dist/src/context/providers/sandbox.js +1 -1
  104. package/dist/src/discover/extension-specifier.d.ts +1 -0
  105. package/dist/src/discover/extension-specifier.js +1 -1
  106. package/dist/src/evals/cli/eval-state-directory.d.ts +7 -0
  107. package/dist/src/evals/cli/eval-state-directory.js +1 -0
  108. package/dist/src/evals/cli/eval.js +2 -2
  109. package/dist/src/evals/runner/artifacts.js +1 -1
  110. package/dist/src/evals/runner/derive-run-facts.d.ts +12 -0
  111. package/dist/src/evals/runner/derive-run-facts.js +1 -1
  112. package/dist/src/evals/runner/execute-task.js +1 -1
  113. package/dist/src/evals/types.d.ts +3 -2
  114. package/dist/src/eve-channel/index.js +1 -1
  115. package/dist/src/eve-channel/request.d.ts +0 -1
  116. package/dist/src/eve-channel/request.js +2 -2
  117. package/dist/src/eve-channel/support.d.ts +2 -0
  118. package/dist/src/eve-channel/support.js +1 -1
  119. package/dist/src/eve-channel/types.d.ts +7 -0
  120. package/dist/src/execution/agent-sessions/context.d.ts +3 -14
  121. package/dist/src/execution/agent-sessions/context.js +1 -1
  122. package/dist/src/execution/agent-sessions/runtime-overrides.d.ts +5 -0
  123. package/dist/src/execution/agent-sessions/session.d.ts +2 -2
  124. package/dist/src/execution/agent-sessions/session.js +1 -1
  125. package/dist/src/execution/agent-sessions/steps.d.ts +2 -0
  126. package/dist/src/execution/agent-sessions/steps.js +1 -1
  127. package/dist/src/execution/coordination-dispatch-shared.d.ts +8 -5
  128. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  129. package/dist/src/execution/coordination-dispatch-step.d.ts +17 -2
  130. package/dist/src/execution/coordination-dispatch-step.js +1 -1
  131. package/dist/src/execution/create-session-step.d.ts +5 -2
  132. package/dist/src/execution/create-session-step.js +1 -1
  133. package/dist/src/execution/deliver-payloads.js +1 -1
  134. package/dist/src/execution/durable-session-store.d.ts +0 -1
  135. package/dist/src/execution/dynamic-connection-recovery.js +1 -1
  136. package/dist/src/execution/dynamic-workflow/program-step.d.ts +7 -7
  137. package/dist/src/execution/dynamic-workflow/program-step.js +1 -1
  138. package/dist/src/execution/dynamic-workflow/schema.d.ts +18 -11
  139. package/dist/src/execution/dynamic-workflow/schema.js +1 -1
  140. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  141. package/dist/src/execution/dynamic-workflow/workflow.js +1 -1
  142. package/dist/src/execution/effective-agent-config.d.ts +8 -2
  143. package/dist/src/execution/effective-agent-config.js +1 -1
  144. package/dist/src/execution/eve-workflow-attributes.d.ts +3 -1
  145. package/dist/src/execution/eve-workflow-attributes.js +1 -1
  146. package/dist/src/execution/install-workflow-deployment-id.d.ts +3 -0
  147. package/dist/src/execution/install-workflow-deployment-id.js +1 -0
  148. package/dist/src/execution/invoke-tool.js +1 -1
  149. package/dist/src/execution/legacy-session/turn-workflow.js +1 -1
  150. package/dist/src/execution/node-step.d.ts +1 -0
  151. package/dist/src/execution/node-step.js +1 -1
  152. package/dist/src/execution/runtime-context.d.ts +2 -0
  153. package/dist/src/execution/runtime-context.js +1 -1
  154. package/dist/src/execution/sandbox/abort-bound-session.js +1 -1
  155. package/dist/src/execution/sandbox/active-connections.d.ts +28 -0
  156. package/dist/src/execution/sandbox/active-connections.js +1 -0
  157. package/dist/src/execution/sandbox/bindings/docker-cli.d.ts +10 -2
  158. package/dist/src/execution/sandbox/bindings/docker-cli.js +2 -2
  159. package/dist/src/execution/sandbox/bindings/docker-connection.d.ts +15 -0
  160. package/dist/src/execution/sandbox/bindings/docker-connection.js +2 -0
  161. package/dist/src/execution/sandbox/bindings/docker-container.d.ts +2 -0
  162. package/dist/src/execution/sandbox/bindings/docker-container.js +1 -1
  163. package/dist/src/execution/sandbox/bindings/docker-network.d.ts +5 -0
  164. package/dist/src/execution/sandbox/bindings/docker-network.js +1 -1
  165. package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
  166. package/dist/src/execution/sandbox/bindings/docker.d.ts +12 -15
  167. package/dist/src/execution/sandbox/bindings/docker.js +1 -1
  168. package/dist/src/execution/sandbox/bindings/just-bash-runtime.d.ts +19 -29
  169. package/dist/src/execution/sandbox/bindings/just-bash-runtime.js +1 -1
  170. package/dist/src/execution/sandbox/bindings/just-bash.d.ts +2 -4
  171. package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
  172. package/dist/src/execution/sandbox/bindings/local-provider-utils.d.ts +0 -20
  173. package/dist/src/execution/sandbox/bindings/local-provider-utils.js +1 -1
  174. package/dist/src/execution/sandbox/bindings/local.d.ts +4 -6
  175. package/dist/src/execution/sandbox/bindings/local.js +1 -1
  176. package/dist/src/execution/sandbox/bindings/vercel-base-runtime.d.ts +2 -0
  177. package/dist/src/execution/sandbox/bindings/vercel-base-runtime.js +2 -2
  178. package/dist/src/execution/sandbox/bindings/vercel-errors.js +2 -2
  179. package/dist/src/execution/sandbox/bindings/vercel-lifecycle.d.ts +7 -5
  180. package/dist/src/execution/sandbox/bindings/vercel-lifecycle.js +1 -1
  181. package/dist/src/execution/sandbox/bindings/vercel.d.ts +5 -11
  182. package/dist/src/execution/sandbox/bindings/vercel.js +1 -2
  183. package/dist/src/execution/sandbox/development-cleanup.d.ts +0 -1
  184. package/dist/src/execution/sandbox/development-cleanup.js +1 -1
  185. package/dist/src/execution/sandbox/development-lazy-prewarm.js +1 -1
  186. package/dist/src/execution/sandbox/development-run.d.ts +0 -2
  187. package/dist/src/execution/sandbox/development-run.js +1 -1
  188. package/dist/src/execution/sandbox/dockerfile.d.ts +0 -4
  189. package/dist/src/execution/sandbox/dockerfile.js +1 -1
  190. package/dist/src/execution/sandbox/ensure.d.ts +23 -11
  191. package/dist/src/execution/sandbox/ensure.js +1 -1
  192. package/dist/src/execution/sandbox/glob-tool.js +3 -3
  193. package/dist/src/execution/sandbox/grep-tool.js +1 -1
  194. package/dist/src/execution/sandbox/logging-session.js +1 -1
  195. package/dist/src/execution/sandbox/prewarm.d.ts +23 -3
  196. package/dist/src/execution/sandbox/prewarm.js +2 -1
  197. package/dist/src/execution/sandbox/read-file.js +1 -1
  198. package/dist/src/execution/sandbox/require-sandbox.d.ts +3 -2
  199. package/dist/src/execution/sandbox/require-sandbox.js +1 -1
  200. package/dist/src/execution/sandbox/ripgrep-probe.js +1 -1
  201. package/dist/src/execution/sandbox/session.d.ts +10 -20
  202. package/dist/src/execution/sandbox/session.js +2 -2
  203. package/dist/src/execution/session/active-turn.js +1 -1
  204. package/dist/src/execution/session/admission.js +1 -1
  205. package/dist/src/execution/session/checkpoint-migrations.js +1 -1
  206. package/dist/src/execution/session/entry-input.d.ts +5 -6
  207. package/dist/src/execution/session/entry.js +1 -1
  208. package/dist/src/execution/session/finalization.js +1 -1
  209. package/dist/src/execution/session/handoff-state.d.ts +5 -0
  210. package/dist/src/execution/session/handoff-state.js +1 -0
  211. package/dist/src/execution/session/handoff-steps.d.ts +0 -5
  212. package/dist/src/execution/session/handoff-steps.js +1 -1
  213. package/dist/src/execution/session/handoff.d.ts +7 -9
  214. package/dist/src/execution/session/handoff.js +1 -1
  215. package/dist/src/execution/session/input-queue.d.ts +8 -1
  216. package/dist/src/execution/session/input-queue.js +1 -1
  217. package/dist/src/execution/session/next-input.d.ts +3 -0
  218. package/dist/src/execution/session/next-input.js +1 -1
  219. package/dist/src/execution/session/pending-history.d.ts +5 -0
  220. package/dist/src/execution/session/pending-history.js +1 -0
  221. package/dist/src/execution/session/pending-turn-state.js +1 -1
  222. package/dist/src/execution/session/program.d.ts +1 -1
  223. package/dist/src/execution/session/program.js +1 -1
  224. package/dist/src/execution/session/timeout-control.d.ts +22 -4
  225. package/dist/src/execution/session/timeout-control.js +1 -1
  226. package/dist/src/execution/session/timeout.d.ts +1 -2
  227. package/dist/src/execution/session/timeout.js +1 -1
  228. package/dist/src/execution/session/turn-control.d.ts +5 -2
  229. package/dist/src/execution/session/turn-control.js +1 -1
  230. package/dist/src/execution/session/turn-event-handler.js +1 -1
  231. package/dist/src/execution/session/turn-step-result.js +1 -1
  232. package/dist/src/execution/session/turn-step.js +1 -1
  233. package/dist/src/execution/session/turn-waiting-step.js +1 -1
  234. package/dist/src/execution/session/turn.js +1 -1
  235. package/dist/src/execution/session-inbox/inbox.d.ts +9 -1
  236. package/dist/src/execution/session-inbox/inbox.js +1 -1
  237. package/dist/src/execution/session-inbox/protocol.d.ts +2 -1
  238. package/dist/src/execution/session-inbox/protocol.js +1 -1
  239. package/dist/src/execution/session-inbox/resume.d.ts +2 -1
  240. package/dist/src/execution/session-inbox/resume.js +1 -1
  241. package/dist/src/execution/session-prewarm.d.ts +8 -0
  242. package/dist/src/execution/session-prewarm.js +1 -0
  243. package/dist/src/execution/session.d.ts +0 -12
  244. package/dist/src/execution/session.js +2 -2
  245. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  246. package/dist/src/execution/skills/instructions.js +1 -1
  247. package/dist/src/execution/tasks/model-step.js +1 -1
  248. package/dist/src/execution/tasks/start.d.ts +4 -4
  249. package/dist/src/execution/tasks/start.js +1 -1
  250. package/dist/src/execution/tasks/steps.js +1 -1
  251. package/dist/src/execution/terminate-child-sessions-step.js +1 -1
  252. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  253. package/dist/src/execution/tools/workflow/body.d.ts +2 -2
  254. package/dist/src/execution/tools/workflow/body.js +1 -1
  255. package/dist/src/execution/tools/workflow/step-context.d.ts +11 -0
  256. package/dist/src/execution/tools/workflow/step-execution.js +1 -1
  257. package/dist/src/execution/tools/workflow/step.js +1 -1
  258. package/dist/src/execution/workflow-runtime.d.ts +5 -1
  259. package/dist/src/execution/workflow-runtime.js +1 -1
  260. package/dist/src/extensions/git/extension/lib/github-shell-schema.js +1 -1
  261. package/dist/src/framework/sources/modules/sandbox.d.ts +1 -1
  262. package/dist/src/harness/attachment-staging.d.ts +0 -7
  263. package/dist/src/harness/attachment-staging.js +1 -1
  264. package/dist/src/harness/hitl/approvals.js +1 -1
  265. package/dist/src/harness/hitl/budget-request.d.ts +12 -6
  266. package/dist/src/harness/hitl/budget-request.js +1 -1
  267. package/dist/src/harness/hitl/budget.d.ts +7 -1
  268. package/dist/src/harness/hitl/budget.js +1 -1
  269. package/dist/src/harness/hitl/coordinator.js +1 -1
  270. package/dist/src/harness/hitl/delivery.d.ts +1 -1
  271. package/dist/src/harness/hitl/delivery.js +1 -1
  272. package/dist/src/harness/hitl/index.d.ts +2 -1
  273. package/dist/src/harness/hitl/index.js +1 -1
  274. package/dist/src/harness/hitl/intake.d.ts +2 -2
  275. package/dist/src/harness/hitl/intake.js +1 -1
  276. package/dist/src/harness/hitl/view.d.ts +1 -0
  277. package/dist/src/harness/hitl/view.js +1 -0
  278. package/dist/src/harness/messages.d.ts +5 -0
  279. package/dist/src/harness/messages.js +1 -1
  280. package/dist/src/harness/model-call/call.d.ts +2 -2
  281. package/dist/src/harness/model-call/request.d.ts +2 -2
  282. package/dist/src/harness/model-call/run.js +1 -1
  283. package/dist/src/harness/semantic-errors/rules/sandbox.d.ts +3 -5
  284. package/dist/src/harness/semantic-errors/rules/sandbox.js +1 -1
  285. package/dist/src/harness/session-machine/transitions.d.ts +3 -1
  286. package/dist/src/harness/session-machine/transitions.js +1 -1
  287. package/dist/src/harness/step/context.d.ts +3 -0
  288. package/dist/src/harness/step/context.js +1 -1
  289. package/dist/src/harness/step/intake.d.ts +5 -2
  290. package/dist/src/harness/step/intake.js +1 -1
  291. package/dist/src/harness/step/prompt.js +1 -1
  292. package/dist/src/harness/tool-history-repair.d.ts +9 -0
  293. package/dist/src/harness/tool-history-repair.js +1 -0
  294. package/dist/src/harness/tool-loop.js +1 -1
  295. package/dist/src/harness/tool-model-output.d.ts +19 -3
  296. package/dist/src/harness/tool-model-output.js +1 -1
  297. package/dist/src/harness/turn-tag-state.d.ts +7 -26
  298. package/dist/src/harness/turn-tag-state.js +1 -1
  299. package/dist/src/harness/types.d.ts +10 -25
  300. package/dist/src/internal/application/build-profile.d.ts +3 -0
  301. package/dist/src/internal/application/build-profile.js +1 -1
  302. package/dist/src/internal/application/compiled-artifacts.js +10 -6
  303. package/dist/src/internal/application/dev-environment.d.ts +13 -0
  304. package/dist/src/internal/application/dev-environment.js +1 -1
  305. package/dist/src/internal/application/optional-package-import.d.ts +10 -0
  306. package/dist/src/internal/application/optional-package-import.js +1 -1
  307. package/dist/src/internal/application/stamped-package-version.js +1 -1
  308. package/dist/src/internal/attachments/limited-read.d.ts +2 -2
  309. package/dist/src/internal/authored-definition/core.js +1 -1
  310. package/dist/src/internal/authored-module-build-options.d.ts +13 -0
  311. package/dist/src/internal/authored-module-build-options.js +1 -0
  312. package/dist/src/internal/authored-module-cache.d.ts +10 -0
  313. package/dist/src/internal/authored-module-cache.js +1 -0
  314. package/dist/src/internal/authored-module-graph.d.ts +13 -0
  315. package/dist/src/internal/authored-module-graph.js +1 -0
  316. package/dist/src/internal/authored-module-loader.d.ts +22 -1
  317. package/dist/src/internal/authored-module-loader.js +1 -3
  318. package/dist/src/internal/authored-module.d.ts +7 -0
  319. package/dist/src/internal/authored-module.js +1 -1
  320. package/dist/src/internal/authored-package-boundary.js +1 -1
  321. package/dist/src/internal/authored-relative-extension-resolver.js +1 -1
  322. package/dist/src/internal/bundler/nitro-rolldown.d.ts +8 -2
  323. package/dist/src/internal/bundler/nitro-rolldown.js +1 -1
  324. package/dist/src/internal/bundler/pseudo-packages.d.ts +11 -0
  325. package/dist/src/internal/bundler/pseudo-packages.js +1 -0
  326. package/dist/src/internal/development-programmatic-source-loader.d.ts +1 -0
  327. package/dist/src/internal/development-programmatic-source-loader.js +1 -1
  328. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  329. package/dist/src/internal/nitro/dev-runtime-generation-metadata.js +1 -1
  330. package/dist/src/internal/nitro/host/build-application.js +1 -1
  331. package/dist/src/internal/nitro/host/build-deployment-id.d.ts +8 -0
  332. package/dist/src/internal/nitro/host/build-deployment-id.js +1 -0
  333. package/dist/src/internal/nitro/host/build-extension.d.ts +6 -0
  334. package/dist/src/internal/nitro/host/build-extension.js +2 -2
  335. package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.d.ts +3 -1
  336. package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.js +3 -5
  337. package/dist/src/internal/nitro/host/create-application-nitro.d.ts +2 -3
  338. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  339. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +2 -0
  340. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
  341. package/dist/src/internal/nitro/host/dev-authored-source-watcher.js +1 -1
  342. package/dist/src/internal/nitro/host/dev-build-host.d.ts +83 -0
  343. package/dist/src/internal/nitro/host/dev-build-host.js +1 -0
  344. package/dist/src/internal/nitro/host/dev-build-operations.d.ts +6 -0
  345. package/dist/src/internal/nitro/host/dev-build-operations.js +1 -0
  346. package/dist/src/internal/nitro/host/dev-build-process.d.ts +1 -0
  347. package/dist/src/internal/nitro/host/dev-build-process.js +1 -0
  348. package/dist/src/internal/nitro/host/dev-server-state.js +1 -1
  349. package/dist/src/internal/nitro/host/development-runtime-prune-plugin.d.ts +4 -1
  350. package/dist/src/internal/nitro/host/development-runtime-prune-plugin.js +3 -2
  351. package/dist/src/internal/nitro/host/drained-nitro-dev-server.d.ts +13 -0
  352. package/dist/src/internal/nitro/host/drained-nitro-dev-server.js +1 -1
  353. package/dist/src/internal/nitro/host/optional-engine-dependency-plugin.js +1 -1
  354. package/dist/src/internal/nitro/host/prepare-application-host.d.ts +3 -0
  355. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  356. package/dist/src/internal/nitro/host/sandbox-shutdown-plugin.js +1 -1
  357. package/dist/src/internal/nitro/host/skill-server-assets.js +1 -1
  358. package/dist/src/internal/nitro/host/stage-build-deployment-id.d.ts +2 -0
  359. package/dist/src/internal/nitro/host/stage-build-deployment-id.js +1 -0
  360. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  361. package/dist/src/internal/nitro/host/start-production-server.d.ts +1 -0
  362. package/dist/src/internal/nitro/host/start-production-server.js +3 -3
  363. package/dist/src/internal/nitro/host/workflow-sandbox-runtime-plugin.js +1 -1
  364. package/dist/src/internal/nitro/host.js +1 -1
  365. package/dist/src/internal/nitro/routes/schedule-task.d.ts +3 -0
  366. package/dist/src/internal/nitro/routes/schedule-task.js +1 -1
  367. package/dist/src/internal/programmatic-source-loader.d.ts +1 -0
  368. package/dist/src/internal/programmatic-source-loader.js +1 -1
  369. package/dist/src/internal/schedules/disabled.d.ts +2 -0
  370. package/dist/src/internal/schedules/disabled.js +1 -0
  371. package/dist/src/internal/workflow/development-world-server.js +1 -1
  372. package/dist/src/internal/workflow/local-world-data-directory.d.ts +2 -1
  373. package/dist/src/internal/workflow/local-world-data-directory.js +1 -1
  374. package/dist/src/internal/workflow/local-world-delivery-auth.d.ts +17 -0
  375. package/dist/src/internal/workflow/local-world-delivery-auth.js +1 -0
  376. package/dist/src/internal/workflow/queue-namespace.d.ts +2 -0
  377. package/dist/src/internal/workflow/queue-namespace.js +1 -1
  378. package/dist/src/internal/workflow-bundle/builder-support.d.ts +0 -1
  379. package/dist/src/internal/workflow-bundle/builder-support.js +2 -2
  380. package/dist/src/internal/workflow-bundle/builder.js +2 -2
  381. package/dist/src/internal/workflow-bundle/vercel-workflow-output.d.ts +1 -1
  382. package/dist/src/internal/workflow-bundle/vercel-workflow-output.js +1 -1
  383. package/dist/src/protocol/message.d.ts +27 -1
  384. package/dist/src/protocol/message.js +2 -2
  385. package/dist/src/protocol/prewarm-session.d.ts +14 -0
  386. package/dist/src/protocol/prewarm-session.js +1 -0
  387. package/dist/src/protocol/routes.d.ts +2 -2
  388. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +13 -0
  389. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
  390. package/dist/src/public/channels/chat-sdk/fetch-message.d.ts +10 -0
  391. package/dist/src/public/channels/chat-sdk/fetch-message.js +1 -0
  392. package/dist/src/public/channels/chat-sdk/index.d.ts +1 -1
  393. package/dist/src/public/channels/chat-sdk/reply-context.d.ts +15 -0
  394. package/dist/src/public/channels/chat-sdk/reply-context.js +2 -0
  395. package/dist/src/public/channels/discord/authorization.d.ts +45 -0
  396. package/dist/src/public/channels/discord/authorization.js +3 -0
  397. package/dist/src/public/channels/discord/defaults.d.ts +14 -3
  398. package/dist/src/public/channels/discord/defaults.js +2 -2
  399. package/dist/src/public/channels/discord/discordChannel.d.ts +18 -1
  400. package/dist/src/public/channels/discord/discordChannel.js +1 -1
  401. package/dist/src/public/channels/discord/gateway/connection.d.ts +26 -0
  402. package/dist/src/public/channels/discord/gateway/connection.js +1 -0
  403. package/dist/src/public/channels/discord/gateway/forwarder.d.ts +14 -0
  404. package/dist/src/public/channels/discord/gateway/forwarder.js +1 -0
  405. package/dist/src/public/channels/discord/gateway/index.d.ts +59 -0
  406. package/dist/src/public/channels/discord/gateway/index.js +1 -0
  407. package/dist/src/public/channels/discord/inbound.d.ts +10 -3
  408. package/dist/src/public/channels/discord/inbound.js +2 -2
  409. package/dist/src/public/channels/discord/index.d.ts +3 -2
  410. package/dist/src/public/channels/discord/index.js +1 -1
  411. package/dist/src/public/channels/discord/messages.d.ts +116 -0
  412. package/dist/src/public/channels/discord/messages.js +2 -0
  413. package/dist/src/public/channels/github/checkout.js +1 -1
  414. package/dist/src/public/channels/github/dispatch.js +1 -1
  415. package/dist/src/public/channels/github/githubChannel.d.ts +3 -0
  416. package/dist/src/public/channels/imessage-tapbacks.d.ts +74 -0
  417. package/dist/src/public/channels/imessage-tapbacks.js +1 -0
  418. package/dist/src/public/channels/index.d.ts +2 -1
  419. package/dist/src/public/channels/index.js +1 -1
  420. package/dist/src/public/channels/linear/linearChannel.d.ts +3 -0
  421. package/dist/src/public/channels/linear/linearChannel.js +1 -1
  422. package/dist/src/public/channels/linq/inboundContent.d.ts +7 -0
  423. package/dist/src/public/channels/linq/inboundContent.js +1 -1
  424. package/dist/src/public/channels/linq/index.d.ts +1 -0
  425. package/dist/src/public/channels/linq/index.js +1 -1
  426. package/dist/src/public/channels/linq/linqChannel.d.ts +21 -2
  427. package/dist/src/public/channels/linq/linqChannel.js +1 -1
  428. package/dist/src/public/channels/photon/inboundContent.d.ts +7 -0
  429. package/dist/src/public/channels/photon/inboundContent.js +2 -1
  430. package/dist/src/public/channels/photon/index.d.ts +1 -0
  431. package/dist/src/public/channels/photon/index.js +1 -1
  432. package/dist/src/public/channels/photon/photonIMessageChannel.d.ts +17 -1
  433. package/dist/src/public/channels/photon/photonIMessageChannel.js +1 -1
  434. package/dist/src/public/channels/same-environment-oidc.d.ts +7 -0
  435. package/dist/src/public/channels/same-environment-oidc.js +1 -0
  436. package/dist/src/public/channels/slack/api.d.ts +6 -0
  437. package/dist/src/public/channels/slack/api.js +1 -1
  438. package/dist/src/public/channels/slack/model-context.d.ts +7 -0
  439. package/dist/src/public/channels/slack/model-context.js +1 -1
  440. package/dist/src/public/channels/slack/reply-delivery.d.ts +5 -0
  441. package/dist/src/public/channels/slack/reply-delivery.js +1 -1
  442. package/dist/src/public/channels/slack/slackChannel.d.ts +17 -3
  443. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  444. package/dist/src/public/channels/teams/teamsChannel.d.ts +3 -0
  445. package/dist/src/public/channels/teams/teamsChannel.js +1 -1
  446. package/dist/src/public/channels/telegram/telegramChannel.d.ts +3 -0
  447. package/dist/src/public/channels/telegram/telegramChannel.js +1 -1
  448. package/dist/src/public/definitions/agent.d.ts +1 -1
  449. package/dist/src/public/definitions/channel.d.ts +2 -2
  450. package/dist/src/public/definitions/channel.js +1 -1
  451. package/dist/src/public/definitions/hook.d.ts +1 -0
  452. package/dist/src/public/definitions/sandbox.d.ts +1 -1
  453. package/dist/src/public/index.d.ts +1 -1
  454. package/dist/src/public/next/server.js +1 -1
  455. package/dist/src/public/sandbox/docker-sandbox.d.ts +6 -1
  456. package/dist/src/public/sandbox/docker.d.ts +1 -8
  457. package/dist/src/public/sandbox/index.d.ts +3 -3
  458. package/dist/src/public/sandbox/just-bash-sandbox.d.ts +87 -7
  459. package/dist/src/public/sandbox/just-bash.d.ts +1 -1
  460. package/dist/src/public/sandbox/provider.d.ts +5 -1
  461. package/dist/src/public/sandbox/provider.js +1 -1
  462. package/dist/src/public/sandbox/vercel-sandbox.d.ts +16 -9
  463. package/dist/src/public/sandbox/vercel.d.ts +0 -1
  464. package/dist/src/public/sandbox/vercel.js +1 -1
  465. package/dist/src/public/tools/agent.d.ts +8 -1
  466. package/dist/src/public/tools/agent.js +1 -1
  467. package/dist/src/public/tools/index.d.ts +1 -1
  468. package/dist/src/react/use-eve-agent.d.ts +1 -1
  469. package/dist/src/runtime/agent/resolve-model.d.ts +4 -0
  470. package/dist/src/runtime/agent/resolve-model.js +1 -1
  471. package/dist/src/runtime/connections/openapi-client.d.ts +2 -0
  472. package/dist/src/runtime/connections/openapi-client.js +1 -1
  473. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  474. package/dist/src/runtime/resolve-agent.js +1 -1
  475. package/dist/src/runtime/resolve-channel.js +1 -1
  476. package/dist/src/runtime/resolve-sandbox.js +1 -1
  477. package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -1
  478. package/dist/src/runtime/sandbox/registry.d.ts +2 -0
  479. package/dist/src/runtime/sandbox/registry.js +1 -1
  480. package/dist/src/runtime/sessions/compiled-agent-cache.js +1 -1
  481. package/dist/src/runtime/subagents/dynamic-agent-config.d.ts +2 -1
  482. package/dist/src/runtime/subagents/dynamic-agent-config.js +1 -1
  483. package/dist/src/runtime/subagents/workflow.d.ts +6 -0
  484. package/dist/src/runtime/subagents/workflow.js +1 -1
  485. package/dist/src/runtime/types.d.ts +3 -2
  486. package/dist/src/runtime/workspace/seed-files.d.ts +9 -12
  487. package/dist/src/runtime/workspace/seed-files.js +1 -1
  488. package/dist/src/runtime/workspace/spec.d.ts +1 -1
  489. package/dist/src/runtime/workspace/spec.js +1 -1
  490. package/dist/src/runtime/workspace/types.d.ts +2 -6
  491. package/dist/src/sandbox/provider.d.ts +185 -0
  492. package/dist/src/sandbox/provider.js +1 -0
  493. package/dist/src/sandbox/providers/default.d.ts +20 -19
  494. package/dist/src/sandbox/providers/default.js +1 -1
  495. package/dist/src/sandbox/providers/docker.d.ts +5 -2
  496. package/dist/src/sandbox/providers/docker.js +1 -1
  497. package/dist/src/sandbox/providers/just-bash.d.ts +4 -3
  498. package/dist/src/sandbox/providers/just-bash.js +1 -1
  499. package/dist/src/sandbox/providers/vercel.d.ts +4 -10
  500. package/dist/src/sandbox/providers/vercel.js +1 -1
  501. package/dist/src/sandbox/providers.d.ts +0 -1
  502. package/dist/src/sandbox/providers.js +1 -1
  503. package/dist/src/sandbox/state.d.ts +44 -0
  504. package/dist/src/sandbox/state.js +1 -1
  505. package/dist/src/self-modification/deployed-sandbox.d.ts +4 -9
  506. package/dist/src/self-modification/deployed-sandbox.js +1 -1
  507. package/dist/src/self-modification/filesystem.d.ts +3 -3
  508. package/dist/src/self-modification/remote/config.d.ts +2 -2
  509. package/dist/src/self-modification/remote/config.js +1 -1
  510. package/dist/src/self-modification/setup.d.ts +0 -1
  511. package/dist/src/self-modification/setup.js +8 -8
  512. package/dist/src/setup/integrations/discord/api.d.ts +7 -0
  513. package/dist/src/setup/integrations/discord/api.js +1 -1
  514. package/dist/src/setup/integrations/discord/daemon.d.ts +18 -0
  515. package/dist/src/setup/integrations/discord/daemon.js +21 -0
  516. package/dist/src/setup/integrations/discord/setup.d.ts +24 -4
  517. package/dist/src/setup/integrations/discord/setup.js +5 -4
  518. package/dist/src/setup/integrations/self-modification/setup.js +1 -1
  519. package/dist/src/setup/scaffold/create/project.js +1 -1
  520. package/dist/src/setup/scaffold/update/web-options.js +1 -1
  521. package/dist/src/setup/scaffold/version-tokens.d.ts +0 -1
  522. package/dist/src/setup/scaffold/version-tokens.js +1 -1
  523. package/dist/src/shared/agent-definition.d.ts +33 -42
  524. package/dist/src/shared/built-server-start-failure.d.ts +12 -0
  525. package/dist/src/shared/built-server-start-failure.js +3 -0
  526. package/dist/src/shared/framework-eve-server.d.ts +2 -0
  527. package/dist/src/shared/framework-eve-server.js +2 -2
  528. package/dist/src/shared/sandbox-environment.d.ts +4 -10
  529. package/dist/src/shared/sandbox-environment.js +1 -1
  530. package/dist/src/shared/sandbox-network-policy.d.ts +45 -9
  531. package/dist/src/shared/sandbox-provider.d.ts +0 -103
  532. package/dist/src/shared/sandbox-provider.js +1 -1
  533. package/dist/src/shared/sandbox-recorded-data-error.d.ts +4 -0
  534. package/dist/src/shared/sandbox-recorded-data-error.js +1 -0
  535. package/dist/src/shared/sandbox-session-gone-error.d.ts +12 -0
  536. package/dist/src/shared/sandbox-session-gone-error.js +1 -0
  537. package/dist/src/shared/sandbox-session.d.ts +97 -83
  538. package/dist/src/shared/sandbox-template-error.d.ts +19 -4
  539. package/dist/src/shared/sandbox-template-error.js +1 -1
  540. package/dist/src/shared/sandbox-tool-session-error.d.ts +4 -0
  541. package/dist/src/shared/sandbox-tool-session-error.js +1 -0
  542. package/dist/src/shared/session-history.d.ts +22 -0
  543. package/dist/src/shared/session-history.js +1 -0
  544. package/dist/src/shared/skill-package.js +1 -1
  545. package/dist/src/shared/skill-paths.d.ts +4 -5
  546. package/dist/src/shared/skill-paths.js +2 -2
  547. package/dist/src/shared/workflow-sandbox.d.ts +4 -41
  548. package/dist/src/shared/workflow-sandbox.js +1 -1
  549. package/dist/src/subagents/tool.d.ts +1 -3
  550. package/dist/src/subagents/tool.js +1 -1
  551. package/dist/src/svelte/index.js +1 -1
  552. package/dist/src/svelte/use-eve-agent.d.ts +1 -1
  553. package/dist/src/svelte/use-eve-agent.js +1 -1
  554. package/dist/src/tools/model-output.d.ts +23 -5
  555. package/dist/src/tools/model-output.js +1 -1
  556. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  557. package/dist/src/tools/provided/glob.js +1 -1
  558. package/dist/src/tools/provided/grep.js +1 -1
  559. package/dist/src/tools/provided/read-file.js +1 -1
  560. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  561. package/dist/src/tools/provided/workflow.js +1 -1
  562. package/dist/src/tools/provided/write-file.js +1 -1
  563. package/dist/src/tools/workflow-definition.d.ts +33 -5
  564. package/dist/src/tracing/eve/conversation-context.d.ts +4 -1
  565. package/dist/src/tracing/eve/conversation-context.js +1 -1
  566. package/dist/src/tracing/eve/invoke-tool-span.js +1 -1
  567. package/dist/src/tracing/eve/operation-input.d.ts +0 -5
  568. package/dist/src/tracing/eve/operation-input.js +1 -1
  569. package/dist/src/tracing/eve/otel-registration.js +1 -1
  570. package/dist/src/tracing/eve/session.d.ts +3 -2
  571. package/dist/src/tracing/eve/session.js +1 -1
  572. package/dist/src/vue/index.js +1 -1
  573. package/dist/src/vue/use-eve-agent.d.ts +1 -1
  574. package/dist/src/vue/use-eve-agent.js +1 -1
  575. package/docs/agent-config.md +86 -65
  576. package/docs/channels/chat-sdk.mdx +6 -1
  577. package/docs/channels/custom.mdx +41 -9
  578. package/docs/channels/discord.mdx +279 -7
  579. package/docs/channels/eve.mdx +58 -1
  580. package/docs/channels/linq.mdx +53 -2
  581. package/docs/channels/mcp.mdx +2 -2
  582. package/docs/channels/overview.mdx +1 -1
  583. package/docs/channels/photon.mdx +65 -1
  584. package/docs/channels/slack.mdx +4 -2
  585. package/docs/concepts/built-in-tools.md +32 -9
  586. package/docs/concepts/execution-model-and-durability.mdx +15 -103
  587. package/docs/concepts/security-model.md +2 -0
  588. package/docs/concepts/sessions-runs-and-streaming.md +52 -43
  589. package/docs/connections/openapi.mdx +2 -0
  590. package/docs/connections/overview.mdx +1 -1
  591. package/docs/evals/reporters.mdx +1 -1
  592. package/docs/evals/running.mdx +1 -1
  593. package/docs/experimental/dynamic-schedules.mdx +186 -0
  594. package/docs/experimental/meta.json +4 -0
  595. package/docs/guides/client/messages.mdx +1 -1
  596. package/docs/guides/client/streaming.mdx +1 -0
  597. package/docs/guides/deployment/overview.md +4 -4
  598. package/docs/guides/deployment/self-hosting.md +53 -1
  599. package/docs/guides/dev-tui.md +1 -1
  600. package/docs/guides/dynamic-capabilities.md +1 -1
  601. package/docs/guides/frontend/overview.mdx +26 -6
  602. package/docs/guides/hooks.md +21 -1
  603. package/docs/guides/instrumentation/agent-runs.mdx +16 -0
  604. package/docs/guides/self-modification.md +1 -1
  605. package/docs/guides/session-context.md +1 -1
  606. package/docs/instructions.mdx +1 -1
  607. package/docs/memory/overview.mdx +2 -1
  608. package/docs/patterns/dynamic-scheduling.md +3 -1
  609. package/docs/reference/agent-files.md +3 -3
  610. package/docs/reference/cli.md +21 -9
  611. package/docs/reference/typescript-api.md +9 -3
  612. package/docs/sandbox/custom-providers.mdx +254 -0
  613. package/docs/sandbox/default.mdx +71 -4
  614. package/docs/sandbox/docker.mdx +15 -3
  615. package/docs/sandbox/index.mdx +27 -103
  616. package/docs/sandbox/just-bash.mdx +54 -0
  617. package/docs/sandbox/meta.json +9 -1
  618. package/docs/sandbox/troubleshooting.mdx +215 -0
  619. package/docs/sandbox/vercel.mdx +48 -7
  620. package/docs/schedules.mdx +2 -0
  621. package/docs/skills.mdx +1 -1
  622. package/docs/subagents/index.mdx +3 -1
  623. package/docs/tools/overview.mdx +21 -1
  624. package/docs/tools/tasks-upgrade.md +12 -7
  625. package/docs/tools/tasks.md +10 -6
  626. package/docs/tools/workflows.mdx +109 -10
  627. package/docs/tutorial/connect-a-warehouse.mdx +1 -1
  628. package/docs/tutorial/run-analysis.mdx +3 -3
  629. package/package.json +14 -20
  630. package/dist/src/compiled/@ai-sdk/code-mode/_run.d.ts +0 -1
  631. package/dist/src/compiled/@ai-sdk/code-mode/index.d.ts +0 -325
  632. package/dist/src/compiled/@ai-sdk/code-mode/index.js +0 -660
  633. package/dist/src/compiled/_chunks/workflow/dist-CyBgVS7g.js +0 -1
  634. package/dist/src/compiled/_chunks/workflow/dist-T5NnW-0k.js +0 -3
  635. package/dist/src/compiled/_chunks/workflow/helpers-DlLD3ov_.js +0 -1
  636. package/dist/src/compiled/_chunks/workflow/private-tQUuwBoQ.js +0 -1
  637. package/dist/src/compiled/_chunks/workflow/resume-hook-DMsV_b4n.js +0 -1
  638. package/dist/src/compiled/_chunks/workflow/serialization-DPdYS_w2.js +0 -16
  639. package/dist/src/compiled/_chunks/workflow/sleep-BY6leHh8.js +0 -1
  640. package/dist/src/compiled/_chunks/workflow/workflow-routes-CwqB063q.js +0 -1
  641. package/dist/src/execution/run-session-limits.d.ts +0 -12
  642. package/dist/src/execution/run-session-limits.js +0 -1
  643. package/dist/src/execution/sandbox/active-handles.d.ts +0 -32
  644. package/dist/src/execution/sandbox/active-handles.js +0 -1
  645. package/dist/src/execution/sandbox/bindings/docker-session.d.ts +0 -6
  646. package/dist/src/execution/sandbox/bindings/docker-session.js +0 -2
  647. package/dist/src/execution/sandbox/bindings/immutable-resources.d.ts +0 -15
  648. package/dist/src/execution/sandbox/bindings/immutable-resources.js +0 -2
  649. package/dist/src/execution/sandbox/bindings/microsandbox-create.d.ts +0 -12
  650. package/dist/src/execution/sandbox/bindings/microsandbox-create.js +0 -1
  651. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +0 -42
  652. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +0 -1
  653. package/dist/src/execution/sandbox/bindings/microsandbox-metadata.d.ts +0 -29
  654. package/dist/src/execution/sandbox/bindings/microsandbox-metadata.js +0 -1
  655. package/dist/src/execution/sandbox/bindings/microsandbox-network.d.ts +0 -18
  656. package/dist/src/execution/sandbox/bindings/microsandbox-network.js +0 -1
  657. package/dist/src/execution/sandbox/bindings/microsandbox-options.d.ts +0 -37
  658. package/dist/src/execution/sandbox/bindings/microsandbox-options.js +0 -1
  659. package/dist/src/execution/sandbox/bindings/microsandbox-platform.d.ts +0 -21
  660. package/dist/src/execution/sandbox/bindings/microsandbox-platform.js +0 -21
  661. package/dist/src/execution/sandbox/bindings/microsandbox-process.d.ts +0 -3
  662. package/dist/src/execution/sandbox/bindings/microsandbox-process.js +0 -1
  663. package/dist/src/execution/sandbox/bindings/microsandbox-provider-state.d.ts +0 -11
  664. package/dist/src/execution/sandbox/bindings/microsandbox-provider-state.js +0 -1
  665. package/dist/src/execution/sandbox/bindings/microsandbox-runtime.d.ts +0 -82
  666. package/dist/src/execution/sandbox/bindings/microsandbox-runtime.js +0 -1
  667. package/dist/src/execution/sandbox/bindings/microsandbox-templates.d.ts +0 -12
  668. package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +0 -1
  669. package/dist/src/execution/sandbox/bindings/microsandbox.d.ts +0 -16
  670. package/dist/src/execution/sandbox/bindings/microsandbox.js +0 -1
  671. package/dist/src/execution/sandbox/provider-host-development.d.ts +0 -2
  672. package/dist/src/execution/sandbox/provider-host-development.js +0 -1
  673. package/dist/src/execution/sandbox/provider-host.d.ts +0 -2
  674. package/dist/src/execution/sandbox/provider-host.js +0 -1
  675. package/dist/src/execution/tool-session/sandbox.d.ts +0 -22
  676. package/dist/src/execution/tool-session/sandbox.js +0 -1
  677. package/dist/src/harness/session-usage-limits.d.ts +0 -49
  678. package/dist/src/harness/session-usage-limits.js +0 -1
  679. package/dist/src/public/sandbox/microsandbox-sandbox.d.ts +0 -48
  680. package/dist/src/public/sandbox/microsandbox.d.ts +0 -9
  681. package/dist/src/public/sandbox/microsandbox.js +0 -1
  682. package/dist/src/sandbox/providers/microsandbox.d.ts +0 -12
  683. package/dist/src/sandbox/providers/microsandbox.js +0 -1
  684. package/dist/src/subagents/token-budget.d.ts +0 -15
  685. package/dist/src/subagents/token-budget.js +0 -1
  686. package/docs/sandbox/microsandbox.mdx +0 -31
  687. /package/dist/src/{public/sandbox/microsandbox-sandbox.js → execution/agent-sessions/runtime-overrides.js} +0 -0
@@ -1 +1 @@
1
- import{createErrorId,createLogger}from"#internal/logging.js";import{recordAppliedSession}from"#harness/session-machine/current.js";import{ParentSessionKey,SessionCallbackKey,SessionPredecessorKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{validateHarnessModelMessages}from"#harness/messages.js";import{drainMemoryCommit,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";import{applyTransition,sessionView}from"#harness/session-machine/commit.js";import{fail,receive}from"#harness/session-machine/transitions.js";import{isDynamicConnectionResolutionError}from"#context/dynamic-connection-lifecycle.js";import{isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";const log=createLogger(`harness.step`);function createStep(e){let{ctx:t,live:n}=e,r={session:e.session,frameworkToolNames:new Set,config:e.config,ctx:t,runStep:e.runStep,publish:e.publish,emit:e.emit,instrumentation:e.instrumentation,hasDelegatedCaller:t?.get(ParentSessionKey)!==void 0||t?.get(SessionCallbackKey)!==void 0,view:()=>sessionView(n.read(),r.session.state),position:()=>turnPosition(n.read()),async apply(n,i){r.session=await applyTransition(r.session,n,e.publish,i),t!==void 0&&recordAppliedSession(t,r.session)},projectHistory:(t,n=r.session.state)=>e.prepareHistory(t,n).messages};return r}async function openTurn(e,t){let{config:n,ctx:r}=e;r!==void 0&&(prepareDynamicInstructionPreamble(r,e.projectHistory(e.session.history)),prepareMemoryPreamble(r,{history:e.session.history,input:[...t.input],projector:n.historyProjector,state:e.session.state}));let i;try{let i=e.position(),a=await e.instrumentation?.preparePreamble({sequence:i.sequence,sessionStarted:i.sessionStarted,traceContext:e.instrumentation?.traceContext,turnId:activeTurnId(i)});await e.apply(receive(e.view(),{message:t.message,predecessor:r?.get(SessionPredecessorKey),runtime:n.runtimeIdentity,trace:a}),e.projectHistory([...e.session.history,...t.input]))}catch(e){i={error:e}}let a=r===void 0?[]:drainDynamicInstructionUserMessages(r),o=r===void 0?void 0:drainMemoryCommit(r);if(e.session={...e.session,history:validateHarnessModelMessages([...e.session.history,...o?.recalledMessages??[],...a]),state:o?.state??e.session.state},i!==void 0)return failBoundaryEvent(e,i.error);e.instrumentation?.setTurnId(e.position().turnId)}async function failBoundaryEvent(e,t){if(throwIfTurnAborted(e.config.abortSignal),isTurnCancellation(t))throw t;if(isDynamicModelSelectionError(t))return failModelSelection(e,t);if(isDynamicConnectionResolutionError(t))return failConnectionResolution(e,t);throw t}async function failConnectionResolution(e,t){if(e.emit===void 0)throw t;e.instrumentation?.recordError(t);let n=createErrorId(),r=toErrorMessage(t);return log.error(`dynamic connection resolver failed — parking session`,{error:t,errorId:n,sessionId:e.session.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:`EVENT_HANDLER_FAILED`,details:{errorId:n},message:r})),e.session={...e.session,outputSchema:void 0},{next:null,session:e.session,settledTurn:{isError:!0,output:r}}}async function failModelSelection(e,t){if(throwIfTurnAborted(e.config.abortSignal),e.instrumentation?.recordError(t),e.emit===void 0)throw t;let n=createErrorId(),r=toErrorMessage(t),{session:i}=e;return log.error(`model selection failed terminally`,{error:t,errorId:n,sessionId:i.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:`MODEL_SELECTION_FAILED`,details:{errorId:n},message:r,terminal:{sessionId:i.sessionId}})),{next:e.hasDelegatedCaller?{done:!0,isError:!0,output:r}:{done:!0,output:``},session:e.session}}export{createStep,failBoundaryEvent,failConnectionResolution,failModelSelection,openTurn};
1
+ import{createErrorId,createLogger}from"#internal/logging.js";import{recordAppliedSession}from"#harness/session-machine/current.js";import{ParentSessionKey,SessionCallbackKey,SessionPredecessorKey}from"#context/keys.js";import{toErrorMessage}from"#shared/errors.js";import{validateHarnessModelMessages}from"#harness/messages.js";import{drainMemoryCommit,prepareMemoryPreamble}from"#context/memory-lifecycle.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";import{fail,receive}from"#harness/session-machine/transitions.js";import{isDynamicConnectionResolutionError}from"#context/dynamic-connection-lifecycle.js";import{applyTransition,sessionView}from"#harness/session-machine/commit.js";import{isDynamicModelSelectionError}from"#context/dynamic-model-lifecycle.js";import{isTurnCancellation,throwIfTurnAborted}from"#harness/turn-cancellation.js";import{drainDynamicInstructionUserMessages,prepareDynamicInstructionPreamble}from"#context/dynamic-instruction-lifecycle.js";const log=createLogger(`harness.step`);function createStep(e){let{ctx:t,live:n}=e,r={session:e.session,frameworkToolNames:new Set,config:e.config,ctx:t,runStep:e.runStep,publish:e.publish,emit:e.emit,instrumentation:e.instrumentation,hasDelegatedCaller:t?.get(ParentSessionKey)!==void 0||t?.get(SessionCallbackKey)!==void 0,view:()=>sessionView(n.read(),r.session.state),position:()=>turnPosition(n.read()),async apply(n,i){r.session=await applyTransition(r.session,n,e.publish,i),t!==void 0&&recordAppliedSession(t,r.session)},projectHistory:(t,n=r.session.state)=>e.prepareHistory(t,n).messages};return r}async function openTurn(e,t){let{config:n,ctx:r}=e;r!==void 0&&(prepareDynamicInstructionPreamble(r,e.projectHistory(e.session.history)),prepareMemoryPreamble(r,{history:e.session.history,input:[...t.input],projector:n.historyProjector,state:e.session.state}));let i;try{let i=e.position(),a=await e.instrumentation?.preparePreamble({sequence:i.sequence,sessionStarted:i.sessionStarted,traceContext:e.instrumentation?.traceContext,turnId:activeTurnId(i)});await e.apply(receive(e.view(),{imported:t.imported,message:t.message,predecessor:r?.get(SessionPredecessorKey),runtime:n.runtimeIdentity,trace:a}),e.projectHistory([...e.session.history,...t.input]))}catch(e){i={error:e}}let a=r===void 0?[]:drainDynamicInstructionUserMessages(r),o=r===void 0?void 0:drainMemoryCommit(r);if(e.session={...e.session,history:validateHarnessModelMessages([...e.session.history,...o?.recalledMessages??[],...a]),state:o?.state??e.session.state},i!==void 0)return failBoundaryEvent(e,i.error);e.instrumentation?.setTurnId(e.position().turnId)}async function failBoundaryEvent(e,t){if(throwIfTurnAborted(e.config.abortSignal),isTurnCancellation(t))throw t;if(isDynamicModelSelectionError(t))return failModelSelection(e,t);if(isDynamicConnectionResolutionError(t))return failConnectionResolution(e,t);throw t}async function failConnectionResolution(e,t){if(e.emit===void 0)throw t;e.instrumentation?.recordError(t);let n=createErrorId(),r=toErrorMessage(t);return log.error(`dynamic connection resolver failed — parking session`,{error:t,errorId:n,sessionId:e.session.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:`EVENT_HANDLER_FAILED`,details:{errorId:n},message:r})),e.session={...e.session,outputSchema:void 0},{next:null,session:e.session,settledTurn:{isError:!0,output:r}}}async function failModelSelection(e,t){if(throwIfTurnAborted(e.config.abortSignal),e.instrumentation?.recordError(t),e.emit===void 0)throw t;let n=createErrorId(),r=toErrorMessage(t),{session:i}=e;return log.error(`model selection failed terminally`,{error:t,errorId:n,sessionId:i.sessionId,turnId:activeTurnId(e.position())}),await e.apply(fail(e.view(),{code:`MODEL_SELECTION_FAILED`,details:{errorId:n},message:r,terminal:{sessionId:i.sessionId}})),{next:e.hasDelegatedCaller?{done:!0,isError:!0,output:r}:{done:!0,output:``},session:e.session}}export{createStep,failBoundaryEvent,failConnectionResolution,failModelSelection,openTurn};
@@ -1,6 +1,7 @@
1
1
  import { type HarnessModelMessage, type UserModelMessage } from "#harness/messages.js";
2
2
  import { getTurnClientContextState } from "#harness/turn-client-context.js";
3
3
  import type { StepInput } from "#harness/types.js";
4
+ import type { SessionHistoryMessage } from "#shared/session-history.js";
4
5
  import type { Step } from "./context.js";
5
6
  /**
6
7
  * Settles the calls the runtime ran for parked steps. Returns `undefined` while some are still
@@ -18,8 +19,10 @@ export interface TurnInput {
18
19
  readonly clientContext: readonly string[] | undefined;
19
20
  readonly storedClientContext: ReturnType<typeof getTurnClientContextState>;
20
21
  readonly ephemeral: readonly UserModelMessage[];
21
- /** The context entries and the message, in history order. */
22
- readonly messages: readonly UserModelMessage[];
22
+ /** Prior conversation the delivery added, as published in `history.imported`. */
23
+ readonly imported: readonly SessionHistoryMessage[];
24
+ /** The added history, the context entries, and the message, in history order. */
25
+ readonly messages: readonly HarnessModelMessage[];
23
26
  /** The input carries a user's message, which follows tool results across a boundary. */
24
27
  readonly hasUserMessage: boolean;
25
28
  }
@@ -1 +1 @@
1
- import{readClientContext}from"#internal/client-context.js";import{TOOL_RESULT_BOUNDARY,createFrameworkUserMessage,createUserMessage,frameworkMessageKindForStepInput,normalizeUserContent}from"#harness/messages.js";import{activeTurnId,runtimeWait}from"#harness/session-machine/view.js";import{stageAttachmentsToSandbox,stageToolResultMedia}from"#harness/attachment-staging.js";import{forgetFinishedRuns,runtimeResultCalls}from"#harness/coordination.js";import{finishRun,settle}from"#harness/session-machine/transitions.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";import{getTurnClientContextState}from"#harness/turn-client-context.js";async function settleRuntimeWork(e,t){let n=runtimeWait(e.session.state);if(n===void 0)return{input:t,waited:!1};let r=resolveRuntimeActionResultsForCallIds({pendingCallIds:n.callIds,results:t?.runtimeActionResults??[]});if(r===void 0)return;let i=forgetFinishedRuns(e.session,r,n.event.turnId);e.session=i.session,await e.apply(finishRun(e.view(),{requestIds:i.requestIds}));let a=await runtimeResultCalls(r,e.config.tools),o=(await stageToolResultMedia([{role:`tool`,content:a.map(({part:e})=>e)}])).flatMap(e=>e.role===`tool`?e.content.filter(e=>e.type===`tool-result`):[]);if(await e.apply(settle(e.view(),{results:a.map((e,t)=>({...e,part:o[t]}))})),t===void 0)return{input:t,waited:!0};let{runtimeActionResults:s,...c}=t;return{input:c,waited:!0}}async function prepareTurnInput(e,t,n){let r=activeTurnId(e.position()),i=getTurnClientContextState(e.session.state,r),a=readClientContext(t),o=(a??i?.messages)?.map(e=>createFrameworkUserMessage(`context.instruction`,e))??[],s=(t?.context??[]).map(e=>createFrameworkUserMessage(`context.instruction`,e)),c=frameworkMessageKindForStepInput(t),l=normalizeUserContent(t?.message),u=l!==void 0&&!n.consumedMessage?await stageAttachmentsToSandbox(l):void 0;return u!==void 0&&s.push(c===void 0?createUserMessage(`user`,u):createFrameworkUserMessage(c,u)),{clientContext:a,ephemeral:o,hasUserMessage:u!==void 0&&c===void 0,messages:s,storedClientContext:i,turnId:r}}function followingToolResults(e){return[...e.hasUserMessage?[{content:TOOL_RESULT_BOUNDARY,role:`assistant`}]:[],...e.messages]}export{followingToolResults,prepareTurnInput,settleRuntimeWork};
1
+ import{readClientContext}from"#internal/client-context.js";import{TOOL_RESULT_BOUNDARY,createFrameworkUserMessage,createImportedHistoryMessages,createUserMessage,frameworkMessageKindForStepInput,normalizeUserContent}from"#harness/messages.js";import{activeTurnId,runtimeWait}from"#harness/session-machine/view.js";import{stageAttachmentsToSandbox,stageToolResultMedia}from"#harness/attachment-staging.js";import{forgetFinishedRuns,runtimeResultCalls}from"#harness/coordination.js";import{finishRun,settle}from"#harness/session-machine/transitions.js";import{resolveRuntimeActionResultsForCallIds}from"#runtime/actions/results.js";import{getTurnClientContextState}from"#harness/turn-client-context.js";async function settleRuntimeWork(e,t){let n=runtimeWait(e.session.state);if(n===void 0)return{input:t,waited:!1};let r=resolveRuntimeActionResultsForCallIds({pendingCallIds:n.callIds,results:t?.runtimeActionResults??[]});if(r===void 0)return;let i=forgetFinishedRuns(e.session,r,n.event.turnId);e.session=i.session,await e.apply(finishRun(e.view(),{requestIds:i.requestIds}));let a=await runtimeResultCalls(r,e.config.tools),o=(await stageToolResultMedia([{role:`tool`,content:a.map(({part:e})=>e)}])).flatMap(e=>e.role===`tool`?e.content.filter(e=>e.type===`tool-result`):[]);if(await e.apply(settle(e.view(),{results:a.map((e,t)=>({...e,part:o[t]}))})),t===void 0)return{input:t,waited:!0};let{runtimeActionResults:s,...c}=t;return{input:c,waited:!0}}async function prepareTurnInput(e,t,n){let r=activeTurnId(e.position()),i=getTurnClientContextState(e.session.state,r),a=readClientContext(t),o=(a??i?.messages)?.map(e=>createFrameworkUserMessage(`context.instruction`,e))??[],s=t?.history??[],c=[...createImportedHistoryMessages(s),...(t?.context??[]).map(e=>createFrameworkUserMessage(`context.instruction`,e))],l=frameworkMessageKindForStepInput(t),u=normalizeUserContent(t?.message),d=u!==void 0&&!n.consumedMessage?await stageAttachmentsToSandbox(u):void 0;return d!==void 0&&c.push(l===void 0?createUserMessage(`user`,d):createFrameworkUserMessage(l,d)),{clientContext:a,ephemeral:o,hasUserMessage:d!==void 0&&l===void 0,imported:s,messages:c,storedClientContext:i,turnId:r}}function followingToolResults(e){return[...e.hasUserMessage?[{content:TOOL_RESULT_BOUNDARY,role:`assistant`}]:[],...e.messages]}export{followingToolResults,prepareTurnInput,settleRuntimeWork};
@@ -1 +1 @@
1
- import{followingToolResults}from"./intake.js";import{createFrameworkUserMessage,followsToolResults,normalizeModelMessages,validateHarnessModelMessages}from"#harness/messages.js";import{appendTaskContext}from"#execution/tasks/model-step.js";import{hasUnansweredToolCall}from"#harness/model-call/response.js";import{getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";async function buildPrompt(e,t){let n=validateHarnessModelMessages([...e.session.history]);if(!hasUnansweredToolCall(n)){let t=await appendTaskContext({messages:n,projectHistory:e.projectHistory,session:e.session,tools:e.config.tools});e.session=t.session,n.push(...t.messages)}let r=placeTurnInput(e,n,t);return{clientContext:getTurnClientContextState(e.session.state,t.turnId),messages:r}}function previewPrompt(e,t){let n=validateHarnessModelMessages([...e.session.history]);return{clientContext:turnClientContext(n,t),messages:withTurnInput(n,t)}}function placeTurnInput(e,t,n){let r=turnClientContext(t,n);return r!==void 0&&(e.session=setTurnClientContextState(e.session,r)),withTurnInput(t,n)}function turnClientContext(e,t){return t.clientContext===void 0?t.storedClientContext:{insertionIndex:t.storedClientContext?.insertionIndex??e.length,messages:t.clientContext,turnId:t.turnId}}function withTurnInput(e,t){return[...e,...followsToolResults(e)?followingToolResults(t):t.messages]}function withClientContext(e,t=e.messages){let{clientContext:n}=e;if(n===void 0||n.messages.length===0)return[...t];let r=Math.min(Math.max(0,n.insertionIndex),t.length);return[...t.slice(0,r),...n.messages.map(e=>createFrameworkUserMessage(`context.instruction`,e)),...t.slice(r)]}function projectPrompt(e,t){return validateHarnessModelMessages(normalizeModelMessages(e.projectHistory(withClientContext(t))))}function compactPrompt(e,t,n){let{clientContext:r}=t;if(r!==void 0){let i=Math.max(0,t.messages.length-r.insertionIndex);t.clientContext={...r,insertionIndex:Math.max(0,n.length-i)},e.session=setTurnClientContextState(e.session,t.clientContext)}t.messages=n}export{buildPrompt,compactPrompt,placeTurnInput,previewPrompt,projectPrompt,withClientContext};
1
+ import{followingToolResults}from"./intake.js";import{createFrameworkUserMessage,followsToolResults,normalizeModelMessages,validateHarnessModelMessages}from"#harness/messages.js";import{appendTaskContext}from"#execution/tasks/model-step.js";import{hasUnansweredToolCall}from"#harness/model-call/response.js";import{getTurnClientContextState,setTurnClientContextState}from"#harness/turn-client-context.js";import{repairToolHistory}from"#harness/tool-history-repair.js";async function buildPrompt(e,t){let n=repairToolHistory({messages:e.session.history,insertionIndex:t.storedClientContext?.insertionIndex}),r=validateHarnessModelMessages(n.messages);if(e.session={...e.session,history:[...r]},t.storedClientContext!==void 0&&n.insertionIndex!==void 0){let r={...t.storedClientContext,insertionIndex:n.insertionIndex};t={...t,storedClientContext:r},e.session=setTurnClientContextState(e.session,r)}if(!hasUnansweredToolCall(r)){let t=await appendTaskContext({messages:r,projectHistory:e.projectHistory,session:e.session,tools:e.config.tools});e.session=t.session,r.push(...t.messages)}let i=placeTurnInput(e,r,t);return{clientContext:getTurnClientContextState(e.session.state,t.turnId),messages:i}}function previewPrompt(e,t){let n=validateHarnessModelMessages([...e.session.history]);return{clientContext:turnClientContext(n,t),messages:withTurnInput(n,t)}}function placeTurnInput(e,t,n){let r=turnClientContext(t,n);return r!==void 0&&(e.session=setTurnClientContextState(e.session,r)),withTurnInput(t,n)}function turnClientContext(e,t){return t.clientContext===void 0?t.storedClientContext:{insertionIndex:t.storedClientContext?.insertionIndex??e.length,messages:t.clientContext,turnId:t.turnId}}function withTurnInput(e,t){return[...e,...followsToolResults(e)?followingToolResults(t):t.messages]}function withClientContext(e,t=e.messages){let{clientContext:n}=e;if(n===void 0||n.messages.length===0)return[...t];let r=Math.min(Math.max(0,n.insertionIndex),t.length);return[...t.slice(0,r),...n.messages.map(e=>createFrameworkUserMessage(`context.instruction`,e)),...t.slice(r)]}function projectPrompt(e,t){return validateHarnessModelMessages(normalizeModelMessages(e.projectHistory(withClientContext(t))))}function compactPrompt(e,t,n){let{clientContext:r}=t;if(r!==void 0){let i=Math.max(0,t.messages.length-r.insertionIndex);t.clientContext={...r,insertionIndex:Math.max(0,n.length-i)},e.session=setTurnClientContextState(e.session,t.clientContext)}t.messages=n}export{buildPrompt,compactPrompt,placeTurnInput,previewPrompt,projectPrompt,withClientContext};
@@ -0,0 +1,9 @@
1
+ import type { ModelMessage } from "ai";
2
+ /** Answer orphaned historical calls without executing them. */
3
+ export declare function repairToolHistory(input: {
4
+ readonly messages: readonly ModelMessage[];
5
+ readonly insertionIndex?: number;
6
+ }): {
7
+ messages: ModelMessage[];
8
+ insertionIndex: number | undefined;
9
+ };
@@ -0,0 +1 @@
1
+ import{withResult}from"#harness/session-machine/transitions.js";import{extractToolResultCallIds}from"#harness/model-call/response.js";function repairToolHistory(e){let t=[...e.messages],n=e.insertionIndex,r=new Set(extractToolResultCallIds(t)),i=new Set;for(let e of t)if(e.role===`assistant`&&Array.isArray(e.content))for(let t of e.content)t.type===`tool-approval-request`&&r.add(t.toolCallId),t.type===`tool-call`&&((i.has(t.toolCallId)||t.providerExecuted===!0)&&r.add(t.toolCallId),i.add(t.toolCallId));for(let i of e.messages)if(i.role===`assistant`&&Array.isArray(i.content))for(let e of i.content){if(e.type!==`tool-call`||r.has(e.toolCallId))continue;let a=t.indexOf(i),o=withResult(t,{type:`tool-result`,toolCallId:e.toolCallId,toolName:e.toolName,output:{type:`error-text`,value:`The previous attempt ended without a recorded result; execution outcome is unknown; verify external state before repeating side effects.`}});n!==void 0&&o.length>t.length&&a<n&&n++,t=o}return{messages:t,insertionIndex:n}}export{repairToolHistory};
@@ -1 +1 @@
1
- import{contextStorage}from"#context/container.js";import{saveProjection,stepProjection}from"#harness/session-machine/current.js";import{ScheduleIdKey,StaticModelReferenceKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{clearMemorySessionState}from"#shared/memory-state.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";import{acceptHumanInput,admitApprovedWork,discardClearedHumanInput}from"#harness/hitl/index.js";import{clear}from"#harness/session-machine/transitions.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{compactHistory,replaceSessionHistory}from"#harness/compaction/step.js";import{createStep,openTurn}from"#harness/step/context.js";import{GenerationSteering}from"#harness/generation-steering.js";import{runModelStep}from"#harness/model-call/run.js";import{handleStepResult}from"#harness/step/after-model.js";import{prepareTurnInput,settleRuntimeWork}from"#harness/step/intake.js";const environment=process.env.NODE_ENV??`unknown`,eveVersion=resolveInstalledPackageInfo().version;function createToolLoopHarness(e){e.instrumentation?.installAiSdkWarningLogger();async function runStep(t,n){let executeStep=async r=>{let i=r?.session??t,a=stepProjection(contextStorage.getStore(),i.state),o=new GenerationSteering({abortSignal:e.abortSignal,steeringSignal:e.steeringSignal,outputStarted:turnPosition(a.read()).assistantOutputStarted});try{let e=await executeStepBody(i,o,a,n,r);return{...e,session:saveProjection(e.session,a.read())}}finally{o.dispose()}};return e.instrumentation?.runStep({environment,eveVersion,hasInput:hasStepInput(n),session:t},executeStep)??executeStep()}async function executeStepBody(t,n,r,i,a){let o=createHistoryViewPreparer({previous:e.historyView,projector:e.historyProjector});o(t.history,t.state);let s=contextStorage.getStore();s!==void 0&&!s.has(StaticModelReferenceKey)&&s.setVirtualContext(StaticModelReferenceKey,t.agent.dynamicModel===!0?null:t.agent.modelReference??null);let c,l=a?.createHandleEvent({getAttemptScope:()=>c,isFrameworkTool:e=>u.frameworkToolNames.has(e),handleEvent:e.handleEvent,turnId:activeTurnId(turnPosition(r.read()))})??e.handleEvent,u=createStep({config:e,ctx:s,emit:l,instrumentation:a,live:r,prepareHistory:o,publish:async(e,t)=>{n.beforeEvent(e),l!==void 0&&await l(e,t),(l===void 0||s===void 0)&&r.record(e)},runStep,session:t});if(e.clearOnly===!0)return clearContext(u);if(e.compactOnly===!0)return compactHistory(u);let d=await settleRuntimeWork(u,i);if(d===void 0)return{next:null,session:u.session};let f=await acceptHumanInput(u,d.input,{takeQueued:!d.waited});if(f.kind===`stop`)return f.result;let p=await prepareTurnInput(u,f.input,{consumedMessage:f.consumedMessage});if(f.opensTurn){let e=await openTurn(u,{input:[...p.ephemeral,...p.messages],message:f.message});if(e!==void 0)return e}return await admitApprovedWork(u,f.approved),runModelStep(u,{approved:f.approved,onResponse:e=>handleStepResult(u,e),generation:n,hidesHeldText:u.hasDelegatedCaller||s?.get(ScheduleIdKey)!==void 0,setAttemptScope:e=>{c=e},turn:p})}return runStep}async function clearContext(e){await e.apply(clear(e.view(),{sessionId:e.session.sessionId}));let t=discardClearedHumanInput({...e.session,state:clearMemorySessionState(e.session.state)});return{next:null,session:replaceSessionHistory(t,[])}}function hasStepInput(e){return e===void 0?!1:e.message!==void 0||(e.inputResponses?.length??0)>0}export{createToolLoopHarness};
1
+ import{contextStorage}from"#context/container.js";import{saveProjection,stepProjection}from"#harness/session-machine/current.js";import{ScheduleIdKey,StaticModelReferenceKey}from"#context/keys.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{clearMemorySessionState}from"#shared/memory-state.js";import{activeTurnId,turnPosition}from"#harness/session-machine/view.js";import{acceptHumanInput,admitApprovedWork,discardClearedHumanInput}from"#harness/hitl/index.js";import{clear}from"#harness/session-machine/transitions.js";import{createHistoryViewPreparer}from"#shared/history-view.js";import{compactHistory,replaceSessionHistory}from"#harness/compaction/step.js";import{createStep,openTurn}from"#harness/step/context.js";import{GenerationSteering}from"#harness/generation-steering.js";import{runModelStep}from"#harness/model-call/run.js";import{handleStepResult}from"#harness/step/after-model.js";import{prepareTurnInput,settleRuntimeWork}from"#harness/step/intake.js";const environment=process.env.NODE_ENV??`unknown`,eveVersion=resolveInstalledPackageInfo().version;function createToolLoopHarness(e){e.instrumentation?.installAiSdkWarningLogger();async function runStep(t,n){let executeStep=async r=>{let i=r?.session??t,a=stepProjection(contextStorage.getStore(),i.state),o=new GenerationSteering({abortSignal:e.abortSignal,steeringSignal:e.steeringSignal,outputStarted:turnPosition(a.read()).assistantOutputStarted});try{let e=await executeStepBody(i,o,a,n,r);return{...e,session:saveProjection(e.session,a.read())}}finally{o.dispose()}};return e.instrumentation?.runStep({environment,eveVersion,hasInput:hasStepInput(n),session:t},executeStep)??executeStep()}async function executeStepBody(t,n,r,i,a){let o=createHistoryViewPreparer({previous:e.historyView,projector:e.historyProjector});o(t.history,t.state);let s=contextStorage.getStore();s!==void 0&&!s.has(StaticModelReferenceKey)&&s.setVirtualContext(StaticModelReferenceKey,t.agent.dynamicModel===!0?null:t.agent.modelReference??null);let c,l=a?.createHandleEvent({getAttemptScope:()=>c,isFrameworkTool:e=>u.frameworkToolNames.has(e),handleEvent:e.handleEvent,turnId:activeTurnId(turnPosition(r.read()))})??e.handleEvent,u=createStep({config:e,ctx:s,emit:l,instrumentation:a,live:r,prepareHistory:o,publish:async(e,t)=>{n.beforeEvent(e),l!==void 0&&await l(e,t),(l===void 0||s===void 0)&&r.record(e)},runStep,session:t});if(e.clearOnly===!0)return clearContext(u);if(e.compactOnly===!0)return compactHistory(u);let d=await settleRuntimeWork(u,i);if(d===void 0)return{next:null,session:u.session};let f=await acceptHumanInput(u,d.input,{takeQueued:!d.waited});if(f.kind===`stop`)return f.result;let p=await prepareTurnInput(u,f.input,{consumedMessage:f.consumedMessage});if(f.opensTurn){let e=await openTurn(u,{imported:p.imported,input:[...p.ephemeral,...p.messages],message:f.message});if(e!==void 0)return e}return await admitApprovedWork(u,f.approved),runModelStep(u,{approved:f.approved,onResponse:e=>handleStepResult(u,e),generation:n,hidesHeldText:u.hasDelegatedCaller||s?.get(ScheduleIdKey)!==void 0,setAttemptScope:e=>{c=e},turn:p})}return runStep}async function clearContext(e){await e.apply(clear(e.view(),{sessionId:e.session.sessionId}));let t=discardClearedHumanInput({...e.session,state:clearMemorySessionState(e.session.state)});return{next:null,session:replaceSessionHistory(t,[])}}function hasStepInput(e){return e===void 0?!1:e.message!==void 0||(e.inputResponses?.length??0)>0}export{createToolLoopHarness};
@@ -3,8 +3,9 @@ import { type JsonValue } from "#shared/json.js";
3
3
  import type { ToolModelOutputPart } from "#tools/definition.js";
4
4
  /**
5
5
  * A validated {@link ToolModelOutput} in the AI SDK's expected shape:
6
- * `json` values are proven JSON-serializable and `content` arrays are
7
- * mutable so the value is assignable to the SDK's `ToolResultOutput`.
6
+ * `json` values are proven JSON-serializable, `content` arrays are
7
+ * mutable, and file URLs are parsed `URL`s so the value is assignable to
8
+ * the SDK's `ToolResultOutput`.
8
9
  */
9
10
  export type ToolModelOutputValue = {
10
11
  readonly type: "json";
@@ -14,7 +15,21 @@ export type ToolModelOutputValue = {
14
15
  readonly value: string;
15
16
  } | {
16
17
  readonly type: "content";
17
- readonly value: ToolModelOutputPart[];
18
+ readonly value: ToolModelOutputValuePart[];
19
+ };
20
+ type ToolModelOutputValuePart = Extract<ToolModelOutputPart, {
21
+ readonly type: "text";
22
+ }> | {
23
+ readonly type: "file";
24
+ readonly data: {
25
+ readonly type: "data";
26
+ readonly data: string;
27
+ } | {
28
+ readonly type: "url";
29
+ readonly url: URL;
30
+ };
31
+ readonly mediaType: string;
32
+ readonly filename?: string;
18
33
  };
19
34
  /**
20
35
  * Validates a tool output as JSON at one of the serialization boundaries,
@@ -38,3 +53,4 @@ export declare function normalizeToolModelOutput(input: {
38
53
  readonly toolCallId?: string;
39
54
  readonly toolName: string;
40
55
  }): ToolModelOutputValue;
56
+ export {};
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import{z}from"#compiled/zod/index.js";import{parseJsonValue}from"#shared/json.js";import{formatValidationError}from"#runtime/validation.js";import{withToolOutputSerializationError}from"#harness/tool-output-serialization.js";const log=createLogger(`harness.tool-model-output`),CONTENT_FILE_WARN_BYTES=3145728,UNSUPPORTED_FILE_DATA_TAGS=new Set([`url`,`reference`,`text`]),toolModelOutputPartSchema=z.discriminatedUnion(`type`,[z.object({type:z.literal(`text`),text:z.string()}),z.object({type:z.literal(`file`),data:z.object({type:z.literal(`data`),data:z.string()}),mediaType:z.string().min(1),filename:z.string().optional()})]),toolModelOutputSchema=z.discriminatedUnion(`type`,[z.object({type:z.literal(`text`),value:z.string()}),z.object({type:z.literal(`json`),value:z.unknown()}),z.object({type:z.literal(`content`),value:z.array(toolModelOutputPartSchema).min(1)})]);function normalizeToolJsonOutput(e){let t=e.output===void 0?null:e.output;return withToolOutputSerializationError(e,()=>(parseJsonValue(t),t))}function normalizeToolModelOutput(e){return withToolOutputSerializationError({boundary:`toModelOutput`,toolCallId:e.toolCallId,toolName:e.toolName},()=>{assertSupportedFilePartData(e.output);let t=toolModelOutputSchema.safeParse(e.output);if(!t.success)throw TypeError(formatValidationError(t.error));let n=t.data;if(n.type===`json`)return{type:`json`,value:normalizeToolJsonOutput({boundary:`toModelOutput`,output:n.value,toolCallId:e.toolCallId,toolName:e.toolName})};if(n.type===`content`)for(let t of n.value)t.type===`file`&&warnOversizedFilePayload(t,e.toolName);return n})}function assertSupportedFilePartData(e){if(typeof e!=`object`||!e)return;let t=e;if(t.type===`content`&&Array.isArray(t.value))for(let e of t.value){if(typeof e!=`object`||!e)continue;let t=e;if(t.type!==`file`)continue;let n=t.data,r=typeof n==`object`&&n?n.data:void 0;if(isBinaryPayload(n)||isBinaryPayload(r))throw TypeError(`Expected file content part data to be a base64 string, received raw bytes. Base64-encode binary payloads before returning them from toModelOutput.`);let i=typeof n==`object`&&n?n.type:void 0;if(typeof i==`string`&&UNSUPPORTED_FILE_DATA_TAGS.has(i))throw TypeError(`File content part data tag "${i}" is not supported yet; only { type: "data" } with a base64 string is accepted.`)}}function warnOversizedFilePayload(e,t){let n=Math.floor(e.data.data.length*3/4);n<=CONTENT_FILE_WARN_BYTES||log.warn(`content-part file payload exceeds the inline size guideline — it is persisted in history and re-sent on every subsequent model call`,{estimatedBytes:n,mediaType:e.mediaType,toolName:t,warnBytes:CONTENT_FILE_WARN_BYTES})}function isBinaryPayload(e){return e instanceof Uint8Array||e instanceof ArrayBuffer}export{normalizeToolJsonOutput,normalizeToolModelOutput};
1
+ import{createLogger}from"#internal/logging.js";import{z}from"#compiled/zod/index.js";import{parseJsonValue}from"#shared/json.js";import{formatValidationError}from"#runtime/validation.js";import{withToolOutputSerializationError}from"#harness/tool-output-serialization.js";const log=createLogger(`harness.tool-model-output`),CONTENT_FILE_WARN_BYTES=3145728,UNSUPPORTED_FILE_DATA_TAGS=new Set([`reference`,`text`]),toolModelOutputPartSchema=z.discriminatedUnion(`type`,[z.object({type:z.literal(`text`),text:z.string()}),z.object({type:z.literal(`file`),data:z.discriminatedUnion(`type`,[z.object({type:z.literal(`data`),data:z.string()}),z.object({type:z.literal(`url`),url:z.string()})]),mediaType:z.string().min(1),filename:z.string().optional()})]),toolModelOutputSchema=z.discriminatedUnion(`type`,[z.object({type:z.literal(`text`),value:z.string()}),z.object({type:z.literal(`json`),value:z.unknown()}),z.object({type:z.literal(`content`),value:z.array(toolModelOutputPartSchema).min(1)})]);function normalizeToolJsonOutput(e){let t=e.output===void 0?null:e.output;return withToolOutputSerializationError(e,()=>(parseJsonValue(t),t))}function normalizeToolModelOutput(e){return withToolOutputSerializationError({boundary:`toModelOutput`,toolCallId:e.toolCallId,toolName:e.toolName},()=>{assertSupportedFilePartData(e.output);let t=toolModelOutputSchema.safeParse(e.output);if(!t.success)throw TypeError(formatValidationError(t.error));let n=t.data;return n.type===`json`?{type:`json`,value:normalizeToolJsonOutput({boundary:`toModelOutput`,output:n.value,toolCallId:e.toolCallId,toolName:e.toolName})}:n.type===`content`?{type:`content`,value:n.value.map(t=>normalizeContentPart(t,e.toolName))}:n})}function normalizeContentPart(e,t){return e.type===`text`?e:e.data.type===`data`?(warnOversizedFilePayload(e.data.data,e.mediaType,t),{...e,data:e.data}):{...e,data:{type:`url`,url:parseFileUrl(e.data.url)}}}function parseFileUrl(e){let t=URL.canParse(e)?new URL(e):void 0;if(t?.protocol!==`https:`){let e=t===void 0?`a value that is not a URL`:`a ${t.protocol} URL`;throw TypeError(`Expected file content part url to be an https: URL, received ${e}.`)}return t}function assertSupportedFilePartData(e){if(typeof e!=`object`||!e)return;let t=e;if(t.type===`content`&&Array.isArray(t.value))for(let e of t.value){if(typeof e!=`object`||!e)continue;let t=e;if(t.type!==`file`)continue;let n=t.data,r=typeof n==`object`&&n?n.data:void 0;if(isBinaryPayload(n)||isBinaryPayload(r))throw TypeError(`Expected file content part data to be a base64 string, received raw bytes. Base64-encode binary payloads before returning them from toModelOutput.`);let i=typeof n==`object`&&n?n.type:void 0;if(typeof i==`string`&&UNSUPPORTED_FILE_DATA_TAGS.has(i))throw TypeError(`File content part data tag "${i}" is not supported yet; use { type: "data" } with a base64 string or { type: "url" } with an https: URL.`)}}function warnOversizedFilePayload(e,t,n){let r=Math.floor(e.length*3/4);r<=CONTENT_FILE_WARN_BYTES||log.warn(`content-part file payload exceeds the inline size guideline — it is persisted in history and re-sent on every subsequent model call`,{estimatedBytes:r,mediaType:t,toolName:n,warnBytes:CONTENT_FILE_WARN_BYTES})}function isBinaryPayload(e){return e instanceof Uint8Array||e instanceof ArrayBuffer}export{normalizeToolJsonOutput,normalizeToolModelOutput};
@@ -21,9 +21,7 @@
21
21
  * the shared {@link TokenUsage} contract.
22
22
  */
23
23
  import type { HarnessSession, SessionStateMap } from "#harness/types.js";
24
- import { type SessionRuntimeUsageLimits, type SessionUsageLimitViolation } from "#harness/session-usage-limits.js";
25
24
  import type { TokenUsage } from "#shared/token-usage.js";
26
- export type { SessionRuntimeUsageLimits, SessionUsageLimitViolation };
27
25
  export interface TokenUsageTotals {
28
26
  readonly cacheReadTokens: number;
29
27
  readonly cacheWriteTokens: number;
@@ -52,31 +50,14 @@ export declare function getSessionUsage(session: Pick<HarnessSession, "state">):
52
50
  /** Projects a {@link TokenUsageTotals} down to the cross-cutting {@link TokenUsage} shape. */
53
51
  export declare function toUsage(totals: TokenUsageTotals): TokenUsage;
54
52
  /**
55
- * The lifetime-usage ceilings currently in force, per axis. An axis is
56
- * absent when the configured limit leaves it uncapped. Before any granted
57
- * continuation the runtime limit equals the configured limit; each grant
58
- * re-anchors it to `usage + configured limit` via
59
- * {@link bumpSessionRuntimeUsageLimits}.
53
+ * What the session spent since the last approved continuation, or since it
54
+ * started. This is the `window` the session usage limit sees.
60
55
  */
61
- export declare function getSessionRuntimeUsageLimits(session: Pick<HarnessSession, "limits" | "state">): SessionRuntimeUsageLimits;
62
- /**
63
- * Bumps the runtime usage limits after the user grants a continuation. Each
64
- * capped axis is re-anchored to `current usage + configured limit`, so one
65
- * approval buys one full configured window even after an overshoot. All axes
66
- * bump together to avoid back-to-back prompts. Configured limits never change.
67
- */
68
- export declare function bumpSessionRuntimeUsageLimits(session: HarnessSession): HarnessSession;
69
- /**
70
- * Remaining lifetime usage quota under the runtime limits, per axis.
71
- * `false` marks an uncapped axis. This is the pool a delegated child's
72
- * budget is granted from.
73
- */
74
- export declare function getSessionRemainingUsageQuota(session: Pick<HarnessSession, "limits" | "state">): {
75
- costUsd: number | false;
76
- inputTokens: number | false;
77
- outputTokens: number | false;
78
- };
79
- export declare function getSessionUsageLimitViolation(session: Pick<HarnessSession, "limits" | "state">): SessionUsageLimitViolation | null;
56
+ export declare function getSessionUsageWindow(session: Pick<HarnessSession, "state">): TokenUsage;
57
+ /** Starts a new usage window at the session's current totals, after an approved continuation. */
58
+ export declare function resetSessionUsageWindow<T extends Pick<HarnessSession, "state">>(session: T): T;
59
+ /** How many usage windows the session has started before its current one. */
60
+ export declare function getSessionUsageWindowIndex(session: Pick<HarnessSession, "state">): number;
80
61
  /**
81
62
  * Takes the session-usage delta accumulated since the previous take and
82
63
  * marks it reported.
@@ -1 +1 @@
1
- import{findRuntimeUsageLimitViolation,grantRuntimeUsageLimits,remainingRuntimeUsageQuota,resolveRuntimeUsageLimits}from"#harness/session-usage-limits.js";const HARNESS_TURN_USAGE_STATE_KEY=`eve.harness.turnUsage`,REPORTED_SESSION_USAGE_STATE_KEY=`eve.harness.reportedSessionUsage`,SESSION_RUNTIME_USAGE_LIMIT_KEY=`eve.harness.sessionRuntimeTokenLimit`,ZERO_TOKEN_USAGE={cacheReadTokens:0,cacheWriteTokens:0,costUsd:0,inputTokens:0,outputTokens:0,sawCost:!1};function getTurnUsageState(e){return e?.[HARNESS_TURN_USAGE_STATE_KEY]}function getSessionTokenUsage(e){return getTurnUsageState(e.state)?.session??ZERO_TOKEN_USAGE}function getSessionUsage(e){return toUsage(getSessionTokenUsage(e))}function toUsage(e){return{cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,costUsd:e.sawCost?e.costUsd:void 0,inputTokens:e.inputTokens,outputTokens:e.outputTokens}}function getSessionRuntimeUsageLimits(e){let t=e.state?.[SESSION_RUNTIME_USAGE_LIMIT_KEY];return resolveRuntimeUsageLimits({configured:configuredSessionUsageLimits(e),stored:t})}function bumpSessionRuntimeUsageLimits(e){let t=getSessionTokenUsage(e),n=grantRuntimeUsageLimits({configured:configuredSessionUsageLimits(e),usage:t});return{...e,state:{...e.state,[SESSION_RUNTIME_USAGE_LIMIT_KEY]:n}}}function getSessionRemainingUsageQuota(e){let t=getSessionTokenUsage(e),n=getSessionRuntimeUsageLimits(e);return remainingRuntimeUsageQuota({runtime:n,usage:t})}function getSessionUsageLimitViolation(e){let t=getSessionTokenUsage(e),n=getSessionRuntimeUsageLimits(e);return findRuntimeUsageLimitViolation({configured:configuredSessionUsageLimits(e),runtime:n,usage:t})}function configuredSessionUsageLimits(e){return{costUsd:e.limits?.maxTokenCostUsdPerSession,inputTokens:e.limits?.maxInputTokensPerSession,outputTokens:e.limits?.maxOutputTokensPerSession}}function takeSessionUsageDelta(e){let t=getSessionTokenUsage(e),n=e.state?.[REPORTED_SESSION_USAGE_STATE_KEY]??ZERO_TOKEN_USAGE;return{delta:{cacheReadTokens:t.cacheReadTokens-n.cacheReadTokens,cacheWriteTokens:t.cacheWriteTokens-n.cacheWriteTokens,costUsd:t.sawCost||n.sawCost?t.costUsd-n.costUsd:void 0,inputTokens:t.inputTokens-n.inputTokens,outputTokens:t.outputTokens-n.outputTokens},session:{...e,state:{...e.state,[REPORTED_SESSION_USAGE_STATE_KEY]:t}}}}function setTurnUsageState(e,t){return{...e,state:{...e.state,[HARNESS_TURN_USAGE_STATE_KEY]:t}}}function accumulateTurnUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous?.session??ZERO_TOKEN_USAGE;return{...addTokenUsage(e.previous!==void 0&&e.previous.turnId===e.turnId?e.previous:ZERO_TOKEN_USAGE,t),turnId:e.turnId,session:addTokenUsage(n,t)}}function addTurnUsage(e,t,n){return setTurnUsageState(e,accumulateTurnUsage({previous:getTurnUsageState(e.state),turnId:t,usage:n}))}function addUsageOutsideTurns(e,t){if(t===void 0)return e;let n=setTurnUsageState(e,accumulateSessionUsage({previous:getTurnUsageState(e.state),usage:t})),r=e.state?.[REPORTED_SESSION_USAGE_STATE_KEY]??ZERO_TOKEN_USAGE;return{...n,state:{...n.state,[REPORTED_SESSION_USAGE_STATE_KEY]:addTokenUsage(r,toTokenUsageDelta(t))}}}function accumulateSessionUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous??{...ZERO_TOKEN_USAGE,session:ZERO_TOKEN_USAGE,turnId:``};return{...n,session:addTokenUsage(n.session,t)}}function addTokenUsage(e,t){return{cacheReadTokens:e.cacheReadTokens+t.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens+t.cacheWriteTokens,costUsd:e.costUsd+t.costUsd,inputTokens:e.inputTokens+t.inputTokens,outputTokens:e.outputTokens+t.outputTokens,sawCost:e.sawCost||t.sawCost}}function toTokenUsageDelta(e){if(e===void 0)return ZERO_TOKEN_USAGE;let t=e.inputTokens??0,n=e.outputTokens??0;return{cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,costUsd:e.costUsd??0,inputTokens:t,outputTokens:n,sawCost:e.costUsd!==void 0}}export{accumulateSessionUsage,accumulateTurnUsage,addTurnUsage,addUsageOutsideTurns,bumpSessionRuntimeUsageLimits,getSessionRemainingUsageQuota,getSessionRuntimeUsageLimits,getSessionTokenUsage,getSessionUsage,getSessionUsageLimitViolation,getTurnUsageState,setTurnUsageState,takeSessionUsageDelta,toUsage};
1
+ const HARNESS_TURN_USAGE_STATE_KEY=`eve.harness.turnUsage`,REPORTED_SESSION_USAGE_STATE_KEY=`eve.harness.reportedSessionUsage`,SESSION_USAGE_WINDOW_START_KEY=`eve.harness.sessionUsageWindowStart`,SESSION_USAGE_WINDOW_INDEX_KEY=`eve.harness.sessionUsageWindowIndex`,ZERO_TOKEN_USAGE={cacheReadTokens:0,cacheWriteTokens:0,costUsd:0,inputTokens:0,outputTokens:0,sawCost:!1};function getTurnUsageState(e){return e?.[HARNESS_TURN_USAGE_STATE_KEY]}function getSessionTokenUsage(e){return getTurnUsageState(e.state)?.session??ZERO_TOKEN_USAGE}function getSessionUsage(e){return toUsage(getSessionTokenUsage(e))}function toUsage(e){return{cacheReadTokens:e.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens,costUsd:e.sawCost?e.costUsd:void 0,inputTokens:e.inputTokens,outputTokens:e.outputTokens}}function getSessionUsageWindow(e){return toUsage(subtractTokenUsage(getSessionTokenUsage(e),getWindowStart(e)))}function resetSessionUsageWindow(e){return{...e,state:{...e.state,[SESSION_USAGE_WINDOW_INDEX_KEY]:getSessionUsageWindowIndex(e)+1,[SESSION_USAGE_WINDOW_START_KEY]:getSessionTokenUsage(e)}}}function getSessionUsageWindowIndex(e){return e.state?.[SESSION_USAGE_WINDOW_INDEX_KEY]??0}function getWindowStart(e){return e.state?.[SESSION_USAGE_WINDOW_START_KEY]??ZERO_TOKEN_USAGE}function takeSessionUsageDelta(e){let t=getSessionTokenUsage(e);return{delta:toUsage(subtractTokenUsage(t,e.state?.[REPORTED_SESSION_USAGE_STATE_KEY]??ZERO_TOKEN_USAGE)),session:{...e,state:{...e.state,[REPORTED_SESSION_USAGE_STATE_KEY]:t}}}}function setTurnUsageState(e,t){return{...e,state:{...e.state,[HARNESS_TURN_USAGE_STATE_KEY]:t}}}function accumulateTurnUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous?.session??ZERO_TOKEN_USAGE;return{...addTokenUsage(e.previous!==void 0&&e.previous.turnId===e.turnId?e.previous:ZERO_TOKEN_USAGE,t),turnId:e.turnId,session:addTokenUsage(n,t)}}function addTurnUsage(e,t,n){return setTurnUsageState(e,accumulateTurnUsage({previous:getTurnUsageState(e.state),turnId:t,usage:n}))}function addUsageOutsideTurns(e,t){if(t===void 0)return e;let n=setTurnUsageState(e,accumulateSessionUsage({previous:getTurnUsageState(e.state),usage:t})),r=e.state?.[REPORTED_SESSION_USAGE_STATE_KEY]??ZERO_TOKEN_USAGE;return{...n,state:{...n.state,[REPORTED_SESSION_USAGE_STATE_KEY]:addTokenUsage(r,toTokenUsageDelta(t))}}}function accumulateSessionUsage(e){let t=toTokenUsageDelta(e.usage),n=e.previous??{...ZERO_TOKEN_USAGE,session:ZERO_TOKEN_USAGE,turnId:``};return{...n,session:addTokenUsage(n.session,t)}}function addTokenUsage(e,t){return{cacheReadTokens:e.cacheReadTokens+t.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens+t.cacheWriteTokens,costUsd:e.costUsd+t.costUsd,inputTokens:e.inputTokens+t.inputTokens,outputTokens:e.outputTokens+t.outputTokens,sawCost:e.sawCost||t.sawCost}}function subtractTokenUsage(e,t){return{cacheReadTokens:e.cacheReadTokens-t.cacheReadTokens,cacheWriteTokens:e.cacheWriteTokens-t.cacheWriteTokens,costUsd:e.costUsd-t.costUsd,inputTokens:e.inputTokens-t.inputTokens,outputTokens:e.outputTokens-t.outputTokens,sawCost:e.sawCost||t.sawCost}}function toTokenUsageDelta(e){if(e===void 0)return ZERO_TOKEN_USAGE;let t=e.inputTokens??0,n=e.outputTokens??0;return{cacheReadTokens:e.cacheReadTokens??0,cacheWriteTokens:e.cacheWriteTokens??0,costUsd:e.costUsd??0,inputTokens:t,outputTokens:n,sawCost:e.costUsd!==void 0}}export{accumulateSessionUsage,accumulateTurnUsage,addTurnUsage,addUsageOutsideTurns,getSessionTokenUsage,getSessionUsage,getSessionUsageWindow,getSessionUsageWindowIndex,getTurnUsageState,resetSessionUsageWindow,setTurnUsageState,takeSessionUsageDelta,toUsage};
@@ -10,11 +10,12 @@ import type { SandboxState } from "#sandbox/state.js";
10
10
  import type { JsonObject } from "#shared/json.js";
11
11
  import type { TokenUsage } from "#shared/token-usage.js";
12
12
  import type { InternalToolDefinition } from "#tools/definition.js";
13
- import type { AgentReasoningDefinition } from "#shared/agent-definition.js";
13
+ import type { AgentReasoningDefinition, SessionUsageLimit } from "#shared/agent-definition.js";
14
14
  import type { HarnessToolDefinition } from "#harness/execute-tool.js";
15
15
  import type { HarnessModelMessage } from "#harness/messages.js";
16
16
  import type { SessionInstrumentation } from "#instrumentation/runtime.js";
17
17
  import type { HistoryViewProjector, PreparedHistoryView } from "#shared/history-view.js";
18
+ import type { SessionHistoryMessage } from "#shared/session-history.js";
18
19
  /**
19
20
  * Serializable tool definition stored on the session.
20
21
  *
@@ -64,7 +65,6 @@ export interface HarnessSessionBase {
64
65
  readonly agent: SessionAgent;
65
66
  readonly compaction: CompactionConfig;
66
67
  readonly continuationToken: string;
67
- readonly limits?: SessionLimits;
68
68
  readonly outputSchema?: JsonObject;
69
69
  /**
70
70
  * Stable identifier of the top user-facing session in the dispatch
@@ -89,29 +89,6 @@ export interface HarnessSession extends HarnessSessionBase {
89
89
  readonly history: HarnessModelMessage[];
90
90
  }
91
91
  export declare function requireSessionModelReference(session: HarnessSession): RuntimeModelReference;
92
- /**
93
- * Token limits stored on one durable session.
94
- */
95
- export interface SessionLimits {
96
- /**
97
- * Maximum provider-reported input tokens this durable session may spend
98
- * before eve refuses to start another model call. Absent when the session
99
- * is uncapped. Root sessions default to 40M unless authored otherwise;
100
- * delegated subagent sessions receive the parent's remaining quota at
101
- * dispatch time.
102
- */
103
- readonly maxInputTokensPerSession?: number;
104
- /**
105
- * Maximum provider-reported output tokens this durable session may spend before
106
- * eve refuses to start another model call.
107
- */
108
- readonly maxOutputTokensPerSession?: number;
109
- /**
110
- * Maximum provider-reported model token cost this durable session may spend,
111
- * in US dollars, before eve refuses to start another model call.
112
- */
113
- readonly maxTokenCostUsdPerSession?: number;
114
- }
115
92
  /**
116
93
  * Input payload for a harness turn.
117
94
  *
@@ -139,6 +116,12 @@ export interface StepInput {
139
116
  * delivery message. Populated by channels via `SendPayload.context`.
140
117
  */
141
118
  readonly context?: readonly string[];
119
+ /**
120
+ * Prior conversation from the channel delivery, added as user and assistant
121
+ * turns before this turn's context and message. Populated by channels via
122
+ * `SendPayload.history`.
123
+ */
124
+ readonly history?: readonly SessionHistoryMessage[];
142
125
  /**
143
126
  * Run-scoped schema that replaces the session's current output schema when
144
127
  * present. Omitted continuations keep the existing schema.
@@ -311,6 +294,8 @@ export interface ToolLoopHarnessConfig {
311
294
  * authoritative server-side metadata.
312
295
  */
313
296
  readonly runtimeIdentity?: RuntimeIdentity;
297
+ /** The agent's `limits.sessionUsage`; the default limit applies when absent. */
298
+ readonly sessionUsageLimit?: SessionUsageLimit;
314
299
  /**
315
300
  * Unified tool definitions for this harness step.
316
301
  *
@@ -28,6 +28,8 @@ interface ApplicationBuildProfileTiming {
28
28
  }
29
29
  /** Stable JSON document written by `eve build --profile <path>`. */
30
30
  export interface ApplicationBuildProfile {
31
+ /** Build identity exposed to the Workflow World; self-hosted output only. */
32
+ readonly deploymentId?: string | undefined;
31
33
  readonly durationMs: number;
32
34
  readonly kind: "eve-build-profile";
33
35
  readonly output: ApplicationBuildProfileOutput;
@@ -50,6 +52,7 @@ export declare class ApplicationBuildProfiler {
50
52
  }
51
53
  /** Creates the versioned report shape from completed timings and output measurements. */
52
54
  export declare function createApplicationBuildProfile(input: {
55
+ readonly deploymentId?: string | undefined;
53
56
  readonly output: ApplicationBuildProfileOutput;
54
57
  readonly target: ApplicationBuildProfileTarget;
55
58
  readonly timing: ApplicationBuildProfileTiming;
@@ -1 +1 @@
1
- import{mkdir,readFile,readdir,writeFile}from"node:fs/promises";import{dirname,join,relative,sep}from"node:path";import{performance}from"node:perf_hooks";import{gzipSync}from"node:zlib";const APPLICATION_BUILD_PROFILE_SCHEMA_VERSION=1;function roundDuration(e){return Math.round(Math.max(0,e)*10)/10}function createMutableOutputSize(){return{files:0,gzipBytes:0,rawBytes:0}}function toOutputSize(e){return{files:e.files,gzipBytes:e.gzipBytes,rawBytes:e.rawBytes}}function toProfilePath(e,t){return relative(e,t).split(sep).join(`/`)}function measureFileSize(e){return{gzipBytes:gzipSync(e).byteLength,rawBytes:e.byteLength}}function addFileSize(e,t){e.files+=1,e.rawBytes+=t.rawBytes,e.gzipBytes+=t.gzipBytes}var ApplicationBuildProfiler=class{#e;#t=[];#n;#r=!1;constructor(e={}){this.#e=e.now??performance.now.bind(performance),this.#n=this.#e()}async measure(e,t){if(this.#r)throw Error(`Cannot record a phase after the build profile has finished.`);let n=this.#e();try{return await t()}finally{this.#t.push({durationMs:roundDuration(this.#e()-n),name:e})}}finish(){if(this.#r)throw Error(`The build profile has already finished.`);return this.#r=!0,{durationMs:roundDuration(this.#e()-this.#n),phases:[...this.#t]}}};function createApplicationBuildProfile(e){return{durationMs:e.timing.durationMs,kind:`eve-build-profile`,output:e.output,phases:e.timing.phases,schemaVersion:1,target:e.target}}async function measureApplicationBuildOutput(e){let t=createMutableOutputSize(),n=new Map,visit=async(r,i)=>{let a=await readdir(r,{withFileTypes:!0});for(let o of a){let a=join(r,o.name);if(o.isDirectory()){let t=o.name.endsWith(`.func`)?toProfilePath(e,a):i;await visit(a,t);continue}if(!o.isFile())continue;let s=measureFileSize(await readFile(a));if(addFileSize(t,s),i!==void 0){let e=n.get(i)??createMutableOutputSize();addFileSize(e,s),n.set(i,e)}}};return await visit(e,void 0),{...toOutputSize(t),functionBundles:[...n.entries()].map(([e,t])=>({path:e,...toOutputSize(t)})).sort((e,t)=>e.path.localeCompare(t.path))}}async function writeApplicationBuildProfile(e,t){await mkdir(dirname(e),{recursive:!0}),await writeFile(e,`${JSON.stringify(t,null,2)}\n`,`utf8`)}export{APPLICATION_BUILD_PROFILE_SCHEMA_VERSION,ApplicationBuildProfiler,createApplicationBuildProfile,measureApplicationBuildOutput,writeApplicationBuildProfile};
1
+ import{mkdir,readFile,readdir,writeFile}from"node:fs/promises";import{dirname,join,relative,sep}from"node:path";import{performance}from"node:perf_hooks";import{gzipSync}from"node:zlib";const APPLICATION_BUILD_PROFILE_SCHEMA_VERSION=1;function roundDuration(e){return Math.round(Math.max(0,e)*10)/10}function createMutableOutputSize(){return{files:0,gzipBytes:0,rawBytes:0}}function toOutputSize(e){return{files:e.files,gzipBytes:e.gzipBytes,rawBytes:e.rawBytes}}function toProfilePath(e,t){return relative(e,t).split(sep).join(`/`)}function measureFileSize(e){return{gzipBytes:gzipSync(e).byteLength,rawBytes:e.byteLength}}function addFileSize(e,t){e.files+=1,e.rawBytes+=t.rawBytes,e.gzipBytes+=t.gzipBytes}var ApplicationBuildProfiler=class{#e;#t=[];#n;#r=!1;constructor(e={}){this.#e=e.now??performance.now.bind(performance),this.#n=this.#e()}async measure(e,t){if(this.#r)throw Error(`Cannot record a phase after the build profile has finished.`);let n=this.#e();try{return await t()}finally{this.#t.push({durationMs:roundDuration(this.#e()-n),name:e})}}finish(){if(this.#r)throw Error(`The build profile has already finished.`);return this.#r=!0,{durationMs:roundDuration(this.#e()-this.#n),phases:[...this.#t]}}};function createApplicationBuildProfile(e){return{deploymentId:e.deploymentId,durationMs:e.timing.durationMs,kind:`eve-build-profile`,output:e.output,phases:e.timing.phases,schemaVersion:1,target:e.target}}async function measureApplicationBuildOutput(e){let t=createMutableOutputSize(),n=new Map,visit=async(r,i)=>{let a=await readdir(r,{withFileTypes:!0});for(let o of a){let a=join(r,o.name);if(o.isDirectory()){let t=o.name.endsWith(`.func`)?toProfilePath(e,a):i;await visit(a,t);continue}if(!o.isFile())continue;let s=measureFileSize(await readFile(a));if(addFileSize(t,s),i!==void 0){let e=n.get(i)??createMutableOutputSize();addFileSize(e,s),n.set(i,e)}}};return await visit(e,void 0),{...toOutputSize(t),functionBundles:[...n.entries()].map(([e,t])=>({path:e,...toOutputSize(t)})).sort((e,t)=>e.path.localeCompare(t.path))}}async function writeApplicationBuildProfile(e,t){await mkdir(dirname(e),{recursive:!0}),await writeFile(e,`${JSON.stringify(t,null,2)}\n`,`utf8`)}export{APPLICATION_BUILD_PROFILE_SCHEMA_VERSION,ApplicationBuildProfiler,createApplicationBuildProfile,measureApplicationBuildOutput,writeApplicationBuildProfile};
@@ -1,16 +1,20 @@
1
- import{copyFile,mkdir,readFile,writeFile}from"node:fs/promises";import{join}from"node:path";import{resolvePackageCompiledFilePath,resolvePackageSourceFilePath}from"#internal/application/package.js";import{buildPackageUserAgent}from"#internal/user-agent.js";import{sandboxPreparedArtifactsManifestSchema}from"#shared/sandbox-prepared-artifacts.js";import{stringifyEsmImportSpecifier}from"#internal/application/import-specifier.js";import{usesParentDevelopmentWorkflowWorld}from"#internal/workflow/development-world-protocol.js";import{prepareAuthoredRuntimeModules}from"#internal/authored-runtime-modules.js";import{readMaterializedAuthoredModuleIndex}from"#internal/materialized-authored-modules.js";import"#internal/instrumentation-layout.js";import{resolveWorkflowWorldImport}from"#internal/workflow/world-target.js";async function writeCompiledArtifactsFiles(e){let t=join(e.outDir,`compiled-artifacts-bootstrap.mjs`),n=join(e.outDir,`compiled-artifacts-module-map.mjs`),r=join(e.outDir,`compiled-artifacts-instrumentation.mjs`),i=join(e.outDir,`compiled-artifacts-workflow-world.mjs`),a=sandboxPreparedArtifactsManifestSchema.parse(JSON.parse(await readFile(e.compileResult.paths.sandboxPreparedArtifactsPath,`utf8`))),o=await prepareAuthoredRuntimeModules({appRoot:e.compileResult.project.appRoot,manifest:e.compileResult.manifest,moduleMapPath:e.compileResult.paths.moduleMapPath});await mkdir(e.outDir,{recursive:!0}),await writeFile(n,o.moduleMapCode),await writeFile(t,createCompiledArtifactsBootstrapSource({compileResult:e.compileResult,installModulePath:resolvePackageSourceFilePath(`src/runtime/loaders/bundled-artifacts.ts`),metadata:e.compileResult.metadata,moduleMapImportPath:n,sandboxPreparedArtifacts:a})),await writeFile(i,createWorkflowWorldPluginSource({compiledArtifactsBootstrapPath:t,configuredWorld:e.compileResult.manifest.config.experimental?.workflow?.world,defaultWorld:e.defaultWorkflowWorld}));let s={authoredWorkflowModules:o.authoredWorkflowModules,bootstrapPath:t,workflowWorldPluginPath:i},c=await writePreparedInstrumentation({instrumentation:o.instrumentation,outDir:e.outDir});return await writeFile(r,createInstrumentationPluginSource({agentName:e.compileResult.manifest.config.name,layout:c})),s.instrumentationPluginPath=r,s.instrumentationLayout=generatedInstrumentationLayout(c),s.instrumentationSourcePaths=instrumentationSourcePathsOf(c),s}async function writePreparedInstrumentation(e){let writeOne=async(t,n)=>{let r=join(e.outDir,`compiled-artifacts-instrumentation-${t}.mjs`);return await writeFile(r,n),r},t={};for(let[n,r]of Object.entries(e.instrumentation.moduleCodeBySlot))t[n]=await writeOne(n,r);return{kind:`directory`,modulePathsBySlot:t}}function instrumentationSourcePathsOf(e){return Object.values(e.modulePathsBySlot)}async function writeDevelopmentCompiledArtifactsFiles(e){let t=join(e.outDir,`compiled-artifacts-bootstrap.mjs`),n=join(e.outDir,`compiled-artifacts-instrumentation.mjs`),r=join(e.outDir,`compiled-artifacts-workflow-world.mjs`),i=await readMaterializedAuthoredModuleIndex(e.runtimeAppRoot);if(i===void 0)throw Error(`Development generation at "${e.runtimeAppRoot}" is not materialized.`);await mkdir(e.outDir,{recursive:!0}),await writeFile(t,createDevelopmentCompiledArtifactsBootstrapSource(e.compileResult.manifest.config.name)),await writeFile(r,createDevelopmentWorkflowWorldPluginSource({compiledArtifactsBootstrapPath:t,configuredWorld:e.compileResult.manifest.config.experimental?.workflow?.world}));let a={authoredWorkflowModules:e.authoredWorkflowModules,bootstrapPath:t,workflowWorldPluginPath:r};if(i.instrumentation!==void 0){let t=await copyMaterializedInstrumentation({instrumentation:i.instrumentation,outDir:e.outDir,runtimeAppRoot:e.runtimeAppRoot});await writeFile(n,createInstrumentationPluginSource({agentName:e.compileResult.manifest.config.name,layout:t})),a.instrumentationPluginPath=n,a.instrumentationLayout=generatedInstrumentationLayout(t),a.instrumentationSourcePaths=instrumentationSourcePathsOf(t)}return a}function generatedInstrumentationLayout(e){return{kind:`directory`,slots:Object.keys(e.modulePathsBySlot)}}async function copyMaterializedInstrumentation(e){let t=join(e.runtimeAppRoot,`.eve`,`compile`),copyOne=async(n,r)=>{let i=join(e.outDir,`compiled-artifacts-instrumentation-${n}.mjs`);return await copyFile(join(t,r),i),i},n={};for(let[t,r]of Object.entries(e.instrumentation.modulePathsBySlot))n[t]=await copyOne(t,r);return{kind:`directory`,modulePathsBySlot:n}}function createDevelopmentCompiledArtifactsBootstrapSource(e){return[`// Generated by eve. Do not edit by hand.`,`import { installEveWorkflowQueueNamespace } from ${stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/queue-namespace.ts`))};`,``,`installEveWorkflowQueueNamespace(${JSON.stringify(e)});`,``,`export default function installDevelopmentCompiledArtifactsPlugin() {}`,``].join(`
1
+ import{copyFile,mkdir,readFile,writeFile}from"node:fs/promises";import{join}from"node:path";import{resolvePackageCompiledFilePath,resolvePackageSourceFilePath}from"#internal/application/package.js";import{buildPackageUserAgent}from"#internal/user-agent.js";import{sandboxPreparedArtifactsManifestSchema}from"#shared/sandbox-prepared-artifacts.js";import{stringifyEsmImportSpecifier}from"#internal/application/import-specifier.js";import{usesParentDevelopmentWorkflowWorld}from"#internal/workflow/development-world-protocol.js";import{prepareAuthoredRuntimeModules}from"#internal/authored-runtime-modules.js";import{readMaterializedAuthoredModuleIndex}from"#internal/materialized-authored-modules.js";import"#internal/instrumentation-layout.js";import{resolveWorkflowWorldImport}from"#internal/workflow/world-target.js";import{BUILD_DEPLOYMENT_ID_PLACEHOLDER}from"#internal/nitro/host/build-deployment-id.js";async function writeCompiledArtifactsFiles(e){let t=join(e.outDir,`compiled-artifacts-bootstrap.mjs`),n=join(e.outDir,`compiled-artifacts-module-map.mjs`),r=join(e.outDir,`compiled-artifacts-instrumentation.mjs`),i=join(e.outDir,`compiled-artifacts-workflow-world.mjs`),a=sandboxPreparedArtifactsManifestSchema.parse(JSON.parse(await readFile(e.compileResult.paths.sandboxPreparedArtifactsPath,`utf8`))),o=await prepareAuthoredRuntimeModules({appRoot:e.compileResult.project.appRoot,manifest:e.compileResult.manifest,moduleMapPath:e.compileResult.paths.moduleMapPath});await mkdir(e.outDir,{recursive:!0}),await writeFile(n,o.moduleMapCode),await writeFile(t,createCompiledArtifactsBootstrapSource({compileResult:e.compileResult,installModulePath:resolvePackageSourceFilePath(`src/runtime/loaders/bundled-artifacts.ts`),metadata:e.compileResult.metadata,moduleMapImportPath:n,sandboxPreparedArtifacts:a})),await writeFile(i,createWorkflowWorldPluginSource({compiledArtifactsBootstrapPath:t,configuredWorld:e.compileResult.manifest.config.experimental?.workflow?.world,defaultWorld:e.defaultWorkflowWorld}));let s={authoredWorkflowModules:o.authoredWorkflowModules,bootstrapPath:t,workflowWorldPluginPath:i},c=await writePreparedInstrumentation({instrumentation:o.instrumentation,outDir:e.outDir});return await writeFile(r,createInstrumentationPluginSource({agentName:e.compileResult.manifest.config.name,layout:c})),s.instrumentationPluginPath=r,s.instrumentationLayout=generatedInstrumentationLayout(c),s.instrumentationSourcePaths=instrumentationSourcePathsOf(c),s}async function writePreparedInstrumentation(e){let writeOne=async(t,n)=>{let r=join(e.outDir,`compiled-artifacts-instrumentation-${t}.mjs`);return await writeFile(r,n),r},t={};for(let[n,r]of Object.entries(e.instrumentation.moduleCodeBySlot))t[n]=await writeOne(n,r);return{kind:`directory`,modulePathsBySlot:t}}function instrumentationSourcePathsOf(e){return Object.values(e.modulePathsBySlot)}async function writeDevelopmentCompiledArtifactsFiles(e){let t=join(e.outDir,`compiled-artifacts-bootstrap.mjs`),n=join(e.outDir,`compiled-artifacts-instrumentation.mjs`),r=join(e.outDir,`compiled-artifacts-workflow-world.mjs`),i=await readMaterializedAuthoredModuleIndex(e.runtimeAppRoot);if(i===void 0)throw Error(`Development generation at "${e.runtimeAppRoot}" is not materialized.`);await mkdir(e.outDir,{recursive:!0}),await writeFile(t,createDevelopmentCompiledArtifactsBootstrapSource(e.compileResult.manifest.config.name)),await writeFile(r,createDevelopmentWorkflowWorldPluginSource({compiledArtifactsBootstrapPath:t,configuredWorld:e.compileResult.manifest.config.experimental?.workflow?.world}));let a={authoredWorkflowModules:e.authoredWorkflowModules,bootstrapPath:t,workflowWorldPluginPath:r};if(i.instrumentation!==void 0){let t=await copyMaterializedInstrumentation({instrumentation:i.instrumentation,outDir:e.outDir,runtimeAppRoot:e.runtimeAppRoot});await writeFile(n,createInstrumentationPluginSource({agentName:e.compileResult.manifest.config.name,layout:t})),a.instrumentationPluginPath=n,a.instrumentationLayout=generatedInstrumentationLayout(t),a.instrumentationSourcePaths=instrumentationSourcePathsOf(t)}return a}function generatedInstrumentationLayout(e){return{kind:`directory`,slots:Object.keys(e.modulePathsBySlot)}}async function copyMaterializedInstrumentation(e){let t=join(e.runtimeAppRoot,`.eve`,`compile`),copyOne=async(n,r)=>{let i=join(e.outDir,`compiled-artifacts-instrumentation-${n}.mjs`);return await copyFile(join(t,r),i),i},n={};for(let[t,r]of Object.entries(e.instrumentation.modulePathsBySlot))n[t]=await copyOne(t,r);return{kind:`directory`,modulePathsBySlot:n}}function createDevelopmentCompiledArtifactsBootstrapSource(e){return[`// Generated by eve. Do not edit by hand.`,`import { installEveWorkflowQueueNamespace } from ${stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/queue-namespace.ts`))};`,``,`installEveWorkflowQueueNamespace(${JSON.stringify(e)});`,``,`export default function installDevelopmentCompiledArtifactsPlugin() {}`,``].join(`
2
2
  `)}function createCompiledArtifactsBootstrapSource(e){let t=e.compileResult.manifest.config.name;return[`// Generated by eve. Do not edit by hand.`,`import moduleMap from ${stringifyEsmImportSpecifier(e.moduleMapImportPath)};`,`import { installBundledCompiledArtifacts } from ${stringifyEsmImportSpecifier(e.installModulePath)};`,`import { installEveWorkflowQueueNamespace } from ${stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/queue-namespace.ts`))};`,``,`installEveWorkflowQueueNamespace(${JSON.stringify(t)});`,``,`const metadata = ${JSON.stringify(e.metadata,null,2)};`,``,`const manifest = ${JSON.stringify(e.compileResult.manifest,null,2)};`,``,`const sandboxPreparedArtifacts = ${JSON.stringify(e.sandboxPreparedArtifacts,null,2)};`,``,`export { moduleMap };`,``,`export function installCompiledArtifactsBootstrap() {`,` installBundledCompiledArtifacts({`,` manifest,`,` metadata,`,` moduleMap,`,` sandboxPreparedArtifacts,`,` });`,`}`,``,`installCompiledArtifactsBootstrap();`,``,`// Default export satisfies the Nitro plugin contract so this file`,`// can be used directly as a Nitro plugin without a separate wrapper.`,`export default function installCompiledArtifactsPlugin() {`,` // Already installed on import above.`,`}`,``].join(`
3
- `)}function resolveInstallWorldImportSpecifier(){return resolvePackageSourceFilePath(`src/execution/install-workflow-world.ts`)}function resolveWorkflowWorldWiring(e){if(e===`@workflow/world-local`){let t=stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/local-world-data-directory.ts`)),n=stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/local-world-delivery-timeouts.ts`));return{moduleImportSpecifier:resolvePackageCompiledFilePath(`src/compiled/${e}/index.js`),extraImportLines:`
3
+ `)}function resolveInstallWorldImportSpecifier(){return resolvePackageSourceFilePath(`src/execution/install-workflow-world.ts`)}function resolveWorkflowWorldWiring(e){if(e===`@workflow/world-local`){let t=stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/local-world-data-directory.ts`)),n=stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/local-world-delivery-timeouts.ts`)),r=stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/local-world-delivery-auth.ts`));return{moduleImportSpecifier:resolvePackageCompiledFilePath(`src/compiled/${e}/index.js`),extraImportLines:`
4
4
  import { applyLocalWorkflowWorldDeliveryTimeoutDefaults } from ${n};
5
+ import { authenticateLocalWorkflowDeliveries } from ${r};
5
6
  import { resolveLocalWorkflowWorldDataDirectory } from ${t};`.trimStart().split(`
6
7
  `),createWorldSource:`applyLocalWorkflowWorldDeliveryTimeoutDefaults();
7
- const workflowWorld = await workflowWorldModule.createWorld({
8
- dataDir: resolveLocalWorkflowWorldDataDirectory(process.cwd()),
9
- });`}}if(e===`@workflow/world-vercel`){let t=stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/vercel-world-defaults.ts`)),n=resolvePackageCompiledFilePath(`src/compiled/${e}/index.js`),r=`
8
+ const workflowWorld = authenticateLocalWorkflowDeliveries(
9
+ await workflowWorldModule.createWorld({
10
+ dataDir: resolveLocalWorkflowWorldDataDirectory(process.cwd()),
11
+ recoverActiveRuns: false,
12
+ }),
13
+ );`}}if(e===`@workflow/world-vercel`){let t=stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/internal/workflow/vercel-world-defaults.ts`)),n=resolvePackageCompiledFilePath(`src/compiled/${e}/index.js`),r=`
10
14
  const workflowWorld = await workflowWorldModule.createWorld({
11
15
  headers: { "User-Agent": ${JSON.stringify(buildPackageUserAgent())} },
12
16
  });
13
- applyVercelWorkflowWorldDefaults(workflowWorld);`.trimStart();return{moduleImportSpecifier:n,extraImportLines:[`import { applyVercelWorkflowWorldDefaults } from ${t};`],createWorldSource:r}}return{moduleImportSpecifier:e,extraImportLines:[`import { createWorldFromModule } from ${stringifyEsmImportSpecifier(resolvePackageCompiledFilePath(`src/compiled/@workflow/core/runtime.js`))};`],createWorldSource:`const workflowWorld = await createWorldFromModule(workflowWorldModule);`}}function createWorkflowWorldPluginSource(e){let t=e.configuredWorld??e.defaultWorld,n=resolveWorkflowWorldWiring(resolveWorkflowWorldImport(t));return[`// Generated by eve. Do not edit by hand.`,`import ${stringifyEsmImportSpecifier(e.compiledArtifactsBootstrapPath)};`,`import * as workflowWorldModule from ${stringifyEsmImportSpecifier(n.moduleImportSpecifier)};`,...n.extraImportLines,`import { installWorkflowWorld } from ${stringifyEsmImportSpecifier(resolveInstallWorldImportSpecifier())};`,``,n.createWorldSource,`await installWorkflowWorld({ packageName: ${JSON.stringify(e.configuredWorld)}, world: workflowWorld });`,``,`export default function installWorkflowWorldPlugin() {}`,``].join(`
17
+ applyVercelWorkflowWorldDefaults(workflowWorld);`.trimStart();return{moduleImportSpecifier:n,extraImportLines:[`import { applyVercelWorkflowWorldDefaults } from ${t};`],createWorldSource:r}}return{moduleImportSpecifier:e,extraImportLines:[`import { createWorldFromModule } from ${stringifyEsmImportSpecifier(resolvePackageCompiledFilePath(`src/compiled/@workflow/core/runtime.js`))};`],createWorldSource:`const workflowWorld = await createWorldFromModule(workflowWorldModule);`}}function createWorkflowWorldPluginSource(e){let t=e.configuredWorld??e.defaultWorld,n=resolveWorkflowWorldWiring(resolveWorkflowWorldImport(t));return[`// Generated by eve. Do not edit by hand.`,`import ${stringifyEsmImportSpecifier(e.compiledArtifactsBootstrapPath)};`,`import * as workflowWorldModule from ${stringifyEsmImportSpecifier(n.moduleImportSpecifier)};`,...n.extraImportLines,`import { installWorkflowWorld } from ${stringifyEsmImportSpecifier(resolveInstallWorldImportSpecifier())};`,`import { installWorkflowDeploymentId } from ${stringifyEsmImportSpecifier(resolvePackageSourceFilePath(`src/execution/install-workflow-deployment-id.ts`))};`,``,`installWorkflowDeploymentId(${JSON.stringify(BUILD_DEPLOYMENT_ID_PLACEHOLDER)});`,n.createWorldSource,`await installWorkflowWorld({ packageName: ${JSON.stringify(e.configuredWorld)}, world: workflowWorld });`,``,`export default function installWorkflowWorldPlugin() {}`,``].join(`
14
18
  `)}function createDevelopmentWorkflowWorldPluginSource(e){if(!usesParentDevelopmentWorkflowWorld(e.configuredWorld))return createWorkflowWorldPluginSource({...e,defaultWorld:`local`});let t=resolvePackageSourceFilePath(`src/internal/workflow/development-world-client.ts`);return[`// Generated by eve. Do not edit by hand.`,`import ${stringifyEsmImportSpecifier(e.compiledArtifactsBootstrapPath)};`,`import { createDevelopmentWorkflowWorld } from ${stringifyEsmImportSpecifier(t)};`,`import { installWorkflowWorld } from ${stringifyEsmImportSpecifier(resolveInstallWorldImportSpecifier())};`,``,`await installWorkflowWorld({ world: createDevelopmentWorkflowWorld() });`,``,`export default function installDevelopmentWorkflowWorldPlugin() {}`,``].join(`
15
19
  `)}function createInstrumentationPluginSource(e){let t=JSON.stringify(e.agentName),n=resolvePackageSourceFilePath(`src/instrumentation/providers.ts`),r=Object.entries(e.layout.modulePathsBySlot);return[`// Generated by eve. Do not edit by hand.`,...r.map(([e,t],n)=>`import * as provider${n} from ${stringifyEsmImportSpecifier(t)}; // ${e}`),`import { finalizeInstrumentationProviders, registerInstrumentationProvider, seedInstrumentationProviders, shutdownInstrumentationProviders } from ${stringifyEsmImportSpecifier(n)};`,``,`seedInstrumentationProviders();`,``,...r.flatMap(([e],n)=>[`await registerInstrumentationProvider({`,` agentName: ${t},`,` slot: ${JSON.stringify(e)},`,` value: provider${n}.default,`,`});`]),``,`finalizeInstrumentationProviders({ serviceName: ${t} });`,``,`// Default export satisfies the Nitro plugin contract so this file`,`// can be used directly as a Nitro plugin without a separate wrapper.`,`export default function installInstrumentationPlugin(nitroApp) {`,` // The last point a buffered exporter can still reach the network.`,` nitroApp?.hooks?.hook('close', async () => {`,` await shutdownInstrumentationProviders();`,` });`,`}`,``].join(`
16
20
  `)}export{createCompiledArtifactsBootstrapSource,createDevelopmentWorkflowWorldPluginSource,createWorkflowWorldPluginSource,writeCompiledArtifactsFiles,writeDevelopmentCompiledArtifactsFiles};
@@ -1,5 +1,18 @@
1
1
  /** Environment flag set for processes that belong to an `eve dev` session. */
2
2
  export declare const EVE_DEV_ENV_FLAG = "EVE_DEV";
3
+ /**
4
+ * Internal handoff from `eve eval` to the development server it starts; not a
5
+ * user-facing setting.
6
+ */
7
+ export declare const EVE_DEV_STATE_DIR_ENV = "EVE_DEV_STATE_DIR";
8
+ /**
9
+ * Resolves where a development server keeps the state only one server per app
10
+ * root may own: the active runtime generation and its snapshots, the local
11
+ * Workflow World data, and the record a second `eve dev` attaches through.
12
+ * Defaults to `<appRoot>/.eve`. `eve eval` points it at a per-run directory so
13
+ * its server can run beside an `eve dev` session without touching it.
14
+ */
15
+ export declare function resolveDevelopmentStateDirectory(appRoot: string): string;
3
16
  type InstrumentationEnvironment = "development" | "preview" | "production";
4
17
  /** Reports whether this process belongs to an `eve dev` session. */
5
18
  export declare function isEveDevEnvironment(): boolean;
@@ -1 +1 @@
1
- const EVE_DEV_ENV_FLAG=`EVE_DEV`;function isEveDevEnvironment(){return process.env[EVE_DEV_ENV_FLAG]===`1`}function resolveInstrumentationEnvironment(){return isEveDevEnvironment()||process.env.VERCEL_ENV===`development`?`development`:process.env.VERCEL_ENV===`preview`?`preview`:`production`}const EVE_EVALUATION_ENV_FLAG=`EVE_EVALUATION`,EVE_EVALUATION_RUN_ID_ENV=`EVE_EVALUATION_RUN_ID`;function isEveEvaluationEnvironment(){return process.env[EVE_EVALUATION_ENV_FLAG]===`1`}function resolveEveEvaluationRunId(){if(!isEveEvaluationEnvironment())return;let e=process.env[EVE_EVALUATION_RUN_ID_ENV];return e===void 0||e.length===0?void 0:e}export{EVE_DEV_ENV_FLAG,EVE_EVALUATION_ENV_FLAG,EVE_EVALUATION_RUN_ID_ENV,isEveDevEnvironment,resolveEveEvaluationRunId,resolveInstrumentationEnvironment};
1
+ import{join,resolve}from"node:path";const EVE_DEV_ENV_FLAG=`EVE_DEV`,EVE_DEV_STATE_DIR_ENV=`EVE_DEV_STATE_DIR`;function resolveDevelopmentStateDirectory(e){let t=process.env[EVE_DEV_STATE_DIR_ENV];return!isEveDevEnvironment()||t===void 0||t.length===0?join(e,`.eve`):resolve(e,t)}function isEveDevEnvironment(){return process.env[EVE_DEV_ENV_FLAG]===`1`}function resolveInstrumentationEnvironment(){return isEveDevEnvironment()||process.env.VERCEL_ENV===`development`?`development`:process.env.VERCEL_ENV===`preview`?`preview`:`production`}const EVE_EVALUATION_ENV_FLAG=`EVE_EVALUATION`,EVE_EVALUATION_RUN_ID_ENV=`EVE_EVALUATION_RUN_ID`;function isEveEvaluationEnvironment(){return process.env[EVE_EVALUATION_ENV_FLAG]===`1`}function resolveEveEvaluationRunId(){if(!isEveEvaluationEnvironment())return;let e=process.env[EVE_EVALUATION_RUN_ID_ENV];return e===void 0||e.length===0?void 0:e}export{EVE_DEV_ENV_FLAG,EVE_DEV_STATE_DIR_ENV,EVE_EVALUATION_ENV_FLAG,EVE_EVALUATION_RUN_ID_ENV,isEveDevEnvironment,resolveDevelopmentStateDirectory,resolveEveEvaluationRunId,resolveInstrumentationEnvironment};
@@ -3,6 +3,16 @@ export declare function importInstalledEnginePackage<T>(input: {
3
3
  readonly appRoot: string;
4
4
  readonly packageName: string;
5
5
  }): Promise<T>;
6
+ /**
7
+ * Loads an optional engine without installing it: from eve's own resolution
8
+ * first, then from the application. Fails with `missingMessage`.
9
+ */
10
+ export declare function importOptionalEnginePackage<T>(input: {
11
+ readonly appRoot: string;
12
+ readonly importModule: () => Promise<T>;
13
+ readonly missingMessage: string;
14
+ readonly packageName: string;
15
+ }): Promise<T>;
6
16
  export declare function resolveInstalledEnginePackageEntrypointHref(input: {
7
17
  readonly appRoot: string;
8
18
  readonly packageName: string;
@@ -1 +1 @@
1
- import{readFile}from"node:fs/promises";import{existsSync}from"node:fs";import{dirname,join}from"node:path";import{pathToFileURL}from"node:url";async function importInstalledEnginePackage(e){return await import(await resolveInstalledEnginePackageEntrypointHref(e))}async function resolveInstalledEnginePackageEntrypointHref(e){let t=findInstalledPackageRoot(e),n=join(t,`package.json`),r=resolvePackageEntryPoint(JSON.parse(await readFile(n,`utf8`)));if(r.startsWith(`/`))throw Error(`Invalid absolute entrypoint for optional package "${e.packageName}".`);return pathToFileURL(join(t,r)).href}async function readInstalledPackageVersion(e){let t=join(findInstalledPackageRoot(e),`package.json`),n=JSON.parse(await readFile(t,`utf8`));return typeof n.version==`string`?n.version:void 0}function findInstalledPackageRoot(e){let t=e.packageName.split(`/`),n=[],r=e.appRoot;for(;;){let i=join(r,`node_modules`,...t);if(n.push(i),existsSync(join(i,`package.json`)))return i;let a=dirname(r);if(a===r)throw Error(`Could not find installed optional dependency "${e.packageName}". Checked: ${n.join(`, `)}`);r=a}}function resolvePackageEntryPoint(e){let t=readDotExport(e.exports);return t===void 0?typeof e.module==`string`&&e.module.length>0?e.module:typeof e.main==`string`&&e.main.length>0?e.main:`index.js`:t}function readDotExport(e){if(typeof e==`string`&&e.length>0)return e;if(typeof e!=`object`||!e)return;let t=`.`in e?e[`.`]:e;if(typeof t==`string`&&t.length>0)return t;if(typeof t!=`object`||!t)return;let n=t;if(typeof n.import==`string`&&n.import.length>0)return n.import;if(typeof n.default==`string`&&n.default.length>0)return n.default}export{importInstalledEnginePackage,readInstalledPackageVersion,resolveInstalledEnginePackageEntrypointHref};
1
+ import{readFile}from"node:fs/promises";import{existsSync}from"node:fs";import{dirname,join}from"node:path";import{pathToFileURL}from"node:url";async function importInstalledEnginePackage(e){return await import(await resolveInstalledEnginePackageEntrypointHref(e))}async function importOptionalEnginePackage(e){try{return await e.importModule()}catch(t){try{return await importInstalledEnginePackage(e)}catch(n){throw Error(e.missingMessage,{cause:AggregateError([t,n])})}}}async function resolveInstalledEnginePackageEntrypointHref(e){let t=findInstalledPackageRoot(e),n=join(t,`package.json`),r=resolvePackageEntryPoint(JSON.parse(await readFile(n,`utf8`)));if(r.startsWith(`/`))throw Error(`Invalid absolute entrypoint for optional package "${e.packageName}".`);return pathToFileURL(join(t,r)).href}async function readInstalledPackageVersion(e){let t=join(findInstalledPackageRoot(e),`package.json`),n=JSON.parse(await readFile(t,`utf8`));return typeof n.version==`string`?n.version:void 0}function findInstalledPackageRoot(e){let t=e.packageName.split(`/`),n=[],r=e.appRoot;for(;;){let i=join(r,`node_modules`,...t);if(n.push(i),existsSync(join(i,`package.json`)))return i;let a=dirname(r);if(a===r)throw Error(`Could not find installed optional dependency "${e.packageName}". Checked: ${n.join(`, `)}`);r=a}}function resolvePackageEntryPoint(e){let t=readDotExport(e.exports);return t===void 0?typeof e.module==`string`&&e.module.length>0?e.module:typeof e.main==`string`&&e.main.length>0?e.main:`index.js`:t}function readDotExport(e){if(typeof e==`string`&&e.length>0)return e;if(typeof e!=`object`||!e)return;let t=`.`in e?e[`.`]:e;if(typeof t==`string`&&t.length>0)return t;if(typeof t!=`object`||!t)return;let n=t;if(typeof n.import==`string`&&n.import.length>0)return n.import;if(typeof n.default==`string`&&n.default.length>0)return n.default}export{importInstalledEnginePackage,importOptionalEnginePackage,readInstalledPackageVersion,resolveInstalledEnginePackageEntrypointHref};
@@ -1 +1 @@
1
- const STAMPED_PACKAGE_VERSION=`0.81.1`;function readStampedPackageVersion(){return STAMPED_PACKAGE_VERSION.startsWith(`__`)?void 0:STAMPED_PACKAGE_VERSION}export{readStampedPackageVersion};
1
+ const STAMPED_PACKAGE_VERSION=`0.83.0`;function readStampedPackageVersion(){return STAMPED_PACKAGE_VERSION.startsWith(`__`)?void 0:STAMPED_PACKAGE_VERSION}export{readStampedPackageVersion};
@@ -2,11 +2,11 @@ import type { UploadPolicy } from "#public/channels/upload-policy.js";
2
2
  /** The byte cap an upload policy sets; a disabled policy accepts nothing. */
3
3
  export declare function maxBytesOf(policy: UploadPolicy): number;
4
4
  /**
5
- * Reads a download's body, failing as soon as it passes `maxBytes`. Checks a
5
+ * Reads a download's or request's body, failing as soon as it passes `maxBytes`. Checks a
6
6
  * declared `content-length` first, then counts what streams in, so a body that
7
7
  * misstates or omits its length still stops at the limit.
8
8
  */
9
- export declare function readLimitedBytes(response: Response, maxBytes: number, adapterKind: string): Promise<Buffer>;
9
+ export declare function readLimitedBytes(response: Pick<Response, "body" | "headers">, maxBytes: number, adapterKind: string): Promise<Buffer>;
10
10
  /**
11
11
  * Wraps `fetch` so every response body fails once it passes `maxBytes`, for a
12
12
  * download that reads the body itself, such as a vendored client's.
@@ -1 +1 @@
1
- import{expectAgentToolExposure,expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getOptionalStringRecordProperty}from"#internal/authored-module.js";import{AGENT_WORKFLOW_RETENTION_VALUES,ANTHROPIC_PROMPT_CACHE_TTLS}from"#shared/agent-definition.js";import{isAgentReasoningDefinition}from"#internal/runtime-model.js";import{isDynamicSentinel}from"#dynamic/definition.js";function normalizeAgentDefinition(e,t){let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,[`build`,`compaction`,`defaultTools`,`description`,`experimental`,`limits`,`model`,`modelContextWindowTokens`,`modelOptions`,`reasoning`,`tool`],t),n.model===void 0)throw Error(`${t} The "model" field is required.`);let r={model:normalizeAgentModelDefinition(n.model,t)};if(isDynamicSentinel(r.model)&&(n.modelContextWindowTokens!==void 0||n.modelOptions!==void 0))throw Error(`${t} Dynamic model definitions do not support sibling "modelContextWindowTokens" or "modelOptions" fields. Return those overrides from the resolver selection instead.`);return n.description!==void 0&&(r.description=expectString(n.description,t)),n.defaultTools!==void 0&&(r.defaultTools=expectBoolean(n.defaultTools,t)),n.compaction!==void 0&&(r.compaction=normalizeAgentCompactionDefinition(n.compaction,t)),n.build!==void 0&&(r.build=normalizeAgentBuildDefinition(n.build,t)),n.experimental!==void 0&&(r.experimental=normalizeAgentExperimentalDefinition(n.experimental,t)),n.modelOptions!==void 0&&(r.modelOptions=normalizeAgentModelOptions(n.modelOptions,t)),n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.reasoning!==void 0&&(r.reasoning=normalizeAgentReasoningDefinition(n.reasoning,t)),n.tool!==void 0&&(r.tool=expectAgentToolExposure(n.tool,t)),n.limits!==void 0&&(r.limits=normalizeAgentLimitsDefinition(n.limits,t)),r}function normalizeAgentReasoningDefinition(e,t){if(!isAgentReasoningDefinition(e))throw Error(t);return e}function normalizeAgentModelDefinition(e,t){if(!isDynamicSentinel(e))return e;let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`events`,`kind`],t);let r=expectObjectRecord(n.events,t),i={};for(let[e,n]of Object.entries(r))i[e]=expectFunction(n,t);return{events:i,kind:n.kind}}function expectPositiveIntegerOrFalse(e,t){return e!==!1&&expectPositiveInteger(e,t)}function expectPositiveNumberOrFalse(e,t){if(e===!1)return!1;if(typeof e!=`number`||!Number.isFinite(e)||e<=0)throw Error(t);return e}function normalizeAgentLimitsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`maxInputTokensPerSession`,`maxOutputTokensPerSession`,`maxTokenCostUsdPerSession`,`sessionTimeoutMs`],t);let r={};return n.sessionTimeoutMs!==void 0&&(r.sessionTimeoutMs=expectPositiveIntegerOrFalse(n.sessionTimeoutMs,t)),n.maxInputTokensPerSession!==void 0&&(r.maxInputTokensPerSession=expectPositiveIntegerOrFalse(n.maxInputTokensPerSession,t)),n.maxOutputTokensPerSession!==void 0&&(r.maxOutputTokensPerSession=expectPositiveIntegerOrFalse(n.maxOutputTokensPerSession,t)),n.maxTokenCostUsdPerSession!==void 0&&(r.maxTokenCostUsdPerSession=expectPositiveNumberOrFalse(n.maxTokenCostUsdPerSession,t)),r}function normalizeAgentBuildDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`externalDependencies`],t);let r={};if(n.externalDependencies!==void 0){if(!Array.isArray(n.externalDependencies))throw Error(t);r.externalDependencies=Object.freeze(n.externalDependencies.map(e=>expectString(e,t)))}return r}function normalizeAgentWorkflowDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`modelCallsPerStep`,`retention`,`world`],t);let r={};return n.modelCallsPerStep!==void 0&&(r.modelCallsPerStep=expectPositiveInteger(n.modelCallsPerStep,t)),n.retention!==void 0&&(r.retention=normalizeAgentWorkflowRetentionDefinition(n.retention,t)),n.world!==void 0&&(r.world=normalizeAgentWorkflowWorldDefinition(n.world,t)),r}function normalizeAgentWorkflowRetentionDefinition(e,t){let n=AGENT_WORKFLOW_RETENTION_VALUES.find(t=>t===e);if(n===void 0){let e=AGENT_WORKFLOW_RETENTION_VALUES.map(e=>JSON.stringify(e)).join(` or `);throw Error(`${t} "experimental.workflow.retention" must be ${e}.`)}return n}function normalizeAgentWorkflowWorldDefinition(e,t){let n=expectString(e,t);if(n.trim()===``)throw Error(`${t} "experimental.workflow.world" must be a non-empty package name.`);return n}function normalizeAgentExperimentalDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`workflow`],t);let r={};return n.workflow!==void 0&&(r.workflow=normalizeAgentWorkflowDefinition(n.workflow,t)),r}function normalizeAgentModelOptions(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`promptCache`,`providerOptions`],t);let r={};return n.providerOptions!==void 0&&(r.providerOptions=expectProviderOptions(n.providerOptions,t)),n.promptCache!==void 0&&(r.promptCache=normalizeAgentPromptCache(n.promptCache,t)),r}function normalizeAgentPromptCache(e,t){let n=expectObjectRecord(e,`${t} "modelOptions.promptCache" must be an object.`);if(expectOnlyKnownKeys(n,[`anthropic`],`${t} In "modelOptions.promptCache":`),n.anthropic===void 0)return{};let r=expectObjectRecord(n.anthropic,`${t} "modelOptions.promptCache.anthropic" must be an object.`);expectOnlyKnownKeys(r,[`ttl`],`${t} In "modelOptions.promptCache.anthropic":`);let i=r.ttl;if(i===void 0)return{anthropic:{}};if(!ANTHROPIC_PROMPT_CACHE_TTLS.includes(i))throw Error(`${t} "modelOptions.promptCache.anthropic.ttl" must be "5m" or "1h"; received ${JSON.stringify(i)}.`);return{anthropic:{ttl:i}}}function normalizeAgentCompactionDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`model`,`modelContextWindowTokens`,`thresholdPercent`],t);let r={};if(n.model!==void 0){if(isDynamicSentinel(n.model))throw Error(`${t} "compaction.model" does not support defineDynamic — provide a static model.`);r.model=n.model}if(n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.thresholdPercent!==void 0){let e=n.thresholdPercent;if(typeof e!=`number`||!Number.isFinite(e)||e<0||e>1)throw Error(t);r.thresholdPercent=e}return r}function normalizeInstructionsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`content`,`markdown`,`role`],t);let r=Object.hasOwn(n,`content`),i=Object.hasOwn(n,`markdown`);if(r===i)throw Error(`${t} Provide exactly one of "content" or "markdown".`);if(i){if(Object.hasOwn(n,`role`))throw Error(`${t} The deprecated "markdown" shape does not support "role".`);return{content:expectString(n.markdown,t),role:`system`}}let a=n.role===void 0?`system`:expectString(n.role,t);if(a!==`system`&&a!==`user`)throw Error(`${t} Expected "role" to be one of: system, user.`);return{content:expectString(n.content,t),role:a}}function normalizeSkillDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`deferred`,`description`,`files`,`license`,`markdown`,`metadata`],t);let r={description:expectString(n.description,t),markdown:expectString(n.markdown,t)};n.deferred!==void 0&&(r.deferred=expectBoolean(n.deferred,t));let i=n.license,a=getOptionalStringRecordProperty(n,`metadata`,t);return i!==void 0&&(r.license=expectString(i,t)),a!==void 0&&(r.metadata=a),n.files!==void 0&&(r.files=normalizeSkillFiles(n.files,t)),r}function normalizeSkillFiles(e,t){let n=expectObjectRecord(e,t),r={};for(let[e,i]of Object.entries(n)){if(typeof i==`string`||i instanceof Uint8Array){r[e]=i;continue}throw Error(`${t} Expected skill file "${e}" to be a string or Uint8Array.`)}return r}function normalizeScheduleDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`cron`,`markdown`,`run`],t);let r=expectString(n.cron,t),i=n.markdown!==void 0,a=n.run!==void 0;if(i&&a)throw Error(`${t} Pass either "markdown" (fire-and-forget) or "run" (handler) — not both.`);if(!i&&!a)throw Error(`${t} Must provide either "markdown" (fire-and-forget) or "run" (handler).`);let o={cron:r};return i?o.markdown=expectString(n.markdown,t):o.run=expectFunction(n.run,t),o}export{normalizeAgentDefinition,normalizeAgentPromptCache,normalizeInstructionsDefinition,normalizeScheduleDefinition,normalizeSkillDefinition};
1
+ import{expectAgentToolExposure,expectBoolean,expectFunction,expectObjectRecord,expectOnlyKnownKeys,expectPositiveInteger,expectProviderOptions,expectString,getOptionalStringRecordProperty}from"#internal/authored-module.js";import{AGENT_WORKFLOW_RETENTION_VALUES,ANTHROPIC_PROMPT_CACHE_TTLS}from"#shared/agent-definition.js";import{isAgentReasoningDefinition}from"#internal/runtime-model.js";import{isDynamicSentinel}from"#dynamic/definition.js";function normalizeAgentDefinition(e,t){let n=expectObjectRecord(e,t);if(expectOnlyKnownKeys(n,[`build`,`compaction`,`defaultTools`,`description`,`experimental`,`limits`,`model`,`modelContextWindowTokens`,`modelOptions`,`reasoning`,`tool`],t),n.model===void 0)throw Error(`${t} The "model" field is required.`);let r={model:normalizeAgentModelDefinition(n.model,t)};if(isDynamicSentinel(r.model)&&(n.modelContextWindowTokens!==void 0||n.modelOptions!==void 0))throw Error(`${t} Dynamic model definitions do not support sibling "modelContextWindowTokens" or "modelOptions" fields. Return those overrides from the resolver selection instead.`);return n.description!==void 0&&(r.description=expectString(n.description,t)),n.defaultTools!==void 0&&(r.defaultTools=expectBoolean(n.defaultTools,t)),n.compaction!==void 0&&(r.compaction=normalizeAgentCompactionDefinition(n.compaction,t)),n.build!==void 0&&(r.build=normalizeAgentBuildDefinition(n.build,t)),n.experimental!==void 0&&(r.experimental=normalizeAgentExperimentalDefinition(n.experimental,t)),n.modelOptions!==void 0&&(r.modelOptions=normalizeAgentModelOptions(n.modelOptions,t)),n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.reasoning!==void 0&&(r.reasoning=normalizeAgentReasoningDefinition(n.reasoning,t)),n.tool!==void 0&&(r.tool=expectAgentToolExposure(n.tool,t)),n.limits!==void 0&&(r.limits=normalizeAgentLimitsDefinition(n.limits,t)),r}function normalizeAgentReasoningDefinition(e,t){if(!isAgentReasoningDefinition(e))throw Error(t);return e}function normalizeAgentModelDefinition(e,t){if(!isDynamicSentinel(e))return e;let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`events`,`kind`],t);let r=expectObjectRecord(n.events,t),i={};for(let[e,n]of Object.entries(r))i[e]=expectFunction(n,t);return{events:i,kind:n.kind}}function expectPositiveIntegerOrFalse(e,t){return e!==!1&&expectPositiveInteger(e,t)}function normalizeAgentLimitsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`sessionTimeoutMs`,`sessionUsage`],t);let r={};return n.sessionTimeoutMs!==void 0&&(r.sessionTimeoutMs=expectPositiveIntegerOrFalse(n.sessionTimeoutMs,t)),n.sessionUsage!==void 0&&(r.sessionUsage=expectFunction(n.sessionUsage,t)),r}function normalizeAgentBuildDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`externalDependencies`],t);let r={};if(n.externalDependencies!==void 0){if(!Array.isArray(n.externalDependencies))throw Error(t);r.externalDependencies=Object.freeze(n.externalDependencies.map(e=>expectString(e,t)))}return r}function normalizeAgentWorkflowDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`modelCallsPerStep`,`retention`,`world`],t);let r={};return n.modelCallsPerStep!==void 0&&(r.modelCallsPerStep=expectPositiveInteger(n.modelCallsPerStep,t)),n.retention!==void 0&&(r.retention=normalizeAgentWorkflowRetentionDefinition(n.retention,t)),n.world!==void 0&&(r.world=normalizeAgentWorkflowWorldDefinition(n.world,t)),r}function normalizeAgentWorkflowRetentionDefinition(e,t){let n=AGENT_WORKFLOW_RETENTION_VALUES.find(t=>t===e);if(n===void 0){let e=AGENT_WORKFLOW_RETENTION_VALUES.map(e=>JSON.stringify(e)).join(` or `);throw Error(`${t} "experimental.workflow.retention" must be ${e}.`)}return n}function normalizeAgentWorkflowWorldDefinition(e,t){let n=expectString(e,t);if(n.trim()===``)throw Error(`${t} "experimental.workflow.world" must be a non-empty package name.`);return n}function normalizeAgentExperimentalDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`workflow`],t);let r={};return n.workflow!==void 0&&(r.workflow=normalizeAgentWorkflowDefinition(n.workflow,t)),r}function normalizeAgentModelOptions(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`promptCache`,`providerOptions`],t);let r={};return n.providerOptions!==void 0&&(r.providerOptions=expectProviderOptions(n.providerOptions,t)),n.promptCache!==void 0&&(r.promptCache=normalizeAgentPromptCache(n.promptCache,t)),r}function normalizeAgentPromptCache(e,t){let n=expectObjectRecord(e,`${t} "modelOptions.promptCache" must be an object.`);if(expectOnlyKnownKeys(n,[`anthropic`],`${t} In "modelOptions.promptCache":`),n.anthropic===void 0)return{};let r=expectObjectRecord(n.anthropic,`${t} "modelOptions.promptCache.anthropic" must be an object.`);expectOnlyKnownKeys(r,[`ttl`],`${t} In "modelOptions.promptCache.anthropic":`);let i=r.ttl;if(i===void 0)return{anthropic:{}};if(!ANTHROPIC_PROMPT_CACHE_TTLS.includes(i))throw Error(`${t} "modelOptions.promptCache.anthropic.ttl" must be "5m" or "1h"; received ${JSON.stringify(i)}.`);return{anthropic:{ttl:i}}}function normalizeAgentCompactionDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`model`,`modelContextWindowTokens`,`thresholdPercent`],t);let r={};if(n.model!==void 0){if(isDynamicSentinel(n.model))throw Error(`${t} "compaction.model" does not support defineDynamic — provide a static model.`);r.model=n.model}if(n.modelContextWindowTokens!==void 0&&(r.modelContextWindowTokens=expectPositiveInteger(n.modelContextWindowTokens,t)),n.thresholdPercent!==void 0){let e=n.thresholdPercent;if(typeof e!=`number`||!Number.isFinite(e)||e<0||e>1)throw Error(t);r.thresholdPercent=e}return r}function normalizeInstructionsDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`content`,`markdown`,`role`],t);let r=Object.hasOwn(n,`content`),i=Object.hasOwn(n,`markdown`);if(r===i)throw Error(`${t} Provide exactly one of "content" or "markdown".`);if(i){if(Object.hasOwn(n,`role`))throw Error(`${t} The deprecated "markdown" shape does not support "role".`);return{content:expectString(n.markdown,t),role:`system`}}let a=n.role===void 0?`system`:expectString(n.role,t);if(a!==`system`&&a!==`user`)throw Error(`${t} Expected "role" to be one of: system, user.`);return{content:expectString(n.content,t),role:a}}function normalizeSkillDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`deferred`,`description`,`files`,`license`,`markdown`,`metadata`],t);let r={description:expectString(n.description,t),markdown:expectString(n.markdown,t)};n.deferred!==void 0&&(r.deferred=expectBoolean(n.deferred,t));let i=n.license,a=getOptionalStringRecordProperty(n,`metadata`,t);return i!==void 0&&(r.license=expectString(i,t)),a!==void 0&&(r.metadata=a),n.files!==void 0&&(r.files=normalizeSkillFiles(n.files,t)),r}function normalizeSkillFiles(e,t){let n=expectObjectRecord(e,t),r={};for(let[e,i]of Object.entries(n)){if(typeof i==`string`||i instanceof Uint8Array){r[e]=i;continue}throw Error(`${t} Expected skill file "${e}" to be a string or Uint8Array.`)}return r}function normalizeScheduleDefinition(e,t){let n=expectObjectRecord(e,t);expectOnlyKnownKeys(n,[`cron`,`markdown`,`run`],t);let r=expectString(n.cron,t),i=n.markdown!==void 0,a=n.run!==void 0;if(i&&a)throw Error(`${t} Pass either "markdown" (fire-and-forget) or "run" (handler) — not both.`);if(!i&&!a)throw Error(`${t} Must provide either "markdown" (fire-and-forget) or "run" (handler).`);let o={cron:r};return i?o.markdown=expectString(n.markdown,t):o.run=expectFunction(n.run,t),o}export{normalizeAgentDefinition,normalizeAgentPromptCache,normalizeInstructionsDefinition,normalizeScheduleDefinition,normalizeSkillDefinition};
@@ -0,0 +1,13 @@
1
+ /** Rolldown options shared by every authored module bundle of one package. */
2
+ export declare function createAuthoredModuleBuildOptions(input: {
3
+ readonly packageBoundaryPlugin: Record<string, unknown>;
4
+ readonly packageRoot: string;
5
+ readonly plugins: readonly (object | null)[];
6
+ }): Record<string, unknown>;
7
+ /**
8
+ * Source maps for bundles evaluated in this process. Node reads inline maps only
9
+ * when source maps are enabled; otherwise V8 retains the map comment as part of
10
+ * every imported module's source text, often most of its size.
11
+ */
12
+ export declare function evaluatedBundleSourcemap(): "inline" | false;
13
+ export declare function resolveAuthoredTsConfigPath(packageRoot: string): string | false;
@@ -0,0 +1 @@
1
+ import{existsSync}from"node:fs";import{join}from"node:path";import{createAuthoredAssetImportPlugin}from"#internal/authored-asset-import-plugin.js";import{authoredModuleConditions}from"#internal/authored-module-conditions.js";import{RESOLVE_EXTENSIONS}from"#internal/authored-package-boundary.js";import{createAuthoredPackageTsConfigPathsPlugin}from"#internal/authored-package-tsconfig-paths.js";import{createAuthoredRelativeExtensionResolverPlugin}from"#internal/authored-relative-extension-resolver.js";import{createNodeEsmCompatBannerPlugin}from"#internal/node-esm-compat-banner.js";function createAuthoredModuleBuildOptions(e){return{cwd:e.packageRoot,platform:`node`,plugins:[...e.plugins,createAuthoredRelativeExtensionResolverPlugin({extensions:RESOLVE_EXTENSIONS}),createAuthoredAssetImportPlugin({packageRoot:e.packageRoot}),createAuthoredPackageTsConfigPathsPlugin({appPackageRoot:e.packageRoot,extensions:RESOLVE_EXTENSIONS}),createNodeEsmCompatBannerPlugin({includeRequire:!0}),e.packageBoundaryPlugin].filter(e=>e!==null),resolve:{conditionNames:authoredModuleConditions(),extensions:[...RESOLVE_EXTENSIONS]},tsconfig:resolveAuthoredTsConfigPath(e.packageRoot)}}function evaluatedBundleSourcemap(){return process.sourceMapsEnabled?`inline`:!1}function resolveAuthoredTsConfigPath(e){for(let t of[`tsconfig.json`,`jsconfig.json`]){let n=join(e,t);if(existsSync(n))return n}return!1}export{createAuthoredModuleBuildOptions,evaluatedBundleSourcemap,resolveAuthoredTsConfigPath};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Writes a content-addressed bundle into the authored-module cache, or marks an
3
+ * existing one as used by this process so {@link pruneAuthoredModuleCache} keeps it.
4
+ */
5
+ export declare function writeAuthoredModuleCacheFile(directoryPath: string, fileName: string, code: string): string;
6
+ /**
7
+ * Removes cached bundles that no running process can still import. Runs in the
8
+ * background: callers should not await it, and it never rejects.
9
+ */
10
+ export declare function pruneAuthoredModuleCache(): Promise<void>;
@@ -0,0 +1 @@
1
+ import{randomUUID}from"node:crypto";import{readFile,readdir,stat,unlink}from"node:fs/promises";import{mkdirSync,renameSync,statSync,unlinkSync,utimesSync,writeFileSync}from"node:fs";import{join}from"node:path";import{hostname}from"node:os";import{setImmediate}from"node:timers/promises";const LEASE_DIRECTORY_NAME=`.leases`,leases=new Map;let heartbeat,pruning;function writeAuthoredModuleCacheFile(e,t,n){registerLease(e);let r=join(e,t);try{let e=new Date;utimesSync(r,e,e)}catch(t){if(t.code!==`ENOENT`)return replaceFile(r,n),r;try{writeFileSync(r,n)}catch(t){if(t.code!==`ENOENT`)throw t;leases.delete(e),registerLease(e),writeFileSync(r,n)}}return r}function pruneAuthoredModuleCache(){return pruning??=pruneLeasedDirectories().finally(()=>{pruning=void 0}),pruning}function registerLease(e){if(leases.has(e))return;let t={host:hostname(),pid:process.pid,since:Date.now()},n=join(e,LEASE_DIRECTORY_NAME,`${process.pid}-${randomUUID()}.json`);leases.set(e,{path:n,lease:t});try{writeLease(n,t)}catch{}heartbeat===void 0&&(heartbeat=setInterval(refreshLeases,6e4).unref(),process.once(`exit`,releaseLeases))}function writeLease(e,t){mkdirSync(join(e,`..`),{recursive:!0}),writeFileSync(e,JSON.stringify(t))}function refreshLeases(){let e=new Date;for(let{path:t,lease:n}of leases.values())try{utimesSync(t,e,e)}catch{try{writeLease(t,n)}catch{}}}function releaseLeases(){for(let{path:e}of leases.values())try{unlinkSync(e)}catch{}}function replaceFile(e,t){let n=`${e}.${randomUUID()}.tmp`;try{writeFileSync(n,t),renameSync(n,e)}catch{try{unlinkSync(n)}catch{}}}async function pruneLeasedDirectories(){for(let[e,{path:t,lease:n}]of leases)try{await pruneDirectory(e,t,n.since)}catch{}}async function pruneDirectory(e,t,n){let r=await findOldestLiveLease(join(e,LEASE_DIRECTORY_NAME),t,n)-6e4;for(let t of await readdir(e)){if(!t.endsWith(`.mjs`)&&!t.endsWith(`.tmp`))continue;let n=join(e,t);try{statSync(n).mtimeMs<r&&unlinkSync(n)}catch{}await setImmediate()}}async function findOldestLiveLease(e,t,n){let r=n;for(let n of await readdir(e).catch(()=>[])){let i=join(e,n);if(i===t)continue;let a=await readLiveLeaseSince(i);a===void 0?await unlink(i).catch(()=>void 0):r=Math.min(r,a)}return r}async function readLiveLeaseSince(e){let t=(await stat(e).catch(()=>void 0))?.mtimeMs;if(t===void 0||Date.now()-t>6e5)return;let n=parseLease(await readFile(e,`utf8`).catch(()=>void 0));if(n===void 0)return t;if(n.host!==hostname()||isRunning(n.pid))return Math.min(n.since,t)}function parseLease(e){if(e!==void 0)try{let t=JSON.parse(e);return typeof t.host==`string`&&typeof t.pid==`number`&&typeof t.since==`number`?t:void 0}catch{return}}function isRunning(e){try{return process.kill(e,0),!0}catch(e){return e.code===`EPERM`}}export{pruneAuthoredModuleCache,writeAuthoredModuleCacheFile};
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Bundles a compile's application modules as one code-split graph per set of
3
+ * external dependencies, so a module they share is evaluated once, as in the
4
+ * runtime module map. A module bundled on its own evaluates a private copy of
5
+ * everything it imports.
6
+ */
7
+ export interface AuthoredModuleGraph {
8
+ /** Returns the graph entry file for `modulePath`, or `undefined` to bundle it alone. */
9
+ entryPath(modulePath: string, externalDependencies: readonly string[]): Promise<string | undefined>;
10
+ }
11
+ export declare function createAuthoredModuleGraph(modulePaths: readonly string[], options?: {
12
+ readonly appRoot?: string;
13
+ }): AuthoredModuleGraph;
@@ -0,0 +1 @@
1
+ import{join,resolve}from"node:path";import{AUTHORED_BUNDLED_MODULE_EXTENSION,AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH,createAuthoredWorkflowDirectivePlugin,resolveAuthoredPackageRoot}from"#internal/authored-module-loader.js";import{writeAuthoredModuleCacheFile}from"#internal/authored-module-cache.js";import{createRuntimeLoaderPackageBoundaryPlugin,normalizeExternalDependencies}from"#internal/authored-package-boundary.js";import{buildWithNitroRolldown}from"#internal/bundler/nitro-rolldown.js";import{createAuthoredModuleBuildOptions,evaluatedBundleSourcemap}from"#internal/authored-module-build-options.js";function createAuthoredModuleGraph(e,t={}){let n=[...new Set(e.map(e=>resolve(e)))].filter(e=>AUTHORED_BUNDLED_MODULE_EXTENSION.test(e)),r=new Map;return{async entryPath(e,i){let a=normalizeExternalDependencies(i),o=a.join(`\0`),s=r.get(o);return s===void 0&&(s=writeAuthoredModuleGraph(n,a,t.appRoot).catch(()=>void 0),r.set(o,s)),(await s)?.get(resolve(e))}}}async function writeAuthoredModuleGraph(e,t,n){let r=new Map;if(e.length===0)return r;let i=resolveAuthoredPackageRoot(e[0]),a=new Map(e.filter(e=>resolveAuthoredPackageRoot(e)===i).map((e,t)=>[`entry-${t}`,e])),o=evaluatedBundleSourcemap(),s=o===!1?`[name]-[hash].mjs`:`[name]-[hash]-mapped.mjs`,c=await buildWithNitroRolldown({...createAuthoredModuleBuildOptions({packageBoundaryPlugin:createRuntimeLoaderPackageBoundaryPlugin({externalDependencies:[...t],packageRoot:i}),packageRoot:i,plugins:[createAuthoredWorkflowDirectivePlugin({appRoot:n??i})]}),input:Object.fromEntries(a),preserveEntrySignatures:`strict`,write:!1,output:{chunkFileNames:s,codeSplitting:!0,comments:!1,entryFileNames:s,format:`esm`,sourcemap:o}}),l=join(i,AUTHORED_MODULE_BUNDLE_DIRECTORY_PATH);for(let e of c.output){if(e.type!==`chunk`)continue;let t=writeAuthoredModuleCacheFile(l,e.fileName,e.code),n=e.isEntry?a.get(e.name):void 0;n!==void 0&&r.set(n,t)}return r}export{createAuthoredModuleGraph};