eve 0.13.0 → 0.13.2
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.
- package/CHANGELOG.md +13 -0
- package/dist/src/chunks/use-eve-agent-B18LYpfZ.js +5765 -0
- package/dist/src/chunks/use-eve-agent-BPI1nbo5.js +5795 -0
- package/dist/src/cli/dev/tui/provider-picker.d.ts +64 -0
- package/dist/src/cli/dev/tui/provider-picker.js +1 -0
- package/dist/src/cli/dev/tui/remote-auth-result.d.ts +21 -0
- package/dist/src/cli/dev/tui/remote-auth-result.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection-probe.d.ts +9 -0
- package/dist/src/cli/dev/tui/remote-connection-probe.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection-types.d.ts +67 -0
- package/dist/src/cli/dev/tui/remote-connection-types.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection.d.ts +3 -0
- package/dist/src/cli/dev/tui/remote-connection.js +1 -0
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/setup-commands.d.ts +1 -1
- package/dist/src/cli/dev/tui/setup-commands.js +2 -2
- package/dist/src/cli/dev/tui/setup-flow.d.ts +3 -0
- package/dist/src/cli/dev/tui/setup-issues.d.ts +7 -0
- package/dist/src/cli/dev/tui/setup-issues.js +1 -1
- package/dist/src/cli/dev/tui/setup-panel.d.ts +25 -12
- package/dist/src/cli/dev/tui/setup-panel.js +3 -2
- package/dist/src/cli/dev/tui/target.d.ts +2 -0
- package/dist/src/cli/dev/tui/target.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.js +9 -9
- package/dist/src/cli/dev/tui/test/fake-setup-flow-renderer.js +1 -1
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.d.ts +22 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.js +1 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources.d.ts +48 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources.js +1 -0
- package/dist/src/client/agent-info-schema.d.ts +532 -0
- package/dist/src/client/agent-info-schema.js +1 -0
- package/dist/src/client/client.js +1 -1
- package/dist/src/client/types.d.ts +11 -169
- package/dist/src/client/types.js +1 -1
- package/dist/src/execution/durable-session-store.d.ts +3 -2
- package/dist/src/execution/session.d.ts +4 -10
- package/dist/src/execution/session.js +2 -2
- package/dist/src/execution/workflow-steps.js +1 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/lib/primitives.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/lib/schemas.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/aclaction.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/sdkvalidationerror.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsaction.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsoptionsallowlist.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/defaultToZeroValue.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/fp.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/primitives.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/rfcdate.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/smartUnion.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/unrecognized.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/ZodError.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/errors.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/external.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/errorUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/parseUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/util.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/index.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/locales/en.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/types.js +1 -0
- package/dist/src/services/dev-client/client-options.js +1 -1
- package/dist/src/services/dev-client/credential-gate.d.ts +11 -6
- package/dist/src/services/dev-client/credential-gate.js +1 -1
- package/dist/src/services/dev-client/request-headers.d.ts +0 -12
- package/dist/src/services/dev-client/request-headers.js +1 -1
- package/dist/src/services/dev-client/vercel-auth-error.js +1 -1
- package/dist/src/setup/flows/model.d.ts +5 -5
- package/dist/src/setup/flows/model.js +1 -1
- package/dist/src/setup/flows/provider.d.ts +57 -0
- package/dist/src/setup/flows/provider.js +4 -0
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/concepts/execution-model-and-durability.md +2 -0
- package/docs/guides/client/overview.mdx +24 -0
- package/docs/guides/dev-tui.md +4 -4
- package/package.json +2 -1
- package/dist/src/chunks/use-eve-agent-DEm_Jg4k.js +0 -1343
- package/dist/src/chunks/use-eve-agent-DsXOQMFZ.js +0 -1313
- package/dist/src/setup/flows/vercel.d.ts +0 -37
- package/dist/src/setup/flows/vercel.js +0 -2
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import{clipVisible,renderInputText,renderInputWithBlockCursor,stripAnsi,stripTerminalControls}from"./terminal-text.js";import{summarizeToolArgs,summarizeToolResult}from"./tool-format.js";import{buildAgentHeader}from"./agent-header.js";import{PROMPT_COMMANDS,isPromptControlCommand,parsePromptCommand}from"./prompt-commands.js";import{renderAttentionRows,renderBlockLines}from"./blocks.js";import{dismissTypeahead,inlineCommandHint,isTypeaheadOpen,moveTypeaheadSelection,renderCommandSuggestions,selectedTypeaheadCommand,typeaheadCompletion,typeaheadFor}from"./command-typeahead.js";import{formatDevRebuildStatus,summarizeChangedFiles}from"./dev-rebuild-status.js";import{interruptedError}from"./errors.js";import{EMPTY_LINE,PromptHistory,applyLineEditorKey,deleteForward,layoutPromptInput,lineOf,movePromptLine,visibleLine}from"./line-editor.js";import{LiveRegion}from"./live-region.js";import{nextLogDisplayMode}from"./log-display-mode.js";import{renderAcknowledgeQuestion,renderFlowPanel,renderSelectQuestion,renderTextQuestion}from"./setup-panel.js";import{buildStatusLine}from"./status-line.js";import{createTheme,detectUnicode}from"./theme.js";import{reduceSetupSelectInput,setupSelectionIntent}from"./setup-selection-input.js";import{formatAssistantResponseStats,formatTokenFlow,isIncompletePaste,nextKey,sanitizePastedText,stripPasteStart,stripPromptControlCharacters,takeUntil}from"./stream-format.js";import{renderCursorRow}from"#setup/cli/option-row.js";import{toErrorMessage}from"#shared/errors.js";import{
|
|
2
|
-
`);if(this.#b){t!==this.#x&&(this.#x=t,this.#
|
|
3
|
-
`),live:!1}),this.#Je({kind:`flow`,title:n.tone,body:n.text,live:!1})),e=[]}}this.#ut()}}async#ve(e){let t=this.#Ce(),n=isMultiSelectRequest(e),r=e.kind===`search`?e.searchAction:void 0,i=e.options,a={options:i,searchAction:r,submitRow:n};`initialValue`in e&&e.initialValue!==void 0&&(a.defaultValue=e.initialValue),`initialValues`in e&&e.initialValues!==void 0&&(a.initialValues=e.initialValues);let o=initialSelectState(a),s,c=!1,l=0,isCurrentSearch=e=>e===l,clearSearch=()=>{l+=1,c=!1,o=reduceSelect(o,{type:`clear`},{options:i,searchAction:r,submitRow:n}),this.#ut()},loadSearch=async(e,t)=>{c=!0,s=void 0;let a=++l;this.#ut();try{let s=await t(e);if(!isCurrentSearch(a))return;let c=o.filter;i=s,o={...initialSelectState({options:s,searchAction:r,submitRow:n}),filter:c}}catch(e){isCurrentSearch(a)&&(s=toErrorMessage(e))}finally{isCurrentSearch(a)&&(c=!1,this.#ut())}},u=e.notices;if(e.kind===`task-list`){let n=t.taskListLineStart??t.lines.length,r=t.lines.slice(n).filter(e=>e.tone===`success`||e.tone===`warning`||e.tone===`error`).map(e=>({tone:e.tone,text:e.text}));u=[...e.notices??[],...r],t.taskListLineStart=t.lines.length,t.hideLinesWhileQuestion=!0}let panelState=()=>{let t={...e,options:i,select:o};return u!==void 0&&u.length>0&&(t.notices=u),s!==void 0&&(t.error=s),c&&(t.loadingFrame=this.#_t()),t};return t.question=e=>renderSelectQuestion(panelState(),this.#r,e),this.#ut(),await this.#Ee((t,a)=>{let close=e=>{l+=1,a(e)};if(c){t.type===`ctrl-c`?close(void 0):t.type===`escape`?clearSearch():t.type===`ctrl-r`&&this.#ut();return}let u={key:t,options:i,searchAction:r,select:o},d=reduceSetupSelectInput(n?{...u,kind:e.kind,required:e.required}:{...u,kind:e.kind});switch(d.kind){case`cancel`:close(void 0);return;case`repaint`:this.#ut();return;case`update`:o=d.select,s=void 0,this.#ut();return;case`submit`:{let e=searchActionQuery(d.values[0]??``),t=r?.load;if(e===void 0||t===void 0){close(d.values);return}loadSearch(e,t);return}case`error`:s=d.message,this.#ut();return;case`ignore`:return}}).promise}#ye(e){this.#Ne();let t=this.#we();t.status=e.status;let n;t.question=t=>renderSelectQuestion({kind:`actions`,context:e.context,actions:e.actions,cursor:n},this.#r,t),this.#ut();let r=this.#Ee((t,r)=>{let i=setupSelectionIntent(t);switch(i?.kind){case`cancel`:r(void 0);return;case`move`:n=moveActionCursor(n,i.direction,e.actions.length),this.#ut();return;case`repaint`:this.#ut();return;case`submit`:n!==void 0&&r(e.actions[n].value);return;case void 0:return}},()=>{t.status=void 0});return{choice:r.promise,close:()=>r.settle(void 0)}}async#be(e){let t=this.#Ce(),n={options:e.options};e.initialValue!==void 0&&(n.defaultValue=e.initialValue);let r=initialSelectState(n),i=lineOf(``),a;t.question=t=>{let n={kind:`editable`,message:e.message,options:e.options,select:r,edit:{optionValue:e.editable.value,editor:i,defaultValue:e.editable.defaultValue,formatHint:e.editable.formatHint,caretVisible:this.#I}};return a!==void 0&&(n.error=a),renderSelectQuestion(n,this.#r,t)};let onEditableRow=()=>selectValueAtCursor([...e.options],r.cursor)===e.editable.value,syncEditableRow=()=>{onEditableRow()?(i.text.length===0&&(i=lineOf(e.editable.defaultValue)),this.#He()):(i=lineOf(``),this.#Ue())};return syncEditableRow(),this.#ut(),await this.#Ee((t,n)=>{let applyEditor=e=>{i=e,a=void 0,this.#We(),this.#ut()},applySelect=t=>{r=reduceSelect(r,t,{options:e.options}),a=void 0,syncEditableRow(),this.#ut()},submit=()=>{let t=selectValueAtCursor([...e.options],r.cursor);if(t===void 0)return;if(t!==e.editable.value){n({kind:`selected`,value:t});return}let o=(i.text||e.editable.defaultValue).trim(),s=e.editable.validate?.(o);if(s!==void 0){a=s,this.#ut();return}n(o===e.editable.defaultValue?{kind:`selected`,value:t}:{kind:`edited`,value:t,text:o})},o=setupSelectionIntent(t);switch(o?.kind){case`cancel`:n(void 0);return;case`move`:applySelect({type:o.direction});return;case`submit`:submit();return;case`repaint`:this.#ut();return;case void 0:break}if(!onEditableRow())return;let s=applyLineEditorKey(i,t);s!==void 0&&applyEditor(s)},()=>this.#Ue()).promise}async#xe(e){let t=this.#Ce(),n=lineOf(``),r;return t.question=t=>{let i={message:e.message,editor:n,mask:e.mask===!0};return e.placeholder!==void 0&&(i.placeholder=e.placeholder),e.notices!==void 0&&(i.notices=e.notices),r!==void 0&&(i.error=r),renderTextQuestion(i,this.#r,t,this.#I)},this.#He(),this.#ut(),await this.#Ee((t,i)=>{let apply=e=>{n=e,r=void 0,this.#We(),this.#ut()},a=applyLineEditorKey(n,t);if(a!==void 0){apply(a);return}switch(t.type){case`ctrl-c`:case`escape`:i(void 0);return;case`ctrl-r`:this.#ut();return;case`enter`:{let t=n.text.length>0?n.text:e.defaultValue??``,a=e.validate?.(t);if(a!==void 0){r=a,this.#ut();return}i(t);return}default:return}},()=>this.#Ue()).promise}async#Se(e){let t=this.#Ce();return t.question=t=>renderAcknowledgeQuestion({message:e.message,lines:e.lines},this.#r,t),this.#ut(),await this.#Ee((e,t)=>{switch(e.type){case`enter`:case`escape`:case`ctrl-c`:t();return;case`ctrl-r`:this.#ut();return;default:return}}).promise}#Ce(){return this.#Ne(),this.#k=!1,this.#j={kind:`idle`},this.#M=``,this.#we()}#we(){return this.#le===void 0&&(this.#le={title:``,indicator:{kind:`spinner`},lines:[],outputBuffer:[]}),this.#le}#Te(){this.#le!==void 0&&(this.#le.question=void 0,this.#le.hideLinesWhileQuestion=!1),this.#H=void 0,this.#Ie(),this.#Oe(),this.#ut()}#Ee(e,t){let n=!1,r,i=new Promise(e=>{r=e}),settle=e=>{n||(n=!0,t?.(),this.#Te(),r(e))};return this.#H=t=>e(t,settle),this.#Fe(),{promise:i,settle}}#De(){let e,t=new Promise(t=>{e=t});return this.#de=e,this.#Oe(),{promise:t,dispose:()=>{this.#de===e&&(this.#de=void 0,this.#ke())}}}#Oe(){if(this.#de===void 0)return;let consumer=e=>{if(e.type===`ctrl-c`||e.type===`escape`){let e=this.#de;this.#de=void 0,this.#ke(),e?.();return}e.type===`ctrl-r`&&this.#ut()};this.#fe=consumer,this.#H=consumer,this.#Fe()}#ke(){this.#fe!==void 0&&(this.#H===this.#fe&&this.#Ie(),this.#fe=void 0)}#Ae(e){let t=e===void 0?void 0:stripTerminalControls(e);if(this.#le!==void 0){this.#le.status=t,t===void 0&&(this.#le.preview=void 0),this.#ut();return}if(t===void 0){this.#j={kind:`idle`},this.#M=``,this.#qe(),this.#ut();return}this.#Ne(),this.#Ke(),this.#M=t,this.#ut()}#je(e,t){let n=stripTerminalControls(e);if(n.trim().length===0)return;let r=this.#le;if(r!==void 0){if(r.preview=void 0,t===`warning`||t===`error`)for(let e of r.outputBuffer)r.lines.push({text:e,tone:`info`,evidence:!0});r.outputBuffer=[],r.lines.push({text:n,tone:t}),this.#ut();return}this.#Ne(),this.#Je({kind:`flow`,title:t,body:n,live:!1}),this.#ut()}#Me(e){let t=stripTerminalControls(e);if(t.trim().length===0)return;let n=this.#le;if(n===void 0){this.#je(t,`info`);return}n.preview=t,n.outputBuffer.push(t),n.outputBuffer.length>40&&n.outputBuffer.shift(),this.#ut()}shutdown(){this.#Pe()}#Ne(e){this.#N=e?.title??this.#N,this.#Q=e?.contextSize??this.#l,!this.#P&&(this.#P=!0,this.#n.reset(),this.#n.hideCursor(),this.#Tt(),this.#e.isTTY&&(this.#e.setRawMode?.(!0),this.#e.resume(),this.#n.emitBracketedPaste(!0)),this.#K=()=>this.#ut(),this.#t.on(`resize`,this.#K))}#Pe(){this.#Ie(),this.#Ue(),this.#qe(),this.#B!==void 0&&(clearTimeout(this.#B),this.#B=void 0),this.#V=!1,this.#P&&=(this.#Nt(),this.#ut(),this.#n.clear(),this.#n.showCursor(),this.#Et(),this.#n.newline(),this.#e.isTTY&&(this.#n.emitBracketedPaste(!1),this.#e.setRawMode?.(!1),this.#e.pause()),this.#K&&=(this.#t.off(`resize`,this.#K),void 0),!1)}#Fe(){this.#e.off(`data`,this.#Le),this.#e.on(`data`,this.#Le)}#Ie(){this.#e.off(`data`,this.#Le),this.#Be(),this.#U=``,this.#W=new StringDecoder(`utf8`),this.#H=void 0}#Le=e=>{this.#Be(),this.#U+=this.#W.write(e),this.#ze(),this.#Re()};#Re(){if(this.#U===`\x1B`){this.#G=setTimeout(()=>{this.#U===`\x1B`&&(this.#U=``,this.#H?.({type:`escape`}))},30),this.#G.unref?.();return}if(isIncompletePaste(this.#U)){let e=this.#U;this.#G=setTimeout(()=>{if(this.#U!==e)return;let t=sanitizePastedText(stripPasteStart(e));this.#U=``,t.length>0&&this.#H?.({type:`text`,value:t,framing:`bracketed-paste`})},1e3),this.#G.unref?.()}}#ze(){for(;this.#U.length>0;){let e=nextKey(this.#U);if(e.incomplete)return;this.#U=this.#U.slice(e.consumed),e.key&&e.key.type!==`ignore`&&this.#H?.(e.key)}}#Be(){this.#G&&=(clearTimeout(this.#G),void 0)}#Ve(e){switch(e.type){case`ctrl-l`:case`ctrl-r`:this.#ut();break;case`ctrl-c`:this.#F||(this.#F=!0,this.#j={kind:`idle`},this.#M=`Interrupted`,this.#q?.(),this.#ut());break;default:break}}#He(){this.#Ue(),this.#We(),this.#R=setInterval(()=>{this.#I=!this.#I,this.#ut()},500),this.#R.unref?.()}#Ue(){this.#R&&=(clearInterval(this.#R),void 0),this.#I=!0}#We(){this.#I=!0}#Ge(){this.#qe(),this.#z=setInterval(()=>{this.#L+=1,this.#ut()},90),this.#z.unref?.()}#Ke(){this.#j={kind:`waiting`,startedAtMs:Date.now()},this.#Ge()}#qe(){this.#z&&=(clearInterval(this.#z),void 0)}#Je(e){e.id!==this.#oe?.id&&this.#Nt(),this.#f.push(e),e.id&&this.#p.set(e.id,e)}#Ye(e){this.#Je({kind:`user`,body:stripTerminalControls(e),live:!1}),this.#ut()}#Xe(e){if(e!=null){if(this.#ce===e){this.#ce=void 0;return}this.#Je({kind:`user`,body:stripTerminalControls(e),live:!1})}}#Ze(e,t,n){let r={kind:`error`,title:stripTerminalControls(e),body:stripTerminalControls(t),live:!1};n!==void 0&&(r.detail=stripTerminalControls(n)),this.#Je(r),this.#ut()}#Qe(e,t){this.#v.has(e)||(this.#v.add(e),this.#Je({id:subagentHeaderId(e),kind:`subagent`,title:stripTerminalControls(t),live:!1}))}#$e(e){if(e.id&&this.#m.has(e.id))return;let t=e.id?this.#p.get(e.id):void 0;if(t){Object.assign(t,e);return}this.#Je(e)}#et(e){this.#f=this.#f.filter(t=>t.id!==e),this.#p.delete(e)}#tt(){for(let e of this.#f)e.status===`approval`||e.status===`running`||(e.live=!1)}#nt(e,t,n){switch(e.type){case`step-start`:this.#rt(n.hasPendingToolResults?STATUS.toolResults:STATUS.processing),n.hasPendingToolResults=!1;break;case`step-finish`:this.#lt(e.usage),this.#ut();break;case`assistant-delta`:{let t=(n.text.get(e.id)??``)+stripTerminalControls(e.delta);this.#it(t),this.#rt(STATUS.streaming),n.text.set(e.id,t),this.#at(e.id,t,!0);break}case`assistant-complete`:{let t=n.text.get(e.id)??``,r=e.text!==void 0&&t.length===0?stripTerminalControls(e.text??``):t;this.#it(r),n.text.set(e.id,r),this.#at(e.id,r,!1);break}case`reasoning-delta`:{if(t.reasoning===`hidden`)break;let r=(n.reasoning.get(e.id)??``)+stripTerminalControls(e.delta);this.#it(r),this.#rt(STATUS.streaming),n.reasoning.set(e.id,r),this.#ot(e.id,r,!0,t);break}case`reasoning-complete`:{if(t.reasoning===`hidden`)break;let r=n.reasoning.get(e.id)??``;this.#it(r),this.#ot(e.id,r,!1,t);break}case`tool-call`:if(t.tools===`hidden`)break;this.#rt(STATUS.executingTools),this.#st({input:e.input,status:`running`,toolCallId:e.toolCallId,toolName:e.toolName},t,n);break;case`tool-approval-request`:{if(t.tools===`hidden`)break;let r=n.tools.get(e.toolCallId);if(r===void 0)break;this.#st({...r,status:`approval`},t,n);break}case`tool-result`:{if(t.tools===`hidden`)break;let r=this.#ct(e.toolCallId,n);if(r===void 0)break;n.hasPendingToolResults=!0,this.#rt(STATUS.toolResults),this.#st({...r,output:e.output,status:`done`},t,n);break}case`tool-error`:{if(t.tools===`hidden`)break;let r=this.#ct(e.toolCallId,n);if(r===void 0)break;n.hasPendingToolResults=!0,this.#rt(STATUS.toolResults),this.#st({...r,errorText:e.errorText,status:`error`},t,n);break}case`error`:this.#Ze(`Error`,e.errorText,e.detail);break;case`finish`:this.#lt(e.usage),this.#ut();break}}#rt(e){let t=this.#w>0?STATUS.connectionAuth:e;this.#M!==t&&(this.#M=t,this.#ut())}#it(e){e.trim().length>0&&(this.#j={kind:`answering`})}#at(e,t,n){let r=stripTerminalControls(t).trim();r.length!==0&&(this.#$e({id:e,kind:`assistant`,body:r,live:n}),this.#ut())}#ot(e,t,n,r){let a=stripTerminalControls(t).trim();a.length!==0&&(this.#$e({id:e,kind:`reasoning`,body:a,collapsed:collapseReasoning(r.reasoning,n),live:n}),this.#ut())}#st(e,t,n){if(n.tools.set(e.toolCallId,e),this.#g.has(e.toolCallId))return;let r=toolSectionId(e.toolCallId);this.#_.set(e.toolCallId,r),this.#$e(renderNativeToolBlock(e,r,t.tools===`full`)),this.#ut()}#ct(e,t){let n=t.tools.get(e);if(n!==void 0)return n;let r=this.#_.get(e)??toolSectionId(e),i=this.#p.get(r);if(!(i===void 0||i.kind!==`tool`))return{errorText:i.status===`error`&&typeof i.result==`string`?i.result:void 0,input:i.toolInput,output:i.toolOutput,status:i.status??`running`,toolCallId:e,toolName:i.title??`tool`}}#lt(e){if(e===void 0)return;let{inputTokens:t,outputTokens:n}=e;if((t!=null||n!=null)&&(this.#X=(t??0)+(n??0)),this.#Z=t??this.#Z,this.#$=n??this.#$,this.#$!=null&&this.#te!==void 0){let e=(Date.now()-this.#te)/1e3;e>0&&(this.#ee=this.#$/e)}}#ut(){if(this.#P){if(this.#J){this.#Y=!0;return}this.#J=!0;try{do this.#Y=!1,this.#dt();while(this.#Y)}finally{this.#J=!1}}}#dt(){if(!this.#P)return;let e=this.#Ct(),t=this.#bt(e),n=Math.max(1,this.#wt()-t.length),r=[],i=this.#C;for(;this.#f.length>0&&this.#f[0].live===!1;){let t=this.#f.shift();if(this.#h.push(t),t.id&&(this.#m.add(t.id),this.#p.delete(t.id)),this.#Ft(t))continue;let n=this.#gt(t,e,i);i=previousBlockOf(t),this.#C=i,r.push(...n),this.#S.push(...n)}let a=[];for(let t of this.#f){if(this.#Ft(t))continue;let n=this.#gt(t,e,i);i=previousBlockOf(t);for(let e=0;e<n.length;e+=1)a.push({block:t,row:n[e]})}let o=[...clipLiveRows(a.map(e=>e.row),n,e,this.#r),...t];r.length>0?this.#n.flush(r,o):this.#n.update(o)}#ft(){if(!this.#P)return;let e=this.#Ct(),t=this.#bt(e),n=Math.max(1,this.#wt()-t.length),r=this.#C,i=[];for(let t of this.#f){if(this.#Ft(t))continue;let n=this.#gt(t,e,r);r=previousBlockOf(t),i.push(...n)}let a=[...clipLiveRows(i,n,e,this.#r),...t];this.#n.clearAll(),this.#n.flush([...this.#ht(),...this.#S],a)}logDisplayMode(){return this.#d}setLogDisplayMode(e){e!==this.#d&&(this.#d=e,e===`all`&&this.flushDelayedDevBuildErrors(),this.#mt(),this.#P&&this.#ft())}flushDelayedDevBuildErrors(){let e=this.#ae;e!==void 0&&(this.#ae=void 0,this.#Je({kind:`log`,title:`stderr`,body:e,live:!1}),this.#ut())}#pt(){this.#V=!0,this.#B!==void 0&&clearTimeout(this.#B),this.#B=setTimeout(()=>{this.#V=!1,this.#B=void 0,this.#ut()},5e3),this.setLogDisplayMode(nextLogDisplayMode(this.#d)),this.#ut()}#mt(){let e=this.#Ct();this.#S.length=0;let t;for(let n of this.#h){if(this.#Ft(n))continue;let r=this.#gt(n,e,t);t=previousBlockOf(n),this.#S.push(...r)}this.#C=t}#ht(){let e=this.#y;if(e===void 0)return[];let t={name:e.name,theme:this.#r,width:this.#Ct()};return e.info!==void 0&&(t.info=e.info),e.tip!==void 0&&(t.tip=e.tip),buildAgentHeader(t)}#gt(e,t,n){let r={spinner:this.#_t()};n!==void 0&&(r.previous=n);let i=renderBlockLines(e,t,this.#r,r);return(e.depth??0)===0&&leadsWithGap(e,n)?[``,...i]:i}#_t(){return this.#r.spinner[this.#L%this.#r.spinner.length]??``}#vt(e,t){return isProgressPulseVisible(Date.now()-e)?t:` `}#yt(e){return e.indicator.kind===`spinner`?{glyph:this.#_t(),color:`yellow`}:{glyph:this.#vt(e.indicator.startedAtMs,this.#r.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH),color:`green`}}#bt(e){let t=this.#r.colors,n=[``],r=this.#le;if(r!==void 0){let t=this.#yt(r),i;if(r.question!==void 0){let n=r.question(e);i={kind:`question`,rows:n},r.status!==void 0&&(i={kind:`question`,rows:n,status:{text:r.status,indicator:t}})}else r.status===void 0?i=r.preview===void 0?{kind:`idle`,indicator:t}:{kind:`preview`,text:r.preview,indicator:t}:(i={kind:`status`,status:{text:r.status,indicator:t}},r.preview!==void 0&&(i={kind:`status`,status:{text:r.status,indicator:t},preview:r.preview}));let a={title:r.title,lines:r.hideLinesWhileQuestion===!0?[]:r.lines,content:i};return n.push(...renderFlowPanel(a,this.#r,e)),n}if(this.#ue!==void 0&&n.push(...renderAttentionRows(this.#ue,e,this.#r),``),this.#k){let r=this.#A===void 0?void 0:inlineCommandHint(this.#A);r===void 0&&this.#A!==void 0&&isTypeaheadOpen(this.#A)&&n.push(...renderCommandSuggestions(this.#A,this.#r,e));let i=isPromptControlCommand(this.#E),a=r?t.dim(` ${r}`):``,o=[];this.#xt(o,e);let s=Math.max(1,this.#wt()-1-n.length-1-o.length);return n.push(...promptInputRows({text:this.#E,cursor:this.#D,width:e,theme:this.#r,caretVisible:this.#I,isCommand:i,ghost:a,maxRows:s})),n.push(...o),n}let i=this.#j;if(i.kind===`answering`)return this.#xt(n,e),n;let a=i.kind===`waiting`,o=a?t.green(this.#vt(i.startedAtMs,this.#r.unicode?`⊙`:`o`)):t.dim(this.#r.glyph.dot),s=this.#M.length>0?this.#M:`Ready`,c=a?t.dim(s):s,u=this.#St(),f=a?` `:``,p=u?`${f}${o} ${c} ${t.dim(this.#r.glyph.dot)} ${u}`:`${f}${o} ${c}`;n.push(clip(p,e));let g=[];return this.#xt(g,e),a&&g.length>0&&n.push(``),n.push(...g),n}#xt(e,t){let n={theme:this.#r,width:t};this.#V&&(n.logLevel=this.#d);let r=this.#y?.info?.agent.model.id;r!==void 0&&(n.model=r);let i=this.#y?.info?.agent.model.endpoint;i!==void 0&&(n.endpoint=i);let a=this.#Z??0,o=this.#$??0;if(a>0||o>0){let e={inputTokens:a,outputTokens:o};this.#Q!==void 0&&(e.contextSize=this.#Q),n.tokens=formatTokenFlow(e,this.#r.glyph)}this.#T!==void 0&&(n.vercel=this.#T);let s=buildStatusLine(n);s!==void 0&&e.push(s)}#St(){let e=this.#r.colors,t=[],n=formatAssistantResponseStats({totalTokens:this.#X,outputTokens:this.#$,tokensPerSecond:this.#ee},this.#c);return n&&t.push(n),t.length>0?e.dim(t.join(` ${this.#r.glyph.dot} `)):``}#Ct(){return Math.max(20,this.#t.columns||80)}#wt(){return Math.max(8,this.#t.rows||24)}#Tt(){if(this.#ne!==void 0||!this.#u)return;this.#re=``,this.#ie=``;let capture=(e,t)=>{let n=e.write.bind(e);return e.write=((e,n,r)=>{let i=typeof n==`string`?n:void 0,a=typeof n==`function`?n:r;return this.#Dt(t,chunkToString(e,i)),a?.(),!0}),()=>{e.write=n}},e=capture(process.stdout,`stdout`),t=capture(process.stderr,`stderr`);this.#ne=()=>{e(),t()}}#Et(){let e=this.#ne;e!==void 0&&(this.#ne=void 0,e(),this.#re.length>0&&(this.#Pt(`stdout`)&&process.stdout.write(`${this.#re}\n`),this.#re=``),this.#ie.length>0&&(this.#Pt(`stderr`)&&process.stderr.write(`${this.#ie}\n`),this.#ie=``))}#Dt(e,t){let n=(e===`stdout`?this.#re:this.#ie)+t,i=n.lastIndexOf(`
|
|
4
|
-
`),a=i===-1?n:n.slice(i+1);if(e===`stdout`?this.#re=a:this.#ie=a,i===-1)return;let o=stripAnsi(n.slice(0,i)).replace(/\s+$/u,``);o.trim().length!==0&&(e===`stdout`?this.#
|
|
5
|
-
`);t=[],e.trim().length!==0&&this.#
|
|
6
|
-
`)){let e=parseSandboxLogLine(n.trimEnd());if(e!==void 0){flushPending(),this.#
|
|
7
|
-
`),n=t.findIndex(e=>parseDevRebuildLogLine(e.trimEnd())?.kind===`failed`);if(n===-1){this.#
|
|
8
|
-
`);r.trim().length>0&&this.#
|
|
9
|
-
`);this.#
|
|
1
|
+
import{clipVisible,renderInputText,renderInputWithBlockCursor,stripAnsi,stripTerminalControls}from"./terminal-text.js";import{summarizeToolArgs,summarizeToolResult}from"./tool-format.js";import{buildAgentHeader}from"./agent-header.js";import{PROMPT_COMMANDS,isPromptControlCommand,parsePromptCommand}from"./prompt-commands.js";import{renderAttentionRows,renderBlockLines}from"./blocks.js";import{dismissTypeahead,inlineCommandHint,isTypeaheadOpen,moveTypeaheadSelection,renderCommandSuggestions,selectedTypeaheadCommand,typeaheadCompletion,typeaheadFor}from"./command-typeahead.js";import{formatDevRebuildStatus,summarizeChangedFiles}from"./dev-rebuild-status.js";import{interruptedError}from"./errors.js";import{EMPTY_LINE,PromptHistory,applyLineEditorKey,deleteForward,layoutPromptInput,lineOf,movePromptLine,visibleLine}from"./line-editor.js";import{LiveRegion}from"./live-region.js";import{nextLogDisplayMode}from"./log-display-mode.js";import{initialProviderPickerState,transitionProviderPicker}from"./provider-picker.js";import{renderAcknowledgeQuestion,renderFlowPanel,renderSelectQuestion,renderTextQuestion}from"./setup-panel.js";import{buildStatusLine}from"./status-line.js";import{createTheme,detectUnicode}from"./theme.js";import{reduceSetupSelectInput,setupSelectionIntent}from"./setup-selection-input.js";import{formatAssistantResponseStats,formatTokenFlow,isIncompletePaste,nextKey,sanitizePastedText,stripPasteStart,stripPromptControlCharacters,takeUntil}from"./stream-format.js";import{renderCursorRow}from"#setup/cli/option-row.js";import{toErrorMessage}from"#shared/errors.js";import{initialSelectState,reduceSelect,searchActionQuery,selectValueAtCursor}from"#setup/cli/select-state.js";import{StringDecoder}from"node:string_decoder";import{parseDevRebuildLogLine}from"#internal/nitro/host/dev-watcher-log.js";import{PROGRESS_PULSE_ASCII_GLYPH,PROGRESS_PULSE_GLYPH,isProgressPulseVisible}from"#cli/ui/progress-pulse.js";function isMultiSelectRequest(e){return e.kind===`multi`||e.kind===`searchable-multi`}function moveActionCursor(e,t,n){return n===0?void 0:e===void 0?t===`down`?0:n-1:(e+(t===`down`?1:-1)+n)%n}function completedTurnStatus(e,t){return e?`Interrupted`:t?`Ready`:`Done`}const STATUS={processing:`Working…`,toolResults:`Reading results…`,streaming:`Responding…`,executingTools:`Running tools…`,connectionAuth:`Waiting for connection authorization…`};var TerminalRenderer=class{#e;#t;#n;#r;#i;#a;#o;#s;#c;#l;#u;#d;#f=[];#p=new Map;#m=new Set;#h=[];#g=new Set;#_=new Map;#v=new Set;#y;#b=!1;#x;#S=[];#C;#w=0;#T;#E=``;#D=0;#O=new PromptHistory;#k=!1;#A;#j={kind:`idle`};#M=STATUS.processing;#N=`eve`;#P=!1;#F=!1;#I=!0;#L=0;#R;#z;#B;#V=!1;#H;#U=``;#W=new StringDecoder(`utf8`);#G;#K;#q;#J=!1;#Y=!1;#X;#Z;#Q;#$;#ee;#te;#ne;#re=``;#ie=``;#ae;#oe;#se=0;#ce;#le;#ue;#de;#fe;setupFlow={begin:(e,t)=>this.#ge(e,t),end:e=>this.#_e(e?.preserveDiagnostics??!0),readSelect:e=>this.#ve(e),readEditableSelect:e=>this.#be(e),readProviderPicker:e=>this.#xe(e),readText:e=>this.#Se(e),readAcknowledge:e=>this.#Ce(e),readChoice:e=>this.#ye(e),setStatus:e=>this.#je(e),renderLine:(e,t)=>this.#Me(e,t),renderOutput:e=>this.#Ne(e),waitForInterrupt:()=>this.#Oe()};constructor(e){this.#e=e?.input??process.stdin,this.#t=e?.output??process.stdout,this.#n=new LiveRegion(this.#t),this.#r=createTheme({color:e?.color??!0,unicode:e?.unicode??detectUnicode()}),this.#i=e?.tools??`auto-collapsed`,this.#a=e?.reasoning??`full`,this.#o=e?.subagents??`auto-collapsed`,this.#s=e?.connectionAuth??`full`,this.#c=e?.assistantResponseStats??`tokensPerSecond`,this.#l=e?.contextSize,this.#Q=e?.contextSize,this.#u=e?.captureForeignOutput??this.#t===process.stdout,this.#d=e?.logs??`none`}renderAgentHeader(e){this.#N=e.name,this.#y=e,this.#Pe();let t=this.#gt().join(`
|
|
2
|
+
`);if(this.#b){t!==this.#x&&(this.#x=t,this.#Ye({kind:`agent-header`,body:t,live:!1})),this.#dt();return}this.#b=!0,this.#x=t,this.#n.flush(this.#gt(),[])}async readPrompt(e){this.#Pe(e),this.#Je(),this.#k=!0,this.#j={kind:`idle`},this.#M=``;let t=lineOf(stripPromptControlCharacters(e?.initialDraft??``));return this.#O.begin(t.text),this.#pe(t),this.#A=typeaheadFor(PROMPT_COMMANDS,t.text),this.#Ue(),this.#dt(),await new Promise((e,n)=>{let apply=e=>{t=e,this.#Ge(),this.#pe(t),this.#A=typeaheadFor(PROMPT_COMMANDS,e.text,this.#A),this.#dt()},recall=e=>{e!==void 0&&apply(lineOf(e))},interrupt=()=>{this.#A=void 0,this.#We(),this.#Fe(),n(interruptedError())},suggestions=()=>this.#A!==void 0&&isTypeaheadOpen(this.#A)?this.#A:void 0,highlighted=()=>{let e=suggestions();return e===void 0?void 0:selectedTypeaheadCommand(e)};this.#H=n=>{let r=applyLineEditorKey(t,n,{multiline:!0});if(r!==void 0){apply(r);return}switch(n.type){case`up`:{let e=suggestions();if(e!==void 0){this.#A=moveTypeaheadSelection(e,-1),this.#dt();break}let n=movePromptLine(t,`up`);n===void 0?recall(this.#O.previous(t.text)):apply(n);break}case`down`:{let e=suggestions();if(e!==void 0){this.#A=moveTypeaheadSelection(e,1),this.#dt();break}let n=movePromptLine(t,`down`);n===void 0?recall(this.#O.next()):apply(n);break}case`tab`:{let e=highlighted();e!==void 0&&apply(lineOf(typeaheadCompletion(e)));break}case`escape`:{let e=suggestions();e!==void 0&&(this.#A=dismissTypeahead(e),this.#dt());break}case`enter`:{let n=highlighted(),r=n!==void 0&&parsePromptCommand(t.text)===null?typeaheadCompletion(n).trimEnd():t.text;this.#A=void 0,this.#O.add(r),this.#k=!1,this.#We(),this.#qe(),this.#M=STATUS.processing,isPromptControlCommand(r)?this.#Ye({kind:`command`,body:stripTerminalControls(r.trim()),live:!1}):(this.#Xe(r),this.#ce=r),this.#pe(EMPTY_LINE),this.#dt(),this.#Le(),e(r);break}case`ctrl-d`:t.text.length===0?interrupt():apply(deleteForward(t));break;case`ctrl-l`:this.#mt();break;case`ctrl-r`:this.#dt();break;case`ctrl-c`:t.text.length===0?interrupt():apply(EMPTY_LINE);break;default:break}},this.#Ie()})}#pe(e){this.#E=e.text,this.#D=e.cursor}async renderStream(e,t){this.#Pe(t),this.#m.clear(),this.#k=!1,this.#j.kind!==`waiting`&&(this.#j={kind:`waiting`,startedAtMs:Date.now()}),this.#M=STATUS.processing,this.#Ze(t?.submittedPrompt),this.#F=!1,this.#X=void 0,this.#Z=void 0,this.#$=void 0,this.#ee=void 0,this.#te=Date.now();let n={tools:t?.tools??this.#i,reasoning:t?.reasoning??this.#a,assistantResponseStats:t?.assistantResponseStats??this.#c};this.#Ke(),this.#dt();let r=new Promise(e=>{this.#q=e});this.#H=e=>this.#He(e),this.#Ie();let i={text:new Map,reasoning:new Map,tools:new Map,hasPendingToolResults:!1};try{for await(let t of takeUntil(iterateTUIStream(e.events),r)){if(this.#F)break;this.#rt(t,n,i)}}catch(e){this.#Qe(`Error`,toErrorMessage(e))}finally{this.#q=void 0,this.#F&&e.abort?.(),this.#Le(),this.#Je(),this.#j.kind===`waiting`&&(this.#j={kind:`idle`}),this.#M=completedTurnStatus(this.#F,t?.continueSession===!0),this.#nt(),this.#dt(),t?.continueSession||this.#Fe()}}async readToolApproval(e,t){return this.#Pe(t),this.#Je(),this.#k=!1,this.#j={kind:`idle`},this.#M=`Approve ${formatToolApprovalTitle(e)}? (y/n)`,this.#F=!1,this.#dt(),await new Promise((t,n)=>{this.#H=r=>{switch(r.type){case`text`:{if(r.framing!==`unframed`)break;let n=r.value.toLowerCase();n===`y`?(this.#qe(),this.#M=STATUS.processing,this.#Le(),this.#dt(),t({approved:!0})):n===`n`&&(this.#qe(),this.#M=STATUS.processing,this.#me(e.toolCallId),this.#Le(),this.#dt(),t({approved:!1,reason:`Denied by user.`}));break}case`ctrl-r`:this.#dt();break;case`ctrl-c`:this.#F=!0,this.#Fe(),n(interruptedError());break;default:break}},this.#Ie()})}async readInputQuestion(e,t){this.#Pe(t),this.#Je(),this.#k=!1,this.#j={kind:`idle`},this.#F=!1;let n=e.options??[],r=n.length>0,a=(e.allowFreeform===!0||!r)&&r,o=n.length+ +!!a,s=questionSectionId(e.requestId),c=r?`select`:`text`,l=0,u=EMPTY_LINE,isOnFreeformRow=()=>a&&l===n.length,renderSection=()=>{this.#et({id:s,kind:`question`,title:stripTerminalControls(e.prompt),body:formatQuestionContent(e,l,this.#r),preformatted:!0,live:!0})},repaintStatus=()=>{if(c===`select`){let e=isOnFreeformRow()?`type`:`select`;this.#M=`↑/↓ move · enter ${e} · Ctrl+C quit`,this.#k=!1}else this.#k=!0,this.#pe(u),this.#M=``;this.#dt()};renderSection(),c===`text`&&this.#Ue(),repaintStatus();let finalize=t=>{this.#et({id:s,kind:`question`,title:stripTerminalControls(e.prompt),body:` ${this.#r.colors.green(this.#r.glyph.success)} ${stripTerminalControls(t.label)}`,preformatted:!0,live:!1}),this.#k=!1,this.#qe(),this.#M=STATUS.processing,this.#We(),this.#Le(),this.#dt();let n={};return t.optionId!==void 0&&(n.optionId=t.optionId),t.text!==void 0&&(n.text=t.text),n};return await new Promise((t,i)=>{this.#H=a=>{if(a.type===`ctrl-c`){if(c===`text`&&u.text.length>0){u=EMPTY_LINE,this.#Ge(),repaintStatus();return}this.#F=!0,this.#We(),this.#Fe(),i(interruptedError());return}if(a.type===`ctrl-r`){this.#dt();return}if(c===`select`){switch(a.type){case`up`:o>0&&(l=(l-1+o)%o,renderSection(),repaintStatus());break;case`down`:o>0&&(l=(l+1)%o,renderSection(),repaintStatus());break;case`enter`:{if(isOnFreeformRow()){c=`text`,u=EMPTY_LINE,this.#Ue(),repaintStatus();break}let e=n[l];e&&t(finalize({optionId:e.id,label:e.label}));break}default:break}return}let s=applyLineEditorKey(u,a,{multiline:!0});if(s!==void 0){u=s,this.#Ge(),repaintStatus();return}switch(a.type){case`up`:case`down`:{let e=movePromptLine(u,a.type);e!==void 0&&(u=e,this.#Ge(),repaintStatus());break}case`enter`:{let n=resolveQuestionText(u.text,e);if(n===void 0)break;t(finalize(n));break}case`escape`:if(r){if(u.text.length>0){u=EMPTY_LINE,this.#Ge(),repaintStatus();break}c=`select`,u=EMPTY_LINE,this.#k=!1,this.#We(),repaintStatus();break}u=EMPTY_LINE,this.#Ge(),repaintStatus();break;default:break}},this.#Ie()})}upsertSubagentStep(e){if(this.#o===`hidden`)return;let t=stripTerminalControls(e.reasoning??``).trim(),n=stripTerminalControls(e.message??``).trim();if(!(t.length===0&&n.length===0)){if(this.#$e(e.callId,e.subagentName),this.#o===`collapsed`){this.#dt();return}this.#et({id:subagentStepSectionId(e.callId,e.sectionKey),kind:`subagent-step`,depth:1,reasoning:t,body:n,live:!e.finalized}),this.#dt()}}upsertSubagentTool(e){if(this.#o===`hidden`)return;if(this.#$e(e.callId,e.subagentName),this.#o===`collapsed`){this.#dt();return}let t=subagentToolStatus(e.status),n={id:subagentToolSectionId(e.callId,e.childCallId),kind:`subagent-tool`,depth:1,title:stripTerminalControls(e.toolName),subtitle:summarizeToolArgs(e.input),status:t,live:t===`running`||t===`approval`,expanded:this.#o===`full`,toolInput:e.input};e.output===void 0?e.errorText!==void 0&&(n.result=stripTerminalControls(e.errorText)):(n.result=summarizeToolResult(e.output),n.toolOutput=e.output),this.#et(n),this.#dt()}markChildToolCallId(e){this.#g.add(e);let t=this.#_.get(e);t!==void 0&&(this.#tt(t),this.#_.delete(e),this.#dt())}#me(e){let t=this.#p.get(toolSectionId(e));t!==void 0&&(t.status=`denied`,t.live=!1)}upsertConnectionAuth(e){if(this.#s===`hidden`)return;let t=e.state===`authorized`||e.state===`declined`||e.state===`failed`||e.state===`timed-out`;this.#et({id:connectionAuthSectionId(e.name),kind:`connection-auth`,title:`${stripTerminalControls(e.name)} · authorization · ${e.state}`,body:formatConnectionAuthContent(e),preformatted:!0,live:!t}),this.#dt()}setConnectionAuthPendingCount(e){let t=Math.max(0,e);if(t===this.#w)return;let n=this.#w>0;this.#w=t,t>0?(this.#M=STATUS.connectionAuth,this.#dt()):n&&(this.#M=STATUS.processing,this.#dt())}setVercelStatus(e){this.#T=e,this.#dt()}reset(){this.#f=[],this.#p.clear(),this.#m.clear(),this.#C=void 0,this.#S.length=0,this.#h.length=0,this.#b=!1,this.#x=void 0,this.#g.clear(),this.#_.clear(),this.#v.clear(),this.#ce=void 0,this.#oe=void 0,this.#w=0,this.#X=void 0,this.#Z=void 0,this.#$=void 0,this.#ee=void 0,this.#te=void 0,this.#P&&(this.#n.clearAll(),this.#dt())}renderNotice(e){let t=stripTerminalControls(e);t.trim().length!==0&&(this.#Pe(),this.#Ye({kind:`notice`,body:t,live:!1}),this.#dt())}renderSandboxLog(e){let t=parseSandboxLogLine(stripTerminalControls(e));t!==void 0&&(this.#Pe(),this.#Ye({kind:`sandbox`,body:t,live:!1}),this.#dt())}renderSetupWarning(e){let t=stripTerminalControls(e);if(t.trim().length===0){this.#he();return}this.#Pe(),this.#ue=t,this.#dt()}clearSetupWarning(){this.#he()}#he(){this.#ue!==void 0&&(this.#ue=void 0,this.#dt())}renderCommandResult(e){let t=stripTerminalControls(e);t.trim().length!==0&&(this.#Pe(),this.#Ye({kind:`result`,body:t,live:!1}),this.#dt())}#ge(e,t=`spinner`){this.#Pe(),this.#k=!1,this.#j={kind:`idle`},this.#M=``;let n=t===`pulse`?{kind:`pulse`,startedAtMs:Date.now()}:{kind:`spinner`};this.#le={title:stripTerminalControls(e),indicator:n,lines:[],outputBuffer:[]},this.#Ke(),this.#dt()}#_e(e){this.#de=void 0,this.#Ae();let t=this.#le;if(t!==void 0){if(this.#le=void 0,this.#Je(),e){let e=[];for(let n of t.lines){if(n.evidence===!0){e.push(n.text);continue}(n.tone===`warning`||n.tone===`error`)&&(e.length>0&&this.#Ye({kind:`flow`,title:`info`,body:e.join(`
|
|
3
|
+
`),live:!1}),this.#Ye({kind:`flow`,title:n.tone,body:n.text,live:!1})),e=[]}}this.#dt()}}async#ve(e){let t=this.#we(),n=isMultiSelectRequest(e),r=e.kind===`search`?e.searchAction:void 0,i=e.options,a={options:i,searchAction:r,submitRow:n};`initialValue`in e&&e.initialValue!==void 0&&(a.defaultValue=e.initialValue),`initialValues`in e&&e.initialValues!==void 0&&(a.initialValues=e.initialValues);let o=initialSelectState(a),s,c=!1,l=0,isCurrentSearch=e=>e===l,clearSearch=()=>{l+=1,c=!1,o=reduceSelect(o,{type:`clear`},{options:i,searchAction:r,submitRow:n}),this.#dt()},loadSearch=async(e,t)=>{c=!0,s=void 0;let a=++l;this.#dt();try{let s=await t(e);if(!isCurrentSearch(a))return;let c=o.filter;i=s,o={...initialSelectState({options:s,searchAction:r,submitRow:n}),filter:c}}catch(e){isCurrentSearch(a)&&(s=toErrorMessage(e))}finally{isCurrentSearch(a)&&(c=!1,this.#dt())}},u=e.notices;if(e.kind===`task-list`){let n=t.taskListLineStart??t.lines.length,r=t.lines.slice(n).filter(e=>e.tone===`success`||e.tone===`warning`||e.tone===`error`).map(e=>({tone:e.tone,text:e.text}));u=[...e.notices??[],...r],t.taskListLineStart=t.lines.length,t.hideLinesWhileQuestion=!0}let panelState=()=>{let t={...e,options:i,select:o};return u!==void 0&&u.length>0&&(t.notices=u),s!==void 0&&(t.error=s),c&&(t.loadingFrame=this.#vt()),t};return t.question=e=>renderSelectQuestion(panelState(),this.#r,e),this.#dt(),await this.#De((t,a)=>{let close=e=>{l+=1,a(e)};if(c){t.type===`ctrl-c`?close(void 0):t.type===`escape`?clearSearch():t.type===`ctrl-r`&&this.#dt();return}let u={key:t,options:i,searchAction:r,select:o},d=reduceSetupSelectInput(n?{...u,kind:e.kind,required:e.required}:{...u,kind:e.kind});switch(d.kind){case`cancel`:close(void 0);return;case`repaint`:this.#dt();return;case`update`:o=d.select,s=void 0,this.#dt();return;case`submit`:{let e=searchActionQuery(d.values[0]??``),t=r?.load;if(e===void 0||t===void 0){close(d.values);return}loadSearch(e,t);return}case`error`:s=d.message,this.#dt();return;case`ignore`:return}}).promise}#ye(e){this.#Pe();let t=this.#Te();t.status=e.status;let n;t.question=t=>renderSelectQuestion({kind:`actions`,context:e.context,actions:e.actions,cursor:n},this.#r,t),this.#dt();let r=this.#De((t,r)=>{let i=setupSelectionIntent(t);switch(i?.kind){case`cancel`:r(void 0);return;case`move`:n=moveActionCursor(n,i.direction,e.actions.length),this.#dt();return;case`repaint`:this.#dt();return;case`submit`:n!==void 0&&r(e.actions[n].value);return;case void 0:return}},()=>{t.status=void 0});return{choice:r.promise,close:()=>r.settle(void 0)}}async#be(e){let t=this.#we(),n={options:e.options};e.initialValue!==void 0&&(n.defaultValue=e.initialValue);let r=initialSelectState(n),i=lineOf(``),a;t.question=t=>{let n={kind:`inline-edit`,layout:`task-list`,message:e.message,options:e.options,select:r,edit:{optionValue:e.editable.value,caretVisible:this.#I,editor:{kind:`rename`,editor:i,defaultValue:e.editable.defaultValue,formatHint:e.editable.formatHint}}};return a!==void 0&&(n.error=a),renderSelectQuestion(n,this.#r,t)};let onEditableRow=()=>selectValueAtCursor([...e.options],r.cursor)===e.editable.value,syncEditableRow=()=>{onEditableRow()?(i.text.length===0&&(i=lineOf(e.editable.defaultValue)),this.#Ue()):(i=lineOf(``),this.#We())};return syncEditableRow(),this.#dt(),await this.#De((t,n)=>{let applyEditor=e=>{i=e,a=void 0,this.#Ge(),this.#dt()},applySelect=t=>{r=reduceSelect(r,t,{options:e.options}),a=void 0,syncEditableRow(),this.#dt()},submit=()=>{let t=selectValueAtCursor([...e.options],r.cursor);if(t===void 0)return;if(t!==e.editable.value){n({kind:`selected`,value:t});return}let o=(i.text||e.editable.defaultValue).trim(),s=e.editable.validate?.(o);if(s!==void 0){a=s,this.#dt();return}n(o===e.editable.defaultValue?{kind:`selected`,value:t}:{kind:`edited`,value:t,text:o})},o=setupSelectionIntent(t);switch(o?.kind){case`cancel`:n(void 0);return;case`move`:applySelect({type:o.direction});return;case`submit`:submit();return;case`repaint`:this.#dt();return;case void 0:break}if(!onEditableRow())return;let s=applyLineEditorKey(i,t);s!==void 0&&applyEditor(s)},()=>this.#We()).promise}async#xe(e){let t=this.#we(),n=initialProviderPickerState(e.options,e.initialValue),r;t.question=t=>renderSelectQuestion({kind:`inline-edit`,layout:`stacked`,message:e.message,options:e.options,select:n.select,edit:{optionValue:`own-key`,caretVisible:this.#I,editor:{kind:`key`,phase:n.phase}}},this.#r,t);let syncCaret=()=>{n.phase.kind===`editing`||n.phase.kind===`invalid`?this.#Ue():this.#We()};return syncCaret(),this.#dt(),await this.#De((t,i,a)=>{let dispatch=t=>{let o=transitionProviderPicker(n,t,e.options);switch(o.kind){case`ignore`:return;case`clear`:r?.abort(),r=void 0,n=o.state,syncCaret(),this.#dt();return;case`cancel`:i(void 0);return;case`render`:n=o.state,syncCaret(),this.#dt();return;case`validate`:{n=o.state,syncCaret(),this.#dt();let t=new AbortController;r=t;let i;try{i=e.validateInlineKey(o.key,t.signal)}catch(e){a(e);return}i.then(e=>{r!==t||t.signal.aborted||(r=void 0,dispatch({type:`validated`,validation:e}))},e=>{r!==t||t.signal.aborted||(r=void 0,a(e))});return}case`settle`:i(o.result);return}},o=setupSelectionIntent(t);switch(o?.kind){case`cancel`:dispatch({type:`cancel`});return;case`move`:dispatch({type:`move`,direction:o.direction});return;case`submit`:dispatch({type:`submit`});return;case`repaint`:this.#dt();return;case void 0:break}if(n.phase.kind!==`editing`&&n.phase.kind!==`invalid`)return;let s=applyLineEditorKey(n.phase.editor,t);s!==void 0&&(this.#Ge(),dispatch({type:`edit`,editor:s}))},()=>{r?.abort(),r=void 0,this.#We()}).promise}async#Se(e){let t=this.#we(),n=lineOf(``),r;return t.question=t=>{let i={message:e.message,editor:n,mask:e.mask===!0};return e.placeholder!==void 0&&(i.placeholder=e.placeholder),e.notices!==void 0&&(i.notices=e.notices),r!==void 0&&(i.error=r),renderTextQuestion(i,this.#r,t,this.#I)},this.#Ue(),this.#dt(),await this.#De((t,i)=>{let apply=e=>{n=e,r=void 0,this.#Ge(),this.#dt()},a=applyLineEditorKey(n,t);if(a!==void 0){apply(a);return}switch(t.type){case`ctrl-c`:case`escape`:i(void 0);return;case`ctrl-r`:this.#dt();return;case`enter`:{let t=n.text.length>0?n.text:e.defaultValue??``,a=e.validate?.(t);if(a!==void 0){r=a,this.#dt();return}i(t);return}default:return}},()=>this.#We()).promise}async#Ce(e){let t=this.#we();return t.question=t=>renderAcknowledgeQuestion({message:e.message,lines:e.lines},this.#r,t),this.#dt(),await this.#De((e,t)=>{switch(e.type){case`enter`:case`escape`:case`ctrl-c`:t();return;case`ctrl-r`:this.#dt();return;default:return}}).promise}#we(){return this.#Pe(),this.#k=!1,this.#j={kind:`idle`},this.#M=``,this.#Te()}#Te(){return this.#le===void 0&&(this.#le={title:``,indicator:{kind:`spinner`},lines:[],outputBuffer:[]}),this.#le}#Ee(){this.#le!==void 0&&(this.#le.question=void 0,this.#le.hideLinesWhileQuestion=!1),this.#H=void 0,this.#Le(),this.#ke(),this.#dt()}#De(e,t){let n=!1,r,i,a=new Promise((e,t)=>{r=e,i=t}),settle=e=>{n||(n=!0,t?.(),this.#Ee(),r(e))},reject=e=>{n||(n=!0,t?.(),this.#Ee(),i(e))};return this.#H=t=>e(t,settle,reject),this.#Ie(),{promise:a,settle}}#Oe(){let e,t=new Promise(t=>{e=t});return this.#de=e,this.#ke(),{promise:t,dispose:()=>{this.#de===e&&(this.#de=void 0,this.#Ae())}}}#ke(){if(this.#de===void 0)return;let consumer=e=>{if(e.type===`ctrl-c`||e.type===`escape`){let e=this.#de;this.#de=void 0,this.#Ae(),e?.();return}e.type===`ctrl-r`&&this.#dt()};this.#fe=consumer,this.#H=consumer,this.#Ie()}#Ae(){this.#fe!==void 0&&(this.#H===this.#fe&&this.#Le(),this.#fe=void 0)}#je(e){let t=e===void 0?void 0:stripTerminalControls(e);if(this.#le!==void 0){this.#le.status=t,t===void 0&&(this.#le.preview=void 0),this.#dt();return}if(t===void 0){this.#j={kind:`idle`},this.#M=``,this.#Je(),this.#dt();return}this.#Pe(),this.#qe(),this.#M=t,this.#dt()}#Me(e,t){let n=stripTerminalControls(e);if(n.trim().length===0)return;let r=this.#le;if(r!==void 0){if(r.preview=void 0,t===`warning`||t===`error`)for(let e of r.outputBuffer)r.lines.push({text:e,tone:`info`,evidence:!0});r.outputBuffer=[],r.lines.push({text:n,tone:t}),this.#dt();return}this.#Pe(),this.#Ye({kind:`flow`,title:t,body:n,live:!1}),this.#dt()}#Ne(e){let t=stripTerminalControls(e);if(t.trim().length===0)return;let n=this.#le;if(n===void 0){this.#Me(t,`info`);return}n.preview=t,n.outputBuffer.push(t),n.outputBuffer.length>40&&n.outputBuffer.shift(),this.#dt()}shutdown(){this.#Fe()}#Pe(e){this.#N=e?.title??this.#N,this.#Q=e?.contextSize??this.#l,!this.#P&&(this.#P=!0,this.#n.reset(),this.#n.hideCursor(),this.#Et(),this.#e.isTTY&&(this.#e.setRawMode?.(!0),this.#e.resume(),this.#n.emitBracketedPaste(!0)),this.#K=()=>this.#dt(),this.#t.on(`resize`,this.#K))}#Fe(){this.#Le(),this.#We(),this.#Je(),this.#B!==void 0&&(clearTimeout(this.#B),this.#B=void 0),this.#V=!1,this.#P&&=(this.#Pt(),this.#dt(),this.#n.clear(),this.#n.showCursor(),this.#Dt(),this.#n.newline(),this.#e.isTTY&&(this.#n.emitBracketedPaste(!1),this.#e.setRawMode?.(!1),this.#e.pause()),this.#K&&=(this.#t.off(`resize`,this.#K),void 0),!1)}#Ie(){this.#e.off(`data`,this.#Re),this.#e.on(`data`,this.#Re)}#Le(){this.#e.off(`data`,this.#Re),this.#Ve(),this.#U=``,this.#W=new StringDecoder(`utf8`),this.#H=void 0}#Re=e=>{this.#Ve(),this.#U+=this.#W.write(e),this.#Be(),this.#ze()};#ze(){if(this.#U===`\x1B`){this.#G=setTimeout(()=>{this.#U===`\x1B`&&(this.#U=``,this.#H?.({type:`escape`}))},30),this.#G.unref?.();return}if(isIncompletePaste(this.#U)){let e=this.#U;this.#G=setTimeout(()=>{if(this.#U!==e)return;let t=sanitizePastedText(stripPasteStart(e));this.#U=``,t.length>0&&this.#H?.({type:`text`,value:t,framing:`bracketed-paste`})},1e3),this.#G.unref?.()}}#Be(){for(;this.#U.length>0;){let e=nextKey(this.#U);if(e.incomplete)return;this.#U=this.#U.slice(e.consumed),e.key&&e.key.type!==`ignore`&&this.#H?.(e.key)}}#Ve(){this.#G&&=(clearTimeout(this.#G),void 0)}#He(e){switch(e.type){case`ctrl-l`:case`ctrl-r`:this.#dt();break;case`ctrl-c`:this.#F||(this.#F=!0,this.#j={kind:`idle`},this.#M=`Interrupted`,this.#q?.(),this.#dt());break;default:break}}#Ue(){this.#We(),this.#Ge(),this.#R=setInterval(()=>{this.#I=!this.#I,this.#dt()},500),this.#R.unref?.()}#We(){this.#R&&=(clearInterval(this.#R),void 0),this.#I=!0}#Ge(){this.#I=!0}#Ke(){this.#Je(),this.#z=setInterval(()=>{this.#L+=1,this.#dt()},90),this.#z.unref?.()}#qe(){this.#j={kind:`waiting`,startedAtMs:Date.now()},this.#Ke()}#Je(){this.#z&&=(clearInterval(this.#z),void 0)}#Ye(e){e.id!==this.#oe?.id&&this.#Pt(),this.#f.push(e),e.id&&this.#p.set(e.id,e)}#Xe(e){this.#Ye({kind:`user`,body:stripTerminalControls(e),live:!1}),this.#dt()}#Ze(e){if(e!=null){if(this.#ce===e){this.#ce=void 0;return}this.#Ye({kind:`user`,body:stripTerminalControls(e),live:!1})}}#Qe(e,t,n){let r={kind:`error`,title:stripTerminalControls(e),body:stripTerminalControls(t),live:!1};n!==void 0&&(r.detail=stripTerminalControls(n)),this.#Ye(r),this.#dt()}#$e(e,t){this.#v.has(e)||(this.#v.add(e),this.#Ye({id:subagentHeaderId(e),kind:`subagent`,title:stripTerminalControls(t),live:!1}))}#et(e){if(e.id&&this.#m.has(e.id))return;let t=e.id?this.#p.get(e.id):void 0;if(t){Object.assign(t,e);return}this.#Ye(e)}#tt(e){this.#f=this.#f.filter(t=>t.id!==e),this.#p.delete(e)}#nt(){for(let e of this.#f)e.status===`approval`||e.status===`running`||(e.live=!1)}#rt(e,t,n){switch(e.type){case`step-start`:this.#it(n.hasPendingToolResults?STATUS.toolResults:STATUS.processing),n.hasPendingToolResults=!1;break;case`step-finish`:this.#ut(e.usage),this.#dt();break;case`assistant-delta`:{let t=(n.text.get(e.id)??``)+stripTerminalControls(e.delta);this.#at(t),this.#it(STATUS.streaming),n.text.set(e.id,t),this.#ot(e.id,t,!0);break}case`assistant-complete`:{let t=n.text.get(e.id)??``,r=e.text!==void 0&&t.length===0?stripTerminalControls(e.text??``):t;this.#at(r),n.text.set(e.id,r),this.#ot(e.id,r,!1);break}case`reasoning-delta`:{if(t.reasoning===`hidden`)break;let r=(n.reasoning.get(e.id)??``)+stripTerminalControls(e.delta);this.#at(r),this.#it(STATUS.streaming),n.reasoning.set(e.id,r),this.#st(e.id,r,!0,t);break}case`reasoning-complete`:{if(t.reasoning===`hidden`)break;let r=n.reasoning.get(e.id)??``;this.#at(r),this.#st(e.id,r,!1,t);break}case`tool-call`:if(t.tools===`hidden`)break;this.#it(STATUS.executingTools),this.#ct({input:e.input,status:`running`,toolCallId:e.toolCallId,toolName:e.toolName},t,n);break;case`tool-approval-request`:{if(t.tools===`hidden`)break;let r=n.tools.get(e.toolCallId);if(r===void 0)break;this.#ct({...r,status:`approval`},t,n);break}case`tool-result`:{if(t.tools===`hidden`)break;let r=this.#lt(e.toolCallId,n);if(r===void 0)break;n.hasPendingToolResults=!0,this.#it(STATUS.toolResults),this.#ct({...r,output:e.output,status:`done`},t,n);break}case`tool-error`:{if(t.tools===`hidden`)break;let r=this.#lt(e.toolCallId,n);if(r===void 0)break;n.hasPendingToolResults=!0,this.#it(STATUS.toolResults),this.#ct({...r,errorText:e.errorText,status:`error`},t,n);break}case`error`:this.#Qe(`Error`,e.errorText,e.detail);break;case`finish`:this.#ut(e.usage),this.#dt();break}}#it(e){let t=this.#w>0?STATUS.connectionAuth:e;this.#M!==t&&(this.#M=t,this.#dt())}#at(e){e.trim().length>0&&(this.#j={kind:`answering`})}#ot(e,t,n){let r=stripTerminalControls(t).trim();r.length!==0&&(this.#et({id:e,kind:`assistant`,body:r,live:n}),this.#dt())}#st(e,t,n,r){let a=stripTerminalControls(t).trim();a.length!==0&&(this.#et({id:e,kind:`reasoning`,body:a,collapsed:collapseReasoning(r.reasoning,n),live:n}),this.#dt())}#ct(e,t,n){if(n.tools.set(e.toolCallId,e),this.#g.has(e.toolCallId))return;let r=toolSectionId(e.toolCallId);this.#_.set(e.toolCallId,r),this.#et(renderNativeToolBlock(e,r,t.tools===`full`)),this.#dt()}#lt(e,t){let n=t.tools.get(e);if(n!==void 0)return n;let r=this.#_.get(e)??toolSectionId(e),i=this.#p.get(r);if(!(i===void 0||i.kind!==`tool`))return{errorText:i.status===`error`&&typeof i.result==`string`?i.result:void 0,input:i.toolInput,output:i.toolOutput,status:i.status??`running`,toolCallId:e,toolName:i.title??`tool`}}#ut(e){if(e===void 0)return;let{inputTokens:t,outputTokens:n}=e;if((t!=null||n!=null)&&(this.#X=(t??0)+(n??0)),this.#Z=t??this.#Z,this.#$=n??this.#$,this.#$!=null&&this.#te!==void 0){let e=(Date.now()-this.#te)/1e3;e>0&&(this.#ee=this.#$/e)}}#dt(){if(this.#P){if(this.#J){this.#Y=!0;return}this.#J=!0;try{do this.#Y=!1,this.#ft();while(this.#Y)}finally{this.#J=!1}}}#ft(){if(!this.#P)return;let e=this.#wt(),t=this.#xt(e),n=Math.max(1,this.#Tt()-t.length),r=[],i=this.#C;for(;this.#f.length>0&&this.#f[0].live===!1;){let t=this.#f.shift();if(this.#h.push(t),t.id&&(this.#m.add(t.id),this.#p.delete(t.id)),this.#It(t))continue;let n=this.#_t(t,e,i);i=previousBlockOf(t),this.#C=i,r.push(...n),this.#S.push(...n)}let a=[];for(let t of this.#f){if(this.#It(t))continue;let n=this.#_t(t,e,i);i=previousBlockOf(t);for(let e=0;e<n.length;e+=1)a.push({block:t,row:n[e]})}let o=[...clipLiveRows(a.map(e=>e.row),n,e,this.#r),...t];r.length>0?this.#n.flush(r,o):this.#n.update(o)}#pt(){if(!this.#P)return;let e=this.#wt(),t=this.#xt(e),n=Math.max(1,this.#Tt()-t.length),r=this.#C,i=[];for(let t of this.#f){if(this.#It(t))continue;let n=this.#_t(t,e,r);r=previousBlockOf(t),i.push(...n)}let a=[...clipLiveRows(i,n,e,this.#r),...t];this.#n.clearAll(),this.#n.flush([...this.#gt(),...this.#S],a)}logDisplayMode(){return this.#d}setLogDisplayMode(e){e!==this.#d&&(this.#d=e,e===`all`&&this.flushDelayedDevBuildErrors(),this.#ht(),this.#P&&this.#pt())}flushDelayedDevBuildErrors(){let e=this.#ae;e!==void 0&&(this.#ae=void 0,this.#Ye({kind:`log`,title:`stderr`,body:e,live:!1}),this.#dt())}#mt(){this.#V=!0,this.#B!==void 0&&clearTimeout(this.#B),this.#B=setTimeout(()=>{this.#V=!1,this.#B=void 0,this.#dt()},5e3),this.setLogDisplayMode(nextLogDisplayMode(this.#d)),this.#dt()}#ht(){let e=this.#wt();this.#S.length=0;let t;for(let n of this.#h){if(this.#It(n))continue;let r=this.#_t(n,e,t);t=previousBlockOf(n),this.#S.push(...r)}this.#C=t}#gt(){let e=this.#y;if(e===void 0)return[];let t={name:e.name,theme:this.#r,width:this.#wt()};return e.info!==void 0&&(t.info=e.info),e.tip!==void 0&&(t.tip=e.tip),buildAgentHeader(t)}#_t(e,t,n){let r={spinner:this.#vt()};n!==void 0&&(r.previous=n);let i=renderBlockLines(e,t,this.#r,r);return(e.depth??0)===0&&leadsWithGap(e,n)?[``,...i]:i}#vt(){return this.#r.spinner[this.#L%this.#r.spinner.length]??``}#yt(e,t){return isProgressPulseVisible(Date.now()-e)?t:` `}#bt(e){return e.indicator.kind===`spinner`?{glyph:this.#vt(),color:`yellow`}:{glyph:this.#yt(e.indicator.startedAtMs,this.#r.unicode?PROGRESS_PULSE_GLYPH:PROGRESS_PULSE_ASCII_GLYPH),color:`green`}}#xt(e){let t=this.#r.colors,n=[``],r=this.#le;if(r!==void 0){let t=this.#bt(r),i;if(r.question!==void 0){let n=r.question(e);i={kind:`question`,rows:n},r.status!==void 0&&(i={kind:`question`,rows:n,status:{text:r.status,indicator:t}})}else r.status===void 0?i=r.preview===void 0?{kind:`idle`,indicator:t}:{kind:`preview`,text:r.preview,indicator:t}:(i={kind:`status`,status:{text:r.status,indicator:t}},r.preview!==void 0&&(i={kind:`status`,status:{text:r.status,indicator:t},preview:r.preview}));let a={title:r.title,lines:r.hideLinesWhileQuestion===!0?[]:r.lines,content:i};return n.push(...renderFlowPanel(a,this.#r,e)),n}if(this.#ue!==void 0&&n.push(...renderAttentionRows(this.#ue,e,this.#r),``),this.#k){let r=this.#A===void 0?void 0:inlineCommandHint(this.#A);r===void 0&&this.#A!==void 0&&isTypeaheadOpen(this.#A)&&n.push(...renderCommandSuggestions(this.#A,this.#r,e));let i=isPromptControlCommand(this.#E),a=r?t.dim(` ${r}`):``,o=[];this.#St(o,e);let s=Math.max(1,this.#Tt()-1-n.length-1-o.length);return n.push(...promptInputRows({text:this.#E,cursor:this.#D,width:e,theme:this.#r,caretVisible:this.#I,isCommand:i,ghost:a,maxRows:s})),n.push(...o),n}let i=this.#j;if(i.kind===`answering`)return this.#St(n,e),n;let a=i.kind===`waiting`,o=a?t.green(this.#yt(i.startedAtMs,this.#r.unicode?`⊙`:`o`)):t.dim(this.#r.glyph.dot),s=this.#M.length>0?this.#M:`Ready`,c=a?t.dim(s):s,u=this.#Ct(),f=a?` `:``,p=u?`${f}${o} ${c} ${t.dim(this.#r.glyph.dot)} ${u}`:`${f}${o} ${c}`;n.push(clip(p,e));let g=[];return this.#St(g,e),a&&g.length>0&&n.push(``),n.push(...g),n}#St(e,t){let n={theme:this.#r,width:t};this.#V&&(n.logLevel=this.#d);let r=this.#y?.info?.agent.model.id;r!==void 0&&(n.model=r);let i=this.#y?.info?.agent.model.endpoint;i!==void 0&&(n.endpoint=i);let a=this.#Z??0,o=this.#$??0;if(a>0||o>0){let e={inputTokens:a,outputTokens:o};this.#Q!==void 0&&(e.contextSize=this.#Q),n.tokens=formatTokenFlow(e,this.#r.glyph)}this.#T!==void 0&&(n.vercel=this.#T);let s=buildStatusLine(n);s!==void 0&&e.push(s)}#Ct(){let e=this.#r.colors,t=[],n=formatAssistantResponseStats({totalTokens:this.#X,outputTokens:this.#$,tokensPerSecond:this.#ee},this.#c);return n&&t.push(n),t.length>0?e.dim(t.join(` ${this.#r.glyph.dot} `)):``}#wt(){return Math.max(20,this.#t.columns||80)}#Tt(){return Math.max(8,this.#t.rows||24)}#Et(){if(this.#ne!==void 0||!this.#u)return;this.#re=``,this.#ie=``;let capture=(e,t)=>{let n=e.write.bind(e);return e.write=((e,n,r)=>{let i=typeof n==`string`?n:void 0,a=typeof n==`function`?n:r;return this.#Ot(t,chunkToString(e,i)),a?.(),!0}),()=>{e.write=n}},e=capture(process.stdout,`stdout`),t=capture(process.stderr,`stderr`);this.#ne=()=>{e(),t()}}#Dt(){let e=this.#ne;e!==void 0&&(this.#ne=void 0,e(),this.#re.length>0&&(this.#Ft(`stdout`)&&process.stdout.write(`${this.#re}\n`),this.#re=``),this.#ie.length>0&&(this.#Ft(`stderr`)&&process.stderr.write(`${this.#ie}\n`),this.#ie=``))}#Ot(e,t){let n=(e===`stdout`?this.#re:this.#ie)+t,i=n.lastIndexOf(`
|
|
4
|
+
`),a=i===-1?n:n.slice(i+1);if(e===`stdout`?this.#re=a:this.#ie=a,i===-1)return;let o=stripAnsi(n.slice(0,i)).replace(/\s+$/u,``);o.trim().length!==0&&(e===`stdout`?this.#kt(o):this.#At(o),this.#dt())}#kt(e){let t=[],flushPending=()=>{if(t.length===0)return;let e=t.join(`
|
|
5
|
+
`);t=[],e.trim().length!==0&&this.#Ye({kind:`log`,title:`stdout`,body:e,live:!1})};for(let n of e.split(`
|
|
6
|
+
`)){let e=parseSandboxLogLine(n.trimEnd());if(e!==void 0){flushPending(),this.#Ye({kind:`sandbox`,body:e,live:!1});continue}let r=parseDevRebuildLogLine(n.trimEnd());if(r===void 0){t.push(n);continue}flushPending(),this.#Mt(r,n.trimEnd())}flushPending()}#At(e){let t=e.split(`
|
|
7
|
+
`),n=t.findIndex(e=>parseDevRebuildLogLine(e.trimEnd())?.kind===`failed`);if(n===-1){this.#Ye({kind:`log`,title:`stderr`,body:e,live:!1});return}let r=t.slice(0,n).join(`
|
|
8
|
+
`);r.trim().length>0&&this.#Ye({kind:`log`,title:`stderr`,body:r,live:!1});let i=t.slice(n).join(`
|
|
9
|
+
`);this.#jt(i)}#jt(e){if(this.#d===`all`){if(e.trim().length===0)return;this.#Ye({kind:`log`,title:`stderr`,body:e,live:!1});return}this.#ae=e}#Mt(e,t){let n=this.#Nt();if(e.kind===`failed`){this.#jt(t);return}if(e.kind===`rebuilding`){let t=summarizeChangedFiles(e.events,e.more);if(n!==void 0){n.state.summary=t,n.block.body=formatDevRebuildStatus(t,`rebuilding`);return}let r=`dev-rebuild:${this.#se}`;this.#se+=1,this.#oe={id:r,summary:t},this.#Ye({kind:`log`,id:r,title:`stdout`,body:formatDevRebuildStatus(t,`rebuilding`),live:!0});return}if(n!==void 0){n.block.body=formatDevRebuildStatus(n.state.summary,e.kind),e.kind===`rebuilt`&&(this.#ae=void 0);return}e.kind===`rebuilt`&&(this.#ae=void 0),this.#Ye({kind:`log`,title:`stdout`,body:t,live:!1})}#Nt(){let e=this.#oe;if(e===void 0)return;let t=this.#p.get(e.id);if(!(t===void 0||t.live!==!0))return{state:e,block:t}}#Pt(){let e=this.#oe;if(e===void 0)return;this.#oe=void 0;let t=this.#p.get(e.id);t!==void 0&&(t.live=!1)}#Ft(e){switch(this.#d){case`none`:return!1;case`stderr`:return e===`stderr`;case`sandbox`:return e===`sandbox`;case`all`:return!0}}#It(e){return e.kind===`sandbox`?!this.#Ft(`sandbox`):e.kind===`log`?!this.#Ft(e.title===`stderr`?`stderr`:`stdout`):!1}};function chunkToString(e,t){return typeof e==`string`?e:Buffer.from(e).toString(t)}async function*iterateTUIStream(e){if(e instanceof ReadableStream){let t=e.getReader();try{for(;;){let{done:e,value:n}=await t.read();if(e)return;yield n}}finally{t.releaseLock()}return}yield*e}function clip(t,n){return clipVisible(t,n)}function promptInputRows({text:e,cursor:r,width:i,theme:a,caretVisible:o,isCommand:s,ghost:c,maxRows:l}){let u=a.colors,style=e=>{let n=renderInputText(e);return s&&n.length>0?u.blue(n):n},d=layoutPromptInput({text:e,cursor:r}),f=Math.min(Math.max(1,l),d.rows.length),p=Math.max(0,Math.min(d.caretRow-f+1,d.rows.length-f)),m=u.cyan(a.glyph.prompt),h=u.dim(a.glyph.ellipsis),g=Math.max(1,i-4),_=[];for(let e=p;e<p+f;e+=1){let t=d.rows[e],r=e===0?m:` `;(e===p&&p>0||e===p+f-1&&p+f<d.rows.length)&&(r=h);let s;if(e===d.caretRow){let{before:e,under:r,after:i}=visibleLine({text:t.text,cursor:d.caretOffset},g,a.glyph.ellipsis);s=renderInputWithBlockCursor({before:e,under:r,after:i,visible:o,inverse:u.inverse,render:style}),c.length>0&&d.rows.length===1&&(s+=c)}else s=style(t.text);_.push(clip(` ${r} ${s}`,i))}return _.push(``),_}function previousBlockOf(e){let t={kind:e.kind};return e.title!==void 0&&(t.title=e.title),t}function leadsWithGap(e,t){if(e.kind===`sandbox`&&t?.kind===`sandbox`)return!1;if(t?.kind===`sandbox`&&e.kind!==`sandbox`)return!0;if(e.kind===`log`&&t?.kind===`log`)return t.title!==e.title;if(t?.kind===`log`&&e.kind!==`log`)return!0;switch(e.kind){case`user`:case`assistant`:case`reasoning`:case`subagent`:case`error`:case`notice`:case`question`:case`connection-auth`:case`sandbox`:case`log`:case`command`:case`warning`:case`flow`:case`agent-header`:return!0;default:return!1}}function parseSandboxLogLine(e){let t=e.trim();if(!t.startsWith(`eve: `))return;let n=t.slice(5);return/\bsandbox\b/i.test(n)&&!isLowValueSandboxLogLine(n)?n:void 0}function isLowValueSandboxLogLine(e){return/^initializing (?:\d+ )?sandbox templates?\b/i.test(e)||/^initialized \d+ sandbox\b/i.test(e)||/^reused cached sandbox template\b/i.test(e)||/^sandbox template "[^"]+" \([^)]+\): (checking|reusing|loading microsandbox runtime|microsandbox runtime ready)\b/i.test(e)}function clipLiveRows(e,t,n,r){if(e.length<=t)return[...e];if(t<=1)return[clip(hiddenRowsMarker(e.length,r),n)];let i=t-1;return[clip(hiddenRowsMarker(e.length-i,r),n),...e.slice(e.length-i)]}function hiddenRowsMarker(e,t){let n=e.toLocaleString(),r=e===1?`row`:`rows`;return t.colors.dim(`${t.glyph.dot} ${t.glyph.ellipsis} ${n} earlier ${r} hidden while streaming`)}function collapseReasoning(e,t){switch(e){case`collapsed`:return!0;case`auto-collapsed`:return!t;default:return!1}}function renderNativeToolBlock(e,t,n){let r={id:t,kind:`tool`,title:stripTerminalControls(e.toolName),subtitle:summarizeToolArgs(e.input),status:e.status,live:e.status===`running`||e.status===`approval`,expanded:n,toolInput:e.input};return e.output===void 0?e.errorText!==void 0&&(r.result=stripTerminalControls(e.errorText)):(r.result=summarizeToolResult(e.output),r.toolOutput=e.output),r}function subagentToolStatus(e){switch(e){case`approval-requested`:return`approval`;case`executing`:return`running`;case`done`:return`done`;case`failed`:return`error`}}function formatToolApprovalTitle(e){return stripTerminalControls(e.title??e.toolName)}function toolSectionId(e){return`tool:${e}`}function questionSectionId(e){return`question:${e}`}function subagentHeaderId(e){return`subagent:${e}:header`}function subagentStepSectionId(e,t){return`subagent:${e}:step:${t}`}function subagentToolSectionId(e,t){return`subagent:${e}:tool:${t}`}function connectionAuthSectionId(e){return`connection-auth:${e}`}function formatConnectionAuthContent(e){let t=[],n=stripTerminalControls(e.description);n.length>0&&t.push(n);let r=e.challenge;if(r?.url&&t.push(`URL: ${stripTerminalControls(r.url)}`),r?.userCode&&t.push(`Code: ${stripTerminalControls(r.userCode)}`),r?.expiresAt&&t.push(`Expires: ${stripTerminalControls(r.expiresAt)}`),r?.instructions&&t.push(stripTerminalControls(r.instructions)),e.reason!==void 0){let n=stripTerminalControls(e.reason);n.length>0&&t.push(`Reason: ${n}`)}return t.join(`
|
|
10
10
|
`)}function formatQuestionContent(e,t,n){let r=n.colors,a=[],o=e.options??[];if(o.length>0){for(let[e,s]of o.entries()){let o=stripTerminalControls(s.label),c=s.description===void 0?``:stripTerminalControls(s.description),l=t===e,u=c.length>0?`${l?` `:` `}${r.dim(`— ${c}`)}`:``,d=renderCursorRow(l?`${n.glyph.selectedPointer} ${o}`:` ${o}`,l,r);a.push(`${d}${u}`)}if(e.allowFreeform===!0){let e=t===o.length,i=`Type your own answer`,s=e?`${n.glyph.selectedPointer} ${i}`:` ${r.dim(i)}`;a.push(renderCursorRow(s,e,r))}}else a.push(r.dim(` (type your answer)`));return a.join(`
|
|
11
11
|
`)}function resolveQuestionText(e,t){let n=e.trim();if(n.length===0)return;let r=n.toLowerCase(),i=t.options??[];if(i.length>0){let e=matchQuestionOption(r,i);if(e!==void 0)return{optionId:e.id,label:e.label}}if(t.allowFreeform===!0||i.length===0)return{text:n,label:n}}function matchQuestionOption(e,t){let n=t.find(t=>t.id.toLowerCase()===e);if(n!==void 0)return n;let r=t.find(t=>t.label.toLowerCase()===e);if(r!==void 0)return r;let i=Number(e);if(Number.isInteger(i)&&i>0&&i<=t.length)return t[i-1]}export{TerminalRenderer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
function createFakeSetupFlowRenderer(e={}){return{begin:()=>{},end:()=>{},readSelect:async()=>void 0,readEditableSelect:async()=>void 0,readText:async()=>void 0,readAcknowledge:async()=>{},readChoice:()=>({choice:Promise.resolve(void 0),close:()=>{}}),setStatus:()=>{},renderLine:()=>{},renderOutput:()=>{},waitForInterrupt:()=>({promise:new Promise(()=>{}),dispose:()=>{}}),...
|
|
1
|
+
function createFakeSetupFlowRenderer(e={}){let{readProviderPicker=async()=>void 0,...t}=e;return{begin:()=>{},end:()=>{},readSelect:async()=>void 0,readEditableSelect:async()=>void 0,readProviderPicker,readText:async()=>void 0,readAcknowledge:async()=>{},readChoice:()=>({choice:Promise.resolve(void 0),close:()=>{}}),setStatus:()=>{},renderLine:()=>{},renderOutput:()=>{},waitForInterrupt:()=>({promise:new Promise(()=>{}),dispose:()=>{}}),...t}}export{createFakeSetupFlowRenderer};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createPromptCommandHandler}from"./prompt-command-handler.js";import{EveTUIRunner}from"./runner.js";import{toErrorMessage}from"#shared/errors.js";import{Client}from"#client/index.js";import{
|
|
1
|
+
import{createPromptCommandHandler}from"./prompt-command-handler.js";import{EveTUIRunner}from"./runner.js";import{toErrorMessage}from"#shared/errors.js";import{Client}from"#client/index.js";import{formatVercelAuthChallengeMessage,isVercelAuthChallenge}from"#services/dev-client/vercel-auth-error.js";import{resolveDevelopmentClientOptions}from"#services/dev-client/client-options.js";import{resolveVerifiedRemoteDevelopmentClient}from"#setup/verified-remote-client.js";async function resolveClientOptions(e){return e.kind===`local`?{options:resolveDevelopmentClientOptions(e.serverUrl),lastOidcTokenFailure:()=>void 0}:await resolveVerifiedRemoteDevelopmentClient({serverUrl:e.serverUrl,workspaceRoot:e.workspaceRoot})}async function runDevelopmentTui(t){let{target:n,initialInput:r,onBootProgress:i,...a}=t,{serverUrl:o}=n,{options:s,lastOidcTokenFailure:c}=await resolveClientOptions(n),l=new Client(s),u={...a,session:l.session(),client:l,serverUrl:o,promptCommandHandler:createPromptCommandHandler(n.kind===`local`?{appRoot:n.workspaceRoot}:{}),formatTransportError:e=>isVercelAuthChallenge(e)?formatVercelAuthChallengeMessage({serverUrl:o,oidcTokenFailure:c()}):toErrorMessage(e)};n.kind===`local`&&(u.appRoot=n.workspaceRoot),r!==void 0&&(u.initialInput=r),i!==void 0&&(u.onBootProgress=i),await new EveTUIRunner(u).run()}export{runDevelopmentTui};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { UpdateProjectCustomAllow, UpdateProjectTrustedSources } from "@vercel/sdk/models/updateprojectprojectsaction.js";
|
|
2
|
+
export type TrustedSourceEnvironmentRule = UpdateProjectCustomAllow;
|
|
3
|
+
export interface TrustedSourceProject {
|
|
4
|
+
readonly projectId: string;
|
|
5
|
+
readonly customEnvironmentSlugs: readonly string[];
|
|
6
|
+
}
|
|
7
|
+
type TrustedSourceAccessPlan = {
|
|
8
|
+
readonly kind: "unchanged";
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: "update";
|
|
11
|
+
readonly trustedSources: UpdateProjectTrustedSources;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Plans the smallest policy update that lets a project's Development token
|
|
15
|
+
* reach one of that same project's deployment environments.
|
|
16
|
+
*/
|
|
17
|
+
export declare function planTrustedSourceAccess(input: {
|
|
18
|
+
readonly project: TrustedSourceProject;
|
|
19
|
+
readonly targetEnvironment: string;
|
|
20
|
+
readonly trustedSources?: UpdateProjectTrustedSources;
|
|
21
|
+
}): TrustedSourceAccessPlan;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
const SYSTEM_ENVIRONMENTS=new Set([`development`,`preview`,`production`]);function environmentSetIncludes(t,n){return t.slugs?.includes(n)===!0?!0:t.preset===`all-custom`&&!SYSTEM_ENVIRONMENTS.has(n)}function ruleIncludes(e,t,n){return environmentSetIncludes(e.from,t)&&environmentSetIncludes(e.to,n)}function environmentRule(e,t){return{from:{slugs:[e]},to:{slugs:[t]}}}function defaultRules(e){let t=[environmentRule(`production`,`production`),environmentRule(`preview`,`preview`),environmentRule(`development`,`preview`)];for(let n of e.customEnvironmentSlugs)t.push(environmentRule(n,n));return t}function planTrustedSourceAccess(e){let t=e.trustedSources?.projects?.[e.project.projectId],n=t?.customAllow??defaultRules(e.project);if(n.some(t=>ruleIncludes(t,`development`,e.targetEnvironment)))return{kind:`unchanged`};let r=[...n,environmentRule(`development`,e.targetEnvironment)];return{kind:`update`,trustedSources:{...e.trustedSources,projects:{...e.trustedSources?.projects,[e.project.projectId]:{...t,customAllow:r}}}}}export{planTrustedSourceAccess};
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { captureVercel } from "#setup/primitives/index.js";
|
|
2
|
+
import type { Prompter } from "#setup/prompter.js";
|
|
3
|
+
import type { VerifiedVercelTarget } from "#setup/vercel-deployment.js";
|
|
4
|
+
type VercelTrustedSourcePreparation = {
|
|
5
|
+
readonly kind: "unchanged";
|
|
6
|
+
} | {
|
|
7
|
+
readonly kind: "approved";
|
|
8
|
+
readonly grant: VercelTrustedSourceGrant;
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: "cancelled";
|
|
11
|
+
} | {
|
|
12
|
+
readonly kind: "failed";
|
|
13
|
+
readonly message: string;
|
|
14
|
+
};
|
|
15
|
+
type VercelTrustedSourceApplication = {
|
|
16
|
+
readonly kind: "unchanged";
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: "updated";
|
|
19
|
+
readonly targetProjectName: string;
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: "failed";
|
|
22
|
+
readonly message: string;
|
|
23
|
+
};
|
|
24
|
+
export interface VercelTrustedSourceGrant {
|
|
25
|
+
readonly ownerId: string;
|
|
26
|
+
readonly projectId: string;
|
|
27
|
+
readonly projectName: string;
|
|
28
|
+
readonly targetEnvironment: string;
|
|
29
|
+
}
|
|
30
|
+
export interface VercelTrustedSourceDeps {
|
|
31
|
+
readonly captureVercel: typeof captureVercel;
|
|
32
|
+
}
|
|
33
|
+
/** Confirms a Trusted Sources grant for one verified target project. */
|
|
34
|
+
export declare function prepareVercelTrustedSourceAccess(input: {
|
|
35
|
+
readonly workspaceRoot: string;
|
|
36
|
+
readonly target: VerifiedVercelTarget;
|
|
37
|
+
readonly prompter: Prompter;
|
|
38
|
+
readonly signal?: AbortSignal;
|
|
39
|
+
readonly deps?: Partial<VercelTrustedSourceDeps>;
|
|
40
|
+
}): Promise<VercelTrustedSourcePreparation>;
|
|
41
|
+
/** Applies an approved grant against the target project's latest policy. */
|
|
42
|
+
export declare function applyVercelTrustedSourceAccess(input: {
|
|
43
|
+
readonly workspaceRoot: string;
|
|
44
|
+
readonly grant: VercelTrustedSourceGrant;
|
|
45
|
+
readonly signal?: AbortSignal;
|
|
46
|
+
readonly deps?: Partial<VercelTrustedSourceDeps>;
|
|
47
|
+
}): Promise<VercelTrustedSourceApplication>;
|
|
48
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{planTrustedSourceAccess}from"./vercel-trusted-sources-policy.js";import{updateProjectTrustedSourcesFromJSON}from"../../../node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsaction.js";import{trustedSourcesToJSON}from"../../../node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsoptionsallowlist.js";import{array,object,string,unknown}from"../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/v4/classic/schemas.js";import"../../../node_modules/.pnpm/zod@4.4.3/node_modules/zod/index.js";import{captureVercel}from"#setup/primitives/index.js";import{normalizeVercelApiResult}from"#setup/vercel-api-failure.js";const ProjectSchema=object({id:string().min(1),name:string().min(1),customEnvironments:array(object({slug:string().min(1)})).optional(),trustedSources:unknown().nullable().optional()});function parseJson(e){try{return JSON.parse(e)}catch{return}}function parseTrustedSources(e){let n=JSON.stringify(e);if(n===void 0)return;let r=updateProjectTrustedSourcesFromJSON(n);return r.ok?r.value:void 0}function parseProject(e){let t=ProjectSchema.safeParse(parseJson(e));if(!t.success)return;let{trustedSources:n,...r}=t.data;if(n==null)return r;let i=parseTrustedSources(n);return i===void 0?void 0:{...r,trustedSources:i}}const ProjectUpdateSchema=object({id:string().min(1)}),defaultDeps={captureVercel};function environmentLabel(e){switch(e){case`development`:return`Development`;case`preview`:return`Preview`;case`production`:return`Production`;default:return e}}function projectPolicyContext(e){return{projectId:e.id,customEnvironmentSlugs:e.customEnvironments?.map(({slug:e})=>e)??[]}}async function readProject(e){let t=await e.deps.captureVercel([`api`,`/v9/projects/${encodeURIComponent(e.projectId)}`,`--scope`,e.ownerId,`--raw`],{cwd:e.workspaceRoot,nonInteractive:!0,signal:e.signal});if(!t.ok)return{kind:`failed`,message:t.failure.message};let n=parseProject(t.stdout);return n===void 0||n.id!==e.projectId?{kind:`failed`,message:`Vercel returned an invalid project response.`}:{kind:`project`,project:n}}async function prepareVercelTrustedSourceAccess(t){let n={...defaultDeps,...t.deps},r=t.target.deployment,i=await readProject({deps:n,workspaceRoot:t.workspaceRoot,ownerId:r.ownerId,projectId:r.projectId,signal:t.signal});if(i.kind===`failed`)return{kind:`failed`,message:`Could not read Deployment Protection for ${r.projectName}: ${i.message}`};let{project:a}=i;if(planTrustedSourceAccess({project:projectPolicyContext(a),targetEnvironment:r.environment,trustedSources:a.trustedSources??void 0}).kind===`unchanged`)return{kind:`unchanged`};let o=environmentLabel(`development`),s=environmentLabel(r.environment);return await t.prompter.select({message:`Allow ${o} from ${a.name} to access ${s} deployments of ${a.name}?`,hintLayout:`stacked`,notices:[{tone:`warning`,text:`This changes Deployment Protection for ${a.name} until the Trusted Sources rule is removed.`}],options:[{value:`continue`,label:`Allow access`,hint:`Add ${o} → ${s} to Trusted Sources`},{value:`cancel`,label:`Cancel`,hint:`Leave Deployment Protection unchanged`}]})===`cancel`?{kind:`cancelled`}:{kind:`approved`,grant:{ownerId:r.ownerId,projectId:a.id,projectName:a.name,targetEnvironment:r.environment}}}async function applyVercelTrustedSourceAccess(t){let r={...defaultDeps,...t.deps},i=await readProject({deps:r,workspaceRoot:t.workspaceRoot,ownerId:t.grant.ownerId,projectId:t.grant.projectId,signal:t.signal});if(i.kind===`failed`)return{kind:`failed`,message:`Could not refresh Deployment Protection for ${t.grant.projectName}: ${i.message}`};let{project:a}=i,o=planTrustedSourceAccess({project:projectPolicyContext(a),targetEnvironment:t.grant.targetEnvironment,trustedSources:a.trustedSources??void 0});if(o.kind===`unchanged`)return{kind:`unchanged`};let s=normalizeVercelApiResult(await r.captureVercel([`api`,`/v9/projects/${encodeURIComponent(a.id)}`,`--scope`,t.grant.ownerId,`--method`,`PATCH`,`--field`,`trustedSources=${trustedSourcesToJSON(o.trustedSources)}`,`--raw`],{cwd:t.workspaceRoot,nonInteractive:!0,signal:t.signal}));if(!s.ok)return{kind:`failed`,message:`Could not update Trusted Sources for ${a.name}: ${s.failure.message}`};let c=ProjectUpdateSchema.safeParse(parseJson(s.stdout));return(c.success?c.data:void 0)?.id===a.id?{kind:`updated`,targetProjectName:a.name}:{kind:`failed`,message:`Vercel returned an invalid project response.`}}export{applyVercelTrustedSourceAccess,prepareVercelTrustedSourceAccess};
|