eve 0.65.0 → 0.66.1

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 (748) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/README.md +1 -2
  3. package/dist/src/_virtual/_rolldown/runtime.js +1 -1
  4. package/dist/src/channel/forwarded-principal.d.ts +26 -6
  5. package/dist/src/channel/forwarded-principal.js +1 -1
  6. package/dist/src/chunks/{use-eve-agent-BIouJCii.js → use-eve-agent-Di1u2zKu.js} +266 -5
  7. package/dist/src/chunks/{use-eve-agent-BRvEh9sO.js → use-eve-agent-PbSMyJ6e.js} +266 -5
  8. package/dist/src/cli/commands/extension-build.js +1 -1
  9. package/dist/src/cli/commands/registry-project.d.ts +2 -1
  10. package/dist/src/cli/commands/registry-project.js +2 -2
  11. package/dist/src/cli/commands/registry.js +1 -1
  12. package/dist/src/cli/commands/trace-detail.d.ts +5 -25
  13. package/dist/src/cli/commands/trace-detail.js +1 -1
  14. package/dist/src/cli/commands/trace.js +2 -2
  15. package/dist/src/cli/dev/run-interactive-ui.js +1 -1
  16. package/dist/src/cli/dev/tui/argument-typeahead.d.ts +36 -0
  17. package/dist/src/cli/dev/tui/argument-typeahead.js +2 -0
  18. package/dist/src/cli/dev/tui/blocks.js +1 -1
  19. package/dist/src/cli/dev/tui/prompt-command-handler.js +1 -1
  20. package/dist/src/cli/dev/tui/prompt-commands.js +1 -1
  21. package/dist/src/cli/dev/tui/registry-result-message.js +1 -1
  22. package/dist/src/cli/dev/tui/runner.d.ts +3 -0
  23. package/dist/src/cli/dev/tui/runner.js +1 -1
  24. package/dist/src/cli/dev/tui/setup-commands.d.ts +5 -9
  25. package/dist/src/cli/dev/tui/setup-commands.js +1 -2
  26. package/dist/src/cli/dev/tui/setup-flow.d.ts +0 -3
  27. package/dist/src/cli/dev/tui/setup-panel.d.ts +14 -0
  28. package/dist/src/cli/dev/tui/setup-panel.js +4 -4
  29. package/dist/src/cli/dev/tui/subagent-pump.d.ts +2 -10
  30. package/dist/src/cli/dev/tui/subagent-pump.js +1 -1
  31. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +3 -0
  32. package/dist/src/cli/dev/tui/terminal-renderer.js +10 -11
  33. package/dist/src/cli/dev/tui/test/fake-setup-flow-renderer.js +1 -1
  34. package/dist/src/cli/dev/tui/traces/trace-conversation.js +1 -1
  35. package/dist/src/cli/dev/tui/tui.js +1 -1
  36. package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.d.ts +1 -1
  37. package/dist/src/cli/dev/tui/vercel-trusted-sources.js +1 -1
  38. package/dist/src/cli/invoke/result.d.ts +1 -1
  39. package/dist/src/cli/invoke/result.js +1 -1
  40. package/dist/src/cli/telemetry/preference.js +1 -1
  41. package/dist/src/client/client-error.js +1 -1
  42. package/dist/src/client/index.d.ts +1 -3
  43. package/dist/src/client/index.js +1 -1
  44. package/dist/src/client/open-stream.d.ts +3 -2
  45. package/dist/src/client/open-stream.js +1 -1
  46. package/dist/src/client/session.d.ts +16 -1
  47. package/dist/src/client/session.js +1 -1
  48. package/dist/src/compiled/.vendor-stamp.json +4 -2
  49. package/dist/src/compiled/@agentclientprotocol/sdk/index.js +2 -51
  50. package/dist/src/compiled/@ai-sdk/anthropic/index.js +2 -2
  51. package/dist/src/compiled/@ai-sdk/google/index.js +7 -7
  52. package/dist/src/compiled/@ai-sdk/mcp/index.js +1 -1
  53. package/dist/src/compiled/@ai-sdk/openai/index.js +4 -4
  54. package/dist/src/compiled/@ai-sdk/otel/index.js +1 -1
  55. package/dist/src/compiled/@cfworker/json-schema/index.d.ts +18 -0
  56. package/dist/src/compiled/@cfworker/json-schema/index.js +2 -0
  57. package/dist/src/compiled/@modelcontextprotocol/server/index.js +9 -58
  58. package/dist/src/compiled/@opentelemetry/api/index.js +1 -1
  59. package/dist/src/compiled/@opentelemetry/otlp-transformer/index.js +1 -1
  60. package/dist/src/compiled/@photon-ai/chat-adapter-imessage/index.js +55 -55
  61. package/dist/src/compiled/@vercel/blob/index.js +14 -36
  62. package/dist/src/compiled/@vercel/oidc/index.js +6 -28
  63. package/dist/src/compiled/@vercel/otel/index.js +1 -1
  64. package/dist/src/compiled/@vercel/sandbox/index.js +13 -13
  65. package/dist/src/compiled/@vercel/sdk/LICENSE +201 -0
  66. package/dist/src/compiled/@vercel/sdk/index.d.ts +41 -0
  67. package/dist/src/compiled/@vercel/sdk/index.js +1 -0
  68. package/dist/src/compiled/@workflow/core/index.js +1 -1
  69. package/dist/src/compiled/@workflow/core/private.js +1 -1
  70. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  71. package/dist/src/compiled/@workflow/core/runtime.js +2 -2
  72. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  73. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  74. package/dist/src/compiled/@workflow/errors/index.js +1 -1
  75. package/dist/src/compiled/@workflow/world-local/index.js +5 -5
  76. package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
  77. package/dist/src/compiled/_chunks/client/core-CspsxXR-.js +52 -0
  78. package/dist/src/compiled/_chunks/client/rolldown-runtime-DK3Fl9T5.js +1 -0
  79. package/dist/src/compiled/_chunks/node/auth-Dztlx9pE.js +2 -0
  80. package/dist/src/compiled/_chunks/workflow/{attribute-changes-DFx4eluc.js → attribute-changes-89Nwz7XW.js} +1 -1
  81. package/dist/src/compiled/_chunks/workflow/{chunk-5MU5Z6L3-CrYztnvh.js → chunk-5MU5Z6L3-z9-dfnHp.js} +1 -1
  82. package/dist/src/compiled/_chunks/workflow/{chunk-NWCAEW5Y-ClfmNvkQ.js → chunk-NWCAEW5Y-8afLJrun.js} +1 -1
  83. package/dist/src/compiled/_chunks/workflow/{dist-C3919PVU.js → dist-C3ZE62yI.js} +3 -3
  84. package/dist/src/compiled/_chunks/workflow/dist-CNT2vjZ4.js +1 -0
  85. package/dist/src/compiled/_chunks/workflow/{dist-xTushGCp.js → dist-DtXwQbZr.js} +1 -1
  86. package/dist/src/compiled/_chunks/workflow/{esm-DyLz8Egm.js → esm-DtrPCf49.js} +1 -1
  87. package/dist/src/compiled/_chunks/workflow/{experimental-evaluation-D8_K_Pe9.js → experimental-evaluation-Dm32egEG.js} +2 -2
  88. package/dist/src/compiled/_chunks/workflow/frames-DnrfSd1P.js +3 -0
  89. package/dist/src/compiled/_chunks/workflow/{functions-C06vHfWP.js → functions-DpZiBxgQ.js} +1 -1
  90. package/dist/src/compiled/_chunks/workflow/{getMachineId-bsd-WEBNKY2R-DcIEvZzd.js → getMachineId-bsd-WEBNKY2R-D5OkV-EY.js} +1 -1
  91. package/dist/src/compiled/_chunks/workflow/{getMachineId-darwin-LT47KAXP-C4nRhfn9.js → getMachineId-darwin-LT47KAXP-BqwKrkSO.js} +1 -1
  92. package/dist/src/compiled/_chunks/workflow/{getMachineId-linux-LTVQO6VW-BqQf2T4W.js → getMachineId-linux-LTVQO6VW-CJlbJ4KP.js} +1 -1
  93. package/dist/src/compiled/_chunks/workflow/{getMachineId-unsupported-UKWBA27G-oYffWhib.js → getMachineId-unsupported-UKWBA27G-C4Y3-LZG.js} +1 -1
  94. package/dist/src/compiled/_chunks/workflow/{getMachineId-win-NLJKOPY6-CpL96LtN.js → getMachineId-win-NLJKOPY6-CsPs71SE.js} +1 -1
  95. package/dist/src/compiled/_chunks/workflow/{global-DFW-hO6M.js → global-DIlFoH2w.js} +1 -1
  96. package/dist/src/compiled/_chunks/workflow/{helpers-Bw52uyzw.js → helpers-k3zcudWr.js} +1 -1
  97. package/dist/src/compiled/_chunks/workflow/{logger-DFNCa8Nl.js → logger-Bzc8jWWj.js} +1 -1
  98. package/dist/src/compiled/_chunks/workflow/resume-hook-BmJ263ZR.js +1 -0
  99. package/dist/src/compiled/_chunks/workflow/{rolldown-runtime-DPpTSio4.js → rolldown-runtime-B_knIduE.js} +1 -1
  100. package/dist/src/compiled/_chunks/workflow/{run-BT6SQv5f.js → run-NLvREued.js} +1 -1
  101. package/dist/src/compiled/_chunks/workflow/{serialization-Cl0SYU0I.js → serialization-HCDeQWcR.js} +2 -2
  102. package/dist/src/compiled/_chunks/workflow/{signal-exit-B9U6kH7R.js → signal-exit-DZKTacNU.js} +1 -1
  103. package/dist/src/compiled/_chunks/workflow/sleep-Bi508qmg.js +1 -0
  104. package/dist/src/compiled/_chunks/workflow/{token-CrFhCmWs.js → token-1wSBbi5N.js} +1 -1
  105. package/dist/src/compiled/_chunks/workflow/{token-U5XEWlVM.js → token-BhlnqoHM.js} +1 -1
  106. package/dist/src/compiled/_chunks/workflow/{token-util-BkqzD0OM.js → token-util-Cm4Ec1Bg.js} +1 -1
  107. package/dist/src/compiled/_chunks/workflow/token-util-DaeRTzDa.js +5 -0
  108. package/dist/src/compiled/_chunks/workflow/{wait-until-Dzhr6tzf.js → wait-until-DXLZx3tU.js} +1 -1
  109. package/dist/src/compiled/_chunks/workflow/{wrapper-CKui_eTd.js → wrapper-CzrF_dmI.js} +3 -3
  110. package/dist/src/compiled/_chunks/workflow/ws-transport-BSM_Cl7a.js +1 -0
  111. package/dist/src/compiled/jose/index.js +1 -1
  112. package/dist/src/compiled/zod/index.js +1 -51
  113. package/dist/src/compiled/zod/v3.js +1 -0
  114. package/dist/src/compiled/zod/v4/core.js +1 -0
  115. package/dist/src/compiled/zod-validation-error/index.js +1 -1
  116. package/dist/src/compiler/extension-compatibility.d.ts +20 -14
  117. package/dist/src/compiler/extension-compatibility.js +1 -1
  118. package/dist/src/context/build-base-tool-context.js +1 -1
  119. package/dist/src/context/build-callback-context.js +1 -1
  120. package/dist/src/context/dynamic-skill-lifecycle.d.ts +3 -3
  121. package/dist/src/context/dynamic-skill-lifecycle.js +1 -1
  122. package/dist/src/context/keys.d.ts +18 -4
  123. package/dist/src/context/keys.js +1 -1
  124. package/dist/src/context/session-context.d.ts +5 -4
  125. package/dist/src/evals/session.d.ts +3 -2
  126. package/dist/src/evals/session.js +1 -1
  127. package/dist/src/evals/types.d.ts +8 -2
  128. package/dist/src/eve-channel/index.js +1 -1
  129. package/dist/src/eve-channel/types.d.ts +12 -4
  130. package/dist/src/execution/cancel-indexed-session-tasks-step.js +1 -1
  131. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  132. package/dist/src/execution/proxied-deliver-step.js +1 -1
  133. package/dist/src/execution/route-child-delivery.js +2 -2
  134. package/dist/src/execution/sandbox/bindings/docker-templates.d.ts +6 -0
  135. package/dist/src/execution/sandbox/bindings/docker-templates.js +1 -1
  136. package/dist/src/execution/sandbox/bindings/docker.d.ts +6 -2
  137. package/dist/src/execution/sandbox/bindings/docker.js +1 -1
  138. package/dist/src/execution/sandbox/bindings/just-bash-runtime.d.ts +2 -2
  139. package/dist/src/execution/sandbox/bindings/just-bash.d.ts +2 -2
  140. package/dist/src/execution/sandbox/bindings/local-provider-utils.js +1 -1
  141. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +7 -2
  142. package/dist/src/execution/sandbox/bindings/microsandbox.d.ts +6 -2
  143. package/dist/src/execution/sandbox/bindings/vercel.d.ts +6 -3
  144. package/dist/src/execution/sandbox/bindings/vercel.js +1 -1
  145. package/dist/src/execution/sandbox/ensure.js +1 -1
  146. package/dist/src/execution/sandbox/logging-session.js +2 -2
  147. package/dist/src/execution/sandbox/provider-host.js +1 -1
  148. package/dist/src/execution/sandbox/session.d.ts +5 -2
  149. package/dist/src/execution/sandbox/session.js +1 -1
  150. package/dist/src/execution/session/admission.js +1 -1
  151. package/dist/src/execution/session/event-sink.d.ts +7 -13
  152. package/dist/src/execution/session/event-sink.js +1 -1
  153. package/dist/src/execution/session/finalization.js +1 -1
  154. package/dist/src/execution/session/handoff-steps.js +1 -1
  155. package/dist/src/execution/session/handoff.d.ts +2 -2
  156. package/dist/src/execution/session/handoff.js +1 -1
  157. package/dist/src/execution/session/input-queue.d.ts +12 -10
  158. package/dist/src/execution/session/input-queue.js +1 -1
  159. package/dist/src/execution/session/next-input.js +1 -1
  160. package/dist/src/execution/session/program.js +1 -1
  161. package/dist/src/execution/session/turn-step-result.d.ts +3 -1
  162. package/dist/src/execution/session/turn-step-result.js +1 -1
  163. package/dist/src/execution/session/turn-step-types.d.ts +7 -2
  164. package/dist/src/execution/session/turn-step.js +1 -1
  165. package/dist/src/execution/session/turn.js +1 -1
  166. package/dist/src/execution/settle-cancelled-turn-step.js +1 -1
  167. package/dist/src/execution/skills/instructions.d.ts +6 -8
  168. package/dist/src/execution/skills/instructions.js +2 -2
  169. package/dist/src/execution/tasks/parent/control-shared.js +1 -1
  170. package/dist/src/execution/tasks/parent/dispatch.js +1 -1
  171. package/dist/src/execution/tasks/parent/hitl-proxy-steps.d.ts +1 -0
  172. package/dist/src/execution/tasks/parent/hitl-proxy-steps.js +1 -1
  173. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  174. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  175. package/dist/src/execution/tools/agent-router.d.ts +1 -2
  176. package/dist/src/execution/tools/agent-router.js +1 -1
  177. package/dist/src/execution/tools/ask-question-workflow.js +1 -1
  178. package/dist/src/execution/tools/ask-question.d.ts +17 -18
  179. package/dist/src/execution/tools/ask-question.js +2 -2
  180. package/dist/src/execution/tools/connection-search.js +1 -1
  181. package/dist/src/execution/tools/load-skill.d.ts +9 -5
  182. package/dist/src/execution/tools/load-skill.js +1 -1
  183. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  184. package/dist/src/execution/tools/sleep.d.ts +8 -9
  185. package/dist/src/execution/tools/sleep.js +1 -1
  186. package/dist/src/execution/tools/subagent/accept-event-step.js +1 -1
  187. package/dist/src/execution/tools/subagent/emit-event-step.d.ts +2 -1
  188. package/dist/src/execution/tools/subagent/emit-event-step.js +1 -1
  189. package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -1
  190. package/dist/src/execution/tools/subagent/invoke-step.js +1 -1
  191. package/dist/src/execution/tools/subagent/task-agent-requests.js +1 -1
  192. package/dist/src/execution/tools/subagent/task-cancel.d.ts +1 -1
  193. package/dist/src/execution/tools/subagent/task-cancel.js +1 -1
  194. package/dist/src/execution/tools/workflow/body.js +1 -1
  195. package/dist/src/extensions/code/extension/extension.d.ts +57 -0
  196. package/dist/src/extensions/code/extension/extension.js +1 -0
  197. package/dist/src/extensions/code/extension/hooks/authenticate.d.ts +2 -0
  198. package/dist/src/extensions/code/extension/hooks/authenticate.js +1 -0
  199. package/dist/src/extensions/code/extension/instructions.md +87 -0
  200. package/dist/src/extensions/code/extension/lib/command-failure.d.ts +7 -0
  201. package/dist/src/extensions/code/extension/lib/command-failure.js +2 -0
  202. package/dist/src/extensions/code/extension/lib/computer-use-driver-source.d.ts +14 -0
  203. package/dist/src/extensions/code/extension/lib/computer-use-driver-source.js +1309 -0
  204. package/dist/src/extensions/code/extension/lib/computer-use-sandbox.d.ts +9 -0
  205. package/dist/src/extensions/code/extension/lib/computer-use-sandbox.js +120 -0
  206. package/dist/src/extensions/code/extension/lib/computer-use.d.ts +36 -0
  207. package/dist/src/extensions/code/extension/lib/computer-use.js +78 -0
  208. package/dist/src/extensions/code/extension/lib/connect-authentication.d.ts +7 -0
  209. package/dist/src/extensions/code/extension/lib/connect-authentication.js +1 -0
  210. package/dist/src/extensions/code/extension/lib/credentials.d.ts +13 -0
  211. package/dist/src/extensions/code/extension/lib/credentials.js +3 -0
  212. package/dist/src/extensions/code/extension/lib/diagnostics.d.ts +30 -0
  213. package/dist/src/extensions/code/extension/lib/diagnostics.js +6 -0
  214. package/dist/src/extensions/code/extension/lib/generated-paths.d.ts +18 -0
  215. package/dist/src/extensions/code/extension/lib/generated-paths.js +2 -0
  216. package/dist/src/extensions/code/extension/lib/github-shell-schema.d.ts +11 -0
  217. package/dist/src/extensions/code/extension/lib/github-shell-schema.js +1 -0
  218. package/dist/src/extensions/code/extension/lib/github-shell.d.ts +53 -0
  219. package/dist/src/extensions/code/extension/lib/github-shell.js +1 -0
  220. package/dist/src/extensions/code/extension/lib/grep-search.d.ts +61 -0
  221. package/dist/src/extensions/code/extension/lib/grep-search.js +6 -0
  222. package/dist/src/extensions/code/extension/lib/guidelines.d.ts +25 -0
  223. package/dist/src/extensions/code/extension/lib/guidelines.js +2 -0
  224. package/dist/src/extensions/code/extension/lib/patch.d.ts +35 -0
  225. package/dist/src/extensions/code/extension/lib/patch.js +20 -0
  226. package/dist/src/extensions/code/extension/lib/prwatch-github.d.ts +70 -0
  227. package/dist/src/extensions/code/extension/lib/prwatch-github.js +1 -0
  228. package/dist/src/extensions/code/extension/lib/prwatch-registry.d.ts +27 -0
  229. package/dist/src/extensions/code/extension/lib/prwatch-registry.js +1 -0
  230. package/dist/src/extensions/code/extension/lib/prwatch.d.ts +2 -0
  231. package/dist/src/extensions/code/extension/lib/prwatch.js +1 -0
  232. package/dist/src/extensions/code/extension/lib/repository-root.d.ts +4 -0
  233. package/dist/src/extensions/code/extension/lib/repository-root.js +1 -0
  234. package/dist/src/extensions/code/extension/lib/sandbox.d.ts +12 -0
  235. package/dist/src/extensions/code/extension/lib/sandbox.js +2 -0
  236. package/dist/src/extensions/code/extension/lib/shell.d.ts +1 -0
  237. package/dist/src/extensions/code/extension/lib/shell.js +1 -0
  238. package/dist/src/extensions/code/extension/lib/signed-commit.d.ts +2 -0
  239. package/dist/src/extensions/code/extension/lib/signed-commit.js +130 -0
  240. package/dist/src/extensions/code/extension/lib/tooling.d.ts +27 -0
  241. package/dist/src/extensions/code/extension/lib/tooling.js +92 -0
  242. package/dist/src/extensions/code/extension/skills/investigate/SKILL.md +30 -0
  243. package/dist/src/extensions/code/extension/skills/lookup-agent-run/SKILL.md +29 -0
  244. package/dist/src/extensions/code/extension/skills/pr/SKILL.md +53 -0
  245. package/dist/src/extensions/code/extension/skills/review/SKILL.md +21 -0
  246. package/dist/src/extensions/code/extension/subagents/worker/agent.d.ts +17 -0
  247. package/dist/src/extensions/code/extension/subagents/worker/agent.js +1 -0
  248. package/dist/src/extensions/code/extension/subagents/worker/instructions.md +20 -0
  249. package/dist/src/extensions/code/extension/subagents/worker/sandbox.d.ts +2 -0
  250. package/dist/src/extensions/code/extension/subagents/worker/sandbox.js +1 -0
  251. package/dist/src/extensions/code/extension/subagents/worker/tools/glob.d.ts +1 -0
  252. package/dist/src/extensions/code/extension/subagents/worker/tools/glob.js +1 -0
  253. package/dist/src/extensions/code/extension/subagents/worker/tools/grep.d.ts +1 -0
  254. package/dist/src/extensions/code/extension/subagents/worker/tools/grep.js +1 -0
  255. package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.d.ts +2 -0
  256. package/dist/src/extensions/code/extension/subagents/worker/tools/load_skill.js +1 -0
  257. package/dist/src/extensions/code/extension/subagents/worker/tools/read_file.d.ts +1 -0
  258. package/dist/src/extensions/code/extension/subagents/worker/tools/read_file.js +1 -0
  259. package/dist/src/extensions/code/extension/subagents/worker/tools/web_fetch.d.ts +2 -0
  260. package/dist/src/extensions/code/extension/subagents/worker/tools/web_fetch.js +1 -0
  261. package/dist/src/extensions/code/extension/subagents/worker/tools/web_search.d.ts +2 -0
  262. package/dist/src/extensions/code/extension/subagents/worker/tools/web_search.js +1 -0
  263. package/dist/src/extensions/code/extension/subagents/worker/tools/write_file.d.ts +2 -0
  264. package/dist/src/extensions/code/extension/subagents/worker/tools/write_file.js +1 -0
  265. package/dist/src/extensions/code/extension/tools/apply_patch.d.ts +28 -0
  266. package/dist/src/extensions/code/extension/tools/apply_patch.js +2 -0
  267. package/dist/src/extensions/code/extension/tools/computer_use.d.ts +400 -0
  268. package/dist/src/extensions/code/extension/tools/computer_use.js +1 -0
  269. package/dist/src/extensions/code/extension/tools/gh.d.ts +27 -0
  270. package/dist/src/extensions/code/extension/tools/gh.js +1 -0
  271. package/dist/src/extensions/code/extension/tools/grep.d.ts +28 -0
  272. package/dist/src/extensions/code/extension/tools/grep.js +1 -0
  273. package/dist/src/extensions/code/tools.d.ts +4 -0
  274. package/dist/src/extensions/code/tools.js +1 -0
  275. package/dist/src/harness/compaction.js +1 -1
  276. package/dist/src/harness/final-output.js +1 -1
  277. package/dist/src/harness/input-extraction.js +1 -1
  278. package/dist/src/harness/session-limit-enforcement.js +1 -1
  279. package/dist/src/harness/tool-loop.js +2 -2
  280. package/dist/src/harness/tools.js +1 -1
  281. package/dist/src/harness/turn-tag-state.d.ts +2 -2
  282. package/dist/src/harness/workflow-tool-runs.d.ts +33 -5
  283. package/dist/src/harness/workflow-tool-runs.js +1 -1
  284. package/dist/src/internal/application/optional-package-import.d.ts +9 -0
  285. package/dist/src/internal/application/optional-package-import.js +1 -0
  286. package/dist/src/internal/application/optional-package-install.d.ts +1 -5
  287. package/dist/src/internal/application/optional-package-install.js +2 -2
  288. package/dist/src/internal/application/package.js +1 -1
  289. package/dist/src/internal/nitro/host/build-extension.js +1 -1
  290. package/dist/src/internal/nitro/host/extension-build-lock.d.ts +9 -0
  291. package/dist/src/internal/nitro/host/extension-build-lock.js +1 -0
  292. package/dist/src/internal/nitro/host/prepare-application-host.d.ts +5 -4
  293. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  294. package/dist/src/internal/nitro/host/types.d.ts +2 -2
  295. package/dist/src/internal/nitro/host/workspace-extensions.d.ts +31 -0
  296. package/dist/src/internal/nitro/host/workspace-extensions.js +1 -0
  297. package/dist/src/node_modules/.pnpm/@vercel_cli-config@0.2.7/node_modules/@vercel/cli-config/dist/index.js +21 -0
  298. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/envpath.js +1 -0
  299. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/errors.js +2 -0
  300. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/errutils.js +1 -0
  301. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/exec.js +1 -0
  302. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/fsutils.js +1 -0
  303. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/index.js +1 -0
  304. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/lookup.js +1 -0
  305. package/dist/src/node_modules/.pnpm/@vercel_cli-exec@1.0.1/node_modules/@vercel/cli-exec/dist/safety.js +1 -0
  306. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/authorization.js +1 -0
  307. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/connector.js +1 -0
  308. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/index.js +1 -0
  309. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/installation.js +1 -0
  310. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/base-url.js +1 -0
  311. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/default-scopes.js +1 -0
  312. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/env.js +1 -0
  313. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/internal/url-validation.js +1 -0
  314. package/dist/src/node_modules/.pnpm/@vercel_connect@2.2.0_@ai-sdk_mcp@2.0.52_zod@4.5.4__@auth_core@0.41.2_@chat-adapter_sla_37d5e4f23f0f03cba2e0819e67e81b38/node_modules/@vercel/connect/dist/token.js +1 -0
  315. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/auth-errors.js +1 -0
  316. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/exchange-vercel-oidc-token.js +1 -0
  317. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/get-context.js +1 -0
  318. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-sync.js +1 -0
  319. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/get-vercel-oidc-token-with-refresh.js +2 -0
  320. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/index.js +1 -0
  321. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/oauth.js +1 -0
  322. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token-error.js +1 -0
  323. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token-io.js +1 -0
  324. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token-util.js +2 -0
  325. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/token.js +1 -0
  326. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/verify-vercel-oidc-token.js +1 -0
  327. package/dist/src/node_modules/.pnpm/@vercel_oidc@3.8.8/node_modules/@vercel/oidc/dist/version.js +1 -0
  328. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/index.js +1 -0
  329. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/enoent.js +1 -0
  330. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/parse.js +1 -0
  331. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/escape.js +1 -0
  332. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/readShebang.js +1 -0
  333. package/dist/src/node_modules/.pnpm/cross-spawn@7.0.6/node_modules/cross-spawn/lib/util/resolveCommand.js +1 -0
  334. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/index.js +1 -0
  335. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/command.js +1 -0
  336. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/error.js +2 -0
  337. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/kill.js +1 -0
  338. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/promise.js +1 -0
  339. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stdio.js +1 -0
  340. package/dist/src/node_modules/.pnpm/execa@5.1.1/node_modules/execa/lib/stream.js +1 -0
  341. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/buffer-stream.js +1 -0
  342. package/dist/src/node_modules/.pnpm/get-stream@6.0.1/node_modules/get-stream/index.js +1 -0
  343. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/core.js +1 -0
  344. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/main.js +1 -0
  345. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/realtime.js +1 -0
  346. package/dist/src/node_modules/.pnpm/human-signals@2.1.0/node_modules/human-signals/build/src/signals.js +1 -0
  347. package/dist/src/node_modules/.pnpm/is-stream@2.0.1/node_modules/is-stream/index.js +1 -0
  348. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/index.js +1 -0
  349. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/mode.js +1 -0
  350. package/dist/src/node_modules/.pnpm/isexe@2.0.0/node_modules/isexe/windows.js +1 -0
  351. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/index.js +1 -0
  352. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/decrypt.js +1 -0
  353. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/compact/encrypt.js +1 -0
  354. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/decrypt.js +1 -0
  355. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/flattened/encrypt.js +1 -0
  356. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/decrypt.js +1 -0
  357. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwe/general/encrypt.js +1 -0
  358. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/embedded.js +1 -0
  359. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwk/thumbprint.js +1 -0
  360. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/local.js +1 -0
  361. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwks/remote.js +1 -0
  362. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/sign.js +1 -0
  363. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/compact/verify.js +1 -0
  364. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/sign.js +1 -0
  365. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/flattened/verify.js +1 -0
  366. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/sign.js +1 -0
  367. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jws/general/verify.js +1 -0
  368. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/decrypt.js +1 -0
  369. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/encrypt.js +1 -0
  370. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/produce.js +1 -0
  371. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/sign.js +1 -0
  372. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/unsecured.js +1 -0
  373. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/jwt/verify.js +1 -0
  374. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/export.js +1 -0
  375. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_key_pair.js +1 -0
  376. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/generate_secret.js +1 -0
  377. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/key/import.js +1 -0
  378. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/aesgcmkw.js +1 -0
  379. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/buffer_utils.js +1 -0
  380. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/cek.js +1 -0
  381. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_iv_length.js +1 -0
  382. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_key_type.js +1 -0
  383. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/check_p2s.js +1 -0
  384. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/crypto_key.js +1 -0
  385. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/decrypt_key_management.js +1 -0
  386. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/encrypt_key_management.js +1 -0
  387. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/epoch.js +1 -0
  388. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/invalid_key_input.js +1 -0
  389. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_disjoint.js +1 -0
  390. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_jwk.js +1 -0
  391. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/is_object.js +1 -0
  392. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/iv.js +1 -0
  393. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/jwt_claims_set.js +1 -0
  394. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/private_symbols.js +1 -0
  395. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/secs.js +1 -0
  396. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_algorithms.js +1 -0
  397. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/lib/validate_crit.js +1 -0
  398. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/aeskw.js +1 -0
  399. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/asn1.js +1 -0
  400. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/base64url.js +1 -0
  401. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/cbc_tag.js +1 -0
  402. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_cek_length.js +1 -0
  403. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/check_key_length.js +1 -0
  404. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ciphers.js +1 -0
  405. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/decrypt.js +1 -0
  406. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/digest.js +1 -0
  407. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/dsa_digest.js +1 -0
  408. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/ecdhes.js +1 -0
  409. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/encrypt.js +1 -0
  410. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/fetch_jwks.js +1 -0
  411. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/generate.js +1 -0
  412. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_named_curve.js +1 -0
  413. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/get_sign_verify_key.js +1 -0
  414. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/hmac_digest.js +1 -0
  415. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_like.js +1 -0
  416. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/is_key_object.js +1 -0
  417. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/jwk_to_key.js +1 -0
  418. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/key_to_jwk.js +1 -0
  419. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/node_key.js +1 -0
  420. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/normalize_key.js +1 -0
  421. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/pbes2kw.js +1 -0
  422. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/random.js +1 -0
  423. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/rsaes.js +1 -0
  424. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/runtime.js +1 -0
  425. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/sign.js +1 -0
  426. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/timing_safe_equal.js +1 -0
  427. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/verify.js +1 -0
  428. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/runtime/webcrypto.js +1 -0
  429. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/base64url.js +1 -0
  430. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_jwt.js +1 -0
  431. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/decode_protected_header.js +1 -0
  432. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/errors.js +1 -0
  433. package/dist/src/node_modules/.pnpm/jose@5.10.0/node_modules/jose/dist/node/cjs/util/runtime.js +1 -0
  434. package/dist/src/node_modules/.pnpm/merge-stream@2.0.0/node_modules/merge-stream/index.js +1 -0
  435. package/dist/src/node_modules/.pnpm/mimic-fn@2.1.0/node_modules/mimic-fn/index.js +1 -0
  436. package/dist/src/node_modules/.pnpm/npm-run-path@4.0.1/node_modules/npm-run-path/index.js +1 -0
  437. package/dist/src/node_modules/.pnpm/onetime@5.1.2/node_modules/onetime/index.js +1 -0
  438. package/dist/src/node_modules/.pnpm/path-key@3.1.1/node_modules/path-key/index.js +1 -0
  439. package/dist/src/node_modules/.pnpm/shebang-command@2.0.0/node_modules/shebang-command/index.js +1 -0
  440. package/dist/src/node_modules/.pnpm/shebang-regex@3.0.0/node_modules/shebang-regex/index.js +1 -0
  441. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/index.js +1 -0
  442. package/dist/src/node_modules/.pnpm/signal-exit@3.0.7/node_modules/signal-exit/signals.js +1 -0
  443. package/dist/src/node_modules/.pnpm/strip-final-newline@2.0.0/node_modules/strip-final-newline/index.js +2 -0
  444. package/dist/src/node_modules/.pnpm/which@2.0.2/node_modules/which/which.js +1 -0
  445. package/dist/src/public/channels/github/checkout.d.ts +7 -2
  446. package/dist/src/public/channels/github/checkout.js +1 -1
  447. package/dist/src/public/channels/github/defaults.js +1 -1
  448. package/dist/src/public/channels/slack/api-errors.d.ts +33 -0
  449. package/dist/src/public/channels/slack/api-errors.js +1 -0
  450. package/dist/src/public/channels/slack/api.js +1 -1
  451. package/dist/src/public/channels/slack/interaction-cards.js +1 -1
  452. package/dist/src/public/channels/slack/interactions.js +1 -1
  453. package/dist/src/public/definitions/sandbox.d.ts +1 -1
  454. package/dist/src/public/memory/file/provider.js +1 -1
  455. package/dist/src/public/next/index.d.ts +10 -7
  456. package/dist/src/public/next/index.js +1 -1
  457. package/dist/src/public/next/server.d.ts +3 -0
  458. package/dist/src/public/next/server.js +2 -2
  459. package/dist/src/public/sandbox/docker.d.ts +7 -0
  460. package/dist/src/public/sandbox/index.d.ts +1 -1
  461. package/dist/src/public/sandbox/microsandbox.d.ts +7 -0
  462. package/dist/src/public/sandbox/vercel.d.ts +7 -0
  463. package/dist/src/public/skills/index.d.ts +1 -2
  464. package/dist/src/runtime/connections/mcp-client.d.ts +0 -7
  465. package/dist/src/runtime/connections/mcp-client.js +1 -1
  466. package/dist/src/runtime/connections/openapi-client.d.ts +0 -3
  467. package/dist/src/runtime/connections/openapi-client.js +1 -1
  468. package/dist/src/runtime/workspace/seed-files.js +1 -1
  469. package/dist/src/sandbox/providers/docker.d.ts +4 -4
  470. package/dist/src/sandbox/providers/just-bash.d.ts +2 -2
  471. package/dist/src/sandbox/providers/microsandbox.d.ts +4 -4
  472. package/dist/src/sandbox/providers/vercel.d.ts +4 -3
  473. package/dist/src/sandbox/state.d.ts +2 -0
  474. package/dist/src/self-modification/config.d.ts +6 -0
  475. package/dist/src/self-modification/extension/config-schema.d.ts +25 -0
  476. package/dist/src/self-modification/extension/config-schema.js +1 -0
  477. package/dist/src/self-modification/extension/extension.d.ts +3 -47
  478. package/dist/src/self-modification/extension/extension.js +1 -1
  479. package/dist/src/self-modification/extension/local-only.d.ts +5 -0
  480. package/dist/src/self-modification/extension/local-only.js +1 -0
  481. package/dist/src/self-modification/extension/subagents/agent/instructions.js +6 -6
  482. package/dist/src/self-modification/extension/subagents/agent/skills/trace_analysis.d.ts +10 -0
  483. package/dist/src/self-modification/extension/subagents/agent/skills/trace_analysis.js +19 -0
  484. package/dist/src/self-modification/extension/subagents/agent/tools/inspect_trace.d.ts +128 -0
  485. package/dist/src/self-modification/extension/subagents/agent/tools/inspect_trace.js +1 -0
  486. package/dist/src/self-modification/extension/subagents/agent/tools/inspect_trace_spans.d.ts +80 -0
  487. package/dist/src/self-modification/extension/subagents/agent/tools/inspect_trace_spans.js +1 -0
  488. package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.js +1 -1
  489. package/dist/src/self-modification/extension/subagents/agent/tools/search_traces.d.ts +53 -0
  490. package/dist/src/self-modification/extension/subagents/agent/tools/search_traces.js +1 -0
  491. package/dist/src/self-modification/extension/trace-inspection.d.ts +15 -0
  492. package/dist/src/self-modification/extension/trace-inspection.js +1 -0
  493. package/dist/src/self-modification/git-workspace.d.ts +5 -1
  494. package/dist/src/self-modification/git.d.ts +5 -1
  495. package/dist/src/self-modification/sandbox.js +1 -1
  496. package/dist/src/services/dev-client/request-headers.d.ts +1 -1
  497. package/dist/src/services/dev-client/request-headers.js +1 -1
  498. package/dist/src/setup/ask.d.ts +2 -0
  499. package/dist/src/setup/ask.js +1 -1
  500. package/dist/src/setup/cli/option-row.d.ts +3 -1
  501. package/dist/src/setup/cli/option-row.js +1 -1
  502. package/dist/src/setup/flows/model-login.d.ts +4 -0
  503. package/dist/src/setup/flows/model-login.js +1 -1
  504. package/dist/src/setup/flows/model.d.ts +0 -108
  505. package/dist/src/setup/flows/model.js +1 -1
  506. package/dist/src/setup/integrations/discord/api.js +1 -1
  507. package/dist/src/setup/integrations/discord/connect.js +1 -1
  508. package/dist/src/setup/integrations/github/connect.js +1 -1
  509. package/dist/src/setup/integrations/linear/connect.js +1 -1
  510. package/dist/src/setup/integrations/linq/connect.js +1 -1
  511. package/dist/src/setup/integrations/photon/connect.js +1 -1
  512. package/dist/src/setup/integrations/teams/connect.js +1 -1
  513. package/dist/src/setup/integrations/web/setup.d.ts +15 -10
  514. package/dist/src/setup/integrations/web/setup.js +30 -1
  515. package/dist/src/setup/project-resolution.js +1 -1
  516. package/dist/src/setup/scaffold/create/project.js +2 -2
  517. package/dist/src/setup/scaffold/create/web-template.d.ts +7 -3
  518. package/dist/src/setup/scaffold/create/web-template.js +39 -20
  519. package/dist/src/setup/scaffold/update/channels.js +2 -2
  520. package/dist/src/setup/slack-connect.d.ts +1 -1
  521. package/dist/src/setup/slack-connect.js +1 -1
  522. package/dist/src/setup/vercel-api-failure.js +1 -1
  523. package/dist/src/setup/vercel-deployment.js +1 -1
  524. package/dist/src/setup/vercel-project-api.d.ts +1 -1
  525. package/dist/src/setup/vercel-project-api.js +1 -1
  526. package/dist/src/setup/vercel-project-framework.js +1 -1
  527. package/dist/src/setup/vercel-project.js +0 -0
  528. package/dist/src/shared/connection-types.d.ts +0 -2
  529. package/dist/src/shared/sandbox-network-policy.d.ts +5 -4
  530. package/dist/src/shared/sandbox-session.d.ts +0 -15
  531. package/dist/src/shared/skill-package.d.ts +3 -0
  532. package/dist/src/shared/skill-package.js +1 -1
  533. package/dist/src/subagents/parent-notification.d.ts +1 -1
  534. package/dist/src/subagents/remote-dispatch.d.ts +1 -0
  535. package/dist/src/subagents/remote-dispatch.js +1 -1
  536. package/dist/src/svelte/index.js +1 -1
  537. package/dist/src/svelte/use-eve-agent.js +1 -1
  538. package/dist/src/tasks/delivery-context.js +2 -2
  539. package/dist/src/tasks/json.d.ts +72 -2
  540. package/dist/src/tasks/json.js +1 -1
  541. package/dist/src/tasks/notification.d.ts +6 -0
  542. package/dist/src/tasks/notification.js +1 -1
  543. package/dist/src/tools/framework/agent-contract.d.ts +7 -6
  544. package/dist/src/tools/framework/agent-contract.js +1 -1
  545. package/dist/src/tools/framework/agent.d.ts +4 -13
  546. package/dist/src/tools/framework/task-cancel.d.ts +1 -17
  547. package/dist/src/tools/framework/task-contract.d.ts +16 -137
  548. package/dist/src/tools/framework/task-contract.js +1 -1
  549. package/dist/src/tools/provided/bash.d.ts +11 -12
  550. package/dist/src/tools/provided/bash.js +1 -1
  551. package/dist/src/tools/provided/glob.d.ts +13 -14
  552. package/dist/src/tools/provided/glob.js +1 -1
  553. package/dist/src/tools/provided/grep.d.ts +17 -18
  554. package/dist/src/tools/provided/grep.js +1 -1
  555. package/dist/src/tools/provided/read-file.d.ts +14 -15
  556. package/dist/src/tools/provided/read-file.js +1 -1
  557. package/dist/src/tools/provided/web-fetch.d.ts +13 -18
  558. package/dist/src/tools/provided/web-fetch.js +1 -1
  559. package/dist/src/tools/provided/workflow.js +1 -1
  560. package/dist/src/tools/provided/write-file.d.ts +10 -11
  561. package/dist/src/tools/provided/write-file.js +1 -1
  562. package/dist/src/tools/schema.d.ts +40 -10
  563. package/dist/src/tools/schema.js +1 -1
  564. package/dist/src/tracing/agent-trace-context-store.js +1 -1
  565. package/dist/src/tracing/local-trace-analysis.d.ts +51 -0
  566. package/dist/src/tracing/local-trace-analysis.js +1 -0
  567. package/dist/src/tracing/local-trace-discovery-index.d.ts +15 -0
  568. package/dist/src/tracing/local-trace-discovery-index.js +1 -0
  569. package/dist/src/tracing/local-trace-operations.d.ts +13 -0
  570. package/dist/src/tracing/local-trace-operations.js +1 -0
  571. package/dist/src/tracing/local-trace-query.d.ts +17 -0
  572. package/dist/src/tracing/local-trace-query.js +1 -0
  573. package/dist/src/tracing/local-trace-span-processor.js +1 -1
  574. package/dist/src/tracing/local-trace-summary.d.ts +31 -0
  575. package/dist/src/tracing/local-trace-summary.js +1 -0
  576. package/dist/src/vue/index.js +1 -1
  577. package/dist/src/vue/use-eve-agent.js +1 -1
  578. package/docs/README.md +1 -1
  579. package/docs/channels/slack.mdx +1 -1
  580. package/docs/concepts/project-structure.mdx +2 -4
  581. package/docs/concepts/sessions-runs-and-streaming.md +2 -2
  582. package/docs/connections/overview.mdx +1 -1
  583. package/docs/evals/cases.mdx +1 -0
  584. package/docs/extensions.md +7 -1
  585. package/docs/getting-started.mdx +1 -1
  586. package/docs/guides/auth-and-route-protection.md +33 -1
  587. package/docs/guides/client/streaming.mdx +26 -0
  588. package/docs/guides/deployment/vercel.mdx +9 -5
  589. package/docs/guides/dev-tui.md +1 -1
  590. package/docs/guides/dynamic-capabilities.md +2 -0
  591. package/docs/guides/frontend/nextjs.mdx +20 -7
  592. package/docs/guides/frontend/overview.mdx +1 -1
  593. package/docs/guides/hooks.md +6 -3
  594. package/docs/guides/instrumentation/agent-runs.mdx +101 -0
  595. package/docs/guides/instrumentation/instrumentation.mdx +2 -1
  596. package/docs/guides/instrumentation/meta.json +1 -1
  597. package/docs/guides/instrumentation/migration.md +5 -1
  598. package/docs/guides/instrumentation/otel.mdx +8 -27
  599. package/docs/guides/remote-agents.md +3 -1
  600. package/docs/guides/self-modification.md +37 -0
  601. package/docs/guides/session-context.md +11 -13
  602. package/docs/install-integrations.mdx +2 -2
  603. package/docs/meta.json +1 -0
  604. package/docs/reference/cli.md +2 -2
  605. package/docs/reference/typescript-api.md +1 -2
  606. package/docs/sandbox/index.mdx +11 -0
  607. package/docs/skills.mdx +3 -10
  608. package/docs/subagents/index.mdx +9 -3
  609. package/docs/tools/overview.mdx +7 -1
  610. package/docs/tools/workflows.mdx +1 -1
  611. package/package.json +30 -1
  612. package/dist/src/cli/dev/tui/model-picker.d.ts +0 -50
  613. package/dist/src/cli/dev/tui/model-picker.js +0 -1
  614. package/dist/src/compiled/_chunks/client/errors-Cd0_QQdM.js +0 -2
  615. package/dist/src/compiled/_chunks/node/auth-DDrvYko5.js +0 -2
  616. package/dist/src/compiled/_chunks/node/schemas-g-rLPCNX.js +0 -50
  617. package/dist/src/compiled/_chunks/workflow/coerce-D0oqvQ_w.js +0 -1
  618. package/dist/src/compiled/_chunks/workflow/dist-DjECvUyK.js +0 -2
  619. package/dist/src/compiled/_chunks/workflow/frames-D_Q-7A1N.js +0 -3
  620. package/dist/src/compiled/_chunks/workflow/resume-hook-BhA_nDEV.js +0 -1
  621. package/dist/src/compiled/_chunks/workflow/schemas-4CmFgxN_.js +0 -50
  622. package/dist/src/compiled/_chunks/workflow/sleep-DB4AH9-A.js +0 -1
  623. package/dist/src/compiled/_chunks/workflow/token-util-pP4KRRl0.js +0 -27
  624. package/dist/src/compiled/_chunks/workflow/ws-transport-BpTMh40s.js +0 -1
  625. package/dist/src/internal/nitro/host/dev-workspace-extensions.d.ts +0 -18
  626. package/dist/src/internal/nitro/host/dev-workspace-extensions.js +0 -1
  627. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/lib/primitives.js +0 -1
  628. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/lib/schemas.js +0 -1
  629. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/aclaction.js +0 -1
  630. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/sdkvalidationerror.js +0 -1
  631. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectblock.js +0 -1
  632. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/models/updateprojectprojectsbranchmatcher.js +0 -1
  633. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/defaultToZeroValue.js +0 -1
  634. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/fp.js +0 -1
  635. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/primitives.js +0 -1
  636. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/rfcdate.js +0 -1
  637. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/smartUnion.js +0 -1
  638. package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.8/node_modules/@vercel/sdk/esm/types/unrecognized.js +0 -1
  639. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/index.js +0 -1
  640. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/ZodError.js +0 -1
  641. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/errors.js +0 -1
  642. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/external.js +0 -1
  643. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/errorUtil.js +0 -1
  644. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/parseUtil.js +0 -1
  645. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/typeAliases.js +0 -1
  646. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/helpers/util.js +0 -1
  647. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/index.js +0 -1
  648. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/locales/en.js +0 -1
  649. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v3/types.js +0 -1
  650. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/checks.js +0 -1
  651. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/coerce.js +0 -1
  652. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/compat.js +0 -1
  653. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/deep-partial.js +0 -1
  654. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/errors.js +0 -1
  655. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/external.js +0 -1
  656. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/from-json-schema.js +0 -1
  657. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/in-out.js +0 -1
  658. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/iso.js +0 -1
  659. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/parse.js +0 -1
  660. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/classic/schemas.js +0 -1
  661. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/api.js +0 -1
  662. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/checks.js +0 -1
  663. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/compile.js +0 -2
  664. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/core.js +0 -1
  665. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/doc.js +0 -3
  666. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/errors.js +0 -2
  667. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/index.js +0 -1
  668. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/json-schema-generator.js +0 -1
  669. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/json-schema-processors.js +0 -1
  670. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/json-schema.js +0 -1
  671. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/memoizer.js +0 -1
  672. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/parse.js +0 -1
  673. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/regexes.js +0 -1
  674. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/registries.js +0 -1
  675. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/schemas.js +0 -46
  676. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/to-json-schema.js +0 -3
  677. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/util.js +0 -1
  678. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/versions.js +0 -1
  679. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/core/visit.js +0 -1
  680. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ar.js +0 -1
  681. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/az.js +0 -1
  682. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/be.js +0 -1
  683. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/bg.js +0 -1
  684. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/bn.js +0 -1
  685. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ca.js +0 -1
  686. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ckb.js +0 -1
  687. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/cs.js +0 -1
  688. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/da.js +0 -1
  689. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/de.js +0 -1
  690. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/el.js +0 -1
  691. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/en.js +0 -1
  692. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/eo.js +0 -1
  693. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/es.js +0 -1
  694. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fa.js +0 -1
  695. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fi.js +0 -1
  696. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fr-CA.js +0 -1
  697. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/fr.js +0 -1
  698. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/gu.js +0 -1
  699. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/he.js +0 -1
  700. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hi.js +0 -1
  701. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hr.js +0 -1
  702. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hu.js +0 -1
  703. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/hy.js +0 -1
  704. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/id.js +0 -1
  705. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/index.js +0 -1
  706. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/is.js +0 -1
  707. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/it.js +0 -1
  708. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ja.js +0 -1
  709. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ka.js +0 -1
  710. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/kh.js +0 -1
  711. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/km.js +0 -1
  712. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/kn.js +0 -1
  713. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ko.js +0 -1
  714. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/lt.js +0 -1
  715. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/mk.js +0 -1
  716. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ms.js +0 -1
  717. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ne.js +0 -1
  718. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/nl.js +0 -1
  719. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/nn.js +0 -1
  720. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/no.js +0 -1
  721. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ota.js +0 -1
  722. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/pl.js +0 -1
  723. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ps.js +0 -1
  724. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/pt-BR.js +0 -1
  725. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/pt.js +0 -1
  726. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ro.js +0 -1
  727. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ru.js +0 -1
  728. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/sk.js +0 -1
  729. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/sl.js +0 -1
  730. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/sv.js +0 -1
  731. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ta.js +0 -1
  732. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/th.js +0 -1
  733. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/tk.js +0 -1
  734. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/tr.js +0 -1
  735. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ua.js +0 -1
  736. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/uk.js +0 -1
  737. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/ur.js +0 -1
  738. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/uz.js +0 -1
  739. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/vi.js +0 -1
  740. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/yo.js +0 -1
  741. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/zh-CN.js +0 -1
  742. package/dist/src/node_modules/.pnpm/zod@4.5.4/node_modules/zod/v4/locales/zh-TW.js +0 -1
  743. package/dist/src/runtime/skills/sandbox-access.d.ts +0 -22
  744. package/dist/src/runtime/skills/sandbox-access.js +0 -1
  745. package/dist/src/shared/skill-types.d.ts +0 -22
  746. package/dist/src/shared/skill-types.js +0 -1
  747. package/dist/src/tasks/session-task-cohorts.d.ts +0 -7
  748. package/dist/src/tasks/session-task-cohorts.js +0 -1
