eve 0.67.2 → 0.68.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/src/channel/types.d.ts +3 -0
  3. package/dist/src/cli/dev/command-options.d.ts +1 -0
  4. package/dist/src/cli/dev/command.js +1 -1
  5. package/dist/src/cli/dev/local-server-process.js +1 -1
  6. package/dist/src/cli/dev/tui/tui.js +1 -1
  7. package/dist/src/compiled/.vendor-stamp.json +1 -1
  8. package/dist/src/compiled/@photon-ai/chat-adapter-imessage/index.js +55 -55
  9. package/dist/src/compiled/@vercel/blob/index.js +1 -1
  10. package/dist/src/compiled/@vercel/oidc/index.js +1 -1
  11. package/dist/src/compiled/@workflow/world-vercel/index.js +1 -1
  12. package/dist/src/compiler/extension-compatibility.d.ts +6 -6
  13. package/dist/src/compiler/extension-compatibility.js +1 -1
  14. package/dist/src/computer-use/extension/extension.d.ts +2 -0
  15. package/dist/src/computer-use/extension/extension.js +1 -0
  16. package/dist/src/computer-use/extension/lib/command-failure.d.ts +7 -0
  17. package/dist/src/computer-use/extension/lib/command-failure.js +2 -0
  18. package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-sandbox.js +1 -1
  19. package/dist/src/computer-use/extension/lib/sandbox.d.ts +1 -0
  20. package/dist/src/computer-use/extension/lib/sandbox.js +1 -0
  21. package/dist/src/computer-use/extension/lib/shell.d.ts +1 -0
  22. package/dist/src/computer-use/extension/lib/shell.js +1 -0
  23. package/dist/src/computer-use/tools.d.ts +1 -0
  24. package/dist/src/computer-use/tools.js +1 -0
  25. package/dist/src/context/dynamic-tool-lifecycle.d.ts +1 -1
  26. package/dist/src/context/dynamic-tool-lifecycle.js +1 -1
  27. package/dist/src/context/hook-lifecycle.d.ts +4 -3
  28. package/dist/src/context/hook-lifecycle.js +1 -1
  29. package/dist/src/execution/continuation-conflict-step.js +1 -1
  30. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  31. package/dist/src/execution/proxied-deliver-step.js +1 -1
  32. package/dist/src/execution/publish-channel-event.js +1 -1
  33. package/dist/src/execution/session/timeout-steps.js +1 -1
  34. package/dist/src/execution/session/turn-event-handler.d.ts +27 -0
  35. package/dist/src/execution/session/turn-event-handler.js +1 -0
  36. package/dist/src/execution/session/turn-step.js +1 -1
  37. package/dist/src/execution/task-input-response-route.js +1 -1
  38. package/dist/src/execution/tasks/child/notify.js +1 -1
  39. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  40. package/dist/src/execution/tools/ask-question-workflow.js +1 -1
  41. package/dist/src/execution/tools/connection-search.js +1 -1
  42. package/dist/src/execution/tools/sleep-workflow.js +1 -1
  43. package/dist/src/execution/tools/subagent/emit-event-step.js +1 -1
  44. package/dist/src/execution/tools/workflow/answer.d.ts +4 -1
  45. package/dist/src/execution/tools/workflow/answer.js +1 -1
  46. package/dist/src/execution/workflow-runtime.js +1 -1
  47. package/dist/src/extensions/code/extension/lib/sandbox.d.ts +3 -2
  48. package/dist/src/extensions/code/extension/lib/sandbox.js +1 -1
  49. package/dist/src/extensions/code/extension/lib/signed-commit.d.ts +1 -1
  50. package/dist/src/extensions/code/extension/lib/signed-commit.js +2 -2
  51. package/dist/src/extensions/code/tools.d.ts +2 -1
  52. package/dist/src/extensions/code/tools.js +1 -1
  53. package/dist/src/harness/tool-loop.js +2 -2
  54. package/dist/src/instrumentation/ai-sdk-hook-bridge.js +1 -1
  55. package/dist/src/instrumentation/lifecycle.d.ts +2 -2
  56. package/dist/src/instrumentation/lifecycle.js +1 -1
  57. package/dist/src/internal/application/package.js +1 -1
  58. package/dist/src/internal/nitro/dev-runtime-artifacts-retention.d.ts +2 -2
  59. package/dist/src/internal/nitro/dev-runtime-artifacts-retention.js +1 -1
  60. package/dist/src/internal/nitro/dev-runtime-artifacts.d.ts +2 -4
  61. package/dist/src/internal/nitro/dev-runtime-artifacts.js +1 -1
  62. package/dist/src/internal/nitro/dev-runtime-generation-metadata.d.ts +13 -0
  63. package/dist/src/internal/nitro/dev-runtime-generation-metadata.js +1 -0
  64. package/dist/src/internal/nitro/development-generation.d.ts +2 -0
  65. package/dist/src/internal/nitro/development-generation.js +1 -1
  66. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.d.ts +1 -0
  67. package/dist/src/internal/nitro/host/dev-authored-rebuild-coordinator.js +1 -1
  68. package/dist/src/internal/nitro/host/dev-workflow-world-setup.d.ts +1 -0
  69. package/dist/src/internal/nitro/host/dev-workflow-world-setup.js +1 -1
  70. package/dist/src/internal/nitro/host/start-development-server.js +1 -1
  71. package/dist/src/internal/nitro/host/types.d.ts +2 -0
  72. package/dist/src/internal/workflow/cancel-expired-development-run.d.ts +2 -0
  73. package/dist/src/internal/workflow/cancel-expired-development-run.js +1 -0
  74. package/dist/src/internal/workflow/development-runtime-compatibility.d.ts +12 -0
  75. package/dist/src/internal/workflow/development-runtime-compatibility.js +1 -0
  76. package/dist/src/internal/workflow/development-world-client.js +1 -1
  77. package/dist/src/internal/workflow/development-world-protocol.d.ts +9 -0
  78. package/dist/src/internal/workflow/development-world-server.d.ts +2 -0
  79. package/dist/src/internal/workflow/development-world-server.js +1 -1
  80. package/dist/src/internal/workflow/is-inactive-workflow-run-error.d.ts +2 -0
  81. package/dist/src/internal/workflow/is-inactive-workflow-run-error.js +1 -0
  82. package/dist/src/public/definitions/hook.d.ts +12 -0
  83. package/dist/src/runtime/connections/mcp-client.d.ts +7 -0
  84. package/dist/src/runtime/connections/mcp-client.js +1 -1
  85. package/dist/src/self-modification/extension/subagents/agent/tools/search_traces.js +1 -1
  86. package/dist/src/setup/boxes/model-capabilities.d.ts +2 -2
  87. package/dist/src/setup/boxes/model-capabilities.js +1 -1
  88. package/dist/src/setup/integrations/web/setup.d.ts +0 -2
  89. package/dist/src/setup/integrations/web/setup.js +3 -3
  90. package/dist/src/setup/scaffold/create/project.js +1 -1
  91. package/dist/src/setup/scaffold/create/web-template.d.ts +1 -1
  92. package/dist/src/setup/scaffold/create/web-template.js +1 -1
  93. package/dist/src/shared/connection-types.d.ts +5 -0
  94. package/dist/src/shared/gateway-model-catalog.d.ts +25 -2
  95. package/dist/src/shared/gateway-model-catalog.js +1 -1
  96. package/dist/src/subagents/parent-notification.js +1 -1
  97. package/dist/src/tasks/types.d.ts +2 -0
  98. package/dist/src/tools/definition.d.ts +8 -0
  99. package/docs/concepts/project-structure.mdx +1 -1
  100. package/docs/guides/auth-and-route-protection.md +1 -1
  101. package/docs/guides/deployment/vercel.mdx +1 -1
  102. package/docs/guides/dynamic-capabilities.md +10 -7
  103. package/docs/guides/hooks.md +34 -2
  104. package/docs/install-integrations.mdx +1 -1
  105. package/docs/reference/cli.md +36 -15
  106. package/docs/tools/human-in-the-loop.md +2 -0
  107. package/package.json +24 -3
  108. package/dist/src/shared/boundary-hook-error.d.ts +0 -4
  109. package/dist/src/shared/boundary-hook-error.js +0 -1
  110. /package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-driver-source.d.ts +0 -0
  111. /package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-driver-source.js +0 -0
  112. /package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use-sandbox.d.ts +0 -0
  113. /package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use.d.ts +0 -0
  114. /package/dist/src/{extensions/code → computer-use}/extension/lib/computer-use.js +0 -0
  115. /package/dist/src/{extensions/code → computer-use}/extension/tools/computer_use.d.ts +0 -0
  116. /package/dist/src/{extensions/code → computer-use}/extension/tools/computer_use.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # eve
