eve 0.63.0 → 0.64.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 (485) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/src/ai/evaluate.js +1 -1
  3. package/dist/src/channel/channel-address.d.ts +4 -1
  4. package/dist/src/channel/channel-address.js +1 -1
  5. package/dist/src/channel/channel-operations.d.ts +4 -1
  6. package/dist/src/channel/cross-channel-receive.d.ts +4 -1
  7. package/dist/src/channel/cross-channel-receive.js +1 -1
  8. package/dist/src/channel/session.d.ts +3 -1
  9. package/dist/src/channel/session.js +1 -1
  10. package/dist/src/channel/types.d.ts +7 -0
  11. package/dist/src/chunks/{use-eve-agent-C5-yqRuq.js → use-eve-agent-BdKlQF32.js} +8 -8
  12. package/dist/src/chunks/{use-eve-agent-CVWk5KKy.js → use-eve-agent-IIuxkn6y.js} +8 -8
  13. package/dist/src/cli/commands/build.js +1 -1
  14. package/dist/src/cli/commands/init-agent-workspace.d.ts +2 -0
  15. package/dist/src/cli/commands/init.js +1 -1
  16. package/dist/src/cli/commands/registry-pnpm-build-policy-flow.d.ts +1 -1
  17. package/dist/src/cli/commands/registry-pnpm-build-policy-flow.js +1 -1
  18. package/dist/src/cli/dev/tui/line-editor.d.ts +11 -1
  19. package/dist/src/cli/dev/tui/line-editor.js +3 -3
  20. package/dist/src/cli/dev/tui/model-picker.d.ts +2 -0
  21. package/dist/src/cli/dev/tui/model-picker.js +1 -1
  22. package/dist/src/cli/dev/tui/runner.d.ts +0 -1
  23. package/dist/src/cli/dev/tui/runner.js +2 -2
  24. package/dist/src/cli/dev/tui/setup-panel.js +1 -1
  25. package/dist/src/cli/dev/tui/setup-selection-input.js +1 -1
  26. package/dist/src/cli/dev/tui/stream-format.d.ts +6 -0
  27. package/dist/src/cli/dev/tui/stream-format.js +2 -2
  28. package/dist/src/cli/dev/tui/terminal-renderer.d.ts +0 -1
  29. package/dist/src/cli/dev/tui/terminal-renderer.js +12 -12
  30. package/dist/src/cli/run.js +1 -1
  31. package/dist/src/client/agent-info-schema.d.ts +8 -14
  32. package/dist/src/client/agent-info-schema.js +1 -1
  33. package/dist/src/client/eve-agent-store.js +1 -1
  34. package/dist/src/client/session.js +1 -1
  35. package/dist/src/client/types.d.ts +4 -2
  36. package/dist/src/compiled/.vendor-stamp.json +11 -11
  37. package/dist/src/compiled/@chat-adapter/slack/_chat-adapter-shared.d.ts +1 -0
  38. package/dist/src/compiled/@chat-adapter/slack/api.d.ts +3 -2
  39. package/dist/src/compiled/@chat-adapter/slack/api.js +1 -1
  40. package/dist/src/compiled/@chat-adapter/slack/blocks.js +1 -1
  41. package/dist/src/compiled/@chat-adapter/slack/format.js +1 -1
  42. package/dist/src/compiled/@chat-adapter/slack/index.d.ts +410 -63
  43. package/dist/src/compiled/@chat-adapter/slack/index.js +47 -25
  44. package/dist/src/compiled/@chat-adapter/twilio/api.d.ts +5 -1
  45. package/dist/src/compiled/@chat-adapter/twilio/api.js +1 -1
  46. package/dist/src/compiled/@chat-adapter/twilio/index.d.ts +37 -3
  47. package/dist/src/compiled/@chat-adapter/twilio/index.js +5 -1
  48. package/dist/src/compiled/@chat-adapter/twilio/webhook.d.ts +2 -2
  49. package/dist/src/compiled/@chat-adapter/twilio/webhook.js +1 -1
  50. package/dist/src/compiled/@linqapp/chat-sdk-adapter/index.js +6 -6
  51. package/dist/src/compiled/@photon-ai/chat-adapter-imessage/index.js +50 -50
  52. package/dist/src/compiled/@vercel/sandbox/index.js +4 -4
  53. package/dist/src/compiled/@workflow/core/attribute-changes.d.ts +2 -1
  54. package/dist/src/compiled/@workflow/core/events-consumer.d.ts +6 -3
  55. package/dist/src/compiled/@workflow/core/index.js +2 -2
  56. package/dist/src/compiled/@workflow/core/private.d.ts +37 -5
  57. package/dist/src/compiled/@workflow/core/private.js +1 -1
  58. package/dist/src/compiled/@workflow/core/runtime/deployment-guard.d.ts +2 -1
  59. package/dist/src/compiled/@workflow/core/runtime/helpers.js +1 -1
  60. package/dist/src/compiled/@workflow/core/runtime/invocations.d.ts +35 -0
  61. package/dist/src/compiled/@workflow/core/runtime/lifecycle-hooks.d.ts +90 -0
  62. package/dist/src/compiled/@workflow/core/runtime/quickjs-runtime.d.ts +2 -1
  63. package/dist/src/compiled/@workflow/core/runtime/resume-hook.d.ts +8 -6
  64. package/dist/src/compiled/@workflow/core/runtime/step-single-flight.d.ts +1 -1
  65. package/dist/src/compiled/@workflow/core/runtime.js +4 -4
  66. package/dist/src/compiled/@workflow/core/serialization.d.ts +5 -1
  67. package/dist/src/compiled/@workflow/core/serialization.js +1 -1
  68. package/dist/src/compiled/@workflow/core/version.d.ts +1 -1
  69. package/dist/src/compiled/@workflow/core/workflow/set-attributes.d.ts +4 -0
  70. package/dist/src/compiled/@workflow/core/workflow.js +1 -1
  71. package/dist/src/compiled/@workflow/world/analytics.d.ts +1 -1
  72. package/dist/src/compiled/@workflow/world/attributes-validation.d.ts +5 -0
  73. package/dist/src/compiled/@workflow/world/events.d.ts +2 -2
  74. package/dist/src/compiled/@workflow/world/index.d.ts +2 -1
  75. package/dist/src/compiled/@workflow/world/interfaces.d.ts +12 -1
  76. package/dist/src/compiled/@workflow/world/invocation.d.ts +19 -0
  77. package/dist/src/compiled/@workflow/world/queue.d.ts +24 -3
  78. package/dist/src/compiled/@workflow/world-local/index.js +3 -3
  79. package/dist/src/compiled/@workflow/world-vercel/index.js +16 -16
  80. package/dist/src/compiled/_chunks/node/chunk-6QHBXN7B-gl4n6nmi.js +12 -0
  81. package/dist/src/compiled/_chunks/node/chunk-7WDLOIRP-B_IWkVtZ.js +1 -0
  82. package/dist/src/compiled/_chunks/node/chunk-KBOOTKHF-DJqFk2r1.js +1 -0
  83. package/dist/src/compiled/_chunks/node/chunk-TREVQR3E-CLsTAn-O.js +1 -0
  84. package/dist/src/compiled/_chunks/node/dist-DYDVZ-FS.js +98 -0
  85. package/dist/src/compiled/_chunks/node/dist-iEFkK9qw.js +6 -0
  86. package/dist/src/compiled/_chunks/workflow/attribute-changes-DFx4eluc.js +6 -0
  87. package/dist/src/compiled/_chunks/workflow/{dist-D38gP7YF.js → dist-DjECvUyK.js} +1 -1
  88. package/dist/src/compiled/_chunks/workflow/{frames-QcJfYHmh.js → frames-D_Q-7A1N.js} +2 -2
  89. package/dist/src/compiled/_chunks/workflow/{helpers-6kObVbfS.js → helpers-Bw52uyzw.js} +1 -1
  90. package/dist/src/compiled/_chunks/workflow/{logger-NN5YHpYy.js → logger-DFNCa8Nl.js} +1 -1
  91. package/dist/src/compiled/_chunks/workflow/resume-hook-BhA_nDEV.js +1 -0
  92. package/dist/src/compiled/_chunks/workflow/{run-DJevv8zz.js → run-BT6SQv5f.js} +1 -1
  93. package/dist/src/compiled/_chunks/workflow/{serialization-C5KgPESk.js → serialization-Cl0SYU0I.js} +3 -3
  94. package/dist/src/compiled/_chunks/workflow/sleep-DB4AH9-A.js +1 -0
  95. package/dist/src/compiled/_chunks/workflow/{wait-until-BMY_tOr-.js → wait-until-Dzhr6tzf.js} +1 -1
  96. package/dist/src/compiled/_chunks/workflow/{ws-transport-DSDcKH08.js → ws-transport-BpTMh40s.js} +1 -1
  97. package/dist/src/compiled/chat/index.d.ts +1 -725
  98. package/dist/src/compiled/chat/index.js +1 -1
  99. package/dist/src/compiler/artifacts.d.ts +1 -0
  100. package/dist/src/compiler/artifacts.js +1 -1
  101. package/dist/src/compiler/extension-compatibility.d.ts +23 -15
  102. package/dist/src/compiler/extension-compatibility.js +1 -1
  103. package/dist/src/compiler/manifest.d.ts +14 -18
  104. package/dist/src/compiler/manifest.js +1 -1
  105. package/dist/src/compiler/normalize-helpers.js +1 -1
  106. package/dist/src/compiler/normalize-sandbox.d.ts +2 -7
  107. package/dist/src/compiler/normalize-sandbox.js +1 -1
  108. package/dist/src/compiler/workspace-resources.js +1 -1
  109. package/dist/src/context/build-callback-context.d.ts +2 -0
  110. package/dist/src/context/build-callback-context.js +1 -1
  111. package/dist/src/context/container.d.ts +1 -1
  112. package/dist/src/context/container.js +1 -1
  113. package/dist/src/context/key-names.d.ts +1 -0
  114. package/dist/src/context/key-names.js +1 -1
  115. package/dist/src/context/keys.d.ts +7 -2
  116. package/dist/src/context/keys.js +1 -1
  117. package/dist/src/context/providers/sandbox.js +1 -1
  118. package/dist/src/context/providers/session.d.ts +19 -2
  119. package/dist/src/context/session-context.d.ts +1 -1
  120. package/dist/src/discover/sandbox.js +1 -1
  121. package/dist/src/evals/cli/eval.js +1 -1
  122. package/dist/src/evals/context.d.ts +1 -0
  123. package/dist/src/evals/context.js +1 -1
  124. package/dist/src/evals/define-eval-config.d.ts +7 -7
  125. package/dist/src/evals/define-eval-config.js +1 -1
  126. package/dist/src/evals/define-eval.d.ts +5 -2
  127. package/dist/src/evals/index.d.ts +1 -1
  128. package/dist/src/evals/runner/execute-eval.d.ts +2 -0
  129. package/dist/src/evals/runner/execute-eval.js +1 -1
  130. package/dist/src/evals/runner/execute-task.d.ts +2 -0
  131. package/dist/src/evals/runner/execute-task.js +1 -1
  132. package/dist/src/evals/runner/run-evals.d.ts +2 -0
  133. package/dist/src/evals/runner/run-evals.js +1 -1
  134. package/dist/src/evals/target.js +1 -1
  135. package/dist/src/evals/types.d.ts +22 -6
  136. package/dist/src/eve-channel/create-request.d.ts +2 -1
  137. package/dist/src/eve-channel/delivery-policy-request.d.ts +4 -0
  138. package/dist/src/eve-channel/delivery-policy-request.js +1 -0
  139. package/dist/src/eve-channel/index.js +1 -1
  140. package/dist/src/eve-channel/request.d.ts +2 -1
  141. package/dist/src/eve-channel/request.js +1 -1
  142. package/dist/src/execution/coordination-dispatch-shared.d.ts +2 -1
  143. package/dist/src/execution/coordination-dispatch-shared.js +1 -1
  144. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  145. package/dist/src/execution/runtime-context.js +1 -1
  146. package/dist/src/execution/sandbox/active-handles.d.ts +7 -8
  147. package/dist/src/execution/sandbox/active-handles.js +1 -1
  148. package/dist/src/execution/sandbox/bash.js +1 -1
  149. package/dist/src/execution/sandbox/bindings/docker-cli.d.ts +1 -1
  150. package/dist/src/execution/sandbox/bindings/docker-cli.js +1 -1
  151. package/dist/src/execution/sandbox/bindings/docker-container.d.ts +2 -2
  152. package/dist/src/execution/sandbox/bindings/docker-container.js +1 -1
  153. package/dist/src/execution/sandbox/bindings/docker-network.d.ts +1 -1
  154. package/dist/src/execution/sandbox/bindings/docker-network.js +1 -1
  155. package/dist/src/execution/sandbox/bindings/docker-options.d.ts +4 -5
  156. package/dist/src/execution/sandbox/bindings/docker-options.js +1 -1
  157. package/dist/src/execution/sandbox/bindings/docker-session.d.ts +0 -1
  158. package/dist/src/execution/sandbox/bindings/docker-session.js +2 -2
  159. package/dist/src/execution/sandbox/bindings/docker.d.ts +16 -18
  160. package/dist/src/execution/sandbox/bindings/docker.js +1 -1
  161. package/dist/src/execution/sandbox/bindings/immutable-resources.d.ts +21 -0
  162. package/dist/src/execution/sandbox/bindings/immutable-resources.js +2 -0
  163. package/dist/src/execution/sandbox/bindings/just-bash-runtime.d.ts +9 -5
  164. package/dist/src/execution/sandbox/bindings/just-bash-runtime.js +1 -1
  165. package/dist/src/execution/sandbox/bindings/just-bash.d.ts +13 -26
  166. package/dist/src/execution/sandbox/bindings/just-bash.js +1 -1
  167. package/dist/src/execution/sandbox/bindings/{local-backend-utils.d.ts → local-provider-utils.d.ts} +7 -5
  168. package/dist/src/execution/sandbox/bindings/local-provider-utils.js +1 -0
  169. package/dist/src/execution/sandbox/bindings/local.d.ts +3 -3
  170. package/dist/src/execution/sandbox/bindings/local.js +1 -1
  171. package/dist/src/execution/sandbox/bindings/microsandbox-create.js +1 -1
  172. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.d.ts +30 -8
  173. package/dist/src/execution/sandbox/bindings/microsandbox-lifecycle.js +1 -1
  174. package/dist/src/execution/sandbox/bindings/microsandbox-metadata.d.ts +9 -1
  175. package/dist/src/execution/sandbox/bindings/microsandbox-metadata.js +1 -1
  176. package/dist/src/execution/sandbox/bindings/microsandbox-network.js +1 -1
  177. package/dist/src/execution/sandbox/bindings/microsandbox-options.d.ts +10 -4
  178. package/dist/src/execution/sandbox/bindings/microsandbox-options.js +1 -1
  179. package/dist/src/execution/sandbox/bindings/microsandbox-platform.js +1 -1
  180. package/dist/src/execution/sandbox/bindings/microsandbox-runtime.d.ts +7 -5
  181. package/dist/src/execution/sandbox/bindings/microsandbox-runtime.js +1 -1
  182. package/dist/src/execution/sandbox/bindings/microsandbox-templates.js +1 -1
  183. package/dist/src/execution/sandbox/bindings/microsandbox.d.ts +11 -21
  184. package/dist/src/execution/sandbox/bindings/microsandbox.js +1 -1
  185. package/dist/src/execution/sandbox/bindings/vercel-base-runtime.js +2 -2
  186. package/dist/src/execution/sandbox/bindings/vercel-credentials.js +1 -1
  187. package/dist/src/execution/sandbox/bindings/vercel-errors.js +1 -1
  188. package/dist/src/execution/sandbox/bindings/vercel-lifecycle.d.ts +2 -2
  189. package/dist/src/execution/sandbox/bindings/vercel-lifecycle.js +1 -1
  190. package/dist/src/execution/sandbox/bindings/vercel-lookup.js +1 -1
  191. package/dist/src/execution/sandbox/bindings/vercel-options.d.ts +1 -2
  192. package/dist/src/execution/sandbox/bindings/vercel-options.js +1 -1
  193. package/dist/src/execution/sandbox/bindings/vercel.d.ts +20 -12
  194. package/dist/src/execution/sandbox/bindings/vercel.js +2 -2
  195. package/dist/src/execution/sandbox/development-cleanup.js +1 -1
  196. package/dist/src/execution/sandbox/development-lazy-prewarm.d.ts +7 -0
  197. package/dist/src/execution/sandbox/development-lazy-prewarm.js +1 -0
  198. package/dist/src/execution/sandbox/development-run.d.ts +2 -3
  199. package/dist/src/execution/sandbox/dockerfile.d.ts +25 -0
  200. package/dist/src/execution/sandbox/dockerfile.js +1 -0
  201. package/dist/src/execution/sandbox/ensure.d.ts +0 -17
  202. package/dist/src/execution/sandbox/ensure.js +1 -1
  203. package/dist/src/execution/sandbox/logging-session.js +1 -1
  204. package/dist/src/execution/sandbox/prewarm.d.ts +23 -27
  205. package/dist/src/execution/sandbox/prewarm.js +1 -2
  206. package/dist/src/execution/sandbox/provider-files.d.ts +2 -0
  207. package/dist/src/execution/sandbox/provider-files.js +1 -0
  208. package/dist/src/execution/sandbox/provider-host-development.d.ts +2 -0
  209. package/dist/src/execution/sandbox/provider-host-development.js +1 -0
  210. package/dist/src/execution/sandbox/provider-host.d.ts +2 -0
  211. package/dist/src/execution/sandbox/provider-host.js +1 -0
  212. package/dist/src/execution/sandbox/provider-identity.d.ts +1 -0
  213. package/dist/src/execution/sandbox/provider-identity.js +1 -0
  214. package/dist/src/execution/sandbox/ripgrep-probe.d.ts +0 -7
  215. package/dist/src/execution/sandbox/ripgrep-probe.js +1 -1
  216. package/dist/src/execution/sandbox/session.d.ts +8 -8
  217. package/dist/src/execution/sandbox/session.js +1 -1
  218. package/dist/src/execution/session/handoff-steps.js +1 -1
  219. package/dist/src/execution/session/handoff.d.ts +1 -1
  220. package/dist/src/execution/session/handoff.js +1 -1
  221. package/dist/src/execution/session/input-queue.d.ts +2 -1
  222. package/dist/src/execution/session/input-queue.js +1 -1
  223. package/dist/src/execution/session/next-input.js +1 -1
  224. package/dist/src/execution/session/program.js +1 -1
  225. package/dist/src/execution/session/turn-step.js +1 -1
  226. package/dist/src/execution/session-inbox/protocol.js +1 -1
  227. package/dist/src/execution/tasks/parent/tool-execution.js +1 -1
  228. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  229. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  230. package/dist/src/execution/tools/subagent/emit-event-step.js +1 -1
  231. package/dist/src/execution/tools/subagent/invoke-preparation.js +1 -1
  232. package/dist/src/execution/tools/subagent/start.d.ts +1 -0
  233. package/dist/src/framework/sources/modules/sandbox.d.ts +2 -1
  234. package/dist/src/framework/sources/modules/sandbox.js +1 -1
  235. package/dist/src/harness/approval-delivery-coordinator.js +1 -1
  236. package/dist/src/harness/hitl/approval-input-requests.d.ts +1 -1
  237. package/dist/src/harness/hitl/approval-input-requests.js +1 -1
  238. package/dist/src/harness/input-requests.d.ts +6 -0
  239. package/dist/src/harness/input-requests.js +1 -1
  240. package/dist/src/harness/messages.d.ts +2 -1
  241. package/dist/src/harness/messages.js +1 -1
  242. package/dist/src/harness/pending-input-batches.d.ts +1 -0
  243. package/dist/src/harness/pending-input-batches.js +1 -1
  244. package/dist/src/harness/tool-loop.js +2 -2
  245. package/dist/src/instrumentation/ai-sdk-warnings.d.ts +6 -0
  246. package/dist/src/instrumentation/ai-sdk-warnings.js +1 -0
  247. package/dist/src/instrumentation/runtime.d.ts +1 -0
  248. package/dist/src/instrumentation/runtime.js +1 -1
  249. package/dist/src/internal/application/compiled-artifacts.d.ts +2 -0
  250. package/dist/src/internal/application/compiled-artifacts.js +2 -2
  251. package/dist/src/internal/application/optional-package-install.d.ts +3 -0
  252. package/dist/src/internal/application/optional-package-install.js +2 -2
  253. package/dist/src/internal/application/output-publication-lock.d.ts +6 -0
  254. package/dist/src/internal/application/output-publication-lock.js +1 -1
  255. package/dist/src/internal/application/output-publication.js +1 -1
  256. package/dist/src/internal/application/package.js +1 -1
  257. package/dist/src/internal/authored-module-loader.d.ts +1 -0
  258. package/dist/src/internal/authored-module-loader.js +1 -1
  259. package/dist/src/internal/authored-runtime-modules.d.ts +1 -0
  260. package/dist/src/internal/nitro/development-generation.js +1 -1
  261. package/dist/src/internal/nitro/host/artifacts-config.d.ts +6 -1
  262. package/dist/src/internal/nitro/host/artifacts-config.js +1 -1
  263. package/dist/src/internal/nitro/host/build-application.js +1 -1
  264. package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.d.ts +16 -0
  265. package/dist/src/internal/nitro/host/compiled-sandbox-provider-prune-plugin.js +5 -0
  266. package/dist/src/internal/nitro/host/configure-nitro-routes.js +2 -2
  267. package/dist/src/internal/nitro/host/create-application-nitro.d.ts +3 -3
  268. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  269. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
  270. package/dist/src/internal/nitro/host/dev-host-fingerprint.js +1 -1
  271. package/dist/src/internal/nitro/host/development-runtime-prune-plugin.d.ts +9 -0
  272. package/dist/src/internal/nitro/host/development-runtime-prune-plugin.js +2 -0
  273. package/dist/src/internal/nitro/host/prepare-application-host.d.ts +1 -0
  274. package/dist/src/internal/nitro/host/prepare-application-host.js +1 -1
  275. package/dist/src/internal/nitro/host/sandbox-shutdown-plugin.js +1 -1
  276. package/dist/src/internal/nitro/host/start-development-server.js +2 -2
  277. package/dist/src/internal/nitro/host/start-production-server.js +2 -2
  278. package/dist/src/internal/nitro/host/types.d.ts +1 -1
  279. package/dist/src/internal/nitro/routes/agent-info/build-agent-info-response.js +1 -1
  280. package/dist/src/internal/nitro/routes/runtime-artifacts.d.ts +1 -0
  281. package/dist/src/internal/nitro/routes/runtime-artifacts.js +1 -1
  282. package/dist/src/internal/runtime-registry.d.ts +2 -2
  283. package/dist/src/internal/vercel/build-agent-workspace.d.ts +3 -1
  284. package/dist/src/internal/vercel/build-agent-workspace.js +1 -1
  285. package/dist/src/public/channels/chat-sdk/chatSdkChannel.d.ts +4 -5
  286. package/dist/src/public/channels/chat-sdk/chatSdkChannel.js +2 -2
  287. package/dist/src/public/channels/github/checkout.js +1 -1
  288. package/dist/src/public/channels/index.d.ts +1 -1
  289. package/dist/src/public/channels/slack/slackChannel.d.ts +3 -1
  290. package/dist/src/public/channels/slack/slackChannel.js +1 -1
  291. package/dist/src/public/definitions/channel.d.ts +1 -1
  292. package/dist/src/public/definitions/sandbox.d.ts +5 -43
  293. package/dist/src/public/definitions/sandbox.js +1 -1
  294. package/dist/src/public/local-dev.d.ts +4 -5
  295. package/dist/src/public/next/vercel-output-config.js +1 -1
  296. package/dist/src/public/sandbox/docker-sandbox.d.ts +16 -40
  297. package/dist/src/public/sandbox/docker.d.ts +2 -2
  298. package/dist/src/public/sandbox/docker.js +1 -1
  299. package/dist/src/public/sandbox/index.d.ts +4 -9
  300. package/dist/src/public/sandbox/index.js +1 -1
  301. package/dist/src/public/sandbox/just-bash-sandbox.d.ts +11 -6
  302. package/dist/src/public/sandbox/just-bash.d.ts +2 -2
  303. package/dist/src/public/sandbox/just-bash.js +1 -1
  304. package/dist/src/public/sandbox/microsandbox-sandbox.d.ts +11 -17
  305. package/dist/src/public/sandbox/microsandbox.d.ts +2 -2
  306. package/dist/src/public/sandbox/microsandbox.js +1 -1
  307. package/dist/src/public/sandbox/provider.d.ts +1 -0
  308. package/dist/src/public/sandbox/provider.js +1 -0
  309. package/dist/src/public/sandbox/vercel-sandbox.d.ts +10 -41
  310. package/dist/src/public/sandbox/vercel.d.ts +2 -2
  311. package/dist/src/public/sandbox/vercel.js +1 -1
  312. package/dist/src/runtime/cache-key.js +1 -1
  313. package/dist/src/runtime/compiled-artifacts-source.d.ts +6 -1
  314. package/dist/src/runtime/compiled-artifacts-source.js +1 -1
  315. package/dist/src/runtime/loaders/artifact-paths.d.ts +1 -0
  316. package/dist/src/runtime/loaders/artifact-paths.js +1 -1
  317. package/dist/src/runtime/loaders/bundled-artifacts.d.ts +3 -0
  318. package/dist/src/runtime/loaders/bundled-artifacts.js +1 -1
  319. package/dist/src/runtime/loaders/compile-metadata.js +1 -1
  320. package/dist/src/runtime/loaders/manifest.js +1 -1
  321. package/dist/src/runtime/loaders/module-map.js +1 -1
  322. package/dist/src/runtime/local-dev-capability.d.ts +14 -12
  323. package/dist/src/runtime/local-dev-capability.js +1 -1
  324. package/dist/src/runtime/resolve-agent-graph.js +1 -1
  325. package/dist/src/runtime/resolve-sandbox.d.ts +1 -10
  326. package/dist/src/runtime/resolve-sandbox.js +1 -1
  327. package/dist/src/runtime/sandbox/prepared-artifacts.d.ts +13 -0
  328. package/dist/src/runtime/sandbox/prepared-artifacts.js +1 -0
  329. package/dist/src/runtime/sandbox/registry.d.ts +2 -9
  330. package/dist/src/runtime/sandbox/registry.js +1 -1
  331. package/dist/src/runtime/sessions/runtime-session.js +1 -1
  332. package/dist/src/runtime/types.d.ts +13 -26
  333. package/dist/src/runtime/workspace/types.d.ts +1 -1
  334. package/dist/src/sandbox/providers/default.d.ts +27 -0
  335. package/dist/src/sandbox/providers/default.js +1 -0
  336. package/dist/src/sandbox/providers/docker.d.ts +11 -0
  337. package/dist/src/sandbox/providers/docker.js +1 -0
  338. package/dist/src/sandbox/providers/just-bash.d.ts +4 -0
  339. package/dist/src/sandbox/providers/just-bash.js +1 -0
  340. package/dist/src/sandbox/providers/microsandbox.d.ts +12 -0
  341. package/dist/src/sandbox/providers/microsandbox.js +1 -0
  342. package/dist/src/sandbox/providers/vercel.d.ts +12 -0
  343. package/dist/src/sandbox/providers/vercel.js +1 -0
  344. package/dist/src/sandbox/providers.d.ts +5 -0
  345. package/dist/src/sandbox/providers.js +1 -0
  346. package/dist/src/sandbox/state.d.ts +6 -25
  347. package/dist/src/self-modification/extension/subagents/agent/agent.d.ts +1 -1
  348. package/dist/src/self-modification/extension/subagents/agent/agent.js +1 -1
  349. package/dist/src/self-modification/extension/subagents/agent/sandbox.d.ts +2 -25
  350. package/dist/src/self-modification/extension/subagents/agent/sandbox.js +1 -1
  351. package/dist/src/self-modification/extension/subagents/agent/tools/publish.js +1 -1
  352. package/dist/src/self-modification/extension/subagents/agent/tools/registry_add.js +1 -1
  353. package/dist/src/self-modification/filesystem.d.ts +3 -1
  354. package/dist/src/self-modification/filesystem.js +1 -1
  355. package/dist/src/self-modification/git-workspace.d.ts +1 -1
  356. package/dist/src/self-modification/git.d.ts +1 -1
  357. package/dist/src/self-modification/sandbox.d.ts +14 -9
  358. package/dist/src/self-modification/sandbox.js +1 -1
  359. package/dist/src/setup/boxes/select-model.js +1 -1
  360. package/dist/src/setup/cli/select-state.d.ts +4 -2
  361. package/dist/src/setup/cli/select-state.js +1 -1
  362. package/dist/src/setup/flows/model-login.js +1 -1
  363. package/dist/src/{cli/commands/registry-pnpm-build-policy.d.ts → setup/primitives/pm/pnpm-build-policy.d.ts} +4 -0
  364. package/dist/src/setup/primitives/pm/pnpm-build-policy.js +8 -0
  365. package/dist/src/setup/primitives/pm/pnpm.js +3 -2
  366. package/dist/src/setup/scaffold/create/project.js +1 -1
  367. package/dist/src/shared/default-agent-model.d.ts +1 -1
  368. package/dist/src/shared/default-agent-model.js +1 -1
  369. package/dist/src/shared/sandbox-environment.d.ts +45 -0
  370. package/dist/src/shared/sandbox-environment.js +1 -0
  371. package/dist/src/shared/sandbox-network-policy.d.ts +8 -3
  372. package/dist/src/shared/sandbox-network-policy.js +1 -1
  373. package/dist/src/shared/sandbox-prepared-artifacts.d.ts +16 -0
  374. package/dist/src/shared/sandbox-prepared-artifacts.js +1 -0
  375. package/dist/src/shared/sandbox-provider.d.ts +112 -0
  376. package/dist/src/shared/sandbox-provider.js +1 -0
  377. package/dist/src/shared/sandbox-session.d.ts +18 -41
  378. package/dist/src/shared/sandbox-template-error.d.ts +9 -0
  379. package/dist/src/shared/sandbox-template-error.js +1 -0
  380. package/dist/src/subagents/tool.d.ts +1 -1
  381. package/dist/src/subagents/tool.js +1 -1
  382. package/dist/src/svelte/index.js +1 -1
  383. package/dist/src/svelte/use-eve-agent.js +1 -1
  384. package/dist/src/tasks/delivery-context.d.ts +6 -4
  385. package/dist/src/tasks/delivery-context.js +1 -1
  386. package/dist/src/tasks/delivery-policy.d.ts +2 -0
  387. package/dist/src/tasks/delivery-policy.js +1 -1
  388. package/dist/src/tools/framework/agent-contract.js +1 -1
  389. package/dist/src/vue/index.js +1 -1
  390. package/dist/src/vue/use-eve-agent.js +1 -1
  391. package/docs/README.md +40 -45
  392. package/docs/agent-config.md +2 -2
  393. package/docs/channels/eve.mdx +1 -1
  394. package/docs/channels/overview.mdx +48 -0
  395. package/docs/channels/slack.mdx +1 -1
  396. package/docs/concepts/execution-model-and-durability.mdx +1 -1
  397. package/docs/concepts/sessions-runs-and-streaming.md +3 -3
  398. package/docs/dynamic-configuration/meta.json +5 -0
  399. package/docs/evals/overview.mdx +43 -0
  400. package/docs/getting-started.mdx +1 -1
  401. package/docs/guides/client/overview.mdx +1 -1
  402. package/docs/guides/deployment/overview.md +1 -1
  403. package/docs/guides/deployment/self-hosting.md +5 -5
  404. package/docs/guides/deployment/vercel.mdx +10 -18
  405. package/docs/guides/dev-tui.md +1 -1
  406. package/docs/guides/hooks.md +4 -0
  407. package/docs/guides/instrumentation/instrumentation.mdx +1 -1
  408. package/docs/guides/instrumentation/migration.md +1 -6
  409. package/docs/guides/instrumentation/otel.mdx +15 -47
  410. package/docs/memory/meta.json +1 -1
  411. package/docs/memory/overview.mdx +4 -0
  412. package/docs/meta.json +13 -16
  413. package/docs/patterns/meta.json +2 -2
  414. package/docs/protocols/acp.md +1 -1
  415. package/docs/protocols/ucp.mdx +1 -1
  416. package/docs/reference/cli.md +10 -9
  417. package/docs/reference/meta.json +4 -1
  418. package/docs/reference/typescript-api.md +2 -25
  419. package/docs/sandbox/default.mdx +17 -0
  420. package/docs/sandbox/docker.mdx +29 -0
  421. package/docs/sandbox/index.mdx +218 -0
  422. package/docs/sandbox/just-bash.mdx +24 -0
  423. package/docs/sandbox/meta.json +5 -0
  424. package/docs/sandbox/microsandbox.mdx +31 -0
  425. package/docs/sandbox/vercel.mdx +106 -0
  426. package/docs/schedules.mdx +35 -1
  427. package/docs/subagents/index.mdx +31 -13
  428. package/docs/subagents/meta.json +1 -1
  429. package/docs/tools/overview.mdx +14 -6
  430. package/docs/tutorial/run-analysis.mdx +6 -5
  431. package/package.json +20 -11
  432. package/dist/src/cli/commands/registry-pnpm-build-policy.js +0 -6
  433. package/dist/src/compiled/_chunks/node/chunk-5OX2R7AJ-CxVV-owP.js +0 -1
  434. package/dist/src/compiled/_chunks/node/chunk-AYN7QRWH-B__hKQV7.js +0 -1
  435. package/dist/src/compiled/_chunks/node/chunk-QZV7YRVM-Dzw4WEBv.js +0 -1
  436. package/dist/src/compiled/_chunks/node/dist-CweJdVFE.js +0 -6
  437. package/dist/src/compiled/_chunks/node/dist-Da54NuK8.js +0 -96
  438. package/dist/src/compiled/_chunks/workflow/attribute-changes-A6HfMNG3.js +0 -6
  439. package/dist/src/compiled/_chunks/workflow/resume-hook-CAqlhwic.js +0 -1
  440. package/dist/src/compiled/_chunks/workflow/sleep-CbUwdv6O.js +0 -1
  441. package/dist/src/compiled/chat/_mdast.d.ts +0 -24
  442. package/dist/src/compiled/chat/_workflow-serde.d.ts +0 -3
  443. package/dist/src/compiled/chat/jsx-runtime-_JEEAotp.d.ts +0 -907
  444. package/dist/src/execution/sandbox/bindings/local-backend-utils.js +0 -1
  445. package/dist/src/execution/sandbox/development-prewarm.d.ts +0 -15
  446. package/dist/src/execution/sandbox/development-prewarm.js +0 -1
  447. package/dist/src/execution/sandbox/lazy-backend.d.ts +0 -15
  448. package/dist/src/execution/sandbox/lazy-backend.js +0 -1
  449. package/dist/src/execution/sandbox/template-prewarm-lock.d.ts +0 -8
  450. package/dist/src/execution/sandbox/template-prewarm-lock.js +0 -1
  451. package/dist/src/internal/authored-definition/sandbox.d.ts +0 -17
  452. package/dist/src/internal/authored-definition/sandbox.js +0 -1
  453. package/dist/src/internal/nitro/host/compiled-sandbox-backend-prune-plugin.d.ts +0 -16
  454. package/dist/src/internal/nitro/host/compiled-sandbox-backend-prune-plugin.js +0 -2
  455. package/dist/src/public/definitions/sandbox-backend.d.ts +0 -17
  456. package/dist/src/public/definitions/sandbox-backend.js +0 -1
  457. package/dist/src/public/sandbox/backends/default.d.ts +0 -1
  458. package/dist/src/public/sandbox/backends/default.js +0 -1
  459. package/dist/src/public/sandbox/backends/docker.d.ts +0 -1
  460. package/dist/src/public/sandbox/backends/docker.js +0 -1
  461. package/dist/src/public/sandbox/backends/just-bash.d.ts +0 -1
  462. package/dist/src/public/sandbox/backends/just-bash.js +0 -1
  463. package/dist/src/public/sandbox/backends/microsandbox.d.ts +0 -1
  464. package/dist/src/public/sandbox/backends/microsandbox.js +0 -1
  465. package/dist/src/public/sandbox/backends/vercel.d.ts +0 -1
  466. package/dist/src/public/sandbox/backends/vercel.js +0 -1
  467. package/dist/src/runtime/sandbox/keys.d.ts +0 -42
  468. package/dist/src/runtime/sandbox/keys.js +0 -1
  469. package/dist/src/runtime/sandbox/template-plan.d.ts +0 -24
  470. package/dist/src/runtime/sandbox/template-plan.js +0 -1
  471. package/dist/src/sandbox/backends/default.d.ts +0 -42
  472. package/dist/src/sandbox/backends/default.js +0 -1
  473. package/dist/src/sandbox/backends/docker.d.ts +0 -14
  474. package/dist/src/sandbox/backends/docker.js +0 -1
  475. package/dist/src/sandbox/backends/just-bash.d.ts +0 -17
  476. package/dist/src/sandbox/backends/just-bash.js +0 -1
  477. package/dist/src/sandbox/backends/microsandbox.d.ts +0 -17
  478. package/dist/src/sandbox/backends/microsandbox.js +0 -1
  479. package/dist/src/sandbox/backends/vercel.d.ts +0 -30
  480. package/dist/src/sandbox/backends/vercel.js +0 -1
  481. package/dist/src/shared/sandbox-backend.d.ts +0 -176
  482. package/dist/src/shared/sandbox-backend.js +0 -1
  483. package/dist/src/shared/sandbox-definition.d.ts +0 -112
  484. package/dist/src/shared/sandbox-definition.js +0 -1
  485. package/docs/sandbox.mdx +0 -342
