eve 0.70.0 → 0.70.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 (67) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/src/cli/dev/tui/prompt-commands.d.ts +7 -7
  3. package/dist/src/cli/dev/tui/prompt-commands.js +1 -1
  4. package/dist/src/cli/dev/tui/runner.d.ts +2 -2
  5. package/dist/src/cli/dev/tui/runner.js +1 -1
  6. package/dist/src/cli/dev/tui/task-activity.d.ts +0 -17
  7. package/dist/src/cli/dev/tui/task-activity.js +1 -1
  8. package/dist/src/cli/dev/tui/task-records.d.ts +17 -0
  9. package/dist/src/cli/dev/tui/task-records.js +1 -0
  10. package/dist/src/cli/dev/tui/tool-presentation.js +1 -1
  11. package/dist/src/cli/dev/tui/transcript-parts.d.ts +10 -2
  12. package/dist/src/cli/dev/tui/transcript-parts.js +2 -2
  13. package/dist/src/cli/dev/tui/transcript.js +1 -1
  14. package/dist/src/compiled/.vendor-stamp.json +2 -2
  15. package/dist/src/compiled/{gray-matter → js-yaml}/LICENSE +2 -2
  16. package/dist/src/compiled/js-yaml/index.d.ts +12 -0
  17. package/dist/src/compiled/js-yaml/index.js +34 -0
  18. package/dist/src/context/serialize.d.ts +5 -1
  19. package/dist/src/context/serialize.js +1 -1
  20. package/dist/src/evals/loaders/yaml.js +1 -1
  21. package/dist/src/execution/dynamic-workflow/tool.js +1 -1
  22. package/dist/src/execution/legacy-remote-agent/protocol.d.ts +8 -0
  23. package/dist/src/execution/legacy-remote-agent/protocol.js +1 -1
  24. package/dist/src/execution/session/checkpoint-migrations.d.ts +23 -0
  25. package/dist/src/execution/session/checkpoint-migrations.js +1 -0
  26. package/dist/src/execution/session/entry.js +1 -1
  27. package/dist/src/execution/session/finalization.js +1 -1
  28. package/dist/src/execution/session/handoff-steps.d.ts +24 -5
  29. package/dist/src/execution/session/handoff-steps.js +1 -1
  30. package/dist/src/execution/session/handoff.d.ts +5 -3
  31. package/dist/src/execution/session/handoff.js +1 -1
  32. package/dist/src/execution/session/pending-turn-state.d.ts +2 -0
  33. package/dist/src/execution/session/pending-turn-state.js +1 -1
  34. package/dist/src/execution/session/program.js +1 -1
  35. package/dist/src/execution/session/turn-step-result.js +1 -1
  36. package/dist/src/execution/session/turn-step-types.d.ts +7 -0
  37. package/dist/src/execution/session/turn-step.js +1 -1
  38. package/dist/src/execution/session/turn.d.ts +14 -2
  39. package/dist/src/execution/session/turn.js +1 -1
  40. package/dist/src/execution/tools/agent-router-workflow.js +1 -1
  41. package/dist/src/internal/application/package.js +1 -1
  42. package/dist/src/internal/helpers/frontmatter.d.ts +24 -0
  43. package/dist/src/internal/helpers/frontmatter.js +1 -0
  44. package/dist/src/internal/helpers/markdown.js +1 -3
  45. package/dist/src/internal/nitro/host/create-application-nitro.js +1 -1
  46. package/dist/src/internal/nitro/host/nitro-bundler-config.js +1 -1
  47. package/dist/src/internal/node-esm-compat-banner.js +1 -1
  48. package/dist/src/public/definitions/state.d.ts +2 -0
  49. package/dist/src/public/definitions/state.js +1 -1
  50. package/dist/src/runtime/connections/openapi-spec.d.ts +1 -4
  51. package/dist/src/runtime/connections/openapi-spec.js +1 -1
  52. package/dist/src/setup/scaffold/create/project.js +1 -1
  53. package/dist/src/setup/scaffold/create/web-template.d.ts +4 -4
  54. package/dist/src/setup/scaffold/create/web-template.js +33 -26
  55. package/dist/src/subagents/callback-route.js +1 -1
  56. package/dist/src/subagents/parent-notification.d.ts +7 -7
  57. package/dist/src/subagents/parent-notification.js +1 -1
  58. package/dist/src/tools/provided/ask-question-workflow.js +1 -1
  59. package/dist/src/tools/provided/sleep-workflow.js +1 -1
  60. package/docs/concepts/execution-model-and-durability.mdx +3 -1
  61. package/docs/extensions.md +4 -3
  62. package/docs/guides/dev-tui.md +2 -2
  63. package/package.json +2 -2
  64. package/dist/src/compiled/gray-matter/index.d.ts +0 -62
  65. package/dist/src/compiled/gray-matter/index.js +0 -48
  66. package/dist/src/internal/helpers/gray-matter.d.ts +0 -25
  67. package/dist/src/internal/helpers/gray-matter.js +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # eve
2
2
 
3
+ ## 0.70.1
4
+
5
+ ### Patch Changes
6
+
7
+ - dc50f62: Hosted builds bundle faster: eve no longer re-parses its largest output chunk while adding the Node ESM compatibility banner, and Nitro no longer gzips every output file just to annotate the build log. The repeated `MISSING_CODE_SPLITTING_GROUP_DEBUG_NAME` warning also no longer appears in build logs.
8
+
9
+ eve no longer depends on `gray-matter`. Frontmatter and YAML files (skills, schedules, instructions, OpenAPI specs, and `loadYaml`) now parse with js-yaml 4, whose schema cannot evaluate code, and each deployed function is about 180 kB smaller. Frontmatter fences must be `---` or `---yaml`; other languages such as `---json` or `---js` now fail with an error instead of being parsed.
10
+ - 528483f: Session turns, cancellations, and session endings run fewer durable workflow steps, so replies arrive sooner, especially for subagent sessions and sessions that do not start background work.
11
+ - a53f280: Long-lived sessions now move to newer deployments after an eve upgrade: a deployment upgrades handoff checkpoints written by eve 0.66.0 and later instead of leaving the session on its old deployment, and stops idle subagent sessions those releases kept for reuse. Refused handoffs now log why on both deployments. Callbacks from remote agents to sessions created by eve 0.66–0.68 no longer fail with `Unsupported callback kind`.
12
+ - 73242f0: In the dev TUI, `/new` now starts a fresh session, and `/reset` is an alias of `/new`. `/clear` still clears the session's model-message history in place, and now confirms with "Session context cleared" instead of disappearing without feedback.
13
+ - 6ed6253: The dev TUI no longer shows a follow-up message to a working subagent as a second subagent: it reads `Message subagent` in the transcript, the task panel keeps one entry, and the task ends with a single line. Parallel `agent` tasks are now named `subagent:2` instead of `subagent(subagent:2)`, and sibling tasks in the panel get a blank row between them when there is room.
14
+ - dd50d12: Fix three scaffolded web chat issues: links in user messages no longer blend into the chat bubble, approve/deny buttons for tool calls now show below the tool row instead of hiding inside its collapsed details, and typing in the composer or a question answer no longer zooms the page on iOS.
15
+
3
16
  ## 0.70.0
4
17
 
5
18
  ### Minor Changes
@@ -2,7 +2,7 @@ export type PromptCommandExtensionName = "login" | "model" | "add" | "deploy";
2
2
  type PromptCommandTarget = "local" | "remote";
3
3
  /** The slash commands the prompt accepts. */
