@wrongstack/webui 1.0.19 → 1.0.26
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-udJ14GYq.js +12 -0
- package/dist/assets/{AnalyticsDashboard-DmQd0E0V.js → AnalyticsDashboard-DwF-0cUA.js} +1 -1
- package/dist/assets/AudienceMemoryPanel-DpBGeZv_.js +3 -0
- package/dist/assets/ChangesView-BfM0T_aS.js +3 -0
- package/dist/assets/ChimeraReviewsView-Q_5C4DU1.js +1 -0
- package/dist/assets/ChronicleDashboard-D6LnZzhy.js +1 -0
- package/dist/assets/CodeEditor-DonrWH9u.js +2 -0
- package/dist/assets/CodeMap-Dxtc378S.js +1 -0
- package/dist/assets/{CronJobsPanel-TcZy_W2t.js → CronJobsPanel-Cn2PQO_p.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-BOD2JEyf.js → DeadCodeScanPanel-Mc5py-kJ.js} +1 -1
- package/dist/assets/{DebugDashboard-DFPNPzQ_.js → DebugDashboard-D0LRcT4J.js} +1 -1
- package/dist/assets/{DesignGalleryView-BXABwAji.js → DesignGalleryView-DAD-wRUc.js} +1 -1
- package/dist/assets/GoalView-CqeSw0tK.js +1 -0
- package/dist/assets/KanbanView-V-bkFftp.js +3 -0
- package/dist/assets/{MailboxDetailView-QyNmt1Gv.js → MailboxDetailView-CTEjap3r.js} +1 -1
- package/dist/assets/{MemoryDrawer-BZsyD1dh.js → MemoryDrawer-RCduY0FV.js} +1 -1
- package/dist/assets/MemoryManager-B-p6-Bic.js +1 -0
- package/dist/assets/{ProcessMonitor-Bz0jZvHJ.js → ProcessMonitor-B9tpPo4r.js} +1 -1
- package/dist/assets/PromptJournalView-DVNqlac9.js +1 -0
- package/dist/assets/ProviderTestView-mmfpnAbZ.js +1 -0
- package/dist/assets/QueuePanel-BB9qozjm.js +1 -0
- package/dist/assets/{RefreshDebugView-_XPrBDq3.js → RefreshDebugView-CCCWzq29.js} +1 -1
- package/dist/assets/{RepositoryHistoryView-Wlnvi5r1.js → RepositoryHistoryView-RQVRkkUU.js} +2 -2
- package/dist/assets/RequirementIntakeView-D_JRhgzW.js +1 -0
- package/dist/assets/{SageTabs-qrBn3VQr.js → SageTabs--k2hQTvl.js} +2 -2
- package/dist/assets/SddFlowGraph-DKrrRXKy.js +1 -0
- package/dist/assets/SddHub-B5XO56oY.js +2 -0
- package/dist/assets/{SessionInspectView-CuRk2DS0.js → SessionInspectView-j3VJwXNi.js} +1 -1
- package/dist/assets/SessionList-CCVHBseu.js +1 -0
- package/dist/assets/{SessionsDashboard-CSkm28Bx.js → SessionsDashboard-DsM7sXQw.js} +1 -1
- package/dist/assets/SetupScreen-DeuR8Y8S.js +1 -0
- package/dist/assets/SkillDetailView-BeZyGIpW.js +3 -0
- package/dist/assets/TechStackView-CpSMRQE0.js +2 -0
- package/dist/assets/TerminalPanel-BVJ5w-5R.js +1 -0
- package/dist/assets/activity-BS2aW_NN.js +10 -0
- package/dist/assets/activity-CR2KFruY.js +10 -0
- package/dist/assets/activity-Cd0qM2Hx.js +10 -0
- package/dist/assets/activity-DyXRoY2s.js +10 -0
- package/dist/assets/activity-bBAOetvE.js +10 -0
- package/dist/assets/activity-fI3Jy_jD.js +10 -0
- package/dist/assets/activity-t6fUmVjo.js +10 -0
- package/dist/assets/{button-BbeB5Qm8.js → button-UuKTnoM-.js} +1 -1
- package/dist/assets/chat-9GLubejR.js +1 -0
- package/dist/assets/chat-B50ssTLh.js +1 -0
- package/dist/assets/chat-CDioiM1L.js +1 -0
- package/dist/assets/chat-Cll_3gXD.js +1 -0
- package/dist/assets/chat-Cqhc6jQa.js +1 -0
- package/dist/assets/chat-DN1MggWt.js +1 -0
- package/dist/assets/chat-fyvZyUZM.js +1 -0
- package/dist/assets/chat-store-uzGtJfDz.js +1 -0
- package/dist/assets/{codemap-activity-store-Ha7XbGgq.js → codemap-activity-store-WjfEZe4_.js} +1 -1
- package/dist/assets/common-Bjl7V12m.js +1 -0
- package/dist/assets/common-BtyQBZBN.js +1 -0
- package/dist/assets/common-D0QL7rwb.js +1 -0
- package/dist/assets/common-DJRPtYAt.js +1 -0
- package/dist/assets/common-DPPTV3yw.js +1 -0
- package/dist/assets/common-DvjdaRhB.js +1 -0
- package/dist/assets/common-opV6EoLd.js +1 -0
- package/dist/assets/config-store-P5_updTQ.js +21 -0
- package/dist/assets/{dialog-b-Ai37sa.js → dialog-BDUaV5gY.js} +1 -1
- package/dist/assets/{empty-state-pfuS5znr.js → empty-state-BzoEa04Q.js} +1 -1
- package/dist/assets/{fonts-DRGbd-AM.js → fonts-C303yVU_.js} +2 -2
- package/dist/assets/i18n-t7rIS4DB.js +3 -0
- package/dist/assets/index-B4ELbNoz.js +181 -0
- package/dist/assets/index-qdrakcnP.css +1 -0
- package/dist/assets/{input-BA6D2L3K.js → input-DMnC2O7-.js} +1 -1
- package/dist/assets/{mailbox-store-ZQO_Rv6E.js → mailbox-store-DyOOYbni.js} +1 -1
- package/dist/assets/roster-ws-szSqUkqP.js +1 -0
- package/dist/assets/settings-BMHZcBqe.js +1 -0
- package/dist/assets/settings-BQ5J8WXE.js +1 -0
- package/dist/assets/settings-BfNJfO4z.js +1 -0
- package/dist/assets/settings-ClDQ01ie.js +1 -0
- package/dist/assets/settings-DD31lC4f.js +1 -0
- package/dist/assets/settings-Da3EIcna.js +1 -0
- package/dist/assets/settings-Dl_QM2QZ.js +1 -0
- package/dist/assets/{shared-BFJvAYzX.js → shared-CLNEiW00.js} +1 -1
- package/dist/assets/stores-Cx52UOxM.js +7 -0
- package/dist/assets/toasts-3tM1krOo.js +1 -0
- package/dist/assets/toasts-BrHW33qA.js +1 -0
- package/dist/assets/toasts-Buww129h.js +1 -0
- package/dist/assets/toasts-CSN9Fy47.js +1 -0
- package/dist/assets/toasts-DOoYxbHd.js +1 -0
- package/dist/assets/toasts-DkDnbhs_.js +1 -0
- package/dist/assets/toasts-Jo4VH13n.js +1 -0
- package/dist/assets/ui-store-DI0iusYZ.js +1 -0
- package/dist/assets/{utils-CKsqCaP8.js → utils-B21Devim.js} +1 -1
- package/dist/assets/{vector-memory-panel-YWv6xcza.js → vector-memory-panel-DnX-ODHC.js} +1 -1
- package/dist/assets/{vendor-V3ydTHqN.js → vendor-BfBvt432.js} +28 -28
- package/dist/assets/{view-navigation-DTs4cSQ6.js → view-navigation-Cvrp_uJm.js} +1 -1
- package/dist/components/BrowserLivePane.d.ts +2 -0
- package/dist/components/ChangesView.d.ts +3 -1
- package/dist/components/ChatInput/chat-input-bars.d.ts +1 -1
- package/dist/components/ChatInput/image-attachments.d.ts +19 -2
- package/dist/components/ChatInput/skill-mention-picker.d.ts +10 -0
- package/dist/components/ChatInput/slash-routing.d.ts +18 -0
- package/dist/components/ChatInput/use-paste-drop.d.ts +3 -0
- package/dist/components/ChatInput/use-prompt-queue-view.d.ts +13 -0
- package/dist/components/ChatView/BackgroundShellStrip.d.ts +16 -0
- package/dist/components/ChatView/TerminalStrip.d.ts +8 -0
- package/dist/components/CodeMap.d.ts +0 -12
- package/dist/components/CustomRosterPanel.d.ts +0 -1
- package/dist/components/GoalPanel.d.ts +2 -1
- package/dist/components/ImageDiffView.d.ts +12 -0
- package/dist/components/KanbanTaskExecution.d.ts +64 -0
- package/dist/components/KanbanTaskInspector.d.ts +1 -1
- package/dist/components/MessageBubble/AttachmentGallery.d.ts +1 -1
- package/dist/components/MessageBubble/GeneratedImagePreview.d.ts +10 -0
- package/dist/components/OfficeMapCanvas.d.ts +0 -7
- package/dist/components/SessionTabBar/summaries.d.ts +4 -0
- package/dist/components/SettingsPanel/BrainSection.d.ts +1 -1
- package/dist/components/SettingsPanel/JevSection.d.ts +4 -0
- package/dist/components/SettingsPanel/LimitsSection.d.ts +7 -0
- package/dist/components/SettingsPanel/MCPSection.d.ts +1 -37
- package/dist/components/SettingsPanel/MCPServerCards.d.ts +67 -0
- package/dist/components/SettingsPanel/MCPServerDialog.d.ts +11 -0
- package/dist/components/SettingsPanel/OAuthLoginSection.d.ts +2 -0
- package/dist/components/SettingsPanel/PreferenceControls.d.ts +8 -0
- package/dist/components/SettingsPanel/ProviderSavedProfiles.d.ts +50 -0
- package/dist/components/SettingsPanel/ProviderSection.d.ts +2 -79
- package/dist/components/SettingsPanel/SettingsNavigation.d.ts +12 -0
- package/dist/components/SettingsPanel/brain-section-options.d.ts +2 -3
- package/dist/components/SettingsPanel/contracts.d.ts +1 -0
- package/dist/components/SettingsPanel/official-servers.d.ts +1 -0
- package/dist/components/SettingsPanel/provider-section-types.d.ts +79 -0
- package/dist/components/SettingsPanel/use-brain-section.d.ts +28 -0
- package/dist/components/SidePanel/SessionList.d.ts +1 -34
- package/dist/components/SidePanel/session-history.d.ts +61 -0
- package/dist/components/SkillDetailView.d.ts +1 -1
- package/dist/components/SystemPromptPresetEditor.d.ts +9 -0
- package/dist/components/TerminalPanel.d.ts +8 -1
- package/dist/components/WorkspaceDock.d.ts +2 -2
- package/dist/components/chronicle-event-detail.d.ts +51 -0
- package/dist/components/context-dashboard-sections.d.ts +79 -0
- package/dist/components/review/ReviewDiff.d.ts +21 -0
- package/dist/components/review/ReviewTray.d.ts +15 -0
- package/dist/components/review/review-diff-model.d.ts +31 -0
- package/dist/components/use-code-map-flow.d.ts +25 -0
- package/dist/components/use-office-map-canvas.d.ts +42 -0
- package/dist/components/use-office-map-topology.d.ts +31 -0
- package/dist/components/use-skill-detail.d.ts +177 -0
- package/dist/components/vector-memory-panel/model.d.ts +9 -0
- package/dist/hooks/use-live-browser.d.ts +7 -0
- package/dist/hooks/useProviderModels.d.ts +2 -0
- package/dist/hooks/useWebSocket.d.ts +4 -5
- package/dist/hooks/ws-handlers/brain-handlers.d.ts +18 -0
- package/dist/hooks/ws-handlers/goal-handlers.d.ts +9 -0
- package/dist/hooks/ws-handlers/misc-handlers.d.ts +2 -21
- package/dist/hooks/ws-handlers/prompt-queue-handlers.d.ts +18 -0
- package/dist/index.css +3013 -3013
- package/dist/index.html +19 -19
- package/dist/index.js +98758 -91674
- package/dist/lib/auth-operation.d.ts +5 -0
- package/dist/lib/compact-file-tree.d.ts +30 -0
- package/dist/lib/project-image.d.ts +26 -0
- package/dist/lib/provider-warm.d.ts +3 -0
- package/dist/lib/sdd-theme.d.ts +2 -2
- package/dist/lib/ws-client-actions.d.ts +2 -0
- package/dist/lib/ws-client-domain-methods.d.ts +1 -1
- package/dist/lib/ws-client-session-methods.d.ts +3 -1
- package/dist/lib/ws-client.d.ts +3 -3
- package/dist/stores/chat-lane-data.d.ts +153 -0
- package/dist/stores/chat-lanes.d.ts +3 -174
- package/dist/stores/chat-queue-helpers.d.ts +9 -0
- package/dist/stores/chat-store-types.d.ts +3 -0
- package/dist/stores/chat-store.d.ts +1 -1
- package/dist/stores/context-editor-store.d.ts +1 -1
- package/dist/stores/council-log-store.d.ts +4 -0
- package/dist/stores/fleet-transcript.d.ts +14 -0
- package/dist/stores/git-changes-store.d.ts +3 -0
- package/dist/stores/goal-run-store.d.ts +8 -0
- package/dist/stores/goal-state-store.d.ts +3 -0
- package/dist/stores/goal-store.d.ts +9 -11
- package/dist/stores/local-prefs-defaults.d.ts +340 -0
- package/dist/stores/local-prefs.d.ts +2 -318
- package/dist/stores/notification-store.d.ts +9 -0
- package/dist/stores/review-store.d.ts +54 -0
- package/dist/stores/session-activity.d.ts +33 -0
- package/dist/stores/session-tab-store.d.ts +1 -46
- package/dist/stores/terminal-strip-store.d.ts +26 -0
- package/dist/stores/ui-store-chrome.d.ts +1 -1
- package/dist/stores/ui-store-persist.d.ts +2 -2
- package/dist/stores/ui-store-types.d.ts +4 -4
- package/dist/stores/ui-store.d.ts +5 -5
- package/dist/types/brain.d.ts +4 -2
- package/dist/types/client-message.d.ts +132 -11
- package/dist/types/jev.d.ts +62 -0
- package/dist/types/prompt-queue.d.ts +55 -0
- package/dist/types/protocol-core.d.ts +4 -216
- package/dist/types/runtime.d.ts +6 -39
- package/dist/types/server-message-files.d.ts +22 -0
- package/dist/types/server-message-mcp.d.ts +30 -0
- package/dist/types/server-message-system.d.ts +114 -0
- package/dist/types/server-message.d.ts +4 -3
- package/dist/types/system.d.ts +4 -24
- package/package.json +11 -10
- package/dist/assets/AgentRosterView-D4TuVXe8.js +0 -12
- package/dist/assets/AudienceMemoryPanel-DHJM4rf1.js +0 -3
- package/dist/assets/ChangesView-CZ-nCe26.js +0 -1
- package/dist/assets/ChimeraReviewsView-CNeRLesP.js +0 -1
- package/dist/assets/ChronicleDashboard-CYELq7EO.js +0 -1
- package/dist/assets/CodeEditor-CLscjkIR.js +0 -2
- package/dist/assets/CodeMap-CdVy9Q7V.js +0 -1
- package/dist/assets/GoalView-Cepqrg9l.js +0 -1
- package/dist/assets/KanbanView-FSePkLch.js +0 -3
- package/dist/assets/MemoryManager-IHmhWn4P.js +0 -1
- package/dist/assets/PromptJournalView-Ct8cLcGU.js +0 -1
- package/dist/assets/ProviderTestView-Dy3k2bVu.js +0 -1
- package/dist/assets/QueuePanel-oVkTB68Q.js +0 -1
- package/dist/assets/RequirementIntakeView-Cj5arGFF.js +0 -1
- package/dist/assets/SddFlowGraph-DS8R2zEj.js +0 -1
- package/dist/assets/SddHub-C8pHQYSM.js +0 -2
- package/dist/assets/SessionList-BgRb1Mp4.js +0 -1
- package/dist/assets/SetupScreen-CNcJ_9O9.js +0 -1
- package/dist/assets/SkillDetailView-Bc9owpaX.js +0 -3
- package/dist/assets/TechStackView-BHiGCRBT.js +0 -2
- package/dist/assets/TerminalPanel-7VeXK8LB.js +0 -1
- package/dist/assets/activity-1wlPY6yi.js +0 -10
- package/dist/assets/activity-BVbAv0x7.js +0 -10
- package/dist/assets/activity-BmJTU8kX.js +0 -10
- package/dist/assets/activity-By_aWEsY.js +0 -10
- package/dist/assets/activity-Cps_29WN.js +0 -10
- package/dist/assets/activity-Du_fOnvF.js +0 -10
- package/dist/assets/activity-p_2o4eC6.js +0 -10
- package/dist/assets/chat-6dE2AJNN.js +0 -1
- package/dist/assets/chat-B3AJmhGD.js +0 -1
- package/dist/assets/chat-BHsbpaVt.js +0 -1
- package/dist/assets/chat-BITJe8-v.js +0 -1
- package/dist/assets/chat-U-Jjb8_k.js +0 -1
- package/dist/assets/chat-_Xp5fDnj.js +0 -1
- package/dist/assets/chat-mSbSzPl5.js +0 -1
- package/dist/assets/chat-store-C-PKlsCR.js +0 -1
- package/dist/assets/common-BXosnbIt.js +0 -1
- package/dist/assets/common-CzfPgMjC.js +0 -1
- package/dist/assets/common-DDDPz7Dv.js +0 -1
- package/dist/assets/common-DYx9oSoC.js +0 -1
- package/dist/assets/common-DZ-05t4z.js +0 -1
- package/dist/assets/common-MjX8fcng.js +0 -1
- package/dist/assets/common-ipsuLC3n.js +0 -1
- package/dist/assets/config-store-xSv1mChc.js +0 -21
- package/dist/assets/i18n--QdD6NCn.js +0 -3
- package/dist/assets/index-DiX5j910.css +0 -1
- package/dist/assets/index-FWwLmwjx.js +0 -177
- package/dist/assets/roster-ws-CxKDc-ET.js +0 -1
- package/dist/assets/settings-B5Jy-ObI.js +0 -1
- package/dist/assets/settings-BXTJJ4n-.js +0 -1
- package/dist/assets/settings-BcXAVecM.js +0 -1
- package/dist/assets/settings-ByPfZHGm.js +0 -1
- package/dist/assets/settings-CCe4iHcn.js +0 -1
- package/dist/assets/settings-D2GLiaDO.js +0 -1
- package/dist/assets/settings-gB9nKL3f.js +0 -1
- package/dist/assets/stores-2kakt8j9.js +0 -7
- package/dist/assets/toasts-BsmyGP95.js +0 -1
- package/dist/assets/toasts-CgXHu8ZB.js +0 -1
- package/dist/assets/toasts-DZ6HdKgG.js +0 -1
- package/dist/assets/toasts-DizCJjAR.js +0 -1
- package/dist/assets/toasts-NC2MT4uN.js +0 -1
- package/dist/assets/toasts-bPl097de.js +0 -1
- package/dist/assets/toasts-tCVo15mP.js +0 -1
- package/dist/assets/ui-store-DC3mkswy.js +0 -1
|
@@ -1,321 +1,5 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
* Local preference store — persisted in localStorage.
|
|
4
|
-
* Mirrors the TUI's SettingsPicker fields that don't require
|
|
5
|
-
* a live WS server connection. The server can still override
|
|
6
|
-
* these via WS events when connected.
|
|
7
|
-
*/
|
|
8
|
-
export interface LocalPrefs {
|
|
9
|
-
/** Allow delegated and autonomous subagents in this session. */
|
|
10
|
-
subagentsAllowed: boolean;
|
|
11
|
-
/** Server-derived lock: true after the first user message. */
|
|
12
|
-
subagentsPolicyLocked: boolean;
|
|
13
|
-
/** Autonomy mode */
|
|
14
|
-
autonomy: 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel';
|
|
15
|
-
/** Auto-proceed delay in ms */
|
|
16
|
-
autonomyDelayMs: number;
|
|
17
|
-
/** Stop auto-proceed after N iterations (0 = unlimited). */
|
|
18
|
-
autoProceedMaxIterations: number;
|
|
19
|
-
/** YOLO mode — bypass tool confirmations */
|
|
20
|
-
yolo: boolean;
|
|
21
|
-
/**
|
|
22
|
-
* Which kinds of damage still prompt while YOLO is on, keyed by
|
|
23
|
-
* `DestructiveKind`. A missing key means "still asks" — the fail-closed
|
|
24
|
-
* reading — so an older client that omits a newer kind cannot un-gate it.
|
|
25
|
-
*
|
|
26
|
-
* Machine-level, NOT session-scoped: unlike `yolo` (a per-tab mode), this
|
|
27
|
-
* answers what the agent may destroy unattended anywhere.
|
|
28
|
-
*/
|
|
29
|
-
yoloConfirm: Record<string, boolean>;
|
|
30
|
-
/** Maximum agent iterations per run */
|
|
31
|
-
maxIterations: number;
|
|
32
|
-
/** Chime on run completion */
|
|
33
|
-
chime: boolean;
|
|
34
|
-
/** Confirm before exit (Ctrl+C) */
|
|
35
|
-
confirmExit: boolean;
|
|
36
|
-
/** Fleet-chat verbosity (off | full) */
|
|
37
|
-
fleetChatVerbosity: FleetChatVerbosity;
|
|
38
|
-
/** Predict next steps after turn completes */
|
|
39
|
-
nextPrediction: boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Register the leader's agent-callable `nextsteps` tool alongside the
|
|
42
|
-
* `<nextsteps>` block it can already write. Persisted to
|
|
43
|
-
* `tools.nextsteps.enabled`; the tool registry is built at boot, so the
|
|
44
|
-
* change takes effect in the next session.
|
|
45
|
-
*/
|
|
46
|
-
nextStepsTool: boolean;
|
|
47
|
-
/** Global fallback model chain (entries: `model` or `provider/model`). */
|
|
48
|
-
fallbackModels: string[];
|
|
49
|
-
/** Named fallback chains selectable by setmodel/model routing. */
|
|
50
|
-
fallbackProfiles: Record<string, string[]>;
|
|
51
|
-
/** User-curated model references prioritized by pickers and smart fallbacks. */
|
|
52
|
-
favoriteModels: string[];
|
|
53
|
-
/** Provider-qualified models intentionally hidden from selection and fallback routing. */
|
|
54
|
-
disabledModels: string[];
|
|
55
|
-
/** Restrict auto-derived fallback chains to favorite models. */
|
|
56
|
-
favoriteModelsOnly: boolean;
|
|
57
|
-
/**
|
|
58
|
-
* Session-scoped subagent model lanes. Each live subagent holds one lane, so
|
|
59
|
-
* a fan-out runs on as many different provider/model pairs as there are
|
|
60
|
-
* pinned lanes. `lock` decides whether a lane outranks the provider/model the
|
|
61
|
-
* leader passed to `spawn_subagent` / `delegate`. Never written to
|
|
62
|
-
* config.json — the server journals it with the session.
|
|
63
|
-
*/
|
|
64
|
-
subagentModelPlan: {
|
|
65
|
-
enabled: boolean;
|
|
66
|
-
lock: boolean;
|
|
67
|
-
/** Run every plain subagent on the session's own model; outranks the lanes. */
|
|
68
|
-
followSessionModel?: boolean;
|
|
69
|
-
slots: Array<{
|
|
70
|
-
provider?: string;
|
|
71
|
-
model?: string;
|
|
72
|
-
tier?: string;
|
|
73
|
-
fallbackProfile?: string;
|
|
74
|
-
label?: string;
|
|
75
|
-
}>;
|
|
76
|
-
roles?: Record<string, {
|
|
77
|
-
provider?: string;
|
|
78
|
-
model?: string;
|
|
79
|
-
tier?: string;
|
|
80
|
-
fallbackProfile?: string;
|
|
81
|
-
}>;
|
|
82
|
-
};
|
|
83
|
-
/** Per-role/phase/default model routing matrix. */
|
|
84
|
-
modelMatrix: Record<string, {
|
|
85
|
-
provider?: string;
|
|
86
|
-
model?: string;
|
|
87
|
-
fallbackProfile?: string;
|
|
88
|
-
modelRuntime?: {
|
|
89
|
-
reasoning?: {
|
|
90
|
-
mode?: 'auto' | 'on' | 'off';
|
|
91
|
-
effort?: string;
|
|
92
|
-
preserve?: boolean;
|
|
93
|
-
};
|
|
94
|
-
cache?: {
|
|
95
|
-
ttl?: '5m' | '1h';
|
|
96
|
-
};
|
|
97
|
-
parameters?: Record<string, unknown>;
|
|
98
|
-
};
|
|
99
|
-
}>;
|
|
100
|
-
/**
|
|
101
|
-
* Deterministic cost tiers. A level binds a fallback profile, a spend budget
|
|
102
|
-
* and runtime overrides under one name; `routing` maps a role/phase/`*` to a
|
|
103
|
-
* level; `leader` governs how much authority the leader has over its own tier.
|
|
104
|
-
*/
|
|
105
|
-
modelTiers: {
|
|
106
|
-
enabled?: boolean;
|
|
107
|
-
default?: string;
|
|
108
|
-
levels?: Record<string, {
|
|
109
|
-
fallbackProfile?: string;
|
|
110
|
-
provider?: string;
|
|
111
|
-
model?: string;
|
|
112
|
-
maxCostUsd?: number;
|
|
113
|
-
maxIterations?: number;
|
|
114
|
-
maxToolCalls?: number;
|
|
115
|
-
maxTokens?: number;
|
|
116
|
-
timeoutMs?: number;
|
|
117
|
-
description?: string;
|
|
118
|
-
modelRuntime?: {
|
|
119
|
-
reasoning?: {
|
|
120
|
-
mode?: 'auto' | 'on' | 'off';
|
|
121
|
-
effort?: string;
|
|
122
|
-
preserve?: boolean;
|
|
123
|
-
};
|
|
124
|
-
cache?: {
|
|
125
|
-
ttl?: '5m' | '1h';
|
|
126
|
-
};
|
|
127
|
-
};
|
|
128
|
-
}>;
|
|
129
|
-
routing?: Record<string, string>;
|
|
130
|
-
leader?: {
|
|
131
|
-
mode?: 'off' | 'propose' | 'auto';
|
|
132
|
-
dwellTurns?: number;
|
|
133
|
-
minSavingsUsd?: number;
|
|
134
|
-
maxContextFillForSwitch?: number;
|
|
135
|
-
maxTier?: string;
|
|
136
|
-
};
|
|
137
|
-
};
|
|
138
|
-
/** Auto-derive a fallback chain from keyed providers when the list is empty. */
|
|
139
|
-
fallbackAuto: boolean;
|
|
140
|
-
/** Recurring provider/model blackout windows for autonomous routing. */
|
|
141
|
-
modelAvailabilitySchedule: import('@wrongstack/core/models').ModelBlackoutRule[];
|
|
142
|
-
featureMcp: boolean;
|
|
143
|
-
featurePlugins: boolean;
|
|
144
|
-
featureMemory: boolean;
|
|
145
|
-
featureSkills: boolean;
|
|
146
|
-
featureModelsRegistry: boolean;
|
|
147
|
-
indexOnStart: boolean;
|
|
148
|
-
/** Per-plugin enabled/disabled state. Keys are plugin names (e.g. "wstack-chimera"). */
|
|
149
|
-
pluginsEnabled: Record<string, boolean>;
|
|
150
|
-
contextAutoCompact: boolean;
|
|
151
|
-
/** Compactor strategy — matches core's config.context.strategy. */
|
|
152
|
-
contextStrategy: 'hybrid' | 'intelligent' | 'selective';
|
|
153
|
-
/** Context window mode — matches core's config.context.mode. */
|
|
154
|
-
contextMode: 'balanced' | 'frugal' | 'deep';
|
|
155
|
-
/** Token-saving mode — matches core's config.features.tokenSavingMode. */
|
|
156
|
-
tokenSavingTier: 'auto' | 'off' | 'minimal' | 'light' | 'medium' | 'aggressive';
|
|
157
|
-
/** Max concurrent subagents */
|
|
158
|
-
maxConcurrent: number;
|
|
159
|
-
/** Terminal title animation */
|
|
160
|
-
titleAnimation: boolean;
|
|
161
|
-
logLevel: 'debug' | 'info' | 'warn' | 'error';
|
|
162
|
-
/** Session audit detail — matches core's config.session.auditLevel. */
|
|
163
|
-
auditLevel: 'minimal' | 'standard' | 'full';
|
|
164
|
-
enhanceEnabled: boolean;
|
|
165
|
-
enhanceDelayMs: number;
|
|
166
|
-
/** Pre-refine grace countdown (ms) before the refiner call starts. */
|
|
167
|
-
enhanceCountdownMs: number;
|
|
168
|
-
enhanceLanguage: 'original' | 'english';
|
|
169
|
-
/** Provider id for goal refinement (`/goal set`). Empty = use session provider. */
|
|
170
|
-
refinerProvider: string;
|
|
171
|
-
/** Model id for goal refinement. Empty = use session model. */
|
|
172
|
-
refinerModel: string;
|
|
173
|
-
/** Named fallback profile for goal refinement. Empty = use refinerProvider+refinerModel or session defaults. */
|
|
174
|
-
refinerFallbackProfile: string;
|
|
175
|
-
/** TUI status-chip word (e.g. "thinking", "vibing"). */
|
|
176
|
-
thinkingWord: string;
|
|
177
|
-
/** TUI statusline density. */
|
|
178
|
-
statuslineMode: 'minimum' | 'detailed' | 'no-color';
|
|
179
|
-
/** TUI working-chip animation style. */
|
|
180
|
-
animationStyle: 'rainbow' | 'wave' | 'pulse' | 'dots' | 'breathe' | 'static' | 'cycle';
|
|
181
|
-
/** Show completed thinking/logic blocks in chat history */
|
|
182
|
-
showThinkingLogs: boolean;
|
|
183
|
-
/** Group consecutive tool calls into collapsible chips */
|
|
184
|
-
groupToolCalls: boolean;
|
|
185
|
-
/** Auto-collapse the chat input under the history when a session with
|
|
186
|
-
* messages loads (opt-in; off by default). When off, the input always
|
|
187
|
-
* starts expanded. Independent of the manual collapse/expand buttons. */
|
|
188
|
-
autoCollapseInput: boolean;
|
|
189
|
-
/** Show model reasoning/thinking blocks inline in the chat */
|
|
190
|
-
showModelReasoning: boolean;
|
|
191
|
-
/** Agent swarm panel placement: bottom, sidebar, or off */
|
|
192
|
-
showAgentSwarmPanel: 'bottom' | 'sidebar' | 'off';
|
|
193
|
-
/** Allow tools to access paths outside the project root (inverse of fsAccess). */
|
|
194
|
-
allowOutsideProjectRoot: boolean;
|
|
195
|
-
reasoningMode: 'auto' | 'on' | 'off';
|
|
196
|
-
reasoningEffort: string;
|
|
197
|
-
reasoningPreserve: boolean;
|
|
198
|
-
cacheTtl: 'default' | '5m' | '1h';
|
|
199
|
-
/** Process circuit breaker — gates bash/exec after repeated failures. */
|
|
200
|
-
breakerEnabled: boolean;
|
|
201
|
-
/** Auto kill/reset delay (ms) when the breaker trips. 0 = manual recovery. */
|
|
202
|
-
breakerAutoKillResetMs: number;
|
|
203
|
-
/** File-tool access scope. 'project' confines file tools to the project root (restart to apply). */
|
|
204
|
-
fsAccess: 'unrestricted' | 'project';
|
|
205
|
-
/** Raw SSE hex-dump to the server's stderr for provider debugging. */
|
|
206
|
-
debugStream: boolean;
|
|
207
|
-
hqEnabled: boolean;
|
|
208
|
-
hqUrl: string;
|
|
209
|
-
hqToken: string;
|
|
210
|
-
hqRawContent: boolean;
|
|
211
|
-
/** Plugin configured with a bot token (gates the whole section). */
|
|
212
|
-
tgConfigured: boolean;
|
|
213
|
-
tgSessionEnd: boolean;
|
|
214
|
-
tgDelegate: boolean;
|
|
215
|
-
/** Long-tool threshold in ms. 0 = disabled. */
|
|
216
|
-
tgLongToolMs: number;
|
|
217
|
-
/**
|
|
218
|
-
* Display-only UI language (BCP-47 code, e.g. `en`, `pt-BR`).
|
|
219
|
-
* Synced through prefs.update into shared Config.uiLocale so browser WebUI,
|
|
220
|
-
* desktop-hosted WebUI, and the desktop shell follow the same choice.
|
|
221
|
-
* Distinct from `enhanceLanguage` (a prompt-refinement pref).
|
|
222
|
-
*/
|
|
223
|
-
uiLocale: string;
|
|
224
|
-
/** How Chimera review findings are handled. */
|
|
225
|
-
chimeraAutoFix: 'off' | 'ask' | 'auto';
|
|
226
|
-
/** When true, the read tool includes codebase-index symbols in its output.
|
|
227
|
-
* Mirrors TUI field 42 (`readSymbols`) persisted as
|
|
228
|
-
* `autonomy.readAdvancedMode`. */
|
|
229
|
-
readSymbols: boolean;
|
|
230
|
-
/** When true, SAGE memory-inject blocks are surfaced in tool results.
|
|
231
|
-
* Mirrors TUI field 43 (`showSageMemoryInject`). */
|
|
232
|
-
showSageMemoryInject: boolean;
|
|
233
|
-
/** Minimum relation strength for SAGE memory injection. Mirrors TUI field
|
|
234
|
-
* 44 (`sageMemoryInjectThreshold`) persisted as
|
|
235
|
-
* `Sage.inject.relationFloor`. */
|
|
236
|
-
sageMemoryInjectThreshold: number;
|
|
237
|
-
/** Pre-refine grace countdown in SECONDS (TUI field 41). 0 = skip the
|
|
238
|
-
* countdown and run the refiner immediately. Presets:
|
|
239
|
-
* 0, 2, 3, 5, 8, 10. Distinct from `enhanceCountdownMs` (a TUI-internal
|
|
240
|
-
* ms value used by the simpleui RefinePanel animation). */
|
|
241
|
-
preRefineSeconds: number;
|
|
242
|
-
/** Minimum number of files before the multi-file diff summary footer
|
|
243
|
-
* renders above the per-file blocks. 0 disables the footer. Mirrors TUI
|
|
244
|
-
* field 21 (`multiDiffSummaryThreshold`). */
|
|
245
|
-
multiDiffSummaryThreshold: number;
|
|
246
|
-
/** Master enable for `wstack-chimera`. Defaults to true (matches plugin: `cfg.enabled !== false`). */
|
|
247
|
-
chimeraEnabled: boolean;
|
|
248
|
-
/** Override provider id for the review subagent. Empty = use session provider. */
|
|
249
|
-
chimeraProvider: string;
|
|
250
|
-
/** Override model id for the review subagent. Empty = use session model. */
|
|
251
|
-
chimeraModel: string;
|
|
252
|
-
/** Maximum number of files considered per review (default 15). */
|
|
253
|
-
chimeraMaxFiles: number;
|
|
254
|
-
/** Master enable for `wstack-auto-review`. Defaults to false (matches plugin: `cfg.enabled === true`). */
|
|
255
|
-
autoReviewEnabled: boolean;
|
|
256
|
-
/** Override provider id for the review subagent. Empty = resolve via fallbackProfile/effective chain. */
|
|
257
|
-
autoReviewProvider: string;
|
|
258
|
-
/** Override model id for the review subagent. Empty = resolve via fallbackProfile/effective chain. */
|
|
259
|
-
autoReviewModel: string;
|
|
260
|
-
/** Named fallback profile (from `config.fallbackProfiles`) used to derive provider/model + fallback chain. */
|
|
261
|
-
autoReviewFallbackProfile: string;
|
|
262
|
-
/** Starting-model policy for the selected auto-review profile. */
|
|
263
|
-
autoReviewModelSelection: 'round-robin' | 'random';
|
|
264
|
-
/** Explicit fallback chain (derived when no fallbackProfile is set, surfaced for visibility). */
|
|
265
|
-
autoReviewFallbackModels: string[];
|
|
266
|
-
/** Debounce window in ms — wait for quiet before firing review (default 15000). */
|
|
267
|
-
autoReviewDebounceMs: number;
|
|
268
|
-
/** Max files per review batch (default 15). */
|
|
269
|
-
autoReviewMaxFilesPerBatch: number;
|
|
270
|
-
/** Max concurrent in-flight reviews (default 2). */
|
|
271
|
-
autoReviewMaxConcurrentReviews: number;
|
|
272
|
-
/** Cascade severity threshold: when a review finds findings at or above this level, spawn follow-up agents. */
|
|
273
|
-
autoReviewCascadeOn: 'off' | 'critical' | 'high';
|
|
274
|
-
/**
|
|
275
|
-
* Master switch. When true AND the daemon at `wrongProxyUrl` is
|
|
276
|
-
* reachable, every provider's base URL flows through
|
|
277
|
-
* `${wrongProxyUrl}/proxy/<host><path>`. Excluded providers
|
|
278
|
-
* (openai-codex) flow through unchanged.
|
|
279
|
-
*/
|
|
280
|
-
wrongProxyEnabled: boolean;
|
|
281
|
-
/**
|
|
282
|
-
* Where the local proxy daemon listens. Default `http://localhost:3444`.
|
|
283
|
-
* User-editable via WebUI `IntegrationsSection` and TUI SettingsPicker.
|
|
284
|
-
* Periodic probe targets `<wrongProxyUrl>/api/health`; 2xx → active.
|
|
285
|
-
*/
|
|
286
|
-
wrongProxyUrl: string;
|
|
287
|
-
/** Master toggle for global keyboard shortcuts. Defaults to false. */
|
|
288
|
-
keyboardShortcuts: boolean;
|
|
289
|
-
/**
|
|
290
|
-
* Per-session overrides for the keys in `SESSION_SCOPED_PREF_KEYS`.
|
|
291
|
-
*
|
|
292
|
-
* The flat fields above are the EFFECTIVE view of the tab in front, so
|
|
293
|
-
* existing readers (`useLocalPrefs((s) => s.autonomy)`) keep working and
|
|
294
|
-
* automatically describe the right tab. This map is what makes them
|
|
295
|
-
* per-tab rather than one value the four tabs fight over.
|
|
296
|
-
*/
|
|
297
|
-
bySession: Record<string, Partial<LocalPrefs>>;
|
|
298
|
-
/**
|
|
299
|
-
* What a NEWLY opened tab inherits for the session-scoped keys — the last
|
|
300
|
-
* value the user chose, mirroring the server, which persists the same keys
|
|
301
|
-
* to config as the default a new tab starts from.
|
|
302
|
-
*/
|
|
303
|
-
sessionDefaults: Partial<LocalPrefs>;
|
|
304
|
-
/** Which session the flat fields currently describe. */
|
|
305
|
-
activeSessionId: string | null;
|
|
306
|
-
set: (patch: Partial<LocalPrefs>) => void;
|
|
307
|
-
/** Point the flat fields at a tab, materialising its overrides. */
|
|
308
|
-
bindSession: (sessionId: string | null) => void;
|
|
309
|
-
/**
|
|
310
|
-
* Apply a server-sent patch. `sessionId` names the tab it belongs to; a
|
|
311
|
-
* patch for a BACKGROUND tab updates that tab's override and leaves the
|
|
312
|
-
* fields the UI is rendering alone.
|
|
313
|
-
*/
|
|
314
|
-
applyRemote: (patch: Partial<LocalPrefs>, sessionId?: string | undefined) => void;
|
|
315
|
-
/** Forget a closed tab's overrides. */
|
|
316
|
-
forgetSession: (sessionId: string) => void;
|
|
317
|
-
reset: () => void;
|
|
318
|
-
}
|
|
1
|
+
import { type LocalPrefs } from './local-prefs-defaults.js';
|
|
2
|
+
export type { LocalPrefs } from './local-prefs-defaults.js';
|
|
319
3
|
/**
|
|
320
4
|
* Preferences that belong to ONE session rather than to the browser.
|
|
321
5
|
*
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export type NotificationVariant = 'success' | 'error' | 'warn' | 'info';
|
|
2
|
+
export type NotificationFilter = 'important' | 'all' | NotificationVariant;
|
|
2
3
|
export type ToastVariant = NotificationVariant;
|
|
4
|
+
export declare function matchesNotificationFilter(notification: Pick<AppNotification, 'variant'>, filter: NotificationFilter): boolean;
|
|
3
5
|
export interface NotificationAction {
|
|
4
6
|
label: string;
|
|
5
7
|
onClick: () => void;
|
|
@@ -28,6 +30,9 @@ export interface NotificationStoreState {
|
|
|
28
30
|
notifications: AppNotification[];
|
|
29
31
|
/** Ephemeral toasts currently rendered on screen */
|
|
30
32
|
toasts: ToastEntry[];
|
|
33
|
+
/** Shared by desktop and mobile notification menus. */
|
|
34
|
+
filter: NotificationFilter;
|
|
35
|
+
setFilter: (filter: NotificationFilter) => void;
|
|
31
36
|
/** Push a new toast + notification */
|
|
32
37
|
push: (entry: {
|
|
33
38
|
message: string;
|
|
@@ -51,6 +56,7 @@ export declare const useNotificationStore: import("zustand").UseBoundStore<Omit<
|
|
|
51
56
|
setState(state: NotificationStoreState | ((state: NotificationStoreState) => NotificationStoreState), replace: true): unknown;
|
|
52
57
|
persist: {
|
|
53
58
|
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
59
|
+
filter: NotificationFilter;
|
|
54
60
|
notifications: {
|
|
55
61
|
id: string;
|
|
56
62
|
message: string;
|
|
@@ -70,6 +76,7 @@ export declare const useNotificationStore: import("zustand").UseBoundStore<Omit<
|
|
|
70
76
|
onHydrate: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
71
77
|
onFinishHydration: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
72
78
|
getOptions: () => Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
79
|
+
filter: NotificationFilter;
|
|
73
80
|
notifications: {
|
|
74
81
|
id: string;
|
|
75
82
|
message: string;
|
|
@@ -104,6 +111,7 @@ export declare const useToastStore: import("zustand").UseBoundStore<Omit<import(
|
|
|
104
111
|
setState(state: NotificationStoreState | ((state: NotificationStoreState) => NotificationStoreState), replace: true): unknown;
|
|
105
112
|
persist: {
|
|
106
113
|
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
114
|
+
filter: NotificationFilter;
|
|
107
115
|
notifications: {
|
|
108
116
|
id: string;
|
|
109
117
|
message: string;
|
|
@@ -123,6 +131,7 @@ export declare const useToastStore: import("zustand").UseBoundStore<Omit<import(
|
|
|
123
131
|
onHydrate: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
124
132
|
onFinishHydration: (fn: (state: NotificationStoreState) => void) => () => void;
|
|
125
133
|
getOptions: () => Partial<import("zustand/middleware").PersistOptions<NotificationStoreState, {
|
|
134
|
+
filter: NotificationFilter;
|
|
126
135
|
notifications: {
|
|
127
136
|
id: string;
|
|
128
137
|
message: string;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A line comment left on the working-tree diff in the Changes view. Comments
|
|
3
|
+
* are project-scoped (`scope` = project root): the diff is the repository's,
|
|
4
|
+
* not a chat session's, so switching tabs keeps them and switching projects
|
|
5
|
+
* hides them.
|
|
6
|
+
*/
|
|
7
|
+
export interface ReviewComment {
|
|
8
|
+
id: string;
|
|
9
|
+
scope: string;
|
|
10
|
+
/** Repo-relative path, as the Changes panel lists it. */
|
|
11
|
+
path: string;
|
|
12
|
+
/** `new` for added/context lines, `old` for removed lines. */
|
|
13
|
+
side: 'old' | 'new';
|
|
14
|
+
/** 1-based line number on `side`. */
|
|
15
|
+
line: number;
|
|
16
|
+
/** The line's text when the comment was written — quoted in the review. */
|
|
17
|
+
lineText: string;
|
|
18
|
+
body: string;
|
|
19
|
+
createdAt: number;
|
|
20
|
+
}
|
|
21
|
+
interface ReviewState {
|
|
22
|
+
comments: ReviewComment[];
|
|
23
|
+
add: (comment: Omit<ReviewComment, 'id' | 'createdAt'>) => ReviewComment | null;
|
|
24
|
+
update: (id: string, body: string) => void;
|
|
25
|
+
remove: (id: string) => void;
|
|
26
|
+
/** Drop every comment in `scope` (after the review went to the composer). */
|
|
27
|
+
clearScope: (scope: string) => void;
|
|
28
|
+
}
|
|
29
|
+
export declare const useReviewStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<ReviewState>, "persist" | "setState"> & {
|
|
30
|
+
setState(partial: Partial<ReviewState> | ReviewState | ((state: ReviewState) => Partial<ReviewState> | ReviewState), replace?: false | undefined): unknown;
|
|
31
|
+
setState(state: ReviewState | ((state: ReviewState) => ReviewState), replace: true): unknown;
|
|
32
|
+
persist: {
|
|
33
|
+
setOptions: (options: Partial<import("zustand/middleware").PersistOptions<ReviewState, {
|
|
34
|
+
comments: ReviewComment[];
|
|
35
|
+
}, unknown>>) => void;
|
|
36
|
+
clearStorage: () => void;
|
|
37
|
+
rehydrate: () => Promise<void> | void;
|
|
38
|
+
hasHydrated: () => boolean;
|
|
39
|
+
onHydrate: (fn: (state: ReviewState) => void) => () => void;
|
|
40
|
+
onFinishHydration: (fn: (state: ReviewState) => void) => () => void;
|
|
41
|
+
getOptions: () => Partial<import("zustand/middleware").PersistOptions<ReviewState, {
|
|
42
|
+
comments: ReviewComment[];
|
|
43
|
+
}, unknown>>;
|
|
44
|
+
};
|
|
45
|
+
}>;
|
|
46
|
+
/** Comments in `scope`, ordered by file then line — the order the review reads in. */
|
|
47
|
+
export declare function scopedComments(comments: readonly ReviewComment[], scope: string): ReviewComment[];
|
|
48
|
+
/**
|
|
49
|
+
* The review as one message the agent can act on: each comment names its file
|
|
50
|
+
* and line, quotes the line it was written against, then the comment.
|
|
51
|
+
*/
|
|
52
|
+
export declare function formatReviewMessage(comments: readonly ReviewComment[]): string;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=review-store.d.ts.map
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/** A tab is "busy" when its own run is live or it owns a running subagent. */
|
|
2
|
+
export declare function isTabBusy(sessionId: string): boolean;
|
|
3
|
+
/** Everything a busy-tab warning needs to say about one session, gathered in
|
|
4
|
+
* one place. The close dialog and the switch-away toast render the same
|
|
5
|
+
* `lines`, so the two warnings cannot drift apart or go vague. */
|
|
6
|
+
export interface SessionActivityReport {
|
|
7
|
+
sessionId: string;
|
|
8
|
+
isBusy: boolean;
|
|
9
|
+
/** True when the tab holds nothing at all — no chat history, no agents
|
|
10
|
+
* (running or finished), no queued messages, no live run. Such a tab has
|
|
11
|
+
* nothing to lose and may close without asking. */
|
|
12
|
+
isEmpty: boolean;
|
|
13
|
+
leaderRunning: boolean;
|
|
14
|
+
runningAgents: Array<{
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
brief: string;
|
|
18
|
+
}>;
|
|
19
|
+
finishedAgents: number;
|
|
20
|
+
queuedMessages: number;
|
|
21
|
+
/** Pre-localized, factual inventory lines (no framing). */
|
|
22
|
+
lines: string[];
|
|
23
|
+
}
|
|
24
|
+
/** Complete inventory of what a session has in flight: its own run, every
|
|
25
|
+
* running subagent with a task preview, finished agents on record, queued
|
|
26
|
+
* messages. Reads the lane registries directly, like `isTabBusy`. */
|
|
27
|
+
export declare function describeSessionActivity(sessionId: string): SessionActivityReport;
|
|
28
|
+
/** Thorough, non-blocking notice fired when the foreground moves OFF a busy
|
|
29
|
+
* tab: the tab keeps running in its slot, and the user sees exactly what
|
|
30
|
+
* stays behind. Switching back is always one click, so this must inform,
|
|
31
|
+
* not block. */
|
|
32
|
+
export declare function notifyBusyTabLeftBehind(sessionId: string): void;
|
|
33
|
+
//# sourceMappingURL=session-activity.d.ts.map
|
|
@@ -1,22 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
* session-tab-store.ts — The four slots, and the only place a tab is opened,
|
|
3
|
-
* switched or closed.
|
|
4
|
-
*
|
|
5
|
-
* The model, stated plainly:
|
|
6
|
-
*
|
|
7
|
-
* - There are exactly FOUR slots. Never more, never a fifth "just for now".
|
|
8
|
-
* - A slot holds AT MOST one session, and a session sits in AT MOST one slot.
|
|
9
|
-
* Both directions are enforced here; nothing else is allowed to bind them.
|
|
10
|
-
* - Switching slots moves a pointer. It does not park, copy, restore or clear
|
|
11
|
-
* anything, because every slot's state already lives in its own lane
|
|
12
|
-
* (`chat-lanes.ts`, `session-lanes.ts`) whether or not it is on screen.
|
|
13
|
-
* - Closing a slot disposes that lane. A closed tab keeps nothing alive.
|
|
14
|
-
*
|
|
15
|
-
* Think of the four slots as four layouts side by side. What makes them
|
|
16
|
-
* side-by-side rather than one surface with four costumes is that no slot can
|
|
17
|
-
* name another slot's state: the lane registries are keyed by session id and
|
|
18
|
-
* every writer must name the session it is writing to.
|
|
19
|
-
*/
|
|
1
|
+
export { describeSessionActivity, isTabBusy } from './session-activity.js';
|
|
20
2
|
import { chatLane } from './chat-lanes';
|
|
21
3
|
export declare const MAX_OPEN_TABS = 4;
|
|
22
4
|
export declare const TAB_STORAGE_KEY = "wrongstack.open_session_tabs";
|
|
@@ -78,33 +60,6 @@ interface SessionTabState {
|
|
|
78
60
|
markSeen: (sessionId: string) => void;
|
|
79
61
|
setAttention: (sessionId: string, needsAttention: boolean) => void;
|
|
80
62
|
}
|
|
81
|
-
/** A tab is "busy" when its own run is live or it owns a running subagent. */
|
|
82
|
-
export declare function isTabBusy(sessionId: string): boolean;
|
|
83
|
-
/** Everything a busy-tab warning needs to say about one session, gathered in
|
|
84
|
-
* one place. The close dialog and the switch-away toast render the same
|
|
85
|
-
* `lines`, so the two warnings cannot drift apart or go vague. */
|
|
86
|
-
interface SessionActivityReport {
|
|
87
|
-
sessionId: string;
|
|
88
|
-
isBusy: boolean;
|
|
89
|
-
/** True when the tab holds nothing at all — no chat history, no agents
|
|
90
|
-
* (running or finished), no queued messages, no live run. Such a tab has
|
|
91
|
-
* nothing to lose and may close without asking. */
|
|
92
|
-
isEmpty: boolean;
|
|
93
|
-
leaderRunning: boolean;
|
|
94
|
-
runningAgents: Array<{
|
|
95
|
-
id: string;
|
|
96
|
-
name: string;
|
|
97
|
-
brief: string;
|
|
98
|
-
}>;
|
|
99
|
-
finishedAgents: number;
|
|
100
|
-
queuedMessages: number;
|
|
101
|
-
/** Pre-localized, factual inventory lines (no framing). */
|
|
102
|
-
lines: string[];
|
|
103
|
-
}
|
|
104
|
-
/** Complete inventory of what a session has in flight: its own run, every
|
|
105
|
-
* running subagent with a task preview, finished agents on record, queued
|
|
106
|
-
* messages. Reads the lane registries directly, like `isTabBusy`. */
|
|
107
|
-
export declare function describeSessionActivity(sessionId: string): SessionActivityReport;
|
|
108
63
|
/**
|
|
109
64
|
* Everything one slot owns, freed in one place.
|
|
110
65
|
*
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** Lines kept for the strip's peek. */
|
|
2
|
+
export declare const TERMINAL_PEEK_LINES = 12;
|
|
3
|
+
export interface TerminalSummary {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
status: 'starting' | 'running' | 'exited';
|
|
7
|
+
exitCode?: number | undefined;
|
|
8
|
+
lastOutputAt: number;
|
|
9
|
+
tail: string[];
|
|
10
|
+
}
|
|
11
|
+
interface TerminalStripState {
|
|
12
|
+
terminals: TerminalSummary[];
|
|
13
|
+
/** A terminal the strip asked the dock to bring to the front. */
|
|
14
|
+
focusRequest: {
|
|
15
|
+
id: string;
|
|
16
|
+
nonce: number;
|
|
17
|
+
} | null;
|
|
18
|
+
syncTabs(tabs: ReadonlyArray<Pick<TerminalSummary, 'id' | 'name' | 'status' | 'exitCode'>>): void;
|
|
19
|
+
appendOutput(id: string, lines: string[], at: number): void;
|
|
20
|
+
requestFocus(id: string): void;
|
|
21
|
+
clear(): void;
|
|
22
|
+
}
|
|
23
|
+
export declare const useTerminalStripStore: import("zustand").UseBoundStore<import("zustand").StoreApi<TerminalStripState>>;
|
|
24
|
+
export declare function noteTerminalOutput(id: string, data: string): void;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=terminal-strip-store.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { SessionChromeState, UIState } from './ui-store-types.js';
|
|
2
2
|
export declare function isDesktopShellStorageContext(): boolean;
|
|
3
3
|
export declare function homeNavigationStatePatch(options?: {
|
|
4
4
|
sidebarOpen?: boolean | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PersistOptions } from
|
|
2
|
-
import type { UIState } from
|
|
1
|
+
import type { PersistOptions } from 'zustand/middleware';
|
|
2
|
+
import type { UIState } from './ui-store-types.js';
|
|
3
3
|
export declare const uiPersistOptions: PersistOptions<UIState, Partial<UIState>>;
|
|
4
4
|
//# sourceMappingURL=ui-store-persist.d.ts.map
|
|
@@ -26,16 +26,16 @@ export type View = (typeof VIEWS)[number];
|
|
|
26
26
|
* when reading from localStorage so a stale value (e.g. 'context', a view
|
|
27
27
|
* removed in v3) lands on 'chat' rather than crashing the router. */
|
|
28
28
|
export declare function coerceView(value: unknown): View;
|
|
29
|
-
export declare const DOCK_SECTIONS: readonly ['goal', 'goal-state', 'fleet', 'work', 'worktrees', 'collab'];
|
|
29
|
+
export declare const DOCK_SECTIONS: readonly ['goal', 'goal-state', 'fleet', 'work', 'worktrees', 'collab', 'browser'];
|
|
30
30
|
export declare function coerceDockSection(value: unknown): DockSection | null;
|
|
31
|
-
export declare const SETTINGS_TABS: readonly ['general', 'fonts', 'provider', 'connection', 'agent', 'execution', 'fallbacks', 'routing', 'fleet', 'integrations', 'chimera', 'context', 'logs', 'security', 'display'];
|
|
31
|
+
export declare const SETTINGS_TABS: readonly ['general', 'fonts', 'provider', 'jev', 'connection', 'agent', 'execution', 'fallbacks', 'routing', 'fleet', 'integrations', 'chimera', 'context', 'logs', 'security', 'display'];
|
|
32
32
|
export declare function coerceSettingsTab(value: unknown): string;
|
|
33
33
|
/** Single source of truth for the secondary panel width bounds. */
|
|
34
34
|
export declare const SIDEBAR_MIN_WIDTH = 240;
|
|
35
35
|
export declare const SIDEBAR_MAX_WIDTH = 560;
|
|
36
36
|
export declare const SIDEBAR_DEFAULT_WIDTH = 304;
|
|
37
|
-
/** Sections of the WorkspaceDock
|
|
38
|
-
export type DockSection = 'goal' | 'goal-state' | 'fleet' | 'work' | 'worktrees' | 'collab';
|
|
37
|
+
/** Sections of the WorkspaceDock in the Session side panel. */
|
|
38
|
+
export type DockSection = 'goal' | 'goal-state' | 'fleet' | 'work' | 'worktrees' | 'collab' | 'browser';
|
|
39
39
|
export type WorkDashboardTab = 'todos' | 'tasks' | 'plan';
|
|
40
40
|
/**
|
|
41
41
|
* User-customized ActivityBar icon order (panels + views). Null = default
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export
|
|
2
|
-
export {
|
|
3
|
-
export {
|
|
4
|
-
export { uiPersistOptions } from
|
|
5
|
-
import type { UIState } from
|
|
1
|
+
export { ACTIVITIES, DOCK_SECTIONS, SETTINGS_TABS, SIDEBAR_DEFAULT_WIDTH, SIDEBAR_MAX_WIDTH, SIDEBAR_MIN_WIDTH, VIEWS, coerceActivity, coerceDockSection, coerceSettingsTab, coerceView, } from './ui-store-types.js';
|
|
2
|
+
export type { Activity, DockSection, InspectorTab, InspectorTarget, SessionChromeState, UIState, View, WorkDashboardTab, } from './ui-store-types.js';
|
|
3
|
+
export { defaultSessionChrome, defaultSkillsState, homeNavigationStatePatch, isDesktopShellStorageContext, parkChrome, readSessionChrome, } from './ui-store-chrome.js';
|
|
4
|
+
export { uiPersistOptions } from './ui-store-persist.js';
|
|
5
|
+
import type { UIState } from './ui-store-types.js';
|
|
6
6
|
export declare const useUIStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<UIState>, "persist" | "setState"> & {
|
|
7
7
|
setState(partial: Partial<UIState> | UIState | ((state: UIState) => Partial<UIState> | UIState), replace?: false | undefined): unknown;
|
|
8
8
|
setState(state: UIState | ((state: UIState) => UIState), replace: true): unknown;
|
package/dist/types/brain.d.ts
CHANGED
|
@@ -65,14 +65,16 @@ interface BrainHeuristicsPatchWire {
|
|
|
65
65
|
}
|
|
66
66
|
/** Effective single-LLM tier quality gate. */
|
|
67
67
|
interface BrainLlmWire {
|
|
68
|
-
|
|
68
|
+
/** Absent = the model's own output ceiling. */
|
|
69
|
+
maxTokens?: number | undefined;
|
|
69
70
|
rejectUncertain: boolean;
|
|
70
71
|
minConfidence: number;
|
|
71
72
|
denyIsTerminal: 'never' | 'when-decided' | 'always';
|
|
72
73
|
}
|
|
73
74
|
/** Writable single-LLM tier quality gate. */
|
|
74
75
|
interface BrainLlmPatchWire {
|
|
75
|
-
|
|
76
|
+
/** `null` clears the cap back to the model's own ceiling. */
|
|
77
|
+
maxTokens?: number | null | undefined;
|
|
76
78
|
rejectUncertain?: boolean | undefined;
|
|
77
79
|
minConfidence?: number | undefined;
|
|
78
80
|
denyIsTerminal?: 'never' | 'when-decided' | 'always' | undefined;
|