@wrongstack/webui 0.313.1 → 0.316.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/AgentRosterView-CESYPVXA.js +9 -0
- package/dist/assets/AnalyticsDashboard-zDBIqTxO.js +1 -0
- package/dist/assets/AudienceMemoryPanel-BnNJ0EhQ.js +3 -0
- package/dist/assets/ChangesView-CGwCocSR.js +1 -0
- package/dist/assets/ChimeraReviewsView-CFxZwJBI.js +1 -0
- package/dist/assets/ChronicleDashboard-DKiMK5nl.js +1 -0
- package/dist/assets/CodeEditor-CZcMPNTH.js +2 -0
- package/dist/assets/CodeMap-zPUlmh5G.js +1 -0
- package/dist/assets/ConfirmModal-CUGk-0lT.js +1 -0
- package/dist/assets/{CronJobsPanel-BzH_InFe.js → CronJobsPanel-C_wutCVP.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-Dj-5SAEE.js → DeadCodeScanPanel-DCCjg17Q.js} +2 -2
- package/dist/assets/{DebugDashboard-C-lpnxsJ.js → DebugDashboard-D-ogYAbO.js} +1 -1
- package/dist/assets/DesignGalleryView-CtlHZWOn.js +1 -0
- package/dist/assets/GoalView-Czksj2nD.js +1 -0
- package/dist/assets/KanbanView-C5_GD0qk.js +3 -0
- package/dist/assets/MailboxDetailView-2rWp3cTv.js +1 -0
- package/dist/assets/MemoryDrawer-D9Chtt6v.js +1 -0
- package/dist/assets/MemoryManager-Bj41s3KW.js +1 -0
- package/dist/assets/ModelPicker-vwrqLOL4.js +1 -0
- package/dist/assets/OfficeMapPanel-BfuePIGH.js +4 -0
- package/dist/assets/ProcessMonitor-CHPTCtyu.js +1 -0
- package/dist/assets/PromptJournalView-tOTjKpi8.js +1 -0
- package/dist/assets/QueuePanel-BIwoG-tG.js +1 -0
- package/dist/assets/RefreshDebugView-DesPEAAq.js +1 -0
- package/dist/assets/RequirementIntakeView-BonXC1a5.js +1 -0
- package/dist/assets/SageTabs-82lpgRh-.js +2 -0
- package/dist/assets/SddFlowGraph-CMedulJi.js +1 -0
- package/dist/assets/SddHub-D3Gm4Io2.js +2 -0
- package/dist/assets/SessionInspectView-BUs2B4mF.js +1 -0
- package/dist/assets/SessionList-DxQgJqgl.js +1 -0
- package/dist/assets/SessionsDashboard-JtwQf-N5.js +1 -0
- package/dist/assets/SetupScreen-XFBFjPbd.js +1 -0
- package/dist/assets/SkillDetailView-C_P_-783.js +3 -0
- package/dist/assets/{SpecsView-B9Aj1qpe.js → SpecsView-D6GqoZ2L.js} +1 -1
- package/dist/assets/TechStackView-BE4tdEYZ.js +2 -0
- package/dist/assets/TerminalPanel-BcizpYrZ.js +1 -0
- package/dist/assets/activity-B2_Vr2oD.js +10 -0
- package/dist/assets/activity-BF1idM4Y.js +10 -0
- package/dist/assets/activity-C-kOJZXC.js +10 -0
- package/dist/assets/activity-DPpMW8BU.js +10 -0
- package/dist/assets/activity-DYMBKGt0.js +10 -0
- package/dist/assets/activity-IxgYWPDt.js +10 -0
- package/dist/assets/activity-q85HXQNv.js +10 -0
- package/dist/assets/{button-Dhmop_yM.js → button-C_EYpeP-.js} +1 -1
- package/dist/assets/{chat-CR2B97dj.js → chat-B5a3cvps.js} +1 -1
- package/dist/assets/{chat-DResBrkV.js → chat-B60h8Cji.js} +1 -1
- package/dist/assets/{chat-BnkVCZ3Q.js → chat-BNWqeV-N.js} +1 -1
- package/dist/assets/chat-BlllxfpP.js +1 -0
- package/dist/assets/{chat-BfQBSiII.js → chat-BvKkSd09.js} +1 -1
- package/dist/assets/{chat-BPuAsrkF.js → chat-DTI7lNDx.js} +1 -1
- package/dist/assets/{chat-Di8o0wDz.js → chat-DlhXGxxi.js} +1 -1
- package/dist/assets/chat-store-x5w4ss_D.js +1 -0
- package/dist/assets/{codemap-activity-store-BWt_a7Gs.js → codemap-activity-store-ZCXcHlwd.js} +1 -1
- package/dist/assets/codemap-index-store-Cb5mn74P.js +1 -0
- package/dist/assets/{dialog-DPl7DolS.js → dialog-9eW9sG90.js} +1 -1
- package/dist/assets/{empty-state-IT10GzRA.js → empty-state-DJb_tw7Q.js} +1 -1
- package/dist/assets/i18n-DkMSw3tI.js +2 -0
- package/dist/assets/index-BSpLtv9S.css +1 -0
- package/dist/assets/index-CTyM4bm8.js +137 -0
- package/dist/assets/{input-C3rIQ26u.js → input-CsEvo8Oo.js} +1 -1
- package/dist/assets/{mailbox-store-DhAVkVJQ.js → mailbox-store-KHcrg_Fm.js} +1 -1
- package/dist/assets/{roster-ws-Ch6O90eT.js → roster-ws-CXnrEaEu.js} +1 -1
- package/dist/assets/settings-1o1gooaL.js +1 -0
- package/dist/assets/settings-BGvRM3vJ.js +1 -0
- package/dist/assets/{settings-BV1_j8_-.js → settings-BV8EFmpH.js} +1 -1
- package/dist/assets/settings-Ci_RMpCQ.js +1 -0
- package/dist/assets/settings-Cy_xp4Jt.js +1 -0
- package/dist/assets/settings-D-LlBmzO.js +1 -0
- package/dist/assets/settings-nWMBX3xS.js +1 -0
- package/dist/assets/{shared-BUXBOqyO.js → shared-sYlGVRJI.js} +1 -1
- package/dist/assets/stores-5ynEAenb.js +7 -0
- package/dist/assets/toasts-BsmyGP95.js +1 -0
- package/dist/assets/toasts-CgXHu8ZB.js +1 -0
- package/dist/assets/toasts-DZ6HdKgG.js +1 -0
- package/dist/assets/toasts-DizCJjAR.js +1 -0
- package/dist/assets/toasts-NC2MT4uN.js +1 -0
- package/dist/assets/toasts-bPl097de.js +1 -0
- package/dist/assets/toasts-tCVo15mP.js +1 -0
- package/dist/assets/ui-store-9b7zzi3V.js +1 -0
- package/dist/assets/useWebSocket-1kxFH7f8.js +27 -0
- package/dist/assets/utils-DIo8iytt.js +1 -0
- package/dist/assets/{vector-memory-panel-CBA4CK6N.js → vector-memory-panel-Dd3jXXYA.js} +1 -1
- package/dist/assets/{vendor-DZ9_OO6N.js → vendor-UFryhfbN.js} +30 -30
- package/dist/assets/view-navigation-ICwpL9qw.js +1 -0
- package/dist/assets/ws-client-Ccf_VLRQ.js +22 -0
- package/dist/components/AgentOfficeView/model.d.ts +4 -3
- package/dist/components/AgentRosterView.d.ts +8 -1
- package/dist/components/ChatInput/composer-button-bar.d.ts +6 -2
- package/dist/components/ChatInput/image-attachments.d.ts +2 -1
- package/dist/components/ChatInput/next-steps-helpers.d.ts +0 -16
- package/dist/components/ChatInput/refine-panel-host.d.ts +2 -2
- package/dist/components/ChatInput/session-effort-select.d.ts +16 -0
- package/dist/components/ChatInput/slash-commands.d.ts +2 -1
- package/dist/components/ChatInput/slash-routing.d.ts +8 -0
- package/dist/components/ChatInput/use-chat-input-mcp.d.ts +2 -1
- package/dist/components/ChatInput/use-paste-drop.d.ts +2 -1
- package/dist/components/ChatInput/use-refine-timeout.d.ts +2 -1
- package/dist/components/ChatInput/use-speech-recognition.d.ts +9 -0
- package/dist/components/ChatView/AgentTabs.d.ts +1 -1
- package/dist/components/ChatView/BrainDecisionCard.d.ts +9 -0
- package/dist/components/ChatView/ChatHeader.d.ts +3 -3
- package/dist/components/ChatView/ChatRowView.d.ts +3 -1
- package/dist/components/ChatView/ChimeraReportCard.d.ts +22 -0
- package/dist/components/ChatView/CouncilDecisionCard.d.ts +9 -0
- package/dist/components/ChatView/auto-collapse.d.ts +2 -1
- package/dist/components/ChatView/useChatViewState.d.ts +14 -28
- package/dist/components/ChatView/utils.d.ts +2 -1
- package/dist/components/ChimeraReviewsView.d.ts +2 -0
- package/dist/components/CodeMapActivityStreamPanel.d.ts +2 -1
- package/dist/components/CodeMapDirectoryTree.d.ts +2 -1
- package/dist/components/CodeMapLiveOverlay.d.ts +0 -3
- package/dist/components/CodeMapSelectedNodeSummary.d.ts +2 -1
- package/dist/components/CollabPanel.d.ts +2 -7
- package/dist/components/ConfirmModal.d.ts +6 -13
- package/dist/components/CronJobsPanel.d.ts +2 -1
- package/dist/components/CustomRosterPanel.d.ts +0 -1
- package/dist/components/DependencyGraph.d.ts +2 -1
- package/dist/components/FileActivityDrawer.d.ts +2 -2
- package/dist/components/FileExplorer/FileExplorerModals.d.ts +11 -6
- package/dist/components/FileExplorer/TreeRow.d.ts +2 -6
- package/dist/components/FileExplorer/tree-helpers.d.ts +7 -0
- package/dist/components/FleetPanel.d.ts +4 -13
- package/dist/components/InspectorPanel.d.ts +6 -1
- package/dist/components/KanbanBoardSidebar.d.ts +2 -1
- package/dist/components/KanbanBoardState.d.ts +1 -1
- package/dist/components/KanbanContractGraphView.d.ts +3 -2
- package/dist/components/KanbanQueueHealthBar.d.ts +2 -1
- package/dist/components/KanbanTaskActivityRecorder.d.ts +2 -1
- package/dist/components/MemoryManager/MemoryDetail.d.ts +2 -1
- package/dist/components/MemoryManager/MemoryEditor.d.ts +2 -1
- package/dist/components/MemoryManager/MemoryFilters.d.ts +2 -1
- package/dist/components/MemoryManager/MemoryList.d.ts +2 -1
- package/dist/components/MemoryManager/MemorySearchBreakdown.d.ts +2 -1
- package/dist/components/MemoryManager/ReviewQueue.d.ts +2 -1
- package/dist/components/MemoryManager/SageTabs.d.ts +2 -1
- package/dist/components/MemoryManager/shared.d.ts +0 -1
- package/dist/components/MessageBubble/FailedRunContinue.d.ts +12 -0
- package/dist/components/MessageBubble/utils.d.ts +6 -0
- package/dist/components/ModelPickDialog.d.ts +1 -1
- package/dist/components/ModelSelectDialog.d.ts +4 -3
- package/dist/components/NextStepsBar.d.ts +1 -6
- package/dist/components/NotificationMenu.d.ts +6 -0
- package/dist/components/OfficeMapCanvas/edges.d.ts +0 -6
- package/dist/components/OfficeMapCanvas/nodes.d.ts +0 -32
- package/dist/components/OfficeMapCanvas/use-recently-finished.d.ts +2 -1
- package/dist/components/OfficeMapCanvas/utils.d.ts +4 -10
- package/dist/components/ProcessMonitor.d.ts +2 -1
- package/dist/components/ProviderWaitingRoom.d.ts +8 -0
- package/dist/components/QueuePanel.d.ts +1 -1
- package/dist/components/QuickModelSwitcher.filter.d.ts +23 -7
- package/dist/components/RestoreTabsModal.d.ts +20 -0
- package/dist/components/SddFlowGraph.d.ts +3 -2
- package/dist/components/SessionTabBar/TabMap.d.ts +19 -0
- package/dist/components/SessionTabBar/summaries.d.ts +39 -0
- package/dist/components/SessionTabBar.d.ts +14 -0
- package/dist/components/SettingsPanel/ClearAllowlistDialog.d.ts +2 -1
- package/dist/components/SettingsPanel/ModelCatalogPicker.d.ts +2 -14
- package/dist/components/SettingsPanel/ModelEffortSelect.d.ts +12 -0
- package/dist/components/SettingsPanel/ModelListEditor.d.ts +2 -1
- package/dist/components/SettingsPanel/ModelSchemaEditor.d.ts +2 -1
- package/dist/components/SettingsPanel/ModelSection.d.ts +3 -1
- package/dist/components/SettingsPanel/ModelTiersSection.d.ts +7 -0
- package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +2 -2
- package/dist/components/SettingsPanel/PluginToggleList.d.ts +3 -1
- package/dist/components/SettingsPanel/ProviderModelsPanel.d.ts +2 -1
- package/dist/components/SettingsPanel/ProviderModelsPanel.filter.d.ts +2 -1
- package/dist/components/SettingsPanel/ProviderSection.d.ts +2 -2
- package/dist/components/SettingsPanel/ToolsSection.d.ts +0 -10
- package/dist/components/SettingsPanel/brain-section-options.d.ts +3 -10
- package/dist/components/SettingsPanel/contracts.d.ts +5 -3
- package/dist/components/SettingsPanel/sync-settings-preference.d.ts +8 -0
- package/dist/components/SettingsPanel/undo-send-decision.d.ts +2 -1
- package/dist/components/SidePanel/ChangesPanel.d.ts +0 -6
- package/dist/components/SidePanel/DesignStudioPanel.d.ts +7 -0
- package/dist/components/SidePanel/SessionList.d.ts +6 -6
- package/dist/components/SystemPromptDialog.d.ts +18 -0
- package/dist/components/TaskActivityTimeline.d.ts +3 -3
- package/dist/components/TaskBoard.d.ts +1 -1
- package/dist/components/TaskCard.d.ts +2 -7
- package/dist/components/TaskExecutionAttempts.d.ts +2 -1
- package/dist/components/TaskIntelligencePanel.d.ts +1 -1
- package/dist/components/TaskRiskPanel.d.ts +4 -3
- package/dist/components/TechStackView/DependencyDetail.d.ts +2 -1
- package/dist/components/TechStackView/DependencyTable.d.ts +2 -1
- package/dist/components/TechStackView/FindingsPanel.d.ts +2 -1
- package/dist/components/TechStackView/TechStackToolbar.d.ts +2 -1
- package/dist/components/TechStackView/shared.d.ts +5 -5
- package/dist/components/Toaster.d.ts +3 -31
- package/dist/components/ToolStatsModal.d.ts +15 -0
- package/dist/components/UpdateBanner.d.ts +6 -4
- package/dist/components/WorkbenchTopbar.d.ts +1 -3
- package/dist/components/agent-roster-data.d.ts +1 -1
- package/dist/components/agents/AgentDetailSection.d.ts +2 -1
- package/dist/components/agents/AgentRosterCard.d.ts +2 -1
- package/dist/components/agents/FleetSummaryBar.d.ts +6 -3
- package/dist/components/codemap-model.d.ts +3 -2
- package/dist/components/ui/PickerCardList.d.ts +3 -2
- package/dist/components/ui/badge.d.ts +2 -2
- package/dist/components/ui/button.d.ts +2 -2
- package/dist/components/ui/concurrency-gauge.d.ts +2 -1
- package/dist/components/ui/dialog.d.ts +5 -5
- package/dist/components/ui/dropdown-menu.d.ts +8 -8
- package/dist/components/ui/event-timeline.d.ts +2 -1
- package/dist/components/ui/fleet-agent-row.d.ts +2 -7
- package/dist/components/ui/scroll-area.d.ts +2 -2
- package/dist/components/ui/sheet.d.ts +2 -2
- package/dist/components/ui/sparkline.d.ts +2 -1
- package/dist/components/vector-memory-panel/model.d.ts +2 -7
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/useDesktopBridge.d.ts +2 -1
- package/dist/hooks/useF5Resilience.d.ts +0 -14
- package/dist/hooks/useFleetPolling.d.ts +2 -1
- package/dist/hooks/useGlobalKeyboardShortcuts.d.ts +4 -1
- package/dist/hooks/useIntegrationStatus.d.ts +10 -0
- package/dist/hooks/useKanbanMeta.d.ts +4 -3
- package/dist/hooks/useLiveContextDebug.d.ts +4 -3
- package/dist/hooks/useMemoryForFile.d.ts +3 -2
- package/dist/hooks/usePagination.d.ts +2 -1
- package/dist/hooks/useProviderModels.d.ts +1 -0
- package/dist/hooks/useSessionSubscription.d.ts +15 -0
- package/dist/hooks/useViewport.d.ts +2 -3
- package/dist/hooks/useWebSocket.d.ts +6 -1
- package/dist/hooks/ws-handlers/chat-handlers.d.ts +22 -10
- package/dist/hooks/ws-handlers/coordinator-handlers.d.ts +7 -0
- package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +1 -3
- package/dist/hooks/ws-handlers/misc-handlers.d.ts +22 -0
- package/dist/hooks/ws-handlers/session-context-handlers.d.ts +24 -2
- package/dist/hooks/ws-handlers/session-execution-handlers.d.ts +12 -0
- package/dist/hooks/ws-handlers/session-handlers.d.ts +3 -3
- package/dist/hooks/ws-handlers/session-replay-handlers.d.ts +31 -2
- package/dist/hooks/ws-handlers/techstack-handlers.d.ts +0 -3
- package/dist/index.html +30 -26
- package/dist/index.js +77572 -66789
- package/dist/lib/agent-office.d.ts +3 -3
- package/dist/lib/agent-session.d.ts +19 -0
- package/dist/lib/agent-status.d.ts +5 -4
- package/dist/lib/completion.d.ts +3 -2
- package/dist/lib/delegate-format.d.ts +33 -0
- package/dist/lib/favicon.d.ts +2 -1
- package/dist/lib/kanban-verification.d.ts +3 -2
- package/dist/lib/model-matrix-routes.d.ts +3 -3
- package/dist/lib/plugin-enablement.d.ts +1 -1
- package/dist/lib/reasoning-effort.d.ts +76 -0
- package/dist/lib/sdd-theme.d.ts +4 -3
- package/dist/lib/task-brief-preview.d.ts +5 -0
- package/dist/lib/terminal-dock.d.ts +0 -1
- package/dist/lib/view-navigation.d.ts +2 -2
- package/dist/lib/ws-client-actions.d.ts +1 -0
- package/dist/lib/ws-client-domain-methods.d.ts +45 -5
- package/dist/lib/ws-client-utils.d.ts +33 -0
- package/dist/lib/ws-client.d.ts +135 -6
- package/dist/manifest.json +17 -0
- package/dist/protocol-compatibility.d.ts +0 -10
- package/dist/stores/auto-submit-streak.d.ts +3 -1
- package/dist/stores/chat-lanes.d.ts +279 -0
- package/dist/stores/chat-retention.d.ts +2 -4
- package/dist/stores/chat-store-types.d.ts +1 -0
- package/dist/stores/chat-store.d.ts +46 -25
- package/dist/stores/chimera-hub-store.d.ts +140 -0
- package/dist/stores/chimera-reports-store.d.ts +45 -0
- package/dist/stores/codemap-activity-store.d.ts +4 -4
- package/dist/stores/context-editor-store.d.ts +4 -5
- package/dist/stores/coordinator-monitor-store.d.ts +3 -2
- package/dist/stores/council-log-store.d.ts +6 -20
- package/dist/stores/file-store.d.ts +32 -13
- package/dist/stores/fleet-store.d.ts +49 -5
- package/dist/stores/git-changes-store.d.ts +25 -1
- package/dist/stores/goal-run-store.d.ts +2 -2
- package/dist/stores/history-store.d.ts +11 -0
- package/dist/stores/index.d.ts +17 -9
- package/dist/stores/local-prefs.d.ts +87 -0
- package/dist/stores/mailbox-store.d.ts +2 -2
- package/dist/stores/memory-injector-store.d.ts +2 -2
- package/dist/stores/memory-lifecycle-store.d.ts +6 -2
- package/dist/stores/monitor-store.d.ts +3 -2
- package/dist/stores/notification-store.d.ts +141 -0
- package/dist/stores/provider-status-store.d.ts +19 -0
- package/dist/stores/restore-tabs-store.d.ts +29 -0
- package/dist/stores/resume-progress-store.d.ts +58 -0
- package/dist/stores/session-inspect-store.d.ts +1 -1
- package/dist/stores/session-lanes.d.ts +242 -0
- package/dist/stores/session-scoped-store.d.ts +56 -0
- package/dist/stores/session-store.d.ts +97 -154
- package/dist/stores/session-tab-store.d.ts +197 -0
- package/dist/stores/side-effect-store.d.ts +9 -1
- package/dist/stores/system-prompt-store.d.ts +48 -0
- package/dist/stores/tool-stats-store.d.ts +52 -0
- package/dist/stores/types.d.ts +81 -4
- package/dist/stores/ui-store.d.ts +113 -11
- package/dist/types/brain.d.ts +17 -16
- package/dist/types/chronicle.d.ts +3 -2
- package/dist/types/client-message.d.ts +139 -23
- package/dist/types/collab.d.ts +0 -2
- package/dist/types/protocol-core.d.ts +62 -6
- package/dist/types/server-message.d.ts +204 -3
- package/dist/types/skills-design.d.ts +2 -1
- package/package.json +11 -11
- package/dist/assets/AgentRosterView-p5iiedCA.js +0 -9
- package/dist/assets/AnalyticsDashboard-B0sbSAxw.js +0 -1
- package/dist/assets/AudienceMemoryPanel-DcDONq7t.js +0 -3
- package/dist/assets/ChangesView-CD3JR3qY.js +0 -1
- package/dist/assets/ChronicleDashboard-3tJUiU7K.js +0 -1
- package/dist/assets/CodeEditor-0RJa9mSq.js +0 -2
- package/dist/assets/CodeMap-BvqQN6MG.js +0 -1
- package/dist/assets/ConfirmModal-CRSE2t_c.js +0 -1
- package/dist/assets/DesignGalleryView-BKl6Ce71.js +0 -1
- package/dist/assets/GoalView-Db55m-Nq.js +0 -1
- package/dist/assets/KanbanView-BQ7duNsz.js +0 -3
- package/dist/assets/MailboxDetailView-CgHzqllF.js +0 -1
- package/dist/assets/MemoryDrawer-BNTsi4jl.js +0 -1
- package/dist/assets/MemoryManager-B4NAvfYx.js +0 -1
- package/dist/assets/ModelPicker-BtK3pwfC.js +0 -1
- package/dist/assets/OfficeMapPanel-Bk9q12hP.js +0 -4
- package/dist/assets/ProcessMonitor-BTndLGIV.js +0 -1
- package/dist/assets/PromptJournalView-DbwN6AWe.js +0 -1
- package/dist/assets/QueuePanel-Cb1mIIuO.js +0 -1
- package/dist/assets/RefreshDebugView-CzGncYqB.js +0 -1
- package/dist/assets/RequirementIntakeView-BgKJbUlD.js +0 -1
- package/dist/assets/SageTabs-mB6lxkdD.js +0 -2
- package/dist/assets/SddFlowGraph-C484p5L9.js +0 -1
- package/dist/assets/SddHub-DsD8ORZo.js +0 -2
- package/dist/assets/SessionInspectView-DtM6MBbL.js +0 -1
- package/dist/assets/SessionList-CCaEa3iW.js +0 -1
- package/dist/assets/SessionsDashboard-CxatSEv6.js +0 -1
- package/dist/assets/SetupScreen-CBkuOnoN.js +0 -1
- package/dist/assets/SkillDetailView-DKVIAnwb.js +0 -3
- package/dist/assets/TechStackView-B6WDU-tt.js +0 -2
- package/dist/assets/TerminalPanel-Dfkt3xtA.js +0 -1
- package/dist/assets/Toaster-CcgCyzaU.js +0 -1
- package/dist/assets/activity-BA8C9ueU.js +0 -9
- package/dist/assets/activity-BYnOci5N.js +0 -9
- package/dist/assets/activity-COQ9xSFu.js +0 -9
- package/dist/assets/activity-CuJqhGz7.js +0 -9
- package/dist/assets/activity-D3ZccGOh.js +0 -9
- package/dist/assets/activity-YMES6OPI.js +0 -9
- package/dist/assets/activity-zlMMaNE1.js +0 -9
- package/dist/assets/chat-CzaGXz_W.js +0 -1
- package/dist/assets/chat-store-BiEXyguk.js +0 -17
- package/dist/assets/codemap-index-store-CDhApwWQ.js +0 -1
- package/dist/assets/i18n-BeHaHx3x.js +0 -2
- package/dist/assets/index-B8J_xxU5.css +0 -1
- package/dist/assets/index-BLI23QVE.js +0 -134
- package/dist/assets/session-store-CKpAwNIm.js +0 -1
- package/dist/assets/settings-BNbqEBSr.js +0 -1
- package/dist/assets/settings-BsZgLIo2.js +0 -1
- package/dist/assets/settings-C3OnmFrY.js +0 -1
- package/dist/assets/settings-C3bNf1Bx.js +0 -1
- package/dist/assets/settings-C9FOpDBt.js +0 -1
- package/dist/assets/settings-oeXlO4HA.js +0 -1
- package/dist/assets/stores-BskP1BVl.js +0 -7
- package/dist/assets/toasts-BCDGDcyq.js +0 -1
- package/dist/assets/toasts-BwQJwYLe.js +0 -1
- package/dist/assets/toasts-CFzweRH5.js +0 -1
- package/dist/assets/toasts-DDYQsJV8.js +0 -1
- package/dist/assets/toasts-DOfXc7Rt.js +0 -1
- package/dist/assets/toasts-Dm12Nq8t.js +0 -1
- package/dist/assets/toasts-frBt6fvE.js +0 -1
- package/dist/assets/ui-store-3HoYrTu5.js +0 -1
- package/dist/assets/useWebSocket-6jp275vG.js +0 -29
- package/dist/assets/utils-BecmXwgG.js +0 -1
- package/dist/assets/view-navigation-C1UDTk5R.js +0 -1
- package/dist/assets/ws-client-C6jAU4nL.js +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e}from"./ui-store-9b7zzi3V.js";var t={chat:`chat`,agents:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skills:`skill`,design:`design-gallery`},n={chat:`chat`,files:`files`,changes:`changes`,mailbox:`mailbox`,skill:`skills`,"design-gallery":`design`},r={1:`chat`,2:`files`,3:`changes`,4:`mailbox`,5:`skills`,0:`design`},i={chat:`Ctrl+1`,agents:``,files:`Ctrl+2`,changes:`Ctrl+3`,mailbox:`Ctrl+4`,skills:`Ctrl+5`,design:`Ctrl+0`};function a(e){return t[e]??`chat`}function o(e){return i[e]??``}function s(t){let n=e.getState();n.currentView!==t&&n.setCurrentView(t)}function c(t){let n=e.getState();n.setSidebarOpen(!0),n.selectActivity(t),s(a(t))}function l(t){let n=e.getState();if(!n.sidebarOpen)n.setSidebarOpen(!0),n.selectActivity(t);else if(n.activeActivity===t){n.setSidebarOpen(!1);return}else n.activeActivity===`agents`&&n.setSidebarOpen(!0),n.selectActivity(t);s(a(t))}function u(t){let n=e.getState();if(n.currentView===t){c(`chat`);return}n.setSidebarOpen(!1),s(t)}function d(t){let r=n[t];if(r){c(r);return}e.getState().setSidebarOpen(!1),s(t)}export{o as a,l as i,d as n,c as o,u as r,r as t};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import{n as e,r as t}from"./rolldown-runtime-hePW80VL.js";import{Ji as n,Or as r,Qa as i,Xa as a,Za as o,ao as s,eo as c,ft as l,kt as u,ra as d,ro as f,ut as p}from"./vendor-UFryhfbN.js";import{n as m}from"./i18n-DkMSw3tI.js";import{n as h,t as g}from"./utils-DIo8iytt.js";import{n as _}from"./ui-store-9b7zzi3V.js";function v(e,t){if(e==null){let e=Error(t?`Expected ${t} to be defined`:`Expected value to be defined`);throw e.name=`ExpectDefinedError`,e}return e}function ee(e){typeof requestAnimationFrame==`function`?requestAnimationFrame(e):queueMicrotask(e)}var te=new class{pending=new Map;scheduled=!1;push(e,t,n){if(!t)return;let r=this.pending.get(e);r?(r.buffer+=t,r.flush=n):this.pending.set(e,{buffer:t,flush:n}),this.schedule()}schedule(){this.scheduled||(this.scheduled=!0,ee(()=>{this.scheduled=!1,this.drain()}))}drain(){if(this.pending.size===0)return;let e=Array.from(this.pending.entries());this.pending.clear();for(let[t,n]of e)n.buffer&&n.flush(t,n.buffer)}drop(e){this.pending.delete(e)}dropAll(){this.pending.clear()}flush(e){let t=this.pending.get(e);t&&(this.pending.delete(e),t.buffer&&t.flush(e,t.buffer))}flushAll(){this.drain()}},ne={maxReconnectAttempts:10,initialBackoffMs:1e3,maxBackoffMs:3e4,backoffMultiplier:2,jitterRatio:0,queueLimit:1e3,heartbeatIntervalMs:0,heartbeatTimeoutMs:0};function re(){return{phase:`idle`,reconnectAttempt:0,lastActivityAt:null,stopped:!1}}function ie(e){return e.stopped?e:{...e,phase:`connecting`}}function ae(e,t=Date.now()){return{...e,phase:`open`,reconnectAttempt:0,lastActivityAt:t,stopped:!1}}function oe(e,t=Date.now()){return{...e,lastActivityAt:t}}function se(e){return{...e,phase:`closed`,stopped:!0}}function ce(e){return{...e,phase:`idle`,reconnectAttempt:0,stopped:!1}}function le(e,t,n=Date.now(),r=Math.random){if(e.stopped||e.reconnectAttempt>=t.maxReconnectAttempts)return{state:{...e,phase:`closed`},plan:null};let i=e.reconnectAttempt+1,a=Math.min(t.initialBackoffMs*t.backoffMultiplier**(i-1),t.maxBackoffMs),o=(r()*2-1)*t.jitterRatio,s=Math.max(0,Math.round(a*(1+o)));return{state:{...e,phase:`reconnecting`,reconnectAttempt:i},plan:{attempt:i,delayMs:s,retryAt:n+s}}}var ue=`abort,ping,user_message,tool.confirm_result,topic.advice,completion.request,model.switch,model.refine,model.fallback_choice,autonomy.switch,context.clear,context.compact,context.debug,context.editor.open,context.editor.validate,context.editor.apply,context.mode.create,context.mode.delete,context.mode.switch,context.mode.update,context.modes.list,context.repair,mode.switch,modes.list,session.checkpoints,session.delete,session.focus,session.inspect,session.new,session.rename,session.resume,session.rewind,session.save,session.subscribe,sessions.list,side_effects.list,stats.get,todo.update,todos.clear,todos.get,todos.remove`.split(`,`),de=[`collab.join`,`collab.leave`,`collab.annotate`,`collab.resolve`,`collab.request_pause`,`collab.resume`,`collab.grant_control`,`collab.inject_tool`,`mailbox.action`,`mailbox.agents`,`mailbox.clear`,`mailbox.compact`,`mailbox.messages`,`mailbox.purge`,`mailbox.send`],fe=`brain.ask,brain.config.get,brain.config.set,brain.risk,brain.status,chronicle.facet,chronicle.facets,chronicle.graph,chronicle.metrics,chronicle.query,chronicle.status,config.doctor,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),pe=`auth.oauth.cancel,auth.oauth.code,auth.oauth.start,chimera.finding.transition,chimera.report.add_note,chimera.report.get,chimera.report.transition,chimera.reports.list,chimera.reports.query,mcp.add,mcp.disable,mcp.discover,mcp.enable,mcp.list,mcp.prompt.get,mcp.prompts,mcp.remove,mcp.resource.read,mcp.resources,mcp.restart,mcp.sleep,mcp.update,mcp.wake,provider.audit.get,prompts.content,prompts.create,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.create,skills.edit,skills.export,skills.install,skills.list,skills.uninstall,skills.update`.split(`,`),me=`goal-state.get,goal.addTask,goal.assess,goal.assignTask,goal.clear,goal.get,goal.list,goal.load,goal.moveTask,goal.pause,goal.resume,goal.retryTask,goal.revert,goal.runTask,goal.save,goal.selectPhase,goal.start,goal.state,goal.status,goal.stop,goal.taskStatus,goal.toggleAutonomous,plan.get,plan.item.update,plan.template_use,task.update,tasks.get`.split(`,`),he=`sdd.board.cancel_task,sdd.board.cleanup_worktrees,sdd.board.delete_task,sdd.board.destroy,sdd.board.get,sdd.board.list,sdd.board.pause,sdd.board.reassign,sdd.board.resume,sdd.board.retry,sdd.board.retry_all_failed,sdd.board.rollback,sdd.board.set_task_fallbacks,sdd.board.set_task_model,sdd.board.set_task_verification,sdd.board.split_task,sdd.board.stop,sdd.run.from_graph,sdd.run.from_spec,sdd.run.start,sdd.spec.approve,sdd.spec.discard,sdd.spec.get,sdd.spec.message,sdd.spec.rewind,sdd.spec.start,specs.get,specs.list,specs.taskStatus`.split(`,`),ge=`files.create,files.delete,files.list,files.move,files.read,files.rename,files.skeleton,files.tree,files.write,git.changes,git.commit,git.diff,git.discard,git.info,git.stage,git.unstage,projects.add,projects.list,projects.select,working_dir.set,worktree.cleanup,worktree.diff,worktree.merge,worktree.remove,worktree.scan,shell.open,process.kill,process.killAll,process.list,terminal.close,terminal.create,terminal.input,terminal.resize`.split(`,`),_e=`codebase.index.server.shutdown,connections.health,connections.service_action,diag.get,key.add,key.delete,key.set_active,key.update,prefs.get,prefs.update,provider.add,provider.clear_models,provider.custom_models.remove,provider.custom_models.set,provider.models,provider.models.search,provider.probe,provider.remove,provider.status.clear,provider.status.get,provider.status.retry,provider.undo_clear,provider.update,providers.list,providers.saved,system_prompt.get,tool.disable,tool.enable,tools.list,webui.shutdown`.split(`,`),ve=`error,log,pong,side_effects,agent.status_changed,agent.timeline.message,client.status_update,chimera.report_available,compaction.failed,completion.result,context.compacted,context.debug,context.editor.snapshot,context.editor.validation,context.editor.applied,context.mode.changed,context.modes.list,context.repaired,ctx.max_context,ctx.pct,delegate.completed,delegate.started,iteration.completed,iteration.limit_reached,iteration.started,model.refine_result,modes.list,provider.active_blocked,provider.error,provider.fallback,provider.fallback_pending,provider.model_switched,provider.response,provider.retry,provider.status_changed,provider.stream_error,provider.text_delta,provider.thinking_delta,run.result,session.checkpoints,session.damaged,session.end,session.inspect,session.rewound,session.resume_progress,session.run_state,session.start,session.stats,sessions.list,sessions.status_update,stats.get,token.cost_estimate_unavailable,token.threshold,tool.confirm_needed,tool.disabled,tool.enabled,tool.executed,tool.loop_detected,tool.progress,tool.started,topic.advice_result,tools.list,trust.persisted`.split(`,`),ye=[`collab.annotation.added`,`collab.annotation.resolved`,`collab.event`,`collab.injection.granted`,`collab.participant.joined`,`collab.participant.left`,`collab.pause.granted`,`collab.pause.released`,`collab.state`,`mailbox.action_result`,`mailbox.agent_registered`,`mailbox.agent_deregistered`,`mailbox.agents`,`mailbox.cleared`,`mailbox.compacted`,`mailbox.event`,`mailbox.messages`,`mailbox.sent`,`mailbox.purged`,`mailbox.received`,`subagent.budget_extended`,`subagent.event`],be=`brain.answer,brain.config,brain.event,brain.status,chronicle.error,chronicle.facet_result,chronicle.facets_result,chronicle.graph_result,chronicle.metrics_result,chronicle.query_result,chronicle.status_result,config.doctor.result,design.list,design.materialize,design.set,design.state,design.swap,design.tune,design.use,design.verify,memory.event,memory.list,memory.sage.backfillRecoverable,memory.sage.candidateResolve,memory.sage.delete,memory.sage.forFile,memory.sage.get,memory.sage.graph,memory.sage.list,memory.sage.listCandidates,memory.sage.listPage,memory.sage.recover,memory.sage.remember,memory.sage.searchBreakdown,memory.sage.update`.split(`,`),xe=`chimera.finding.updated,chimera.report.detail,chimera.report.note_added,chimera.report.updated,chimera.reports,mcp.content.error,mcp.content.selected,mcp.list,mcp.operation_result,mcp.prompts,mcp.resources,mcp.server.added,mcp.server.connected,mcp.server.disconnected,mcp.server.discovered,mcp.server.error,mcp.server.reconnected,mcp.server.removed,mcp.server.sleeping,mcp.server.updated,mcp.server.waking,provider.audit.history,prompts.content,prompts.created,prompts.favorite,prompts.journal,prompts.list,prompts.recent,prompts.search,prompts.used,skills.content,skills.created,skills.edited,skills.exported,skills.installed,skills.list,skills.uninstalled,skills.updated`.split(`,`),Se=`budget.decision,budget.threshold_reached,coordinator.stats,coordinator.status,eternal.iteration,fleet.concurrency_update,goal-state.updated,goal.assess.result,goal.list,goal.paused,goal.resumed,goal.saved,goal.error,goal.stopped,goal.failed,goal.completed,goal.cleared,goal.reverted,goal.progress,goal.state,in_flight.ended,in_flight.started,plan.updated,task.completed,task.failed,task.pending,task.started,tasks.updated,todos.cleared,todos.updated`.split(`,`),Ce=[`kanban.task.activity`,`sdd.board.lifecycle_result`,`sdd.board.list`,`sdd.board.snapshot`,`sdd.run.started`,`sdd.spec.agent_text`,`sdd.spec.error`,`sdd.spec.snapshot`,`specs.detail`,`specs.list`],we=[`consensus.vote_cast`,`consensus.vote_initiated`,`consensus.vote_resolved`,`cron.job_fired`,`cron.snapshot`,`techstack.job.cancelled`,`techstack.job.failed`,`techstack.job.progress`,`techstack.job.started`,`techstack.report.delivered`,`techstack.report.ready`,`techstack.snapshot.updated`,`techstack.workspace.completed`],Te=`checkpoint.written,codemap.file_event,codemap.index_updated,codemap.tool_executed,codemap.tool_started,file.saved,files.created,files.deleted,files.list,files.moved,files.read,files.renamed,files.skeleton_result,files.tree,files.tree.changed,files.written,git.action_result,git.changes,git.diff,git.info,process.list,projects.added,projects.list,projects.selected,terminal.exit,terminal.output,working_dir.changed,worktree.cleanup_result,worktree.diff_result,worktree.event,worktree.merge_result,worktree.orphans,worktree.state`.split(`,`),Ee=[`auth.oauth.status`,`codebase.index.server.shutdown_result`,`connections.auto_heal_status`,`connections.health_error`,`connections.health_result`,`connections.service_action_result`,`diag.get`,`key.operation_result`,`model.switch_result`,`prefs.updated`,`provider.catalog`,`provider.models`,`provider.models.search_result`,`provider.probe`,`provider.status.snapshot`,`providers.saved`,`system_prompt.info`],De=[...ue,...de,...ge,..._e,...me,...he,...fe,...pe],Oe=[...ve,...ye,...Te,...Ee,...Se,...Ce,...we,...be,...xe],ke=new Set(De),Ae=new Set(Oe);function je(e,t){return(t===`client`?ke:Ae).has(e)||e.startsWith(`kanban.`)&&e.length>7||e.startsWith(`agent-roster.`)&&e.length>13}var Me=new Set([`__proto__`,`constructor`,`prototype`]),Ne=32;function Pe(e,t,n){if(n>Ne)return{code:`too_deep`,message:`Protocol payload exceeds the nesting limit`,path:t};if(typeof e!=`object`||!e)return null;for(let r of Object.keys(e)){let i=`${t}.${r}`;if(Me.has(r))return{code:`unsafe_key`,message:`Unsafe protocol key: ${r}`,path:i};let a=Pe(e[r],i,n+1);if(a)return a}return null}function Fe(e,t){if(typeof e!=`object`||!e||Array.isArray(e))return{ok:!1,issue:{code:`invalid_envelope`,message:`Protocol message must be an object`}};let n=e;if(typeof n.type!=`string`||n.type.length===0)return{ok:!1,issue:{code:`invalid_type`,message:`Protocol message type must be a non-empty string`}};if(!je(n.type,t))return{ok:!1,issue:{code:`unknown_type`,message:`Unknown ${t} message: ${n.type}`}};if(t===`server`&&!Object.hasOwn(n,`payload`))return{ok:!1,issue:{code:`invalid_envelope`,message:`Server protocol messages require a payload`}};let r=Pe(n,`$`,0);return r?{ok:!1,issue:r}:{ok:!0,message:e}}function Ie(e,t){try{return Fe(JSON.parse(e),t)}catch{return{ok:!1,issue:{code:`invalid_envelope`,message:`Protocol frame is not valid JSON`}}}}function Le(e){return typeof e==`object`&&e&&!Array.isArray(e)?e:null}function y(e,t=``){return typeof e==`string`?e:t}function Re(e,t=0){return typeof e==`number`&&Number.isFinite(e)?e:t}function ze(e){let t=Le(e.payload);if(!t)return null;switch(e.type){case`provider.thinking_delta`:{let e=y(t.text);return e?{kind:`thinking-delta`,text:e}:null}case`provider.text_delta`:{let e=y(t.text);return e?{kind:`text-delta`,text:e,messageId:y(t.messageId)}:null}case`provider.response`:return{kind:`response`,content:t.content,stopReason:y(t.stopReason)};case`run.result`:return{kind:`run-result`,status:y(t.status),iterations:Re(t.iterations,1),...typeof t.finalText==`string`?{finalText:t.finalText}:{}};case`error`:return{kind:`error`,message:y(t.message,`Run failed`)};default:return null}}function Be(e){let t=Le(e.payload);if(!t)return null;if(e.type===`tool.started`){let e=y(t.name,`tool`);return{kind:`started`,id:y(t.id,e),name:e,input:t.input,messageId:y(t.messageId)}}if(e.type===`tool.progress`){let e=Le(t.event);return{kind:`progress`,id:y(t.id),name:y(t.name,`tool`),eventType:y(e?.type),text:y(e?.text).trim()}}return e.type===`tool.executed`?{kind:`executed`,id:y(t.id),name:y(t.name),ok:t.ok!==!1,durationMs:Re(t.durationMs),...typeof t.output==`string`?{output:t.output}:{},...Array.isArray(t.sage)?{sage:t.sage.filter(e=>typeof e==`string`)}:{}}:null}function Ve(e){if(!(typeof e!=`number`||!Number.isFinite(e)))return e}function He(e){return typeof e==`string`&&e.length>0?e:void 0}function Ue(e){let t=Le(e.payload);if(!t)return null;switch(e.type){case`fleet.concurrency_update`:return{kind:`concurrency`,active:Re(t.fleetConcurrency),maximum:Re(t.fleetConcurrencyMax),maxSpawns:Ve(t.maxSpawns),usedSpawns:Ve(t.usedSpawns),remainingSpawns:Ve(t.remainingSpawns),maxSpawnsSource:He(t.maxSpawnsSource),maxConcurrentSource:He(t.maxConcurrentSource),effectiveSource:He(t.effectiveSource),checkpointMaxSpawns:Ve(t.checkpointMaxSpawns),ceilingMismatch:t.ceilingMismatch===!0||void 0};case`client.status_update`:return{kind:`client-status`,status:t};case`sessions.status_update`:return{kind:`sessions`,sessions:Array.isArray(t.sessions)?t.sessions:[]};case`coordinator.stats`:return{kind:`coordinator`,agents:Array.isArray(t.subagentStatuses)?t.subagentStatuses.filter(e=>Le(e)!==null):[]};default:return null}}var We=[`protocol.directional-decoder`,`protocol.recursive-key-safety`,`chronicle.query`,`chronicle.facet`,`chronicle.facets`,`chronicle.graph`,`chronicle.metrics`,`chronicle.status`,`connections.health`,`context.topic-boundary`,`sdd.interview.continuity`,`sdd.run.from_graph`];function Ge(e){let t=e.protocolVersion,n=t===void 0,r=n?1:Math.min(t,1),i=n||Number.isInteger(t)&&t>=1,a=new Set(e.protocolCapabilities??[]);return{compatible:i,legacyPeer:n,version:r,capabilities:We.filter(e=>a.has(e))}}function Ke(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e.steps;if(!Array.isArray(t))return[];let n=[];for(let e of t){if(!e||typeof e!=`object`||Array.isArray(e))continue;let t=e.text;if(typeof t!=`string`||!t.trim())continue;let r=n.length===0&&e.auto===!0;if(n.push(r?{index:n.length+1,text:t.trim(),auto:!0}:{index:n.length+1,text:t.trim()}),n.length>=Xe)break}return n}function qe(e){return e!==`tool_use`&&e!==`tool_call`}var Je=/<nextsteps\b[^>]*>\s*\n+/i,Ye=/^(?:(\d+)[.)]\s*|[-*•]\s*)(.+?)(\s+auto="true")?$/,Xe=6;function Ze(e,t=!0){return t?et(e):$e(e)}function Qe(e,t,n,r){e.push(r?{index:t,text:n,auto:!0}:{index:t,text:n})}function $e(e){let t=e.split(`
|
|
2
|
+
`),n=[],r=new Set;for(let e of t){let t=e.trim();if(!t)continue;let i=Ye.exec(t);if(!i)continue;let a=i[1],o=i[2].trim(),s;if(s=a===void 0?n.length+1:Number.parseInt(a,10),r.has(s))continue;r.add(s);let c=!!i[3]&&n.length===0&&s===1;if(Qe(n,s,o,c),n.length>=Xe)break}return{steps:n,texts:n.map(e=>e.text),stripped:e,autoTexts:n.filter(e=>e.auto).map(e=>e.text)}}function et(e){let t=Je.exec(e);if(!t)return{steps:[],texts:[],stripped:e,autoTexts:[]};let n=t.index+t[0].length,r=e.slice(n),i=r.split(`
|
|
3
|
+
`),a=[],o=new Set;for(let e of i){let t=e.trim();if(!t)continue;let n=Ye.exec(t);if(!n)break;let r=n[1],i=n[2].trim(),s;if(s=r===void 0?a.length+1:Number.parseInt(r,10),o.has(s))continue;o.add(s);let c=!!n[3]&&a.length===0&&s===1;if(Qe(a,s,i,c),a.length>=Xe)break}if(a.length===0||!r.includes(`</nextsteps>`))return{steps:[],texts:[],stripped:e,autoTexts:[]};let s=a.map(e=>e.text),c=a.filter(e=>e.auto).map(e=>e.text),l=t.index,u=t[0].length+tt(r,a.length);return{steps:a,texts:s,stripped:(e.slice(0,l)+e.slice(l+u)).replace(/\n{3,}/g,`
|
|
4
|
+
|
|
5
|
+
`).trim(),autoTexts:c}}function tt(e,t){let n=e.indexOf(`</nextsteps>`);if(n!==-1){let t=n+12;return e[t]===`
|
|
6
|
+
`&&(t+=1),t}let r=e.split(`
|
|
7
|
+
`),i=0,a=0;for(let e of r){let n=e.trim();if(!n||!Ye.exec(n))break;if(i+=e.length+1,a++,a>=t){--i;break}}return i}function nt(e){return e.replace(/<next_?steps\b[^>]*>[\s\S]*?<\/next_?steps>/gi,``).replace(/<next_?steps\b[^>]*\/?>/gi,``).replace(/\n{3,}/g,`
|
|
8
|
+
|
|
9
|
+
`).trim()}var rt=new Map;function b(e){let t=rt.get(e);t!==void 0&&(clearTimeout(t),rt.delete(e))}var x=0;function it(e){x=e}function at(){return x+=1,x}function ot(e){if(typeof e!=`object`||!e)return null;let t=e;if(typeof t.text!=`string`||t.mode!==`btw`&&t.mode!==`steer`&&t.mode!==`queue`||typeof t.addedAt!=`number`||!Number.isFinite(t.addedAt))return null;let n=typeof t.itemId==`number`&&Number.isSafeInteger(t.itemId)&&t.itemId>0?t.itemId:at();return x=Math.max(x,n),{text:t.text,mode:t.mode,addedAt:t.addedAt,itemId:n,...t.images?{images:t.images}:{}}}var st=1800;function ct(e){if(!e)return e;let t=e.split(/\n{2,}/),n=[];for(let e of t)n.length>0&&n[n.length-1]?.trim()===e.trim()||n.push(e);return n.map(e=>{let t=e.split(`
|
|
10
|
+
`),n=[];for(let e of t)n.length>0&&e.trim().length>0&&n[n.length-1]?.trim()===e.trim()||n.push(e);return n.join(`
|
|
11
|
+
`)}).join(`
|
|
12
|
+
|
|
13
|
+
`)}var lt=2097152;function S(e,t=lt){if(e.length<=t)return e;if(t<=55){let n=Math.ceil(t/2);return e.slice(0,n)+e.slice(e.length-(t-n))}let n=t-55,r=Math.ceil(n/2);return e.slice(0,r)+`
|
|
14
|
+
|
|
15
|
+
… [older streamed text omitted to protect memory] …
|
|
16
|
+
|
|
17
|
+
`+e.slice(e.length-(n-r))}var ut=new WeakMap;function dt(e){if(e===void 0)return 0;let t=typeof e==`object`&&!!e;if(t){let t=ut.get(e);if(t!==void 0)return t}let n;try{n=JSON.stringify(e).length*2}catch{n=lt*2}return t&&ut.set(e,n),n}function ft(e,t){let n=S(e.content,t),r=e.toolResult===void 0?void 0:S(e.toolResult,t),i=e.thinkingLog?{...e.thinkingLog,text:S(e.thinkingLog.text,t)}:void 0,a=dt(e.toolInput)>t*2?`[tool input omitted from live transcript to protect memory]`:e.toolInput;return n===e.content&&r===e.toolResult&&i?.text===e.thinkingLog?.text&&a===e.toolInput?e:{...e,content:n,...r===void 0?{}:{toolResult:r},...i?{thinkingLog:i}:{},...a===void 0?{}:{toolInput:a}}}function pt(e){let t=384+e.content.length*2+(e.toolResult?.length??0)*2+(e.thinkingLog?.text.length??0)*2+dt(e.toolInput);for(let n of e.attachments??[])t+=(n.dataUrl?.length??0)*2+192;for(let n of e.sageLines??[])t+=n.length*2;for(let n of e.progressLines??[])t+=n.length*2;return t}function mt(e,t={}){let n=Math.max(1,Math.floor(t.maxMessages??1e3)),r=Math.max(1,Math.floor(t.maxBytes??50331648)),i=Math.max(1,Math.floor(t.maxFieldChars??2097152)),a=[],o=0;for(let t=e.length-1;t>=0&&a.length<n;--t){let n=ft(e[t],i),s=pt(n);if(s>r&&n.attachments?.some(e=>e.dataUrl)&&(n={...n,attachments:n.attachments.map(e=>({...e,dataUrl:void 0}))},s=pt(n)),a.length>0&&o+s>r)break;a.push(n),o+=s}return a.reverse(),a}function C(e){let t=new Map;for(let n of e)n.role===`tool`&&n.toolUseId&&t.set(n.toolUseId,n.id);return t}function ht(e){let t=new Map;for(let n of e)n.role!==`tool`||!n.toolUseId||t.set(n.toolUseId,{id:n.toolUseId,name:n.toolName??`tool`,input:n.toolInput,output:n.toolResult,durationMs:n.toolDurationMs,ok:n.isError!==!0,startedAt:n.timestamp,...n.toolResult===void 0?{}:{completedAt:n.timestamp}});return t}var w=4,T=`__unbound__`;function gt(){return{messages:[],currentAssistantMessageId:null,currentToolId:null,isLoading:!1,abortController:null,executions:new Map,toolMessageIdsByUseId:new Map,queue:[],runStart:null,refining:!1,pendingRefinement:null,thinkingBuffer:``,thinkingStartedAt:null,thinkingLogBuffer:``,thinkingLogStartedAt:null,pendingConfirm:null,pendingFallback:null}}var _t=gt(),E=o()(a(()=>({lanes:{},activeSessionId:T}),{name:`wrongstack-chat-lanes`,version:2,partialize:e=>({lanes:Object.fromEntries(Object.entries(e.lanes).slice(0,w).map(([e,t])=>[e,{messages:t.messages.slice(-200).map(e=>e.attachments?.some(e=>e.dataUrl)?{...e,attachments:e.attachments.map(e=>({...e,dataUrl:void 0}))}:e),queue:t.queue.filter(e=>e.alreadyDispatched!==!0).map(e=>e.images?{...e,images:void 0}:e),thinkingLogBuffer:t.thinkingLogBuffer}]))}),merge:(e,t)=>{let n=e??{},r={};for(let[e,t]of Object.entries(n.lanes??{}).slice(0,w)){let n=gt();n.messages=mt(Array.isArray(t.messages)?t.messages:[]),n.executions=ht(n.messages),n.toolMessageIdsByUseId=C(n.messages),n.queue=(Array.isArray(t.queue)?t.queue:[]).flatMap(e=>{let t=ot(e);return t?(it(Math.max(t.itemId,0)),[t]):[]}),n.thinkingLogBuffer=typeof t.thinkingLogBuffer==`string`?t.thinkingLogBuffer:``,r[e]=n}return{...t,lanes:r,activeSessionId:T}},onRehydrateStorage:()=>(e,t)=>{t||typeof window<`u`&&(window.__wrongstackChatRehydrated=!0)}}));function D(e){return e?E.getState().lanes[e]??_t:_t}function vt(e){return e?e in E.getState().lanes:!1}function yt(){return Object.keys(E.getState().lanes)}function bt(e){return e?(E.getState().lanes[e]||E.setState(t=>({lanes:{...t.lanes,[e]:gt()}})),e):T}var xt=new Set;function St(e){return xt.add(e),()=>{xt.delete(e)}}function Ct(e){let t=E.getState().lanes[e];if(t){for(let e of t.queue)e.itemId!==void 0&&b(e.itemId);E.setState(t=>{let n={...t.lanes};return delete n[e],{lanes:n}})}Dt.delete(e);for(let t of xt)try{t(e)}catch{}}function wt(e){if(!e||e===`__unbound__`)return;let t=E.getState(),n=t.lanes[T];if(!n)return;let r=t.lanes[e],i=!r||r.messages.length===0&&r.queue.length===0,a=n.messages.length===0&&n.queue.length===0;Dt.delete(T),E.setState(t=>{let r={...t.lanes};return delete r[T],i&&!a?r[e]=n:r[e]||(r[e]=gt()),{lanes:r}})}function Tt(e){let t=e||`__unbound__`,n=E.getState();n.activeSessionId===t&&n.lanes[t]||(bt(t),E.setState({activeSessionId:t}))}function Et(){return E.getState().activeSessionId}function O(e,t){E.setState(n=>{let r=n.lanes[e]??gt(),i=t(r);return i?{lanes:{...n.lanes,[e]:{...r,...i}}}:n.lanes[e]?{}:{lanes:{...n.lanes,[e]:r}}})}var Dt=new Map;function Ot(e){let{lanes:t}=E.getState();for(let[n,r]of Object.entries(t))r.pendingConfirm?.id===e&&O(n,()=>({pendingConfirm:null}))}function kt(e){let{lanes:t}=E.getState();for(let[n,r]of Object.entries(t))r.pendingFallback?.requestId===e&&O(n,()=>({pendingFallback:null}))}function k(e){let t=e||`__unbound__`,n=Dt.get(t);if(n)return n;let r=()=>E.getState().lanes[t]??_t,i={sessionId:t,get messages(){return r().messages},get currentAssistantMessageId(){return r().currentAssistantMessageId},get currentToolId(){return r().currentToolId},get isLoading(){return r().isLoading},get abortController(){return r().abortController},get executions(){return r().executions},get toolMessageIdsByUseId(){return r().toolMessageIdsByUseId},get queue(){return r().queue},get runStart(){return r().runStart},get refining(){return r().refining},get pendingRefinement(){return r().pendingRefinement},get thinkingBuffer(){return r().thinkingBuffer},get thinkingStartedAt(){return r().thinkingStartedAt},get thinkingLogBuffer(){return r().thinkingLogBuffer},get thinkingLogStartedAt(){return r().thinkingLogStartedAt},get pendingConfirm(){return r().pendingConfirm},patch:e=>O(t,()=>e),addMessage:e=>{let n=e.id??`msg_${Date.now()}_${h().slice(0,8)}`,r={...e,id:n,timestamp:e.timestamp??Date.now()};return O(t,t=>{let i=mt([...t.messages,r]),a=C(i),o=t.executions;if(o.size>0){let e=new Map,t=!1;for(let[n,r]of o)a.has(n)?e.set(n,r):t=!0;t&&(o=e)}if(r.role===`tool`&&r.toolUseId){let e=new Map(a);e.set(r.toolUseId,n),a=e}return{messages:i,toolMessageIdsByUseId:a,...o===t.executions?{}:{executions:o},currentAssistantMessageId:e.role===`assistant`?n:t.currentAssistantMessageId}}),n},setMessages:e=>{let n=mt(e);O(t,()=>({messages:n,currentAssistantMessageId:null,currentToolId:null,executions:ht(n),toolMessageIdsByUseId:C(n),thinkingBuffer:``,thinkingStartedAt:null,thinkingLogBuffer:``,thinkingLogStartedAt:null}))},updateMessage:(e,n)=>O(t,t=>({messages:t.messages.map(t=>t.id===e?{...t,...n}:t)})),appendToMessage:(e,n)=>O(t,t=>({messages:t.messages.map(t=>t.id===e?{...t,content:S(t.content+n)}:t)})),finalizeMessage:(e,n)=>{let r=n?.final!==!1;O(t,t=>({messages:t.messages.map(t=>{if(t.id!==e)return t;if(t.role!==`assistant`)return{...t,content:ct(t.content),streaming:!1};let n=Ze(t.content),i=r&&n.steps.length>0?{steps:n.steps}:void 0;return{...t,content:ct(n.stripped),streaming:!1,...i?{nextSteps:i}:{}}})}))},setToolResult:(e,n,r)=>O(t,t=>({messages:t.messages.map(t=>t.id===e?{...t,toolResult:S(n),isError:!r,progressLines:void 0}:t)})),appendToolProgress:(e,t)=>{i.appendToolProgressLines(e,[t])},appendToolProgressLines:(e,n)=>{n.length!==0&&O(t,t=>({messages:t.messages.map(t=>{if(t.id!==e)return t;let r=t.progressLines??[];return r.push(...n),r.length>30&&r.splice(0,r.length-30),{...t,progressLines:r}})}))},getToolMessageId:e=>r().toolMessageIdsByUseId.get(e),setToolResultByUseId:(e,t,n)=>{let a=r().toolMessageIdsByUseId.get(e);a&&i.setToolResult(a,t,n)},appendToolProgressLinesByUseId:(e,t)=>{let n=r().toolMessageIdsByUseId.get(e);n&&i.appendToolProgressLines(n,t)},setLoading:e=>O(t,()=>({isLoading:e})),setAbortController:e=>O(t,()=>({abortController:e})),clearMessages:()=>O(t,()=>({messages:[],currentAssistantMessageId:null,currentToolId:null,executions:new Map,toolMessageIdsByUseId:new Map,thinkingBuffer:``,thinkingStartedAt:null,thinkingLogBuffer:``,thinkingLogStartedAt:null,pendingConfirm:null})),setCurrentAssistantMessage:e=>O(t,()=>({currentAssistantMessageId:e})),setCurrentToolId:e=>O(t,()=>({currentToolId:e})),truncateAfter:e=>O(t,t=>{let n=t.messages.findIndex(t=>t.id===e);if(n===-1)return;let r=t.messages.slice(0,n+1);return{messages:r,currentAssistantMessageId:null,currentToolId:null,toolMessageIdsByUseId:C(r)}}),addExecution:e=>O(t,t=>{let n=new Map(t.executions);return n.set(e.id,e),{executions:n}}),updateExecution:(e,n)=>O(t,t=>{let r=new Map(t.executions),i=r.get(e);if(i)return r.set(e,{...i,...n}),{executions:r}}),setRefining:e=>O(t,()=>({refining:e})),setPendingConfirm:e=>O(t,()=>({pendingConfirm:e})),setPendingFallback:e=>O(t,()=>({pendingFallback:e})),setPendingRefinement:(e,n,r=`queue`)=>O(t,()=>({pendingRefinement:e===null?null:{text:e,images:n??[],mode:r}})),enqueue:(e,n=`queue`,r,a)=>{let o=Date.now(),s=at();if(O(t,t=>({queue:[...t.queue,{text:e,mode:n,addedAt:o,itemId:s,...r?.length?{images:r}:{},...a?{alreadyDispatched:!0}:{}}]})),!a)return;let c=setTimeout(()=>{rt.delete(s);let e=null;O(t,t=>{let n=t.queue.find(e=>e.itemId===s&&e.alreadyDispatched===!0);if(n&&n.bubbleAdded!==!0){let t=n.images??[];e={role:`user`,content:n.text,...t.length>0?{attachments:t.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}}}return{queue:t.queue.filter(e=>e.itemId!==s||e.alreadyDispatched!==!0)}}),e&&i.addMessage(e)},st);rt.set(s,c)},dequeue:()=>{let e=r().queue;if(e.length===0)return null;let[n,...i]=e;return n?.itemId!==void 0&&b(n.itemId),O(t,()=>({queue:i})),v(n)},dequeueDrainable:()=>{let e=[],n={popped:null},r=t=>{let n=t.images??[];e.push({role:`user`,content:t.text,...n.length>0?{attachments:n.map(e=>({id:e.id,kind:`image`,dataUrl:e.dataUrl,mediaType:e.mediaType,bytes:e.bytes,name:e.name}))}:{}})};O(t,t=>{let i=t.queue.findIndex(e=>e.alreadyDispatched!==!0);if(i===-1){for(let e of t.queue)e.alreadyDispatched===!0&&e.bubbleAdded!==!0&&r(e);return e.length===0?void 0:{queue:t.queue.filter(e=>e.alreadyDispatched!==!0||e.bubbleAdded===!0)}}for(let e=0;e<i;e+=1){let n=t.queue[e];n.bubbleAdded!==!0&&r(n)}n.popped=t.queue[i];let a=t.queue.map((e,t)=>t<i&&e.bubbleAdded!==!0&&e.alreadyDispatched===!0?{...e,bubbleAdded:!0}:e);return{queue:[...a.slice(0,i),...a.slice(i+1)]}});for(let t of e)i.addMessage(t);let a=n.popped;return a?.itemId!==void 0&&b(a.itemId),a},removeQueued:e=>O(t,t=>{let n=t.queue[e];return n?.itemId!==void 0&&b(n.itemId),{queue:t.queue.filter((t,n)=>n!==e)}}),clearQueue:()=>O(t,e=>{for(let t of e.queue)t.itemId!==void 0&&b(t.itemId);return{queue:[]}}),removeMessage:e=>O(t,t=>{let n=t.messages.filter(t=>t.id!==e);return{messages:n,toolMessageIdsByUseId:C(n)}}),updateLastUserMessage:e=>O(t,t=>{for(let n=t.messages.length-1;n>=0;n--)if(t.messages[n].role===`user`){let r=[...t.messages];return r[n]={...r[n],content:e},{messages:r}}}),setRunStart:e=>O(t,()=>({runStart:e})),appendThinking:e=>O(t,t=>({thinkingBuffer:S(t.thinkingBuffer+e),thinkingStartedAt:t.thinkingStartedAt??Date.now(),thinkingLogBuffer:S(t.thinkingLogBuffer+e),thinkingLogStartedAt:t.thinkingLogStartedAt??Date.now()})),clearThinking:()=>O(t,()=>({thinkingBuffer:``,thinkingStartedAt:null})),flushThinkingLog:e=>{let t=r(),n=t.thinkingLogBuffer.trim();if(!n)return;let a=t.thinkingLogStartedAt??Date.now();i.addMessage({role:`system`,content:``,thinkingLog:{iteration:e,text:n,startedAt:a,durationMs:Math.max(0,Date.now()-a)}}),i.clearThinkingLog()},clearThinkingLog:()=>O(t,()=>({thinkingLogBuffer:``,thinkingLogStartedAt:null}))};return Dt.set(t,i),i}function At(e,t){let n=k(e);for(let[e,r]of Object.entries(t))typeof r==`function`&&(n[e]=r)}function jt(){return k(E.getState().activeSessionId)}var Mt={listTools(e){this.send({type:`tools.list`},e)},listMemory(e){this.send({type:`memory.list`},e)},listSageMemories(e){this.send({type:`memory.sage.list`},e)},listSageMemoriesPage(e,t){this.send({type:`memory.sage.listPage`,payload:{...e}},t)},listMemoryCandidates(e,t){this.send({type:`memory.sage.listCandidates`,payload:{...e}},t)},searchSageBreakdown(e,t){this.send({type:`memory.sage.searchBreakdown`,payload:{query:e.query,...e.limit===void 0?{}:{limit:e.limit},...e.includeStale===void 0?{}:{includeStale:e.includeStale}}},t)},getSage(e,t){this.send({type:`memory.sage.get`,payload:{id:e}},t)},getSageGraph(e,t,n){this.send({type:`memory.sage.graph`,payload:{query:e,...t}},n)},updateSage(e,t,n){this.send({type:`memory.sage.update`,payload:{id:e,...t}},n)},deleteSage(e,t){this.send({type:`memory.sage.delete`,payload:{id:e,force:!0,...t===void 0?{}:{reason:t}}})},rememberSage(e,t){this.send({type:`memory.sage.remember`,payload:e},t)},findMemoriesForFile(e,t){this.send({type:`memory.sage.forFile`,payload:e},t)},recoverSage(e,t){this.send({type:`memory.sage.recover`,payload:e},t)},resolveMemoryCandidate(e,t){this.send({type:`memory.sage.candidateResolve`,payload:e},t)},backfillRecoverable(e,t){this.send({type:`memory.sage.backfillRecoverable`,payload:e},t)},listMcpServers(){this.send({type:`mcp.list`})},addMcpServer(e){this.send({type:`mcp.add`,payload:e})},removeMcpServer(e){this.send({type:`mcp.remove`,payload:{name:e}})},updateMcpServer(e){this.send({type:`mcp.update`,payload:e})},wakeMcpServer(e){this.send({type:`mcp.wake`,payload:{name:e}})},sleepMcpServer(e){this.send({type:`mcp.sleep`,payload:{name:e}})},discoverMcpServer(e){this.send({type:`mcp.discover`,payload:{name:e}})},listMcpResources(e,t=!1){this.send({type:`mcp.resources`,payload:{name:e,refresh:t}})},listMcpPrompts(e,t=!1){this.send({type:`mcp.prompts`,payload:{name:e,refresh:t}})},readMcpResource(e,t){this.send({type:`mcp.resource.read`,payload:{name:e,uri:t}})},getMcpPrompt(e,t,n){this.send({type:`mcp.prompt.get`,payload:{name:e,prompt:t,...n===void 0?{}:{arguments:n}}})},enableMcpServer(e){this.send({type:`mcp.enable`,payload:{name:e}})},disableMcpServer(e){this.send({type:`mcp.disable`,payload:{name:e}})},restartMcpServer(e){this.send({type:`mcp.restart`,payload:{name:e}})},listSkills(e){this.send({type:`skills.list`},e)},getSkillContent(e,t){this.send({type:`skills.content`,payload:{name:e,source:t}})},installSkill(e,t){this.send({type:`skills.install`,payload:{ref:e,global:t}})},uninstallSkill(e,t){this.send({type:`skills.uninstall`,payload:{name:e,global:t}})},checkForUpdates(e,t){this.send({type:`skills.update`,payload:{name:e,global:t}})},createSkill(e,t,n){this.send({type:`skills.create`,payload:{name:e,description:t,scope:n}})},editSkill(e,t){this.send({type:`skills.edit`,payload:{name:e,body:t}})},exportAllSkills(){this.send({type:`skills.export`})},getDiag(e){this.send({type:`diag.get`,payload:this.withSession({})},e)},getStats(e){this.send({type:`stats.get`,payload:this.withSession({})},e)},saveSession(){this.send({type:`session.save`,payload:this.withSession({})})},resumeSessionById(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})},focusSessionById(e){this.send({type:`session.focus`,payload:this.withSession({id:e})})},listModes(){this.send({type:`modes.list`})},switchMode(e){this.send({type:`mode.switch`,payload:this.withSession({id:e})})},listFiles(e,t,n){this.send({type:`files.list`,payload:{query:e,limit:t,path:n}})},requestCompletion(e){this.send({type:`completion.request`,payload:e})},getTodos(){this.send({type:`todos.get`,payload:this.withSession({})})},clearTodos(){this.send({type:`todos.clear`,payload:this.withSession({})})},removeTodo(e){let t=typeof e==`number`?{index:e}:{id:e};this.send({type:`todos.remove`,payload:this.withSession(t)})},updateTodoStatus(e,t){this.send({type:`todo.update`,payload:this.withSession({id:e,status:t})})},getTasks(){this.send({type:`tasks.get`,payload:this.withSession({})})},updateTaskStatus(e,t){this.send({type:`task.update`,payload:this.withSession({id:e,status:t})})},getPlan(){this.send({type:`plan.get`,payload:this.withSession({})})},updatePlanItem(e,t){this.send({type:`plan.item.update`,payload:this.withSession({target:e,status:t})})},listSessions(e=50){this.send({type:`sessions.list`,payload:this.withSession({limit:e})})},deleteSession(e){this.send({type:`session.delete`,payload:this.withSession({id:e})})},renameSession(e,t){this.send({type:`session.rename`,payload:{id:e,name:t}})},inspectSession(e){this.send({type:`session.inspect`,payload:{id:e}})},setWorkingDir(e){this.send({type:`working_dir.set`,payload:{path:e}})},resumeSession(e){this.send({type:`session.resume`,payload:this.withSession({id:e})})},ping(){this.send({type:`ping`})},refineModel(e,t){this.send({type:`model.refine`,payload:this.withSession({text:e,...t?.timeoutMs===void 0?{}:{timeoutMs:t.timeoutMs},...t?.provider===void 0?{}:{provider:t.provider},...t?.model===void 0?{}:{model:t.model},...t?.previousRefined===void 0?{}:{previousRefined:t.previousRefined},...t?.previousEnglish===void 0?{}:{previousEnglish:t.previousEnglish},...t?.retryFeedback===void 0?{}:{retryFeedback:t.retryFeedback}})})}};function Nt(e){Object.assign(e.prototype,Mt)}function Pt(e){return{type:`provider.clear_models`,payload:{providerId:e}}}function Ft(e,t){return{type:`provider.undo_clear`,payload:{providerId:e,previousModels:[...t]}}}function It(e){return{type:`provider.update`,payload:e}}var Lt={getGitInfo(){this.send({type:`git.info`})},getGitChanges(){this.send({type:`git.changes`})},getGitDiff(e){this.send({type:`git.diff`,payload:{path:e}})},stageGit(e){let t=Array.isArray(e)?e:[e];this.send({type:`git.stage`,payload:{paths:t}})},unstageGit(e){let t=Array.isArray(e)?e:[e];this.send({type:`git.unstage`,payload:{paths:t}})},discardGit(e){let t=Array.isArray(e)?e:[e];this.send({type:`git.discard`,payload:{paths:t}})},commitGit(e){this.send({type:`git.commit`,payload:{message:e}})},getProviderStatus(){this.send({type:`provider.status.get`})},getProviderAuditHistory(e){this.send({type:`provider.audit.get`,payload:{count:e}})},retryProviderModel(e,t){this.send({type:`provider.status.retry`,payload:{providerId:e,model:t}})},clearProviderStatus(e,t){this.send({type:`provider.status.clear`,payload:{providerId:e,model:t}})},newSession(e){this.send({type:`session.new`,payload:{...e??{}}})},getSystemPrompt(){this.send({type:`system_prompt.get`,payload:this.withSession({})})},setSystemPromptVariant(e){this.send({type:`prefs.update`,payload:this.withSession({systemPromptVariant:e})})},listProviders(){this.send({type:`providers.list`})},listProviderModels(e){this.send({type:`provider.models`,payload:{providerId:e}})},listSavedProviders(){this.send({type:`providers.saved`})},searchProviderModels(e,t){this.send({type:`provider.models.search`,payload:{query:e,...t===void 0?{}:{limit:t}}})},addKey(e,t,n){this.send({type:`key.add`,payload:{providerId:e,label:t,apiKey:n}})},updateKey(e,t,n){this.send({type:`key.update`,payload:{providerId:e,label:t,apiKey:n}})},deleteKey(e,t){this.send({type:`key.delete`,payload:{providerId:e,label:t}})},setActiveKey(e,t){this.send({type:`key.set_active`,payload:{providerId:e,label:t}})},addProvider(e,t,n,r,i,a){this.send({type:`provider.add`,payload:{id:e,family:t,baseUrl:n,apiKey:r,...i?{models:i}:{},...a?{customModels:a}:{}}})},removeProvider(e){this.send({type:`provider.remove`,payload:{providerId:e}})},startOAuth(e,t){this.send({type:`auth.oauth.start`,payload:t?{kind:e,providerId:t}:{kind:e}})},submitOAuthCode(e,t){this.send({type:`auth.oauth.code`,payload:{kind:e,input:t}})},cancelOAuth(e){this.send({type:`auth.oauth.cancel`,payload:{kind:e}})},probeProvider(e,t){this.send({type:`provider.probe`,payload:t===void 0?{providerId:e}:{providerId:e,timeoutMs:t}})},clearProviderModels(e){this.send(Pt(e))},undoProviderClear(e,t){this.send(Ft(e,t))},setCustomModel(e,t,n){this.send({type:`provider.custom_models.set`,payload:{providerId:e,modelId:t,customModel:n}})},removeCustomModel(e,t){this.send({type:`provider.custom_models.remove`,payload:{providerId:e,modelId:t}})},updateProvider(e){this.send(It(e))},clearContext(){this.send({type:`context.clear`,payload:this.withSession({})})},compactContext(e=!1){this.send({type:`context.compact`,payload:this.withSession({aggressive:e})})},repairContext(){this.send({type:`context.repair`,payload:this.withSession({})})},openContextEditor(){this.send({type:`context.editor.open`,payload:this.withSession({})})},validateContextEditor(e,t,n,r){this.send({type:`context.editor.validate`,payload:this.withSession({baseRevision:e,messages:t,removals:n,allowRepair:r})})},applyContextEditor(e,t,n,r){this.send({type:`context.editor.apply`,payload:this.withSession({baseRevision:e,messages:t,removals:n,allowRepair:r})})},debugContext(e){this.send({type:`context.debug`,payload:this.withSession({})},e)},listContextModes(){this.send({type:`context.modes.list`,payload:this.withSession({})})},switchContextMode(e){this.send({type:`context.mode.switch`,payload:this.withSession({id:e})})},createContextMode(e){this.send({type:`context.mode.create`,payload:this.withSession(e)})},updateContextMode(e,t){this.send({type:`context.mode.update`,payload:this.withSession({id:e,...t})})},deleteContextMode(e){this.send({type:`context.mode.delete`,payload:this.withSession({id:e})})},switchAutonomy(e){this.send({type:`autonomy.switch`,payload:this.withSession({mode:e})})},updatePrefs(e){this.send({type:`prefs.update`,payload:this.withSession(e)})},getPrefs(e){this.send({type:`prefs.get`,payload:this.withSession({},e)})}};function Rt(e){Object.assign(e.prototype,Lt)}function A(){return{session:null,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},lastInputTokens:0,cost:0,startTime:null,maxContext:0,contextLimitWarning:null,cacheStats:null,inputCost:0,outputCost:0,cacheReadCost:0,reasoningEffortLevels:void 0,effortSupported:void 0,projectReasoningEffort:void 0,mode:`default`,contextMode:`balanced`,iteration:null,todos:[],droppedTools:0,lastVisitedAt:0}}var zt=A(),j=`__unbound__`,M=o()(a(()=>({lanes:{},activeSessionId:j,projectName:``,projectRoot:``,cwd:``,modes:[],contextModes:[],appVersion:``,latestVersion:``,updateAvailable:!1}),{name:`wrongstack-session-lanes`,version:2,partialize:e=>({projectName:e.projectName,projectRoot:e.projectRoot,cwd:e.cwd,lanes:Object.fromEntries(Object.entries(e.lanes).slice(0,w).map(([e,t])=>[e,{session:t.session,mode:t.mode,contextMode:t.contextMode,lastInputTokens:t.lastInputTokens,lastVisitedAt:t.lastVisitedAt}]))}),merge:(e,t)=>{let n=e??{},r={};for(let[e,t]of Object.entries(n.lanes??{}).slice(0,w)){let n=A(),i=t;i.session&&typeof i.session==`object`&&(n.session=i.session),typeof i.mode==`string`&&(n.mode=i.mode),typeof i.contextMode==`string`&&(n.contextMode=i.contextMode),typeof i.lastInputTokens==`number`&&(n.lastInputTokens=i.lastInputTokens),typeof i.lastVisitedAt==`number`&&(n.lastVisitedAt=i.lastVisitedAt),r[e]=n}return{...t,lanes:r,activeSessionId:j,projectName:typeof n.projectName==`string`?n.projectName:``,projectRoot:typeof n.projectRoot==`string`?n.projectRoot:``,cwd:typeof n.cwd==`string`?n.cwd:``}},onRehydrateStorage:()=>(e,t)=>{t||typeof window<`u`&&(window.__wrongstackSessionRehydrated=!0)}}));function Bt(e){return e?M.getState().lanes[e]??zt:zt}function Vt(e){return e?e in M.getState().lanes:!1}function Ht(){return Object.keys(M.getState().lanes)}function N(e){return e?(M.getState().lanes[e]||M.setState(t=>({lanes:{...t.lanes,[e]:A()}})),e):j}function Ut(e){M.getState().lanes[e]&&(Kt.delete(e),M.setState(t=>{let n={...t.lanes};return delete n[e],{lanes:n}}))}function Wt(e){!e||e===`__unbound__`||M.getState().lanes.__unbound__&&(Kt.delete(j),M.setState(t=>{let n={...t.lanes};return delete n[j],n[e]||(n[e]=A()),{lanes:n}}))}function P(e){let t=e||`__unbound__`;Tt(t);let n=M.getState();n.activeSessionId===t&&n.lanes[t]||(N(t),M.setState({activeSessionId:t}),L(t).touch())}function F(){return M.getState().activeSessionId}function Gt(){let e=M(e=>e.activeSessionId);return e&&e!==`__unbound__`?e:null}function I(e,t){M.setState(n=>{let r=n.lanes[e]??A(),i=t(r);return i?{lanes:{...n.lanes,[e]:{...r,...i}}}:n.lanes[e]?{}:{lanes:{...n.lanes,[e]:r}}})}var Kt=new Map;function L(e){let t=e||`__unbound__`,n=Kt.get(t);if(n)return n;let r=()=>M.getState().lanes[t]??zt,i={sessionId:t,get data(){return r()},patch:e=>I(t,()=>e),touch:()=>I(t,()=>({lastVisitedAt:Date.now()})),setSession:e=>I(t,t=>{let n=t.session?.id!==e?.id||t.session?.provider!==e?.provider||t.session?.model!==e?.model;return{session:e,lastVisitedAt:Date.now(),...n?{contextLimitWarning:null,cacheStats:null,reasoningEffortLevels:void 0,effortSupported:void 0}:{}}}),startSession:e=>I(t,()=>({session:e,startTime:Date.now(),iteration:null,todos:[],lastInputTokens:0,totalTokens:{input:0,output:0,cacheRead:0,cacheWrite:0},cost:0,lastVisitedAt:Date.now(),droppedTools:0,contextLimitWarning:null,cacheStats:null,reasoningEffortLevels:void 0,effortSupported:void 0})),endSession:()=>I(t,()=>({session:null,startTime:null,iteration:null,droppedTools:0,contextLimitWarning:null,cacheStats:null,reasoningEffortLevels:void 0,effortSupported:void 0})),updateUsage:(e,n)=>I(t,t=>{let r=e.input+(e.cacheRead??0)+(e.cacheWrite??0),i=e.cacheRead??0,a=e.cacheWrite??0,o=t.totalTokens.input+e.input,s=(t.totalTokens.cacheRead??0)+i,c=(t.totalTokens.cacheWrite??0)+a,l=n??t.session?.provider??`unknown`,u=[...t.cacheStats?.providers??[]],d=u.findIndex(e=>e.provider===l),f=d>=0?u[d]:{provider:l,input:0,cacheRead:0,cacheWrite:0,hitRatio:0},p=f.input+e.input,m=f.cacheRead+i,h=f.cacheWrite+a,g=p+m+h,_={provider:l,input:p,cacheRead:m,cacheWrite:h,hitRatio:g>0?Math.min(1,Math.max(0,m/g)):0};d>=0?u[d]=_:u.push(_),u.sort((e,t)=>t.cacheRead-e.cacheRead);let v=o+s+c;return{totalTokens:{input:o,output:t.totalTokens.output+e.output,cacheRead:s,cacheWrite:c},lastInputTokens:r||t.lastInputTokens,cacheStats:{readTokens:s,writeTokens:c,hitRatio:v>0?Math.min(1,Math.max(0,s/v)):0,coverageTokens:i,providers:u}}}),addCost:e=>I(t,t=>({cost:t.cost+e})),setEnvRates:e=>I(t,t=>({maxContext:e.maxContext??t.maxContext,mode:e.mode??t.mode,contextMode:e.contextMode??t.contextMode,inputCost:e.inputCost??t.inputCost,outputCost:e.outputCost??t.outputCost,cacheReadCost:e.cacheReadCost??t.cacheReadCost,reasoningEffortLevels:e.hasReasoningEffortKey?e.reasoningEffortLevels:t.reasoningEffortLevels,effortSupported:e.hasEffortSupportedKey?e.effortSupported:t.effortSupported,projectReasoningEffort:e.hasProjectEffortKey?e.projectReasoningEffort:t.projectReasoningEffort})),setIteration:e=>I(t,()=>({iteration:e})),setContextUsage:(e,n)=>I(t,t=>({lastInputTokens:e,maxContext:n??t.maxContext})),setContextLimitWarning:e=>I(t,()=>({contextLimitWarning:e})),setCacheStats:e=>I(t,()=>({cacheStats:e})),setTodos:e=>I(t,()=>({todos:e})),setDroppedTools:e=>I(t,()=>({droppedTools:e}))};return Kt.set(t,i),i}function R(){return L(M.getState().activeSessionId)}function z(e){M.setState(e)}var qt=`signal`,Jt=`wrongstack-palette`,Yt=[{id:`signal`,labelKey:`settings:general.paletteSignal`,swatch:`hsl(345.9 99% 58.8%)`,swatchSecondary:`hsl(37.5 98.4% 50%)`},{id:`emerald-gold`,labelKey:`settings:general.paletteEmeraldGold`,swatch:`hsl(152 66% 48%)`,swatchSecondary:`hsl(42 96% 54%)`},{id:`blue-navy`,labelKey:`settings:general.paletteBlueNavy`,swatch:`hsl(213 90% 60%)`,swatchSecondary:`hsl(36 96% 54%)`},{id:`purple-pink`,labelKey:`settings:general.palettePurplePink`,swatch:`hsl(263 82% 66%)`,swatchSecondary:`hsl(332 94% 62%)`},{id:`cyan-teal`,labelKey:`settings:general.paletteCyanTeal`,swatch:`hsl(180 76% 46%)`,swatchSecondary:`hsl(36 96% 54%)`},{id:`rose-copper`,labelKey:`settings:general.paletteRoseCopper`,swatch:`hsl(14 82% 56%)`,swatchSecondary:`hsl(34 96% 54%)`},{id:`indigo-amber`,labelKey:`settings:general.paletteIndigoAmber`,swatch:`hsl(233 74% 58%)`,swatchSecondary:`hsl(38 96% 54%)`},{id:`sage-sand`,labelKey:`settings:general.paletteSageSand`,swatch:`hsl(130 28% 55%)`,swatchSecondary:`hsl(36 55% 72%)`},{id:`slate-violet`,labelKey:`settings:general.paletteSlateViolet`,swatch:`hsl(248 50% 55%)`,swatchSecondary:`hsl(285 52% 62%)`},{id:`coral-mint`,labelKey:`settings:general.paletteCoralMint`,swatch:`hsl(12 85% 62%)`,swatchSecondary:`hsl(162 55% 55%)`},{id:`arctic-ember`,labelKey:`settings:general.paletteArcticEmber`,swatch:`hsl(195 85% 58%)`,swatchSecondary:`hsl(14 85% 55%)`},{id:`moss-rust`,labelKey:`settings:general.paletteMossRust`,swatch:`hsl(100 45% 38%)`,swatchSecondary:`hsl(18 70% 48%)`}];function Xt(e){return typeof e==`string`&&Yt.some(t=>t.id===e)}function Zt(e){return Yt.find(t=>t.id===e)??Yt[0]}function Qt(e,t){if(typeof window>`u`)return t;try{let n=window.localStorage.getItem(e);return Xt(n)?n:t}catch{return t}}function $t(e,t){t===`signal`?e.removeAttribute(`data-palette`):e.setAttribute(`data-palette`,t)}var en=o()(a(e=>({provider:``,model:``,wsUrl:Gi(),wsConnected:!1,wsStatus:{state:`connecting`},theme:`system`,palette:`signal`,autoConnect:!0,soundOnComplete:!1,setProvider:t=>e({provider:t}),setModel:t=>e({model:t}),setConfig:t=>e(t),setTheme:t=>e({theme:t}),setPalette:t=>e({palette:t}),setWsConnected:t=>e({wsConnected:t}),setWsStatus:t=>e({wsStatus:t,wsConnected:t.state===`open`}),setSoundOnComplete:t=>e({soundOnComplete:t})}),{name:`wrongstack-config`,partialize:e=>({provider:e.provider,model:e.model,baseUrl:e.baseUrl,theme:e.theme,palette:e.palette,autoConnect:e.autoConnect,soundOnComplete:e.soundOnComplete}),merge:(e,t)=>{let{apiKey:n,...r}=e??{};return{...t,...r,wsUrl:Gi(),wsConnected:!1,wsStatus:{state:`connecting`},palette:Xt(r.palette)?r.palette:Qt(Jt,t.palette)}}}));function tn(){return{projectRoot:``,tree:[],openFiles:[],activeFilePath:null,treeLoading:!1,error:null,targetLine:null,projectIdentity:``,hydratingPaths:new Set}}function nn(e){return{projectRoot:e.projectRoot,tree:e.tree,openFiles:e.openFiles,activeFilePath:e.activeFilePath,treeLoading:e.treeLoading,error:e.error,targetLine:e.targetLine,projectIdentity:e.projectIdentity,hydratingPaths:e.hydratingPaths}}function rn(e){return{projectRoot:e.projectRoot,tree:e.tree,openFiles:e.openFiles,activeFilePath:e.activeFilePath,treeLoading:e.treeLoading,error:e.error,targetLine:e.targetLine,projectIdentity:e.projectIdentity,hydratingPaths:e.hydratingPaths}}function B(e,t,n){if(t&&e.fileSessionId!==t){let r=e.filesBySession[t]??tn();return{filesBySession:{...e.filesBySession,[t]:n(r)}}}let r=n(nn(e)),i=e.fileSessionId?{filesBySession:{...e.filesBySession,[e.fileSessionId]:r}}:{};return{...rn(r),...i}}function an(e,t){return e.fileSessionId?{filesBySession:{...e.filesBySession,[e.fileSessionId]:{...nn(e),...t}}}:{}}function on(e,t){let n=e??{},r=Array.isArray(n.openFilePaths)?n.openFilePaths.filter(e=>typeof e==`string`&&e.length>0):[],i=r.map(e=>({path:e,content:``,dirty:!1,savedContent:``})),a=typeof n.activeFilePath==`string`&&r.includes(n.activeFilePath)?n.activeFilePath:r[0]??null;return{...t,projectIdentity:typeof n.projectIdentity==`string`?n.projectIdentity:t.projectIdentity,openFiles:i,activeFilePath:a}}var sn=o()(a((e,t)=>({projectRoot:``,tree:[],openFiles:[],activeFilePath:null,treeLoading:!1,error:null,targetLine:null,projectIdentity:``,hydratingPaths:new Set,fileSessionId:null,filesBySession:{},bindSessionFiles:t=>e(e=>{if(e.fileSessionId===t)return{};let n={...e.filesBySession};return e.fileSessionId&&(n[e.fileSessionId]=nn(e)),{fileSessionId:t,filesBySession:n,...rn((t?n[t]:void 0)??tn())}}),forgetSessionFiles:t=>e(e=>{let n={...e.filesBySession};return delete n[t],e.fileSessionId===t?{filesBySession:n,fileSessionId:null,...tn()}:{filesBySession:n}}),jumpToLine:(t,n,r)=>e(e=>{let i={line:t,col:n};return B(e,r,e=>({...e,targetLine:i}))}),clearTargetLine:()=>e(e=>({targetLine:null,...an(e,{targetLine:null})})),setTree:(t,n,r)=>e(e=>B(e,r,e=>({...e,projectRoot:t,tree:n,treeLoading:!1,error:null}))),openFile:(t,n,r)=>e(e=>B(e,r,e=>{if(e.openFiles.find(e=>e.path===t)){let r=e.openFiles.map(e=>e.path===t?{...e,content:n,dirty:!1,savedContent:n}:e);return{...e,openFiles:r,activeFilePath:t}}let r=[...e.openFiles,{path:t,content:n,dirty:!1,savedContent:n}];return{...e,openFiles:r,activeFilePath:t}})),closeFile:(t,n)=>e(e=>B(e,n,e=>{let n=e.openFiles.findIndex(e=>e.path===t);if(n===-1)return e;let r=[...e.openFiles];r.splice(n,1);let i=e.activeFilePath;return e.activeFilePath===t&&(i=r.length===0?null:n<r.length?r[n].path:r[r.length-1].path),{...e,openFiles:r,activeFilePath:i}})),setActiveFile:(t,n)=>e(e=>B(e,n,e=>({...e,activeFilePath:t}))),updateContent:(t,n)=>{e(e=>{let r=e.openFiles.map(e=>e.path===t?{...e,content:n,dirty:n!==e.savedContent}:e);return{openFiles:r,...an(e,{openFiles:r})}})},markSaved:(t,n)=>e(e=>B(e,n,e=>({...e,openFiles:e.openFiles.map(e=>e.path===t?{...e,dirty:!1,savedContent:e.content}:e)}))),setTreeLoading:(t,n)=>e(e=>B(e,n,e=>({...e,treeLoading:t}))),setError:(t,n)=>e(e=>B(e,n,e=>({...e,error:t}))),clearOpenTabs:t=>e(e=>B(e,t,e=>({...e,openFiles:[],activeFilePath:null}))),setProjectIdentity:(t,n)=>e(e=>B(e,n,e=>({...e,projectIdentity:t}))),setHydratingPaths:(t,n)=>e(e=>B(e,n,e=>({...e,hydratingPaths:new Set(t)}))),hydrateFileContent:(n,r,i)=>{let a=t(),o=!1;return e(B(a,i,e=>{if(!e.hydratingPaths.has(n))return e;let t=new Set(e.hydratingPaths);t.delete(n);let i=e.openFiles.find(e=>e.path===n);if(!i||i.dirty||i.content!==``||i.savedContent!==``)return{...e,hydratingPaths:t};o=!0;let a=e.openFiles.map(e=>e.path===n?{...e,content:r,savedContent:r,dirty:!1}:e);return{...e,hydratingPaths:t,openFiles:a}})),o},hydrateFileFailed:(t,n)=>e(e=>B(e,n,e=>{if(!e.hydratingPaths.has(t))return e;let n=new Set(e.hydratingPaths);n.delete(t);let r=e.openFiles.find(e=>e.path===t),i=(!r||r.content===``&&!r.dirty&&r.savedContent===``)&&r?e.openFiles.filter(e=>e.path!==t):e.openFiles,a=e.activeFilePath===t?i[0]?.path??null:e.activeFilePath;return{...e,hydratingPaths:n,openFiles:i,activeFilePath:a}}))}),{name:`wrongstack-file-store`,version:2,partialize:e=>({openFilePaths:e.openFiles.map(e=>e.path),activeFilePath:e.activeFilePath,projectIdentity:e.projectIdentity}),migrate:()=>({openFilePaths:[],activeFilePath:null,projectIdentity:``}),merge:(e,t)=>on(e,t)}));function cn(){return{selectedPath:null,diff:null,loadingDiff:!1}}function ln(e){return{selectedPath:e.selectedPath,diff:e.diff,loadingDiff:e.loadingDiff}}function un(e,t){return e.gitChangesSessionId?{gitChangesBySession:{...e.gitChangesBySession,[e.gitChangesSessionId]:{...ln(e),...t}}}:{}}var dn=o()(e=>({files:[],error:null,repoPrefix:``,dirs:{},loadingList:!1,selectedPath:null,diff:null,loadingDiff:!1,gitChangesSessionId:null,gitChangesBySession:{},setFiles:(t,n,r=``,i={})=>e({files:t,error:n,repoPrefix:r,dirs:i,loadingList:!1}),setListLoading:t=>e({loadingList:t}),select:t=>e(e=>({selectedPath:t,diff:null,loadingDiff:!!t,...un(e,{selectedPath:t,diff:null,loadingDiff:!!t})})),setDiff:t=>e(e=>({diff:t,loadingDiff:!1,...un(e,{diff:t,loadingDiff:!1})})),setDiffLoading:t=>e(e=>({loadingDiff:t,...un(e,{loadingDiff:t})})),bindSessionGitChanges:t=>e(e=>{if(e.gitChangesSessionId===t)return{};let n={...e.gitChangesBySession};e.gitChangesSessionId&&(n[e.gitChangesSessionId]=ln(e));let r=(t?n[t]:void 0)??cn();return{gitChangesSessionId:t,gitChangesBySession:n,selectedPath:r.selectedPath,diff:r.diff,loadingDiff:r.loadingDiff}}),forgetSessionGitChanges:t=>e(e=>{let n={...e.gitChangesBySession};return delete n[t],e.gitChangesSessionId===t?{gitChangesBySession:n,gitChangesSessionId:null,...cn()}:{gitChangesBySession:n}}),clear:()=>e(e=>({files:[],error:null,repoPrefix:``,dirs:{},selectedPath:null,diff:null,loadingDiff:!1,...un(e,{selectedPath:null,diff:null,loadingDiff:!1})}))})),fn=new WeakMap,pn=new Set([`projectName`,`projectRoot`,`cwd`,`modes`,`contextModes`,`appVersion`,`latestVersion`,`updateAvailable`]);function mn(e){let t=fn.get(e);if(t)return t;let n=e.activeSessionId,r=e.lanes[n]??zt,i=L(n),a={session:r.session,totalTokens:r.totalTokens,lastInputTokens:r.lastInputTokens,cost:r.cost,startTime:r.startTime,maxContext:r.maxContext,contextLimitWarning:r.contextLimitWarning,cacheStats:r.cacheStats,inputCost:r.inputCost,outputCost:r.outputCost,cacheReadCost:r.cacheReadCost,reasoningEffortLevels:r.reasoningEffortLevels,effortSupported:r.effortSupported,projectReasoningEffort:r.projectReasoningEffort,mode:r.mode,contextMode:r.contextMode,iteration:r.iteration,todos:r.todos,droppedTools:r.droppedTools,lastVisitedAt:r.lastVisitedAt,projectName:e.projectName,projectRoot:e.projectRoot,cwd:e.cwd,modes:e.modes,contextModes:e.contextModes,appVersion:e.appVersion,latestVersion:e.latestVersion,updateAvailable:e.updateAvailable,setSession:_n,updateUsage:i.updateUsage,addCost:i.addCost,startSession:vn,endSession:i.endSession,setEnv:yn,setIteration:i.setIteration,setContextUsage:i.setContextUsage,setContextLimitWarning:i.setContextLimitWarning,setCacheStats:i.setCacheStats,setModes:bn,setContextModes:xn,setTodos:i.setTodos,setUpdateInfo:Sn,setDroppedTools:i.setDroppedTools,switchSession:Cn};return fn.set(e,a),a}function hn(e){sn.getState().bindSessionFiles(e),dn.getState().bindSessionGitChanges(e)}function gn(e){m.getState().bindSession(e??null),_.getState().bindSessionChrome(e??null),hn(e??null);let t=e||`__unbound__`;F()!==t&&(F()===`__unbound__`&&t!==`__unbound__`&&wt(t),P(t),Tt(t))}function _n(e){gn(e?.id??null),R().setSession(e)}function vn(e){gn(e.id),R().startSession(e)}function yn(e){let t={};e.projectRoot!==void 0&&(t.projectRoot=e.projectRoot),e.projectName!==void 0&&(t.projectName=e.projectName),e.cwd!==void 0&&(t.cwd=e.cwd),Object.keys(t).length>0&&z(t),R().setEnvRates({maxContext:e.maxContext,mode:e.mode,contextMode:e.contextMode,inputCost:e.inputCost,outputCost:e.outputCost,cacheReadCost:e.cacheReadCost,reasoningEffortLevels:e.reasoningEffortLevels,hasReasoningEffortKey:`reasoningEffortLevels`in e,effortSupported:e.effortSupported,hasEffortSupportedKey:`effortSupported`in e,projectReasoningEffort:e.projectReasoningEffort,hasProjectEffortKey:`projectReasoningEffort`in e})}function bn(e){z({modes:e})}function xn(e){z({contextModes:e})}function Sn(e){z(e)}function Cn(e){m.getState().bindSession(e),hn(e),P(e);let t=M.getState().lanes[e],n=t?.session?.provider,r=t?.session?.model;n&&r?en.getState().setConfig({provider:n,model:r}):n&&en.getState().setConfig({provider:n})}function wn(){return mn(M.getState())}function Tn(e){let t=typeof e==`function`?e(wn()):e;if(!t)return;if(`session`in t){let e=t.session;gn(e?.id??null)}let n={},r={};for(let[e,i]of Object.entries(t))typeof i!=`function`&&(pn.has(e)?n[e]=i:r[e]=i);Object.keys(n).length>0&&z(n),Object.keys(r).length>0&&R().patch(r)}function En(e){return M.subscribe((t,n)=>e(mn(t),mn(n)))}var Dn=Object.assign(function(e){return i(M,t=>e(mn(t)))},{getState:wn,getInitialState:wn,setState:Tn,subscribe:En,persist:M.persist}),On={has(e){return e in M.getState().lanes},get(e){let t=M.getState().lanes[e];if(t)return{session:t.session,provider:t.session?.provider,model:t.session?.model,mode:t.mode,contextMode:t.contextMode,totalTokens:t.totalTokens,lastInputTokens:t.lastInputTokens,cost:t.cost,startTime:t.startTime,maxContext:t.maxContext,reasoningEffortLevels:t.reasoningEffortLevels,cacheStats:t.cacheStats,iteration:t.iteration,todos:t.todos}},set(e,t){let n={};t.session!==void 0&&(n.session=t.session),t.mode!==void 0&&(n.mode=t.mode),t.contextMode!==void 0&&(n.contextMode=t.contextMode),t.totalTokens!==void 0&&(n.totalTokens=t.totalTokens),t.lastInputTokens!==void 0&&(n.lastInputTokens=t.lastInputTokens),t.cost!==void 0&&(n.cost=t.cost),t.startTime!==void 0&&(n.startTime=t.startTime),t.maxContext!==void 0&&(n.maxContext=t.maxContext),t.reasoningEffortLevels!==void 0&&(n.reasoningEffortLevels=t.reasoningEffortLevels),t.cacheStats!==void 0&&(n.cacheStats=t.cacheStats),t.iteration!==void 0&&(n.iteration=t.iteration),t.todos!==void 0&&(n.todos=t.todos),L(e).patch(n)},delete(e){M.setState(t=>{let n={...t.lanes};return delete n[e],{lanes:n}})},clear(){M.setState({lanes:{},activeSessionId:j})}},kn=8e3;function An(){return`toast_${h()}`}var V=o()(a(e=>({notifications:[],toasts:[],push:t=>{let n=An(),r=t.ttl??3500,i=Date.now(),a={id:n,message:t.message,variant:t.variant,timestamp:i,read:!1,ttl:r,action:t.action},o={id:n,message:t.message,variant:t.variant,ttl:r,action:t.action};return e(e=>({toasts:[...e.toasts,o],notifications:[a,...e.notifications].slice(0,100)})),n},dismissToast:t=>e(e=>({toasts:e.toasts.filter(e=>e.id!==t)})),markAsRead:t=>e(e=>({notifications:e.notifications.map(e=>e.id===t?{...e,read:!0}:e)})),markAllAsRead:()=>e(e=>({notifications:e.notifications.map(e=>e.read?e:{...e,read:!0})})),removeNotification:t=>e(e=>({notifications:e.notifications.filter(e=>e.id!==t),toasts:e.toasts.filter(e=>e.id!==t)})),clearAll:()=>e(()=>({notifications:[]}))}),{name:`wrongstack-notifications-history`,partialize:e=>({notifications:e.notifications.map(({action:e,...t})=>({...t,...e?{action:{label:e.label,onClick:()=>{}}}:{}}))})})),jn={success:(e,t=3500)=>V.getState().push({message:e,variant:`success`,ttl:t}),error:(e,t=6e3)=>V.getState().push({message:e,variant:`error`,ttl:t}),warn:(e,t=4500)=>V.getState().push({message:e,variant:`warn`,ttl:t}),info:(e,t=3500)=>V.getState().push({message:e,variant:`info`,ttl:t}),undoable:(e,t,n=f.t(`common:action.undo`),r=kn)=>V.getState().push({message:e,variant:`info`,ttl:r,action:{label:n,onClick:t}}),dismiss:e=>V.getState().dismissToast(e)},H=t(s(),1),U=p();function Mn({variant:e}){return e===`success`?(0,U.jsx)(d,{className:`h-4 w-4 text-success`}):e===`error`?(0,U.jsx)(n,{className:`h-4 w-4 text-destructive`}):e===`warn`?(0,U.jsx)(u,{className:`h-4 w-4 text-warning`}):(0,U.jsx)(r,{className:`h-4 w-4 text-info`})}function Nn({entry:e}){let{t}=c(),n=V(e=>e.dismissToast);return(0,H.useEffect)(()=>{let t=setTimeout(()=>n(e.id),e.ttl);return()=>clearTimeout(t)},[e.id,e.ttl,n]),(0,U.jsxs)(`div`,{className:g(`flex items-start gap-2 rounded-lg border bg-popover shadow-lg px-3 py-2 text-sm max-w-sm`,`animate-message`,e.variant===`error`&&`border-destructive/40`,e.variant===`warn`&&`border-warning/40`,e.variant===`success`&&`border-success/40`),children:[(0,U.jsx)(Mn,{variant:e.variant}),(0,U.jsx)(`div`,{className:`flex-1 min-w-0 whitespace-pre-wrap break-words leading-snug`,children:e.message}),e.action&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>{e.action?.onClick(),n(e.id)},className:`shrink-0 font-medium text-primary hover:underline`,children:e.action.label}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>n(e.id),className:`text-muted-foreground hover:text-foreground`,title:t(`activity:toast.dismiss`),"aria-label":t(`activity:toast.dismiss`),children:(0,U.jsx)(l,{className:`h-3.5 w-3.5`})})]})}function Pn(){let{t:e}=c(),t=V(e=>e.toasts);return t.length===0?null:(0,U.jsx)(`section`,{className:`fixed bottom-4 right-4 z-[60] flex flex-col gap-2 pointer-events-auto`,"aria-label":e(`activity:toaster.notifications`),"aria-live":`polite`,children:t.map(e=>(0,U.jsx)(Nn,{entry:e},e.id))})}function Fn(e,t=140){let n=e.replace(/\s+/g,` `).trim();return n.length<=t?n:`${n.slice(0,t).trimEnd()}…`}function In(e){return e.replace(/\s+/g,` `).trim().toLowerCase()}[`NOTE: The todo board has not changed since the previous automatic continuation — this exact instruction is being repeated.`,`Before anything else, bring the board up to date so the loop stays grounded:`,`- mark work that is actually finished as completed,`,`- split the current item into smaller concrete sub-items if it needs more than one turn,`,`- remove or reword items that no longer apply.`,`Then continue the work. If you are blocked, state exactly what is blocking you instead of repeating the same turn.`].join(`
|
|
18
|
+
`);function Ln(){let e=new Map,t=new Set;return{recordAttempt(t){let n=(e.get(t)??0)+1;return e.set(t,n),n},getAttempts(t){return e.get(t)??0},markSkipped(e){t.add(e)},isSkipped(e){return t.has(e)},reset(){e.clear(),t.clear()},snapshot(){let n={},r=new Set([...e.keys(),...t]);for(let i of r)n[i]={attempts:e.get(i)??0,skipped:t.has(i)};return n}}}var Rn=[`Pivoting to the next open item — previous todo still pending after {attempts} attempt(s).`,`Shifting focus to a different task while the previous item ({label}) remains open after {attempts} attempt(s).`,`No board progress on the current item after {attempts} attempt(s). Continuing with the next todo.`,`The previous item is still unresolved after {attempts} try(ies). Moving on down the list.`,`Advancing to the next piece of work after {attempts} unproductive attempt(s) on the prior one.`,`Taking a different angle — the stalled item ({label}) stays open after {attempts} attempt(s). Pressing ahead.`,`The todo board shows no movement on the current task after {attempts} attempt(s). Switching gears.`,`No change on the board from the last {attempts} continuation(s). Proceeding to the next open item.`];function zn(e,t,n,r){let i=Rn[Math.max(0,Math.min(n-1,Rn.length-1))].replace(/\{attempts\}/g,()=>String(n)).replace(/\{label\}/g,()=>e.content.slice(0,72));if(!t)return[i,``,`No more open items remain on the todo list. What has been accomplished and what should I do next?`].join(`
|
|
19
|
+
`);let a=t.status===`in_progress`&&t.activeForm?t.activeForm:t.content,o=r.filter(e=>e.status===`completed`).length,s=r.length,c=[i,``,`Proceed with: ${a}`];return s>0&&(c.push(``,`Todo board (${o}/${s} done):`),c.push(...r.slice(0,20).map(e=>` ${e.status===`completed`?`[x]`:e.status===`in_progress`?`[~]`:`[ ]`} ${e.content.replace(/\n|\r/g,` `)}`))),c.push(``,`If this item is already done, mark it complete and move to the next open todo. Keep the board honest as you work.`),c.join(`
|
|
20
|
+
`)}function Bn(e,t){if(e.length===0||!t)return null;let n=t.toLowerCase(),r=e.find(e=>e.status===`in_progress`);if(r){let e=(r.activeForm??r.content).toLowerCase();if(e.length>5&&n.includes(e))return{id:r.id,content:r.activeForm??r.content}}for(let t of e){if(t.status===`completed`||r&&t.id===r.id)continue;let e=(t.activeForm??t.content).toLowerCase();if(e.length>5&&n.includes(e))return{id:t.id,content:t.activeForm??t.content}}let i=e.find(e=>e.status!==`completed`);return i?{id:i.id,content:i.activeForm??i.content}:null}function Vn(e={}){let t=(e,t)=>e===void 0||!Number.isFinite(e)?t:Math.floor(e),n=Math.max(2,t(e.repeatThreshold,2)),r=Math.max(n,t(e.windowSize,3)),i=[],a=null;function o(e){let t=In(e);i.push(t),i.length>r&&(i=i.slice(i.length-r));let a=0;for(let e=i.length-1;e>=0&&i[e]===t;e--)a++;return{normalized:t,runLength:a,shouldHalt:a>=n}}function s(e){let t=o(e);return t.shouldHalt?a===t.normalized?{...t,action:`halt`}:(a=t.normalized,{...t,shouldHalt:!1,action:`steer`}):(a=null,{...t,shouldHalt:!1,action:`feed`})}function c(){i=[],a=null}function l(){return i.slice()}function u(){return i.length}return{record:o,recordGrounded:s,reset:c,history:l,size:u}}var Hn=`__unbound__`,Un=8,W=new Map;function Wn(){return{streak:0,capWarned:!1,loopHalted:!1,loopGuard:Vn(),continuationTracker:Ln()}}function Gn(e){let t=e??Hn,n=W.get(t);if(n)return n;if(W.size>=Un){let e=W.keys().next().value;e!==void 0&&W.delete(e)}let r=Wn();return W.set(t,r),r}function Kn(e){W.delete(e)}function qn(){let e=m(e=>e.autoProceedMaxIterations),t=m(e=>e.autonomy),n=Gt(),r=Dn(e=>e.session?.id??null),i=n??r,a=Gn(i),o=(0,H.useRef)(a.streak),s=(0,H.useRef)(a.capWarned),c=(0,H.useRef)(t),l=(0,H.useRef)(i);(0,H.useEffect)(()=>{o.current=a.streak,s.current=a.capWarned}),(0,H.useEffect)(()=>{if(l.current===i)return;if(l.current===null&&i){let e=W.get(Hn);e&&!W.has(i)&&(W.set(i,e),W.delete(Hn))}let e=Gn(i);o.current=e.streak,s.current=e.capWarned,l.current=i},[i]),(0,H.useEffect)(()=>{let e=c.current===`auto`,n=t===`auto`;!e&&n&&(a.capWarned=!1,s.current=!1),e&&!n&&(a.streak=0,o.current=0,a.loopHalted=!1,a.loopGuard.reset(),a.continuationTracker.reset()),c.current=t},[t,a]);let u=(0,H.useCallback)(()=>a.loopHalted?!1:e<=0||a.streak<e,[e,a]),d=(0,H.useCallback)(()=>{let t=e;return t>0&&a.streak>=t?!1:(a.streak+=1,o.current=a.streak,t>0&&a.streak>=t&&(a.capWarned=!0,s.current=!0),!0)},[e,a]),f=(0,H.useCallback)(e=>{if(a.loopHalted)return!1;let t=a.loopGuard.record(e);return t.shouldHalt&&(a.loopHalted=!0),!t.shouldHalt},[a]),p=(0,H.useCallback)((e,t)=>{if(a.loopHalted)return{canFeed:!1,halted:!0};if(!a.loopGuard.recordGrounded(e).shouldHalt)return{canFeed:!0};let n=Bn(t,e);if(n){let e=a.continuationTracker.recordAttempt(n.id);if(a.continuationTracker.markSkipped(n.id),Object.values(a.continuationTracker.snapshot()).reduce((e,t)=>e+t.attempts,0)<=9){let r=t.filter(e=>e.status!==`completed`).find(e=>e.id!==n.id&&!a.continuationTracker.isSkipped(e.id));if(r){let i=t.find(e=>e.id===n.id);i&&(i.status=`pending`);let o=zn({id:n.id,content:n.content},r,e,t);return a.loopGuard.reset(),{canFeed:!1,advancement:o}}}}return a.loopHalted=!0,{canFeed:!1,halted:!0}},[a]),h=(0,H.useCallback)(()=>{a.streak=0,o.current=0,a.capWarned=!1,s.current=!1,a.loopHalted=!1,a.loopGuard.reset(),a.continuationTracker.reset()},[a]),g=(0,H.useCallback)(()=>{a.capWarned=!1,s.current=!1},[a]);return{streak:o.current,capWarned:s.current,canAutoSubmit:u,recordAutoSubmit:d,recordPrompt:f,recordGroundedPrompt:p,reset:h,resetCapWarned:g}}var Jn=o()((e,t)=>({bySession:{},recordReport:n=>!n.reportId||t().bySession[n.sessionId]?.some(e=>e.reportId===n.reportId)?!1:(e(e=>({bySession:{...e.bySession,[n.sessionId]:[...e.bySession[n.sessionId]??[],n]}})),!0),markActioned:(t,n,r)=>{e(e=>{let i=e.bySession[t];return i?.some(e=>e.reportId===n)?{bySession:{...e.bySession,[t]:i.map(e=>e.reportId===n?{...e,actionedAt:e.actionedAt??r}:e)}}:e})},hydrateReports:(t,n)=>{n.length!==0&&e(e=>{let r=new Set((e.bySession[t]??[]).map(e=>e.reportId)),i=n.filter(e=>e.reportId&&!r.has(e.reportId));return i.length===0?e:{bySession:{...e.bySession,[t]:[...e.bySession[t]??[],...i]}}})},forgetSession:t=>{e(e=>{if(!(t in e.bySession))return e;let n={...e.bySession};return delete n[t],{bySession:n}})}})),Yn=o(e=>({pending:null,selected:0,setPending:t=>e({pending:t,selected:0}),clear:()=>e({pending:null,selected:0}),move:t=>e(e=>{if(!e.pending||e.pending.candidates.length===0)return e;let n=e.pending.candidates.length;return{selected:(e.selected+t+n)%n}}),setSelected:t=>e({selected:Math.max(0,t)})}));function Xn(e,t){return t?e===t:!e}function Zn(e){return e===`running`}function Qn(e,t){let n=+!Zn(e.status),r=+!Zn(t.status);return n===r?e.startedAt-t.startedAt:n-r}function $n(e){let t=0,n=0,r=0;for(let i of e)i.status===`running`?t++:i.status===`completed`?n++:(i.status===`failed`||i.status===`timeout`)&&r++;return{running:t,completed:n,failed:r,total:e.length}}var er=85,tr=70;function nr(e){let t=Number.isFinite(e)?Math.max(0,Math.min(100,Math.round(e))):0;return{clamped:t,severity:t>=er?`high`:t>=tr?`medium`:`low`}}function rr(e){return e==null||!Number.isFinite(e)||e<0?`0`:e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(Math.round(e))}function ir(e){if(e==null||!Number.isFinite(e)||e<=0)return`$0`;if(e<.01){let t=e.toFixed(5);return t===`0.00000`?`$0`:`$`+t.replace(/(\d)0+$/,`$1`).replace(/\.$/,``)}return`$`+e.toFixed(3)}function ar(e){if(e==null||!Number.isFinite(e)||e<0)return`—`;let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function or(e,t=Date.now()){let{clamped:n,severity:r}=nr(e.ctxPct);return{ctxClamped:n,ctxSeverity:r,elapsed:!Number.isFinite(e.startedAt)||e.startedAt<=0?`—`:ar(e.status===`running`?t-e.startedAt:(e.completedAt??t)-e.startedAt),cost:ir(e.costUsd),iterationCount:e.iteration,toolCount:e.toolCalls,tokensIn:rr(e.tokensIn),tokensOut:rr(e.tokensOut)}}var sr=12,cr=20,lr=500,ur=200,dr=[];function fr(e,t,n){return{id:e,name:t?.trim()||e,sessionId:n,status:`running`,iteration:0,toolCalls:0,costUsd:0,ctxPct:0,ctxTokens:0,maxContext:0,extensions:0,startedAt:Date.now(),toolLog:[],sparklineBins:Array(sr).fill(0)}}var pr=0;function G(){return`tl_${Date.now()}_${++pr}`}function K(e,t){return[t,...e].slice(0,cr)}function mr(e){switch(e){case`text`:case`thinking`:case`tool_use`:case`tool_result`:case`error`:case`status`:case`system`:return e;default:return`status`}}function hr(e,t){return e.subagentId!==t.subagentId||e.kind!==t.kind||e.iteration!==t.iteration||e.toolName!==t.toolName||e.toolOk!==t.toolOk?!1:e.kind===`text`||e.kind===`thinking`}function q(e,t){let n=e[e.length-1];return n&&hr(n,t)?[...e.slice(0,-1),{...n,content:`${n.content}${t.content}`,ts:t.ts}].slice(-1e3):[...e,t].slice(-1e3)}function gr(e){return[e[0]+1,...e.slice(0,11)]}function _r(e){return Number.isFinite(e)?Math.max(0,Math.min(100,e)):0}var J=o()((e,t)=>({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,fleetConcurrencyMax:4,fleetMaxSpawns:void 0,fleetUsedSpawns:void 0,fleetRemainingSpawns:void 0,fleetBudgetSource:void 0,fleetCheckpointMaxSpawns:void 0,fleetCeilingMismatch:!1,eventTimeline:[],agentTimeline:[],agentTranscripts:new Map,pushAgentTimelineEntry:t=>e(e=>{let n={id:`agent_tl_${Date.now()}_${Math.random().toString(36).slice(2,6)}`,...t,kind:mr(t.kind)},r=new Map(e.agents);n.subagentId&&n.subagentId!==`leader`&&!r.has(n.subagentId)&&r.set(n.subagentId,fr(n.subagentId,n.agentName,n.sessionId));let i=new Map(e.agentTranscripts);return i.set(n.subagentId,q(i.get(n.subagentId)??[],n)),{agents:r,agentTimeline:[n,...e.agentTimeline].slice(0,lr),agentTranscripts:i}}),hydrateAgentSessions:(t,n)=>e(e=>{if(!Array.isArray(t)||t.length===0)return e;let r=new Map(e.agents),i=new Map(e.agentTranscripts);for(let e of t){if(!e||!e.subagentId||e.subagentId===`leader`)continue;let t=e.subagentId,a=e.agentName?.trim()||t,o=r.get(t);if(o)e.task&&!o.description&&(o.description=e.task,r.set(t,o));else{let i=fr(t,a,n);e.status&&(i.status=e.status),e.task&&(i.description=e.task),r.set(t,i)}if(Array.isArray(e.transcript)&&e.transcript.length>0){let n=i.get(t)??[];if(n.length===0)i.set(t,e.transcript.slice(-1e3));else{let r=[...n];for(let t of e.transcript)r.some(e=>e.id===t.id||e.ts===t.ts&&e.content===t.content&&e.kind===t.kind)||(r=q(r,t));i.set(t,r.slice(-1e3))}}}return{agents:r,agentTranscripts:i}}),clear:()=>e({agents:new Map,leaderId:void 0,fleetTokensIn:0,fleetTokensOut:0,fleetConcurrency:0,fleetConcurrencyMax:4,fleetMaxSpawns:void 0,fleetUsedSpawns:void 0,fleetRemainingSpawns:void 0,fleetBudgetSource:void 0,fleetCheckpointMaxSpawns:void 0,fleetCeilingMismatch:!1,eventTimeline:[],agentTimeline:[],agentTranscripts:new Map}),getAgentsBySession:e=>{let n=[];for(let r of t().agents.values())r.sessionId===e&&n.push(r);return n},getAgentTranscript:e=>t().agentTranscripts.get(e)??dr,clearFinishedAgents:t=>e(e=>{let n=new Map(e.agents),r=new Set,i=0,a=0;for(let[e,o]of n)o.status!==`running`&&Xn(o.sessionId,t)&&(n.delete(e),r.add(e),i+=o.tokensIn??0,a+=o.tokensOut??0);let o=new Map(e.agentTranscripts);for(let e of r)o.delete(e);return{agents:n,agentTranscripts:o,agentTimeline:e.agentTimeline.filter(e=>!r.has(e.subagentId)),eventTimeline:e.eventTimeline.filter(e=>!r.has(e.agentId)),leaderId:e.leaderId&&r.has(e.leaderId)?void 0:e.leaderId,fleetTokensIn:Math.max(0,e.fleetTokensIn-i),fleetTokensOut:Math.max(0,e.fleetTokensOut-a)}}),applyEvent:t=>e(e=>{let n=new Map(e.agents),r=new Map(e.agentTranscripts),i=e.eventTimeline,a=e.leaderId,o=e.fleetTokensIn,s=e.fleetTokensOut;if(t.kind===`session_stopped`&&t.sessionId){let i=new Set,a=0,o=0;for(let[e,s]of n)s.sessionId===t.sessionId&&(n.delete(e),r.delete(e),i.add(e),a+=s.tokensIn??0,o+=s.tokensOut??0);return{agents:n,agentTranscripts:r,agentTimeline:e.agentTimeline.filter(e=>!i.has(e.subagentId)),eventTimeline:e.eventTimeline.filter(e=>!i.has(e.agentId)),leaderId:e.leaderId&&i.has(e.leaderId)?void 0:e.leaderId,fleetTokensIn:Math.max(0,e.fleetTokensIn-a),fleetTokensOut:Math.max(0,e.fleetTokensOut-o)}}if(t.kind===`removed`&&t.subagentId){let i=n.get(t.subagentId);return n.delete(t.subagentId),r.delete(t.subagentId),{agents:n,agentTranscripts:r,agentTimeline:e.agentTimeline.filter(e=>e.subagentId!==t.subagentId),eventTimeline:e.eventTimeline.filter(e=>e.agentId!==t.subagentId),leaderId:e.leaderId===t.subagentId?void 0:e.leaderId,fleetTokensIn:Math.max(0,e.fleetTokensIn-(i?.tokensIn??0)),fleetTokensOut:Math.max(0,e.fleetTokensOut-(i?.tokensOut??0))}}if(t.kind===`leader_updated`&&t.subagentId){let e=n.get(t.subagentId)??fr(t.subagentId,t.name,t.sessionId),r=t.sessionId||e.sessionId;for(let[e,i]of n)e===t.subagentId||!i.isLeader||r&&i.sessionId&&i.sessionId!==r||n.set(e,{...i,isLeader:!1});let o=t.name?.trim()||e.name;return a=t.subagentId,n.set(t.subagentId,{...e,isLeader:!0,name:o}),(!e.isLeader||o!==e.name)&&(i=K(i,{id:G(),kind:`leader_updated`,agentId:t.subagentId,agentName:o,timestamp:Date.now(),message:`${o} became leader`})),{agents:n,leaderId:a,eventTimeline:i}}if(!t.subagentId)return e;let c=n.get(t.subagentId)??fr(t.subagentId,t.name,t.sessionId),l={...c},u=Date.now(),d=t.subagentId===`leader`||c.isLeader,f=!1;switch(t.kind){case`spawned`:if(l.name=t.name?.trim()||l.name,l.provider=t.provider??l.provider,l.model=t.model??l.model,l.description=t.description??l.description,l.taskId=t.taskId??l.taskId,l.sessionId=t.sessionId??l.sessionId,l.status=`running`,l.sparklineBins=Array(sr).fill(0),i=K(i,{id:G(),kind:`spawned`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} spawned`}),!d&&t.description){let e=r.get(t.subagentId)??[];e.length===0&&(r.set(t.subagentId,q(e,{id:`agent_tl_${u}_spawn`,subagentId:t.subagentId,sessionId:t.sessionId,agentName:l.name,content:`🎯 Spawned: ${t.description}`,kind:`system`,iteration:0,ts:new Date(u).toISOString()})),f=!0)}break;case`task_started`:if(l.description=t.description??l.description,l.taskId=t.taskId??l.taskId,l.status=`running`,i=K(i,{id:G(),kind:`task_started`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} started: ${t.description??`new task`}`}),!d&&(t.description||t.taskId)){let e=t.description||t.taskId,n=r.get(t.subagentId)??[],i=n[n.length-1];(!i||!i.content.includes(e))&&(r.set(t.subagentId,q(n,{id:`agent_tl_${u}_task`,subagentId:t.subagentId,sessionId:t.sessionId,agentName:l.name,content:`🎯 Task: ${e}`,kind:`status`,iteration:0,ts:new Date(u).toISOString()})),f=!0)}break;case`tool_executed`:{let e=typeof t.ok!=`boolean`||t.ok,n=typeof t.durationMs==`number`?t.durationMs:0;if(l.lastTool=t.toolName??l.lastTool,l.toolCalls+=1,l.toolLog=[{name:t.toolName??`unknown`,ok:e,durationMs:n,at:u},...l.toolLog].slice(0,50),l.sparklineBins=gr(l.sparklineBins),i=K(i,{id:G(),kind:`tool_executed`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} ${e?`✓`:`✗`} ${t.toolName??`tool`}`,value:n}),!d){let i=n>0?`Completed in ${n}ms`:e?`Success`:`Failed`,a=r.get(t.subagentId)??[];r.set(t.subagentId,q(a,{id:`agent_tl_${u}_tool_${Math.random().toString(36).slice(2,6)}`,subagentId:t.subagentId,sessionId:t.sessionId,agentName:l.name,content:i,kind:`tool_result`,toolName:t.toolName,toolOk:e,iteration:l.iteration,ts:new Date(u).toISOString()})),f=!0}break}case`iteration_summary`:if(l.iteration=t.iteration??l.iteration,typeof t.toolCalls==`number`&&(l.toolCalls=t.toolCalls),typeof t.costUsd==`number`&&(l.costUsd=t.costUsd),l.currentTool=t.currentTool??l.currentTool,typeof t.partialText==`string`&&t.partialText&&(l.partialText=t.partialText),l.sparklineBins=gr(l.sparklineBins),i=K(i,{id:G(),kind:`iteration_summary`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} iter ${t.iteration??l.iteration} · ${t.currentTool?`${t.currentTool}`:``}`,value:t.costUsd}),!d&&typeof t.partialText==`string`&&t.partialText){let e=r.get(t.subagentId)??[];r.set(t.subagentId,q(e,{id:`agent_tl_${u}_iter_${t.iteration??0}`,subagentId:t.subagentId,sessionId:t.sessionId,agentName:l.name,content:t.partialText,kind:`text`,iteration:t.iteration??l.iteration,costUsd:t.costUsd,ts:new Date(u).toISOString()})),f=!0}break;case`budget_warning`:{let e=t.budgetKind??`budget`,n=typeof t.used==`number`?t.used:0,r=typeof t.limit==`number`?t.limit:0;l.budgetWarning={kind:e,used:n,limit:r},i=K(i,{id:G(),kind:`budget_warning`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} hit ${e} budget ${n}/${r}`,value:n});break}case`budget_extended`:l.extensions=t.totalExtensions??l.extensions+1,l.budgetWarning=void 0,i=K(i,{id:G(),kind:`budget_extended`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} extended budget ⚡×${l.extensions}`});break;case`ctx_pct`:l.ctxPct=_r(Math.round(Math.max(0,t.load??0)*100)),l.ctxTokens=t.tokens??l.ctxTokens,l.maxContext=t.maxContext??l.maxContext,l.ctxPct>=80&&!l.budgetWarning&&(l.budgetWarning=l.ctxPct>=100?{kind:`hard`,used:l.ctxPct,limit:100}:{kind:`soft`,used:l.ctxPct,limit:100}),typeof t.costUsd==`number`&&(l.costUsd=t.costUsd),typeof t.tokensIn==`number`&&(l.tokensIn=t.tokensIn,o=o-(c.tokensIn??0)+t.tokensIn),typeof t.tokensOut==`number`&&(l.tokensOut=t.tokensOut,s=s-(c.tokensOut??0)+t.tokensOut),i=K(i,{id:G(),kind:`ctx_pct`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} ctx ${l.ctxPct}%`,value:l.ctxPct});break;case`task_completed`:{l.status=t.status===`success`?`completed`:t.status??`completed`,typeof t.iterations==`number`&&(l.iteration=t.iterations),typeof t.toolCalls==`number`&&(l.toolCalls=t.toolCalls),l.error=t.error,l.currentTool=void 0,l.completedAt=u,l.failureReason=t.failureReason??l.failureReason,typeof t.finalText==`string`&&t.finalText&&(l.finalText=nt(t.finalText));let e=t.status===`success`?`✓ completed`:t.status===`failed`?`✗ failed${t.failureReason?` (${t.failureReason})`:``}`:t.status===`timeout`?`⏱ timeout${t.failureReason?` (${t.failureReason})`:``}`:`stopped`;if(i=K(i,{id:G(),kind:`task_completed`,agentId:t.subagentId,agentName:l.name,timestamp:u,message:`${l.name} ${e}`,value:l.costUsd}),!d){let e=r.get(t.subagentId)??[];if(typeof t.finalText==`string`&&t.finalText){let n=nt(t.finalText);e.some(e=>e.kind===`text`&&e.content.includes(n))||(r.set(t.subagentId,q(e,{id:`agent_tl_${u}_done_text`,subagentId:t.subagentId,sessionId:t.sessionId,agentName:l.name,content:n,kind:`text`,iteration:t.iterations??l.iteration,ts:new Date(u).toISOString()})),f=!0)}if(t.status===`failed`||t.status===`timeout`){let e=t.error?.message??(t.failureReason?`Failed: ${t.failureReason}`:`Agent ${t.status}`);r.set(t.subagentId,q(r.get(t.subagentId)??[],{id:`agent_tl_${u}_err`,subagentId:t.subagentId,sessionId:t.sessionId,agentName:l.name,content:e,kind:`error`,iteration:t.iterations??l.iteration,ts:new Date(u).toISOString()})),f=!0}else t.finalText||(r.set(t.subagentId,q(r.get(t.subagentId)??[],{id:`agent_tl_${u}_done_status`,subagentId:t.subagentId,sessionId:t.sessionId,agentName:l.name,content:`Task completed successfully`,kind:`status`,iteration:t.iterations??l.iteration,ts:new Date(u).toISOString()})),f=!0)}break}}n.set(t.subagentId,l);let p=!1;if(n.size>ur)for(let[e,i]of n){if(n.size<=ur)break;i.status!==`running`&&e!==t.subagentId&&(n.delete(e),r.delete(e),p=!0,o=Math.max(0,o-(i.tokensIn??0)),s=Math.max(0,s-(i.tokensOut??0)),a===e&&(a=void 0))}return{agents:n,agentTranscripts:f||p?r:e.agentTranscripts,leaderId:a,fleetTokensIn:o,fleetTokensOut:s,eventTimeline:i}})})),vr=e=>{let t=Array.from(e.agents.values());return t.sort((e,t)=>e===t||e.id===t.id?0:e.isLeader===t.isLeader?Qn(e,t):e.isLeader?-1:1),t},yr=Object.freeze({leaderId:void 0,tokensIn:0,tokensOut:0,totalCost:0,running:0,completed:0,failed:0,total:0}),br=`\0unattributed`,xr=new WeakMap;function Sr(e){let t=xr.get(e);if(t)return t;let n=new Map;for(let t of e.values()){let e=t.sessionId||br,r=n.get(e);r||(r={...yr},n.set(e,r)),r.total++,t.status===`running`?r.running++:t.status===`completed`?r.completed++:(t.status===`failed`||t.status===`timeout`)&&r.failed++,Number.isFinite(t.costUsd)&&t.costUsd>0&&(r.totalCost+=t.costUsd),r.tokensIn+=t.tokensIn??0,r.tokensOut+=t.tokensOut??0,t.isLeader&&(r.leaderId=t.id)}return xr.set(e,n),n}var Cr=(e,t)=>t?Sr(e.agents).get(t)??yr:yr,wr=(e,t)=>{if(!t){if(!e.leaderId)return;let t=e.agents.get(e.leaderId);return t&&!t.sessionId?e.leaderId:void 0}let n=Sr(e.agents).get(t)?.leaderId;if(n)return n;let r=e.leaderId;if(!r)return;let i=e.agents.get(r);return i&&i.sessionId===t?r:void 0};function Tr(e){let t=Gt(),n=e??(t||void 0);return J(e=>wr(e,n))}function Er(e){let t=Gt(),n=e??(t||void 0);return J(e=>Cr(e,n))}var Dr=o()(e=>({entries:[],loading:!1,error:null,setEntries:(t,n=null)=>e({entries:t,error:n,loading:!1}),setLoading:t=>e({loading:t}),removeEntry:t=>e(e=>({entries:e.entries.filter(e=>e.id!==t)})),updateEntryName:(t,n)=>e(e=>({entries:e.entries.map(e=>{if(e.id!==t)return e;let r=n.trim();if(!r){let{name:t,...n}=e;return n}return{...e,name:r}})})),rebindCurrent:t=>e(e=>e.entries.every(e=>e.isCurrent===(e.id===t))?{}:{entries:e.entries.map(e=>({...e,isCurrent:e.id===t}))}),clearHistory:()=>e({entries:[]})})),Or=o()(e=>({candidates:[],offer:t=>{e({candidates:[...new Set(t.filter(e=>typeof e==`string`&&e.length>0))]})},dismiss:()=>e({candidates:[]})})),kr=3e5,Ar=new Map;function jr(e){let t=Ar.get(e);t!==void 0&&(clearTimeout(t),Ar.delete(e))}var Mr=o()(e=>({startedAt:{},progress:{},begin:t=>{t&&(jr(t),Ar.set(t,setTimeout(()=>{Ar.delete(t),Mr.getState().end(t)},kr)),e(e=>({startedAt:{...e.startedAt,[t]:Date.now()}})))},update:(t,n)=>{t&&e(e=>({progress:{...e.progress,[t]:{...n,loadedBytes:Math.max(0,n.loadedBytes),totalBytes:Math.max(0,n.totalBytes),updatedAt:Date.now()}}}))},end:t=>{t&&(jr(t),e(e=>{if(!(t in e.startedAt)&&!(t in e.progress))return e;let{[t]:n,...r}=e.startedAt,{[t]:i,...a}=e.progress;return{startedAt:r,progress:a}}))},clear:()=>{for(let e of[...Ar.keys()])jr(e);e({startedAt:{},progress:{}})}})),Nr={start:`Starting`,resolve_id:`Resolving session id`,reserve_ownership:`Reserving ownership`,open_journal:`Reading journal`,activate_ownership:`Taking ownership`,replay_history:`Rebuilding timeline`,read_sidecars:`Reading todos and sidecars`,swap_writer:`Attaching session`,flush_journal:`Flushing journal`,repoint_sidecars:`Repointing sidecars`,restore_model:`Restoring provider and model`,finalize_previous_session:`Closing previous session`,token_accounting:`Restoring token accounting`,complete:`Finalizing`};function Pr(e){return e?Nr[e]??e.replaceAll(`_`,` `):`Reading journal`}function Fr(e){if(!e||e.totalBytes<=0)return null;let t=Math.round(e.loadedBytes/e.totalBytes*100);return Math.max(0,Math.min(100,t))}function Ir(e){return e>=1048576?`${(e/1048576).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}var Lr=o()(e=>({info:null,currentBySession:{},pickerOpen:!1,pickerStartsSession:!1,promptedThisSession:!1,setInfo:(t,n)=>e(e=>({info:t,currentBySession:n?{...e.currentBySession,[n]:t.current}:e.currentBySession})),dropSession:t=>e(e=>{if(!(t in e.currentBySession))return e;let n={...e.currentBySession};return delete n[t],{currentBySession:n}}),openPicker:t=>e({pickerOpen:!0,pickerStartsSession:t?.startsSession===!0,promptedThisSession:!0}),closePicker:()=>e({pickerOpen:!1,pickerStartsSession:!1}),markPrompted:()=>e({promptedThisSession:!0})}));function Rr(e,t){return(t?e.currentBySession[t]:void 0)??e.info?.current??`default`}var zr=`leader`;function Br(){return{started:0,ok:0,failed:0,totalMs:0}}function Vr(){return{started:0,ok:0,failed:0,totalMs:0,toolCalls:0}}function Hr(e){return{sessionId:e,firstActivityAt:Date.now(),lastActivityAt:Date.now(),perTool:{},perAgent:{},delegations:Vr()}}function Ur(e,t){let n=e[t];if(n)return{record:e,bucket:n};let r=Br();return{record:{...e,[t]:r},bucket:r}}function Wr(e,t){let n=e[t];if(n)return{sessions:e,session:n};let r=Hr(t);return{sessions:{...e,[t]:r},session:r}}var Gr=o(e=>({sessions:{},recordToolStarted:(t,n)=>e(e=>{let r=n.agentName||`leader`,{sessions:i,session:a}=Wr(e.sessions,t),o=Ur(a.perTool,n.name),s=Ur(a.perAgent,r),c={...a,lastActivityAt:Date.now(),perTool:{...o.record,[n.name]:{...o.bucket,started:o.bucket.started+1}},perAgent:{...s.record,[r]:{...s.bucket,started:s.bucket.started+1}}};return{sessions:{...i,[t]:c}}}),recordToolExecuted:(t,n)=>e(e=>{let r=n.agentName||`leader`,{sessions:i,session:a}=Wr(e.sessions,t),o=Ur(a.perTool,n.name),s=Ur(a.perAgent,r),c=Math.max(0,n.durationMs??0),l={...a,lastActivityAt:Date.now(),perTool:{...o.record,[n.name]:{...o.bucket,ok:o.bucket.ok+ +!!n.ok,failed:o.bucket.failed+ +!n.ok,totalMs:o.bucket.totalMs+c}},perAgent:{...s.record,[r]:{...s.bucket,ok:s.bucket.ok+ +!!n.ok,failed:s.bucket.failed+ +!n.ok,totalMs:s.bucket.totalMs+c}}};return{sessions:{...i,[t]:l}}}),recordDelegateStarted:(t,n)=>e(e=>{let{sessions:n,session:r}=Wr(e.sessions,t),i={...r,lastActivityAt:Date.now(),delegations:{...r.delegations,started:r.delegations.started+1}};return{sessions:{...n,[t]:i}}}),recordDelegateCompleted:(t,n)=>e(e=>{let{sessions:r,session:i}=Wr(e.sessions,t),a={...i,lastActivityAt:Date.now(),delegations:{...i.delegations,ok:i.delegations.ok+ +!!n.ok,failed:i.delegations.failed+ +!n.ok,toolCalls:i.delegations.toolCalls+Math.max(0,n.toolCalls??0)}};return{sessions:{...r,[t]:a}}}),resetSession:t=>e(e=>{if(!(t in e.sessions))return e;let n={...e.sessions};return delete n[t],{sessions:n}}),clearAll:()=>e({sessions:{}})}));function Kr(e){let t=Object.values(e.perAgent).reduce((e,t)=>e+t.started,0),n=Object.values(e.perAgent).reduce((e,t)=>e+t.ok+t.failed,0);return Math.max(0,t-n)}var Y=w,qr=`wrongstack.open_session_tabs`;function Jr(){if(typeof window>`u`)return[];try{let e=localStorage.getItem(qr);if(!e)return[];let t=JSON.parse(e);return Array.isArray(t)?t.filter(e=>typeof e==`string`&&e.length>0).slice(0,Y):[]}catch{return[]}}function Yr(e){if(!(typeof window>`u`))try{localStorage.setItem(qr,JSON.stringify(e.slice(0,Y)))}catch{}}function Xr(e){if(!(typeof window>`u`))try{let t=new URL(window.location.href);if(t.searchParams.get(`session`)===e)return;t.searchParams.set(`session`,e),window.history.replaceState({},``,t.toString())}catch{}}function Zr(){let e=F();return e&&e!==`__unbound__`?e:null}function Qr(e){N(e),Tt(e),P(e),Dn.getState().switchSession(e);let t=_.getState();t.bindSessionChrome(e),t.setSubagentChatFocus(t.subagentChatFocusBySession[e]??null,e);let n=D(e),r=n.pendingConfirm;r?t.showConfirm(r):t.hideConfirm();let i=n.pendingFallback;i?Yn.getState().setPending(i):Yn.getState().clear(),Dr.getState().rebindCurrent(e),t.setQueuePanelOpen(!1),t.setProcessMonitorOpen(!1),t.setCronJobsOpen(!1),Xr(e)}function $r(e){if(D(e).isLoading)return!0;for(let t of J.getState().agents.values())if(t.sessionId===e&&t.status===`running`)return!0;return!1}function ei(e){let t=D(e),n=t.isLoading,r=[],i=0;for(let t of J.getState().agents.values())t.sessionId===e&&(t.status===`running`?r.push({id:t.id,name:t.name??t.id,brief:t.description?Fn(t.description,120):``}):i+=1);let a=t.queue.length,o=[];n&&o.push(f.t(`activity:sessions.warnLeaderRunning`,{defaultValue:`Leader run in progress`}));for(let e of r)o.push(f.t(`activity:sessions.warnSubagentLine`,{defaultValue:`{{name}} — running{{suffix}}`,name:e.name,suffix:e.brief?`: ${e.brief}`:``}));i>0&&o.push(f.t(`activity:sessions.warnFinishedAgents`,{defaultValue:`{{count}} finished subagent(s) on record`,count:i})),a>0&&o.push(f.t(`activity:sessions.warnQueuedMessages`,{defaultValue:`{{count}} queued message(s)`,count:a}));let s=!n&&r.length===0&&i===0&&a===0&&t.messages.length===0;return{sessionId:e,isBusy:n||r.length>0,isEmpty:s,leaderRunning:n,runningAgents:r,finishedAgents:i,queuedMessages:a,lines:o}}function ti(e){if(!$r(e))return;let t=ei(e);if(t.lines.length===0)return;let n=Bt(e).session?.title??e.slice(0,8);jn.warn(f.t(`activity:sessions.stillRunningToast`,{defaultValue:`"{{title}}" keeps running in background:
|
|
21
|
+
{{lines}}`,title:n,lines:t.lines.join(`
|
|
22
|
+
`)}),7e3)}function ni(e){Ct(e),Ut(e),m.getState().forgetSession(e),Lr.getState().dropSession(e),_.getState().forgetSession(e),sn.getState().forgetSessionFiles(e),dn.getState().forgetSessionGitChanges(e),J.getState().applyEvent({kind:`session_stopped`,sessionId:e}),Jn.getState().forgetSession(e),Gr.getState().resetSession(e),Kn(e)}function ri(e){let t=F();if(t!==`__unbound__`&&e.includes(t))return;let n=e[e.length-1];if(n!==void 0){Qr(n),X.getState().markSeen(n);return}Tt(null),P(j),_.getState().hideConfirm(),Yn.getState().clear()}function ii(e){try{aa().focusSessionById(e)}catch{}}function ai(e){let t=Zr(),n=t&&!e.includes(t)?[...e,t]:e;if(n.length!==0)try{aa().subscribeSessions(n)}catch{}}var oi=(e,t)=>{if(e.length===0)return null;let n=e[0],r=Bt(n).lastVisitedAt||0;for(let t=1;t<e.length;t+=1){let i=e[t],a=Bt(i).lastVisitedAt||0;a>r&&(n=i,r=a)}return n};function si(e){let t=new Set(e.filter(e=>typeof e==`string`&&e.length>0)),n=X.getState().openTabIds,r=n.filter(e=>t.has(e));if(r.length===n.length)return r;for(let e of n)t.has(e)||ni(e);return Yr(r),X.setState({openTabIds:r}),r}var ci=!1;function li(e,t={}){if(ci)return[];if(ci=!0,e===void 0)return ui(t);let n=new Set(e.filter(e=>typeof e==`string`&&e.length>0)),r=X.getState().openTabIds.filter(e=>!n.has(e));si(e);let i=ui(t);return r.length>0&&Or.getState().offer(r),i}function ui(e={}){if(Zr())return[];let t=e.now??Date.now(),n=e.pickForeground??oi,r=X.getState().openTabIds.slice(0,Y);if(r.length===0)return[];for(let e of r)bt(e),N(e),m.getState().bindSession(e),_.getState().bindSessionChrome(e),Dr.getState().rebindCurrent(e);let i=n(r,t)??r[0];return i&&(Qr(i),X.getState().markSeen(i),ii(i)),ai(r),r}var X=o((e,t)=>({openTabIds:Jr(),lastSeenCounts:{},attention:{},setOpenTabIds:n=>{let r=new Set,i=[];for(let e of n)if(!(!e||r.has(e))&&(r.add(e),i.push(e),i.length===Y))break;let a=t().openTabIds.filter(e=>!r.has(e));for(let e of a)ni(e);let o=e=>Object.fromEntries(Object.entries(e).filter(([e])=>r.has(e)));e({openTabIds:i,lastSeenCounts:o(t().lastSeenCounts),attention:o(t().attention)}),Yr(i),a.length>0&&ri(i)},openTab:(n,r)=>{if(!n)return{success:!1,reason:`tabs_full`};let i=r?.recycleReentry===!0,a=Zr(),o=[...t().openTabIds];if(a&&!o.includes(a)&&o.length<Y&&o.push(a),n===a){if(!t().openTabIds.includes(n)){let e=[...o.slice(0,Y-1),n];t().setOpenTabIds(e)}return t().markSeen(n),{success:!0,reason:`already_active`}}if(o.includes(n))return a&&!i&&ti(a),Qr(n),t().markSeen(n),D(n).messages.length===0&&Mr.getState().begin(n),ii(n),{success:!0,reason:`switched`};if(o.length<Y){a&&!i&&ti(a);let s=[...o,n];return e({openTabIds:s}),Yr(s),Qr(n),t().markSeen(n),r?.resumeSession&&(Mr.getState().begin(n),r.resumeSession(n)),{success:!0,reason:i?`replaced_empty_tab`:`opened_new_tab`}}let s=o.find(e=>{if(e===a||$r(e))return!1;let t=Dr.getState().entries.find(t=>t.id===e);if(t&&(t.tokenTotal>0||(t.messageCount??0)>0))return!1;let n=D(e);return ei(e).isEmpty&&n.pendingConfirm===null&&n.pendingFallback===null&&n.pendingRefinement===null});return s?(a&&!i&&ti(a),t().closeTab(s),t().openTab(n,{...r,recycleReentry:!0})):(jn.error(f.t(`activity:sessions.allTabsRunning`,{defaultValue:`Maksimum 4 aktif sekme dolu. Başka bir oturum açmak için önce bir sekmeyi kapatın.`})),{success:!1,reason:`tabs_full`})},closeTab:n=>{let r=t().openTabIds.filter(e=>e!==n);ni(n);let{[n]:i,...a}=t().lastSeenCounts,{[n]:o,...s}=t().attention;e({openTabIds:r,lastSeenCounts:a,attention:s}),Yr(r),ri(r),ai(r)},closeTabsForSessions:e=>{let n=new Set(e.filter(e=>!$r(e))),r=[...t().openTabIds];if(n.size===0)return[];if(r.length===0)return[...n];let i=r.filter(e=>!n.has(e));if(i.length===0){let e=Zr(),t=e&&n.has(e)?e:r[r.length-1];i=[t],n.delete(t)}return t().setOpenTabIds(i),ai(i),[...n]},markSeen:t=>e(e=>({lastSeenCounts:{...e.lastSeenCounts,[t]:D(t).messages.length},attention:{...e.attention,[t]:!1}})),setAttention:(t,n)=>e(e=>({attention:{...e.attention,[t]:n}}))}));function di(e){return Math.max(0,Math.min(100,Math.round((typeof e==`number`&&Number.isFinite(e)?e:0)*100)))}function fi(e,t=!1){if(t&&e.target){if(e.kind===`agent:tool`||e.kind===`tool:executed`||e.kind===`tool:started`)return`tool`;if(e.source===`leader`||e.source===`coordinator`)return`coordinator`;if(e.kind.startsWith(`provider:`))return`provider`;if(e.kind.startsWith(`mailbox:`))return`mailbox`}switch(e.kind){case`provider:call`:case`provider:delta`:case`provider:response`:return`provider`;case`agent:spawned`:case`agent:tool`:case`agent:status`:case`agent:text`:case`agent:ctx`:case`budget:warning`:case`budget:extended`:return`agent`;case`tool:started`:case`tool:executed`:case`tool:progress`:return`tool`;case`mailbox:send`:case`mailbox:deliver`:return`mailbox`;case`collab:event`:return`system`;case`session:start`:case`session:end`:case`iteration:start`:case`iteration:end`:case`eternal:iteration`:case`fleet:snapshot`:return`session`;case`context:compacted`:case`context:repaired`:case`cost:update`:return`system`;case`error`:return`error`;default:return`system`}}var pi=400,mi=1200;function hi(e,t,n){if(e.size<=t)return e;let r=[...e.entries()].sort((e,t)=>n(e[1])-n(t[1]));for(let[n]of r.slice(0,e.size-t))e.delete(n);return e}function gi(e){switch(e){case`provider:call`:case`provider:delta`:case`agent:tool`:case`tool:started`:case`tool:progress`:case`iteration:start`:case`agent:text`:return`streaming`;case`agent:status`:case`iteration:end`:return`completed`;case`error`:return`error`;case`tool:executed`:return`completed`;case`session:end`:return`idle`;default:return`active`}}var _i=0;function Z(){return`viz_${Date.now()}_${++_i}`}var vi=250;function yi(e,t){return t-e<vi}function Q(e,t){if(e===t)return!0;if(!e||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r of n){let n=e[r],i=t[r];if(n!==i){if(n==null||i==null||typeof n!=typeof i)return!1;if(typeof n==`object`){if(Array.isArray(n)||Array.isArray(i)||!Q(n,i))return!1;continue}return!1}}return!0}var $={provider:`hsl(var(--info))`,agent:`hsl(var(--primary))`,tool:`hsl(var(--warning))`,mailbox:`hsl(var(--success))`,session:`hsl(var(--primary))`,system:`hsl(var(--muted-foreground))`,success:`hsl(var(--success))`,error:`hsl(var(--destructive))`},bi={"provider:call":`hsl(var(--info))`,"provider:delta":`hsl(var(--primary))`,"agent:tool":`hsl(var(--warning))`,"mailbox:send":`hsl(var(--success))`,default:`hsl(var(--muted-foreground))`},xi=o()((e,t)=>({events:[],toolEvents:[],nodes:new Map,edges:new Map,isActive:!1,maxEvents:2e3,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0},pushEvent:t=>e(e=>{let n={...t,id:t.id??Z(),timestamp:t.timestamp||Date.now()},r=[n,...e.events];r.length>e.maxEvents&&(r.length=e.maxEvents);let i=t.kind===`agent:tool`||t.kind===`tool:started`||t.kind===`tool:progress`||t.kind===`tool:executed`?[n,...e.toolEvents].slice(0,600):e.toolEvents,a=Date.now(),o=t.source,s={id:o,kind:fi(t),label:t.label,status:gi(t.kind),activity:1,color:t.color??$[fi(t)],lastSeenAt:a},c=e.nodes.get(o),l=c?{...c,...s}:s,u=!Q(c,l);c&&u&&yi(c.lastSeenAt,a)&&Q({...c,activity:l.activity,lastSeenAt:l.lastSeenAt},l)&&(l=c,u=!1);let d,f=!1,p;if(t.target){p=t.target;let n={id:p,kind:fi(t,!0),label:p,status:gi(t.kind),activity:.8,color:t.color??$[fi(t,!0)],lastSeenAt:a},r=e.nodes.get(p);d=r?{...r,...n}:n,f=!Q(r,d),r&&f&&yi(r.lastSeenAt,a)&&Q({...r,activity:d.activity,lastSeenAt:d.lastSeenAt},d)&&(d=r,f=!1)}let m,h=!1,g;if(t.target&&o){g=`${o}->${t.target}`;let n=e.edges.get(g),r={id:g,source:o,target:t.target,kind:t.kind,label:t.label,intensity:n?Math.min(1,n.intensity+.3):.7,color:t.color??$[fi(t)]??$.agent,lastActiveAt:a,totalMagnitude:(n?.totalMagnitude??0)+(t.magnitude??0)};m=n?{...n,...r}:r,h=!Q(n,m),n&&h&&yi(n.lastActiveAt,a)&&Q({...n,lastActiveAt:m.lastActiveAt},m)&&(m=n,h=!1)}let _=e.nodes,v=e.edges;return(u||f)&&(_=new Map(e.nodes),u&&_.set(o,l),f&&d&&p&&_.set(p,d)),h&&m&&g&&(v=new Map(e.edges),v.set(g,m)),_!==e.nodes&&(_=hi(_,pi,e=>e.lastSeenAt)),v!==e.edges&&(v=hi(v,mi,e=>e.lastActiveAt)),{events:r,toolEvents:i,nodes:_,edges:v}}),upsertNode:t=>e(e=>{let n=new Map(e.nodes),r=n.get(t.id);return n.set(t.id,{...r,...t,lastSeenAt:t.lastSeenAt===void 0?Date.now():t.lastSeenAt}),{nodes:n}}),removeNode:t=>e(e=>{let n=new Map(e.nodes);n.delete(t);let r=new Map(e.edges);for(let[e,n]of r)(n.source===t||n.target===t)&&r.delete(e);return{nodes:n,edges:r}}),upsertEdge:t=>e(e=>{let n=new Map(e.edges),r=n.get(t.id);return n.set(t.id,{...r,...t,lastActiveAt:t.lastActiveAt===void 0?Date.now():t.lastActiveAt,intensity:t.intensity??r?.intensity??.5,color:t.color??bi[t.kind]??bi.default,totalMagnitude:(r?.totalMagnitude??0)+(t.totalMagnitude??0)}),{edges:n}}),removeEdge:t=>e(e=>{let n=new Map(e.edges);return n.delete(t),{edges:n}}),clear:()=>e({events:[],toolEvents:[],nodes:new Map,edges:new Map,counters:{totalTokens:0,totalCost:0,totalToolCalls:0,activeAgents:0,completedTasks:0,errors:0,mailboxMessages:0}}),setActive:t=>e({isActive:t}),decayActivity:()=>e(e=>{let t=new Map(e.nodes);for(let[e,n]of t)if(n.activity>=.01){let r=n.activity*.92;t.set(e,{...n,activity:r<.01?0:r})}let n=new Map(e.edges);for(let[e,t]of n)if(t.intensity>=.01){let r=t.intensity*.9;n.set(e,{...t,intensity:r<.01?0:r})}return{nodes:t,edges:n}}),prunesStale:t=>e(e=>{let n=Date.now()-t,r=new Map(e.nodes);for(let[e,t]of r)t.lastSeenAt<n&&r.delete(e);let i=new Map(e.edges);for(let[e,t]of i)t.lastActiveAt<n&&i.delete(e);return{nodes:r,edges:i,events:e.events.filter(e=>e.timestamp>n)}})}));function Si(e,t){switch(e){case`provider.text_delta`:{let e=t.text??``;return{id:Z(),kind:`provider:delta`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,60),magnitude:e.length,data:{text:e},color:$.provider,flowGroup:`provider`}}case`provider.response`:{let e=t.usage,n=(e?.input??0)+(e?.output??0);return{id:Z(),kind:`provider:response`,timestamp:Date.now(),source:`provider`,target:`leader`,label:`${(e?.input??0).toLocaleString(`en-US`)} in / ${(e?.output??0).toLocaleString(`en-US`)} out`,magnitude:n,data:t,color:$.provider,flowGroup:`provider`}}case`provider.stream_error`:{let e=t.message??`Provider stream error`;return{id:Z(),kind:`error`,timestamp:Date.now(),source:`provider`,target:`leader`,label:e.slice(0,80),magnitude:1,data:t,color:$.error,flowGroup:`provider`}}case`tool.started`:{let e=t.name??`tool`;return{id:Z(),kind:`tool:started`,timestamp:Date.now(),source:e,target:`filesystem`,label:e,magnitude:1,data:t,color:$.tool,flowGroup:`tool:${e}`}}case`tool.executed`:{let e=t.name??`tool`,n=t.ok??!0;return{id:Z(),kind:`tool:executed`,timestamp:Date.now(),source:e,target:`leader`,label:`${e} ${n?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:n?$.tool:$.error,flowGroup:`tool:${e}`}}case`tool.progress`:{let e=t.name??`tool`,n=t.event?.text??``;return{id:Z(),kind:`tool:progress`,timestamp:Date.now(),source:e,target:`leader`,label:n.slice(0,60)||e,magnitude:n.length,data:t,color:$.tool,flowGroup:`tool:${e}`}}case`codemap.tool_started`:{let e=t.name??`tool`,n=t.agentId??`subagent`;return{id:Z(),kind:`tool:started`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:1,data:t,color:$.tool,flowGroup:`agent:${n}`}}case`codemap.tool_executed`:{let e=t.name??`tool`,n=t.agentId??`subagent`,r=t.ok??!0;return{id:Z(),kind:`tool:executed`,timestamp:Date.now(),source:n,target:e,label:`${e} ${r?`✓`:`✗`} (${t.durationMs??0}ms)`,magnitude:t.durationMs??0,data:t,color:r?$.tool:$.error,flowGroup:`agent:${n}`}}case`tool.loop_detected`:{let e=t.tools??``,n=t.kind??`loop`,r=t.action===`steer`;return{id:Z(),kind:r?`agent:status`:`error`,timestamp:Date.now(),source:e||n,target:`leader`,label:`${n} loop x${t.repeatCount??0}`,magnitude:t.repeatCount??1,data:t,color:r?$.agent:$.error,flowGroup:`tool`}}case`delegate.started`:{let e=t.target??`delegate`,n=t.task??``;return{id:Z(),kind:`agent:status`,timestamp:Date.now(),source:`leader`,target:e,label:n.slice(0,80)||`Delegating to ${e}`,magnitude:1,data:t,color:$.agent,flowGroup:`delegate:${e}`}}case`delegate.completed`:{let e=t.subagentId??t.target??`delegate`,n=t.ok??!1;return{id:Z(),kind:n?`agent:status`:`error`,timestamp:Date.now(),source:e,target:`leader`,label:(t.summary??t.status??`delegate completed`).slice(0,80),magnitude:t.durationMs??1,data:t,color:n?$.agent:$.error,flowGroup:`delegate:${e}`}}case`subagent.event`:{let e=t.kind,n=t.subagentId??`unknown`,r=t.name??n;switch(e){case`spawned`:return{id:Z(),kind:`agent:spawned`,timestamp:Date.now(),source:n,target:`session`,label:`${r} spawned`,magnitude:1,data:t,color:$.agent,flowGroup:`agent:${n}`};case`tool_executed`:{let e=t.toolName??`tool`,r=t.ok??!0;return{id:Z(),kind:`agent:tool`,timestamp:Date.now(),source:n,target:e,label:e,magnitude:t.durationMs??0,data:t,color:r?$.tool:$.error,flowGroup:`agent:${n}`}}case`task_completed`:{let e=t.status??`completed`;return{id:Z(),kind:`agent:status`,timestamp:Date.now(),source:n,target:`session`,label:`${r} ${e}`,magnitude:1,data:t,color:e===`success`?$.success:$.error,flowGroup:`agent:${n}`}}case`ctx_pct`:return{id:Z(),kind:`agent:ctx`,timestamp:Date.now(),source:n,target:`session`,label:`ctx ${di(t.load)}%`,magnitude:t.tokens??0,data:t,color:$.agent,flowGroup:`agent:${n}`};case`iteration_summary`:return{id:Z(),kind:`agent:text`,timestamp:Date.now(),source:n,target:`session`,label:(t.partialText??``).slice(0,80)||`iter ${t.iteration??0}`,magnitude:t.costUsd??0,data:t,color:$.agent,flowGroup:`agent:${n}`};case`budget_extended`:return{id:Z(),kind:`budget:extended`,timestamp:Date.now(),source:n,target:`session`,label:`${r} extended budget`,magnitude:t.totalExtensions??1,data:t,color:$.tool,flowGroup:`agent:${n}`};case`budget_warning`:return{id:Z(),kind:`budget:warning`,timestamp:Date.now(),source:n,target:`session`,label:`${r} hit ${t.budgetKind??`budget`} ${t.used??0}/${t.limit??0}`,magnitude:t.used??1,data:t,color:$.error,flowGroup:`agent:${n}`}}return null}case`mailbox.event`:{let e=t.event,n=t.from??`?`,r=t.to??`?`,i=t.subject??``,a=e===`mailbox.sent`;return{id:Z(),kind:a?`mailbox:send`:`mailbox:deliver`,timestamp:Date.now(),source:n,target:r,label:i||(a?`→ ${r}`:`← ${n}`),magnitude:1,data:t,color:$.mailbox,flowGroup:`mailbox`}}case`iteration.started`:{let e=t.index??0;return{id:Z(),kind:`iteration:start`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e}`,magnitude:e,data:t,color:$.agent,flowGroup:`iteration`}}case`iteration.completed`:{let e=t.index??0;return{id:Z(),kind:`iteration:end`,timestamp:Date.now(),source:`leader`,target:`session`,label:`Iteration ${e} done`,magnitude:e,data:t,color:$.session,flowGroup:`iteration`}}case`ctx.pct`:{let e=t.tokens??0;return{id:Z(),kind:`agent:ctx`,timestamp:Date.now(),source:`leader`,target:`session`,label:`ctx ${di(t.load)}%`,magnitude:e,data:t,color:$.agent,flowGroup:`leader`}}case`error`:{let e=t.message??`Error`;return{id:Z(),kind:`error`,timestamp:Date.now(),source:t.phase??`system`,target:`session`,label:e,magnitude:1,data:t,color:$.error,flowGroup:`error`}}case`context.compacted`:return{id:Z(),kind:`context:compacted`,timestamp:Date.now(),source:`system`,target:`session`,label:`Compacted: ${(t.saved??0).toLocaleString(`en-US`)} tokens`,magnitude:t.saved??0,data:t,color:`hsl(var(--info))`,flowGroup:`context`};case`compaction.failed`:{let e=t.message??`Compaction failed`;return{id:Z(),kind:`error`,timestamp:Date.now(),source:`compactor`,target:`session`,label:e.slice(0,80),magnitude:t.tokens??1,data:t,color:$.error,flowGroup:`context`}}case`context.repaired`:return{id:Z(),kind:`context:repaired`,timestamp:Date.now(),source:`system`,target:`session`,label:`Repaired: ${t.removedMessages??0} msgs`,magnitude:t.removedMessages??0,data:t,color:`hsl(var(--info))`,flowGroup:`context`};case`session.start`:{let e=t.sessionId??`?`,n=t.projectName??``;return{id:Z(),kind:`session:start`,timestamp:Date.now(),source:`session`,target:`leader`,label:n||e.slice(0,12),magnitude:1,data:t,color:$.session,flowGroup:`session`}}case`sessions.status_update`:{let e=t.sessions??[];return{id:Z(),kind:`fleet:snapshot`,timestamp:Date.now(),source:`system`,target:`session`,label:`${e.length} session(s)`,magnitude:e.length,data:t,color:$.system,flowGroup:`fleet`}}default:return null}}function Ci(){let e=F();return e&&e!==`__unbound__`?e:Dn.getState().session?.id??null}function wi(e){let t=e.payload?.sessionId,n=Ci();return t!==``&&(!t&&n&&Ii(e.type),!t||!n||t===n)}function Ti(e){let t=e.payload?.sessionId;return typeof t==`string`&&t.length>0?t:null}function Ei(){let e=new Set(X.getState().openTabIds),t=Et();for(let n of yt())if(!(n===`__unbound__`||n===t||e.has(n))&&!D(n).isLoading)return Ct(n),Ut(n),!0;return!1}function Di(e){let t=Ti(e);return t?vt(t)?k(t):yt().length<w||Ei()?(bt(t),k(t)):(Mi(e.type,t),null):Et()===`__unbound__`?k(T):(Ai(e.type),null)}function Oi(e){let t=Ti(e);return t?Vt(t)?L(t):Ht().length<w||Ei()?(N(t),L(t)):(Pi(e.type,t),null):F()===`__unbound__`?L(j):null}var ki=new Set;function Ai(e){ki.has(e)||(ki.add(e),console.warn(JSON.stringify({level:`warn`,event:`ws_client.untagged_chat_event`,messageType:e,reason:`chat event carried no sessionId; dropped to protect other tabs`,timestamp:new Date().toISOString()})))}var ji=new Set;function Mi(e,t){ji.has(t)||(ji.add(t),console.warn(JSON.stringify({level:`warn`,event:`ws_client.chat_lane_overflow`,messageType:e,sessionId:t,reason:`no lane for this session and all four lanes are taken; event dropped`,timestamp:new Date().toISOString()})))}var Ni=new Set;function Pi(e,t){Ni.has(t)||(Ni.add(t),console.warn(JSON.stringify({level:`warn`,event:`ws_client.session_lane_overflow`,messageType:e,sessionId:t,reason:`no session lane for this session and all four lanes are taken; token/cost accounting event dropped`,timestamp:new Date().toISOString()})))}var Fi=new Set;function Ii(e){Fi.has(e)||(Fi.add(e),console.warn(JSON.stringify({level:`warn`,event:`ws_client.untagged_guard_event`,messageType:e,reason:`untagged frame passed a session guard while a session was bound; if this event is session-scoped, the server surface forgot to stamp sessionId`,timestamp:new Date().toISOString()})))}function Li(e){let t=Si(e.type,e.payload);t&&(xi.getState().pushEvent(t),xi.getState().setActive(!0))}function Ri(e,t,n){let r=e.payload??{};for(let[e,n]of Object.entries(t)){let t=r[e];if(!zi(t,n))return null}if(n)for(let[e,t]of Object.entries(n)){let n=r[e];if(n!=null&&!zi(n,t))return null}return r}function zi(e,t){switch(t){case`string`:return typeof e==`string`;case`number`:return typeof e==`number`;case`boolean`:return typeof e==`boolean`;case`object`:return typeof e==`object`&&!!e&&!Array.isArray(e);case`array`:return Array.isArray(e);default:return!1}}function Bi(e){try{return new URL(e).searchParams.get(`token`)}catch{return null}}function Vi(){if(typeof window>`u`||!window.location)return null;try{let e=window.location.search??``;return new URLSearchParams(e).get(`token`)}catch{return null}}function Hi(e){try{let t=new URL(e);return t.searchParams.delete(`token`),t.toString()}catch{return e}}function Ui(){if(!(typeof window>`u`||!window.location||!window.history?.replaceState))try{let e=window.location.href;if(!e)return;let t=new URL(e);if(!t.searchParams.has(`token`))return;t.searchParams.delete(`token`),window.history.replaceState(window.history.state,document.title,t.toString())}catch{}}function Wi(){if(typeof document>`u`)return null;let e=document.querySelector(`meta[name="wrongstack-ws-url"]`)?.getAttribute(`content`)?.trim();if(!e)return null;try{let t=new URL(e);if(t.protocol!==`ws:`&&t.protocol!==`wss:`)return null;let n=Vi();return n&&!t.searchParams.has(`token`)&&t.searchParams.set(`token`,n),t.toString()}catch{return null}}function Gi(){let e=Wi();if(e)return e;if(typeof window>`u`||!window.location?.hostname)return`ws://127.0.0.1:3456`;let t=window.location.protocol===`https:`?`wss`:`ws`,n=window.location.hostname.toLowerCase(),r=window.location.port,i=Vi(),a=i?`?token=${encodeURIComponent(i)}`:``;return`${t}://${n===`localhost`||n===`127.0.0.1`||n===`[::1]`||n===`::1`?`127.0.0.1`:n}${r?`:${r}`:``}${a}`}function Ki(){if(typeof window>`u`||!window.location?.hostname)return`http://127.0.0.1:3456`;let e=window.location.protocol===`https:`?`https`:`http`,t=window.location.hostname.toLowerCase(),n=window.location.port?`:${window.location.port}`:``;return t===`localhost`||t===`127.0.0.1`||t===`[::1]`||t===`::1`?`${e}://127.0.0.1${n}`:`${e}://${window.location.hostname}${n}`}var qi=e({WrongStackWebSocketClient:()=>ra,getWSClient:()=>aa}),Ji={"context.debug":`context.debug`,"diag.get":`diag.get`,"memory.list":`memory.list`,"memory.sage.get":`memory.sage.get`,"memory.sage.graph":`memory.sage.graph`,"memory.sage.list":`memory.sage.list`,"memory.sage.listCandidates":`memory.sage.listCandidates`,"memory.sage.listPage":`memory.sage.listPage`,"memory.sage.remember":`memory.sage.remember`,"memory.sage.update":`memory.sage.update`,"skills.list":`skills.list`,"stats.get":`stats.get`,"tools.list":`tools.list`},Yi=3e4,Xi=32,Zi=15e3;function Qi(e){try{let t=new URL(e),n=new URL(Ki());return t.hostname===n.hostname}catch{return!0}}var $i=`#pending-new-session`,ea=64;function ta(e){if(e.type===`session.new`)return $i;if(e.type!==`session.resume`)return null;let t=e.payload?.id;return typeof t==`string`&&t.length>0?t:$i}var na=class e{ws=null;url;handlers=new Map;maxReconnectAttempts=10;shouldReconnect=!0;reconnectTimer=null;connectPromise=null;socketGeneration=0;messageQueue=[];messageQueueChars=0;messageQueueWeights=new WeakMap;connectionState=re();static MAX_QUEUED_MESSAGES=1e3;static MAX_QUEUED_CHARS=16777216;pendingConfirms=new Map;static PENDING_CONFIRM_TTL_MS=6e4;sessionId=null;pendingSwapTarget=null;requestedSwitchSessionId=null;seenSessionIds=new Set;replayOnNextSubscribe=!0;subscribedSessionIds=[];static NOT_READY_RETRY_COOLDOWN_MS=15e3;static MAX_ARMED_RESENDS=8;armedResends=new Map;lastErrorText;statusListeners=new Set;currentStatus={state:`connecting`};suppressedChatEchoes=new Map;echoSweepTimer=null;protocolCapabilities=new Set;protocolVersion=null;supportsCapability(e){return this.protocolCapabilities.has(e)}get negotiatedProtocolVersion(){return this.protocolVersion}onStatus(e){return this.statusListeners.add(e),e(this.currentStatus),()=>this.statusListeners.delete(e)}get status(){return this.currentStatus}setStatus(e){this.currentStatus=e;for(let t of this.statusListeners)try{t(e)}catch{}}constructor(e){this.url=e??Gi()}withSession(e,t){let n=t||Ci();return n?{...e,sessionId:n}:e}async ensureAuthCookie(){if(typeof window>`u`)return;if(document.cookie.split(`;`).some(e=>e.trim().startsWith(`ws_token=`))){Qi(this.url)&&(this.url=Hi(this.url)),Ui();return}let e=Bi(this.url)??Vi();if(!e)return;let t=Ki()+`/ws-auth?token=${encodeURIComponent(e)}`;try{let e=await fetch(t,{method:`GET`,credentials:`same-origin`,cache:`no-store`});e.ok?(Qi(this.url)&&(this.url=Hi(this.url)),Ui()):console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_failed`,status:e.status,timestamp:new Date().toISOString()}))}catch(e){console.warn(JSON.stringify({level:`warn`,event:`ws_client.ws_auth_error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}}connect(){return this.ws?.readyState===WebSocket.OPEN?Promise.resolve():(this.connectPromise||=this.openSocket().finally(()=>{this.connectPromise=null}),this.connectPromise)}async openSocket(){return await this.ensureAuthCookie(),this.connectionState=ie(this.connectionState),new Promise((e,t)=>{if(this.ws?.readyState===WebSocket.OPEN){e();return}this.setStatus({state:`connecting`});let n=++this.socketGeneration;try{let r=new WebSocket(this.url);this.ws=r,r.binaryType=`arraybuffer`;let i=setTimeout(()=>{if(this.ws===r){try{r.close()}catch{}this.ws===r&&(this.ws=null)}this.lastErrorText=`Connection timeout`,t(Error(`Connection timeout`)),s()},3e4),a=!1,o=!1,s=()=>{o||(o=!0,this.attemptReconnect())};r.onopen=()=>{this.socketGeneration===n&&(clearTimeout(i),a=!0,this.connectionState=ae(this.connectionState),this.lastErrorText=void 0,this.setStatus({state:`open`}),this.flushMessageQueue(),e())},r.onmessage=e=>{if(this.socketGeneration!==n)return;this.connectionState=oe(this.connectionState);let t=Ie(String(e.data),`server`);t.ok?this.handleMessage(t.message):console.error(JSON.stringify({level:`error`,event:`ws_client.message_rejected`,code:t.issue.code,message:t.issue.message,timestamp:new Date().toISOString()}))},r.onerror=e=>{this.socketGeneration===n&&(console.error(JSON.stringify({level:`error`,event:`ws_client.error`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()})),this.lastErrorText=`Connection error (see browser devtools)`,a||(clearTimeout(i),t(Error(this.lastErrorText)),s()))},r.onclose=e=>{if(this.socketGeneration===n){if(this.pendingSwapTarget=null,this.requestedSwitchSessionId=null,!a){clearTimeout(i);let n=e.reason||`Closed with code ${e.code}`;this.lastErrorText=n,t(Error(n)),s();return}e.reason&&!this.lastErrorText?this.lastErrorText=`${e.reason} (code ${e.code})`:!this.lastErrorText&&e.code!==1e3&&(this.lastErrorText=`Closed with code ${e.code}`),this.attemptReconnect()}}}catch(e){if(this.socketGeneration!==n)return;this.lastErrorText=e instanceof Error?e.message:String(e),this.setStatus({state:`closed`,error:this.lastErrorText}),t(e)}})}attemptReconnect(){if(!this.shouldReconnect){this.connectionState=se(this.connectionState),this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}let t=le(this.connectionState,{...ne,maxReconnectAttempts:this.maxReconnectAttempts,queueLimit:e.MAX_QUEUED_MESSAGES});if(this.connectionState=t.state,!t.plan){this.reconnectTimer=null,this.setStatus({state:`closed`,error:this.lastErrorText??`Disconnected`});return}this.setStatus({state:`reconnecting`,attempt:t.plan.attempt,nextRetryAt:t.plan.retryAt,lastError:this.lastErrorText}),this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,this.shouldReconnect)try{await this.connect()}catch(e){console.error(JSON.stringify({level:`error`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))}},t.plan.delayMs)}retryNow(){this.currentStatus.state!==`open`&&(this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.connectionState=ce(this.connectionState),this.connect().catch(e=>console.warn(JSON.stringify({level:`warn`,event:`ws_client.reconnect_failed`,message:e instanceof Error?e.message:String(e),timestamp:new Date().toISOString()}))))}flushMessageQueue(){let e=this.messageQueue.splice(0);this.messageQueueChars=0;for(let t of e)try{this.send(t)}catch(e){console.warn(JSON.stringify({level:`warn`,event:`ws.flush_failed`,message:e instanceof Error?e.message:String(e)}))}}handleMessage(t){if(t.type===`tool.confirm_needed`){let n=t.payload;this.sweepExpiredPendingConfirms(Date.now()),this.pendingConfirms.set(n.id,{expiresAtMs:Date.now()+e.PENDING_CONFIRM_TTL_MS}),this.emit(t);return}if(t.type===`session.start`){let e=t.payload,n=Ge(e);this.sessionId=e.sessionId,this.protocolVersion=n.version,this.protocolCapabilities=new Set(n.capabilities),this.requestedSwitchSessionId=this.matchesPendingSwap(e)?e.sessionId:null,this.requestedSwitchSessionId&&(this.pendingSwapTarget=null),this.rememberSeenSession(e.sessionId),this.emit(t),this.consumeArmedResend(e.sessionId);return}t.type===`error`&&(t.payload.phase===`session.new`||t.payload.phase===`session.resume`)&&(this.pendingSwapTarget=null),this.emit(t)}matchesPendingSwap(e){let t=this.pendingSwapTarget;return!t||!e.sessionId?!1:t===$i?e.reset===!0&&!this.seenSessionIds.has(e.sessionId):t===e.sessionId}rememberSeenSession(e){if(e){if(this.seenSessionIds.size>=ea){let e=this.seenSessionIds.values().next();e.done||this.seenSessionIds.delete(e.value)}this.seenSessionIds.add(e)}}consumeRequestedSwitch(e){return!e||this.requestedSwitchSessionId!==e?!1:(this.requestedSwitchSessionId=null,!0)}armNotReadyResend(t,n){if(!t)return!1;let r=Date.now(),i=this.armedResends.get(t);if(i&&r-i.armedAt<e.NOT_READY_RETRY_COOLDOWN_MS)return!1;if(this.armedResends.size>=e.MAX_ARMED_RESENDS){let e=this.armedResends.keys().next();e.done||this.armedResends.delete(e.value)}return this.armedResends.set(t,{...n,armedAt:r}),!0}consumeArmedResend(e){let t=this.armedResends.get(e);t&&(this.armedResends.delete(e),vt(e)&&this.sendMessage(t.content,t.images,t.freshContext===!0,e))}sweepExpiredPendingConfirms(e){for(let[t,n]of this.pendingConfirms)n.expiresAtMs<=e&&this.pendingConfirms.delete(t)}emit(e){let t=this.handlers.get(e.type);if(t)for(let n of t)try{n(e)}catch(t){console.error(JSON.stringify({level:`error`,event:`ws_client.handler_error`,messageType:e.type,message:t instanceof Error?t.message:String(t),timestamp:new Date().toISOString()}))}}send(e,t={}){let n=this.constructor,r=n.MAX_QUEUED_MESSAGES,i=n.MAX_QUEUED_CHARS,a=Fe(e,`client`);if(!a.ok)return console.error(JSON.stringify({level:`error`,event:`ws_client.outbound_message_rejected`,code:a.issue.code,message:a.issue.message,timestamp:new Date().toISOString()})),!1;let o=JSON.stringify(a.message),s=this.ws?.readyState===WebSocket.OPEN;if(!s&&o.length>i)return console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:r,charCap:i,droppedType:e.type,reason:`message_too_large`,timestamp:new Date().toISOString()})),!1;let c=ta(e);if(c){if(this.pendingSwapTarget===c)return!1;this.pendingSwapTarget=c}if(t.echoToChat===!1){let t=Ji[e.type];if(t){let e=this.suppressedChatEchoes.get(t)??[];for(e.push(Date.now()+Yi);e.length>Xi;)e.shift();this.suppressedChatEchoes.set(t,e),this.ensureEchoSweep()}}if(e.type===`context.clear`?te.dropAll():(e.type===`session.new`||e.type===`session.resume`)&&te.flushAll(),s)return this.ws?.send(o),!0;{if(t.queueIfDisconnected===!1)return!1;let n;for(;this.messageQueue.length>0&&(this.messageQueue.length>=r||this.messageQueueChars+o.length>i);){let e=this.messageQueue.shift();if(!e)break;n??=e;let t=this.messageQueueWeights.get(e)??JSON.stringify(e).length;this.messageQueueChars=Math.max(0,this.messageQueueChars-t),this.messageQueueWeights.delete(e)}return n&&console.warn(JSON.stringify({level:`warn`,event:`ws_client.message_queue_full`,cap:r,charCap:i,droppedType:n.type,timestamp:new Date().toISOString()})),this.messageQueue.push(e),this.messageQueueWeights.set(e,o.length),this.messageQueueChars+=o.length,!0}}consumeSuppressedChatEcho(e){let t=this.suppressedChatEchoes.get(e);if(!t)return!1;let n=Date.now();for(;t.length>0&&t[0]<=n;)t.shift();return t.length===0?(this.suppressedChatEchoes.delete(e),!1):(t.shift(),t.length===0&&this.suppressedChatEchoes.delete(e),!0)}ensureEchoSweep(){this.echoSweepTimer||=setInterval(()=>{this.sweepSuppressedChatEchoes(Date.now())},Zi)}sweepSuppressedChatEchoes(e){for(let[t,n]of this.suppressedChatEchoes){for(;n.length>0&&n[0]<=e;)n.shift();n.length===0&&this.suppressedChatEchoes.delete(t)}this.suppressedChatEchoes.size===0&&this.echoSweepTimer&&(clearInterval(this.echoSweepTimer),this.echoSweepTimer=null)}on(e,t){let n=this.handlers.get(e);return n||(n=new Set,this.handlers.set(e,n)),n.add(t),()=>n?.delete(t)}off(e,t){this.handlers.get(e)?.delete(t)}sendMessage(e,t,n=!1,r){let i=`msg_${Date.now()}_${h().slice(0,8)}`,a=this.withSession({id:i,content:e,timestamp:Date.now(),...n?{freshContext:!0}:{},...t&&t.length>0?{images:t}:{}},r);return a.sessionId&&this.armedResends.delete(a.sessionId),this.send({type:`user_message`,payload:a}),i}getChimeraReports(e){this.send({type:`chimera.reports.list`,payload:this.withSession({sessionId:e??``},e)})}adviseTopic(e,t=1e4){let n=h();return new Promise(r=>{let i=!1,a=e=>{i||(i=!0,clearTimeout(s),o(),r(e))},o=this.on(`topic.advice_result`,e=>{e.payload.requestId===n&&a(e.payload)}),s=setTimeout(()=>{a({requestId:n,suggestNewContext:!1,confidence:0,reason:`Topic check timed out; continuing in the current context.`,source:`local`})},t);this.send({type:`topic.advice`,payload:this.withSession({requestId:n,prompt:e})})})}sendMailboxMessage(e,t){let n=`mbox_${Date.now()}_${h().slice(0,8)}`;return this.send({type:`mailbox.send`,payload:this.withSession({requestId:n,to:e.to,type:e.type,audience:e.audience??`all`,subject:e.subject,body:e.body,priority:e.priority??`normal`},t)}),n}sendAbort(e){this.send({type:`abort`,payload:this.withSession({},e)})}subscribeSessions(e){let t=Array.from(new Set(e.filter(e=>typeof e==`string`&&e)));if(t.length===0||t.length===this.subscribedSessionIds.length&&t.every((e,t)=>e===this.subscribedSessionIds[t]))return;this.subscribedSessionIds=t;let n=this.replayOnNextSubscribe?t:[];this.replayOnNextSubscribe=!1,this.send({type:`session.subscribe`,payload:this.withSession({sessionIds:t,...n.length>0?{replayFor:n}:{}})})}clearSessionSubscription(){this.subscribedSessionIds=[],this.replayOnNextSubscribe=!0}sendConfirm(e,t){this.pendingConfirms.has(e)&&this.pendingConfirms.delete(e),this.send({type:`tool.confirm_result`,payload:this.withSession({id:e,decision:t})})}switchModel(e,t,n=8e3){let r=h();return new Promise(i=>{let a=!1,o=e=>{a||(a=!0,clearTimeout(c),s(),i(e))},s=this.on(`model.switch_result`,e=>{let t=e.payload;t.requestId===r&&o(t)}),c=setTimeout(()=>{o({requestId:r,success:!1,message:`Model switch timed out. Please try again.`,provider:e,model:t,runActive:!1})},n);this.send({type:`model.switch`,payload:this.withSession({provider:e,model:t,requestId:r})})})}shutdownCodebaseIndexServer(e=8e3){let t=h();return new Promise(n=>{let r=!1,i=e=>{r||(r=!0,clearTimeout(o),a(),n(e))},a=this.on(`codebase.index.server.shutdown_result`,e=>{e.payload.requestId&&e.payload.requestId!==t||i(e.payload)}),o=setTimeout(()=>{i({requestId:t,stopped:!1,reason:`Codebase index server shutdown timed out.`})},e);this.send({type:`codebase.index.server.shutdown`,payload:{requestId:t}},{queueIfDisconnected:!1})||i({requestId:t,stopped:!1,reason:`WebSocket is not connected.`})})}disconnect(){this.shouldReconnect=!1,this.connectionState=se(this.connectionState),this.reconnectTimer&&=(clearTimeout(this.reconnectTimer),null),this.messageQueue.length=0,this.messageQueueChars=0,this.pendingSwapTarget=null,this.requestedSwitchSessionId=null,this.pendingConfirms.clear(),this.echoSweepTimer&&=(clearInterval(this.echoSweepTimer),null),this.suppressedChatEchoes.clear(),this.ws?.close(),this.ws=null}get isConnected(){return this.ws?.readyState===WebSocket.OPEN}get currentSessionId(){return this.sessionId}};Nt(na),Rt(na);var ra=na,ia=null;function aa(e){return ia||=new ra(e),ia}export{en as $,vr as A,D as At,Xn as B,Be as Bt,Fr as C,wt as Ct,Dr as D,yt as Dt,Or as E,vt as Et,or as F,qe as Ft,Pn as G,Jn as H,v as Ht,ir as I,Ze as It,hn as J,jn as K,ar as L,Ke as Lt,Er as M,kt as Mt,Tr as N,Tt as Nt,dr as O,St as Ot,Qn as P,E as Pt,sn as Q,rr as R,ze as Rt,Ir as S,Et as St,Mr as T,bt as Tt,qn as U,Yn as V,te as Vt,Fn as W,Dn as X,On as Y,dn as Z,zr as _,Gt as _t,wi as a,Xt as at,Rr as b,_t as bt,Ri as c,R as ct,Si as d,N as dt,qt as et,Y as f,Bt as ft,X as g,z as gt,li as h,P as ht,Ci as i,Zt as it,J as j,Ot as jt,wr as k,At as kt,Oi as l,F as lt,ni as m,Ht as mt,qi as n,Jt as nt,Ti as o,Qt as ot,ei as p,L as pt,V as q,Di as r,$t as rt,Li as s,j as st,aa as t,Yt as tt,xi as u,Wt as ut,Kr as v,M as vt,Pr as w,k as wt,Lr as x,jt as xt,Gr as y,T as yt,$n as z,Ue as zt};
|
|
@@ -28,8 +28,8 @@ export interface ClientOfficeModel {
|
|
|
28
28
|
stats: ClientOfficeStats;
|
|
29
29
|
}
|
|
30
30
|
export type AgentVisualRole = 'leader' | 'builder' | 'researcher' | 'reviewer' | 'planner' | 'operator';
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
type DeskPalette = 'amber' | 'mint' | 'ocean' | 'plum' | 'rose' | 'graphite';
|
|
32
|
+
interface DeskPersonality {
|
|
33
33
|
palette: DeskPalette;
|
|
34
34
|
layout: number;
|
|
35
35
|
clutter: number;
|
|
@@ -50,7 +50,7 @@ export declare function deskPersonality(identity: string, role: AgentVisualRole)
|
|
|
50
50
|
/** `anthropic/claude-sonnet-4-20250514` → `claude-sonnet-4`; falls back to the raw value. */
|
|
51
51
|
export declare function shortModelName(model: string, max?: number): string;
|
|
52
52
|
export declare function shortPath(value: string | undefined, max?: number): string | undefined;
|
|
53
|
-
|
|
53
|
+
interface DeskWaitState {
|
|
54
54
|
/** True when the agent is alive but has produced no tool/mail work for a while. */
|
|
55
55
|
waiting: boolean;
|
|
56
56
|
/** Milliseconds since the last observable activity (tool call or mail). */
|
|
@@ -81,4 +81,5 @@ export declare function fallbackLogCalls(agent: ResolvedAgent, client: ResolvedC
|
|
|
81
81
|
}>): OfficeToolCall[];
|
|
82
82
|
export declare function mergeCalls(...sources: OfficeToolCall[][]): OfficeToolCall[];
|
|
83
83
|
export declare function mergeMail(...sources: OfficeMailActivity[][]): OfficeMailActivity[];
|
|
84
|
+
export {};
|
|
84
85
|
//# sourceMappingURL=model.d.ts.map
|
|
@@ -10,7 +10,14 @@
|
|
|
10
10
|
*
|
|
11
11
|
* This view is accessible via the "Agent Roster" icon in the activity bar.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* Trailing-debounce window for coalescing `agent-roster.updated` broadcasts.
|
|
15
|
+
* A bulk optimize emits one event per role; without this, each would trigger
|
|
16
|
+
* its own full roster reload. Reloading once after the burst settles is enough.
|
|
17
|
+
*/
|
|
18
|
+
import type { RosterTab } from './agent-roster-data.js';
|
|
19
|
+
export declare function AgentRosterView({ className, initialTab, }: {
|
|
14
20
|
className?: string | undefined;
|
|
21
|
+
initialTab?: RosterTab | undefined;
|
|
15
22
|
}): import("react").JSX.Element;
|
|
16
23
|
//# sourceMappingURL=AgentRosterView.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { ImageAttachment } from './image-attachments.js';
|
|
3
|
-
|
|
3
|
+
interface ComposerButtonBarProps {
|
|
4
4
|
imagePickerRef: React.RefObject<HTMLInputElement | null>;
|
|
5
5
|
disabled: boolean;
|
|
6
6
|
topicCheckBusy: boolean;
|
|
@@ -19,6 +19,10 @@ export interface ComposerButtonBarProps {
|
|
|
19
19
|
enhanceEnabled: boolean;
|
|
20
20
|
}) => void;
|
|
21
21
|
t: (key: string, opts?: Record<string, unknown>) => string;
|
|
22
|
+
isListening?: boolean;
|
|
23
|
+
isSpeechSupported?: boolean;
|
|
24
|
+
onToggleSpeech?: () => void;
|
|
22
25
|
}
|
|
23
|
-
export declare function ComposerButtonBar({ imagePickerRef, disabled, topicCheckBusy, clientConnected, isLoading, chatStarted, input, pendingImages, addImageFiles, handleStopAndEdit, handleAbort, handleBtw, handleSteer, handleAddQueue, updatePrefs, t, }: ComposerButtonBarProps): React.JSX.Element;
|
|
26
|
+
export declare function ComposerButtonBar({ imagePickerRef, disabled, topicCheckBusy, clientConnected, isLoading, chatStarted, input, pendingImages, addImageFiles, handleStopAndEdit, handleAbort, handleBtw, handleSteer, handleAddQueue, updatePrefs, t, isListening, isSpeechSupported, onToggleSpeech, }: ComposerButtonBarProps): React.JSX.Element;
|
|
27
|
+
export {};
|
|
24
28
|
//# sourceMappingURL=composer-button-bar.d.ts.map
|
|
@@ -48,11 +48,12 @@ export declare class ImageAttachmentError extends Error {
|
|
|
48
48
|
*/
|
|
49
49
|
export declare function processImageFile(file: File): Promise<ImageAttachment>;
|
|
50
50
|
/** Wire shape sent inside the `user_message` payload (`images` field). */
|
|
51
|
-
|
|
51
|
+
interface WireImage {
|
|
52
52
|
data: string;
|
|
53
53
|
mediaType: string;
|
|
54
54
|
name?: string | undefined;
|
|
55
55
|
}
|
|
56
56
|
/** Strip the data-URL prefix — the wire carries bare base64 + mediaType. */
|
|
57
57
|
export declare function toWireImages(attachments: readonly ImageAttachment[]): WireImage[];
|
|
58
|
+
export {};
|
|
58
59
|
//# sourceMappingURL=image-attachments.d.ts.map
|
|
@@ -1,19 +1,3 @@
|
|
|
1
|
-
export declare function stepsFromMessage(m: {
|
|
2
|
-
content: string;
|
|
3
|
-
nextSteps?: {
|
|
4
|
-
steps: Array<{
|
|
5
|
-
index: number;
|
|
6
|
-
text: string;
|
|
7
|
-
}>;
|
|
8
|
-
} | undefined;
|
|
9
|
-
} | undefined): Array<{
|
|
10
|
-
index: number;
|
|
11
|
-
text: string;
|
|
12
|
-
}>;
|
|
13
|
-
export declare function stepsFromLastAssistant(): Array<{
|
|
14
|
-
index: number;
|
|
15
|
-
text: string;
|
|
16
|
-
}>;
|
|
17
1
|
export declare function handleNextList(): true;
|
|
18
2
|
export declare function handleNextSelect(input: string, sendMsg: (content: string) => void): true;
|
|
19
3
|
//# sourceMappingURL=next-steps-helpers.d.ts.map
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { QueuedItem, QueueMode } from '@/stores/chat-store';
|
|
3
|
-
|
|
4
|
-
export interface ChatInputRefinePanelHostProps {
|
|
3
|
+
interface ChatInputRefinePanelHostProps {
|
|
5
4
|
enhanceEnabled: boolean;
|
|
6
5
|
refinePickOpen: boolean;
|
|
7
6
|
setRefinePickOpen: (open: boolean) => void;
|
|
@@ -29,4 +28,5 @@ export interface ChatInputRefinePanelHostProps {
|
|
|
29
28
|
notConnectedDraftKept: () => void;
|
|
30
29
|
}
|
|
31
30
|
export declare function ChatInputRefinePanelHost({ enhanceEnabled, refinePickOpen, setRefinePickOpen, refineModel, clientConnected, addUserMessage, setLoading, sendMessage, isLoading, enqueue, setInput, resolveCancelInput, notConnectedDraftKept, }: ChatInputRefinePanelHostProps): React.JSX.Element;
|
|
31
|
+
export {};
|
|
32
32
|
//# sourceMappingURL=refine-panel-host.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-session reasoning effort, inline in the composer toolbar next to the
|
|
3
|
+
* model chip. `auto` = follow the project-wide setting; the remaining options
|
|
4
|
+
* narrow to the levels the active model documents. Hidden entirely when the
|
|
5
|
+
* model documents that it has no effort control — the tri-state keeps
|
|
6
|
+
* `undefined` (undocumented vocabulary) visible with the full canonical set,
|
|
7
|
+
* matching the runtime resolver's conservative gate. Writes the session-
|
|
8
|
+
* scoped reasoningEffort pref via the same trip as the QuickModelSwitcher
|
|
9
|
+
* select (local set + prefs.update), so every effort surface stays in step.
|
|
10
|
+
*
|
|
11
|
+
* While `auto` is picked, a small hint under the select shows the LIVE
|
|
12
|
+
* project-wide effort it follows (from the session.start snapshot); absent
|
|
13
|
+
* when the project pins no effort — then the provider default applies.
|
|
14
|
+
*/
|
|
15
|
+
export declare function SessionEffortSelect(): import("react").JSX.Element | null;
|
|
16
|
+
//# sourceMappingURL=session-effort-select.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
type SlashCategory = 'Run' | 'Session' | 'Inspect' | 'Agent' | 'Config' | 'App';
|
|
2
2
|
export interface SlashCommandDef {
|
|
3
3
|
name: string;
|
|
4
4
|
aliases?: string[] | undefined;
|
|
@@ -14,4 +14,5 @@ export declare function detectAtMention(value: string, cursor: number): {
|
|
|
14
14
|
start: number;
|
|
15
15
|
query: string;
|
|
16
16
|
} | null;
|
|
17
|
+
export {};
|
|
17
18
|
//# sourceMappingURL=slash-commands.d.ts.map
|
|
@@ -45,6 +45,14 @@ type SlashRoutingClientMessage = Extract<WSClientMessage, {
|
|
|
45
45
|
}>;
|
|
46
46
|
interface SlashRoutingClient {
|
|
47
47
|
send?: (message: SlashRoutingClientMessage) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Stamp a payload with the foreground session's id, when one is bound.
|
|
50
|
+
* Session-sensitive commands (/autonomy, /mode) MUST route through this —
|
|
51
|
+
* a raw `send` left them unstamped, so the runtime applied them to
|
|
52
|
+
* whichever tab it currently considered active instead of the tab the
|
|
53
|
+
* command was typed in.
|
|
54
|
+
*/
|
|
55
|
+
withSession?: <T extends Record<string, unknown>>(payload: T) => T;
|
|
48
56
|
clearContext?: () => void;
|
|
49
57
|
newSession?: () => void;
|
|
50
58
|
compactContext?: (aggressive?: boolean) => void;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { WrongStackWebSocketClient } from '@/lib/ws-client.js';
|
|
2
2
|
import type { WSUserMessageImage } from '@/types';
|
|
3
|
-
|
|
3
|
+
interface UseChatInputMcpOptions {
|
|
4
4
|
client?: WrongStackWebSocketClient | null | undefined;
|
|
5
5
|
sendMessage: (content: string, images?: WSUserMessageImage[] | undefined, freshContext?: boolean) => string | null;
|
|
6
6
|
}
|
|
7
7
|
export declare function useChatInputMcp({ client, sendMessage }: UseChatInputMcpOptions): void;
|
|
8
|
+
export {};
|
|
8
9
|
//# sourceMappingURL=use-chat-input-mcp.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import { type ImageAttachment } from './image-attachments.js';
|
|
3
|
-
|
|
3
|
+
interface PasteHintState {
|
|
4
4
|
chars: number;
|
|
5
5
|
lines: number;
|
|
6
6
|
/** Detected language if code was auto-fenced. */
|
|
@@ -33,6 +33,7 @@ export declare function usePasteDrop({ input, textareaRef, setInput, errorText }
|
|
|
33
33
|
addImageFiles: (files: File[]) => Promise<void>;
|
|
34
34
|
removeImage: (id: string) => void;
|
|
35
35
|
clearPendingImages: () => void;
|
|
36
|
+
setPendingImages: (next: ImageAttachment[]) => void;
|
|
36
37
|
setPasteHint: React.Dispatch<React.SetStateAction<PasteHintState | null>>;
|
|
37
38
|
};
|
|
38
39
|
export {};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { WSUserMessageImage } from '@/types';
|
|
2
|
-
|
|
2
|
+
interface UseRefineTimeoutOptions {
|
|
3
3
|
clientConnected?: boolean | undefined;
|
|
4
4
|
t: (key: string) => string;
|
|
5
5
|
sendMessage: (content: string, images?: WSUserMessageImage[] | undefined, freshContext?: boolean) => string | null;
|
|
6
6
|
setInput: (value: string) => void;
|
|
7
7
|
}
|
|
8
8
|
export declare function useRefineTimeout({ clientConnected, t, sendMessage, setInput, }: UseRefineTimeoutOptions): void;
|
|
9
|
+
export {};
|
|
9
10
|
//# sourceMappingURL=use-refine-timeout.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function useSpeechRecognition({ onTranscript, }: {
|
|
2
|
+
onTranscript: (text: string) => void;
|
|
3
|
+
}): {
|
|
4
|
+
isListening: boolean;
|
|
5
|
+
isSupported: boolean;
|
|
6
|
+
toggleListening: () => void;
|
|
7
|
+
stopListening: () => void;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=use-speech-recognition.d.ts.map
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* ui-store (`subagentChatFocusId`) so any surface — roster cards, agent
|
|
9
9
|
* detail sections — can jump straight into an agent's chat view.
|
|
10
10
|
*/
|
|
11
|
-
export declare function AgentTabs(): import("react").JSX.Element
|
|
11
|
+
export declare function AgentTabs(): import("react").JSX.Element;
|
|
12
12
|
/** Pure focus-retention rule: a focused subagent id only survives while the
|
|
13
13
|
* agent still exists in the fleet roster. Null focus never clears. Exported
|
|
14
14
|
* for direct unit testing (consumed by ChatView's stale-focus effect). */
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BrainDecisionData, ChatMessage } from '@/stores';
|
|
2
|
+
/** Parse legacy or replayed markdown into a structured BrainDecisionData fallback */
|
|
3
|
+
export declare function parseBrainMarkdown(content: string): BrainDecisionData | null;
|
|
4
|
+
interface BrainDecisionCardProps {
|
|
5
|
+
message: ChatMessage;
|
|
6
|
+
}
|
|
7
|
+
export declare const BrainDecisionCard: import("react").MemoExoticComponent<({ message, }: BrainDecisionCardProps) => import("react").JSX.Element | null>;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=BrainDecisionCard.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { SessionHistoryEntry } from '@/stores';
|
|
2
|
-
export declare function ChatHeader({ sidebarOpen, toggleSidebar, agentState, stateTone, sessionId, renamingTitle, setRenamingTitle, titleDraft, setTitleDraft, nickname, sessionTitle, setSessionNickname, historyEntries, switcherRef, switcherOpen, setSwitcherOpen, handleHistorySelect,
|
|
2
|
+
export declare function ChatHeader({ sidebarOpen, toggleSidebar, agentState, stateTone, sessionId, renamingTitle, setRenamingTitle, titleDraft, setTitleDraft, nickname, sessionTitle, setSessionNickname, historyEntries, switcherRef, switcherOpen, setSwitcherOpen, handleHistorySelect, iteration, autonomy, handleAutonomyChange, memoryPanelOpen, setMemoryPanelOpen, activeMemoryCount, processOpen, setProcessOpen, checkpointOpen, setCheckpointOpen, toolStatsOpen, setToolStatsOpen, hasStatusContent, lastInputTokens, ctxPct, maxContext, cacheStats, setBreakdownOpen, contextLimitWarning, setEditorOpen, totalTokens, startTime, formatDuration, }: {
|
|
3
3
|
sidebarOpen: boolean;
|
|
4
4
|
toggleSidebar: () => void;
|
|
5
5
|
agentState: 'idle' | 'streaming' | 'thinking';
|
|
@@ -17,8 +17,6 @@ export declare function ChatHeader({ sidebarOpen, toggleSidebar, agentState, sta
|
|
|
17
17
|
switcherOpen: boolean;
|
|
18
18
|
setSwitcherOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
19
19
|
handleHistorySelect: (id: string) => void;
|
|
20
|
-
provider?: string;
|
|
21
|
-
model?: string;
|
|
22
20
|
iteration?: {
|
|
23
21
|
index: number;
|
|
24
22
|
max: number;
|
|
@@ -32,6 +30,8 @@ export declare function ChatHeader({ sidebarOpen, toggleSidebar, agentState, sta
|
|
|
32
30
|
setProcessOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
33
31
|
checkpointOpen: boolean;
|
|
34
32
|
setCheckpointOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
33
|
+
toolStatsOpen: boolean;
|
|
34
|
+
setToolStatsOpen: React.Dispatch<React.SetStateAction<boolean>>;
|
|
35
35
|
hasStatusContent: boolean;
|
|
36
36
|
lastInputTokens: number;
|
|
37
37
|
ctxPct: number;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import type { ChatRow } from './utils.js';
|
|
2
|
-
export declare const ChatRowView: import("react").MemoExoticComponent<({ row, isLoading, compactMode, isFirstRow, groupToolCalls, }: {
|
|
2
|
+
export declare const ChatRowView: import("react").MemoExoticComponent<({ row, isLoading, compactMode, isFirstRow, groupToolCalls, sessionId, }: {
|
|
3
3
|
row: ChatRow;
|
|
4
4
|
isLoading: boolean;
|
|
5
5
|
compactMode: boolean;
|
|
6
6
|
isFirstRow: boolean;
|
|
7
7
|
groupToolCalls: boolean;
|
|
8
|
+
/** The lane this row belongs to — ChatView only renders the active lane. */
|
|
9
|
+
sessionId: string;
|
|
8
10
|
}) => import("react").JSX.Element>;
|
|
9
11
|
//# sourceMappingURL=ChatRowView.d.ts.map
|