@@ -2,6 +2,7 @@ import { onMount } from "svelte";
2
2
  import { createSubscriber } from "svelte/reactivity";
3
3
  import { z } from "#compiled/zod/index.js";
4
4
  import { asSchema } from "ai";
5
+ import { Validator } from "#compiled/@cfworker/json-schema/index.js";
5
6
 
6
7
  //#region src/protocol/routes.ts
7
8
  const EVE_ROUTE_PREFIX = "/eve/v1";
@@ -546,6 +547,8 @@ var ClientError = class extends Error {
546
547
  body;
547
548
  headers;
548
549
  constructor(status, body, headers) {
550
+ const normalizedHeaders = Object.freeze(Object.fromEntries(new Headers(headers).entries()));
551
+ const contentType = normalizedHeaders["content-type"]?.toLowerCase();
549
552
  let message = body || `Server returned ${status}.`;
550
553
  let code;
551
554
  try {
@@ -554,13 +557,15 @@ var ClientError = class extends Error {
554
557
  if (typeof parsed.error === "string") message = parsed.error;
555
558
  if (typeof parsed.code === "string") code = parsed.code;
556
559
  }
557
- } catch {}
560
+ } catch {
561
+ if (contentType?.includes("text/html")) message = `Server returned ${status} with an HTML response. Check the eve route and development server configuration.`;
562
+ }
558
563
  super(message);
559
564
  this.name = "ClientError";
560
565
  this.code = code;
561
566
  this.status = status;
562
567
  this.body = body;
563
- this.headers = Object.freeze(Object.fromEntries(new Headers(headers).entries()));
568
+ this.headers = normalizedHeaders;
564
569
  }