2
2
 
3
+ ## 0.68.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 52a18ac: Computer use moves out of `eve/extensions/code` into its own built-in extension, `eve/computer-use`. Mounting the code extension no longer adds `computer_use`, so agents without a desktop stop sending its schema on every request. Agents that use computer use should mount `eve/computer-use` next to the code extension; mounted as `agent/extensions/computer-use.ts`, the tool is named `computer-use__computer_use`.
8
+
9
+ The sandbox helpers are now exported from `eve/computer-use/sandbox` and the tool from `eve/computer-use/tools`. The old `eve/extensions/code/sandbox` and `eve/extensions/code/tools` exports still work but are deprecated.
10
+ - 2cfcecc: A stream-event hook that throws no longer fails the turn or session. eve logs the failure with the hook and event identifiers, runs the remaining subscribers, and continues execution, including for `turn.started` and `step.started` hooks, which previously ended the turn with `EVENT_HANDLER_FAILED`.
11
+
12
+ ### Patch Changes
13
+
14
+ - 2998dc1: Turn-scoped dynamic tools now restore their durable callbacks when a turn resumes in a different process, so tools resolved at `turn.started` remain callable throughout the turn.
15
+ - 1cfe7e7: Include the authenticated responder identity in answered workflow-tool `ctx.ask()` responses.
16
+ - 0ac01f6: Local development leaves previous invocations' workflows dormant by default. `eve dev --resume` attempts to recover runs with valid retained snapshots even when framework or authored workflow sources changed; replay can fail after executing work. Missing snapshots are cancelled, while runs with malformed generation metadata remain stored and dormant. Requests addressed to dormant conversations fail instead of appearing accepted without a response.
17
+ - cb5478f: Tools resolved through `defineDynamic` now emit their `label.start`, `label.delta`, and `label.complete` presentation on `actions.requested` and `action.result`, matching static tools.
18
+ - c94736a: Filter `/model` reasoning choices to the selected model's supported effort levels from the AI Gateway catalog.
19
+ - e590bd7: Record provider-call retries as distinct model-call spans and terminalize failed provider attempts.
20
+ - 2cfcecc: Hooks can call `ctx.cancel()` to cancel the running turn after the remaining subscribers for the event run. The turn then settles like `session.cancel()`, with `turn.cancelled` followed by `session.waiting`.
21
+ - e574dd3: MCP tools found through `connection_search` now pass the model only their result's `content`, not the full MCP result with its duplicated `structuredContent`, so history grows about half as fast on MCP-heavy sessions.
22
+ - c004ac8: `eve dev` now cancels unfinished local Workflow runs whose development snapshots are gone, instead of repeatedly reporting them as startup errors. Runs with retained snapshots still recover across restarts, and cancelled runs record why they can no longer resume.
23
+ - dabb8bd: Web Chat's Vercel services setup no longer requires linking a Vercel project. Use `pnpm dev:all` to run the service graph locally; it uses linked project settings when available.
24
+ - 7ed1d70: `gh-signed-commit` in `eve/extensions/code` now commits staged files larger than 1 MiB, such as monorepo lockfiles, instead of failing with `spawnSync git ENOBUFS`.
25
+ - d6f5f04: Update the generated Web Chat app from Next.js 16.3.0-preview.6 to 16.3.6.
26
+
3
27
  ## 0.67.2
4
28
 
5
29
  ### Patch Changes
@@ -4,6 +4,7 @@ import type { MessageStreamEvent, UnstampedMessageStreamEvent } from "#protocol/
4
4
  import type { CancelTurnResult as ProtocolCancelTurnResult } from "#protocol/cancel-turn.js";
5
5
  import type { RuntimeSubagentChildResult, RuntimeSubagentDispatchFailure, RuntimeToolResultActionResult } from "#shared/action-types.js";
