@wrongstack/webui 1.0.24 → 1.0.27
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-BJ-1SQOm.js +12 -0
- package/dist/assets/{AnalyticsDashboard-DgqJODVI.js → AnalyticsDashboard-FYrD8BFQ.js} +1 -1
- package/dist/assets/AudienceMemoryPanel-BghMZicW.js +3 -0
- package/dist/assets/ChangesView-B3uQtZGR.js +3 -0
- package/dist/assets/ChimeraReviewsView-CBRbTHGM.js +1 -0
- package/dist/assets/ChronicleDashboard-B1E-_u64.js +1 -0
- package/dist/assets/CodeEditor-CbcWuMGV.js +2 -0
- package/dist/assets/CodeMap-WOfveRTG.js +1 -0
- package/dist/assets/{CronJobsPanel-GTK038V9.js → CronJobsPanel-DOFA5WVq.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-DX4OEuyp.js → DeadCodeScanPanel-4ToPZX7e.js} +1 -1
- package/dist/assets/{DebugDashboard-CKp3sa_k.js → DebugDashboard-DAsNHSpG.js} +1 -1
- package/dist/assets/{DesignGalleryView-DVUTYaP6.js → DesignGalleryView-Dd5YnKhs.js} +1 -1
- package/dist/assets/GoalView-BaDGAXuQ.js +1 -0
- package/dist/assets/KanbanView-CG8bVhpR.js +3 -0
- package/dist/assets/{MailboxDetailView-CylnzTVc.js → MailboxDetailView-COxz-eEJ.js} +1 -1
- package/dist/assets/{MemoryDrawer-DJ0Y98Z8.js → MemoryDrawer-4lDXuHCi.js} +1 -1
- package/dist/assets/MemoryManager-DQlnpch1.js +1 -0
- package/dist/assets/{ProcessMonitor-BnQ3vJtn.js → ProcessMonitor-BUjfYqG3.js} +1 -1
- package/dist/assets/PromptJournalView-o2dmPrwg.js +1 -0
- package/dist/assets/ProviderTestView-5wNbI46L.js +1 -0
- package/dist/assets/QueuePanel-DP9D99DX.js +1 -0
- package/dist/assets/{RefreshDebugView-s6MyGpPq.js → RefreshDebugView-CB7_a_TI.js} +1 -1
- package/dist/assets/{RepositoryHistoryView-CWi_Zo3F.js → RepositoryHistoryView-C_zpYLY6.js} +2 -2
- package/dist/assets/RequirementIntakeView-CahKEHJn.js +1 -0
- package/dist/assets/{SageTabs-D6eTg3ix.js → SageTabs-5Z2PR11S.js} +2 -2
- package/dist/assets/{SddFlowGraph-B-ptkFX6.js → SddFlowGraph-DSoWnlIt.js} +1 -1
- package/dist/assets/SddHub-0q2EpwYz.js +2 -0
- package/dist/assets/{SessionInspectView-NSpj5WEN.js → SessionInspectView-CbDFR_tP.js} +1 -1
- package/dist/assets/SessionList-DhQK7JnP.js +1 -0
- package/dist/assets/{SessionsDashboard-mF4PzdKY.js → SessionsDashboard-DNLDczSd.js} +1 -1
- package/dist/assets/SetupScreen-C-hpHQQ9.js +1 -0
- package/dist/assets/{SkillDetailView-B9BFyB1i.js → SkillDetailView-Bir-Kdm4.js} +3 -3
- package/dist/assets/TechStackView-CJ3Abnwg.js +2 -0
- package/dist/assets/TerminalPanel-8WHNTeQK.js +1 -0
- package/dist/assets/activity-B9WjS_Cz.js +10 -0
- package/dist/assets/activity-BB7AHL0U.js +10 -0
- package/dist/assets/activity-Bd0XmdqX.js +10 -0
- package/dist/assets/activity-BvmJte2K.js +10 -0
- package/dist/assets/activity-DOEbDWqw.js +10 -0
- package/dist/assets/activity-beTxIN7V.js +10 -0
- package/dist/assets/activity-t-0KDhv5.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-BMwP_sS0.js +1 -0
- package/dist/assets/{codemap-activity-store-Ha7XbGgq.js → codemap-activity-store-WjfEZe4_.js} +1 -1
- package/dist/assets/{common-DvjdaRhB.js → common-2kj0c3pG.js} +1 -1
- package/dist/assets/{common-D0QL7rwb.js → common-BAvh8XBp.js} +1 -1
- package/dist/assets/{common-opV6EoLd.js → common-CKwGvEQD.js} +1 -1
- package/dist/assets/{common-DJRPtYAt.js → common-CUd7l34J.js} +1 -1
- package/dist/assets/{common-BtyQBZBN.js → common-DmS4Wp1i.js} +1 -1
- package/dist/assets/common-PC103akE.js +1 -0
- package/dist/assets/{common-Bjl7V12m.js → common-zatZ4s-Z.js} +1 -1
- package/dist/assets/config-store-Cb4iyhGv.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-CzTjKT4L.js +3 -0
- package/dist/assets/index-Ci22AODp.js +182 -0
- package/dist/assets/index-DfU9PQg8.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-Cv_PHlEV.js → roster-ws-D-DCMdrg.js} +1 -1
- package/dist/assets/settings-7W0ofid0.js +1 -0
- package/dist/assets/settings-BAArGYGW.js +1 -0
- package/dist/assets/settings-Btyr_M2v.js +1 -0
- package/dist/assets/settings-BwL_DVmc.js +1 -0
- package/dist/assets/settings-C7ybAkyi.js +1 -0
- package/dist/assets/settings-CgtL8eYb.js +1 -0
- package/dist/assets/settings-D57Fd8Z8.js +1 -0
- package/dist/assets/{shared-BFJvAYzX.js → shared-CLNEiW00.js} +1 -1
- package/dist/assets/stores-Svlibwo5.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-CpIPxhZp.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/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/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/FailedRunContinue.d.ts +7 -3
- package/dist/components/MessageBubble/GeneratedImagePreview.d.ts +10 -0
- package/dist/components/SessionTabBar/summaries.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/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 +1 -2
- package/dist/components/SettingsPanel/provider-section-types.d.ts +79 -0
- package/dist/components/SidePanel/SessionList.d.ts +1 -34
- package/dist/components/SidePanel/session-history.d.ts +61 -0
- package/dist/components/SystemPromptPresetEditor.d.ts +9 -0
- package/dist/components/TechStackView/AnalyzeControls.d.ts +25 -0
- package/dist/components/TechStackView/RemediationTab.d.ts +20 -0
- package/dist/components/TechStackView/TrendsTab.d.ts +17 -0
- package/dist/components/TerminalPanel.d.ts +8 -1
- package/dist/components/WorkspaceDock.d.ts +2 -2
- 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 +1 -1
- package/dist/components/use-office-map-topology.d.ts +31 -0
- package/dist/hooks/use-live-browser.d.ts +7 -0
- package/dist/hooks/useWebSocket.d.ts +1 -2
- package/dist/hooks/ws-handlers/chat-handlers.d.ts +12 -0
- package/dist/hooks/ws-handlers/goal-handlers.d.ts +2 -0
- package/dist/hooks/ws-handlers/mcp-status-handlers.d.ts +6 -0
- package/dist/hooks/ws-handlers/prompt-queue-handlers.d.ts +18 -0
- package/dist/hooks/ws-handlers/techstack-handlers.d.ts +7 -0
- package/dist/index.css +3013 -3013
- package/dist/index.html +19 -19
- package/dist/index.js +53010 -47407
- 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/ws-client-session-methods.d.ts +2 -0
- package/dist/lib/ws-client.d.ts +3 -0
- 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/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/index.d.ts +1 -1
- package/dist/stores/local-prefs-defaults.d.ts +341 -0
- package/dist/stores/local-prefs.d.ts +2 -318
- package/dist/stores/notification-store.d.ts +9 -0
- package/dist/stores/provider-quota-store.d.ts +5 -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/techstack-store.d.ts +140 -1
- package/dist/stores/terminal-strip-store.d.ts +26 -0
- package/dist/stores/types.d.ts +5 -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 +3 -3
- package/dist/stores/ui-store.d.ts +5 -5
- package/dist/types/brain.d.ts +4 -2
- package/dist/types/client-message.d.ts +122 -14
- package/dist/types/jev.d.ts +2 -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 +3 -38
- package/dist/types/server-message-files.d.ts +22 -0
- package/dist/types/server-message-mcp.d.ts +32 -0
- package/dist/types/server-message-system.d.ts +121 -0
- package/dist/types/server-message.d.ts +4 -3
- package/dist/types/system.d.ts +2 -24
- package/package.json +11 -9
- package/dist/assets/AgentRosterView-Dq8Xa0WK.js +0 -12
- package/dist/assets/AudienceMemoryPanel-BVGdDVTT.js +0 -3
- package/dist/assets/ChangesView-BVyLENBb.js +0 -1
- package/dist/assets/ChimeraReviewsView-CTuxzgTC.js +0 -1
- package/dist/assets/ChronicleDashboard-BRP7D6RZ.js +0 -1
- package/dist/assets/CodeEditor-k3z3M0NG.js +0 -2
- package/dist/assets/CodeMap-CvHNQZEF.js +0 -1
- package/dist/assets/GoalView-D8G8e8YG.js +0 -1
- package/dist/assets/KanbanView-BMXGDqGo.js +0 -3
- package/dist/assets/MemoryManager-DfcsYPUB.js +0 -1
- package/dist/assets/PromptJournalView-D7k8Yh5a.js +0 -1
- package/dist/assets/ProviderTestView-DSd6kkWT.js +0 -1
- package/dist/assets/QueuePanel-79KiyZWD.js +0 -1
- package/dist/assets/RequirementIntakeView-D_Ea20fx.js +0 -1
- package/dist/assets/SddHub-CSVfLGpr.js +0 -2
- package/dist/assets/SessionList-BYRCs1AK.js +0 -1
- package/dist/assets/SetupScreen-BUZeJSZi.js +0 -1
- package/dist/assets/TechStackView-CXJilX0M.js +0 -2
- package/dist/assets/TerminalPanel-CAXevSAa.js +0 -1
- package/dist/assets/activity-B3wutYIE.js +0 -10
- package/dist/assets/activity-Be03cc7g.js +0 -10
- package/dist/assets/activity-CiYZ3y4e.js +0 -10
- package/dist/assets/activity-CmIA2MhR.js +0 -10
- package/dist/assets/activity-Cp5GhldB.js +0 -10
- package/dist/assets/activity-DFCf7l5d.js +0 -10
- package/dist/assets/activity-EbNUY7Ci.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-C7InoWAO.js +0 -1
- package/dist/assets/common-DPPTV3yw.js +0 -1
- package/dist/assets/config-store-BbL0WxLE.js +0 -21
- package/dist/assets/i18n-Dv97urcO.js +0 -3
- package/dist/assets/index-CON0Nbm4.css +0 -1
- package/dist/assets/index-DX6tHUzs.js +0 -177
- package/dist/assets/settings-BCvuzOJ6.js +0 -1
- package/dist/assets/settings-DMPKd-4K.js +0 -1
- package/dist/assets/settings-DxQ2452f.js +0 -1
- package/dist/assets/settings-Dz3StaVx.js +0 -1
- package/dist/assets/settings-EBW1mlXc.js +0 -1
- package/dist/assets/settings-Er2LHp9d.js +0 -1
- package/dist/assets/settings-EzznCDaX.js +0 -1
- package/dist/assets/stores-DXn5tdr7.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-DxDwFHNK.js +0 -1
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
import type { FleetChatVerbosity } from '@wrongstack/core/types';
|
|
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
|
+
* User-chosen limits (`Config.limits`). Every field is optional; an unset
|
|
102
|
+
* field means no limit — the model, catalog or provider decides.
|
|
103
|
+
*/
|
|
104
|
+
limits: {
|
|
105
|
+
responseOutputTokens?: number;
|
|
106
|
+
toolOutputPreviewBytes?: number;
|
|
107
|
+
fetchBytes?: number;
|
|
108
|
+
projectInstructionsChars?: number;
|
|
109
|
+
memoryInjectChars?: number;
|
|
110
|
+
historyMessages?: number;
|
|
111
|
+
subagentResultChars?: number;
|
|
112
|
+
subagentDefaultBudget?: {
|
|
113
|
+
maxIterations?: number;
|
|
114
|
+
maxToolCalls?: number;
|
|
115
|
+
timeoutMs?: number;
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
/**
|
|
119
|
+
* Deterministic cost tiers. A level binds a fallback profile, a spend budget
|
|
120
|
+
* and runtime overrides under one name; `routing` maps a role/phase/`*` to a
|
|
121
|
+
* level; `leader` governs how much authority the leader has over its own tier.
|
|
122
|
+
*/
|
|
123
|
+
modelTiers: {
|
|
124
|
+
enabled?: boolean;
|
|
125
|
+
default?: string;
|
|
126
|
+
levels?: Record<string, {
|
|
127
|
+
fallbackProfile?: string;
|
|
128
|
+
provider?: string;
|
|
129
|
+
model?: string;
|
|
130
|
+
maxCostUsd?: number;
|
|
131
|
+
maxIterations?: number;
|
|
132
|
+
maxToolCalls?: number;
|
|
133
|
+
maxTokens?: number;
|
|
134
|
+
timeoutMs?: number;
|
|
135
|
+
description?: string;
|
|
136
|
+
modelRuntime?: {
|
|
137
|
+
reasoning?: {
|
|
138
|
+
mode?: 'auto' | 'on' | 'off';
|
|
139
|
+
effort?: string;
|
|
140
|
+
preserve?: boolean;
|
|
141
|
+
};
|
|
142
|
+
cache?: {
|
|
143
|
+
ttl?: '5m' | '1h';
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
}>;
|
|
147
|
+
routing?: Record<string, string>;
|
|
148
|
+
leader?: {
|
|
149
|
+
mode?: 'off' | 'propose' | 'auto';
|
|
150
|
+
dwellTurns?: number;
|
|
151
|
+
minSavingsUsd?: number;
|
|
152
|
+
maxContextFillForSwitch?: number;
|
|
153
|
+
maxTier?: string;
|
|
154
|
+
};
|
|
155
|
+
};
|
|
156
|
+
/** Auto-derive a fallback chain from keyed providers when the list is empty. */
|
|
157
|
+
fallbackAuto: boolean;
|
|
158
|
+
/** Recurring provider/model blackout windows for autonomous routing. */
|
|
159
|
+
modelAvailabilitySchedule: import('@wrongstack/core/models').ModelBlackoutRule[];
|
|
160
|
+
featureMcp: boolean;
|
|
161
|
+
featurePlugins: boolean;
|
|
162
|
+
featureMemory: boolean;
|
|
163
|
+
featureSkills: boolean;
|
|
164
|
+
featureModelsRegistry: boolean;
|
|
165
|
+
featureToolCoach: boolean;
|
|
166
|
+
indexOnStart: boolean;
|
|
167
|
+
/** Per-plugin enabled/disabled state. Keys are plugin names (e.g. "wstack-chimera"). */
|
|
168
|
+
pluginsEnabled: Record<string, boolean>;
|
|
169
|
+
contextAutoCompact: boolean;
|
|
170
|
+
/** Compactor strategy — matches core's config.context.strategy. */
|
|
171
|
+
contextStrategy: 'hybrid' | 'intelligent' | 'selective';
|
|
172
|
+
/** Context window mode — matches core's config.context.mode. */
|
|
173
|
+
contextMode: 'balanced' | 'frugal' | 'deep';
|
|
174
|
+
/** Token-saving mode — matches core's config.features.tokenSavingMode. */
|
|
175
|
+
tokenSavingTier: 'auto' | 'off' | 'minimal' | 'light' | 'medium' | 'aggressive';
|
|
176
|
+
/** Max concurrent subagents */
|
|
177
|
+
maxConcurrent: number;
|
|
178
|
+
/** Terminal title animation */
|
|
179
|
+
titleAnimation: boolean;
|
|
180
|
+
logLevel: 'debug' | 'info' | 'warn' | 'error';
|
|
181
|
+
/** Session audit detail — matches core's config.session.auditLevel. */
|
|
182
|
+
auditLevel: 'minimal' | 'standard' | 'full';
|
|
183
|
+
enhanceEnabled: boolean;
|
|
184
|
+
enhanceDelayMs: number;
|
|
185
|
+
/** Pre-refine grace countdown (ms) before the refiner call starts. */
|
|
186
|
+
enhanceCountdownMs: number;
|
|
187
|
+
enhanceLanguage: 'original' | 'english';
|
|
188
|
+
/** Provider id for goal refinement (`/goal set`). Empty = use session provider. */
|
|
189
|
+
refinerProvider: string;
|
|
190
|
+
/** Model id for goal refinement. Empty = use session model. */
|
|
191
|
+
refinerModel: string;
|
|
192
|
+
/** Named fallback profile for goal refinement. Empty = use refinerProvider+refinerModel or session defaults. */
|
|
193
|
+
refinerFallbackProfile: string;
|
|
194
|
+
/** TUI status-chip word (e.g. "thinking", "vibing"). */
|
|
195
|
+
thinkingWord: string;
|
|
196
|
+
/** TUI statusline density. */
|
|
197
|
+
statuslineMode: 'minimum' | 'detailed' | 'no-color';
|
|
198
|
+
/** TUI working-chip animation style. */
|
|
199
|
+
animationStyle: 'rainbow' | 'wave' | 'pulse' | 'dots' | 'breathe' | 'static' | 'cycle';
|
|
200
|
+
/** Show completed thinking/logic blocks in chat history */
|
|
201
|
+
showThinkingLogs: boolean;
|
|
202
|
+
/** Group consecutive tool calls into collapsible chips */
|
|
203
|
+
groupToolCalls: boolean;
|
|
204
|
+
/** Auto-collapse the chat input under the history when a session with
|
|
205
|
+
* messages loads (opt-in; off by default). When off, the input always
|
|
206
|
+
* starts expanded. Independent of the manual collapse/expand buttons. */
|
|
207
|
+
autoCollapseInput: boolean;
|
|
208
|
+
/** Show model reasoning/thinking blocks inline in the chat */
|
|
209
|
+
showModelReasoning: boolean;
|
|
210
|
+
/** Agent swarm panel placement: bottom, sidebar, or off */
|
|
211
|
+
showAgentSwarmPanel: 'bottom' | 'sidebar' | 'off';
|
|
212
|
+
/** Allow tools to access paths outside the project root (inverse of fsAccess). */
|
|
213
|
+
allowOutsideProjectRoot: boolean;
|
|
214
|
+
reasoningMode: 'auto' | 'on' | 'off';
|
|
215
|
+
reasoningEffort: string;
|
|
216
|
+
reasoningPreserve: boolean;
|
|
217
|
+
cacheTtl: 'default' | '5m' | '1h';
|
|
218
|
+
/** Process circuit breaker — gates bash/exec after repeated failures. */
|
|
219
|
+
breakerEnabled: boolean;
|
|
220
|
+
/** Auto kill/reset delay (ms) when the breaker trips. 0 = manual recovery. */
|
|
221
|
+
breakerAutoKillResetMs: number;
|
|
222
|
+
/** File-tool access scope. 'project' confines file tools to the project root (restart to apply). */
|
|
223
|
+
fsAccess: 'unrestricted' | 'project';
|
|
224
|
+
/** Raw SSE hex-dump to the server's stderr for provider debugging. */
|
|
225
|
+
debugStream: boolean;
|
|
226
|
+
hqEnabled: boolean;
|
|
227
|
+
hqUrl: string;
|
|
228
|
+
hqToken: string;
|
|
229
|
+
hqRawContent: boolean;
|
|
230
|
+
/** Plugin configured with a bot token (gates the whole section). */
|
|
231
|
+
tgConfigured: boolean;
|
|
232
|
+
tgSessionEnd: boolean;
|
|
233
|
+
tgDelegate: boolean;
|
|
234
|
+
/** Long-tool threshold in ms. 0 = disabled. */
|
|
235
|
+
tgLongToolMs: number;
|
|
236
|
+
/**
|
|
237
|
+
* Display-only UI language (BCP-47 code, e.g. `en`, `pt-BR`).
|
|
238
|
+
* Synced through prefs.update into shared Config.uiLocale so browser WebUI,
|
|
239
|
+
* desktop-hosted WebUI, and the desktop shell follow the same choice.
|
|
240
|
+
* Distinct from `enhanceLanguage` (a prompt-refinement pref).
|
|
241
|
+
*/
|
|
242
|
+
uiLocale: string;
|
|
243
|
+
/** How Chimera review findings are handled. */
|
|
244
|
+
chimeraAutoFix: 'off' | 'ask' | 'auto';
|
|
245
|
+
/** When true, the read tool includes codebase-index symbols in its output.
|
|
246
|
+
* Mirrors TUI field 42 (`readSymbols`) persisted as
|
|
247
|
+
* `autonomy.readAdvancedMode`. */
|
|
248
|
+
readSymbols: boolean;
|
|
249
|
+
/** When true, SAGE memory-inject blocks are surfaced in tool results.
|
|
250
|
+
* Mirrors TUI field 43 (`showSageMemoryInject`). */
|
|
251
|
+
showSageMemoryInject: boolean;
|
|
252
|
+
/** Minimum relation strength for SAGE memory injection. Mirrors TUI field
|
|
253
|
+
* 44 (`sageMemoryInjectThreshold`) persisted as
|
|
254
|
+
* `Sage.inject.relationFloor`. */
|
|
255
|
+
sageMemoryInjectThreshold: number;
|
|
256
|
+
/** Pre-refine grace countdown in SECONDS (TUI field 41). 0 = skip the
|
|
257
|
+
* countdown and run the refiner immediately. Presets:
|
|
258
|
+
* 0, 2, 3, 5, 8, 10. Distinct from `enhanceCountdownMs` (a TUI-internal
|
|
259
|
+
* ms value used by the simpleui RefinePanel animation). */
|
|
260
|
+
preRefineSeconds: number;
|
|
261
|
+
/** Minimum number of files before the multi-file diff summary footer
|
|
262
|
+
* renders above the per-file blocks. 0 disables the footer. Mirrors TUI
|
|
263
|
+
* field 21 (`multiDiffSummaryThreshold`). */
|
|
264
|
+
multiDiffSummaryThreshold: number;
|
|
265
|
+
/** Master enable for `wstack-chimera`. Defaults to true (matches plugin: `cfg.enabled !== false`). */
|
|
266
|
+
chimeraEnabled: boolean;
|
|
267
|
+
/** Override provider id for the review subagent. Empty = use session provider. */
|
|
268
|
+
chimeraProvider: string;
|
|
269
|
+
/** Override model id for the review subagent. Empty = use session model. */
|
|
270
|
+
chimeraModel: string;
|
|
271
|
+
/** Maximum number of files considered per review (default 15). */
|
|
272
|
+
chimeraMaxFiles: number;
|
|
273
|
+
/** Master enable for `wstack-auto-review`. Defaults to true (matches plugin: `cfg.enabled !== false`). */
|
|
274
|
+
autoReviewEnabled: boolean;
|
|
275
|
+
/** Override provider id for the review subagent. Empty = resolve via fallbackProfile/effective chain. */
|
|
276
|
+
autoReviewProvider: string;
|
|
277
|
+
/** Override model id for the review subagent. Empty = resolve via fallbackProfile/effective chain. */
|
|
278
|
+
autoReviewModel: string;
|
|
279
|
+
/** Named fallback profile (from `config.fallbackProfiles`) used to derive provider/model + fallback chain. */
|
|
280
|
+
autoReviewFallbackProfile: string;
|
|
281
|
+
/** Starting-model policy for the selected auto-review profile. */
|
|
282
|
+
autoReviewModelSelection: 'round-robin' | 'random';
|
|
283
|
+
/** Explicit fallback chain (derived when no fallbackProfile is set, surfaced for visibility). */
|
|
284
|
+
autoReviewFallbackModels: string[];
|
|
285
|
+
/** Debounce window in ms — wait for quiet before firing review (default 15000). */
|
|
286
|
+
autoReviewDebounceMs: number;
|
|
287
|
+
/** Max files per review batch (default 15). */
|
|
288
|
+
autoReviewMaxFilesPerBatch: number;
|
|
289
|
+
/** Max concurrent in-flight reviews (default 2). */
|
|
290
|
+
autoReviewMaxConcurrentReviews: number;
|
|
291
|
+
/** Cascade severity threshold: when a review finds findings at or above this level, spawn follow-up agents. */
|
|
292
|
+
autoReviewCascadeOn: 'off' | 'critical' | 'high';
|
|
293
|
+
/**
|
|
294
|
+
* Master switch. When true AND the daemon at `wrongProxyUrl` is
|
|
295
|
+
* reachable, every provider's base URL flows through
|
|
296
|
+
* `${wrongProxyUrl}/proxy/<host><path>`. Excluded providers
|
|
297
|
+
* (openai-codex) flow through unchanged.
|
|
298
|
+
*/
|
|
299
|
+
wrongProxyEnabled: boolean;
|
|
300
|
+
/**
|
|
301
|
+
* Where the local proxy daemon listens. Default `http://localhost:3444`.
|
|
302
|
+
* User-editable via WebUI `IntegrationsSection` and TUI SettingsPicker.
|
|
303
|
+
* Periodic probe targets `<wrongProxyUrl>/api/health`; 2xx → active.
|
|
304
|
+
*/
|
|
305
|
+
wrongProxyUrl: string;
|
|
306
|
+
/** Master toggle for global keyboard shortcuts. Defaults to false. */
|
|
307
|
+
keyboardShortcuts: boolean;
|
|
308
|
+
/**
|
|
309
|
+
* Per-session overrides for the keys in `SESSION_SCOPED_PREF_KEYS`.
|
|
310
|
+
*
|
|
311
|
+
* The flat fields above are the EFFECTIVE view of the tab in front, so
|
|
312
|
+
* existing readers (`useLocalPrefs((s) => s.autonomy)`) keep working and
|
|
313
|
+
* automatically describe the right tab. This map is what makes them
|
|
314
|
+
* per-tab rather than one value the four tabs fight over.
|
|
315
|
+
*/
|
|
316
|
+
bySession: Record<string, Partial<LocalPrefs>>;
|
|
317
|
+
/**
|
|
318
|
+
* What a NEWLY opened tab inherits for the session-scoped keys — the last
|
|
319
|
+
* value the user chose, mirroring the server, which persists the same keys
|
|
320
|
+
* to config as the default a new tab starts from.
|
|
321
|
+
*/
|
|
322
|
+
sessionDefaults: Partial<LocalPrefs>;
|
|
323
|
+
/** Which session the flat fields currently describe. */
|
|
324
|
+
activeSessionId: string | null;
|
|
325
|
+
set: (patch: Partial<LocalPrefs>) => void;
|
|
326
|
+
/** Point the flat fields at a tab, materialising its overrides. */
|
|
327
|
+
bindSession: (sessionId: string | null) => void;
|
|
328
|
+
/**
|
|
329
|
+
* Apply a server-sent patch. `sessionId` names the tab it belongs to; a
|
|
330
|
+
* patch for a BACKGROUND tab updates that tab's override and leaves the
|
|
331
|
+
* fields the UI is rendering alone.
|
|
332
|
+
*/
|
|
333
|
+
applyRemote: (patch: Partial<LocalPrefs>, sessionId?: string | undefined) => void;
|
|
334
|
+
/** Forget a closed tab's overrides. */
|
|
335
|
+
forgetSession: (sessionId: string) => void;
|
|
336
|
+
reset: () => void;
|
|
337
|
+
}
|
|
338
|
+
/** The data half of the store — everything except the action methods. */
|
|
339
|
+
export type LocalPrefsData = Omit<LocalPrefs, 'set' | 'reset' | 'bindSession' | 'applyRemote' | 'forgetSession'>;
|
|
340
|
+
export declare const DEFAULTS: LocalPrefsData;
|
|
341
|
+
//# sourceMappingURL=local-prefs-defaults.d.ts.map
|
|
@@ -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
|
*
|