565
570
  };
566
571
 
@@ -1184,7 +1189,7 @@ async function openStreamBody(input) {
1184
1189
  if (input.requestTailIndex === true) searchParams.includeTailIndex = "1";
1185
1190
  for (let attempt = 0; attempt < openRetryPolicy.maxAttempts; attempt += 1) {
1186
1191
  input.signal?.throwIfAborted();
1187
- const url = createClientUrl(input.host, createEveSessionStreamRoutePath(input.sessionId), Object.keys(searchParams).length > 0 ? searchParams : void 0);
1192
+ const url = createClientUrl(input.host, input.path, Object.keys(searchParams).length > 0 ? searchParams : void 0);
1188
1193
  const headers = await input.resolveHeaders();
1189
1194
  input.signal?.throwIfAborted();
1190
1195
  const connectionController = new AbortController();
@@ -1437,7 +1442,22 @@ const JSON_SCHEMA_TARGET = "draft-07";
1437
1442
  function serializeOutputSchema(source) {
1438
1443
  return serializeSchema(source, "output");
1439
1444
  }
1440
- const UNSPECIFIED_INPUT_SCHEMA = z.fromJSONSchema({});
1445
+ function defineJsonSchema(schema, check) {
1446
+ const emit = () => structuredClone(schema);
1447
+ const toolSchema = { "~standard": {
1448
+ version: 1,
1449
+ vendor: "eve",
1450
+ validate: createJsonSchemaValidator(schema, check),
1451
+ jsonSchema: {
1452
+ input: emit,
1453
+ output: emit
1454
+ }
1455
+ } };
1456
+ plainJsonSchemas.add(toolSchema);
1457
+ return toolSchema;
1458
+ }
1459
+ const plainJsonSchemas = /* @__PURE__ */ new WeakSet();
1460
+ const UNSPECIFIED_INPUT_SCHEMA = defineJsonSchema({});
1441
1461
  function serializeSchema(source, direction) {
1442
1462
  if (source === null || source === void 0) return source;
1443
1463
  return toJsonObject(source, direction);
@@ -1464,6 +1484,231 @@ function getStandardSchemaProperties(value) {
1464
1484
  const standard = value["~standard"];
1465
1485
  return typeof standard === "object" && standard !== null ? standard : void 0;
1466
1486
  }
1487
+ function createJsonSchemaValidator(schema, check) {
1488
+ let validator;
1489
+ let warned = false;
1490
+ const passThrough = (value, reason) => {
1491
+ if (!warned) {
1492
+ warned = true;
1493
+ console.warn(`[eve] Tool schema cannot validate values locally; passing them through unvalidated: ${reason}`);
1494
+ }
1495
+ return { value };
1496
+ };
1497
+ return (value) => {
1498
+ if (validator === void 0) {
1499
+ const built = buildValidator(schema);
1500
+ if (typeof built === "string") {
1501
+ validator = null;
1502
+ return passThrough(value, built);
1503
+ }
1504
+ validator = built;
1505
+ }
1506
+ if (validator === null) return { value };
1507
+ let result;
1508
+ try {
1509
+ result = validator.validate(value);
1510
+ } catch (error) {
1511
+ if (value === void 0) return { issues: [{ message: "Expected a JSON value." }] };
1512
+ return passThrough(value, toErrorMessage(error));
1513
+ }
1514
+ if (!result.valid) return { issues: toIssues(result.errors) };
1515
+ const filled = applyDefaults(schema, schema, value);
1516
+ const message = check?.(filled);
1517
+ return message === void 0 ? { value: filled } : { issues: [{ message }] };
1518
+ };
1519
+ }
1520
+ function applyDefaults(root, schema, value) {
1521
+ let result = value;
1522
+ for (const node of followRefs(root, schema)) {
1523
+ const { items, properties } = node;
1524
+ if (isObject(result) && isObject(properties)) result = fillProperties(root, properties, result);
1525
+ else if (Array.isArray(result) && isObject(items)) {
1526
+ const list = result;
1527
+ const next = list.map((item) => applyDefaults(root, items, item));
1528
+ if (next.some((item, index) => item !== list[index])) result = next;
1529
+ }
1530
+ }
1531
+ return result;
1532
+ }
1533
+ function fillProperties(root, properties, value) {
1534
+ let result = value;
1535
+ for (const [key, property] of Object.entries(properties)) {
1536
+ const current = Object.hasOwn(value, key) ? value[key] : void 0;
1537
+ const next = current === void 0 ? findDefault(root, property) : applyDefaults(root, property, current);
1538
+ if (next === current) continue;
1539
+ if (result === value) result = { ...value };
1540
+ result[key] = next;
1541
+ }
1542
+ return result;
1543
+ }
1544
+ function findDefault(root, schema) {
1545
+ for (const node of followRefs(root, schema)) if ("default" in node) return structuredClone(node.default);
1546
+ }
1547
+ function* followRefs(root, schema) {
1548
+ const seen = /* @__PURE__ */ new Set();
1549
+ let node = schema;
1550
+ while (isObject(node) && !seen.has(node)) {
1551
+ seen.add(node);
1552
+ yield node;
1553
+ node = resolveLocalRef(root, node.$ref);
1554
+ }
1555
+ }
1556
+ function resolveLocalRef(root, ref) {
1557
+ if (typeof ref !== "string" || ref !== "#" && !ref.startsWith("#/")) return void 0;
1558
+ let node = root;
1559
+ for (const segment of decodePointer(ref)) {
1560
+ if (typeof node !== "object" || node === null || !Object.hasOwn(node, segment)) return;
1561
+ node = node[segment];
1562
+ }
1563
+ return node;
1564
+ }
1565
+ function buildValidator(schema) {
1566
+ try {
1567
+ const copy = structuredClone(schema);
1568
+ return prepareForValidation(copy) ?? new Validator(copy, "2020-12", false);
1569
+ } catch (error) {
1570
+ return toErrorMessage(error);
1571
+ }
1572
+ }
1573
+ const JSON_TYPES = /* @__PURE__ */ new Set([
1574
+ "array",
1575
+ "boolean",
1576
+ "integer",
1577
+ "null",
1578
+ "number",
1579
+ "object",
1580
+ "string"
1581
+ ]);
1582
+ const EXCLUSIVE_BOUNDS = [["exclusiveMinimum", "minimum"], ["exclusiveMaximum", "maximum"]];
1583
+ const SUBSCHEMA_KEYWORDS = [
1584
+ "additionalItems",
1585
+ "additionalProperties",
1586
+ "contains",
1587
+ "else",
1588
+ "if",
1589
+ "not",
1590
+ "propertyNames",
1591
+ "then",
1592
+ "unevaluatedItems",
1593
+ "unevaluatedProperties"
1594
+ ];
1595
+ const SUBSCHEMA_LIST_KEYWORDS = [
1596
+ "allOf",
1597
+ "anyOf",
1598
+ "oneOf",
1599
+ "prefixItems"
1600
+ ];
1601
+ const SUBSCHEMA_MAP_KEYWORDS = [
1602
+ "$defs",
1603
+ "definitions",
1604
+ "dependencies",
1605
+ "dependentSchemas",
1606
+ "patternProperties",
1607
+ "properties"
1608
+ ];
1609
+ function prepareForValidation(schema) {
1610
+ if (typeof schema === "boolean") return void 0;
1611
+ if (typeof schema !== "object" || schema === null || Array.isArray(schema)) return "a subschema is neither an object nor a boolean";
1612
+ const node = schema;
1613
+ delete node.format;
1614
+ for (const [flag, bound] of EXCLUSIVE_BOUNDS) {
1615
+ if (typeof node[flag] !== "boolean") continue;
1616
+ if (node[flag] && typeof node[bound] === "number") {
1617
+ node[flag] = node[bound];
1618
+ delete node[bound];
1619
+ } else delete node[flag];
1620
+ }
1621
+ const { enum: values, pattern, required, type } = node;
1622
+ if (type !== void 0 && !(Array.isArray(type) ? type.every(isJsonType) : isJsonType(type))) return `unsupported type ${JSON.stringify(type)}`;
1623
+ if (values !== void 0 && !Array.isArray(values)) return "`enum` is not an array";
1624
+ if (required !== void 0 && !(Array.isArray(required) && required.every((key) => typeof key === "string"))) return "`required` is not an array of strings";
1625
+ if (pattern !== void 0 && !isRegExpSource(pattern)) return `invalid pattern ${JSON.stringify(pattern)}`;
1626
+ for (const keyword of SUBSCHEMA_KEYWORDS) if (keyword in node) {
1627
+ const problem = prepareForValidation(node[keyword]);
1628
+ if (problem !== void 0) return problem;
1629
+ }
1630
+ const items = node.items;
1631
+ for (const subschema of Array.isArray(items) ? items : items === void 0 ? [] : [items]) {
1632
+ const problem = prepareForValidation(subschema);
1633
+ if (problem !== void 0) return problem;
1634
+ }
1635
+ for (const keyword of SUBSCHEMA_LIST_KEYWORDS) {
1636
+ const list = node[keyword];
1637
+ if (list === void 0) continue;
1638
+ if (!Array.isArray(list)) return `\`${keyword}\` is not an array`;
1639
+ for (const subschema of list) {
1640
+ const problem = prepareForValidation(subschema);
1641
+ if (problem !== void 0) return problem;
1642
+ }
1643
+ }
1644
+ for (const keyword of SUBSCHEMA_MAP_KEYWORDS) {
1645
+ const map = node[keyword];
1646
+ if (map === void 0) continue;
1647
+ if (typeof map !== "object" || map === null || Array.isArray(map)) return `\`${keyword}\` is not an object`;
1648
+ for (const [key, subschema] of Object.entries(map)) {
1649
+ if (keyword === "patternProperties" && !isRegExpSource(key)) return `invalid pattern ${JSON.stringify(key)}`;
1650
+ if (keyword === "dependencies" && Array.isArray(subschema)) continue;
1651
+ const problem = prepareForValidation(subschema);
1652
+ if (problem !== void 0) return problem;
1653
+ }
1654
+ }
1655
+ }
1656
+ function isJsonType(value) {
1657
+ return typeof value === "string" && JSON_TYPES.has(value);
1658
+ }
1659
+ function isRegExpSource(value) {
1660
+ if (typeof value !== "string") return false;
1661
+ try {
1662
+ new RegExp(value, "u");
1663
+ return true;
1664
+ } catch {
1665
+ return false;
1666
+ }
1667
+ }
1668
+ const CLOSED_OBJECT_KEYWORD = /\/(?:additional|unevaluated)Properties$/;
1669
+ function toIssues(errors) {
1670
+ const failures = [];
1671
+ for (let index = 0; index < errors.length; index++) {
1672
+ const unit = errors[index];
1673
+ const rejected = errors[index + 1];
1674
+ if (CLOSED_OBJECT_KEYWORD.test(unit.keywordLocation) && rejected?.keyword === "false") {
1675
+ const key = decodePointer(rejected.instanceLocation).at(-1);
1676
+ failures.push({
1677
+ keyword: "false",
1678
+ location: rejected.instanceLocation,
1679
+ message: `Unrecognized key: ${JSON.stringify(key)}`,
1680
+ object: unit.instanceLocation
1681
+ });
1682
+ index++;
1683
+ } else failures.push({
1684
+ keyword: unit.keyword,
1685
+ location: unit.instanceLocation,
1686
+ message: unit.error
1687
+ });
1688
+ }
1689
+ const relevant = failures.filter((failure) => failure.object === void 0 || !failures.some((other) => other.object === void 0 && (other.location === failure.location || other.location.startsWith(`${failure.location}/`))));
1690
+ return relevant.filter((failure, index) => {
1691
+ const next = relevant[index + 1];
1692
+ if (next === void 0) return true;
1693
+ if (next.location.startsWith(`${failure.location}/`)) return false;
1694
+ return !(failure.keyword === "$ref" && next.location === failure.location);
1695
+ }).map(({ location, message, object }) => {
1696
+ const path = decodePointer(object ?? location);
1697
+ return path.length === 0 ? { message } : {
1698
+ message,
1699
+ path
1700
+ };
1701
+ });
1702
+ }
1703
+ function decodePointer(location) {
1704
+ return location.split("/").slice(1).map((segment) => {
1705
+ let decoded = segment;
1706
+ try {
1707
+ decoded = decodeURIComponent(segment);
1708
+ } catch {}
1709
+ return decoded.replaceAll("~1", "/").replaceAll("~0", "~");
1710
+ });
1711
+ }
1467
1712
 
1468
1713
  //#endregion
1469
1714
  //#region src/client/session.ts
@@ -1569,6 +1814,22 @@ var ClientSession = class ClientSession {
1569
1814
  if (options?.follow === false && (options.startIndex ?? this.#state.streamIndex) < 0) throw new Error("stream({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.");
1570
1815
  return this.#streamAndAdvance(options);
1571
1816
  }
1817
+ streamSubagent(called, options) {
1818
+ if (called.data.sessionId !== this.#state.sessionId) throw new Error(`streamSubagent() requires a subagent.called event from session ${this.#state.sessionId}, but it came from session ${called.data.sessionId}.`);
1819
+ if (typeof called.data.childStreamPath !== "string") throw new Error(`streamSubagent() requires a subagent.called event with childStreamPath, but call ${called.data.callId} has none. The event was recorded by an older eve version.`);
1820
+ const startIndex = options?.startIndex ?? 0;
1821
+ if (options?.follow === false && startIndex < 0) throw new Error("streamSubagent({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.");
1822
+ return followStreamIterable({
1823
+ follow: options?.follow,
1824
+ host: this.#context.host,
1825
+ path: called.data.childStreamPath,
1826
+ redirect: this.#context.redirect,
1827
+ resolveHeaders: () => this.#context.resolveHeaders(),
1828
+ signal: options?.signal,
1829
+ startIndex,
1830
+ streamReconnectPolicy: options?.streamReconnectPolicy
1831
+ });
1832
+ }
1572
1833
  [followSession](options) {
1573
1834
  return this.#streamAndAdvance({
1574
1835
  ...options,
@@ -1648,8 +1909,8 @@ var ClientSession = class ClientSession {
1648
1909
  host: this.#context.host,
1649
1910
  keepAlive: input.keepAlive,
1650
1911
  resolveHeaders: () => this.#context.resolveHeaders(input.resolveHeaders?.() ?? input.headers),
1912
+ path: createEveSessionStreamRoutePath(this.#state.sessionId),
1651
1913
  redirect: this.#context.redirect,
1652
- sessionId: this.#state.sessionId,
1653
1914
  signal: input.signal,
1654
1915
  startIndex: input.startIndex,
1655
1916
  streamReconnectPolicy: input.streamReconnectPolicy,
@@ -1 +1 @@
1
- import{createLogger}from"#internal/logging.js";import pc from"#compiled/picocolors/index.js";import{createCliTheme,renderCliTaggedLine}from"#cli/ui/output.js";import{buildExtensionPackage,tryReadExtensionBuildConfig}from"#internal/nitro/host/build-extension.js";const buildLog=createLogger(`extension-build`);async function runExtensionBuildCommand(e,t){let n=await tryReadExtensionBuildConfig(t);if(n===null)throw Error('This package is not an eve extension. Add `"eve": { "extension": { "source": "./extension", "dist": "./dist/extension" } }` to package.json, or run `eve build` for an agent app.');buildLog.debug(`building extension package`,{packageName:n.packageName,sourceRoot:n.sourceRoot});let r=await buildExtensionPackage(t,n),i=createCliTheme();e.log(renderCliTaggedLine(i,{message:`built extension ${pc.bold(n.packageName)} at ${r}`,tag:`build`,tone:`success`}))}export{runExtensionBuildCommand};
1
+ import{createLogger}from"#internal/logging.js";import pc from"#compiled/picocolors/index.js";import{createCliTheme,renderCliTaggedLine}from"#cli/ui/output.js";import{buildExtensionPackage,tryReadExtensionBuildConfig}from"#internal/nitro/host/build-extension.js";import{withExtensionBuildLock}from"#internal/nitro/host/extension-build-lock.js";const buildLog=createLogger(`extension-build`);async function runExtensionBuildCommand(e,t){let n=await tryReadExtensionBuildConfig(t);if(n===null)throw Error('This package is not an eve extension. Add `"eve": { "extension": { "source": "./extension", "dist": "./dist/extension" } }` to package.json, or run `eve build` for an agent app.');buildLog.debug(`building extension package`,{packageName:n.packageName,sourceRoot:n.sourceRoot});let r=await withExtensionBuildLock(t,async()=>await buildExtensionPackage(t,n)),i=createCliTheme();e.log(renderCliTaggedLine(i,{message:`built extension ${pc.bold(n.packageName)} at ${r}`,tag:`build`,tone:`success`}))}export{runExtensionBuildCommand};
@@ -4,7 +4,8 @@ export interface AddRegistryMappingsResult {
4
4
  skippedBuiltIn: string[];
5
5
  skippedExisting: string[];
6
6
  }
7
- export declare function assertCanInstallWebChat(appRoot: string): Promise<void>;
7
+ /** Resolves and prepares the root package that owns Web Chat. */
8
+ export declare function prepareWebChatProjectRoot(appRoot: string): Promise<string>;
8
9
  /** Reads registry namespace mappings from package.json. */
9
10
  export declare function readRegistryConfig(appRoot: string): Promise<RegistryConfig>;
10
11
  export declare function addWebRegistryTsconfig(source: string, path: string): string;
@@ -1,2 +1,2 @@
1
- import{readFile,writeFile}from"node:fs/promises";import{join}from"node:path";import{resolveEveProjectContext}from"#internal/project-context.js";import{applyEdits,modify,parse}from"#compiled/jsonc-parser/index.js";import{WEB_APP_TEMPLATE_FILES}from"#setup/scaffold/create/web-template.js";function errorMessage(e){return e instanceof Error?e.message:String(e)}function isRegistrySource(e){return typeof e==`string`?!0:typeof e!=`object`||!e||!(`url`in e)?!1:typeof e.url==`string`}function parseRegistries(e,t){if(t===void 0)return{};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`${e} has an invalid registries field.`);let n={};for(let[r,i]of Object.entries(t)){if(!r.startsWith(`@`)||!isRegistrySource(i))throw Error(`${e} has an invalid registry entry for ${r}.`);n[r]=i}return n}async function readRegistryPackage(e){let t=await resolveEveProjectContext(e),n=join(t.environmentRoot,`package.json`),r;try{r=JSON.parse(await readFile(n,`utf8`))}catch(e){throw Error(`Could not read ${n}: ${errorMessage(e)}`)}if(typeof r!=`object`||!r||Array.isArray(r))throw Error(`${n} must contain a JSON object.`);let i=r;return{path:n,document:i,config:{registries:parseRegistries(n,i.registries)}}}function parseRegistryMapping(e){let t=e.indexOf(`=`),n=t===-1?e:e.slice(0,t),r=t===-1?``:e.slice(t+1);if(!n.startsWith(`@`))throw Error(`Registry namespaces must start with @: ${n}`);if(!r.includes(`{name}`))throw Error(`Pass a registry URL containing {name}, for example ${n}=https://example.com/r/{name}.json.`);return{namespace:n,url:r}}async function assertCanInstallWebChat(e){if((await resolveEveProjectContext(e)).kind!==`standalone`)throw Error(`Web Chat installs a project-level Next.js application and cannot currently be added to a top-level agents/ workspace. Configure a root Next.js app with withEve({ agents }) instead.`)}async function readRegistryConfig(e){return(await readRegistryPackage(e)).config}const JSONC_FORMATTING={insertSpaces:!0,tabSize:2,eol:`
2
- `};function setJsoncValue(e,t,n){return applyEdits(e,modify(e,t,n,{formattingOptions:JSONC_FORMATTING}))}function addWebRegistryTsconfig(e,t){let n=[],r=parse(e,n,{allowTrailingComma:!0});if(n.length>0||typeof r!=`object`||!r||Array.isArray(r))throw Error(`Could not add Web Chat because ${t} is not a valid JSON object.`);let i=r,a=JSON.parse(WEB_APP_TEMPLATE_FILES[`tsconfig.json`]),o=i.compilerOptions?.paths?.[`@/*`];if(o!==void 0&&(!Array.isArray(o)||!o.includes(`./*`)))throw Error(`Could not add Web Chat because ${t} already defines @/* without mapping it to ./*.`);let s=e;for(let[e,t]of Object.entries(a.compilerOptions))e!==`paths`&&e!==`plugins`&&i.compilerOptions?.[e]===void 0&&(s=setJsoncValue(s,[`compilerOptions`,e],t));o===void 0&&(s=setJsoncValue(s,[`compilerOptions`,`paths`,`@/*`],[`./*`]));let c=i.compilerOptions?.plugins??[];return c.some(e=>typeof e==`object`&&!!e&&`name`in e&&e.name===`next`)||(s=setJsoncValue(s,[`compilerOptions`,`plugins`],[...c,{name:`next`}])),s=setJsoncValue(s,[`include`],[...new Set([...i.include??[],...a.include])]),s=setJsoncValue(s,[`exclude`],[...new Set([...i.exclude??[],...a.exclude])]),s}async function prepareWebRegistryProject(e){let t=join(e,`tsconfig.json`),n;try{n=await readFile(t,`utf8`)}catch(e){throw Error(`Could not add Web Chat because ${t} could not be read: ${errorMessage(e)}`)}let r=addWebRegistryTsconfig(n,t);r!==n&&await writeFile(t,r,`utf8`)}async function addRegistryMappings(e,t){if(t.length===0)throw Error(`Pass at least one registry to add.`);let n=await readRegistryPackage(e),r=t.map(parseRegistryMapping),i={...n.config.registries},a={added:[],skippedBuiltIn:[],skippedExisting:[]};for(let e of r)e.namespace===`@shadcn`||e.namespace===`@skills`?a.skippedBuiltIn.push(e.namespace):i[e.namespace]===void 0?(i[e.namespace]=e.url,a.added.push(e.namespace)):a.skippedExisting.push(e.namespace);return a.added.length>0&&await writeFile(n.path,`${JSON.stringify({...n.document,registries:i},null,2)}\n`,`utf8`),a}export{addRegistryMappings,addWebRegistryTsconfig,assertCanInstallWebChat,prepareWebRegistryProject,readRegistryConfig};
1
+ import{readFile,writeFile}from"node:fs/promises";import{join}from"node:path";import{resolveEveProjectContext}from"#internal/project-context.js";import{applyEdits,modify,parse}from"#compiled/jsonc-parser/index.js";import{WEB_APP_TEMPLATE_FILES}from"#setup/scaffold/create/web-template.js";function errorMessage(e){return e instanceof Error?e.message:String(e)}function isRegistrySource(e){return typeof e==`string`?!0:typeof e!=`object`||!e||!(`url`in e)?!1:typeof e.url==`string`}function parseRegistries(e,t){if(t===void 0)return{};if(typeof t!=`object`||!t||Array.isArray(t))throw Error(`${e} has an invalid registries field.`);let n={};for(let[r,i]of Object.entries(t)){if(!r.startsWith(`@`)||!isRegistrySource(i))throw Error(`${e} has an invalid registry entry for ${r}.`);n[r]=i}return n}async function readRegistryPackage(e){let t=await resolveEveProjectContext(e),n=join(t.environmentRoot,`package.json`),r;try{r=JSON.parse(await readFile(n,`utf8`))}catch(e){throw Error(`Could not read ${n}: ${errorMessage(e)}`)}if(typeof r!=`object`||!r||Array.isArray(r))throw Error(`${n} must contain a JSON object.`);let i=r;return{path:n,document:i,config:{registries:parseRegistries(n,i.registries)}}}function parseRegistryMapping(e){let t=e.indexOf(`=`),n=t===-1?e:e.slice(0,t),r=t===-1?``:e.slice(t+1);if(!n.startsWith(`@`))throw Error(`Registry namespaces must start with @: ${n}`);if(!r.includes(`{name}`))throw Error(`Pass a registry URL containing {name}, for example ${n}=https://example.com/r/{name}.json.`);return{namespace:n,url:r}}async function prepareWebChatProjectRoot(e){let t=await resolveEveProjectContext(e);if(t.kind===`workspace`)throw Error(`Web Chat setup requires a selected workspace agent.`);let n=t.environmentRoot,r=join(n,`package.json`),i=await readFile(r,`utf8`),a=JSON.parse(i),o={...a.scripts};return o[`dev:web`]??=`next dev apps/web`,o[`build:web`]??=`next build apps/web`,await writeFile(r,`${JSON.stringify({...a,scripts:o},null,2)}\n`,`utf8`),n}async function readRegistryConfig(e){return(await readRegistryPackage(e)).config}const JSONC_FORMATTING={insertSpaces:!0,tabSize:2,eol:`
2
+ `};function setJsoncValue(e,t,n){return applyEdits(e,modify(e,t,n,{formattingOptions:JSONC_FORMATTING}))}function addWebRegistryTsconfig(e,t){let n=[],r=parse(e,n,{allowTrailingComma:!0});if(n.length>0||typeof r!=`object`||!r||Array.isArray(r))throw Error(`Could not add Web Chat because ${t} is not a valid JSON object.`);let i=r,a=JSON.parse(WEB_APP_TEMPLATE_FILES[`tsconfig.json`]),o=i.compilerOptions?.paths?.[`@/*`];if(o!==void 0&&(!Array.isArray(o)||!o.includes(`./*`)))throw Error(`Could not add Web Chat because ${t} already defines @/* without mapping it to ./*.`);let s=e;for(let[e,t]of Object.entries(a.compilerOptions))e!==`paths`&&e!==`plugins`&&i.compilerOptions?.[e]===void 0&&(s=setJsoncValue(s,[`compilerOptions`,e],t));o===void 0&&(s=setJsoncValue(s,[`compilerOptions`,`paths`,`@/*`],[`./*`]));let c=i.compilerOptions?.plugins??[];return c.some(e=>typeof e==`object`&&!!e&&`name`in e&&e.name===`next`)||(s=setJsoncValue(s,[`compilerOptions`,`plugins`],[...c,{name:`next`}])),s=setJsoncValue(s,[`include`],[...new Set([...i.include??[],...a.include])]),s=setJsoncValue(s,[`exclude`],[...new Set([...i.exclude??[],...a.exclude])]),s}async function prepareWebRegistryProject(e){let t=join(e,`apps`,`web`,`tsconfig.json`),n;try{n=await readFile(t,`utf8`)}catch(e){if(e.code===`ENOENT`)return;throw Error(`Could not add Web Chat because ${t} could not be read: ${errorMessage(e)}`)}let r=addWebRegistryTsconfig(n,t);r!==n&&await writeFile(t,r,`utf8`)}async function addRegistryMappings(e,t){if(t.length===0)throw Error(`Pass at least one registry to add.`);let n=await readRegistryPackage(e),r=t.map(parseRegistryMapping),i={...n.config.registries},a={added:[],skippedBuiltIn:[],skippedExisting:[]};for(let e of r)e.namespace===`@shadcn`||e.namespace===`@skills`?a.skippedBuiltIn.push(e.namespace):i[e.namespace]===void 0?(i[e.namespace]=e.url,a.added.push(e.namespace)):a.skippedExisting.push(e.namespace);return a.added.length>0&&await writeFile(n.path,`${JSON.stringify({...n.document,registries:i},null,2)}\n`,`utf8`),a}export{addRegistryMappings,addWebRegistryTsconfig,prepareWebChatProjectRoot,prepareWebRegistryProject,readRegistryConfig};
@@ -1 +1 @@
1
- import{hasInteractiveTerminal}from"./preconditions.js";import{serializeHeadlessSetupEvent}from"./setup-headless.js";import{assertCanInstallWebChat,prepareWebRegistryProject,readRegistryConfig}from"./registry-project.js";import{errorMessage,reportRegistryCompletion,resolveRegistryItemForAdd,runRegistryAction,setupReminder,setupResumeCommand}from"./registry-recovery.js";import{runRegistryAddCommand}from"./registry-add-command.js";import{runDeclaredSetups}from"./registry-declared-setups.js";import{installRegistryItemTransaction}from"./registry-install-transaction.js";import{eveMetadataFromRegistryItem,parseOfficialRegistrySearchMetadata}from"./registry-metadata.js";import{prepareDeclaredPnpmBuildPolicy}from"./registry-pnpm-build-policy-flow.js";import{printRegistrySearchResults,registryViewText}from"./registry-presentation.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{createPrompter}from"#setup/prompter.js";import{WizardCancelledError}from"#setup/step.js";import{addRegistryItems,getRegistryItems,searchRegistries}from"#compiled/shadcn-registry/index.js";import semver from"#compiled/semver/index.js";const defaultAddCommandDependencies={createPrompter,hasInteractiveTerminal,loadSetupCommandRunner:async()=>(await import(`./registry-setup-command.js`)).runRegistrySetupCommand,prepareWebRegistryProject};function resolveOfficialRegistryUrl(e=process.env.EVE_DEV_OFFICIAL_REGISTRY_URL){if(e===void 0)return`https://eve.dev/r`;let t;try{t=new URL(e)}catch{throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must be an HTTP(S) URL.`)}if(t.protocol!==`http:`&&t.protocol!==`https:`)throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must be an HTTP(S) URL.`);if(t.username!==``||t.password!==``)throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must not include credentials.`);if(t.search!==``||t.hash!==``)throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must not include a query or fragment.`);return t.pathname=t.pathname.replace(/\/+$/,``),t.toString().replace(/\/$/,``)}const OFFICIAL_REGISTRY=resolveOfficialRegistryUrl(),OFFICIAL_CATALOG=`${OFFICIAL_REGISTRY}/registry.json`,SKILLS_REGISTRY=`@skills`;function itemAddress(e){return e.startsWith(`@`)||/^https?:\/\//.test(e)?e:`${OFFICIAL_REGISTRY}/${e}.json`}async function installOfficialRegistryItem(e,t,n={}){let r=await readEveRegistryConfig(e);await addRegistryItems([itemAddress(t)],{config:r,cwd:e,overwrite:n.overwrite})}function assertCompatibleEveVersion(e){if(e===void 0)return;let t=resolveInstalledPackageInfo().version;if(semver.validRange(e)===null)throw Error(`Registry item has an invalid eve version requirement: ${e}.`);if(!semver.subset(t,e))throw Error(`This registry item requires eve ${e}, but this project is using eve ${t}. Upgrade eve and run the command again.`)}function isOfficialItemAddress(e){return e.startsWith(`${OFFICIAL_REGISTRY}/`)}function withBuiltInRegistries(e){return{...e,registries:{[SKILLS_REGISTRY]:`https://www.skills.sh/r/{name}?agent=eve`,...e.registries}}}async function readEveRegistryConfig(e){return withBuiltInRegistries(await readRegistryConfig(e))}function configuredRegistrySources(e){return Object.keys(e.registries??{})}function validateRegistrySource(e){if(e!==void 0&&!e.startsWith(`@`)&&!/^https?:\/\//.test(e))throw Error(`Registry sources must be a namespace or URL: ${e}`)}async function loadOfficialSearchMetadata(){let e=await fetch(OFFICIAL_CATALOG);if(!e.ok)throw Error(`Could not read the eve registry (${e.status}).`);return parseOfficialRegistrySearchMetadata(await e.json())}function searchItemAddress(e){return e.registry===OFFICIAL_CATALOG?e.name:e.addCommandArgument}function enrichSearchItem(e,t){let n=searchItemAddress(e);return{item:e,address:n,...t.get(n)}}function registrySourceLabel(e){return e===OFFICIAL_CATALOG?`eve`:e===SKILLS_REGISTRY?`skills.sh`:e}function searchPresentationSections(e,t,n){return e.flatMap(e=>{let r=t.get(e);return r===void 0?[]:[{label:registrySourceLabel(e),items:r.items.map(e=>enrichSearchItem(e,n)),total:r.pagination.total}]})}async function printAddSuggestions(e,t,n){try{let r=n.split(`/`).at(-1)||n,{resultsBySource:i,sources:a,metadataByAddress:o}=await searchRegistryCatalog(t,{limit:5,query:r}),s=searchPresentationSections(a,i,o);if(s.every(e=>e.items.length===0))return;e.log(`Did you mean?`),printRegistrySearchResults(e,{query:r,sections:s})}catch{}}async function searchRegistryCatalog(e,t){validateRegistrySource(t.source);let n=await readEveRegistryConfig(e),r=t.source?[t.source]:[OFFICIAL_CATALOG,...configuredRegistrySources(n).filter(e=>t.query!==void 0||e!==SKILLS_REGISTRY)],i=await Promise.all(r.map(async e=>{try{return{result:await searchRegistries([e],{config:n,limit:t.limit??100,query:t.query}),source:e}}catch(t){return{error:t,source:e}}})),a=[],o=new Map;for(let e of i)if(`error`in e)a.push({message:errorMessage(e.error),registry:e.source});else{let t=e.result.errors??[];if(a.push(...t),t.length===0){let t=e.result.items.filter(t=>t.registry===e.source);o.set(e.source,{...e.result,items:t,pagination:{...e.result.pagination,total:e.result.items.length===t.length?e.result.pagination.total:0}})}}let s=new Map(a.map(e=>[`${e.registry}\0${e.message}`,e])),c=o.has(OFFICIAL_CATALOG)?await loadOfficialSearchMetadata():new Map,l=o.get(OFFICIAL_CATALOG);if(l!==void 0){let e=l.items.filter(e=>c.get(searchItemAddress(e))?.hidden!==!0);l.items=e,l.pagination={...l.pagination,total:e.length},l.items.sort((e,t)=>{let rank=e=>c.get(searchItemAddress(e))?.implementation===`native`?0:1;return rank(e)-rank(t)})}let u=[...o.values()];return{config:n,result:{items:u.flatMap(e=>e.items),pagination:{hasMore:u.some(e=>e.pagination.hasMore),limit:t.limit??100,offset:0,total:u.reduce((e,t)=>e+t.pagination.total,0)},...s.size>0?{errors:[...s.values()]}:{}},resultsBySource:o,sources:r,metadataByAddress:c}}async function browseRegistryCatalog(e,t={}){let{result:n}=await searchRegistryCatalog(e,t);return{items:n.items.map(e=>{let t={address:e.registry===OFFICIAL_CATALOG?e.name:e.addCommandArgument,name:e.name,source:e.registry===OFFICIAL_CATALOG?`Vercel`:e.registry};return e.title!==void 0&&(t.title=e.title),e.type!==void 0&&(t.type=e.type),e.description!==void 0&&(t.description=e.description),t}),total:n.pagination.total,errors:n.errors??[]}}async function browseRegistryItems(e,t,n,r,i={}){let{result:a,resultsBySource:o,sources:s,metadataByAddress:c}=await searchRegistryCatalog(t,{limit:i.limit,query:n,source:r}),l=a.errors??[];if(i.json||o.size>0){let t=a.items.map(e=>({...e,...c.get(searchItemAddress(e))})),r={query:n,sections:searchPresentationSections(s,o,c)};i.json&&(r.json={...a,items:t}),printRegistrySearchResults(e,r)}for(let t of l)e.error(`${t.registry}: ${t.message}`);l.length>0&&(process.exitCode=1)}async function getRegistryItemManifest(e,t){let n=await readEveRegistryConfig(e),r=await getRegistryItems([itemAddress(t)],{config:n});return r.length===1?r[0]:r}async function installRegistryItem(e,t,n={},r=defaultAddCommandDependencies){let i,a=[],o={error:e=>{i=e},log:e=>a.push(e)},s=process.exitCode,c=await runAddCommand(o,e,t,{...n,yes:n.prompter===void 0||n.yes,setupAuthorized:n.prompter!==void 0},r);if(process.exitCode=s,i!==void 0)throw Error(i);if(c===!1)throw new WizardCancelledError;let l={output:a};return c!==void 0&&(l.setup=c),l}async function runAddCommand(e,t,n,r,i=defaultAddCommandDependencies){return runRegistryAction(e,t,async()=>{let a=itemAddress(n);a===itemAddress(`channel/web`)&&await assertCanInstallWebChat(t);let o=await readEveRegistryConfig(t);if(r.skipInstall===!0){if(r.overwrite===!0)throw Error(`--overwrite cannot be used with --skip-install.`);if(r.skipSetup===!0)throw Error(`--skip-install cannot be used with --skip-setup.`);if(!isOfficialItemAddress(a))throw Error(`Setup flows are currently supported only for official eve registry items.`)}let s=await resolveRegistryItemForAdd(e,async()=>(await getRegistryItems([a],{config:o}))[0],()=>printAddSuggestions(e,t,n));if(!s.found)return;let c=s.item,l=isOfficialItemAddress(a)?eveMetadataFromRegistryItem(c):void 0;if(assertCompatibleEveVersion(l?.requires),r.skipInstall===!0){if(l?.setup===void 0)throw Error(`Registry item "${n}" does not declare a setup flow.`);let a=await runDeclaredSetups({logger:e,appRoot:t,item:n,setups:l.setup,options:r,dependencies:i,cancelledReminder:setupReminder(n,`cancelled`),resumeCommand:setupResumeCommand(n)});return reportRegistryCompletion(e,n,a,r)}if(!await prepareDeclaredPnpmBuildPolicy({logger:e,appRoot:t,item:n,policies:l?.install?.pnpm?.buildScripts,options:r}))return!1;if(a===itemAddress(`channel/web`)&&await(i.prepareWebRegistryProject??prepareWebRegistryProject)(t),await installRegistryItemTransaction({appRoot:t,item:n,registryItem:c,nonInteractive:r.nonInteractive,logger:e,install:async()=>{await addRegistryItems([a],{config:o,cwd:t,overwrite:r.overwrite,silent:r.silent})}}),l?.setup===void 0)return reportRegistryCompletion(e,n,{facts:[]},r);let u=i.hasInteractiveTerminal?.()??defaultAddCommandDependencies.hasInteractiveTerminal();if(r.nonInteractive&&e.log(serializeHeadlessSetupEvent({version:1,type:`progress`,message:r.skipInstall?`Setup ${n}`:`Installed ${n}`})),r.skipSetup===!0){if(r.nonInteractive)return reportRegistryCompletion(e,n,{facts:[]},r);e.log(setupReminder(n,`skipped`));return}if(!r.nonInteractive&&!r.yes&&!u&&r.setupAuthorized!==!0){e.log(setupReminder(n,`skipped`));return}if(!r.nonInteractive&&!r.yes&&r.setupAuthorized!==!0)try{if(await(r.prompter??i.createPrompter?.()??defaultAddCommandDependencies.createPrompter()).select({message:`Set up ${n} now?`,initialValue:`yes`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]})===`no`){e.log(setupReminder(n,`skipped`));return}}catch(t){if(!(t instanceof WizardCancelledError))throw t;e.log(setupReminder(n,`cancelled`));return}let d=await runDeclaredSetups({logger:e,appRoot:t,item:n,setups:l.setup,options:{...r,force:r.overwrite},dependencies:i,cancelledReminder:setupReminder(n,`cancelled`),resumeCommand:setupResumeCommand(n)});return reportRegistryCompletion(e,n,d,r)})}async function runRegistryListCommand(e,t,n,r={}){await runRegistryAction(e,t,()=>browseRegistryItems(e,t,void 0,n,r))}async function runRegistrySearchCommand(e,t,n,r,i={}){await runRegistryAction(e,t,()=>browseRegistryItems(e,t,n,r,{...i,limit:i.limit??10}))}async function runRegistryViewCommand(e,t,n,r={}){await runRegistryAction(e,t,async()=>{let i=await readEveRegistryConfig(t),a=await getRegistryItems([itemAddress(n)],{config:i}),o=a.length===1?a[0]:a;e.log(r.json?JSON.stringify(o,null,2):registryViewText(n,o))})}export{browseRegistryCatalog,getRegistryItemManifest,installOfficialRegistryItem,installRegistryItem,resolveOfficialRegistryUrl,runAddCommand,runRegistryAddCommand,runRegistryListCommand,runRegistrySearchCommand,runRegistryViewCommand};
1
+ import{hasInteractiveTerminal}from"./preconditions.js";import{serializeHeadlessSetupEvent}from"./setup-headless.js";import{prepareWebChatProjectRoot,prepareWebRegistryProject,readRegistryConfig}from"./registry-project.js";import{errorMessage,reportRegistryCompletion,resolveRegistryItemForAdd,runRegistryAction,setupReminder,setupResumeCommand}from"./registry-recovery.js";import{runRegistryAddCommand}from"./registry-add-command.js";import{runDeclaredSetups}from"./registry-declared-setups.js";import{installRegistryItemTransaction}from"./registry-install-transaction.js";import{eveMetadataFromRegistryItem,parseOfficialRegistrySearchMetadata}from"./registry-metadata.js";import{prepareDeclaredPnpmBuildPolicy}from"./registry-pnpm-build-policy-flow.js";import{printRegistrySearchResults,registryViewText}from"./registry-presentation.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{createPrompter}from"#setup/prompter.js";import{WizardCancelledError}from"#setup/step.js";import{addRegistryItems,getRegistryItems,searchRegistries}from"#compiled/shadcn-registry/index.js";import semver from"#compiled/semver/index.js";const defaultAddCommandDependencies={createPrompter,hasInteractiveTerminal,loadSetupCommandRunner:async()=>(await import(`./registry-setup-command.js`)).runRegistrySetupCommand,prepareWebRegistryProject};function resolveOfficialRegistryUrl(e=process.env.EVE_DEV_OFFICIAL_REGISTRY_URL){if(e===void 0)return`https://eve.dev/r`;let t;try{t=new URL(e)}catch{throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must be an HTTP(S) URL.`)}if(t.protocol!==`http:`&&t.protocol!==`https:`)throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must be an HTTP(S) URL.`);if(t.username!==``||t.password!==``)throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must not include credentials.`);if(t.search!==``||t.hash!==``)throw Error(`EVE_DEV_OFFICIAL_REGISTRY_URL must not include a query or fragment.`);return t.pathname=t.pathname.replace(/\/+$/,``),t.toString().replace(/\/$/,``)}const OFFICIAL_REGISTRY=resolveOfficialRegistryUrl(),OFFICIAL_CATALOG=`${OFFICIAL_REGISTRY}/registry.json`,SKILLS_REGISTRY=`@skills`;function itemAddress(e){return e.startsWith(`@`)||/^https?:\/\//.test(e)?e:`${OFFICIAL_REGISTRY}/${e}.json`}async function installOfficialRegistryItem(e,t,n={}){let r=await readEveRegistryConfig(e);await addRegistryItems([itemAddress(t)],{config:r,cwd:e,overwrite:n.overwrite})}function assertCompatibleEveVersion(e){if(e===void 0)return;let t=resolveInstalledPackageInfo().version;if(semver.validRange(e)===null)throw Error(`Registry item has an invalid eve version requirement: ${e}.`);if(!semver.subset(t,e))throw Error(`This registry item requires eve ${e}, but this project is using eve ${t}. Upgrade eve and run the command again.`)}function isOfficialItemAddress(e){return e.startsWith(`${OFFICIAL_REGISTRY}/`)}function withBuiltInRegistries(e){return{...e,registries:{[SKILLS_REGISTRY]:`https://www.skills.sh/r/{name}?agent=eve`,...e.registries}}}async function readEveRegistryConfig(e){return withBuiltInRegistries(await readRegistryConfig(e))}function configuredRegistrySources(e){return Object.keys(e.registries??{})}function validateRegistrySource(e){if(e!==void 0&&!e.startsWith(`@`)&&!/^https?:\/\//.test(e))throw Error(`Registry sources must be a namespace or URL: ${e}`)}async function loadOfficialSearchMetadata(){let e=await fetch(OFFICIAL_CATALOG);if(!e.ok)throw Error(`Could not read the eve registry (${e.status}).`);return parseOfficialRegistrySearchMetadata(await e.json())}function searchItemAddress(e){return e.registry===OFFICIAL_CATALOG?e.name:e.addCommandArgument}function enrichSearchItem(e,t){let n=searchItemAddress(e);return{item:e,address:n,...t.get(n)}}function registrySourceLabel(e){return e===OFFICIAL_CATALOG?`eve`:e===SKILLS_REGISTRY?`skills.sh`:e}function searchPresentationSections(e,t,n){return e.flatMap(e=>{let r=t.get(e);return r===void 0?[]:[{label:registrySourceLabel(e),items:r.items.map(e=>enrichSearchItem(e,n)),total:r.pagination.total}]})}async function printAddSuggestions(e,t,n){try{let r=n.split(`/`).at(-1)||n,{resultsBySource:i,sources:a,metadataByAddress:o}=await searchRegistryCatalog(t,{limit:5,query:r}),s=searchPresentationSections(a,i,o);if(s.every(e=>e.items.length===0))return;e.log(`Did you mean?`),printRegistrySearchResults(e,{query:r,sections:s})}catch{}}async function searchRegistryCatalog(e,t){validateRegistrySource(t.source);let n=await readEveRegistryConfig(e),r=t.source?[t.source]:[OFFICIAL_CATALOG,...configuredRegistrySources(n).filter(e=>t.query!==void 0||e!==SKILLS_REGISTRY)],i=await Promise.all(r.map(async e=>{try{return{result:await searchRegistries([e],{config:n,limit:t.limit??100,query:t.query}),source:e}}catch(t){return{error:t,source:e}}})),a=[],o=new Map;for(let e of i)if(`error`in e)a.push({message:errorMessage(e.error),registry:e.source});else{let t=e.result.errors??[];if(a.push(...t),t.length===0){let t=e.result.items.filter(t=>t.registry===e.source);o.set(e.source,{...e.result,items:t,pagination:{...e.result.pagination,total:e.result.items.length===t.length?e.result.pagination.total:0}})}}let s=new Map(a.map(e=>[`${e.registry}\0${e.message}`,e])),c=o.has(OFFICIAL_CATALOG)?await loadOfficialSearchMetadata():new Map,l=o.get(OFFICIAL_CATALOG);if(l!==void 0){let e=l.items.filter(e=>c.get(searchItemAddress(e))?.hidden!==!0);l.items=e,l.pagination={...l.pagination,total:e.length},l.items.sort((e,t)=>{let rank=e=>c.get(searchItemAddress(e))?.implementation===`native`?0:1;return rank(e)-rank(t)})}let u=[...o.values()];return{config:n,result:{items:u.flatMap(e=>e.items),pagination:{hasMore:u.some(e=>e.pagination.hasMore),limit:t.limit??100,offset:0,total:u.reduce((e,t)=>e+t.pagination.total,0)},...s.size>0?{errors:[...s.values()]}:{}},resultsBySource:o,sources:r,metadataByAddress:c}}async function browseRegistryCatalog(e,t={}){let{result:n}=await searchRegistryCatalog(e,t);return{items:n.items.map(e=>{let t={address:e.registry===OFFICIAL_CATALOG?e.name:e.addCommandArgument,name:e.name,source:e.registry===OFFICIAL_CATALOG?`Vercel`:e.registry};return e.title!==void 0&&(t.title=e.title),e.type!==void 0&&(t.type=e.type),e.description!==void 0&&(t.description=e.description),t}),total:n.pagination.total,errors:n.errors??[]}}async function browseRegistryItems(e,t,n,r,i={}){let{result:a,resultsBySource:o,sources:s,metadataByAddress:c}=await searchRegistryCatalog(t,{limit:i.limit,query:n,source:r}),l=a.errors??[];if(i.json||o.size>0){let t=a.items.map(e=>({...e,...c.get(searchItemAddress(e))})),r={query:n,sections:searchPresentationSections(s,o,c)};i.json&&(r.json={...a,items:t}),printRegistrySearchResults(e,r)}for(let t of l)e.error(`${t.registry}: ${t.message}`);l.length>0&&(process.exitCode=1)}async function getRegistryItemManifest(e,t){let n=await readEveRegistryConfig(e),r=await getRegistryItems([itemAddress(t)],{config:n});return r.length===1?r[0]:r}async function installRegistryItem(e,t,n={},r=defaultAddCommandDependencies){let i,a=[],o={error:e=>{i=e},log:e=>a.push(e)},s=process.exitCode,c=await runAddCommand(o,e,t,{...n,yes:n.prompter===void 0||n.yes,setupAuthorized:n.prompter!==void 0},r);if(process.exitCode=s,i!==void 0)throw Error(i);if(c===!1)throw new WizardCancelledError;let l={output:a};return c!==void 0&&(l.setup=c),l}async function runAddCommand(e,t,n,r,i=defaultAddCommandDependencies){return runRegistryAction(e,t,async()=>{let a=itemAddress(n),o=a===itemAddress(`channel/web`)?await prepareWebChatProjectRoot(t):t,s=await readEveRegistryConfig(t);if(r.skipInstall===!0){if(r.overwrite===!0)throw Error(`--overwrite cannot be used with --skip-install.`);if(r.skipSetup===!0)throw Error(`--skip-install cannot be used with --skip-setup.`);if(!isOfficialItemAddress(a))throw Error(`Setup flows are currently supported only for official eve registry items.`)}let c=await resolveRegistryItemForAdd(e,async()=>(await getRegistryItems([a],{config:s}))[0],()=>printAddSuggestions(e,t,n));if(!c.found)return;let l=c.item,u=isOfficialItemAddress(a)?eveMetadataFromRegistryItem(l):void 0;if(assertCompatibleEveVersion(u?.requires),r.skipInstall===!0){if(u?.setup===void 0)throw Error(`Registry item "${n}" does not declare a setup flow.`);let a=await runDeclaredSetups({logger:e,appRoot:t,item:n,setups:u.setup,options:r,dependencies:i,cancelledReminder:setupReminder(n,`cancelled`),resumeCommand:setupResumeCommand(n)});return reportRegistryCompletion(e,n,a,r)}if(!await prepareDeclaredPnpmBuildPolicy({logger:e,appRoot:o,item:n,policies:u?.install?.pnpm?.buildScripts,options:r}))return!1;if(a===itemAddress(`channel/web`)&&await(i.prepareWebRegistryProject??prepareWebRegistryProject)(o),await installRegistryItemTransaction({appRoot:o,item:n,registryItem:l,nonInteractive:r.nonInteractive,logger:e,install:async()=>{await addRegistryItems([a],{config:s,cwd:o,overwrite:r.overwrite,silent:r.silent})}}),u?.setup===void 0)return reportRegistryCompletion(e,n,{facts:[]},r);let d=i.hasInteractiveTerminal?.()??defaultAddCommandDependencies.hasInteractiveTerminal();if(r.nonInteractive&&e.log(serializeHeadlessSetupEvent({version:1,type:`progress`,message:r.skipInstall?`Setup ${n}`:`Installed ${n}`})),r.skipSetup===!0){if(r.nonInteractive)return reportRegistryCompletion(e,n,{facts:[]},r);e.log(setupReminder(n,`skipped`));return}if(!r.nonInteractive&&!r.yes&&!d&&r.setupAuthorized!==!0){e.log(setupReminder(n,`skipped`));return}if(!r.nonInteractive&&!r.yes&&r.setupAuthorized!==!0)try{if(await(r.prompter??i.createPrompter?.()??defaultAddCommandDependencies.createPrompter()).select({message:`Set up ${n} now?`,initialValue:`yes`,options:[{value:`yes`,label:`Yes`},{value:`no`,label:`No`}]})===`no`){e.log(setupReminder(n,`skipped`));return}}catch(t){if(!(t instanceof WizardCancelledError))throw t;e.log(setupReminder(n,`cancelled`));return}let f=await runDeclaredSetups({logger:e,appRoot:t,item:n,setups:u.setup,options:{...r,force:r.overwrite},dependencies:i,cancelledReminder:setupReminder(n,`cancelled`),resumeCommand:setupResumeCommand(n)});return reportRegistryCompletion(e,n,f,r)})}async function runRegistryListCommand(e,t,n,r={}){await runRegistryAction(e,t,()=>browseRegistryItems(e,t,void 0,n,r))}async function runRegistrySearchCommand(e,t,n,r,i={}){await runRegistryAction(e,t,()=>browseRegistryItems(e,t,n,r,{...i,limit:i.limit??10}))}async function runRegistryViewCommand(e,t,n,r={}){await runRegistryAction(e,t,async()=>{let i=await readEveRegistryConfig(t),a=await getRegistryItems([itemAddress(n)],{config:i}),o=a.length===1?a[0]:a;e.log(r.json?JSON.stringify(o,null,2):registryViewText(n,o))})}export{browseRegistryCatalog,getRegistryItemManifest,installOfficialRegistryItem,installRegistryItem,resolveOfficialRegistryUrl,runAddCommand,runRegistryAddCommand,runRegistryListCommand,runRegistrySearchCommand,runRegistryViewCommand};
@@ -1,23 +1,10 @@
1
1
  /**
2
- * Span-level detail rendering and trace-level usage aggregation for
3
- * `eve traces`. Kept separate from the command module: the tree renderer
4
- * stays compact while these helpers answer "what does this span carry" —
5
- * inline metric chips for tree rows, the `--verbose` per-span block, and
6
- * the usage/cost totals summarized in the trace header.
2
+ * Span-level detail rendering for `eve traces`. Kept separate from the command
3
+ * module: the tree renderer stays compact while these helpers answer "what
4
+ * does this span carry" — inline metric chips and the `--verbose` per-span block.
7
5
  */
8
6
  import type { LocalTraceSpan } from "#tracing/local-trace-reader.js";
9
- /** Usage and cost totals aggregated over a trace's `agent.step` spans. */
10
- export interface LocalTraceSummary {
11
- readonly cacheReadTokens: number;
12
- readonly cacheWriteTokens: number;
13
- /** Total gateway cost in USD; undefined when no span reported cost. */
14
- readonly costUsd?: number;
15
- readonly errorCount: number;
16
- readonly inputTokens: number;
17
- /** Distinct model ids seen on any span, first-seen order. */
18
- readonly models: readonly string[];
19
- readonly outputTokens: number;
20
- }
7
+ import { type LocalTraceSummary } from "#tracing/local-trace-summary.js";
21
8
  /**
22
9
  * Compact metrics for one tree row: token chips (`↑1.4K`/`↓213`), cost
23
10
  * (`$0.0031`). Only chips whose attributes the span actually carries — rows
@@ -26,15 +13,8 @@ export interface LocalTraceSummary {
26
13
  * Raw values: callers sanitize for their output surface.
27
14
  */
28
15
  export declare function spanMetricChips(span: LocalTraceSpan): string[];
29
- /**
30
- * Aggregates usage, cost, models, and errors across one trace. Only
31
- * `agent.step` spans contribute usage: model spans carry the same counters
32
- * and a subagent's totals already appear as its own step spans in the same
33
- * trace, so summing anything else would double-count.
34
- */
35
- export declare function summarizeLocalTrace(spans: readonly LocalTraceSpan[]): LocalTraceSummary;
36
16
  /** One-line `Tokens` header value: `↑1.2K in · ↓340 out · 1.1K cached`. */
37
- export declare function formatTokenSummary(summary: LocalTraceSummary): string;
17
+ export declare function formatTokenSummary(summary: Pick<LocalTraceSummary, "inputTokens" | "outputTokens" | "cacheReadTokens" | "cacheWriteTokens">): string;
38
18
  /** Formats a USD cost: `$1.50` at scale, `$0.0031` for typical spans. */
39
19
  export declare function formatCostUsd(costUsd: number): string;
40
20
  /**
@@ -1 +1 @@
1
- import{sanitizeForTerminal}from"#cli/ui/output.js";import{formatElapsed}from"#cli/format-elapsed.js";import{formatCompactTokenCount}from"#cli/dev/tui/stream-format.js";import{formatAttributeContent}from"#cli/dev/tui/traces/trace-content.js";import{AGENT_USAGE_ATTRIBUTES}from"#tracing/agent-span-contract.js";function spanMetricChips(e){let t=[],n=numberAttribute(e,`agent.usage.input_tokens`),r=numberAttribute(e,`agent.usage.output_tokens`);n!==void 0&&t.push(`↑${formatCompactTokenCount(n)}`),r!==void 0&&t.push(`↓${formatCompactTokenCount(r)}`);let i=spanCostUsd(e);return i!==void 0&&t.push(formatCostUsd(i)),t}function summarizeLocalTrace(e){let t=[],n=0,r=0,i,a=0,o=0,s=0;for(let c of e){let e=stringAttribute(c,`agent.model.id`)??stringAttribute(c,`gen_ai.request.model`);if(e!==void 0&&!t.includes(e)&&t.push(e),c.statusCode===2&&(a+=1),c.name!==`agent.step`)continue;o+=numberAttribute(c,`agent.usage.input_tokens`)??0,s+=numberAttribute(c,`agent.usage.output_tokens`)??0,n+=numberAttribute(c,AGENT_USAGE_ATTRIBUTES.cacheReadTokens)??numberAttribute(c,`gen_ai.usage.cache_read.input_tokens`)??0,r+=numberAttribute(c,AGENT_USAGE_ATTRIBUTES.cacheWriteTokens)??numberAttribute(c,`gen_ai.usage.cache_write.input_tokens`)??numberAttribute(c,`gen_ai.usage.cache_creation.input_tokens`)??0;let l=spanCostUsd(c);l!==void 0&&(i=(i??0)+l)}return{cacheReadTokens:n,cacheWriteTokens:r,costUsd:i,errorCount:a,inputTokens:o,models:t,outputTokens:s}}function formatTokenSummary(e){let t=[`↑${formatCompactTokenCount(e.inputTokens)} in`,`↓${formatCompactTokenCount(e.outputTokens)} out`];return e.cacheReadTokens>0&&t.push(`${formatCompactTokenCount(e.cacheReadTokens)} cached`),e.cacheWriteTokens>0&&t.push(`${formatCompactTokenCount(e.cacheWriteTokens)} cache write`),t.join(` · `)}function formatCostUsd(e){return e>=1?`$${e.toFixed(2)}`:`$${e.toFixed(4)}`}function renderSpanDetailTree(e,t){let n=spanDetailEntries(e,t.width-t.margin.length-3),r=[];return n.forEach((e,r)=>{let i=r===n.length-1&&!t.childrenFollow;emit(e,t.margin,i?`└─ `:`├─ `)}),r;function emit(e,n,i){r.push(t.mute(`${n}${i}${e.head}`));let a=`${n}${i===`└─ `?` `:`│ `}`;for(let n of e.lines)r.push(t.mute(`${a} ${n}`));e.entries.forEach((t,n)=>{emit(t,a,n===e.entries.length-1?`└─ `:`├─ `)})}}function spanDetailEntries(e,t){let dim=e=>e,n=Math.max(40,t),r=[],push=(e,t=[],n=[])=>{r.push({entries:n,head:e,lines:t})},i=e.statusCode===2;push(`status: ${i&&e.statusMessage!==void 0?`ERROR — ${sanitizeForTerminal(e.statusMessage)}`:i?`ERROR`:`ok`}`),push(`duration: ${formatElapsed(durationMs(e.startTimeNs,e.endTimeNs))}`),push(`started: ${new Date(Number(e.startTimeNs/1000000n)).toISOString()}`),push(`span: ${e.spanId}`),e.parentSpanId!==void 0&&push(`parent: ${e.parentSpanId}`),e.scope!==void 0&&push(`scope: ${sanitizeForTerminal(e.scope)}`),e.kind!==void 0&&e.kind!==1&&push(`kind: ${spanKind(e.kind)}`);for(let t of Object.keys(e.attributes).sort()){let r=formatAttributeContent(t,e.attributes[t],dim,n-2),i=sanitizeForTerminal(t);r.length===1?push(`${i}: ${r[0]}`):push(`${i}:`,r)}return e.events.length>0&&push(`events:`,[],e.events.map(t=>{let r=Math.max(0,durationMs(e.startTimeNs,t.timeNs)),i=[];for(let e of Object.keys(t.attributes).sort()){let r=formatAttributeContent(e,t.attributes[e],dim,n-6),a=sanitizeForTerminal(e);r.length===1?i.push(`${a}: ${r[0]}`):i.push(`${a}:`,...r.map(e=>` ${e}`))}return{entries:[],head:`${sanitizeForTerminal(t.name)} +${formatElapsed(r)}`,lines:i}})),r}function spanCostUsd(e){return numberAttribute(e,`gen_ai.usage.gateway_cost`)??numberAttribute(e,`gen_ai.usage.cost`)}function spanKind(e){switch(e){case 2:return`server`;case 3:return`client`;case 4:return`producer`;case 5:return`consumer`;default:return`unknown (${e})`}}function numberAttribute(e,t){let n=e.attributes[t];if(typeof n==`number`)return n;if(typeof n==`string`&&n!==``){let e=Number(n);return Number.isFinite(e)?e:void 0}}function stringAttribute(e,t){let n=e.attributes[t];return typeof n==`string`&&n.length>0?n:void 0}function durationMs(e,t){return Number(t-e)/1e6}export{formatCostUsd,formatTokenSummary,renderSpanDetailTree,spanMetricChips,summarizeLocalTrace};
1
+ import{sanitizeForTerminal}from"#cli/ui/output.js";import{formatElapsed}from"#cli/format-elapsed.js";import{formatCompactTokenCount}from"#cli/dev/tui/stream-format.js";import{formatAttributeContent}from"#cli/dev/tui/traces/trace-content.js";import{localTraceSpanCostUsd}from"#tracing/local-trace-summary.js";function spanMetricChips(e){let t=[],n=numberAttribute(e,`agent.usage.input_tokens`),r=numberAttribute(e,`agent.usage.output_tokens`);n!==void 0&&t.push(`↑${formatCompactTokenCount(n)}`),r!==void 0&&t.push(`↓${formatCompactTokenCount(r)}`);let i=localTraceSpanCostUsd(e);return i!==void 0&&t.push(formatCostUsd(i)),t}function formatTokenSummary(e){let t=[`↑${formatCompactTokenCount(e.inputTokens)} in`,`↓${formatCompactTokenCount(e.outputTokens)} out`];return e.cacheReadTokens>0&&t.push(`${formatCompactTokenCount(e.cacheReadTokens)} cached`),e.cacheWriteTokens>0&&t.push(`${formatCompactTokenCount(e.cacheWriteTokens)} cache write`),t.join(` · `)}function formatCostUsd(e){return e>=1?`$${e.toFixed(2)}`:`$${e.toFixed(4)}`}function renderSpanDetailTree(e,t){let n=spanDetailEntries(e,t.width-t.margin.length-3),r=[];return n.forEach((e,r)=>{let i=r===n.length-1&&!t.childrenFollow;emit(e,t.margin,i?`└─ `:`├─ `)}),r;function emit(e,n,i){r.push(t.mute(`${n}${i}${e.head}`));let a=`${n}${i===`└─ `?` `:`│ `}`;for(let n of e.lines)r.push(t.mute(`${a} ${n}`));e.entries.forEach((t,n)=>{emit(t,a,n===e.entries.length-1?`└─ `:`├─ `)})}}function spanDetailEntries(e,t){let dim=e=>e,n=Math.max(40,t),r=[],push=(e,t=[],n=[])=>{r.push({entries:n,head:e,lines:t})},i=e.statusCode===2;push(`status: ${i&&e.statusMessage!==void 0?`ERROR — ${sanitizeForTerminal(e.statusMessage)}`:i?`ERROR`:`ok`}`),push(`duration: ${formatElapsed(durationMs(e.startTimeNs,e.endTimeNs))}`),push(`started: ${new Date(Number(e.startTimeNs/1000000n)).toISOString()}`),push(`span: ${e.spanId}`),e.parentSpanId!==void 0&&push(`parent: ${e.parentSpanId}`),e.scope!==void 0&&push(`scope: ${sanitizeForTerminal(e.scope)}`),e.kind!==void 0&&e.kind!==1&&push(`kind: ${spanKind(e.kind)}`);for(let t of Object.keys(e.attributes).sort()){let r=formatAttributeContent(t,e.attributes[t],dim,n-2),i=sanitizeForTerminal(t);r.length===1?push(`${i}: ${r[0]}`):push(`${i}:`,r)}return e.events.length>0&&push(`events:`,[],e.events.map(t=>{let r=Math.max(0,durationMs(e.startTimeNs,t.timeNs)),i=[];for(let e of Object.keys(t.attributes).sort()){let r=formatAttributeContent(e,t.attributes[e],dim,n-6),a=sanitizeForTerminal(e);r.length===1?i.push(`${a}: ${r[0]}`):i.push(`${a}:`,...r.map(e=>` ${e}`))}return{entries:[],head:`${sanitizeForTerminal(t.name)} +${formatElapsed(r)}`,lines:i}})),r}function spanKind(e){switch(e){case 2:return`server`;case 3:return`client`;case 4:return`producer`;case 5:return`consumer`;default:return`unknown (${e})`}}function numberAttribute(e,t){let n=e.attributes[t];if(typeof n==`number`)return n;if(typeof n==`string`&&n!==``){let e=Number(n);return Number.isFinite(e)?e:void 0}}function durationMs(e,t){return Number(t-e)/1e6}export{formatCostUsd,formatTokenSummary,renderSpanDetailTree,spanMetricChips};
@@ -1,8 +1,8 @@
1
- import{basename}from"node:path";import{createCliTheme,renderCliSection,sanitizeForTerminal}from"#cli/ui/output.js";import{formatElapsed}from"#cli/format-elapsed.js";import{formatCostUsd,formatTokenSummary,renderSpanDetailTree,spanMetricChips,summarizeLocalTrace}from"#cli/commands/trace-detail.js";import{compareLocalTraceSpans,describeLocalTraceSpan,listLocalTraces}from"#tracing/local-trace-reader.js";const TRACE_DISPLAY_DIRECTORY=`.eve/traces/v1`;function resolveLocalTraces(e,t){let n=t.replaceAll(`\\`,`/`),r=basename(n),i=n===r?[n]:[n,r],a=e.find(e=>i.includes(e.traceId));if(a!==void 0)return[a];let o=e.filter(e=>e.conversationIds.some(e=>i.includes(e)));if(o.length>0)return orderWindows(o);let s=e.filter(e=>i.some(t=>e.traceId.startsWith(t)||e.conversationIds.some(e=>e.startsWith(t))));if(s.length===0)throw Error(`No local trace matches "${sanitizeForTerminal(t)}". Run \`eve traces ls\` to list traces.`);if(s.length===1)return s;if(new Set(s.map(e=>e.conversationId??e.traceId)).size>1)throw ambiguousTraceError(s,t);return orderWindows(s)}function orderWindows(e){return[...e].sort((e,t)=>e.startTimeNs===t.startTimeNs?e.traceId.localeCompare(t.traceId):e.startTimeNs<t.startTimeNs?-1:1)}async function runTraceListCommand(e,t,n={}){let r=await listLocalTraces(t);if(n.json===!0){e.log(JSON.stringify(r.map(e=>({agentName:e.agentName??null,durationMs:durationMs(e.startTimeNs,e.endTimeNs),conversationId:e.conversationId??null,spanCount:e.spans.length,startedAt:toDate(e.startTimeNs).toISOString(),traceId:e.traceId})),null,2));return}if(r.length===0){e.log(`No local traces found under ${TRACE_DISPLAY_DIRECTORY}.`);return}let i=r.map(e=>[e.traceId,sanitizeForTerminal(e.conversationId??`unknown`),sanitizeForTerminal(e.agentName??`unknown`),toDate(e.startTimeNs).toISOString(),formatElapsed(durationMs(e.startTimeNs,e.endTimeNs)),String(e.spans.length)]),a=[`TRACE`,`CONVERSATION`,`AGENT`,`STARTED`,`DURATION`,`SPANS`],o=a.map((e,t)=>Math.max(e.length,...i.map(e=>e[t].length)));e.log([a,...i].map(e=>e.map((e,t)=>e.padEnd(o[t])).join(` `).trimEnd()).join(`
1
+ import{basename}from"node:path";import{createCliTheme,renderCliSection,sanitizeForTerminal}from"#cli/ui/output.js";import{formatElapsed}from"#cli/format-elapsed.js";import{summarizeLocalTrace}from"#tracing/local-trace-summary.js";import{formatCostUsd,formatTokenSummary,renderSpanDetailTree,spanMetricChips}from"#cli/commands/trace-detail.js";import{compareLocalTraceSpans,describeLocalTraceSpan,listLocalTraces}from"#tracing/local-trace-reader.js";const TRACE_DISPLAY_DIRECTORY=`.eve/traces/v1`;function resolveLocalTraces(e,t){let n=t.replaceAll(`\\`,`/`),r=basename(n),i=n===r?[n]:[n,r],a=e.find(e=>i.includes(e.traceId));if(a!==void 0)return[a];let o=e.filter(e=>e.conversationIds.some(e=>i.includes(e)));if(o.length>0)return orderWindows(o);let s=e.filter(e=>i.some(t=>e.traceId.startsWith(t)||e.conversationIds.some(e=>e.startsWith(t))));if(s.length===0)throw Error(`No local trace matches "${sanitizeForTerminal(t)}". Run \`eve traces ls\` to list traces.`);if(s.length===1)return s;if(new Set(s.map(e=>e.conversationId??e.traceId)).size>1)throw ambiguousTraceError(s,t);return orderWindows(s)}function orderWindows(e){return[...e].sort((e,t)=>e.startTimeNs===t.startTimeNs?e.traceId.localeCompare(t.traceId):e.startTimeNs<t.startTimeNs?-1:1)}async function runTraceListCommand(e,t,n={}){let r=await listLocalTraces(t);if(n.json===!0){e.log(JSON.stringify(r.map(e=>({agentName:e.agentName??null,durationMs:durationMs(e.startTimeNs,e.endTimeNs),conversationId:e.conversationId??null,spanCount:e.spans.length,startedAt:toDate(e.startTimeNs).toISOString(),traceId:e.traceId})),null,2));return}if(r.length===0){e.log(`No local traces found under ${TRACE_DISPLAY_DIRECTORY}.`);return}let i=r.map(e=>[e.traceId,sanitizeForTerminal(e.conversationId??`unknown`),sanitizeForTerminal(e.agentName??`unknown`),toDate(e.startTimeNs).toISOString(),formatElapsed(durationMs(e.startTimeNs,e.endTimeNs)),String(e.spans.length)]),a=[`TRACE`,`CONVERSATION`,`AGENT`,`STARTED`,`DURATION`,`SPANS`],o=a.map((e,t)=>Math.max(e.length,...i.map(e=>e[t].length)));e.log([a,...i].map(e=>e.map((e,t)=>e.padEnd(o[t])).join(` `).trimEnd()).join(`
2
2
  `))}async function runTraceShowCommand(e,t,n,r={}){let i=await listLocalTraces(t);if(i.length===0){let t=`No local traces found under ${TRACE_DISPLAY_DIRECTORY}.`;if(n!==void 0)throw Error(t);e.log(t);return}let a=n===void 0?[i[0]]:resolveLocalTraces(i,n);if(r.json===!0){e.log(JSON.stringify(a.map(serializeTraceForJson),null,2));return}let o=createCliTheme();e.log(a.map(e=>[renderCliSection(o,{rows:traceHeaderRows(e),title:`Trace`}),`${o.accent(`Spans`)}\n${renderSpanTree(e.spans,{dim:o.muted,verbose:r.verbose===!0})}`].join(`
3
3
 
4
4
  `)).join(`
5
5
 
6
- `))}function traceHeaderRows(e){let t=summarizeLocalTrace(e.spans);return[{label:`Trace ID`,value:e.traceId},{label:`Conversation ID`,value:e.conversationId??`unknown`},{label:`Agent`,value:e.agentName??`unknown`},{label:`Started`,value:toDate(e.startTimeNs).toISOString()},{label:`Duration`,value:formatElapsed(durationMs(e.startTimeNs,e.endTimeNs))},{label:`Spans`,value:String(e.spans.length)},...t.models.length===0?[]:[{label:`Models`,value:t.models.join(`, `)}],...t.inputTokens===0&&t.outputTokens===0?[]:[{label:`Tokens`,value:formatTokenSummary(t)}],...t.costUsd===void 0?[]:[{label:`Cost`,value:formatCostUsd(t.costUsd)}],...t.errorCount===0?[]:[{label:`Errors`,value:`${t.errorCount} span${t.errorCount===1?``:`s`}`}]]}function serializeTraceForJson(e){return{agentName:e.agentName??null,durationMs:durationMs(e.startTimeNs,e.endTimeNs),conversationId:e.conversationId??null,conversationIds:e.conversationIds,spanCount:e.spans.length,spans:e.spans.map(e=>({attributes:e.attributes,durationMs:durationMs(e.startTimeNs,e.endTimeNs),endTimeNs:e.endTimeNs.toString(),events:e.events.map(e=>({attributes:e.attributes,name:e.name,timeNs:e.timeNs.toString()})),kind:e.kind??null,name:e.name,parentSpanId:e.parentSpanId??null,scope:e.scope??null,spanId:e.spanId,startTimeNs:e.startTimeNs.toString(),statusCode:e.statusCode,statusMessage:e.statusMessage??null})),startedAt:toDate(e.startTimeNs).toISOString(),traceId:e.traceId}}function renderSpanTree(e,t={}){let n=new Map(e.map(e=>[e.spanId,e])),r=new Map,i=[];for(let t of e)if(t.parentSpanId===void 0||!n.has(t.parentSpanId))i.push(t);else{let e=r.get(t.parentSpanId)??[];e.push(t),r.set(t.parentSpanId,e)}i.sort(compareLocalTraceSpans);for(let e of r.values())e.sort(compareLocalTraceSpans);let a=subtreeExtents(e,r),o=terminalWidth(),s=[],c=new Set,l=t.dim??(e=>e),render=(e,n,i)=>{if(c.has(e.spanId))return;c.add(e.spanId);let u=`${n}${i}`;s.push(`${u===``?``:l(u)}${spanLabel(e,a.get(e.spanId))}`);let d=`${n}${i===``?``:i===`└─ `?` `:`│ `}`,f=r.get(e.spanId)??[];if(t.verbose===!0)for(let t of renderSpanDetailTree(e,{childrenFollow:f.length>0,margin:d,mute:l,width:o}))s.push(t);f.forEach((e,t)=>{let n=t===f.length-1;render(e,d,n?`└─ `:`├─ `)})};for(let e of i)render(e,``,``);for(let t of[...e].sort(compareLocalTraceSpans))c.has(t.spanId)||render(t,``,``);return s.join(`
6
+ `))}function traceHeaderRows(e){let t=summarizeLocalTrace(e.traceId,e.spans);return[{label:`Trace ID`,value:e.traceId},{label:`Conversation ID`,value:e.conversationId??`unknown`},{label:`Agent`,value:e.agentName??`unknown`},{label:`Started`,value:t.startedAt},{label:`Duration`,value:formatElapsed(t.durationMs)},{label:`Spans`,value:String(t.spanCount)},...t.models.length===0?[]:[{label:`Models`,value:t.models.join(`, `)}],...t.inputTokens===0&&t.outputTokens===0?[]:[{label:`Tokens`,value:formatTokenSummary(t)}],...t.costUsd===void 0?[]:[{label:`Cost`,value:formatCostUsd(t.costUsd)}],...t.errorSpanCount===0?[]:[{label:`Errors`,value:`${t.errorSpanCount} span${t.errorSpanCount===1?``:`s`}`}]]}function serializeTraceForJson(e){return{agentName:e.agentName??null,durationMs:durationMs(e.startTimeNs,e.endTimeNs),conversationId:e.conversationId??null,conversationIds:e.conversationIds,spanCount:e.spans.length,spans:e.spans.map(e=>({attributes:e.attributes,durationMs:durationMs(e.startTimeNs,e.endTimeNs),endTimeNs:e.endTimeNs.toString(),events:e.events.map(e=>({attributes:e.attributes,name:e.name,timeNs:e.timeNs.toString()})),kind:e.kind??null,name:e.name,parentSpanId:e.parentSpanId??null,scope:e.scope??null,spanId:e.spanId,startTimeNs:e.startTimeNs.toString(),statusCode:e.statusCode,statusMessage:e.statusMessage??null})),startedAt:toDate(e.startTimeNs).toISOString(),traceId:e.traceId}}function renderSpanTree(e,t={}){let n=new Map(e.map(e=>[e.spanId,e])),r=new Map,i=[];for(let t of e)if(t.parentSpanId===void 0||!n.has(t.parentSpanId))i.push(t);else{let e=r.get(t.parentSpanId)??[];e.push(t),r.set(t.parentSpanId,e)}i.sort(compareLocalTraceSpans);for(let e of r.values())e.sort(compareLocalTraceSpans);let a=subtreeExtents(e,r),o=terminalWidth(),s=[],c=new Set,l=t.dim??(e=>e),render=(e,n,i)=>{if(c.has(e.spanId))return;c.add(e.spanId);let u=`${n}${i}`;s.push(`${u===``?``:l(u)}${spanLabel(e,a.get(e.spanId))}`);let d=`${n}${i===``?``:i===`└─ `?` `:`│ `}`,f=r.get(e.spanId)??[];if(t.verbose===!0)for(let t of renderSpanDetailTree(e,{childrenFollow:f.length>0,margin:d,mute:l,width:o}))s.push(t);f.forEach((e,t)=>{let n=t===f.length-1;render(e,d,n?`└─ `:`├─ `)})};for(let e of i)render(e,``,``);for(let t of[...e].sort(compareLocalTraceSpans))c.has(t.spanId)||render(t,``,``);return s.join(`
7
7
  `)}function subtreeExtents(e,t){let n=new Map,r=new Set,visit=e=>{let i=n.get(e.spanId);if(i!==void 0)return i;if(r.has(e.spanId))return{endTimeNs:e.endTimeNs,startTimeNs:e.startTimeNs};r.add(e.spanId);let a=e.endTimeNs,o=e.startTimeNs;for(let n of t.get(e.spanId)??[]){let e=visit(n);e.startTimeNs<o&&(o=e.startTimeNs),e.endTimeNs>a&&(a=e.endTimeNs)}r.delete(e.spanId);let s={endTimeNs:a,startTimeNs:o};return n.set(e.spanId,s),s};for(let t of e)visit(t);return n}function spanLabel(e,t){let n=describeLocalTraceSpan(e).map(sanitizeForTerminal),r=n.length===0?``:` [${n.join(`, `)}]`,i=spanMetricChips(e).map(sanitizeForTerminal),a=i.length===0?``:` ${i.join(` `)}`,o=e.statusCode===2?` ERROR`:``,s=durationMs(e.startTimeNs,e.endTimeNs),c=s===0&&t!==void 0?durationMs(t.startTimeNs,t.endTimeNs):s;return`${sanitizeForTerminal(e.name)}${r} ${formatElapsed(c)}${a}${o}`}function terminalWidth(){let e=process.stdout.columns;return typeof e==`number`&&e>=40?e:100}function durationMs(e,t){return Number(t-e)/1e6}function toDate(e){return new Date(Number(e/1000000n))}function ambiguousTraceError(e,t){return Error([`"${sanitizeForTerminal(t)}" matches ${e.length} local traces:`,...e.map(e=>` ${e.traceId} ${sanitizeForTerminal(e.conversationId??`unknown conversation`)}`),`Pass a longer prefix or the full trace/conversation id.`].join(`
8
8
  `))}export{resolveLocalTraces,runTraceListCommand,runTraceShowCommand};
@@ -1 +1 @@
1
- import{resolveTuiDisplayOptions}from"./ui-options.js";import{resolveTuiTitle}from"./tui/target.js";import{randomUUID}from"node:crypto";import{findEveProjectContext}from"#internal/project-context.js";import{devBootPhase}from"#internal/dev-boot-progress.js";import{resumeDevelopmentRuntimeArtifacts,suspendDevelopmentRuntimeArtifacts}from"#services/dev-client/runtime-artifacts.js";async function runInteractiveDevelopmentUi(e){let t=await devBootPhase(`loading interactive UI`,async()=>e.runDevelopmentTui??(await import(`#cli/dev/tui/tui.js`)).runDevelopmentTui,e.report),n=e.server.appRoot??e.applicationRoot,r=await findEveProjectContext(n),i=r?.environmentRoot??n,a=r?.kind===`workspace-member`?r.member.appRoot:void 0,o=e.remoteTarget===void 0||e.existingLocalServer?{kind:`local`,serverUrl:e.server.serverUrl,workspaceRoot:i,agentRoot:a}:{kind:`remote`,serverUrl:e.server.serverUrl,workspaceRoot:i,agentRoot:a},s=resolveTuiDisplayOptions(e.options),c=resolveTuiTitle({name:e.options.name,target:o});c!==void 0&&(s.name=c);let l={target:o,initialInput:e.options.input,onboard:e.options.onboard,onBootProgress:e.report,onOnboardingStep:e.onOnboardingStep,onOnboardingTerminal:e.onOnboardingTerminal,lifecycle:e.lifecycle,...s};e.startup!==void 0&&(l.startup=e.startup),o.kind===`local`&&(l.withExclusiveTerminal=async t=>{let n=randomUUID();if(!await suspendDevelopmentRuntimeArtifacts({leaseId:n,serverUrl:e.server.serverUrl}))throw Error(`Could not pause the development server for setup.`);let r;try{r={ok:!0,value:await t()}}catch(e){r={error:e,ok:!1}}let i={leaseId:n,serverUrl:e.server.serverUrl,silent:!0};if(await resumeDevelopmentRuntimeArtifacts(i)===void 0&&await resumeDevelopmentRuntimeArtifacts(i)===void 0)throw Error(`Could not resume the eve development server after setup. Restart eve dev before making further source changes.`,r.ok?void 0:{cause:r.error});if(!r.ok)throw r.error;return r.value}),e.remoteTarget?.headers===void 0?await t(l):await t({...l,headers:e.remoteTarget.headers})}export{runInteractiveDevelopmentUi};
1
+ import{resolveTuiDisplayOptions}from"./ui-options.js";import{resolveTuiTitle}from"./tui/target.js";import{randomUUID}from"node:crypto";import{findEveProjectContext}from"#internal/project-context.js";import{devBootPhase}from"#internal/dev-boot-progress.js";import{resumeDevelopmentRuntimeArtifacts,suspendDevelopmentRuntimeArtifacts}from"#services/dev-client/runtime-artifacts.js";async function runInteractiveDevelopmentUi(e){let t=await devBootPhase(`loading interactive UI`,async()=>e.runDevelopmentTui??(await import(`#cli/dev/tui/tui.js`)).runDevelopmentTui,e.report),n=await findEveProjectContext(e.applicationRoot),r=n?.environmentRoot??e.server.appRoot??e.applicationRoot,i=n?.kind===`workspace-member`?n.member.appRoot:void 0,a=e.remoteTarget===void 0||e.existingLocalServer?{kind:`local`,serverUrl:e.server.serverUrl,workspaceRoot:r,agentRoot:i}:{kind:`remote`,serverUrl:e.server.serverUrl,workspaceRoot:r,agentRoot:i},o=resolveTuiDisplayOptions(e.options),s=resolveTuiTitle({name:e.options.name,target:a});s!==void 0&&(o.name=s);let c={target:a,initialInput:e.options.input,onboard:e.options.onboard,onBootProgress:e.report,onOnboardingStep:e.onOnboardingStep,onOnboardingTerminal:e.onOnboardingTerminal,lifecycle:e.lifecycle,...o};e.startup!==void 0&&(c.startup=e.startup),a.kind===`local`&&(c.withExclusiveTerminal=async t=>{let n=randomUUID();if(!await suspendDevelopmentRuntimeArtifacts({leaseId:n,serverUrl:e.server.serverUrl}))throw Error(`Could not pause the development server for setup.`);let r;try{r={ok:!0,value:await t()}}catch(e){r={error:e,ok:!1}}let i={leaseId:n,serverUrl:e.server.serverUrl,silent:!0};if(await resumeDevelopmentRuntimeArtifacts(i)===void 0&&await resumeDevelopmentRuntimeArtifacts(i)===void 0)throw Error(`Could not resume the eve development server after setup. Restart eve dev before making further source changes.`,r.ok?void 0:{cause:r.error});if(!r.ok)throw r.error;return r.value}),e.remoteTarget?.headers===void 0?await t(c):await t({...c,headers:e.remoteTarget.headers})}export{runInteractiveDevelopmentUi};
@@ -0,0 +1,36 @@
1
+ import type { Theme } from "./theme.js";
2
+ export interface PromptArgumentSuggestion {
3
+ readonly value: string;
4
+ readonly label: string;
5
+ readonly hint?: string;
6
+ /** Follow-up values available after selecting this exact value. */
7
+ readonly next?: readonly PromptArgumentSuggestion[];
8
+ }
9
+ export type ArgumentTypeaheadCommand = "model" | "add" | "login";
10
+ export interface ArgumentTypeaheadQuery {
11
+ readonly command: ArgumentTypeaheadCommand;
12
+ readonly argument: string;
13
+ /** Complete arguments before the one currently being typed. */
14
+ readonly completed: readonly string[];
15
+ /** Offset of the current argument in the composer draft. */
16
+ readonly argumentStart: number;
17
+ }
18
+ export interface ArgumentTypeaheadState extends ArgumentTypeaheadQuery {
19
+ readonly suggestions: readonly PromptArgumentSuggestion[];
20
+ readonly selectedIndex: number;
21
+ }
22
+ export declare function isArgumentTypeaheadCommand(command: string): command is ArgumentTypeaheadCommand;
23
+ export declare function argumentTypeaheadLoadingLabel(command: ArgumentTypeaheadCommand): string;
24
+ /**
25
+ * Parses the active token in an inline command drawer. The command grammar
26
+ * deliberately uses literal spaces, matching slash-command dispatch.
27
+ */
28
+ export declare function argumentTypeaheadQuery(text: string): ArgumentTypeaheadQuery | undefined;
29
+ /** Filters catalog entries case-insensitively across their visible labels and ids. */
30
+ export declare function argumentTypeaheadFor(query: ArgumentTypeaheadQuery, catalog: readonly PromptArgumentSuggestion[], previous?: ArgumentTypeaheadState): ArgumentTypeaheadState;
31
+ export declare function moveArgumentTypeaheadSelection(state: ArgumentTypeaheadState, delta: 1 | -1): ArgumentTypeaheadState;
32
+ export declare function selectedArgumentSuggestion(state: ArgumentTypeaheadState): PromptArgumentSuggestion | undefined;
33
+ /** Replaces only the active argument, retaining selected preceding model tokens. */
34
+ export declare function argumentTypeaheadCompletion(state: ArgumentTypeaheadState, suggestion: PromptArgumentSuggestion): string;
35
+ /** Paints canonical catalog values under the command's active argument column. */
36
+ export declare function renderArgumentSuggestions(state: ArgumentTypeaheadState, theme: Theme, width: number): string[];
@@ -0,0 +1,2 @@
1
+ import{sanitizeForTerminal}from"#cli/ui/output.js";import{sliceVisible,visibleLength}from"#cli/ui/terminal-text.js";const ARGUMENT_LIMIT={add:1,login:1,model:2};function isArgumentTypeaheadCommand(e){return e===`model`||e===`add`||e===`login`}function argumentTypeaheadLoadingLabel(e){return e===`model`?`models`:e===`add`?`registry`:`connections`}function argumentTypeaheadQuery(e){if(!e.startsWith(`/`))return;let t=e.indexOf(` `);if(t<0)return;let n=e.slice(1,t);if(!isArgumentTypeaheadCommand(n))return;let r=[],i=t;for(;i<e.length;){for(;e[i]===` `;)i+=1;if(i===e.length)break;let t=i;for(;i<e.length&&e[i]!==` `;)i+=1;r.push({value:e.slice(t,i),start:t})}let a=r.length+ +!!e.endsWith(` `);if(e.slice(t).includes(`
2
+ `)||a>ARGUMENT_LIMIT[n])return;let o=r.at(-1),s=r.map(e=>e.value);return!e.endsWith(` `)&&o!==void 0&&s.pop(),{command:n,argument:e.endsWith(` `)?``:o?.value??``,completed:s,argumentStart:e.endsWith(` `)?e.length:o?.start??e.length}}function sanitizeSuggestion(e){let t={value:sanitizeForTerminal(e.value),label:sanitizeForTerminal(e.label)};return e.hint!==void 0&&(t.hint=sanitizeForTerminal(e.hint)),e.next!==void 0&&(t.next=e.next.map(sanitizeSuggestion)),t}function argumentTypeaheadFor(e,t,n){let r=t.map(sanitizeSuggestion),i=e.completed.length===0?r:r.find(t=>t.value===e.completed[0])?.next??[],a=e.argument.toLowerCase(),o=i.filter(e=>e.value.toLowerCase().includes(a)||e.label.toLowerCase().includes(a)||(e.hint?.toLowerCase().includes(a)??!1)),s=n?.suggestions[n.selectedIndex],c=s===void 0?-1:o.findIndex(e=>e.value===s.value);return{...e,suggestions:o,selectedIndex:c>=0?c:0}}function moveArgumentTypeaheadSelection(e,t){return e.suggestions.length===0?e:{...e,selectedIndex:(e.selectedIndex+t+e.suggestions.length)%e.suggestions.length}}function selectedArgumentSuggestion(e){return e.suggestions[e.selectedIndex]}function argumentTypeaheadCompletion(e,t){return`/${e.command} ${[...e.completed,t.value].join(` `)}`}function renderArgumentSuggestions(e,t,n){let r=t.colors,i=Math.min(8,e.suggestions.length),a=Math.max(0,Math.min(e.selectedIndex-Math.floor(i/2),e.suggestions.length-i));return e.suggestions.slice(a,a+i).map((t,i)=>{let o=a+i===e.selectedIndex?r.bold(t.value):r.dim(t.value),s=`${` `.repeat(e.argumentStart+2)}${o}`;return visibleLength(s)>n?sliceVisible(s,n):s})}export{argumentTypeaheadCompletion,argumentTypeaheadFor,argumentTypeaheadLoadingLabel,argumentTypeaheadQuery,isArgumentTypeaheadCommand,moveArgumentTypeaheadSelection,renderArgumentSuggestions,selectedArgumentSuggestion};
@@ -1,7 +1,7 @@
1
1
  import{renderMarkdown}from"./markdown.js";import{isPromptControlCommand}from"./prompt-commands.js";import{elisionText}from"./rail.js";import{renderTool}from"./tool-rows.js";import{clipVisible,sliceVisible,visibleLength,wrapVisibleLine}from"#cli/ui/terminal-text.js";function renderBlockLines(e,t,n,r){let i=e.depth??0,a=nestingPrefix(i,n),o=renderBody(e,Math.max(8,t-visibleLength(a)),n,r);if(e.closesRail===!0&&i>0){let e=closingPrefix(i,n);return o.map((t,n)=>`${n===o.length-1?e:a}${t}`)}return o.map(e=>`${a}${e}`)}function nestingPrefix(e,t){return e<=0?``:` ${`${t.colors.dim(t.glyph.rule)} `.repeat(e)}`}function closingPrefix(e,t){return` ${`${t.colors.dim(t.glyph.rule)} `.repeat(e-1)}${t.colors.dim(t.glyph.corner)} `}function renderBody(e,t,n,r){if(e.elided!==void 0&&e.kind===`subagent-step`)return[` ${elisionText(e.elided,n)}`];switch(e.kind){case`user`:return renderUser(e,t,n);case`assistant`:case`subagent-step`:return renderProse(e,t,n,r);case`reasoning`:return renderReasoning(e,t,n);case`tool`:case`subagent-tool`:return renderTool(e,t,n,r);case`error`:return renderError(e,t,n);case`notice`:return renderNotice(e,t,n);case`warning`:return renderWarning(e,t,n);case`result`:return renderResult(e,t,n);case`flow`:return renderFlow(e,t,n);case`command`:return renderCommand(e,n);case`question`:case`connection-auth`:return renderPreformatted(e,t,n);case`sandbox`:return renderSandbox(e,t,n,r);case`log`:return renderLog(e,t,n);case`subagent`:return renderSubagentHeader(e,t,n,r);case`subagent-close`:{let r=` ${n.colors.dim(n.glyph.corner)}`;return e.body!==void 0&&e.body.length>0?[clipVisible(`${r} ${n.colors.dim(e.body)}`,Math.max(1,t))]:[r]}case`turn-stats`:return renderTurnStats(e,t,n);case`session-boundary`:case`agent-header`:return(e.body??``).split(`
2
2
  `)}}function renderUser(e,t,n){let r=e.promptOrigin===`steer`?n.colors.yellow(n.glyph.user):n.colors.cyan(n.glyph.user);return wrap(e.body??``,t-2).map(e=>`${r} ${e}`)}function renderProse(e,t,n,r){let i=[],a=e.kind===`subagent-step`;if(a&&e.collapsed===!0){let r=firstNonEmptyLine(e.body)??(e.reasoning===void 0?void 0:firstNonEmptyLine(e.reasoning));return r===void 0?[]:[n.colors.dim(sliceVisible(r,Math.max(1,t)))]}let o=r.renderMarkdown??!0,s=a?``:`${n.colors.bold(n.glyph.brand)} `,c=a?``:` `;e.reasoning&&e.reasoning.trim().length>0&&i.push(...renderReasoningLines(e.reasoning,t,n));let l=(e.body??``).trim();return l.length===0&&i.length===0?[`${s}${n.colors.dim(`thinking${n.glyph.ellipsis}`)}`]:(l.length>0&&(o?renderMarkdown(l,t-c.length):l).split(`
3
3
  `).flatMap(e=>wrapVisibleLine(e,t-c.length)).forEach((e,t)=>{t===0&&!a&&i.length===0?i.push(`${s}${e}`):i.push(`${c}${e}`)}),i.length>0?i:[`${s}`])}function renderReasoning(e,t,n){return e.collapsed?[`${n.colors.gray(n.glyph.reasoning)} ${n.colors.dim(e.title??`thinking`)}`]:renderReasoningLines(e.body??``,t,n,n.glyph.reasoning)}function renderReasoningLines(e,t,n,r){let i=r?2:0,a=wrap(e.trim(),t-i);return a.length===0?[]:a.map((e,t)=>`${r?t===0?`${n.colors.gray(r)} `:` `:``}${n.colors.dim(n.colors.italic(e))}`)}function renderError(e,t,n){let r=n.colors.red(n.colors.bold(n.glyph.error)),i=e.title??`Error`,a=[`${r} ${n.colors.red(n.colors.bold(i))}`];for(let r of wrap(e.body??``,t-2))a.push(` ${colorizeError(r,n)}`);if(e.hint!==void 0&&e.hint.trim().length>0)for(let[r,i]of wrap(e.hint,t-4).entries()){let e=r===0?`${n.glyph.arrow} `:` `;a.push(` ${n.colors.cyan(`${e}${i}`)}`)}return a.push(...renderErrorDetail(e.detail,t,n)),a}function renderErrorDetail(e,t,n){if(e===void 0||e.trim().length===0)return[];let r=e.split(`
4
- `),i=r.slice(0,12),a=i.map(e=>` ${n.colors.dim(truncatePlain(e,Math.max(1,t-2)))}`),o=r.length-i.length;return o>0&&a.push(` ${n.colors.dim(`${n.glyph.ellipsis} +${o} more line${o===1?``:`s`}`)}`),a}const URL_PATTERN=/(https?:\/\/\S+)/u;function colorizeError(e,t){return URL_PATTERN.test(e)?e.split(URL_PATTERN).map((e,n)=>n%2==1?t.colors.cyan(e):t.colors.red(e)).join(``):t.colors.red(e)}function renderNotice(e,t,n){let r=n.colors.dim(n.glyph.dot),i=wrap(e.body??``,t-2);return i.length===0?[r]:i.map(e=>`${r} ${n.colors.dim(e)}`)}function renderAttentionRows(e,t,n){let r=n.colors.yellow(n.glyph.warning);return wrap(e,t-2).map((e,t)=>`${t===0?r:` `} ${paintCommands(e,n)}`)}function renderWarning(e,t,n){return renderAttentionRows(e.body??``,t,n)}function paintCommands(e,t){return e.replace(/\/[a-z:-]+/g,e=>isPromptControlCommand(e)?t.colors.blue(e):e)}function renderCommand(e,t){let n=t.colors,r=e.status===`error`?`${n.red(t.glyph.error)} `:``;return[`${n.cyan(t.glyph.user)} ${r}${n.blue(e.body??``)}`]}function paintOutcomeMarker(e,t,n=e){let r=n.trimStart().slice(0,1);return r===`✓`?e.replace(r,t.colors.green(t.glyph.success)):r===`⨯`?e.replace(r,t.colors.red(t.glyph.error)):r===`–`?e.replace(r,t.colors.yellow(t.glyph.dash)):e}function renderFlow(e,t,n){let r=n.colors,i=e.title??`info`,a=i===`success`?r.green(n.glyph.success):i===`warning`?r.yellow(n.glyph.warning):i===`error`?r.red(n.glyph.error):r.dim(n.glyph.dot),o=wrap(e.body??``,t-2),paint=e=>i===`info`?r.dim(e):paintOutcomeMarker(e,n);return o.map((e,t)=>`${t===0?a:` `} ${paint(e)}`)}function renderResult(e,t,n){let r=wrap(e.body??``,t-7);if(e.status===`done`){let e=n.colors.dim(n.glyph.elbow),t=n.colors.green(n.glyph.success),i=n.colors.dim(n.glyph.rule),a=n.colors.dim(n.glyph.corner);return r.length===0?[` ${e} ${t}`]:r.map((n,o)=>o===0?` ${e} ${t} ${n}`:` ${o===r.length-1?a:i} ${n}`)}let i=n.colors.dim(n.glyph.elbow);if(r.length===0)return[` ${i}`];let dim=e=>paintOutcomeMarker(n.colors.dim(e.replaceAll(`\x1B[22m`,`\x1B[22m\x1B[2m`)),n,e);return r.map((e,t)=>t===0?` ${i} ${dim(e)}`:` ${dim(e)}`)}function renderPreformatted(e,t,n){let r=e.kind===`connection-auth`?n.colors.yellow(n.glyph.connection):n.colors.yellow(n.colors.bold(n.glyph.question)),i=e.kind===`question`?` `:` `,a=wrap(e.title??``,t-2),o=a.length===0?[`${r} `]:a.map((e,t)=>t===0?`${r} ${n.colors.bold(e)}`:` ${n.colors.bold(e)}`);for(let n of(e.body??``).split(`
4
+ `),i=r.slice(0,12),a=i.map(e=>` ${n.colors.dim(truncatePlain(e,Math.max(1,t-2)))}`),o=r.length-i.length;return o>0&&a.push(` ${n.colors.dim(`${n.glyph.ellipsis} +${o} more line${o===1?``:`s`}`)}`),a}const URL_PATTERN=/(https?:\/\/\S+)/u;function colorizeError(e,t){return URL_PATTERN.test(e)?e.split(URL_PATTERN).map((e,n)=>n%2==1?t.colors.cyan(e):t.colors.red(e)).join(``):t.colors.red(e)}function renderNotice(e,t,n){let r=n.colors.dim(n.glyph.dot),i=wrap(e.body??``,t-2);return i.length===0?[r]:i.map(e=>`${r} ${n.colors.dim(e)}`)}function renderAttentionRows(e,t,n){let r=n.colors.yellow(n.glyph.warning);return wrap(e,t-2).map((e,t)=>`${t===0?r:` `} ${paintCommands(e,n)}`)}function renderWarning(e,t,n){return renderAttentionRows(e.body??``,t,n)}function paintCommands(e,t){return e.replace(/\/[a-z:-]+/g,e=>isPromptControlCommand(e)?t.colors.blue(e):e)}function renderCommand(e,t){let n=t.colors,r=e.status===`error`?`${n.red(t.glyph.error)} `:``;return[`${n.cyan(t.glyph.user)} ${r}${n.bold(e.body??``)}`]}function paintOutcomeMarker(e,t,n=e){let r=n.trimStart().slice(0,1);return r===`✓`?e.replace(r,t.colors.green(t.glyph.success)):r===`⨯`?e.replace(r,t.colors.red(t.glyph.error)):r===`–`?e.replace(r,t.colors.yellow(t.glyph.dash)):e}function renderFlow(e,t,n){let r=n.colors,i=e.title??`info`,a=i===`success`?r.green(n.glyph.success):i===`warning`?r.yellow(n.glyph.warning):i===`error`?r.red(n.glyph.error):r.dim(n.glyph.dot),o=wrap(e.body??``,t-2),paint=e=>i===`info`?r.dim(e):paintOutcomeMarker(e,n);return o.map((e,t)=>`${t===0?a:` `} ${paint(e)}`)}function renderResult(e,t,n){let r=wrap(e.body??``,t-7);if(e.status===`done`){let e=n.colors.dim(n.glyph.elbow),t=n.colors.green(n.glyph.success),i=n.colors.dim(n.glyph.rule),a=n.colors.dim(n.glyph.corner);return r.length===0?[` ${e} ${t}`]:r.map((n,o)=>o===0?` ${e} ${t} ${n}`:` ${o===r.length-1?a:i} ${n}`)}let i=n.colors.dim(n.glyph.elbow);if(r.length===0)return[` ${i}`];let dim=e=>paintOutcomeMarker(n.colors.dim(e.replaceAll(`\x1B[22m`,`\x1B[22m\x1B[2m`)),n,e);return r.map((e,t)=>t===0?` ${i} ${dim(e)}`:` ${dim(e)}`)}function renderPreformatted(e,t,n){let r=e.kind===`connection-auth`?n.colors.yellow(n.glyph.connection):n.colors.yellow(n.colors.bold(n.glyph.question)),i=e.kind===`question`?` `:` `,a=wrap(e.title??``,t-2),o=a.length===0?[`${r} `]:a.map((e,t)=>t===0?`${r} ${n.colors.bold(e)}`:` ${n.colors.bold(e)}`);for(let n of(e.body??``).split(`
5
5
  `))for(let e of wrapVisibleLine(n,Math.max(1,t-i.length)))o.push(`${i}${e}`);return o}function renderSandbox(e,t,n,r){let i=n.colors.cyan(n.glyph.rule),a=n.colors.dim(`sandbox ${n.glyph.dot} `),o=visibleLength(a),s=` `.repeat(o),c=r.previous?.kind===`sandbox`,l=(e.body??``).split(`
6
6
  `),u=[];for(let e of l){let r=wrapVisibleLine(e,Math.max(1,t-2-o));for(let e of r){let t=u.length===0&&!c?a:s;u.push(`${i} ${t}${n.colors.gray(e)}`)}}return u.length>0?u:[`${i}`]}function renderLog(e,t,n){let r=e.title===`stderr`,i=r?n.colors.red:n.colors.gray,a=n.colors.dim(n.glyph.rule),o=r?`stderr`:`stdout`,s=[`${n.colors.dim(n.glyph.reasoning)} ${n.colors.dim(o)}`];e.elided!==void 0&&e.elided>0&&s.push(`${a} ${elisionText(e.elided,n)}`);for(let r of(e.body??``).split(`
7
7
  `))for(let e of wrapVisibleLine(r,Math.max(1,t-2)))s.push(`${a} ${n.colors.dim(i(e))}`);return s}function renderTurnStats(e,t,n){let r=`${n.glyph.corner} ${e.body??``}`;return[n.colors.dim(truncatePlain(r,Math.max(1,t)))]}function renderSubagentHeader(e,t,n,r){let i=truncatePlain(e.title===void 0||e.title===`agent`?`self`:e.title,Math.max(8,t-16)),a=e.subtitle!==void 0&&e.subtitle.startsWith(`#`),o=a?`:${e.subtitle.slice(1)}`:``,s=` ${e.status===`done`?n.colors.green(n.glyph.subagent):r.activityPulse.trim().length>0?n.colors.orange(n.glyph.subagent):n.colors.dim(n.glyph.subagent)} subagent(${i}${o})`;return!a&&e.subtitle!==void 0&&e.subtitle.length>0&&(s+=` ${n.colors.dim(e.subtitle)}`),[s]}function firstNonEmptyLine(e){return e===void 0?void 0:e.split(/\r?\n/u).find(e=>e.trim().length>0)?.trim()}function wrap(e,t){return e.trim().length===0?[]:e.split(`