wepscli 0.1.0 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/README.md +9 -8
  2. package/dist/WEPSCLI-shell/agent-runtime-events.js +194 -0
  3. package/dist/WEPSCLI-shell/agent-runtime-events.js.map +1 -0
  4. package/dist/WEPSCLI-shell/agent-runtime-helpers.js +117 -0
  5. package/dist/WEPSCLI-shell/agent-runtime-helpers.js.map +1 -0
  6. package/dist/WEPSCLI-shell/agent-runtime-types.js +1 -0
  7. package/dist/WEPSCLI-shell/agent-runtime-types.js.map +1 -0
  8. package/dist/WEPSCLI-shell/agent-runtime.js +42 -294
  9. package/dist/WEPSCLI-shell/agent-runtime.js.map +1 -1
  10. package/dist/WEPSCLI-shell/approval-overlay.js.map +1 -1
  11. package/dist/WEPSCLI-shell/chat-components.js +13 -6
  12. package/dist/WEPSCLI-shell/chat-components.js.map +1 -1
  13. package/dist/WEPSCLI-shell/file-change-preview.js.map +1 -1
  14. package/dist/WEPSCLI-shell/runtime-recovery.js.map +1 -1
  15. package/dist/WEPSCLI-shell/session-consistency.js +9 -0
  16. package/dist/WEPSCLI-shell/session-consistency.js.map +1 -0
  17. package/dist/WEPSCLI-shell/shell-app.js +169 -259
  18. package/dist/WEPSCLI-shell/shell-app.js.map +1 -1
  19. package/dist/WEPSCLI-shell/shell-keyboard.js +135 -0
  20. package/dist/WEPSCLI-shell/shell-keyboard.js.map +1 -0
  21. package/dist/WEPSCLI-shell/shell-modes.js.map +1 -1
  22. package/dist/WEPSCLI-shell/shell-prompt-controller.js +93 -0
  23. package/dist/WEPSCLI-shell/shell-prompt-controller.js.map +1 -0
  24. package/dist/WEPSCLI-shell/shell-status.js +16 -0
  25. package/dist/WEPSCLI-shell/shell-status.js.map +1 -0
  26. package/dist/WEPSCLI-shell/skill-commands.js +7 -0
  27. package/dist/WEPSCLI-shell/skill-commands.js.map +1 -0
  28. package/dist/WEPSCLI-shell/slash-commands.js +68 -7
  29. package/dist/WEPSCLI-shell/slash-commands.js.map +1 -1
  30. package/dist/WEPSCLI-shell/tool-approval.js.map +1 -1
  31. package/dist/WEPSCLI-shell/tool-diff.js.map +1 -1
  32. package/dist/WEPSCLI-shell/tool-file-changes.js.map +1 -1
  33. package/dist/WEPSCLI-shell/tool-message-detail.js.map +1 -1
  34. package/dist/WEPSCLI-shell/tool-messages.js.map +1 -1
  35. package/dist/WEPSCLI-shell/transcript-panel.js.map +1 -1
  36. package/dist/config.js +3 -0
  37. package/dist/config.js.map +1 -1
  38. package/dist/main.js.map +1 -1
  39. package/dist/skills/skill-add-flow.js +88 -0
  40. package/dist/skills/skill-add-flow.js.map +1 -0
  41. package/dist/skills/skill-service.js +123 -0
  42. package/dist/skills/skill-service.js.map +1 -0
  43. package/package.json +28 -24
