@robota-sdk/agent-transport 3.0.0-beta.69 → 3.0.0-beta.70
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/dist/node/headless/index.cjs +1 -1
- package/dist/node/headless/index.d.ts +2 -2
- package/dist/node/headless/index.js +1 -1
- package/dist/node/headless-C6tj35h3.js +15 -0
- package/dist/node/headless-C6tj35h3.js.map +1 -0
- package/dist/node/headless-DCtHvyVf.cjs +14 -0
- package/dist/node/http/index.d.ts +1 -1
- package/dist/node/index-27HV5PJB.d.ts +68 -0
- package/dist/node/index-27HV5PJB.d.ts.map +1 -0
- package/dist/node/index-BRchlFBE.d.ts +68 -0
- package/dist/node/index-BRchlFBE.d.ts.map +1 -0
- package/dist/node/{index-C7DvsmEg.d.ts → index-BRgV_MPB.d.ts} +2 -2
- package/dist/node/{index-C7DvsmEg.d.ts.map → index-BRgV_MPB.d.ts.map} +1 -1
- package/dist/node/{index-D-aT_t_N.d.ts → index-BVNhOeeU.d.ts} +3 -2
- package/dist/node/{index-D-aT_t_N.d.ts.map → index-BVNhOeeU.d.ts.map} +1 -1
- package/dist/node/{index-yvGShbDx.d.ts → index-COWvtBa2.d.ts} +2 -2
- package/dist/node/{index-yvGShbDx.d.ts.map → index-COWvtBa2.d.ts.map} +1 -1
- package/dist/node/{index-ioN9mYAD.d.ts → index-TMAlNHuM.d.ts} +5 -4
- package/dist/node/{index-ioN9mYAD.d.ts.map → index-TMAlNHuM.d.ts.map} +1 -1
- package/dist/node/{index-DOA2KIYt.d.ts → index-nBlMTFkZ.d.ts} +2 -2
- package/dist/node/{index-DOA2KIYt.d.ts.map → index-nBlMTFkZ.d.ts.map} +1 -1
- package/dist/node/index.cjs +1 -1
- package/dist/node/index.d.ts +7 -7
- package/dist/node/index.js +1 -1
- package/dist/node/index.js.map +1 -1
- package/dist/node/mcp/index.d.ts +1 -1
- package/dist/node/tui/index.cjs +1 -1
- package/dist/node/tui/index.d.ts +2 -2
- package/dist/node/tui/index.js +1 -1
- package/dist/node/tui-Cf1-zocr.js +25 -0
- package/dist/node/tui-Cf1-zocr.js.map +1 -0
- package/dist/node/tui-re-S-CGS.cjs +24 -0
- package/dist/node/ws/index.d.ts +1 -1
- package/package.json +6 -6
- package/src/headless/HeadlessInteractionChannel.ts +84 -0
- package/src/headless/index.ts +2 -0
- package/src/tui/App.tsx +26 -56
- package/src/tui/InputArea.tsx +3 -59
- package/src/tui/StatusBar.tsx +1 -1
- package/src/tui/TuiInteractionChannel.ts +461 -0
- package/src/tui/__tests__/TuiInteractionChannel.display-contract.test.ts +239 -0
- package/src/tui/__tests__/TuiInteractionChannel.lifecycle.test.ts +294 -0
- package/src/tui/__tests__/TuiInteractionChannel.requestAction.test.ts +124 -0
- package/src/tui/__tests__/compact-event-bridge.test.ts +1 -1
- package/src/tui/__tests__/input-area-flow.test.ts +5 -12
- package/src/tui/flows/input-area-flow.ts +10 -15
- package/src/tui/hooks/use-interactive-session-init.ts +37 -2
- package/src/tui/hooks/useSlashRouting.ts +1 -1
- package/src/tui/hooks/useTuiChannel.ts +95 -0
- package/src/tui/index.ts +2 -1
- package/src/tui/interactions/__tests__/CommandConfirm.test.tsx +124 -0
- package/src/tui/interactions/__tests__/CommandPicker.test.tsx +138 -0
- package/src/tui/render.tsx +39 -1
- package/src/tui/tui-state-manager.ts +2 -1
- package/src/tui/tui-transport.ts +1 -1
- package/dist/node/headless-C-Ezlo9U.js +0 -15
- package/dist/node/headless-C-Ezlo9U.js.map +0 -1
- package/dist/node/headless-Cv-igy49.cjs +0 -14
- package/dist/node/index-CP7kaYMg.d.ts +0 -41
- package/dist/node/index-CP7kaYMg.d.ts.map +0 -1
- package/dist/node/index-Gby9H4q2.d.ts +0 -41
- package/dist/node/index-Gby9H4q2.d.ts.map +0 -1
- package/dist/node/tui-87G6pg3z.js +0 -25
- package/dist/node/tui-87G6pg3z.js.map +0 -1
- package/dist/node/tui-BAtwGilM.cjs +0 -24
- package/src/tui/command-interaction-registry.ts +0 -66
- package/src/tui/hooks/useInteractiveSession.ts +0 -299
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import{Box as e,Text as t,render as n,useApp as r,useInput as i,usePaste as a,useStdout as o,useWindowSize as s}from"ink";import c,{createContext as l,useCallback as u,useContext as d,useEffect as f,useMemo as p,useRef as m,useState as h}from"react";import{createSystemMessage as g,createUserMessage as _,findProviderDefinition as v,formatTokenCount as y,isAssistantMessage as b,isToolMessage as x,messageToHistoryEntry as S}from"@robota-sdk/agent-core";import{CommandRegistry as C,DEFAULT_STATUS_LINE_COMMAND_SETTINGS as w,InteractiveSession as T,applyActiveModelChange as E,applyStatusLineSettings as D,deleteSettings as O,getUserSettingsPath as k,isStatusLineCommandSettingsPatch as A,listResumableSessionSummaries as ee,readSettings as j,resolveGitBranch as M,writeSettings as N}from"@robota-sdk/agent-framework";import{Fragment as P,jsx as F,jsxs as I}from"react/jsx-runtime";import L from"chalk";import te from"string-width";import{isConfirmInteraction as ne,isPickerInteraction as re}from"@robota-sdk/agent-interface-tui";import{marked as R}from"marked";import ie from"marked-terminal";const z=[`active`,`queued`,`running`,`waiting_permission`,`sleeping`],B=/\s+/g;function V(e){return(e?.entries??[]).filter(e=>e.kind===`background_task`&&e.visibility===`default`)}function ae(e){return V(e).filter(e=>z.includes(e.status)).length}function H(e,t={}){let n=e.id===t.selectedEntryId,r={id:e.id,radio:n?`●`:`○`,title:W(e),subtitle:G(e),statusLabel:K(e.status),preview:oe(e.preview??e.currentAction),color:q(e),isSelected:n};return{...r,accessibleText:se(r)}}function U(e){let t=e.text.trim().replace(B,` `);return t?t.length>160?`${t.slice(0,160)}...`:t:e.kind}function W(e){return e.kind===`main_thread`?e.title:e.kind===`background_group`?`${e.title} group`:e.taskKind===`agent`?`${e.title} agent`:e.taskKind===`process`?e.title||`Process`:e.taskKind===`scheduled`?e.title||`Scheduled`:e.title}function G(e){return e.kind===`main_thread`?e.subtitle:[e.taskKind,e.subtitle,e.attention===`none`?void 0:e.attention].filter(e=>typeof e==`string`&&e.length>0).join(` · `)||void 0}function K(e){return e.replace(/_/g,` `)}function q(e){return e.attention===`failed`||e.status===`failed`?`red`:e.attention===`permission`||e.status===`waiting_permission`?`yellow`:e.status===`completed`?`green`:e.status===`cancelled`?`yellow`:z.includes(e.status)?`cyan`:`white`}function oe(e){return e?.trim().replace(B,` `)||void 0}function se(e){return[e.radio,e.title,e.statusLabel,e.subtitle,e.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}function ce(e,t={}){let n=H(e),r=le(e)?`□`:`■`,i=[n.statusLabel,n.subtitle].filter(e=>typeof e==`string`&&e.length>0);return{connector:t.isLast===!1?`├`:`└`,marker:r,color:n.color,label:n.title,segments:i,preview:n.preview,accessibleText:[`${t.isLast===!1?`├`:`└`} ${r} ${n.title}`,...i,n.preview].filter(e=>typeof e==`string`&&e.length>0).join(` · `)}}function le(e){return e.status===`active`||e.status===`queued`||e.status===`running`||e.status===`waiting_permission`||e.status===`sleeping`}function ue({entries:n}){return n.length===0?null:I(e,{flexDirection:`column`,marginBottom:1,children:[F(t,{color:`cyan`,bold:!0,children:`Background work`}),n.map((e,r)=>{let i=ce(e,{isLast:r===n.length-1});return I(t,{children:[`${i.connector} `,F(t,{color:i.color,children:i.marker}),` ${i.label}`,i.segments.map((e,n)=>F(t,{dimColor:!0,children:` · ${e}`},`${e}-${n}`)),i.preview?F(t,{dimColor:!0,children:` · ${i.preview}`}):null]},e.id)})]})}function de({percentage:n}){return n>=90?F(e,{borderStyle:`single`,borderColor:`red`,paddingX:1,children:I(t,{color:`red`,bold:!0,children:[`⚠ Context at `,Math.round(n),`% — window nearly full. Run /compact to summarize the conversation.`]})}):n>=70?F(e,{paddingX:1,children:I(t,{color:`yellow`,children:[`Context at `,Math.round(n),`% — consider running /compact to free up space.`]})}):null}function fe({entry:n,page:r,loading:i,error:a}){let o=H(n,{selectedEntryId:n.id}),s=r?.records.slice(-12)??[];return I(e,{flexDirection:`column`,marginBottom:1,children:[F(t,{color:`cyan`,bold:!0,children:`Viewing ${o.title}`}),I(t,{dimColor:!0,children:[o.statusLabel,o.subtitle?` · ${o.subtitle}`:``,o.preview?` · ${o.preview}`:``]}),i?F(t,{dimColor:!0,children:`Loading workspace detail...`}):null,a?F(t,{color:`red`,children:a}):null,!i&&!a&&s.length===0?F(t,{dimColor:!0,children:`No detail yet`}):null,!i&&!a&&s.map(e=>F(t,{color:pe(e.kind),children:U(e)},e.id)),r?.nextCursor?F(t,{dimColor:!0,children:`... more detail available`}):null]})}function pe(e){if(e===`error`)return`red`;if(e===`result`)return`green`;if(e===`process_output`)return`white`;if(e===`group_summary`)return`cyan`}function J(){return{selectedIndex:0,scrollOffset:0,resolved:!1}}function Y(e){if(e.escape===!0)return`cancel`;if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function me(e){if(e.escape===!0)return`cancel`;if(e.leftArrow===!0||e.upArrow===!0)return`previous`;if(e.rightArrow===!0||e.downArrow===!0)return`next`;if(e.return===!0)return`select`}function X(e,t,n){if(e.resolved)return{state:e,effect:{type:`none`}};if(t===`cancel`)return{state:{...e,resolved:!0},effect:{type:`cancel`}};if(n.enabled===!1||n.itemCount===0)return{state:e,effect:{type:`none`}};if(t===`select`){let t=he(e.selectedIndex,n.itemCount);return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`select`,index:t}}}let r=Q(e.selectedIndex,t,n),i=$(r,e.scrollOffset,n);return{state:{...e,selectedIndex:r,scrollOffset:i},effect:{type:`none`}}}function Z(e,t){if(t.itemCount===0)return{...e,selectedIndex:0,scrollOffset:0};let n=he(e.selectedIndex,t.itemCount),r=$(n,e.scrollOffset,t);return n===e.selectedIndex&&r===e.scrollOffset?e:{...e,selectedIndex:n,scrollOffset:r}}function Q(e,t,n){return t===`previous`?n.wrap===!0&&e===0?n.itemCount-1:Math.max(0,e-1):n.wrap===!0&&e===n.itemCount-1?0:Math.min(n.itemCount-1,e+1)}function $(e,t,n){let r=n.maxVisible??n.itemCount;return r<=0?0:e<t?e:e>=t+r?e-r+1:Math.max(0,t)}function he(e,t){return Math.min(Math.max(e,0),t-1)}function ge({snapshot:n,selectedEntryId:r,onSelect:a,onClose:o}){let{normalized:s,visibleEntries:c,applyAction:l}=_e({entries:[...n?.entries??[]],selectedEntryId:r,onSelect:a,onClose:o});return i((e,t)=>{let n=Y(t);n!==void 0&&l(n)}),I(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[F(t,{color:`cyan`,bold:!0,children:`Execution workspace`}),F(e,{flexDirection:`column`,marginTop:1,children:c.length===0?F(t,{dimColor:!0,children:`No workspace entries`}):c.map((e,t)=>F(be,{entry:e,isFocused:s.scrollOffset+t===s.selectedIndex,selectedEntryId:r},e.id))}),F(t,{dimColor:!0,children:`Ctrl+B Close ↑↓ Navigate Enter Switch Esc Close`})]})}function _e({entries:e,selectedEntryId:t,onSelect:n,onClose:r}){let[i,a]=h(()=>J()),o=m(i);f(()=>{let n=ye({selectedIndex:Math.max(0,e.findIndex(e=>e.id===t)),itemCount:e.length});o.current=n,a(n)},[e.length,t]);let s=ye({selectedIndex:i.selectedIndex,scrollOffset:i.scrollOffset,itemCount:e.length});return s!==i&&(o.current=s),{normalized:s,visibleEntries:e.slice(s.scrollOffset,s.scrollOffset+8),applyAction:ve({entries:e,stateRef:o,setState:a,onSelect:n,onClose:r})}}function ve({entries:e,stateRef:t,setState:n,onSelect:r,onClose:i}){return a=>{let o=X(t.current,a,{itemCount:e.length,maxVisible:8}),s=o.effect.type===`select`||o.effect.type===`cancel`?{...o.state,resolved:!1}:o.state;if(t.current=s,n(s),o.effect.type===`cancel`)i();else if(o.effect.type===`select`){let t=e[o.effect.index];t&&r(t.id)}}}function ye(e){return Z({selectedIndex:e.selectedIndex,scrollOffset:e.scrollOffset??0,resolved:!1},{itemCount:e.itemCount,maxVisible:8})}function be({entry:e,isFocused:n,selectedEntryId:r}){let i=H(e,{selectedEntryId:r});return I(t,{children:[F(t,{color:n?`cyan`:void 0,bold:n,children:n?`> `:` `}),F(t,{color:i.color,children:i.radio}),F(t,{color:n?`cyan`:void 0,bold:n,children:` ${i.title}`}),F(t,{dimColor:!0,children:` · ${i.statusLabel}`}),i.subtitle?F(t,{dimColor:!0,children:` · ${i.subtitle}`}):null,i.preview?F(t,{dimColor:!0,children:` · ${i.preview}`}):null]})}function xe(e,t){let n=null;return{schedule(){n||=setTimeout(()=>{n=null,e()},t)},flush(){n&&=(clearTimeout(n),null)}}}var Se=class{history=[];streamingText=``;activeTools=[];isThinking=!1;isAborting=!1;pendingPrompt=null;contextState={percentage:0,usedTokens:0,maxTokens:0};executionWorkspaceSnapshot=null;selectedExecutionEntryId;onChange=null;streamBuf=``;debouncedStreamNotify=xe(()=>this.notify(),300);notify(){this.onChange?.()}onTextDelta=e=>{this.streamBuf+=e,this.streamingText=this.streamBuf,this.debouncedStreamNotify.schedule()};onToolStart=e=>{this.activeTools=[...this.activeTools,e],this.notify()};onToolEnd=e=>{let t=this.activeTools.findLastIndex(t=>t.toolName===e.toolName&&t.isRunning);if(t!==-1){let n=[...this.activeTools];n[t]=e,this.activeTools=n}this.notify()};onThinking=e=>{this.isThinking=e,e?(this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[]):this.isAborting=!1,this.notify()};onComplete=e=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.contextState={percentage:e.contextState.usedPercentage,usedTokens:e.contextState.usedTokens,maxTokens:e.contextState.maxTokens},this.notify()};onInterrupted=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onError=()=>{this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()};onContextUpdate=e=>{this.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})};syncHistory(e){e.length!==0&&(this.history=e.length>100?e.slice(-100):[...e],this.notify())}addEntry(e){let t=[...this.history,e];this.history=t.length>100?t.slice(-100):t,this.notify()}clearHistory(){this.history=[],this.debouncedStreamNotify.flush(),this.streamBuf=``,this.streamingText=``,this.activeTools=[],this.notify()}setPendingPrompt(e){this.pendingPrompt=e,this.notify()}setAborting(e){this.isAborting=e,this.notify()}setContextState(e){this.contextState=e,this.notify()}syncExecutionWorkspaceSnapshot(e){let t=this.selectedExecutionEntryId,n=t!==void 0&&e.entries.some(e=>e.id===t)?t:e.selectedEntryId??e.entries[0]?.id;this.executionWorkspaceSnapshot={...e,...n?{selectedEntryId:n}:{}},this.selectedExecutionEntryId=n,this.notify()}selectExecutionWorkspaceEntry(e){this.executionWorkspaceSnapshot?.entries.some(t=>t.id===e)&&(this.selectedExecutionEntryId=e,this.executionWorkspaceSnapshot={...this.executionWorkspaceSnapshot,selectedEntryId:e},this.notify())}},Ce=class{queue=[];enqueueInteraction(e){this.queue.push({type:`interaction`,interaction:e})}enqueueEffects(e){e.length!==0&&this.queue.push({type:`effects`,effects:[...e]})}drain(){return this.queue.shift()}clear(){this.queue.length=0}};function we(e,t){let n=new T({cwd:e.cwd,provider:e.provider,permissionMode:e.permissionMode,maxTurns:e.maxTurns,permissionHandler:t,sessionStore:e.sessionStore,resumeSessionId:e.resumeSessionId,forkSession:e.forkSession,sessionName:e.sessionName,backgroundTaskRunners:e.backgroundTaskRunners,subagentRunnerFactory:e.subagentRunnerFactory,commandModules:e.commandModules,commandHostAdapters:e.commandHostAdapters,shellExec:e.shellExec,language:e.language,agentName:e.agentName,systemPrompt:e.systemPrompt,appendSystemPrompt:e.appendSystemPrompt,allowedTools:e.allowedTools,deniedTools:e.deniedTools}),r=new C;for(let t of e.commandModules??[])r.addModule(t);return e.reloadPluginCommandSource?.(r),{interactiveSession:n,registry:r,manager:new Se,commandEffectQueue:new Ce}}function Te(){let[e,t]=h(null),n=m([]),r=m(!1),i=u(()=>{if(r.current)return;let e=n.current[0];if(!e){t(null);return}r.current=!0,t({toolName:e.toolName,toolArgs:e.toolArgs,resolve:a=>{n.current.shift(),r.current=!1,t(null),e.resolve(a),setTimeout(()=>i(),0)}})},[]);return{permissionHandler:u((e,t)=>new Promise(r=>{n.current.push({toolName:e,toolArgs:t,resolve:r}),i()}),[i]),permissionRequest:e}}function Ee(e,t,n,r,i){return u(async a=>{if(!a.startsWith(`/`)){await e.submit(a),n.setPendingPrompt(e.getPendingPrompt());return}let o=a.slice(1).split(/\s+/),s=o[0]?.toLowerCase()??``,c=o.slice(1).join(` `),l=await e.executeCommand(s,c);if(l){if(l.effects?.some(e=>e.type===`session-execution-started`)){n.setPendingPrompt(e.getPendingPrompt());return}De(l,e,t,n,r,i);return}n.addEntry(S(g(`Unknown command "/${s}". Type /help for help.`)))},[e,t,n,r,i])}function De(e,t,n,r,i,a){let o=Oe(e.effects,n,r,a);if(r.addEntry(S(g(e.message))),e.interaction!==void 0&&i.enqueueInteraction(e.interaction),o.length>0&&i.enqueueEffects(o),t.isInitialized){let e=t.getContextState();r.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens})}}function Oe(e,t,n,r){if(e===void 0||e.length===0)return[];let i=[];for(let a of e){if(a.type===`conversation-history-cleared`){n.clearHistory();continue}if(a.type===`plugin-registry-reload-requested`){r?.(t);continue}i.push(a)}return i}function ke(e){return e.toLowerCase().replace(/[^a-z0-9\s-]/g,``).trim().replace(/\s+/g,`-`).replace(/-+/g,`-`).slice(0,60)}async function Ae(e,t){let n=t.slice(0,200),r=await e.chat([g(`You generate short session titles. Respond with ONLY a 3-5 word lowercase-hyphenated title (e.g. refactor-auth-middleware). No explanation, no punctuation, no quotes.`),_(n)],{maxTokens:20}),i=ke(typeof r.content==`string`?r.content:``);return!i||i.length<3?ke(t):i}function je(e,t){t.syncHistory(e.getFullHistory())}function Me(e,t){t.syncHistory(e.getFullHistory())}function Ne(e,t){try{t.syncExecutionWorkspaceSnapshot(e.getExecutionWorkspaceSnapshot({selectedEntryId:t.selectedExecutionEntryId}))}catch{}}function Pe(e){let[,t]=h(0),[n,r]=h(!1),{permissionHandler:i,permissionRequest:a}=Te(),o=m(!1),[s]=h(()=>we(e,i)),{interactiveSession:c,registry:l,manager:d,commandEffectQueue:p}=s;if(d.onChange=()=>t(e=>e+1),d.history.length===0){let e=c.getFullHistory();e.length>0&&d.syncHistory(e)}f(()=>{if(!e.transportRegistry)return;let t=e.transportRegistry;return t.startAll(c).catch(()=>void 0),()=>{t.stopAll().catch(()=>void 0)}},[c,e.transportRegistry]),f(()=>{let t=()=>je(c,d),n=()=>Me(c,d),r=t=>{o.current||e.sessionName||c.getName()||(o.current=!0,Ae(e.provider,t).then(t=>{c.setName(t),e.onAutoNamed?.(t)}).catch(()=>{o.current=!1}))},i=e=>d.syncExecutionWorkspaceSnapshot(e.snapshot);c.on(`user_message`,r),c.on(`text_delta`,d.onTextDelta),c.on(`tool_start`,d.onToolStart),c.on(`tool_end`,d.onToolEnd),c.on(`thinking`,d.onThinking),c.on(`complete`,d.onComplete),c.on(`interrupted`,d.onInterrupted),c.on(`error`,d.onError),c.on(`context_update`,d.onContextUpdate),c.on(`compact`,t),c.on(`skill_activation`,n),c.on(`execution_workspace_event`,i);let a=setInterval(()=>{try{let e=c.getContextState();d.setContextState({percentage:e.usedPercentage,usedTokens:e.usedTokens,maxTokens:e.maxTokens});let t=c.getFullHistory();t.length>0&&d.syncHistory(t),Ne(c,d),clearInterval(a)}catch{}},200);return()=>{clearInterval(a),c.off(`user_message`,r),c.off(`text_delta`,d.onTextDelta),c.off(`tool_start`,d.onToolStart),c.off(`tool_end`,d.onToolEnd),c.off(`thinking`,d.onThinking),c.off(`complete`,d.onComplete),c.off(`interrupted`,d.onInterrupted),c.off(`error`,d.onError),c.off(`context_update`,d.onContextUpdate),c.off(`compact`,t),c.off(`skill_activation`,n),c.off(`execution_workspace_event`,i)}},[c,d]),f(()=>{d.syncHistory(c.getFullHistory()),Ne(c,d),d.isThinking||d.setPendingPrompt(c.getPendingPrompt())},[d.isThinking,c,d]);let _=Ee(c,l,d,p,e.reloadPluginCommandSource),v=u(()=>{d.setAborting(!0),c.abort()},[c,d]),y=u(()=>{c.cancelQueue(),d.setPendingPrompt(null)},[c,d]),b=u(async(e=`prompt_input_exit`)=>{n||(r(!0),d.addEntry(S(g(`Shutting down...`))),await c.shutdown({reason:e,message:`CLI shutdown`}))},[c,d,n]),x=u(e=>d.selectExecutionWorkspaceEntry(e),[d]),C=u(e=>c.readExecutionWorkspaceDetail(e),[c]);return{interactiveSession:c,registry:l,commandEffectQueue:p,history:d.history,addEntry:e=>d.addEntry(e),streamingText:d.streamingText,activeTools:d.activeTools,isThinking:d.isThinking,isAborting:d.isAborting,isShuttingDown:n,pendingPrompt:d.pendingPrompt,executionWorkspaceSnapshot:d.executionWorkspaceSnapshot,selectedExecutionEntryId:d.selectedExecutionEntryId,permissionRequest:a,contextState:d.contextState,handleSubmit:_,handleAbort:v,handleCancelQueue:y,handleShutdown:b,selectExecutionWorkspaceEntry:x,readExecutionWorkspaceDetail:C}}function Fe(){return{listInstalled:async()=>[],listAvailablePlugins:async()=>[],install:async()=>void 0,uninstall:async()=>void 0,enable:async()=>void 0,disable:async()=>void 0,marketplaceAdd:async()=>``,marketplaceRemove:async()=>void 0,marketplaceUpdate:async()=>void 0,marketplaceList:async()=>[],reloadPlugins:async()=>({loadedPluginCount:0})}}function Ie(e){return p(()=>Fe(),[])}function Le(e,t){for(let n of e){if(n.type===`language-change-requested`)return Re(n.language,t),!0;if(n.type===`settings-reset-requested`)return ze(t),!0;if(n.type===`session-exit-requested`)return t.requestShutdown(n.reason??`prompt_input_exit`,n.message??`User requested exit`),!0;if(n.type===`session-restart-requested`)return t.requestShutdown(n.reason,n.message),!0;if(n.type===`plugin-tui-requested`)return t.openPluginTUI(),!0;if(n.type===`settings-tui-requested`)return t.openTransportTUI(),!0;if(n.type===`agent-switcher-requested`)return t.openAgentSwitcher(),!0;if(n.type===`session-picker-requested`)return t.openSessionPicker(),!0;if(n.type===`session-renamed`)return t.renameSession(n.name),!0;if(n.type===`statusline-settings-patch`&&A(n.patch))return t.applyStatusLinePatch(n.patch)}return!1}function Re(e,t){let n=t.cliAdapter.getUserSettingsPath(),r=t.cliAdapter.readSettings(n);r.language=e,t.cliAdapter.writeSettings(n,r),t.addEntry(S(g(`Language set to "${e}". Restarting...`))),t.requestShutdown(`other`,`Language change restart`)}function ze(e){let t=e.cliAdapter.getUserSettingsPath();e.cliAdapter.deleteSettings(t)?e.addEntry(S(g(`Deleted ${t}. Exiting...`))):e.addEntry(S(g(`No user settings found.`))),e.requestShutdown(`other`,`Reset settings restart`)}const Be=l(null),Ve=Be.Provider;function He(){let e=d(Be);if(!e)throw Error(`TuiCliAdapterContext not provided`);return e}function Ue({cwd:e,providerOverride:t,interactiveSession:n,commandEffectQueue:i,addEntry:a,baseHandleSubmit:o,setSessionName:s,setStatusLineSettings:c,showSessionPickerOnStart:l,openAgentSwitcher:d}){let{exit:f}=r(),p=He(),[_,v]=h(null),y=m(null),[b,x]=h(!1),[C,w]=h(l??!1),[T,E]=h(!1),D=u((e,t)=>{a(S(g(`Shutting down...`))),setTimeout(()=>{n.shutdown({reason:e,message:t}).finally(()=>f())},500)},[n,a,f]),O=u(e=>Le(e,{addEntry:a,requestShutdown:D,openPluginTUI:()=>x(!0),openSessionPicker:()=>w(!0),openTransportTUI:()=>E(!0),openAgentSwitcher:()=>d?.(),renameSession:e=>{n.setName(e),s(e)},applyStatusLinePatch:e=>(c(p.applyStatusLineSettings(p.getUserSettingsPath(),e)),!0),cliAdapter:p}),[a,p,n,D,s,c]),k=u(e=>{if(e.message.length>0&&a(S(g(e.message))),e.interaction!==void 0){y.current=e.interaction,v(e.interaction.prompt);return}y.current=null,v(null),e.effects!==void 0&&e.effects.length>0&&O(e.effects)},[a,O]),A=u(()=>{let e=i.drain();if(e===void 0)return!1;if(e.type===`interaction`){let{interaction:t}=e;return y.current=t,v(t.prompt),!0}return O(e.effects)},[O,i]);return{handleSubmit:u(async e=>{await o(e),A()},[o,A]),pendingInteractionPrompt:_,showPluginTUI:b,showSessionPicker:C,showTransportTUI:T,setShowPluginTUI:x,setShowSessionPicker:w,setShowTransportTUI:E,handleInteractionSubmit:u(async e=>{let t=y.current;if(t===null){v(null);return}try{k(await t.submit(e))}catch(e){y.current=null,v(null),a(S(g(`Failed: ${e instanceof Error?e.message:String(e)}`)))}},[a,k]),handleInteractionCancel:u(()=>{let e=y.current;if(y.current=null,v(null),e?.cancel===void 0){a(S(g(`Command interaction cancelled.`)));return}Promise.resolve(e.cancel()).then(e=>k(e)).catch(e=>{a(S(g(`Failed: ${e instanceof Error?e.message:String(e)}`)))})},[a,k])}}function We(e){let t={...w},n=e.statusline;return Ge(n)?{enabled:typeof n.enabled==`boolean`?n.enabled:t.enabled,gitBranch:typeof n.gitBranch==`boolean`?n.gitBranch:t.gitBranch}:t}function Ge(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function Ke(){let e=He();return h(()=>We(e.readSettings(e.getUserSettingsPath())))}const qe=`[200~`,Je=`[201~`;function Ye(e){return{value:e,cursor:e.length,isPasting:!1,pasteBuffer:``}}function Xe(e,t,n){return t===e.value?e:{...e,value:t,cursor:n==null?t.length:Math.min(n,t.length)}}function Ze(e,t,n,r){let i=$e(e,t,r);if(i!==void 0)return i;let a=et(e,t,n,r);if(a!==void 0)return a;let o=tt(e,n,r);return o===void 0?dt(e,t):o}function Qe(e,t,n){let r=t.replace(/\r\n?/g,`
|
|
2
|
-
`);return r.length===0?{state:e,effect:{type:`none`}}:r.includes(`
|
|
3
|
-
`)&&n.canPaste?{state:e,effect:{type:`paste`,text:r,cursor:e.cursor}}:dt(e,r)}function $e(e,t,n){if(t===qe||t.startsWith(qe))return ot(e,t);if(e.isPasting)return st(e,t,n)}function et(e,t,n,r){if(n.ctrl===!0&&t===`c`||n.tab===!0)return{state:e,effect:{type:`none`}};if(n.return===!0)return{state:e,effect:{type:`submit`,value:e.value}};if(t.length>1&&(t.includes(`
|
|
4
|
-
`)||t.includes(`\r`))&&r.canPaste)return{state:e,effect:{type:`paste`,text:t.replace(/\r\n?/g,`
|
|
5
|
-
`),cursor:e.cursor}}}function tt(e,t,n){if(t.upArrow===!0||t.downArrow===!0)return n.enableVerticalNavigation===!1?{state:e,effect:{type:`none`}}:ct(e,t.upArrow===!0?`up`:`down`,n.availableWidth);if(t.leftArrow===!0)return lt(e,`left`);if(t.rightArrow===!0)return lt(e,`right`);if(t.backspace===!0||t.delete===!0)return ut(e)}function nt(e){if(!e||e.length===0)return``;let t=``;for(let n of e){let e=n.charCodeAt(0);e>31&&e!==127&&(t+=n)}return t}function rt(e,t,n){return{value:e.slice(0,t)+n+e.slice(t),cursor:t+n.length}}function it(e,t,n){let r=0;for(let i=0;i<t&&i<e.length;i++){let t=te(e[i]),a=r%n;a+t>n&&(r+=n-a),r+=t}return r}function at(e,t,n){let r=0;for(let i=0;i<e.length;i++){if(r>=t)return i;let a=te(e[i]),o=r%n;o+a>n&&(r+=n-o),r+=a}return e.length}function ot(e,t){return{state:{...e,isPasting:!0,pasteBuffer:t.slice(5)},effect:{type:`none`}}}function st(e,t,n){if(t!==Je&&!t.includes(Je))return{state:{...e,pasteBuffer:e.pasteBuffer+t},effect:{type:`none`}};let r=t.split(Je)[0]??``;return Qe({...e,isPasting:!1,pasteBuffer:``},e.pasteBuffer+r,n)}function ct(e,t,n){if(!n||n<=0)return{state:e,effect:{type:`none`}};let r=[...e.value],i=it(r,e.cursor,n),a=t===`up`?i-n:i+n;if(a<0)return{state:e,effect:{type:`none`}};let o=at(r,a,n);return o===e.cursor?{state:e,effect:{type:`none`}}:{state:{...e,cursor:o},effect:{type:`render`}}}function lt(e,t){return t===`left`&&e.cursor>0?{state:{...e,cursor:e.cursor-1},effect:{type:`render`}}:t===`right`&&e.cursor<e.value.length?{state:{...e,cursor:e.cursor+1},effect:{type:`render`}}:{state:e,effect:{type:`none`}}}function ut(e){if(e.cursor===0)return{state:e,effect:{type:`none`}};let t=e.value.slice(0,e.cursor-1)+e.value.slice(e.cursor);return{state:{...e,value:t,cursor:e.cursor-1},effect:{type:`change`,value:t}}}function dt(e,t){let n=nt(t);if(n.length===0)return{state:e,effect:{type:`none`}};let r=rt(e.value,e.cursor,n);return{state:{...e,value:r.value,cursor:r.cursor},effect:{type:`change`,value:r.value}}}function ft({value:e,onChange:n,onSubmit:r,onPaste:i,placeholder:a=``,focus:o=!0,showCursor:s=!0,availableWidth:c,cursorHint:l=null,enableVerticalNavigation:u=!0}){let d=m(Ye(e)),[,f]=h(0);return d.current=Xe(d.current,e,l),pt({stateRef:d,onChange:n,onSubmit:r,onPaste:i,availableWidth:c,focus:o,enableVerticalNavigation:u,forceRender:f}),F(t,{children:_t(d.current.value,d.current.cursor,a,s&&o)})}function pt(e){a(t=>{ht(e,()=>Qe(e.stateRef.current,t,mt(e)))},{isActive:e.focus}),i((t,n)=>{ht(e,()=>Ze(e.stateRef.current,t,n,mt(e)))},{isActive:e.focus})}function mt(e){return{availableWidth:e.availableWidth,canPaste:e.onPaste!==void 0,enableVerticalNavigation:e.enableVerticalNavigation}}function ht(e,t){try{let n=t();e.stateRef.current=n.state,gt(n.effect,e.onChange,e.onSubmit,e.onPaste,e.forceRender)}catch{}}function gt(e,t,n,r,i){e.type===`change`?t(e.value):e.type===`submit`?n?.(e.value):e.type===`paste`?r?.(e.text,e.cursor):e.type===`render`&&i(e=>e+1)}function _t(e,t,n,r){if(!r)return e.length>0?e:n?L.gray(n):``;if(e.length===0)return n.length>0?L.inverse(n[0])+L.gray(n.slice(1)):L.inverse(` `);let i=[...e],a=``;for(let e=0;e<i.length;e++){let n=i[e]??``;a+=e===t?L.inverse(n):n}return t>=i.length&&(a+=L.inverse(` `)),a}function vt(){return[{label:`plan`,value:`plan`,description:`Plan only, no execution`},{label:`default`,value:`default`,description:`Ask before risky actions`},{label:`acceptEdits`,value:`acceptEdits`,description:`Auto-approve file edits`},{label:`bypassPermissions`,value:`bypassPermissions`,description:`Skip all permission checks`}]}function yt(){return[{label:`ko Korean`,value:`ko`,description:`한국어`},{label:`en English`,value:`en`,description:`English`},{label:`ja Japanese`,value:`ja`,description:`日本語`},{label:`zh Chinese`,value:`zh`,description:`中文`}]}function bt(){return[{label:`current`,value:`current`,description:`Show current provider`},{label:`list`,value:`list`,description:`List available providers`},{label:`use`,value:`use`,description:`Switch to a provider`},{label:`add`,value:`add`,description:`Add a new provider`},{label:`test`,value:`test`,description:`Test provider connection`}]}const xt={agent:void 0,background:void 0,clear:{onMissingArgs:`confirm`,message:`Clear conversation history?`},compact:void 0,context:void 0,cost:void 0,exit:{onMissingArgs:`confirm`,message:`Exit the session?`},help:void 0,language:{onMissingArgs:`picker`,getItems:yt},memory:void 0,mode:{onMissingArgs:`picker`,getItems:vt},model:void 0,permissions:void 0,plugin:void 0,provider:{onMissingArgs:`picker`,getItems:bt},rename:void 0,reset:void 0,resume:void 0,rewind:void 0,settings:void 0,skills:void 0,statusline:void 0,"user-local":void 0,"validate-session":void 0};function St(e){return xt[e]}function Ct(e){if(!e.startsWith(`/`))return{isSlash:!1,parentCommand:``,filter:``};let t=e.slice(1),n=t.indexOf(` `);return n===-1?{isSlash:!0,parentCommand:``,filter:t}:{isSlash:!0,parentCommand:t.slice(0,n),filter:t.slice(n+1)}}function wt(e,t){let[n,r]=h(0),[i,a]=h(!1),o=c.useRef(e);o.current!==e&&(o.current=e,i&&a(!1));let s=Ct(e),l=s.isSlash&&s.parentCommand.length>0,u=p(()=>{if(!t||!s.isSlash||i)return[];if(l){let e=t.getSubcommands(s.parentCommand);if(e.length===0)return[];if(!s.filter)return e;let n=s.filter.toLowerCase();return e.filter(e=>e.name.toLowerCase().startsWith(n))}return t.getCommands(s.filter)},[t,s.isSlash,s.parentCommand,s.filter,i,l]),d=s.isSlash&&u.length>0&&!i;return n>=u.length&&u.length>0&&r(u.length-1),{showPopup:d,filteredCommands:u,selectedIndex:n,setSelectedIndex:r,isSubcommandMode:l,setShowPopup:e=>{a(typeof e==`function`?t=>!e(!t):!e)}}}function Tt(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`;if(e.escape===!0)return`close`;if(e.tab===!0)return`complete`}function Et(e){if(e.backspace===!0||e.delete===!0)return`cancelQueue`}function Dt(e){if(e.upArrow===!0)return`previous`;if(e.downArrow===!0)return`next`}function Ot(){return{selectedIndex:null,draft:``}}function kt(e,t,n,r){if(t.length===0)return{value:e,cursorHint:e.length,state:n};if(r===`previous`){let r=n.selectedIndex===null?t.length-1:Math.max(0,n.selectedIndex-1),i=t[r]??e;return{value:i,cursorHint:i.length,state:{selectedIndex:r,draft:n.selectedIndex===null?e:n.draft}}}if(n.selectedIndex===null)return{value:e,cursorHint:e.length,state:n};if(n.selectedIndex<t.length-1){let r=n.selectedIndex+1,i=t[r]??e;return{value:i,cursorHint:i.length,state:{...n,selectedIndex:r}}}return{value:n.draft,cursorHint:n.draft.length,state:Ot()}}function At(e,t){let n=t.trim();return n.length===0||e[e.length-1]===n?[...e]:[...e,n]}function jt(e){let t=[];for(let n of e){if(n.category!==`chat`||n.type!==`user`)continue;let e=n.data;typeof e?.content==`string`&&(t=At(t,e.content))}return t}function Mt(e,t,n){return t===0?0:n===`previous`?e>0?e-1:t-1:e<t-1?e+1:0}function Nt(e,t){let n=Ct(e);return n.parentCommand?{type:`insert`,value:`/${n.parentCommand} ${t.name} `}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`insert`,value:`/${t.name} `}}function Pt(e,t,n){let r=Ct(e);return r.parentCommand?{type:`submit`,value:`/${r.parentCommand} ${t.name}`}:n?.onMissingArgs?{type:`open-interaction`,commandName:t.name}:t.subcommands&&t.subcommands.length>0?{type:`insert`,value:`/${t.name} `,selectedIndex:0}:{type:`submit`,value:`/${t.name}`}}function Ft(e,t,n,r){let i=r.split(`
|
|
6
|
-
`).length,a=`[Pasted text #${n} +${i} lines]`;return{value:e.slice(0,t)+a+e.slice(t),cursorHint:t+a.length,label:a,lineCount:i}}function It(e){return e.trim().length>0}function Lt({commandName:n,interaction:r,onConfirm:a,onCancel:o}){return i((e,t)=>{t.return||e===`y`||e===`Y`?a():(t.escape||e===`n`||e===`N`)&&o()}),I(e,{paddingX:1,children:[I(t,{bold:!0,color:`yellow`,children:[`/`,n,`:`,` `]}),I(t,{children:[r.message,` `]}),F(t,{dimColor:!0,children:`[y/n]`})]})}function Rt(){let{stdout:e}=o();return Math.max(40,(e.columns??80)-4)}function zt({commandName:n,interaction:r,onSelect:a,onCancel:o}){let s=r.getItems(),[c,l]=h(0),u=Rt();i((e,t)=>{if(t.upArrow)l(e=>e>0?e-1:s.length-1);else if(t.downArrow)l(e=>e<s.length-1?e+1:0);else if(t.return){let e=s[c];e&&a(e)}else (t.escape||e===`q`)&&o()});let d=s.length<=8||c<8?0:Math.min(c-8+1,s.length-8),f=s.slice(d,d+8);return I(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`cyan`,paddingX:1,children:[I(t,{bold:!0,color:`cyan`,children:[`/`,n]}),f.map((n,r)=>{let i=d+r===c;return F(e,{width:u,children:I(t,{color:i?`cyan`:void 0,dimColor:!i,wrap:`truncate-end`,children:[i?`▸ `:` `,n.label,n.description==null?``:` ${n.description}`]})},n.value)}),F(t,{dimColor:!0,children:`↑↓ navigate · Enter select · Esc cancel`})]})}function Bt(){let{stdout:e}=o(),t=()=>Math.max(40,(e.columns??80)-4),[n,r]=h(t);return f(()=>{let n=()=>r(t());return e.on(`resize`,n),()=>{e.off(`resize`,n)}},[e]),n}function Vt(e,t){return e.length>t?`${e.slice(0,t-1)}…`:e.padEnd(t)}function Ht(n){let{cmd:r,isSelected:i,showSlash:a,rowWidth:o,nameColWidth:s}=n,c=i?`▸ `:` `,l=i?`cyan`:void 0,u=!i,d=Vt(r.name,s);return F(e,{width:o,children:F(t,{color:l,dimColor:u,wrap:`truncate-end`,children:a?`${c}/${d} ${r.description??``}`:`${c}${d} ${r.description??``}`})})}function Ut({commands:t,selectedIndex:n,visible:r,isSubcommandMode:i}){let a=Bt();if(!r||t.length===0)return null;let o=Wt(n,t.length),s=t.slice(o,o+8),c=Math.min(20,Math.max(...s.map(e=>e.name.length)));return F(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`gray`,paddingX:1,children:s.map((e,t)=>F(Ht,{cmd:e,isSelected:o+t===n,showSlash:!i,rowWidth:a,nameColWidth:c},e.name))})}function Wt(e,t){if(t<=8||e<8)return 0;let n=t-8;return Math.min(e-8+1,n)}const Gt=/\[Pasted text #(\d+)(?: \+\d+ lines)?\]/g;function Kt(e,t){return e.replace(Gt,(e,n)=>t.get(Number(n))??``)}const qt=[`#666666`,`#888888`,`#aaaaaa`,`#888888`];function Jt({text:e}){let[n,r]=h(0);return f(()=>{let e=setInterval(()=>{r(e=>e+1)},400);return()=>clearInterval(e)},[]),F(t,{children:[...e].map((e,r)=>F(t,{color:qt[(n+Math.floor(r/4))%qt.length],children:e},r))})}function Yt({onSubmit:n,onCancelQueue:r,isDisabled:a,isAborting:o,pendingPrompt:c,registry:l,sessionName:d,history:f}){let[g,_]=h(``),[v,y]=h(null),[b,x]=h(null),[S,C]=h(Ot),[w,T]=h([]),E=p(()=>jt(f??[]),[f]),D=p(()=>w.reduce((e,t)=>At(e,t),E),[E,w]),O=m(new Map),{columns:k}=s(),A=k>0?k:80,ee=Math.max(1,A-5),j=m(0),{showPopup:M,filteredCommands:N,selectedIndex:P,setSelectedIndex:L,isSubcommandMode:te,setShowPopup:R}=wt(g,l),ie=u((e,t)=>{j.current+=1;let n=j.current;O.current.set(n,e),_(r=>{let i=Ft(r,t,n,e);return y(i.cursorHint),i.value})},[]),z=u(()=>{C(Ot())},[]),B=u(e=>{T(t=>At(t,e))},[]),V=u(e=>{B(e),z(),n(e)},[n,B,z]),ae=u(e=>{let t=Nt(g,e);t.type===`insert`&&(_(t.value),t.selectedIndex!==void 0&&L(t.selectedIndex))},[g,L]),H=u(e=>{let t=St(e.name),n=Pt(g,e,t);if(n.type===`insert`){_(n.value),n.selectedIndex!==void 0&&L(n.selectedIndex);return}if(n.type===`open-interaction`&&t?.onMissingArgs){R(!1),x({commandName:n.commandName,interaction:t});return}n.type===`submit`&&(_(``),V(n.value))},[g,V,L,R]),U=u(e=>{if(!It(e))return;if(M&&N[P]){H(N[P]);return}let t=Kt(e.trim(),O.current);_(``),O.current.clear(),j.current=0,V(t)},[M,N,P,H,V]);i((e,t)=>{if(!M)return;let n=Tt(t);if(n===`previous`||n===`next`)L(e=>Mt(e,N.length,n));else if(n===`close`)R(!1);else if(n===`complete`){let e=N[P];e&&ae(e)}},{isActive:M&&!a}),i((e,t)=>{let n=Dt(t);if(!n)return;let r=kt(g,D,S,n);_(r.value),y(r.cursorHint),C(r.state)},{isActive:!M&&!a&&!c}),i((e,t)=>{Et(t)===`cancelQueue`&&c&&r?.()},{isActive:!!c});let W=o?`yellow`:c?`cyan`:a?`gray`:`green`,G=Math.max(1,A-2),K=(()=>{if(d){let e=` "${d}" `,t=Math.max(0,G-e.length-2);return{left:`┌`+`─`.repeat(t),label:e,right:`─`.repeat(2)+`┐`}}return{left:`┌`+`─`.repeat(G),label:``,right:`┐`}})(),q=u(e=>{b&&(x(null),V(`/${b.commandName} ${e.value}`))},[b,V]),oe=u(()=>{b&&(x(null),V(`/${b.commandName}`))},[b,V]),se=u(()=>{x(null)},[]);return I(e,{flexDirection:`column`,children:[b&&re(b.interaction)&&F(zt,{commandName:b.commandName,interaction:b.interaction,onSelect:q,onCancel:se}),b&&ne(b.interaction)&&F(Lt,{commandName:b.commandName,interaction:b.interaction,onConfirm:oe,onCancel:se}),!b&&M&&F(Ut,{commands:N,selectedIndex:P,visible:M,isSubcommandMode:te}),I(t,{color:W,children:[K.left,K.label?F(t,{backgroundColor:W,color:`black`,bold:!0,children:K.label}):null,K.right]}),F(e,{borderStyle:`single`,borderTop:!1,borderColor:W,paddingLeft:1,children:o?F(t,{color:`yellow`,children:` Interrupting...`}):c?I(t,{color:`cyan`,children:[` `,`Queued:`,` `,c.length>50?c.slice(0,47)+`...`:c,` `,F(t,{dimColor:!0,children:`(Backspace to cancel)`})]}):a?F(Jt,{text:` Waiting for response... (ESC to interrupt)`}):I(e,{children:[F(t,{color:`green`,bold:!0,children:`> `}),F(ft,{value:g,onChange:e=>{_(e),z(),y(null)},onSubmit:U,onPaste:ie,placeholder:`Type a message or /help`,availableWidth:ee,cursorHint:v,enableVerticalNavigation:!1})]})})]})}function Xt({items:n,renderItem:r,onSelect:a,onCancel:o,maxVisible:s=3}){let[c,l]=h(()=>J()),d=m(c),f=u(e=>{let t=X(d.current,e,{itemCount:n.length,maxVisible:s});if(d.current=t.state,l(t.state),t.effect.type===`cancel`)o();else if(t.effect.type===`select`){let e=n[t.effect.index];e!==void 0&&a(e)}},[n,s,o,a]);if(i((e,t)=>{let n=Y(t);n!==void 0&&f(n)}),n.length===0)return F(e,{});let p=Z(c,{itemCount:n.length,maxVisible:s});p!==c&&(d.current=p);let{selectedIndex:g,scrollOffset:_}=p,v=n.slice(_,_+s),y=_+s<n.length;return I(e,{flexDirection:`column`,children:[_>0&&I(t,{dimColor:!0,children:[` ↑ `,_,` more above`]}),v.map((t,n)=>F(e,{marginBottom:1,children:r(t,_+n===g)},_+n)),y&&I(t,{dimColor:!0,children:[` ↓ `,n.length-_-s,` more below`]})]})}function Zt(){return{value:``,resolved:!1}}function Qt(e,t){if(t.escape===!0)return{type:`cancel`};if(t.return===!0)return{type:`submit`};if(t.backspace===!0||t.delete===!0)return{type:`delete`};if(e&&t.ctrl!==!0&&t.meta!==!0)return{type:`insert`,value:e}}function $t(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:t.type===`cancel`?{state:{...e,resolved:!0},effect:{type:`cancel`}}:t.type===`delete`?{state:{...e,value:e.value.slice(0,-1),error:void 0},effect:{type:`none`}}:t.type===`insert`?{state:{...e,value:e.value+t.value,error:void 0},effect:{type:`none`}}:en(e,n)}function en(e,t){let n=e.value.trim();if(!n&&!t.allowEmpty){let r=t.validate?.(n);return{state:r?{...e,error:r}:e,effect:{type:`none`}}}let r=t.validate?.(n);return r===void 0?{state:{...e,resolved:!0},effect:{type:`submit`,value:n}}:{state:{...e,error:r},effect:{type:`none`}}}function tn({title:n,description:r,placeholder:a,onSubmit:o,onCancel:s,validate:c,allowEmpty:l=!1,masked:d=!1}){let[f,p]=h(()=>Zt()),g=m(f),_=u(e=>{let t=$t(g.current,e,{allowEmpty:l,validate:c});g.current=t.state,p(t.state),t.effect.type===`cancel`?s():t.effect.type===`submit`&&o(t.effect.value)},[l,c,s,o]);return i((e,t)=>{let n=Qt(e,t);n!==void 0&&_(n)}),I(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[F(t,{color:`yellow`,bold:!0,children:n}),F(nn,{description:r}),I(e,{marginTop:1,children:[F(t,{color:`cyan`,children:`> `}),f.value?F(t,{children:d?`*`.repeat(f.value.length):f.value}):a?F(t,{dimColor:!0,children:a}):null,F(t,{color:`cyan`,children:`█`})]}),f.error&&F(t,{color:`red`,children:f.error}),F(t,{dimColor:!0,children:` Enter Submit Esc Cancel`})]})}function nn({description:e}){return e===void 0||e.length===0?null:F(t,{dimColor:!0,children:e})}function rn({prompt:n,onSubmit:r,onCancel:i}){return n.kind===`text`?F(tn,{title:n.title,description:n.description,placeholder:n.placeholder,allowEmpty:n.allowEmpty,masked:n.masked,validate:n.validate,onSubmit:r,onCancel:i},`text:${n.title}`):I(e,{flexDirection:`column`,children:[F(t,{bold:!0,children:n.title}),n.description!==void 0&&n.description.length>0&&F(t,{dimColor:!0,children:n.description}),F(Xt,{items:[...n.options],maxVisible:n.maxVisible,renderItem:(e,n)=>I(t,{color:n?`cyan`:void 0,children:[n?`> `:` `,e.label]}),onSelect:e=>r(e.value),onCancel:i})]})}const an=new Set([`Bash`,`BackgroundProcess`]);function on(e){if(!an.has(e.toolName)||!e.toolResultData)return;let t=sn(e.toolResultData),n=hn(t,`exitCode`),r=gn(t,`success`),i=dn(un(cn(e.toolResultData,t))),a=i.slice(0,4),o=Math.max(0,i.length-a.length),s=e.result===`error`||r===!1||n!==void 0&&n!==0;return{status:s?`error`:`success`,statusLabel:ln(s,n),previewLines:a,omittedLineCount:o,transcriptHint:o>0?`... +${o} lines (full output in session transcript)`:void 0}}function sn(e){try{return JSON.parse(e)}catch{return e}}function cn(e,t){if(!pn(t))return e;let n=mn(t,`output`);if(n!==void 0)return n;let r=mn(t,`stdout`),i=mn(t,`stderr`),a=mn(t,`error`),o=[];return r&&o.push(r),i&&o.push(fn(i,`[stderr] `)),!r&&!i&&a&&o.push(a),o.join(`
|
|
7
|
-
`)}function ln(e,t){return t!==void 0&&t!==0?`exit ${t}`:e?`error`:`ok`}function un(e){return e?e.replace(/\r\n/g,`
|
|
8
|
-
`).split(`
|
|
9
|
-
`):[]}function dn(e){let t=e.length;for(;t>0&&e[t-1].trim().length===0;)--t;return e.slice(0,t)}function fn(e,t){return un(e).map(e=>`${t}${e}`).join(`
|
|
10
|
-
`)}function pn(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&!(e instanceof Date)}function mn(e,t){if(!pn(e))return;let n=e[t];return typeof n==`string`?n:void 0}function hn(e,t){if(!pn(e))return;let n=e[t];return typeof n==`number`&&Number.isFinite(n)?n:void 0}function gn(e,t){if(!pn(e))return;let n=e[t];return typeof n==`boolean`?n:void 0}const _n=`\x1B[0m`,vn=` `,yn=ie;function bn(e){return e===void 0?process.env.NO_COLOR||process.env.FORCE_COLOR===`0`?!1:process.env.FORCE_COLOR?!0:!!process.stdout.isTTY:e}function xn(e){return e?.trim().toLowerCase()===`diff`}function Sn(e,t,n){let r=`${vn}${e}`.padEnd(t);return n?e.startsWith(`+`)?`[48;5;22m[38;5;120m${r}${_n}`:e.startsWith(`-`)?`[48;5;52m[38;5;210m${r}${_n}`:r.trimEnd():r.trimEnd()}function Cn(e,t,n){if(e.startsWith(`+`)||e.startsWith(`-`))return Sn(e,n,t);let r=`${vn}${e}`;return t?e.startsWith(`@@`)?`[36m${r}${_n}`:e.startsWith(`diff `)||e.startsWith(`index `)?`[2m${r}${_n}`:r:r}function wn(e,t){let n=e.reduce((e,t)=>Math.max(e,4+t.length),0);return t===void 0?n:Math.max(n,t)}function Tn(e,t,n){let r=e.split(`
|
|
11
|
-
`),i=wn(r,n);return`${r.map(e=>Cn(e,t,i)).join(`
|
|
12
|
-
`)}\n\n`}function En(e,t){let n=new yn(void 0,{ignoreIllegals:!0}),r=n.code.bind(n);return n.code=(n,i,a)=>xn(i)?Tn(n,e,t):r(n,i,a),n}function Dn(e,t={}){let n=R.parse(e,{renderer:En(bn(t.color),t.codeBlockWidth)});return typeof n==`string`?n.trimEnd():e}function On({tool:n}){let r=on(n);if(!r||r.statusLabel===`ok`&&r.previewLines.length===0&&!r.transcriptHint)return null;let i=r.status===`error`?`red`:`white`;return I(e,{flexDirection:`column`,marginLeft:4,children:[r.statusLabel!==`ok`&&F(t,{color:i,dimColor:!0,children:r.statusLabel}),r.previewLines.map((e,n)=>F(t,{color:i,dimColor:!0,children:e},`${e}-${n}`)),r.transcriptHint&&F(t,{dimColor:!0,children:r.transcriptHint})]})}function kn(e){let t=e.lines.length>12?jn(e.lines):e.lines,n=Math.max(...t.map(e=>e.lineNumber),0).toString().length,r=t.map(e=>An(e,n)),i=e.lines.length>12;return{file:e.file,markdown:["```diff",...r,"```"].join(`
|
|
13
|
-
`),truncated:i,remainingLineCount:i?e.lines.length-t.length:0}}function An(e,t){if(e.type===`hunk`)return e.text;let n=e.lineNumber.toString().padStart(t,` `);return e.type===`remove`?`- ${n} | ${e.text}`:e.type===`add`?`+ ${n} | ${e.text}`:` ${n} | ${e.text}`}function jn(e){let t=Mn(e),n=[];for(let e of t){if(n.length===0&&e.length>10)return e.slice(0,10);if(n.length+e.length>10)break;n.push(...e)}return n.length>0?n:e.slice(0,10)}function Mn(e){let t=[],n=[];for(let r of e){if(r.type===`hunk`&&n.length>0){t.push(n),n=[r];continue}n.push(r)}return n.length>0&&t.push(n),t}function Nn({file:n,lines:r}){let i=kn({file:n,lines:r});return I(e,{flexDirection:`column`,marginLeft:4,children:[i.file&&I(t,{color:`white`,dimColor:!0,children:[`│ `,i.file]}),F(t,{children:Dn(i.markdown)}),i.truncated&&I(t,{color:`white`,dimColor:!0,children:[`│ ... and `,i.remainingLineCount,` more lines`]})]})}function Pn({entry:n}){let r=n.data;if(!r)return F(P,{});let i=r.promptTokens===void 0?`?`:Fn(r.promptTokens),a=r.completionTokens===void 0?`?`:Fn(r.completionTokens),o=Fn(r.totalTokens),s=`${Math.round(r.contextUsedPercentage)}% (${y(r.contextUsedTokens)}/${y(r.contextMaxTokens)})`,c=r.costStatus===`unknown`?`cost unknown`:`cost ${r.costStatus}`;return F(e,{flexDirection:`column`,marginBottom:1,children:I(e,{children:[I(t,{color:`white`,bold:!0,children:[`Usage:`,` `]}),I(t,{dimColor:!0,children:[r.kind,` `,o,` tokens (in `,i,` / out `,a,`) · Context `,s,` ·`,` `,c]})]})})}function Fn(e){return e<1e3?e.toLocaleString():y(e)}function In(e){return on(e)?.status===`error`?`✗`:e.isRunning?`⟳`:e.result===`error`?`✗`:e.result===`denied`?`⊘`:`✓`}function Ln(e){return on(e)?.status===`error`||e.result===`error`?`red`:e.isRunning||e.result===`denied`?`yellow`:`green`}function Rn(e){return`${In(e)} ${e.toolName}${e.firstArg?`(${e.firstArg})`:``}`}function zn({role:e}){switch(e){case`user`:return I(t,{color:`green`,bold:!0,children:[`You:`,` `]});case`assistant`:return I(t,{color:`cyan`,bold:!0,children:[`Robota:`,` `]});case`system`:return I(t,{color:`yellow`,bold:!0,children:[`System:`,` `]});case`tool`:return I(t,{color:`white`,bold:!0,children:[`Tool:`,` `]})}}function Bn({message:n}){if(!x(n))return F(P,{});let r=n.name,i=n.content,a=null;try{let e=JSON.parse(i);Array.isArray(e)&&e.length>0&&typeof e[0].line==`string`&&(a=e)}catch{}if(a)return I(e,{flexDirection:`column`,marginBottom:1,children:[I(e,{children:[I(t,{color:`white`,bold:!0,children:[`Tool:`,` `]}),r&&I(t,{color:`white`,dimColor:!0,children:[`[`,r,`]`]})]}),F(t,{children:` `}),a.map((n,r)=>I(e,{flexDirection:`column`,children:[I(t,{color:`green`,children:[` `,`✓`,` `,n.line]}),n.diffLines&&n.diffLines.length>0&&F(Nn,{file:n.diffFile,lines:n.diffLines})]},r))]});let o=i.split(`
|
|
14
|
-
`).filter(e=>e.trim());return I(e,{flexDirection:`column`,marginBottom:1,children:[I(e,{children:[I(t,{color:`white`,bold:!0,children:[`Tool:`,` `]}),r&&I(t,{color:`white`,dimColor:!0,children:[`[`,r,`]`]})]}),F(t,{children:` `}),o.map((e,n)=>I(t,{color:`green`,children:[` `,`✓`,` `,e]},n))]})}const Vn=c.memo(function({message:n}){if(x(n))return F(Bn,{message:n});let r=n.content??``,i=n.state===`interrupted`;return I(e,{flexDirection:`column`,marginBottom:1,children:[F(e,{children:F(zn,{role:n.role})}),F(t,{children:` `}),F(e,{marginLeft:2,children:F(t,{wrap:`wrap`,children:b(n)?Dn(r+(i?`
|
|
15
|
-
|
|
16
|
-
_(interrupted)_`:``)):r})})]})});function Hn({entry:n}){let r=n.data,i=r?.tools,a=r?.summary?.split(`
|
|
17
|
-
`)??[];return i&&i.length>0?I(e,{flexDirection:`column`,marginBottom:1,children:[F(e,{children:I(t,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),F(t,{children:` `}),i.map((n,r)=>I(e,{flexDirection:`column`,children:[I(t,{color:Ln(n),children:[` `,Rn(n)]}),F(On,{tool:n}),n.diffLines&&n.diffLines.length>0&&F(Nn,{file:n.diffFile,lines:n.diffLines})]},r))]}):I(e,{flexDirection:`column`,marginBottom:1,children:[F(e,{children:I(t,{color:`white`,bold:!0,children:[`Tool:`,` `]})}),F(t,{children:` `}),a.map((e,n)=>I(t,{color:`green`,children:[` `,e]},n))]})}function Un({entry:n}){let r=n.data,i=typeof r?.message==`string`?r.message:typeof r?.content==`string`?r.content:n.type;return I(e,{flexDirection:`column`,marginBottom:1,children:[F(e,{children:I(t,{color:`yellow`,bold:!0,children:[`System:`,` `]})}),F(t,{children:` `}),F(e,{marginLeft:2,children:F(t,{wrap:`wrap`,children:i})})]})}function Wn({entry:e}){if(e.category===`chat`){let t=e.data;return F(Vn,{message:t})}return e.type===`tool-summary`?F(Hn,{entry:e}):e.type===`usage-summary`?F(Pn,{entry:e}):e.type===`tool-start`||e.type===`tool-end`?F(P,{}):F(Un,{entry:e})}function Gn({history:t}){return F(e,{flexDirection:`column`,children:t.map(e=>F(Wn,{entry:e},e.id))})}const Kn=[`Allow [y]`,`Allow always (this session) [s]`,`Allow always (this project) [p]`,`Deny [n]`];function qn(e,t){let n=me({...t,escape:!1});if(n!==void 0)return n;if(e===`y`||e===`1`)return{type:`shortcut`,index:0};if(e===`s`||e===`a`||e===`2`)return{type:`shortcut`,index:1};if(e===`p`||e===`3`)return{type:`shortcut`,index:2};if(e===`n`||e===`d`||e===`4`)return{type:`shortcut`,index:3}}function Jn(e,t){if(e.resolved)return{state:e,effect:{type:`none`}};if(typeof t!=`string`)return Xn(e,t.index);let n=X(e,t,{itemCount:Kn.length});return n.effect.type===`select`?{state:n.state,effect:{type:`resolve`,decision:Yn(n.effect.index)}}:{state:n.state,effect:{type:`none`}}}function Yn(e){return e===0?!0:e===1?`allow-session`:e===2?`allow-project`:!1}function Xn(e,t){return{state:{...e,selectedIndex:t,resolved:!0},effect:{type:`resolve`,decision:Yn(t)}}}function Zn(e){let t=Object.entries(e);return t.length===0?`(no arguments)`:t.map(([e,t])=>`${e}: ${typeof t==`string`?t:JSON.stringify(t)}`).join(`, `)}function Qn({request:n}){let[r,a]=c.useState(()=>J()),o=c.useRef(r),s=c.useRef(n);if(s.current!==n){s.current=n;let e=J();o.current=e,a(e)}let l=c.useCallback(e=>{let t=Jn(o.current,e);o.current=t.state,a(t.state),t.effect.type===`resolve`&&n.resolve(t.effect.decision)},[n]);return i((e,t)=>{let n=qn(e,t);n!==void 0&&l(n)}),I(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[F(t,{color:`yellow`,bold:!0,children:`[Permission Required]`}),I(t,{children:[`Tool:`,` `,F(t,{color:`cyan`,bold:!0,children:n.toolName})]}),I(t,{dimColor:!0,children:[` `,Zn(n.toolArgs)]}),F(e,{marginTop:1,children:Kn.map((n,i)=>F(e,{marginRight:2,children:I(t,{color:i===r.selectedIndex?`cyan`:void 0,bold:i===r.selectedIndex,children:[i===r.selectedIndex?`> `:` `,n]})},n))}),F(t,{dimColor:!0,children:` left/right to select, Enter to confirm`})]})}function $n(e,t,n){let r=me({...t,escape:!1});if(r!==void 0)return r;if(n===2&&e===`y`)return{type:`shortcut`,index:0};if(n===2&&e===`n`)return{type:`shortcut`,index:1}}function er(e,t,n){return e.resolved?{state:e,effect:{type:`none`}}:typeof t==`string`?X(e,t,{itemCount:n}):{state:{...e,selectedIndex:t.index,resolved:!0},effect:{type:`select`,index:t.index}}}function tr({message:n,options:r=[`Yes`,`No`],onSelect:a}){let[o,s]=h(()=>J()),c=m(o),l=u(e=>{let t=er(c.current,e,r.length);c.current=t.state,s(t.state),t.effect.type===`select`&&a(t.effect.index)},[a,r.length]);return i((e,t)=>{let n=$n(e,t,r.length);n!==void 0&&l(n)}),I(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[F(t,{color:`yellow`,children:n}),F(e,{marginTop:1,children:r.map((n,r)=>F(e,{marginRight:2,children:I(t,{color:r===o.selectedIndex?`cyan`:void 0,bold:r===o.selectedIndex,children:[r===o.selectedIndex?`> `:` `,n]})},n))}),F(t,{dimColor:!0,children:` arrow keys to select, Enter to confirm`})]})}function nr(e,t,n,r,i){let[a,o]=h([]),[s,c]=h(!1),[l,u]=h();return f(()=>{if(o([]),u(void 0),e===`marketplace-list`)c(!0),n.marketplaceList().then(e=>{let t=[{label:`Add Marketplace`,value:`__add__`}],n=e.map(e=>({label:e.name,value:e.name,hint:e.type}));o([...t,...n]),c(!1)}).catch(e=>{u(e instanceof Error?e.message:String(e)),c(!1)});else if(e===`marketplace-browse`){let e=t??``;c(!0),n.listAvailablePlugins(e).then(e=>{o(e.map(e=>({label:e.name,value:e.name,hint:e.installed?`installed`:e.description}))),c(!1)}).catch(e=>{u(e instanceof Error?e.message:String(e)),c(!1)})}else e===`installed-list`&&(c(!0),n.listInstalled().then(e=>{o(e.map(e=>({label:e.name,value:e.name,hint:e.description}))),c(!1)}).catch(e=>{u(e instanceof Error?e.message:String(e)),c(!1)}))},[i,e,t,n,r]),{items:a,loading:s,error:l}}function rr({title:n,items:r,onSelect:a,onBack:o,loading:s,error:c}){let[l,d]=h(()=>J()),f=m(l),p=!s&&!c,g=u(e=>{let t=X(f.current,e,{itemCount:r.length,enabled:p});if(f.current=t.state,d(t.state),t.effect.type===`cancel`)o();else if(t.effect.type===`select`){let e=r[t.effect.index];e!==void 0&&a(e.value)}},[p,r,o,a]);i((e,t)=>{let n=Y(t);n!==void 0&&g(n)});let _=Z(l,{itemCount:r.length});_!==l&&(f.current=_);let v=_.selectedIndex;return I(e,{flexDirection:`column`,borderStyle:`round`,borderColor:`yellow`,paddingX:1,children:[F(t,{color:`yellow`,bold:!0,children:n}),s&&F(e,{marginTop:1,children:F(t,{dimColor:!0,children:`Loading...`})}),c&&I(e,{marginTop:1,flexDirection:`column`,children:[F(t,{color:`red`,children:c}),F(t,{dimColor:!0,children:`Press Esc to go back`})]}),!s&&!c&&F(e,{flexDirection:`column`,marginTop:1,children:r.map((n,r)=>I(e,{children:[I(t,{color:r===v?`cyan`:void 0,bold:r===v,children:[r===v?`> `:` `,n.label]}),n.hint&&I(t,{dimColor:!0,children:[` `,n.hint]})]},n.value))}),F(t,{dimColor:!0,children:s||c?``:` ↑↓ Navigate Enter Select Esc Back`})]})}function ir(e,t){e===`marketplace`?t.push({screen:`marketplace-list`}):e===`installed`&&t.push({screen:`installed-list`})}function ar(e,t){e===`__add__`?t.push({screen:`marketplace-add`}):t.push({screen:`marketplace-action`,context:{marketplace:e}})}function or(e,t,n,r){e===`browse`?r.push({screen:`marketplace-browse`,context:{marketplace:t}}):e===`update`?n.marketplaceUpdate(t).then(()=>{r.notify(`Updated marketplace "${t}".`),r.pop()}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)}):e===`remove`&&r.setConfirm({message:`Remove marketplace "${t}" and all its plugins?`,onConfirm:()=>{r.setConfirm(void 0),n.marketplaceRemove(t).then(()=>{r.notify(`Removed marketplace "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function sr(e,t,n,r){let i=`${e}@${t}`;n.find(t=>t.value===e)?.hint===`installed`?r.push({screen:`installed-action`,context:{pluginId:i}}):r.push({screen:`marketplace-install-scope`,context:{marketplace:t,pluginId:i}})}function cr(e,t,n,r){let i=e;n.install(t,i).then(()=>{r.notify(`Installed plugin "${t}" (${i} scope).`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})}function lr(e,t,n){n.setConfirm({message:`Uninstall plugin "${e}"?`,onConfirm:()=>{n.setConfirm(void 0),t.uninstall(e).then(()=>{n.notify(`Uninstalled plugin "${e}".`),n.refresh()}).catch(e=>{n.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>n.setConfirm(void 0)})}function ur(e,t,n,r){e===`uninstall`&&r.setConfirm({message:`Uninstall plugin "${t}"?`,onConfirm:()=>{r.setConfirm(void 0),n.uninstall(t).then(()=>{r.notify(`Uninstalled plugin "${t}".`),r.popN(2)}).catch(e=>{r.notify(`Error: ${e instanceof Error?e.message:String(e)}`)})},onCancel:()=>r.setConfirm(void 0)})}function dr({callbacks:e,onClose:t,addMessage:n}){let[r,i]=h([{screen:`main`}]),[a,o]=h(),[s,c]=h(0),l=r[r.length-1]??{screen:`main`},d=u(e=>{i(t=>[...t,e])},[]),f=u(()=>{i(e=>e.length<=1?(t(),e):e.slice(0,-1))},[t]),p=u(e=>{i(n=>{let r=n.slice(0,Math.max(1,n.length-e));return r.length===0?(t(),n):r})},[t]),m=u(e=>{n?.({role:`system`,content:e})},[n]),g=u(()=>{c(e=>e+1)},[]),_=u(e=>o(e),[o]),v={push:u(e=>d({screen:e.screen,context:e.context}),[d]),pop:f,popN:p,notify:m,setConfirm:_,refresh:g},{items:y,loading:b,error:x}=nr(l.screen,l.context?.marketplace,e,s,r.length),S=u(t=>{let n=l.screen,r=l.context;n===`main`?ir(t,v):n===`marketplace-list`?ar(t,v):n===`marketplace-action`?or(t,r?.marketplace??``,e,v):n===`marketplace-browse`?sr(t,r?.marketplace??``,y,v):n===`marketplace-install-scope`?cr(t,r?.pluginId??``,e,v):n===`installed-list`?lr(t,e,v):n===`installed-action`&&ur(t,r?.pluginId??``,e,v)},[l,y,e,d,f,p,m,o,g]),C=u(t=>{l.screen===`marketplace-add`&&e.marketplaceAdd(t).then(e=>{m(`Added marketplace "${e}" from ${t}.`),f()}).catch(e=>{m(`Error: ${e instanceof Error?e.message:String(e)}`),f()})},[l.screen,e,m,f]);if(a)return F(tr,{message:a.message,onSelect:e=>{e===0?a.onConfirm():a.onCancel()}});let w=l.screen;return w===`marketplace-add`?F(tn,{title:`Add Marketplace Source`,placeholder:`owner/repo or git URL`,onSubmit:C,onCancel:f,validate:e=>e.includes(`/`)?void 0:`Must be owner/repo or a git URL`}):w===`marketplace-action`?F(rr,{title:`Marketplace: ${l.context?.marketplace??``}`,items:[{label:`Browse plugins`,value:`browse`},{label:`Update`,value:`update`},{label:`Remove`,value:`remove`}],onSelect:S,onBack:f},r.length):w===`marketplace-install-scope`?F(rr,{title:`Install scope for "${l.context?.pluginId??``}"`,items:[{label:`User scope`,value:`user`},{label:`Project scope`,value:`project`}],onSelect:S,onBack:f},r.length):w===`installed-action`?F(rr,{title:`Plugin: ${l.context?.pluginId??``}`,items:[{label:`Uninstall`,value:`uninstall`}],onSelect:S,onBack:f},r.length):F(rr,{title:{main:`Plugin Management`,"marketplace-list":`Marketplace`,"marketplace-browse":`Browse: ${l.context?.marketplace??``}`,"installed-list":`Installed Plugins`}[w]??`Plugin Management`,items:{main:[{label:`Marketplace`,value:`marketplace`},{label:`Installed Plugins`,value:`installed`}]}[w]??y,onSelect:S,onBack:f,loading:b,error:x},`${w}-${r.length}-${s}`)}function fr({sessions:n,onSelect:r,onCancel:i}){return I(e,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[F(t,{bold:!0,color:`cyan`,children:`Select a session to resume (ESC to cancel):`}),F(Xt,{items:[...n],renderItem:(e,n)=>{let r=e.preview?e.preview.slice(0,60)+(e.preview.length>60?`...`:``):``;return I(t,{children:[n?`> `:` `,F(t,{bold:!0,children:e.name??e.id.slice(0,8)}),` `,F(t,{dimColor:!0,children:new Date(e.updatedAt).toLocaleString(void 0,{month:`short`,day:`numeric`,hour:`2-digit`,minute:`2-digit`})}),` `,I(t,{dimColor:!0,children:[`msgs: `,e.messageCount]}),r?I(P,{children:[`
|
|
18
|
-
`,F(t,{color:`gray`,children:r})]}):null]})},onSelect:e=>r(e.id),onCancel:i})]})}function pr(e){let t=mr(e),n=e.hasPendingPrompt&&t.kind!==`queued`?[`queued`]:[],r=[t.label,...n].join(` · `);return{...t,segments:n,text:r}}function mr(e){return e.activeToolCount>0?{kind:`tools`,label:`Tools x${e.activeToolCount}`,color:`cyan`}:e.isThinking?{kind:`thinking`,label:`Thinking`,color:`yellow`}:e.activeBackgroundTaskCount>0?{kind:`background`,label:`Background x${e.activeBackgroundTaskCount}`,color:`cyan`}:e.hasPendingPrompt?{kind:`queued`,label:`Queued`,color:`yellow`}:{kind:`idle`,label:`Idle`,color:`gray`}}function hr(e){return e>=90?`red`:e>=70?`yellow`:`green`}function gr({isThinking:e,activeToolCount:n,activeBackgroundTaskCount:r,hasPendingPrompt:i}){let a=pr({isThinking:e,activeToolCount:n,activeBackgroundTaskCount:r,hasPendingPrompt:i});return F(t,{color:a.color,bold:a.kind!==`idle`,children:a.text})}function _r({percentage:e,usedTokens:n,maxTokens:r}){return I(t,{color:hr(e),children:[`Context: `,Math.round(e),`% (`,y(n),`/`,y(r),`)`]})}function vr({permissionMode:e}){return I(P,{children:[F(t,{color:`cyan`,bold:!0,children:`Mode:`}),` `,F(t,{children:e})]})}function yr(e){return e!==`default`}function br({modelName:e,providerDisplayName:n}){return n===void 0?F(t,{dimColor:!0,children:e}):I(t,{dimColor:!0,children:[n,` `,e]})}function xr(e){let n=e.showGitBranch&&e.gitBranch!==void 0&&e.gitBranch.length>0,r=yr(e.permissionMode);return I(t,{children:[F(gr,{isThinking:e.isThinking,activeToolCount:e.activeToolCount,activeBackgroundTaskCount:e.activeBackgroundTaskCount,hasPendingPrompt:e.hasPendingPrompt}),r&&I(P,{children:[` | `,F(vr,{permissionMode:e.permissionMode})]}),e.sessionName&&I(P,{children:[` | `,F(t,{color:`magenta`,children:e.sessionName})]}),n&&I(P,{children:[` | `,I(t,{dimColor:!0,children:[`git: `,e.gitBranch]})]}),` | `,F(br,{modelName:e.modelName,providerDisplayName:e.providerDisplayName}),` | `,F(_r,{percentage:e.contextPercentage,usedTokens:e.contextUsedTokens,maxTokens:e.contextMaxTokens})]})}function Sr({permissionMode:n,modelName:r,providerDisplayName:i,sessionId:a,isThinking:o,activeToolCount:s=0,activeBackgroundTaskCount:c=0,hasPendingPrompt:l=!1,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h=!0,activeAgentLabel:g}){return I(e,{borderStyle:`single`,borderColor:`gray`,paddingLeft:1,paddingRight:1,justifyContent:`space-between`,children:[F(xr,{permissionMode:n,modelName:r,providerDisplayName:i,isThinking:o,activeToolCount:s,activeBackgroundTaskCount:c,hasPendingPrompt:l,contextPercentage:u,contextUsedTokens:d,contextMaxTokens:f,sessionName:p,gitBranch:m,showGitBranch:h}),g!==void 0&&I(t,{color:`yellow`,bold:!0,children:[`[`,g,`]`]})]})}function Cr({cwd:e,permissionMode:t,modelId:n,providerType:r,sessionId:i,isThinking:a,activeToolCount:o,activeBackgroundTaskCount:s,hasPendingPrompt:c,contextState:l,sessionName:u,settings:d,activeAgentLabel:f,gitRefreshToken:m}){let h=He(),g=p(()=>h.getGitBranch(e),[h,e,m]),_=p(()=>r===void 0?void 0:h.getProviderDisplayName(r),[h,r]);return d.enabled?F(Sr,{permissionMode:t,modelName:n??``,providerDisplayName:_,sessionId:i,isThinking:a,activeToolCount:o,activeBackgroundTaskCount:s,hasPendingPrompt:c,contextPercentage:l.percentage,contextUsedTokens:l.usedTokens,contextMaxTokens:l.maxTokens,sessionName:u,gitBranch:g,showGitBranch:d.gitBranch,activeAgentLabel:f}):null}function wr(e){return e.isRunning?{color:`yellow`,icon:`⟳`,strikethrough:!1}:e.result===`error`?{color:`red`,icon:`✗`,strikethrough:!0}:e.result===`denied`?{color:`yellowBright`,icon:`⊘`,strikethrough:!0}:{color:`green`,icon:`✓`,strikethrough:!1}}function Tr(n){return n?F(e,{marginBottom:1,children:F(t,{color:`yellow`,children:`Thinking...`})}):F(P,{})}function Er(n){return I(e,{flexDirection:`column`,marginBottom:1,children:[F(t,{color:`white`,bold:!0,children:`Tools:`}),F(t,{children:` `}),n.map((n,r)=>{let{color:i,icon:a,strikethrough:o}=wr(n);return I(e,{flexDirection:`column`,children:[I(t,{color:i,strikethrough:o,children:[` `,a,` `,n.toolName,`(`,n.firstArg,`)`]}),n.diffLines&&n.diffLines.length>0&&F(Nn,{file:n.diffFile,lines:n.diffLines})]},`${n.toolName}-${r}`)})]})}function Dr({text:n,activeTools:r,isThinking:i=!1}){let a=r.length>0,o=n.length>0;return!a&&!o?Tr(i):I(e,{flexDirection:`column`,children:[a&&Er(r),o&&I(e,{flexDirection:`column`,marginBottom:1,children:[F(t,{color:`cyan`,bold:!0,children:`Robota:`}),F(t,{children:` `}),F(e,{marginLeft:2,children:F(t,{wrap:`wrap`,children:Dn(n)})})]})]})}function Or({entry:n,selected:r}){let i=n.config.enabled,a=i?`●`:`○`,o=i?`[enabled] `:`[disabled]`,s=n.config.options?.port,c=typeof s==`number`?`port: ${s}`:``;return F(e,{children:F(t,{color:r?`cyan`:void 0,bold:r,children:`${a} ${n.transport.name.padEnd(18)} ${o} ${c}`})})}function kr(e,t,n,r,a,o,s,c){i(u((i,l)=>{if(!n){if(l.upArrow){a(e=>Math.max(0,e-1));return}if(l.downArrow){a(t=>Math.min(e.length-1,t+1));return}if(l.escape||l.return){s();return}if(i===` `){let n=e[t];if(!n)return;o(!0),r.setEnabled(n.transport.name,!n.config.enabled).then(()=>{c(),o(!1)}).catch(()=>o(!1))}}},[n,e,t,r,s,c,a,o]))}function Ar({registry:n,onClose:r}){let[i,a]=h(()=>n.getAll()),[o,s]=h(0),[c,l]=h(!1);return kr(i,o,c,n,s,l,r,u(()=>{a(n.getAll())},[n])),I(e,{flexDirection:`column`,paddingX:2,paddingY:1,children:[F(t,{bold:!0,children:`Settings › Transports`}),F(e,{marginTop:1,flexDirection:`column`,children:i.map((e,t)=>F(Or,{entry:e,selected:t===o},e.transport.name))}),F(e,{marginTop:1,children:F(t,{dimColor:!0,children:`↑↓ select space toggle enter/esc close`})}),c&&F(e,{marginTop:1,children:F(t,{color:`yellow`,children:`Saving…`})})]})}function jr({message:n}){return F(e,{paddingX:1,marginBottom:1,children:F(t,{color:`yellow`,children:n})})}function Mr(e){let[t,n]=h(e.resumeSessionId),[r,i]=h(e.showSessionPickerOnStart??!1);return F(Ve,{value:e.cliAdapter,children:F(Nr,{...e,showSessionPickerOnStart:r,resumeSessionId:t,onSessionSwitch:e=>{i(!1),n(e)}},t??`__new__`)})}function Nr(n){let a=n.cwd,[o,s]=h(n.sessionName),{interactiveSession:c,registry:l,commandEffectQueue:d,history:_,addEntry:v,streamingText:y,activeTools:b,isThinking:x,isAborting:C,isShuttingDown:w,pendingPrompt:T,executionWorkspaceSnapshot:E,selectedExecutionEntryId:D,selectExecutionWorkspaceEntry:O,readExecutionWorkspaceDetail:k,permissionRequest:A,contextState:j,handleSubmit:M,handleAbort:N,handleCancelQueue:P,handleShutdown:L}=Pe({cwd:a,provider:n.provider,permissionMode:n.permissionMode,maxTurns:n.maxTurns,sessionStore:n.sessionStore,resumeSessionId:n.resumeSessionId,forkSession:n.forkSession,sessionName:n.sessionName,onAutoNamed:s,backgroundTaskRunners:n.backgroundTaskRunners,subagentRunnerFactory:n.subagentRunnerFactory,commandModules:n.commandModules,commandHostAdapters:n.commandHostAdapters,shellExec:n.shellExec,transportRegistry:n.transportRegistry,language:n.language,reloadPluginCommandSource:n.reloadPluginCommandSource,agentName:n.agentName,systemPrompt:n.systemPrompt,appendSystemPrompt:n.appendSystemPrompt,allowedTools:n.allowedTools,deniedTools:n.deniedTools}),te=Ie(a),ne=n.commandHostAdapters?.plugin??te,{exit:re}=r(),[R,ie]=h(),[z,B]=h(!1),[H,U]=h(null),[W,G]=h(),[K,q]=h(!1),[oe,se]=Ke(),[ce,le]=h(0),pe=p(()=>V(E),[E]),J=ae(E),Y=p(()=>E?.entries.find(e=>e.id===D),[E,D]),{handleSubmit:me,pendingInteractionPrompt:X,showPluginTUI:Z,showSessionPicker:Q,showTransportTUI:$,setShowPluginTUI:he,setShowSessionPicker:_e,setShowTransportTUI:ve,handleInteractionSubmit:ye,handleInteractionCancel:be}=Ue({cwd:a,providerOverride:n.providerOverride,interactiveSession:c,commandEffectQueue:d,addEntry:v,baseHandleSubmit:M,setSessionName:s,setStatusLineSettings:se,showSessionPickerOnStart:n.showSessionPickerOnStart,openAgentSwitcher:()=>B(!0)}),xe=!Y||Y.kind===`main_thread`||Y.controls.includes(`send`),Se=Y&&Y.kind!==`main_thread`?Y.title:void 0,Ce=p(()=>E?.entries.find(e=>e.kind===`main_thread`)?.id,[E]),we=u(async e=>{Y&&Y.kind!==`main_thread`&&Y.controls.includes(`send`)?await c.sendAgentJob(Y.sourceId,e):await me(e)},[Y,me,c]),Te=u(async e=>{le(e=>e+1),await we(e)},[we]),Ee=m(!1);f(()=>{Ee.current&&!x&&le(e=>e+1),Ee.current=x},[x]),f(()=>{let e=c?.getName?.();e&&!o&&s(e)},[c,o]),f(()=>{let e=!0;return n.startupUpdateNotice?.then(t=>{e&&t!==void 0&&ie(t)}).catch(()=>{}),()=>{e=!1}},[n.startupUpdateNotice]),f(()=>{let e=o?`Robota — ${o}`:`Robota`;process.stdout.write(`\x1b]0;${e}\x07`)},[o]),i((e,t)=>{!t.escape||!x||A||Z||$||Q||z||N()}),i((e,t)=>{!t.ctrl||e!==`b`||A||Z||Q||w||B(e=>!e)}),i((e,t)=>{!t.escape||x||A||Z||$||Q||z||Y&&Y.kind!==`main_thread`&&Ce!==void 0&&O(Ce)}),i((e,t)=>{!t.ctrl||e!==`c`||w||L(`prompt_input_exit`).finally(()=>re())}),f(()=>{let e=()=>{w||L(`other`).finally(()=>re())};return process.once(`SIGINT`,e),process.once(`SIGTERM`,e),()=>{process.off(`SIGINT`,e),process.off(`SIGTERM`,e)}},[L,re,w]),f(()=>{if(!Y||Y.kind===`main_thread`){U(null),G(void 0),q(!1);return}let e=!0;return q(!0),G(void 0),k(Y.id).then(t=>{e&&(U(t),q(!1))}).catch(t=>{e&&(G(t.message),q(!1))}),()=>{e=!1}},[E,k,Y]);let De=n.permissionMode??`default`,Oe=``;try{let e=c.getSession();De=e.getPermissionMode(),Oe=e.getSessionId()}catch{}return I(e,{flexDirection:`column`,children:[I(e,{flexDirection:`column`,paddingX:1,marginBottom:1,children:[F(t,{color:`cyan`,bold:!0,children:`
|
|
19
|
-
____ ___ ____ ___ _____ _
|
|
20
|
-
| _ \\ / _ \\| __ ) / _ \\_ _|/ \\
|
|
21
|
-
| |_) | | | | _ \\| | | || | / _ \\
|
|
22
|
-
| _ <| |_| | |_) | |_| || |/ ___ \\
|
|
23
|
-
|_| \\_\\\\___/|____/ \\___/ |_/_/ \\_\\
|
|
24
|
-
`}),I(t,{dimColor:!0,children:[` v`,n.version??`0.0.0`]})]}),R&&F(jr,{message:R}),I(e,{flexDirection:`column`,paddingX:1,flexGrow:1,children:[Y&&Y.kind!==`main_thread`?F(fe,{entry:Y,page:H,loading:K,error:W}):F(Gn,{history:_}),w&&F(e,{marginBottom:1,children:F(t,{color:`yellow`,children:`Shutting down...`})}),(x||b.length>0)&&F(e,{flexDirection:`column`,marginBottom:1,children:F(Dr,{text:y,activeTools:b,isThinking:x})}),F(ue,{entries:pe})]}),z&&F(ge,{snapshot:E,selectedEntryId:D,onSelect:O,onClose:()=>B(!1)}),A&&F(Qn,{request:A}),X&&F(rn,{prompt:X,onSubmit:ye,onCancel:be}),Z&&F(dr,{callbacks:ne,onClose:()=>he(!1),addMessage:e=>v(S(g(e.content)))}),$&&n.transportRegistry&&F(Ar,{registry:n.transportRegistry,onClose:()=>ve(!1)}),Q&&F(fr,{sessions:ee(n.sessionStore,n.cwd),onSelect:e=>{_e(!1),n.onSessionSwitch(e)},onCancel:()=>{_e(!1),v(S(g(`Session resume cancelled.`)))}}),F(de,{percentage:j.percentage}),F(Cr,{cwd:a,permissionMode:De,modelId:n.modelId,providerType:n.providerType,sessionId:Oe,isThinking:x,activeToolCount:b.length,activeBackgroundTaskCount:J,hasPendingPrompt:T!==null,contextState:j,sessionName:o,settings:oe,activeAgentLabel:Se,gitRefreshToken:ce}),F(Yt,{onSubmit:Te,onCancelQueue:P,isDisabled:!!A||Z||$||Q||z||w||X!==null||x&&!!T||!xe,isAborting:C,pendingPrompt:T,registry:l,sessionName:o,history:_}),F(e,{position:`absolute`,children:F(t,{children:` `})})]})}async function Pr(e){process.on(`unhandledRejection`,e=>{process.stderr.write(`\n[UNHANDLED REJECTION] ${e}\n`),e instanceof Error&&process.stderr.write(`${e.stack}\n`)}),await n(F(Mr,{...e}),{exitOnCtrlC:!1}).waitUntilExit()}var Fr=class{name=`tui`;defaultEnabled=!0;optionsSchema={};options;constructor(e){this.options=e}attach(e){}async start(){await Pr(this.options)}async stop(){}validateOptions(e){return!0}};function Ir({providerDefinitions:e,reloadPluginCommandSource:t}){return{getUserSettingsPath:()=>k(),readSettings:e=>j(e),writeSettings:(e,t)=>N(e,t),deleteSettings:e=>O(e),applyStatusLineSettings:(e,t)=>D(e,t),reloadPluginCommandSource:e=>{t(e)},applyActiveModelChange:(e,t,n)=>(E(e,t,n),{applied:!0}),getGitBranch:e=>M(e),getProviderDisplayName:t=>v(e,t)?.displayName??t}}export{Fr as n,Ir as t};
|
|
25
|
-
//# sourceMappingURL=tui-87G6pg3z.js.map
|