@@ -1,15 +1,15 @@
1
- import{buildAgentHeader}from"./agent-header.js";import{detectMarkdownRendering}from"./markdown.js";import{PROMPT_COMMANDS,isPromptControlCommand,parsePromptCommand}from"./prompt-commands.js";import{renderAttentionRows,renderBlockLines}from"./blocks.js";import{copyTextToClipboard}from"./clipboard.js";import{dismissTypeahead,inlineCommandHint,isTypeaheadOpen,moveTypeaheadSelection,renderCommandSuggestions,selectedTypeaheadCommand,typeaheadCompletion,typeaheadFor}from"./command-typeahead.js";import{formatDevRebuildStatus,summarizeChangedFiles}from"./dev-rebuild-status.js";import{formatStoredDiagnostic,presentDiagnostic}from"./diagnostic-presentation.js";import{interruptedError}from"./errors.js";import{FileContentCache}from"./file-content-cache.js";import{EMPTY_LINE,PromptHistory,applyLineEditorKey,deleteForward,layoutPromptInput,lineOf,movePromptLine,visibleLine}from"./line-editor.js";import{nextLogDisplayMode}from"./log-display-mode.js";import{MessageQueue,renderMessageQueueRows}from"./message-queue.js";import{enterBadge,flowMessageRows,renderAcknowledgeQuestion,renderFlowPanel,renderSelectQuestion,renderTextQuestion}from"./setup-panel.js";import{initialModelPickerState,modelPickerTitle,renderModelPicker,transitionModelPicker}from"./model-picker.js";import{initialProviderPickerState,transitionProviderPicker}from"./provider-picker.js";import{renderQuestionPanel}from"./question-panel.js";import{formatAssistantResponseStats,formatTokenFlow,formatTurnDuration,isIncompleteOsc,isIncompletePaste,nextKey,sanitizePastedText,stripPasteStart,stripPromptControlCharacters,takeUntil}from"./stream-format.js";import{TraceViewerSession}from"./traces/trace-viewer-session.js";import{buildStatusLine}from"./status-line.js";import{createTheme,detectUnicode}from"./theme.js";import{isPanelRoutedTool,presentPreparingTool,presentTool,readWriteFileInput,toolBaseName}from"./tool-presentation.js";import{groupToolBlocksForDisplay}from"./tool-block-groups.js";import{TurnClock}from"./turn-clock.js";import{allTodoItemsSettled,readTodoToolItems,renderFinishedTodoRows,renderTodoPanelRows}from"./todo-panel.js";import{reduceSetupSelectInput,setupSelectionIntent}from"./setup-selection-input.js";import{BACKGROUND_COLOR_QUERY,parseBackgroundColorReply}from"./terminal-background.js";import{inspectError}from"#internal/logging.js";import{eveVersionTag}from"#cli/banner.js";import{clipVisible,renderInputText,renderInputWithBlockCursor,stripAnsi,stripTerminalControls}from"#cli/ui/terminal-text.js";import{renderCursorRow}from"#setup/cli/option-row.js";import{initialSelectState,orderedSelection,reduceSelect,searchActionQuery,selectValueAtCursor}from"#setup/cli/select-state.js";import{toErrorMessage}from"#shared/errors.js";import{StringDecoder}from"node:string_decoder";import{summarizeKnownError}from"#harness/semantic-errors/index.js";import{parseDevRebuildLogLine}from"#internal/nitro/host/dev-watcher-log.js";import{LiveRegion}from"#cli/ui/live-region.js";import{AltScreen}from"#cli/ui/alt-screen.js";import{PROGRESS_PULSE_ASCII_GLYPH,PROGRESS_PULSE_GLYPH,isProgressPulseVisible}from"#cli/ui/progress-pulse.js";import{readGatewayServiceTier}from"#shared/gateway-service-tier.js";function isMultiSelectRequest(e){return e.kind===`multi`||e.kind===`searchable-multi`}function moveActionCursor(e,t,n){return n===0?void 0:e===void 0?t===`down`?0:n-1:(e+(t===`down`?1:-1)+n)%n}function completedTurnStatus(e){return e.interrupted?`Interrupted`:e.cancelled?`Cancelled`:e.continueSession?`Ready`:`Done`}function turnActivityLabel(e){return e===void 0?`Thinking`:e.runningTools.size>0?`Running`:e.modelActivity}function updateTurnActivity(e,t){switch(t.type){case`turn-start`:case`step-start`:case`reasoning-delta`:e.modelActivity=`Thinking`;break;case`assistant-delta`:case`tool-call-preparing`:e.modelActivity=`Generating`;break;case`assistant-complete`:t.text?.trim()&&(e.modelActivity=`Generating`);break;case`tool-call`:e.runningTools.add(t.toolCallId),e.modelActivity=`Thinking`;break;case`tool-result`:case`tool-error`:case`tool-rejected`:e.runningTools.delete(t.toolCallId)}}const incompletePasteFlushMs=1e3,STATUS={processing:`Thinking`,connectionAuth:`Waiting for connection authorization…`};var TerminalRenderer=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m;#h=[];#g=new Map;#_=new Set;#v=[];#y=new Set;#b=new Map;#x=0;#S=new Map;#C=new Set;#w=new Set;#T=new FileContentCache;#E=new Set;#D;#O;#k;#A;#j=0;#M;#N=!1;#P;#F=[];#I;#L=0;#R;#z;#B=``;#V=0;#H=new PromptHistory;#U=!1;#W;#G=!1;#K=!1;#q=new TurnClock;#J;#Y=EMPTY_LINE;#X=!1;#Z={kind:`idle`};#Q;#$=STATUS.processing;#ee;#te=`eve`;#ne=!1;#re=!1;#ie=!1;#ae=!1;#oe=!1;#se=!1;#ce=!1;#le;#ue=!0;#de=0;#fe=Date.now();#pe;#me;#he;#ge=!1;#_e;#ve=``;#ye=new StringDecoder(`utf8`);#be;#xe;#Se;#Ce=!1;#we=!1;#Te;#Ee;#De;#Oe;#ke;#Ae;#je;#Me=``;#Ne=``;#Pe;#Fe;#Ie;#Le=!1;#Re;#ze=0;#Be;#Ve;#He;#Ue;#We;#Ge;#Ke;#qe;#Je=new MessageQueue;#Ye;#Xe;#Ze=!1;#Qe;#$e;#et=!1;#tt;#nt;#rt;#it;#at;setupFlow={begin:(e,t)=>this.#ft(e,t),setNavigation:e=>this.#pt(e),end:e=>this.#mt(e?.preserveDiagnostics??!0),readSelect:e=>this.#ht(e),readEditableSelect:e=>this.#_t(e),readProviderPicker:e=>this.#vt(e),readModelPicker:e=>this.#yt(e),readText:e=>this.#bt(e),readAcknowledge:e=>this.#xt(e),readChoice:e=>this.#gt(e),setStatus:e=>this.#kt(e),renderLine:(e,t)=>this.#At(e,t),replaceContent:e=>this.#jt(e),renderOutput:e=>this.#Mt(e),withInheritedStdio:e=>this.#Nt(e),withExclusiveTerminal:e=>this.#Nt(e),waitForInterrupt:e=>this.#Et(e)};traceViewer={open:e=>this.#Ft(e)};constructor(e){this.#e=e?.input??process.stdin,this.#t=e?.output??process.stdout,this.#n=new LiveRegion(this.#t),this.#r=new AltScreen(this.#t),this.#i=createTheme({color:e?.color??!0,unicode:e?.unicode??detectUnicode()}),this.#a=e?.renderMarkdown??detectMarkdownRendering(),this.#o=e?.tools??`auto-collapsed`,this.#s=e?.reasoning??`auto-collapsed`,this.#c=e?.subagents??`auto-collapsed`,this.#l=e?.connectionAuth??`full`,this.#u=e?.assistantResponseStats??`tokensPerSecond`,this.#De=e?.contextSize,this.#d=e?.captureForeignOutput??this.#t===process.stdout,this.#f=e?.diagnostics,this.#le=e?.onExitRequest,this.#m=e?.logs??`none`,this.#p=e?.availablePromptCommands??PROMPT_COMMANDS}setStartupPhase(e){this.#O=e,e===void 0?this.#tn():this.#$t(),this.#On()}renderAgentHeader(e){this.#M=void 0,this.#te=e.name,(this.#D?.info?.agent.model.routing.kind!==`dynamic`||e.info?.agent.model.routing.kind!==`dynamic`)&&(this.#We=void 0),this.#D=e,this.#Rt();let t=this.#Nn().join(`
2
- `);if(this.#N){t!==this.#P&&(this.#P=t,this.#an({kind:`agent-header`,body:t,live:!1})),this.#On();return}this.#N=!0,this.#P=t,this.#n.flush(this.#Nn(),this.#Rn(this.#qn()))}beginStartupDraft(e){this.#Rt({title:e.title}),this.#U=!0,this.#G=!0,this.#O=`starting`,this.#M={name:e.title},this.#j=Date.now();let t=lineOf(stripPromptControlCharacters(e.initialDraft??``));this.#k=t,this.#st(t),this.#Xt(),this.#$t(),this.#On();let apply=e=>{t=e,this.#k=e,this.#Qt(),this.#st(t),this.#On()};this.#A=e=>{if(e.type===`escape`&&this.#nt!==void 0){this.#nt(`escape`);return}if(e.type===`ctrl-c`&&this.#nt!==void 0){this.#Pt(),this.#nt(`ctrl-c`);return}let n=applyLineEditorKey(t,e,{multiline:!0});if(n!==void 0){apply(n);return}if(e.type===`enter`&&t.text.trim().length>0){this.#Je.enqueue(t.text)&&apply(EMPTY_LINE);return}e.type===`ctrl-c`&&this.#le?.()},this.#ot()}#ot(){this.#k!==void 0&&this.#A!==void 0&&(this.#qt(),this.#st(this.#k),this.#U=!0,this.#_e=this.#A,this.#Vt())}finishStartupDraft(){let e={draft:this.#k?.text??this.#B,queuedPrompt:this.#Je.takePrompt()};return this.#k=void 0,this.#A=void 0,this.#Ht(),this.#Zt(),this.#U=!1,this.#G=!1,e}async readPrompt(e){this.#Rt(e),this.#in(),this.#sn(),this.#U=!0,this.#G=!0,this.#Z={kind:`idle`},this.#$=``,this.#se=this.#ce,this.#ce=!1;let t=this.#Je.restoreDraft()?.split(`
1
+ import{buildAgentHeader}from"./agent-header.js";import{detectMarkdownRendering}from"./markdown.js";import{PROMPT_COMMANDS,isPromptControlCommand,parsePromptCommand}from"./prompt-commands.js";import{renderAttentionRows,renderBlockLines}from"./blocks.js";import{copyTextToClipboard}from"./clipboard.js";import{dismissTypeahead,inlineCommandHint,isTypeaheadOpen,moveTypeaheadSelection,renderCommandSuggestions,selectedTypeaheadCommand,typeaheadCompletion,typeaheadFor}from"./command-typeahead.js";import{formatDevRebuildStatus,summarizeChangedFiles}from"./dev-rebuild-status.js";import{formatStoredDiagnostic,presentDiagnostic}from"./diagnostic-presentation.js";import{interruptedError}from"./errors.js";import{FileContentCache}from"./file-content-cache.js";import{EMPTY_LINE,KillRing,PromptHistory,applyLineEditorKey,deleteForward,layoutPromptInput,lineOf,movePromptLine,visibleLine}from"./line-editor.js";import{nextLogDisplayMode}from"./log-display-mode.js";import{MessageQueue,renderMessageQueueRows}from"./message-queue.js";import{enterBadge,flowMessageRows,renderAcknowledgeQuestion,renderFlowPanel,renderSelectQuestion,renderTextQuestion}from"./setup-panel.js";import{initialModelPickerState,modelPickerTitle,renderModelPicker,transitionModelPicker}from"./model-picker.js";import{initialProviderPickerState,transitionProviderPicker}from"./provider-picker.js";import{renderQuestionPanel}from"./question-panel.js";import{formatAssistantResponseStats,formatTokenFlow,formatTurnDuration,isIncompleteOsc,isIncompletePaste,nextKey,sanitizePastedText,stripPasteStart,stripPromptControlCharacters,takeUntil}from"./stream-format.js";import{TraceViewerSession}from"./traces/trace-viewer-session.js";import{buildStatusLine}from"./status-line.js";import{createTheme,detectUnicode}from"./theme.js";import{isPanelRoutedTool,presentPreparingTool,presentTool,readWriteFileInput,toolBaseName}from"./tool-presentation.js";import{groupToolBlocksForDisplay}from"./tool-block-groups.js";import{TurnClock}from"./turn-clock.js";import{allTodoItemsSettled,readTodoToolItems,renderFinishedTodoRows,renderTodoPanelRows}from"./todo-panel.js";import{reduceSetupSelectInput,setupSelectionIntent}from"./setup-selection-input.js";import{BACKGROUND_COLOR_QUERY,parseBackgroundColorReply}from"./terminal-background.js";import{inspectError}from"#internal/logging.js";import{eveVersionTag}from"#cli/banner.js";import{clipVisible,renderInputText,renderInputWithBlockCursor,stripAnsi,stripTerminalControls}from"#cli/ui/terminal-text.js";import{renderCursorRow}from"#setup/cli/option-row.js";import{initialSelectState,orderedSelection,reduceSelect,searchActionQuery,selectValueAtCursor}from"#setup/cli/select-state.js";import{toErrorMessage}from"#shared/errors.js";import{StringDecoder}from"node:string_decoder";import{summarizeKnownError}from"#harness/semantic-errors/index.js";import{parseDevRebuildLogLine}from"#internal/nitro/host/dev-watcher-log.js";import{LiveRegion}from"#cli/ui/live-region.js";import{AltScreen}from"#cli/ui/alt-screen.js";import{PROGRESS_PULSE_ASCII_GLYPH,PROGRESS_PULSE_GLYPH,isProgressPulseVisible}from"#cli/ui/progress-pulse.js";import{readGatewayServiceTier}from"#shared/gateway-service-tier.js";function isMultiSelectRequest(e){return e.kind===`multi`||e.kind===`searchable-multi`}function moveActionCursor(e,t,n){return n===0?void 0:e===void 0?t===`down`?0:n-1:(e+(t===`down`?1:-1)+n)%n}function completedTurnStatus(e){return e.interrupted?`Interrupted`:e.cancelled?`Cancelled`:e.continueSession?`Ready`:`Done`}function turnActivityLabel(e){return e===void 0?`Thinking`:e.runningTools.size>0?`Running`:e.modelActivity}function updateTurnActivity(e,t){switch(t.type){case`turn-start`:case`step-start`:case`reasoning-delta`:e.modelActivity=`Thinking`;break;case`assistant-delta`:case`tool-call-preparing`:e.modelActivity=`Generating`;break;case`assistant-complete`:t.text?.trim()&&(e.modelActivity=`Generating`);break;case`tool-call`:e.runningTools.add(t.toolCallId),e.modelActivity=`Thinking`;break;case`tool-result`:case`tool-error`:case`tool-rejected`:e.runningTools.delete(t.toolCallId)}}const incompletePasteFlushMs=1e3,STATUS={processing:`Thinking`,connectionAuth:`Waiting for connection authorization…`};var TerminalRenderer=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p;#m;#h=[];#g=new Map;#_=new Set;#v=[];#y=new Set;#b=new Map;#x=0;#S=new Map;#C=new Set;#w=new Set;#T=new FileContentCache;#E=new Set;#D;#O;#k;#A;#j=0;#M;#N=!1;#P;#F=[];#I;#L=0;#R;#z;#B=``;#V=0;#H=new PromptHistory;#U=new KillRing;#W=!1;#G;#K=!1;#q=!1;#J=new TurnClock;#Y;#X=EMPTY_LINE;#Z=!1;#Q={kind:`idle`};#$;#ee=STATUS.processing;#te;#ne=`eve`;#re=!1;#ie=!1;#ae=!1;#oe=!1;#se=!1;#ce=!1;#le=!1;#ue;#de=!0;#fe=0;#pe=Date.now();#me;#he;#ge;#_e=!1;#ve;#ye=``;#be=new StringDecoder(`utf8`);#xe;#Se;#Ce;#we=!1;#Te=!1;#Ee;#De;#Oe;#ke;#Ae;#je;#Me;#Ne=``;#Pe=``;#Fe;#Ie;#Le;#Re=!1;#ze;#Be=0;#Ve;#He;#Ue;#We;#Ge;#Ke;#qe;#Je;#Ye=new MessageQueue;#Xe;#Ze;#Qe=!1;#$e;#et;#tt=!1;#nt;#rt;#it;#at;#ot;setupFlow={begin:(e,t)=>this.#pt(e,t),setNavigation:e=>this.#mt(e),end:e=>this.#ht(e?.preserveDiagnostics??!0),readSelect:e=>this.#gt(e),readEditableSelect:e=>this.#vt(e),readProviderPicker:e=>this.#yt(e),readModelPicker:e=>this.#bt(e),readText:e=>this.#xt(e),readAcknowledge:e=>this.#St(e),readChoice:e=>this.#_t(e),setStatus:e=>this.#At(e),renderLine:(e,t)=>this.#jt(e,t),replaceContent:e=>this.#Mt(e),renderOutput:e=>this.#Nt(e),withInheritedStdio:e=>this.#Pt(e),withExclusiveTerminal:e=>this.#Pt(e),waitForInterrupt:e=>this.#Dt(e)};traceViewer={open:e=>this.#It(e)};constructor(e){this.#e=e?.input??process.stdin,this.#t=e?.output??process.stdout,this.#n=new LiveRegion(this.#t),this.#r=new AltScreen(this.#t),this.#i=createTheme({color:e?.color??!0,unicode:e?.unicode??detectUnicode()}),this.#a=e?.renderMarkdown??detectMarkdownRendering(),this.#o=e?.tools??`auto-collapsed`,this.#s=e?.reasoning??`auto-collapsed`,this.#c=e?.subagents??`auto-collapsed`,this.#l=e?.connectionAuth??`full`,this.#u=e?.assistantResponseStats??`tokensPerSecond`,this.#Oe=e?.contextSize,this.#d=e?.captureForeignOutput??this.#t===process.stdout,this.#f=e?.diagnostics,this.#ue=e?.onExitRequest,this.#m=e?.logs??`none`,this.#p=e?.availablePromptCommands??PROMPT_COMMANDS}setStartupPhase(e){this.#O=e,e===void 0?this.#rn():this.#tn(),this.#An()}renderAgentHeader(e){this.#M=void 0,this.#ne=e.name,(this.#D?.info?.agent.model.routing.kind!==`dynamic`||e.info?.agent.model.routing.kind!==`dynamic`)&&(this.#Ge=void 0),this.#D=e,this.#zt();let t=this.#Fn().join(`
2
+ `);if(this.#N){t!==this.#P&&(this.#P=t,this.#sn({kind:`agent-header`,body:t,live:!1})),this.#An();return}this.#N=!0,this.#P=t,this.#n.flush(this.#Fn(),this.#Bn(this.#Yn()))}beginStartupDraft(e){this.#zt({title:e.title}),this.#W=!0,this.#K=!0,this.#O=`starting`,this.#M={name:e.title},this.#j=Date.now();let t=lineOf(stripPromptControlCharacters(e.initialDraft??``));this.#k=t,this.#ct(t),this.#Qt(),this.#tn(),this.#An();let apply=e=>{t=e,this.#k=e,this.#en(),this.#ct(t),this.#An()};this.#A=e=>{if(e.type===`escape`&&this.#rt!==void 0){this.#rt(`escape`);return}if(e.type===`ctrl-c`&&this.#rt!==void 0){this.#Ft(),this.#rt(`ctrl-c`);return}let n=this.#U.apply(t,e,{multiline:!0});if(n!==void 0){apply(n);return}if(e.type===`enter`&&t.text.trim().length>0){this.#Ye.enqueue(t.text)&&apply(EMPTY_LINE);return}e.type===`ctrl-c`&&this.#ue?.()},this.#st()}#st(){this.#k!==void 0&&this.#A!==void 0&&(this.#Yt(),this.#ct(this.#k),this.#W=!0,this.#ve=this.#A,this.#Ht())}finishStartupDraft(){let e={draft:this.#k?.text??this.#B,queuedPrompt:this.#Ye.takePrompt()};return this.#k=void 0,this.#A=void 0,this.#Ut(),this.#$t(),this.#W=!1,this.#K=!1,e}async readPrompt(e){this.#zt(e),this.#on(),this.#ln(),this.#W=!0,this.#K=!0,this.#Q={kind:`idle`},this.#ee=``,this.#ce=this.#le,this.#le=!1;let t=this.#Ye.restoreDraft()?.split(`
3
3
  `).map(stripPromptControlCharacters).join(`