4
4
  export type PromptCommand = {
5
- type: "reset";
5
+ type: "new";
6
6
  } | {
7
7
  type: "cancel";
8
8
  } | {
@@ -76,11 +76,11 @@ declare const PROMPT_COMMAND_DEFINITIONS: ({
76
76
  } | {
77
77
  name: string;
78
78
  history: "keep";
79
- aliases: never[];
79
+ aliases: string[];
80
80
  description: string;
81
81
  takesArgument: false;
82
82
  build: () => {
83
- type: "reset";
83
+ type: "new";
84
84
  };
85
85
  targets: ("local" | "remote")[];
86
86
  argumentHint?: undefined;
@@ -88,7 +88,7 @@ declare const PROMPT_COMMAND_DEFINITIONS: ({
88
88
  } | {
89
89
  name: string;
90
90
  history: "keep";
91
- aliases: string[];
91
+ aliases: never[];
92
92
  description: string;
93
93
  takesArgument: false;
94
94
  build: () => {
@@ -243,9 +243,9 @@ export declare function promptCommandsFor(target: PromptCommandTarget): readonly
243
243
  /** Whether a command runs against this target — the one authority dispatch shares with discovery. */
244
244
  export declare function isPromptCommandAvailableFor(name: PromptCommandExtensionName, target: PromptCommandTarget): boolean;
245
245
  /**
246
- * Recognizes the slash commands the prompt accepts. `/reset` clears the
247
- * session and transcript; `/cancel` stops the running turn; `/clear` (and
248
- * `/new`) clears context; `/compact` queues context compaction; `/exit` (and
246
+ * Recognizes the slash commands the prompt accepts. `/new` (and `/reset`)
247
+ * starts a fresh session and transcript; `/cancel` stops the running turn;
248
+ * `/clear` clears context in place; `/compact` queues context compaction; `/exit` (and
249
249
  * `/quit`) terminate the TUI like Ctrl+C; extension commands are dispatched
250
250
  * outside the runner. Anything else — including unknown `/text` — is a normal
251
251
  * message.
@@ -1,2 +1,2 @@
1
- const PROMPT_COMMAND_DEFINITIONS=[{name:`model`,history:`omit`,aliases:[],description:`Choose a model, speed, and reasoning`,argumentHint:`[provider/model]`,takesArgument:!0,typeahead:{maxArguments:2,loadingLabel:`models`},build:e=>({type:`extension`,name:`model`,argument:e}),targets:[`local`]},{name:`reset`,history:`keep`,aliases:[],description:`Start a fresh session`,takesArgument:!1,build:()=>({type:`reset`}),targets:[`local`,`remote`]},{name:`clear`,history:`keep`,aliases:[`new`],description:`Clear the current session context`,takesArgument:!1,build:()=>({type:`clear`}),targets:[`local`,`remote`]},{name:`compact`,history:`keep`,aliases:[],description:`Compact the current session context`,takesArgument:!1,build:()=>({type:`compact`}),targets:[`local`,`remote`]},{name:`cancel`,history:`keep`,aliases:[],description:`Cancel the running turn`,takesArgument:!1,build:()=>({type:`cancel`}),targets:[`local`,`remote`]},{name:`login`,history:`omit`,aliases:[],description:`Connect a model provider`,argumentHint:`[connection]`,takesArgument:!0,typeahead:{maxArguments:1,loadingLabel:`connections`},build:e=>({type:`extension`,name:`login`,argument:e}),targets:[`local`]},{name:`add`,history:`omit`,aliases:[],description:`Add an integration from the registry`,takesArgument:!0,typeahead:{maxArguments:1,loadingLabel:`registry`},build:e=>({type:`extension`,name:`add`,argument:e}),targets:[`local`]},{name:`deploy`,history:`keep`,aliases:[],description:`Deploy the agent to Vercel`,takesArgument:!1,build:()=>({type:`extension`,name:`deploy`,argument:``}),targets:[`local`]},{name:`traces`,history:`omit`,aliases:[],description:`Open the local trace viewer`,argumentHint:`[trace]`,takesArgument:!0,build:e=>({type:`traces`,argument:e}),targets:[`local`]},{name:`loglevel`,history:`omit`,aliases:[],description:`Choose the minimum displayed log severity`,argumentHint:`[none|error|warn|debug|all]`,takesArgument:!0,typeahead:{maxArguments:1,loadingLabel:`log levels`},build:e=>({type:`loglevel`,argument:e}),targets:[`local`,`remote`]},{name:`info`,history:`omit`,aliases:[],description:`Show application and messaging information`,takesArgument:!1,build:()=>({type:`info`}),targets:[`local`]},{name:`help`,history:`omit`,aliases:[],description:`Show available commands`,takesArgument:!1,build:()=>({type:`help`}),targets:[`local`,`remote`]},{name:`exit`,history:`keep`,aliases:[`quit`],description:`Quit the TUI`,takesArgument:!1,build:()=>({type:`exit`}),targets:[`local`,`remote`]}],PROMPT_COMMANDS=PROMPT_COMMAND_DEFINITIONS;function promptCommandsFor(e){let t=PROMPT_COMMAND_DEFINITIONS.filter(t=>t.targets.some(t=>t===e));return e===`remote`?[...t.filter(e=>e.name===`help`),...t.filter(e=>e.name!==`help`)]:t}function isPromptCommandAvailableFor(e,t){return(PROMPT_COMMAND_DEFINITIONS.find(t=>t.name===e)?.targets)?.includes(t)??!1}function parsePromptCommand(e){let t=promptCommandSpec(e);return t===void 0?null:t.spec.build(t.argument)}function promptCommandSpec(e){let t=e.trim();if(t.startsWith(`/`))for(let e of PROMPT_COMMANDS)for(let n of[e.name,...e.aliases]){let r=`/${n}`;if(t===r)return{spec:e,argument:``};if(e.takesArgument&&t.startsWith(`${r} `))return{spec:e,argument:t.slice(r.length).trim()}}}function isPromptControlCommand(e){return parsePromptCommand(e)!==null}function formatPromptCommandHelp(e=PROMPT_COMMANDS){let t=e.map(e=>{let t=e.argumentHint===void 0?``:` ${e.argumentHint}`,n=e.aliases.map(e=>` (/${e})`).join(``);return{invocation:`/${e.name}${t}${n}`,description:e.description}}),n=Math.max(...t.map(e=>e.invocation.length))+2;return t.map(e=>e.invocation.padEnd(n)+e.description).join(`
1
+ const PROMPT_COMMAND_DEFINITIONS=[{name:`model`,history:`omit`,aliases:[],description:`Choose a model, speed, and reasoning`,argumentHint:`[provider/model]`,takesArgument:!0,typeahead:{maxArguments:2,loadingLabel:`models`},build:e=>({type:`extension`,name:`model`,argument:e}),targets:[`local`]},{name:`new`,history:`keep`,aliases:[`reset`],description:`Start a fresh session`,takesArgument:!1,build:()=>({type:`new`}),targets:[`local`,`remote`]},{name:`clear`,history:`keep`,aliases:[],description:`Clear the session context and keep the session`,takesArgument:!1,build:()=>({type:`clear`}),targets:[`local`,`remote`]},{name:`compact`,history:`keep`,aliases:[],description:`Compact the current session context`,takesArgument:!1,build:()=>({type:`compact`}),targets:[`local`,`remote`]},{name:`cancel`,history:`keep`,aliases:[],description:`Cancel the running turn`,takesArgument:!1,build:()=>({type:`cancel`}),targets:[`local`,`remote`]},{name:`login`,history:`omit`,aliases:[],description:`Connect a model provider`,argumentHint:`[connection]`,takesArgument:!0,typeahead:{maxArguments:1,loadingLabel:`connections`},build:e=>({type:`extension`,name:`login`,argument:e}),targets:[`local`]},{name:`add`,history:`omit`,aliases:[],description:`Add an integration from the registry`,takesArgument:!0,typeahead:{maxArguments:1,loadingLabel:`registry`},build:e=>({type:`extension`,name:`add`,argument:e}),targets:[`local`]},{name:`deploy`,history:`keep`,aliases:[],description:`Deploy the agent to Vercel`,takesArgument:!1,build:()=>({type:`extension`,name:`deploy`,argument:``}),targets:[`local`]},{name:`traces`,history:`omit`,aliases:[],description:`Open the local trace viewer`,argumentHint:`[trace]`,takesArgument:!0,build:e=>({type:`traces`,argument:e}),targets:[`local`]},{name:`loglevel`,history:`omit`,aliases:[],description:`Choose the minimum displayed log severity`,argumentHint:`[none|error|warn|debug|all]`,takesArgument:!0,typeahead:{maxArguments:1,loadingLabel:`log levels`},build:e=>({type:`loglevel`,argument:e}),targets:[`local`,`remote`]},{name:`info`,history:`omit`,aliases:[],description:`Show application and messaging information`,takesArgument:!1,build:()=>({type:`info`}),targets:[`local`]},{name:`help`,history:`omit`,aliases:[],description:`Show available commands`,takesArgument:!1,build:()=>({type:`help`}),targets:[`local`,`remote`]},{name:`exit`,history:`keep`,aliases:[`quit`],description:`Quit the TUI`,takesArgument:!1,build:()=>({type:`exit`}),targets:[`local`,`remote`]}],PROMPT_COMMANDS=PROMPT_COMMAND_DEFINITIONS;function promptCommandsFor(e){let t=PROMPT_COMMAND_DEFINITIONS.filter(t=>t.targets.some(t=>t===e));return e===`remote`?[...t.filter(e=>e.name===`help`),...t.filter(e=>e.name!==`help`)]:t}function isPromptCommandAvailableFor(e,t){return(PROMPT_COMMAND_DEFINITIONS.find(t=>t.name===e)?.targets)?.includes(t)??!1}function parsePromptCommand(e){let t=promptCommandSpec(e);return t===void 0?null:t.spec.build(t.argument)}function promptCommandSpec(e){let t=e.trim();if(t.startsWith(`/`))for(let e of PROMPT_COMMANDS)for(let n of[e.name,...e.aliases]){let r=`/${n}`;if(t===r)return{spec:e,argument:``};if(e.takesArgument&&t.startsWith(`${r} `))return{spec:e,argument:t.slice(r.length).trim()}}}function isPromptControlCommand(e){return parsePromptCommand(e)!==null}function formatPromptCommandHelp(e=PROMPT_COMMANDS){let t=e.map(e=>{let t=e.argumentHint===void 0?``:` ${e.argumentHint}`,n=e.aliases.map(e=>` (/${e})`).join(``);return{invocation:`/${e.name}${t}${n}`,description:e.description}}),n=Math.max(...t.map(e=>e.invocation.length))+2;return t.map(e=>e.invocation.padEnd(n)+e.description).join(`
2
2
  `)}export{PROMPT_COMMANDS,formatPromptCommandHelp,isPromptCommandAvailableFor,isPromptControlCommand,parsePromptCommand,promptCommandSpec,promptCommandsFor};
@@ -151,7 +151,7 @@ export type AgentTUIRenderer = {
151
151
  /**
152
152
  * Reports the server session id backing the conversation — pushed by the
153
153
  * runner once a send is accepted, and overwritten when a later session's
154
- * turn is accepted. Deliberately sticky across `/reset` and interrupt
154
+ * turn is accepted. Deliberately sticky across `/new` and interrupt
155
155
  * recovery: the terminal renderer echoes the LAST session this TUI talked
156
156
  * to in the parting line on exit, so an interrupted conversation (whose
157
157
  * replacement session never ran a turn) can still be found again
@@ -190,7 +190,7 @@ export type AgentTUIRenderer = {
190
190
  /**
191
191
  * Clears the rendered transcript and resets per-conversation display
192
192
  * state, leaving the UI interactive on a fresh screen. Used by the
193
- * `/reset` command to start a new session with a clean slate.
193
+ * `/new` command to start a new session with a clean slate.
194
194
  */
195
195
  reset?(): void;
196
196
  /**
@@ -1,4 +1,4 @@
1
1
  import{PROMPT_COMMANDS,formatPromptCommandHelp,parsePromptCommand}from"./prompt-commands.js";import{failureKey,formatFailureDetail,formatFailureHint,formatFailureMessage,interruptedError,isInterruptedError,localFailureHint}from"./errors.js";import{conversationView,isWorking,tuiSessionReducer}from"./conversation-view.js";import{parseLogDisplayMode}from"./log-display-mode.js";import{createMcpConnectionStatusTracker}from"./mcp-connection-status.js";import{describeRemoteAuthCompletedMutations}from"./remote-auth-result.js";import{createRemoteConnectionController}from"./remote-connection.js";import{prepareRemoteTuiAccess}from"./remote-startup.js";import{isTerminalToolCallPart}from"./terminal-tool-part.js";import{userText}from"./transcript-parts.js";import{BOOT_DETECTIONS,CLI_MISSING_SETUP_ISSUE,LOGIN_SETUP_ISSUE,detectSetupIssues,formatSetupIssuesLine,normalizeLocalModelEndpoint,orderedSetupIssues}from"./setup-issues.js";import{TerminalRenderer}from"./terminal-renderer.js";import{createVercelStatusTracker}from"./vercel-status.js";import{isTaskRetryRefusal}from"#protocol/task-tools.js";import{loadDevelopmentEnvironmentFiles}from"#cli/dev/environment.js";import{getVercelAuthStatus}from"#setup/vercel-project.js";import{inspectApplication}from"#services/inspect-application.js";import{devBootPhase}from"#internal/dev-boot-progress.js";import{toErrorMessage}from"#shared/errors.js";import{probeAgentInfo}from"#services/dev-client/agent-info-probe.js";import{openConversationInputs}from"#client/conversation-state.js";import{EveAgentStore,attachEveAgentStore,detachEveAgentStore}from"#client/eve-agent-store.js";import{isAbortError}from"#client/eve-agent-store-helpers.js";import{normalizeActionRequest,normalizeActionResult}from"#client/message-action-parts.js";import{renderApplicationInfo}from"#cli/commands/info.js";import{createDevelopmentRuntimeArtifactRefresher}from"#services/dev-client.js";function authIssueForStatus(e){if(e===`logged-out`)return LOGIN_SETUP_ISSUE;if(e===`cli-missing`)return CLI_MISSING_SETUP_ISSUE}var EveTUIRunner=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f;#p=!1;#m;#h;#g=!0;#_;#v;#y;#b;#x;#S;#C;#w;#T;#E=!1;#D;#O=!1;#k=new AbortController;#A=!1;#j=0;#M=0;#N=[];#P;#F;#I;#L;#R;#z=new Set;#B=[];#V;#H=new Set;#U;#W=new Set;#G=new Set;#K;constructor(e){if(this.#e=e.client,e.lifecycle!==void 0&&(this.#K=e.lifecycle),e.diagnostics!==void 0&&(this.#r=e.diagnostics),this.#n=createRenderer(e),this.#t=new EveAgentStore({client:e.client,followSubagents:!0,reducer:tuiSessionReducer}),this.#t.setCallbacks({onEvent:e=>this.#Le(e),onSessionChange:e=>{e!==void 0&&this.#n.setSessionId?.(e.sessionId)},prepareSend:e=>this.#ee(e)}),this.#i=e.name??`eve`,this.#y=e.withExclusiveTerminal,this.#a=e.formatTransportError??toErrorMessage,e.initialInput!==void 0&&(this.#l=e.initialInput),e.startup!==void 0&&(this.#u=e.startup),this.#f=e.onboard===!0,this.#m=e.onOnboardingStep,this.#h=e.onOnboardingTerminal,e.appRoot!==void 0){this.#c=e.appRoot;let t={appRoot:e.appRoot,onChange:e=>this.#n.setVercelStatus?.(e)};e.detectProjectIdentity!==void 0&&(t.detectIdentity=e.detectProjectIdentity),this.#F=createVercelStatusTracker(t),e.probeMcpConnection!==void 0&&(this.#I=createMcpConnectionStatusTracker({onChange:()=>{},probe:e.probeMcpConnection}))}e.promptCommandHandler!==void 0&&(this.#_=e.promptCommandHandler),this.#v=e.availablePromptCommands??PROMPT_COMMANDS,e.remote!==void 0&&(this.#x=e.remote.runAuthFlow,this.#b=createRemoteConnectionController({client:this.#e,credentials:e.remote.credentials,target:e.remote.target,onChange:e=>this.#n.setRemoteConnectionStatus?.(e),resolveOidcToken:e.remote.resolveOidcToken,resolveDeployment:e.remote.resolveDeployment})),this.#S=e.bootDetections??BOOT_DETECTIONS,this.#C=e.getVercelAuthStatus??getVercelAuthStatus,this.#w=e.inspectApplication??inspectApplication,e.onBootProgress!==void 0&&(this.#T=e.onBootProgress),e.serverUrl!==void 0&&(this.#s=e.serverUrl),e.serverUrl!==void 0&&e.remote===void 0&&(this.#o=createDevelopmentRuntimeArtifactRefresher({serverUrl:e.serverUrl}))}async#q(){if(this.#s===void 0){this.#X(),this.#f||await this.#ve(void 0);return}let e;if(this.#b!==void 0){let t=await this.#b.check();t.state===`ready`&&(e=t.info)}else{let t=this.#e;if(t!==void 0)try{let n=await devBootPhase(`connecting to agent`,()=>probeAgentInfo({client:t,timeoutMs:2e3}),this.#T);n.kind===`ready`&&(e=n.info)}catch{e=void 0}}this.#X();let t=this.#Y(e);this.#f||await this.#ve(t)}#J(){let e=this.#u?.finish();return this.#d=e?.queuedPrompt,e?.draft??this.#l}#Y(e){let t=this.#c===void 0?e:normalizeLocalModelEndpoint(e,process.env);this.#L=t;let n=this.#s;if(n===void 0||this.#g)return t;let r={name:this.#i,serverUrl:n,localDevelopment:this.#c!==void 0};return t!==void 0&&(r.info=t),this.#n.renderAgentHeader?.(r),t}#X(){let e=this.#T;this.#T=void 0,e?.({type:`before-first-paint`})}async run(){let onStop=()=>this.#n.requestInterrupt?.();this.#K?.signal.aborted===!0?onStop():this.#K?.signal.addEventListener(`abort`,onStop,{once:!0});let e=this.#t.subscribe(()=>this.#te());attachEveAgentStore(this.#t);try{await this.#Z()}catch(e){if(!isInterruptedError(e))throw e}finally{this.#K?.signal.removeEventListener(`abort`,onStop),this.#E=!0,this.#k.abort(),this.#R?.abort(),e(),detachEveAgentStore(this.#t),this.#n.shutdown?.(),this.#F?.dispose(),this.#I?.dispose(),this.#b?.dispose()}}async#Z(){let e=this.#i,t;this.#n.setStartupPhase?.(`starting`),await this.#q(),this.#F?.refreshIdentity(),this.#I?.refresh();let n=(this.#f||this.#L?.agent.model.endpoint?.kind===`gateway`&&!this.#L.agent.model.endpoint.connected)&&this.#c!==void 0&&this.#_!==void 0&&this.#n.setupFlow!==void 0,r;if(this.#b!==void 0&&this.#n.setupFlow!==void 0){let e=await prepareRemoteTuiAccess({connection:this.#b,renderer:this.#n.setupFlow,signal:this.#K?.signal,runAuthFlow:this.#x});if(e?.kind===`authenticated`){let e=this.#b.current().connection;e.state===`ready`&&this.#Y(e.info)}else e?.kind===`failed`||e?.kind===`unavailable`?r={failed:!0,message:e.kind===`failed`?e.message:e.failure.message}:e?.kind===`cancelled`&&(r={cancelled:!0},e.completedMutations.length>0&&(r.message=`Completed before cancellation: ${describeRemoteAuthCompletedMutations(e.completedMutations).join(`, `)}.`))}n&&(this.#n.setStartupPhase?.(`connecting`),r=await this.#De(e));let i=this.#J();for(r?.cancelled||r?.failed?i=[this.#d,i].filter(Boolean).join(`
2
2
 
3
- `)||void 0:t=this.#d,this.#g=!1,this.#Y(this.#L),this.#ye(),this.#n.setStartupPhase?.(void 0),(!n||r?.cancelled||r?.failed)&&r?.message!==void 0&&this.#Se({kind:`result`,message:r.message});this.#K?.signal.aborted!==!0&&this.#n.exitRequested?.()!==!0;){if(this.#t.snapshot.data.sessionFailed){this.#ce();continue}if(this.#ae().length>0){await this.#oe(e);continue}let n=isWorking(this.#t.snapshot.status)?void 0:this.#B.shift();if(n!==void 0){this.#V=n;try{await this.#_e(n)}finally{this.#V=void 0}continue}if(t===void 0){let n=await this.#me({title:e,initialDraft:i});if(i=void 0,n===void 0)continue;if(n.type===`cancel`){this.#de();continue}if(n.type===`interrupt`){this.#ce(`Stopped following the turn and started a new session. Earlier context was cleared; the interrupted turn may still be running on the server.`);continue}t=n.text}let r=t;t=void 0;let a=parsePromptCommand(r);if(a===null){this.#$(r);continue}let o=await this.#Q(a,e);if(o===`exit`)return;o!==void 0&&(i=o.draft)}}async#Q(e,t){switch(e.type){case`exit`:return this.#Se({kind:`dismiss`}),this.#K?.requestStop(),`exit`;case`cancel`:{let e=isWorking(this.#t.snapshot.status);e&&this.#de(),this.#Se({kind:`result`,summary:e?`Cancellation requested`:`No active turn to cancel`});return}case`reset`:await this.#pe();return;case`compact`:await this.#fe({absent:`No active session to compact`,accepted:`Compaction requested`,failed:`Couldn't compact the session`,invoke:()=>this.#t.compact()});return;case`clear`:await this.#fe({absent:`No active session to clear`,failed:`Couldn't clear the session`,dismissOnAccepted:!0,invoke:()=>this.#t.clear()});return;case`help`:{if(this.#n.choosePromptCommand===void 0){this.#Se({kind:`result`,message:formatPromptCommandHelp(this.#v)});return}let e=await this.#n.choosePromptCommand(this.#v);return e===void 0?void 0:{draft:e}}case`info`:await this.#Ae();return;case`loglevel`:{let t=this.#je(e.argument),n=t.startsWith(`/loglevel is not available`)||t.startsWith(`Unknown log level`);this.#Se(n?{kind:`result`,message:t}:{kind:`result`,summary:t});return}case`traces`:await this.#ke(e.argument);return;case`extension`:await this.#Ee(e,t,{trigger:`command`});return}}#$(e){let t=this.#t.snapshot,n=isWorking(t.status);this.#D=e,n||(this.#O=!1);let r=n?{message:e,turnPolicy:`steer`}:t.session===void 0?{message:e}:{message:e,turnPolicy:`queue`};this.#t.send(r).catch(e=>{this.#E||isAbortError(e)||this.#n.renderError?.(n?`Steering failed`:`Error`,this.#a(e))})}async#ee(e){return e.turnPolicy===`steer`?e:(this.#o!==void 0&&await this.#o.refresh({inputResponses:e.inputResponses,message:typeof e.message==`string`?e.message:void 0,onRuntimeArtifactsChanged:()=>this.#Fe()}),e.message!==void 0&&this.#n.flushDelayedDevBuildErrors?.(),e)}#te(){let e=this.#t.snapshot;this.#n.renderConversation?.(conversationView(e,this.#c===void 0?void 0:localFailureHint)),this.#re(e.error,e.data.sessionFailed),this.#Ie(e.conversation),this.#ie(e.conversation),this.#ge(e.conversation),this.#ne(e.conversation),(e.data.sessionFailed||this.#ae().length>0||!isWorking(e.status)&&this.#B.length>0)&&this.#R?.abort()}#ne(e){let t=this.#D;if(t===void 0)return;let n=e.messages.findLast(e=>e.role===`user`),r=n?.metadata?.turnId;if(n===void 0||r===void 0||userText(n)!==t)return;let i=e.turns[r]?.status;i!==void 0&&i!==`active`&&(this.#D=void 0,i===`cancelled`&&!this.#O&&this.#n.restoreDraft?.(t))}#re(e,t){e!==void 0&&e!==this.#U&&(this.#U=e,!t&&(this.#b?.reportFailure(e),this.#n.renderError?.(`Error`,this.#a(e))))}#ie(e){!this.#f||this.#p||!e.messages.some(e=>e.role===`assistant`&&e.parts.some(e=>e.type===`text`&&e.text.length>0))||(this.#p=!0,this.#m?.({flow:`onboarding`,step:`first_response`}))}#ae(){return openConversationInputs(this.#t.snapshot.conversation).filter(e=>!this.#z.has(e.request.requestId))}async#oe(e){for(let t=0;;t+=1){let n=this.#ae(),r=n[0];if(r===void 0)return;let i=inputContext(r,t+1,t+n.length),a=await this.#se(r.request,i,e);if(a===void 0){this.#z.add(r.request.requestId);continue}this.#t.send({inputResponses:[a]}).catch(e=>{this.#E||isAbortError(e)||this.#n.renderError?.(`Error`,this.#a(e))})}}async#se(e,t,n){if(e.kind===`tool-approval`){if(!this.#n.readToolApproval)throw Error(`Tool approval was requested, but the renderer does not support tool approval input.`);let r=await this.#n.readToolApproval(toAgentTUIToolApprovalRequest(e,t),{title:n});return{requestId:e.requestId,optionId:r.approved?`approve`:`cancel`}}if(!this.#n.readInputQuestion)throw Error(`An interactive question was requested, but the renderer does not support input questions.`);let r=await this.#n.readInputQuestion(toAgentTUIInputQuestion(e,t),{title:n});if(r===void 0)return;let i={requestId:e.requestId};return r.optionId!==void 0&&(i.optionId=r.optionId),r.text!==void 0&&(i.text=r.text),i}#ce(e){this.#n.renderSessionBoundary===void 0?e===void 0&&this.#n.renderNotice?.(`Session ended — started a new session. Earlier context was cleared.`):this.#n.renderSessionBoundary(),e!==void 0&&this.#n.renderNotice?.(e),this.#le()}#le(){this.#t.reset(),this.#ue()}#ue(){this.#z.clear(),this.#H.clear(),this.#W.clear(),this.#o?.clear()}#de(){this.#O=!0,this.#t.cancel().catch(e=>{this.#n.renderNotice?.(`Couldn't cancel the turn: ${toErrorMessage(e)}`)})}async#fe(e){if(this.#t.snapshot.session===void 0){this.#Se({kind:`result`,summary:e.absent});return}try{if((await e.invoke()).status!==`accepted`){this.#Se({kind:`result`,summary:e.absent});return}this.#Se(e.dismissOnAccepted===!0?{kind:`dismiss`}:{kind:`result`,summary:e.accepted})}catch(t){this.#Se({kind:`result`,message:toErrorMessage(t),summary:e.failed})}}async#pe(){try{await this.#t.retire()}catch(e){this.#Se({kind:`result`,message:`Couldn't reset the session: ${toErrorMessage(e)}`});return}this.#ue(),this.#n.reset?.(),this.#Se({kind:`dismiss`})}async#me(e){if(!this.#n.readInput)throw Error(`The renderer does not support prompt input.`);let t=new AbortController;this.#R=t;try{let n=await this.#he(this.#n.readInput({...e,signal:t.signal}));if(n===void 0&&!t.signal.aborted)throw interruptedError();return n}finally{this.#R===t&&(this.#R=void 0)}}async#he(e){let t=this.#o;if(t===void 0)return await e;let n=!1,r=!1,i,a=!1,o=0,refresh=async()=>{if(!(n||r)){r=!0;try{await t.refreshIdle({onRuntimeArtifactsChanged:()=>this.#Fe()}),this.#c!==void 0&&this.#L===void 0&&!a&&(a=!0,this.#Ne().finally(()=>{a=!1}));let e=this.#L?.agent.model.endpoint,n=e?.kind===`chatgpt`&&(e.state===`signed-out`||e.state===`reauth-required`),r=Date.now();n&&r-o>=5e3&&(o=r,this.#Ne())}finally{r=!1}}},startRefresh=()=>{if(n||r)return;let e=refresh().finally(()=>{i===e&&(i=void 0)});i=e};startRefresh();let s=setInterval(()=>{startRefresh()},500);s.unref?.();try{return await e}finally{n=!0,clearInterval(s),await i}}#ge(e){if(this.#c!==void 0)for(let{callId:t,address:n}of registryHandoffs(e))this.#H.has(t)||(this.#H.add(t),!(this.#V===n||this.#B.includes(n))&&this.#B.push(n))}async#_e(e){this.#n.renderCommandInvocation?.(`/add ${e}`),await this.#Ee({type:`extension`,name:`add`,argument:e},`Add to your agent`,{trigger:`command`})}async#ve(e){if(this.#c===void 0)return;let t={appRoot:this.#c,env:process.env};e!==void 0&&(t.info=e),this.#N=await detectSetupIssues(t,this.#S),this.#n.renderSetupWarning!==void 0&&(this.#ye(),this.#be())}#ye(){if(this.#g)return;let e=orderedSetupIssues(this.#N,this.#P);e.length>0?this.#n.renderSetupWarning?.(formatSetupIssuesLine(e)):this.#n.clearSetupWarning?.()}async#be(){let e=this.#c;if(e===void 0||process.env.EVE_MODEL_CONNECTION!==`ai-gateway-project`)return;let t;try{t=await this.#C(e,{signal:this.#k.signal})}catch{return}this.#E||this.#A||(this.#P=authIssueForStatus(t),this.#ye())}async#xe(e){let t=this.#c;if(t===void 0||this.#n.renderSetupWarning===void 0)return;let n=++this.#j,r={appRoot:t,env:process.env};e!==void 0&&(r.info=e);try{let[e,i]=await Promise.all([detectSetupIssues(r,this.#S),process.env.EVE_MODEL_CONNECTION===`ai-gateway-project`?this.#C(t,{signal:this.#k.signal}):void 0]);if(this.#E||n!==this.#j)return;this.#N=e,this.#P=i===void 0?void 0:authIssueForStatus(i),this.#ye()}catch{return}}#Se(e){if(this.#n.finishCommand!==void 0){this.#n.finishCommand(e);return}if(e.kind===`result`){let t=[e.summary,e.message].filter(Boolean).join(`
3
+ `)||void 0:t=this.#d,this.#g=!1,this.#Y(this.#L),this.#ye(),this.#n.setStartupPhase?.(void 0),(!n||r?.cancelled||r?.failed)&&r?.message!==void 0&&this.#Se({kind:`result`,message:r.message});this.#K?.signal.aborted!==!0&&this.#n.exitRequested?.()!==!0;){if(this.#t.snapshot.data.sessionFailed){this.#ce();continue}if(this.#ae().length>0){await this.#oe(e);continue}let n=isWorking(this.#t.snapshot.status)?void 0:this.#B.shift();if(n!==void 0){this.#V=n;try{await this.#_e(n)}finally{this.#V=void 0}continue}if(t===void 0){let n=await this.#me({title:e,initialDraft:i});if(i=void 0,n===void 0)continue;if(n.type===`cancel`){this.#de();continue}if(n.type===`interrupt`){this.#ce(`Stopped following the turn and started a new session. Earlier context was cleared; the interrupted turn may still be running on the server.`);continue}t=n.text}let r=t;t=void 0;let a=parsePromptCommand(r);if(a===null){this.#$(r);continue}let o=await this.#Q(a,e);if(o===`exit`)return;o!==void 0&&(i=o.draft)}}async#Q(e,t){switch(e.type){case`exit`:return this.#Se({kind:`dismiss`}),this.#K?.requestStop(),`exit`;case`cancel`:{let e=isWorking(this.#t.snapshot.status);e&&this.#de(),this.#Se({kind:`result`,summary:e?`Cancellation requested`:`No active turn to cancel`});return}case`new`:await this.#pe();return;case`compact`:await this.#fe({absent:`No active session to compact`,accepted:`Compaction requested`,failed:`Couldn't compact the session`,invoke:()=>this.#t.compact()});return;case`clear`:await this.#fe({absent:`No active session to clear`,accepted:`Session context cleared`,failed:`Couldn't clear the session`,invoke:()=>this.#t.clear()});return;case`help`:{if(this.#n.choosePromptCommand===void 0){this.#Se({kind:`result`,message:formatPromptCommandHelp(this.#v)});return}let e=await this.#n.choosePromptCommand(this.#v);return e===void 0?void 0:{draft:e}}case`info`:await this.#Ae();return;case`loglevel`:{let t=this.#je(e.argument),n=t.startsWith(`/loglevel is not available`)||t.startsWith(`Unknown log level`);this.#Se(n?{kind:`result`,message:t}:{kind:`result`,summary:t});return}case`traces`:await this.#ke(e.argument);return;case`extension`:await this.#Ee(e,t,{trigger:`command`});return}}#$(e){let t=this.#t.snapshot,n=isWorking(t.status);this.#D=e,n||(this.#O=!1);let r=n?{message:e,turnPolicy:`steer`}:t.session===void 0?{message:e}:{message:e,turnPolicy:`queue`};this.#t.send(r).catch(e=>{this.#E||isAbortError(e)||this.#n.renderError?.(n?`Steering failed`:`Error`,this.#a(e))})}async#ee(e){return e.turnPolicy===`steer`?e:(this.#o!==void 0&&await this.#o.refresh({inputResponses:e.inputResponses,message:typeof e.message==`string`?e.message:void 0,onRuntimeArtifactsChanged:()=>this.#Fe()}),e.message!==void 0&&this.#n.flushDelayedDevBuildErrors?.(),e)}#te(){let e=this.#t.snapshot;this.#n.renderConversation?.(conversationView(e,this.#c===void 0?void 0:localFailureHint)),this.#re(e.error,e.data.sessionFailed),this.#Ie(e.conversation),this.#ie(e.conversation),this.#ge(e.conversation),this.#ne(e.conversation),(e.data.sessionFailed||this.#ae().length>0||!isWorking(e.status)&&this.#B.length>0)&&this.#R?.abort()}#ne(e){let t=this.#D;if(t===void 0)return;let n=e.messages.findLast(e=>e.role===`user`),r=n?.metadata?.turnId;if(n===void 0||r===void 0||userText(n)!==t)return;let i=e.turns[r]?.status;i!==void 0&&i!==`active`&&(this.#D=void 0,i===`cancelled`&&!this.#O&&this.#n.restoreDraft?.(t))}#re(e,t){e!==void 0&&e!==this.#U&&(this.#U=e,!t&&(this.#b?.reportFailure(e),this.#n.renderError?.(`Error`,this.#a(e))))}#ie(e){!this.#f||this.#p||!e.messages.some(e=>e.role===`assistant`&&e.parts.some(e=>e.type===`text`&&e.text.length>0))||(this.#p=!0,this.#m?.({flow:`onboarding`,step:`first_response`}))}#ae(){return openConversationInputs(this.#t.snapshot.conversation).filter(e=>!this.#z.has(e.request.requestId))}async#oe(e){for(let t=0;;t+=1){let n=this.#ae(),r=n[0];if(r===void 0)return;let i=inputContext(r,t+1,t+n.length),a=await this.#se(r.request,i,e);if(a===void 0){this.#z.add(r.request.requestId);continue}this.#t.send({inputResponses:[a]}).catch(e=>{this.#E||isAbortError(e)||this.#n.renderError?.(`Error`,this.#a(e))})}}async#se(e,t,n){if(e.kind===`tool-approval`){if(!this.#n.readToolApproval)throw Error(`Tool approval was requested, but the renderer does not support tool approval input.`);let r=await this.#n.readToolApproval(toAgentTUIToolApprovalRequest(e,t),{title:n});return{requestId:e.requestId,optionId:r.approved?`approve`:`cancel`}}if(!this.#n.readInputQuestion)throw Error(`An interactive question was requested, but the renderer does not support input questions.`);let r=await this.#n.readInputQuestion(toAgentTUIInputQuestion(e,t),{title:n});if(r===void 0)return;let i={requestId:e.requestId};return r.optionId!==void 0&&(i.optionId=r.optionId),r.text!==void 0&&(i.text=r.text),i}#ce(e){this.#n.renderSessionBoundary===void 0?e===void 0&&this.#n.renderNotice?.(`Session ended — started a new session. Earlier context was cleared.`):this.#n.renderSessionBoundary(),e!==void 0&&this.#n.renderNotice?.(e),this.#le()}#le(){this.#t.reset(),this.#ue()}#ue(){this.#z.clear(),this.#H.clear(),this.#W.clear(),this.#o?.clear()}#de(){this.#O=!0,this.#t.cancel().catch(e=>{this.#n.renderNotice?.(`Couldn't cancel the turn: ${toErrorMessage(e)}`)})}async#fe(e){if(this.#t.snapshot.session===void 0){this.#Se({kind:`result`,summary:e.absent});return}try{if((await e.invoke()).status!==`accepted`){this.#Se({kind:`result`,summary:e.absent});return}this.#Se({kind:`result`,summary:e.accepted})}catch(t){this.#Se({kind:`result`,message:toErrorMessage(t),summary:e.failed})}}async#pe(){try{await this.#t.retire()}catch(e){this.#Se({kind:`result`,message:`Couldn't reset the session: ${toErrorMessage(e)}`});return}this.#ue(),this.#n.reset?.(),this.#Se({kind:`dismiss`})}async#me(e){if(!this.#n.readInput)throw Error(`The renderer does not support prompt input.`);let t=new AbortController;this.#R=t;try{let n=await this.#he(this.#n.readInput({...e,signal:t.signal}));if(n===void 0&&!t.signal.aborted)throw interruptedError();return n}finally{this.#R===t&&(this.#R=void 0)}}async#he(e){let t=this.#o;if(t===void 0)return await e;let n=!1,r=!1,i,a=!1,o=0,refresh=async()=>{if(!(n||r)){r=!0;try{await t.refreshIdle({onRuntimeArtifactsChanged:()=>this.#Fe()}),this.#c!==void 0&&this.#L===void 0&&!a&&(a=!0,this.#Ne().finally(()=>{a=!1}));let e=this.#L?.agent.model.endpoint,n=e?.kind===`chatgpt`&&(e.state===`signed-out`||e.state===`reauth-required`),r=Date.now();n&&r-o>=5e3&&(o=r,this.#Ne())}finally{r=!1}}},startRefresh=()=>{if(n||r)return;let e=refresh().finally(()=>{i===e&&(i=void 0)});i=e};startRefresh();let s=setInterval(()=>{startRefresh()},500);s.unref?.();try{return await e}finally{n=!0,clearInterval(s),await i}}#ge(e){if(this.#c!==void 0)for(let{callId:t,address:n}of registryHandoffs(e))this.#H.has(t)||(this.#H.add(t),!(this.#V===n||this.#B.includes(n))&&this.#B.push(n))}async#_e(e){this.#n.renderCommandInvocation?.(`/add ${e}`),await this.#Ee({type:`extension`,name:`add`,argument:e},`Add to your agent`,{trigger:`command`})}async#ve(e){if(this.#c===void 0)return;let t={appRoot:this.#c,env:process.env};e!==void 0&&(t.info=e),this.#N=await detectSetupIssues(t,this.#S),this.#n.renderSetupWarning!==void 0&&(this.#ye(),this.#be())}#ye(){if(this.#g)return;let e=orderedSetupIssues(this.#N,this.#P);e.length>0?this.#n.renderSetupWarning?.(formatSetupIssuesLine(e)):this.#n.clearSetupWarning?.()}async#be(){let e=this.#c;if(e===void 0||process.env.EVE_MODEL_CONNECTION!==`ai-gateway-project`)return;let t;try{t=await this.#C(e,{signal:this.#k.signal})}catch{return}this.#E||this.#A||(this.#P=authIssueForStatus(t),this.#ye())}async#xe(e){let t=this.#c;if(t===void 0||this.#n.renderSetupWarning===void 0)return;let n=++this.#j,r={appRoot:t,env:process.env};e!==void 0&&(r.info=e);try{let[e,i]=await Promise.all([detectSetupIssues(r,this.#S),process.env.EVE_MODEL_CONNECTION===`ai-gateway-project`?this.#C(t,{signal:this.#k.signal}):void 0]);if(this.#E||n!==this.#j)return;this.#N=e,this.#P=i===void 0?void 0:authIssueForStatus(i),this.#ye()}catch{return}}#Se(e){if(this.#n.finishCommand!==void 0){this.#n.finishCommand(e);return}if(e.kind===`result`){let t=[e.summary,e.message].filter(Boolean).join(`
4
4
  `);t!==``&&this.#n.renderNotice?.(t)}}async#Ce(e,t){let n=this.#_;if(n===void 0)return{message:`/${e.name} is not available in this session.`};let r=this.#L?.agent.model.endpoint,i={...t,renderer:this.#n,settleOutcome:e=>this.#Te(e),chatGptAccountLabel:r?.kind===`chatgpt`&&r.state===`ready`?r.accountLabel:void 0,withExclusiveTerminal:this.#y},a=this.#I?.current(),o=a!==void 0&&Object.keys(a).length>0?{...i,disabledConnectionReasons:a}:i;return await n.handle(e,o)}async#we(e){if(e?.kind===`model-access-changed`){this.#F?.applyEffect({kind:`refresh-identity`}),this.#A=!0,await this.#Me(e);return}e!==void 0&&(this.#F?.applyEffect(e),this.#A=!0,this.#xe(this.#L))}async#Te(e){if(e.effect===void 0)return e;let t=e.effect.kind===`model-access-changed`&&e.effect.reload?setTimeout(()=>{this.#g&&this.#n.setStartupPhase?.(`updating`),this.#n.setupFlow?.setStatus(`Loading selected model…`)},150):void 0;try{await this.#we(e.effect);let{effect:t,...n}=e;return n}catch{return{failed:!0,message:`Settings were saved, but the agent could not reload. Retry the command or restart eve dev.`}}finally{clearTimeout(t)}}async#Ee(e,t,n){let r=await this.#Ce(e,{...n,title:t}),i=r===void 0?void 0:await this.#Te(r);return!(n.suppressSuccessfulTranscript===!0&&i?.failed!==!0||n.suppressCancelledTranscript===!0&&i?.cancelled===!0)&&n.trigger!==`startup`&&(i===void 0?this.#Se({kind:`result`}):this.#Se({kind:`result`,message:i.message,summary:i.summary})),this.#Oe(),i}async#De(e){this.#m?.({flow:`onboarding`,step:`model_provider`});let t=await this.#Ee({type:`extension`,name:`login`,argument:``},e,{trigger:`startup`,initialModelStep:`provider`});return!t?.cancelled&&t?.failed!==!0&&this.#m?.({flow:`onboarding`,step:`connection_ready`}),this.#h?.({flow:`onboarding`,step:`model_provider`,result:t?.cancelled?`cancelled`:t?.failed===!0?`error`:`completed`}),t}#Oe(){if(this.#g)return;let e=this.#b?.current().connection;e?.state===`ready`&&e.info!==this.#L&&(this.#L=e.info,this.#s!==void 0&&this.#n.renderAgentHeader?.({info:e.info,name:this.#i,serverUrl:this.#s}))}async#ke(e){if(this.#c===void 0||this.#n.traceViewer===void 0){this.#Se({kind:`result`,message:`/traces is only available in local dev sessions.`});return}try{await this.#n.traceViewer.open({appRoot:this.#c,sessionId:this.#t.snapshot.session?.sessionId,reference:e===``?void 0:e})}catch(e){if(isInterruptedError(e))return;throw e}finally{this.#Se({kind:`dismiss`})}}async#Ae(){let e=this.#c;if(e===void 0){this.#Se({kind:`result`,message:`/info is only available in local dev sessions.`});return}try{let t=renderApplicationInfo(await this.#w(e));this.#n.showInfoPanel===void 0?this.#Se({kind:`result`,message:t}):await this.#n.showInfoPanel(t)}catch(e){this.#Se({kind:`result`,message:`Couldn't inspect the application: ${toErrorMessage(e)}`})}}#je(e){let t=this.#n;if(t.logDisplayMode===void 0||t.setLogDisplayMode===void 0)return`/loglevel is not available in this session.`;if(e===``)return`Logs: ${t.logDisplayMode()}. Use /loglevel none|error|warn|debug|all — logs stay buffered, so switching also hides or restores past lines.`;let n=parseLogDisplayMode(e);if(n===void 0)return`Unknown log level "${e}". Use none, error, warn, debug, or all.`;if(n===t.logDisplayMode())return`Logs already set to ${n}.`;switch(t.setLogDisplayMode(n),n){case`none`:return`Logs hidden. Output stays buffered — /loglevel all restores it.`;case`error`:return`Showing errors.`;case`warn`:return`Showing warnings and errors.`;case`debug`:return`Showing all severity-tagged logs.`;case`all`:return`Showing all logs.`}}async#Me(e){let t=this.#c;t!==void 0&&(++this.#M,++this.#j,await loadDevelopmentEnvironmentFiles(t),e.reload&&await this.#o?.refreshAfterSourceChange({}),e.model&&this.#L?this.#Y({...this.#L,agent:{...this.#L.agent,model:{...this.#L.agent.model,...e.model}}}):this.#Y(this.#L),this.#N=[],this.#P=void 0,this.#ye(),this.#Ne())}async#Ne(e=!1){let t=this.#L,n=++this.#M,r=await this.#Pe();this.#E||n!==this.#M||r===void 0||(this.#Y(r),e&&!this.#n.renderAgentHeader&&this.#n.renderNotice?.(formatAgentUpdateNotice(t,r)),this.#xe(this.#L))}async#Pe(){let e=this.#e;if(e===void 0)return;let t=await probeAgentInfo({client:e});return t.kind===`ready`?t.info:void 0}#Fe(){this.#Ne(!0)}#Ie(e){let t=this.#r;if(t!==void 0){for(let n of Object.values(e.agents))if(n.observation.status!==`not-followed`)for(let e of n.observation.conversation?.messages??[])for(let r of e.parts)r.type===`dynamic-tool`&&r.state===`output-error`&&(this.#G.has(r.toolCallId)||(this.#G.add(r.toolCallId),t.append({source:`tool`,summary:`${r.toolName} failed (subagent ${n.name})`,detail:r.errorText})))}}#Le(e){let t=this.#r;if(t!==void 0)switch(e.type){case`turn.started`:this.#W.clear();break;case`actions.requested`:for(let n of e.data.actions){let e=normalizeActionRequest(n);e.kind===`tool-call`&&t.recordToolCall(e.toolName)}break;case`action.result`:isTaskRetryRefusal(e)?t.append({source:`tool`,summary:`${normalizeActionResult(e.data.result).toolName} was refused for the model to retry`,detail:e.data.error?.message??`Refused.`}):e.data.status===`failed`&&t.append({source:`tool`,summary:`${normalizeActionResult(e.data.result).toolName} failed`,detail:e.data.error?.message??`Tool failed.`});break;case`agent.started`:t.recordSubagentDispatch(e.data.callId);break;case`step.completed`:t.recordStepUsage(e.data.usage);break;case`step.failed`:case`turn.failed`:case`session.failed`:{let n=failureKey(e);if(this.#W.has(n))break;this.#W.add(n);let r=formatFailureMessage(e),i=formatFailureDetail(e)??r,a=formatFailureHint(e);t.append(a===void 0?{source:`workflow`,summary:`Error: ${r}`,detail:i}:{source:`workflow`,summary:`Error: ${r}`,detail:i,hint:a});break}}}};function createRenderer(e){return e.renderer?e.renderer:new TerminalRenderer({tools:e.tools,reasoning:e.reasoning,subagents:e.subagents,connectionAuth:e.connectionAuth,assistantResponseStats:e.assistantResponseStats,contextSize:e.contextSize,logs:e.logs,availablePromptCommands:e.availablePromptCommands,argumentSuggestions:e.argumentSuggestions,input:e.userInput,output:e.screen,diagnostics:e.diagnostics,onExitRequest:e.lifecycle?.requestStop})}function formatAgentUpdateNotice(e,t){let n=e?.agent.model.id,r=t?.agent.model.id;return n!==void 0&&r!==void 0&&n!==r?`Agent updated: Model ${n} -> ${r}`:`Agent updated.`}function registryHandoffs(e){let t=[],collect=(e,n)=>{for(let r of e.messages)for(let e of r.parts){if(!isTerminalToolCallPart(e)||e.state!==`output-available`||e.partial)continue;let r=registryHandoffAddress(n,e.toolName,e.output);r!==void 0&&t.push({callId:e.toolCallId,address:r})}};collect(e,void 0);for(let t of Object.values(e.agents)){if(t.observation.status===`not-followed`)continue;let e=t.observation.conversation;e!==void 0&&collect(e,t.name)}return t}function registryHandoffAddress(e,t,n){if((e!==`self-modification__agent`||t!==`registry_add`)&&(e!==void 0||t!==`selfmod__registry_add`)||typeof n!=`object`||!n)return;let r=n;return r.status===`needs-terminal`&&typeof r.address==`string`?r.address:void 0}function inputContext(e,t,n){let r={};return n>1&&(r.position={index:t,total:n}),e.taskId!==void 0&&(r.taskId=e.taskId),r.position===void 0&&r.taskId===void 0?void 0:r}function toAgentTUIToolApprovalRequest(e,t){let n={approvalId:e.requestId,toolCallId:e.action.callId,toolName:e.action.toolName,input:e.action.input};return t!==void 0&&(n.context=t),n}function toAgentTUIInputQuestion(e,t){let n=e.display===`text`?`text`:e.display===`select`||e.options!==void 0&&e.options.length>0?`select`:`text`,r={requestId:e.requestId,prompt:e.prompt,display:n};return e.options!==void 0&&(r.options=e.options.map(e=>{let t={id:e.id,label:e.label};return e.description!==void 0&&(t.description=e.description),e.style!==void 0&&(t.style=e.style),t})),e.allowFreeform!==void 0&&(r.allowFreeform=e.allowFreeform),t!==void 0&&(r.context=t),r}export{EveTUIRunner,registryHandoffAddress};
@@ -28,23 +28,6 @@ export interface TaskEntry {
28
28
  /** An agent's own tool calls, newest last, for its activity and summary. */
29
29
  readonly childTools: Map<string, Block>;
30
30
  }
31
- export declare class TaskActivity {
32
- #private;
33
- start(input: {
34
- readonly callId: string;
35
- readonly kind: TaskKind;
36
- readonly baseName: string;
37
- readonly toolName: string;
38
- readonly input: unknown;
39
- readonly label: string | undefined;
40
- readonly nowMs: number;
41
- }): TaskEntry;
42
- get(callId: string): TaskEntry | undefined;
43
- /** Removes and returns a task that ended. */
44
- finish(callId: string): TaskEntry | undefined;
45
- working(): readonly TaskEntry[];
46
- clear(): void;
47
- }
48
31
  /** Joins the working tasks' names for the turn bar: `Waiting for researcher and reviewer`. */
49
32
  export declare function waitingLabel(entries: readonly TaskEntry[]): string;
50
33
  /** Names the connections a parked session waits on: `Waiting for sign-in to Linear`. */
@@ -1 +1 @@
1
- import{truncate}from"./tool-format.js";import{renderTransientDrawer}from"./flow-drawer.js";import{agentTaskLabel,isSelfModificationAgent}from"./tool-presentation.js";import{formatTurnDuration}from"./stream-format.js";import{clipVisible,visibleLength}from"#cli/ui/terminal-text.js";var TaskActivity=class{#e=new Map;start(e){let t={callId:e.callId,kind:e.kind,name:this.#t(e.baseName),toolName:e.toolName,input:e.input,label:e.label,startedAtMs:e.nowMs,childTools:new Map};return this.#e.set(e.callId,t),t}get(e){return this.#e.get(e)}finish(e){let t=this.#e.get(e);return this.#e.delete(e),t}working(){return[...this.#e.values()]}clear(){this.#e.clear()}#t(e){let t=new Set([...this.#e.values()].map(e=>e.name));if(!t.has(e))return e;for(let n=2;;n+=1){let r=`${e}:${String(n)}`;if(!t.has(r))return r}}};function waitingLabel(e){if(e.length===1&&isSelfModificationAgent(e[0].toolName))return`Modifying your agent`;let t=e.map(taskLabel);return t.length===1?`Waiting for ${t[0]}`:t.length===2?`Waiting for ${t[0]} and ${t[1]}`:`Waiting for ${String(t.length)} tasks`}function signInLabel(e){let t=[...new Set(e)];return t.length===1?`Waiting for sign-in to ${t[0]}`:t.length===2?`Waiting for sign-in to ${t[0]} and ${t[1]}`:`Waiting for ${String(t.length)} sign-ins`}function currentActivity(e){if(e.finishing===!0)return{text:`Finishing`,attention:!1};let t=[...e.childTools.values()],n=t.findLast(e=>e.status===`approval`);if(n!==void 0)return{text:`Needs your approval: ${n.title??`tool`}`,attention:!0};let r=t.findLast(e=>e.status===`running`);if(r!==void 0)return{text:r.title??`Working`,attention:!1};let i=t.at(-1);return i?.title===void 0?e.step===void 0?{text:``,attention:!1}:{text:e.step,attention:!1}:{text:i.title,attention:!1}}function taskLabel(e){return e.kind===`agent`?agentTaskLabel(e.name):e.name}function panelEntries(e){let t=[],visit=(e,n)=>{for(let r of e)t.push({entry:r,path:n}),visit(r.children??[],[...n,r])};return visit(e,[]),t}function renderTaskPanelRows(e,t){if(e.length===0)return[];let{width:n,theme:r,nowMs:i}=t,a=r.colors,o=panelEntries(e),s=o.reduce((e,{entry:t})=>e+(t.omittedTasks??0),0),c=o.some(({entry:e})=>e.omittedAttention),l=o.length+s,u=Math.max(2,Math.min(15,t.maxRows??15)),d=u>=5,f=Math.max(0,u-(d?4:2)),p=s>0||o.length*2>f,m=Math.max(0,Math.floor((f-+!!p)/2)),h=o.filter(({entry:e})=>currentActivity(e).attention),g=new Set([...h,...o.filter(e=>!h.includes(e))].slice(0,m)),_=o.filter(e=>g.has(e)),v=[];for(let{entry:e,path:t}of _){let o=t.length>0,s=` ${o?`${r.glyph.corner} `:``}`,c=_.some(e=>e.entry===t.at(-1))?t.slice(1):t,l=c.length>0?`${c.map(taskLabel).join(` ${r.glyph.arrow} `)} ${r.glyph.arrow} `:``,u=formatTurnDuration(i-e.startedAtMs);v.push(clipVisible(`${s}${a.bold(`${l}${taskLabel(e)}`)} ${a.dim(u)}`,n));let d=currentActivity(e),f=` ${o?` `:``}${r.glyph.elbow} `,p=truncate(d.text,Math.max(0,n-visibleLength(f))),m=d.attention?a.yellow:a.dim;p.length>0&&v.push(clipVisible(`${f}${m(p)}`,n))}let y=l-_.length;if(y>0&&v.length<f){let e=`${r.glyph.ellipsis} ${s>0?`at least `:``}${y} more working${c?` · Approval needed`:``}`;v.push(clipVisible(` ${c?a.yellow(e):a.dim(e)}`,n))}return renderTransientDrawer(v,[],r,n,`${t.activity??`Working`} ${r.glyph.dot} ${l}${s>0?`+`:``} ${l===1?`task`:`tasks`}${t.turnElapsedMs===void 0?``:` ${r.glyph.dot} ${formatTurnDuration(t.turnElapsedMs)}`}`,!d,`left`).rows}export{TaskActivity,renderTaskPanelRows,signInLabel,waitingLabel};
1
+ import{truncate}from"./tool-format.js";import{renderTransientDrawer}from"./flow-drawer.js";import{agentTaskLabel,isSelfModificationAgent}from"./tool-presentation.js";import{formatTurnDuration}from"./stream-format.js";import{clipVisible,visibleLength}from"#cli/ui/terminal-text.js";function waitingLabel(e){if(e.length===1&&isSelfModificationAgent(e[0].toolName))return`Modifying your agent`;let t=e.map(taskLabel);return t.length===1?`Waiting for ${t[0]}`:t.length===2?`Waiting for ${t[0]} and ${t[1]}`:`Waiting for ${String(t.length)} tasks`}function signInLabel(e){let t=[...new Set(e)];return t.length===1?`Waiting for sign-in to ${t[0]}`:t.length===2?`Waiting for sign-in to ${t[0]} and ${t[1]}`:`Waiting for ${String(t.length)} sign-ins`}function currentActivity(e){if(e.finishing===!0)return{text:`Finishing`,attention:!1};let t=[...e.childTools.values()],n=t.findLast(e=>e.status===`approval`);if(n!==void 0)return{text:`Needs your approval: ${n.title??`tool`}`,attention:!0};let r=t.findLast(e=>e.status===`running`);if(r!==void 0)return{text:r.title??`Working`,attention:!1};let i=t.at(-1);return i?.title===void 0?e.step===void 0?{text:``,attention:!1}:{text:e.step,attention:!1}:{text:i.title,attention:!1}}function taskLabel(e){return e.kind===`agent`?agentTaskLabel(e.name):e.name}function panelEntries(e){let t=[],visit=(e,n)=>{for(let r of e)t.push({entry:r,path:n}),visit(r.children??[],[...n,r])};return visit(e,[]),t}function renderTaskPanelRows(e,t){if(e.length===0)return[];let{width:n,theme:r,nowMs:i}=t,a=r.colors,o=panelEntries(e),s=o.reduce((e,{entry:t})=>e+(t.omittedTasks??0),0),c=o.some(({entry:e})=>e.omittedAttention),l=o.length+s,u=Math.max(2,Math.min(15,t.maxRows??15)),d=u>=5,f=Math.max(0,u-(d?4:2)),p=s>0||o.length*2>f,m=Math.max(0,Math.floor((f-+!!p)/2)),h=o.filter(({entry:e})=>currentActivity(e).attention),g=new Set([...h,...o.filter(e=>!h.includes(e))].slice(0,m)),_=o.filter(e=>g.has(e)),v=[];for(let{entry:e,path:t}of _){let o=t.length>0;(!o||v.length===0)&&v.push([]);let s=v.at(-1),c=` ${o?`${r.glyph.corner} `:``}`,l=_.some(e=>e.entry===t.at(-1))?t.slice(1):t,u=l.length>0?`${l.map(taskLabel).join(` ${r.glyph.arrow} `)} ${r.glyph.arrow} `:``,d=formatTurnDuration(i-e.startedAtMs);s.push(clipVisible(`${c}${a.bold(`${u}${taskLabel(e)}`)} ${a.dim(d)}`,n));let f=currentActivity(e),p=` ${o?` `:``}${r.glyph.elbow} `,m=truncate(f.text,Math.max(0,n-visibleLength(p))),h=f.attention?a.yellow:a.dim;m.length>0&&s.push(clipVisible(`${p}${h(m)}`,n))}let y=l-_.length,b=v.flat(),x=v.flatMap((e,t)=>t===0?e:[``,...e]),S=x.length+ +(y>0)<=f?x:b;if(y>0&&S.length<f){let e=`${r.glyph.ellipsis} ${s>0?`at least `:``}${y} more working${c?` · Approval needed`:``}`;S.push(clipVisible(` ${c?a.yellow(e):a.dim(e)}`,n))}return renderTransientDrawer(S,[],r,n,`${t.activity??`Working`} ${r.glyph.dot} ${l}${s>0?`+`:``} ${l===1?`task`:`tasks`}${t.turnElapsedMs===void 0?``:` ${r.glyph.dot} ${formatTurnDuration(t.turnElapsedMs)}`}`,!d,`left`).rows}export{renderTaskPanelRows,signInLabel,waitingLabel};
@@ -0,0 +1,17 @@
1
+ import type { ConversationTask } from "#client/conversation-state.js";
2
+ import type { EveDynamicToolPart } from "#client/message-reducer-types.js";
3
+ import { type TaskRecord } from "./transcript-parts.js";
4
+ /**
5
+ * The transcript's task records, one for each stretch of a task's work. A call that reaches a
6
+ * task while one of its calls still works joins that task's record, as a model steering a working
7
+ * agent does; a call that reaches it after it settled starts a new stretch with its own lines.
8
+ */
9
+ export declare class TaskRecords {
10
+ #private;
11
+ /** Records in start order. */
12
+ values(): IterableIterator<TaskRecord>;
13
+ get(callId: string): TaskRecord | undefined;
14
+ clear(): void;
15
+ /** The record a task call belongs to, joining its task's working record or starting one. */
16
+ record(part: EveDynamicToolPart, task: ConversationTask, label: string | undefined, now: number): TaskRecord;
17
+ }
@@ -0,0 +1 @@
1
+ import{agentDisplayName,presentTool}from"./tool-presentation.js";import{agentTaskSummary,labelContext}from"./transcript-parts.js";import{stripTerminalControls}from"#cli/ui/terminal-text.js";var TaskRecords=class{#e=new Map;#t=new Map;values(){return this.#e.values()}get(e){return this.#t.get(e)}clear(){this.#e.clear(),this.#t.clear()}record(e,t,n,r){let i=e.toolCallId,a=this.#t.get(i)??this.#n(i,t);if(a!==void 0)return a;let o=agentTaskSummary(e.input),s=agentDisplayName(stripTerminalControls(e.toolName));if(t.kind===`tool`){let t=presentTool(e.toolName,e.input,labelContext(n));s=stripTerminalControls(t.title),o=stripTerminalControls(t.subtitle)}let c={callId:i,taskId:t.taskId,callIds:[i],kind:t.kind,name:this.#r(s),toolName:e.toolName,input:e.input,label:n,purpose:o||n,startedAtMs:r,ended:!1};return this.#e.set(i,c),this.#t.set(i,c),c}#n(e,t){for(let n of this.#e.values())if(!(n.ended||n.taskId!==t.taskId)&&n.callIds.some(e=>t.calls[e]?.status===`working`))return n.callIds.push(e),this.#t.set(e,n),n}#r(e){let t=new Set([...this.#e.values()].filter(e=>!e.ended).map(e=>e.name));if(!t.has(e))return e;for(let n=2;;n+=1){let r=`${e}:${n}`;if(!t.has(r))return r}}};export{TaskRecords};
@@ -1 +1 @@
1
- import{summarizeToolArgs,summarizeToolResult}from"./tool-format.js";import{diffWriteDetail}from"./line-diff.js";import{stripTerminalControls}from"#cli/ui/terminal-text.js";const WRITE_FILE_VERB=`Write`,DELEGATE_VERB=`Delegate`,FINAL_OUTPUT_TITLE=`Return final output`,BUILTIN_TOOL_COPY={agent:{verb:`Delegate`,pastVerb:`Delegated`,argKey:`message`,singularNoun:`task`,pluralNoun:`tasks`},ask_question:{verb:`Ask`,pastVerb:`Asked`,argKey:`question`,singularNoun:`question`,pluralNoun:`questions`},bash:{verb:`Run`,pastVerb:`Ran`,argKey:`command`,singularNoun:`command`,pluralNoun:`commands`},connection_execute:{verb:`Call`,pastVerb:`Called`,argKey:``,extractItem:e=>{let t=salientArg(e,`connection`),n=salientArg(e,`tool`);return t===void 0||n===void 0?void 0:`${t}.${n}`},singularNoun:`connection tool`,pluralNoun:`connection tools`},connection_search:{verb:`Search`,pastVerb:`Searched`,argKey:`query`,extractItem:e=>salientArg(e,`connection`),singularNoun:`tool search`,pluralNoun:`tool searches`},glob:{verb:`Glob`,pastVerb:`Globbed`,argKey:`pattern`,singularNoun:`pattern`,pluralNoun:`patterns`},grep:{verb:`Grep`,pastVerb:`Grepped`,argKey:`pattern`,singularNoun:`pattern`,pluralNoun:`patterns`},load_skill:{verb:`Load`,pastVerb:`Loaded`,argKey:`skill`,singularNoun:`skill`,pluralNoun:`skills`},read_file:{verb:`Read`,pastVerb:`Read`,argKey:`filePath`,singularNoun:`file`,pluralNoun:`files`},web_fetch:{verb:`Fetch`,pastVerb:`Fetched`,argKey:`url`,singularNoun:`URL`,pluralNoun:`URLs`},web_search:{verb:`Search`,pastVerb:`Searched`,argKey:`query`,extractItem:e=>salientArg(e,`objective`)??salientArg(e,`search_query`)??salientArg(e,`searchQuery`)??webSearchActionArg(e),singularNoun:`query`,pluralNoun:`queries`}};function presentWriteFileTool(e,t,n){let r=readWriteFileInput(e,t);if(r===void 0)return{title:e,subtitle:summarizeToolArgs(t),summarizeResult:summarizeToolResult};let i=diffWriteDetail(n?.previousContent,r.content,n?.existed).map(e=>e.kind===`gap`?e:{...e,text:stripTerminalControls(e.text)});return{title:`${WRITE_FILE_VERB} ${salientLine(r.path)??r.path}`,doneTitle:`Wrote ${salientLine(r.path)??r.path}`,subtitle:``,summarizeResult:()=>void 0,detail:i,keepDetailWhenDone:!0}}function readWriteFileInput(e,t){if(toolBaseName(e)!==`write_file`||typeof t!=`object`||!t||Array.isArray(t))return;let n=t,r=n.filePath,i=n.content;if(typeof r==`string`&&r.trim().length!==0&&typeof i==`string`)return{path:r,content:i}}function presentTool(e,t,n){let r=toolBaseName(e);if(r===`write_file`)return presentWriteFileTool(e,t,n);if(n?.isSubagent===!0){let n=isSelfModificationAgent(e)?agentDisplayName(e):agentTaskLabel(agentDisplayName(e));return{title:`${DELEGATE_VERB} ${n}`,doneTitle:`Delegated ${n}`,subtitle:salientArg(t,`message`)??``,summarizeResult:()=>void 0}}if(r===`final_output`)return{title:FINAL_OUTPUT_TITLE,subtitle:``,summarizeResult:()=>void 0};let i=BUILTIN_TOOL_COPY[r];if(i!==void 0){let e=salientArg(t,i.argKey)??i.extractItem?.(t);if(e!==void 0)return{title:`${i.verb} ${e}`,doneTitle:`${i.pastVerb} ${e}`,subtitle:``,summarizeResult:()=>void 0,group:{verb:i.verb,pastVerb:i.pastVerb,singularNoun:i.singularNoun,pluralNoun:i.pluralNoun,item:e}}}if(n?.label!==void 0){let e={title:n.label,subtitle:``,summarizeResult:summarizeToolResult};return n.completeLabel===void 0?e:{...e,doneTitle:n.completeLabel}}return{title:e,subtitle:summarizeToolArgs(t),summarizeResult:summarizeToolResult}}const SELF_MODIFICATION_AGENT_NAME=`self-modification__agent`,AGENT_DISPLAY_NAMES=new Map([[`agent`,`subagent`],[SELF_MODIFICATION_AGENT_NAME,`agent editor`]]);function isSelfModificationAgent(e){return toolBaseName(e)===SELF_MODIFICATION_AGENT_NAME}function agentTaskLabel(e){let t=e.replace(/^self-modification__agent(?=:\d+$|$)/u,`agent editor`).replace(/__agent(?=:\d+$|$)/u,``);return t===`subagent`||t.startsWith(`agent editor`)?t:`subagent(${t})`}function agentDisplayName(e){let t=toolBaseName(e);return AGENT_DISPLAY_NAMES.get(t)??t}function presentPreparingTool(e,t){let n=toolBaseName(e);return n===`final_output`?{title:FINAL_OUTPUT_TITLE,subtitle:``,summarizeResult:()=>void 0}:t?.isSubagent===!0?{title:`${DELEGATE_VERB} ${agentTaskLabel(agentDisplayName(e))} …`,subtitle:``,summarizeResult:()=>void 0}:{title:`${(n===`write_file`?WRITE_FILE_VERB:BUILTIN_TOOL_COPY[n]?.verb)??e} …`,subtitle:``,summarizeResult:()=>void 0}}function isPanelRoutedTool(e){return toolBaseName(e)===`ask_question`}function toolBaseName(e){return e.split(/[.:/]/u).at(-1)??e}function webSearchActionArg(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e.action;if(typeof t!=`object`||!t||Array.isArray(t))return;let n=t,r=n.queries;if(Array.isArray(r)){let e=r.filter(e=>typeof e==`string`).map(salientLine).filter(e=>e!==void 0).join(`, `);if(e.length>0)return e}for(let e of[`query`,`url`,`pattern`]){let t=n[e];if(typeof t==`string`){let e=salientLine(t);if(e!==void 0)return e}}}function salientArg(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return;let n=e[t];if(typeof n==`string`)return salientLine(n)}function salientLine(e){let t=stripTerminalControls(e).split(/\r?\n/u).find(e=>e.trim().length>0)?.trim()??``;return t.length>0?t:void 0}export{SELF_MODIFICATION_AGENT_NAME,agentDisplayName,agentTaskLabel,isPanelRoutedTool,isSelfModificationAgent,presentPreparingTool,presentTool,readWriteFileInput,toolBaseName};
1
+ import{summarizeToolArgs,summarizeToolResult}from"./tool-format.js";import{diffWriteDetail}from"./line-diff.js";import{stripTerminalControls}from"#cli/ui/terminal-text.js";const WRITE_FILE_VERB=`Write`,DELEGATE_VERB=`Delegate`,FINAL_OUTPUT_TITLE=`Return final output`,BUILTIN_TOOL_COPY={agent:{verb:`Delegate`,pastVerb:`Delegated`,argKey:`message`,singularNoun:`task`,pluralNoun:`tasks`},ask_question:{verb:`Ask`,pastVerb:`Asked`,argKey:`question`,singularNoun:`question`,pluralNoun:`questions`},bash:{verb:`Run`,pastVerb:`Ran`,argKey:`command`,singularNoun:`command`,pluralNoun:`commands`},connection_execute:{verb:`Call`,pastVerb:`Called`,argKey:``,extractItem:e=>{let t=salientArg(e,`connection`),n=salientArg(e,`tool`);return t===void 0||n===void 0?void 0:`${t}.${n}`},singularNoun:`connection tool`,pluralNoun:`connection tools`},connection_search:{verb:`Search`,pastVerb:`Searched`,argKey:`query`,extractItem:e=>salientArg(e,`connection`),singularNoun:`tool search`,pluralNoun:`tool searches`},glob:{verb:`Glob`,pastVerb:`Globbed`,argKey:`pattern`,singularNoun:`pattern`,pluralNoun:`patterns`},grep:{verb:`Grep`,pastVerb:`Grepped`,argKey:`pattern`,singularNoun:`pattern`,pluralNoun:`patterns`},load_skill:{verb:`Load`,pastVerb:`Loaded`,argKey:`skill`,singularNoun:`skill`,pluralNoun:`skills`},read_file:{verb:`Read`,pastVerb:`Read`,argKey:`filePath`,singularNoun:`file`,pluralNoun:`files`},web_fetch:{verb:`Fetch`,pastVerb:`Fetched`,argKey:`url`,singularNoun:`URL`,pluralNoun:`URLs`},web_search:{verb:`Search`,pastVerb:`Searched`,argKey:`query`,extractItem:e=>salientArg(e,`objective`)??salientArg(e,`search_query`)??salientArg(e,`searchQuery`)??webSearchActionArg(e),singularNoun:`query`,pluralNoun:`queries`}};function presentWriteFileTool(e,t,n){let r=readWriteFileInput(e,t);if(r===void 0)return{title:e,subtitle:summarizeToolArgs(t),summarizeResult:summarizeToolResult};let i=diffWriteDetail(n?.previousContent,r.content,n?.existed).map(e=>e.kind===`gap`?e:{...e,text:stripTerminalControls(e.text)});return{title:`${WRITE_FILE_VERB} ${salientLine(r.path)??r.path}`,doneTitle:`Wrote ${salientLine(r.path)??r.path}`,subtitle:``,summarizeResult:()=>void 0,detail:i,keepDetailWhenDone:!0}}function readWriteFileInput(e,t){if(toolBaseName(e)!==`write_file`||typeof t!=`object`||!t||Array.isArray(t))return;let n=t,r=n.filePath,i=n.content;if(typeof r==`string`&&r.trim().length!==0&&typeof i==`string`)return{path:r,content:i}}function presentTool(e,t,n){let r=toolBaseName(e);if(r===`write_file`)return presentWriteFileTool(e,t,n);if(n?.isSubagent===!0){let n=isSelfModificationAgent(e)?agentDisplayName(e):agentTaskLabel(agentDisplayName(e));return{title:`${DELEGATE_VERB} ${n}`,doneTitle:`Delegated ${n}`,subtitle:salientArg(t,`message`)??``,summarizeResult:()=>void 0}}if(r===`final_output`)return{title:FINAL_OUTPUT_TITLE,subtitle:``,summarizeResult:()=>void 0};let i=BUILTIN_TOOL_COPY[r];if(i!==void 0){let e=salientArg(t,i.argKey)??i.extractItem?.(t);if(e!==void 0)return{title:`${i.verb} ${e}`,doneTitle:`${i.pastVerb} ${e}`,subtitle:``,summarizeResult:()=>void 0,group:{verb:i.verb,pastVerb:i.pastVerb,singularNoun:i.singularNoun,pluralNoun:i.pluralNoun,item:e}}}if(n?.label!==void 0){let e={title:n.label,subtitle:``,summarizeResult:summarizeToolResult};return n.completeLabel===void 0?e:{...e,doneTitle:n.completeLabel}}return{title:e,subtitle:summarizeToolArgs(t),summarizeResult:summarizeToolResult}}const SELF_MODIFICATION_AGENT_NAME=`self-modification__agent`,AGENT_DISPLAY_NAMES=new Map([[`agent`,`subagent`],[SELF_MODIFICATION_AGENT_NAME,`agent editor`]]);function isSelfModificationAgent(e){return toolBaseName(e)===SELF_MODIFICATION_AGENT_NAME}function agentTaskLabel(e){let t=e.replace(/^self-modification__agent(?=:\d+$|$)/u,`agent editor`).replace(/__agent(?=:\d+$|$)/u,``);return/^subagent(?::\d+)?$/u.test(t)||t.startsWith(`agent editor`)?t:`subagent(${t})`}function agentDisplayName(e){let t=toolBaseName(e);return AGENT_DISPLAY_NAMES.get(t)??t}function presentPreparingTool(e,t){let n=toolBaseName(e);return n===`final_output`?{title:FINAL_OUTPUT_TITLE,subtitle:``,summarizeResult:()=>void 0}:t?.isSubagent===!0?{title:`${DELEGATE_VERB} ${agentTaskLabel(agentDisplayName(e))} …`,subtitle:``,summarizeResult:()=>void 0}:{title:`${(n===`write_file`?WRITE_FILE_VERB:BUILTIN_TOOL_COPY[n]?.verb)??e} …`,subtitle:``,summarizeResult:()=>void 0}}function isPanelRoutedTool(e){return toolBaseName(e)===`ask_question`}function toolBaseName(e){return e.split(/[.:/]/u).at(-1)??e}function webSearchActionArg(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e.action;if(typeof t!=`object`||!t||Array.isArray(t))return;let n=t,r=n.queries;if(Array.isArray(r)){let e=r.filter(e=>typeof e==`string`).map(salientLine).filter(e=>e!==void 0).join(`, `);if(e.length>0)return e}for(let e of[`query`,`url`,`pattern`]){let t=n[e];if(typeof t==`string`){let e=salientLine(t);if(e!==void 0)return e}}}function salientArg(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return;let n=e[t];if(typeof n==`string`)return salientLine(n)}function salientLine(e){let t=stripTerminalControls(e).split(/\r?\n/u).find(e=>e.trim().length>0)?.trim()??``;return t.length>0?t:void 0}export{SELF_MODIFICATION_AGENT_NAME,agentDisplayName,agentTaskLabel,isPanelRoutedTool,isSelfModificationAgent,presentPreparingTool,presentTool,readWriteFileInput,toolBaseName};
@@ -9,9 +9,16 @@ export type ToolState = {
9
9
  readonly output?: unknown;
10
10
  readonly errorText?: string;
11
11
  };
12
- /** A task whose start line is written, named once and never renamed. */
12
+ /**
13
+ * A task whose start line is written, named once and never renamed. Calls that reach the task
14
+ * while it works join this record rather than reading as tasks of their own.
15
+ */
13
16
  export interface TaskRecord {
17
+ /** The call that started this stretch of the task. */
14
18
  readonly callId: string;
19
+ readonly taskId: string;
20
+ /** Every call this record answers, the starting call first. */
21
+ readonly callIds: string[];
15
22
  readonly kind: "agent" | "tool";
16
23
  readonly name: string;
17
24
  readonly toolName: string;
@@ -32,8 +39,9 @@ export interface AgentActivity {
32
39
  pending: boolean;
33
40
  }
34
41
  export declare function taskNeedsApproval(conversation: ConversationState, task: ConversationTask): boolean;
35
- export declare function uniqueTaskName(baseName: string, records: Iterable<TaskRecord>): string;
36
42
  export declare function startLine(record: TaskRecord): Block;
43
+ /** A later call that reached a working task: a message to it, not a new delegation. */
44
+ export declare function followUpLine(record: TaskRecord, part: EveDynamicToolPart, label: string | undefined): Block;
37
45
  export declare function nestedTaskRecord(callId: string, part: EveDynamicToolPart, task: ConversationTask, block: Block): TaskRecord;
38
46
  export declare function toolState(part: EveDynamicToolPart, conversation: ConversationState, working: boolean, taskWorking: boolean): ToolState;
39
47
  export declare function isActive(status: ToolStatus): boolean;
@@ -1,3 +1,3 @@
1
- import{agentDisplayName,agentTaskLabel,presentPreparingTool,presentTool}from"./tool-presentation.js";import{isTerminalToolCallPart}from"./terminal-tool-part.js";import{formatTurnDuration}from"./stream-format.js";import{summarizeChildTools}from"./tool-block-groups.js";import{stripTerminalControls}from"#cli/ui/terminal-text.js";import{agentToolSession}from"#client/conversation-state.js";function taskNeedsApproval(e,t){if(Object.values(e.inputs).some(e=>e.taskId===t.taskId&&e.status===`open`&&e.request.kind===`tool-approval`))return!0;let n=agentToolSession(e,t),r=n?.observation.status===`not-followed`?void 0:n?.observation.conversation;return r!==void 0&&Object.values(r.inputs).some(e=>e.status===`open`&&e.request.kind===`tool-approval`)}function uniqueTaskName(e,t){let n=new Set([...t].filter(e=>!e.ended).map(e=>e.name));if(!n.has(e))return e;for(let t=2;;t+=1){let r=`${e}:${t}`;if(!n.has(r))return r}}function startLine(e){let t=presentTool(e.toolName,e.input,{...labelContext(e.label),isSubagent:e.kind===`agent`});return{kind:`task`,taskKind:e.kind,title:e.kind===`agent`?`Delegate ${agentTaskLabel(e.name)}`:e.name,subtitle:stripTerminalControls(t.subtitle),live:!1}}function nestedTaskRecord(e,t,n,r){return{callId:e,kind:n.kind,name:n.kind===`agent`?agentDisplayName(stripTerminalControls(t.toolName)):stripTerminalControls(t.toolName),toolName:t.toolName,input:t.input,label:void 0,purpose:n.kind===`agent`?agentTaskSummary(t.input):r.subtitle||(r.title===t.toolName?void 0:r.title),startedAtMs:Date.now(),ended:!1}}function toolState(e,t,n,r){if(r)return{status:`running`};let i=settledToolState(e,t);return i.status===`running`&&!n?{status:`error`,errorText:`interrupted`}:i}function settledToolState(e,t){switch(e.state){case`approval-requested`:{let n=t.inputs[e.approval.id];return n?.status===`responded`?n.response?.optionId===`approve`?{status:`running`}:{status:`denied`,errorText:`Denied by user.`}:{status:`approval`}}case`approval-responded`:return e.approval.approved===!1?{status:`denied`,errorText:e.approval.reason??`Denied by user.`}:{status:`running`};case`output-available`:return e.partial===!0?{status:`running`}:{status:`done`,output:e.output};case`output-error`:return{status:`error`,errorText:e.errorText};case`output-denied`:return{status:`denied`,errorText:e.approval.reason??`Tool execution was cancelled.`};default:return{status:`running`}}}function isActive(e){return e===`running`||e===`approval`}function toolBlock(e,t,n){let{toolName:r,input:i}=e,a=e.state===`input-streaming`?presentPreparingTool(r,n):presentTool(r,i,n),o={title:stripTerminalControls(a.title),subtitle:stripTerminalControls(a.subtitle),status:t.status,toolInput:i,toolName:r,toolGroup:a.group};return a.doneTitle!==void 0&&(o.doneTitle=stripTerminalControls(a.doneTitle)),a.detail!==void 0&&(o.detailLines=a.detail,o.keepDetailWhenDone=a.keepDetailWhenDone===!0),t.output===void 0?t.errorText!==void 0&&(o.result=stripTerminalControls(t.errorText)):(o.result=a.summarizeResult(t.output),o.toolOutput=t.output),o}function endLine(e,t,n,r){let i=` ${r} `,a={id:`task:${e.callId}:end`,kind:`task`,taskKind:e.kind,title:e.kind===`agent`?agentTaskLabel(e.name):e.name,live:!1};switch(t.status){case`completed`:{let r=`finished in ${formatTurnDuration((e.settledAtMs??Date.now())-e.startedAtMs)}`,o=e.kind===`agent`?summarizeChildTools(n??[]):presentTool(e.toolName,e.input,labelContext(e.label)).summarizeResult(t.output);a.status=`done`,a.body=o===void 0||o.length===0?r:`${r}${i}${o}`;break}case`failed`:{let e=firstLine(stripTerminalControls(t.error?.message??``));a.status=`error`,a.body=e===void 0?`failed`:`failed${i}${e}`;break}default:a.status=`denied`,a.body=`stopped`}return a}function labelContext(e){return e===void 0?void 0:{label:e}}function agentTaskSummary(e){if(typeof e!=`object`||!e)return``;let t=Reflect.get(e,`message`);return typeof t==`string`?firstLine(stripTerminalControls(t))??``:``}function firstLine(e){return e.split(/\r?\n/u).find(e=>e.trim().length>0)?.trim()}function subagentSteps(e){let t=[],n=0;for(let r of e){let e=``;for(let[i,a]of r.parts.entries())n+=1,a.type===`reasoning`&&(e+=a.text),a.type===`text`&&(t.push({key:a.id??`${r.id}:${i}`,order:n,reasoning:e,message:a.text,finalized:a.state===`done`}),e=``),a.type===`dynamic-tool`&&e&&(t.push({key:`${r.id}:${i}:reasoning`,order:n-.5,reasoning:e,message:``,finalized:!0}),e=``);e&&t.push({key:`${r.id}:reasoning:${r.parts.length}`,order:n,reasoning:e,message:``,finalized:r.metadata?.status===`complete`})}return t.map(e=>({...e,reasoning:stripTerminalControls(e.reasoning).trim(),message:stripTerminalControls(e.message).trim()})).filter(e=>e.reasoning.length>0||e.message.length>0)}function childToolCallIds(e){let t=new Set;for(let n of Object.values(e.agents))if(n.observation.status!==`not-followed`)for(let e of n.observation.conversation?.messages??[])for(let n of e.parts)n.type===`dynamic-tool`&&t.add(n.toolCallId);return t}function isToolCallRow(e){return e.type===`dynamic-tool`&&(e.state===`input-streaming`||isTerminalToolCallPart(e))}function taskCallsById(e){let t=new Map;for(let n of Object.values(e.tasks))for(let e of Object.values(n.calls))t.set(e.callId,{task:n,call:e});return t}function activeToolSteps(e){let t=new Set;for(let[n,r]of e)isActive(r.status)&&t.add(n.stepIndex);return t}function userText(e){return e.parts.map(e=>e.type===`text`?e.text:e.type===`file`?`[file${e.filename===void 0?``:`: ${e.filename}`}]`:``).filter(e=>e.length>0).join(`
1
+ import{agentDisplayName,agentTaskLabel,presentPreparingTool,presentTool}from"./tool-presentation.js";import{isTerminalToolCallPart}from"./terminal-tool-part.js";import{formatTurnDuration}from"./stream-format.js";import{summarizeChildTools}from"./tool-block-groups.js";import{stripTerminalControls}from"#cli/ui/terminal-text.js";import{agentToolSession}from"#client/conversation-state.js";function taskNeedsApproval(e,t){if(Object.values(e.inputs).some(e=>e.taskId===t.taskId&&e.status===`open`&&e.request.kind===`tool-approval`))return!0;let n=agentToolSession(e,t),r=n?.observation.status===`not-followed`?void 0:n?.observation.conversation;return r!==void 0&&Object.values(r.inputs).some(e=>e.status===`open`&&e.request.kind===`tool-approval`)}function startLine(e){let t=presentTool(e.toolName,e.input,{...labelContext(e.label),isSubagent:e.kind===`agent`});return{kind:`task`,taskKind:e.kind,title:e.kind===`agent`?`Delegate ${agentTaskLabel(e.name)}`:e.name,subtitle:stripTerminalControls(t.subtitle),live:!1}}function followUpLine(e,t,n){if(e.kind===`agent`)return{kind:`task`,taskKind:`agent`,title:`Message ${agentTaskLabel(e.name)}`,subtitle:agentTaskSummary(t.input),live:!1};let r=presentTool(t.toolName,t.input,labelContext(n));return{kind:`task`,taskKind:`tool`,title:stripTerminalControls(r.title),subtitle:stripTerminalControls(r.subtitle),live:!1}}function nestedTaskRecord(e,t,n,r){return{callId:e,taskId:n.taskId,callIds:[t.toolCallId],kind:n.kind,name:n.kind===`agent`?agentDisplayName(stripTerminalControls(t.toolName)):stripTerminalControls(t.toolName),toolName:t.toolName,input:t.input,label:void 0,purpose:n.kind===`agent`?agentTaskSummary(t.input):r.subtitle||(r.title===t.toolName?void 0:r.title),startedAtMs:Date.now(),ended:!1}}function toolState(e,t,n,r){if(r)return{status:`running`};let i=settledToolState(e,t);return i.status===`running`&&!n?{status:`error`,errorText:`interrupted`}:i}function settledToolState(e,t){switch(e.state){case`approval-requested`:{let n=t.inputs[e.approval.id];return n?.status===`responded`?n.response?.optionId===`approve`?{status:`running`}:{status:`denied`,errorText:`Denied by user.`}:{status:`approval`}}case`approval-responded`:return e.approval.approved===!1?{status:`denied`,errorText:e.approval.reason??`Denied by user.`}:{status:`running`};case`output-available`:return e.partial===!0?{status:`running`}:{status:`done`,output:e.output};case`output-error`:return{status:`error`,errorText:e.errorText};case`output-denied`:return{status:`denied`,errorText:e.approval.reason??`Tool execution was cancelled.`};default:return{status:`running`}}}function isActive(e){return e===`running`||e===`approval`}function toolBlock(e,t,n){let{toolName:r,input:i}=e,a=e.state===`input-streaming`?presentPreparingTool(r,n):presentTool(r,i,n),o={title:stripTerminalControls(a.title),subtitle:stripTerminalControls(a.subtitle),status:t.status,toolInput:i,toolName:r,toolGroup:a.group};return a.doneTitle!==void 0&&(o.doneTitle=stripTerminalControls(a.doneTitle)),a.detail!==void 0&&(o.detailLines=a.detail,o.keepDetailWhenDone=a.keepDetailWhenDone===!0),t.output===void 0?t.errorText!==void 0&&(o.result=stripTerminalControls(t.errorText)):(o.result=a.summarizeResult(t.output),o.toolOutput=t.output),o}function endLine(e,t,n,r){let i=` ${r} `,a={id:`task:${e.callId}:end`,kind:`task`,taskKind:e.kind,title:e.kind===`agent`?agentTaskLabel(e.name):e.name,live:!1};switch(t.status){case`completed`:{let r=`finished in ${formatTurnDuration((e.settledAtMs??Date.now())-e.startedAtMs)}`,o=e.kind===`agent`?summarizeChildTools(n??[]):presentTool(e.toolName,e.input,labelContext(e.label)).summarizeResult(t.output);a.status=`done`,a.body=o===void 0||o.length===0?r:`${r}${i}${o}`;break}case`failed`:{let e=firstLine(stripTerminalControls(t.error?.message??``));a.status=`error`,a.body=e===void 0?`failed`:`failed${i}${e}`;break}default:a.status=`denied`,a.body=`stopped`}return a}function labelContext(e){return e===void 0?void 0:{label:e}}function agentTaskSummary(e){if(typeof e!=`object`||!e)return``;let t=Reflect.get(e,`message`);return typeof t==`string`?firstLine(stripTerminalControls(t))??``:``}function firstLine(e){return e.split(/\r?\n/u).find(e=>e.trim().length>0)?.trim()}function subagentSteps(e){let t=[],n=0;for(let r of e){let e=``;for(let[i,a]of r.parts.entries())n+=1,a.type===`reasoning`&&(e+=a.text),a.type===`text`&&(t.push({key:a.id??`${r.id}:${i}`,order:n,reasoning:e,message:a.text,finalized:a.state===`done`}),e=``),a.type===`dynamic-tool`&&e&&(t.push({key:`${r.id}:${i}:reasoning`,order:n-.5,reasoning:e,message:``,finalized:!0}),e=``);e&&t.push({key:`${r.id}:reasoning:${r.parts.length}`,order:n,reasoning:e,message:``,finalized:r.metadata?.status===`complete`})}return t.map(e=>({...e,reasoning:stripTerminalControls(e.reasoning).trim(),message:stripTerminalControls(e.message).trim()})).filter(e=>e.reasoning.length>0||e.message.length>0)}function childToolCallIds(e){let t=new Set;for(let n of Object.values(e.agents))if(n.observation.status!==`not-followed`)for(let e of n.observation.conversation?.messages??[])for(let n of e.parts)n.type===`dynamic-tool`&&t.add(n.toolCallId);return t}function isToolCallRow(e){return e.type===`dynamic-tool`&&(e.state===`input-streaming`||isTerminalToolCallPart(e))}function taskCallsById(e){let t=new Map;for(let n of Object.values(e.tasks))for(let e of Object.values(n.calls))t.set(e.callId,{task:n,call:e});return t}function activeToolSteps(e){let t=new Set;for(let[n,r]of e)isActive(r.status)&&t.add(n.stepIndex);return t}function userText(e){return e.parts.map(e=>e.type===`text`?e.text:e.type===`file`?`[file${e.filename===void 0?``:`: ${e.filename}`}]`:``).filter(e=>e.length>0).join(`
2
2
  `)}function authorizationTerminalMessage(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`;default:return}}function formatAuthorization(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.authorization;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.state===`completed`&&e.reason!==void 0){let t=stripTerminalControls(e.reason);t.length>0&&n.push(`Reason: ${t}`)}return n.join(`
3
- `)}function writeExistedFlag(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e.existed;return typeof t==`boolean`?t:void 0}export{activeToolSteps,agentTaskSummary,authorizationTerminalMessage,childToolCallIds,endLine,firstLine,formatAuthorization,isActive,isToolCallRow,labelContext,nestedTaskRecord,startLine,subagentSteps,taskCallsById,taskNeedsApproval,toolBlock,toolState,uniqueTaskName,userText,writeExistedFlag};
3
+ `)}function writeExistedFlag(e){if(typeof e!=`object`||!e||Array.isArray(e))return;let t=e.existed;return typeof t==`boolean`?t:void 0}export{activeToolSteps,agentTaskSummary,authorizationTerminalMessage,childToolCallIds,endLine,firstLine,followUpLine,formatAuthorization,isActive,isToolCallRow,labelContext,nestedTaskRecord,startLine,subagentSteps,taskCallsById,taskNeedsApproval,toolBlock,toolState,userText,writeExistedFlag};
@@ -1 +1 @@
1
- import{FileContentCache}from"./file-content-cache.js";import{agentDisplayName,agentTaskLabel,isPanelRoutedTool,presentTool,readWriteFileInput,toolBaseName}from"./tool-presentation.js";import{isTerminalToolCallPart}from"./terminal-tool-part.js";import{activeToolSteps,agentTaskSummary,authorizationTerminalMessage,childToolCallIds,endLine,firstLine,formatAuthorization,isActive,isToolCallRow,labelContext,nestedTaskRecord,startLine,subagentSteps,taskCallsById,taskNeedsApproval,toolBlock,toolState,uniqueTaskName,userText,writeExistedFlag}from"./transcript-parts.js";import{signInLabel,waitingLabel}from"./task-activity.js";import{isTaskControlTool}from"#protocol/task-tools.js";import{stripTerminalControls}from"#cli/ui/terminal-text.js";import{agentCallTurns,agentToolSession,conversationAuthorizations,isAgentCallContentPending}from"#client/conversation-state.js";import{authorizationKey}from"#client/session-utils.js";const TASK_END_GRACE_MS=2e3;var ConversationTranscript=class{#e=new Map;#t=new FileContentCache;#n=new Map;#r=new Map;#i=new Set;#a=new Map;#o=new Map;#s=[];#c=new Set;#l=[];reset(){this.#e=new Map,this.#t.clear(),this.#n.clear(),this.#r=new Map,this.#i.clear(),this.#a.clear(),this.#o.clear(),this.#s=[],this.#c.clear(),this.#l=[]}get tasks(){return this.#l}get finishing(){return this.#l.some(e=>e.finishing===!0)}taskLabel(e,t){let n=e.tasks[t];if(n===void 0)return;let r=Object.values(n.calls),i=r.findLast(e=>e.status===`working`)??r.at(-1),a=i===void 0?void 0:this.#a.get(i.callId);return a===void 0?n.kind===`agent`?agentTaskLabel(agentDisplayName(stripTerminalControls(n.name))):stripTerminalControls(n.name):a.kind===`agent`?agentTaskLabel(a.name):a.name}stopWorking(e){let t=[];for(let n of this.#a.values())n.ended||(n.ended=!0,t.push(endLine(n,{status:`cancelled`},void 0,e.dot??`·`)));return this.#l=[],t}project(e,t){let{conversation:n,working:r}=e,i=Date.now(),a=[];this.#h(n.messages);let o=childToolCallIds(n),s=taskCallsById(n),c=new Set(e.data.withdrawnCallIds),l=e.data.toolLabels;for(let e of n.messages){if(e.role===`user`){let t=this.#g(e);t!==void 0&&a.push(t);continue}let u=e.parts.filter(e=>isToolCallRow(e)&&(e.state!==`input-streaming`||r)&&!isTaskControlTool(e.toolName)&&!c.has(e.toolCallId)&&e.toolMetadata?.eve?.inputRequest?.kind!==`session-limit`&&!s.has(e.toolCallId)&&!o.has(e.toolCallId)&&!isPanelRoutedTool(e.toolName)),d=new Map(u.map(e=>[e,toolState(e,n,r,!1)])),f=activeToolSteps(d);for(let[n,o]of e.parts.entries())if(o.type===`text`||o.type===`reasoning`){let i=this.#_(e,n,t,r);i!==void 0&&a.push(i)}else if(o.type===`authorization`)t.connectionAuth!==`hidden`&&a.push(this.#v(o));else if(o.type===`dynamic-tool`){let e=s.get(o.toolCallId);if(e!==void 0){let n=this.#d(o,e.task,l,t,i);n!==void 0&&a.push(n);continue}let n=d.get(o);if(n===void 0||t.tools===`hidden`)continue;let r=l[o.toolCallId];a.push(this.#y(o,n,f.has(o.stepIndex),r,t))}let p=e.metadata?.turnId;p!==void 0&&n.turns[p]?.status===`cancelled`&&a.push(this.#m(`cancelled:${p}`,[],()=>({kind:`notice`,body:`Cancelled.`,live:!1})))}for(let[n,r]of e.failures.entries())a.push(this.#b(n,r,t));let u=this.#u(a),d=this.#f(e,s,t,i);for(let e of d){let t=u.slice(-8).map(e=>e.id);this.#s.push({block:e,after:t}),this.#c.add(e.id),u.push(e)}return u}#u(e){let t=[...e];for(let{block:e,after:n}of this.#s){let r=t.length;for(let e=n.length-1;e>=0;--e){let i=t.findIndex(t=>t.id===n[e]);if(i!==-1){r=i+1;break}}t.splice(r,0,e)}return t}#d(e,t,n,r,i){if(!(t.kind===`agent`?r.subagents!==`hidden`:r.tools!==`hidden`))return;let a=e.toolCallId,o=n[a]?.start,s=this.#a.get(a),c=agentTaskSummary(e.input),l=agentDisplayName(stripTerminalControls(e.toolName));if(t.kind===`tool`){let t=presentTool(e.toolName,e.input,labelContext(o));l=stripTerminalControls(t.title),c=stripTerminalControls(t.subtitle)}return s===void 0&&(s={callId:a,kind:t.kind,name:uniqueTaskName(l,this.#a.values()),toolName:e.toolName,input:e.input,label:o,purpose:c||o,startedAtMs:i,ended:!1},this.#a.set(a,s)),this.#m(`task:${a}:start`,[s],()=>startLine(s))}#f(e,t,n,r){let{conversation:i,working:a}=e,o=Object.values(i.turns).at(-1),s=!a&&(e.data.sessionFailed||o?.status===`cancelled`||o?.status===`failed`),c=[],l=[],u={remaining:128};for(let e of this.#a.values()){if(e.ended)continue;let o=t.get(e.callId);if(o===void 0)continue;let{task:d,call:f}=o,p=this.#p(e,d,f,i,n,u);if(n.subagents===`full`)for(let e of p.rows)this.#c.has(e.id)||c.push(e);let m=f.status!==`working`;m&&(e.settledAtMs??=r);let h=m&&p.pending&&a&&r-(e.settledAtMs??r)<2e3;if(m&&!h||!m&&s){e.ended=!0,c.push(endLine(e,m?f:{status:`cancelled`},p.tools,n.dot??`·`));continue}let g={callId:e.callId,kind:e.kind,name:e.name,toolName:e.toolName,input:e.input,label:e.label,purpose:e.purpose,children:p.children,omittedTasks:p.omittedTasks,omittedAttention:p.omittedAttention,startedAtMs:e.startedAtMs,childTools:new Map(p.tools.map(e=>[e.id,e]))};p.step!==void 0&&(g.step=p.step),h&&(g.finishing=!0),l.push(g)}return this.#l=l,c}#p(e,t,n,r,i,a,o=0){let s=t.kind===`agent`?agentToolSession(r,t):void 0,c=s===void 0||s.observation.status===`not-followed`?void 0:s.observation.conversation;if(s===void 0||c===void 0)return{tools:[],rows:[],pending:!1};let l=s.observation.status===`following`&&isAgentCallContentPending(t,n,c),u=new Set(agentCallTurns(t,c).get(n.callId)??[]),d=c.messages.filter(e=>e.role===`assistant`&&e.metadata?.turnId!==void 0&&u.has(e.metadata.turnId)),f=n.status===`working`||l,p=taskCallsById(c),m=[],h=[],g=[],_=0,v=!1,y=0;for(let t of d)for(let n of t.parts){if(y+=1,!isToolCallRow(n)||isTaskControlTool(n.toolName))continue;let t=p.get(n.toolCallId),r=toolState(n,c,f,t?.call.status===`working`),s=`subagent:${e.callId}:tool:${n.toolCallId}`,l=this.#m(s,[n,r.status,e.name],()=>{let a=this.#x(n.toolCallId,n,r,i,{isSubagent:t?.task.kind===`agent`});return{...toolBlock(n,r,a),kind:`subagent-tool`,subagentCallId:e.callId,agentName:e.name,depth:1,live:!1}}),u=t?.task.kind===`agent`?i.subagents!==`hidden`:i.tools!==`hidden`;if(t?.call.status===`working`&&u){if(o>=8||a.remaining<=0){_+=1,v||=r.status===`approval`||taskNeedsApproval(c,t.task);continue}--a.remaining;let s=`${e.callId}/${n.toolCallId}`,u=this.#o.get(s);u===void 0&&(u=nestedTaskRecord(s,n,t.task,l),this.#o.set(s,u));let d=this.#p(u,t.task,t.call,c,i,a,o+1);g.push({...u,step:d.step,children:d.children,omittedTasks:d.omittedTasks,omittedAttention:d.omittedAttention,childTools:new Map(d.tools.map(e=>[e.id,e]))})}else h.push(l);m.push({order:y,block:l,settled:!isActive(r.status)})}let b=subagentSteps(d);for(let t of b){if(!t.finalized)continue;let n=`subagent:${e.callId}:step:${t.key}`,r=this.#m(n,[t.reasoning,t.message,e.name],()=>{let n={kind:`subagent-step`,subagentCallId:e.callId,agentName:e.name,depth:1,body:t.message,live:!1};return t.reasoning.length>0&&(n.reasoning=t.reasoning),n});m.push({order:t.order,block:r,settled:!0})}let x=m.filter(e=>e.settled).sort((e,t)=>e.order-t.order).map(e=>e.block),S=b.at(-1),C={tools:h,rows:x,children:g,omittedTasks:_,omittedAttention:v,pending:l};return S!==void 0&&(C.step=firstLine(S.message)??`Thinking`),C}#m(e,t,n){let r=this.#e.get(e);if(r!==void 0&&sameKey(r.key,t))return r.block;let i={...n(),id:e};return this.#e.set(e,{key:t,block:i}),i}#h(e){let t=new Map;for(let n of e)n.role===`user`&&n.metadata?.optimistic===!0&&t.set(n.id,userText(n));let n=[...this.#r].filter(([e])=>!t.has(e)),r=new Set(t.values());for(let t of e){if(t.role!==`user`||t.metadata?.optimistic===!0||this.#i.has(t.id))continue;let e=userText(t),i=n.findIndex(([,t])=>t===e);i===-1&&r.has(e)||(this.#i.add(t.id),i!==-1&&(this.#n.set(t.id,n[i][0]),n.splice(i,1)))}this.#r=t}#g(e){if(e.metadata?.optimistic!==!0&&!this.#i.has(e.id))return;let t=stripTerminalControls(userText(e));if(t.trim().length===0)return;let n=`user:${this.#n.get(e.id)??e.id}`;return this.#m(n,[t],()=>({kind:`user`,body:t,live:!1}))}#_(e,t,n,r){let i=e.parts[t];if(i?.type!==`text`&&i?.type!==`reasoning`||i.type===`reasoning`&&n.reasoning!==`full`)return;let a=stripTerminalControls(i.text).trim();if(a.length===0)return;let o=i.state===`streaming`&&r,s=`${i.type}:${i.id??`${e.id}:${t}`}`;return this.#m(s,[a,o],()=>i.type===`text`?{kind:`assistant`,body:a,live:o}:{kind:`reasoning`,body:a,collapsed:!1,live:o})}#v(e){return this.#m(`connection-auth:${authorizationKey(e)}`,[e],()=>{let t=e.state===`completed`?e.outcome:e.state,n=authorizationTerminalMessage(t);return{kind:`connection-auth`,title:`${stripTerminalControls(e.name)} · authorization · ${t}`,body:formatAuthorization(e,n),preformatted:!0,live:n===void 0}})}#y(e,t,n,r,i){let a=n||isActive(t.status);return this.#m(`tool:${e.toolCallId}`,[e,t.status,a,i.tools,i.subagentNames,r],()=>{let n=this.#x(e.toolCallId,e,t,i,{label:r?.start,completeLabel:r?.complete});return{...toolBlock(e,t,n),kind:`tool`,live:a,expanded:i.tools===`full`}})}#b(e,t,n){let{message:r,hint:i,detail:a}=t;return this.#m(`failure:${e}`,[r,i,a],()=>{let e={kind:`error`,title:`Error`,body:stripTerminalControls(r),live:!1};return i!==void 0&&(e.hint=stripTerminalControls(i)),a!==void 0&&(e.detail=n.diagnosticsPath===void 0?stripTerminalControls(a):`details: ${n.diagnosticsPath}`),e})}#x(e,t,n,r,i={}){n.output!==void 0&&this.#t.observeRead(n.output);let a={};(i.isSubagent===!0||r.subagentNames?.includes(toolBaseName(t.toolName))===!0)&&(a.isSubagent=!0),i.label!==void 0&&(a.label=i.label),i.completeLabel!==void 0&&(a.completeLabel=i.completeLabel);let o=readWriteFileInput(t.toolName,t.input);if(o!==void 0){let t=this.#t.observeWrite({...o,callId:e});t!==void 0&&(a.previousContent=t);let r=writeExistedFlag(n.output);r!==void 0&&(a.existed=r)}return Object.keys(a).length>0?a:void 0}};function turnActivity(e,t){let{conversation:n}=e,r=n.activeTurnId===void 0?void 0:n.turns[n.activeTurnId],i=e.conversation.messages.findLast(e=>e.role===`assistant`),a=taskCallsById(n);if(i?.parts.some(e=>isTerminalToolCallPart(e)&&!isTaskControlTool(e.toolName)&&!a.has(e.toolCallId)&&(e.state===`input-available`||e.state===`approval-responded`))===!0)return`Running`;if(r===void 0||r.waiting===!0){let e=conversationAuthorizations(n).filter(e=>e.state===`required`&&e.awaitsCallback===!0);if(e.length>0)return signInLabel(e.map(e=>e.displayName))}if(r?.waiting===!0&&t.length>0)return waitingLabel(t);if(i===void 0)return`Thinking`;let o=i.parts.findLast(e=>e.type!==`step-start`);return o?.type===`text`&&o.state===`streaming`||o?.type===`dynamic-tool`&&o.state===`input-streaming`?`Generating`:`Thinking`}function sameKey(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}export{ConversationTranscript,TASK_END_GRACE_MS,turnActivity};
1
+ import{FileContentCache}from"./file-content-cache.js";import{agentDisplayName,agentTaskLabel,isPanelRoutedTool,readWriteFileInput,toolBaseName}from"./tool-presentation.js";import{isTerminalToolCallPart}from"./terminal-tool-part.js";import{activeToolSteps,authorizationTerminalMessage,childToolCallIds,endLine,firstLine,followUpLine,formatAuthorization,isActive,isToolCallRow,nestedTaskRecord,startLine,subagentSteps,taskCallsById,taskNeedsApproval,toolBlock,toolState,userText,writeExistedFlag}from"./transcript-parts.js";import{signInLabel,waitingLabel}from"./task-activity.js";import{TaskRecords}from"./task-records.js";import{isTaskControlTool}from"#protocol/task-tools.js";import{stripTerminalControls}from"#cli/ui/terminal-text.js";import{agentCallTurns,agentToolSession,conversationAuthorizations,isAgentCallContentPending}from"#client/conversation-state.js";import{authorizationKey}from"#client/session-utils.js";const TASK_END_GRACE_MS=2e3;var ConversationTranscript=class{#e=new Map;#t=new FileContentCache;#n=new Map;#r=new Map;#i=new Set;#a=new TaskRecords;#o=new Map;#s=[];#c=new Set;#l=[];reset(){this.#e=new Map,this.#t.clear(),this.#n.clear(),this.#r=new Map,this.#i.clear(),this.#a.clear(),this.#o.clear(),this.#s=[],this.#c.clear(),this.#l=[]}get tasks(){return this.#l}get finishing(){return this.#l.some(e=>e.finishing===!0)}taskLabel(e,t){let n=e.tasks[t];if(n===void 0)return;let r=Object.values(n.calls),i=r.findLast(e=>e.status===`working`)??r.at(-1),a=i===void 0?void 0:this.#a.get(i.callId);return a===void 0?n.kind===`agent`?agentTaskLabel(agentDisplayName(stripTerminalControls(n.name))):stripTerminalControls(n.name):a.kind===`agent`?agentTaskLabel(a.name):a.name}stopWorking(e){let t=[];for(let n of this.#a.values())n.ended||(n.ended=!0,t.push(endLine(n,{status:`cancelled`},void 0,e.dot??`·`)));return this.#l=[],t}project(e,t){let{conversation:n,working:r}=e,i=Date.now(),a=[];this.#h(n.messages);let o=childToolCallIds(n),s=taskCallsById(n),c=new Set(e.data.withdrawnCallIds),l=e.data.toolLabels;for(let e of n.messages){if(e.role===`user`){let t=this.#g(e);t!==void 0&&a.push(t);continue}let u=e.parts.filter(e=>isToolCallRow(e)&&(e.state!==`input-streaming`||r)&&!isTaskControlTool(e.toolName)&&!c.has(e.toolCallId)&&e.toolMetadata?.eve?.inputRequest?.kind!==`session-limit`&&!s.has(e.toolCallId)&&!o.has(e.toolCallId)&&!isPanelRoutedTool(e.toolName)),d=new Map(u.map(e=>[e,toolState(e,n,r,!1)])),f=activeToolSteps(d);for(let[n,o]of e.parts.entries())if(o.type===`text`||o.type===`reasoning`){let i=this.#_(e,n,t,r);i!==void 0&&a.push(i)}else if(o.type===`authorization`)t.connectionAuth!==`hidden`&&a.push(this.#v(o));else if(o.type===`dynamic-tool`){let e=s.get(o.toolCallId);if(e!==void 0){let n=this.#d(o,e.task,l,t,i);n!==void 0&&a.push(n);continue}let n=d.get(o);if(n===void 0||t.tools===`hidden`)continue;let r=l[o.toolCallId];a.push(this.#y(o,n,f.has(o.stepIndex),r,t))}let p=e.metadata?.turnId;p!==void 0&&n.turns[p]?.status===`cancelled`&&a.push(this.#m(`cancelled:${p}`,[],()=>({kind:`notice`,body:`Cancelled.`,live:!1})))}for(let[n,r]of e.failures.entries())a.push(this.#b(n,r,t));let u=this.#u(a),d=this.#f(e,s,t,i);for(let e of d){let t=u.slice(-8).map(e=>e.id);this.#s.push({block:e,after:t}),this.#c.add(e.id),u.push(e)}return u}#u(e){let t=[...e];for(let{block:e,after:n}of this.#s){let r=t.length;for(let e=n.length-1;e>=0;--e){let i=t.findIndex(t=>t.id===n[e]);if(i!==-1){r=i+1;break}}t.splice(r,0,e)}return t}#d(e,t,n,r,i){if(!(t.kind===`agent`?r.subagents!==`hidden`:r.tools!==`hidden`))return;let a=n[e.toolCallId]?.start,o=this.#a.record(e,t,a,i);return o.callId===e.toolCallId?this.#m(`task:${o.callId}:start`,[o],()=>startLine(o)):this.#m(`task:${e.toolCallId}:message`,[o],()=>followUpLine(o,e,a))}#f(e,t,n,r){let{conversation:i,working:a}=e,o=Object.values(i.turns).at(-1),s=!a&&(e.data.sessionFailed||o?.status===`cancelled`||o?.status===`failed`),c=[],l=[],u={remaining:128};for(let e of this.#a.values()){if(e.ended)continue;let o=t.get(e.callId)?.task;if(o===void 0)continue;let d=e.callIds.flatMap(e=>{let n=t.get(e)?.call;return n===void 0?[]:[n]}),f=d.at(-1),p=this.#p(e,o,d,i,n,u);if(n.subagents===`full`)for(let e of p.rows)this.#c.has(e.id)||c.push(e);let m=d.every(e=>e.status!==`working`);m&&(e.settledAtMs??=r);let h=m&&p.pending&&a&&r-(e.settledAtMs??r)<2e3;if(m&&!h||!m&&s){e.ended=!0,c.push(endLine(e,m?f:{status:`cancelled`},p.tools,n.dot??`·`));continue}let g={callId:e.callId,kind:e.kind,name:e.name,toolName:e.toolName,input:e.input,label:e.label,purpose:e.purpose,children:p.children,omittedTasks:p.omittedTasks,omittedAttention:p.omittedAttention,startedAtMs:e.startedAtMs,childTools:new Map(p.tools.map(e=>[e.id,e]))};p.step!==void 0&&(g.step=p.step),h&&(g.finishing=!0),l.push(g)}return this.#l=l,c}#p(e,t,n,r,i,a,o=0){let s=t.kind===`agent`?agentToolSession(r,t):void 0,c=s===void 0||s.observation.status===`not-followed`?void 0:s.observation.conversation;if(s===void 0||c===void 0)return{tools:[],rows:[],pending:!1};let l=s.observation.status===`following`&&n.some(e=>isAgentCallContentPending(t,e,c)),u=agentCallTurns(t,c),d=new Set(n.flatMap(e=>u.get(e.callId)??[])),f=c.messages.filter(e=>e.role===`assistant`&&e.metadata?.turnId!==void 0&&d.has(e.metadata.turnId)),p=n.some(e=>e.status===`working`)||l,m=taskCallsById(c),h=[],g=[],_=[],v=new Set,y=0,b=!1,x=0;for(let t of f)for(let n of t.parts){if(x+=1,!isToolCallRow(n)||isTaskControlTool(n.toolName))continue;let t=m.get(n.toolCallId),r=toolState(n,c,p,t?.call.status===`working`),s=`subagent:${e.callId}:tool:${n.toolCallId}`,l=this.#m(s,[n,r.status,e.name],()=>{let a=this.#x(n.toolCallId,n,r,i,{isSubagent:t?.task.kind===`agent`});return{...toolBlock(n,r,a),kind:`subagent-tool`,subagentCallId:e.callId,agentName:e.name,depth:1,live:!1}}),u=t?.task.kind===`agent`?i.subagents!==`hidden`:i.tools!==`hidden`;if(t?.call.status===`working`&&u){if(v.has(t.task.taskId))continue;if(v.add(t.task.taskId),o>=8||a.remaining<=0){y+=1,b||=r.status===`approval`||taskNeedsApproval(c,t.task);continue}--a.remaining;let s=`${e.callId}/${n.toolCallId}`,u=this.#o.get(s);u===void 0&&(u=nestedTaskRecord(s,n,t.task,l),this.#o.set(s,u));let d=this.#p(u,t.task,Object.values(t.task.calls).filter(e=>e.status===`working`),c,i,a,o+1);_.push({...u,step:d.step,children:d.children,omittedTasks:d.omittedTasks,omittedAttention:d.omittedAttention,childTools:new Map(d.tools.map(e=>[e.id,e]))})}else g.push(l);h.push({order:x,block:l,settled:!isActive(r.status)})}let S=subagentSteps(f);for(let t of S){if(!t.finalized)continue;let n=`subagent:${e.callId}:step:${t.key}`,r=this.#m(n,[t.reasoning,t.message,e.name],()=>{let n={kind:`subagent-step`,subagentCallId:e.callId,agentName:e.name,depth:1,body:t.message,live:!1};return t.reasoning.length>0&&(n.reasoning=t.reasoning),n});h.push({order:t.order,block:r,settled:!0})}let C=h.filter(e=>e.settled).sort((e,t)=>e.order-t.order).map(e=>e.block),w=S.at(-1),T={tools:g,rows:C,children:_,omittedTasks:y,omittedAttention:b,pending:l};return w!==void 0&&(T.step=firstLine(w.message)??`Thinking`),T}#m(e,t,n){let r=this.#e.get(e);if(r!==void 0&&sameKey(r.key,t))return r.block;let i={...n(),id:e};return this.#e.set(e,{key:t,block:i}),i}#h(e){let t=new Map;for(let n of e)n.role===`user`&&n.metadata?.optimistic===!0&&t.set(n.id,userText(n));let n=[...this.#r].filter(([e])=>!t.has(e)),r=new Set(t.values());for(let t of e){if(t.role!==`user`||t.metadata?.optimistic===!0||this.#i.has(t.id))continue;let e=userText(t),i=n.findIndex(([,t])=>t===e);i===-1&&r.has(e)||(this.#i.add(t.id),i!==-1&&(this.#n.set(t.id,n[i][0]),n.splice(i,1)))}this.#r=t}#g(e){if(e.metadata?.optimistic!==!0&&!this.#i.has(e.id))return;let t=stripTerminalControls(userText(e));if(t.trim().length===0)return;let n=`user:${this.#n.get(e.id)??e.id}`;return this.#m(n,[t],()=>({kind:`user`,body:t,live:!1}))}#_(e,t,n,r){let i=e.parts[t];if(i?.type!==`text`&&i?.type!==`reasoning`||i.type===`reasoning`&&n.reasoning!==`full`)return;let a=stripTerminalControls(i.text).trim();if(a.length===0)return;let o=i.state===`streaming`&&r,s=`${i.type}:${i.id??`${e.id}:${t}`}`;return this.#m(s,[a,o],()=>i.type===`text`?{kind:`assistant`,body:a,live:o}:{kind:`reasoning`,body:a,collapsed:!1,live:o})}#v(e){return this.#m(`connection-auth:${authorizationKey(e)}`,[e],()=>{let t=e.state===`completed`?e.outcome:e.state,n=authorizationTerminalMessage(t);return{kind:`connection-auth`,title:`${stripTerminalControls(e.name)} · authorization · ${t}`,body:formatAuthorization(e,n),preformatted:!0,live:n===void 0}})}#y(e,t,n,r,i){let a=n||isActive(t.status);return this.#m(`tool:${e.toolCallId}`,[e,t.status,a,i.tools,i.subagentNames,r],()=>{let n=this.#x(e.toolCallId,e,t,i,{label:r?.start,completeLabel:r?.complete});return{...toolBlock(e,t,n),kind:`tool`,live:a,expanded:i.tools===`full`}})}#b(e,t,n){let{message:r,hint:i,detail:a}=t;return this.#m(`failure:${e}`,[r,i,a],()=>{let e={kind:`error`,title:`Error`,body:stripTerminalControls(r),live:!1};return i!==void 0&&(e.hint=stripTerminalControls(i)),a!==void 0&&(e.detail=n.diagnosticsPath===void 0?stripTerminalControls(a):`details: ${n.diagnosticsPath}`),e})}#x(e,t,n,r,i={}){n.output!==void 0&&this.#t.observeRead(n.output);let a={};(i.isSubagent===!0||r.subagentNames?.includes(toolBaseName(t.toolName))===!0)&&(a.isSubagent=!0),i.label!==void 0&&(a.label=i.label),i.completeLabel!==void 0&&(a.completeLabel=i.completeLabel);let o=readWriteFileInput(t.toolName,t.input);if(o!==void 0){let t=this.#t.observeWrite({...o,callId:e});t!==void 0&&(a.previousContent=t);let r=writeExistedFlag(n.output);r!==void 0&&(a.existed=r)}return Object.keys(a).length>0?a:void 0}};function turnActivity(e,t){let{conversation:n}=e,r=n.activeTurnId===void 0?void 0:n.turns[n.activeTurnId],i=e.conversation.messages.findLast(e=>e.role===`assistant`),a=taskCallsById(n);if(i?.parts.some(e=>isTerminalToolCallPart(e)&&!isTaskControlTool(e.toolName)&&!a.has(e.toolCallId)&&(e.state===`input-available`||e.state===`approval-responded`))===!0)return`Running`;if(r===void 0||r.waiting===!0){let e=conversationAuthorizations(n).filter(e=>e.state===`required`&&e.awaitsCallback===!0);if(e.length>0)return signInLabel(e.map(e=>e.displayName))}if(r?.waiting===!0&&t.length>0)return waitingLabel(t);if(i===void 0)return`Thinking`;let o=i.parts.findLast(e=>e.type!==`step-start`);return o?.type===`text`&&o.state===`streaming`||o?.type===`dynamic-tool`&&o.state===`input-streaming`?`Generating`:`Thinking`}function sameKey(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}export{ConversationTranscript,TASK_END_GRACE_MS,turnActivity};
@@ -20,8 +20,8 @@
20
20
  "env-runner": "0.1.16",
21
21
  "@eve/catalog": "0.0.1",
22
22
  "@ai-sdk/google": "4.0.74",
23
- "gray-matter": "4.0.3",
24
23
  "jose": "6.2.3",
24
+ "js-yaml": "4.3.2",
25
25
  "jsonc-parser": "3.3.1",
26
26
  "@types/json-schema": "7.0.15",
27
27
  "just-secrets": "0.0.2",
@@ -57,7 +57,7 @@
57
57
  "zod": "4.5.4",
58
58
  "zod-validation-error": "5.0.0"
59
59
  },
60
- "scriptHash": "d9a033b67828fe151e3ef838df2622374eb6c39b42d6cfd0a49e9c23d8242c57",
60
+ "scriptHash": "0a49e17debf66c6cf63f7daea4e4e81cd1f060b1b23585bc85165e9a82d1fad1",
61
61
  "toolVersions": {
62
62
  "rolldown": "1.2.9",
63
63
  "typescript": "7.0.2"
@@ -1,6 +1,6 @@
1
- The MIT License (MIT)
1
+ (The MIT License)
2
2
 
3
- Copyright (c) 2014-2018, Jon Schlinkert.
3
+ Copyright (C) 2011-2015 by Vitaly Puzrin
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
@@ -0,0 +1,12 @@
1
+ // Hand-authored declaration for the vendored slice of `js-yaml` v4, which
2
+ // ships no types. Only `load` is vendored.
3
+
4
+ export interface LoadOptions {
5
+ /** File name used in error messages. */
6
+ filename?: string;
7
+ /** Allows duplicate mapping keys, keeping the last value. Defaults to `false`. */
8
+ json?: boolean;
9
+ }
10
+
11
+ /** Parses one YAML document with the default (data-only) schema. */
12
+ export function load(source: string, options?: LoadOptions): unknown;
@@ -0,0 +1,34 @@
1
+ function e(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,`default`)?e.default:e}var t={},n={},r={},i;function a(){if(i)return r;i=1;function e(e){return e==null}function t(e){return typeof e==`object`&&!!e}function n(t){return Array.isArray(t)?t:e(t)?[]:[t]}function a(e,t){if(t){let n=Object.keys(t);for(let r=0,i=n.length;r<i;r+=1){let i=n[r];e[i]=t[i]}}return e}function o(e,t){let n=``;for(let r=0;r<t;r+=1)n+=e;return n}function s(e){return e===0&&1/e==-1/0}return r.isNothing=e,r.isObject=t,r.toArray=n,r.repeat=o,r.isNegativeZero=s,r.extend=a,r}var o,s;function c(){if(s)return o;s=1;function e(e,t){let n=``,r=e.reason||`(unknown reason)`;return e.mark?(e.mark.name&&(n+=`in "`+e.mark.name+`" `),n+=`(`+(e.mark.line+1)+`:`+(e.mark.column+1)+`)`,!t&&e.mark.snippet&&(n+=`
2
+
3
+ `+e.mark.snippet),r+` `+n):r}function t(t,n){Error.call(this),this.name=`YAMLException`,this.reason=t,this.mark=n,this.message=e(this,!1),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack||``}return t.prototype=Object.create(Error.prototype),t.prototype.constructor=t,t.prototype.toString=function(t){return this.name+`: `+e(this,t)},o=t,o}var l,u;function d(){if(u)return l;u=1;let e=a();function t(e,t,n,r,i){let a=``,o=``,s=Math.floor(i/2)-1;return r-t>s&&(a=` ... `,t=r-s+a.length),n-r>s&&(o=` ...`,n=r+s-o.length),{str:a+e.slice(t,n).replace(/\t/g,`→`)+o,pos:r-t+a.length}}function n(t,n){return e.repeat(` `,n-t.length)+t}function r(r,i){if(i=Object.create(i||null),!r.buffer)return null;i.maxLength||(i.maxLength=79),typeof i.indent!=`number`&&(i.indent=1),typeof i.linesBefore!=`number`&&(i.linesBefore=3),typeof i.linesAfter!=`number`&&(i.linesAfter=2);let a=/\r?\n|\r|\0/g,o=[0],s=[],c,l=-1;for(;c=a.exec(r.buffer);)s.push(c.index),o.push(c.index+c[0].length),r.position<=c.index&&l<0&&(l=o.length-2);l<0&&(l=o.length-1);let u=``,d=Math.min(r.line+i.linesAfter,s.length).toString().length,f=i.maxLength-(i.indent+d+3);for(let a=1;a<=i.linesBefore&&!(l-a<0);a++){let c=t(r.buffer,o[l-a],s[l-a],r.position-(o[l]-o[l-a]),f);u=e.repeat(` `,i.indent)+n((r.line-a+1).toString(),d)+` | `+c.str+`
4
+ `+u}let p=t(r.buffer,o[l],s[l],r.position,f);u+=e.repeat(` `,i.indent)+n((r.line+1).toString(),d)+` | `+p.str+`
5
+ `,u+=e.repeat(`-`,i.indent+d+3+p.pos)+`^
6
+ `;for(let a=1;a<=i.linesAfter&&!(l+a>=s.length);a++){let c=t(r.buffer,o[l+a],s[l+a],r.position-(o[l]-o[l+a]),f);u+=e.repeat(` `,i.indent)+n((r.line+a+1).toString(),d)+` | `+c.str+`
7
+ `}return u.replace(/\n$/,``)}return l=r,l}var f,p;function m(){if(p)return f;p=1;let e=c(),t=[`kind`,`multi`,`resolve`,`construct`,`instanceOf`,`predicate`,`represent`,`representName`,`defaultStyle`,`styleAliases`],n=[`scalar`,`sequence`,`mapping`];function r(e){let t={};return e!==null&&Object.keys(e).forEach(function(n){e[n].forEach(function(e){t[String(e)]=n})}),t}function i(i,a){if(a||={},Object.keys(a).forEach(function(n){if(t.indexOf(n)===-1)throw new e(`Unknown option "`+n+`" is met in definition of "`+i+`" YAML type.`)}),this.options=a,this.tag=i,this.kind=a.kind||null,this.resolve=a.resolve||function(){return!0},this.construct=a.construct||function(e){return e},this.instanceOf=a.instanceOf||null,this.predicate=a.predicate||null,this.represent=a.represent||null,this.representName=a.representName||null,this.defaultStyle=a.defaultStyle||null,this.multi=a.multi||!1,this.styleAliases=r(a.styleAliases||null),n.indexOf(this.kind)===-1)throw new e(`Unknown kind "`+this.kind+`" is specified for "`+i+`" YAML type.`)}return f=i,f}var h,g;function _(){if(g)return h;g=1;let e=c(),t=m();function n(e,t){let n=[];return e[t].forEach(function(e){let t=n.length;n.forEach(function(n,r){n.tag===e.tag&&n.kind===e.kind&&n.multi===e.multi&&(t=r)}),n[t]=e}),n}function r(){let e={scalar:{},sequence:{},mapping:{},fallback:{},multi:{scalar:[],sequence:[],mapping:[],fallback:[]}};function t(t){t.multi?(e.multi[t.kind].push(t),e.multi.fallback.push(t)):e[t.kind][t.tag]=e.fallback[t.tag]=t}for(let e=0,n=arguments.length;e<n;e+=1)arguments[e].forEach(t);return e}function i(e){return this.extend(e)}return i.prototype.extend=function(a){let o=[],s=[];if(a instanceof t)s.push(a);else if(Array.isArray(a))s=s.concat(a);else if(a&&(Array.isArray(a.implicit)||Array.isArray(a.explicit)))a.implicit&&(o=o.concat(a.implicit)),a.explicit&&(s=s.concat(a.explicit));else throw new e(`Schema.extend argument should be a Type, [ Type ], or a schema definition ({ implicit: [...], explicit: [...] })`);o.forEach(function(n){if(!(n instanceof t))throw new e(`Specified list of YAML types (or a single Type object) contains a non-Type object.`);if(n.loadKind&&n.loadKind!==`scalar`)throw new e(`There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.`);if(n.multi)throw new e(`There is a multi type in the implicit list of a schema. Multi tags can only be listed as explicit.`)}),s.forEach(function(n){if(!(n instanceof t))throw new e(`Specified list of YAML types (or a single Type object) contains a non-Type object.`)});let c=Object.create(i.prototype);return c.implicit=(this.implicit||[]).concat(o),c.explicit=(this.explicit||[]).concat(s),c.compiledImplicit=n(c,`implicit`),c.compiledExplicit=n(c,`explicit`),c.compiledTypeMap=r(c.compiledImplicit,c.compiledExplicit),c},h=i,h}var v,y;function b(){return y?v:(y=1,v=new(m())(`tag:yaml.org,2002:str`,{kind:`scalar`,construct:function(e){return e===null?``:e}}),v)}var x,S;function C(){return S?x:(S=1,x=new(m())(`tag:yaml.org,2002:seq`,{kind:`sequence`,construct:function(e){return e===null?[]:e}}),x)}var w,T;function E(){return T?w:(T=1,w=new(m())(`tag:yaml.org,2002:map`,{kind:`mapping`,construct:function(e){return e===null?{}:e}}),w)}var D,O;function k(){return O?D:(O=1,D=new(_())({explicit:[b(),C(),E()]}),D)}var A,j;function M(){if(j)return A;j=1;let e=m();function t(e){if(e===null)return!0;let t=e.length;return t===1&&e===`~`||t===4&&(e===`null`||e===`Null`||e===`NULL`)}function n(){return null}function r(e){return e===null}return A=new e(`tag:yaml.org,2002:null`,{kind:`scalar`,resolve:t,construct:n,predicate:r,represent:{canonical:function(){return`~`},lowercase:function(){return`null`},uppercase:function(){return`NULL`},camelcase:function(){return`Null`},empty:function(){return``}},defaultStyle:`lowercase`}),A}var N,P;function F(){if(P)return N;P=1;let e=m();function t(e){if(e===null)return!1;let t=e.length;return t===4&&(e===`true`||e===`True`||e===`TRUE`)||t===5&&(e===`false`||e===`False`||e===`FALSE`)}function n(e){return e===`true`||e===`True`||e===`TRUE`}function r(e){return Object.prototype.toString.call(e)===`[object Boolean]`}return N=new e(`tag:yaml.org,2002:bool`,{kind:`scalar`,resolve:t,construct:n,predicate:r,represent:{lowercase:function(e){return e?`true`:`false`},uppercase:function(e){return e?`TRUE`:`FALSE`},camelcase:function(e){return e?`True`:`False`}},defaultStyle:`lowercase`}),N}var I,L;function R(){if(L)return I;L=1;let e=a(),t=m();function n(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function r(e){return e>=48&&e<=55}function i(e){return e>=48&&e<=57}function o(e){if(e===null)return!1;let t=e.length,a=0,o=!1;if(!t)return!1;let c=e[a];if((c===`-`||c===`+`)&&(c=e[++a]),c===`0`){if(a+1===t)return!0;if(c=e[++a],c===`b`){for(a++;a<t;a++){if(c=e[a],c!==`0`&&c!==`1`)return!1;o=!0}return o&&isFinite(s(e))}if(c===`x`){for(a++;a<t;a++){if(!n(e.charCodeAt(a)))return!1;o=!0}return o&&isFinite(s(e))}if(c===`o`){for(a++;a<t;a++){if(!r(e.charCodeAt(a)))return!1;o=!0}return o&&isFinite(s(e))}}for(;a<t;a++){if(!i(e.charCodeAt(a)))return!1;o=!0}return o?isFinite(s(e)):!1}function s(e){let t=e,n=1,r=t[0];if((r===`-`||r===`+`)&&(r===`-`&&(n=-1),t=t.slice(1),r=t[0]),t===`0`)return 0;if(r===`0`){if(t[1]===`b`)return n*parseInt(t.slice(2),2);if(t[1]===`x`)return n*parseInt(t.slice(2),16);if(t[1]===`o`)return n*parseInt(t.slice(2),8)}return n*parseInt(t,10)}function c(e){return s(e)}function l(t){return Object.prototype.toString.call(t)===`[object Number]`&&t%1==0&&!e.isNegativeZero(t)}return I=new t(`tag:yaml.org,2002:int`,{kind:`scalar`,resolve:o,construct:c,predicate:l,represent:{binary:function(e){return e>=0?`0b`+e.toString(2):`-0b`+e.toString(2).slice(1)},octal:function(e){return e>=0?`0o`+e.toString(8):`-0o`+e.toString(8).slice(1)},decimal:function(e){return e.toString(10)},hexadecimal:function(e){return e>=0?`0x`+e.toString(16).toUpperCase():`-0x`+e.toString(16).toUpperCase().slice(1)}},defaultStyle:`decimal`,styleAliases:{binary:[2,`bin`],octal:[8,`oct`],decimal:[10,`dec`],hexadecimal:[16,`hex`]}}),I}var z,B;function V(){if(B)return z;B=1;let e=a(),t=m(),n=RegExp(`^(?:[-+]?(?:[0-9]+)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9]+(?:[eE][-+]?[0-9]+)?|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$`),r=RegExp(`^(?:[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$`);function i(e){return e===null||!n.test(e)?!1:isFinite(parseFloat(e,10))?!0:r.test(e)}function o(e){let t=e.toLowerCase(),n=t[0]===`-`?-1:1;return`+-`.indexOf(t[0])>=0&&(t=t.slice(1)),t===`.inf`?n===1?1/0:-1/0:t===`.nan`?NaN:n*parseFloat(t,10)}let s=/^[-+]?[0-9]+e/;function c(t,n){if(isNaN(t))switch(n){case`lowercase`:return`.nan`;case`uppercase`:return`.NAN`;case`camelcase`:return`.NaN`}else if(t===1/0)switch(n){case`lowercase`:return`.inf`;case`uppercase`:return`.INF`;case`camelcase`:return`.Inf`}else if(t===-1/0)switch(n){case`lowercase`:return`-.inf`;case`uppercase`:return`-.INF`;case`camelcase`:return`-.Inf`}else if(e.isNegativeZero(t))return`-0.0`;let r=t.toString(10);return s.test(r)?r.replace(`e`,`.e`):r}function l(t){return Object.prototype.toString.call(t)===`[object Number]`&&(t%1!=0||e.isNegativeZero(t))}return z=new t(`tag:yaml.org,2002:float`,{kind:`scalar`,resolve:i,construct:o,predicate:l,represent:c,defaultStyle:`lowercase`}),z}var H,U;function W(){return U?H:(U=1,H=k().extend({implicit:[M(),F(),R(),V()]}),H)}var G,K;function ee(){return K?G:(K=1,G=W(),G)}var q,te;function ne(){if(te)return q;te=1;let e=m(),t=RegExp(`^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$`),n=RegExp(`^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$`);function r(e){return e===null?!1:t.exec(e)!==null||n.exec(e)!==null}function i(e){let r=0,i=null,a=t.exec(e);if(a===null&&(a=n.exec(e)),a===null)throw Error(`Date resolve error`);let o=+a[1],s=a[2]-1,c=+a[3];if(!a[4])return new Date(Date.UTC(o,s,c));let l=+a[4],u=+a[5],d=+a[6];if(a[7]){for(r=a[7].slice(0,3);r.length<3;)r+=`0`;r=+r}if(a[9]){let e=+a[10],t=+(a[11]||0);i=(e*60+t)*6e4,a[9]===`-`&&(i=-i)}let f=new Date(Date.UTC(o,s,c,l,u,d,r));return i&&f.setTime(f.getTime()-i),f}function a(e){return e.toISOString()}return q=new e(`tag:yaml.org,2002:timestamp`,{kind:`scalar`,resolve:r,construct:i,instanceOf:Date,represent:a}),q}var J,Y;function re(){if(Y)return J;Y=1;let e=m();function t(e){return e===`<<`||e===null}return J=new e(`tag:yaml.org,2002:merge`,{kind:`scalar`,resolve:t}),J}var X,ie;function ae(){if(ie)return X;ie=1;let e=m();function t(e){if(e===null)return!1;let t=0,n=e.length;for(let r=0;r<n;r++){let n=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
8
+ \r`.indexOf(e.charAt(r));if(!(n>64)){if(n<0)return!1;t+=6}}return t%8==0}function n(e){let t=e.replace(/[\r\n=]/g,``),n=t.length,r=0,i=[];for(let e=0;e<n;e++)e%4==0&&e&&(i.push(r>>16&255),i.push(r>>8&255),i.push(r&255)),r=r<<6|`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
9
+ \r`.indexOf(t.charAt(e));let a=n%4*6;return a===0?(i.push(r>>16&255),i.push(r>>8&255),i.push(r&255)):a===18?(i.push(r>>10&255),i.push(r>>2&255)):a===12&&i.push(r>>4&255),new Uint8Array(i)}function r(e){let t=``,n=0,r=e.length,i=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=
10
+ \r`;for(let a=0;a<r;a++)a%3==0&&a&&(t+=i[n>>18&63],t+=i[n>>12&63],t+=i[n>>6&63],t+=i[n&63]),n=(n<<8)+e[a];let a=r%3;return a===0?(t+=i[n>>18&63],t+=i[n>>12&63],t+=i[n>>6&63],t+=i[n&63]):a===2?(t+=i[n>>10&63],t+=i[n>>4&63],t+=i[n<<2&63],t+=i[64]):a===1&&(t+=i[n>>2&63],t+=i[n<<4&63],t+=i[64],t+=i[64]),t}function i(e){return Object.prototype.toString.call(e)===`[object Uint8Array]`}return X=new e(`tag:yaml.org,2002:binary`,{kind:`scalar`,resolve:t,construct:n,predicate:i,represent:r}),X}var Z,oe;function Q(){if(oe)return Z;oe=1;let e=m(),t=Object.prototype.hasOwnProperty,n=Object.prototype.toString;function r(e){if(e===null)return!0;let r={},i=e;for(let e=0,a=i.length;e<a;e+=1){let a=i[e],o=!1;if(n.call(a)!==`[object Object]`)return!1;let s;for(s in a)if(t.call(a,s)){if(!o)o=!0;else return!1}if(!o||t.call(r,s))return!1;Object.defineProperty(r,s,{value:!0})}return!0}function i(e){return e===null?[]:e}return Z=new e(`tag:yaml.org,2002:omap`,{kind:`sequence`,resolve:r,construct:i}),Z}var $,se;function ce(){if(se)return $;se=1;let e=m(),t=Object.prototype.toString;function n(e){if(e===null)return!0;let n=e,r=Array(n.length);for(let e=0,i=n.length;e<i;e+=1){let i=n[e];if(t.call(i)!==`[object Object]`)return!1;let a=Object.keys(i);if(a.length!==1)return!1;r[e]=[a[0],i[a[0]]]}return!0}function r(e){if(e===null)return[];let t=e,n=Array(t.length);for(let e=0,r=t.length;e<r;e+=1){let r=t[e],i=Object.keys(r);n[e]=[i[0],r[i[0]]]}return n}return $=new e(`tag:yaml.org,2002:pairs`,{kind:`sequence`,resolve:n,construct:r}),$}var le,ue;function de(){if(ue)return le;ue=1;let e=m(),t=Object.prototype.hasOwnProperty;function n(e){if(e===null)return!0;let n=e;for(let e in n)if(t.call(n,e)&&n[e]!==null)return!1;return!0}function r(e){return e===null?{}:e}return le=new e(`tag:yaml.org,2002:set`,{kind:`mapping`,resolve:n,construct:r}),le}var fe,pe;function me(){return pe?fe:(pe=1,fe=ee().extend({implicit:[ne(),re()],explicit:[ae(),Q(),ce(),de()]}),fe)}var he;function ge(){if(he)return n;he=1;let e=a(),t=c(),r=d(),i=me(),o=Object.prototype.hasOwnProperty,s=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,l=/[\x85\u2028\u2029]/,u=/[,\[\]{}]/,f=/^(?:!|!!|![0-9A-Za-z-]+!)$/,p=/^(?:!|[^,\[\]{}])(?:%[0-9a-f]{2}|[0-9a-z\-#;/?:@&=+$,_.!~*'()\[\]])*$/i;function m(e){return Object.prototype.toString.call(e)}function h(e){return e===10||e===13}function g(e){return e===9||e===32}function _(e){return e===9||e===32||e===10||e===13}function v(e){return e===44||e===91||e===93||e===123||e===125}function y(e){if(e>=48&&e<=57)return e-48;let t=e|32;return t>=97&&t<=102?t-97+10:-1}function b(e){return e===120?2:e===117?4:e===85?8:0}function x(e){return e>=48&&e<=57?e-48:-1}function S(e){switch(e){case 48:return`\0`;case 97:return`\x07`;case 98:return`\b`;case 116:return` `;case 9:return` `;case 110:return`
11
+ `;case 118:return`\v`;case 102:return`\f`;case 114:return`\r`;case 101:return`\x1B`;case 32:return` `;case 34:return`"`;case 47:return`/`;case 92:return`\\`;case 78:return`…`;case 95:return`\xA0`;case 76:return`\u2028`;case 80:return`\u2029`;default:return``}}function C(e){return e<=65535?String.fromCharCode(e):String.fromCharCode((e-65536>>10)+55296,(e-65536&1023)+56320)}function w(e,t,n){t===`__proto__`?Object.defineProperty(e,t,{configurable:!0,enumerable:!0,writable:!0,value:n}):e[t]=n}let T=Array(256),E=Array(256);for(let e=0;e<256;e++)T[e]=+!!S(e),E[e]=S(e);function D(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||i,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.maxDepth=typeof t.maxDepth==`number`?t.maxDepth:100,this.maxTotalMergeKeys=typeof t.maxTotalMergeKeys==`number`?t.maxTotalMergeKeys:1e4,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.depth=0,this.totalMergeKeys=0,this.firstTabInLine=-1,this.documents=[],this.anchorMapTransactions=[]}function O(e,n){let i={name:e.filename,buffer:e.input.slice(0,-1),position:e.position,line:e.line,column:e.position-e.lineStart};return i.snippet=r(i),new t(n,i)}function k(e,t){throw O(e,t)}function A(e,t){e.onWarning&&e.onWarning.call(null,O(e,t))}function j(e,t,n){let r=e.anchorMapTransactions;if(r.length!==0){let n=r[r.length-1];o.call(n,t)||(n[t]={existed:o.call(e.anchorMap,t),value:e.anchorMap[t]})}e.anchorMap[t]=n}function M(e){e.anchorMapTransactions.push(Object.create(null))}function N(e){let t=e.anchorMapTransactions.pop(),n=e.anchorMapTransactions;if(n.length===0)return;let r=n[n.length-1],i=Object.keys(t);for(let e=0,n=i.length;e<n;e+=1){let n=i[e];o.call(r,n)||(r[n]=t[n])}}function P(e){let t=e.anchorMapTransactions.pop(),n=Object.keys(t);for(let r=n.length-1;r>=0;--r){let i=t[n[r]];i.existed?e.anchorMap[n[r]]=i.value:delete e.anchorMap[n[r]]}}function F(e){return{position:e.position,line:e.line,lineStart:e.lineStart,lineIndent:e.lineIndent,firstTabInLine:e.firstTabInLine,tag:e.tag,anchor:e.anchor,kind:e.kind,result:e.result}}function I(e,t){e.position=t.position,e.line=t.line,e.lineStart=t.lineStart,e.lineIndent=t.lineIndent,e.firstTabInLine=t.firstTabInLine,e.tag=t.tag,e.anchor=t.anchor,e.kind=t.kind,e.result=t.result}let L={YAML:function(e,t,n){e.version!==null&&k(e,`duplication of %YAML directive`),n.length!==1&&k(e,`YAML directive accepts exactly one argument`);let r=/^([0-9]+)\.([0-9]+)$/.exec(n[0]);r===null&&k(e,`ill-formed argument of the YAML directive`);let i=parseInt(r[1],10),a=parseInt(r[2],10);i!==1&&k(e,`unacceptable YAML version of the document`),e.version=n[0],e.checkLineBreaks=a<2,a!==1&&a!==2&&A(e,`unsupported YAML version of the document`)},TAG:function(e,t,n){let r;n.length!==2&&k(e,`TAG directive accepts exactly two arguments`);let i=n[0];r=n[1],f.test(i)||k(e,`ill-formed tag handle (first argument) of the TAG directive`),o.call(e.tagMap,i)&&k(e,`there is a previously declared suffix for "`+i+`" tag handle`),p.test(r)||k(e,`ill-formed tag prefix (second argument) of the TAG directive`);try{r=decodeURIComponent(r)}catch{k(e,`tag prefix is malformed: `+r)}e.tagMap[i]=r}};function R(e,t,n,r){if(t<n){let i=e.input.slice(t,n);if(r)for(let t=0,n=i.length;t<n;t+=1){let n=i.charCodeAt(t);n===9||n>=32&&n<=1114111||k(e,`expected valid JSON character`)}else s.test(i)&&k(e,`the stream contains non-printable characters`);e.result+=i}}function z(e){e.totalMergeKeys++,e.maxTotalMergeKeys!==-1&&e.totalMergeKeys>e.maxTotalMergeKeys&&k(e,`merge keys exceeded maxTotalMergeKeys (`+e.maxTotalMergeKeys+`)`)}function B(t,n,r,i){e.isObject(r)||k(t,`cannot merge mappings; the provided source object is unacceptable`),z(t);let a=Object.keys(r);for(let e=0,s=a.length;e<s;e+=1){let s=a[e];z(t),o.call(n,s)||(w(n,s,r[s]),i[s]=!0)}}function V(e,t,n,r,i,a,s,c,l){if(Array.isArray(i)){i=Array.prototype.slice.call(i);for(let t=0,n=i.length;t<n;t+=1)Array.isArray(i[t])&&k(e,`nested arrays are not supported inside keys`),typeof i==`object`&&m(i[t])===`[object Object]`&&(i[t]=`[object Object]`)}if(typeof i==`object`&&m(i)===`[object Object]`&&(i=`[object Object]`),i=String(i),t===null&&(t={}),r===`tag:yaml.org,2002:merge`){if(Array.isArray(a)){a.length>100&&k(e,`abnormal merge sequence size`);for(let r=0,i=a.length;r<i;r+=1)B(e,t,a[r],n)}else B(e,t,a,n)}else!e.json&&!o.call(n,i)&&o.call(t,i)&&(e.line=s||e.line,e.lineStart=c||e.lineStart,e.position=l||e.position,k(e,`duplicated mapping key`)),w(t,i,a),delete n[i];return t}function H(e){let t=e.input.charCodeAt(e.position);t===10?e.position++:t===13?(e.position++,e.input.charCodeAt(e.position)===10&&e.position++):k(e,`a line break is expected`),e.line+=1,e.lineStart=e.position,e.firstTabInLine=-1}function U(e,t,n){let r=0,i=e.input.charCodeAt(e.position);for(;i!==0;){for(;g(i);)i===9&&e.firstTabInLine===-1&&(e.firstTabInLine=e.position),i=e.input.charCodeAt(++e.position);if(t&&i===35)do i=e.input.charCodeAt(++e.position);while(i!==10&&i!==13&&i!==0);if(h(i))for(H(e),i=e.input.charCodeAt(e.position),r++,e.lineIndent=0;i===32;)e.lineIndent++,i=e.input.charCodeAt(++e.position);else break}return n!==-1&&r!==0&&e.lineIndent<n&&A(e,`deficient indentation`),r}function W(e){let t=e.position,n=e.input.charCodeAt(t);return!!((n===45||n===46)&&n===e.input.charCodeAt(t+1)&&n===e.input.charCodeAt(t+2)&&(t+=3,n=e.input.charCodeAt(t),n===0||_(n)))}function G(t,n){n===1?t.result+=` `:n>1&&(t.result+=e.repeat(`
12
+ `,n-1))}function K(e,t,n){let r,i,a,o,s,c,l=e.kind,u=e.result,d=e.input.charCodeAt(e.position);if(_(d)||v(d)||d===35||d===38||d===42||d===33||d===124||d===62||d===39||d===34||d===37||d===64||d===96)return!1;if(d===63||d===45){let t=e.input.charCodeAt(e.position+1);if(_(t)||n&&v(t))return!1}for(e.kind=`scalar`,e.result=``,r=i=e.position,a=!1;d!==0;){if(d===58){let t=e.input.charCodeAt(e.position+1);if(_(t)||n&&v(t))break}else if(d===35){if(_(e.input.charCodeAt(e.position-1)))break}else if(e.position===e.lineStart&&W(e)||n&&v(d))break;else if(h(d)){if(o=e.line,s=e.lineStart,c=e.lineIndent,U(e,!1,-1),e.lineIndent>=t){a=!0,d=e.input.charCodeAt(e.position);continue}e.position=i,e.line=o,e.lineStart=s,e.lineIndent=c;break}a&&=(R(e,r,i,!1),G(e,e.line-o),r=i=e.position,!1),g(d)||(i=e.position+1),d=e.input.charCodeAt(++e.position)}return R(e,r,i,!1),e.result?!0:(e.kind=l,e.result=u,!1)}function ee(e,t){let n,r,i=e.input.charCodeAt(e.position);if(i!==39)return!1;for(e.kind=`scalar`,e.result=``,e.position++,n=r=e.position;(i=e.input.charCodeAt(e.position))!==0;)if(i===39){if(R(e,n,e.position,!0),i=e.input.charCodeAt(++e.position),i===39)n=e.position,e.position++,r=e.position;else return!0}else h(i)?(R(e,n,r,!0),G(e,U(e,!1,t)),n=r=e.position):e.position===e.lineStart&&W(e)?k(e,`unexpected end of the document within a single quoted scalar`):(e.position++,g(i)||(r=e.position));k(e,`unexpected end of the stream within a single quoted scalar`)}function q(e,t){let n,r,i,a=e.input.charCodeAt(e.position);if(a!==34)return!1;for(e.kind=`scalar`,e.result=``,e.position++,n=r=e.position;(a=e.input.charCodeAt(e.position))!==0;)if(a===34)return R(e,n,e.position,!0),e.position++,!0;else if(a===92){if(R(e,n,e.position,!0),a=e.input.charCodeAt(++e.position),h(a))U(e,!1,t);else if(a<256&&T[a])e.result+=E[a],e.position++;else if((i=b(a))>0){let t=i,n=0;for(;t>0;t--)a=e.input.charCodeAt(++e.position),(i=y(a))>=0?n=(n<<4)+i:k(e,`expected hexadecimal character`);e.result+=C(n),e.position++}else k(e,`unknown escape sequence`);n=r=e.position}else h(a)?(R(e,n,r,!0),G(e,U(e,!1,t)),n=r=e.position):e.position===e.lineStart&&W(e)?k(e,`unexpected end of the document within a double quoted scalar`):(e.position++,g(a)||(r=e.position));k(e,`unexpected end of the stream within a double quoted scalar`)}function te(e,t){let n=!0,r,i,a,o=e.tag,s,c=e.anchor,l,u,d,f,p=Object.create(null),m,h,g,v=e.input.charCodeAt(e.position);if(v===91)l=93,f=!1,s=[];else if(v===123)l=125,f=!0,s={};else return!1;for(e.anchor!==null&&j(e,e.anchor,s),v=e.input.charCodeAt(++e.position);v!==0;){if(U(e,!0,t),v=e.input.charCodeAt(e.position),v===l)return e.position++,e.tag=o,e.anchor=c,e.kind=f?`mapping`:`sequence`,e.result=s,!0;n?v===44&&k(e,`expected the node content, but found ','`):k(e,`missed comma between flow collection entries`),h=m=g=null,u=d=!1,v===63&&_(e.input.charCodeAt(e.position+1))&&(u=d=!0,e.position++,U(e,!0,t)),r=e.line,i=e.lineStart,a=e.position,Z(e,t,1,!1,!0),h=e.tag,m=e.result,U(e,!0,t),v=e.input.charCodeAt(e.position),(d||e.line===r)&&v===58&&(u=!0,v=e.input.charCodeAt(++e.position),U(e,!0,t),Z(e,t,1,!1,!0),g=e.result),f?V(e,s,p,h,m,g,r,i,a):u?s.push(V(e,null,p,h,m,g,r,i,a)):s.push(m),U(e,!0,t),v=e.input.charCodeAt(e.position),v===44?(n=!0,v=e.input.charCodeAt(++e.position)):n=!1}k(e,`unexpected end of the stream within a flow collection`)}function ne(t,n){let r,i=1,a=!1,o=!1,s=n,c=0,l=!1,u,d=t.input.charCodeAt(t.position);if(d===124)r=!1;else if(d===62)r=!0;else return!1;for(t.kind=`scalar`,t.result=``;d!==0;)if(d=t.input.charCodeAt(++t.position),d===43||d===45)i===1?i=d===43?3:2:k(t,`repeat of a chomping mode identifier`);else if((u=x(d))>=0)u===0?k(t,`bad explicit indentation width of a block scalar; it cannot be less than one`):o?k(t,`repeat of an indentation width identifier`):(s=n+u-1,o=!0);else break;if(g(d)){do d=t.input.charCodeAt(++t.position);while(g(d));if(d===35)do d=t.input.charCodeAt(++t.position);while(!h(d)&&d!==0)}for(;d!==0;){for(H(t),t.lineIndent=0,d=t.input.charCodeAt(t.position);(!o||t.lineIndent<s)&&d===32;)t.lineIndent++,d=t.input.charCodeAt(++t.position);if(!o&&t.lineIndent>s&&(s=t.lineIndent),h(d)){c++;continue}if(!o&&s===0&&k(t,`missing indentation for block scalar`),t.lineIndent<s){i===3?t.result+=e.repeat(`
13
+ `,a?1+c:c):i===1&&a&&(t.result+=`
14
+ `);break}r?g(d)?(l=!0,t.result+=e.repeat(`
15
+ `,a?1+c:c)):l?(l=!1,t.result+=e.repeat(`
16
+ `,c+1)):c===0?a&&(t.result+=` `):t.result+=e.repeat(`
17
+ `,c):t.result+=e.repeat(`
18
+ `,a?1+c:c),a=!0,o=!0,c=0;let n=t.position;for(;!h(d)&&d!==0;)d=t.input.charCodeAt(++t.position);R(t,n,t.position,!1)}return!0}function J(e,t){let n=e.tag,r=e.anchor,i=[],a=!1;if(e.firstTabInLine!==-1)return!1;e.anchor!==null&&j(e,e.anchor,i);let o=e.input.charCodeAt(e.position);for(;o!==0&&(e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,k(e,`tab characters must not be used in indentation`)),o===45&&_(e.input.charCodeAt(e.position+1)));){if(a=!0,e.position++,U(e,!0,-1)&&e.lineIndent<=t){i.push(null),o=e.input.charCodeAt(e.position);continue}let n=e.line;if(Z(e,t,3,!1,!0),i.push(e.result),U(e,!0,-1),o=e.input.charCodeAt(e.position),(e.line===n||e.lineIndent>t)&&o!==0)k(e,`bad indentation of a sequence entry`);else if(e.lineIndent<t)break}return a?(e.tag=n,e.anchor=r,e.kind=`sequence`,e.result=i,!0):!1}function Y(e,t,n){let r,i,a,o,s=e.tag,c=e.anchor,l={},u=Object.create(null),d=null,f=null,p=null,m=!1,h=!1;if(e.firstTabInLine!==-1)return!1;e.anchor!==null&&j(e,e.anchor,l);let v=e.input.charCodeAt(e.position);for(;v!==0;){!m&&e.firstTabInLine!==-1&&(e.position=e.firstTabInLine,k(e,`tab characters must not be used in indentation`));let y=e.input.charCodeAt(e.position+1),b=e.line;if((v===63||v===58)&&_(y))v===63?(m&&(V(e,l,u,d,f,null,i,a,o),d=f=p=null),h=!0,m=!0,r=!0):m?(m=!1,r=!0):k(e,`incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line`),e.position+=1,v=y;else{if(i=e.line,a=e.lineStart,o=e.position,!Z(e,n,2,!1,!0))break;if(e.line===b){for(v=e.input.charCodeAt(e.position);g(v);)v=e.input.charCodeAt(++e.position);if(v===58)v=e.input.charCodeAt(++e.position),_(v)||k(e,`a whitespace character is expected after the key-value separator within a block mapping`),m&&(V(e,l,u,d,f,null,i,a,o),d=f=p=null),h=!0,m=!1,r=!1,d=e.tag,f=e.result;else if(h)k(e,`can not read an implicit mapping pair; a colon is missed`);else return e.tag=s,e.anchor=c,!0}else if(h)k(e,`can not read a block mapping entry; a multiline key may not be an implicit key`);else return e.tag=s,e.anchor=c,!0}if((e.line===b||e.lineIndent>t)&&(m&&(i=e.line,a=e.lineStart,o=e.position),Z(e,t,4,!0,r)&&(m?f=e.result:p=e.result),m||(V(e,l,u,d,f,p,i,a,o),d=f=p=null),U(e,!0,-1),v=e.input.charCodeAt(e.position)),(e.line===b||e.lineIndent>t)&&v!==0)k(e,`bad indentation of a mapping entry`);else if(e.lineIndent<t)break}return m&&V(e,l,u,d,f,null,i,a,o),h&&(e.tag=s,e.anchor=c,e.kind=`mapping`,e.result=l),h}function re(e){let t=!1,n=!1,r,i,a=e.input.charCodeAt(e.position);if(a!==33)return!1;e.tag!==null&&k(e,`duplication of a tag property`),a=e.input.charCodeAt(++e.position),a===60?(t=!0,a=e.input.charCodeAt(++e.position)):a===33?(n=!0,r=`!!`,a=e.input.charCodeAt(++e.position)):r=`!`;let s=e.position;if(t){do a=e.input.charCodeAt(++e.position);while(a!==0&&a!==62);e.position<e.length?(i=e.input.slice(s,e.position),a=e.input.charCodeAt(++e.position)):k(e,`unexpected end of the stream within a verbatim tag`)}else{for(;a!==0&&!_(a);)a===33&&(n?k(e,`tag suffix cannot contain exclamation marks`):(r=e.input.slice(s-1,e.position+1),f.test(r)||k(e,`named tag handle cannot contain such characters`),n=!0,s=e.position+1)),a=e.input.charCodeAt(++e.position);i=e.input.slice(s,e.position),u.test(i)&&k(e,`tag suffix cannot contain flow indicator characters`)}i&&!p.test(i)&&k(e,`tag name cannot contain such characters: `+i);try{i=decodeURIComponent(i)}catch{k(e,`tag name is malformed: `+i)}return t?e.tag=i:o.call(e.tagMap,r)?e.tag=e.tagMap[r]+i:r===`!`?e.tag=`!`+i:r===`!!`?e.tag=`tag:yaml.org,2002:`+i:k(e,`undeclared tag handle "`+r+`"`),!0}function X(e){let t=e.input.charCodeAt(e.position);if(t!==38)return!1;e.anchor!==null&&k(e,`duplication of an anchor property`),t=e.input.charCodeAt(++e.position);let n=e.position;for(;t!==0&&!_(t)&&!v(t);)t=e.input.charCodeAt(++e.position);return e.position===n&&k(e,`name of an anchor node must contain at least one character`),e.anchor=e.input.slice(n,e.position),!0}function ie(e){let t=e.input.charCodeAt(e.position);if(t!==42)return!1;t=e.input.charCodeAt(++e.position);let n=e.position;for(;t!==0&&!_(t)&&!v(t);)t=e.input.charCodeAt(++e.position);e.position===n&&k(e,`name of an alias node must contain at least one character`);let r=e.input.slice(n,e.position);return o.call(e.anchorMap,r)||k(e,`unidentified alias "`+r+`"`),e.result=e.anchorMap[r],U(e,!0,-1),!0}function ae(e,t,n,r){let i=F(e);return M(e),I(e,t),e.tag=null,e.anchor=null,e.kind=null,e.result=null,Y(e,n,r)&&e.kind===`mapping`?(N(e),!0):(P(e),I(e,i),!1)}function Z(e,t,n,r,i){let a,s,c=1,l=!1,u=!1,d=null,f,p,m;e.depth>=e.maxDepth&&k(e,`nesting exceeded maxDepth (`+e.maxDepth+`)`),e.depth+=1,e.listener!==null&&e.listener(`open`,e),e.tag=null,e.anchor=null,e.kind=null,e.result=null;let h=a=s=n===4||n===3;if(r&&U(e,!0,-1)&&(l=!0,e.lineIndent>t?c=1:e.lineIndent===t?c=0:e.lineIndent<t&&(c=-1)),c===1)for(;;){let n=e.input.charCodeAt(e.position),r=F(e);if(l&&(n===33&&e.tag!==null||n===38&&e.anchor!==null)||!re(e)&&!X(e))break;d===null&&(d=r),U(e,!0,-1)?(l=!0,s=h,e.lineIndent>t?c=1:e.lineIndent===t?c=0:e.lineIndent<t&&(c=-1)):s=!1}if(s&&=l||i,c===1||n===4){if(p=n===1||n===2?t:t+1,m=e.position-e.lineStart,c===1){if(s&&(J(e,m)||Y(e,m,p))||te(e,p))u=!0;else{let t=e.input.charCodeAt(e.position);d!==null&&h&&!s&&t!==124&&t!==62&&ae(e,d,d.position-d.lineStart,p)||a&&ne(e,p)||ee(e,p)||q(e,p)?u=!0:ie(e)?(u=!0,(e.tag!==null||e.anchor!==null)&&k(e,`alias node should not have any properties`)):K(e,p,n===1)&&(u=!0,e.tag===null&&(e.tag=`?`)),e.anchor!==null&&j(e,e.anchor,e.result)}}else c===0&&(u=s&&J(e,m))}if(e.tag===null)e.anchor!==null&&j(e,e.anchor,e.result);else if(e.tag===`?`){e.result!==null&&e.kind!==`scalar`&&k(e,`unacceptable node kind for !<?> tag; it should be "scalar", not "`+e.kind+`"`);for(let t=0,n=e.implicitTypes.length;t<n;t+=1)if(f=e.implicitTypes[t],f.resolve(e.result)){e.result=f.construct(e.result),e.tag=f.tag,e.anchor!==null&&j(e,e.anchor,e.result);break}}else if(e.tag!==`!`){if(o.call(e.typeMap[e.kind||`fallback`],e.tag))f=e.typeMap[e.kind||`fallback`][e.tag];else{f=null;let t=e.typeMap.multi[e.kind||`fallback`];for(let n=0,r=t.length;n<r;n+=1)if(e.tag.slice(0,t[n].tag.length)===t[n].tag){f=t[n];break}}f||k(e,`unknown tag !<`+e.tag+`>`),e.result!==null&&f.kind!==e.kind&&k(e,`unacceptable node kind for !<`+e.tag+`> tag; it should be "`+f.kind+`", not "`+e.kind+`"`),f.resolve(e.result,e.tag)?(e.result=f.construct(e.result,e.tag),e.anchor!==null&&j(e,e.anchor,e.result)):k(e,`cannot resolve a node with !<`+e.tag+`> explicit tag`)}return e.listener!==null&&e.listener(`close`,e),--e.depth,e.tag!==null||e.anchor!==null||u}function oe(e){let t=e.position,n=!1,r;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap=Object.create(null),e.anchorMap=Object.create(null);(r=e.input.charCodeAt(e.position))!==0&&(U(e,!0,-1),r=e.input.charCodeAt(e.position),!(e.lineIndent>0||r!==37));){n=!0,r=e.input.charCodeAt(++e.position);let t=e.position;for(;r!==0&&!_(r);)r=e.input.charCodeAt(++e.position);let i=e.input.slice(t,e.position),a=[];for(i.length<1&&k(e,`directive name must not be less than one character in length`);r!==0;){for(;g(r);)r=e.input.charCodeAt(++e.position);if(r===35){do r=e.input.charCodeAt(++e.position);while(r!==0&&!h(r));break}if(h(r))break;for(t=e.position;r!==0&&!_(r);)r=e.input.charCodeAt(++e.position);a.push(e.input.slice(t,e.position))}r!==0&&H(e),o.call(L,i)?L[i](e,i,a):A(e,`unknown document directive "`+i+`"`)}if(U(e,!0,-1),e.lineIndent===0&&e.input.charCodeAt(e.position)===45&&e.input.charCodeAt(e.position+1)===45&&e.input.charCodeAt(e.position+2)===45?(e.position+=3,U(e,!0,-1)):n&&k(e,`directives end mark is expected`),Z(e,e.lineIndent-1,4,!1,!0),U(e,!0,-1),e.checkLineBreaks&&l.test(e.input.slice(t,e.position))&&A(e,`non-ASCII line breaks are interpreted as content`),e.documents.push(e.result),e.position===e.lineStart&&W(e)){e.input.charCodeAt(e.position)===46&&(e.position+=3,U(e,!0,-1));return}e.position<e.length-1&&k(e,`end of the stream or a document separator is expected`)}function Q(e,t){e=String(e),t||={},e.length!==0&&(e.charCodeAt(e.length-1)!==10&&e.charCodeAt(e.length-1)!==13&&(e+=`
19
+ `),e.charCodeAt(0)===65279&&(e=e.slice(1)));let n=new D(e,t),r=e.indexOf(`\0`);for(r!==-1&&(n.position=r,k(n,`null byte is not allowed in input`)),n.input+=`\0`;n.input.charCodeAt(n.position)===32;)n.lineIndent+=1,n.position+=1;for(;n.position<n.length-1;)oe(n);return n.documents}function $(e,t,n){typeof t==`object`&&t&&n===void 0&&(n=t,t=null);let r=Q(e,n);if(typeof t!=`function`)return r;for(let e=0,n=r.length;e<n;e+=1)t(r[e])}function se(e,n){let r=Q(e,n);if(r.length!==0){if(r.length===1)return r[0];throw new t(`expected a single document in the stream, but found more`)}}return n.loadAll=$,n.load=se,n}var _e={},ve;function ye(){if(ve)return _e;ve=1;let e=a(),t=c(),n=me(),r=Object.prototype.toString,i=Object.prototype.hasOwnProperty,o=65279,s={};s[0]=`\\0`,s[7]=`\\a`,s[8]=`\\b`,s[9]=`\\t`,s[10]=`\\n`,s[11]=`\\v`,s[12]=`\\f`,s[13]=`\\r`,s[27]=`\\e`,s[34]=`\\"`,s[92]=`\\\\`,s[133]=`\\N`,s[160]=`\\_`,s[8232]=`\\L`,s[8233]=`\\P`;let l=[`y`,`Y`,`yes`,`Yes`,`YES`,`on`,`On`,`ON`,`n`,`N`,`no`,`No`,`NO`,`off`,`Off`,`OFF`],u=/^[-+]?[0-9_]+(?::[0-9_]+)+(?:\.[0-9_]*)?$/;function d(e,t){if(t===null)return{};let n={},r=Object.keys(t);for(let a=0,o=r.length;a<o;a+=1){let o=r[a],s=String(t[o]);o.slice(0,2)===`!!`&&(o=`tag:yaml.org,2002:`+o.slice(2));let c=e.compiledTypeMap.fallback[o];c&&i.call(c.styleAliases,s)&&(s=c.styleAliases[s]),n[o]=s}return n}function f(n){let r,i,a=n.toString(16).toUpperCase();if(n<=255)r=`x`,i=2;else if(n<=65535)r=`u`,i=4;else if(n<=4294967295)r=`U`,i=8;else throw new t(`code point within a string may not be greater than 0xFFFFFFFF`);return`\\`+r+e.repeat(`0`,i-a.length)+a}function p(t){this.schema=t.schema||n,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=e.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=d(this.schema,t.styles||null),this.sortKeys=t.sortKeys||!1,this.lineWidth=t.lineWidth||80,this.noRefs=t.noRefs||!1,this.noCompatMode=t.noCompatMode||!1,this.condenseFlow=t.condenseFlow||!1,this.quotingType=t.quotingType===`"`?2:1,this.forceQuotes=t.forceQuotes||!1,this.replacer=typeof t.replacer==`function`?t.replacer:null,this.implicitTypes=this.schema.compiledImplicit,this.explicitTypes=this.schema.compiledExplicit,this.tag=null,this.result=``,this.duplicates=[],this.usedDuplicates=null}function m(t,n){let r=e.repeat(` `,n),i=0,a=``,o=t.length;for(;i<o;){let e,n=t.indexOf(`
20
+ `,i);n===-1?(e=t.slice(i),i=o):(e=t.slice(i,n+1),i=n+1),e.length&&e!==`
21
+ `&&(a+=r),a+=e}return a}function h(t,n){return`
22
+ `+e.repeat(` `,t.indent*n)}function g(e,t){for(let n=0,r=e.implicitTypes.length;n<r;n+=1)if(e.implicitTypes[n].resolve(t))return!0;return!1}function _(e){return e===32||e===9}function v(e){return e>=32&&e<=126||e>=161&&e<=55295&&e!==8232&&e!==8233||e>=57344&&e<=65533&&e!==o||e>=65536&&e<=1114111}function y(e){return v(e)&&e!==o&&e!==13&&e!==10}function b(e,t,n){let r=y(e),i=r&&!_(e);return(n?r:r&&e!==44&&e!==91&&e!==93&&e!==123&&e!==125)&&e!==35&&!(t===58&&!i)||y(t)&&!_(t)&&e===35||t===58&&i}function x(e){return v(e)&&e!==o&&!_(e)&&e!==45&&e!==63&&e!==58&&e!==44&&e!==91&&e!==93&&e!==123&&e!==125&&e!==35&&e!==38&&e!==42&&e!==33&&e!==124&&e!==61&&e!==62&&e!==39&&e!==34&&e!==37&&e!==64&&e!==96}function S(e){return!_(e)&&e!==58}function C(e,t){let n=e.charCodeAt(t),r;return n>=55296&&n<=56319&&t+1<e.length&&(r=e.charCodeAt(t+1),r>=56320&&r<=57343)?(n-55296)*1024+r-56320+65536:n}function w(e){return/^\n* /.test(e)}function T(e,t,n,r,i,a,o,s){let c,l=0,u=null,d=!1,f=!1,p=r!==-1,m=-1,h=x(C(e,0))&&S(C(e,e.length-1));if(t||o)for(c=0;c<e.length;l>=65536?c+=2:c++){if(l=C(e,c),!v(l))return 5;h&&=b(l,u,s),u=l}else{for(c=0;c<e.length;l>=65536?c+=2:c++){if(l=C(e,c),l===10)d=!0,p&&(f||=c-m-1>r&&e[m+1]!==` `,m=c);else if(!v(l))return 5;h&&=b(l,u,s),u=l}f||=p&&c-m-1>r&&e[m+1]!==` `}return!d&&!f?h&&!o&&!i(e)?1:a===2?5:2:n>9&&w(e)?5:o?a===2?5:2:f?4:3}function E(e,n,r,i,a){e.dump=(function(){if(n.length===0)return e.quotingType===2?`""`:`''`;if(!e.noCompatMode&&(l.indexOf(n)!==-1||u.test(n)))return e.quotingType===2?`"`+n+`"`:`'`+n+`'`;let o=e.indent*Math.max(1,r),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),c=i||e.flowLevel>-1&&r>=e.flowLevel;function d(t){return g(e,t)}switch(T(n,c,e.indent,s,d,e.quotingType,e.forceQuotes&&!i,a)){case 1:return n;case 2:return`'`+n.replace(/'/g,`''`)+`'`;case 3:return`|`+D(n,e.indent)+O(m(n,o));case 4:return`>`+D(n,e.indent)+O(m(k(n,s),o));case 5:return`"`+j(n)+`"`;default:throw new t(`impossible error: invalid scalar style`)}})()}function D(e,t){let n=w(e)?String(t):``,r=e[e.length-1]===`
23
+ `;return n+(r&&(e[e.length-2]===`
24
+ `||e===`
25
+ `)?`+`:r?``:`-`)+`
26
+ `}function O(e){return e[e.length-1]===`
27
+ `?e.slice(0,-1):e}function k(e,t){let n=/(\n+)([^\n]*)/g,r=(function(){let r=e.indexOf(`
28
+ `);return r=r===-1?e.length:r,n.lastIndex=r,A(e.slice(0,r),t)})(),i=e[0]===`
29
+ `||e[0]===` `,a,o;for(;o=n.exec(e);){let e=o[1],n=o[2];a=n[0]===` `,r+=e+(!i&&!a&&n!==``?`
30
+ `:``)+A(n,t),i=a}return r}function A(e,t){if(e===``||e[0]===` `)return e;let n=/ [^ ]/g,r,i=0,a,o=0,s=0,c=``;for(;r=n.exec(e);)s=r.index,s-i>t&&(a=o>i?o:s,c+=`
31
+ `+e.slice(i,a),i=a+1),o=s;return c+=`
32
+ `,e.length-i>t&&o>i?c+=e.slice(i,o)+`
33
+ `+e.slice(o+1):c+=e.slice(i),c.slice(1)}function j(e){let t=``,n=0;for(let r=0;r<e.length;n>=65536?r+=2:r++){n=C(e,r);let i=s[n];!i&&v(n)?(t+=e[r],n>=65536&&(t+=e[r+1])):t+=i||f(n)}return t}function M(e,t,n){let r=``,i=e.tag;for(let i=0,a=n.length;i<a;i+=1){let a=n[i];e.replacer&&(a=e.replacer.call(n,String(i),a)),(L(e,t,a,!1,!1)||a===void 0&&L(e,t,null,!1,!1))&&(r!==``&&(r+=`,`+(e.condenseFlow?``:` `)),r+=e.dump)}e.tag=i,e.dump=`[`+r+`]`}function N(e,t,n,r){let i=``,a=e.tag;for(let a=0,o=n.length;a<o;a+=1){let o=n[a];e.replacer&&(o=e.replacer.call(n,String(a),o)),(L(e,t+1,o,!0,!0,!1,!0)||o===void 0&&L(e,t+1,null,!0,!0,!1,!0))&&((!r||i!==``)&&(i+=h(e,t)),e.dump&&e.dump.charCodeAt(0)===10?i+=`-`:i+=`- `,i+=e.dump)}e.tag=a,e.dump=i||`[]`}function P(e,t,n){let r=``,i=e.tag,a=Object.keys(n);for(let i=0,o=a.length;i<o;i+=1){let o=``;r!==``&&(o+=`, `),e.condenseFlow&&(o+=`"`);let s=a[i],c=n[s];e.replacer&&(c=e.replacer.call(n,s,c)),L(e,t,s,!1,!1)&&(e.dump.length>1024&&(o+=`? `),o+=e.dump+(e.condenseFlow?`"`:``)+`:`+(e.condenseFlow?``:` `),L(e,t,c,!1,!1)&&(o+=e.dump,r+=o))}e.tag=i,e.dump=`{`+r+`}`}function F(e,n,r,i){let a=``,o=e.tag,s=Object.keys(r);if(e.sortKeys===!0)s.sort();else if(typeof e.sortKeys==`function`)s.sort(e.sortKeys);else if(e.sortKeys)throw new t(`sortKeys must be a boolean or a function`);for(let t=0,o=s.length;t<o;t+=1){let o=``;(!i||a!==``)&&(o+=h(e,n));let c=s[t],l=r[c];if(e.replacer&&(l=e.replacer.call(r,c,l)),!L(e,n+1,c,!0,!0,!0))continue;let u=e.tag!==null&&e.tag!==`?`||e.dump&&e.dump.length>1024;u&&(e.dump&&e.dump.charCodeAt(0)===10?o+=`?`:o+=`? `),o+=e.dump,u&&(o+=h(e,n)),L(e,n+1,l,!0,u)&&(e.dump&&e.dump.charCodeAt(0)===10?o+=`:`:o+=`: `,o+=e.dump,a+=o)}e.tag=o,e.dump=a||`{}`}function I(e,n,a){let o=a?e.explicitTypes:e.implicitTypes;for(let s=0,c=o.length;s<c;s+=1){let c=o[s];if((c.instanceOf||c.predicate)&&(!c.instanceOf||typeof n==`object`&&n instanceof c.instanceOf)&&(!c.predicate||c.predicate(n))){if(e.tag=a?c.multi&&c.representName?c.representName(n):c.tag:`?`,c.represent){let a=e.styleMap[c.tag]||c.defaultStyle,o;if(r.call(c.represent)===`[object Function]`)o=c.represent(n,a);else if(i.call(c.represent,a))o=c.represent[a](n,a);else throw new t(`!<`+c.tag+`> tag resolver accepts not "`+a+`" style`);e.dump=o}return!0}}return!1}function L(e,n,i,a,o,s,c){e.tag=null,e.dump=i,I(e,i,!1)||I(e,i,!0);let l=r.call(e.dump),u=a;a&&=e.flowLevel<0||e.flowLevel>n;let d=l===`[object Object]`||l===`[object Array]`,f,p;if(d&&(f=e.duplicates.indexOf(i),p=f!==-1),(e.tag!==null&&e.tag!==`?`||p||e.indent!==2&&n>0)&&(o=!1),p&&e.usedDuplicates[f])e.dump=`*ref_`+f;else{if(d&&p&&!e.usedDuplicates[f]&&(e.usedDuplicates[f]=!0),l===`[object Object]`)a&&Object.keys(e.dump).length!==0?(F(e,n,e.dump,o),p&&(e.dump=`&ref_`+f+e.dump)):(P(e,n,e.dump),p&&(e.dump=`&ref_`+f+` `+e.dump));else if(l===`[object Array]`)a&&e.dump.length!==0?(e.noArrayIndent&&!c&&n>0?N(e,n-1,e.dump,o):N(e,n,e.dump,o),p&&(e.dump=`&ref_`+f+e.dump)):(M(e,n,e.dump),p&&(e.dump=`&ref_`+f+` `+e.dump));else if(l===`[object String]`)e.tag!==`?`&&E(e,e.dump,n,s,u);else if(l===`[object Undefined]`)return!1;else{if(e.skipInvalid)return!1;throw new t(`unacceptable kind of an object to dump `+l)}if(e.tag!==null&&e.tag!==`?`){let t=encodeURI(e.tag[0]===`!`?e.tag.slice(1):e.tag).replace(/!/g,`%21`);t=e.tag[0]===`!`?`!`+t:t.slice(0,18)===`tag:yaml.org,2002:`?`!!`+t.slice(18):`!<`+t+`>`,e.dump=t+` `+e.dump}}return!0}function R(e,t){let n=[],r=[];z(e,n,r);let i=r.length;for(let e=0;e<i;e+=1)t.duplicates.push(n[r[e]]);t.usedDuplicates=Array(i)}function z(e,t,n){if(typeof e==`object`&&e){let r=t.indexOf(e);if(r!==-1)n.indexOf(r)===-1&&n.push(r);else if(t.push(e),Array.isArray(e))for(let r=0,i=e.length;r<i;r+=1)z(e[r],t,n);else{let r=Object.keys(e);for(let i=0,a=r.length;i<a;i+=1)z(e[r[i]],t,n)}}}function B(e,t){t||={};let n=new p(t);n.noRefs||R(e,n);let r=e;return n.replacer&&(r=n.replacer.call({"":r},``,r)),L(n,0,r,!0,!0)?n.dump+`
34
+ `:``}return _e.dump=B,_e}var be;function xe(){if(be)return t;be=1;let e=ge(),n=ye();function r(e,t){return function(){throw Error(`Function yaml.`+e+` is removed in js-yaml 4. Use yaml.`+t+` instead, which is now safe by default.`)}}return t.Type=m(),t.Schema=_(),t.FAILSAFE_SCHEMA=k(),t.JSON_SCHEMA=W(),t.CORE_SCHEMA=ee(),t.DEFAULT_SCHEMA=me(),t.load=e.load,t.loadAll=e.loadAll,t.dump=n.dump,t.YAMLException=c(),t.types={binary:ae(),float:V(),map:E(),null:M(),pairs:ce(),set:de(),timestamp:ne(),bool:F(),int:R(),merge:re(),omap:Q(),seq:C(),str:b()},t.safeLoad=r(`safeLoad`,`load`),t.safeLoadAll=r(`safeLoadAll`,`loadAll`),t.safeDump=r(`safeDump`,`dump`),t}const{Type:Se,Schema:Ce,FAILSAFE_SCHEMA:we,JSON_SCHEMA:Te,CORE_SCHEMA:Ee,DEFAULT_SCHEMA:De,load:Oe,loadAll:ke,dump:Ae,YAMLException:je,types:Me,safeLoad:Ne,safeLoadAll:Pe,safeDump:Fe}=e(xe());export{Oe as load};
@@ -12,4 +12,8 @@ export declare function serializeContext(ctx: AlsContext): Record<string, unknow
12
12
  * Each entry is matched to a registered {@link ContextKey} by name.
13
13
  * Unknown entries (no registered key) are dropped with a warning.
14
14
  */
15
- export declare function deserializeContext(data: Record<string, unknown>): Promise<ContextContainer>;
15
+ export declare function deserializeContext(serialized: Record<string, unknown>): Promise<ContextContainer>;
16
+ /** A context whose saved state this deployment cannot place; retrying never changes the answer. */
17
+ export declare class IncompatibleStateLayoutError extends Error {
18
+ constructor(key?: string);
19
+ }