@@ -1 +1 @@
1
- {"version":3,"names":["useKeyboard","useRenderer","useTerminalDimensions","batch","createEffect","createMemo","createSignal","onMount","SessionHistoryService","getAgentDir","ApprovalOverlay","WepsAgentRuntime","writeShellDebugLog","executeSlashCommand","createIdleRuntimeState","runtimeStateTone","applyShellModePrompt","getShellMode","nextShellMode","shellModeSwitchMessage","wepscliShellTheme","theme","formatTimestamp","INITIAL_SESSIONS","overlayDescription","overlayTitle","truncate","wrapIndex","createProviderAddFlow","appendSessionMessage","insertSessionMessageBefore","patchSessionMessage","toggleSessionMessage","toggleSessionMessageState","TranscriptPanel","ChatComposer","OverlayPicker","LOGO","WEPSCLIShellApp","props","renderer","dimensions","sessionHistory","view","setView","focusRegion","setFocusRegionState","overlay","setOverlay","undefined","profiles","setProfiles","profileService","listProfiles","selection","setSelection","getActiveSelection","overlayIndex","setOverlayIndex","modelPickerProfileId","setModelPickerProfileId","profileId","sessions","setSessions","ensureSeed","composerValue","setComposerValue","shellMode","setShellMode","activeSessionId","setActiveSessionId","messagesBySession","setMessagesBySession","runtimeStateBySession","setRuntimeStateBySession","approvalRequests","setApprovalRequests","approvalDecisionIndex","setApprovalDecisionIndex","runtime","appendMessage","sessionId","message","appendTranscriptMessage","insertMessageBefore","beforeMessageId","insertTranscriptMessageBefore","replaceMessages","messages","replaceTranscriptMessages","patchMessage","messageId","patch","patchTranscriptMessage","openApproval","_sessionId","request","openApprovalRequest","closeApproval","requestId","closeApprovalRequest","updateRuntimeState","state","updateSessionBinding","binding","persistRuntimeSessionBinding","composerRef","transcriptScroll","closed","transcriptScrollTimer","providerAddFlow","onCreated","profile","modelId","reloadProviderState","currentSession","updateSession","id","providerProfileId","providerLabel","label","listSessions","syncSelection","pushChatMessage","createdTransientSessionId","Date","now","role","content","time","toLocaleTimeString","hour","minute","onClose","setFocusRegion","viewport","width","height","showSidebar","shellReady","length","activeShellMode","activeProfile","current","find","activeModel","models","currentId","list","item","currentMessages","session","currentRuntimeState","activeApproval","recentSessions","slice","sessionSummary","summary","overlayOptions","map","description","family","lastValidationStatus","badge","model","name","title","updatedAt","setTimeout","focus","setMode","syncActiveSelectionFromSession","ensureSessionTranscript","runtimeSessionFile","loadSession","selectionForSession","evt","ctrl","preventDefault","exitShell","abortActiveRequest","resolveActiveApproval","isActive","back","isPickerStep","moveSelection","confirmSelection","closeOverlay","target","activateAction","option","applyShellMode","includes","nextMode","cycleFocus","value","trim","clearTimeout","dispose","setTerminalTitle","destroy","onExit","requestRender","cancelTranscriptAutoScroll","scheduleTranscriptScrollToBottom","isDestroyed","scrollTo","scrollHeight","aborted","abort","kind","compactCurrentSession","compact","toolName","filter","decision","resolveApproval","region","blur","order","index","indexOf","setShellView","next","openOverlay","activeProviderId","Math","max","findIndex","openProviderAdd","open","initial","toggleTranscriptMessage","existing","setActiveSelection","activateSession","markActive","startNewSession","provider","created","createSession","JSON","stringify","handleComposerSubmit","trimmed","startsWith","runSlashCommand","lastPrompt","setText","prompt","commandId","modeId","getCurrentMode","getStatusSummary","runtimeState","join","queuePromptTemplate","pushTimeline","actionId","nextModel","payload","separator","topStatus","sidebarSummary","baseUrl","runtimeStatusColor","accent","warning","danger","success","muted","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_$insertNode","_$setProp","_$createTextNode","_$insert","_c$","_$memo","interruptible","_el$10","_el$11","_$effect","_p$","_v$7","_v$8","background","e","t","_$createComponent","activeModelLabel","scrollRef","ref","onToggleMessage","focused","modelLabel","modeLabel","composerLabel","modeTone","tone","inputRef","onAction","onFocus","onInput","onModeClick","onSubmit","onSelectSlashCommand","_c$2","options","selectedIndex","onSelect","_c$3","onSelectIndex","onResolve","render","_v$","_v$2","header","_v$3","accentStrong","_v$4","text","_v$5","_v$6","a","o","i","n"],"sources":["shell-app.tsx"],"sourcesContent":["import { useKeyboard, useRenderer, useTerminalDimensions } from \"@opentui/solid\";\r\nimport { batch, createEffect, createMemo, createSignal, onMount } from \"solid-js\";\r\nimport type { ProviderProfile, ProviderProfileService } from \"../provider-profiles/index.js\";\r\nimport { SessionHistoryService } from \"../session-history/session-history-service.js\";\r\nimport { getAgentDir } from \"../config.js\";\r\nimport { ApprovalOverlay } from \"./approval-overlay.js\";\nimport { WepsAgentRuntime, type RuntimeSelection } from \"./agent-runtime.js\";\nimport { writeShellDebugLog } from \"./debug-log.js\";\nimport { executeSlashCommand, getSlashCommands } from \"./slash-commands.js\";\nimport { createIdleRuntimeState, runtimeStateTone, type RuntimeSessionState } from \"./runtime-status.js\";\nimport { applyShellModePrompt, getShellMode, nextShellMode, shellModeSwitchMessage, type ShellModeId } from \"./shell-modes.js\";\nimport { providerFamilyColor, wepscliShellTheme as theme } from \"./theme.js\";\nimport type { ToolApprovalDecision, ToolApprovalRequest } from \"./tool-approval.js\";\nimport type { OverlayKind, OverlayOption, ShellFocus, ShellView } from \"./types.js\";\nimport { formatTimestamp, INITIAL_SESSIONS, overlayDescription, overlayTitle, truncate, wrapIndex } from \"./helpers.js\";\r\nimport { createProviderAddFlow } from \"./provider-add-flow.js\";\r\nimport {\r\n\tappendSessionMessage,\r\n\tinsertSessionMessageBefore,\r\n\tpatchSessionMessage,\r\n\ttoggleSessionMessage as toggleSessionMessageState,\r\n\ttype TranscriptMessagePatch,\r\n} from \"./transcript-state.js\";\r\nimport { TranscriptPanel } from \"./transcript-panel.js\";\r\nimport {\r\n\tChatComposer,\r\n\tOverlayPicker,\r\n\ttype ChatMessage,\r\n\ttype ComposerInputRef,\r\n} from \"./chat-components.js\";\r\n\r\nconst LOGO = \"WEPsCLI\";\r\n\r\nexport function WEPSCLIShellApp(props: { profileService: ProviderProfileService; onExit: () => void }) {\r\n\tconst renderer = useRenderer();\r\n\tconst dimensions = useTerminalDimensions();\r\n\tconst sessionHistory = new SessionHistoryService();\r\n\r\n\tconst [view, setView] = createSignal<ShellView>(\"home\");\r\n\tconst [focusRegion, setFocusRegionState] = createSignal<ShellFocus>(\"composer\");\r\n\tconst [overlay, setOverlay] = createSignal<OverlayKind | undefined>(undefined);\r\n\tconst [profiles, setProfiles] = createSignal<ProviderProfile[]>(props.profileService.listProfiles());\r\n\tconst [selection, setSelection] = createSignal(props.profileService.getActiveSelection());\r\n\tconst [overlayIndex, setOverlayIndex] = createSignal(0);\r\n\tconst [modelPickerProfileId, setModelPickerProfileId] = createSignal<string | undefined>(selection().profileId);\n\tconst [sessions, setSessions] = createSignal(sessionHistory.ensureSeed(INITIAL_SESSIONS));\n\tconst [composerValue, setComposerValue] = createSignal(\"\");\n\tconst [shellMode, setShellMode] = createSignal<ShellModeId>(\"agent\");\n\tconst [activeSessionId, setActiveSessionId] = createSignal<string | undefined>(undefined);\n\tconst [messagesBySession, setMessagesBySession] = createSignal<Record<string, ChatMessage[]>>({});\n\tconst [runtimeStateBySession, setRuntimeStateBySession] = createSignal<Record<string, RuntimeSessionState>>({});\r\n\tconst [approvalRequests, setApprovalRequests] = createSignal<ToolApprovalRequest[]>([]);\r\n\tconst [approvalDecisionIndex, setApprovalDecisionIndex] = createSignal(0);\r\n\tconst runtime = new WepsAgentRuntime(props.profileService, {\r\n\t\tappendMessage: (sessionId, message) => appendTranscriptMessage(sessionId, message),\r\n\t\tinsertMessageBefore: (sessionId, beforeMessageId, message) => insertTranscriptMessageBefore(sessionId, beforeMessageId, message),\r\n\t\treplaceMessages: (sessionId, messages) => replaceTranscriptMessages(sessionId, messages),\r\n\t\tpatchMessage: (sessionId, messageId, patch) => patchTranscriptMessage(sessionId, messageId, patch),\r\n\t\topenApproval: (_sessionId, request) => openApprovalRequest(request),\r\n\t\tcloseApproval: (_sessionId, requestId) => closeApprovalRequest(requestId),\r\n\t\tupdateRuntimeState: (sessionId, state) => updateRuntimeState(sessionId, state),\r\n\t\tupdateSessionBinding: (sessionId, binding) => persistRuntimeSessionBinding(sessionId, binding),\r\n\t});\r\n\r\n\tlet composerRef: ComposerInputRef | undefined;\r\n\tlet transcriptScroll:\r\n\t\t| {\r\n\t\t\t\tscrollTo(position: number): void;\r\n\t\t\t\tscrollHeight: number;\r\n\t\t\t\tisDestroyed?: boolean;\r\n\t\t }\r\n\t\t| undefined;\r\n\tlet closed = false;\r\n\tlet transcriptScrollTimer: ReturnType<typeof setTimeout> | undefined;\r\n\tconst providerAddFlow = createProviderAddFlow({\r\n\t\tprofileService: props.profileService,\r\n\t\tonCreated: ({ profile, modelId }) => {\r\n\t\t\treloadProviderState();\r\n\t\t\tif (currentSession()) {\r\n\t\t\t\tsessionHistory.updateSession(currentSession()!.id, {\r\n\t\t\t\t\tproviderProfileId: profile.id,\r\n\t\t\t\t\tproviderLabel: profile.label,\r\n\t\t\t\t\tmodelId,\r\n\t\t\t\t});\r\n\t\t\t\tsetSessions(sessionHistory.listSessions());\r\n\t\t\t\tvoid runtime.syncSelection(currentSession()!.id, { profileId: profile.id, modelId });\r\n\t\t\t}\r\n\t\t\tpushChatMessage(currentSession()?.id ?? createdTransientSessionId(), {\r\n\t\t\t\tid: `provider-add:${profile.id}:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: `Added provider ${profile.label} / ${modelId}`,\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t});\r\n\t\t},\r\n\t\tonClose: () => setFocusRegion(\"composer\"),\r\n\t});\r\n\r\n\tconst viewport = createMemo(() => ({\r\n\t\twidth: dimensions().width || 120,\r\n\t\theight: dimensions().height || 32,\r\n\t}));\r\n\tconst showSidebar = createMemo(() => false);\n\tconst shellReady = createMemo(() => profiles().length > 0);\n\tconst activeShellMode = createMemo(() => getShellMode(shellMode()));\n\r\n\tconst activeProfile = createMemo(() => {\r\n\t\tconst current = selection().profileId;\r\n\t\treturn current ? profiles().find((profile) => profile.id === current) : profiles()[0];\r\n\t});\r\n\r\n\tconst activeModel = createMemo(() => selection().modelId ?? activeProfile()?.models[0]?.id);\r\n\tconst currentSession = createMemo(() => {\r\n\t\tconst currentId = activeSessionId();\r\n\t\tconst list = sessions();\r\n\t\treturn currentId ? list.find((item) => item.id === currentId) : list.find((item) => item.state === \"active\") ?? list[0];\r\n\t});\r\n\tconst currentMessages = createMemo(() => {\r\n\t\tconst session = currentSession();\r\n\t\treturn session ? messagesBySession()[session.id] ?? [] : [];\r\n\t});\r\n\tconst currentRuntimeState = createMemo(() => {\r\n\t\tconst session = currentSession();\r\n\t\treturn session ? runtimeStateBySession()[session.id] ?? createIdleRuntimeState() : createIdleRuntimeState();\r\n\t});\r\n\tconst activeApproval = createMemo(() => approvalRequests()[0]);\r\n\tconst recentSessions = createMemo(() => sessions().slice(0, 5));\r\n\tconst sessionSummary = createMemo(() => currentSession()?.summary ?? \"No session selected yet.\");\r\n\r\n\tconst overlayOptions = createMemo<OverlayOption[]>(() => {\r\n\t\tswitch (overlay()) {\r\n\t\t\tcase \"provider\":\r\n\t\t\t\treturn [\r\n\t\t\t\t\t...profiles().map((profile) => ({\r\n\t\t\t\t\t\tid: `provider:${profile.id}`,\r\n\t\t\t\t\t\tlabel: profile.label,\r\n\t\t\t\t\t\tdescription: `${profile.family} | ${profile.models.length} model${profile.models.length === 1 ? \"\" : \"s\"} | ${profile.lastValidationStatus}`,\r\n\t\t\t\t\t\tbadge: selection().profileId === profile.id ? \"ACTIVE\" : undefined,\r\n\t\t\t\t\t})),\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: \"provider:add\",\r\n\t\t\t\t\t\tlabel: \"Add provider\",\r\n\t\t\t\t\t\tdescription: \"Create a new provider profile with a guided setup flow.\",\r\n\t\t\t\t\t\tbadge: \"NEW\",\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\t\t\tcase \"model-provider\":\r\n\t\t\t\treturn profiles().map((profile) => ({\r\n\t\t\t\t\tid: `model-provider:${profile.id}`,\r\n\t\t\t\t\tlabel: profile.label,\r\n\t\t\t\t\tdescription: `${profile.family} | ${profile.models.length} model${profile.models.length === 1 ? \"\" : \"s\"} available`,\r\n\t\t\t\t\tbadge: modelPickerProfileId() === profile.id ? \"OPEN\" : selection().profileId === profile.id ? \"ACTIVE\" : undefined,\r\n\t\t\t\t}));\r\n\t\t\tcase \"model\":\r\n\t\t\t\treturn (profiles().find((profile) => profile.id === modelPickerProfileId())?.models ?? []).map((model) => ({\r\n\t\t\t\t\tid: `model:${modelPickerProfileId()}:${model.id}`,\r\n\t\t\t\t\tlabel: model.id,\r\n\t\t\t\t\tdescription: `${model.family} | ${model.name}`,\r\n\t\t\t\t\tbadge: selection().profileId === modelPickerProfileId() && activeModel() === model.id ? \"CURRENT\" : undefined,\r\n\t\t\t\t}));\r\n\t\t\tcase \"session\":\r\n\t\t\t\treturn sessions().map((session) => ({\r\n\t\t\t\t\tid: `session:${session.id}`,\r\n\t\t\t\t\tlabel: session.title,\r\n\t\t\t\t\tdescription: `${session.state} | ${formatTimestamp(session.updatedAt)} | ${session.summary}`,\r\n\t\t\t\t\tbadge: session.id === currentSession()?.id ? \"OPEN\" : undefined,\r\n\t\t\t\t}));\r\n\t\t\tcase undefined:\r\n\t\t\t\treturn [];\r\n\t\t}\r\n\t});\r\n\r\n\tonMount(() => {\r\n\t\twriteShellDebugLog(`mounted chat shell profiles=${profiles().length} sessions=${sessionHistory.listSessions().length}`);\r\n\t\tsetTimeout(() => composerRef?.focus(), 10);\r\n\t});\r\n\r\n\tcreateEffect(() => {\n\t\truntime.setMode(shellMode());\n\t});\n\n\tcreateEffect(() => {\n\t\tconst session = currentSession();\n\t\tif (!session) {\n\t\t\twriteShellDebugLog(\"effect session=none messages=0\");\n\t\t\treturn;\n\t\t}\r\n\t\tif (!activeSessionId()) {\r\n\t\t\tsetActiveSessionId(session.id);\r\n\t\t\tsyncActiveSelectionFromSession(session.id);\r\n\t\t}\r\n\t\tensureSessionTranscript(session.id);\r\n\t\tif (session.runtimeSessionFile) {\r\n\t\t\tvoid runtime.loadSession(session.id, selectionForSession(session), {\r\n\t\t\t\truntimeSessionFile: session.runtimeSessionFile,\r\n\t\t\t});\r\n\t\t}\r\n\t\twriteShellDebugLog(`effect session=${session.id} messages=${currentMessages().length}`);\r\n\t});\r\n\r\n\tuseKeyboard((evt) => {\r\n\t\twriteShellDebugLog(`key name=${evt.name} focus=${focusRegion()} overlay=${overlay() ?? \"none\"}`);\r\n\r\n\t\tif (evt.ctrl && evt.name === \"c\") {\r\n\t\t\tevt.preventDefault();\r\n\t\t\texitShell();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (evt.ctrl && evt.name === \".\") {\r\n\t\t\tevt.preventDefault();\r\n\t\t\tvoid abortActiveRequest();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (activeApproval()) {\r\n\t\t\tif (evt.name === \"escape\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tresolveActiveApproval(\"cancel\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"left\" || evt.name === \"up\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tsetApprovalDecisionIndex((current) => wrapIndex(current, -1, 3));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"right\" || evt.name === \"down\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tsetApprovalDecisionIndex((current) => wrapIndex(current, 1, 3));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"return\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tresolveActiveApproval(([\"allow\", \"reject\", \"cancel\"] as ToolApprovalDecision[])[approvalDecisionIndex()] ?? \"cancel\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (providerAddFlow.isActive()) {\r\n\t\t\tif (evt.name === \"escape\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tproviderAddFlow.back();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (providerAddFlow.isPickerStep()) {\r\n\t\t\t\tif (evt.name === \"up\") {\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t\tproviderAddFlow.moveSelection(-1);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.name === \"down\") {\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t\tproviderAddFlow.moveSelection(1);\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\tif (evt.name === \"return\") {\r\n\t\t\t\t\tevt.preventDefault();\r\n\t\t\t\t\tproviderAddFlow.confirmSelection();\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (overlay()) {\n\t\t\tif (evt.name === \"escape\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tcloseOverlay();\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"up\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tsetOverlayIndex(wrapIndex(overlayIndex(), -1, overlayOptions().length));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"down\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tsetOverlayIndex(wrapIndex(overlayIndex(), 1, overlayOptions().length));\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"return\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tconst target = overlayOptions()[overlayIndex()];\r\n\t\t\t\tif (target) activateAction(target.id);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.option && evt.name === \"m\") {\n\t\t\tevt.preventDefault();\n\t\t\tapplyShellMode(nextShellMode(shellMode()));\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.option && [\"1\", \"2\", \"3\", \"4\"].includes(evt.name)) {\n\t\t\tevt.preventDefault();\n\t\t\tconst nextMode = ({\n\t\t\t\t\"1\": \"agent\",\n\t\t\t\t\"2\": \"plan\",\n\t\t\t\t\"3\": \"read-only\",\n\t\t\t\t\"4\": \"auto-approve\",\n\t\t\t} as Record<string, ShellModeId>)[evt.name];\n\t\t\tif (nextMode) {\n\t\t\t\tapplyShellMode(nextMode);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.name === \"tab\") {\n\t\t\tevt.preventDefault();\n\t\t\tcycleFocus();\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (focusRegion() === \"main\") {\r\n\t\t\tif (evt.name === \"up\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"down\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tif (evt.name === \"escape\") {\r\n\t\t\t\tevt.preventDefault();\r\n\t\t\t\tsetFocusRegion(\"composer\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (focusRegion() === \"composer\" && evt.name === \"escape\" && !(composerRef?.value ?? \"\").trim()) {\r\n\t\t\tevt.preventDefault();\r\n\t\t\texitShell();\r\n\t\t}\r\n\t});\r\n\r\n\tfunction exitShell(): void {\r\n\t\tif (closed) return;\r\n\t\tclosed = true;\r\n\t\twriteShellDebugLog(\"exit shell\");\r\n\t\tif (transcriptScrollTimer) {\r\n\t\t\tclearTimeout(transcriptScrollTimer);\r\n\t\t\ttranscriptScrollTimer = undefined;\r\n\t\t}\r\n\t\truntime.dispose();\r\n\t\trenderer.setTerminalTitle(\"\");\r\n\t\trenderer.destroy();\r\n\t\tprops.onExit();\r\n\t}\r\n\r\n\tfunction requestRender(): void {\r\n\t\t(renderer as { requestRender?: () => void }).requestRender?.();\r\n\t}\r\n\r\n\tfunction cancelTranscriptAutoScroll(): void {\r\n\t\tif (!transcriptScrollTimer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tclearTimeout(transcriptScrollTimer);\r\n\t\ttranscriptScrollTimer = undefined;\r\n\t}\r\n\r\n\tfunction scheduleTranscriptScrollToBottom(): void {\r\n\t\tcancelTranscriptAutoScroll();\r\n\t\ttranscriptScrollTimer = setTimeout(() => {\r\n\t\t\ttranscriptScrollTimer = undefined;\r\n\t\t\tif (!transcriptScroll || transcriptScroll.isDestroyed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttranscriptScroll.scrollTo(transcriptScroll.scrollHeight);\r\n\t\t}, 50);\r\n\t}\r\n\r\n\tfunction reloadProviderState(): void {\r\n\t\tsetProfiles(props.profileService.listProfiles());\r\n\t\tsetSelection(props.profileService.getActiveSelection());\r\n\t}\r\n\r\n\tfunction updateRuntimeState(sessionId: string, state: RuntimeSessionState): void {\r\n\t\tsetRuntimeStateBySession((current) => ({\r\n\t\t\t...current,\r\n\t\t\t[sessionId]: state,\r\n\t\t}));\r\n\t\trequestRender();\r\n\t}\r\n\r\n\tasync function abortActiveRequest(): Promise<void> {\n\t\tconst session = currentSession();\n\t\tif (!session) {\n\t\t\treturn;\n\t\t}\r\n\t\tconst aborted = await runtime.abort(session.id);\r\n\t\tif (!aborted) {\r\n\t\t\tpushChatMessage(session.id, {\r\n\t\t\t\tid: `${session.id}:system:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: \"No active request to interrupt.\",\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\tkind: \"status\",\r\n\t\t\t});\n\t\t}\n\t}\n\n\tasync function compactCurrentSession(): Promise<void> {\n\t\tconst session = currentSession();\n\t\tif (!session) {\n\t\t\tconst sessionId = createdTransientSessionId();\n\t\t\tpushChatMessage(sessionId, {\n\t\t\t\tid: `${sessionId}:system:${Date.now()}`,\n\t\t\t\trole: \"system\",\n\t\t\t\tcontent: \"No active session is ready to compact yet.\",\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\n\t\t\t\tkind: \"status\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tawait runtime.compact(session.id, selectionForSession(session), {\n\t\t\truntimeSessionFile: session.runtimeSessionFile,\n\t\t});\n\t}\n\n\tfunction applyShellMode(nextMode: ShellModeId): void {\n\t\tif (shellMode() === nextMode) {\n\t\t\tconst sessionId = currentSession()?.id ?? createdTransientSessionId();\n\t\t\tpushChatMessage(sessionId, {\n\t\t\t\tid: `${sessionId}:system:${Date.now()}`,\n\t\t\t\trole: \"system\",\n\t\t\t\tcontent: `Already in ${getShellMode(nextMode).label} mode.`,\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\n\t\t\t\tkind: \"status\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\tsetShellMode(nextMode);\n\t\tconst sessionId = currentSession()?.id ?? createdTransientSessionId();\n\t\tpushChatMessage(sessionId, {\n\t\t\tid: `${sessionId}:system:${Date.now()}`,\n\t\t\trole: \"system\",\n\t\t\tcontent: shellModeSwitchMessage(nextMode),\n\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\n\t\t\tkind: \"status\",\n\t\t});\n\t\tcomposerRef?.focus();\n\t\tsetFocusRegion(\"composer\");\n\t\trequestRender();\n\t}\n\r\n\tfunction openApprovalRequest(request: ToolApprovalRequest): void {\r\n\t\twriteShellDebugLog(`approval open tool=${request.toolName} id=${request.id}`);\r\n\t\tsetOverlay(undefined);\r\n\t\tsetApprovalRequests((current) => [...current, request]);\r\n\t\tsetApprovalDecisionIndex(0);\r\n\t\tsetFocusRegion(\"overlay\");\r\n\t\trequestRender();\r\n\t}\r\n\r\n\tfunction closeApprovalRequest(requestId: string): void {\r\n\t\twriteShellDebugLog(`approval close id=${requestId}`);\r\n\t\tsetApprovalRequests((current) => current.filter((request) => request.id !== requestId));\r\n\t\tsetApprovalDecisionIndex(0);\r\n\t\tif (!providerAddFlow.isActive() && !overlay() && approvalRequests().filter((request) => request.id !== requestId).length === 0) {\r\n\t\t\tsetFocusRegion(\"composer\");\r\n\t\t}\r\n\t\trequestRender();\r\n\t}\r\n\r\n\tfunction resolveActiveApproval(decision: ToolApprovalDecision): void {\r\n\t\tconst request = activeApproval();\r\n\t\tif (!request) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\twriteShellDebugLog(`approval decision tool=${request.toolName} decision=${decision}`);\r\n\t\truntime.resolveApproval(request.id, decision);\r\n\t}\r\n\r\n\tfunction setFocusRegion(region: ShellFocus): void {\r\n\t\tsetFocusRegionState(region);\r\n\t\tif (region === \"composer\") {\r\n\t\t\tsetTimeout(() => composerRef?.focus(), 0);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tcomposerRef?.blur();\r\n\t}\r\n\r\n\tfunction cycleFocus(): void {\r\n\t\tif (activeApproval() || overlay()) {\r\n\t\t\tsetFocusRegion(\"overlay\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst order: ShellFocus[] = [\"main\", \"composer\"];\r\n\t\tconst index = order.indexOf(focusRegion());\r\n\t\tsetFocusRegion(order[(index + 1) % order.length] ?? \"composer\");\r\n\t}\r\n\r\n\tfunction setShellView(next: ShellView): void {\r\n\t\tbatch(() => {\r\n\t\t\tsetView(next);\r\n\t\t});\r\n\t\tsetFocusRegion(\"composer\");\r\n\t}\r\n\r\n\tfunction openOverlay(kind: OverlayKind): void {\r\n\t\tif (kind === \"model\" && profiles().length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (kind === \"model\") {\r\n\t\t\tconst activeProviderId = selection().profileId ?? profiles()[0]?.id;\r\n\t\t\tif (!activeProviderId) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsetModelPickerProfileId(activeProviderId);\r\n\t\t\tif (profiles().length > 1) {\r\n\t\t\t\tsetOverlay(\"model-provider\");\r\n\t\t\t\tsetOverlayIndex(Math.max(0, profiles().findIndex((profile) => profile.id === activeProviderId)));\r\n\t\t\t\tsetFocusRegion(\"overlay\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetOverlay(kind);\r\n\t\tsetOverlayIndex(0);\r\n\t\tsetFocusRegion(\"overlay\");\r\n\t}\r\n\r\n\tfunction closeOverlay(): void {\r\n\t\tsetOverlay(undefined);\r\n\t\tsetFocusRegion(\"composer\");\r\n\t}\r\n\r\n\tfunction openProviderAdd(): void {\r\n\t\tsetOverlay(undefined);\r\n\t\tproviderAddFlow.open();\r\n\t\tsetFocusRegion(\"overlay\");\r\n\t}\r\n\r\n\tfunction ensureSessionTranscript(sessionId: string): void {\r\n\t\tsetMessagesBySession((current) => {\r\n\t\t\tif (current[sessionId]) return current;\r\n\t\t\tconst session = sessions().find((item) => item.id === sessionId);\r\n\t\t\tconst initial: ChatMessage[] = [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: `${sessionId}:system:0`,\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: session ? `Opened ${session.title}` : \"Opened session\",\r\n\t\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t\treturn { ...current, [sessionId]: initial };\r\n\t\t});\r\n\t\tsetRuntimeStateBySession((current) => (current[sessionId] ? current : { ...current, [sessionId]: createIdleRuntimeState() }));\r\n\t\trequestRender();\r\n\t\tscheduleTranscriptScrollToBottom();\r\n\t}\r\n\r\n\tfunction appendTranscriptMessage(sessionId: string, message: ChatMessage): void {\r\n\t\tsetMessagesBySession((current) => appendSessionMessage(current, sessionId, message));\r\n\t\trequestRender();\r\n\t\tscheduleTranscriptScrollToBottom();\r\n\t}\r\n\r\n\tfunction replaceTranscriptMessages(sessionId: string, messages: ChatMessage[]): void {\r\n\t\tsetMessagesBySession((current) => ({\r\n\t\t\t...current,\r\n\t\t\t[sessionId]: messages.slice(-200),\r\n\t\t}));\r\n\t\trequestRender();\r\n\t\tscheduleTranscriptScrollToBottom();\r\n\t}\r\n\r\n\tfunction insertTranscriptMessageBefore(sessionId: string, beforeMessageId: string, message: ChatMessage): void {\r\n\t\tsetMessagesBySession((current) => insertSessionMessageBefore(current, sessionId, beforeMessageId, message));\r\n\t\trequestRender();\r\n\t\tscheduleTranscriptScrollToBottom();\r\n\t}\r\n\r\n\tfunction patchTranscriptMessage(sessionId: string, messageId: string, patch: TranscriptMessagePatch): void {\r\n\t\tsetMessagesBySession((current) => {\r\n\t\t\tconst next = patchSessionMessage(current, sessionId, messageId, patch);\r\n\t\t\treturn next.messagesBySession;\r\n\t\t});\r\n\t\trequestRender();\r\n\t\tscheduleTranscriptScrollToBottom();\r\n\t}\r\n\r\n\tfunction toggleTranscriptMessage(sessionId: string, messageId: string): void {\r\n\t\tcancelTranscriptAutoScroll();\r\n\t\tsetMessagesBySession((current) => toggleSessionMessageState(current, sessionId, messageId));\r\n\t\trequestRender();\r\n\t}\r\n\r\n\tfunction selectionForSession(session = currentSession()): RuntimeSelection {\r\n\t\treturn {\r\n\t\t\tprofileId: session?.providerProfileId ?? selection().profileId,\r\n\t\t\tmodelId: session?.modelId ?? selection().modelId,\r\n\t\t};\r\n\t}\r\n\r\n\tfunction persistRuntimeSessionBinding(sessionId: string, binding: { runtimeSessionFile?: string }): void {\r\n\t\tif (!binding.runtimeSessionFile) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst existing = sessions().find((session) => session.id === sessionId);\r\n\t\tif (existing?.runtimeSessionFile === binding.runtimeSessionFile) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsessionHistory.updateSession(sessionId, {\r\n\t\t\truntimeSessionFile: binding.runtimeSessionFile,\r\n\t\t});\r\n\t\tsetSessions(sessionHistory.listSessions());\r\n\t}\r\n\r\n\tfunction syncActiveSelectionFromSession(sessionId: string): void {\r\n\t\tconst session = sessions().find((item) => item.id === sessionId);\r\n\t\tif (!session?.providerProfileId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst profile = profiles().find((item) => item.id === session.providerProfileId);\r\n\t\tif (!profile) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tprops.profileService.setActiveSelection(profile.id, session.modelId ?? profile.models[0]?.id);\r\n\t\treloadProviderState();\r\n\t}\r\n\r\n\tfunction activateSession(sessionId: string): void {\r\n\t\tsetActiveSessionId(sessionId);\r\n\t\tensureSessionTranscript(sessionId);\r\n\t\tsyncActiveSelectionFromSession(sessionId);\r\n\t\tconst session = sessions().find((item) => item.id === sessionId);\r\n\t\tif (session) {\r\n\t\t\tsessionHistory.markActive(sessionId);\r\n\t\t\tsetSessions(sessionHistory.listSessions());\r\n\t\t\tsetShellView(\"home\");\r\n\t\t\tvoid runtime.syncSelection(sessionId, selectionForSession(session));\r\n\t\t\tif (session.runtimeSessionFile) {\r\n\t\t\t\tvoid runtime.loadSession(sessionId, selectionForSession(session), {\r\n\t\t\t\t\truntimeSessionFile: session.runtimeSessionFile,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tcloseOverlay();\r\n\t}\r\n\r\n\tfunction startNewSession() {\r\n\t\tconst provider = activeProfile();\r\n\t\tconst created = sessionHistory.createSession({\r\n\t\t\ttitle: \"New WEPsCLI chat\",\r\n\t\t\tsummary: provider ? `Chat ready with ${provider.label}.` : \"Chat ready before provider selection.\",\r\n\t\t\tstate: \"active\",\r\n\t\t\tproviderProfileId: provider?.id,\r\n\t\t\tproviderLabel: provider?.label,\r\n\t\t\tmodelId: activeModel(),\r\n\t\t});\r\n\t\tsetSessions(sessionHistory.listSessions());\r\n\t\tsetActiveSessionId(created.id);\r\n\t\tensureSessionTranscript(created.id);\r\n\t\tsetMessagesBySession((current) => ({\r\n\t\t\t...current,\r\n\t\t\t[created.id]: [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: `${created.id}:system:0`,\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: provider ? `Ready with ${provider.label}${activeModel() ? ` / ${activeModel()}` : \"\"}` : \"Connect a provider to start sending prompts.\",\r\n\t\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t}));\r\n\t\tsetComposerValue(\"\");\r\n\t\tcomposerRef?.focus();\r\n\t\tsetFocusRegion(\"composer\");\r\n\t\trequestRender();\r\n\t\tscheduleTranscriptScrollToBottom();\r\n\t\treturn created;\r\n\t}\r\n\r\n\tfunction pushChatMessage(sessionId: string, message: ChatMessage): void {\r\n\t\twriteShellDebugLog(`pushChatMessage session=${sessionId} role=${message.role} content=${JSON.stringify(message.content)}`);\r\n\t\tsetMessagesBySession((current) => {\r\n\t\t\tconst next = appendSessionMessage(current, sessionId, message);\r\n\t\t\twriteShellDebugLog(`pushChatMessage nextCount=${next[sessionId]?.length ?? 0}`);\r\n\t\t\treturn next;\r\n\t\t});\r\n\t\trequestRender();\r\n\t}\r\n\r\n\tfunction handleComposerSubmit(value: string): void {\r\n\t\tconst trimmed = value.trim();\r\n\t\twriteShellDebugLog(`handleComposerSubmit raw=${JSON.stringify(value)} trimmed=${JSON.stringify(trimmed)}`);\r\n\t\tif (!trimmed) return;\r\n\r\n\t\tconst session = currentSession() ?? startNewSession();\r\n\t\twriteShellDebugLog(`handleComposerSubmit currentSession=${session?.id ?? \"none\"}`);\r\n\t\tif (!session) {\r\n\t\t\twriteShellDebugLog(\"handleComposerSubmit no current session available\");\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (trimmed.startsWith(\"/\")) {\r\n\t\t\twriteShellDebugLog(`handleComposerSubmit slash=${trimmed}`);\r\n\t\t\trunSlashCommand(trimmed);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tensureSessionTranscript(session.id);\r\n\t\tsessionHistory.updateSession(session.id, {\r\n\t\t\ttitle: `Chat: ${truncate(trimmed, 24)}`,\r\n\t\t\tsummary: `Last prompt: ${truncate(trimmed, 60)}`,\r\n\t\t\tproviderProfileId: selectionForSession(session).profileId,\r\n\t\t\tproviderLabel: activeProfile()?.label,\r\n\t\t\tmodelId: selectionForSession(session).modelId,\r\n\t\t\tlastPrompt: trimmed,\r\n\t\t\tstate: \"active\",\r\n\t\t});\r\n\t\tsetSessions(sessionHistory.listSessions());\r\n\t\twriteShellDebugLog(`handleComposerSubmit sessionUpdated=${session.id}`);\r\n\t\tsetComposerValue(\"\");\r\n\t\tcomposerRef?.setText?.(\"\");\r\n\t\tcomposerRef?.focus();\r\n\t\tvoid runtime.prompt(session.id, applyShellModePrompt(shellMode(), trimmed), selectionForSession(session), {\n\t\t\truntimeSessionFile: session.runtimeSessionFile,\n\t\t});\n\t\trequestRender();\n\t}\n\r\n\tfunction runSlashCommand(commandId: string): void {\n\t\texecuteSlashCommand(commandId, {\n\t\t\tstartNewSession,\n\t\t\topenOverlay,\n\t\t\topenProviderAdd,\n\t\t\tcompactCurrentSession,\n\t\t\tabortActiveRequest: () => {\n\t\t\t\tvoid abortActiveRequest();\n\t\t\t},\n\t\t\tsetMode: (modeId) => applyShellMode(modeId),\n\t\t\tgetCurrentMode: () => shellMode(),\n\t\t\tgetStatusSummary: () => {\n\t\t\t\tconst session = currentSession();\n\t\t\t\tconst runtimeState = currentRuntimeState();\n\t\t\t\treturn [\n\t\t\t\t\t\"Current shell status:\",\n\t\t\t\t\t`Session: ${session?.title ?? \"none\"}`,\n\t\t\t\t\t`Mode: ${activeShellMode().label}`,\n\t\t\t\t\t`Provider: ${activeProfile()?.label ?? \"none\"}`,\n\t\t\t\t\t`Model: ${activeModel() ?? \"none\"}`,\n\t\t\t\t\t`Runtime: ${runtimeState.label}`,\n\t\t\t\t\t`Agent dir: ${getAgentDir()}`,\n\t\t\t\t].join(\"\\n\");\n\t\t\t},\n\t\t\tqueuePromptTemplate: (title: string, prompt: string, summary: string) => {\n\t\t\t\tconst session = currentSession() ?? startNewSession();\n\t\t\t\tpushChatMessage(session.id, {\n\t\t\t\t\tid: `${session.id}:system:${Date.now()}`,\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: `${title}: ${summary}`,\r\n\t\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\t});\r\n\t\t\t\tsetComposerValue(prompt);\r\n\t\t\t\tcomposerRef?.setText?.(prompt);\r\n\t\t\t\tcomposerRef?.focus();\r\n\t\t\t\tsetFocusRegion(\"composer\");\r\n\t\t\t},\r\n\t\t\tpushTimeline: (message: string) => {\r\n\t\t\t\tconst session = currentSession() ?? startNewSession();\r\n\t\t\t\tpushChatMessage(session.id, {\r\n\t\t\t\t\tid: `${session.id}:system:${Date.now()}`,\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: message,\r\n\t\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t});\r\n\t}\r\n\r\n\tfunction activateAction(actionId: string): void {\r\n\t\tif (actionId === \"session:new\") {\r\n\t\t\tstartNewSession();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"overlay:provider\") {\r\n\t\t\topenOverlay(\"provider\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"overlay:model\") {\r\n\t\t\topenOverlay(\"model\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"overlay:session\") {\r\n\t\t\topenOverlay(\"session\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"command-menu\") {\r\n\t\t\tsetComposerValue(\"/\");\r\n\t\t\tcomposerRef?.setText?.(\"/\");\r\n\t\t\tcomposerRef?.focus();\r\n\t\t\tsetFocusRegion(\"composer\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"provider:add\") {\r\n\t\t\topenProviderAdd();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"provider:\")) {\r\n\t\t\tconst profile = profiles().find((item) => item.id === actionId.slice(9));\r\n\t\t\tif (!profile) return;\r\n\t\t\tconst nextModel = selection().profileId === profile.id ? selection().modelId ?? profile.models[0]?.id : profile.models[0]?.id;\r\n\t\t\tprops.profileService.setActiveSelection(profile.id, nextModel);\r\n\t\t\treloadProviderState();\r\n\t\t\tif (currentSession()) {\r\n\t\t\t\tsessionHistory.updateSession(currentSession()!.id, {\r\n\t\t\t\t\tproviderProfileId: profile.id,\r\n\t\t\t\t\tproviderLabel: profile.label,\r\n\t\t\t\t\tmodelId: nextModel,\r\n\t\t\t\t});\r\n\t\t\t\tsetSessions(sessionHistory.listSessions());\r\n\t\t\t\tvoid runtime.syncSelection(currentSession()!.id, selectionForSession(currentSession()!));\r\n\t\t\t}\r\n\t\t\tpushChatMessage(currentSession()?.id ?? createdTransientSessionId(), {\r\n\t\t\t\tid: `provider:${profile.id}:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: `Provider switched to ${profile.label}${nextModel ? ` / ${nextModel}` : \"\"}`,\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t});\r\n\t\t\tcloseOverlay();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"model-provider:\")) {\r\n\t\t\tconst profileId = actionId.slice(\"model-provider:\".length);\r\n\t\t\tsetModelPickerProfileId(profileId);\r\n\t\t\tsetOverlay(\"model\");\r\n\t\t\tsetOverlayIndex(0);\r\n\t\t\tsetFocusRegion(\"overlay\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"model:\")) {\r\n\t\t\tconst payload = actionId.slice(6);\r\n\t\t\tconst separator = payload.indexOf(\":\");\r\n\t\t\tconst profileId = separator === -1 ? selection().profileId ?? activeProfile()?.id : payload.slice(0, separator);\r\n\t\t\tconst modelId = separator === -1 ? payload : payload.slice(separator + 1);\r\n\t\t\tconst profile = profiles().find((item) => item.id === profileId);\r\n\t\t\tif (!profile) return;\r\n\t\t\tprops.profileService.setActiveSelection(profile.id, modelId);\r\n\t\t\treloadProviderState();\r\n\t\t\tif (currentSession()) {\r\n\t\t\t\tsessionHistory.updateSession(currentSession()!.id, {\r\n\t\t\t\t\tproviderProfileId: profile.id,\r\n\t\t\t\t\tproviderLabel: profile.label,\r\n\t\t\t\t\tmodelId,\r\n\t\t\t\t});\r\n\t\t\t\tsetSessions(sessionHistory.listSessions());\r\n\t\t\t\tvoid runtime.syncSelection(currentSession()!.id, selectionForSession(currentSession()!));\r\n\t\t\t}\r\n\t\t\tpushChatMessage(currentSession()?.id ?? createdTransientSessionId(), {\r\n\t\t\t\tid: `model:${modelId}:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: `Model switched to ${profile.label} / ${modelId}`,\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t});\r\n\t\t\tcloseOverlay();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"session:\")) {\r\n\t\t\tactivateSession(actionId.slice(8));\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction createdTransientSessionId(): string {\r\n\t\tconst current = currentSession();\r\n\t\tif (current) return current.id;\r\n\t\tconst created = sessionHistory.createSession({\r\n\t\t\ttitle: \"Transient chat\",\r\n\t\t\tsummary: \"Temporary chat session created while initializing.\",\r\n\t\t\tstate: \"active\",\r\n\t\t\tproviderProfileId: activeProfile()?.id,\r\n\t\t\tproviderLabel: activeProfile()?.label,\r\n\t\t\tmodelId: activeModel(),\r\n\t\t});\r\n\t\tsetSessions(sessionHistory.listSessions());\r\n\t\tsetActiveSessionId(created.id);\r\n\t\tensureSessionTranscript(created.id);\r\n\t\treturn created.id;\r\n\t}\r\n\r\n\tconst topStatus = createMemo(() => {\r\n\t\tconst profile = activeProfile();\r\n\t\tconst runtimeState = currentRuntimeState();\r\n\t\tif (!profile) return runtimeState.label;\r\n\t\treturn `${profile.label} · ${activeModel() ?? \"no model\"} · ${runtimeState.label}`;\r\n\t});\r\n\r\n\tconst sidebarSummary = createMemo(() => {\r\n\t\tif (!shellReady()) return \"Complete onboarding to connect a provider.\";\r\n\t\treturn activeProfile()?.baseUrl ?? \"Provider ready.\";\r\n\t});\r\n\r\n\tfunction runtimeStatusColor(state: RuntimeSessionState): string {\r\n\t\tswitch (runtimeStateTone(state)) {\r\n\t\t\tcase \"accent\":\r\n\t\t\t\treturn theme.accent;\r\n\t\t\tcase \"warning\":\r\n\t\t\t\treturn theme.warning;\r\n\t\t\tcase \"danger\":\r\n\t\t\t\treturn theme.danger;\r\n\t\t\tcase \"success\":\r\n\t\t\t\treturn theme.success;\r\n\t\t\tcase \"muted\":\r\n\t\t\t\treturn theme.muted;\r\n\t\t}\r\n\t}\r\n\r\n\treturn (\r\n\t\t<box flexGrow={1} flexDirection=\"column\" backgroundColor={theme.background}>\r\n\t\t\t<box flexShrink={0} backgroundColor={theme.header} paddingLeft={1} paddingRight={1} paddingTop={1} paddingBottom={1} flexDirection=\"row\" justifyContent=\"space-between\" gap={1}>\r\n\t\t\t\t<box flexDirection=\"row\" gap={1} minWidth={0} flexGrow={1}>\r\n\t\t\t\t\t<text fg={theme.accentStrong}>{LOGO}</text>\r\n\t\t\t\t\t<text fg={theme.text}>{truncate(currentSession()?.title ?? \"WEPsCLI\", 28)}</text>\r\n\t\t\t\t</box>\r\n\t\t\t\t<box flexDirection=\"row\" gap={1} alignItems=\"center\">\r\n\t\t\t\t\t{currentRuntimeState().interruptible ? (\r\n\t\t\t\t\t\t<box backgroundColor={theme.danger} paddingLeft={1} paddingRight={1} onMouseUp={() => void abortActiveRequest()}>\r\n\t\t\t\t\t\t\t<text fg={theme.background}>Stop</text>\r\n\t\t\t\t\t\t</box>\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t\t<text fg={runtimeStatusColor(currentRuntimeState())}>{truncate(topStatus(), 36)}</text>\r\n\t\t\t\t</box>\r\n\t\t\t</box>\r\n\r\n\t\t\t<box flexGrow={1} minHeight={0} flexDirection=\"row\" gap={1} paddingLeft={1} paddingRight={1} paddingTop={1}>\r\n\t\t\t\t<TranscriptPanel\r\n\t\t\t\t\tmessages={currentMessages()}\r\n\t\t\t\t\tactiveModelLabel={`${activeProfile()?.label ?? \"none\"} / ${activeModel() ?? \"none\"}`}\r\n\t\t\t\t\twidth={viewport().width}\r\n\t\t\t\t\tscrollRef={(ref) => {\r\n\t\t\t\t\t\ttranscriptScroll = ref as typeof transcriptScroll;\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonToggleMessage={(messageId) => toggleTranscriptMessage(currentSession()!.id, messageId)}\r\n\t\t\t\t/>\r\n\t\t\t</box>\r\n\r\n\t\t\t<ChatComposer\n\t\t\t\tfocused={focusRegion() === \"composer\"}\n\t\t\t\tvalue={composerValue()}\n\t\t\t\tproviderLabel={activeProfile()?.label ?? \"No provider\"}\n\t\t\t\tmodelLabel={activeModel() ?? \"No model\"}\n\t\t\t\tmodeLabel={activeShellMode().composerLabel}\n\t\t\t\tmodeTone={activeShellMode().tone}\n\t\t\t\tinputRef={(ref) => {\n\t\t\t\t\tcomposerRef = ref;\n\t\t\t\t}}\n\t\t\t\tonAction={activateAction}\n\t\t\t\tonFocus={() => setFocusRegion(\"composer\")}\n\t\t\t\tonInput={(value) => setComposerValue(value)}\n\t\t\t\tonModeClick={() => applyShellMode(nextShellMode(shellMode()))}\n\t\t\t\tonSubmit={handleComposerSubmit}\n\t\t\t\tonSelectSlashCommand={runSlashCommand}\n\t\t\t/>\n\r\n\t\t\t{overlay() ? (\r\n\t\t\t\t<OverlayPicker\r\n\t\t\t\t\ttitle={overlayTitle(overlay())}\r\n\t\t\t\t\tdescription={overlayDescription(overlay())}\r\n\t\t\t\t\toptions={overlayOptions()}\r\n\t\t\t\t\tselectedIndex={overlayIndex()}\r\n\t\t\t\t\tonClose={closeOverlay}\r\n\t\t\t\t\tonSelect={(id, index) => {\r\n\t\t\t\t\t\tsetOverlayIndex(index);\r\n\t\t\t\t\t\tactivateAction(id);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t) : null}\r\n\r\n\t\t\t{activeApproval() ? (\r\n\t\t\t\t<ApprovalOverlay\r\n\t\t\t\t\trequest={activeApproval()!}\r\n\t\t\t\t\tselectedIndex={approvalDecisionIndex()}\r\n\t\t\t\t\tonSelectIndex={setApprovalDecisionIndex}\r\n\t\t\t\t\tonResolve={resolveActiveApproval}\r\n\t\t\t\t/>\r\n\t\t\t) : null}\r\n\r\n\t\t\t{providerAddFlow.render()}\r\n\r\n\t\t\t<box flexShrink={0} paddingLeft={1} paddingRight={1} paddingBottom={0} paddingTop={0} flexDirection=\"row\">\r\n\t\t\t\t<text fg={theme.muted}>{truncate(getAgentDir(), 36)}</text>\r\n\t\t\t</box>\r\n\t\t</box>\r\n\t);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useRenderer","useTerminalDimensions","createEffect","createMemo","createSignal","onMount","SessionHistoryService","getAgentDir","ApprovalOverlay","WepsAgentRuntime","writeShellDebugLog","useShellKeyboard","getSessionApprovalRequest","nextFocusRegionForSession","createSkillAddFlow","formatInstalledSkillsSummary","listInstalledSkills","createShellPromptController","buildSkillSlashCommands","createIdleRuntimeState","runtimeStatusColor","getShellMode","nextShellMode","shellModeSwitchMessage","wepscliShellTheme","theme","formatTimestamp","INITIAL_SESSIONS","overlayDescription","overlayTitle","truncate","createProviderAddFlow","appendSessionMessage","insertSessionMessageBefore","patchSessionMessage","toggleSessionMessage","toggleSessionMessageState","TranscriptPanel","ChatComposer","OverlayPicker","LOGO","WEPSCLIShellApp","props","renderer","dimensions","sessionHistory","focusRegion","setFocusRegionState","overlay","setOverlay","undefined","profiles","setProfiles","profileService","listProfiles","selection","setSelection","getActiveSelection","overlayIndex","setOverlayIndex","modelPickerProfileId","setModelPickerProfileId","profileId","sessions","setSessions","ensureSeed","composerValue","setComposerValue","shellMode","setShellMode","activeSessionId","setActiveSessionId","messagesBySession","setMessagesBySession","runtimeStateBySession","setRuntimeStateBySession","approvalRequests","setApprovalRequests","approvalDecisionIndex","setApprovalDecisionIndex","skillSlashCommands","setSkillSlashCommands","runtime","appendMessage","sessionId","message","appendTranscriptMessage","insertMessageBefore","beforeMessageId","insertTranscriptMessageBefore","replaceMessages","messages","replaceTranscriptMessages","patchMessage","messageId","patch","patchTranscriptMessage","openApproval","_sessionId","request","openApprovalRequest","closeApproval","requestId","closeApprovalRequest","updateRuntimeState","state","updateSessionBinding","binding","persistRuntimeSessionBinding","composerRef","transcriptScroll","closed","transcriptScrollTimer","providerAddFlow","onCreated","profile","modelId","reloadProviderState","currentSession","updateSession","id","providerProfileId","providerLabel","label","listSessions","syncSelection","pushChatMessage","createdTransientSessionId","Date","now","role","content","time","toLocaleTimeString","hour","minute","onClose","setFocusRegion","skillAddFlow","onInstalled","skill","targetDir","diagnostics","session","warnings","filter","diagnostic","type","length","reloaded","reload","selectionForSession","runtimeSessionFile","reloadSkillSlashCommands","name","kind","viewport","width","height","activeShellMode","activeProfile","find","activeModel","models","currentId","list","item","currentMessages","currentRuntimeState","activeApproval","overlayOptions","map","description","family","lastValidationStatus","badge","model","title","updatedAt","summary","setTimeout","focus","setMode","syncActiveSelectionFromSession","ensureSessionTranscript","loadSession","overlayOptionsLength","hasActiveApproval","Boolean","providerAddFlowActive","isActive","providerAddFlowPickerStep","isPickerStep","skillAddFlowActive","value","exitShell","abortActiveRequest","resolveActiveApproval","updater","providerAddBack","back","providerAddMoveSelection","delta","moveSelection","providerAddConfirmSelection","confirmSelection","closeSkillAddFlow","close","closeOverlay","activateOverlaySelection","target","activateAction","applyNextShellMode","applyShellMode","applyMode","modeId","cycleFocus","clearTimeout","dispose","setTerminalTitle","destroy","onExit","requestRender","cancelTranscriptAutoScroll","scheduleTranscriptScrollToBottom","isDestroyed","scrollTo","scrollHeight","result","skills","current","aborted","abort","compactCurrentSession","compact","nextMode","toolName","decision","resolveApproval","region","blur","order","index","indexOf","openOverlay","activeProviderId","Math","max","findIndex","openProviderAdd","open","openSkillAdd","initial","slice","next","toggleTranscriptMessage","existing","setActiveSelection","activateSession","markActive","startNewSession","provider","created","createSession","JSON","stringify","updatePromptSession","trimmed","sessionSelection","lastPrompt","reloadCurrentSessionResources","promptController","pushSystemMessage","setComposerText","setText","focusComposer","setFocusRegionComposer","runtimePrompt","text","prompt","getCurrentMode","getStatusSummary","join","showSkillsSummary","getAdditionalSlashCommands","actionId","startsWith","nextModel","payload","separator","topStatus","_el$","_$createElement","_el$2","_el$3","_el$4","_el$6","_el$7","_el$8","_el$9","_el$0","_el$1","_$insertNode","_$setProp","_$createTextNode","_$insert","_c$","_$memo","interruptible","_el$10","_el$11","_$effect","_p$","_v$7","danger","_v$8","background","e","t","_$createComponent","activeModelLabel","scrollRef","ref","onToggleMessage","focused","modelLabel","modeLabel","composerLabel","modeTone","tone","inputRef","onAction","onFocus","onInput","onModeClick","onSubmit","handleComposerSubmit","onSelectSlashCommand","runSlashCommand","slashCommands","_c$2","options","selectedIndex","onSelect","_c$3","onSelectIndex","onResolve","render","_v$","_v$2","header","_v$3","accentStrong","_v$4","_v$5","_v$6","muted","a","o","i","n"],"sources":["shell-app.tsx"],"sourcesContent":["import { useRenderer, useTerminalDimensions } from \"@opentui/solid\";\nimport { createEffect, createMemo, createSignal, onMount } from \"solid-js\";\nimport type { ProviderProfile, ProviderProfileService } from \"../provider-profiles/index.js\";\r\nimport { SessionHistoryService } from \"../session-history/session-history-service.js\";\nimport { getAgentDir } from \"../config.js\";\nimport { ApprovalOverlay } from \"./approval-overlay.js\";\nimport { WepsAgentRuntime, type RuntimeSelection } from \"./agent-runtime.js\";\nimport { writeShellDebugLog } from \"./debug-log.js\";\nimport { useShellKeyboard } from \"./shell-keyboard.js\";\nimport { getSessionApprovalRequest, nextFocusRegionForSession } from \"./session-consistency.js\";\nimport { createSkillAddFlow } from \"../skills/skill-add-flow.js\";\nimport { formatInstalledSkillsSummary, listInstalledSkills } from \"../skills/skill-service.js\";\nimport { createShellPromptController } from \"./shell-prompt-controller.js\";\nimport { buildSkillSlashCommands } from \"./skill-commands.js\";\nimport { createIdleRuntimeState, type RuntimeSessionState } from \"./runtime-status.js\";\nimport { runtimeStatusColor } from \"./shell-status.js\";\nimport { getShellMode, nextShellMode, shellModeSwitchMessage, type ShellModeId } from \"./shell-modes.js\";\nimport { wepscliShellTheme as theme } from \"./theme.js\";\nimport type { ToolApprovalDecision, ToolApprovalRequest } from \"./tool-approval.js\";\nimport type { OverlayKind, OverlayOption, ShellFocus, SlashCommandItem } from \"./types.js\";\nimport { formatTimestamp, INITIAL_SESSIONS, overlayDescription, overlayTitle, truncate } from \"./helpers.js\";\nimport { createProviderAddFlow } from \"./provider-add-flow.js\";\r\nimport {\r\n\tappendSessionMessage,\r\n\tinsertSessionMessageBefore,\r\n\tpatchSessionMessage,\r\n\ttoggleSessionMessage as toggleSessionMessageState,\r\n\ttype TranscriptMessagePatch,\r\n} from \"./transcript-state.js\";\r\nimport { TranscriptPanel } from \"./transcript-panel.js\";\r\nimport {\r\n\tChatComposer,\r\n\tOverlayPicker,\r\n\ttype ChatMessage,\r\n\ttype ComposerInputRef,\r\n} from \"./chat-components.js\";\r\nconst LOGO = \"WEPsCLI\";\nexport function WEPSCLIShellApp(props: { profileService: ProviderProfileService; onExit: () => void }) {\n\tconst renderer = useRenderer();\r\n\tconst dimensions = useTerminalDimensions();\r\n\tconst sessionHistory = new SessionHistoryService();\n\tconst [focusRegion, setFocusRegionState] = createSignal<ShellFocus>(\"composer\");\n\tconst [overlay, setOverlay] = createSignal<OverlayKind | undefined>(undefined);\r\n\tconst [profiles, setProfiles] = createSignal<ProviderProfile[]>(props.profileService.listProfiles());\r\n\tconst [selection, setSelection] = createSignal(props.profileService.getActiveSelection());\r\n\tconst [overlayIndex, setOverlayIndex] = createSignal(0);\r\n\tconst [modelPickerProfileId, setModelPickerProfileId] = createSignal<string | undefined>(selection().profileId);\r\n\tconst [sessions, setSessions] = createSignal(sessionHistory.ensureSeed(INITIAL_SESSIONS));\r\n\tconst [composerValue, setComposerValue] = createSignal(\"\");\r\n\tconst [shellMode, setShellMode] = createSignal<ShellModeId>(\"agent\");\r\n\tconst [activeSessionId, setActiveSessionId] = createSignal<string | undefined>(undefined);\r\n\tconst [messagesBySession, setMessagesBySession] = createSignal<Record<string, ChatMessage[]>>({});\n\tconst [runtimeStateBySession, setRuntimeStateBySession] = createSignal<Record<string, RuntimeSessionState>>({});\n\tconst [approvalRequests, setApprovalRequests] = createSignal<ToolApprovalRequest[]>([]);\n\tconst [approvalDecisionIndex, setApprovalDecisionIndex] = createSignal(0);\n\tconst [skillSlashCommands, setSkillSlashCommands] = createSignal<SlashCommandItem[]>([]);\n\tconst runtime = new WepsAgentRuntime(props.profileService, {\n\t\tappendMessage: (sessionId, message) => appendTranscriptMessage(sessionId, message),\r\n\t\tinsertMessageBefore: (sessionId, beforeMessageId, message) => insertTranscriptMessageBefore(sessionId, beforeMessageId, message),\r\n\t\treplaceMessages: (sessionId, messages) => replaceTranscriptMessages(sessionId, messages),\r\n\t\tpatchMessage: (sessionId, messageId, patch) => patchTranscriptMessage(sessionId, messageId, patch),\r\n\t\topenApproval: (_sessionId, request) => openApprovalRequest(request),\r\n\t\tcloseApproval: (_sessionId, requestId) => closeApprovalRequest(requestId),\r\n\t\tupdateRuntimeState: (sessionId, state) => updateRuntimeState(sessionId, state),\r\n\t\tupdateSessionBinding: (sessionId, binding) => persistRuntimeSessionBinding(sessionId, binding),\r\n\t});\n\tlet composerRef: ComposerInputRef | undefined;\n\tlet transcriptScroll: { scrollTo(position: number): void; scrollHeight: number; isDestroyed?: boolean } | undefined;\n\tlet closed = false;\n\tlet transcriptScrollTimer: ReturnType<typeof setTimeout> | undefined;\n\tconst providerAddFlow = createProviderAddFlow({\n\t\tprofileService: props.profileService,\n\t\tonCreated: ({ profile, modelId }) => {\n\t\t\treloadProviderState();\r\n\t\t\tif (currentSession()) {\r\n\t\t\t\tsessionHistory.updateSession(currentSession()!.id, {\r\n\t\t\t\t\tproviderProfileId: profile.id,\r\n\t\t\t\t\tproviderLabel: profile.label,\r\n\t\t\t\t\tmodelId,\r\n\t\t\t\t});\r\n\t\t\t\tsetSessions(sessionHistory.listSessions());\r\n\t\t\t\tvoid runtime.syncSelection(currentSession()!.id, { profileId: profile.id, modelId });\r\n\t\t\t}\r\n\t\t\tpushChatMessage(currentSession()?.id ?? createdTransientSessionId(), {\r\n\t\t\t\tid: `provider-add:${profile.id}:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: `Added provider ${profile.label} / ${modelId}`,\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t});\r\n\t\t},\n\t\tonClose: () => setFocusRegion(\"composer\"),\n\t});\n\tconst skillAddFlow = createSkillAddFlow({\n\t\tonInstalled: async ({ skill, targetDir, diagnostics }) => {\n\t\t\tconst session = currentSession();\n\t\t\tconst sessionId = session?.id ?? createdTransientSessionId();\n\t\t\tconst warnings = diagnostics.filter((diagnostic) => diagnostic.type === \"warning\").length;\n\t\t\tconst reloaded = session ? await runtime.reload(session.id, selectionForSession(session), { runtimeSessionFile: session.runtimeSessionFile }) : false;\n\t\t\tawait reloadSkillSlashCommands();\n\t\t\tpushChatMessage(sessionId, { id: `skill-add:${skill.name}:${Date.now()}`, role: \"system\", content: reloaded ? `Installed skill ${skill.name} and reloaded the current session.\\nPath: ${targetDir}${warnings > 0 ? `\\nWarnings: ${warnings}` : \"\"}` : `Installed skill ${skill.name}.\\nPath: ${targetDir}${warnings > 0 ? `\\nWarnings: ${warnings}` : \"\"}`, time: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }), kind: \"status\" });\n\t\t},\n\t\tonClose: () => setFocusRegion(\"composer\"),\n\t});\n\tconst viewport = createMemo(() => ({ width: dimensions().width || 120, height: dimensions().height || 32 }));\n\tconst activeShellMode = createMemo(() => getShellMode(shellMode()));\n\tconst activeProfile = createMemo(() => selection().profileId ? profiles().find((profile) => profile.id === selection().profileId) : profiles()[0]);\n\tconst activeModel = createMemo(() => selection().modelId ?? activeProfile()?.models[0]?.id);\n\tconst currentSession = createMemo(() => {\n\t\tconst currentId = activeSessionId(), list = sessions();\n\t\treturn currentId ? list.find((item) => item.id === currentId) : list.find((item) => item.state === \"active\") ?? list[0];\n\t});\n\tconst currentMessages = createMemo(() => currentSession() ? messagesBySession()[currentSession()!.id] ?? [] : []);\n\tconst currentRuntimeState = createMemo(() => currentSession() ? runtimeStateBySession()[currentSession()!.id] ?? createIdleRuntimeState() : createIdleRuntimeState());\n\tconst activeApproval = createMemo(() => getSessionApprovalRequest(approvalRequests(), currentSession()?.id));\n\tconst overlayOptions = createMemo<OverlayOption[]>(() => {\n\t\tswitch (overlay()) {\r\n\t\t\tcase \"provider\":\r\n\t\t\t\treturn [\r\n\t\t\t\t\t...profiles().map((profile) => ({\r\n\t\t\t\t\t\tid: `provider:${profile.id}`,\r\n\t\t\t\t\t\tlabel: profile.label,\r\n\t\t\t\t\t\tdescription: `${profile.family} | ${profile.models.length} model${profile.models.length === 1 ? \"\" : \"s\"} | ${profile.lastValidationStatus}`,\r\n\t\t\t\t\t\tbadge: selection().profileId === profile.id ? \"ACTIVE\" : undefined,\r\n\t\t\t\t\t})),\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tid: \"provider:add\",\r\n\t\t\t\t\t\tlabel: \"Add provider\",\r\n\t\t\t\t\t\tdescription: \"Create a new provider profile with a guided setup flow.\",\r\n\t\t\t\t\t\tbadge: \"NEW\",\r\n\t\t\t\t\t},\r\n\t\t\t\t];\r\n\t\t\tcase \"model-provider\":\r\n\t\t\t\treturn profiles().map((profile) => ({\r\n\t\t\t\t\tid: `model-provider:${profile.id}`,\r\n\t\t\t\t\tlabel: profile.label,\r\n\t\t\t\t\tdescription: `${profile.family} | ${profile.models.length} model${profile.models.length === 1 ? \"\" : \"s\"} available`,\r\n\t\t\t\t\tbadge: modelPickerProfileId() === profile.id ? \"OPEN\" : selection().profileId === profile.id ? \"ACTIVE\" : undefined,\r\n\t\t\t\t}));\r\n\t\t\tcase \"model\":\r\n\t\t\t\treturn (profiles().find((profile) => profile.id === modelPickerProfileId())?.models ?? []).map((model) => ({\r\n\t\t\t\t\tid: `model:${modelPickerProfileId()}:${model.id}`,\r\n\t\t\t\t\tlabel: model.id,\r\n\t\t\t\t\tdescription: `${model.family} | ${model.name}`,\r\n\t\t\t\t\tbadge: selection().profileId === modelPickerProfileId() && activeModel() === model.id ? \"CURRENT\" : undefined,\r\n\t\t\t\t}));\r\n\t\t\tcase \"session\":\r\n\t\t\t\treturn sessions().map((session) => ({\r\n\t\t\t\t\tid: `session:${session.id}`,\r\n\t\t\t\t\tlabel: session.title,\r\n\t\t\t\t\tdescription: `${session.state} | ${formatTimestamp(session.updatedAt)} | ${session.summary}`,\r\n\t\t\t\t\tbadge: session.id === currentSession()?.id ? \"OPEN\" : undefined,\r\n\t\t\t\t}));\r\n\t\t\tcase undefined:\r\n\t\t\t\treturn [];\r\n\t\t}\r\n\t});\n\tonMount(() => { writeShellDebugLog(`mounted chat shell profiles=${profiles().length} sessions=${sessionHistory.listSessions().length}`); void reloadSkillSlashCommands(); setTimeout(() => composerRef?.focus(), 10); });\n\tcreateEffect(() => { runtime.setMode(shellMode()); });\n\tcreateEffect(() => {\n\t\tconst session = currentSession();\n\t\tif (!session) {\n\t\t\twriteShellDebugLog(\"effect session=none messages=0\");\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (!activeSessionId()) {\r\n\t\t\tsetActiveSessionId(session.id);\r\n\t\t\tsyncActiveSelectionFromSession(session.id);\r\n\t\t}\r\n\t\tensureSessionTranscript(session.id);\r\n\t\tif (session.runtimeSessionFile) {\r\n\t\t\tvoid runtime.loadSession(session.id, selectionForSession(session), {\r\n\t\t\t\truntimeSessionFile: session.runtimeSessionFile,\r\n\t\t\t});\r\n\t\t}\n\t\twriteShellDebugLog(`effect session=${session.id} messages=${currentMessages().length}`);\n\t});\n\tuseShellKeyboard(\n\t\t{\n\t\t\tfocusRegion,\n\t\t\toverlay,\n\t\t\toverlayIndex,\n\t\t\toverlayOptionsLength: () => overlayOptions().length,\n\t\t\thasActiveApproval: () => Boolean(activeApproval()),\n\t\t\tapprovalDecisionIndex,\n\t\t\tproviderAddFlowActive: () => providerAddFlow.isActive(),\n\t\t\tproviderAddFlowPickerStep: () => providerAddFlow.isPickerStep(),\n\t\t\tskillAddFlowActive: () => skillAddFlow.isActive(),\n\t\t\tcomposerValue: () => composerRef?.value ?? composerValue(),\n\t\t},\n\t\t{\n\t\t\texitShell,\n\t\t\tabortActiveRequest,\n\t\t\tresolveActiveApproval,\n\t\t\tsetApprovalDecisionIndex: (updater) => setApprovalDecisionIndex(updater),\n\t\t\tproviderAddBack: () => providerAddFlow.back(),\n\t\t\tproviderAddMoveSelection: (delta) => providerAddFlow.moveSelection(delta),\n\t\t\tproviderAddConfirmSelection: () => providerAddFlow.confirmSelection(),\n\t\t\tcloseSkillAddFlow: () => skillAddFlow.close(),\n\t\t\tcloseOverlay,\n\t\t\tsetOverlayIndex: (updater) => setOverlayIndex(updater),\n\t\t\tactivateOverlaySelection: () => {\n\t\t\t\tconst target = overlayOptions()[overlayIndex()];\n\t\t\t\tif (target) {\n\t\t\t\t\tactivateAction(target.id);\n\t\t\t\t}\n\t\t\t},\n\t\t\tapplyNextShellMode: () => applyShellMode(nextShellMode(shellMode())),\n\t\t\tapplyMode: (modeId) => applyShellMode(modeId),\n\t\t\tcycleFocus,\n\t\t\tsetFocusRegion,\n\t\t},\n\t);\n\tfunction exitShell(): void {\n\t\tif (closed) return;\r\n\t\tclosed = true;\r\n\t\twriteShellDebugLog(\"exit shell\");\r\n\t\tif (transcriptScrollTimer) {\r\n\t\t\tclearTimeout(transcriptScrollTimer);\r\n\t\t\ttranscriptScrollTimer = undefined;\r\n\t\t}\r\n\t\truntime.dispose();\r\n\t\trenderer.setTerminalTitle(\"\");\r\n\t\trenderer.destroy();\r\n\t\tprops.onExit();\n\t}\n\tfunction requestRender(): void {\n\t\t(renderer as { requestRender?: () => void }).requestRender?.();\n\t}\n\tfunction cancelTranscriptAutoScroll(): void {\n\t\tif (!transcriptScrollTimer) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tclearTimeout(transcriptScrollTimer);\r\n\t\ttranscriptScrollTimer = undefined;\r\n\t}\n\tfunction scheduleTranscriptScrollToBottom(): void {\n\t\tcancelTranscriptAutoScroll();\r\n\t\ttranscriptScrollTimer = setTimeout(() => {\r\n\t\t\ttranscriptScrollTimer = undefined;\r\n\t\t\tif (!transcriptScroll || transcriptScroll.isDestroyed) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\ttranscriptScroll.scrollTo(transcriptScroll.scrollHeight);\r\n\t\t}, 50);\n\t}\n\tfunction reloadProviderState(): void {\n\t\tsetProfiles(props.profileService.listProfiles());\n\t\tsetSelection(props.profileService.getActiveSelection());\n\t}\n\tasync function reloadSkillSlashCommands(): Promise<void> {\n\t\tconst result = await listInstalledSkills();\n\t\tsetSkillSlashCommands(buildSkillSlashCommands(result.skills));\n\t}\n\tfunction updateRuntimeState(sessionId: string, state: RuntimeSessionState): void {\n\t\tsetRuntimeStateBySession((current) => ({\n\t\t\t...current,\n\t\t\t[sessionId]: state,\n\t\t}));\n\t\trequestRender();\n\t}\n\tasync function abortActiveRequest(): Promise<void> {\n\t\tconst session = currentSession();\r\n\t\tif (!session) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst aborted = await runtime.abort(session.id);\r\n\t\tif (!aborted) {\r\n\t\t\tpushChatMessage(session.id, {\r\n\t\t\t\tid: `${session.id}:system:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: \"No active request to interrupt.\",\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\tkind: \"status\",\r\n\t\t\t});\n\t\t}\n\t}\n\tasync function compactCurrentSession(): Promise<void> {\n\t\tconst session = currentSession();\r\n\t\tif (!session) {\r\n\t\t\tconst sessionId = createdTransientSessionId();\r\n\t\t\tpushChatMessage(sessionId, {\r\n\t\t\t\tid: `${sessionId}:system:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: \"No active session is ready to compact yet.\",\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\tkind: \"status\",\r\n\t\t\t});\r\n\t\t\treturn;\n\t\t}\n\t\tawait runtime.compact(session.id, selectionForSession(session), {\n\t\t\truntimeSessionFile: session.runtimeSessionFile,\n\t\t});\n\t}\n\tfunction applyShellMode(nextMode: ShellModeId): void {\n\t\tif (shellMode() === nextMode) {\r\n\t\t\tconst sessionId = currentSession()?.id ?? createdTransientSessionId();\r\n\t\t\tpushChatMessage(sessionId, {\r\n\t\t\t\tid: `${sessionId}:system:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: `Already in ${getShellMode(nextMode).label} mode.`,\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\tkind: \"status\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\t\tsetShellMode(nextMode);\n\t\tconst sessionId = currentSession()?.id ?? createdTransientSessionId();\r\n\t\tpushChatMessage(sessionId, {\r\n\t\t\tid: `${sessionId}:system:${Date.now()}`,\r\n\t\t\trole: \"system\",\r\n\t\t\tcontent: shellModeSwitchMessage(nextMode),\r\n\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\tkind: \"status\",\r\n\t\t});\r\n\t\tcomposerRef?.focus();\r\n\t\tsetFocusRegion(\"composer\");\n\t\trequestRender();\n\t}\n\tfunction openApprovalRequest(request: ToolApprovalRequest): void {\n\t\twriteShellDebugLog(`approval open tool=${request.toolName} id=${request.id}`);\n\t\tsetApprovalRequests((current) => [...current, request]);\n\t\tif (currentSession()?.id === request.sessionId) {\n\t\t\tsetOverlay(undefined);\n\t\t\tsetApprovalDecisionIndex(0);\n\t\t\tsetFocusRegion(\"overlay\");\n\t\t}\n\t\trequestRender();\n\t}\n\tfunction closeApprovalRequest(requestId: string): void {\n\t\twriteShellDebugLog(`approval close id=${requestId}`);\r\n\t\tsetApprovalRequests((current) => current.filter((request) => request.id !== requestId));\r\n\t\tsetApprovalDecisionIndex(0);\r\n\t\tif (!providerAddFlow.isActive() && !overlay() && approvalRequests().filter((request) => request.id !== requestId).length === 0) {\r\n\t\t\tsetFocusRegion(\"composer\");\r\n\t\t}\n\t\trequestRender();\n\t}\n\tfunction resolveActiveApproval(decision: ToolApprovalDecision): void {\n\t\tconst request = activeApproval();\r\n\t\tif (!request) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\twriteShellDebugLog(`approval decision tool=${request.toolName} decision=${decision}`);\n\t\truntime.resolveApproval(request.id, decision);\n\t}\n\tfunction setFocusRegion(region: ShellFocus): void {\n\t\tsetFocusRegionState(region);\r\n\t\tif (region === \"composer\") {\r\n\t\t\tsetTimeout(() => composerRef?.focus(), 0);\r\n\t\t\treturn;\r\n\t\t}\n\t\tcomposerRef?.blur();\n\t}\n\tfunction cycleFocus(): void {\n\t\tif (activeApproval() || overlay()) {\r\n\t\t\tsetFocusRegion(\"overlay\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst order: ShellFocus[] = [\"main\", \"composer\"];\r\n\t\tconst index = order.indexOf(focusRegion());\n\t\tsetFocusRegion(order[(index + 1) % order.length] ?? \"composer\");\n\t}\n\tfunction openOverlay(kind: OverlayKind): void {\n\t\tif (kind === \"model\" && profiles().length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (kind === \"model\") {\r\n\t\t\tconst activeProviderId = selection().profileId ?? profiles()[0]?.id;\r\n\t\t\tif (!activeProviderId) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tsetModelPickerProfileId(activeProviderId);\r\n\t\t\tif (profiles().length > 1) {\r\n\t\t\t\tsetOverlay(\"model-provider\");\r\n\t\t\t\tsetOverlayIndex(Math.max(0, profiles().findIndex((profile) => profile.id === activeProviderId)));\r\n\t\t\t\tsetFocusRegion(\"overlay\");\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\t\tsetOverlay(kind);\r\n\t\tsetOverlayIndex(0);\r\n\t\tsetFocusRegion(\"overlay\");\r\n\t}\r\n\r\n\tfunction closeOverlay(): void {\n\t\tsetOverlay(undefined);\n\t\tsetFocusRegion(\"composer\");\n\t}\n\tfunction openProviderAdd(): void {\n\t\tsetOverlay(undefined);\n\t\tskillAddFlow.close();\n\t\tproviderAddFlow.open();\n\t\tsetFocusRegion(\"overlay\");\n\t}\n\tfunction openSkillAdd(): void {\n\t\tsetOverlay(undefined);\n\t\tif (providerAddFlow.isActive()) {\n\t\t\tproviderAddFlow.close();\n\t\t}\n\t\tskillAddFlow.open();\n\t\tsetFocusRegion(\"overlay\");\n\t}\n\tfunction ensureSessionTranscript(sessionId: string): void {\n\t\tsetMessagesBySession((current) => {\r\n\t\t\tif (current[sessionId]) return current;\r\n\t\t\tconst session = sessions().find((item) => item.id === sessionId);\r\n\t\t\tconst initial: ChatMessage[] = [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: `${sessionId}:system:0`,\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: session ? `Opened ${session.title}` : \"Opened session\",\r\n\t\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\t},\r\n\t\t\t];\r\n\t\t\treturn { ...current, [sessionId]: initial };\r\n\t\t});\r\n\t\tsetRuntimeStateBySession((current) => (current[sessionId] ? current : { ...current, [sessionId]: createIdleRuntimeState() }));\r\n\t\trequestRender();\n\t\tscheduleTranscriptScrollToBottom();\n\t}\n\tfunction appendTranscriptMessage(sessionId: string, message: ChatMessage): void {\n\t\tsetMessagesBySession((current) => appendSessionMessage(current, sessionId, message));\r\n\t\trequestRender();\n\t\tscheduleTranscriptScrollToBottom();\n\t}\n\tfunction replaceTranscriptMessages(sessionId: string, messages: ChatMessage[]): void {\n\t\tsetMessagesBySession((current) => ({\r\n\t\t\t...current,\r\n\t\t\t[sessionId]: messages.slice(-200),\r\n\t\t}));\r\n\t\trequestRender();\n\t\tscheduleTranscriptScrollToBottom();\n\t}\n\tfunction insertTranscriptMessageBefore(sessionId: string, beforeMessageId: string, message: ChatMessage): void {\n\t\tsetMessagesBySession((current) => insertSessionMessageBefore(current, sessionId, beforeMessageId, message));\r\n\t\trequestRender();\n\t\tscheduleTranscriptScrollToBottom();\n\t}\n\tfunction patchTranscriptMessage(sessionId: string, messageId: string, patch: TranscriptMessagePatch): void {\n\t\tsetMessagesBySession((current) => {\r\n\t\t\tconst next = patchSessionMessage(current, sessionId, messageId, patch);\r\n\t\t\treturn next.messagesBySession;\r\n\t\t});\r\n\t\trequestRender();\n\t\tscheduleTranscriptScrollToBottom();\n\t}\n\tfunction toggleTranscriptMessage(sessionId: string, messageId: string): void {\n\t\tcancelTranscriptAutoScroll();\r\n\t\tsetMessagesBySession((current) => toggleSessionMessageState(current, sessionId, messageId));\n\t\trequestRender();\n\t}\n\tfunction selectionForSession(session = currentSession()): RuntimeSelection {\n\t\treturn {\r\n\t\t\tprofileId: session?.providerProfileId ?? selection().profileId,\r\n\t\t\tmodelId: session?.modelId ?? selection().modelId,\n\t\t};\n\t}\n\tfunction persistRuntimeSessionBinding(sessionId: string, binding: { runtimeSessionFile?: string }): void {\n\t\tif (!binding.runtimeSessionFile) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst existing = sessions().find((session) => session.id === sessionId);\r\n\t\tif (existing?.runtimeSessionFile === binding.runtimeSessionFile) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tsessionHistory.updateSession(sessionId, {\r\n\t\t\truntimeSessionFile: binding.runtimeSessionFile,\r\n\t\t});\r\n\t\tsetSessions(sessionHistory.listSessions());\r\n\t}\r\n\r\n\tfunction syncActiveSelectionFromSession(sessionId: string): void {\r\n\t\tconst session = sessions().find((item) => item.id === sessionId);\r\n\t\tif (!session?.providerProfileId) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tconst profile = profiles().find((item) => item.id === session.providerProfileId);\r\n\t\tif (!profile) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tprops.profileService.setActiveSelection(profile.id, session.modelId ?? profile.models[0]?.id);\r\n\t\treloadProviderState();\r\n\t}\r\n\r\n\tfunction activateSession(sessionId: string): void {\n\t\tcancelTranscriptAutoScroll();\n\t\tif (providerAddFlow.isActive()) {\n\t\t\tproviderAddFlow.close();\n\t\t}\n\t\tif (skillAddFlow.isActive()) {\n\t\t\tskillAddFlow.close();\n\t\t}\n\t\tsetOverlay(undefined);\n\t\tsetOverlayIndex(0);\n\t\tsetApprovalDecisionIndex(0);\n\t\tsetActiveSessionId(sessionId);\n\t\tensureSessionTranscript(sessionId);\n\t\tsyncActiveSelectionFromSession(sessionId);\n\t\tconst session = sessions().find((item) => item.id === sessionId);\n\t\tif (session) {\n\t\t\tsessionHistory.markActive(sessionId);\n\t\t\tsetSessions(sessionHistory.listSessions());\n\t\t\tvoid runtime.syncSelection(sessionId, selectionForSession(session));\n\t\t\tif (session.runtimeSessionFile) {\n\t\t\t\tvoid runtime.loadSession(sessionId, selectionForSession(session), {\n\t\t\t\t\truntimeSessionFile: session.runtimeSessionFile,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tsetFocusRegion(nextFocusRegionForSession(sessionId, approvalRequests()));\n\t\tscheduleTranscriptScrollToBottom();\n\t}\n\r\n\tfunction startNewSession() {\r\n\t\tconst provider = activeProfile();\r\n\t\tconst created = sessionHistory.createSession({\r\n\t\t\ttitle: \"New WEPsCLI chat\",\r\n\t\t\tsummary: provider ? `Chat ready with ${provider.label}.` : \"Chat ready before provider selection.\",\r\n\t\t\tstate: \"active\",\r\n\t\t\tproviderProfileId: provider?.id,\r\n\t\t\tproviderLabel: provider?.label,\r\n\t\t\tmodelId: activeModel(),\r\n\t\t});\r\n\t\tsetSessions(sessionHistory.listSessions());\r\n\t\tsetActiveSessionId(created.id);\r\n\t\tensureSessionTranscript(created.id);\r\n\t\tsetMessagesBySession((current) => ({\r\n\t\t\t...current,\r\n\t\t\t[created.id]: [\r\n\t\t\t\t{\r\n\t\t\t\t\tid: `${created.id}:system:0`,\r\n\t\t\t\t\trole: \"system\",\r\n\t\t\t\t\tcontent: provider ? `Ready with ${provider.label}${activeModel() ? ` / ${activeModel()}` : \"\"}` : \"Connect a provider to start sending prompts.\",\r\n\t\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t\t},\r\n\t\t\t],\r\n\t\t}));\r\n\t\tsetComposerValue(\"\");\r\n\t\tcomposerRef?.focus();\r\n\t\tsetFocusRegion(\"composer\");\r\n\t\trequestRender();\r\n\t\tscheduleTranscriptScrollToBottom();\r\n\t\treturn created;\r\n\t}\r\n\r\n\tfunction pushChatMessage(sessionId: string, message: ChatMessage): void {\n\t\twriteShellDebugLog(`pushChatMessage session=${sessionId} role=${message.role} content=${JSON.stringify(message.content)}`);\n\t\tsetMessagesBySession((current) => {\n\t\t\tconst next = appendSessionMessage(current, sessionId, message);\n\t\t\twriteShellDebugLog(`pushChatMessage nextCount=${next[sessionId]?.length ?? 0}`);\n\t\t\treturn next;\n\t\t});\n\t\trequestRender();\n\t}\n\n\tfunction updatePromptSession(session: NonNullable<ReturnType<typeof currentSession>>, trimmed: string, sessionSelection: RuntimeSelection): void {\n\t\tsessionHistory.updateSession(session.id, {\n\t\t\ttitle: `Chat: ${truncate(trimmed, 24)}`,\n\t\t\tsummary: `Last prompt: ${truncate(trimmed, 60)}`,\n\t\t\tproviderProfileId: sessionSelection.profileId,\n\t\t\tproviderLabel: activeProfile()?.label,\n\t\t\tmodelId: sessionSelection.modelId,\n\t\t\tlastPrompt: trimmed,\n\t\t\tstate: \"active\",\n\t\t});\n\t\tsetSessions(sessionHistory.listSessions());\n\t}\n\n\tasync function reloadCurrentSessionResources(): Promise<void> {\n\t\tconst session = currentSession();\n\t\tif (!session) {\n\t\t\tpromptController.pushSystemMessage(createdTransientSessionId(), \"No active session is ready to reload yet.\");\n\t\t\treturn;\n\t\t}\n\t\tconst reloaded = await runtime.reload(session.id, selectionForSession(session), {\n\t\t\truntimeSessionFile: session.runtimeSessionFile,\n\t\t});\n\t\tawait reloadSkillSlashCommands();\n\t\tpromptController.pushSystemMessage(\n\t\t\tsession.id,\n\t\t\treloaded\n\t\t\t\t? \"Reloaded skills, prompts, and extensions for the current session.\"\n\t\t\t\t: \"Resource reload did not complete successfully.\",\n\t\t);\n\t}\n\n\tconst promptController = createShellPromptController({\n\t\tcurrentSession,\n\t\tstartNewSession,\n\t\tcreatedTransientSessionId,\n\t\tselectionForSession,\n\t\tensureSessionTranscript,\n\t\tupdatePromptSession,\n\t\tpushChatMessage,\n\t\tsetComposerValue,\n\t\tsetComposerText: (value) => composerRef?.setText?.(value),\n\t\tfocusComposer: () => composerRef?.focus(),\n\t\tsetFocusRegionComposer: () => setFocusRegion(\"composer\"),\n\t\trequestRender,\n\t\truntimePrompt: (sessionId, text, sessionSelection, runtimeSessionFile) => {\n\t\t\tvoid runtime.prompt(sessionId, text, sessionSelection, { runtimeSessionFile });\n\t\t},\n\t\treloadCurrentSessionResources,\n\t\topenSkillAdd,\n\t\topenOverlay,\n\t\topenProviderAdd,\n\t\tcompactCurrentSession,\n\t\tabortActiveRequest: () => {\n\t\t\tvoid abortActiveRequest();\n\t\t},\n\t\tapplyShellMode,\n\t\tgetCurrentMode: () => shellMode(),\n\t\tgetStatusSummary: () => {\n\t\t\tconst session = currentSession();\n\t\t\treturn [\"Current shell status:\", `Session: ${session?.title ?? \"none\"}`, `Mode: ${activeShellMode().label}`, `Provider: ${activeProfile()?.label ?? \"none\"}`, `Model: ${activeModel() ?? \"none\"}`, `Runtime: ${currentRuntimeState().label}`, `Agent dir: ${getAgentDir()}`].join(\"\\n\");\n\t\t},\n\t\tshowSkillsSummary: async () => {\n\t\t\tpromptController.pushSystemMessage(currentSession()?.id ?? createdTransientSessionId(), await formatInstalledSkillsSummary());\n\t\t},\n\t\tgetAdditionalSlashCommands: skillSlashCommands,\n\t});\n\r\n\tfunction activateAction(actionId: string): void {\r\n\t\tif (actionId === \"session:new\") {\r\n\t\t\tstartNewSession();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"overlay:provider\") {\r\n\t\t\topenOverlay(\"provider\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"overlay:model\") {\r\n\t\t\topenOverlay(\"model\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"overlay:session\") {\r\n\t\t\topenOverlay(\"session\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"command-menu\") {\r\n\t\t\tsetComposerValue(\"/\");\r\n\t\t\tcomposerRef?.setText?.(\"/\");\r\n\t\t\tcomposerRef?.focus();\r\n\t\t\tsetFocusRegion(\"composer\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId === \"provider:add\") {\r\n\t\t\topenProviderAdd();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"provider:\")) {\r\n\t\t\tconst profile = profiles().find((item) => item.id === actionId.slice(9));\r\n\t\t\tif (!profile) return;\r\n\t\t\tconst nextModel = selection().profileId === profile.id ? selection().modelId ?? profile.models[0]?.id : profile.models[0]?.id;\r\n\t\t\tprops.profileService.setActiveSelection(profile.id, nextModel);\r\n\t\t\treloadProviderState();\r\n\t\t\tif (currentSession()) {\r\n\t\t\t\tsessionHistory.updateSession(currentSession()!.id, {\r\n\t\t\t\t\tproviderProfileId: profile.id,\r\n\t\t\t\t\tproviderLabel: profile.label,\r\n\t\t\t\t\tmodelId: nextModel,\r\n\t\t\t\t});\r\n\t\t\t\tsetSessions(sessionHistory.listSessions());\r\n\t\t\t\tvoid runtime.syncSelection(currentSession()!.id, selectionForSession(currentSession()!));\r\n\t\t\t}\r\n\t\t\tpushChatMessage(currentSession()?.id ?? createdTransientSessionId(), {\r\n\t\t\t\tid: `provider:${profile.id}:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: `Provider switched to ${profile.label}${nextModel ? ` / ${nextModel}` : \"\"}`,\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t});\r\n\t\t\tcloseOverlay();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"model-provider:\")) {\r\n\t\t\tconst profileId = actionId.slice(\"model-provider:\".length);\r\n\t\t\tsetModelPickerProfileId(profileId);\r\n\t\t\tsetOverlay(\"model\");\r\n\t\t\tsetOverlayIndex(0);\r\n\t\t\tsetFocusRegion(\"overlay\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"model:\")) {\r\n\t\t\tconst payload = actionId.slice(6);\r\n\t\t\tconst separator = payload.indexOf(\":\");\r\n\t\t\tconst profileId = separator === -1 ? selection().profileId ?? activeProfile()?.id : payload.slice(0, separator);\r\n\t\t\tconst modelId = separator === -1 ? payload : payload.slice(separator + 1);\r\n\t\t\tconst profile = profiles().find((item) => item.id === profileId);\r\n\t\t\tif (!profile) return;\r\n\t\t\tprops.profileService.setActiveSelection(profile.id, modelId);\r\n\t\t\treloadProviderState();\r\n\t\t\tif (currentSession()) {\r\n\t\t\t\tsessionHistory.updateSession(currentSession()!.id, {\r\n\t\t\t\t\tproviderProfileId: profile.id,\r\n\t\t\t\t\tproviderLabel: profile.label,\r\n\t\t\t\t\tmodelId,\r\n\t\t\t\t});\r\n\t\t\t\tsetSessions(sessionHistory.listSessions());\r\n\t\t\t\tvoid runtime.syncSelection(currentSession()!.id, selectionForSession(currentSession()!));\r\n\t\t\t}\r\n\t\t\tpushChatMessage(currentSession()?.id ?? createdTransientSessionId(), {\r\n\t\t\t\tid: `model:${modelId}:${Date.now()}`,\r\n\t\t\t\trole: \"system\",\r\n\t\t\t\tcontent: `Model switched to ${profile.label} / ${modelId}`,\r\n\t\t\t\ttime: new Date().toLocaleTimeString(\"en-US\", { hour: \"2-digit\", minute: \"2-digit\" }),\r\n\t\t\t});\r\n\t\t\tcloseOverlay();\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (actionId.startsWith(\"session:\")) {\r\n\t\t\tactivateSession(actionId.slice(8));\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\tfunction createdTransientSessionId(): string {\r\n\t\tconst current = currentSession();\r\n\t\tif (current) return current.id;\r\n\t\tconst created = sessionHistory.createSession({\r\n\t\t\ttitle: \"Transient chat\",\r\n\t\t\tsummary: \"Temporary chat session created while initializing.\",\r\n\t\t\tstate: \"active\",\r\n\t\t\tproviderProfileId: activeProfile()?.id,\r\n\t\t\tproviderLabel: activeProfile()?.label,\r\n\t\t\tmodelId: activeModel(),\r\n\t\t});\r\n\t\tsetSessions(sessionHistory.listSessions());\r\n\t\tsetActiveSessionId(created.id);\r\n\t\tensureSessionTranscript(created.id);\r\n\t\treturn created.id;\r\n\t}\r\n\r\n\tconst topStatus = createMemo(() => `${activeProfile()?.label ?? \"none\"} · ${activeModel() ?? \"no model\"} · ${currentRuntimeState().label}`);\n\treturn (\n\t\t<box flexGrow={1} flexDirection=\"column\" backgroundColor={theme.background}>\r\n\t\t\t<box flexShrink={0} backgroundColor={theme.header} paddingLeft={1} paddingRight={1} paddingTop={1} paddingBottom={1} flexDirection=\"row\" justifyContent=\"space-between\" gap={1}>\r\n\t\t\t\t<box flexDirection=\"row\" gap={1} minWidth={0} flexGrow={1}>\r\n\t\t\t\t\t<text fg={theme.accentStrong}>{LOGO}</text>\r\n\t\t\t\t\t<text fg={theme.text}>{truncate(currentSession()?.title ?? \"WEPsCLI\", 28)}</text>\r\n\t\t\t\t</box>\r\n\t\t\t\t<box flexDirection=\"row\" gap={1} alignItems=\"center\">\r\n\t\t\t\t\t{currentRuntimeState().interruptible ? (\r\n\t\t\t\t\t\t<box backgroundColor={theme.danger} paddingLeft={1} paddingRight={1} onMouseUp={() => void abortActiveRequest()}>\r\n\t\t\t\t\t\t\t<text fg={theme.background}>Stop</text>\r\n\t\t\t\t\t\t</box>\r\n\t\t\t\t\t) : null}\r\n\t\t\t\t\t<text fg={runtimeStatusColor(currentRuntimeState())}>{truncate(topStatus(), 36)}</text>\r\n\t\t\t\t</box>\r\n\t\t\t</box>\r\n\r\n\t\t\t<box flexGrow={1} minHeight={0} flexDirection=\"row\" gap={1} paddingLeft={1} paddingRight={1} paddingTop={1}>\r\n\t\t\t\t<TranscriptPanel\r\n\t\t\t\t\tmessages={currentMessages()}\r\n\t\t\t\t\tactiveModelLabel={`${activeProfile()?.label ?? \"none\"} / ${activeModel() ?? \"none\"}`}\r\n\t\t\t\t\twidth={viewport().width}\r\n\t\t\t\t\tscrollRef={(ref) => {\r\n\t\t\t\t\t\ttranscriptScroll = ref as typeof transcriptScroll;\r\n\t\t\t\t\t}}\r\n\t\t\t\t\tonToggleMessage={(messageId) => toggleTranscriptMessage(currentSession()!.id, messageId)}\r\n\t\t\t\t/>\r\n\t\t\t</box>\r\n\r\n\t\t\t<ChatComposer\r\n\t\t\t\tfocused={focusRegion() === \"composer\"}\r\n\t\t\t\tvalue={composerValue()}\r\n\t\t\t\tproviderLabel={activeProfile()?.label ?? \"No provider\"}\r\n\t\t\t\tmodelLabel={activeModel() ?? \"No model\"}\r\n\t\t\t\tmodeLabel={activeShellMode().composerLabel}\r\n\t\t\t\tmodeTone={activeShellMode().tone}\r\n\t\t\t\tinputRef={(ref) => {\r\n\t\t\t\t\tcomposerRef = ref;\r\n\t\t\t\t}}\r\n\t\t\t\tonAction={activateAction}\r\n\t\t\t\tonFocus={() => setFocusRegion(\"composer\")}\r\n\t\t\t\tonInput={(value) => setComposerValue(value)}\r\n\t\t\t\tonModeClick={() => applyShellMode(nextShellMode(shellMode()))}\n\t\t\t\tonSubmit={promptController.handleComposerSubmit}\n\t\t\t\tonSelectSlashCommand={promptController.runSlashCommand}\n\t\t\t\tslashCommands={skillSlashCommands()}\n\t\t\t/>\n\r\n\t\t\t{overlay() ? (\r\n\t\t\t\t<OverlayPicker\r\n\t\t\t\t\ttitle={overlayTitle(overlay())}\r\n\t\t\t\t\tdescription={overlayDescription(overlay())}\r\n\t\t\t\t\toptions={overlayOptions()}\r\n\t\t\t\t\tselectedIndex={overlayIndex()}\r\n\t\t\t\t\tonClose={closeOverlay}\r\n\t\t\t\t\tonSelect={(id, index) => {\r\n\t\t\t\t\t\tsetOverlayIndex(index);\r\n\t\t\t\t\t\tactivateAction(id);\r\n\t\t\t\t\t}}\r\n\t\t\t\t/>\r\n\t\t\t) : null}\r\n\r\n\t\t\t{activeApproval() ? (\r\n\t\t\t\t<ApprovalOverlay\r\n\t\t\t\t\trequest={activeApproval()!}\r\n\t\t\t\t\tselectedIndex={approvalDecisionIndex()}\r\n\t\t\t\t\tonSelectIndex={setApprovalDecisionIndex}\r\n\t\t\t\t\tonResolve={resolveActiveApproval}\r\n\t\t\t\t/>\r\n\t\t\t) : null}\r\n\r\n\t\t\t{providerAddFlow.render()}\n\t\t\t{skillAddFlow.render()}\n\n\t\t\t<box flexShrink={0} paddingLeft={1} paddingRight={1} paddingBottom={0} paddingTop={0} flexDirection=\"row\">\n\t\t\t\t<text fg={theme.muted}>{truncate(getAgentDir(), 36)}</text>\r\n\t\t\t</box>\r\n\t\t</box>\r\n\t);\r\n}\r\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,135 @@
1
+ import { useKeyboard } from "@opentui/solid";
2
+ import { wrapIndex } from "./helpers.js";
3
+ import { writeShellDebugLog } from "./debug-log.js";
4
+ export function useShellKeyboard(state, actions) {
5
+ useKeyboard(evt => {
6
+ writeShellDebugLog(`key name=${evt.name} focus=${state.focusRegion()} overlay=${state.overlay() ?? "none"}`);
7
+ if (evt.ctrl && evt.name === "c") {
8
+ evt.preventDefault();
9
+ actions.exitShell();
10
+ return;
11
+ }
12
+ if (evt.ctrl && evt.name === ".") {
13
+ evt.preventDefault();
14
+ void actions.abortActiveRequest();
15
+ return;
16
+ }
17
+ if (state.hasActiveApproval()) {
18
+ if (evt.name === "escape") {
19
+ evt.preventDefault();
20
+ actions.resolveActiveApproval("cancel");
21
+ return;
22
+ }
23
+ if (evt.name === "left" || evt.name === "up") {
24
+ evt.preventDefault();
25
+ actions.setApprovalDecisionIndex(current => wrapIndex(current, -1, 3));
26
+ return;
27
+ }
28
+ if (evt.name === "right" || evt.name === "down") {
29
+ evt.preventDefault();
30
+ actions.setApprovalDecisionIndex(current => wrapIndex(current, 1, 3));
31
+ return;
32
+ }
33
+ if (evt.name === "return") {
34
+ evt.preventDefault();
35
+ const decisions = ["allow", "reject", "cancel"];
36
+ actions.resolveActiveApproval(decisions[state.approvalDecisionIndex()] ?? "cancel");
37
+ return;
38
+ }
39
+ return;
40
+ }
41
+ if (state.providerAddFlowActive()) {
42
+ if (evt.name === "escape") {
43
+ evt.preventDefault();
44
+ actions.providerAddBack();
45
+ return;
46
+ }
47
+ if (state.providerAddFlowPickerStep()) {
48
+ if (evt.name === "up") {
49
+ evt.preventDefault();
50
+ actions.providerAddMoveSelection(-1);
51
+ return;
52
+ }
53
+ if (evt.name === "down") {
54
+ evt.preventDefault();
55
+ actions.providerAddMoveSelection(1);
56
+ return;
57
+ }
58
+ if (evt.name === "return") {
59
+ evt.preventDefault();
60
+ actions.providerAddConfirmSelection();
61
+ return;
62
+ }
63
+ }
64
+ return;
65
+ }
66
+ if (state.skillAddFlowActive()) {
67
+ if (evt.name === "escape") {
68
+ evt.preventDefault();
69
+ actions.closeSkillAddFlow();
70
+ }
71
+ return;
72
+ }
73
+ if (state.overlay()) {
74
+ if (evt.name === "escape") {
75
+ evt.preventDefault();
76
+ actions.closeOverlay();
77
+ return;
78
+ }
79
+ if (evt.name === "up") {
80
+ evt.preventDefault();
81
+ actions.setOverlayIndex(current => wrapIndex(current, -1, state.overlayOptionsLength()));
82
+ return;
83
+ }
84
+ if (evt.name === "down") {
85
+ evt.preventDefault();
86
+ actions.setOverlayIndex(current => wrapIndex(current, 1, state.overlayOptionsLength()));
87
+ return;
88
+ }
89
+ if (evt.name === "return") {
90
+ evt.preventDefault();
91
+ actions.activateOverlaySelection();
92
+ return;
93
+ }
94
+ return;
95
+ }
96
+ if (evt.option && evt.name === "m") {
97
+ evt.preventDefault();
98
+ actions.applyNextShellMode();
99
+ return;
100
+ }
101
+ if (evt.option && ["1", "2", "3", "4"].includes(evt.name)) {
102
+ evt.preventDefault();
103
+ const nextMode = {
104
+ "1": "agent",
105
+ "2": "plan",
106
+ "3": "read-only",
107
+ "4": "auto-approve"
108
+ }[evt.name];
109
+ if (nextMode) {
110
+ actions.applyMode(nextMode);
111
+ }
112
+ return;
113
+ }
114
+ if (evt.name === "tab") {
115
+ evt.preventDefault();
116
+ actions.cycleFocus();
117
+ return;
118
+ }
119
+ if (state.focusRegion() === "main") {
120
+ if (evt.name === "up" || evt.name === "down") {
121
+ evt.preventDefault();
122
+ return;
123
+ }
124
+ if (evt.name === "escape") {
125
+ evt.preventDefault();
126
+ actions.setFocusRegion("composer");
127
+ return;
128
+ }
129
+ }
130
+ if (state.focusRegion() === "composer" && evt.name === "escape" && !state.composerValue().trim()) {
131
+ evt.preventDefault();
132
+ actions.exitShell();
133
+ }
134
+ });
135
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useKeyboard","wrapIndex","writeShellDebugLog","useShellKeyboard","state","actions","evt","name","focusRegion","overlay","ctrl","preventDefault","exitShell","abortActiveRequest","hasActiveApproval","resolveActiveApproval","setApprovalDecisionIndex","current","decisions","approvalDecisionIndex","providerAddFlowActive","providerAddBack","providerAddFlowPickerStep","providerAddMoveSelection","providerAddConfirmSelection","skillAddFlowActive","closeSkillAddFlow","closeOverlay","setOverlayIndex","overlayOptionsLength","activateOverlaySelection","option","applyNextShellMode","includes","nextMode","applyMode","cycleFocus","setFocusRegion","composerValue","trim"],"sources":["shell-keyboard.ts"],"sourcesContent":["import { useKeyboard } from \"@opentui/solid\";\nimport { wrapIndex } from \"./helpers.js\";\nimport { writeShellDebugLog } from \"./debug-log.js\";\nimport type { ShellModeId } from \"./shell-modes.js\";\nimport type { ToolApprovalDecision } from \"./tool-approval.js\";\nimport type { OverlayKind, ShellFocus } from \"./types.js\";\n\ninterface ShellKeyboardStateAccessors {\n\tfocusRegion: () => ShellFocus;\n\toverlay: () => OverlayKind | undefined;\n\toverlayIndex: () => number;\n\toverlayOptionsLength: () => number;\n\thasActiveApproval: () => boolean;\n\tapprovalDecisionIndex: () => number;\n\tproviderAddFlowActive: () => boolean;\n\tproviderAddFlowPickerStep: () => boolean;\n\tskillAddFlowActive: () => boolean;\n\tcomposerValue: () => string;\n}\n\ninterface ShellKeyboardActions {\n\texitShell: () => void;\n\tabortActiveRequest: () => Promise<void> | void;\n\tresolveActiveApproval: (decision: ToolApprovalDecision) => void;\n\tsetApprovalDecisionIndex: (updater: (current: number) => number) => void;\n\tproviderAddBack: () => void;\n\tproviderAddMoveSelection: (delta: number) => void;\n\tproviderAddConfirmSelection: () => void;\n\tcloseSkillAddFlow: () => void;\n\tcloseOverlay: () => void;\n\tsetOverlayIndex: (updater: (current: number) => number) => void;\n\tactivateOverlaySelection: () => void;\n\tapplyNextShellMode: () => void;\n\tapplyMode: (modeId: ShellModeId) => void;\n\tcycleFocus: () => void;\n\tsetFocusRegion: (region: ShellFocus) => void;\n}\n\nexport function useShellKeyboard(\n\tstate: ShellKeyboardStateAccessors,\n\tactions: ShellKeyboardActions,\n): void {\n\tuseKeyboard((evt) => {\n\t\twriteShellDebugLog(`key name=${evt.name} focus=${state.focusRegion()} overlay=${state.overlay() ?? \"none\"}`);\n\n\t\tif (evt.ctrl && evt.name === \"c\") {\n\t\t\tevt.preventDefault();\n\t\t\tactions.exitShell();\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.ctrl && evt.name === \".\") {\n\t\t\tevt.preventDefault();\n\t\t\tvoid actions.abortActiveRequest();\n\t\t\treturn;\n\t\t}\n\n\t\tif (state.hasActiveApproval()) {\n\t\t\tif (evt.name === \"escape\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.resolveActiveApproval(\"cancel\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (evt.name === \"left\" || evt.name === \"up\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.setApprovalDecisionIndex((current) => wrapIndex(current, -1, 3));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (evt.name === \"right\" || evt.name === \"down\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.setApprovalDecisionIndex((current) => wrapIndex(current, 1, 3));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (evt.name === \"return\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tconst decisions: ToolApprovalDecision[] = [\"allow\", \"reject\", \"cancel\"];\n\t\t\t\tactions.resolveActiveApproval(decisions[state.approvalDecisionIndex()] ?? \"cancel\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (state.providerAddFlowActive()) {\n\t\t\tif (evt.name === \"escape\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.providerAddBack();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (state.providerAddFlowPickerStep()) {\n\t\t\t\tif (evt.name === \"up\") {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tactions.providerAddMoveSelection(-1);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (evt.name === \"down\") {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tactions.providerAddMoveSelection(1);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (evt.name === \"return\") {\n\t\t\t\t\tevt.preventDefault();\n\t\t\t\t\tactions.providerAddConfirmSelection();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (state.skillAddFlowActive()) {\n\t\t\tif (evt.name === \"escape\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.closeSkillAddFlow();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (state.overlay()) {\n\t\t\tif (evt.name === \"escape\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.closeOverlay();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (evt.name === \"up\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.setOverlayIndex((current) => wrapIndex(current, -1, state.overlayOptionsLength()));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (evt.name === \"down\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.setOverlayIndex((current) => wrapIndex(current, 1, state.overlayOptionsLength()));\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (evt.name === \"return\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.activateOverlaySelection();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.option && evt.name === \"m\") {\n\t\t\tevt.preventDefault();\n\t\t\tactions.applyNextShellMode();\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.option && [\"1\", \"2\", \"3\", \"4\"].includes(evt.name)) {\n\t\t\tevt.preventDefault();\n\t\t\tconst nextMode = (\n\t\t\t\t{\n\t\t\t\t\t\"1\": \"agent\",\n\t\t\t\t\t\"2\": \"plan\",\n\t\t\t\t\t\"3\": \"read-only\",\n\t\t\t\t\t\"4\": \"auto-approve\",\n\t\t\t\t} as Record<string, ShellModeId>\n\t\t\t)[evt.name];\n\t\t\tif (nextMode) {\n\t\t\t\tactions.applyMode(nextMode);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (evt.name === \"tab\") {\n\t\t\tevt.preventDefault();\n\t\t\tactions.cycleFocus();\n\t\t\treturn;\n\t\t}\n\n\t\tif (state.focusRegion() === \"main\") {\n\t\t\tif (evt.name === \"up\" || evt.name === \"down\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (evt.name === \"escape\") {\n\t\t\t\tevt.preventDefault();\n\t\t\t\tactions.setFocusRegion(\"composer\");\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tif (state.focusRegion() === \"composer\" && evt.name === \"escape\" && !state.composerValue().trim()) {\n\t\t\tevt.preventDefault();\n\t\t\tactions.exitShell();\n\t\t}\n\t});\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["SHELL_MODES","id","label","composerLabel","description","tone","commandId","shortcutHint","promptPrefix","listShellModes","getShellMode","modeId","find","mode","nextShellMode","currentMode","index","findIndex","length","findShellModeByCommand","applyShellModePrompt","prompt","shellModeSwitchMessage","shellModeHelpMessage","current","options","map","join","buildShellModeSlashCommands","keyHint","replace"],"sources":["shell-modes.ts"],"sourcesContent":["import type { SlashCommandItem } from \"./types.js\";\n\nexport type ShellModeId = \"agent\" | \"plan\" | \"read-only\" | \"auto-approve\";\nexport type ShellModeTone = \"accent\" | \"warning\" | \"muted\" | \"danger\";\n\nexport interface ShellModeDefinition {\n\tid: ShellModeId;\n\tlabel: string;\n\tcomposerLabel: string;\n\tdescription: string;\n\ttone: ShellModeTone;\n\tcommandId: string;\n\tshortcutHint: string;\n\tpromptPrefix?: string;\n}\n\nconst SHELL_MODES: ShellModeDefinition[] = [\n\t{\n\t\tid: \"agent\",\n\t\tlabel: \"Agent\",\n\t\tcomposerLabel: \"AGENT\",\n\t\tdescription: \"Normal coding mode. The agent can inspect, edit, and use tools with approval as needed.\",\n\t\ttone: \"accent\",\n\t\tcommandId: \"/mode agent\",\n\t\tshortcutHint: \"Alt+1\",\n\t},\n\t{\n\t\tid: \"plan\",\n\t\tlabel: \"Plan\",\n\t\tcomposerLabel: \"PLAN\",\n\t\tdescription: \"Analysis-first mode. The agent should reason, propose steps, and avoid making changes unless asked.\",\n\t\ttone: \"warning\",\n\t\tcommandId: \"/mode plan\",\n\t\tshortcutHint: \"Alt+2\",\n\t\tpromptPrefix:\n\t\t\t\"Plan mode is active. Analyze the task first, explain the intended implementation, and avoid making code changes or running mutating tools unless the user explicitly asks for execution.\",\n\t},\n\t{\n\t\tid: \"read-only\",\n\t\tlabel: \"Read Only\",\n\t\tcomposerLabel: \"READ ONLY\",\n\t\tdescription: \"Inspection mode. The agent should read, explain, review, and avoid changing files or running risky commands.\",\n\t\ttone: \"muted\",\n\t\tcommandId: \"/mode read-only\",\n\t\tshortcutHint: \"Alt+3\",\n\t\tpromptPrefix:\n\t\t\t\"Read-only mode is active. Do not modify files, execute risky shell commands, or take side-effecting actions. Limit the work to inspection, diagnosis, explanation, and review.\",\n\t},\n\t{\n\t\tid: \"auto-approve\",\n\t\tlabel: \"Auto Approve\",\n\t\tcomposerLabel: \"AUTO\",\n\t\tdescription: \"Fast execution mode. Risky tool approvals are automatically allowed when possible.\",\n\t\ttone: \"danger\",\n\t\tcommandId: \"/mode auto-approve\",\n\t\tshortcutHint: \"Alt+4\",\n\t},\n];\n\nexport function listShellModes(): ShellModeDefinition[] {\n\treturn SHELL_MODES;\n}\n\nexport function getShellMode(modeId: ShellModeId): ShellModeDefinition {\n\treturn SHELL_MODES.find((mode) => mode.id === modeId) ?? SHELL_MODES[0]!;\n}\n\nexport function nextShellMode(currentMode: ShellModeId): ShellModeId {\n\tconst index = SHELL_MODES.findIndex((mode) => mode.id === currentMode);\n\treturn SHELL_MODES[(index + 1 + SHELL_MODES.length) % SHELL_MODES.length]?.id ?? \"agent\";\n}\n\nexport function findShellModeByCommand(commandId: string): ShellModeDefinition | undefined {\n\treturn SHELL_MODES.find((mode) => mode.commandId === commandId);\n}\n\nexport function applyShellModePrompt(modeId: ShellModeId, prompt: string): string {\n\tconst mode = getShellMode(modeId);\n\tif (!mode.promptPrefix) {\n\t\treturn prompt;\n\t}\n\n\treturn `${mode.promptPrefix}\\n\\nUser request:\\n${prompt}`;\n}\n\nexport function shellModeSwitchMessage(modeId: ShellModeId): string {\n\tconst mode = getShellMode(modeId);\n\treturn `Mode switched to ${mode.label}. ${mode.description}`;\n}\n\nexport function shellModeHelpMessage(currentMode: ShellModeId): string {\n\tconst current = getShellMode(currentMode);\n\tconst options = SHELL_MODES.map((mode) => `${mode.commandId} (${mode.shortcutHint})`).join(\" | \");\n\treturn `Current mode: ${current.label}. Available modes: ${options}`;\n}\n\nexport function buildShellModeSlashCommands(): SlashCommandItem[] {\n\treturn [\n\t\t{\n\t\t\tid: \"/mode\",\n\t\t\tlabel: \"/mode\",\n\t\t\tdescription: \"Show the current mode and available mode switches\",\n\t\t\tkeyHint: \"m\",\n\t\t},\n\t\t...SHELL_MODES.map((mode) => ({\n\t\t\tid: mode.commandId,\n\t\t\tlabel: mode.commandId,\n\t\t\tdescription: `Switch to ${mode.label} mode`,\n\t\t\tkeyHint: mode.shortcutHint.replace(\"Alt+\", \"A\"),\n\t\t})),\n\t];\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["SHELL_MODES","id","label","composerLabel","description","tone","commandId","shortcutHint","promptPrefix","listShellModes","getShellMode","modeId","find","mode","nextShellMode","currentMode","index","findIndex","length","findShellModeByCommand","applyShellModePrompt","prompt","shellModeSwitchMessage","shellModeHelpMessage","current","options","map","join","buildShellModeSlashCommands","keyHint","replace"],"sources":["shell-modes.ts"],"sourcesContent":["import type { SlashCommandItem } from \"./types.js\";\r\n\r\nexport type ShellModeId = \"agent\" | \"plan\" | \"read-only\" | \"auto-approve\";\r\nexport type ShellModeTone = \"accent\" | \"warning\" | \"muted\" | \"danger\";\r\n\r\nexport interface ShellModeDefinition {\r\n\tid: ShellModeId;\r\n\tlabel: string;\r\n\tcomposerLabel: string;\r\n\tdescription: string;\r\n\ttone: ShellModeTone;\r\n\tcommandId: string;\r\n\tshortcutHint: string;\r\n\tpromptPrefix?: string;\r\n}\r\n\r\nconst SHELL_MODES: ShellModeDefinition[] = [\r\n\t{\r\n\t\tid: \"agent\",\r\n\t\tlabel: \"Agent\",\r\n\t\tcomposerLabel: \"AGENT\",\r\n\t\tdescription: \"Normal coding mode. The agent can inspect, edit, and use tools with approval as needed.\",\r\n\t\ttone: \"accent\",\r\n\t\tcommandId: \"/mode agent\",\r\n\t\tshortcutHint: \"Alt+1\",\r\n\t},\r\n\t{\r\n\t\tid: \"plan\",\r\n\t\tlabel: \"Plan\",\r\n\t\tcomposerLabel: \"PLAN\",\r\n\t\tdescription: \"Analysis-first mode. The agent should reason, propose steps, and avoid making changes unless asked.\",\r\n\t\ttone: \"warning\",\r\n\t\tcommandId: \"/mode plan\",\r\n\t\tshortcutHint: \"Alt+2\",\r\n\t\tpromptPrefix:\r\n\t\t\t\"Plan mode is active. Analyze the task first, explain the intended implementation, and avoid making code changes or running mutating tools unless the user explicitly asks for execution.\",\r\n\t},\r\n\t{\r\n\t\tid: \"read-only\",\r\n\t\tlabel: \"Read Only\",\r\n\t\tcomposerLabel: \"READ ONLY\",\r\n\t\tdescription: \"Inspection mode. The agent should read, explain, review, and avoid changing files or running risky commands.\",\r\n\t\ttone: \"muted\",\r\n\t\tcommandId: \"/mode read-only\",\r\n\t\tshortcutHint: \"Alt+3\",\r\n\t\tpromptPrefix:\r\n\t\t\t\"Read-only mode is active. Do not modify files, execute risky shell commands, or take side-effecting actions. Limit the work to inspection, diagnosis, explanation, and review.\",\r\n\t},\r\n\t{\r\n\t\tid: \"auto-approve\",\r\n\t\tlabel: \"Auto Approve\",\r\n\t\tcomposerLabel: \"AUTO\",\r\n\t\tdescription: \"Fast execution mode. Risky tool approvals are automatically allowed when possible.\",\r\n\t\ttone: \"danger\",\r\n\t\tcommandId: \"/mode auto-approve\",\r\n\t\tshortcutHint: \"Alt+4\",\r\n\t},\r\n];\r\n\r\nexport function listShellModes(): ShellModeDefinition[] {\r\n\treturn SHELL_MODES;\r\n}\r\n\r\nexport function getShellMode(modeId: ShellModeId): ShellModeDefinition {\r\n\treturn SHELL_MODES.find((mode) => mode.id === modeId) ?? SHELL_MODES[0]!;\r\n}\r\n\r\nexport function nextShellMode(currentMode: ShellModeId): ShellModeId {\r\n\tconst index = SHELL_MODES.findIndex((mode) => mode.id === currentMode);\r\n\treturn SHELL_MODES[(index + 1 + SHELL_MODES.length) % SHELL_MODES.length]?.id ?? \"agent\";\r\n}\r\n\r\nexport function findShellModeByCommand(commandId: string): ShellModeDefinition | undefined {\r\n\treturn SHELL_MODES.find((mode) => mode.commandId === commandId);\r\n}\r\n\r\nexport function applyShellModePrompt(modeId: ShellModeId, prompt: string): string {\r\n\tconst mode = getShellMode(modeId);\r\n\tif (!mode.promptPrefix) {\r\n\t\treturn prompt;\r\n\t}\r\n\r\n\treturn `${mode.promptPrefix}\\n\\nUser request:\\n${prompt}`;\r\n}\r\n\r\nexport function shellModeSwitchMessage(modeId: ShellModeId): string {\r\n\tconst mode = getShellMode(modeId);\r\n\treturn `Mode switched to ${mode.label}. ${mode.description}`;\r\n}\r\n\r\nexport function shellModeHelpMessage(currentMode: ShellModeId): string {\r\n\tconst current = getShellMode(currentMode);\r\n\tconst options = SHELL_MODES.map((mode) => `${mode.commandId} (${mode.shortcutHint})`).join(\" | \");\r\n\treturn `Current mode: ${current.label}. Available modes: ${options}`;\r\n}\r\n\r\nexport function buildShellModeSlashCommands(): SlashCommandItem[] {\r\n\treturn [\r\n\t\t{\r\n\t\t\tid: \"/mode\",\r\n\t\t\tlabel: \"/mode\",\r\n\t\t\tdescription: \"Show the current mode and available mode switches\",\r\n\t\t\tkeyHint: \"m\",\r\n\t\t},\r\n\t\t...SHELL_MODES.map((mode) => ({\r\n\t\t\tid: mode.commandId,\r\n\t\t\tlabel: mode.commandId,\r\n\t\t\tdescription: `Switch to ${mode.label} mode`,\r\n\t\t\tkeyHint: mode.shortcutHint.replace(\"Alt+\", \"A\"),\r\n\t\t})),\r\n\t];\r\n}\r\n"],"mappings":"AAgBA,MAAMA,WAAkC,GAAG,CAC1C;EACCC,EAAE,EAAE,OAAO;EACXC,KAAK,EAAE,OAAO;EACdC,aAAa,EAAE,OAAO;EACtBC,WAAW,EAAE,yFAAyF;EACtGC,IAAI,EAAE,QAAQ;EACdC,SAAS,EAAE,aAAa;EACxBC,YAAY,EAAE;AACf,CAAC,EACD;EACCN,EAAE,EAAE,MAAM;EACVC,KAAK,EAAE,MAAM;EACbC,aAAa,EAAE,MAAM;EACrBC,WAAW,EAAE,qGAAqG;EAClHC,IAAI,EAAE,SAAS;EACfC,SAAS,EAAE,YAAY;EACvBC,YAAY,EAAE,OAAO;EACrBC,YAAY,EACX;AACF,CAAC,EACD;EACCP,EAAE,EAAE,WAAW;EACfC,KAAK,EAAE,WAAW;EAClBC,aAAa,EAAE,WAAW;EAC1BC,WAAW,EAAE,8GAA8G;EAC3HC,IAAI,EAAE,OAAO;EACbC,SAAS,EAAE,iBAAiB;EAC5BC,YAAY,EAAE,OAAO;EACrBC,YAAY,EACX;AACF,CAAC,EACD;EACCP,EAAE,EAAE,cAAc;EAClBC,KAAK,EAAE,cAAc;EACrBC,aAAa,EAAE,MAAM;EACrBC,WAAW,EAAE,oFAAoF;EACjGC,IAAI,EAAE,QAAQ;EACdC,SAAS,EAAE,oBAAoB;EAC/BC,YAAY,EAAE;AACf,CAAC,CACD;AAED,OAAO,SAASE,cAAcA,CAAA,EAA0B;EACvD,OAAOT,WAAW;AACnB;AAEA,OAAO,SAASU,YAAYA,CAACC,MAAmB,EAAuB;EACtE,OAAOX,WAAW,CAACY,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACZ,EAAE,KAAKU,MAAM,CAAC,IAAIX,WAAW,CAAC,CAAC,CAAE;AACzE;AAEA,OAAO,SAASc,aAAaA,CAACC,WAAwB,EAAe;EACpE,MAAMC,KAAK,GAAGhB,WAAW,CAACiB,SAAS,CAAEJ,IAAI,IAAKA,IAAI,CAACZ,EAAE,KAAKc,WAAW,CAAC;EACtE,OAAOf,WAAW,CAAC,CAACgB,KAAK,GAAG,CAAC,GAAGhB,WAAW,CAACkB,MAAM,IAAIlB,WAAW,CAACkB,MAAM,CAAC,EAAEjB,EAAE,IAAI,OAAO;AACzF;AAEA,OAAO,SAASkB,sBAAsBA,CAACb,SAAiB,EAAmC;EAC1F,OAAON,WAAW,CAACY,IAAI,CAAEC,IAAI,IAAKA,IAAI,CAACP,SAAS,KAAKA,SAAS,CAAC;AAChE;AAEA,OAAO,SAASc,oBAAoBA,CAACT,MAAmB,EAAEU,MAAc,EAAU;EACjF,MAAMR,IAAI,GAAGH,YAAY,CAACC,MAAM,CAAC;EACjC,IAAI,CAACE,IAAI,CAACL,YAAY,EAAE;IACvB,OAAOa,MAAM;EACd;EAEA,OAAO,GAAGR,IAAI,CAACL,YAAY,sBAAsBa,MAAM,EAAE;AAC1D;AAEA,OAAO,SAASC,sBAAsBA,CAACX,MAAmB,EAAU;EACnE,MAAME,IAAI,GAAGH,YAAY,CAACC,MAAM,CAAC;EACjC,OAAO,oBAAoBE,IAAI,CAACX,KAAK,KAAKW,IAAI,CAACT,WAAW,EAAE;AAC7D;AAEA,OAAO,SAASmB,oBAAoBA,CAACR,WAAwB,EAAU;EACtE,MAAMS,OAAO,GAAGd,YAAY,CAACK,WAAW,CAAC;EACzC,MAAMU,OAAO,GAAGzB,WAAW,CAAC0B,GAAG,CAAEb,IAAI,IAAK,GAAGA,IAAI,CAACP,SAAS,KAAKO,IAAI,CAACN,YAAY,GAAG,CAAC,CAACoB,IAAI,CAAC,KAAK,CAAC;EACjG,OAAO,iBAAiBH,OAAO,CAACtB,KAAK,sBAAsBuB,OAAO,EAAE;AACrE;AAEA,OAAO,SAASG,2BAA2BA,CAAA,EAAuB;EACjE,OAAO,CACN;IACC3B,EAAE,EAAE,OAAO;IACXC,KAAK,EAAE,OAAO;IACdE,WAAW,EAAE,mDAAmD;IAChEyB,OAAO,EAAE;EACV,CAAC,EACD,GAAG7B,WAAW,CAAC0B,GAAG,CAAEb,IAAI,KAAM;IAC7BZ,EAAE,EAAEY,IAAI,CAACP,SAAS;IAClBJ,KAAK,EAAEW,IAAI,CAACP,SAAS;IACrBF,WAAW,EAAE,aAAaS,IAAI,CAACX,KAAK,OAAO;IAC3C2B,OAAO,EAAEhB,IAAI,CAACN,YAAY,CAACuB,OAAO,CAAC,MAAM,EAAE,GAAG;EAC/C,CAAC,CAAC,CAAC,CACH;AACF","ignoreList":[]}