@wrongstack/tui 0.302.2 → 0.305.0
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/app-action-type.d.ts +14 -0
- package/dist/app-props.d.ts +16 -2
- package/dist/app-settings-type.d.ts +1 -1
- package/dist/app-state.d.ts +7 -0
- package/dist/components/design-picker.d.ts +3 -0
- package/dist/components/kanban-panel.d.ts +9 -0
- package/dist/components/resume-picker.d.ts +4 -0
- package/dist/components/settings-picker-model.d.ts +2 -3
- package/dist/components/theme-picker.d.ts +21 -0
- package/dist/components/tools-picker.d.ts +1 -0
- package/dist/hooks/use-active-theme.d.ts +14 -0
- package/dist/hooks/use-app-picker-keys.d.ts +2 -1
- package/dist/hooks/use-picker-keys-types.d.ts +7 -0
- package/dist/hooks/use-theme-state.d.ts +16 -0
- package/dist/hooks/use-windowed-picker.d.ts +68 -0
- package/dist/index.js +2418 -1448
- package/dist/input-validation/action-types.d.ts +1 -1
- package/dist/kanban-audit.d.ts +18 -5
- package/dist/kanban-slash.d.ts +9 -2
- package/dist/reducers/composer.d.ts +1 -1
- package/dist/reducers/helpers.d.ts +1 -1
- package/dist/run-tui-options.d.ts +11 -1
- package/dist/theme.d.ts +42 -0
- package/dist/ui-contracts.d.ts +1 -0
- package/dist/workbench-slash.d.ts +9 -0
- package/package.json +7 -7
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Known reducer action types — exact, compile-time checked allow-list. */
|
|
2
|
-
export declare const ALLOWED_ACTION_TYPES: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "authBusy", "authCatalog", "authClose", "authConfirmEnd", "authConfirmStart", "authFilter", "authFlowDone", "authFlowLog", "authFlowStart", "authHint", "authMove", "authOpen", "authPromptChange", "authPromptEnd", "authPromptStart", "authProviders", "authView", "autonomyPickerClose", "autonomyPickerHint", "autonomyPickerMove", "autonomyPickerOpen", "brainBusy", "brainClose", "brainHint", "brainMove", "brainOpen", "brainPromptClear", "brainPromptSet", "brainRiskChange", "brainRowMove", "brainSetLog", "brainSettingsLoaded", "brainStatus", "brainView", "checkpointReceived", "clearConfirmClose", "clearConfirmOpen", "clearConfirmSetValue", "clearHistory", "clearInput", "clearInputHistory", "closeAllPanels", "collabBugFound", "collabEvalComplete", "sidebarScroll", "sidebarScrollReset", "toggleSidebarFocus", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "eternalStage", "exitConfirmClose", "exitConfirmOpen", "fKeyPickerClose", "fKeyPickerMove", "fKeyPickerOpen", "fleetBatch", "fleetBudgetExtended", "fleetBudgetWarning", "fleetConcurrency", "fleetCost", "fleetCtxPct", "fleetDelta", "fleetDone", "fleetMessage", "fleetRemove", "fleetSeed", "fleetSpawn", "fleetStart", "fleetTool", "fleetToolEnd", "fleetToolStart", "fleetUsage", "goalRunElapsed", "goalRunInit", "goalRunMonitorToggle", "goalRunPhaseUpdate", "goalRunReset", "goalRunRunningPhases", "goalRunTaskActive", "goalSummary", "helpClose", "helpFilter", "helpHint", "helpMove", "helpOpen", "hint", "historyDown", "historyPush", "historyUp", "interrupt", "leaderCtxPct", "leaderIterEnd", "leaderIterStart", "leaderToolEnd", "leaderToolStart", "mcpPickerBusy", "mcpPickerClose", "mcpPickerHint", "mcpPickerMove", "mcpPickerOpen", "mcpPickerSetItems", "modePickerClose", "modePickerHint", "modePickerMove", "modePickerOpen", "modelPickerBack", "modelPickerClose", "modelPickerHint", "modelPickerMove", "modelPickerOpen", "modelPickerPickProvider", "modelPickerSearch", "pickerClose", "pickerMove", "pickerOpen", "pickerSetMatches", "pluginPickerBusy", "pluginPickerClose", "pluginPickerHint", "pluginPickerMove", "pluginPickerOpen", "pluginPickerSetItems", "projectPickerClose", "projectPickerFilter", "projectPickerHint", "projectPickerMove", "projectPickerOpen", "promptPickerCategory", "promptPickerClose", "promptPickerMove", "promptPickerOpen", "queueClear", "queueDelete", "queueToggleRefine", "refineCountdownClose", "refineCountdownOpen", "refineFailureClose", "refineFailureOpen", "replaceHistory", "resetContextChip", "resetInterrupts", "resumePickerBusy", "resumePickerClose", "resumePickerError", "resumePickerHint", "resumePickerMove", "resumePickerOpen", "rewindOverlayClose", "rewindOverlayMove", "rewindOverlayOpen", "sddBoardSnapshot", "sddBoardFocusNext", "sddBoardFocusPrev", "sendModePickerClose", "sendModePickerMove", "sendModePickerOpen", "sessionResumeConfirmClear", "sessionResumeConfirmSet", "sessionRewound", "sessionsPanelBusy", "sessionsPanelMove", "sessionsPanelSet", "setBuffer", "setFleetChat", "setHistoryScrolled", "setInputHistory", "setViewportRows", "settingsClose", "settingsFieldMove", "settingsFieldSet", "settingsFilterSet", "settingsHint", "settingsOpen", "settingsThinkingEditCancel", "settingsThinkingEditChange", "settingsThinkingEditCommit", "settingsThinkingEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineHint", "statuslineOpen", "statuslineToggle", "statuslineVisibleChipsSync", "steerConsume", "steerStart", "streamDelta", "streamReset", "toggleAgentsMonitor", "toggleAuditPanel", "toggleContextPanel", "toggleConnectionsPanel", "toggleCoordinatorMonitor", "toggleCronMonitor", "toggleGoalKanbanPanel", "toggleGoalPanel", "toggleHelp", "toggleKanbanPanel", "toggleMonitor", "togglePlanPanel", "toggleProcessList", "toggleQueuePanel", "toggleSddBoardMonitor", "toggleSessionsPanel", "toggleTodosMonitor", "toggleWorktreeMonitor", "toolEnded", "toolStarted", "toolStreamAppend", "toolStreamClear", "topicCheckBusy", "toolsPickerBusy", "toolsPickerClose", "toolsPickerFilter", "toolsPickerHint", "toolsPickerMove", "toolsPickerOpen", "toolsPickerSetItems", "toolsPickerToggle", "worktreeRemove", "worktreeUpsert"];
|
|
2
|
+
export declare const ALLOWED_ACTION_TYPES: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "authBusy", "authCatalog", "authClose", "authConfirmEnd", "authConfirmStart", "authFilter", "authFlowDone", "authFlowLog", "authFlowStart", "authHint", "authMove", "authOpen", "authPromptChange", "authPromptEnd", "authPromptStart", "authProviders", "authView", "autonomyPickerClose", "autonomyPickerHint", "autonomyPickerMove", "autonomyPickerOpen", "brainBusy", "brainClose", "brainHint", "brainMove", "brainOpen", "brainPromptClear", "brainPromptSet", "brainRiskChange", "brainRowMove", "brainSetLog", "brainSettingsLoaded", "brainStatus", "brainView", "checkpointReceived", "clearConfirmClose", "clearConfirmOpen", "clearConfirmSetValue", "clearHistory", "clearInput", "clearInputHistory", "closeAllPanels", "collabBugFound", "collabEvalComplete", "sidebarScroll", "sidebarScrollReset", "toggleSidebarFocus", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "eternalStage", "exitConfirmClose", "exitConfirmOpen", "fKeyPickerClose", "fKeyPickerMove", "fKeyPickerOpen", "fleetBatch", "fleetBudgetExtended", "fleetBudgetWarning", "fleetConcurrency", "fleetCost", "fleetCtxPct", "fleetDelta", "fleetDone", "fleetMessage", "fleetRemove", "fleetSeed", "fleetSpawn", "fleetStart", "fleetTool", "fleetToolEnd", "fleetToolStart", "fleetUsage", "goalRunElapsed", "goalRunInit", "goalRunMonitorToggle", "goalRunPhaseUpdate", "goalRunReset", "goalRunRunningPhases", "goalRunTaskActive", "goalSummary", "helpClose", "helpFilter", "helpHint", "helpMove", "helpOpen", "hint", "historyDown", "historyPush", "historyUp", "interrupt", "leaderCtxPct", "leaderIterEnd", "leaderIterStart", "leaderToolEnd", "leaderToolStart", "mcpPickerBusy", "mcpPickerClose", "mcpPickerHint", "mcpPickerMove", "mcpPickerOpen", "mcpPickerSetItems", "modePickerClose", "modePickerHint", "modePickerMove", "modePickerOpen", "modelPickerBack", "modelPickerClose", "modelPickerHint", "modelPickerMove", "modelPickerOpen", "modelPickerPickProvider", "modelPickerSearch", "pickerClose", "pickerMove", "pickerOpen", "pickerSetMatches", "pluginPickerBusy", "pluginPickerClose", "pluginPickerHint", "pluginPickerMove", "pluginPickerOpen", "pluginPickerSetItems", "projectPickerClose", "projectPickerFilter", "projectPickerHint", "projectPickerMove", "projectPickerOpen", "promptPickerCategory", "promptPickerClose", "promptPickerMove", "promptPickerOpen", "queueClear", "queueDelete", "queueToggleRefine", "refineCountdownClose", "refineCountdownOpen", "refineFailureClose", "refineFailureOpen", "replaceHistory", "resetContextChip", "resetInterrupts", "resumePickerBusy", "resumePickerClose", "resumePickerError", "resumePickerHint", "resumePickerMove", "resumePickerOpen", "rewindOverlayClose", "rewindOverlayMove", "rewindOverlayOpen", "sddBoardSnapshot", "sddBoardFocusNext", "sddBoardFocusPrev", "sendModePickerClose", "sendModePickerMove", "sendModePickerOpen", "sessionResumeConfirmClear", "sessionResumeConfirmSet", "sessionRewound", "sessionsPanelBusy", "sessionsPanelMove", "sessionsPanelSet", "setBuffer", "setFleetChat", "setHistoryScrolled", "setInputHistory", "setViewportRows", "settingsClose", "settingsFieldMove", "settingsFieldSet", "settingsFilterSet", "settingsHint", "settingsOpen", "settingsThinkingEditCancel", "settingsThinkingEditChange", "settingsThinkingEditCommit", "settingsThinkingEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineHint", "statuslineOpen", "statuslineToggle", "statuslineVisibleChipsSync", "steerConsume", "steerStart", "streamDelta", "streamReset", "themePickerClose", "themePickerHint", "themePickerMove", "themePickerOpen", "toggleAgentsMonitor", "toggleAuditPanel", "toggleContextPanel", "toggleConnectionsPanel", "toggleCoordinatorMonitor", "toggleCronMonitor", "toggleGoalKanbanPanel", "toggleGoalPanel", "toggleHelp", "toggleKanbanPanel", "toggleMonitor", "togglePlanPanel", "toggleProcessList", "toggleQueuePanel", "toggleSddBoardMonitor", "toggleSessionsPanel", "toggleTodosMonitor", "toggleWorktreeMonitor", "toolEnded", "toolStarted", "toolStreamAppend", "toolStreamClear", "topicCheckBusy", "toolsPickerBusy", "toolsPickerClose", "toolsPickerFilter", "toolsPickerHint", "toolsPickerMove", "toolsPickerOpen", "toolsPickerSetItems", "toolsPickerToggle", "worktreeRemove", "worktreeUpsert"];
|
|
3
3
|
export type AllowedActionType = (typeof ALLOWED_ACTION_TYPES)[number];
|
|
4
4
|
//# sourceMappingURL=action-types.d.ts.map
|
package/dist/kanban-audit.d.ts
CHANGED
|
@@ -3,10 +3,17 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Mirrors the WebUI's `packages/webui/src/lib/kanban-cleaner.ts` but
|
|
5
5
|
* lives in the TUI package so we don't have to thread `@wrongstack/webui`
|
|
6
|
-
* (which depends on React) into a server-side TUI pipeline.
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
6
|
+
* (which depends on React) into a server-side TUI pipeline.
|
|
7
|
+
*
|
|
8
|
+
* The two implementations must produce the same verdicts for the same board.
|
|
9
|
+
* That claim used to be a comment; it is now enforced by
|
|
10
|
+
* `packages/cli/tests/kanban-cleaner-parity.test.ts`, which runs a shared
|
|
11
|
+
* corpus through both and compares the `taskId:code:severity` triples. Only
|
|
12
|
+
* three differences are deliberate, and all three are API shape rather than
|
|
13
|
+
* verdict: this file also accepts `liveAgentIdentities`, returns eight extra
|
|
14
|
+
* summary fields the WebUI's `KanbanCleanerAlert` fills from queue health, and
|
|
15
|
+
* exports `summarizeAuditHeadline` / `topAuditIssues` for the panel badge.
|
|
16
|
+
* Messages may differ; codes and severities may not.
|
|
10
17
|
*
|
|
11
18
|
* The output of `auditKanbanBoard()` feeds the TUI panel header badge so
|
|
12
19
|
* users see Cleaner warnings inline — mirroring the WebUI's
|
|
@@ -14,7 +21,13 @@
|
|
|
14
21
|
*/
|
|
15
22
|
import type { KanbanBoard } from '@wrongstack/kanban';
|
|
16
23
|
export type KanbanAuditSeverity = 'error' | 'warning';
|
|
17
|
-
|
|
24
|
+
/**
|
|
25
|
+
* The audit vocabulary, as a runtime value so the parity test can compare the
|
|
26
|
+
* two implementations' code sets instead of trusting that both type unions
|
|
27
|
+
* were edited together.
|
|
28
|
+
*/
|
|
29
|
+
export declare const ALL_AUDIT_CODES: readonly ['abandoned-running-task', 'board-oversized', 'missing-assignee', 'missing-description', 'missing-due-date', 'missing-labels', 'missing-subtasks', 'missing-success-criteria', 'skipped-lifecycle-state', 'stale-review', 'stale-running-task'];
|
|
30
|
+
export type KanbanAuditIssueCode = (typeof ALL_AUDIT_CODES)[number];
|
|
18
31
|
export interface KanbanAuditIssue {
|
|
19
32
|
id: string;
|
|
20
33
|
taskId: string;
|
package/dist/kanban-slash.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*
|
|
7
7
|
* /kanban — open the project kanban panel
|
|
8
8
|
* /kanban create <title> — create a new board, then open the panel
|
|
9
|
-
* /kanban add <title> [--column X]
|
|
9
|
+
* /kanban add <title> [--column X] [--desc <text>] — add a task to the active board (managed boards require --desc)
|
|
10
10
|
* /kanban use <boardId|title|tag> — open the kanban panel on a specific board
|
|
11
11
|
* /kanban boards — list every board in the project
|
|
12
12
|
* /kanban health — show kanban queue health summary
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* is the text-first equivalent for when the panel is closed.
|
|
20
20
|
*/
|
|
21
21
|
import type { SlashCommand } from '@wrongstack/core/types';
|
|
22
|
-
import type { KanbanBoundaryAccess, KanbanBoundaryPolicy, KanbanBoundarySelectorKind,
|
|
22
|
+
import type { KanbanBoardSummary, KanbanBoundaryAccess, KanbanBoundaryPolicy, KanbanBoundarySelectorKind, KanbanQueueHealth } from '@wrongstack/kanban';
|
|
23
23
|
import { type KanbanAuditSummary } from './kanban-audit.js';
|
|
24
24
|
/**
|
|
25
25
|
* Result of resolving the board that an `add` operation should target.
|
|
@@ -34,6 +34,12 @@ export interface KanbanAddTarget {
|
|
|
34
34
|
boardTitle: string;
|
|
35
35
|
/** Column that the task will be placed in. Defaults to the first column. */
|
|
36
36
|
columnId: string;
|
|
37
|
+
/**
|
|
38
|
+
* Whether the board enforces the managed Kanban Agent lifecycle. Managed
|
|
39
|
+
* boards require new cards to be created in the Backlog column and with a
|
|
40
|
+
* description, so callers route the user accordingly.
|
|
41
|
+
*/
|
|
42
|
+
managed: boolean;
|
|
37
43
|
}
|
|
38
44
|
export interface KanbanSlashDeps {
|
|
39
45
|
/**
|
|
@@ -78,6 +84,7 @@ export type ParsedKanbanArgs = {
|
|
|
78
84
|
kind: 'add';
|
|
79
85
|
title: string;
|
|
80
86
|
column: string | null;
|
|
87
|
+
description?: string | undefined;
|
|
81
88
|
} | {
|
|
82
89
|
kind: 'use';
|
|
83
90
|
query: string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Action } from '../app-action-type.js';
|
|
2
2
|
import type { State } from '../app-state.js';
|
|
3
|
-
declare const composerActionTypes: readonly ["brainPromptSet", "brainPromptClear", "pickerOpen", "pickerClose", "pickerSetMatches", "pickerMove", "toolStarted", "toolEnded", "toolStreamAppend", "toolStreamClear", "enqueue", "dequeueFirst", "queueClear", "queueDelete", "queueToggleRefine", "slashPickerOpen", "slashPickerClose", "slashPickerMove", "historyPush", "historyUp", "historyDown", "setInputHistory", "clearInputHistory", "modelPickerOpen", "modelPickerClose", "modelPickerMove", "modelPickerPickProvider", "modelPickerBack", "modelPickerSearch", "modelPickerHint", "autonomyPickerOpen", "autonomyPickerClose", "autonomyPickerMove", "autonomyPickerHint", "modePickerOpen", "modePickerClose", "modePickerMove", "modePickerHint", "designPickerOpen", "designPickerClose", "designPickerMove", "designPickerStack", "promptPickerOpen", "promptPickerClose", "promptPickerMove", "promptPickerCategory", "resumePickerOpen", "resumePickerClose", "resumePickerMove", "resumePickerBusy", "resumePickerHint", "resumePickerError", "replaceHistory"];
|
|
3
|
+
declare const composerActionTypes: readonly ["brainPromptSet", "brainPromptClear", "pickerOpen", "pickerClose", "pickerSetMatches", "pickerMove", "toolStarted", "toolEnded", "toolStreamAppend", "toolStreamClear", "enqueue", "dequeueFirst", "queueClear", "queueDelete", "queueToggleRefine", "slashPickerOpen", "slashPickerClose", "slashPickerMove", "historyPush", "historyUp", "historyDown", "setInputHistory", "clearInputHistory", "modelPickerOpen", "modelPickerClose", "modelPickerMove", "modelPickerPickProvider", "modelPickerBack", "modelPickerSearch", "modelPickerHint", "autonomyPickerOpen", "autonomyPickerClose", "autonomyPickerMove", "autonomyPickerHint", "themePickerOpen", "themePickerClose", "themePickerMove", "themePickerHint", "modePickerOpen", "modePickerClose", "modePickerMove", "modePickerHint", "designPickerOpen", "designPickerClose", "designPickerMove", "designPickerStack", "promptPickerOpen", "promptPickerClose", "promptPickerMove", "promptPickerCategory", "resumePickerOpen", "resumePickerClose", "resumePickerMove", "resumePickerBusy", "resumePickerHint", "resumePickerError", "replaceHistory"];
|
|
4
4
|
type ComposerAction = Extract<Action, {
|
|
5
5
|
type: (typeof composerActionTypes)[number];
|
|
6
6
|
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { State } from '../app-state.js';
|
|
2
2
|
import type { ProjectPickerItem } from '../ui-contracts.js';
|
|
3
|
-
type PanelResetState = Pick<State, 'monitorOpen' | 'agentsMonitorOpen' | 'helpOpen' | 'todosMonitorOpen' | 'queuePanelOpen' | 'processListOpen' | 'cronMonitorOpen' | 'auditPanelOpen' | 'planPanelOpen' | 'kanbanPanelOpen' | 'goalPanelOpen' | 'goalKanbanPanelOpen' | 'contextPanelOpen' | 'connectionsPanelOpen' | 'sessionsPanelOpen' | 'sidebarFocused' | 'settingsPicker' | 'statuslinePicker' | 'pluginPicker' | 'mcpPicker' | 'toolsPicker' | 'brainPanel' | 'helpPanel' | 'shadowPanel' | 'authPanel' | 'projectPicker' | 'fKeyPicker' | 'goalRun' | 'sddBoard' | 'worktreeMonitorOpen' | 'coordinator'>;
|
|
3
|
+
type PanelResetState = Pick<State, 'monitorOpen' | 'agentsMonitorOpen' | 'helpOpen' | 'todosMonitorOpen' | 'queuePanelOpen' | 'processListOpen' | 'cronMonitorOpen' | 'auditPanelOpen' | 'planPanelOpen' | 'kanbanPanelOpen' | 'goalPanelOpen' | 'goalKanbanPanelOpen' | 'contextPanelOpen' | 'connectionsPanelOpen' | 'sessionsPanelOpen' | 'sidebarFocused' | 'settingsPicker' | 'statuslinePicker' | 'pluginPicker' | 'mcpPicker' | 'toolsPicker' | 'brainPanel' | 'helpPanel' | 'shadowPanel' | 'authPanel' | 'projectPicker' | 'fKeyPicker' | 'goalRun' | 'sddBoard' | 'worktreeMonitorOpen' | 'coordinator' | 'themePicker'>;
|
|
4
4
|
export declare function closePanels(state: State): PanelResetState;
|
|
5
5
|
export declare function clampContextLoad(load: number): number;
|
|
6
6
|
/** Upper bound on the live tool-stream text retained in state. */
|
|
@@ -3,7 +3,7 @@ import type { AutonomousCoordinator, CoordinatorEvent, Director } from '@wrongst
|
|
|
3
3
|
import type { EventBus } from '@wrongstack/core/kernel';
|
|
4
4
|
import type { SlashCommandRegistry } from '@wrongstack/core/registry';
|
|
5
5
|
import type { QueueStore } from '@wrongstack/core/storage';
|
|
6
|
-
import type { AttachmentStore, AutonomyStage, ContextSnapshot, FleetChatVerbosity, Message, TokenCounter, TokenSavingTier } from '@wrongstack/core/types';
|
|
6
|
+
import type { AttachmentStore, AutonomyStage, ConfigStore, ContextSnapshot, FleetChatVerbosity, Message, ThemePresetId, TokenCounter, TokenSavingTier } from '@wrongstack/core/types';
|
|
7
7
|
import type { VisionAdapters } from '@wrongstack/runtime/vision';
|
|
8
8
|
import type { SddLifecycleResult, SddRunControl } from '@wrongstack/sdd';
|
|
9
9
|
import type { AgentTranscriptReader } from './components/agents-monitor.js';
|
|
@@ -349,6 +349,16 @@ export interface RunTuiOptions {
|
|
|
349
349
|
* error string on failure (so the TUI can display it as a hint).
|
|
350
350
|
*/
|
|
351
351
|
saveSettings?: ((s: import('./app-state.js').Settings) => string | null | Promise<string | null>) | undefined;
|
|
352
|
+
/** Persist the active theme preset to disk so the next boot starts with it. */
|
|
353
|
+
saveThemePreset?: ((preset: ThemePresetId) => Promise<void>) | undefined;
|
|
354
|
+
/**
|
|
355
|
+
* Live ConfigStore — passed through to the TUI so the `/theme` slash
|
|
356
|
+
* command can read the current `themePreset`, apply it via
|
|
357
|
+
* `setActiveTheme()`, and persist the user's pick back to disk.
|
|
358
|
+
* Subscribes via `ConfigStore.watch` so any external write (CLI REPL,
|
|
359
|
+
* WebUI, profile migration) is reflected immediately.
|
|
360
|
+
*/
|
|
361
|
+
configStore?: ConfigStore | undefined;
|
|
352
362
|
/** Load toggleable plugin rows for the interactive plugin picker. */
|
|
353
363
|
getPluginItems?: (() => PluginPickerItem[]) | undefined;
|
|
354
364
|
/** Toggle one plugin from the interactive picker and return refreshed rows. */
|
package/dist/theme.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ThemePresetId } from '@wrongstack/core/types';
|
|
1
2
|
export declare const pastel: Readonly<{
|
|
2
3
|
readonly black: '#11111b';
|
|
3
4
|
readonly red: '#f38ba8';
|
|
@@ -76,6 +77,17 @@ export declare function softColor(color?: string): string | undefined;
|
|
|
76
77
|
* branch without mutating process state.
|
|
77
78
|
*/
|
|
78
79
|
export declare function detectSupportsBackground(env?: NodeJS.ProcessEnv, isTTY?: boolean): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Canonical palette preset identifiers. The runtime palette is always one of
|
|
82
|
+
* these five names; the key is also the public CLI/TUI slug (used in
|
|
83
|
+
* `config.themePreset` and the `/theme <preset>` slash command).
|
|
84
|
+
*/
|
|
85
|
+
export type ThemeName = ThemePresetId;
|
|
86
|
+
export interface ThemePickerOption {
|
|
87
|
+
id: ThemeName;
|
|
88
|
+
name: string;
|
|
89
|
+
description: string;
|
|
90
|
+
}
|
|
79
91
|
export interface Theme {
|
|
80
92
|
/** Primary readable foreground used by framed chrome. */
|
|
81
93
|
textPrimary: string;
|
|
@@ -144,4 +156,34 @@ export interface Theme {
|
|
|
144
156
|
diffDelBg: string;
|
|
145
157
|
}
|
|
146
158
|
export declare const theme: Theme;
|
|
159
|
+
/**
|
|
160
|
+
* Snapshot of the active palette. The returned object is the *same* reference
|
|
161
|
+
* the rest of the app sees, so identity checks (`===`) can tell when
|
|
162
|
+
* `setActiveTheme` has actually swapped something. Cheap to call.
|
|
163
|
+
*/
|
|
164
|
+
export declare function getActiveTheme(): Theme;
|
|
165
|
+
/**
|
|
166
|
+
* Mutate `theme` in place to the given preset's palette. Unknown names fall
|
|
167
|
+
* back to `catppuccin` and report the fallback to the caller so the picker can
|
|
168
|
+
* show a hint. Subscribers (see `subscribeToTheme`) are notified synchronously.
|
|
169
|
+
*
|
|
170
|
+
* Returns the name actually applied (always one of `ThemeName`).
|
|
171
|
+
*/
|
|
172
|
+
export declare function setActiveTheme(name: string | undefined): ThemeName;
|
|
173
|
+
type ThemeListener = (name: ThemeName) => void;
|
|
174
|
+
/**
|
|
175
|
+
* Subscribe to active-theme changes. Returns an unsubscribe function. Used by
|
|
176
|
+
* `useActiveTheme()` so React re-renders when the palette swaps. Callers from
|
|
177
|
+
* outside React (e.g. host boot wiring) can use it to persist + reapply.
|
|
178
|
+
*/
|
|
179
|
+
export declare function subscribeToTheme(cb: ThemeListener): () => void;
|
|
180
|
+
/**
|
|
181
|
+
* Returns the name of the currently active theme preset, tracked via
|
|
182
|
+
* `currentPresetName` (kept in lockstep with `setActiveTheme` mutations).
|
|
183
|
+
* Cheap O(1). Always returns one of the canonical `ThemeName` values.
|
|
184
|
+
*/
|
|
185
|
+
export declare function getActiveThemeName(): ThemeName;
|
|
186
|
+
export declare const themePresets: Record<ThemeName, Theme>;
|
|
187
|
+
export declare const THEME_OPTIONS: readonly ThemePickerOption[];
|
|
188
|
+
export {};
|
|
147
189
|
//# sourceMappingURL=theme.d.ts.map
|
package/dist/ui-contracts.d.ts
CHANGED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { SlashCommand } from '@wrongstack/core/types';
|
|
2
|
+
import { type KanbanWorkbenchSnapshot } from '@wrongstack/kanban';
|
|
3
|
+
export interface WorkbenchSlashDeps {
|
|
4
|
+
projectRoot: string;
|
|
5
|
+
}
|
|
6
|
+
/** Text-first, bounded cross-board view for terminals where the visual panel is closed. */
|
|
7
|
+
export declare function createWorkbenchSlashCommand(deps: WorkbenchSlashDeps): SlashCommand;
|
|
8
|
+
export declare function renderWorkbenchReport(snapshot: KanbanWorkbenchSnapshot): string;
|
|
9
|
+
//# sourceMappingURL=workbench-slash.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/tui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.305.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "WrongStack terminal UI: Ink-based interactive renderer with history, pickers, and slash menus.",
|
|
6
6
|
"repository": {
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"ink": "7.1.1",
|
|
30
30
|
"react": "^19.2.8",
|
|
31
31
|
"string-width": "8.2.2",
|
|
32
|
-
"@wrongstack/core": "0.
|
|
33
|
-
"@wrongstack/
|
|
34
|
-
"@wrongstack/
|
|
35
|
-
"@wrongstack/
|
|
36
|
-
"@wrongstack/
|
|
37
|
-
"@wrongstack/
|
|
32
|
+
"@wrongstack/core": "0.305.0",
|
|
33
|
+
"@wrongstack/kanban": "0.305.0",
|
|
34
|
+
"@wrongstack/sage": "0.305.0",
|
|
35
|
+
"@wrongstack/runtime": "0.305.0",
|
|
36
|
+
"@wrongstack/sdd": "0.305.0",
|
|
37
|
+
"@wrongstack/tools": "0.305.0"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
40
|
"@testing-library/dom": "^10.4.1",
|