@wrongstack/webui 0.306.4 → 0.307.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.
Files changed (182) hide show
  1. package/dist/assets/AgentRosterView-Bb5m_XjZ.js +9 -0
  2. package/dist/assets/AnalyticsDashboard-lqPCAo9u.js +1 -0
  3. package/dist/assets/AudienceMemoryPanel-putWTq5V.js +3 -0
  4. package/dist/assets/{ChangesView-DplR2Twb.js → ChangesView-Cw-qvOLA.js} +1 -1
  5. package/dist/assets/ChronicleDashboard-DQdMkTLQ.js +1 -0
  6. package/dist/assets/CodeEditor-BAv2f4se.js +2 -0
  7. package/dist/assets/CodeMap-BB1WETLd.js +1 -0
  8. package/dist/assets/ConfirmModal-LBZaZgsG.js +1 -0
  9. package/dist/assets/CronJobsPanel-DE5CVuSW.js +1 -0
  10. package/dist/assets/{DeadCodeScanPanel-Dp6vW6pV.js → DeadCodeScanPanel-nlQ9nL3Y.js} +1 -1
  11. package/dist/assets/{DebugDashboard-d4ETqxOe.js → DebugDashboard-CgRH9SvC.js} +1 -1
  12. package/dist/assets/{DesignGalleryView-3jRTmgzx.js → DesignGalleryView-Uwo3JXyu.js} +1 -1
  13. package/dist/assets/GoalView-Cc4B-0Qd.js +1 -0
  14. package/dist/assets/KanbanView-CK4bvZfi.js +3 -0
  15. package/dist/assets/MailboxDetailView-CGwtSBcH.js +1 -0
  16. package/dist/assets/{MemoryDrawer-DIrEAQNI.js → MemoryDrawer-Cw1IiFCO.js} +1 -1
  17. package/dist/assets/MemoryManager-l0R8JBzL.js +1 -0
  18. package/dist/assets/{ModelPicker-OSfUtS6_.js → ModelPicker-DC-XCx0f.js} +1 -1
  19. package/dist/assets/OfficeMapPanel-CUI0PJBI.js +4 -0
  20. package/dist/assets/{ProcessMonitor-SLnEEbRY.js → ProcessMonitor-DLD6PrVx.js} +1 -1
  21. package/dist/assets/PromptJournalView-Cf1szLLw.js +1 -0
  22. package/dist/assets/{QueuePanel-BszNSrlq.js → QueuePanel-O7IsaKUs.js} +1 -1
  23. package/dist/assets/{RefreshDebugView-DA6cPIhw.js → RefreshDebugView-CuKbgI-T.js} +1 -1
  24. package/dist/assets/RequirementIntakeView-Bg8ZoV7J.js +1 -0
  25. package/dist/assets/{SageTabs-BR09lBUK.js → SageTabs-Bk8VDMmR.js} +2 -2
  26. package/dist/assets/SddFlowGraph-DdYgCVM_.js +1 -0
  27. package/dist/assets/SddHub-tQztZlHf.js +2 -0
  28. package/dist/assets/{SessionInspectView-Bf3X0qK8.js → SessionInspectView-BnoD3YER.js} +1 -1
  29. package/dist/assets/SessionList-BRbF7FVS.js +1 -0
  30. package/dist/assets/{SessionsDashboard-CwuOKWQc.js → SessionsDashboard-7heYIhHQ.js} +1 -1
  31. package/dist/assets/SetupScreen-CQW-6bhj.js +1 -0
  32. package/dist/assets/SkillDetailView-DdxB0JI4.js +3 -0
  33. package/dist/assets/{SpecsView-Do8eQuTN.js → SpecsView-BAnFfPPH.js} +1 -1
  34. package/dist/assets/TechStackView-DJeNOZE9.js +2 -0
  35. package/dist/assets/{TerminalPanel-Pq97A882.js → TerminalPanel-v3SC9LTq.js} +1 -1
  36. package/dist/assets/Toaster-wXvKXbbS.js +1 -0
  37. package/dist/assets/{activity-Dr_u3dOm.js → activity-C0qPnCbW.js} +2 -2
  38. package/dist/assets/{activity-Dzgvt4Nh.js → activity-DTSVEiLK.js} +2 -2
  39. package/dist/assets/{activity-L2_b8Uan.js → activity-DWHlYL9x.js} +2 -2
  40. package/dist/assets/{activity-gB90peLu.js → activity-DjnYvN9C.js} +2 -2
  41. package/dist/assets/{activity-Dg9Q9kwt.js → activity-fdbTRXeg.js} +3 -3
  42. package/dist/assets/{activity-BI4XyF_x.js → activity-jL8-j1D0.js} +2 -2
  43. package/dist/assets/{activity-IttuV5ar.js → activity-phJuGuf4.js} +2 -2
  44. package/dist/assets/{button-DvHe5h9X.js → button-DvpRpKkt.js} +1 -1
  45. package/dist/assets/{chat-CdiY7G6Z.js → chat-CzaGXz_W.js} +1 -1
  46. package/dist/assets/chat-store-c0pGYczr.js +17 -0
  47. package/dist/assets/codemap-activity-store-BH7Mh4k9.js +1 -0
  48. package/dist/assets/codemap-index-store-BFm1TzVW.js +1 -0
  49. package/dist/assets/{commandPalette-DpaemFux.js → commandPalette-BovBiPec.js} +1 -1
  50. package/dist/assets/common-BBHmIHQW.js +1 -0
  51. package/dist/assets/common-C3PzxyXg.js +1 -0
  52. package/dist/assets/common-CUWL8eNX.js +1 -0
  53. package/dist/assets/common-CvSB5NM3.js +1 -0
  54. package/dist/assets/common-DT2FL9xN.js +1 -0
  55. package/dist/assets/common-DuR5FTPN.js +1 -0
  56. package/dist/assets/common-xPePelft.js +1 -0
  57. package/dist/assets/{css.worker-B1A7g9RU.js → css.worker-DRH2OcAG.js} +14 -14
  58. package/dist/assets/{dialog-jbs7gu-q.js → dialog-BJjDUqb3.js} +1 -1
  59. package/dist/assets/{empty-state-D-ojp6Gp.js → empty-state-Cefmzojx.js} +1 -1
  60. package/dist/assets/{html.worker-NdFMIQdB.js → html.worker-DQLddT9h.js} +17 -17
  61. package/dist/assets/i18n-CDoHRskt.js +2 -0
  62. package/dist/assets/index-BRJ_UrGk.js +133 -0
  63. package/dist/assets/index-BRs425Ir.css +1 -0
  64. package/dist/assets/{input-oJ0Gehqp.js → input-BtoHcCl9.js} +1 -1
  65. package/dist/assets/json.worker-D_Dqrls5.js +62 -0
  66. package/dist/assets/mailbox-store-bF96Ih2G.js +1 -0
  67. package/dist/assets/markdown-CIRD7kOg.js +44 -0
  68. package/dist/assets/monaco-BCqJp2xW.js +1236 -0
  69. package/dist/assets/{monaco-theme-DSeCDzQy.js → monaco-theme-CR1QvFi2.js} +1 -1
  70. package/dist/assets/{rolldown-runtime-QTnfLwEv.js → rolldown-runtime-hePW80VL.js} +1 -1
  71. package/dist/assets/{roster-ws-DobwmzEj.js → roster-ws-CK52jAnG.js} +1 -1
  72. package/dist/assets/session-store-BgiP4PnQ.js +1 -0
  73. package/dist/assets/{settings-t7_uBgp_.js → settings-CbtB0i7o.js} +1 -1
  74. package/dist/assets/{setup-BFcmn89w.js → setup-DfcCCvUO.js} +1 -1
  75. package/dist/assets/{shared-CiaNczO0.js → shared-B3czc2Dj.js} +1 -1
  76. package/dist/assets/stores-DSGsI875.js +7 -0
  77. package/dist/assets/{toasts-BL_8kH4B.js → toasts-DOfXc7Rt.js} +1 -1
  78. package/dist/assets/{ts.worker-XonqDHUu.js → ts.worker-DkYoA6bF.js} +45 -45
  79. package/dist/assets/ui-store-xx1NssJI.js +1 -0
  80. package/dist/assets/useWebSocket-BFFntyS4.js +29 -0
  81. package/dist/assets/utils-tsZEnrBH.js +1 -0
  82. package/dist/assets/vendor-C_zEzV4N.js +139 -0
  83. package/dist/assets/{view-navigation-D-afwlSZ.js → view-navigation-CZKugncK.js} +1 -1
  84. package/dist/assets/ws-client-B3MVz75-.js +1 -0
  85. package/dist/assets/xterm-BWzBEEhg.js +18 -0
  86. package/dist/components/ChatInput/composer-button-bar.d.ts +24 -0
  87. package/dist/components/ChatInput/next-steps-helpers.d.ts +19 -0
  88. package/dist/components/ChatInput/use-chat-input-mcp.d.ts +8 -0
  89. package/dist/components/ChatInput/use-refine-timeout.d.ts +9 -0
  90. package/dist/components/ChatView/ChatDisplayToggles.d.ts +18 -0
  91. package/dist/components/ChatView/ChatHeader.d.ts +60 -0
  92. package/dist/components/ChatView/ChatRowView.d.ts +9 -0
  93. package/dist/components/ChatView/ToggleSwitch.d.ts +6 -0
  94. package/dist/components/ChatView/useChatViewState.d.ts +80 -0
  95. package/dist/components/ContextBar.d.ts +15 -2
  96. package/dist/components/FileExplorer/FileExplorerModals.d.ts +44 -0
  97. package/dist/components/FileExplorer/TreeRow.d.ts +23 -0
  98. package/dist/components/FileExplorer/tree-helpers.d.ts +16 -0
  99. package/dist/components/FileExplorer/types.d.ts +19 -0
  100. package/dist/components/MemoryManager/MemoryDrawerToolbar.d.ts +8 -0
  101. package/dist/components/MemoryManager/MemoryManagerHeader.d.ts +7 -0
  102. package/dist/components/MemoryManager/MemoryManagerStatsBar.d.ts +8 -0
  103. package/dist/components/MemoryManager/useMemoryManagerState.d.ts +85 -0
  104. package/dist/components/PromptJournalView.d.ts +2 -0
  105. package/dist/components/SddWizard.d.ts +0 -6
  106. package/dist/components/SettingsPanel/AgentSettingsTab.d.ts +5 -0
  107. package/dist/components/SettingsPanel/ContextSettingsTab.d.ts +4 -0
  108. package/dist/components/SettingsPanel/ExecutionSettingsTab.d.ts +6 -0
  109. package/dist/components/SettingsPanel/LogsSettingsTab.d.ts +4 -0
  110. package/dist/components/TechStackView/shared.d.ts +1 -0
  111. package/dist/components/self-learning/SelfLearningAgentList.d.ts +9 -0
  112. package/dist/components/self-learning/SelfLearningDetail.d.ts +39 -0
  113. package/dist/components/self-learning/types.d.ts +30 -0
  114. package/dist/components/self-learning/use-self-learning-state.d.ts +46 -0
  115. package/dist/hooks/ws-handlers/files-mailbox-handlers.d.ts +19 -0
  116. package/dist/hooks/ws-handlers/session-context-handlers.d.ts +18 -0
  117. package/dist/hooks/ws-handlers/session-execution-handlers.d.ts +24 -0
  118. package/dist/hooks/ws-handlers/session-handlers.d.ts +3 -36
  119. package/dist/hooks/ws-handlers/session-replay-handlers.d.ts +22 -0
  120. package/dist/index.html +31 -31
  121. package/dist/index.js +18021 -15149
  122. package/dist/lib/view-navigation.d.ts +1 -1
  123. package/dist/lib/ws-client-domain-methods.d.ts +86 -0
  124. package/dist/lib/ws-client.d.ts +2 -83
  125. package/dist/stores/chat-queue-helpers.d.ts +9 -0
  126. package/dist/stores/chat-retention.d.ts +14 -0
  127. package/dist/stores/chat-store-types.d.ts +106 -0
  128. package/dist/stores/chat-store.d.ts +6 -183
  129. package/dist/stores/file-store.d.ts +72 -3
  130. package/dist/stores/session-store.d.ts +20 -0
  131. package/dist/stores/ui-store.d.ts +3 -3
  132. package/dist/types/client-message.d.ts +51 -0
  133. package/dist/types/protocol-core.d.ts +2 -0
  134. package/dist/types/runtime.d.ts +1 -0
  135. package/dist/types/server-message.d.ts +76 -0
  136. package/package.json +20 -20
  137. package/dist/assets/AgentRosterView-X4NWBm16.js +0 -9
  138. package/dist/assets/AnalyticsDashboard-CvEY3lEY.js +0 -1
  139. package/dist/assets/AudienceMemoryPanel-ChhQVsbD.js +0 -3
  140. package/dist/assets/ChronicleDashboard-BpykJceZ.js +0 -1
  141. package/dist/assets/CodeEditor-DQDKQlAo.js +0 -1
  142. package/dist/assets/CodeMap-CnlnHM8P.js +0 -1
  143. package/dist/assets/ConfirmModal-BD6pUkAB.js +0 -1
  144. package/dist/assets/CronJobsPanel-Dp9xc7vb.js +0 -1
  145. package/dist/assets/GoalView-CoMRM0Vo.js +0 -1
  146. package/dist/assets/KanbanView-BMHq13vg.js +0 -3
  147. package/dist/assets/MailboxDetailView-C0n5fMGN.js +0 -1
  148. package/dist/assets/MemoryManager-CEfDQuV9.js +0 -1
  149. package/dist/assets/OfficeMapPanel-TIRw1a9O.js +0 -4
  150. package/dist/assets/RequirementIntakeView-CN7Yympd.js +0 -1
  151. package/dist/assets/SddFlowGraph-B-5J7zOV.js +0 -1
  152. package/dist/assets/SddHub-CkjrCykN.js +0 -2
  153. package/dist/assets/SessionList-cAmzxd3Z.js +0 -1
  154. package/dist/assets/SetupScreen-DZUvrhr0.js +0 -1
  155. package/dist/assets/SkillDetailView-CULufBnT.js +0 -3
  156. package/dist/assets/TechStackView-B2v5LoJp.js +0 -1
  157. package/dist/assets/Toaster-Dic3369l.js +0 -1
  158. package/dist/assets/chat-store-BgCgMMd0.js +0 -17
  159. package/dist/assets/codemap-activity-store-DBdfN0ix.js +0 -1
  160. package/dist/assets/codemap-index-store-45CkVCxN.js +0 -1
  161. package/dist/assets/common-BXJbu5Y-.js +0 -1
  162. package/dist/assets/common-BiNu_WzQ.js +0 -1
  163. package/dist/assets/common-COVxQ0FV.js +0 -1
  164. package/dist/assets/common-Ch7JihXD.js +0 -1
  165. package/dist/assets/common-DPaTeTls.js +0 -1
  166. package/dist/assets/common-DdGpRh8j.js +0 -1
  167. package/dist/assets/common-pI6fYZW3.js +0 -1
  168. package/dist/assets/i18n-nlW2iAya.js +0 -2
  169. package/dist/assets/index-eK0iH6jY.js +0 -133
  170. package/dist/assets/index-mNf-KFcC.css +0 -1
  171. package/dist/assets/json.worker-Ax0gao5O.js +0 -62
  172. package/dist/assets/mailbox-store-BuLRsYu3.js +0 -1
  173. package/dist/assets/markdown-sSmz-Ua_.js +0 -44
  174. package/dist/assets/monaco-BLUV5g0U.js +0 -1236
  175. package/dist/assets/session-store-DkPaOIhe.js +0 -1
  176. package/dist/assets/stores-BpVw7ENx.js +0 -7
  177. package/dist/assets/ui-store-FVcXVdRC.js +0 -1
  178. package/dist/assets/useWebSocket-Dh-clEvj.js +0 -29
  179. package/dist/assets/utils-D1fGupR8.js +0 -1
  180. package/dist/assets/vendor-AeHpGMaG.js +0 -139
  181. package/dist/assets/ws-client-B7j8isQb.js +0 -1
  182. package/dist/assets/xterm-DUBp1lnG.js +0 -35
