@wrongstack/webui 0.313.0 → 0.316.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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-CUPHNDwl.js → CronJobsPanel-C_wutCVP.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-Dj-5SAEE.js → DeadCodeScanPanel-DCCjg17Q.js} +2 -2
- package/dist/assets/{DebugDashboard-DmgHPeuw.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-Bkrq2hhM.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-Vj_HH49O.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 +13 -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 +77838 -67041
- 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 +9 -9
- package/dist/assets/AgentRosterView-CoAI4zVY.js +0 -9
- package/dist/assets/AnalyticsDashboard-BHKB7MA7.js +0 -1
- package/dist/assets/AudienceMemoryPanel-B1Ddueaa.js +0 -3
- package/dist/assets/ChangesView-DEsqwAdJ.js +0 -1
- package/dist/assets/ChronicleDashboard-CCoGRIP2.js +0 -1
- package/dist/assets/CodeEditor-C8nAvIw1.js +0 -2
- package/dist/assets/CodeMap-BvqQN6MG.js +0 -1
- package/dist/assets/ConfirmModal-CRSE2t_c.js +0 -1
- package/dist/assets/DesignGalleryView-DHVayfgO.js +0 -1
- package/dist/assets/GoalView-BV0HgkVM.js +0 -1
- package/dist/assets/KanbanView-_S_44j5W.js +0 -3
- package/dist/assets/MailboxDetailView-DS0INWjY.js +0 -1
- package/dist/assets/MemoryDrawer-CASOliWm.js +0 -1
- package/dist/assets/MemoryManager-CHJccmRF.js +0 -1
- package/dist/assets/ModelPicker-BD-yKqK0.js +0 -1
- package/dist/assets/OfficeMapPanel-CeK44Zg_.js +0 -4
- package/dist/assets/ProcessMonitor-QErl6IY_.js +0 -1
- package/dist/assets/PromptJournalView-CoLmLGEt.js +0 -1
- package/dist/assets/QueuePanel-rdZBX64y.js +0 -1
- package/dist/assets/RefreshDebugView-CzGncYqB.js +0 -1
- package/dist/assets/RequirementIntakeView-exfkRXjK.js +0 -1
- package/dist/assets/SageTabs-he_mI7tp.js +0 -2
- package/dist/assets/SddFlowGraph-C484p5L9.js +0 -1
- package/dist/assets/SddHub-Fv-cENSK.js +0 -2
- package/dist/assets/SessionInspectView--89Niv2G.js +0 -1
- package/dist/assets/SessionList-DLmayeUi.js +0 -1
- package/dist/assets/SessionsDashboard-DiGHUFnB.js +0 -1
- package/dist/assets/SetupScreen-DHa4BQF7.js +0 -1
- package/dist/assets/SkillDetailView-CQ6luqj6.js +0 -3
- package/dist/assets/TechStackView-B4xMV0Z9.js +0 -2
- package/dist/assets/TerminalPanel-D25-VKJU.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-CGMJmLO0.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-CHaV9Mb9.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-DJWEKY_A.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-DXT4gi-N.js +0 -1
|
@@ -56,6 +56,44 @@ export interface LocalPrefs {
|
|
|
56
56
|
parameters?: Record<string, unknown>;
|
|
57
57
|
};
|
|
58
58
|
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Deterministic cost tiers. A level binds a fallback profile, a spend budget
|
|
61
|
+
* and runtime overrides under one name; `routing` maps a role/phase/`*` to a
|
|
62
|
+
* level; `leader` governs how much authority the leader has over its own tier.
|
|
63
|
+
*/
|
|
64
|
+
modelTiers: {
|
|
65
|
+
enabled?: boolean;
|
|
66
|
+
default?: string;
|
|
67
|
+
levels?: Record<string, {
|
|
68
|
+
fallbackProfile?: string;
|
|
69
|
+
provider?: string;
|
|
70
|
+
model?: string;
|
|
71
|
+
maxCostUsd?: number;
|
|
72
|
+
maxIterations?: number;
|
|
73
|
+
maxToolCalls?: number;
|
|
74
|
+
maxTokens?: number;
|
|
75
|
+
timeoutMs?: number;
|
|
76
|
+
description?: string;
|
|
77
|
+
modelRuntime?: {
|
|
78
|
+
reasoning?: {
|
|
79
|
+
mode?: 'auto' | 'on' | 'off';
|
|
80
|
+
effort?: string;
|
|
81
|
+
preserve?: boolean;
|
|
82
|
+
};
|
|
83
|
+
cache?: {
|
|
84
|
+
ttl?: '5m' | '1h';
|
|
85
|
+
};
|
|
86
|
+
};
|
|
87
|
+
}>;
|
|
88
|
+
routing?: Record<string, string>;
|
|
89
|
+
leader?: {
|
|
90
|
+
mode?: 'off' | 'propose' | 'auto';
|
|
91
|
+
dwellTurns?: number;
|
|
92
|
+
minSavingsUsd?: number;
|
|
93
|
+
maxContextFillForSwitch?: number;
|
|
94
|
+
maxTier?: string;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
59
97
|
/** Auto-derive a fallback chain from keyed providers when the list is empty. */
|
|
60
98
|
fallbackAuto: boolean;
|
|
61
99
|
/** Recurring provider/model blackout windows for autonomous routing. */
|
|
@@ -205,9 +243,58 @@ export interface LocalPrefs {
|
|
|
205
243
|
* Periodic probe targets `<wrongProxyUrl>/api/health`; 2xx → active.
|
|
206
244
|
*/
|
|
207
245
|
wrongProxyUrl: string;
|
|
246
|
+
/** Master toggle for global keyboard shortcuts. Defaults to false. */
|
|
247
|
+
keyboardShortcuts: boolean;
|
|
248
|
+
/**
|
|
249
|
+
* Per-session overrides for the keys in `SESSION_SCOPED_PREF_KEYS`.
|
|
250
|
+
*
|
|
251
|
+
* The flat fields above are the EFFECTIVE view of the tab in front, so
|
|
252
|
+
* existing readers (`useLocalPrefs((s) => s.autonomy)`) keep working and
|
|
253
|
+
* automatically describe the right tab. This map is what makes them
|
|
254
|
+
* per-tab rather than one value the four tabs fight over.
|
|
255
|
+
*/
|
|
256
|
+
bySession: Record<string, Partial<LocalPrefs>>;
|
|
257
|
+
/**
|
|
258
|
+
* What a NEWLY opened tab inherits for the session-scoped keys — the last
|
|
259
|
+
* value the user chose, mirroring the server, which persists the same keys
|
|
260
|
+
* to config as the default a new tab starts from.
|
|
261
|
+
*/
|
|
262
|
+
sessionDefaults: Partial<LocalPrefs>;
|
|
263
|
+
/** Which session the flat fields currently describe. */
|
|
264
|
+
activeSessionId: string | null;
|
|
208
265
|
set: (patch: Partial<LocalPrefs>) => void;
|
|
266
|
+
/** Point the flat fields at a tab, materialising its overrides. */
|
|
267
|
+
bindSession: (sessionId: string | null) => void;
|
|
268
|
+
/**
|
|
269
|
+
* Apply a server-sent patch. `sessionId` names the tab it belongs to; a
|
|
270
|
+
* patch for a BACKGROUND tab updates that tab's override and leaves the
|
|
271
|
+
* fields the UI is rendering alone.
|
|
272
|
+
*/
|
|
273
|
+
applyRemote: (patch: Partial<LocalPrefs>, sessionId?: string | undefined) => void;
|
|
274
|
+
/** Forget a closed tab's overrides. */
|
|
275
|
+
forgetSession: (sessionId: string) => void;
|
|
209
276
|
reset: () => void;
|
|
210
277
|
}
|
|
278
|
+
/**
|
|
279
|
+
* Preferences that belong to ONE session rather than to the browser.
|
|
280
|
+
*
|
|
281
|
+
* Must stay in step with `SESSION_SCOPED_PREF_KEYS` on the server
|
|
282
|
+
* (`webui-server/src/server/prefs-handlers.ts`) — the server already keys
|
|
283
|
+
* these off the calling tab's context meta, and a client that treats them as
|
|
284
|
+
* global shows tab 1's autonomy while tab 3 is on screen. Parity is enforced
|
|
285
|
+
* by `tests/server/session-scoped-prefs-parity.test.ts`, not by memory.
|
|
286
|
+
*/
|
|
287
|
+
export declare const SESSION_SCOPED_PREFS: readonly ["autonomy", "autonomyDelayMs", "autoProceedMaxIterations", "yolo", "maxIterations", "contextStrategy", "contextMode", "contextAutoCompact", "tokenSavingTier", "systemPromptVariant", "reasoningMode", "reasoningEffort", "reasoningPreserve", "nextPrediction", "nextStepsTool"];
|
|
288
|
+
/**
|
|
289
|
+
* The effective value of a session-scoped preference for ONE session.
|
|
290
|
+
*
|
|
291
|
+
* Reading the flat field answers for the tab IN FRONT, which is wrong whenever
|
|
292
|
+
* the question is about another tab. The dangerous instance was `yolo`: a
|
|
293
|
+
* background tab's tool-approval prompt was auto-approved because the tab the
|
|
294
|
+
* user happened to be looking at had YOLO on — approving a tool in a session
|
|
295
|
+
* the user never put in that mode.
|
|
296
|
+
*/
|
|
297
|
+
export declare function sessionPref<K extends keyof LocalPrefs>(sessionId: string | null | undefined, key: K): LocalPrefs[K];
|
|
211
298
|
export declare const useLocalPrefs: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<LocalPrefs>, "persist" | "setState"> & {
|
|
212
299
|
setState(partial: LocalPrefs | Partial<LocalPrefs> | ((state: LocalPrefs) => LocalPrefs | Partial<LocalPrefs>), replace?: false | undefined): unknown;
|
|
213
300
|
setState(state: LocalPrefs | ((state: LocalPrefs) => LocalPrefs), replace: true): unknown;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Mirrors HQ/HqMailboxMessageScope. Derived server-side, but always revalidated client-side. */
|
|
2
|
-
|
|
2
|
+
type MailboxMessageScope = 'project' | 'session' | 'agent';
|
|
3
3
|
/**
|
|
4
4
|
* Classify a mailbox recipient address for UI labeling. Mirrors the
|
|
5
5
|
* server-side helper in `@wrongstack/core/hq/mailbox-mapper` so the
|
|
@@ -56,7 +56,7 @@ export interface MailboxAgent {
|
|
|
56
56
|
/** Number of tool calls the agent has made in the current iteration. */
|
|
57
57
|
toolCalls?: number;
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
interface MailboxCompactionResult {
|
|
60
60
|
readByAllRemoved: number;
|
|
61
61
|
expiredRemoved: number;
|
|
62
62
|
stalePurged: number;
|
|
@@ -49,7 +49,7 @@ export interface MemoryContextSnapshot {
|
|
|
49
49
|
exitedMemoryIds: string[];
|
|
50
50
|
sessionId?: string | undefined;
|
|
51
51
|
}
|
|
52
|
-
|
|
52
|
+
interface ContextMemoryRecord extends MemoryInjectorTraceMemory {
|
|
53
53
|
state: 'injected' | 'active' | 'exited';
|
|
54
54
|
trigger: string;
|
|
55
55
|
enteredAt: string;
|
|
@@ -76,6 +76,6 @@ interface MemoryInjectorTraceState {
|
|
|
76
76
|
}
|
|
77
77
|
/** UI preview budget; full text lives in SAGE SQLite, not the browser store. */
|
|
78
78
|
export declare const MAX_MEMORY_DETAIL_TEXT_CHARS = 300;
|
|
79
|
-
export declare const useMemoryInjectorTraceStore: import("
|
|
79
|
+
export declare const useMemoryInjectorTraceStore: import("./session-scoped-store").SessionScopedStore<MemoryInjectorTraceState>;
|
|
80
80
|
export {};
|
|
81
81
|
//# sourceMappingURL=memory-injector-store.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export type MemoryLifecycleAction = 'entered' | 'updated' | 'merged' | 'recovered' | 'exited' | 'related' | 'superseded' | 'archived' | 'staled' | 'contradicted';
|
|
2
|
-
|
|
2
|
+
interface MemoryLifecycleItem {
|
|
3
3
|
id: string;
|
|
4
4
|
at: string;
|
|
5
5
|
event: string;
|
|
@@ -18,6 +18,10 @@ interface MemoryLifecycleState {
|
|
|
18
18
|
export declare function toMemoryLifecycleItem(payload: Record<string, unknown> & {
|
|
19
19
|
event: string;
|
|
20
20
|
}, now?: Date): MemoryLifecycleItem | null;
|
|
21
|
-
|
|
21
|
+
/**
|
|
22
|
+
* SAGE lifecycle events belong to the conversation whose run produced them,
|
|
23
|
+
* so each tab keeps its own trace.
|
|
24
|
+
*/
|
|
25
|
+
export declare const useMemoryLifecycleStore: import("./session-scoped-store").SessionScopedStore<MemoryLifecycleState>;
|
|
22
26
|
export {};
|
|
23
27
|
//# sourceMappingURL=memory-lifecycle-store.d.ts.map
|
|
@@ -89,7 +89,7 @@ export interface LiveAgentActivity {
|
|
|
89
89
|
linesRemoved: number;
|
|
90
90
|
}
|
|
91
91
|
/** Project-wide totals summed across every live session's agents. */
|
|
92
|
-
|
|
92
|
+
interface FleetAggregate {
|
|
93
93
|
toolCalls: number;
|
|
94
94
|
costUsd: number;
|
|
95
95
|
tokensIn: number;
|
|
@@ -141,7 +141,7 @@ export interface CurrentSessionStats {
|
|
|
141
141
|
costUsd?: number;
|
|
142
142
|
timestamp?: number;
|
|
143
143
|
}
|
|
144
|
-
|
|
144
|
+
interface MonitorState {
|
|
145
145
|
/** Connected client counts by type */
|
|
146
146
|
clientCounts: ClientCounts;
|
|
147
147
|
/** Recent mail queue activity (last 50 events) */
|
|
@@ -174,4 +174,5 @@ export interface MonitorState {
|
|
|
174
174
|
clear: () => void;
|
|
175
175
|
}
|
|
176
176
|
export declare const useMonitorStore: import("zustand").UseBoundStore<import("zustand").StoreApi<MonitorState>>;
|
|
177
|
+
export {};
|
|
177
178
|
//# sourceMappingURL=monitor-store.d.ts.map
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
export type NotificationVariant = 'success' | 'error' | 'warn' | 'info';
|
|
2
|
+
export type ToastVariant = NotificationVariant;
|
|
3
|
+
export interface NotificationAction {
|
|
4
|
+
label: string;
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
}
|
|
7
|
+
export type ToastAction = NotificationAction;
|
|
8
|
+
export interface AppNotification {
|
|
9
|
+
id: string;
|
|
10
|
+
message: string;
|
|
11
|
+
variant: NotificationVariant;
|
|
12
|
+
timestamp: number;
|
|
13
|
+
read: boolean;
|
|
14
|
+
ttl?: number | undefined;
|
|
15
|
+
action?: NotificationAction | undefined;
|
|
16
|
+
}
|
|
17
|
+
export interface ToastEntry {
|
|
18
|
+
id: string;
|
|
19
|
+
message: string;
|
|
20
|
+
variant: NotificationVariant;
|
|
21
|
+
ttl: number;
|
|
22
|
+
action?: NotificationAction | undefined;
|
|
23
|
+
}
|
|
24
|
+
export declare const MAX_NOTIFICATIONS = 100;
|
|
25
|
+
export declare const ACTION_TTL_MS = 8000;
|
|
26
|
+
export interface NotificationStoreState {
|
|
27
|
+
/** All recorded notifications in history, newest first */
|
|
28
|
+
notifications: AppNotification[];
|
|
29
|
+
/** Ephemeral toasts currently rendered on screen */
|
|
30
|
+
toasts: ToastEntry[];
|
|
31
|
+
/** Push a new toast + notification */
|
|
32
|
+
push: (entry: {
|
|
33
|
+
message: string;
|
|
34
|
+
variant: NotificationVariant;
|
|
35
|
+
ttl?: number | undefined;
|
|
36
|
+
action?: NotificationAction | undefined;
|
|
37
|
+
}) => string;
|
|
38
|
+
/** Dismiss active ephemeral toast from screen */
|
|
39
|
+
dismissToast: (id: string) => void;
|
|
40
|
+
/** Mark a single notification as read */
|
|
41
|
+
markAsRead: (id: string) => void;
|
|
42
|
+
/** Mark all notifications as read */
|
|
43
|
+
markAllAsRead: () => void;
|
|
44
|
+
/** Remove a notification from history */
|
|
45
|
+
removeNotification: (id: string) => void;
|
|
46
|
+
/** Clear all notification history */
|
|
47
|
+
clearAll: () => void;
|
|
48
|
+
}
|
|
49
|
+
export declare const useNotificationStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<NotificationStoreState>, "persist" | "setState"> & {
|
|
50
|
+
setState(partial: NotificationStoreState | Partial<NotificationStoreState> | ((state: NotificationStoreState) => NotificationStoreState | Partial<NotificationStoreState>), replace?: false | undefined): unknown;
|
|
51
|
+
setState(state: NotificationStoreState | ((state: NotificationStoreState) => NotificationStoreState), replace: true): unknown;
|
|
52
|
+
persist: {
|
|
53
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
54
|
+
notifications: {
|
|
55
|
+
id: string;
|
|
56
|
+
message: string;
|
|
57
|
+
variant: NotificationVariant;
|
|
58
|
+
timestamp: number;
|
|
59
|
+
read: boolean;
|
|
60
|
+
ttl?: number | undefined;
|
|
61
|
+
action?: {
|
|
62
|
+
label: string;
|
|
63
|
+
onClick: () => void;
|
|
64
|
+
} | undefined;
|
|
65
|
+
}[];
|
|
66
|
+
}, unknown>>) => void;
|
|
67
|
+
clearStorage: () => void;
|
|
68
|
+
rehydrate: () => Promise<void> | void;
|
|
69
|
+
hasHydrated: () => boolean;
|
|
70
|
+
onHydrate: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
71
|
+
onFinishHydration: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
72
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
73
|
+
notifications: {
|
|
74
|
+
id: string;
|
|
75
|
+
message: string;
|
|
76
|
+
variant: NotificationVariant;
|
|
77
|
+
timestamp: number;
|
|
78
|
+
read: boolean;
|
|
79
|
+
ttl?: number | undefined;
|
|
80
|
+
action?: {
|
|
81
|
+
label: string;
|
|
82
|
+
onClick: () => void;
|
|
83
|
+
} | undefined;
|
|
84
|
+
}[];
|
|
85
|
+
}, unknown>>;
|
|
86
|
+
};
|
|
87
|
+
}>;
|
|
88
|
+
/** Imperative API. Pass plain strings or arrays of strings for multi-line. */
|
|
89
|
+
export declare const toast: {
|
|
90
|
+
success: (msg: string, ttl?: number) => string;
|
|
91
|
+
error: (msg: string, ttl?: number) => string;
|
|
92
|
+
warn: (msg: string, ttl?: number) => string;
|
|
93
|
+
info: (msg: string, ttl?: number) => string;
|
|
94
|
+
/**
|
|
95
|
+
* Fire a toast carrying an "Undo" action button. The toast lingers
|
|
96
|
+
* for {@link ACTION_TTL_MS} so the user has time to react; letting it
|
|
97
|
+
* expire is the same as not undoing.
|
|
98
|
+
*/
|
|
99
|
+
undoable: (msg: string, onUndo: () => void, label?: string, ttl?: number) => string;
|
|
100
|
+
dismiss: (id: string) => void;
|
|
101
|
+
};
|
|
102
|
+
export declare const useToastStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<NotificationStoreState>, "persist" | "setState"> & {
|
|
103
|
+
setState(partial: NotificationStoreState | Partial<NotificationStoreState> | ((state: NotificationStoreState) => NotificationStoreState | Partial<NotificationStoreState>), replace?: false | undefined): unknown;
|
|
104
|
+
setState(state: NotificationStoreState | ((state: NotificationStoreState) => NotificationStoreState), replace: true): unknown;
|
|
105
|
+
persist: {
|
|
106
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
107
|
+
notifications: {
|
|
108
|
+
id: string;
|
|
109
|
+
message: string;
|
|
110
|
+
variant: NotificationVariant;
|
|
111
|
+
timestamp: number;
|
|
112
|
+
read: boolean;
|
|
113
|
+
ttl?: number | undefined;
|
|
114
|
+
action?: {
|
|
115
|
+
label: string;
|
|
116
|
+
onClick: () => void;
|
|
117
|
+
} | undefined;
|
|
118
|
+
}[];
|
|
119
|
+
}, unknown>>) => void;
|
|
120
|
+
clearStorage: () => void;
|
|
121
|
+
rehydrate: () => Promise<void> | void;
|
|
122
|
+
hasHydrated: () => boolean;
|
|
123
|
+
onHydrate: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
124
|
+
onFinishHydration: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
125
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
126
|
+
notifications: {
|
|
127
|
+
id: string;
|
|
128
|
+
message: string;
|
|
129
|
+
variant: NotificationVariant;
|
|
130
|
+
timestamp: number;
|
|
131
|
+
read: boolean;
|
|
132
|
+
ttl?: number | undefined;
|
|
133
|
+
action?: {
|
|
134
|
+
label: string;
|
|
135
|
+
onClick: () => void;
|
|
136
|
+
} | undefined;
|
|
137
|
+
}[];
|
|
138
|
+
}, unknown>>;
|
|
139
|
+
};
|
|
140
|
+
}>;
|
|
141
|
+
//# sourceMappingURL=notification-store.d.ts.map
|
|
@@ -40,8 +40,26 @@ export interface ProviderHealthEntry {
|
|
|
40
40
|
lastAgentId?: string | undefined;
|
|
41
41
|
lastFailureAt?: number | null | undefined;
|
|
42
42
|
}
|
|
43
|
+
export interface ProviderAuditEntry {
|
|
44
|
+
ts: number;
|
|
45
|
+
providerId: string;
|
|
46
|
+
model: string;
|
|
47
|
+
from: ProviderHealthState;
|
|
48
|
+
to: ProviderHealthState;
|
|
49
|
+
reason: string;
|
|
50
|
+
expiresAt: number | null;
|
|
51
|
+
error: {
|
|
52
|
+
kind: string;
|
|
53
|
+
status: number | null;
|
|
54
|
+
message: string;
|
|
55
|
+
sessionId: string | null;
|
|
56
|
+
agentId: string | null;
|
|
57
|
+
} | null;
|
|
58
|
+
}
|
|
43
59
|
interface ProviderStatusStore {
|
|
44
60
|
entries: Record<string, ProviderHealthEntry>;
|
|
61
|
+
/** Durable block/open audit trail tail (newest first), fed by provider.audit.get. */
|
|
62
|
+
audit: ProviderAuditEntry[];
|
|
45
63
|
/** Summary counts from the last full snapshot (or null before first fetch). */
|
|
46
64
|
summary: {
|
|
47
65
|
totalPairs: number;
|
|
@@ -56,6 +74,7 @@ interface ProviderStatusStore {
|
|
|
56
74
|
update: (entry: ProviderHealthEntry) => void;
|
|
57
75
|
hydrate: (entries: ProviderHealthEntry[]) => void;
|
|
58
76
|
applySnapshot: (snapshot: Record<string, unknown>) => void;
|
|
77
|
+
setAudit: (lines: ProviderAuditEntry[]) => void;
|
|
59
78
|
setLoading: (loading: boolean) => void;
|
|
60
79
|
setError: (error: string | null) => void;
|
|
61
80
|
clear: () => void;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tabs the boot reconciliation set aside for the user to decide about.
|
|
3
|
+
*
|
|
4
|
+
* The tab strip lives in `localStorage`, so it outlives the process that made
|
|
5
|
+
* it. Restoring it blindly meant a fresh `wstack --webui` came up wearing the
|
|
6
|
+
* previous run's tabs and paid for a full journal resume — todo board included
|
|
7
|
+
* — before the user had typed anything. Dropping it silently is the other
|
|
8
|
+
* extreme: work the user meant to come back to disappears without a word.
|
|
9
|
+
*
|
|
10
|
+
* So neither. A WebUI that starts fresh IS fresh — one new session, one tab —
|
|
11
|
+
* and the sessions that were in the strip are OFFERED. Resuming is then what it
|
|
12
|
+
* should always have been: an explicit act, on named sessions, that the user
|
|
13
|
+
* chose.
|
|
14
|
+
*
|
|
15
|
+
* The offer holds ids only. Titles come from `useHistoryStore`, which fills in
|
|
16
|
+
* from the `sessions.list` frame that arrives moments later; the modal renders
|
|
17
|
+
* with ids until it does rather than blocking on it.
|
|
18
|
+
*/
|
|
19
|
+
interface RestoreTabsState {
|
|
20
|
+
/** Stale slots awaiting an answer. Empty means no offer is pending. */
|
|
21
|
+
candidates: string[];
|
|
22
|
+
/** Present the offer. A second offer replaces the first (boot happens once). */
|
|
23
|
+
offer: (sessionIds: readonly string[]) => void;
|
|
24
|
+
/** Dismiss without restoring anything. */
|
|
25
|
+
dismiss: () => void;
|
|
26
|
+
}
|
|
27
|
+
export declare const useRestoreTabsStore: import("zustand").UseBoundStore<import("zustand").StoreApi<RestoreTabsState>>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=restore-tabs-store.d.ts.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* resume-progress-store.ts — which tabs are waiting for a transcript.
|
|
3
|
+
*
|
|
4
|
+
* A resume is not instant. The server has to replay the session's whole JSONL
|
|
5
|
+
* journal before it can answer, and a journal that has grown to a hundred-odd
|
|
6
|
+
* megabytes takes seconds on an idle machine and tens of seconds on one that
|
|
7
|
+
* is also running agents. Until this store existed the surface said nothing
|
|
8
|
+
* about that: the tab appeared immediately (the client opens the slot before
|
|
9
|
+
* asking), the lane was empty, and an empty lane renders the welcome screen —
|
|
10
|
+
* so a resume in progress was pixel-identical to a session with no messages in
|
|
11
|
+
* it. The honest reading of that screen is "the transcript is gone", which is
|
|
12
|
+
* what it was reported as.
|
|
13
|
+
*
|
|
14
|
+
* Deliberately NOT part of the chat lane. Lanes are persisted to localStorage,
|
|
15
|
+
* and a "waiting" flag must not survive the reload that ended the wait — a
|
|
16
|
+
* page that came back with a stale flag would spin forever. This is in-memory,
|
|
17
|
+
* per-session, and every exit is covered: the `session.start` that answers,
|
|
18
|
+
* the error frame that refuses, and a wall-clock ceiling for the answer that
|
|
19
|
+
* never comes at all.
|
|
20
|
+
*/
|
|
21
|
+
/**
|
|
22
|
+
* Upper bound on a single wait, after which the tab stops claiming to be
|
|
23
|
+
* loading and falls back to whatever the lane holds.
|
|
24
|
+
*
|
|
25
|
+
* Generous on purpose: the point of the ceiling is that a dropped frame cannot
|
|
26
|
+
* strand the pane forever, not to guess how long a resume "should" take.
|
|
27
|
+
* Cutting a genuinely slow resume short would put the welcome screen back
|
|
28
|
+
* under a user who is about to be handed their transcript.
|
|
29
|
+
*/
|
|
30
|
+
export declare const RESUME_PROGRESS_TIMEOUT_MS: number;
|
|
31
|
+
export interface ResumeProgressDetail {
|
|
32
|
+
stage: string;
|
|
33
|
+
loadedBytes: number;
|
|
34
|
+
totalBytes: number;
|
|
35
|
+
updatedAt: number;
|
|
36
|
+
}
|
|
37
|
+
interface ResumeProgressState {
|
|
38
|
+
/** sessionId -> ms epoch the resume request went out. */
|
|
39
|
+
startedAt: Record<string, number>;
|
|
40
|
+
/** sessionId -> latest server-reported journal load progress. */
|
|
41
|
+
progress: Record<string, ResumeProgressDetail>;
|
|
42
|
+
/** A resume request for this session is on the wire. */
|
|
43
|
+
begin: (sessionId: string) => void;
|
|
44
|
+
/** Update the visible progress for an in-flight resume. */
|
|
45
|
+
update: (sessionId: string, progress: Omit<ResumeProgressDetail, 'updatedAt'>) => void;
|
|
46
|
+
/** Its answer (or refusal) arrived. Safe to call for sessions never begun. */
|
|
47
|
+
end: (sessionId: string) => void;
|
|
48
|
+
/** Socket-level reset: nothing outstanding can still be answered. */
|
|
49
|
+
clear: () => void;
|
|
50
|
+
}
|
|
51
|
+
export declare const useResumeProgressStore: import("zustand").UseBoundStore<import("zustand").StoreApi<ResumeProgressState>>;
|
|
52
|
+
export declare function resumeStageLabel(stage: string | undefined): string;
|
|
53
|
+
export declare function resumeProgressPercent(progress: ResumeProgressDetail | undefined): number | null;
|
|
54
|
+
export declare function formatResumeBytes(bytes: number): string;
|
|
55
|
+
/** Selector-friendly read: is this tab still waiting for its transcript? */
|
|
56
|
+
export declare function isResuming(sessionId: string | null | undefined): boolean;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=resume-progress-store.d.ts.map
|