4
- `),n=stripPromptControlCharacters(e?.initialDraft??this.#Y.text),r=t===void 0?n:n.length===0?t:`${t}\n\n${n}`,i=lineOf(r);return this.#Y=EMPTY_LINE,this.#H.begin(i.text),this.#st(i),this.#W=typeaheadFor(this.#p,i.text),this.#Xt(),this.#On(),await new Promise((e,t)=>{this.#Q=t;let apply=e=>{i=e,this.#Qt(),this.#st(i),this.#W=typeaheadFor(this.#p,e.text,this.#W),this.#On()},recall=e=>{e!==void 0&&apply(lineOf(e))},interrupt=()=>{this.#W=void 0,this.#Zt(),this.#Bt(),t(interruptedError())},suggestions=()=>this.#W!==void 0&&isTypeaheadOpen(this.#W)?this.#W:void 0,highlighted=()=>{let e=suggestions();return e===void 0?void 0:selectedTypeaheadCommand(e)};this.#_e=t=>{t.type!==`ctrl-c`&&this.#se&&(this.#se=!1,this.#On());let n=applyLineEditorKey(i,t,{multiline:!0});if(n!==void 0){apply(n);return}switch(t.type){case`up`:case`ctrl-p`:{let e=suggestions();if(e!==void 0){this.#W=moveTypeaheadSelection(e,-1),this.#On();break}let t=movePromptLine(i,`up`);t===void 0?recall(this.#H.previous(i.text)):apply(t);break}case`down`:case`ctrl-n`:{let e=suggestions();if(e!==void 0){this.#W=moveTypeaheadSelection(e,1),this.#On();break}let t=movePromptLine(i,`down`);t===void 0?recall(this.#H.next()):apply(t);break}case`tab`:{let e=highlighted();e!==void 0&&apply(lineOf(typeaheadCompletion(e)));break}case`escape`:{let e=suggestions();e!==void 0&&(this.#W=dismissTypeahead(e),this.#On());break}case`enter`:{let t=highlighted(),n=t!==void 0&&parsePromptCommand(i.text)===null?typeaheadCompletion(t).trimEnd():i.text;if(n.trim().length===0)break;this.#W=void 0,this.#H.add(n),this.#U=!1,this.#Zt(),this.#$=STATUS.processing,isPromptControlCommand(n)?this.#an({kind:`command`,body:stripTerminalControls(n.trim()),live:!1}):(this.#en(),this.#on(n),this.#Be=n,this.#q.arm()),this.#st(EMPTY_LINE),this.#On(),this.#Ht(),e(n);break}case`ctrl-d`:i.text.length===0?(this.#Pt(),interrupt()):apply(deleteForward(i));break;case`ctrl-l`:this.#jn();break;case`ctrl-r`:this.#On();break;case`ctrl-c`:if(this.#se){this.#Pt(),interrupt();break}this.#se=!0,apply(EMPTY_LINE)}},this.#Vt()})}#st(e){this.#B=e.text,this.#V=e.cursor}takeQueuedPrompt(){let e=this.#Je.view().steering,t=this.#Je.takePrompt();return t!==void 0&&(this.#$e=e?`steer`:`queue`),t}async renderStream(e,t){this.#Rt(t),this.#_.clear(),this.#U=!1,this.#Z.kind!==`waiting`&&(this.#Z={kind:`waiting`,startedAtMs:Date.now()}),this.#$=this.#L>0?STATUS.connectionAuth:STATUS.processing,this.#cn(t?.submittedPrompt),t?.submittedPrompt!==void 0&&this.#f?.recordPrompt(),t?.submittedPrompt!==void 0&&!this.#q.armed&&this.#q.arm(),this.#ae=!1,this.#Ze=!1,this.#et=!1,this.#tt=t?.submittedPrompt,this.#Je.beginTurn(),this.#Ye=e.cancel,this.#Xe=e.steer,this.#Te=void 0,this.#Ee=void 0,this.#Oe=void 0,this.#ke=void 0,this.#Ae=Date.now();let n={text:new Map,reasoning:new Map,tools:new Map,modelActivity:`Thinking`,runningTools:new Set,cancelled:!1,restoreCancelledPrompt:!0};this.#J=n;let r={tools:t?.tools??this.#o,reasoning:t?.reasoning??this.#s,assistantResponseStats:t?.assistantResponseStats??this.#u};this.#$t(),this.#X=!0,this.#On();let i=new Promise(e=>{this.#Se=e});this.#_e=e=>this.#Jt(e),this.#Vt();try{for await(let t of takeUntil(iterateTUIStream(e.events),i)){if(this.#ae)break;this.#gn(t,r,n)}}catch(e){let t=summarizeKnownError(e);t===null?this.#ln(`Error`,toErrorMessage(e),{detail:inspectError(e)}):this.#ln(t.name,t.message,{detail:inspectError(e),hint:t.hint})}finally{this.#Se=void 0,this.#ae&&e.abort?.(),this.#Ye=void 0,this.#Xe=void 0,this.#Ht(),this.#X=!1,this.#J=void 0,this.#Z.kind===`waiting`&&(this.#Z={kind:`idle`}),this.#in(),this.#$=completedTurnStatus({interrupted:this.#ae,cancelled:this.#Ze,continueSession:t?.continueSession===!0}),this.#Cn(n),(this.#ae||n.cancelled)&&this.#Sn(n),this.#hn(),this.#in(),this.#f?.reportStats(),this.#On(),t?.continueSession||this.#Bt()}}async renderIdleStream(e,t){let n={tools:t?.tools??this.#o,reasoning:t?.reasoning??this.#s,assistantResponseStats:t?.assistantResponseStats??this.#u},r={text:new Map,reasoning:new Map,tools:new Map,modelActivity:`Thinking`,runningTools:new Set,cancelled:!1,restoreCancelledPrompt:!1};try{for await(let t of iterateTUIStream(e.events))this.#gn(t,n,r)}catch(e){let t=summarizeKnownError(e);t===null?this.#ln(`Error`,toErrorMessage(e),{detail:inspectError(e)}):this.#ln(t.name,t.message,{detail:inspectError(e),hint:t.hint})}finally{this.#Cn(r),r.cancelled&&this.#Sn(r),this.#hn(),this.#in(),this.#f?.reportStats(),this.#On()}}async readToolApproval(e,t){return this.#Rt(t),this.#tn(),this.#U=!1,this.#Z={kind:`idle`},this.#$=`Approve ${formatToolApprovalTitle(e)}? (y/n)`,this.#ae=!1,this.#On(),await new Promise((t,n)=>{this.#Q=n,this.#_e=r=>{switch(r.type){case`text`:{if(r.framing!==`unframed`)break;let n=r.value.toLowerCase();n===`y`?(this.#en(),this.#$=STATUS.processing,this.#Ht(),this.#On(),t({approved:!0})):n===`n`&&(this.#en(),this.#$=STATUS.processing,this.#lt(e.toolCallId),this.#Ht(),this.#On(),t({approved:!1,reason:`Denied by user.`}));break}case`ctrl-r`:this.#On();break;case`ctrl-c`:this.#ae=!0,this.#Bt(),n(interruptedError())}},this.#Vt()})}async readInputQuestion(e,t){this.#Rt(t),this.#tn(),this.#U=!1,this.#G=!1,this.#Z={kind:`idle`},this.#ae=!1;let n=e.options??[],r=n.length>0,i=(e.allowFreeform===!0||!r)&&r,a=n.length+ +!!i,o=questionSectionId(e.requestId),s=r?`overlay`:`text`,c=0,l=EMPTY_LINE,isOnFreeformRow=()=>i&&c===n.length,overlayPanel=t=>renderQuestionPanel({prompt:stripTerminalControls(e.prompt),options:n,cursor:c,allowFreeform:i,editor:l,caretVisible:this.#ue},this.#i,t),renderTextSection=()=>{this.#dn({id:o,kind:`question`,title:stripTerminalControls(e.prompt),body:formatQuestionContent(e,void 0,this.#i),preformatted:!0,live:!0})},syncFreeformCaret=()=>{isOnFreeformRow()?this.#Xt():(this.#Zt(),this.#Qt())};s===`overlay`?(s=`overlay`,this.#U=!1,this.#pn(o),this.#Ve=overlayPanel,this.#$=``,syncFreeformCaret(),this.#On()):(s=`text`,this.#Ve=void 0,renderTextSection(),this.#U=!0,this.#st(l),this.#$=``,this.#Xt(),this.#On());let finalize=t=>{this.#Ve=void 0,this.#dn({id:o,kind:`question`,title:stripTerminalControls(e.prompt),body:`${this.#i.colors.dim(this.#i.glyph.elbow)} ${stripTerminalControls(t.label)}`,preformatted:!0,live:!1}),this.#U=!1,this.#en(),this.#$=STATUS.processing,this.#Zt(),this.#Ht(),this.#On();let n={};return t.optionId!==void 0&&(n.optionId=t.optionId),t.text!==void 0&&(n.text=t.text),n},dismiss=()=>{this.#Ve=void 0,this.#dn({id:o,kind:`question`,title:stripTerminalControls(e.prompt),body:`${this.#i.colors.dim(this.#i.glyph.elbow)} ${this.#i.colors.dim(`Dismissed.`)}`,preformatted:!0,live:!1}),this.#U=!1,this.#$=``,this.#Zt(),this.#Ht(),this.#On(),u(void 0)},moveCursor=e=>{a!==0&&(c=(c+e+a)%a,syncFreeformCaret(),this.#On())},selectOptionAt=e=>{let t=n[e];t&&u(finalize({optionId:t.id,label:t.label}))},u;return await new Promise((t,r)=>{this.#Q=r,u=t,this.#_e=t=>{if(t.type===`ctrl-c`){if((s===`text`||isOnFreeformRow())&&l.text.length>0){l=EMPTY_LINE,this.#Qt(),s===`text`&&this.#st(l),this.#On();return}this.#ae=!0,this.#Ve=void 0,this.#Zt(),this.#Bt(),r(interruptedError());return}if(t.type===`ctrl-r`){this.#On();return}if(s===`overlay`){let r=setupSelectionIntent(t,{textNavigation:!isOnFreeformRow()});if(r?.kind===`move`){moveCursor(r.direction===`up`?-1:1);return}switch(t.type){case`up`:case`ctrl-p`:moveCursor(-1);break;case`down`:case`ctrl-n`:moveCursor(1);break;case`enter`:if(isOnFreeformRow()){let t=resolveQuestionText(l.text,e);t!==void 0&&u(finalize(t));break}selectOptionAt(c);break;case`escape`:if(isOnFreeformRow()&&l.text.length>0){l=EMPTY_LINE,this.#Qt(),this.#On();break}dismiss();break;default:if(isOnFreeformRow()){let e=applyLineEditorKey(l,t);e!==void 0&&(l=e,this.#Qt(),this.#On());break}if(t.type===`text`&&/^[1-9]$/u.test(t.value)){let e=Number(t.value)-1;e<n.length?selectOptionAt(e):e===n.length&&i&&(c=e,syncFreeformCaret(),this.#On())}}return}let a=applyLineEditorKey(l,t,{multiline:!0});if(a!==void 0){l=a,this.#Qt(),this.#st(l),this.#On();return}switch(t.type){case`up`:case`down`:{let e=movePromptLine(l,t.type);e!==void 0&&(l=e,this.#Qt(),this.#st(l),this.#On());break}case`enter`:{let t=resolveQuestionText(l.text,e);if(t===void 0)break;u(finalize(t));break}case`escape`:if(l.text.length>0){l=EMPTY_LINE,this.#Qt(),this.#st(l),this.#On();break}dismiss()}},this.#Vt()})}upsertSubagentStep(e){if(this.#f?.recordSubagentDispatch(e.callId),this.#c===`hidden`)return;let t=stripTerminalControls(e.reasoning??``).trim(),n=stripTerminalControls(e.message??``).trim();if(t.length!==0||n.length!==0){if(this.#un(e.callId,e.subagentName),this.#c===`collapsed`){this.#On();return}this.#fn({id:subagentStepSectionId(e.callId,e.sectionKey),kind:`subagent-step`,subagentCallId:e.callId,depth:1,reasoning:t,body:n,collapsed:this.#c!==`full`,live:!e.finalized}),this.#On()}}upsertSubagentTool(e){if(this.#f?.recordSubagentDispatch(e.callId),e.status===`failed`&&e.errorText!==void 0&&this.#f?.append({source:`tool`,summary:`${e.toolName} failed (subagent ${e.subagentName})`,detail:e.errorText}),this.#c===`hidden`)return;if(this.#un(e.callId,e.subagentName),this.#c===`collapsed`){this.#On();return}let t=subagentToolStatus(e.status),n=e.status===`preparing`?presentPreparingTool(e.toolName):presentTool(e.toolName,e.input,this.#bn({input:e.input,output:e.output,toolCallId:e.childCallId,toolName:e.toolName})),r={id:subagentToolSectionId(e.callId,e.childCallId),kind:`subagent-tool`,subagentCallId:e.callId,depth:1,title:stripTerminalControls(n.title),subtitle:stripTerminalControls(n.subtitle),status:t,live:t===`running`||t===`approval`,expanded:this.#c===`full`,toolName:e.toolName,toolGroup:n.group,toolInput:e.input};n.doneTitle!==void 0&&(r.doneTitle=stripTerminalControls(n.doneTitle)),n.detail!==void 0&&(r.detailLines=n.detail,r.keepDetailWhenDone=n.keepDetailWhenDone===!0),e.output===void 0?e.errorText!==void 0&&(r.result=stripTerminalControls(e.errorText)):(r.result=n.summarizeResult(e.output),r.toolOutput=e.output),this.#fn(r),this.#ct(e.callId),this.#On()}#ct(e){applyCohortLiveness(this.#h.filter(t=>t.kind===`subagent-tool`&&t.subagentCallId===e).map(e=>({block:e,active:isActiveToolStatus(e.status)})))}removeSubagentTool(e){this.#pn(subagentToolSectionId(e.callId,e.childCallId)),this.#On()}subagents={begin:e=>this.beginSubagent(e),background:e=>this.backgroundSubagent(e),upsertStep:e=>this.upsertSubagentStep(e),upsertTool:e=>this.upsertSubagentTool(e),removeTool:e=>this.removeSubagentTool(e),complete:e=>this.completeSubagent(e),markChildToolCallId:e=>this.markChildToolCallId(e)};beginSubagent(e){if(this.#c===`hidden`)return;this.#un(e.callId,e.name);let t=this.#g.get(subagentHeaderId(e.callId));t!==void 0&&(t.status===`done`&&delete t.status,t.live=!0),this.#w.delete(e.callId),this.#On()}backgroundSubagent(e){let t=this.#g.get(subagentHeaderId(e.callId));if(t===void 0||this.#_.has(subagentHeaderId(e.callId)))return;t.status=`running`,t.live=!0,t.updateSeq=++this.#x;let n=this.#C.has(e.callId);this.#C.add(e.callId),n||this.#mn(e.callId),this.#in(),this.#On()}completeSubagent(e){let t=this.#g.get(subagentHeaderId(e.callId));if(t!==void 0){if(t.status=`done`,e.authoritative){this.#C.delete(e.callId),this.#w.delete(e.callId);for(let t of this.#h)t.subagentCallId===e.callId&&(t.live=!1)}else{this.#w.add(e.callId);for(let t of this.#h)t.subagentCallId===e.callId&&(t.live=!0)}this.#in(),this.#On()}}markChildToolCallId(e){this.#y.add(e);let t=this.#b.get(e);t!==void 0&&(this.#pn(t),this.#b.delete(e),this.#On())}#lt(e){let t=this.#g.get(toolSectionId(e));t!==void 0&&(t.status=`denied`,t.live=!1)}upsertConnectionAuth(e){if(this.#l===`hidden`)return;let t=connectionAuthTerminalMessage(e.state);this.#dn({id:connectionAuthSectionId(e.name),kind:`connection-auth`,title:`${stripTerminalControls(e.name)} · authorization · ${e.state}`,body:formatConnectionAuthContent(e,t),preformatted:!0,live:t===void 0}),this.#On()}setConnectionAuthPendingCount(e){let t=Math.max(0,e);if(t===this.#L)return;let n=this.#L>0;this.#L=t,t>0?(this.#$=STATUS.connectionAuth,this.#On()):n&&(this.#$=STATUS.processing,this.#On())}setVercelStatus(e){this.#R=e,this.#On()}setRemoteConnectionStatus(e){this.#z=e,this.#On()}reset(){this.#h=[],this.#g.clear(),this.#_.clear(),this.#I=void 0,this.#F.length=0,this.#v.length=0,this.#N=!1,this.#P=void 0,this.#ut(),this.#K=!1,this.#Be=void 0,this.#Fe=void 0,this.#L=0,this.#Te=void 0,this.#Ee=void 0,this.#Oe=void 0,this.#ke=void 0,this.#Ae=void 0,this.#ne&&(this.#n.clearAll(),this.#On())}renderSessionBoundary(){this.#sn(),this.#ut();let e=this.#i.colors,t=this.#i.glyph,n=e.dim(`${t.cornerOpen}${t.dash.repeat(2)} Session restarted, clear context.`);this.#an({kind:`session-boundary`,body:n,live:!1}),this.#On()}#ut(){this.#We=void 0,this.#Ge=void 0,this.#y.clear(),this.#b.clear(),this.#E.clear(),this.#C.clear(),this.#w.clear(),this.#S.clear(),this.#Ke=void 0,this.#qe=void 0,this.#Je.reset(),this.#$e=void 0,this.#T.clear(),this.#q.reset(),this.#in()}renderNotice(e){let t=stripTerminalControls(e);t.trim().length!==0&&(this.#Rt(),this.#an({kind:`notice`,body:t,live:!1}),this.#On())}renderSandboxLog(e){let t=parseSandboxLogLine(stripTerminalControls(e));t!==void 0&&(this.#f?.append({source:`sandbox`,detail:t}),this.#Rt(),this.#an({kind:`sandbox`,body:t,live:!1}),this.#On())}renderSetupWarning(e){let t=stripTerminalControls(e);if(t.trim().length===0){this.#dt();return}this.#Rt(),this.#Ue=t,this.#On()}clearSetupWarning(){this.#dt()}#dt(){this.#Ue!==void 0&&(this.#Ue=void 0,this.#On())}renderCommandInvocation(e,t){let n=stripTerminalControls(e);if(n.trim().length===0)return;this.#Rt();let r={kind:`command`,body:n,live:!1};t===`failed`&&(r.status=`error`),this.#an(r),this.#On()}renderCommandResult(e,t){let n=stripAnsi(e);n.trim().length!==0&&(this.#Rt(),this.#an({kind:`result`,body:n,live:!1,status:t===`success`?`done`:void 0}),this.#On())}#ft(e,t=`spinner`){this.#Rt(),this.#k===void 0&&(this.#U=!1),this.#Z={kind:`idle`},this.#$=``;let n=t===`pulse`?{kind:`pulse`,startedAtMs:Date.now()}:{kind:`spinner`};this.#He={title:stripTerminalControls(e),indicator:n,lines:[],outputBuffer:[]},this.#$t(),this.#On()}#pt(e){this.#He!==void 0&&(this.#He.navigation=e,this.#On())}#mt(e){this.#nt=void 0,this.#Ot();let t=this.#He;if(t!==void 0){if(this.#He=void 0,this.#k===void 0?this.#tn():this.#ot(),e){let e=[];for(let n of t.lines){if(n.evidence===!0){e.push(n.text);continue}(n.tone===`warning`||n.tone===`error`)&&(e.length>0&&this.#an({kind:`flow`,title:`info`,body:e.join(`
5
- `),live:!1}),this.#an({kind:`flow`,title:n.tone,body:n.text,live:!1})),e=[]}}this.#On()}}async#ht(e){let t=this.#St(e.message),n=isMultiSelectRequest(e),r=e.kind===`search`?e.searchAction:void 0,i=e.options,a=e.navigation?.kind===`planner`,o={options:i,searchAction:r,submitRow:n&&!a};`initialValue`in e&&e.initialValue!==void 0&&(o.defaultValue=e.initialValue),`initialValues`in e&&e.initialValues!==void 0&&(o.initialValues=e.initialValues);let s=initialSelectState(o),c,l=!1,u=0,isCurrentSearch=e=>e===u,clearSearch=()=>{u+=1,l=!1,s=reduceSelect(s,{type:`clear`},{options:i,searchAction:r,submitRow:n&&!a}),this.#On()},loadSearch=async(e,t)=>{l=!0,c=void 0;let o=++u;this.#On();try{let c=await t(e);if(!isCurrentSearch(o))return;let l=s.filter;i=c,s={...initialSelectState({options:c,searchAction:r,submitRow:n&&!a}),filter:l}}catch(e){isCurrentSearch(o)&&(c=toErrorMessage(e))}finally{isCurrentSearch(o)&&(l=!1,this.#On())}},d=e.notices;if(e.kind===`task-list`||e.kind===`search`&&e.layout===`task-list`){let n=t.taskListLineStart??t.lines.length,r=t.lines.slice(n).filter(e=>e.tone===`success`||e.tone===`warning`||e.tone===`error`).map(e=>({tone:e.tone,text:e.text}));d=e.notices??r,t.taskListLineStart=t.lines.length,t.hideLinesWhileQuestion=!0}let panelState=()=>{let t={...e,message:``,options:i,select:s};return d!==void 0&&d.length>0&&(t.notices=d),c!==void 0&&(t.error=c),l&&(t.loadingFrame=this.#Fn()),t};return t.question=e=>renderSelectQuestion(panelState(),this.#i,e),this.#On(),await this.#Tt((t,o)=>{let close=e=>{u+=1,o(e)};if(l){t.type===`ctrl-c`?close(void 0):t.type===`escape`?clearSearch():t.type===`ctrl-r`&&this.#On();return}let d=e.navigation?.kind===`planner`?e.navigation:void 0,f=t.type===`left`&&(d?.activeStep??0)>(d?.firstNavigableStep??0)?`back`:t.type===`right`&&d!==void 0&&d.activeStep>=(d.firstNavigableStep??0)&&d.activeStep<d.steps.length-1?`forward`:void 0;if(f!==void 0){close({kind:`navigate`,direction:f,values:n?orderedSelection(i,s.selected):[]});return}let p={key:t,options:i,searchAction:r,select:s},m=reduceSetupSelectInput(n?{...p,kind:e.kind,required:e.required,plannerNavigation:a||void 0}:{...p,kind:e.kind});switch(m.kind){case`cancel`:close(void 0);return;case`repaint`:this.#On();return;case`update`:s=m.select,c=void 0,this.#On();return;case`submit`:{let e=searchActionQuery(m.values[0]??``),t=r?.load;if(e===void 0||t===void 0){close(m.values);return}loadSearch(e,t);return}case`error`:c=m.message,this.#On();return;case`ignore`:return}}).promise}#gt(e){this.#Rt();let t=this.#Ct();t.status={kind:`progress`,text:stripTerminalControls(e.status),startedAtMs:Date.now()};let n;t.question=t=>renderSelectQuestion({kind:`actions`,context:e.context,actions:e.actions,cursor:n},this.#i,t),this.#On();let r=this.#Tt((t,r)=>{let i=setupSelectionIntent(t,{textNavigation:!0});switch(i?.kind){case`cancel`:r(void 0);return;case`move`:n=moveActionCursor(n,i.direction,e.actions.length),this.#On();return;case`repaint`:this.#On();return;case`submit`:n!==void 0&&r(e.actions[n].value);return;case void 0:return}},()=>{t.status=void 0});return{choice:r.promise,close:()=>r.settle(void 0)}}async#_t(e){let t=this.#St(e.message),n={options:e.options};e.initialValue!==void 0&&(n.defaultValue=e.initialValue);let r=initialSelectState(n),i=lineOf(``),a;t.question=t=>{let n={kind:`inline-edit`,layout:`task-list`,message:``,options:e.options,select:r,edit:{optionValue:e.editable.value,caretVisible:this.#ue,editor:{kind:`rename`,editor:i,defaultValue:e.editable.defaultValue,formatHint:e.editable.formatHint}}};return a!==void 0&&(n.error=a),renderSelectQuestion(n,this.#i,t)};let onEditableRow=()=>selectValueAtCursor([...e.options],r.cursor)===e.editable.value,syncEditableRow=()=>{onEditableRow()?this.#Xt():(i=lineOf(``),this.#Zt())};return syncEditableRow(),this.#On(),await this.#Tt((t,n)=>{let applyEditor=e=>{i=e,a=void 0,this.#Qt(),this.#On()},applySelect=t=>{r=reduceSelect(r,t,{options:e.options}),a=void 0,syncEditableRow(),this.#On()},submit=()=>{let t=selectValueAtCursor([...e.options],r.cursor);if(t===void 0)return;if(t!==e.editable.value){n({kind:`selected`,value:t});return}let o=(i.text||e.editable.defaultValue).trim(),s=e.editable.validate?.(o);if(s!==void 0){a=s,this.#On();return}n(o===e.editable.defaultValue?{kind:`selected`,value:t}:{kind:`edited`,value:t,text:o})},o=setupSelectionIntent(t,{textNavigation:!onEditableRow()});switch(o?.kind){case`cancel`:n(void 0);return;case`move`:applySelect({type:o.direction});return;case`submit`:submit();return;case`repaint`:this.#On();return;case void 0:}if(!onEditableRow())return;let s=applyLineEditorKey(i,t);s!==void 0&&applyEditor(s)},()=>this.#Zt()).promise}async#vt(e){let t=this.#St(e.message),n=initialProviderPickerState(e.options,e.initialValue),r,cursorBadge=()=>{if(n.phase.kind!==`inactive`)return;let t=selectValueAtCursor([...e.options],n.select.cursor),r=e.options.find(e=>e.value===t);if(r!==void 0)return enterBadge(this.#i,r.checked===!0?`change`:void 0)};t.question=t=>{let r=cursorBadge(),i={kind:`inline-edit`,layout:`stacked`,message:``,options:e.options,select:n.select,edit:{optionValue:`ai-gateway-key`,caretVisible:this.#ue,editor:{kind:`key`,phase:n.phase}}};return r!==void 0&&(i.cursorBadge=r),renderSelectQuestion(i,this.#i,t)};let syncCaret=()=>{n.phase.kind===`editing`||n.phase.kind===`invalid`?this.#Xt():this.#Zt()};return syncCaret(),this.#On(),await this.#Tt((t,i,a)=>{let dispatch=t=>{let o=transitionProviderPicker(n,t,e.options);switch(o.kind){case`ignore`:return;case`clear`:r?.abort(),r=void 0,n=o.state,syncCaret(),this.#On();return;case`cancel`:i(void 0);return;case`render`:n=o.state,syncCaret(),this.#On();return;case`validate`:{n=o.state,syncCaret(),this.#On();let t=new AbortController;r=t;let i;try{i=e.validateInlineKey(o.key,t.signal)}catch(e){a(e);return}i.then(e=>{r!==t||t.signal.aborted||(r=void 0,dispatch({type:`validated`,validation:e}))},e=>{r!==t||t.signal.aborted||(r=void 0,a(e))});return}case`settle`:i(o.result);return}},o=setupSelectionIntent(t,{textNavigation:n.phase.kind===`inactive`});switch(o?.kind){case`cancel`:dispatch({type:`cancel`});return;case`move`:dispatch({type:`move`,direction:o.direction});return;case`submit`:dispatch({type:`submit`});return;case`repaint`:this.#On();return;case void 0:}if(n.phase.kind!==`editing`&&n.phase.kind!==`invalid`)return;let s=applyLineEditorKey(n.phase.editor,t);s!==void 0&&(this.#Qt(),dispatch({type:`edit`,editor:s}))},()=>{r?.abort(),r=void 0,this.#Zt()}).promise}async#yt(e){let t=initialModelPickerState(e),n=this.#St(modelPickerTitle(t));return n.question=n=>renderModelPicker(e,t,this.#i,n),this.#On(),await this.#Tt((r,i)=>{let dispatch=r=>{let a=transitionModelPicker(t,r,e);switch(a.kind){case`render`:if(t===a.state)return;t=a.state,n.questionTitle=modelPickerTitle(t),this.#On();return;case`cancel`:i(void 0);return;case`settle`:i(a.result);return}};if(r.type===`ctrl-c`){dispatch({type:`cancel`});return}if(r.type===`escape`||r.type===`left`){dispatch({type:`back`});return}let a=setupSelectionIntent(r);switch(a?.kind){case`move`:dispatch({type:a.direction});return;case`submit`:dispatch({type:`submit`});return;case`repaint`:this.#On();return}if(r.type===`backspace`){dispatch({type:`backspace`});return}if(r.type===`text`)for(let e of r.value.replaceAll(`
6
- `,` `))e>=` `&&e!==``&&dispatch({type:`char`,char:e})}).promise}async#bt(e){let t=this.#St(e.message),n=lineOf(``),r;return t.question=t=>{let i={message:``,editor:n,mask:e.mask===!0};return e.placeholder===void 0?e.defaultValue!==void 0&&(i.placeholder=e.defaultValue):i.placeholder=e.placeholder,e.notices!==void 0&&(i.notices=e.notices),r!==void 0&&(i.error=r),renderTextQuestion(i,this.#i,t,this.#ue)},this.#Xt(),this.#On(),await this.#Tt((t,i)=>{let apply=e=>{n=e,r=void 0,this.#Qt(),this.#On()},a=applyLineEditorKey(n,t);if(a!==void 0){apply(a);return}switch(t.type){case`ctrl-c`:case`escape`:i(void 0);return;case`ctrl-r`:this.#On();return;case`enter`:{let t=n.text.length>0?n.text:e.defaultValue??``,a=e.validate?.(t);if(a!==void 0){r=a,this.#On();return}i(t);return}default:return}},()=>this.#Zt()).promise}async#xt(e){let t=this.#St(e.message);return t.question=t=>renderAcknowledgeQuestion({message:``,lines:e.lines},this.#i,t),this.#On(),await this.#Tt((e,t)=>{switch(e.type){case`enter`:case`escape`:case`ctrl-c`:t();return;case`ctrl-r`:this.#On();return;default:return}}).promise}#St(e){this.#Rt(),this.#U=!1,this.#Z={kind:`idle`},this.#$=``;let t=this.#Ct();return t.questionTitle=stripTerminalControls(e),t.status!==void 0&&(t.status=void 0,t.summary=void 0,t.preview=void 0),t}#Ct(){return this.#He===void 0&&(this.#He={title:``,indicator:{kind:`spinner`},lines:[],outputBuffer:[],implicit:!0}),this.#He}#wt(){this.#He?.implicit===!0?this.#He=void 0:this.#He!==void 0&&(this.#He.question=void 0,this.#He.questionTitle=void 0,this.#He.hideLinesWhileQuestion=!1),this.#_e=void 0,this.#Ht(),this.#k===void 0?this.#He!==void 0&&this.#Dt():this.#ot(),this.#He===void 0&&this.#On()}#Tt(e,t){let n=!1,r,i,a=new Promise((e,t)=>{r=e,i=t}),settle=e=>{n||(n=!0,t?.(),this.#wt(),r(e))},reject=e=>{n||(n=!0,t?.(),this.#wt(),i(e))};return this.#qt(),this.#_e=t=>{t.type===`ctrl-c`&&this.#Pt(),e(t,settle,reject)},this.#Vt(),{promise:a,settle}}#Et(e){let t,n=new Promise(e=>{t=e});return this.#nt=t,this.#Dt(e?.interruptible??!0),{promise:n,dispose:()=>{this.#nt===t&&(this.#nt=void 0,this.#Ot())}}}#Dt(e=!0){if(this.#k!==void 0){this.#ot();return}if(this.#nt===void 0)return;let consumer=t=>{if(e&&(t.type===`ctrl-c`||t.type===`escape`)){t.type===`ctrl-c`&&this.#Pt();let e=this.#nt;this.#nt=void 0,this.#Ot(),e?.(t.type===`ctrl-c`?`ctrl-c`:`escape`);return}t.type===`ctrl-r`&&this.#On()};this.#rt=consumer,this.#qt(),this.#_e=consumer,this.#Vt()}#Ot(){this.#rt!==void 0&&(this.#_e===this.#rt&&this.#Ht(),this.#rt=void 0)}#kt(e){let t=e===void 0?void 0:typeof e==`string`?{kind:`progress`,text:stripTerminalControls(e),startedAtMs:Date.now()}:{kind:`external-action`,text:stripTerminalControls(e.text),emphasis:stripTerminalControls(e.emphasis),startedAtMs:Date.now()};if(this.#He!==void 0){this.#He.status=t,t===void 0&&(this.#He.preview=void 0),this.#On();return}if(!(this.#U||this.#X)){if(t===void 0){this.#Z={kind:`idle`},this.#ee=void 0,this.#tn(),this.#On();return}this.#Rt(),this.#en(),this.#ee=t.text,this.#On()}}#At(e,t){let n=stripTerminalControls(e);if(n.trim().length===0)return;let r=this.#He;if(r!==void 0){if(r.preview=void 0,t===`warning`||t===`error`)for(let e of r.outputBuffer)r.lines.push({text:e,tone:`info`,evidence:!0});r.outputBuffer=[],r.lines.push({text:n,tone:t}),this.#On();return}this.#Rt(),this.#an({kind:`flow`,title:t,body:n,live:!1}),this.#On()}#jt(e){let t=this.#He;t!==void 0&&(t.lines=[],t.outputBuffer=[],t.preview=void 0,t.status=void 0,t.summary=e===void 0?void 0:{headline:stripTerminalControls(e.headline),facts:e.facts.map(e=>({label:stripTerminalControls(e.label),value:stripTerminalControls(e.value)}))},this.#On())}#Mt(e){let t=stripTerminalControls(e);if(t.trim().length===0)return;let n=this.#He;if(n===void 0){this.#At(t,`info`);return}n.preview=t,n.outputBuffer.push(t),n.outputBuffer.length>40&&n.outputBuffer.shift(),this.#On()}async#Nt(e){this.#ve=``,this.#qt(),this.#nt=void 0,this.#Ot(),this.#Ht(),this.#nn(),this.#n.clear(),this.#Xn(),this.#r.enter({cursor:`visible`,mouse:!1}),this.#e.isTTY&&this.#e.setRawMode?.(!1),this.#e.pause();try{return await e()}finally{this.#r.exit(),this.#e.isTTY&&this.#e.setRawMode?.(!0),this.#e.resume(),this.#ve=``,this.#qt(),this.#n.hideCursor(),this.#Yn(),this.#He===void 0?this.#in():(this.#$t(),this.#Dt()),this.#n.reset(),this.#On()}}setSessionId(e){this.#Qe=e}shutdown(){if(this.#Bt(),this.#re&&!this.#ie){this.#ie=!0;let e=this.#Qe===void 0?``:` ${this.#i.glyph.dot} session ${this.#Qe}`;this.#t.write(`${this.#i.colors.dim(`${eveVersionTag()}${e}`)}\n`)}}suspendPromptForInput(){this.#Y={cursor:this.#V,text:this.#B},this.#Bt()}requestInterrupt(){this.#ae=!0,this.#He!==void 0&&this.#_e?.({type:`ctrl-c`}),this.#Se?.(),this.#Bt()}exitRequested(){return this.#oe}#Pt(){this.#oe=!0,this.#le?.()}async#Ft(e){if(this.#it!==void 0||!this.#ne)return;let t=new TraceViewerSession({...e,theme:this.#i,dimensions:()=>({width:this.#qn(),height:this.#Jn()}),paint:e=>this.#r.paint(e,this.#Jn()),tracingDisabled:process.env.EVE_TRACES===`off`,copyText:e=>copyTextToClipboard(e,e=>this.#r.writeRaw(e)),terminalBackground:this.#at});this.#it=t,this.#r.enter(),this.#i.color&&this.#r.writeRaw(BACKGROUND_COLOR_QUERY),await new Promise(e=>{this.#Lt=e,this.#_e=e=>{t.handleKey(e)===`close`&&this.#It()},this.#Vt(),t.start()})}#It(){let e=this.#it;if(e===void 0)return;this.#it=void 0,e.dispose(),this.#Ht(),this.#r.exit(),this.#n.hideCursor(),this.#On(),this.#n.showCursor();let t=this.#Lt;this.#Lt=void 0,t?.()}#Lt;#Rt(e){this.#te=e?.title??this.#te,e?.contextSize!==void 0&&(this.#De=e.contextSize),!this.#ne&&(this.#ne=!0,this.#re=!0,this.#n.reset(),this.#n.hideCursor(),this.#Yn(),this.#e.isTTY&&(this.#e.setRawMode?.(!0),this.#e.resume(),this.#n.emitBracketedPaste(!0)),this.#xe=()=>this.#On(),this.#t.on(`resize`,this.#xe),process.on(`exit`,this.#zt))}#zt=()=>{this.#ne&&(this.#r.exit(),this.#e.isTTY&&(this.#n.emitBracketedPaste(!1),this.#e.setRawMode?.(!1)),this.#n.showCursor())};#Bt(){this.#It();let e=this.#Q;if(this.#Q=void 0,e?.(interruptedError()),this.#Ht(),this.#Zt(),this.#nn(),this.#he!==void 0&&(clearTimeout(this.#he),this.#he=void 0),this.#ge=!1,this.#ir(),this.#ne){this.#or();for(let e of this.#h)e.kind===`log`&&e.id===void 0&&(e.live=!1);this.#On(),this.#n.clear(),this.#n.showCursor(),this.#Xn(),this.#n.newline(),this.#e.isTTY&&(this.#n.emitBracketedPaste(!1),this.#e.setRawMode?.(!1),this.#e.pause()),this.#xe&&=(this.#t.off(`resize`,this.#xe),void 0),process.off(`exit`,this.#zt),this.#ne=!1}}#Vt(){this.#e.off(`data`,this.#Ut),this.#e.on(`data`,this.#Ut),this.#ve.length>0&&queueMicrotask(()=>{this.#_e!==void 0&&this.#ve.length>0&&(this.#Gt(),this.#Wt())})}#Ht(){this.#e.off(`data`,this.#Ut),this.#qt(),this.#_e=void 0}#Ut=e=>{this.#qt(),this.#ve+=this.#ye.write(e),this.#Gt(),this.#Wt()};#Wt(){if(this.#ve===`\x1B`){this.#be=setTimeout(()=>{this.#ve===`\x1B`&&(this.#ve=``,this.#_e?.({type:`escape`}))},30),this.#be.unref?.();return}if(isIncompletePaste(this.#ve)){let e=this.#ve;this.#be=setTimeout(()=>{if(this.#ve!==e)return;let t=sanitizePastedText(stripPasteStart(e));this.#ve=``,t.length>0&&this.#_e?.({type:`text`,value:t,framing:`bracketed-paste`})},incompletePasteFlushMs),this.#be.unref?.();return}if(isIncompleteOsc(this.#ve)){let e=this.#ve;this.#be=setTimeout(()=>{this.#ve===e&&(this.#ve=``)},incompletePasteFlushMs),this.#be.unref?.()}}#Gt(){for(;this.#ve.length>0;){let e=nextKey(this.#ve);if(e.incomplete)return;if(this.#ve=this.#ve.slice(e.consumed),e.key!==void 0&&e.key.type!==`ignore`){if(e.key.type===`osc`){this.#Kt(e.key.value);continue}this.#_e?.(e.key)}}}#Kt(e){let t=parseBackgroundColorReply(e);t!==void 0&&(this.#at=t,this.#it?.setTerminalBackground(t))}#qt(){this.#be&&=(clearTimeout(this.#be),void 0)}#Jt(e){switch(e.type){case`ctrl-l`:case`ctrl-r`:this.#On();break;case`enter`:{let e=this.#Y.text;if(e.trim().length===0)break;if(parsePromptCommand(e)?.type===`cancel`&&this.#Ye!==void 0){this.#Y=EMPTY_LINE,this.#Je.requestCancellation(),this.#et=!0,this.renderCommandInvocation(e.trim()),this.renderCommandResult(`Turn cancellation requested.`),this.#Ye(),this.#On();break}let t=this.#Xe;t!==void 0&&parsePromptCommand(e)===null?(this.#Y=EMPTY_LINE,this.#Yt(e,t)):this.#Je.enqueue(e)&&(this.#Y=EMPTY_LINE),this.#On();break}case`ctrl-c`:case`escape`:if(e.type===`ctrl-c`&&this.#Je.view().cancelling){this.#ae=!0,this.#ce=!0,this.#Z={kind:`idle`},this.#$=`Interrupted`,this.#Se?.(),this.#On();break}if(this.#Je.idle&&this.#Ye===void 0)break;if(this.#Je.handleEscape()===`steer`){let e=this.#Xe;if(e!==void 0){let t=this.#Je.takeSteering();this.#Yt(t,e)}}else this.#et=!0,this.#Ye?.();this.#On();break;default:{let t=applyLineEditorKey(this.#Y,e,{multiline:!0});t!==void 0&&(this.#Y=t,this.#On());break}}}#Yt(e,t){this.#$e=`steer`,this.#cn(e),t(e).catch(t=>{this.#Je.restoreSteering(e),this.#ln(`Steering failed`,toErrorMessage(t)),this.#On()})}#Xt(){this.#Zt(),this.#Qt(),this.#pe=setInterval(()=>{this.#ue=!this.#ue,this.#On()},500),this.#pe.unref?.()}#Zt(){this.#pe&&=(clearInterval(this.#pe),void 0),this.#ue=!0}#Qt(){this.#ue=!0}#$t(){this.#nn(),this.#me=setInterval(()=>{this.#de+=1,this.#On()},90),this.#me.unref?.()}#en(){let e=Date.now();this.#fe=e,this.#Z={kind:`waiting`,startedAtMs:e},this.#$t()}#tn(){this.#rn()||this.#nn()}#nn(){this.#me&&=(clearInterval(this.#me),void 0)}#rn(){return this.#h.some(e=>e.live&&e.subagentCallId!==void 0&&(this.#C.has(e.subagentCallId)||this.#w.has(e.subagentCallId)))}#in(){this.#rn()?this.#$t():!this.#X&&this.#Z.kind===`idle`&&this.#nn()}#an(e){e.id!==this.#Fe?.id&&this.#or(),e.updateSeq=++this.#x;let t=e.subagentCallId!==void 0&&this.#C.has(e.subagentCallId)?-1:this.#h.findIndex(e=>e.subagentCallId!==void 0&&this.#C.has(e.subagentCallId));t<0?this.#h.push(e):this.#h.splice(t,0,e),e.id&&this.#g.set(e.id,e)}#on(e){this.#K=!0,this.#an({kind:`user`,body:stripTerminalControls(e),live:!1}),this.#On()}#sn(){let e=this.#q.settle();if(e===void 0||e.elapsedMs<=1e4&&e.inputTokens<=2e4)return;let t=`Done in ${this.#Bn(e.elapsedMs)}`,n=this.#Ee??0;if(this.#De!==void 0&&this.#De>0&&n>0){let e=Math.round(n/this.#De*100);t+=` ${this.#i.glyph.dot} ${e}% context`}this.#an({kind:`turn-stats`,body:t,live:!1})}#cn(e){if(e==null)return;let t=this.#$e;if(this.#$e=void 0,this.#Be===e){this.#Be=void 0;return}let n={kind:`user`,body:stripTerminalControls(e),live:!1};t!==void 0&&(n.promptOrigin=t),this.#an(n)}#ln(e,t,n={}){let r=stripTerminalControls(e),i=stripTerminalControls(t),a=n.detail===void 0?void 0:stripTerminalControls(n.detail),o=n.hint===void 0?void 0:stripTerminalControls(n.hint),s={source:`workflow`,summary:`${r}: ${i}`,detail:a??i};this.#f?.append(o===void 0?s:{...s,hint:o});let c={kind:`error`,title:r,body:i,live:!1};o!==void 0&&(c.hint=o),a!==void 0&&(c.detail=this.#f===void 0?a:`details: ${this.#f.displayPath}`),this.#an(c),this.#On()}#un(e,t){if(this.#E.has(e))return;this.#E.add(e);let n=stripTerminalControls(t),r=this.#S.get(n)??[];if(r.push(e),this.#S.set(n,r),r.length===2){let e=this.#g.get(subagentHeaderId(r[0]));e!==void 0&&(e.subtitle=`#1`)}let i={id:subagentHeaderId(e),kind:`subagent`,subagentCallId:e,title:n,live:!0};r.length>1&&(i.subtitle=`#${r.length}`),this.#an(i)}#dn(e){if(e.id&&this.#_.has(e.id))return;let t=e.id?this.#g.get(e.id):void 0;if(t){Object.assign(t,e),t.updateSeq=++this.#x;return}this.#an(e)}#fn(e){if(e.id&&this.#_.has(e.id))return;let t=e.id?this.#g.get(e.id):void 0;if(t!==void 0){Object.assign(t,e),t.updateSeq=++this.#x;return}let n=e.subagentCallId;if(n===void 0){this.#an(e);return}e.id!==this.#Fe?.id&&this.#or(),e.updateSeq=++this.#x;let r=-1;for(let e=0;e<this.#h.length;e+=1)this.#h[e]?.subagentCallId===n&&(r=e);this.#h.splice(r<0?this.#h.length:r+1,0,e),e.id!==void 0&&this.#g.set(e.id,e)}#pn(e){this.#h=this.#h.filter(t=>t.id!==e),this.#g.delete(e)}#mn(e){let t=this.#h.filter(t=>t.subagentCallId===e);t.length!==0&&(this.#h=this.#h.filter(t=>t.subagentCallId!==e),this.#h.push(...t))}#hn(){for(let e of this.#h)e.subagentCallId!==void 0&&this.#w.has(e.subagentCallId)||e.status===`approval`||e.status===`running`||e.kind===`connection-auth`&&e.live||(e.live=!1)}#gn(e,t,n){let r=turnActivityLabel(n);switch(updateTurnActivity(n,e),e.type){case`turn-start`:e.turnId!==this.#Ge&&(this.#Ge=e.turnId,this.#We=void 0,this.#On());break;case`step-start`:this.#We=typeof e.modelId==`string`&&stripTerminalControls(e.modelId.slice(0,256)).replace(/\s+/gu,` `).trim()||void 0,this.#On();break;case`step-finish`:this.#f?.recordStepUsage(e.usage),e.usage!==void 0&&this.#q.addUsage(e.usage),this.#Cn(n),this.#Dn(e.usage),this.#On();break;case`assistant-delta`:{let t=(n.text.get(e.id)??``)+stripTerminalControls(e.delta);n.text.set(e.id,t),this.#_n(e.id,t,!0);break}case`assistant-complete`:{let t=n.text.get(e.id)??``,r=typeof e.text==`string`?stripTerminalControls(e.text):t;n.text.set(e.id,r),this.#_n(e.id,r,!1);break}case`reasoning-delta`:{if(t.reasoning===`hidden`)break;let r=(n.reasoning.get(e.id)??``)+stripTerminalControls(e.delta);if(n.reasoning.set(e.id,r),t.reasoning===`full`){this.#vn(e.id,r,!0,t);break}break}case`reasoning-complete`:{if(t.reasoning===`hidden`)break;let r=n.reasoning.get(e.id)??``;if(t.reasoning===`full`){this.#vn(e.id,r,!1,t);break}break}case`tool-call-preparing`:if(t.tools===`hidden`||isPanelRoutedTool(e.toolName))break;this.#yn({input:void 0,preparing:!0,status:`running`,toolCallId:e.toolCallId,toolName:e.toolName},t,n);break;case`tool-call`:if(this.#f?.recordToolCall(e.toolName),t.tools===`hidden`)break;this.#yn({input:e.input,status:`running`,toolCallId:e.toolCallId,toolName:e.toolName},t,n);break;case`tool-approval-request`:{if(t.tools===`hidden`)break;let r=n.tools.get(e.toolCallId);if(r===void 0)break;this.#yn({...r,status:`approval`},t,n);break}case`tool-result`:{if(t.tools===`hidden`)break;let r=this.#En(e.toolCallId,n);if(r===void 0)break;this.#yn({...r,output:e.output,status:`done`},t,n);break}case`tool-error`:{let r=this.#En(e.toolCallId,n);if(this.#f?.append({source:`tool`,summary:`${r?.toolName??e.toolCallId} failed`,detail:e.errorText}),t.tools===`hidden`||r===void 0)break;this.#yn({...r,errorText:e.errorText,status:`error`},t,n);break}case`tool-rejected`:{if(t.tools===`hidden`)break;let r=this.#En(e.toolCallId,n);if(r===void 0)break;this.#yn({...r,errorText:e.reason,status:`denied`},t,n);break}case`error`:this.#ln(`Error`,e.errorText,{detail:e.detail,hint:e.hint});break;case`turn-cancelled`:if(n.cancelled=!0,!n.restoreCancelledPrompt)break;this.#Ze=!0,!this.#et&&this.#tt!==void 0&&this.#Y.text.length===0&&(this.#Y=lineOf(this.#tt),this.renderNotice(`The turn was cancelled from outside this prompt — the message was restored to the input.`));break;case`finish`:this.#Dn(e.usage),this.#On()}n===this.#J&&turnActivityLabel(n)!==r&&this.#On()}#_n(e,t,n){let r=stripTerminalControls(t).trim();r.length!==0&&(this.#dn({id:e,kind:`assistant`,body:r,live:n}),this.#On())}#vn(e,t,n,r){let i=stripTerminalControls(t).trim();i.length!==0&&(this.#dn({id:e,kind:`reasoning`,body:i,collapsed:collapseReasoning(r.reasoning,n),live:n}),this.#On())}#yn(e,t,n){if(n.tools.set(e.toolCallId,e),this.#y.has(e.toolCallId)||this.#wn(e)||toolBaseName(e.toolName)===`ask_question`)return;let r=toolSectionId(e.toolCallId);this.#b.set(e.toolCallId,r);let i=this.#bn(e);this.#dn(renderNativeToolBlock(e,r,t.tools===`full`,i)),this.#Tn(n),this.#On()}#bn(e){e.output!==void 0&&this.#T.observeRead(e.output);let t={};this.#xn(e.toolName)&&(t.isSubagent=!0);let n=readWriteFileInput(e.toolName,e.input);if(n===void 0)return t.isSubagent===!0?t:void 0;let r=this.#T.observeWrite({path:n.path,content:n.content,callId:e.toolCallId});r!==void 0&&(t.previousContent=r);let i=writeExistedFlag(e.output);return i!==void 0&&(t.existed=i),t}#xn(e){let t=this.#D?.info?.subagents.local;if(t===void 0||t.length===0)return!1;let n=toolBaseName(e);return t.some(e=>e.name===n)}#Sn(e){for(let t of e.tools.keys()){if(this.#y.has(t))continue;let e=this.#b.get(t)??toolSectionId(t),n=this.#g.get(e);n?.kind===`tool`&&n.status===`running`&&(n.status=`error`,n.result=`interrupted`,n.live=!1)}}#Cn(e){for(let[t,n]of e.tools){if(n.preparing!==!0)continue;e.tools.delete(t);let r=this.#b.get(t)??toolSectionId(t);this.#pn(r),this.#b.delete(t)}}#wn(e){let t=readTodoToolItems(e.toolName,e.input);if(t===void 0)return!1;if(t.length>0&&allTodoItemsSettled(t)){let e=JSON.stringify(t);this.#qe!==e&&(this.#qe=e,this.#an({kind:`todo-list`,body:renderFinishedTodoRows(t,this.#qn(),this.#i).join(`
7
- `),live:!1})),this.#Ke=void 0}else this.#Ke=t.length>0?t:void 0,this.#qe=void 0;return this.#On(),!0}#Tn(e){let t=[];for(let n of e.tools.values()){if(this.#y.has(n.toolCallId))continue;let e=this.#b.get(n.toolCallId)??toolSectionId(n.toolCallId),r=this.#g.get(e);r?.kind===`tool`&&t.push({block:r,active:isActiveToolStatus(n.status)})}applyCohortLiveness(t)}#En(e,t){let n=t.tools.get(e);if(n!==void 0)return n;let r=this.#b.get(e)??toolSectionId(e),i=this.#g.get(r);if(i!==void 0&&i.kind===`tool`)return{errorText:i.status===`error`&&typeof i.result==`string`?i.result:void 0,input:i.toolInput,output:i.toolOutput,status:i.status??`running`,toolCallId:e,toolName:i.toolName??i.title??`tool`}}#Dn(e){if(e===void 0)return;let{inputTokens:t,outputTokens:n}=e;if((t!=null||n!=null)&&(this.#Te=(t??0)+(n??0)),this.#Ee=t??this.#Ee,this.#Oe=n??this.#Oe,this.#Oe!=null&&this.#Ae!==void 0){let e=(Date.now()-this.#Ae)/1e3;e>0&&(this.#ke=this.#Oe/e)}}#On(){if(this.#ne){if(this.#Ce){this.#we=!0;return}this.#Ce=!0;try{do this.#we=!1,this.#kn();while(this.#we)}finally{this.#Ce=!1}}}#kn(){if(!this.#ne)return;if(this.#it!==void 0){this.#it.repaint();return}let e=this.#qn(),t=this.#Rn(e),n=this.#M===void 0?[]:this.#Nn(),r=Math.max(1,this.#Jn()-n.length-t.length),i=[],a=this.#I,o=groupToolBlocksForDisplay(this.#h),s=0;for(;s<o.length&&o[s].display.live===!1;)s+=1;if(s>0){let e=new Set(o.slice(0,s).flatMap(e=>e.members));for(let t=this.#h.length-1;t>=0;--t)e.has(this.#h[t])&&this.#h.splice(t,1)}for(let t of o.slice(0,s)){for(let e of t.members)this.#v.push(e),e.id&&(this.#_.add(e.id),this.#g.delete(e.id));if(this.#cr(t.display))continue;let n=this.#Pn(t.display,e,a);a=previousBlockOf(t.display),this.#I=a,i.push(...n),this.#F.push(...n)}let c=[];for(let{display:t}of o.slice(s)){if(this.#cr(t))continue;let n=this.#Pn(t,e,a);a=previousBlockOf(t);for(let e=0;e<n.length;e+=1)c.push({block:t,row:n[e]})}let l=[...n,...clipLiveRows(c.map(e=>e.row),r,e,this.#i),...t];i.length>0?this.#n.flush(i,l):this.#n.update(l)}#An(){if(!this.#ne)return;let e=this.#qn(),t=this.#Rn(e),n=Math.max(1,this.#Jn()-t.length),r=this.#I,i=[];for(let{display:t}of groupToolBlocksForDisplay(this.#h)){if(this.#cr(t))continue;let n=this.#Pn(t,e,r);r=previousBlockOf(t),i.push(...n)}let a=[...clipLiveRows(i,n,e,this.#i),...t];this.#n.clearAll(),this.#n.flush([...this.#Nn(),...this.#F],a)}logDisplayMode(){return this.#m}setLogDisplayMode(e){e!==this.#m&&(this.#m=e,e===`all`&&this.flushDelayedDevBuildErrors(),this.#Mn(),this.#ne&&this.#An())}flushDelayedDevBuildErrors(){let e=this.#Pe;e!==void 0&&(this.#Pe=void 0,this.#an({kind:`log`,title:`stderr`,body:e,live:!0}),this.#On())}#jn(){this.#ge=!0,this.#he!==void 0&&clearTimeout(this.#he),this.#he=setTimeout(()=>{this.#ge=!1,this.#he=void 0,this.#On()},5e3),this.setLogDisplayMode(nextLogDisplayMode(this.#m)),this.#On()}#Mn(){let e=this.#qn();this.#F.length=0;let t;for(let{display:n}of groupToolBlocksForDisplay(this.#v,{logCoalescing:`runs`})){if(this.#cr(n))continue;let r=this.#Pn(n,e,t);t=previousBlockOf(n),this.#F.push(...r)}this.#I=t}#Nn(){let e=this.#D,t=this.#M;if(e===void 0&&t===void 0)return[];let n={name:e?.name??t?.name,theme:this.#i,width:this.#qn()};return e?.info!==void 0&&(n.info=e.info),buildAgentHeader(n)}#Pn(e,t,n){let r={renderMarkdown:this.#a,activityPulse:this.#In(this.#fe,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH)};n!==void 0&&(r.previous=n);let i=renderBlockLines(e,t,this.#i,r);return(e.depth??0)===0&&leadsWithGap(e,n)?[``,...i]:i}#Fn(){return this.#i.spinner[this.#de%this.#i.spinner.length]??``}#In(e,t){return isProgressPulseVisible(Date.now()-e)?t:` `}#Ln(e,t){return e.indicator.kind===`spinner`?{glyph:this.#Fn(),color:`yellow`}:{glyph:this.#In(e.indicator.startedAtMs,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH),color:t?.kind===`external-action`?`yellow`:`green`}}#Rn(e){let t=this.#i.colors,n=[``];if(this.#Ve!==void 0)return n.push(...this.#Ve(e),``),this.#Wn(n,e),n;let r=this.#He;if(r!==void 0&&(this.#k===void 0||r.question!==void 0)){let t=this.#Ln(r,r.status),i;if(r.status!==void 0){let{startedAtMs:e,...n}=r.status,a=Date.now()-e,o=a>=5e3?` ${formatTurnDuration(a)}`:``;i={...n,text:`${n.text}${o}`,indicator:t}}let a;if(r.question!==void 0){let t=r.question(e);a={kind:`question`,title:r.questionTitle,rows:t},i!==void 0&&(a={kind:`question`,title:r.questionTitle,rows:t,status:i})}else i===void 0?a=r.preview===void 0?{kind:`idle`,indicator:t}:{kind:`preview`,text:r.preview,indicator:t}:(a={kind:`status`,status:i},r.preview!==void 0&&(a={kind:`status`,status:i,preview:r.preview}));let o={title:r.title,navigation:r.navigation,lines:r.summary===void 0?r.hideLinesWhileQuestion===!0?[]:r.lines:[{text:r.summary.headline,tone:`success`},...r.summary.facts.map(e=>({text:`${e.label}: ${e.value}`,tone:`info`}))],content:a};return n.push(...renderFlowPanel(o,this.#i,e)),this.#Gn(n,e),n}r!==void 0&&n.push(...flowMessageRows(r.lines,this.#i).map(t=>t.length===0?``:clip(` ${t}`,e))),this.#O===void 0&&this.#Ue!==void 0&&n.push(...renderAttentionRows(this.#Ue,e,this.#i),``),this.#Ke!==void 0&&n.push(...renderTodoPanelRows({items:this.#Ke,width:e,theme:this.#i,working:this.#X||this.#Z.kind===`waiting`,pulse:this.#In(this.#fe,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH)}),``);let i=renderMessageQueueRows({view:this.#Je.view(),width:e,theme:this.#i,working:this.#X});if(i.length>0&&n.push(...i,``),this.#U){let r=this.#W===void 0?void 0:inlineCommandHint(this.#W);r===void 0&&this.#W!==void 0&&isTypeaheadOpen(this.#W)&&n.push(...renderCommandSuggestions(this.#W,this.#i,e)),this.#se&&n.push(clip(t.dim(`Press Ctrl+C again to exit`),e),``);let i=isPromptControlCommand(this.#B),a=r?t.dim(` ${r}`):``,o=[];this.#Wn(o,e);let s=Math.max(1,this.#Jn()-1-n.length-1-o.length),c={text:this.#B,cursor:this.#V,width:e,theme:this.#i,caretVisible:this.#ue,isCommand:i,ghost:a,maxRows:s};return this.#G&&this.#B.length===0&&(c.placeholder=this.#k===void 0?this.#K?``:`Send a message…`:`Message · Enter to queue`),n.push(...promptInputRows(c)),n.push(...o),n}let a=this.#Z.kind===`waiting`&&this.#ee===void 0;if(this.#X||a){n.push(this.#zn(e)),this.#Hn(n,e);let t=[];return this.#Wn(t,e),!this.#X&&t.length>0&&n.push(``),n.push(...t),n}if(this.#Y.text.length>0)return this.#Un(n,e,{inert:!1}),this.#Wn(n,e),n;let o=this.#ee??(this.#$.length>0?this.#$:`Ready`),s=this.#Kn(),c=t.dim(this.#i.glyph.dot),l=s?`${c} ${o} ${t.dim(this.#i.glyph.dot)} ${s}`:`${c} ${o}`;return n.push(clip(l,e)),this.#Wn(n,e),n}#zn(e){let t=this.#i.colors,n=this.#Z,r=this.#q.startedAtMs??this.#Ae??(n.kind===`waiting`?n.startedAtMs:Date.now()),i=Math.max(0,Date.now()-r),a=i%1e3<500?this.#i.unicode?`•`:`*`:` `,o=i<1e3?`0s`:formatTurnDuration(Math.floor(i/1e3)*1e3),s=`${turnActivityLabel(this.#J)} (${o})`,{inputTokens:c,outputTokens:l}=this.#q.usage;return clip(`${a} ${s}${c>0||l>0?t.dim(` (${formatTokenFlow({inputTokens:c,outputTokens:l},this.#i.glyph)})`):``}`,e)}#Bn(e){return`${formatTurnDuration(e)}${this.#Vn()}`}#Vn(){let{inputTokens:e,outputTokens:t}=this.#q.usage;return e===0&&t===0?``:` ${this.#i.glyph.dash.repeat(2)} ${formatTokenFlow({inputTokens:e,outputTokens:t},this.#i.glyph)}`}#Hn(e,t){this.#X&&this.#Un(e,t,{inert:!0})}#Un(e,t,n){e.push(``);let r={text:this.#Y.text,cursor:this.#Y.cursor,width:t,theme:this.#i,caretVisible:!0,isCommand:!1,ghost:``,maxRows:4,inert:n.inert};n.inert&&this.#Y.text.length===0&&(r.placeholder=``),e.push(...promptInputRows(r))}#Wn(e,t){if(this.#O!==void 0){let n=this.#He?.status?.text??{starting:`Starting agent…`,connecting:`Reading saved connection…`,updating:`Loading selected model…`}[this.#O],r=this.#In(this.#j,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH);e.push(clip(this.#i.colors.dim(`${r} ${n}`),t));return}let n=this.#z===void 0?``:` `,r=Math.max(1,t-n.length),i={theme:this.#i,width:r};this.#Le&&this.#Ie!==void 0&&(i.devBuild=this.#Ie),this.#ge&&(i.logLevel=this.#m);let a=this.#D?.info?.agent.model;a?.routing.kind===`dynamic`?i.model=this.#We===void 0?`dynamic model`:`dynamic model · ${this.#We}`:a?.id!==void 0&&(i.model=a.id),a?.reasoning!==void 0&&a.reasoning!==`provider-default`&&(i.reasoning=a.reasoning),readGatewayServiceTier(a?.providerOptions).kind===`priority`&&(i.fastMode=!0);let o=a?.endpoint;o!==void 0&&(i.endpoint=o),this.#R!==void 0&&(i.vercel=this.#R),this.#z!==void 0&&(i.remote=this.#z);let s=buildStatusLine(i);s!==void 0&&e.push(clip(`${n}${s}`,t))}#Gn(e,t){if(this.#z===void 0)return;let n=Math.max(1,t-2),r=buildStatusLine({remote:this.#z,theme:this.#i,width:n});r!==void 0&&e.push(``,clip(` ${r}`,t))}#Kn(){let e=this.#i.colors,t=[],n=formatAssistantResponseStats({totalTokens:this.#Te,outputTokens:this.#Oe,tokensPerSecond:this.#ke},this.#u);return n&&t.push(n),t.length>0?e.dim(t.join(` ${this.#i.glyph.dot} `)):``}#qn(){return Math.max(20,this.#t.columns||80)}#Jn(){return Math.max(8,this.#t.rows||24)}#Yn(){if(this.#je!==void 0||!this.#d)return;this.#Me=``,this.#Ne=``;let capture=(e,t)=>{let n=e.write.bind(e);return e.write=((e,n,r)=>{let i=typeof n==`string`?n:void 0,a=typeof n==`function`?n:r;return this.#Qn(t,chunkToString(e,i)),a?.(),!0}),()=>{e.write=n}},e=capture(process.stdout,`stdout`),t=capture(process.stderr,`stderr`);this.#f?.subscribeLogRecords(e=>this.#Zn(e)),this.#je=()=>{this.#f?.unsubscribeLogRecords(),e(),t()}}#Xn(){let e=this.#je;e!==void 0&&(this.#je=void 0,e(),this.#Me.length>0&&(this.#f?.append({source:`stdout`,detail:this.#Me}),this.#sr(`stdout`)&&process.stdout.write(`${this.#Me}\n`),this.#Me=``),this.#Ne.length>0&&(this.#f?.append({source:`stderr`,detail:this.#Ne}),this.#sr(`stderr`)&&process.stderr.write(`${this.#Ne}\n`),this.#Ne=``))}#Zn(e){let t=e.fields===void 0?``:` ${JSON.stringify(e.fields)}`;this.#er(`[eve:${e.namespace}] ${e.message}${t}`),this.#On()}#Qn(e,t){let n=(e===`stdout`?this.#Me:this.#Ne)+t;if(e===`stdout`&&parseDevRebuildLogLine(n.trimEnd())!==void 0){this.#Me=``,this.#f?.append({source:e,detail:n.trimEnd()}),this.#$n(n.trimEnd()),this.#On();return}let r=n.lastIndexOf(`
8
- `),i=r===-1?n:n.slice(r+1);if(e===`stdout`?this.#Me=i:this.#Ne=i,r===-1)return;let a=stripAnsi(n.slice(0,r)).replace(/\s+$/u,``);a.trim().length!==0&&(this.#f?.append({source:e,detail:a}),e===`stdout`?this.#$n(a):this.#er(a),this.#On())}#$n(e){let t=[],flushPending=()=>{if(t.length===0)return;let e=t.join(`
9
- `);t=[],e.trim().length!==0&&this.#an({kind:`log`,title:`stdout`,body:e,live:!0})};for(let n of e.split(`
10
- `)){let e=parseSandboxLogLine(n.trimEnd());if(e!==void 0){flushPending(),this.#an({kind:`sandbox`,body:e,live:!1});continue}let r=parseDevRebuildLogLine(n.trimEnd());if(r===void 0){t.push(n);continue}flushPending(),this.#nr(r,n.trimEnd())}flushPending()}#er(e){let t=e.split(`
11
- `),n=t.findIndex(e=>parseDevRebuildLogLine(e.trimEnd())?.kind===`failed`);if(n===-1){if(this.#f===void 0){this.#an({kind:`log`,title:`stderr`,body:e,live:!0});return}let t=presentDiagnostic(e,this.#f.displayPath);if(t.kind===`inline`){this.#an({kind:`log`,title:`stderr`,body:t.text,live:!0});return}this.#an({kind:`log`,title:`stderr`,body:formatStoredDiagnostic(t),logVisibility:`stderr-only`,live:!0}),this.#an({kind:`log`,title:`stderr`,body:e,logVisibility:`all-only`,live:!0});return}let r=t.slice(0,n).join(`
12
- `);r.trim().length>0&&this.#an({kind:`log`,title:`stderr`,body:r,live:!0});let i=t.slice(n).join(`
13
- `);this.#tr(i)}#tr(e){if(this.#ir(),this.#m===`all`){if(e.trim().length===0)return;this.#an({kind:`log`,title:`stderr`,body:e,live:!0});return}this.#Pe=e}#nr(e,t){let n=this.#ar();if(e.kind===`failed`){this.#tr(t);return}if(e.kind===`rebuilding`){let t=summarizeChangedFiles(e.events,e.more);if(this.#rr({phase:`building`,summary:t}),n!==void 0){n.state.summary=t,n.block.body=formatDevRebuildStatus(t,`rebuilding`);return}let r=`dev-rebuild:${this.#ze}`;this.#ze+=1,this.#Fe={id:r,summary:t},this.#an({kind:`log`,id:r,title:`stdout`,body:formatDevRebuildStatus(t,`rebuilding`),live:!0});return}let r=n?.state.summary??this.#Ie?.summary;if(r!==void 0&&this.#rr({phase:`complete`,summary:r}),n!==void 0){n.block.body=formatDevRebuildStatus(n.state.summary,e.kind),e.kind===`rebuilt`&&(this.#Pe=void 0);return}e.kind===`rebuilt`&&(this.#Pe=void 0),this.#an({kind:`log`,title:`stdout`,body:t,live:!0})}#rr(e){this.#Re!==void 0&&clearTimeout(this.#Re),this.#Ie=e,this.#Le=e.phase===`complete`,this.#Re=setTimeout(()=>{e.phase===`building`?(this.#Le=!0,this.#Re=void 0):this.#ir(),this.#On()},e.phase===`building`?250:4e3)}#ir(){this.#Re!==void 0&&clearTimeout(this.#Re),this.#Ie=void 0,this.#Le=!1,this.#Re=void 0}#ar(){let e=this.#Fe;if(e===void 0)return;let t=this.#g.get(e.id);if(t!==void 0&&t.live===!0)return{state:e,block:t}}#or(){let e=this.#Fe;if(e===void 0)return;this.#Fe=void 0;let t=this.#g.get(e.id);t!==void 0&&(t.live=!1)}#sr(e){switch(this.#m){case`none`:return!1;case`stderr`:return e===`stderr`;case`sandbox`:return e===`sandbox`;case`all`:return!0}}#cr(e){return e.kind===`sandbox`?!this.#sr(`sandbox`):e.kind===`log`?e.logVisibility===`stderr-only`?this.#m!==`stderr`:e.logVisibility===`all-only`?this.#m!==`all`:!this.#sr(e.title===`stderr`?`stderr`:`stdout`):!1}};function chunkToString(e,t){return typeof e==`string`?e:Buffer.from(e).toString(t)}async function*iterateTUIStream(e){if(e instanceof ReadableStream){let t=e.getReader();try{for(;;){let{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}return}yield*e}function clip(e,t){return clipVisible(e,t)}function promptInputRows({text:e,cursor:t,width:n,theme:r,caretVisible:i,isCommand:a,ghost:o,maxRows:s,placeholder:c,inert:l}){let u=r.colors;if(e.length===0&&c!==void 0){let e=renderInputWithBlockCursor({...visibleLine({text:c,cursor:0},Math.max(1,n-3),r.glyph.ellipsis),visible:i,inverse:u.inverse,render:e=>u.dim(renderInputText(e))});return[clip(`${r.glyph.prompt} ${e}`,n),``]}let style=e=>{let t=renderInputText(e);return a&&t.length>0?u.blue(t):t},d=layoutPromptInput({text:e,cursor:t}),f=Math.min(Math.max(1,s),d.rows.length),p=Math.max(0,Math.min(d.caretRow-f+1,d.rows.length-f)),m=l===!0?u.dim(r.glyph.prompt):u.cyan(r.glyph.prompt),h=u.dim(r.glyph.ellipsis),g=Math.max(1,n-3),_=[];for(let e=p;e<p+f;e+=1){let t=d.rows[e],a=e===0?m:` `;(e===p&&p>0||e===p+f-1&&p+f<d.rows.length)&&(a=h);let s;if(e===d.caretRow){let{before:e,under:n,after:a}=visibleLine({text:t.text,cursor:d.caretOffset},g,r.glyph.ellipsis);s=renderInputWithBlockCursor({before:e,under:n,after:a,visible:i,inverse:u.inverse,render:style}),o.length>0&&d.rows.length===1&&(s+=o)}else s=style(t.text);_.push(clip(`${a} ${s}`,n))}return _.push(``),_}function previousBlockOf(e){let t={kind:e.kind};return e.title!==void 0&&(t.title=e.title),t}function isActiveToolStatus(e){return e===`running`||e===`approval`}function applyCohortLiveness(e){let t=e.some(e=>e.active);for(let n of e)n.block.live=t||n.active}function leadsWithGap(e,t){if(e.kind===`tool`&&(t?.kind===`user`||t?.kind===`assistant`||t?.kind===`question`))return!0;if(e.kind===`sandbox`&&t?.kind===`sandbox`)return!1;if(t?.kind===`sandbox`&&e.kind!==`sandbox`||t?.kind===`log`)return!0;switch(e.kind){case`user`:case`assistant`:case`reasoning`:case`subagent`:case`error`:case`notice`:case`question`:case`connection-auth`:case`sandbox`:case`log`:case`command`:case`warning`:case`flow`:case`turn-stats`:case`session-boundary`:case`todo-list`:case`agent-header`:return!0;default:return!1}}function parseSandboxLogLine(e){let t=e.trim();if(!t.startsWith(`eve: `))return;let n=t.slice(5);return/\bsandbox\b/i.test(n)&&!isLowValueSandboxLogLine(n)?n:void 0}function isLowValueSandboxLogLine(e){return/^initializing (?:\d+ )?sandbox templates?\b/i.test(e)||/^initialized \d+ sandbox\b/i.test(e)||/^reused cached sandbox template\b/i.test(e)||/^sandbox template "[^"]+" \([^)]+\): (checking|reusing|loading microsandbox runtime|microsandbox runtime ready)\b/i.test(e)}function clipLiveRows(e,t,n,r){if(e.length<=t)return[...e];if(t<=1)return[clip(hiddenRowsMarker(e.length,r),n)];let i=t-1;return[clip(hiddenRowsMarker(e.length-i,r),n),...e.slice(e.length-i)]}function hiddenRowsMarker(e,t){let n=e.toLocaleString(),r=e===1?`row`:`rows`;return t.colors.dim(`${t.glyph.dot} ${t.glyph.ellipsis} ${n} earlier ${r} hidden while streaming`)}function collapseReasoning(e,t){switch(e){case`collapsed`:return!0;case`auto-collapsed`:return!t;default:return!1}}function renderNativeToolBlock(e,t,n,r){let i=e.preparing===!0?presentPreparingTool(e.toolName,r):presentTool(e.toolName,e.input,r),a={id:t,kind:`tool`,title:stripTerminalControls(i.title),subtitle:stripTerminalControls(i.subtitle),status:e.status,live:e.status===`running`||e.status===`approval`,expanded:n,toolInput:e.input,toolName:e.toolName,toolGroup:i.group};return i.doneTitle!==void 0&&(a.doneTitle=stripTerminalControls(i.doneTitle)),i.detail!==void 0&&(a.detailLines=i.detail,a.keepDetailWhenDone=i.keepDetailWhenDone===!0),e.output===void 0?e.errorText!==void 0&&(a.result=stripTerminalControls(e.errorText)):(a.result=i.summarizeResult(e.output),a.toolOutput=e.output),a}function writeExistedFlag(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e.existed;return typeof t==`boolean`?t:void 0}function subagentToolStatus(e){switch(e){case`preparing`:return`running`;case`approval-requested`:return`approval`;case`executing`:return`running`;case`done`:return`done`;case`failed`:return`error`;case`rejected`:return`denied`}}function formatToolApprovalTitle(e){return stripTerminalControls(e.title??e.toolName)}function toolSectionId(e){return`tool:${e}`}function questionSectionId(e){return`question:${e}`}function subagentHeaderId(e){return`subagent:${e}:header`}function subagentStepSectionId(e,t){return`subagent:${e}:step:${t}`}function subagentToolSectionId(e,t){return`subagent:${e}:tool:${t}`}function connectionAuthSectionId(e){return`connection-auth:${e}`}function connectionAuthTerminalMessage(e){switch(e){case`authorized`:return`Authorization complete`;case`declined`:return`Authorization declined`;case`failed`:return`Authorization failed`;case`timed-out`:return`Authorization timed out`;case`required`:case`pending`:return}}function formatConnectionAuthContent(e,t){let n=[];if(t!==void 0)n.push(t);else{let t=stripTerminalControls(e.description);t.length>0&&n.push(t);let r=e.challenge;r?.url&&n.push(`URL: ${stripTerminalControls(r.url)}`),r?.userCode&&n.push(`Code: ${stripTerminalControls(r.userCode)}`),r?.expiresAt&&n.push(`Expires: ${stripTerminalControls(r.expiresAt)}`),r?.instructions&&n.push(stripTerminalControls(r.instructions))}if(e.reason!==void 0){let t=stripTerminalControls(e.reason);t.length>0&&n.push(`Reason: ${t}`)}return n.join(`
4
+ `),n=stripPromptControlCharacters(e?.initialDraft??this.#X.text),r=t===void 0?n:n.length===0?t:`${t}\n\n${n}`,i=lineOf(r);return this.#X=EMPTY_LINE,this.#H.begin(i.text),this.#ct(i),this.#G=typeaheadFor(this.#p,i.text),this.#Qt(),this.#An(),await new Promise((e,t)=>{this.#$=t;let apply=e=>{i=e,this.#en(),this.#ct(i),this.#G=typeaheadFor(this.#p,e.text,this.#G),this.#An()},recall=e=>{e!==void 0&&apply(lineOf(e))},interrupt=()=>{this.#G=void 0,this.#$t(),this.#Vt(),t(interruptedError())},suggestions=()=>this.#G!==void 0&&isTypeaheadOpen(this.#G)?this.#G:void 0,highlighted=()=>{let e=suggestions();return e===void 0?void 0:selectedTypeaheadCommand(e)};this.#ve=t=>{t.type!==`ctrl-c`&&this.#ce&&(this.#ce=!1,this.#An());let n=this.#U.apply(i,t,{multiline:!0});if(n!==void 0){apply(n);return}switch(t.type){case`up`:case`ctrl-p`:{let e=suggestions();if(e!==void 0){this.#G=moveTypeaheadSelection(e,-1),this.#An();break}let t=movePromptLine(i,`up`);t===void 0?recall(this.#H.previous(i.text)):apply(t);break}case`down`:case`ctrl-n`:{let e=suggestions();if(e!==void 0){this.#G=moveTypeaheadSelection(e,1),this.#An();break}let t=movePromptLine(i,`down`);t===void 0?recall(this.#H.next()):apply(t);break}case`tab`:{let e=highlighted();e!==void 0&&apply(lineOf(typeaheadCompletion(e)));break}case`escape`:{let e=suggestions();e!==void 0&&(this.#G=dismissTypeahead(e),this.#An());break}case`enter`:{let t=highlighted(),n=t!==void 0&&parsePromptCommand(i.text)===null?typeaheadCompletion(t).trimEnd():i.text;if(n.trim().length===0)break;this.#G=void 0,this.#H.add(n),this.#W=!1,this.#$t(),this.#ee=STATUS.processing,isPromptControlCommand(n)?this.#sn({kind:`command`,body:stripTerminalControls(n.trim()),live:!1}):(this.#nn(),this.#cn(n),this.#Ve=n,this.#J.arm()),this.#ct(EMPTY_LINE),this.#An(),this.#Ut(),e(n);break}case`ctrl-d`:i.text.length===0?(this.#Ft(),interrupt()):apply(deleteForward(i));break;case`ctrl-l`:this.#Nn();break;case`ctrl-r`:this.#An();break;case`ctrl-c`:if(this.#ce){this.#Ft(),interrupt();break}this.#ce=!0,apply(EMPTY_LINE)}},this.#Ht()})}#ct(e){this.#B=e.text,this.#V=e.cursor}takeQueuedPrompt(){let e=this.#Ye.view().steering,t=this.#Ye.takePrompt();return t!==void 0&&(this.#et=e?`steer`:`queue`),t}async renderStream(e,t){this.#zt(t),this.#_.clear(),this.#W=!1,this.#Q.kind!==`waiting`&&(this.#Q={kind:`waiting`,startedAtMs:Date.now()}),this.#ee=this.#L>0?STATUS.connectionAuth:STATUS.processing,this.#un(t?.submittedPrompt),t?.submittedPrompt!==void 0&&this.#f?.recordPrompt(),t?.submittedPrompt!==void 0&&!this.#J.armed&&this.#J.arm(),this.#oe=!1,this.#Qe=!1,this.#tt=!1,this.#nt=t?.submittedPrompt,this.#Ye.beginTurn(),this.#Xe=e.cancel,this.#Ze=e.steer,this.#Ee=void 0,this.#De=void 0,this.#ke=void 0,this.#Ae=void 0,this.#je=Date.now();let n={text:new Map,reasoning:new Map,tools:new Map,modelActivity:`Thinking`,runningTools:new Set,cancelled:!1,restoreCancelledPrompt:!0};this.#Y=n;let r={tools:t?.tools??this.#o,reasoning:t?.reasoning??this.#s,assistantResponseStats:t?.assistantResponseStats??this.#u};this.#tn(),this.#Z=!0,this.#An();let i=new Promise(e=>{this.#Ce=e});this.#ve=e=>this.#Xt(e),this.#Ht();try{for await(let t of takeUntil(iterateTUIStream(e.events),i)){if(this.#oe)break;this.#vn(t,r,n)}}catch(e){let t=summarizeKnownError(e);t===null?this.#dn(`Error`,toErrorMessage(e),{detail:inspectError(e)}):this.#dn(t.name,t.message,{detail:inspectError(e),hint:t.hint})}finally{this.#Ce=void 0,this.#oe&&e.abort?.(),this.#Xe=void 0,this.#Ze=void 0,this.#Ut(),this.#Z=!1,this.#Y=void 0,this.#Q.kind===`waiting`&&(this.#Q={kind:`idle`}),this.#on(),this.#ee=completedTurnStatus({interrupted:this.#oe,cancelled:this.#Qe,continueSession:t?.continueSession===!0}),this.#Tn(n),(this.#oe||n.cancelled)&&this.#wn(n),this.#_n(),this.#on(),this.#f?.reportStats(),this.#An(),t?.continueSession||this.#Vt()}}async renderIdleStream(e,t){let n={tools:t?.tools??this.#o,reasoning:t?.reasoning??this.#s,assistantResponseStats:t?.assistantResponseStats??this.#u},r={text:new Map,reasoning:new Map,tools:new Map,modelActivity:`Thinking`,runningTools:new Set,cancelled:!1,restoreCancelledPrompt:!1};try{for await(let t of iterateTUIStream(e.events))this.#vn(t,n,r)}catch(e){let t=summarizeKnownError(e);t===null?this.#dn(`Error`,toErrorMessage(e),{detail:inspectError(e)}):this.#dn(t.name,t.message,{detail:inspectError(e),hint:t.hint})}finally{this.#Tn(r),r.cancelled&&this.#wn(r),this.#_n(),this.#on(),this.#f?.reportStats(),this.#An()}}async readToolApproval(e,t){return this.#zt(t),this.#rn(),this.#W=!1,this.#Q={kind:`idle`},this.#ee=`Approve ${formatToolApprovalTitle(e)}? (y/n)`,this.#oe=!1,this.#An(),await new Promise((t,n)=>{this.#$=n,this.#ve=r=>{switch(r.type){case`text`:{if(r.framing!==`unframed`)break;let n=r.value.toLowerCase();n===`y`?(this.#nn(),this.#ee=STATUS.processing,this.#Ut(),this.#An(),t({approved:!0})):n===`n`&&(this.#nn(),this.#ee=STATUS.processing,this.#ut(e.toolCallId),this.#Ut(),this.#An(),t({approved:!1,reason:`Denied by user.`}));break}case`ctrl-r`:this.#An();break;case`ctrl-c`:this.#oe=!0,this.#Vt(),n(interruptedError())}},this.#Ht()})}async readInputQuestion(e,t){this.#zt(t),this.#rn(),this.#W=!1,this.#K=!1,this.#Q={kind:`idle`},this.#oe=!1;let n=e.options??[],r=n.length>0,i=(e.allowFreeform===!0||!r)&&r,a=n.length+ +!!i,o=questionSectionId(e.requestId),s=r?`overlay`:`text`,c=0,l=EMPTY_LINE,isOnFreeformRow=()=>i&&c===n.length,overlayPanel=t=>renderQuestionPanel({prompt:stripTerminalControls(e.prompt),options:n,cursor:c,allowFreeform:i,editor:l,caretVisible:this.#de},this.#i,t),renderTextSection=()=>{this.#pn({id:o,kind:`question`,title:stripTerminalControls(e.prompt),body:formatQuestionContent(e,void 0,this.#i),preformatted:!0,live:!0})},syncFreeformCaret=()=>{isOnFreeformRow()?this.#Qt():(this.#$t(),this.#en())};s===`overlay`?(s=`overlay`,this.#W=!1,this.#hn(o),this.#He=overlayPanel,this.#ee=``,syncFreeformCaret(),this.#An()):(s=`text`,this.#He=void 0,renderTextSection(),this.#W=!0,this.#ct(l),this.#ee=``,this.#Qt(),this.#An());let finalize=t=>{this.#He=void 0,this.#pn({id:o,kind:`question`,title:stripTerminalControls(e.prompt),body:`${this.#i.colors.dim(this.#i.glyph.elbow)} ${stripTerminalControls(t.label)}`,preformatted:!0,live:!1}),this.#W=!1,this.#nn(),this.#ee=STATUS.processing,this.#$t(),this.#Ut(),this.#An();let n={};return t.optionId!==void 0&&(n.optionId=t.optionId),t.text!==void 0&&(n.text=t.text),n},dismiss=()=>{this.#He=void 0,this.#pn({id:o,kind:`question`,title:stripTerminalControls(e.prompt),body:`${this.#i.colors.dim(this.#i.glyph.elbow)} ${this.#i.colors.dim(`Dismissed.`)}`,preformatted:!0,live:!1}),this.#W=!1,this.#ee=``,this.#$t(),this.#Ut(),this.#An(),u(void 0)},moveCursor=e=>{a!==0&&(c=(c+e+a)%a,syncFreeformCaret(),this.#An())},selectOptionAt=e=>{let t=n[e];t&&u(finalize({optionId:t.id,label:t.label}))},u;return await new Promise((t,r)=>{this.#$=r,u=t,this.#ve=t=>{if(t.type===`ctrl-c`){if((s===`text`||isOnFreeformRow())&&l.text.length>0){l=EMPTY_LINE,this.#en(),s===`text`&&this.#ct(l),this.#An();return}this.#oe=!0,this.#He=void 0,this.#$t(),this.#Vt(),r(interruptedError());return}if(t.type===`ctrl-r`){this.#An();return}if(s===`overlay`){let r=setupSelectionIntent(t,{textNavigation:!isOnFreeformRow()});if(r?.kind===`move`){moveCursor(r.direction===`up`?-1:1);return}switch(t.type){case`up`:case`ctrl-p`:moveCursor(-1);break;case`down`:case`ctrl-n`:moveCursor(1);break;case`enter`:if(isOnFreeformRow()){let t=resolveQuestionText(l.text,e);t!==void 0&&u(finalize(t));break}selectOptionAt(c);break;case`escape`:if(isOnFreeformRow()&&l.text.length>0){l=EMPTY_LINE,this.#en(),this.#An();break}dismiss();break;default:if(isOnFreeformRow()){let e=this.#U.apply(l,t);e!==void 0&&(l=e,this.#en(),this.#An());break}if(t.type===`text`&&/^[1-9]$/u.test(t.value)){let e=Number(t.value)-1;e<n.length?selectOptionAt(e):e===n.length&&i&&(c=e,syncFreeformCaret(),this.#An())}}return}let a=this.#U.apply(l,t,{multiline:!0});if(a!==void 0){l=a,this.#en(),this.#ct(l),this.#An();return}switch(t.type){case`up`:case`down`:{let e=movePromptLine(l,t.type);e!==void 0&&(l=e,this.#en(),this.#ct(l),this.#An());break}case`enter`:{let t=resolveQuestionText(l.text,e);if(t===void 0)break;u(finalize(t));break}case`escape`:if(l.text.length>0){l=EMPTY_LINE,this.#en(),this.#ct(l),this.#An();break}dismiss()}},this.#Ht()})}upsertSubagentStep(e){if(this.#f?.recordSubagentDispatch(e.callId),this.#c===`hidden`)return;let t=stripTerminalControls(e.reasoning??``).trim(),n=stripTerminalControls(e.message??``).trim();if(t.length!==0||n.length!==0){if(this.#fn(e.callId,e.subagentName),this.#c===`collapsed`){this.#An();return}this.#mn({id:subagentStepSectionId(e.callId,e.sectionKey),kind:`subagent-step`,subagentCallId:e.callId,depth:1,reasoning:t,body:n,collapsed:this.#c!==`full`,live:!e.finalized}),this.#An()}}upsertSubagentTool(e){if(this.#f?.recordSubagentDispatch(e.callId),e.status===`failed`&&e.errorText!==void 0&&this.#f?.append({source:`tool`,summary:`${e.toolName} failed (subagent ${e.subagentName})`,detail:e.errorText}),this.#c===`hidden`)return;if(this.#fn(e.callId,e.subagentName),this.#c===`collapsed`){this.#An();return}let t=subagentToolStatus(e.status),n=e.status===`preparing`?presentPreparingTool(e.toolName):presentTool(e.toolName,e.input,this.#Sn({input:e.input,output:e.output,toolCallId:e.childCallId,toolName:e.toolName})),r={id:subagentToolSectionId(e.callId,e.childCallId),kind:`subagent-tool`,subagentCallId:e.callId,depth:1,title:stripTerminalControls(n.title),subtitle:stripTerminalControls(n.subtitle),status:t,live:t===`running`||t===`approval`,expanded:this.#c===`full`,toolName:e.toolName,toolGroup:n.group,toolInput:e.input};n.doneTitle!==void 0&&(r.doneTitle=stripTerminalControls(n.doneTitle)),n.detail!==void 0&&(r.detailLines=n.detail,r.keepDetailWhenDone=n.keepDetailWhenDone===!0),e.output===void 0?e.errorText!==void 0&&(r.result=stripTerminalControls(e.errorText)):(r.result=n.summarizeResult(e.output),r.toolOutput=e.output),this.#mn(r),this.#lt(e.callId),this.#An()}#lt(e){applyCohortLiveness(this.#h.filter(t=>t.kind===`subagent-tool`&&t.subagentCallId===e).map(e=>({block:e,active:isActiveToolStatus(e.status)})))}removeSubagentTool(e){this.#hn(subagentToolSectionId(e.callId,e.childCallId)),this.#An()}subagents={begin:e=>this.beginSubagent(e),background:e=>this.backgroundSubagent(e),upsertStep:e=>this.upsertSubagentStep(e),upsertTool:e=>this.upsertSubagentTool(e),removeTool:e=>this.removeSubagentTool(e),complete:e=>this.completeSubagent(e),markChildToolCallId:e=>this.markChildToolCallId(e)};beginSubagent(e){if(this.#c===`hidden`)return;this.#fn(e.callId,e.name);let t=this.#g.get(subagentHeaderId(e.callId));t!==void 0&&(t.status===`done`&&delete t.status,t.live=!0),this.#w.delete(e.callId),this.#An()}backgroundSubagent(e){let t=this.#g.get(subagentHeaderId(e.callId));if(t===void 0||this.#_.has(subagentHeaderId(e.callId)))return;t.status=`running`,t.live=!0,t.updateSeq=++this.#x;let n=this.#C.has(e.callId);this.#C.add(e.callId),n||this.#gn(e.callId),this.#on(),this.#An()}completeSubagent(e){let t=this.#g.get(subagentHeaderId(e.callId));if(t!==void 0){if(t.status=`done`,e.authoritative){this.#C.delete(e.callId),this.#w.delete(e.callId);for(let t of this.#h)t.subagentCallId===e.callId&&(t.live=!1)}else{this.#w.add(e.callId);for(let t of this.#h)t.subagentCallId===e.callId&&(t.live=!0)}this.#on(),this.#An()}}markChildToolCallId(e){this.#y.add(e);let t=this.#b.get(e);t!==void 0&&(this.#hn(t),this.#b.delete(e),this.#An())}#ut(e){let t=this.#g.get(toolSectionId(e));t!==void 0&&(t.status=`denied`,t.live=!1)}upsertConnectionAuth(e){if(this.#l===`hidden`)return;let t=connectionAuthTerminalMessage(e.state);this.#pn({id:connectionAuthSectionId(e.name),kind:`connection-auth`,title:`${stripTerminalControls(e.name)} · authorization · ${e.state}`,body:formatConnectionAuthContent(e,t),preformatted:!0,live:t===void 0}),this.#An()}setConnectionAuthPendingCount(e){let t=Math.max(0,e);if(t===this.#L)return;let n=this.#L>0;this.#L=t,t>0?(this.#ee=STATUS.connectionAuth,this.#An()):n&&(this.#ee=STATUS.processing,this.#An())}setVercelStatus(e){this.#R=e,this.#An()}setRemoteConnectionStatus(e){this.#z=e,this.#An()}reset(){this.#h=[],this.#g.clear(),this.#_.clear(),this.#I=void 0,this.#F.length=0,this.#v.length=0,this.#N=!1,this.#P=void 0,this.#dt(),this.#q=!1,this.#Ve=void 0,this.#Ie=void 0,this.#L=0,this.#Ee=void 0,this.#De=void 0,this.#ke=void 0,this.#Ae=void 0,this.#je=void 0,this.#re&&(this.#n.clearAll(),this.#An())}renderSessionBoundary(){this.#ln(),this.#dt();let e=this.#i.colors,t=this.#i.glyph,n=e.dim(`${t.cornerOpen}${t.dash.repeat(2)} Session restarted, clear context.`);this.#sn({kind:`session-boundary`,body:n,live:!1}),this.#An()}#dt(){this.#Ge=void 0,this.#Ke=void 0,this.#y.clear(),this.#b.clear(),this.#E.clear(),this.#C.clear(),this.#w.clear(),this.#S.clear(),this.#qe=void 0,this.#Je=void 0,this.#Ye.reset(),this.#et=void 0,this.#T.clear(),this.#J.reset(),this.#on()}renderNotice(e){let t=stripTerminalControls(e);t.trim().length!==0&&(this.#zt(),this.#sn({kind:`notice`,body:t,live:!1}),this.#An())}renderSetupWarning(e){let t=stripTerminalControls(e);if(t.trim().length===0){this.#ft();return}this.#zt(),this.#We=t,this.#An()}clearSetupWarning(){this.#ft()}#ft(){this.#We!==void 0&&(this.#We=void 0,this.#An())}renderCommandInvocation(e,t){let n=stripTerminalControls(e);if(n.trim().length===0)return;this.#zt();let r={kind:`command`,body:n,live:!1};t===`failed`&&(r.status=`error`),this.#sn(r),this.#An()}renderCommandResult(e,t){let n=stripAnsi(e);n.trim().length!==0&&(this.#zt(),this.#sn({kind:`result`,body:n,live:!1,status:t===`success`?`done`:void 0}),this.#An())}#pt(e,t=`spinner`){this.#zt(),this.#k===void 0&&(this.#W=!1),this.#Q={kind:`idle`},this.#ee=``;let n=t===`pulse`?{kind:`pulse`,startedAtMs:Date.now()}:{kind:`spinner`};this.#Ue={title:stripTerminalControls(e),indicator:n,lines:[],outputBuffer:[]},this.#tn(),this.#An()}#mt(e){this.#Ue!==void 0&&(this.#Ue.navigation=e,this.#An())}#ht(e){this.#rt=void 0,this.#kt();let t=this.#Ue;if(t!==void 0){if(this.#Ue=void 0,this.#k===void 0?this.#rn():this.#st(),e){let e=[];for(let n of t.lines){if(n.evidence===!0){e.push(n.text);continue}(n.tone===`warning`||n.tone===`error`)&&(e.length>0&&this.#sn({kind:`flow`,title:`info`,body:e.join(`
5
+ `),live:!1}),this.#sn({kind:`flow`,title:n.tone,body:n.text,live:!1})),e=[]}}this.#An()}}async#gt(e){let t=this.#Ct(e.message),n=isMultiSelectRequest(e),r=e.kind===`search`?e.searchAction:void 0,i=e.options,a=e.navigation?.kind===`planner`,o={options:i,searchAction:r,submitRow:n&&!a};`initialValue`in e&&e.initialValue!==void 0&&(o.defaultValue=e.initialValue),`initialValues`in e&&e.initialValues!==void 0&&(o.initialValues=e.initialValues);let s=initialSelectState(o),c,l=!1,u=0,isCurrentSearch=e=>e===u,clearSearch=()=>{u+=1,l=!1,s=reduceSelect(s,{type:`clear`},{options:i,searchAction:r,submitRow:n&&!a}),this.#An()},loadSearch=async(e,t)=>{l=!0,c=void 0;let o=++u;this.#An();try{let c=await t(e);if(!isCurrentSearch(o))return;let l=s.filter;i=c,s={...initialSelectState({options:c,searchAction:r,submitRow:n&&!a}),filter:l}}catch(e){isCurrentSearch(o)&&(c=toErrorMessage(e))}finally{isCurrentSearch(o)&&(l=!1,this.#An())}},d=e.notices;if(e.kind===`task-list`||e.kind===`search`&&e.layout===`task-list`){let n=t.taskListLineStart??t.lines.length,r=t.lines.slice(n).filter(e=>e.tone===`success`||e.tone===`warning`||e.tone===`error`).map(e=>({tone:e.tone,text:e.text}));d=e.notices??r,t.taskListLineStart=t.lines.length,t.hideLinesWhileQuestion=!0}let panelState=()=>{let t={...e,message:``,options:i,select:s};return d!==void 0&&d.length>0&&(t.notices=d),c!==void 0&&(t.error=c),l&&(t.loadingFrame=this.#Ln()),t};return t.question=e=>renderSelectQuestion(panelState(),this.#i,e),this.#An(),await this.#Et((t,o)=>{let close=e=>{u+=1,o(e)};if(l){t.type===`ctrl-c`?close(void 0):t.type===`escape`?clearSearch():t.type===`ctrl-r`&&this.#An();return}let d=e.navigation?.kind===`planner`?e.navigation:void 0,f=t.type===`left`&&(d?.activeStep??0)>(d?.firstNavigableStep??0)?`back`:t.type===`right`&&d!==void 0&&d.activeStep>=(d.firstNavigableStep??0)&&d.activeStep<d.steps.length-1?`forward`:void 0;if(f!==void 0){close({kind:`navigate`,direction:f,values:n?orderedSelection(i,s.selected):[]});return}let p={key:t,options:i,searchAction:r,select:s},m=reduceSetupSelectInput(n?{...p,kind:e.kind,required:e.required,plannerNavigation:a||void 0}:{...p,kind:e.kind});switch(m.kind){case`cancel`:close(void 0);return;case`repaint`:this.#An();return;case`update`:s=m.select,c=void 0,this.#An();return;case`submit`:{let e=searchActionQuery(m.values[0]??``),t=r?.load;if(e===void 0||t===void 0){close(m.values);return}loadSearch(e,t);return}case`error`:c=m.message,this.#An();return;case`ignore`:return}}).promise}#_t(e){this.#zt();let t=this.#wt();t.status={kind:`progress`,text:stripTerminalControls(e.status),startedAtMs:Date.now()};let n;t.question=t=>renderSelectQuestion({kind:`actions`,context:e.context,actions:e.actions,cursor:n},this.#i,t),this.#An();let r=this.#Et((t,r)=>{let i=setupSelectionIntent(t,{textNavigation:!0});switch(i?.kind){case`cancel`:r(void 0);return;case`move`:n=moveActionCursor(n,i.direction,e.actions.length),this.#An();return;case`repaint`:this.#An();return;case`submit`:n!==void 0&&r(e.actions[n].value);return;case void 0:return}},()=>{t.status=void 0});return{choice:r.promise,close:()=>r.settle(void 0)}}async#vt(e){let t=this.#Ct(e.message),n={options:e.options};e.initialValue!==void 0&&(n.defaultValue=e.initialValue);let r=initialSelectState(n),i=lineOf(``),a;t.question=t=>{let n={kind:`inline-edit`,layout:`task-list`,message:``,options:e.options,select:r,edit:{optionValue:e.editable.value,caretVisible:this.#de,editor:{kind:`rename`,editor:i,defaultValue:e.editable.defaultValue,formatHint:e.editable.formatHint}}};return a!==void 0&&(n.error=a),renderSelectQuestion(n,this.#i,t)};let onEditableRow=()=>selectValueAtCursor([...e.options],r.cursor)===e.editable.value,syncEditableRow=()=>{onEditableRow()?this.#Qt():(i=lineOf(``),this.#$t())};return syncEditableRow(),this.#An(),await this.#Et((t,n)=>{let applyEditor=e=>{i=e,a=void 0,this.#en(),this.#An()},applySelect=t=>{r=reduceSelect(r,t,{options:e.options}),a=void 0,syncEditableRow(),this.#An()},submit=()=>{let t=selectValueAtCursor([...e.options],r.cursor);if(t===void 0)return;if(t!==e.editable.value){n({kind:`selected`,value:t});return}let o=(i.text||e.editable.defaultValue).trim(),s=e.editable.validate?.(o);if(s!==void 0){a=s,this.#An();return}n(o===e.editable.defaultValue?{kind:`selected`,value:t}:{kind:`edited`,value:t,text:o})},o=setupSelectionIntent(t,{textNavigation:!onEditableRow()});switch(o?.kind){case`cancel`:n(void 0);return;case`move`:applySelect({type:o.direction});return;case`submit`:submit();return;case`repaint`:this.#An();return;case void 0:}if(!onEditableRow())return;let s=this.#U.apply(i,t);s!==void 0&&applyEditor(s)},()=>this.#$t()).promise}async#yt(e){this.#U.clear();let t=this.#Ct(e.message),n=initialProviderPickerState(e.options,e.initialValue),r,cursorBadge=()=>{if(n.phase.kind!==`inactive`)return;let t=selectValueAtCursor([...e.options],n.select.cursor),r=e.options.find(e=>e.value===t);if(r!==void 0)return enterBadge(this.#i,r.checked===!0?`change`:void 0)};t.question=t=>{let r=cursorBadge(),i={kind:`inline-edit`,layout:`stacked`,message:``,options:e.options,select:n.select,edit:{optionValue:`ai-gateway-key`,caretVisible:this.#de,editor:{kind:`key`,phase:n.phase}}};return r!==void 0&&(i.cursorBadge=r),renderSelectQuestion(i,this.#i,t)};let syncCaret=()=>{n.phase.kind===`editing`||n.phase.kind===`invalid`?this.#Qt():this.#$t()};return syncCaret(),this.#An(),await this.#Et((t,i,a)=>{let dispatch=t=>{let o=transitionProviderPicker(n,t,e.options);switch(o.kind){case`ignore`:return;case`clear`:r?.abort(),r=void 0,n=o.state,syncCaret(),this.#An();return;case`cancel`:i(void 0);return;case`render`:n=o.state,syncCaret(),this.#An();return;case`validate`:{n=o.state,syncCaret(),this.#An();let t=new AbortController;r=t;let i;try{i=e.validateInlineKey(o.key,t.signal)}catch(e){a(e);return}i.then(e=>{r!==t||t.signal.aborted||(r=void 0,dispatch({type:`validated`,validation:e}))},e=>{r!==t||t.signal.aborted||(r=void 0,a(e))});return}case`settle`:i(o.result);return}},o=setupSelectionIntent(t,{textNavigation:n.phase.kind===`inactive`});switch(o?.kind){case`cancel`:dispatch({type:`cancel`});return;case`move`:dispatch({type:`move`,direction:o.direction});return;case`submit`:dispatch({type:`submit`});return;case`repaint`:this.#An();return;case void 0:}if(n.phase.kind!==`editing`&&n.phase.kind!==`invalid`)return;let s=applyLineEditorKey(n.phase.editor,t);s!==void 0&&(this.#en(),dispatch({type:`edit`,editor:s}))},()=>{r?.abort(),r=void 0,this.#$t()}).promise}async#bt(e){let t=initialModelPickerState(e),n=this.#Ct(modelPickerTitle(t));return n.question=n=>renderModelPicker(e,t,this.#i,n),this.#An(),await this.#Et((r,i)=>{let dispatch=r=>{let a=transitionModelPicker(t,r,e);switch(a.kind){case`render`:if(t===a.state)return;t=a.state,n.questionTitle=modelPickerTitle(t),this.#An();return;case`cancel`:i(void 0);return;case`settle`:i(a.result);return}};if(r.type===`ctrl-c`){dispatch({type:`cancel`});return}if(r.type===`escape`||r.type===`left`){dispatch({type:`back`});return}let a=setupSelectionIntent(r);switch(a?.kind){case`move`:dispatch({type:a.direction});return;case`submit`:dispatch({type:`submit`});return;case`repaint`:this.#An();return}if(r.type===`backspace`){dispatch({type:`backspace`});return}if(r.type===`alt-backspace`){dispatch({type:`delete-word-backward`});return}if(r.type===`text`)for(let e of r.value.replaceAll(`
6
+ `,` `))e>=` `&&e!==``&&dispatch({type:`char`,char:e})}).promise}async#xt(e){e.mask===!0&&this.#U.clear();let t=this.#Ct(e.message),n=lineOf(``),r;return t.question=t=>{let i={message:``,editor:n,mask:e.mask===!0};return e.placeholder===void 0?e.defaultValue!==void 0&&(i.placeholder=e.defaultValue):i.placeholder=e.placeholder,e.notices!==void 0&&(i.notices=e.notices),r!==void 0&&(i.error=r),renderTextQuestion(i,this.#i,t,this.#de)},this.#Qt(),this.#An(),await this.#Et((t,i)=>{let apply=e=>{n=e,r=void 0,this.#en(),this.#An()},a=e.mask?applyLineEditorKey(n,t):this.#U.apply(n,t);if(a!==void 0){apply(a);return}switch(t.type){case`ctrl-c`:case`escape`:i(void 0);return;case`ctrl-r`:this.#An();return;case`enter`:{let t=n.text.length>0?n.text:e.defaultValue??``,a=e.validate?.(t);if(a!==void 0){r=a,this.#An();return}i(t);return}default:return}},()=>this.#$t()).promise}async#St(e){let t=this.#Ct(e.message);return t.question=t=>renderAcknowledgeQuestion({message:``,lines:e.lines},this.#i,t),this.#An(),await this.#Et((e,t)=>{switch(e.type){case`enter`:case`escape`:case`ctrl-c`:t();return;case`ctrl-r`:this.#An();return;default:return}}).promise}#Ct(e){this.#zt(),this.#W=!1,this.#Q={kind:`idle`},this.#ee=``;let t=this.#wt();return t.questionTitle=stripTerminalControls(e),t.status!==void 0&&(t.status=void 0,t.summary=void 0,t.preview=void 0),t}#wt(){return this.#Ue===void 0&&(this.#Ue={title:``,indicator:{kind:`spinner`},lines:[],outputBuffer:[],implicit:!0}),this.#Ue}#Tt(){this.#Ue?.implicit===!0?this.#Ue=void 0:this.#Ue!==void 0&&(this.#Ue.question=void 0,this.#Ue.questionTitle=void 0,this.#Ue.hideLinesWhileQuestion=!1),this.#ve=void 0,this.#Ut(),this.#k===void 0?this.#Ue!==void 0&&this.#Ot():this.#st(),this.#Ue===void 0&&this.#An()}#Et(e,t){let n=!1,r,i,a=new Promise((e,t)=>{r=e,i=t}),settle=e=>{n||(n=!0,t?.(),this.#Tt(),r(e))},reject=e=>{n||(n=!0,t?.(),this.#Tt(),i(e))};return this.#Yt(),this.#ve=t=>{t.type===`ctrl-c`&&this.#Ft(),e(t,settle,reject)},this.#Ht(),{promise:a,settle}}#Dt(e){let t,n=new Promise(e=>{t=e});return this.#rt=t,this.#Ot(e?.interruptible??!0),{promise:n,dispose:()=>{this.#rt===t&&(this.#rt=void 0,this.#kt())}}}#Ot(e=!0){if(this.#k!==void 0){this.#st();return}if(this.#rt===void 0)return;let consumer=t=>{if(e&&(t.type===`ctrl-c`||t.type===`escape`)){t.type===`ctrl-c`&&this.#Ft();let e=this.#rt;this.#rt=void 0,this.#kt(),e?.(t.type===`ctrl-c`?`ctrl-c`:`escape`);return}t.type===`ctrl-r`&&this.#An()};this.#it=consumer,this.#Yt(),this.#ve=consumer,this.#Ht()}#kt(){this.#it!==void 0&&(this.#ve===this.#it&&this.#Ut(),this.#it=void 0)}#At(e){let t=e===void 0?void 0:typeof e==`string`?{kind:`progress`,text:stripTerminalControls(e),startedAtMs:Date.now()}:{kind:`external-action`,text:stripTerminalControls(e.text),emphasis:stripTerminalControls(e.emphasis),startedAtMs:Date.now()};if(this.#Ue!==void 0){this.#Ue.status=t,t===void 0&&(this.#Ue.preview=void 0),this.#An();return}if(!(this.#W||this.#Z)){if(t===void 0){this.#Q={kind:`idle`},this.#te=void 0,this.#rn(),this.#An();return}this.#zt(),this.#nn(),this.#te=t.text,this.#An()}}#jt(e,t){let n=stripTerminalControls(e);if(n.trim().length===0)return;let r=this.#Ue;if(r!==void 0){if(r.preview=void 0,t===`warning`||t===`error`)for(let e of r.outputBuffer)r.lines.push({text:e,tone:`info`,evidence:!0});r.outputBuffer=[],r.lines.push({text:n,tone:t}),this.#An();return}this.#zt(),this.#sn({kind:`flow`,title:t,body:n,live:!1}),this.#An()}#Mt(e){let t=this.#Ue;t!==void 0&&(t.lines=[],t.outputBuffer=[],t.preview=void 0,t.status=void 0,t.summary=e===void 0?void 0:{headline:stripTerminalControls(e.headline),facts:e.facts.map(e=>({label:stripTerminalControls(e.label),value:stripTerminalControls(e.value)}))},this.#An())}#Nt(e){let t=stripTerminalControls(e);if(t.trim().length===0)return;let n=this.#Ue;if(n===void 0){this.#jt(t,`info`);return}n.preview=t,n.outputBuffer.push(t),n.outputBuffer.length>40&&n.outputBuffer.shift(),this.#An()}async#Pt(e){this.#ye=``,this.#Yt(),this.#rt=void 0,this.#kt(),this.#Ut(),this.#in(),this.#n.clear(),this.#Qn(),this.#r.enter({cursor:`visible`,mouse:!1}),this.#e.isTTY&&this.#e.setRawMode?.(!1),this.#e.pause();try{return await e()}finally{this.#r.exit(),this.#e.isTTY&&this.#e.setRawMode?.(!0),this.#e.resume(),this.#ye=``,this.#Yt(),this.#n.hideCursor(),this.#Zn(),this.#Ue===void 0?this.#on():(this.#tn(),this.#Ot()),this.#n.reset(),this.#An()}}setSessionId(e){this.#$e=e}shutdown(){if(this.#Vt(),this.#ie&&!this.#ae){this.#ae=!0;let e=this.#$e===void 0?``:` ${this.#i.glyph.dot} session ${this.#$e}`;this.#t.write(`${this.#i.colors.dim(`${eveVersionTag()}${e}`)}\n`)}}suspendPromptForInput(){this.#X={cursor:this.#V,text:this.#B},this.#Vt()}requestInterrupt(){this.#oe=!0,this.#Ue!==void 0&&this.#ve?.({type:`ctrl-c`}),this.#Ce?.(),this.#Vt()}exitRequested(){return this.#se}#Ft(){this.#se=!0,this.#ue?.()}async#It(e){if(this.#at!==void 0||!this.#re)return;let t=new TraceViewerSession({...e,theme:this.#i,dimensions:()=>({width:this.#Yn(),height:this.#Xn()}),paint:e=>this.#r.paint(e,this.#Xn()),tracingDisabled:process.env.EVE_TRACES===`off`,copyText:e=>copyTextToClipboard(e,e=>this.#r.writeRaw(e)),terminalBackground:this.#ot});this.#at=t,this.#r.enter(),this.#i.color&&this.#r.writeRaw(BACKGROUND_COLOR_QUERY),await new Promise(e=>{this.#Rt=e,this.#ve=e=>{t.handleKey(e)===`close`&&this.#Lt()},this.#Ht(),t.start()})}#Lt(){let e=this.#at;if(e===void 0)return;this.#at=void 0,e.dispose(),this.#Ut(),this.#r.exit(),this.#n.hideCursor(),this.#An(),this.#n.showCursor();let t=this.#Rt;this.#Rt=void 0,t?.()}#Rt;#zt(e){this.#ne=e?.title??this.#ne,e?.contextSize!==void 0&&(this.#Oe=e.contextSize),!this.#re&&(this.#re=!0,this.#ie=!0,this.#n.reset(),this.#n.hideCursor(),this.#Zn(),this.#e.isTTY&&(this.#e.setRawMode?.(!0),this.#e.resume(),this.#n.emitBracketedPaste(!0)),this.#Se=()=>this.#An(),this.#t.on(`resize`,this.#Se),process.on(`exit`,this.#Bt))}#Bt=()=>{this.#re&&(this.#r.exit(),this.#e.isTTY&&(this.#n.emitBracketedPaste(!1),this.#e.setRawMode?.(!1)),this.#n.showCursor())};#Vt(){this.#Lt();let e=this.#$;if(this.#$=void 0,e?.(interruptedError()),this.#Ut(),this.#$t(),this.#in(),this.#ge!==void 0&&(clearTimeout(this.#ge),this.#ge=void 0),this.#_e=!1,this.#or(),this.#re){this.#cr();for(let e of this.#h)e.kind===`log`&&e.id===void 0&&(e.live=!1);this.#An(),this.#n.clear(),this.#n.showCursor(),this.#Qn(),this.#n.newline(),this.#e.isTTY&&(this.#n.emitBracketedPaste(!1),this.#e.setRawMode?.(!1),this.#e.pause()),this.#Se&&=(this.#t.off(`resize`,this.#Se),void 0),process.off(`exit`,this.#Bt),this.#re=!1}}#Ht(){this.#e.off(`data`,this.#Wt),this.#e.on(`data`,this.#Wt),this.#ye.length>0&&queueMicrotask(()=>{this.#ve!==void 0&&this.#ye.length>0&&(this.#qt(),this.#Gt())})}#Ut(){this.#e.off(`data`,this.#Wt),this.#Yt(),this.#ve=void 0}#Wt=e=>{this.#Yt(),this.#ye+=this.#be.write(e),this.#qt(),this.#Gt()};#Gt(){if(this.#ye===`\x1B`){this.#xe=setTimeout(()=>{this.#ye===`\x1B`&&(this.#ye=``,this.#Kt({type:`escape`}))},30),this.#xe.unref?.();return}if(isIncompletePaste(this.#ye)){let e=this.#ye;this.#xe=setTimeout(()=>{if(this.#ye!==e)return;let t=sanitizePastedText(stripPasteStart(e));this.#ye=``,t.length>0&&this.#Kt({type:`text`,value:t,framing:`bracketed-paste`})},incompletePasteFlushMs),this.#xe.unref?.();return}if(isIncompleteOsc(this.#ye)){let e=this.#ye;this.#xe=setTimeout(()=>{this.#ye===e&&(this.#ye=``)},incompletePasteFlushMs),this.#xe.unref?.()}}#Kt(e){this.#U.interruptYank(e),this.#ve?.(e)}#qt(){for(;this.#ye.length>0;){let e=nextKey(this.#ye);if(e.incomplete)return;if(this.#ye=this.#ye.slice(e.consumed),e.key!==void 0&&e.key.type!==`ignore`){if(e.key.type===`osc`){this.#Jt(e.key.value);continue}this.#Kt(e.key)}}}#Jt(e){let t=parseBackgroundColorReply(e);t!==void 0&&(this.#ot=t,this.#at?.setTerminalBackground(t))}#Yt(){this.#xe&&=(clearTimeout(this.#xe),void 0)}#Xt(e){switch(e.type){case`ctrl-l`:case`ctrl-r`:this.#An();break;case`enter`:{let e=this.#X.text;if(e.trim().length===0)break;if(parsePromptCommand(e)?.type===`cancel`&&this.#Xe!==void 0){this.#X=EMPTY_LINE,this.#Ye.requestCancellation(),this.#tt=!0,this.renderCommandInvocation(e.trim()),this.renderCommandResult(`Turn cancellation requested.`),this.#Xe(),this.#An();break}let t=this.#Ze;t!==void 0&&parsePromptCommand(e)===null?(this.#X=EMPTY_LINE,this.#Zt(e,t)):this.#Ye.enqueue(e)&&(this.#X=EMPTY_LINE),this.#An();break}case`ctrl-c`:case`escape`:if(e.type===`ctrl-c`&&this.#Ye.view().cancelling){this.#oe=!0,this.#le=!0,this.#Q={kind:`idle`},this.#ee=`Interrupted`,this.#Ce?.(),this.#An();break}if(this.#Ye.idle&&this.#Xe===void 0)break;if(this.#Ye.handleEscape()===`steer`){let e=this.#Ze;if(e!==void 0){let t=this.#Ye.takeSteering();this.#Zt(t,e)}}else this.#tt=!0,this.#Xe?.();this.#An();break;default:{let t=this.#U.apply(this.#X,e,{multiline:!0});t!==void 0&&(this.#X=t,this.#An());break}}}#Zt(e,t){this.#et=`steer`,this.#un(e),t(e).catch(t=>{this.#Ye.restoreSteering(e),this.#dn(`Steering failed`,toErrorMessage(t)),this.#An()})}#Qt(){this.#$t(),this.#en(),this.#me=setInterval(()=>{this.#de=!this.#de,this.#An()},500),this.#me.unref?.()}#$t(){this.#me&&=(clearInterval(this.#me),void 0),this.#de=!0}#en(){this.#de=!0}#tn(){this.#in(),this.#he=setInterval(()=>{this.#fe+=1,this.#An()},90),this.#he.unref?.()}#nn(){let e=Date.now();this.#pe=e,this.#Q={kind:`waiting`,startedAtMs:e},this.#tn()}#rn(){this.#an()||this.#in()}#in(){this.#he&&=(clearInterval(this.#he),void 0)}#an(){return this.#h.some(e=>e.live&&e.subagentCallId!==void 0&&(this.#C.has(e.subagentCallId)||this.#w.has(e.subagentCallId)))}#on(){this.#an()?this.#tn():!this.#Z&&this.#Q.kind===`idle`&&this.#in()}#sn(e){e.id!==this.#Ie?.id&&this.#cr(),e.updateSeq=++this.#x;let t=e.subagentCallId!==void 0&&this.#C.has(e.subagentCallId)?-1:this.#h.findIndex(e=>e.subagentCallId!==void 0&&this.#C.has(e.subagentCallId));t<0?this.#h.push(e):this.#h.splice(t,0,e),e.id&&this.#g.set(e.id,e)}#cn(e){this.#q=!0,this.#sn({kind:`user`,body:stripTerminalControls(e),live:!1}),this.#An()}#ln(){let e=this.#J.settle();if(e===void 0||e.elapsedMs<=1e4&&e.inputTokens<=2e4)return;let t=`Done in ${this.#Hn(e.elapsedMs)}`,n=this.#De??0;if(this.#Oe!==void 0&&this.#Oe>0&&n>0){let e=Math.round(n/this.#Oe*100);t+=` ${this.#i.glyph.dot} ${e}% context`}this.#sn({kind:`turn-stats`,body:t,live:!1})}#un(e){if(e==null)return;let t=this.#et;if(this.#et=void 0,this.#Ve===e){this.#Ve=void 0;return}let n={kind:`user`,body:stripTerminalControls(e),live:!1};t!==void 0&&(n.promptOrigin=t),this.#sn(n)}#dn(e,t,n={}){let r=stripTerminalControls(e),i=stripTerminalControls(t),a=n.detail===void 0?void 0:stripTerminalControls(n.detail),o=n.hint===void 0?void 0:stripTerminalControls(n.hint),s={source:`workflow`,summary:`${r}: ${i}`,detail:a??i};this.#f?.append(o===void 0?s:{...s,hint:o});let c={kind:`error`,title:r,body:i,live:!1};o!==void 0&&(c.hint=o),a!==void 0&&(c.detail=this.#f===void 0?a:`details: ${this.#f.displayPath}`),this.#sn(c),this.#An()}#fn(e,t){if(this.#E.has(e))return;this.#E.add(e);let n=stripTerminalControls(t),r=this.#S.get(n)??[];if(r.push(e),this.#S.set(n,r),r.length===2){let e=this.#g.get(subagentHeaderId(r[0]));e!==void 0&&(e.subtitle=`#1`)}let i={id:subagentHeaderId(e),kind:`subagent`,subagentCallId:e,title:n,live:!0};r.length>1&&(i.subtitle=`#${r.length}`),this.#sn(i)}#pn(e){if(e.id&&this.#_.has(e.id))return;let t=e.id?this.#g.get(e.id):void 0;if(t){Object.assign(t,e),t.updateSeq=++this.#x;return}this.#sn(e)}#mn(e){if(e.id&&this.#_.has(e.id))return;let t=e.id?this.#g.get(e.id):void 0;if(t!==void 0){Object.assign(t,e),t.updateSeq=++this.#x;return}let n=e.subagentCallId;if(n===void 0){this.#sn(e);return}e.id!==this.#Ie?.id&&this.#cr(),e.updateSeq=++this.#x;let r=-1;for(let e=0;e<this.#h.length;e+=1)this.#h[e]?.subagentCallId===n&&(r=e);this.#h.splice(r<0?this.#h.length:r+1,0,e),e.id!==void 0&&this.#g.set(e.id,e)}#hn(e){this.#h=this.#h.filter(t=>t.id!==e),this.#g.delete(e)}#gn(e){let t=this.#h.filter(t=>t.subagentCallId===e);t.length!==0&&(this.#h=this.#h.filter(t=>t.subagentCallId!==e),this.#h.push(...t))}#_n(){for(let e of this.#h)e.subagentCallId!==void 0&&this.#w.has(e.subagentCallId)||e.status===`approval`||e.status===`running`||e.kind===`connection-auth`&&e.live||(e.live=!1)}#vn(e,t,n){let r=turnActivityLabel(n);switch(updateTurnActivity(n,e),e.type){case`turn-start`:e.turnId!==this.#Ke&&(this.#Ke=e.turnId,this.#Ge=void 0,this.#An());break;case`step-start`:this.#Ge=typeof e.modelId==`string`&&stripTerminalControls(e.modelId.slice(0,256)).replace(/\s+/gu,` `).trim()||void 0,this.#An();break;case`step-finish`:this.#f?.recordStepUsage(e.usage),e.usage!==void 0&&this.#J.addUsage(e.usage),this.#Tn(n),this.#kn(e.usage),this.#An();break;case`assistant-delta`:{let t=(n.text.get(e.id)??``)+stripTerminalControls(e.delta);n.text.set(e.id,t),this.#yn(e.id,t,!0);break}case`assistant-complete`:{let t=n.text.get(e.id)??``,r=typeof e.text==`string`?stripTerminalControls(e.text):t;n.text.set(e.id,r),this.#yn(e.id,r,!1);break}case`reasoning-delta`:{if(t.reasoning===`hidden`)break;let r=(n.reasoning.get(e.id)??``)+stripTerminalControls(e.delta);if(n.reasoning.set(e.id,r),t.reasoning===`full`){this.#bn(e.id,r,!0,t);break}break}case`reasoning-complete`:{if(t.reasoning===`hidden`)break;let r=n.reasoning.get(e.id)??``;if(t.reasoning===`full`){this.#bn(e.id,r,!1,t);break}break}case`tool-call-preparing`:if(t.tools===`hidden`||isPanelRoutedTool(e.toolName))break;this.#xn({input:void 0,preparing:!0,status:`running`,toolCallId:e.toolCallId,toolName:e.toolName},t,n);break;case`tool-call`:if(this.#f?.recordToolCall(e.toolName),t.tools===`hidden`)break;this.#xn({input:e.input,status:`running`,toolCallId:e.toolCallId,toolName:e.toolName},t,n);break;case`tool-approval-request`:{if(t.tools===`hidden`)break;let r=n.tools.get(e.toolCallId);if(r===void 0)break;this.#xn({...r,status:`approval`},t,n);break}case`tool-result`:{if(t.tools===`hidden`)break;let r=this.#On(e.toolCallId,n);if(r===void 0)break;this.#xn({...r,output:e.output,status:`done`},t,n);break}case`tool-error`:{let r=this.#On(e.toolCallId,n);if(this.#f?.append({source:`tool`,summary:`${r?.toolName??e.toolCallId} failed`,detail:e.errorText}),t.tools===`hidden`||r===void 0)break;this.#xn({...r,errorText:e.errorText,status:`error`},t,n);break}case`tool-rejected`:{if(t.tools===`hidden`)break;let r=this.#On(e.toolCallId,n);if(r===void 0)break;this.#xn({...r,errorText:e.reason,status:`denied`},t,n);break}case`error`:this.#dn(`Error`,e.errorText,{detail:e.detail,hint:e.hint});break;case`turn-cancelled`:if(n.cancelled=!0,!n.restoreCancelledPrompt)break;this.#Qe=!0,!this.#tt&&this.#nt!==void 0&&this.#X.text.length===0&&(this.#X=lineOf(this.#nt),this.renderNotice(`The turn was cancelled from outside this prompt — the message was restored to the input.`));break;case`finish`:this.#kn(e.usage),this.#An()}n===this.#Y&&turnActivityLabel(n)!==r&&this.#An()}#yn(e,t,n){let r=stripTerminalControls(t).trim();r.length!==0&&(this.#pn({id:e,kind:`assistant`,body:r,live:n}),this.#An())}#bn(e,t,n,r){let i=stripTerminalControls(t).trim();i.length!==0&&(this.#pn({id:e,kind:`reasoning`,body:i,collapsed:collapseReasoning(r.reasoning,n),live:n}),this.#An())}#xn(e,t,n){if(n.tools.set(e.toolCallId,e),this.#y.has(e.toolCallId)||this.#En(e)||toolBaseName(e.toolName)===`ask_question`)return;let r=toolSectionId(e.toolCallId);this.#b.set(e.toolCallId,r);let i=this.#Sn(e);this.#pn(renderNativeToolBlock(e,r,t.tools===`full`,i)),this.#Dn(n),this.#An()}#Sn(e){e.output!==void 0&&this.#T.observeRead(e.output);let t={};this.#Cn(e.toolName)&&(t.isSubagent=!0);let n=readWriteFileInput(e.toolName,e.input);if(n===void 0)return t.isSubagent===!0?t:void 0;let r=this.#T.observeWrite({path:n.path,content:n.content,callId:e.toolCallId});r!==void 0&&(t.previousContent=r);let i=writeExistedFlag(e.output);return i!==void 0&&(t.existed=i),t}#Cn(e){let t=this.#D?.info?.subagents.local;if(t===void 0||t.length===0)return!1;let n=toolBaseName(e);return t.some(e=>e.name===n)}#wn(e){for(let t of e.tools.keys()){if(this.#y.has(t))continue;let e=this.#b.get(t)??toolSectionId(t),n=this.#g.get(e);n?.kind===`tool`&&n.status===`running`&&(n.status=`error`,n.result=`interrupted`,n.live=!1)}}#Tn(e){for(let[t,n]of e.tools){if(n.preparing!==!0)continue;e.tools.delete(t);let r=this.#b.get(t)??toolSectionId(t);this.#hn(r),this.#b.delete(t)}}#En(e){let t=readTodoToolItems(e.toolName,e.input);if(t===void 0)return!1;if(t.length>0&&allTodoItemsSettled(t)){let e=JSON.stringify(t);this.#Je!==e&&(this.#Je=e,this.#sn({kind:`todo-list`,body:renderFinishedTodoRows(t,this.#Yn(),this.#i).join(`
7
+ `),live:!1})),this.#qe=void 0}else this.#qe=t.length>0?t:void 0,this.#Je=void 0;return this.#An(),!0}#Dn(e){let t=[];for(let n of e.tools.values()){if(this.#y.has(n.toolCallId))continue;let e=this.#b.get(n.toolCallId)??toolSectionId(n.toolCallId),r=this.#g.get(e);r?.kind===`tool`&&t.push({block:r,active:isActiveToolStatus(n.status)})}applyCohortLiveness(t)}#On(e,t){let n=t.tools.get(e);if(n!==void 0)return n;let r=this.#b.get(e)??toolSectionId(e),i=this.#g.get(r);if(i!==void 0&&i.kind===`tool`)return{errorText:i.status===`error`&&typeof i.result==`string`?i.result:void 0,input:i.toolInput,output:i.toolOutput,status:i.status??`running`,toolCallId:e,toolName:i.toolName??i.title??`tool`}}#kn(e){if(e===void 0)return;let{inputTokens:t,outputTokens:n}=e;if((t!=null||n!=null)&&(this.#Ee=(t??0)+(n??0)),this.#De=t??this.#De,this.#ke=n??this.#ke,this.#ke!=null&&this.#je!==void 0){let e=(Date.now()-this.#je)/1e3;e>0&&(this.#Ae=this.#ke/e)}}#An(){if(this.#re){if(this.#we){this.#Te=!0;return}this.#we=!0;try{do this.#Te=!1,this.#jn();while(this.#Te)}finally{this.#we=!1}}}#jn(){if(!this.#re)return;if(this.#at!==void 0){this.#at.repaint();return}let e=this.#Yn(),t=this.#Bn(e),n=this.#M===void 0?[]:this.#Fn(),r=Math.max(1,this.#Xn()-n.length-t.length),i=[],a=this.#I,o=groupToolBlocksForDisplay(this.#h),s=0;for(;s<o.length&&o[s].display.live===!1;)s+=1;if(s>0){let e=new Set(o.slice(0,s).flatMap(e=>e.members));for(let t=this.#h.length-1;t>=0;--t)e.has(this.#h[t])&&this.#h.splice(t,1)}for(let t of o.slice(0,s)){for(let e of t.members)this.#v.push(e),e.id&&(this.#_.add(e.id),this.#g.delete(e.id));if(this.#ur(t.display))continue;let n=this.#In(t.display,e,a);a=previousBlockOf(t.display),this.#I=a,i.push(...n),this.#F.push(...n)}let c=[];for(let{display:t}of o.slice(s)){if(this.#ur(t))continue;let n=this.#In(t,e,a);a=previousBlockOf(t);for(let e=0;e<n.length;e+=1)c.push({block:t,row:n[e]})}let l=[...n,...clipLiveRows(c.map(e=>e.row),r,e,this.#i),...t];i.length>0?this.#n.flush(i,l):this.#n.update(l)}#Mn(){if(!this.#re)return;let e=this.#Yn(),t=this.#Bn(e),n=Math.max(1,this.#Xn()-t.length),r=this.#I,i=[];for(let{display:t}of groupToolBlocksForDisplay(this.#h)){if(this.#ur(t))continue;let n=this.#In(t,e,r);r=previousBlockOf(t),i.push(...n)}let a=[...clipLiveRows(i,n,e,this.#i),...t];this.#n.clearAll(),this.#n.flush([...this.#Fn(),...this.#F],a)}logDisplayMode(){return this.#m}setLogDisplayMode(e){e!==this.#m&&(this.#m=e,e===`all`&&this.flushDelayedDevBuildErrors(),this.#Pn(),this.#re&&this.#Mn())}flushDelayedDevBuildErrors(){let e=this.#Fe;e!==void 0&&(this.#Fe=void 0,this.#sn({kind:`log`,title:`stderr`,body:e,live:!0}),this.#An())}#Nn(){this.#_e=!0,this.#ge!==void 0&&clearTimeout(this.#ge),this.#ge=setTimeout(()=>{this.#_e=!1,this.#ge=void 0,this.#An()},5e3),this.setLogDisplayMode(nextLogDisplayMode(this.#m)),this.#An()}#Pn(){let e=this.#Yn();this.#F.length=0;let t;for(let{display:n}of groupToolBlocksForDisplay(this.#v,{logCoalescing:`runs`})){if(this.#ur(n))continue;let r=this.#In(n,e,t);t=previousBlockOf(n),this.#F.push(...r)}this.#I=t}#Fn(){let e=this.#D,t=this.#M;if(e===void 0&&t===void 0)return[];let n={name:e?.name??t?.name,theme:this.#i,width:this.#Yn()};return e?.info!==void 0&&(n.info=e.info),buildAgentHeader(n)}#In(e,t,n){let r={renderMarkdown:this.#a,activityPulse:this.#Rn(this.#pe,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH)};n!==void 0&&(r.previous=n);let i=renderBlockLines(e,t,this.#i,r);return(e.depth??0)===0&&leadsWithGap(e,n)?[``,...i]:i}#Ln(){return this.#i.spinner[this.#fe%this.#i.spinner.length]??``}#Rn(e,t){return isProgressPulseVisible(Date.now()-e)?t:` `}#zn(e,t){return e.indicator.kind===`spinner`?{glyph:this.#Ln(),color:`yellow`}:{glyph:this.#Rn(e.indicator.startedAtMs,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH),color:t?.kind===`external-action`?`yellow`:`green`}}#Bn(e){let t=this.#i.colors,n=[``];if(this.#He!==void 0)return n.push(...this.#He(e),``),this.#Kn(n,e),n;let r=this.#Ue;if(r!==void 0&&(this.#k===void 0||r.question!==void 0)){let t=this.#zn(r,r.status),i;if(r.status!==void 0){let{startedAtMs:e,...n}=r.status,a=Date.now()-e,o=a>=5e3?` ${formatTurnDuration(a)}`:``;i={...n,text:`${n.text}${o}`,indicator:t}}let a;if(r.question!==void 0){let t=r.question(e);a={kind:`question`,title:r.questionTitle,rows:t},i!==void 0&&(a={kind:`question`,title:r.questionTitle,rows:t,status:i})}else i===void 0?a=r.preview===void 0?{kind:`idle`,indicator:t}:{kind:`preview`,text:r.preview,indicator:t}:(a={kind:`status`,status:i},r.preview!==void 0&&(a={kind:`status`,status:i,preview:r.preview}));let o={title:r.title,navigation:r.navigation,lines:r.summary===void 0?r.hideLinesWhileQuestion===!0?[]:r.lines:[{text:r.summary.headline,tone:`success`},...r.summary.facts.map(e=>({text:`${e.label}: ${e.value}`,tone:`info`}))],content:a};return n.push(...renderFlowPanel(o,this.#i,e)),this.#qn(n,e),n}r!==void 0&&n.push(...flowMessageRows(r.lines,this.#i).map(t=>t.length===0?``:clip(` ${t}`,e))),this.#O===void 0&&this.#We!==void 0&&n.push(...renderAttentionRows(this.#We,e,this.#i),``),this.#qe!==void 0&&n.push(...renderTodoPanelRows({items:this.#qe,width:e,theme:this.#i,working:this.#Z||this.#Q.kind===`waiting`,pulse:this.#Rn(this.#pe,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH)}),``);let i=renderMessageQueueRows({view:this.#Ye.view(),width:e,theme:this.#i,working:this.#Z});if(i.length>0&&n.push(...i,``),this.#W){let r=this.#G===void 0?void 0:inlineCommandHint(this.#G);r===void 0&&this.#G!==void 0&&isTypeaheadOpen(this.#G)&&n.push(...renderCommandSuggestions(this.#G,this.#i,e)),this.#ce&&n.push(clip(t.dim(`Press Ctrl+C again to exit`),e),``);let i=isPromptControlCommand(this.#B),a=r?t.dim(` ${r}`):``,o=[];this.#Kn(o,e);let s=Math.max(1,this.#Xn()-1-n.length-1-o.length),c={text:this.#B,cursor:this.#V,width:e,theme:this.#i,caretVisible:this.#de,isCommand:i,ghost:a,maxRows:s};return this.#K&&this.#B.length===0&&(c.placeholder=this.#k===void 0?this.#q?``:`Send a message…`:`Message · Enter to queue`),n.push(...promptInputRows(c)),n.push(...o),n}let a=this.#Q.kind===`waiting`&&this.#te===void 0;if(this.#Z||a){n.push(this.#Vn(e)),this.#Wn(n,e);let t=[];return this.#Kn(t,e),!this.#Z&&t.length>0&&n.push(``),n.push(...t),n}if(this.#X.text.length>0)return this.#Gn(n,e,{inert:!1}),this.#Kn(n,e),n;let o=this.#te??(this.#ee.length>0?this.#ee:`Ready`),s=this.#Jn(),c=t.dim(this.#i.glyph.dot),l=s?`${c} ${o} ${t.dim(this.#i.glyph.dot)} ${s}`:`${c} ${o}`;return n.push(clip(l,e)),this.#Kn(n,e),n}#Vn(e){let t=this.#i.colors,n=this.#Q,r=this.#J.startedAtMs??this.#je??(n.kind===`waiting`?n.startedAtMs:Date.now()),i=Math.max(0,Date.now()-r),a=i%1e3<500?this.#i.unicode?`•`:`*`:` `,o=i<1e3?`0s`:formatTurnDuration(Math.floor(i/1e3)*1e3),s=`${turnActivityLabel(this.#Y)} (${o})`,{inputTokens:c,outputTokens:l}=this.#J.usage;return clip(`${a} ${s}${c>0||l>0?t.dim(` (${formatTokenFlow({inputTokens:c,outputTokens:l},this.#i.glyph)})`):``}`,e)}#Hn(e){return`${formatTurnDuration(e)}${this.#Un()}`}#Un(){let{inputTokens:e,outputTokens:t}=this.#J.usage;return e===0&&t===0?``:` ${this.#i.glyph.dash.repeat(2)} ${formatTokenFlow({inputTokens:e,outputTokens:t},this.#i.glyph)}`}#Wn(e,t){this.#Z&&this.#Gn(e,t,{inert:!0})}#Gn(e,t,n){e.push(``);let r={text:this.#X.text,cursor:this.#X.cursor,width:t,theme:this.#i,caretVisible:!0,isCommand:!1,ghost:``,maxRows:4,inert:n.inert};n.inert&&this.#X.text.length===0&&(r.placeholder=``),e.push(...promptInputRows(r))}#Kn(e,t){if(this.#O!==void 0){let n=this.#Ue?.status?.text??{starting:`Starting agent…`,connecting:`Reading saved connection…`,updating:`Loading selected model…`}[this.#O],r=this.#Rn(this.#j,this.#i.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH);e.push(clip(this.#i.colors.dim(`${r} ${n}`),t));return}let n=this.#z===void 0?``:` `,r=Math.max(1,t-n.length),i={theme:this.#i,width:r};this.#Re&&this.#Le!==void 0&&(i.devBuild=this.#Le),this.#_e&&(i.logLevel=this.#m);let a=this.#D?.info?.agent.model;a?.routing.kind===`dynamic`?i.model=this.#Ge===void 0?`dynamic model`:`dynamic model · ${this.#Ge}`:a?.id!==void 0&&(i.model=a.id),a?.reasoning!==void 0&&a.reasoning!==`provider-default`&&(i.reasoning=a.reasoning),readGatewayServiceTier(a?.providerOptions).kind===`priority`&&(i.fastMode=!0);let o=a?.endpoint;o!==void 0&&(i.endpoint=o),this.#R!==void 0&&(i.vercel=this.#R),this.#z!==void 0&&(i.remote=this.#z);let s=buildStatusLine(i);s!==void 0&&e.push(clip(`${n}${s}`,t))}#qn(e,t){if(this.#z===void 0)return;let n=Math.max(1,t-2),r=buildStatusLine({remote:this.#z,theme:this.#i,width:n});r!==void 0&&e.push(``,clip(` ${r}`,t))}#Jn(){let e=this.#i.colors,t=[],n=formatAssistantResponseStats({totalTokens:this.#Ee,outputTokens:this.#ke,tokensPerSecond:this.#Ae},this.#u);return n&&t.push(n),t.length>0?e.dim(t.join(` ${this.#i.glyph.dot} `)):``}#Yn(){return Math.max(20,this.#t.columns||80)}#Xn(){return Math.max(8,this.#t.rows||24)}#Zn(){if(this.#Me!==void 0||!this.#d)return;this.#Ne=``,this.#Pe=``;let capture=(e,t)=>{let n=e.write.bind(e);return e.write=((e,n,r)=>{let i=typeof n==`string`?n:void 0,a=typeof n==`function`?n:r;return this.#er(t,chunkToString(e,i)),a?.(),!0}),()=>{e.write=n}},e=capture(process.stdout,`stdout`),t=capture(process.stderr,`stderr`);this.#f?.subscribeLogRecords(e=>this.#$n(e)),this.#Me=()=>{this.#f?.unsubscribeLogRecords(),e(),t()}}#Qn(){let e=this.#Me;e!==void 0&&(this.#Me=void 0,e(),this.#Ne.length>0&&(this.#f?.append({source:`stdout`,detail:this.#Ne}),this.#lr(`stdout`)&&process.stdout.write(`${this.#Ne}\n`),this.#Ne=``),this.#Pe.length>0&&(this.#f?.append({source:`stderr`,detail:this.#Pe}),this.#lr(`stderr`)&&process.stderr.write(`${this.#Pe}\n`),this.#Pe=``))}#$n(e){let t=e.fields===void 0?``:` ${JSON.stringify(e.fields)}`;this.#nr(`[eve:${e.namespace}] ${e.message}${t}`),this.#An()}#er(e,t){let n=(e===`stdout`?this.#Ne:this.#Pe)+t;if(e===`stdout`&&parseDevRebuildLogLine(n.trimEnd())!==void 0){this.#Ne=``,this.#f?.append({source:e,detail:n.trimEnd()}),this.#tr(n.trimEnd()),this.#An();return}let r=n.lastIndexOf(`
8
+ `),i=r===-1?n:n.slice(r+1);if(e===`stdout`?this.#Ne=i:this.#Pe=i,r===-1)return;let a=stripAnsi(n.slice(0,r)).replace(/\s+$/u,``);a.trim().length!==0&&(this.#f?.append({source:e,detail:a}),e===`stdout`?this.#tr(a):this.#nr(a),this.#An())}#tr(e){let t=[],flushPending=()=>{if(t.length===0)return;let e=t.join(`
9
+ `);t=[],e.trim().length!==0&&this.#sn({kind:`log`,title:`stdout`,body:e,live:!0})};for(let n of e.split(`
10
+ `)){let e=parseSandboxLogLine(n.trimEnd());if(e!==void 0){flushPending(),this.#sn({kind:`sandbox`,body:e,live:!1});continue}let r=parseDevRebuildLogLine(n.trimEnd());if(r===void 0){t.push(n);continue}flushPending(),this.#ir(r,n.trimEnd())}flushPending()}#nr(e){let t=e.split(`
11
+ `),n=t.findIndex(e=>parseDevRebuildLogLine(e.trimEnd())?.kind===`failed`);if(n===-1){if(this.#f===void 0){this.#sn({kind:`log`,title:`stderr`,body:e,live:!0});return}let t=presentDiagnostic(e,this.#f.displayPath);if(t.kind===`inline`){this.#sn({kind:`log`,title:`stderr`,body:t.text,live:!0});return}this.#sn({kind:`log`,title:`stderr`,body:formatStoredDiagnostic(t),logVisibility:`stderr-only`,live:!0}),this.#sn({kind:`log`,title:`stderr`,body:e,logVisibility:`all-only`,live:!0});return}let r=t.slice(0,n).join(`
12
+ `);r.trim().length>0&&this.#sn({kind:`log`,title:`stderr`,body:r,live:!0});let i=t.slice(n).join(`
13
+ `);this.#rr(i)}#rr(e){if(this.#or(),this.#m===`all`){if(e.trim().length===0)return;this.#sn({kind:`log`,title:`stderr`,body:e,live:!0});return}this.#Fe=e}#ir(e,t){let n=this.#sr();if(e.kind===`failed`){this.#rr(t);return}if(e.kind===`rebuilding`){let t=summarizeChangedFiles(e.events,e.more);if(this.#ar({phase:`building`,summary:t}),n!==void 0){n.state.summary=t,n.block.body=formatDevRebuildStatus(t,`rebuilding`);return}let r=`dev-rebuild:${this.#Be}`;this.#Be+=1,this.#Ie={id:r,summary:t},this.#sn({kind:`log`,id:r,title:`stdout`,body:formatDevRebuildStatus(t,`rebuilding`),live:!0});return}let r=n?.state.summary??this.#Le?.summary;if(r!==void 0&&this.#ar({phase:`complete`,summary:r}),n!==void 0){n.block.body=formatDevRebuildStatus(n.state.summary,e.kind),e.kind===`rebuilt`&&(this.#Fe=void 0);return}e.kind===`rebuilt`&&(this.#Fe=void 0),this.#sn({kind:`log`,title:`stdout`,body:t,live:!0})}#ar(e){this.#ze!==void 0&&clearTimeout(this.#ze),this.#Le=e,this.#Re=e.phase===`complete`,this.#ze=setTimeout(()=>{e.phase===`building`?(this.#Re=!0,this.#ze=void 0):this.#or(),this.#An()},e.phase===`building`?250:4e3)}#or(){this.#ze!==void 0&&clearTimeout(this.#ze),this.#Le=void 0,this.#Re=!1,this.#ze=void 0}#sr(){let e=this.#Ie;if(e===void 0)return;let t=this.#g.get(e.id);if(t!==void 0&&t.live===!0)return{state:e,block:t}}#cr(){let e=this.#Ie;if(e===void 0)return;this.#Ie=void 0;let t=this.#g.get(e.id);t!==void 0&&(t.live=!1)}#lr(e){switch(this.#m){case`none`:return!1;case`stderr`:return e===`stderr`;case`sandbox`:return e===`sandbox`;case`all`:return!0}}#ur(e){return e.kind===`sandbox`?!this.#lr(`sandbox`):e.kind===`log`?e.logVisibility===`stderr-only`?this.#m!==`stderr`:e.logVisibility===`all-only`?this.#m!==`all`:!this.#lr(e.title===`stderr`?`stderr`:`stdout`):!1}};function chunkToString(e,t){return typeof e==`string`?e:Buffer.from(e).toString(t)}async function*iterateTUIStream(e){if(e instanceof ReadableStream){let t=e.getReader();try{for(;;){let{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}return}yield*e}function clip(e,t){return clipVisible(e,t)}function promptInputRows({text:e,cursor:t,width:n,theme:r,caretVisible:i,isCommand:a,ghost:o,maxRows:s,placeholder:c,inert:l}){let u=r.colors;if(e.length===0&&c!==void 0){let e=renderInputWithBlockCursor({...visibleLine({text:c,cursor:0},Math.max(1,n-3),r.glyph.ellipsis),visible:i,inverse:u.inverse,render:e=>u.dim(renderInputText(e))});return[clip(`${r.glyph.prompt} ${e}`,n),``]}let style=e=>{let t=renderInputText(e);return a&&t.length>0?u.blue(t):t},d=layoutPromptInput({text:e,cursor:t}),f=Math.min(Math.max(1,s),d.rows.length),p=Math.max(0,Math.min(d.caretRow-f+1,d.rows.length-f)),m=l===!0?u.dim(r.glyph.prompt):u.cyan(r.glyph.prompt),h=u.dim(r.glyph.ellipsis),g=Math.max(1,n-3),_=[];for(let e=p;e<p+f;e+=1){let t=d.rows[e],a=e===0?m:` `;(e===p&&p>0||e===p+f-1&&p+f<d.rows.length)&&(a=h);let s;if(e===d.caretRow){let{before:e,under:n,after:a}=visibleLine({text:t.text,cursor:d.caretOffset},g,r.glyph.ellipsis);s=renderInputWithBlockCursor({before:e,under:n,after:a,visible:i,inverse:u.inverse,render:style}),o.length>0&&d.rows.length===1&&(s+=o)}else s=style(t.text);_.push(clip(`${a} ${s}`,n))}return _.push(``),_}function previousBlockOf(e){let t={kind:e.kind};return e.title!==void 0&&(t.title=e.title),t}function isActiveToolStatus(e){return e===`running`||e===`approval`}function applyCohortLiveness(e){let t=e.some(e=>e.active);for(let n of e)n.block.live=t||n.active}function leadsWithGap(e,t){if(e.kind===`tool`&&(t?.kind===`user`||t?.kind===`assistant`||t?.kind===`question`))return!0;if(e.kind===`sandbox`&&t?.kind===`sandbox`)return!1;if(t?.kind===`sandbox`&&e.kind!==`sandbox`||t?.kind===`log`)return!0;switch(e.kind){case`user`:case`assistant`:case`reasoning`:case`subagent`:case`error`:case`notice`:case`question`:case`connection-auth`:case`sandbox`:case`log`:case`command`:case`warning`:case`flow`:case`turn-stats`:case`session-boundary`:case`todo-list`:case`agent-header`:return!0;default:return!1}}function parseSandboxLogLine(e){let t=e.trim();if(!t.startsWith(`eve: `))return;let n=t.slice(5);return/\bsandbox\b/i.test(n)&&!isLowValueSandboxLogLine(n)?n:void 0}function isLowValueSandboxLogLine(e){return/^initializing (?:\d+ )?sandbox templates?\b/i.test(e)||/^initialized \d+ sandbox\b/i.test(e)||/^reused cached sandbox template\b/i.test(e)||/^sandbox template "[^"]+" \([^)]+\): (checking|reusing|loading microsandbox runtime|microsandbox runtime ready)\b/i.test(e)}function clipLiveRows(e,t,n,r){if(e.length<=t)return[...e];if(t<=1)return[clip(hiddenRowsMarker(e.length,r),n)];let i=t-1;return[clip(hiddenRowsMarker(e.length-i,r),n),...e.slice(e.length-i)]}function hiddenRowsMarker(e,t){let n=e.toLocaleString(),r=e===1?`row`:`rows`;return t.colors.dim(`${t.glyph.dot} ${t.glyph.ellipsis} ${n} earlier ${r} hidden while streaming`)}function collapseReasoning(e,t){switch(e){case`collapsed`:return!0;case`auto-collapsed`:return!t;default:return!1}}function renderNativeToolBlock(e,t,n,r){let i=e.preparing===!0?presentPreparingTool(e.toolName,r):presentTool(e.toolName,e.input,r),a={id:t,kind:`tool`,title:stripTerminalControls(i.title),subtitle:stripTerminalControls(i.subtitle),status:e.status,live:e.status===`running`||e.status===`approval`,expanded:n,toolInput:e.input,toolName:e.toolName,toolGroup:i.group};return i.doneTitle!==void 0&&(a.doneTitle=stripTerminalControls(i.doneTitle)),i.detail!==void 0&&(a.detailLines=i.detail,a.keepDetailWhenDone=i.keepDetailWhenDone===!0),e.output===void 0?e.errorText!==void 0&&(a.result=stripTerminalControls(e.errorText)):(a.result=i.summarizeResult(e.output),a.toolOutput=e.output),a}function writeExistedFlag(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e.existed;return typeof t==`boolean`?t:void 0}function subagentToolStatus(e){switch(e){case`preparing`:return`running`;case`approval-requested`:return`approval`;case`executing`:return`running`;case`done`:return`done`;case`failed`:return`error`;case`rejected`:return`denied`}}function formatToolApprovalTitle(e){return stripTerminalControls(e.title??e.toolName)}function toolSectionId(e){return`tool:${e}`}function questionSectionId(e){return`question:${e}`}function subagentHeaderId(e){return`subagent:${e}:header`}function subagentStepSectionId(e,t){return`subagent:${e}:step:${t}`}function subagentToolSectionId(e,t){return`subagent:${e}:tool:${t}`}function connectionAuthSectionId(e){return`connection-auth:${e}`}function connectionAuthTerminalMessage(e){switch(e){case`authorized`:return`Authorization complete`;case`declined`:return`Authorization declined`;case`failed`:return`Authorization failed`;case`timed-out`:return`Authorization timed out`;case`required`:case`pending`:return}}function formatConnectionAuthContent(e,t){let n=[];if(t!==void 0)n.push(t);else{let t=stripTerminalControls(e.description);t.length>0&&n.push(t);let r=e.challenge;r?.url&&n.push(`URL: ${stripTerminalControls(r.url)}`),r?.userCode&&n.push(`Code: ${stripTerminalControls(r.userCode)}`),r?.expiresAt&&n.push(`Expires: ${stripTerminalControls(r.expiresAt)}`),r?.instructions&&n.push(stripTerminalControls(r.instructions))}if(e.reason!==void 0){let t=stripTerminalControls(e.reason);t.length>0&&n.push(`Reason: ${t}`)}return n.join(`
14
14
  `)}function formatQuestionContent(e,t,n){let r=n.colors,i=[],a=e.options??[];if(a.length>0){for(let[e,o]of a.entries()){let a=stripTerminalControls(o.label),s=o.description===void 0?``:stripTerminalControls(o.description),c=t===e,l=s.length>0?`${c?` `:` `}${r.dim(`— ${s}`)}`:``,u=c?`${n.glyph.selectedPointer} ${a}`:` ${a}`,d=renderCursorRow(u,c,r);i.push(`${d}${l}`)}if(e.allowFreeform===!0){let e=t===a.length,o=`Type your own answer`,s=e?`${n.glyph.selectedPointer} ${o}`:` ${r.dim(o)}`;i.push(renderCursorRow(s,e,r))}}else i.push(r.dim(` (type your answer)`));return i.join(`
15
15
  `)}function resolveQuestionText(e,t){let n=e.trim();if(n.length===0)return;let r=n.toLowerCase(),i=t.options??[];if(i.length>0){let e=matchQuestionOption(r,i);if(e!==void 0)return{optionId:e.id,label:e.label}}if(t.allowFreeform===!0||i.length===0)return{text:n,label:n}}function matchQuestionOption(e,t){let n=t.find(t=>t.id.toLowerCase()===e);if(n!==void 0)return n;let r=t.find(t=>t.label.toLowerCase()===e);if(r!==void 0)return r;let i=Number(e);if(Number.isInteger(i)&&i>0&&i<=t.length)return t[i-1]}export{TerminalRenderer};
@@ -1,2 +1,2 @@
1
- import{Command,CommanderError}from"#compiled/commander/index.js";import{agentCommand}from"#cli/agent-command.js";import{parseDevelopmentServerUrl}from"#cli/dev/url.js";import{waitForShutdownSignal}from"#cli/shutdown.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{createCliTheme,renderCliTaggedLine}from"#cli/ui/output.js";import{findEveProjectContext,resolveEveProjectContext}from"#internal/project-context.js";import{isCodingAgentLaunch}from"#cli/agent-detection.js";import{eveCliBanner}from"#cli/banner.js";import{registerBuildCommand}from"#cli/commands/build.js";import{resolveApplicationRoot}from"#internal/application/paths.js";import{findCliApplicationRoot,resolveCliApplicationProject}from"#cli/application-root.js";import{registerIntegrationCommands}from"#cli/commands/register-integration-commands.js";import{registerProjectCommands}from"#cli/commands/register-project-commands.js";import{registerRegistryCommands}from"#cli/commands/register-registry-commands.js";import{registerDevelopmentCommand}from"#cli/dev/command.js";import{resolveDevUiMode,resolveTuiDisplayOptions}from"#cli/dev/ui-options.js";import{registerAcpCommand}from"#cli/acp/command.js";import{registerRuntimeInvokeCommand}from"#cli/invoke/command.js";import{parseAgentNamesOption,parsePortOption,parseReasoningOption}from"#cli/option-parsers.js";import{registerEveTelemetryCommands}from"#cli/telemetry/command.js";import{canonicalCommand,createEveCliTelemetry}from"#cli/telemetry/index.js";async function loadPrintApplicationInfo(){return(await import(`#cli/commands/info.js`)).printApplicationInfo}async function loadRunEvalCommand(){return(await import(`#evals/cli/eval.js`)).runEvalCommand}async function loadStartProductionHost(){return(await import(`#internal/nitro/host.js`)).startProductionServer}function createCliProgram(e,t,n,r){let i=resolveInstalledPackageInfo().version,a=new Command,o=createCliTheme();a.name(`eve`).description(`Build and run an eve application.`).version(i).showHelpAfterError().exitOverride().hook(`preAction`,(t,n)=>{let{json:r}=n.opts();!r&&(n.name()===`info`||n.name()===`init`&&n.parent!==a)&&e.log(eveCliBanner())}).configureOutput({writeErr:t=>{e.error(t.trimEnd())},writeOut:t=>{e.log(t.trimEnd())}}),agentCommand(a.command(`channels`).description(`Manage user-authored channels in the current project.`).command(`list`),n).description(`List user-authored channels in the current project.`).option(`--json`,`Output as JSON`).action(async t=>{let{runChannelsListCommand:r}=await import(`#cli/commands/channels.js`);await r(e,n.project,t)}),registerEveTelemetryCommands(a,e),registerIntegrationCommands({program:a,logger:e,applicationContext:n});let s=a.command(`extension`).description(`Create and build reusable eve extension packages.`);s.command(`init [target]`).description(`Create a new eve extension package.`).option(`-y, --yes`,`Accepted for compatibility; has no effect`).action(async(t,i)=>{i.yes&&e.error(`warning: --yes has no effect for eve extension init.`);let{runExtensionInitCommand:a}=await import(`#cli/commands/extension-init.js`);await a(e,n.root,t,void 0,e=>{r.trackSetupStep({flow:`extension_init`,step:e})})}),s.command(`build`).description(`Build the current package as an eve extension.`).action(async()=>{let{loadDevelopmentEnvironmentFiles:t}=await import(`#cli/dev/environment.js`);await t(n.root);let{runExtensionBuildCommand:r}=await import(`#cli/commands/extension-build.js`);await r(e,n.root)}),registerRegistryCommands({program:a,logger:e,applicationContext:n}),a.command(`init [target]`).description(`Create a new eve agent, or add one to an existing project directory.`).option(`--channel-web-nextjs`,`Add the Web Chat application (Next.js)`).option(`--agents <names>`,`Create an agents/ workspace with comma-separated agent names`,parseAgentNamesOption).option(`--model <model>`,`Set the agent model (provider/model-id)`).option(`--reasoning <effort>`,`Set reasoning (provider-default|none|minimal|low|medium|high|xhigh)`,parseReasoningOption).option(`-y, --yes`,`Accepted for compatibility; has no effect`).action(async(t,i)=>{i.yes&&e.error(`warning: --yes has no effect for eve init.`);let{runInitCommand:a}=await import(`#cli/commands/init.js`);await a(e,n.root,t,{agents:i.agents,channelWebNextjs:i.channelWebNextjs,model:i.model,reasoning:i.reasoning},void 0,e=>{r.trackSetupStep({flow:`init`,step:e})},(e,t,n)=>{r.trackSetupTerminal({flow:`init`,step:e,result:t,failureCode:n})})}),agentCommand(a.command(`set`),n).description(`Change root agent model settings.`).option(`--model <model>`,`Set the agent model (provider/model-id)`).option(`--reasoning <effort>`,`Set reasoning (provider-default|none|minimal|low|medium|high|xhigh)`,parseReasoningOption).action(async t=>{let{runSetCommand:r}=await import(`#cli/commands/set.js`);await r(e,n.root,t)}),registerProjectCommands({program:a,logger:e,applicationContext:n}),registerBuildCommand({applicationContext:n,buildHost:t.buildHost,logger:e,program:a}),agentCommand(a.command(`start`),n).description(`Start a built eve application.`).option(`--host <host>`,`Host interface to bind`).option(`--port <port>`,`Port to listen on (defaults to $PORT, then 3000)`,parsePortOption).action(async r=>{let{loadDevelopmentEnvironmentFiles:i}=await import(`#cli/dev/environment.js`);await i(n.root);let a=await(t.startProductionHost??await loadStartProductionHost())(n.root,{host:r.host,port:r.port});e.log(renderCliTaggedLine(o,{message:`server listening at ${a.url}`,tag:`start`,tone:`success`})),await waitForShutdownSignal({close:()=>a.close(),wait:()=>a.wait()})}),registerRuntimeInvokeCommand({applicationContext:n,logger:e,program:a,runtime:t}),registerAcpCommand({applicationContext:n,eveVersion:i,program:a,resolveVerifiedRemoteDevelopmentClient:t.resolveVerifiedRemoteDevelopmentClient,runAcpServer:t.runAcpServer,startHost:t.startHost}),registerDevelopmentCommand({applicationContext:n,logger:e,program:a,runtime:t,telemetry:r});let c=a.command(`logs`).description("Inspect local `eve dev` diagnostic logs (.eve/logs).");return agentCommand(c.command(`show [logid]`,{isDefault:!0}),n).description(`Print a diagnostic log (the most recent when logid is omitted).`).option(`--dump`,`Prepend the log's environment dump (.dump sibling)`).option(`--events`,`Interleave session events from the local workflow store`).action(async(t,r)=>{let{runLogsShowCommand:i}=await import(`#cli/commands/logs.js`);await i(e,n.root,t,r)}),agentCommand(c.command(`ls`),n).description(`List diagnostic logs, most recent first.`).option(`--json`,`Output as JSON`).action(async t=>{let{runLogsListCommand:r}=await import(`#cli/commands/logs.js`);await r(e,n.root,t)}),agentCommand(a.command(`traces [trace]`),n).usage(`[options] [trace]
1
+ import{Command,CommanderError}from"#compiled/commander/index.js";import{agentCommand}from"#cli/agent-command.js";import{parseDevelopmentServerUrl}from"#cli/dev/url.js";import{waitForShutdownSignal}from"#cli/shutdown.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{createCliTheme,renderCliTaggedLine}from"#cli/ui/output.js";import{findEveProjectContext,resolveEveProjectContext}from"#internal/project-context.js";import{isCodingAgentLaunch}from"#cli/agent-detection.js";import{eveCliBanner}from"#cli/banner.js";import{registerBuildCommand}from"#cli/commands/build.js";import{resolveApplicationRoot}from"#internal/application/paths.js";import{findCliApplicationRoot,resolveCliApplicationProject}from"#cli/application-root.js";import{registerIntegrationCommands}from"#cli/commands/register-integration-commands.js";import{registerProjectCommands}from"#cli/commands/register-project-commands.js";import{registerRegistryCommands}from"#cli/commands/register-registry-commands.js";import{registerDevelopmentCommand}from"#cli/dev/command.js";import{resolveDevUiMode,resolveTuiDisplayOptions}from"#cli/dev/ui-options.js";import{registerAcpCommand}from"#cli/acp/command.js";import{registerRuntimeInvokeCommand}from"#cli/invoke/command.js";import{parseAgentNamesOption,parsePortOption,parseReasoningOption}from"#cli/option-parsers.js";import{registerEveTelemetryCommands}from"#cli/telemetry/command.js";import{canonicalCommand,createEveCliTelemetry}from"#cli/telemetry/index.js";async function loadPrintApplicationInfo(){return(await import(`#cli/commands/info.js`)).printApplicationInfo}async function loadRunEvalCommand(){return(await import(`#evals/cli/eval.js`)).runEvalCommand}async function loadStartProductionHost(){return(await import(`#internal/nitro/host.js`)).startProductionServer}function createCliProgram(e,t,n,r){let i=resolveInstalledPackageInfo().version,a=new Command,o=createCliTheme();a.name(`eve`).description(`Build and run an eve application.`).version(i).showHelpAfterError().exitOverride().hook(`preAction`,(t,n)=>{let{json:r}=n.opts();!r&&(n.name()===`info`||n.name()===`init`&&n.parent!==a)&&e.log(eveCliBanner())}).configureOutput({writeErr:t=>{e.error(t.trimEnd())},writeOut:t=>{e.log(t.trimEnd())}}),agentCommand(a.command(`channels`).description(`Manage user-authored channels in the current project.`).command(`list`),n).description(`List user-authored channels in the current project.`).option(`--json`,`Output as JSON`).action(async t=>{let{runChannelsListCommand:r}=await import(`#cli/commands/channels.js`);await r(e,n.project,t)}),registerEveTelemetryCommands(a,e),registerIntegrationCommands({program:a,logger:e,applicationContext:n});let s=a.command(`extension`).description(`Create and build reusable eve extension packages.`);s.command(`init [target]`).description(`Create a new eve extension package.`).option(`-y, --yes`,`Accepted for compatibility; has no effect`).action(async(t,i)=>{i.yes&&e.error(`warning: --yes has no effect for eve extension init.`);let{runExtensionInitCommand:a}=await import(`#cli/commands/extension-init.js`);await a(e,n.root,t,void 0,e=>{r.trackSetupStep({flow:`extension_init`,step:e})})}),s.command(`build`).description(`Build the current package as an eve extension.`).action(async()=>{let{loadDevelopmentEnvironmentFiles:t}=await import(`#cli/dev/environment.js`);await t(n.root);let{runExtensionBuildCommand:r}=await import(`#cli/commands/extension-build.js`);await r(e,n.root)}),registerRegistryCommands({program:a,logger:e,applicationContext:n}),a.command(`init [target]`).description(`Create a new eve agent, or add one to an existing project directory.`).option(`--channel-web-nextjs`,`Add the Web Chat application (Next.js)`).option(`--agents <names>`,`Create an agents/ workspace with comma-separated agent names`,parseAgentNamesOption).option(`--model <model>`,`Set the agent model (provider/model-id)`).option(`-n, --non-interactive`,`Scaffold the agent without starting development`).option(`--reasoning <effort>`,`Set reasoning (provider-default|none|minimal|low|medium|high|xhigh)`,parseReasoningOption).option(`-y, --yes`,`Accepted for compatibility; has no effect`).action(async(t,i)=>{i.yes&&e.error(`warning: --yes has no effect for eve init.`);let{runInitCommand:a}=await import(`#cli/commands/init.js`);await a(e,n.root,t,{agents:i.agents,channelWebNextjs:i.channelWebNextjs,model:i.model,reasoning:i.reasoning,nonInteractive:i.nonInteractive},void 0,e=>{r.trackSetupStep({flow:`init`,step:e})},(e,t,n)=>{r.trackSetupTerminal({flow:`init`,step:e,result:t,failureCode:n})})}),agentCommand(a.command(`set`),n).description(`Change root agent model settings.`).option(`--model <model>`,`Set the agent model (provider/model-id)`).option(`--reasoning <effort>`,`Set reasoning (provider-default|none|minimal|low|medium|high|xhigh)`,parseReasoningOption).action(async t=>{let{runSetCommand:r}=await import(`#cli/commands/set.js`);await r(e,n.root,t)}),registerProjectCommands({program:a,logger:e,applicationContext:n}),registerBuildCommand({applicationContext:n,buildHost:t.buildHost,logger:e,program:a}),agentCommand(a.command(`start`),n).description(`Start a built eve application.`).option(`--host <host>`,`Host interface to bind`).option(`--port <port>`,`Port to listen on (defaults to $PORT, then 3000)`,parsePortOption).action(async r=>{let{loadDevelopmentEnvironmentFiles:i}=await import(`#cli/dev/environment.js`);await i(n.root);let a=await(t.startProductionHost??await loadStartProductionHost())(n.root,{host:r.host,port:r.port});e.log(renderCliTaggedLine(o,{message:`server listening at ${a.url}`,tag:`start`,tone:`success`})),await waitForShutdownSignal({close:()=>a.close(),wait:()=>a.wait()})}),registerRuntimeInvokeCommand({applicationContext:n,logger:e,program:a,runtime:t}),registerAcpCommand({applicationContext:n,eveVersion:i,program:a,resolveVerifiedRemoteDevelopmentClient:t.resolveVerifiedRemoteDevelopmentClient,runAcpServer:t.runAcpServer,startHost:t.startHost}),registerDevelopmentCommand({applicationContext:n,logger:e,program:a,runtime:t,telemetry:r});let c=a.command(`logs`).description("Inspect local `eve dev` diagnostic logs (.eve/logs).");return agentCommand(c.command(`show [logid]`,{isDefault:!0}),n).description(`Print a diagnostic log (the most recent when logid is omitted).`).option(`--dump`,`Prepend the log's environment dump (.dump sibling)`).option(`--events`,`Interleave session events from the local workflow store`).action(async(t,r)=>{let{runLogsShowCommand:i}=await import(`#cli/commands/logs.js`);await i(e,n.root,t,r)}),agentCommand(c.command(`ls`),n).description(`List diagnostic logs, most recent first.`).option(`--json`,`Output as JSON`).action(async t=>{let{runLogsListCommand:r}=await import(`#cli/commands/logs.js`);await r(e,n.root,t)}),agentCommand(a.command(`traces [trace]`),n).usage(`[options] [trace]
2
2
  eve traces ls [options]`).description("Show a local `eve dev` trace (the most recent when trace is omitted).").option(`--verbose`,`Expand every span with all attributes and events`).option(`--json`,`Output as JSON`).action(async(t,r)=>{let{runTraceShowCommand:i}=await import(`#cli/commands/trace.js`);await i(e,n.root,t,r)}).command(`ls`).description(`List local traces, most recent first.`).option(`--json`,`Output as JSON`).action(async t=>{let{runTraceListCommand:r}=await import(`#cli/commands/trace.js`);await r(e,n.root,t)}),agentCommand(a.command(`info`),n).description(`Print resolved application information.`).option(`--json`,`Output as JSON`).action(async r=>{await(t.printApplicationInfo??await loadPrintApplicationInfo())(e,n.root,r)}),agentCommand(a.command(`eval`),n,e=>e.opts().url===void 0).description(`Run evals against an eve agent.`).argument(`[evalIds...]`,`Eval ids (or directory prefixes) to run (all discovered evals when omitted)`).option(`--url <url>`,`Remote agent URL (skip local host startup)`,parseDevelopmentServerUrl).option(`--tag <tag...>`,`Run only evals carrying a tag`).option(`--exclude-tag <tag...>`,`Skip evals carrying a tag`).option(`--strict`,`Fail the exit code when any score falls below its threshold`).option(`--list`,`Print discovered evals without running them`).option(`--timeout <ms>`,`Per-eval timeout in milliseconds`).option(`--max-concurrency <n>`,`Max concurrent eval executions`).option(`--json`,`Output results as JSON`).option(`--junit <path>`,`Write JUnit XML results to a file`).option(`--skip-report`,`Skip eval-defined reporters (e.g. Braintrust)`).option(`--verbose`,`Stream per-eval logs and workflow run IDs to stdout`).action(async(r,i)=>{await(t.runEvalCommand??await loadRunEvalCommand())(r,i,e,n.root)}),a}async function runCli(e=process.argv.slice(2),t=console,n={}){let r={root:resolveApplicationRoot(),async resolve(){let e=await(n.resolveApplicationProject??resolveCliApplicationProject)(r.root);r.project=e,r.root=e.appRoot},async resolveAgent(){return resolveEveProjectContext(r.root)}},i=createEveCliTelemetry(resolveInstalledPackageInfo().version),a=createCliProgram(t,n,r,i),o=e;if(o.length===0){let e=await(n.findApplicationRoot??findCliApplicationRoot)(r.root);e===void 0?o=(await findEveProjectContext(r.root))?.kind===`workspace`?[`dev`]:[`init`]:(r.root=e,o=[`dev`])}let s=canonicalCommand(o);i.trackCommand(s),s!==`telemetry`&&await i.notify(t);try{await a.parseAsync(o,{from:`user`}),i.trackOutcome(`success`)}catch(e){if(e instanceof CommanderError&&e.exitCode===0){i.trackOutcome(`success`);return}if(i.trackOutcome(e instanceof CommanderError?`usage_error`:`error`),e instanceof CommanderError){let r=await(n.isCodingAgentLaunch??isCodingAgentLaunch)();if(o[0]===`init`&&r){let{initAgentInstructions:e}=await import(`#cli/commands/agent-instructions.js`);t.log(e())}throw Error(e.message)}throw e}finally{await i.flush()}}export{createCliProgram,resolveDevUiMode,resolveTuiDisplayOptions,runCli};
@@ -654,12 +654,9 @@ declare const sandbox: z.ZodObject<{
654
654
  module: "module";
655
655
  "skill-package": "skill-package";
656
656
  }>;
657
- backendKind: z.ZodOptional<z.ZodString>;
658
- description: z.ZodOptional<z.ZodString>;
659
- hasBootstrap: z.ZodBoolean;
660
- hasOnSession: z.ZodBoolean;
661
- revalidationKey: z.ZodOptional<z.ZodString>;
662
- sourceHash: z.ZodOptional<z.ZodString>;
657
+ provider: z.ZodOptional<z.ZodString>;
658
+ environmentExportName: z.ZodOptional<z.ZodString>;
659
+ revisionHash: z.ZodString;
663
660
  }, z.core.$strict>;
664
661
  declare const subagent: z.ZodObject<{
665
662
  binding: z.ZodOptional<z.ZodObject<{
@@ -834,7 +831,7 @@ declare const remoteAgent: z.ZodObject<{
834
831
  parentNodeId: z.ZodString;
835
832
  url: z.ZodOptional<z.ZodString>;
836
833
  }, z.core.$strict>;
837
- /** Runtime contract for the authoritative `/eve/v1/info` v4 response. */
834
+ /** Runtime contract for the authoritative `/eve/v1/info` v5 response. */
838
835
  export declare const AgentInfoResultSchema: z.ZodObject<{
839
836
  agent: z.ZodObject<{
840
837
  agentRoot: z.ZodString;
@@ -1737,12 +1734,9 @@ export declare const AgentInfoResultSchema: z.ZodObject<{
1737
1734
  module: "module";
1738
1735
  "skill-package": "skill-package";
1739
1736
  }>;
1740
- backendKind: z.ZodOptional<z.ZodString>;
1741
- description: z.ZodOptional<z.ZodString>;
1742
- hasBootstrap: z.ZodBoolean;
1743
- hasOnSession: z.ZodBoolean;
1744
- revalidationKey: z.ZodOptional<z.ZodString>;
1745
- sourceHash: z.ZodOptional<z.ZodString>;
1737
+ provider: z.ZodOptional<z.ZodString>;
1738
+ environmentExportName: z.ZodOptional<z.ZodString>;
1739
+ revisionHash: z.ZodString;
1746
1740
  }, z.core.$strict>;
1747
1741
  schedules: z.ZodArray<z.ZodObject<{
1748
1742
  binding: z.ZodOptional<z.ZodObject<{
@@ -2141,7 +2135,7 @@ export declare const AgentInfoResultSchema: z.ZodObject<{
2141
2135
  requiresApproval: z.ZodBoolean;
2142
2136
  }, z.core.$strict>>;
2143
2137
  }, z.core.$strict>;
2144
- version: z.ZodLiteral<4>;
2138
+ version: z.ZodLiteral<5>;
2145
2139
  workspace: z.ZodObject<{
2146
2140
  resourceRoot: z.ZodUnknown;
2147
2141
  rootEntries: z.ZodArray<z.ZodString>;
@@ -1 +1 @@
1
- import{z}from"#compiled/zod/index.js";const owner=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`application`)}).strict(),z.object({feature:z.string(),kind:z.literal(`framework`)}).strict(),z.object({kind:z.literal(`extension`),namespace:z.string(),packageName:z.string()}).strict()]),moduleBacking=z.discriminatedUnion(`kind`,[z.object({externalDependencies:z.array(z.string()),extensionScope:z.object({namespace:z.string(),sourceRoot:z.string()}).strict().optional(),kind:z.literal(`filesystem`),sourcePath:z.string()}).strict(),z.object({dependencies:z.record(z.string(),z.string()).optional(),kind:z.literal(`programmatic`),moduleId:z.string(),parameters:z.record(z.string(),z.unknown()).optional(),registryId:z.string(),revision:z.string(),semanticRevision:z.string().optional()}).strict()]),binding=z.object({backing:moduleBacking,logicalPath:z.string(),owner}).strict(),source=z.object({binding:binding.optional(),exportName:z.string().optional(),logicalPath:z.string(),owner,sourceId:z.string(),sourceKind:z.enum([`markdown`,`module`,`skill-package`])}).strict(),entry=source.extend({name:z.string()}).strict(),dynamicResolver=source.extend({eventNames:z.array(z.string()),slug:z.string()}).strict(),modelRouting=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}).strict(),z.object({kind:z.literal(`external`),provider:z.string()}).strict()]),modelEndpoint=z.union([z.object({kind:z.literal(`external`),provider:z.string()}).strict(),z.object({kind:z.literal(`chatgpt`),state:z.enum([`checking`,`ready`,`signed-out`,`reauth-required`,`unavailable`]),accountLabel:z.string().optional()}).strict(),z.object({kind:z.literal(`gateway`),connected:z.literal(!0),credential:z.enum([`api-key`,`oidc`,`oauth`]),team:z.optional(z.string())}).strict(),z.object({kind:z.literal(`gateway`),connected:z.literal(!1)}).strict()]),modelBaseFields={contextWindowTokens:z.number().optional(),providerOptions:z.unknown().optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional().catch(void 0),source:source.optional()},agentModel=z.union([z.object({...modelBaseFields,endpoint:modelEndpoint.optional(),id:z.string(),routing:modelRouting}).strict(),z.object({...modelBaseFields,endpoint:z.never().optional(),id:z.never().optional(),routing:z.object({kind:z.literal(`dynamic`),resolver:dynamicResolver}).strict()}).strict()]),tool=entry.extend({description:z.string(),hasAuth:z.boolean(),hasExecute:z.boolean(),hasModelOutputProjection:z.boolean(),hasOutputSchema:z.boolean(),inputSchema:z.unknown(),outputSchema:z.unknown().optional(),requiresApproval:z.boolean()}).strict(),skill=entry.extend({description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional()}).strict(),instructions=entry.extend({content:z.string(),role:z.enum([`system`,`user`])}).strict(),schedule=entry.extend({cron:z.string(),hasRun:z.boolean(),markdown:z.string().optional()}).strict(),channelMethod=z.enum([`GET`,`HEAD`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`,`WEBSOCKET`]),channelRoute=entry.extend({adapterKind:z.string().optional(),method:channelMethod,urlPath:z.string()}).strict(),sourceDescriptor=z.object({backing:z.union([moduleBacking,z.object({kind:z.literal(`resource`),sourcePath:z.string()}).strict()]),form:z.enum([`derived`,`direct`]),layer:z.enum([`framework-default`,`extension-package`,`extension-override`,`application`]),logicalPath:z.string(),owner,sourceId:z.string()}).strict(),shadowedChannelRoute=z.object({method:channelMethod,source:sourceDescriptor,urlPath:z.string(),winnerSourceId:z.string()}).strict(),connection=source.extend({connectionName:z.string(),description:z.string(),hasApproval:z.boolean(),hasAuthorization:z.boolean(),hasHeaders:z.boolean(),protocol:z.string(),toolFilter:z.unknown().optional(),url:z.string()}).strict(),hook=source.extend({eventNames:z.array(z.string()),slug:z.string()}).strict(),memory=source.extend({description:z.string().optional(),slot:z.string(),visibility:z.enum([`scope`,`session`])}).strict(),sandbox=source.extend({backendKind:z.string().optional(),description:z.string().optional(),hasBootstrap:z.boolean(),hasOnSession:z.boolean(),revalidationKey:z.string().optional(),sourceHash:z.string().optional()}).strict(),subagent=entry.extend({configResolver:dynamicResolver.optional(),description:z.string().optional(),entryPath:z.string(),nodeId:z.string(),parentNodeId:z.string(),rootPath:z.string(),summary:z.object({channels:z.number(),connections:z.number(),hooks:z.number(),instructions:z.number(),memories:z.number(),schedules:z.number(),skills:z.number(),tools:z.number()}).strict()}).strict(),remoteAgent=entry.extend({description:z.string(),nodeId:z.string(),parentNodeId:z.string(),url:z.string().optional()}).strict(),kernelEffect=z.object({action:z.enum([`subagent-call`,`task-cancel`,`workflow-tool-call`]).optional(),audience:z.array(z.enum([`root-session`,`delegated-task-child`,`requires-request-input`])),kind:z.enum([`request-input`,`dispatch`,`provider-tool`]),sourceId:z.string()}).strict(),compositionDiagnostic=z.object({kind:z.enum([`disabled`,`shadowed`]),logicalPath:z.string(),owner,sourceId:z.string(),winnerSourceId:z.string().optional()}).strict(),AgentInfoResultSchema=z.object({agent:z.object({agentRoot:z.string(),appRoot:z.string(),config:source.extend({binding}).strict(),description:z.string().optional(),model:agentModel,name:z.string(),nodeId:z.string(),outputSchema:z.unknown().optional()}).strict(),capabilities:z.object({devRoutes:z.boolean()}).strict(),channels:z.object({routes:z.array(channelRoute),shadowed:z.array(shadowedChannelRoute)}).strict(),composition:z.object({disabled:z.array(compositionDiagnostic),shadowed:z.array(compositionDiagnostic)}).strict(),connections:z.array(connection),diagnostics:z.object({discoveryErrors:z.number(),discoveryWarnings:z.number()}).strict(),hooks:z.array(hook),instructions:z.object({dynamic:z.array(dynamicResolver),static:z.array(instructions)}).strict(),instrumentation:source.optional(),kernelEffects:z.array(kernelEffect),kind:z.literal(`eve-agent-info`),memories:z.array(memory),mode:z.enum([`development`,`production`]),remoteAgents:z.object({entries:z.array(remoteAgent),total:z.number()}).strict(),sandbox,schedules:z.array(schedule),skills:z.object({dynamic:z.array(dynamicResolver),static:z.array(skill)}).strict(),subagents:z.object({local:z.array(subagent),total:z.number()}).strict(),tools:z.object({dynamic:z.array(dynamicResolver),static:z.array(tool)}).strict(),version:z.literal(4),workspace:z.object({resourceRoot:z.unknown(),rootEntries:z.array(z.string())}).strict()}).strict().superRefine((e,t)=>{let assertUnique=(e,n,r)=>{let i=new Set;e.forEach((e,a)=>{let o=n(e);i.has(o)&&t.addIssue({code:`custom`,message:`Duplicate public identity "${o}".`,path:[...r,a]}),i.add(o)})},assertTotal=(e,n,r)=>{(!Number.isSafeInteger(e)||e<0||e!==n.length)&&t.addIssue({code:`custom`,message:`Expected total ${n.length}, received ${e}.`,path:[...r]})};assertUnique(e.tools.static,e=>e.name,[`tools`,`static`]),assertUnique(e.tools.dynamic,e=>e.slug,[`tools`,`dynamic`]),assertUnique(e.skills.static,e=>e.name,[`skills`,`static`]),assertUnique(e.skills.dynamic,e=>e.slug,[`skills`,`dynamic`]),assertUnique(e.instructions.static,e=>e.name,[`instructions`,`static`]),assertUnique(e.instructions.dynamic,e=>e.slug,[`instructions`,`dynamic`]),assertUnique(e.schedules,e=>e.name,[`schedules`]),assertUnique(e.connections,e=>e.connectionName,[`connections`]),assertUnique(e.hooks,e=>e.slug,[`hooks`]),assertUnique(e.memories,e=>e.slot,[`memories`]),assertUnique(e.channels.routes,e=>`${e.method} ${normalizeRoutePattern(e.urlPath)}`,[`channels`,`routes`]),assertUnique(e.subagents.local,e=>e.nodeId,[`subagents`,`local`]),assertUnique(e.remoteAgents.entries,e=>e.nodeId,[`remoteAgents`,`entries`]),assertTotal(e.subagents.total,e.subagents.local,[`subagents`,`total`]),assertTotal(e.remoteAgents.total,e.remoteAgents.entries,[`remoteAgents`,`total`]);let n=[[e.agent.config,[`agent`,`config`]],...e.agent.model.source===void 0?[]:[[e.agent.model.source,[`agent`,`model`,`source`]]],...e.agent.model.routing.kind===`dynamic`?[[e.agent.model.routing.resolver,[`agent`,`model`,`routing`,`resolver`]]]:[],...e.channels.routes.map((e,t)=>[e,[`channels`,`routes`,t]]),...e.connections.map((e,t)=>[e,[`connections`,t]]),...e.hooks.map((e,t)=>[e,[`hooks`,t]]),...e.instructions.dynamic.map((e,t)=>[e,[`instructions`,`dynamic`,t]]),...e.instructions.static.map((e,t)=>[e,[`instructions`,`static`,t]]),...e.memories.map((e,t)=>[e,[`memories`,t]]),...e.instrumentation===void 0?[]:[[e.instrumentation,[`instrumentation`]]],...e.remoteAgents.entries.map((e,t)=>[e,[`remoteAgents`,`entries`,t]]),...e.schedules.map((e,t)=>[e,[`schedules`,t]]),...e.skills.dynamic.map((e,t)=>[e,[`skills`,`dynamic`,t]]),...e.skills.static.map((e,t)=>[e,[`skills`,`static`,t]]),...e.subagents.local.flatMap((e,t)=>e.configResolver===void 0?[]:[[e.configResolver,[`subagents`,`local`,t,`configResolver`]]]),...e.tools.dynamic.map((e,t)=>[e,[`tools`,`dynamic`,t]]),...e.tools.static.map((e,t)=>[e,[`tools`,`static`,t]]),[e.sandbox,[`sandbox`]]];for(let[e,r]of n){if(e.sourceKind===`module`&&e.binding===void 0){t.addIssue({code:`custom`,message:`Module source is missing its compiled binding.`,path:[...r,`binding`]});continue}if(e.sourceKind!==`module`&&e.binding!==void 0){t.addIssue({code:`custom`,message:`${e.sourceKind} source cannot carry a module binding.`,path:[...r,`binding`]});continue}e.binding!==void 0&&(e.binding.logicalPath!==e.logicalPath&&t.addIssue({code:`custom`,message:`Source and binding logical paths do not match.`,path:[...r,`binding`,`logicalPath`]}),JSON.stringify(e.binding.owner)!==JSON.stringify(e.owner)&&t.addIssue({code:`custom`,message:`Source and binding owners do not match.`,path:[...r,`binding`,`owner`]}))}});function normalizeRoutePattern(e){return e.replace(/^\/+|\/+$/g,``).split(`/`).map(e=>e.startsWith(`:`)||/^\[[^\]]+\]$/.test(e)?`:`:e).join(`/`)}export{AgentInfoResultSchema};
1
+ import{z}from"#compiled/zod/index.js";const owner=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`application`)}).strict(),z.object({feature:z.string(),kind:z.literal(`framework`)}).strict(),z.object({kind:z.literal(`extension`),namespace:z.string(),packageName:z.string()}).strict()]),moduleBacking=z.discriminatedUnion(`kind`,[z.object({externalDependencies:z.array(z.string()),extensionScope:z.object({namespace:z.string(),sourceRoot:z.string()}).strict().optional(),kind:z.literal(`filesystem`),sourcePath:z.string()}).strict(),z.object({dependencies:z.record(z.string(),z.string()).optional(),kind:z.literal(`programmatic`),moduleId:z.string(),parameters:z.record(z.string(),z.unknown()).optional(),registryId:z.string(),revision:z.string(),semanticRevision:z.string().optional()}).strict()]),binding=z.object({backing:moduleBacking,logicalPath:z.string(),owner}).strict(),source=z.object({binding:binding.optional(),exportName:z.string().optional(),logicalPath:z.string(),owner,sourceId:z.string(),sourceKind:z.enum([`markdown`,`module`,`skill-package`])}).strict(),entry=source.extend({name:z.string()}).strict(),dynamicResolver=source.extend({eventNames:z.array(z.string()),slug:z.string()}).strict(),modelRouting=z.discriminatedUnion(`kind`,[z.object({kind:z.literal(`gateway`),target:z.string(),byok:z.string().optional()}).strict(),z.object({kind:z.literal(`external`),provider:z.string()}).strict()]),modelEndpoint=z.union([z.object({kind:z.literal(`external`),provider:z.string()}).strict(),z.object({kind:z.literal(`chatgpt`),state:z.enum([`checking`,`ready`,`signed-out`,`reauth-required`,`unavailable`]),accountLabel:z.string().optional()}).strict(),z.object({kind:z.literal(`gateway`),connected:z.literal(!0),credential:z.enum([`api-key`,`oidc`,`oauth`]),team:z.optional(z.string())}).strict(),z.object({kind:z.literal(`gateway`),connected:z.literal(!1)}).strict()]),modelBaseFields={contextWindowTokens:z.number().optional(),providerOptions:z.unknown().optional(),reasoning:z.enum([`provider-default`,`none`,`minimal`,`low`,`medium`,`high`,`xhigh`]).optional().catch(void 0),source:source.optional()},agentModel=z.union([z.object({...modelBaseFields,endpoint:modelEndpoint.optional(),id:z.string(),routing:modelRouting}).strict(),z.object({...modelBaseFields,endpoint:z.never().optional(),id:z.never().optional(),routing:z.object({kind:z.literal(`dynamic`),resolver:dynamicResolver}).strict()}).strict()]),tool=entry.extend({description:z.string(),hasAuth:z.boolean(),hasExecute:z.boolean(),hasModelOutputProjection:z.boolean(),hasOutputSchema:z.boolean(),inputSchema:z.unknown(),outputSchema:z.unknown().optional(),requiresApproval:z.boolean()}).strict(),skill=entry.extend({description:z.string(),license:z.string().optional(),markdown:z.string(),metadata:z.record(z.string(),z.string()).optional()}).strict(),instructions=entry.extend({content:z.string(),role:z.enum([`system`,`user`])}).strict(),schedule=entry.extend({cron:z.string(),hasRun:z.boolean(),markdown:z.string().optional()}).strict(),channelMethod=z.enum([`GET`,`HEAD`,`POST`,`PUT`,`PATCH`,`DELETE`,`OPTIONS`,`WEBSOCKET`]),channelRoute=entry.extend({adapterKind:z.string().optional(),method:channelMethod,urlPath:z.string()}).strict(),sourceDescriptor=z.object({backing:z.union([moduleBacking,z.object({kind:z.literal(`resource`),sourcePath:z.string()}).strict()]),form:z.enum([`derived`,`direct`]),layer:z.enum([`framework-default`,`extension-package`,`extension-override`,`application`]),logicalPath:z.string(),owner,sourceId:z.string()}).strict(),shadowedChannelRoute=z.object({method:channelMethod,source:sourceDescriptor,urlPath:z.string(),winnerSourceId:z.string()}).strict(),connection=source.extend({connectionName:z.string(),description:z.string(),hasApproval:z.boolean(),hasAuthorization:z.boolean(),hasHeaders:z.boolean(),protocol:z.string(),toolFilter:z.unknown().optional(),url:z.string()}).strict(),hook=source.extend({eventNames:z.array(z.string()),slug:z.string()}).strict(),memory=source.extend({description:z.string().optional(),slot:z.string(),visibility:z.enum([`scope`,`session`])}).strict(),sandbox=source.extend({provider:z.string().optional(),environmentExportName:z.string().optional(),revisionHash:z.string()}).strict(),subagent=entry.extend({configResolver:dynamicResolver.optional(),description:z.string().optional(),entryPath:z.string(),nodeId:z.string(),parentNodeId:z.string(),rootPath:z.string(),summary:z.object({channels:z.number(),connections:z.number(),hooks:z.number(),instructions:z.number(),memories:z.number(),schedules:z.number(),skills:z.number(),tools:z.number()}).strict()}).strict(),remoteAgent=entry.extend({description:z.string(),nodeId:z.string(),parentNodeId:z.string(),url:z.string().optional()}).strict(),kernelEffect=z.object({action:z.enum([`subagent-call`,`task-cancel`,`workflow-tool-call`]).optional(),audience:z.array(z.enum([`root-session`,`delegated-task-child`,`requires-request-input`])),kind:z.enum([`request-input`,`dispatch`,`provider-tool`]),sourceId:z.string()}).strict(),compositionDiagnostic=z.object({kind:z.enum([`disabled`,`shadowed`]),logicalPath:z.string(),owner,sourceId:z.string(),winnerSourceId:z.string().optional()}).strict(),AgentInfoResultSchema=z.object({agent:z.object({agentRoot:z.string(),appRoot:z.string(),config:source.extend({binding}).strict(),description:z.string().optional(),model:agentModel,name:z.string(),nodeId:z.string(),outputSchema:z.unknown().optional()}).strict(),capabilities:z.object({devRoutes:z.boolean()}).strict(),channels:z.object({routes:z.array(channelRoute),shadowed:z.array(shadowedChannelRoute)}).strict(),composition:z.object({disabled:z.array(compositionDiagnostic),shadowed:z.array(compositionDiagnostic)}).strict(),connections:z.array(connection),diagnostics:z.object({discoveryErrors:z.number(),discoveryWarnings:z.number()}).strict(),hooks:z.array(hook),instructions:z.object({dynamic:z.array(dynamicResolver),static:z.array(instructions)}).strict(),instrumentation:source.optional(),kernelEffects:z.array(kernelEffect),kind:z.literal(`eve-agent-info`),memories:z.array(memory),mode:z.enum([`development`,`production`]),remoteAgents:z.object({entries:z.array(remoteAgent),total:z.number()}).strict(),sandbox,schedules:z.array(schedule),skills:z.object({dynamic:z.array(dynamicResolver),static:z.array(skill)}).strict(),subagents:z.object({local:z.array(subagent),total:z.number()}).strict(),tools:z.object({dynamic:z.array(dynamicResolver),static:z.array(tool)}).strict(),version:z.literal(5),workspace:z.object({resourceRoot:z.unknown(),rootEntries:z.array(z.string())}).strict()}).strict().superRefine((e,t)=>{let assertUnique=(e,n,r)=>{let i=new Set;e.forEach((e,a)=>{let o=n(e);i.has(o)&&t.addIssue({code:`custom`,message:`Duplicate public identity "${o}".`,path:[...r,a]}),i.add(o)})},assertTotal=(e,n,r)=>{(!Number.isSafeInteger(e)||e<0||e!==n.length)&&t.addIssue({code:`custom`,message:`Expected total ${n.length}, received ${e}.`,path:[...r]})};assertUnique(e.tools.static,e=>e.name,[`tools`,`static`]),assertUnique(e.tools.dynamic,e=>e.slug,[`tools`,`dynamic`]),assertUnique(e.skills.static,e=>e.name,[`skills`,`static`]),assertUnique(e.skills.dynamic,e=>e.slug,[`skills`,`dynamic`]),assertUnique(e.instructions.static,e=>e.name,[`instructions`,`static`]),assertUnique(e.instructions.dynamic,e=>e.slug,[`instructions`,`dynamic`]),assertUnique(e.schedules,e=>e.name,[`schedules`]),assertUnique(e.connections,e=>e.connectionName,[`connections`]),assertUnique(e.hooks,e=>e.slug,[`hooks`]),assertUnique(e.memories,e=>e.slot,[`memories`]),assertUnique(e.channels.routes,e=>`${e.method} ${normalizeRoutePattern(e.urlPath)}`,[`channels`,`routes`]),assertUnique(e.subagents.local,e=>e.nodeId,[`subagents`,`local`]),assertUnique(e.remoteAgents.entries,e=>e.nodeId,[`remoteAgents`,`entries`]),assertTotal(e.subagents.total,e.subagents.local,[`subagents`,`total`]),assertTotal(e.remoteAgents.total,e.remoteAgents.entries,[`remoteAgents`,`total`]);let n=[[e.agent.config,[`agent`,`config`]],...e.agent.model.source===void 0?[]:[[e.agent.model.source,[`agent`,`model`,`source`]]],...e.agent.model.routing.kind===`dynamic`?[[e.agent.model.routing.resolver,[`agent`,`model`,`routing`,`resolver`]]]:[],...e.channels.routes.map((e,t)=>[e,[`channels`,`routes`,t]]),...e.connections.map((e,t)=>[e,[`connections`,t]]),...e.hooks.map((e,t)=>[e,[`hooks`,t]]),...e.instructions.dynamic.map((e,t)=>[e,[`instructions`,`dynamic`,t]]),...e.instructions.static.map((e,t)=>[e,[`instructions`,`static`,t]]),...e.memories.map((e,t)=>[e,[`memories`,t]]),...e.instrumentation===void 0?[]:[[e.instrumentation,[`instrumentation`]]],...e.remoteAgents.entries.map((e,t)=>[e,[`remoteAgents`,`entries`,t]]),...e.schedules.map((e,t)=>[e,[`schedules`,t]]),...e.skills.dynamic.map((e,t)=>[e,[`skills`,`dynamic`,t]]),...e.skills.static.map((e,t)=>[e,[`skills`,`static`,t]]),...e.subagents.local.flatMap((e,t)=>e.configResolver===void 0?[]:[[e.configResolver,[`subagents`,`local`,t,`configResolver`]]]),...e.tools.dynamic.map((e,t)=>[e,[`tools`,`dynamic`,t]]),...e.tools.static.map((e,t)=>[e,[`tools`,`static`,t]]),[e.sandbox,[`sandbox`]]];for(let[e,r]of n){if(e.sourceKind===`module`&&e.binding===void 0){t.addIssue({code:`custom`,message:`Module source is missing its compiled binding.`,path:[...r,`binding`]});continue}if(e.sourceKind!==`module`&&e.binding!==void 0){t.addIssue({code:`custom`,message:`${e.sourceKind} source cannot carry a module binding.`,path:[...r,`binding`]});continue}e.binding!==void 0&&(e.binding.logicalPath!==e.logicalPath&&t.addIssue({code:`custom`,message:`Source and binding logical paths do not match.`,path:[...r,`binding`,`logicalPath`]}),JSON.stringify(e.binding.owner)!==JSON.stringify(e.owner)&&t.addIssue({code:`custom`,message:`Source and binding owners do not match.`,path:[...r,`binding`,`owner`]}))}});function normalizeRoutePattern(e){return e.replace(/^\/+|\/+$/g,``).split(`/`).map(e=>e.startsWith(`:`)||/^\[[^\]]+\]$/.test(e)?`:`:e).join(`/`)}export{AgentInfoResultSchema};
@@ -1 +1 @@
1
- import{toError}from"#shared/errors.js";import{createEventDeduper}from"#protocol/event-dedupe.js";import{isCurrentTurnBoundaryEvent}from"#protocol/message.js";import{updatePendingAuthorizations}from"#client/session-utils.js";import{Client}from"#client/client.js";import{consumeMessageResponse,getMessageResponseDeliveryId}from"#client/message-response.js";import{SessionEventStream}from"#client/session-event-stream.js";import{EveAgentProjection}from"#client/eve-agent-projection.js";import{OptimisticMessageSubmissions}from"#client/optimistic-message-submissions.js";import{assertExclusiveTurnInput,createAbortSignal,createActiveTurn,followSteeredTurns,isAbortError,isSettledSessionTail,toTerminalStreamFailureError,waitWithSignal}from"#client/eve-agent-store-helpers.js";const detachStore=Symbol(`detachEveAgentStore`),attachStore=Symbol(`attachEveAgentStore`);var EveAgentStore=class{#e;#t;#n=!1;#r;#i=new Set;#a;#o;#s;#c=new Set;#l=createEventDeduper();#u;#d={};#f;#p;#m;#h=0;#g;#_;#v;#y;#b;#x=`ready`;constructor(e){this.#t=e.prewarm??!1,this.#a=e.session!==void 0,this.#e=this.#a?void 0:new Client({auth:e.auth,headers:e.headers,host:e.host??``});let t=[];for(let n of e.initialEvents??[])this.#l.admit(n)&&t.push(n),updatePendingAuthorizations(this.#i,n);this.#p=t,this.#s=new EveAgentProjection(e.reducer,this.#p),this.#o=e.optimistic??!0,this.#m=new OptimisticMessageSubmissions(this.#s,this.#o),this.#y=e.session??(e.initialSession===void 0?void 0:this.#e?.sessions.attach(e.initialSession.sessionId,{streamIndex:e.initialSession.streamIndex})),this.#b=this.#P()}get snapshot(){return this.#b}setCallbacks(e){this.#d=e}subscribe(e){return this.#c.add(e),()=>{this.#c.delete(e)}}prewarm(){if(this.#g!==void 0)return this.#g;if(this.#y!==void 0||this.#a)return Promise.resolve();if(this.#u!==void 0)return this.#u.response.then(e=>{if(e===void 0)throw this.#f??new DOMException(`Session creation was aborted.`,`AbortError`)});let e=this.#e;if(e===void 0)return Promise.reject(Error(`This eve agent store does not own a session client.`));let t=this.#h,n=new AbortController;this.#_=n;let r=(async()=>{try{let r=await e.sessions.create({signal:n.signal});if(t!==this.#h)return;this.#y=r.session,this.#f=void 0,this.#x===`error`&&(this.#x=`ready`),this.#d.onSessionChange?.(r.session.state),this.#F(),this.#E()}catch(e){throw t===this.#h&&this.#u===void 0&&this.#f===void 0&&(this.#f=toError(e),this.#x=`error`,this.#d.onError?.(this.#f),this.#F()),e}})();this.#g=r;let clear=()=>{this.#g===r&&(this.#g=void 0,this.#_=void 0)};return r.then(clear,clear),r}async send(e){return await this.#S(e,this.#d.prepareSend)}async#S(e,t){if(this.#u!==void 0){if(this.#x===`resuming`)throw Error(`eve session is resuming.`);return await this.#w(this.#u,e,t)}let n=createActiveTurn(e=>e.acceptedFollowUps>0&&this.#y!==void 0?this.#y.cancel():e.response.then(e=>e===void 0?{status:`no_active_turn`}:e.cancel()));this.#u=n,this.#f=void 0,this.#x=`submitted`,this.#F();let r;try{let i=await(t===void 0?e:waitWithSignal(Promise.resolve(t(e)),createAbortSignal(e.signal,n.abortController.signal)));if(assertExclusiveTurnInput(i),!this.#k(n))return;let a=this.#m.submit(i,this.#p.length);this.#A(i),this.#F();let o={...i,signal:createAbortSignal(i.signal,n.abortController.signal)},s=await this.#T(o),c=s.response;if(r=s.reader,!this.#k(n))return;n.resolveResponse(c),this.#M(this.#m.correlate(a,getMessageResponseDeliveryId(c),this.#p))&&this.#F();for await(let e of consumeMessageResponse(c,r)){if(!this.#k(n))return;n.receivedFollowUps+=n.receivedFollowUpEvents.get(e)??0,n.receivedFollowUpEvents.delete(e)}if(!this.#k(n)||(await followSteeredTurns(n,r,()=>this.#k(n)),!this.#k(n)))return;this.#x=this.#f===void 0?`ready`:`error`}catch(e){if(!this.#k(n))return;if(isAbortError(e))this.#x=`ready`,this.#m.fail(toError(e));else{let t=this.#f!==void 0;this.#f??=toError(e),this.#x=`error`,this.#m.fail(this.#f),t||this.#d.onError?.(this.#f)}}finally{r?.[Symbol.dispose](),this.#O(n)}}resume(){if(this.#v!==void 0)return this.#v;let e=this.#C();this.#v=e;let clear=()=>{this.#v===e&&(this.#v=void 0)};return e.then(clear,clear),e}async#C(){if(this.#x===`resuming`||this.#x===`streaming`||this.#x===`submitted`)throw Error(`eve session is already processing a turn.`);if(this.#y===void 0)throw Error(`An eve session is required before resuming.`);let e=this.#y,t=createActiveTurn(()=>e.cancel());this.#u=t,t.resolveResponse(void 0),this.#f=void 0,this.#x=`resuming`,this.#F();try{let n=this.#E({catchUp:!0,startIndex:this.#p.length===e.state.streamIndex?e.state.streamIndex:0});using r=n.subscribe(t.abortController.signal);if(await n.caughtUp,!this.#k(t))return;r.discard();let i=this.#p.at(-1);if(i!==void 0&&this.#N(i),i!==void 0&&this.#f===void 0&&!isSettledSessionTail(this.#p)){this.#x=`streaming`,this.#F();for await(let e of r){if(!this.#k(t))return;if(t.receivedFollowUps+=t.receivedFollowUpEvents.get(e)??0,t.receivedFollowUpEvents.delete(e),isCurrentTurnBoundaryEvent(e)&&this.#i.size===0)break}}await followSteeredTurns(t,r,()=>this.#k(t)),this.#k(t)&&(this.#x=this.#f===void 0?`ready`:`error`)}catch(e){if(!this.#k(t))return;isAbortError(e)?this.#x=`ready`:(this.#f=toError(e),this.#x=`error`,this.#d.onError?.(this.#f))}finally{this.#O(t)}}cancel(){let e=this.#u;return e===void 0?this.#x===`streaming`&&this.#y!==void 0?this.#y.cancel():Promise.resolve({status:`no_active_turn`}):e.cancel()}[attachStore](){this.#n=!0,this.#t&&this.#y===void 0&&this.prewarm().catch(()=>{})}[detachStore](){this.#n=!1,this.#r?.close(),this.#r=void 0,this.#u?.abortController.abort(),this.#D(),this.#v=void 0}reset(){this.#r?.close(),this.#r=void 0,this.#i.clear();let e=this.#u;this.#u=void 0,e?.resolveResponse(void 0),e?.resolveCompletion(),e?.abortController.abort(),this.#D(),this.#v=void 0,this.#a||(this.#y=void 0),this.#p=[],this.#l=createEventDeduper(),this.#m.reset(),this.#s.reset(),this.#f=void 0,this.#x=`ready`,this.#d.onSessionChange?.(this.#y?.state),this.#F(),this.#t&&this.#n&&this.prewarm().catch(()=>{})}async#w(e,t,n){if(t.message===void 0||t.turnPolicy!==`steer`)throw Error(`eve session is already processing a turn. Send a message with turnPolicy: "steer" to guide it at the next boundary.`);let r=this.#h,i=createAbortSignal(t.signal,e.abortController.signal),a=await waitWithSignal(Promise.resolve(n?.(t)),i)??t;if(r!==this.#h)return;if(assertExclusiveTurnInput(a),a.message===void 0||a.turnPolicy!==`steer`)throw Error(`An in-flight follow-up requires a message with turnPolicy: "steer".`);if(!this.#k(e))return await this.#S(a);let o=this.#m.submit(a,this.#p.length);o!==void 0&&e.followUpSubmissionIds.add(o),this.#F(),this.#E({headers:a.headers,streamReconnectPolicy:a.streamReconnectPolicy});let s;s=(async()=>{try{let t=createAbortSignal(a.signal,e.abortController.signal);if(await waitWithSignal(e.response,t),!this.#k(e)||this.#y===void 0)throw Error(`The active eve turn ended before the follow-up could be sent.`);let{message:n,...r}=a,i=await this.#y.send(n,{...r,signal:t});e.acceptedFollowUps+=1,this.#M(this.#m.correlate(o,getMessageResponseDeliveryId(i),this.#p))&&this.#F()}catch(t){throw this.#k(e)&&(this.#m.fail(toError(t),o),this.#F()),t}finally{e.followUpDispatches.delete(s)}})(),e.followUpDispatches.add(s),await s,await e.completion}async#T(e){let t={headers:e.headers,streamReconnectPolicy:e.streamReconnectPolicy};if(this.#g!==void 0&&(await waitWithSignal(this.#g.catch(e=>{if(this.#y!==void 0)throw e}),e.signal),e.signal?.throwIfAborted()),this.#y===void 0){if(this.#e===void 0)throw Error(`An external eve session is required before sending.`);if(e.message===void 0)throw Error(`Cannot answer an input request before the session starts.`);let n=await this.#e.sessions.create({...e,message:e.message});return e.signal?.throwIfAborted(),this.#y=n.session,this.#d.onSessionChange?.(n.session.state),this.#F(),{response:n.response,reader:this.#E(t).subscribe(e.signal)}}let n=this.#E(t).subscribe(e.signal);try{if(e.inputResponses===void 0){let{message:t,...r}=e;return{response:await this.#y.send(t,r),reader:n}}let{inputResponses:t,...r}=e;return{response:await this.#y.respond(t,r),reader:n}}catch(e){throw n[Symbol.dispose](),e}}#E(e={}){if(this.#r!==void 0&&!this.#r.ended)return this.#r.setOptions(e),this.#r;if(this.#y===void 0)throw Error(`A session is required before opening its stream.`);let t=this.#y,n=this.#h;return this.#r=new SessionEventStream(t,{...e,onEvent:e=>{n===this.#h&&this.#j(e)},onError:e=>{n===this.#h&&(this.#r=void 0,this.#u===void 0&&(this.#f=toError(e),this.#x=`error`,this.#d.onError?.(this.#f),this.#F()))}}),this.#r}#D(){this.#h+=1,this.#_?.abort(),this.#_=void 0,this.#g=void 0}#O(e){if(this.#k(e)){e.resolveResponse(void 0),this.#u=void 0;try{this.#d.onSessionChange?.(this.#y?.state),this.#F(),this.#d.onFinish?.(this.#b)}finally{e.resolveCompletion()}}}#k(e){return this.#u===e}#A(e){e.inputResponses!==void 0&&e.inputResponses.length!==0&&this.#s.append({data:{createdAt:Date.now(),responses:e.inputResponses},type:`client.input.responded`})}#j(e){if(!this.#l.admit(e))return;let t=this.#x===`streaming`;updatePendingAuthorizations(this.#i,e),this.#p=[...this.#p,e],this.#M(this.#m.apply(e)),this.#d.onEvent?.(e),this.#N(e);let n=isCurrentTurnBoundaryEvent(e)&&this.#i.size===0;this.#x!==`resuming`&&this.#f===void 0&&(`data`in e&&`turnId`in e.data&&(this.#x=`streaming`),this.#u===void 0&&n&&(this.#x=`ready`)),this.#d.onSessionChange?.(this.#y?.state),this.#F(),this.#u===void 0&&t&&n&&this.#d.onFinish?.(this.#b)}#M(e){if(e===void 0)return!1;let t=0;for(let n of e.ids)this.#u?.followUpSubmissionIds.delete(n)&&(t+=1);if(t>0&&this.#u!==void 0){if(e.alreadyProjected)this.#u.receivedFollowUps+=t;else{let n=this.#u.receivedFollowUpEvents.get(e.event)??0;this.#u.receivedFollowUpEvents.set(e.event,n+t)}}return!0}#N(e){let t=toTerminalStreamFailureError(e);t!==void 0&&(this.#x=`error`,this.#m.failAll(t),this.#f===void 0&&(this.#f=t,this.#d.onError?.(t)))}#P(){return{data:this.#s.data,error:this.#f,events:this.#p,session:this.#y?.state,status:this.#x}}#F(){this.#b=this.#P();for(let e of this.#c)e()}};function detachEveAgentStore(e){e[detachStore]()}function attachEveAgentStore(e){e[attachStore]()}export{EveAgentStore,attachEveAgentStore,detachEveAgentStore};
1
+ import{toError}from"#shared/errors.js";import{createEventDeduper}from"#protocol/event-dedupe.js";import{isCurrentTurnBoundaryEvent}from"#protocol/message.js";import{updatePendingAuthorizations}from"#client/session-utils.js";import{Client}from"#client/client.js";import{consumeMessageResponse,getMessageResponseDeliveryId}from"#client/message-response.js";import{SessionEventStream}from"#client/session-event-stream.js";import{EveAgentProjection}from"#client/eve-agent-projection.js";import{OptimisticMessageSubmissions}from"#client/optimistic-message-submissions.js";import{assertExclusiveTurnInput,createAbortSignal,createActiveTurn,followSteeredTurns,isAbortError,isSettledSessionTail,toTerminalStreamFailureError,waitWithSignal}from"#client/eve-agent-store-helpers.js";const detachStore=Symbol(`detachEveAgentStore`),attachStore=Symbol(`attachEveAgentStore`);var EveAgentStore=class{#e;#t;#n=!1;#r;#i=new Set;#a;#o;#s;#c=new Set;#l=createEventDeduper();#u;#d={};#f;#p;#m;#h=0;#g;#_;#v;#y;#b;#x=`ready`;constructor(e){this.#t=e.prewarm??!1,this.#a=e.session!==void 0,this.#e=this.#a?void 0:new Client({auth:e.auth,headers:e.headers,host:e.host??``});let t=[];for(let n of e.initialEvents??[])this.#l.admit(n)&&t.push(n),updatePendingAuthorizations(this.#i,n);this.#p=t,this.#s=new EveAgentProjection(e.reducer,this.#p),this.#o=e.optimistic??!0,this.#m=new OptimisticMessageSubmissions(this.#s,this.#o),this.#y=e.session??(e.initialSession===void 0?void 0:this.#e?.sessions.attach(e.initialSession.sessionId,{streamIndex:e.initialSession.streamIndex})),this.#b=this.#P()}get snapshot(){return this.#b}setCallbacks(e){this.#d=e}subscribe(e){return this.#c.add(e),()=>{this.#c.delete(e)}}prewarm(){if(this.#g!==void 0)return this.#g;if(this.#y!==void 0||this.#a)return Promise.resolve();if(this.#u!==void 0)return this.#u.response.then(e=>{if(e===void 0)throw this.#f??new DOMException(`Session creation was aborted.`,`AbortError`)});let e=this.#e;if(e===void 0)return Promise.reject(Error(`This eve agent store does not own a session client.`));let t=this.#h,n=new AbortController;this.#_=n;let r=(async()=>{try{let r=await e.sessions.create({signal:n.signal});if(t!==this.#h)return;this.#y=r.session,this.#f=void 0,this.#x===`error`&&(this.#x=`ready`),this.#d.onSessionChange?.(r.session.state),this.#F(),this.#E()}catch(e){throw t===this.#h&&this.#u===void 0&&this.#f===void 0&&(this.#f=toError(e),this.#x=`error`,this.#d.onError?.(this.#f),this.#F()),e}})();this.#g=r;let clear=()=>{this.#g===r&&(this.#g=void 0,this.#_=void 0)};return r.then(clear,clear),r}async send(e){return await this.#S(e,this.#d.prepareSend)}async#S(e,t){if(this.#u!==void 0){if(this.#x===`resuming`)throw Error(`eve session is resuming.`);return await this.#w(this.#u,e,t)}let n=createActiveTurn(e=>e.acceptedFollowUps>0&&this.#y!==void 0?this.#y.cancel():e.response.then(e=>e===void 0?{status:`no_active_turn`}:e.cancel()));this.#u=n,this.#f=void 0,this.#x=`submitted`,this.#F();let r;try{let i=await(t===void 0?e:waitWithSignal(Promise.resolve(t(e)),createAbortSignal(e.signal,n.abortController.signal)));if(assertExclusiveTurnInput(i),!this.#k(n))return;let a=this.#m.submit(i,this.#p.length);this.#A(i),this.#F();let o={...i,signal:createAbortSignal(i.signal,n.abortController.signal)},s=await this.#T(o),c=s.response;if(r=s.reader,!this.#k(n))return;n.resolveResponse(c),this.#M(this.#m.correlate(a,getMessageResponseDeliveryId(c),this.#p))&&this.#F();for await(let e of consumeMessageResponse(c,r)){if(!this.#k(n))return;n.receivedFollowUps+=n.receivedFollowUpEvents.get(e)??0,n.receivedFollowUpEvents.delete(e)}if(!this.#k(n)||(await followSteeredTurns(n,r,()=>this.#k(n)),!this.#k(n)))return;this.#x=this.#f===void 0?`ready`:`error`}catch(e){if(!this.#k(n))return;if(isAbortError(e))this.#x=`ready`,this.#m.fail(toError(e));else{let t=this.#f!==void 0;this.#f??=toError(e),this.#x=`error`,this.#m.fail(this.#f),t||this.#d.onError?.(this.#f)}}finally{r?.[Symbol.dispose](),this.#O(n)}}resume(){if(this.#v!==void 0)return this.#v;let e=this.#C();this.#v=e;let clear=()=>{this.#v===e&&(this.#v=void 0)};return e.then(clear,clear),e}async#C(){if(this.#x===`resuming`||this.#x===`streaming`||this.#x===`submitted`)throw Error(`eve session is already processing a turn.`);if(this.#y===void 0)throw Error(`An eve session is required before resuming.`);let e=this.#y,t=createActiveTurn(()=>e.cancel());this.#u=t,t.resolveResponse(void 0),this.#f=void 0,this.#x=`resuming`,this.#F();let n;try{let r=this.#E({catchUp:!0,startIndex:this.#p.length===e.state.streamIndex?e.state.streamIndex:0});if(n=r.subscribe(t.abortController.signal),await r.caughtUp,!this.#k(t))return;n.discard();let i=this.#p.at(-1);if(i!==void 0&&this.#N(i),i!==void 0&&this.#f===void 0&&!isSettledSessionTail(this.#p)){this.#x=`streaming`,this.#F();for await(let e of n){if(!this.#k(t))return;if(t.receivedFollowUps+=t.receivedFollowUpEvents.get(e)??0,t.receivedFollowUpEvents.delete(e),isCurrentTurnBoundaryEvent(e)&&this.#i.size===0)break}}await followSteeredTurns(t,n,()=>this.#k(t)),this.#k(t)&&(this.#x=this.#f===void 0?`ready`:`error`)}catch(e){if(!this.#k(t))return;isAbortError(e)?this.#x=`ready`:(this.#f=toError(e),this.#x=`error`,this.#d.onError?.(this.#f))}finally{n?.[Symbol.dispose](),this.#O(t)}}cancel(){let e=this.#u;return e===void 0?this.#x===`streaming`&&this.#y!==void 0?this.#y.cancel():Promise.resolve({status:`no_active_turn`}):e.cancel()}[attachStore](){this.#n=!0,this.#t&&this.#y===void 0&&this.prewarm().catch(()=>{})}[detachStore](){this.#n=!1,this.#r?.close(),this.#r=void 0,this.#u?.abortController.abort(),this.#D(),this.#v=void 0}reset(){this.#r?.close(),this.#r=void 0,this.#i.clear();let e=this.#u;this.#u=void 0,e?.resolveResponse(void 0),e?.resolveCompletion(),e?.abortController.abort(),this.#D(),this.#v=void 0,this.#a||(this.#y=void 0),this.#p=[],this.#l=createEventDeduper(),this.#m.reset(),this.#s.reset(),this.#f=void 0,this.#x=`ready`,this.#d.onSessionChange?.(this.#y?.state),this.#F(),this.#t&&this.#n&&this.prewarm().catch(()=>{})}async#w(e,t,n){if(t.message===void 0||t.turnPolicy!==`steer`)throw Error(`eve session is already processing a turn. Send a message with turnPolicy: "steer" to guide it at the next boundary.`);let r=this.#h,i=createAbortSignal(t.signal,e.abortController.signal),a=await waitWithSignal(Promise.resolve(n?.(t)),i)??t;if(r!==this.#h)return;if(assertExclusiveTurnInput(a),a.message===void 0||a.turnPolicy!==`steer`)throw Error(`An in-flight follow-up requires a message with turnPolicy: "steer".`);if(!this.#k(e))return await this.#S(a);let o=this.#m.submit(a,this.#p.length);o!==void 0&&e.followUpSubmissionIds.add(o),this.#F(),this.#E({headers:a.headers,streamReconnectPolicy:a.streamReconnectPolicy});let s;s=(async()=>{try{let t=createAbortSignal(a.signal,e.abortController.signal);if(await waitWithSignal(e.response,t),!this.#k(e)||this.#y===void 0)throw Error(`The active eve turn ended before the follow-up could be sent.`);let{message:n,...r}=a,i=await this.#y.send(n,{...r,signal:t});e.acceptedFollowUps+=1,this.#M(this.#m.correlate(o,getMessageResponseDeliveryId(i),this.#p))&&this.#F()}catch(t){throw this.#k(e)&&(this.#m.fail(toError(t),o),this.#F()),t}finally{e.followUpDispatches.delete(s)}})(),e.followUpDispatches.add(s),await s,await e.completion}async#T(e){let t={headers:e.headers,streamReconnectPolicy:e.streamReconnectPolicy};if(this.#g!==void 0&&(await waitWithSignal(this.#g.catch(e=>{if(this.#y!==void 0)throw e}),e.signal),e.signal?.throwIfAborted()),this.#y===void 0){if(this.#e===void 0)throw Error(`An external eve session is required before sending.`);if(e.message===void 0)throw Error(`Cannot answer an input request before the session starts.`);let n=await this.#e.sessions.create({...e,message:e.message});return e.signal?.throwIfAborted(),this.#y=n.session,this.#d.onSessionChange?.(n.session.state),this.#F(),{response:n.response,reader:this.#E(t).subscribe(e.signal)}}let n=this.#E(t).subscribe(e.signal);try{if(e.inputResponses===void 0){let{message:t,...r}=e;return{response:await this.#y.send(t,r),reader:n}}let{inputResponses:t,...r}=e;return{response:await this.#y.respond(t,r),reader:n}}catch(e){throw n[Symbol.dispose](),e}}#E(e={}){if(this.#r!==void 0&&!this.#r.ended)return this.#r.setOptions(e),this.#r;if(this.#y===void 0)throw Error(`A session is required before opening its stream.`);let t=this.#y,n=this.#h;return this.#r=new SessionEventStream(t,{...e,onEvent:e=>{n===this.#h&&this.#j(e)},onError:e=>{n===this.#h&&(this.#r=void 0,this.#u===void 0&&(this.#f=toError(e),this.#x=`error`,this.#d.onError?.(this.#f),this.#F()))}}),this.#r}#D(){this.#h+=1,this.#_?.abort(),this.#_=void 0,this.#g=void 0}#O(e){if(this.#k(e)){e.resolveResponse(void 0),this.#u=void 0;try{this.#d.onSessionChange?.(this.#y?.state),this.#F(),this.#d.onFinish?.(this.#b)}finally{e.resolveCompletion()}}}#k(e){return this.#u===e}#A(e){e.inputResponses!==void 0&&e.inputResponses.length!==0&&this.#s.append({data:{createdAt:Date.now(),responses:e.inputResponses},type:`client.input.responded`})}#j(e){if(!this.#l.admit(e))return;let t=this.#x===`streaming`;updatePendingAuthorizations(this.#i,e),this.#p=[...this.#p,e],this.#M(this.#m.apply(e)),this.#d.onEvent?.(e),this.#N(e);let n=isCurrentTurnBoundaryEvent(e)&&this.#i.size===0;this.#x!==`resuming`&&this.#f===void 0&&(`data`in e&&`turnId`in e.data&&(this.#x=`streaming`),this.#u===void 0&&n&&(this.#x=`ready`)),this.#d.onSessionChange?.(this.#y?.state),this.#F(),this.#u===void 0&&t&&n&&this.#d.onFinish?.(this.#b)}#M(e){if(e===void 0)return!1;let t=0;for(let n of e.ids)this.#u?.followUpSubmissionIds.delete(n)&&(t+=1);if(t>0&&this.#u!==void 0){if(e.alreadyProjected)this.#u.receivedFollowUps+=t;else{let n=this.#u.receivedFollowUpEvents.get(e.event)??0;this.#u.receivedFollowUpEvents.set(e.event,n+t)}}return!0}#N(e){let t=toTerminalStreamFailureError(e);t!==void 0&&(this.#x=`error`,this.#m.failAll(t),this.#f===void 0&&(this.#f=t,this.#d.onError?.(t)))}#P(){return{data:this.#s.data,error:this.#f,events:this.#p,session:this.#y?.state,status:this.#x}}#F(){this.#b=this.#P();for(let e of this.#c)e()}};function detachEveAgentStore(e){e[detachStore]()}function attachEveAgentStore(e){e[attachStore]()}export{EveAgentStore,attachEveAgentStore,detachEveAgentStore};
@@ -1 +1 @@
1
- import{EVE_SESSION_ROUTE_PATH,createEveSessionRoutePath}from"#protocol/routes.js";import{EVE_SESSION_ID_HEADER,isCurrentTurnBoundaryEvent}from"#protocol/message.js";import{updatePendingAuthorizations}from"#client/session-utils.js";import{ClientError}from"#client/client-error.js";import{createClientUrl}from"#client/url.js";import{MessageResponse}from"#client/message-response.js";import{followStreamIterable,sleep}from"#client/open-stream.js";import{cancelClientSession,clearClientSession,compactClientSession,resetClientSession}from"#client/session-controls.js";import{serializeOutputSchema}from"#tools/schema.js";const followSession=Symbol(`followClientSession`);var ClientSession=class ClientSession{#e;#t;constructor(e,t){this.#e=e,this.#t=t}static async create(e,t){let n=await postTurn(e,EVE_SESSION_ROUTE_PATH,t,!0),{sessionId:r}=await readAcceptedMessage(n),i=new ClientSession(e,{sessionId:r,streamIndex:0});return{response:i.#r(n,t,0),session:i}}static async prewarm(e,t={}){let{sessionId:n}=await readAcceptedMessage(await postCreateSession(e,t));return new ClientSession(e,{sessionId:n,streamIndex:0})}get state(){return this.#t}async snapshot(e){e?.signal?.throwIfAborted();let t=[];for await(let n of this.#s({follow:!1,signal:e?.signal,startIndex:0}))t.push(n);return e?.signal?.throwIfAborted(),{events:t,session:{sessionId:this.#t.sessionId,streamIndex:t.length}}}async send(e,t={}){return await this.#n({...t,message:e},!0)}async respond(e,t={}){if(e.length===0)throw Error(`ClientSession.respond() requires at least one input response.`);return await this.#n({...t,inputResponses:e},!1)}async#n(e,t){let n=this.#t.streamIndex,r=createEveSessionRoutePath(this.#t.sessionId),i=t?await postSessionSend(this.#e,r,e):await postTurn(this.#e,r,e,!1),{sessionId:a,deliveryId:o}=await readAcceptedMessage(i,this.#t.sessionId);if(a!==this.#t.sessionId)throw Error(`Message route returned a different session id.`);if(e.message!==void 0&&o===void 0)throw Error(`Message route did not return a delivery id. Update the server before sending with this client.`);return this.#r(i,e,n,e.message===void 0?void 0:o)}async cancel(e){return await cancelClientSession({context:this.#e,options:e,sessionId:this.#t.sessionId})}async clear(){return await clearClientSession({context:this.#e,sessionId:this.#t.sessionId})}async compact(){return await compactClientSession({context:this.#e,sessionId:this.#t.sessionId})}async reset(e){return await resetClientSession({context:this.#e,options:e,sessionId:this.#t.sessionId})}stream(e){if(e?.follow===!1&&(e.startIndex??this.#t.streamIndex)<0)throw Error(`stream({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.`);return this.#a(e)}[followSession](e){return this.#a({...e,keepAlive:!0})}#r(e,t,n,r){return e.body?.cancel().catch(()=>{}),new MessageResponse({cancelTurn:async e=>await this.cancel({turnId:e}),createStream:e=>this.#i(n,t,r,e),deliveryId:r,sessionId:this.#t.sessionId})}async*#i(e,t,n,r){let i=0,a=n===void 0,o=!1,s=new Set;try{for await(let c of r??this.#s({headers:t.headers,keepAlive:!0,signal:t.signal,startIndex:e,streamReconnectPolicy:t.streamReconnectPolicy})){if(i+=1,n!==void 0){let e=c.meta?.deliveryIds?.includes(n)===!0,t=c.type===`session.failed`||c.type===`session.completed`;if(!e&&t&&(!a||c.type===`session.completed`))throw Error(`The session ended before the accepted message reached its turn boundary.`);if(!a&&!e||!t&&c.meta?.deliveryIds!==void 0&&!e)continue;a=!0}if(updatePendingAuthorizations(s,c),o=isCurrentTurnBoundaryEvent(c)&&(c.type!==`session.waiting`||s.size===0),yield c,o)break}if(n!==void 0&&!o&&!t.signal?.aborted)throw Error(`The response stream ended before the accepted message reached its turn boundary.`)}finally{this.#o(e+i)}}async*#a(e){let t=e?.startIndex??this.#t.streamIndex,n=0;for await(let r of this.#s({follow:e?.follow,headers:e?.headers,keepAlive:e?.keepAlive,onCaughtUp:e?.onCaughtUp,resolveHeaders:e?.resolveHeaders,resolveReconnectPolicy:e?.resolveReconnectPolicy,signal:e?.signal,startIndex:t,streamReconnectPolicy:e?.streamReconnectPolicy}))n+=1,t>=0&&this.#o(t+n),yield r}#o(e){this.#t={sessionId:this.#t.sessionId,streamIndex:Math.max(this.#t.streamIndex,e)}}#s(e){return followStreamIterable({onCaughtUp:e.onCaughtUp,follow:e.follow,host:this.#e.host,keepAlive:e.keepAlive,resolveHeaders:()=>this.#e.resolveHeaders(e.resolveHeaders?.()??e.headers),redirect:this.#e.redirect,sessionId:this.#t.sessionId,signal:e.signal,startIndex:e.startIndex,streamReconnectPolicy:e.streamReconnectPolicy,resolveReconnectPolicy:e.resolveReconnectPolicy})}};function followClientSession(e,t){return e[followSession](t)}async function postSessionSend(e,t,n){let r=Date.now()+2e4,i=250;for(;;){try{return await postTurn(e,t,n,!1)}catch(e){if(!isSessionNotReady(e))throw e;let t=r-Date.now();if(t<=0)throw e;await sleep(Math.min(i,t),n.signal)}n.signal?.throwIfAborted(),i=Math.min(i*2,2e3)}}async function postCreateSession(e,t){let n=await e.resolveHeaders(t.headers),r=await fetch(createClientUrl(e.host,EVE_SESSION_ROUTE_PATH),{headers:n,method:`POST`,redirect:e.redirect,signal:t.signal??null});if(!r.ok){let e=await r.text();throw new ClientError(r.status,e,r.headers)}return r}function isSessionNotReady(e){return e instanceof ClientError&&e.status===409&&e.code===`session_not_ready`}async function postTurn(e,t,n,r){let i=createMessageBody(n,r);if(i===null)throw Error(r?`Creating a session requires a non-empty message.`:`A session turn requires a non-empty message or inputResponses.`);let a=await e.resolveHeaders(n.headers);a.set(`content-type`,`application/json`);let o=await fetch(createClientUrl(e.host,t),{body:JSON.stringify(i),headers:a,method:`POST`,redirect:e.redirect,signal:n.signal??null});if(!o.ok){let e=await o.text();throw new ClientError(o.status,e,o.headers)}return o}async function readAcceptedMessage(e,t){let n=await e.json(),r=(typeof n.sessionId==`string`?n.sessionId:void 0)??e.headers.get(EVE_SESSION_ID_HEADER)?.trim()??t;if(!r)throw Error(`Message route did not return a session id.`);return{sessionId:r,deliveryId:typeof n.deliveryId==`string`&&n.deliveryId.length>0?n.deliveryId:void 0}}function createMessageBody(e,t){let n={};e.message!==void 0&&(n.message=e.message),e.inputResponses!==void 0&&e.inputResponses.length>0&&(n.inputResponses=e.inputResponses),!t&&e.message!==void 0&&e.turnPolicy!==void 0&&(n.turnPolicy=e.turnPolicy),e.clientContext!==void 0&&(n.clientContext=e.clientContext);let r=serializeOutputSchema(e.outputSchema);return r!==void 0&&(n.outputSchema=r),t&&n.message===void 0||n.message===void 0&&n.inputResponses===void 0?null:n}export{ClientSession,followClientSession};
1
+ import{EVE_SESSION_ROUTE_PATH,createEveSessionRoutePath}from"#protocol/routes.js";import{EVE_SESSION_ID_HEADER,isCurrentTurnBoundaryEvent}from"#protocol/message.js";import{updatePendingAuthorizations}from"#client/session-utils.js";import{ClientError}from"#client/client-error.js";import{createClientUrl}from"#client/url.js";import{MessageResponse}from"#client/message-response.js";import{followStreamIterable,sleep}from"#client/open-stream.js";import{cancelClientSession,clearClientSession,compactClientSession,resetClientSession}from"#client/session-controls.js";import{serializeOutputSchema}from"#tools/schema.js";const followSession=Symbol(`followClientSession`);var ClientSession=class ClientSession{#e;#t;constructor(e,t){this.#e=e,this.#t=t}static async create(e,t){let n=await postTurn(e,EVE_SESSION_ROUTE_PATH,t,!0),{sessionId:r}=await readAcceptedMessage(n),i=new ClientSession(e,{sessionId:r,streamIndex:0});return{response:i.#r(n,t,0),session:i}}static async prewarm(e,t={}){let{sessionId:n}=await readAcceptedMessage(await postCreateSession(e,t));return new ClientSession(e,{sessionId:n,streamIndex:0})}get state(){return this.#t}async snapshot(e){e?.signal?.throwIfAborted();let t=[];for await(let n of this.#s({follow:!1,signal:e?.signal,startIndex:0}))t.push(n);return e?.signal?.throwIfAborted(),{events:t,session:{sessionId:this.#t.sessionId,streamIndex:t.length}}}async send(e,t={}){return await this.#n({...t,message:e},!0)}async respond(e,t={}){if(e.length===0)throw Error(`ClientSession.respond() requires at least one input response.`);return await this.#n({...t,inputResponses:e},!1)}async#n(e,t){let n=this.#t.streamIndex,r=createEveSessionRoutePath(this.#t.sessionId),i=t?await postSessionSend(this.#e,r,e):await postTurn(this.#e,r,e,!1),{sessionId:a,deliveryId:o}=await readAcceptedMessage(i,this.#t.sessionId);if(a!==this.#t.sessionId)throw Error(`Message route returned a different session id.`);if(e.message!==void 0&&o===void 0)throw Error(`Message route did not return a delivery id. Update the server before sending with this client.`);return this.#r(i,e,n,e.message===void 0?void 0:o)}async cancel(e){return await cancelClientSession({context:this.#e,options:e,sessionId:this.#t.sessionId})}async clear(){return await clearClientSession({context:this.#e,sessionId:this.#t.sessionId})}async compact(){return await compactClientSession({context:this.#e,sessionId:this.#t.sessionId})}async reset(e){return await resetClientSession({context:this.#e,options:e,sessionId:this.#t.sessionId})}stream(e){if(e?.follow===!1&&(e.startIndex??this.#t.streamIndex)<0)throw Error(`stream({ follow: false }) requires a nonnegative startIndex; a tail-relative cursor cannot be bounded.`);return this.#a(e)}[followSession](e){return this.#a({...e,keepAlive:!0})}#r(e,t,n,r){return e.body?.cancel().catch(()=>{}),new MessageResponse({cancelTurn:async e=>await this.cancel({turnId:e}),createStream:e=>this.#i(n,t,r,e),deliveryId:r,sessionId:this.#t.sessionId})}async*#i(e,t,n,r){let i=0,a=n===void 0,o=!1,s=new Set;try{for await(let c of r??this.#s({headers:t.headers,keepAlive:!0,signal:t.signal,startIndex:e,streamReconnectPolicy:t.streamReconnectPolicy})){if(i+=1,n!==void 0){let e=c.meta?.deliveryIds?.includes(n)===!0,t=c.type===`session.failed`||c.type===`session.completed`;if(!e&&t&&(!a||c.type===`session.completed`))throw Error(`The session ended before the accepted message reached its turn boundary.`);if(!a&&!e||!t&&c.meta?.deliveryIds!==void 0&&!e)continue;a=!0}if(updatePendingAuthorizations(s,c),o=isCurrentTurnBoundaryEvent(c)&&(c.type!==`session.waiting`||s.size===0),yield c,o)break}if(n!==void 0&&!o&&!t.signal?.aborted)throw Error(`The response stream ended before the accepted message reached its turn boundary.`)}finally{this.#o(e+i)}}async*#a(e){let t=e?.startIndex??this.#t.streamIndex,n=0;for await(let r of this.#s({follow:e?.follow,headers:e?.headers,keepAlive:e?.keepAlive,onCaughtUp:e?.onCaughtUp,resolveHeaders:e?.resolveHeaders,resolveReconnectPolicy:e?.resolveReconnectPolicy,signal:e?.signal,startIndex:t,streamReconnectPolicy:e?.streamReconnectPolicy}))n+=1,t>=0&&this.#o(t+n),yield r}#o(e){this.#t={sessionId:this.#t.sessionId,streamIndex:Math.max(this.#t.streamIndex,e)}}#s(e){return followStreamIterable({onCaughtUp:e.onCaughtUp,follow:e.follow,host:this.#e.host,keepAlive:e.keepAlive,resolveHeaders:()=>this.#e.resolveHeaders(e.resolveHeaders?.()??e.headers),redirect:this.#e.redirect,sessionId:this.#t.sessionId,signal:e.signal,startIndex:e.startIndex,streamReconnectPolicy:e.streamReconnectPolicy,resolveReconnectPolicy:e.resolveReconnectPolicy})}};function followClientSession(e,t){return e[followSession](t)}async function postSessionSend(e,t,n){let r=Date.now()+2e4,i=250;for(;;){try{return await postTurn(e,t,n,!1)}catch(e){if(!isSessionNotReady(e))throw e;let t=r-Date.now();if(t<=0)throw e;await sleep(Math.min(i,t),n.signal)}n.signal?.throwIfAborted(),i=Math.min(i*2,2e3)}}async function postCreateSession(e,t){let n=await e.resolveHeaders(t.headers),r=await fetch(createClientUrl(e.host,EVE_SESSION_ROUTE_PATH),{headers:n,method:`POST`,redirect:e.redirect,signal:t.signal??null});if(!r.ok){let e=await r.text();throw new ClientError(r.status,e,r.headers)}return r}function isSessionNotReady(e){return e instanceof ClientError&&e.status===409&&e.code===`session_not_ready`}async function postTurn(e,t,n,r){let i=createMessageBody(n,r);if(i===null)throw Error(r?`Creating a session requires a non-empty message.`:`A session turn requires a non-empty message or inputResponses.`);let a=await e.resolveHeaders(n.headers);a.set(`content-type`,`application/json`);let o=await fetch(createClientUrl(e.host,t),{body:JSON.stringify(i),headers:a,method:`POST`,redirect:e.redirect,signal:n.signal??null});if(!o.ok){let e=await o.text();throw new ClientError(o.status,e,o.headers)}return o}async function readAcceptedMessage(e,t){let n=await e.json(),r=(typeof n.sessionId==`string`?n.sessionId:void 0)??e.headers.get(EVE_SESSION_ID_HEADER)?.trim()??t;if(!r)throw Error(`Message route did not return a session id.`);return{sessionId:r,deliveryId:typeof n.deliveryId==`string`&&n.deliveryId.length>0?n.deliveryId:void 0}}function createMessageBody(e,t){let n={};e.message!==void 0&&(n.message=e.message),e.inputResponses!==void 0&&e.inputResponses.length>0&&(n.inputResponses=e.inputResponses),!t&&e.message!==void 0&&e.turnPolicy!==void 0&&(n.turnPolicy=e.turnPolicy),e.message!==void 0&&e.taskDeliveryPolicy!==void 0&&(n.taskDeliveryPolicy=e.taskDeliveryPolicy),e.clientContext!==void 0&&(n.clientContext=e.clientContext);let r=serializeOutputSchema(e.outputSchema);return r!==void 0&&(n.outputSchema=r),t&&n.message===void 0||n.message===void 0&&n.inputResponses===void 0?null:n}export{ClientSession,followClientSession};