@@ -0,0 +1,24 @@
1
+ import type React from 'react';
2
+ import type { ImageAttachment } from './image-attachments.js';
3
+ export interface ComposerButtonBarProps {
4
+ imagePickerRef: React.RefObject<HTMLInputElement | null>;
5
+ disabled: boolean;
6
+ topicCheckBusy: boolean;
7
+ clientConnected: boolean;
8
+ isLoading: boolean;
9
+ chatStarted: boolean;
10
+ input: string;
11
+ pendingImages: ImageAttachment[];
12
+ addImageFiles: (files: File[]) => Promise<void>;
13
+ handleStopAndEdit: () => void;
14
+ handleAbort: () => void;
15
+ handleBtw: () => void;
16
+ handleSteer: () => void;
17
+ handleAddQueue: () => void;
18
+ updatePrefs: (prefs: {
19
+ enhanceEnabled: boolean;
20
+ }) => void;
21
+ t: (key: string, opts?: Record<string, unknown>) => string;
22
+ }
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;
24
+ //# sourceMappingURL=composer-button-bar.d.ts.map
@@ -0,0 +1,19 @@
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
+ export declare function handleNextList(): true;
18
+ export declare function handleNextSelect(input: string, sendMsg: (content: string) => void): true;
19
+ //# sourceMappingURL=next-steps-helpers.d.ts.map
@@ -0,0 +1,8 @@
1
+ import type { WrongStackWebSocketClient } from '@/lib/ws-client.js';
2
+ import type { WSUserMessageImage } from '@/types';
3
+ export interface UseChatInputMcpOptions {
4
+ client?: WrongStackWebSocketClient | null | undefined;
5
+ sendMessage: (content: string, images?: WSUserMessageImage[] | undefined, freshContext?: boolean) => string | null;
6
+ }
7
+ export declare function useChatInputMcp({ client, sendMessage }: UseChatInputMcpOptions): void;
8
+ //# sourceMappingURL=use-chat-input-mcp.d.ts.map
@@ -0,0 +1,9 @@
1
+ import type { WSUserMessageImage } from '@/types';
2
+ export interface UseRefineTimeoutOptions {
3
+ clientConnected?: boolean | undefined;
4
+ t: (key: string) => string;
5
+ sendMessage: (content: string, images?: WSUserMessageImage[] | undefined, freshContext?: boolean) => string | null;
6
+ setInput: (value: string) => void;
7
+ }
8
+ export declare function useRefineTimeout({ clientConnected, t, sendMessage, setInput, }: UseRefineTimeoutOptions): void;
9
+ //# sourceMappingURL=use-refine-timeout.d.ts.map
@@ -0,0 +1,18 @@
1
+ export declare function ChatDisplayToggles({ hasStatusContent, totalTokens, rowsCount, iteration, startTime, formatDuration, onToggleAutoCollapse, }: {
2
+ hasStatusContent: boolean;
3
+ totalTokens: {
4
+ input: number;
5
+ output: number;
6
+ cacheRead?: number;
7
+ cacheWrite?: number;
8
+ };
9
+ rowsCount: number;
10
+ iteration?: {
11
+ index: number;
12
+ max: number;
13
+ } | null;
14
+ startTime: number | null;
15
+ formatDuration: (start: number | null) => string;
16
+ onToggleAutoCollapse: () => void;
17
+ }): import("react").JSX.Element;
18
+ //# sourceMappingURL=ChatDisplayToggles.d.ts.map
@@ -0,0 +1,60 @@
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, provider, model, iteration, autonomy, handleAutonomyChange, memoryPanelOpen, setMemoryPanelOpen, activeMemoryCount, processOpen, setProcessOpen, checkpointOpen, setCheckpointOpen, hasStatusContent, lastInputTokens, ctxPct, maxContext, cacheStats, setBreakdownOpen, contextLimitWarning, setEditorOpen, totalTokens, startTime, formatDuration, }: {
3
+ sidebarOpen: boolean;
4
+ toggleSidebar: () => void;
5
+ agentState: 'idle' | 'streaming' | 'thinking';
6
+ stateTone: string;
7
+ sessionId?: string;
8
+ renamingTitle: boolean;
9
+ setRenamingTitle: (val: boolean) => void;
10
+ titleDraft: string;
11
+ setTitleDraft: (val: string) => void;
12
+ nickname?: string;
13
+ sessionTitle?: string;
14
+ setSessionNickname: (id: string, name: string) => void;
15
+ historyEntries: SessionHistoryEntry[];
16
+ switcherRef: React.RefObject<HTMLDivElement | null>;
17
+ switcherOpen: boolean;
18
+ setSwitcherOpen: React.Dispatch<React.SetStateAction<boolean>>;
19
+ handleHistorySelect: (id: string) => void;
20
+ provider?: string;
21
+ model?: string;
22
+ iteration?: {
23
+ index: number;
24
+ max: number;
25
+ } | null;
26
+ autonomy: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel';
27
+ handleAutonomyChange: (mode: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel') => void;
28
+ memoryPanelOpen: boolean;
29
+ setMemoryPanelOpen: React.Dispatch<React.SetStateAction<boolean>>;
30
+ activeMemoryCount: number;
31
+ processOpen: boolean;
32
+ setProcessOpen: React.Dispatch<React.SetStateAction<boolean>>;
33
+ checkpointOpen: boolean;
34
+ setCheckpointOpen: React.Dispatch<React.SetStateAction<boolean>>;
35
+ hasStatusContent: boolean;
36
+ lastInputTokens: number;
37
+ ctxPct: number;
38
+ maxContext: number;
39
+ cacheStats?: {
40
+ readTokens: number;
41
+ writeTokens: number;
42
+ hitRatio: number;
43
+ coverageTokens: number;
44
+ } | null;
45
+ setBreakdownOpen: (val: boolean) => void;
46
+ contextLimitWarning: {
47
+ previousMaxContext: number;
48
+ maxContext: number;
49
+ } | null;
50
+ setEditorOpen: (val: boolean) => void;
51
+ totalTokens: {
52
+ input: number;
53
+ output: number;
54
+ cacheRead?: number;
55
+ cacheWrite?: number;
56
+ };
57
+ startTime: number | null;
58
+ formatDuration: (start: number | null) => string;
59
+ }): import("react").JSX.Element;
60
+ //# sourceMappingURL=ChatHeader.d.ts.map
@@ -0,0 +1,9 @@
1
+ import type { ChatRow } from './utils.js';
2
+ export declare const ChatRowView: import("react").MemoExoticComponent<({ row, isLoading, compactMode, isFirstRow, groupToolCalls, }: {
3
+ row: ChatRow;
4
+ isLoading: boolean;
5
+ compactMode: boolean;
6
+ isFirstRow: boolean;
7
+ groupToolCalls: boolean;
8
+ }) => import("react").JSX.Element>;
9
+ //# sourceMappingURL=ChatRowView.d.ts.map
@@ -0,0 +1,6 @@
1
+ export declare function ToggleSwitch({ label, value, onChange, }: {
2
+ label: string;
3
+ value: boolean;
4
+ onChange: () => void;
5
+ }): import("react").JSX.Element;
6
+ //# sourceMappingURL=ToggleSwitch.d.ts.map
@@ -0,0 +1,80 @@
1
+ import type { VListHandle } from 'virtua';
2
+ export declare function useChatViewState(): {
3
+ messages: import("@/stores").ChatMessage[];
4
+ isLoading: boolean;
5
+ sidebarOpen: boolean;
6
+ toggleSidebar: () => void;
7
+ compactMode: boolean;
8
+ totalTokens: import("@wrongstack/core/types").Usage;
9
+ startTime: number | null;
10
+ lastInputTokens: number;
11
+ maxContext: number;
12
+ contextLimitWarning: {
13
+ previousMaxContext: number;
14
+ maxContext: number;
15
+ providerId: string;
16
+ modelId: string;
17
+ } | null;
18
+ cacheStats: {
19
+ readTokens: number;
20
+ writeTokens: number;
21
+ hitRatio: number;
22
+ coverageTokens: number;
23
+ } | null;
24
+ iteration: {
25
+ index: number;
26
+ max: number;
27
+ } | null;
28
+ sessionId: string | undefined;
29
+ nickname: string | undefined;
30
+ sessionTitle: string | undefined;
31
+ renamingTitle: boolean;
32
+ setRenamingTitle: import("react").Dispatch<import("react").SetStateAction<boolean>>;
33
+ titleDraft: string;
34
+ setTitleDraft: import("react").Dispatch<import("react").SetStateAction<string>>;
35
+ setSessionNickname: (id: string, nickname: string) => void;
36
+ historyEntries: import("@/stores").SessionHistoryEntry[];
37
+ switcherOpen: boolean;
38
+ setSwitcherOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
39
+ switcherRef: import("react").RefObject<HTMLDivElement | null>;
40
+ handleHistorySelect: (targetSessionId: string) => void;
41
+ provider: string;
42
+ model: string;
43
+ vlistRef: import("react").RefObject<VListHandle | null>;
44
+ rows: import("./utils.js").ChatRow[];
45
+ autonomy: "auto" | "eternal" | "eternal-parallel" | "off" | "suggest";
46
+ groupToolCallsPref: boolean;
47
+ autoCollapseInput: boolean;
48
+ handleAutonomyChange: (mode: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel') => void;
49
+ processOpen: boolean;
50
+ setProcessOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
51
+ checkpointOpen: boolean;
52
+ setCheckpointOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
53
+ memoryPanelOpen: boolean;
54
+ setMemoryPanelOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
55
+ inputCollapsed: boolean;
56
+ setInputCollapsed: import("react").Dispatch<import("react").SetStateAction<boolean>>;
57
+ breakdownOpen: boolean;
58
+ setBreakdownOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
59
+ editorOpen: boolean;
60
+ setEditorOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
61
+ activeMemoryCount: number;
62
+ handleToggleAutoCollapse: () => void;
63
+ ctxPct: number;
64
+ pinnedToBottom: boolean;
65
+ unreadCount: number;
66
+ scrolledDeep: boolean;
67
+ handleScroll: () => void;
68
+ scrollToBottom: () => void;
69
+ scrollToTop: () => void;
70
+ runningStatus: {
71
+ label: string;
72
+ elapsed: string;
73
+ speedLabel: string;
74
+ };
75
+ formatDuration: (start: number | null) => string;
76
+ agentState: "idle" | "streaming" | "thinking";
77
+ stateTone: string;
78
+ hasStatusContent: boolean;
79
+ };
80
+ //# sourceMappingURL=useChatViewState.d.ts.map
@@ -17,6 +17,19 @@ interface ContextBarProps {
17
17
  tokens?: number | undefined;
18
18
  /** Max context window tokens. */
19
19
  maxTokens?: number | undefined;
20
+ /**
21
+ * Live prompt-cache snapshot. When supplied AND the cache has
22
+ * activity (`readTokens + writeTokens > 0`), a compact cache-hit
23
+ * sub-line renders next to the bar showing the hit ratio and the
24
+ * cached prefix of the current prompt. Hidden when `null` so cold
25
+ * sessions stay visually quiet.
26
+ */
27
+ cache?: {
28
+ readTokens: number;
29
+ writeTokens: number;
30
+ hitRatio: number;
31
+ coverageTokens: number;
32
+ } | null;
20
33
  /** Number of visual segments (default 10, matches TUI). */
21
34
  segments?: number | undefined;
22
35
  /** Whether to show the token numbers (default true). */
@@ -35,11 +48,11 @@ interface ContextBarProps {
35
48
  */
36
49
  variant?: 'solid' | 'iridescent' | undefined;
37
50
  }
38
- export declare function ContextBar({ pct, tokens, maxTokens, segments, showTokens, className, onClick, variant, }: ContextBarProps): React.ReactElement;
51
+ export declare function ContextBar({ pct, tokens, maxTokens, cache, segments, showTokens, className, onClick, variant, }: ContextBarProps): React.ReactElement;
39
52
  /**
40
53
  * Horizontal CSS-based context fill bar — a smooth, gradient-filled
41
54
  * progress indicator with glow effects and animated stripes.
42
55
  */
43
- export declare function ContextFillBar({ pct, tokens, maxTokens, showTokens, className, onClick, }: Omit<ContextBarProps, 'segments'>): React.ReactElement;
56
+ export declare function ContextFillBar({ pct, tokens, maxTokens, cache, showTokens, className, onClick, }: Omit<ContextBarProps, 'segments'>): React.ReactElement;
44
57
  export {};
45
58
  //# sourceMappingURL=ContextBar.d.ts.map
@@ -0,0 +1,44 @@
1
+ import type React from 'react';
2
+ import type { TreeNode } from '@/stores/file-store';
3
+ import type { CreatePromptState, CrumbContext, RenamePromptState } from './types';
4
+ export interface BreadcrumbContextMenuProps {
5
+ contextMenu: {
6
+ x: number;
7
+ y: number;
8
+ crumb: CrumbContext;
9
+ };
10
+ copyToClipboard: (text: string) => void;
11
+ handleStartCreate: (dirPath: string, type: 'file' | 'directory') => void;
12
+ handleShellOpen: (dirPath: string, target: 'terminal' | 'file-manager') => void;
13
+ }
14
+ export declare function BreadcrumbContextMenu({ contextMenu, copyToClipboard, handleStartCreate, handleShellOpen, }: BreadcrumbContextMenuProps): React.JSX.Element;
15
+ export interface NodeContextMenuProps {
16
+ nodeMenu: {
17
+ x: number;
18
+ y: number;
19
+ node: TreeNode;
20
+ };
21
+ handleMentionInChat: (node: TreeNode) => void;
22
+ copyNodePath: (path: string) => void;
23
+ handleStartCreate: (dirPath: string, type: 'file' | 'directory') => void;
24
+ handleStartRename: (node: TreeNode) => void;
25
+ handleDelete: (node: TreeNode) => void;
26
+ }
27
+ export declare function NodeContextMenu({ nodeMenu, handleMentionInChat, copyNodePath, handleStartCreate, handleStartRename, handleDelete, }: NodeContextMenuProps): React.JSX.Element;
28
+ export interface CreatePromptModalProps {
29
+ createPrompt: CreatePromptState;
30
+ createName: string;
31
+ setCreateName: (val: string) => void;
32
+ onCancel: () => void;
33
+ onConfirm: () => void;
34
+ }
35
+ export declare function CreatePromptModal({ createPrompt, createName, setCreateName, onCancel, onConfirm, }: CreatePromptModalProps): React.JSX.Element;
36
+ export interface RenamePromptModalProps {
37
+ renamePrompt: RenamePromptState;
38
+ renameValue: string;
39
+ setRenameValue: (val: string) => void;
40
+ onCancel: () => void;
41
+ onConfirm: () => void;
42
+ }
43
+ export declare function RenamePromptModal({ renamePrompt, renameValue, setRenameValue, onCancel, onConfirm, }: RenamePromptModalProps): React.JSX.Element;
44
+ //# sourceMappingURL=FileExplorerModals.d.ts.map
@@ -0,0 +1,23 @@
1
+ import type React from 'react';
2
+ import type { TreeNode } from '@/stores/file-store';
3
+ export declare const GIT_STATUS_COLORS: Record<string, string>;
4
+ export declare const GIT_STATUS_LABELS: Record<string, string>;
5
+ export declare function GitStatusDot({ status }: {
6
+ status: string;
7
+ }): React.JSX.Element;
8
+ export interface TreeRowProps {
9
+ node: TreeNode;
10
+ depth: number;
11
+ emptyPlaceholder?: boolean | undefined;
12
+ expanded: boolean;
13
+ isActive: boolean;
14
+ isSelected: boolean;
15
+ isFocused: boolean;
16
+ gitStatus?: string | undefined;
17
+ onToggle: (path: string) => void;
18
+ onSelect: (filePath: string) => void;
19
+ onOpen: (filePath: string) => void;
20
+ onContextMenu: (e: React.MouseEvent, node: TreeNode) => void;
21
+ }
22
+ export declare const TreeRow: React.MemoExoticComponent<({ node, depth, emptyPlaceholder, expanded, isActive, isSelected, isFocused, gitStatus, onToggle, onSelect, onOpen, onContextMenu, }: TreeRowProps) => React.JSX.Element>;
23
+ //# sourceMappingURL=TreeRow.d.ts.map
@@ -0,0 +1,16 @@
1
+ import type { TreeNode } from '@/stores/file-store';
2
+ import type { FlatRow } from './types.js';
3
+ /** Flatten the visible portion of the tree (expanded dirs only). */
4
+ export declare function flattenTree(tree: TreeNode[], expandedDirs: ReadonlySet<string>): FlatRow[];
5
+ /**
6
+ * Score a file path against a query — ported from the server-side
7
+ * `rankFiles()` in `file-picker.ts` so the explorer and the chat `@`
8
+ * picker use the same ranking: exact basename (100) > basename prefix
9
+ * (60) > path substring (20), penalized by depth so shallow files win.
10
+ */
11
+ export declare function scoreFile(filePath: string, q: string): number;
12
+ /** Recursively collect every file node in the tree (regardless of expansion). */
13
+ export declare function collectAllFiles(tree: TreeNode[]): TreeNode[];
14
+ /** Collect every directory path in the tree (for expand-all). */
15
+ export declare function collectDirPaths(tree: TreeNode[]): string[];
16
+ //# sourceMappingURL=tree-helpers.d.ts.map
@@ -0,0 +1,19 @@
1
+ import type { TreeNode } from '@/stores/file-store';
2
+ export interface FlatRow {
3
+ node: TreeNode;
4
+ depth: number;
5
+ emptyPlaceholder?: boolean | undefined;
6
+ }
7
+ export interface CrumbContext {
8
+ absPath: string;
9
+ relPath: string;
10
+ }
11
+ export interface CreatePromptState {
12
+ dirPath: string;
13
+ type: 'file' | 'directory';
14
+ }
15
+ export interface RenamePromptState {
16
+ oldPath: string;
17
+ initialName: string;
18
+ }
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,8 @@
1
+ export declare function MemoryDrawerToolbar({ currentFilePath, knownFilePaths, drawerActive, onFilePathChange, onToggleDrawer, }: {
2
+ currentFilePath: string | null;
3
+ knownFilePaths: Set<string>;
4
+ drawerActive: boolean;
5
+ onFilePathChange: (path: string | null) => void;
6
+ onToggleDrawer: () => void;
7
+ }): import("react").JSX.Element;
8
+ //# sourceMappingURL=MemoryDrawerToolbar.d.ts.map
@@ -0,0 +1,7 @@
1
+ export declare function MemoryManagerHeader({ wsConnected, refreshing, onRefresh, onCreate, }: {
2
+ wsConnected: boolean;
3
+ refreshing: boolean;
4
+ onRefresh: () => void;
5
+ onCreate: () => void;
6
+ }): import("react").JSX.Element;
7
+ //# sourceMappingURL=MemoryManagerHeader.d.ts.map
@@ -0,0 +1,8 @@
1
+ import type { SageEntry, SageStats } from '@/types';
2
+ export declare function MemoryManagerStatsBar({ stats, memories, filteredCount, allTagsCount, }: {
3
+ stats: SageStats | null;
4
+ memories: SageEntry[];
5
+ filteredCount: number;
6
+ allTagsCount: number;
7
+ }): import("react").JSX.Element;
8
+ //# sourceMappingURL=MemoryManagerStatsBar.d.ts.map
@@ -0,0 +1,85 @@
1
+ import type { SageEntry, SageGraphEdge, SageStats, SageStatus } from '@/types';
2
+ import type { MemoryDraft } from './shared';
3
+ export declare function useMemoryManagerState(): {
4
+ client: import("../../lib").WrongStackWebSocketClient;
5
+ wsConnected: boolean;
6
+ memories: SageEntry[];
7
+ stats: SageStats | null;
8
+ initialLoading: boolean;
9
+ refreshing: boolean;
10
+ loadError: string | null;
11
+ mutationError: string | null;
12
+ setMutationError: import("react").Dispatch<import("react").SetStateAction<string | null>>;
13
+ notice: string | null;
14
+ setNotice: import("react").Dispatch<import("react").SetStateAction<string | null>>;
15
+ selectedId: string | null;
16
+ setSelectedId: import("react").Dispatch<import("react").SetStateAction<string | null>>;
17
+ selectedMemory: SageEntry | null;
18
+ graphEdges: SageGraphEdge[];
19
+ graphMemories: SageEntry[];
20
+ graphError: string | null;
21
+ graphLoading: boolean;
22
+ editing: boolean;
23
+ creating: boolean;
24
+ draft: MemoryDraft;
25
+ setDraft: import("react").Dispatch<import("react").SetStateAction<MemoryDraft>>;
26
+ busyAction: "create" | "delete" | "update" | null;
27
+ deletingId: string | null;
28
+ setDeletingId: import("react").Dispatch<import("react").SetStateAction<string | null>>;
29
+ searchQuery: string;
30
+ setSearchQuery: import("react").Dispatch<import("react").SetStateAction<string>>;
31
+ statusFilter: "all" | SageStatus;
32
+ setStatusFilter: import("react").Dispatch<import("react").SetStateAction<"all" | SageStatus>>;
33
+ kindFilter: string;
34
+ setKindFilter: import("react").Dispatch<import("react").SetStateAction<string>>;
35
+ audienceOnly: boolean;
36
+ setAudienceOnly: import("react").Dispatch<import("react").SetStateAction<boolean>>;
37
+ tagFilter: string | null;
38
+ setTagFilter: import("react").Dispatch<import("react").SetStateAction<string | null>>;
39
+ libraryView: "active" | "deleted" | "review";
40
+ setLibraryView: import("react").Dispatch<import("react").SetStateAction<"active" | "deleted" | "review">>;
41
+ showDeleted: boolean;
42
+ showReview: boolean;
43
+ hasMore: boolean;
44
+ loadingMore: boolean;
45
+ statusCounts: Record<string, number>;
46
+ drawerOpen: boolean;
47
+ setDrawerOpen: import("react").Dispatch<import("react").SetStateAction<boolean>>;
48
+ currentFilePath: string | null;
49
+ setCurrentFilePath: import("react").Dispatch<import("react").SetStateAction<string | null>>;
50
+ knownFilePaths: Set<string>;
51
+ filteredMemories: SageEntry[];
52
+ allTags: [string, number][];
53
+ relatedMemories: {
54
+ relation: string;
55
+ id: string;
56
+ }[];
57
+ hasFilters: boolean;
58
+ detailOpen: boolean;
59
+ drawerActive: boolean;
60
+ loadMemories: () => void;
61
+ loadMore: () => void;
62
+ openCreate: () => void;
63
+ openMemory: (id: string) => void;
64
+ openEdit: (id?: string) => void;
65
+ cancelEditor: () => void;
66
+ submitCreate: () => void;
67
+ submitUpdate: () => void;
68
+ confirmDelete: () => void;
69
+ sendWithAck: (type: 'memory.sage.candidateResolve' | 'memory.sage.recover' | 'memory.sage.update', send: () => void, onResponse: (payload: {
70
+ error?: string | undefined;
71
+ memory?: SageEntry | undefined;
72
+ }) => void) => void;
73
+ clearFilters: () => void;
74
+ resolveMemoryCandidate: (opts: Parameters<(opts: Extract<import("@/types").WSClientMessage, {
75
+ type: 'memory.sage.candidateResolve';
76
+ }>['payload'], options?: import("../../lib/ws-client-contracts").WSSendOptions) => void>[0], options?: import("../../lib/ws-client-contracts").WSSendOptions) => void;
77
+ updateSage: (id: string, patch: Record<string, unknown>, options?: import("../../lib/ws-client-contracts").WSSendOptions) => void;
78
+ recoverSage: (opts: Parameters<(opts: Extract<import("@/types").WSClientMessage, {
79
+ type: 'memory.sage.recover';
80
+ }>['payload'], options?: import("../../lib/ws-client-contracts").WSSendOptions) => void>[0], options?: import("../../lib/ws-client-contracts").WSSendOptions) => void;
81
+ listMemoryCandidates: (params?: {
82
+ includeResolved?: boolean;
83
+ }, options?: import("../../lib/ws-client-contracts").WSSendOptions) => void;
84
+ };
85
+ //# sourceMappingURL=useMemoryManagerState.d.ts.map
@@ -0,0 +1,2 @@
1
+ export declare function PromptJournalView(): import("react").JSX.Element;
2
+ //# sourceMappingURL=PromptJournalView.d.ts.map
@@ -1,9 +1,3 @@
1
- /**
2
- * SddWizard — the interactive "New SDD Project" flow. Drives the server-side
3
- * SddInterviewDriver over WS: goal → Q&A → spec → task graph → Start Run, then
4
- * hands off to the live board. Works on both webui servers (the run uses the
5
- * CLI's director-backed fleet or the runtime light factory respectively).
6
- */
7
1
  export declare function SddWizard({ onClose, onRunStarted, }: {
8
2
  onClose: () => void;
9
3
  onRunStarted?: () => void;
@@ -0,0 +1,5 @@
1
+ export declare function AgentSettingsTab({ syncPref, switchAutonomy, }: {
2
+ syncPref: (key: string, value: unknown) => void;
3
+ switchAutonomy: (mode: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel') => void;
4
+ }): import("react").JSX.Element;
5
+ //# sourceMappingURL=AgentSettingsTab.d.ts.map
@@ -0,0 +1,4 @@
1
+ export declare function ContextSettingsTab({ syncPref, }: {
2
+ syncPref: (key: string, value: unknown) => void;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=ContextSettingsTab.d.ts.map
@@ -0,0 +1,6 @@
1
+ import type { ModelCandidate } from '@/hooks/useProviderModels';
2
+ export declare function ExecutionSettingsTab({ syncPref, fallbackCandidates, }: {
3
+ syncPref: (key: string, value: unknown) => void;
4
+ fallbackCandidates: ModelCandidate[];
5
+ }): import("react").JSX.Element;
6
+ //# sourceMappingURL=ExecutionSettingsTab.d.ts.map
@@ -0,0 +1,4 @@
1
+ export declare function LogsSettingsTab({ syncPref, }: {
2
+ syncPref: (key: string, value: unknown) => void;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=LogsSettingsTab.d.ts.map
@@ -108,4 +108,5 @@ export declare function MetricCard({ label, value, hint, tone, }: {
108
108
  hint: string;
109
109
  tone?: 'default' | 'success' | 'warning' | 'info' | 'destructive';
110
110
  }): import("react").JSX.Element;
111
+ export declare function downloadReport(snapshot: import('@/stores').TechStackSnapshot, format: 'json' | 'spdx' | 'cyclonedx' | 'md'): void;
111
112
  //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1,9 @@
1
+ import type { CustomRosterStats } from '../agent-roster-data.js';
2
+ export declare function SelfLearningAgentList({ populated, selectedRole, onSelectRole, onBulkOptimize, bulkOptimizing, }: {
3
+ populated: CustomRosterStats[];
4
+ selectedRole: string | null;
5
+ onSelectRole: (role: string) => void;
6
+ onBulkOptimize: (roles: string[]) => void;
7
+ bulkOptimizing: boolean;
8
+ }): import("react").JSX.Element;
9
+ //# sourceMappingURL=SelfLearningAgentList.d.ts.map
@@ -0,0 +1,39 @@
1
+ import type { CustomRosterStats } from '../agent-roster-data.js';
2
+ import { type AutoOptimizeStatus, type RetiredDirective, type RoleSkill } from './types.js';
3
+ export declare function SelfLearningDetail({ selectedRole, selectedStats, saving, setLearningEnabled, optimizing, runOptimize, autoStatus, consolidatedContent, loadConsolidated, setConsolidatedContent, skills, toggleSkillBody, toggleSkillPin, openSkill, retired, showRetired, setShowRetired, loadEntries, loadingEntries, reviewEntries, reviewDecisions, setReviewEntries, setReviewDecisions, applyReview, teachInput, setTeachInput, runTeach, teachFeedback, }: {
4
+ selectedRole: string;
5
+ selectedStats: CustomRosterStats;
6
+ saving: boolean;
7
+ setLearningEnabled: (role: string, enabled: boolean) => void;
8
+ optimizing: boolean;
9
+ runOptimize: (role: string) => void;
10
+ autoStatus: AutoOptimizeStatus | null;
11
+ consolidatedContent: string | null;
12
+ loadConsolidated: (role: string) => void;
13
+ setConsolidatedContent: (content: string | null) => void;
14
+ skills: RoleSkill[] | null;
15
+ toggleSkillBody: (role: string, skill: string) => void;
16
+ toggleSkillPin: (role: string, skill: string, pinned: boolean) => void;
17
+ openSkill: {
18
+ skill: string;
19
+ content: string;
20
+ } | null;
21
+ retired: RetiredDirective[] | null;
22
+ showRetired: boolean;
23
+ setShowRetired: (updater: (open: boolean) => boolean) => void;
24
+ loadEntries: (role: string) => void;
25
+ loadingEntries: boolean;
26
+ reviewEntries: string[] | null;
27
+ reviewDecisions: Record<number, 'keep' | 'drop'>;
28
+ setReviewEntries: (entries: string[] | null) => void;
29
+ setReviewDecisions: React.Dispatch<React.SetStateAction<Record<number, 'keep' | 'drop'>>>;
30
+ applyReview: () => void;
31
+ teachInput: string;
32
+ setTeachInput: (val: string) => void;
33
+ runTeach: () => void;
34
+ teachFeedback: {
35
+ ok: boolean;
36
+ msg: string;
37
+ } | null;
38
+ }): import("react").JSX.Element;
39
+ //# sourceMappingURL=SelfLearningDetail.d.ts.map
@@ -0,0 +1,30 @@
1
+ /** Whether the background scheduler considers a role due for distillation. */
2
+ export interface AutoOptimizeStatus {
3
+ enabled: boolean;
4
+ eligible: boolean;
5
+ reason: string;
6
+ }
7
+ /** Human wording for the scheduler's decision. */
8
+ export declare const AUTO_REASON_LABEL: Record<string, string>;
9
+ /** One skill a role may draw on, with what this project has done to it. */
10
+ export interface RoleSkill {
11
+ skill: string;
12
+ developed: boolean;
13
+ affinity: {
14
+ loaded: number;
15
+ succeeded: number;
16
+ failed: number;
17
+ learned: number;
18
+ pinned?: boolean;
19
+ } | null;
20
+ /** Project affinity score. Higher ranks earlier; ties keep the curated order. */
21
+ score?: number;
22
+ /** Whether this skill makes the eager cut and is actually loaded at spawn. */
23
+ eager?: boolean;
24
+ }
25
+ /** A directive the loop retired after it kept correlating with failed tasks. */
26
+ export interface RetiredDirective {
27
+ what: string;
28
+ skill?: string;
29
+ }
30
+ //# sourceMappingURL=types.d.ts.map