6
6
  import type { InputRequest, InputResponse } from "#shared/input.js";
7
+ import type { ToolInputResponseResponder } from "#tools/definition.js";
7
8
  import type { ChannelAdapter } from "#channel/adapter.js";
8
9
  import type { AgentLimitsDefinition } from "#shared/agent-definition.js";
9
10
  import type { JsonObject } from "#shared/json.js";
@@ -140,6 +141,8 @@ export interface TurnCaller {
140
141
  */
141
142
  export interface DeliverPayload {
142
143
  readonly inputResponses?: readonly InputResponse[];
144
+ /** Authenticated identity associated with an internal forwarded input response. */
145
+ readonly responder?: ToolInputResponseResponder;
143
146
  readonly message?: string | UserContent;
144
147
  readonly context?: readonly string[];
145
148
  readonly outputSchema?: JsonObject;
@@ -14,6 +14,7 @@ export interface DevelopmentCliOptions {
14
14
  name?: string;
15
15
  port?: number;
16
16
  reasoning?: TerminalPartDisplayMode;
17
+ resume?: boolean;
17
18
  subagents?: TerminalPartDisplayMode;
18
19
  tools?: TerminalPartDisplayMode;
19
20
  ui?: boolean;
@@ -1 +1 @@
1
- import{createDevBootProgressReporter}from"./boot-progress.js";import{resolveDevUiMode,resolveTuiDisplayOptions}from"./ui-options.js";import{runInteractiveDevelopmentUi}from"./run-interactive-ui.js";import{parseDevelopmentServerUrl}from"./url.js";import{parseDevelopmentHeaderOption,resolveDevelopmentUrlTarget}from"./url-target.js";import{waitForServerOrStop,waitForUiOrServer}from"./wait-for-ui.js";import{parseContextSizeOption,parseDisplayMode,parseLogsMode,parsePortOption,parseStatsMode}from"../option-parsers.js";import{InvalidArgumentError,Option}from"#compiled/commander/index.js";import{agentCommand}from"#cli/agent-command.js";import{FORCED_EXIT_BACKSTOP_MS,installShutdownSignal}from"#cli/shutdown.js";import{createCliTheme,renderCliTaggedLine}from"#cli/ui/output.js";import{eveCliBanner}from"#cli/banner.js";import{startCliLiveRow}from"#cli/ui/live-row.js";import{inspectVerifiedRemoteAgent}from"#setup/verified-remote-agent.js";import{noDevelopmentExtensions}from"#compiler/development-extensions.js";async function loadDevelopmentTuiModule(){return await import(`#cli/dev/tui/tui.js`)}async function loadStartHost(){return(await import(`#cli/dev/local-server-process.js`)).createDevelopmentServer}function hasInteractiveTerminal(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function registerRemoteCommands(e){let{applicationContext:t,logger:n,program:r,runtime:i,telemetry:a}=e,o=createCliTheme();r.command(`info`).description(`Inspect an existing eve agent.`).requiredOption(`-u, --url <url>`,`Existing eve agent URL`,parseDevelopmentServerUrl).option(`-H, --header <header>`,`Request header for the URL target, in "Name: value" form (repeatable)`,parseDevelopmentHeaderOption).option(`--json`,`Output as JSON`).action(async e=>{let r=resolveDevelopmentUrlTarget({header:e.header,url:e.url},void 0),i=await inspectVerifiedRemoteAgent({headers:r.headers,prompter:process.stdin.isTTY&&process.stdout.isTTY?(await import(`#setup/prompter.js`)).createPrompter():void 0,serverUrl:r.serverUrl,workspaceRoot:t.root});n.log(JSON.stringify(i.info,null,e.json===!0?0:2))}),r.command(`connect`).description(`Open the terminal UI for an existing eve agent.`).requiredOption(`-u, --url <url>`,`Existing eve agent URL`,parseDevelopmentServerUrl).option(`-H, --header <header>`,`Request header for the URL target, in "Name: value" form (repeatable)`,parseDevelopmentHeaderOption).option(`--name <name>`,`Title shown in the terminal UI`).option(`--input <text>`,`Pre-fill the prompt input`).option(`--tools <mode>`,`How tool calls render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--reasoning <mode>`,`How reasoning renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--subagents <mode>`,`How subagent sections render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--connection-auth <mode>`,`How connection authorization renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--assistant-response-stats <mode>`,`Assistant header statistic: tokens | tokensPerSecond`,parseStatsMode).option(`--context-size <tokens>`,`Model context window size, shown as a usage percentage`,parseContextSizeOption).option(`--logs <mode>`,`Which server/agent logs to show: all | stderr | sandbox | none`,parseLogsMode).action(async e=>{let r=resolveDevelopmentUrlTarget(e,void 0),s=resolveDevUiMode({options:e,interactive:hasInteractiveTerminal()});if(s===`headless`)throw new InvalidArgumentError(`eve remote connect requires an interactive terminal.`);a.trackDevContext({target:`remote`,ui:s});let{loadDevelopmentEnvironmentFiles:c}=await import(`#cli/dev/environment.js`);await c(t.root),n.log(`↗ remote agent ${o.info(new URL(r.serverUrl).host)}`),n.log(``);let l=installShutdownSignal({exitAfterMs:FORCED_EXIT_BACKSTOP_MS});try{await runInteractiveDevelopmentUi({applicationRoot:t.root,lifecycle:l,onOnboardingStep:a.trackSetupStep,onOnboardingTerminal:a.trackSetupTerminal,options:e,remoteTarget:r,runDevelopmentTui:i.runDevelopmentTui,server:{serverUrl:r.serverUrl}})}finally{l.dispose()}})}function registerDevelopmentCommand(e){let{applicationContext:t,logger:n,program:r,runtime:i,telemetry:a}=e,o=createCliTheme();agentCommand(r.command(`dev`),t).description(`Start the local eve development server.`).option(`--host <host>`,`Host interface to bind`).option(`--port <port>`,`Port to listen on (defaults to $PORT, then 2000)`,parsePortOption).option(`--no-ui`,`Start the server without an interactive UI`).option(`--no-default-extensions`,`Do not mount default development extensions`).option(`--name <name>`,`Title shown in the terminal UI (defaults to the app folder name)`).option(`--input <text>`,`Pre-fill the prompt input`).addOption(new Option(`--onboard`,`Start fresh-agent onboarding`).hideHelp()).option(`--tools <mode>`,`How tool calls render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--reasoning <mode>`,`How reasoning renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--subagents <mode>`,`How subagent sections render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--connection-auth <mode>`,`How connection authorization renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--assistant-response-stats <mode>`,`Assistant header statistic: tokens | tokensPerSecond`,parseStatsMode).option(`--context-size <tokens>`,`Model context window size, shown as a usage percentage`,parseContextSizeOption).option(`--logs <mode>`,`Which server/agent logs to show: all | stderr | sandbox | none`,parseLogsMode).action(async e=>{let r=hasInteractiveTerminal(),s=resolveDevUiMode({options:e,interactive:r});if(a.trackDevContext({target:`local`,ui:s}),s===`headless`&&n.log(eveCliBanner()),e.input!==void 0&&s===`headless`)throw new InvalidArgumentError(`--input requires the interactive UI.`);let c=s===`tui`?startCliLiveRow(n,{elapsed:!0}):void 0,l=createDevBootProgressReporter(c);c?.update(`Starting your agent`);let u,d,closeServer=()=>u===void 0?Promise.resolve():(d??=u.close(),d.catch(()=>void 0),d),f=installShutdownSignal({exitAfterMs:FORCED_EXIT_BACKSTOP_MS,onStop:()=>{closeServer()}}),p,m=s===`tui`&&i.runDevelopmentTui===void 0?loadDevelopmentTuiModule().then(n=>(l({type:`before-first-paint`}),n.startDevelopmentTuiStartup({appRoot:t.root,initialInput:e.input,onExitRequest:f.requestStop,...resolveTuiDisplayOptions(e)}))):void 0;try{u=(i.startHost??await loadStartHost())(t.root,{...e.defaultExtensions===!1?{developmentExtensions:noDevelopmentExtensions()}:{},existing:s===`tui`?`attach-if-unconfigured`:`reject`,host:e.host,onBootProgress:l,port:e.port});let[c,d]=await Promise.all([Promise.race([u.start().then(e=>({handle:e})),f.stopped.then(()=>({handle:void 0}))]),m]),h=c.handle;if(h===void 0){p=d,await p?.shutdown();return}if(p=d,s!==`tui`&&n.log(renderCliTaggedLine(o,{message:`server listening at ${h.url}`,tag:`dev`,tone:`success`})),s===`headless`){e.ui!==!1&&!r&&n.log(renderCliTaggedLine(o,{message:`Interactive UI disabled because the current terminal is not a TTY.`,tag:`dev`,tone:`warning`})),await waitForServerOrStop(u,f);return}await waitForUiOrServer({handle:h,lifecycle:f,server:u,runUi:async()=>await runInteractiveDevelopmentUi({applicationRoot:t.root,lifecycle:f,onOnboardingStep:a.trackSetupStep,onOnboardingTerminal:a.trackSetupTerminal,options:e,report:l,runDevelopmentTui:i.runDevelopmentTui,server:{appRoot:h.appRoot,serverUrl:h.url},startup:p})})}finally{c?.stop(),p===void 0&&(p=await m?.catch(()=>void 0),await p?.shutdown()),await closeServer(),f.dispose()}})}export{registerDevelopmentCommand,registerRemoteCommands};
1
+ import{createDevBootProgressReporter}from"./boot-progress.js";import{resolveDevUiMode,resolveTuiDisplayOptions}from"./ui-options.js";import{runInteractiveDevelopmentUi}from"./run-interactive-ui.js";import{parseDevelopmentServerUrl}from"./url.js";import{parseDevelopmentHeaderOption,resolveDevelopmentUrlTarget}from"./url-target.js";import{waitForServerOrStop,waitForUiOrServer}from"./wait-for-ui.js";import{parseContextSizeOption,parseDisplayMode,parseLogsMode,parsePortOption,parseStatsMode}from"../option-parsers.js";import{InvalidArgumentError,Option}from"#compiled/commander/index.js";import{agentCommand}from"#cli/agent-command.js";import{FORCED_EXIT_BACKSTOP_MS,installShutdownSignal}from"#cli/shutdown.js";import{createCliTheme,renderCliTaggedLine}from"#cli/ui/output.js";import{eveCliBanner}from"#cli/banner.js";import{startCliLiveRow}from"#cli/ui/live-row.js";import{inspectVerifiedRemoteAgent}from"#setup/verified-remote-agent.js";import{noDevelopmentExtensions}from"#compiler/development-extensions.js";async function loadDevelopmentTuiModule(){return await import(`#cli/dev/tui/tui.js`)}async function loadStartHost(){return(await import(`#cli/dev/local-server-process.js`)).createDevelopmentServer}function hasInteractiveTerminal(){return!!(process.stdin.isTTY&&process.stdout.isTTY)}function registerRemoteCommands(e){let{applicationContext:t,logger:n,program:r,runtime:i,telemetry:a}=e,o=createCliTheme();r.command(`info`).description(`Inspect an existing eve agent.`).requiredOption(`-u, --url <url>`,`Existing eve agent URL`,parseDevelopmentServerUrl).option(`-H, --header <header>`,`Request header for the URL target, in "Name: value" form (repeatable)`,parseDevelopmentHeaderOption).option(`--json`,`Output as JSON`).action(async e=>{let r=resolveDevelopmentUrlTarget({header:e.header,url:e.url},void 0),i=await inspectVerifiedRemoteAgent({headers:r.headers,prompter:process.stdin.isTTY&&process.stdout.isTTY?(await import(`#setup/prompter.js`)).createPrompter():void 0,serverUrl:r.serverUrl,workspaceRoot:t.root});n.log(JSON.stringify(i.info,null,e.json===!0?0:2))}),r.command(`connect`).description(`Open the terminal UI for an existing eve agent.`).requiredOption(`-u, --url <url>`,`Existing eve agent URL`,parseDevelopmentServerUrl).option(`-H, --header <header>`,`Request header for the URL target, in "Name: value" form (repeatable)`,parseDevelopmentHeaderOption).option(`--name <name>`,`Title shown in the terminal UI`).option(`--input <text>`,`Pre-fill the prompt input`).option(`--tools <mode>`,`How tool calls render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--reasoning <mode>`,`How reasoning renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--subagents <mode>`,`How subagent sections render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--connection-auth <mode>`,`How connection authorization renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--assistant-response-stats <mode>`,`Assistant header statistic: tokens | tokensPerSecond`,parseStatsMode).option(`--context-size <tokens>`,`Model context window size, shown as a usage percentage`,parseContextSizeOption).option(`--logs <mode>`,`Which server/agent logs to show: all | stderr | sandbox | none`,parseLogsMode).action(async e=>{let r=resolveDevelopmentUrlTarget(e,void 0),s=resolveDevUiMode({options:e,interactive:hasInteractiveTerminal()});if(s===`headless`)throw new InvalidArgumentError(`eve remote connect requires an interactive terminal.`);a.trackDevContext({target:`remote`,ui:s});let{loadDevelopmentEnvironmentFiles:c}=await import(`#cli/dev/environment.js`);await c(t.root),n.log(`↗ remote agent ${o.info(new URL(r.serverUrl).host)}`),n.log(``);let l=installShutdownSignal({exitAfterMs:FORCED_EXIT_BACKSTOP_MS});try{await runInteractiveDevelopmentUi({applicationRoot:t.root,lifecycle:l,onOnboardingStep:a.trackSetupStep,onOnboardingTerminal:a.trackSetupTerminal,options:e,remoteTarget:r,runDevelopmentTui:i.runDevelopmentTui,server:{serverUrl:r.serverUrl}})}finally{l.dispose()}})}function registerDevelopmentCommand(e){let{applicationContext:t,logger:n,program:r,runtime:i,telemetry:a}=e,o=createCliTheme();agentCommand(r.command(`dev`),t).description(`Start the local eve development server.`).option(`--host <host>`,`Host interface to bind`).option(`--port <port>`,`Port to listen on (defaults to $PORT, then 2000)`,parsePortOption).option(`--no-ui`,`Start the server without an interactive UI`).option(`--resume`,`Attempt recovery of retained runs from previous local dev invocations`).option(`--no-default-extensions`,`Do not mount default development extensions`).option(`--name <name>`,`Title shown in the terminal UI (defaults to the app folder name)`).option(`--input <text>`,`Pre-fill the prompt input`).addOption(new Option(`--onboard`,`Start fresh-agent onboarding`).hideHelp()).option(`--tools <mode>`,`How tool calls render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--reasoning <mode>`,`How reasoning renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--subagents <mode>`,`How subagent sections render: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--connection-auth <mode>`,`How connection authorization renders: full | collapsed | auto-collapsed | hidden`,parseDisplayMode).option(`--assistant-response-stats <mode>`,`Assistant header statistic: tokens | tokensPerSecond`,parseStatsMode).option(`--context-size <tokens>`,`Model context window size, shown as a usage percentage`,parseContextSizeOption).option(`--logs <mode>`,`Which server/agent logs to show: all | stderr | sandbox | none`,parseLogsMode).action(async e=>{let r=hasInteractiveTerminal(),s=resolveDevUiMode({options:e,interactive:r});if(a.trackDevContext({target:`local`,ui:s}),s===`headless`&&n.log(eveCliBanner()),e.input!==void 0&&s===`headless`)throw new InvalidArgumentError(`--input requires the interactive UI.`);let c=s===`tui`?startCliLiveRow(n,{elapsed:!0}):void 0,l=createDevBootProgressReporter(c);c?.update(`Starting your agent`);let u,d,closeServer=()=>u===void 0?Promise.resolve():(d??=u.close(),d.catch(()=>void 0),d),f=installShutdownSignal({exitAfterMs:FORCED_EXIT_BACKSTOP_MS,onStop:()=>{closeServer()}}),p,m=s===`tui`&&i.runDevelopmentTui===void 0?loadDevelopmentTuiModule().then(n=>(l({type:`before-first-paint`}),n.startDevelopmentTuiStartup({appRoot:t.root,initialInput:e.input,onExitRequest:f.requestStop,...resolveTuiDisplayOptions(e)}))):void 0;try{u=(i.startHost??await loadStartHost())(t.root,{...e.defaultExtensions===!1?{developmentExtensions:noDevelopmentExtensions()}:{},resume:e.resume,existing:s===`tui`?`attach-if-unconfigured`:`reject`,host:e.host,onBootProgress:l,port:e.port});let[c,d]=await Promise.all([Promise.race([u.start().then(e=>({handle:e})),f.stopped.then(()=>({handle:void 0}))]),m]),h=c.handle;if(h===void 0){p=d,await p?.shutdown();return}if(p=d,s!==`tui`&&n.log(renderCliTaggedLine(o,{message:`server listening at ${h.url}`,tag:`dev`,tone:`success`})),s===`headless`){e.ui!==!1&&!r&&n.log(renderCliTaggedLine(o,{message:`Interactive UI disabled because the current terminal is not a TTY.`,tag:`dev`,tone:`warning`})),await waitForServerOrStop(u,f);return}await waitForUiOrServer({handle:h,lifecycle:f,server:u,runUi:async()=>await runInteractiveDevelopmentUi({applicationRoot:t.root,lifecycle:f,onOnboardingStep:a.trackSetupStep,onOnboardingTerminal:a.trackSetupTerminal,options:e,report:l,runDevelopmentTui:i.runDevelopmentTui,server:{appRoot:h.appRoot,serverUrl:h.url},startup:p})})}finally{c?.stop(),p===void 0&&(p=await m?.catch(()=>void 0),await p?.shutdown()),await closeServer(),f.dispose()}})}export{registerDevelopmentCommand,registerRemoteCommands};
@@ -1 +1 @@
1
- import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{fork}from"node:child_process";import{fileURLToPath}from"node:url";import{EVE_DEV_ENV_FLAG}from"#internal/application/optional-package-install.js";const childPath=fileURLToPath(new URL(`./local-server-child.js`,import.meta.url)),DEV_SERVER_CLOSE_BUDGET_MS=800;function createDevelopmentServer(e,t={}){let n,r,i=!1,a=!1,o=Promise.withResolvers(),s=Promise.withResolvers();o.promise.catch(()=>void 0);let release=()=>{let e=n;e!==void 0&&(n=void 0,e.stdout?.destroy(),e.stderr?.destroy(),e.connected&&e.disconnect(),e.unref())};return{start:async()=>{if(n!==void 0)throw Error(`DevelopmentServer.start() was already called.`);let r={...process.env};await loadDevelopmentEnvironmentFiles(e),process.env[EVE_DEV_ENV_FLAG]??=`1`;let c=fork(childPath,[JSON.stringify({developmentExtensions:t.developmentExtensions,existing:t.existing,host:t.host,port:t.port})],{cwd:e,detached:!0,env:{...r,[EVE_DEV_ENV_FLAG]:`1`},stdio:[`ignore`,`pipe`,`pipe`,`ipc`]});return n=c,c.stdout?.on(`data`,e=>(t.output===`stderr`?process.stderr:process.stdout).write(e)),c.stderr?.on(`data`,e=>process.stderr.write(e)),new Promise((e,n)=>{let r=!1;c.once(`error`,n),c.once(`exit`,(e,t)=>{a=!0,s.resolve(),release(),r?i?o.resolve():o.reject(Error(`Development server exited unexpectedly (${String(e)}, ${String(t)}).`)):n(Error(`Development server exited during startup (${String(e)}, ${String(t)}).`))}),c.on(`message`,a=>{if(a.type===`progress`&&t.onBootProgress?.(a.event),a.type===`started`&&!r&&(r=!0,e(a.handle),a.handle.kind===`existing`&&(i=!0,release())),a.type===`failed`&&!r){r=!0;let e=Error(a.message);a.stack!==void 0&&(e.stack=a.stack),n(e)}})})},close(){if(r!==void 0)return r;let e=n;return e===void 0?Promise.resolve():(i=!0,r=(async()=>{e.connected&&e.send({type:`shutdown`}),!await terminatesWithin(e,s.promise,()=>a,550)&&(signalProcessGroup(e,`SIGTERM`),!await terminatesWithin(e,s.promise,()=>a,150)&&(signalProcessGroup(e,`SIGKILL`),await terminatesWithin(e,s.promise,()=>a,100),release()))})(),r)},wait:()=>o.promise}}async function terminatesWithin(e,t,n,r){let i=Date.now()+r;for(await settlesOrTimesOut(t,r);!hasTerminated(e,n())&&Date.now()<i;)await sleep(Math.min(25,i-Date.now()));return hasTerminated(e,n())}async function settlesOrTimesOut(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n!==void 0&&clearTimeout(n)}}function sleep(e){return new Promise(t=>setTimeout(t,e))}function hasTerminated(e,t){return t&&!isProcessGroupAlive(e)}function isProcessGroupAlive(e){if(process.platform===`win32`||e.pid===void 0)return!1;try{return process.kill(-e.pid,0),!0}catch{return!1}}function signalProcessGroup(e,t){if(process.platform!==`win32`&&e.pid!==void 0)try{process.kill(-e.pid,t);return}catch{}e.kill(t)}export{DEV_SERVER_CLOSE_BUDGET_MS,createDevelopmentServer};
1
+ import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{fork}from"node:child_process";import{fileURLToPath}from"node:url";import{EVE_DEV_ENV_FLAG}from"#internal/application/optional-package-install.js";const childPath=fileURLToPath(new URL(`./local-server-child.js`,import.meta.url)),DEV_SERVER_CLOSE_BUDGET_MS=800;function createDevelopmentServer(e,t={}){let n,r,i=!1,a=!1,o=Promise.withResolvers(),s=Promise.withResolvers();o.promise.catch(()=>void 0);let release=()=>{let e=n;e!==void 0&&(n=void 0,e.stdout?.destroy(),e.stderr?.destroy(),e.connected&&e.disconnect(),e.unref())};return{start:async()=>{if(n!==void 0)throw Error(`DevelopmentServer.start() was already called.`);let r={...process.env};await loadDevelopmentEnvironmentFiles(e),process.env[EVE_DEV_ENV_FLAG]??=`1`;let c=fork(childPath,[JSON.stringify({developmentExtensions:t.developmentExtensions,existing:t.existing,host:t.host,port:t.port,resume:t.resume})],{cwd:e,detached:!0,env:{...r,[EVE_DEV_ENV_FLAG]:`1`},stdio:[`ignore`,`pipe`,`pipe`,`ipc`]});return n=c,c.stdout?.on(`data`,e=>(t.output===`stderr`?process.stderr:process.stdout).write(e)),c.stderr?.on(`data`,e=>process.stderr.write(e)),new Promise((e,n)=>{let r=!1;c.once(`error`,n),c.once(`exit`,(e,t)=>{a=!0,s.resolve(),release(),r?i?o.resolve():o.reject(Error(`Development server exited unexpectedly (${String(e)}, ${String(t)}).`)):n(Error(`Development server exited during startup (${String(e)}, ${String(t)}).`))}),c.on(`message`,a=>{if(a.type===`progress`&&t.onBootProgress?.(a.event),a.type===`started`&&!r&&(r=!0,e(a.handle),a.handle.kind===`existing`&&(i=!0,release())),a.type===`failed`&&!r){r=!0;let e=Error(a.message);a.stack!==void 0&&(e.stack=a.stack),n(e)}})})},close(){if(r!==void 0)return r;let e=n;return e===void 0?Promise.resolve():(i=!0,r=(async()=>{e.connected&&e.send({type:`shutdown`}),!await terminatesWithin(e,s.promise,()=>a,550)&&(signalProcessGroup(e,`SIGTERM`),!await terminatesWithin(e,s.promise,()=>a,150)&&(signalProcessGroup(e,`SIGKILL`),await terminatesWithin(e,s.promise,()=>a,100),release()))})(),r)},wait:()=>o.promise}}async function terminatesWithin(e,t,n,r){let i=Date.now()+r;for(await settlesOrTimesOut(t,r);!hasTerminated(e,n())&&Date.now()<i;)await sleep(Math.min(25,i-Date.now()));return hasTerminated(e,n())}async function settlesOrTimesOut(e,t){let n;try{await Promise.race([e,new Promise(e=>{n=setTimeout(e,t)})])}finally{n!==void 0&&clearTimeout(n)}}function sleep(e){return new Promise(t=>setTimeout(t,e))}function hasTerminated(e,t){return t&&!isProcessGroupAlive(e)}function isProcessGroupAlive(e){if(process.platform===`win32`||e.pid===void 0)return!1;try{return process.kill(-e.pid,0),!0}catch{return!1}}function signalProcessGroup(e,t){if(process.platform!==`win32`&&e.pid!==void 0)try{process.kill(-e.pid,t);return}catch{}e.kill(t)}export{DEV_SERVER_CLOSE_BUDGET_MS,createDevelopmentServer};
@@ -1 +1 @@
1
- import{remoteHost}from"./target.js";import{createDevDiagnostics}from"../diagnostics.js";import{promptCommandsFor}from"./prompt-commands.js";import{probeMcpConnection}from"./mcp-connection-status.js";import{createPromptCommandHandler}from"./prompt-command-handler.js";import{formatRemoteAuthChallengeMessage}from"./remote-auth-result.js";import{TerminalRenderer}from"./terminal-renderer.js";import{EveTUIRunner}from"./runner.js";import{Client}from"#client/index.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{LOGIN_CONNECTION_COMMAND_OPTIONS}from"#setup/flows/model-login-options.js";import{toErrorMessage}from"#shared/errors.js";import{resolveDevelopmentOidcToken,resolveLinkedDevelopmentOidcToken}from"#services/dev-client/request-headers.js";import{isVercelAuthChallenge}from"#services/dev-client/vercel-auth-error.js";import{resolveVercelDeployment}from"#setup/vercel-deployment.js";import{appendUserAgentProduct}from"#internal/user-agent.js";import{resolveLocalDevelopmentClientOptions,resolveRemoteDevelopmentClientOptions}from"#services/dev-client/client-options.js";import{createDevelopmentCredentialGate}from"#services/dev-client/credential-gate.js";function inlineArgumentSuggestions(e){return async t=>{if(t===`loglevel`)return[{value:`all`,label:`all`,hint:`Show all captured logs`},{value:`stderr`,label:`stderr`,hint:`Show stderr logs only`},{value:`sandbox`,label:`sandbox`,hint:`Show sandbox logs only`},{value:`none`,label:`none`,hint:`Hide captured logs`}];if(t===`login`)return LOGIN_CONNECTION_COMMAND_OPTIONS.map(e=>({value:e.command,label:e.label}));if(t===`model`){let{gatewayModelCapabilities:e}=await import(`#setup/boxes/model-capabilities.js`),{fetchGatewayCatalog:t,modelOptionsFromCatalog:n}=await import(`#setup/boxes/select-model.js`),r=await t().catch(()=>void 0);return n(r).map(t=>{let n=e(r,t.value)?.reasoningLevels;return{value:t.value,label:t.value,hint:t.hint,...n===void 0||n.length===0?{}:{next:[{value:`default`,label:`default`},...n.map(e=>({value:e,label:e}))]}}})}let{browseRegistryCatalog:n}=await import(`#cli/commands/registry.js`);return(await n(e)).items.map(e=>({value:e.address,label:e.name,hint:e.description??e.address}))}}async function startDevelopmentTuiStartup(e){let t=await createDevDiagnostics(e.appRoot).catch(()=>void 0),n=new TerminalRenderer({...e,diagnostics:t,argumentSuggestions:inlineArgumentSuggestions(e.appRoot),onExitRequest:e.onExitRequest});return n.beginStartupDraft({initialDraft:e.initialInput,title:e.name??`eve`}),{diagnostics:t,renderer:n,finish:()=>n.finishStartupDraft(),async shutdown(){n.shutdown(),await t?.close()}}}function prepareRemoteTarget(e){return{target:e,credentials:createDevelopmentCredentialGate(e.serverUrl),resolveOidcToken:resolveDevelopmentOidcToken,resolveDeployment:t=>resolveVercelDeployment({workspaceRoot:e.workspaceRoot,host:remoteHost(e),signal:t})}}function prepareDevelopmentTarget(e){return e.kind===`local`?{kind:`local`,target:e}:{kind:`remote`,target:e,remote:prepareRemoteTarget(e)}}function withTuiUserAgent(e){let t=new Headers(e);return appendUserAgentProduct(t,`eve-tui/${resolveInstalledPackageInfo().version}`),Object.fromEntries(t.entries())}async function runDevelopmentTui(e){let{target:t,headers:n,initialInput:r,onboard:i,onOnboardingStep:a,onOnboardingTerminal:o,onBootProgress:s,lifecycle:c,startup:l,withExclusiveTerminal:u,...d}=e,f=prepareDevelopmentTarget(t),{serverUrl:p}=t,m={headers:withTuiUserAgent(n)},h=new Client(f.kind===`local`?resolveLocalDevelopmentClientOptions({...m,interactiveClient:!0,serverUrl:p,token:()=>resolveLinkedDevelopmentOidcToken(f.target.workspaceRoot)}):resolveRemoteDevelopmentClientOptions({...m,serverUrl:p,credentials:f.remote.credentials})),g={...d,client:h,serverUrl:p,promptCommandHandler:createPromptCommandHandler({target:t}),availablePromptCommands:promptCommandsFor(t.kind),...t.kind===`local`?{argumentSuggestions:inlineArgumentSuggestions(t.workspaceRoot)}:{},formatTransportError:e=>isVercelAuthChallenge(e)?formatRemoteAuthChallengeMessage(p):toErrorMessage(e)};f.kind===`local`?(g.appRoot=f.target.workspaceRoot,g.probeMcpConnection=probeMcpConnection):g.remote=f.remote,r!==void 0&&(g.initialInput=r),l!==void 0&&(g.renderer=l.renderer,g.startup=l),i!==void 0&&(g.onboard=i),a!==void 0&&(g.onOnboardingStep=a),o!==void 0&&(g.onOnboardingTerminal=o),s!==void 0&&(g.onBootProgress=s),c!==void 0&&(g.lifecycle=c),u!==void 0&&(g.withExclusiveTerminal=u);let _=l?.diagnostics??(f.kind===`local`?await createDevDiagnostics(f.target.workspaceRoot).catch(()=>void 0):void 0);_!==void 0&&(g.diagnostics=_);try{await new EveTUIRunner(g).run()}finally{await _?.close()}}export{runDevelopmentTui,startDevelopmentTuiStartup};
1
+ import{remoteHost}from"./target.js";import{createDevDiagnostics}from"../diagnostics.js";import{promptCommandsFor}from"./prompt-commands.js";import{probeMcpConnection}from"./mcp-connection-status.js";import{createPromptCommandHandler}from"./prompt-command-handler.js";import{formatRemoteAuthChallengeMessage}from"./remote-auth-result.js";import{TerminalRenderer}from"./terminal-renderer.js";import{EveTUIRunner}from"./runner.js";import{Client}from"#client/index.js";import{resolveInstalledPackageInfo}from"#internal/application/package.js";import{LOGIN_CONNECTION_COMMAND_OPTIONS}from"#setup/flows/model-login-options.js";import{toErrorMessage}from"#shared/errors.js";import{resolveDevelopmentOidcToken,resolveLinkedDevelopmentOidcToken}from"#services/dev-client/request-headers.js";import{isVercelAuthChallenge}from"#services/dev-client/vercel-auth-error.js";import{resolveVercelDeployment}from"#setup/vercel-deployment.js";import{appendUserAgentProduct}from"#internal/user-agent.js";import{resolveLocalDevelopmentClientOptions,resolveRemoteDevelopmentClientOptions}from"#services/dev-client/client-options.js";import{createDevelopmentCredentialGate}from"#services/dev-client/credential-gate.js";function inlineArgumentSuggestions(e){return async t=>{if(t===`loglevel`)return[{value:`all`,label:`all`,hint:`Show all captured logs`},{value:`stderr`,label:`stderr`,hint:`Show stderr logs only`},{value:`sandbox`,label:`sandbox`,hint:`Show sandbox logs only`},{value:`none`,label:`none`,hint:`Hide captured logs`}];if(t===`login`)return LOGIN_CONNECTION_COMMAND_OPTIONS.map(e=>({value:e.command,label:e.label}));if(t===`model`){let{gatewayModelCapabilities:e}=await import(`#setup/boxes/model-capabilities.js`),{fetchGatewayCatalog:t,modelOptionsFromCatalog:n}=await import(`#setup/boxes/select-model.js`),r=await t().catch(()=>void 0);return n(r).map(t=>{let n=e(r,t.value);return{value:t.value,label:t.value,hint:t.hint,...n?.reasoning?{next:[{value:`default`,label:`default`},...n.reasoningLevels.map(e=>({value:e,label:e}))]}:{}}})}let{browseRegistryCatalog:n}=await import(`#cli/commands/registry.js`);return(await n(e)).items.map(e=>({value:e.address,label:e.name,hint:e.description??e.address}))}}async function startDevelopmentTuiStartup(e){let t=await createDevDiagnostics(e.appRoot).catch(()=>void 0),n=new TerminalRenderer({...e,diagnostics:t,argumentSuggestions:inlineArgumentSuggestions(e.appRoot),onExitRequest:e.onExitRequest});return n.beginStartupDraft({initialDraft:e.initialInput,title:e.name??`eve`}),{diagnostics:t,renderer:n,finish:()=>n.finishStartupDraft(),async shutdown(){n.shutdown(),await t?.close()}}}function prepareRemoteTarget(e){return{target:e,credentials:createDevelopmentCredentialGate(e.serverUrl),resolveOidcToken:resolveDevelopmentOidcToken,resolveDeployment:t=>resolveVercelDeployment({workspaceRoot:e.workspaceRoot,host:remoteHost(e),signal:t})}}function prepareDevelopmentTarget(e){return e.kind===`local`?{kind:`local`,target:e}:{kind:`remote`,target:e,remote:prepareRemoteTarget(e)}}function withTuiUserAgent(e){let t=new Headers(e);return appendUserAgentProduct(t,`eve-tui/${resolveInstalledPackageInfo().version}`),Object.fromEntries(t.entries())}async function runDevelopmentTui(e){let{target:t,headers:n,initialInput:r,onboard:i,onOnboardingStep:a,onOnboardingTerminal:o,onBootProgress:s,lifecycle:c,startup:l,withExclusiveTerminal:u,...d}=e,f=prepareDevelopmentTarget(t),{serverUrl:p}=t,m={headers:withTuiUserAgent(n)},h=new Client(f.kind===`local`?resolveLocalDevelopmentClientOptions({...m,interactiveClient:!0,serverUrl:p,token:()=>resolveLinkedDevelopmentOidcToken(f.target.workspaceRoot)}):resolveRemoteDevelopmentClientOptions({...m,serverUrl:p,credentials:f.remote.credentials})),g={...d,client:h,serverUrl:p,promptCommandHandler:createPromptCommandHandler({target:t}),availablePromptCommands:promptCommandsFor(t.kind),...t.kind===`local`?{argumentSuggestions:inlineArgumentSuggestions(t.workspaceRoot)}:{},formatTransportError:e=>isVercelAuthChallenge(e)?formatRemoteAuthChallengeMessage(p):toErrorMessage(e)};f.kind===`local`?(g.appRoot=f.target.workspaceRoot,g.probeMcpConnection=probeMcpConnection):g.remote=f.remote,r!==void 0&&(g.initialInput=r),l!==void 0&&(g.renderer=l.renderer,g.startup=l),i!==void 0&&(g.onboard=i),a!==void 0&&(g.onOnboardingStep=a),o!==void 0&&(g.onOnboardingTerminal=o),s!==void 0&&(g.onBootProgress=s),c!==void 0&&(g.lifecycle=c),u!==void 0&&(g.withExclusiveTerminal=u);let _=l?.diagnostics??(f.kind===`local`?await createDevDiagnostics(f.target.workspaceRoot).catch(()=>void 0):void 0);_!==void 0&&(g.diagnostics=_);try{await new EveTUIRunner(g).run()}finally{await _?.close()}}export{runDevelopmentTui,startDevelopmentTuiStartup};
@@ -56,7 +56,7 @@
56
56
  "zod": "4.5.4",
57
57
  "zod-validation-error": "5.0.0"
58
58
  },
59
- "scriptHash": "1e89a7356b687014be1b3dd2000b50976522132468554b4609c30d6182915242",
59
+ "scriptHash": "e391a64092d28a4a33f1c5e49fb4a7ea05bb794f18ee2e7b6b7b8e92bb5f6049",
60
60
  "toolVersions": {
61
61
  "rolldown": "1.2.9",
62
62
  "typescript": "7.0.2"