@wrongstack/tui 1.0.19 → 1.0.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/dist/app-action-type.d.ts +31 -0
  2. package/dist/app-key-handler.d.ts +1 -1
  3. package/dist/app-panel-state.d.ts +536 -0
  4. package/dist/app-props.d.ts +1 -1
  5. package/dist/app-state.d.ts +8 -534
  6. package/dist/app-status-region.d.ts +2 -1
  7. package/dist/app-ui-state.d.ts +2 -0
  8. package/dist/app-view-pickers.d.ts +2 -1
  9. package/dist/app-view-state.d.ts +2 -0
  10. package/dist/app.d.ts +2 -2
  11. package/dist/auth-panel-model.d.ts +1 -0
  12. package/dist/components/agent-monitor-presentation.d.ts +61 -0
  13. package/dist/components/agents-monitor.d.ts +3 -49
  14. package/dist/components/audit-panel.d.ts +2 -1
  15. package/dist/components/auth-panel.d.ts +3 -1
  16. package/dist/components/brain-panel.d.ts +3 -1
  17. package/dist/components/checkpoint-timeline.d.ts +1 -1
  18. package/dist/components/confirm-prompt.d.ts +6 -7
  19. package/dist/components/connections-panel.d.ts +2 -1
  20. package/dist/components/context-panel-sections.d.ts +53 -0
  21. package/dist/components/context-panel-types.d.ts +66 -0
  22. package/dist/components/context-panel.d.ts +2 -66
  23. package/dist/components/exit-confirm-panel.d.ts +2 -0
  24. package/dist/components/file-picker.d.ts +2 -1
  25. package/dist/components/help-panel.d.ts +5 -3
  26. package/dist/components/history/utils.d.ts +3 -9
  27. package/dist/components/history/visual-tool-output.d.ts +8 -0
  28. package/dist/components/input.d.ts +1 -1
  29. package/dist/components/kanban-panel-presentation.d.ts +114 -0
  30. package/dist/components/kanban-panel.d.ts +2 -47
  31. package/dist/components/mailbox-panel.d.ts +2 -1
  32. package/dist/components/mcp-picker.d.ts +3 -1
  33. package/dist/components/mode-picker.d.ts +3 -1
  34. package/dist/components/model-picker.d.ts +1 -1
  35. package/dist/components/monitor-shell.d.ts +14 -3
  36. package/dist/components/plugin-picker.d.ts +3 -1
  37. package/dist/components/powerline-rail.d.ts +6 -3
  38. package/dist/components/provider-colors.d.ts +2 -12
  39. package/dist/components/refine-countdown-panel.d.ts +4 -3
  40. package/dist/components/settings-picker-row-list.d.ts +2 -1
  41. package/dist/components/settings-picker.d.ts +3 -1
  42. package/dist/components/shadow-panel.d.ts +2 -1
  43. package/dist/components/sidebar-content.d.ts +1 -47
  44. package/dist/components/sidebar-ipc-icons.d.ts +9 -0
  45. package/dist/components/sidebar-presentation.d.ts +98 -0
  46. package/dist/components/sidebar.d.ts +3 -1
  47. package/dist/components/skill-picker.d.ts +2 -1
  48. package/dist/components/slash-confirm-panel.d.ts +2 -0
  49. package/dist/components/slash-menu.d.ts +2 -1
  50. package/dist/components/slash-modal-frame.d.ts +9 -0
  51. package/dist/components/statusline-picker.d.ts +2 -2
  52. package/dist/components/tools-picker.d.ts +3 -1
  53. package/dist/components/user-input-prompt.d.ts +4 -2
  54. package/dist/connection-actions.d.ts +20 -0
  55. package/dist/connections-health.d.ts +8 -1
  56. package/dist/esc-close-panels.d.ts +0 -1
  57. package/dist/f-key-panels.d.ts +4 -0
  58. package/dist/hooks/use-active-theme.d.ts +2 -1
  59. package/dist/hooks/use-app-panels-state.d.ts +1 -1
  60. package/dist/hooks/use-app-picker-keys.d.ts +2 -1
  61. package/dist/hooks/use-fleet-generation-gate.d.ts +4 -3
  62. package/dist/hooks/use-panel-controllers.d.ts +1 -1
  63. package/dist/hooks/use-picker-keys-types.d.ts +1 -0
  64. package/dist/hooks/use-shadow-panel.d.ts +1 -1
  65. package/dist/hooks/use-sidebar-panel-data.d.ts +7 -5
  66. package/dist/hooks/use-skill-mention-picker.d.ts +6 -0
  67. package/dist/hooks/use-statusbar-view-model.d.ts +2 -2
  68. package/dist/hooks/use-windowed-picker.d.ts +3 -4
  69. package/dist/index.js +9992 -7778
  70. package/dist/ink.d.ts +4 -4
  71. package/dist/input-graphemes.d.ts +4 -0
  72. package/dist/input-key-router.d.ts +2 -0
  73. package/dist/input-tokens.d.ts +10 -0
  74. package/dist/input-validation/action-types.d.ts +1 -1
  75. package/dist/input-validation-coordination.d.ts +9 -0
  76. package/dist/kanban-arguments.d.ts +48 -0
  77. package/dist/kanban-command-types.d.ts +53 -0
  78. package/dist/kanban-reports.d.ts +42 -0
  79. package/dist/kanban-slash.d.ts +4 -125
  80. package/dist/key-routes/key-route-overlay.d.ts +2 -2
  81. package/dist/on-panel-open.d.ts +1 -1
  82. package/dist/picker-text-input.d.ts +4 -0
  83. package/dist/reducers/composer.d.ts +1 -1
  84. package/dist/reducers/panel-pickers.d.ts +1 -1
  85. package/dist/reducers/workspace-panels.d.ts +1 -1
  86. package/dist/run-tui-options.d.ts +1 -1
  87. package/dist/statusline-palette.d.ts +4 -0
  88. package/dist/theme-utils.d.ts +1 -1
  89. package/dist/ui-contracts.d.ts +1 -0
  90. package/dist/use-app-controller.d.ts +157 -0
  91. package/package.json +7 -7
package/dist/ink.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Box as InkBox, type DOMElement, Text as InkText } from 'ink';
1
+ import { type DOMElement, Box as InkBox, Text as InkText } from 'ink';
2
2
  import { type ComponentProps, type ForwardRefExoticComponent, type ReactElement, type RefAttributes } from 'react';
3
3
  type TextOwnProps = Omit<ComponentProps<typeof InkText>, 'color' | 'backgroundColor'> & {
4
4
  color?: string | undefined;
@@ -8,12 +8,12 @@ type BoxOwnProps = Omit<ComponentProps<typeof InkBox>, 'ref' | 'borderColor' | '
8
8
  borderColor?: string | undefined;
9
9
  backgroundColor?: string | undefined;
10
10
  };
11
- export { Static, measureElement, useAnimation, useApp, useInput, useStdin, useStdout, } from 'ink';
12
11
  export type { DOMElement, Key } from 'ink';
13
- /** Ink `Text` with `color`/`backgroundColor` remapped to the pastel palette. */
12
+ export { measureElement, Static, useAnimation, useApp, useInput, useStdin, useStdout, } from 'ink';
13
+ /** Ink `Text` with named colors resolved against the active theme. */
14
14
  export declare function Text({ color, backgroundColor, ...rest }: TextOwnProps): ReactElement;
15
15
  /**
16
- * Ink `Box` with `borderColor`/`backgroundColor` remapped to pastels. Forwards
16
+ * Ink `Box` with named border/background colors resolved against the theme. Forwards
17
17
  * `ref` so `measureElement` (used by the scrollable history) keeps working.
18
18
  */
19
19
  export declare const Box: ForwardRefExoticComponent<BoxOwnProps & RefAttributes<DOMElement>>;
@@ -0,0 +1,4 @@
1
+ export declare function inputGraphemes(value: string): Intl.Segments;
2
+ export declare function previousGraphemeIndex(value: string, cursor: number): number;
3
+ export declare function nextGraphemeIndex(value: string, cursor: number): number;
4
+ //# sourceMappingURL=input-graphemes.d.ts.map
@@ -11,6 +11,8 @@ export interface InputKeyRouterHost {
11
11
  readonly prompt: string;
12
12
  readonly terminalColumns: number;
13
13
  readonly terminalRows: number;
14
+ /** Stable across renders; scopes the preferred vertical column to one input. */
15
+ readonly navigationOwner?: object | undefined;
14
16
  readonly nextSteps: {
15
17
  readonly timer: MutableCell<ReturnType<typeof setInterval> | undefined>;
16
18
  readonly suggestion: MutableCell<string | null>;
@@ -1,3 +1,13 @@
1
+ /**
2
+ * Inline chip token grammar, shared by the editable input for chip rendering
3
+ * and whole-token cursor deletion. Attachment shapes stay in sync with the
4
+ * AttachmentStore placeholder regex in @wrongstack/core:
5
+ * - seq-keyed `[pasted|image|file #N …]` (a cosmetic suffix after the seq,
6
+ * e.g. `, 123 lines`, is tolerated; legacy `[file #N]` is included)
7
+ * - path-keyed `[file:<path>]`
8
+ * `[VIBE]` is a protocol chip: it renders and deletes as a token, but it is
9
+ * not an attachment and must stay in the prompt sent to the refiner/agent.
10
+ */
1
11
  /** Attachment placeholders only. Protocol tags must not be stripped as chips. */
2
12
  export declare const ATTACHMENT_TOKEN_SRC = "\\[(?:pasted|image|file) #\\d+[^\\]]*\\]|\\[file:[^\\]]+\\]";
3
13
  /** Protocol trigger rendered as a chip but kept in the prompt text. */
@@ -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", "authFormCancel", "authFormChange", "authFormStart", "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", "sidebarScrollSet", "sidebarScrollReset", "toggleSidebarFocus", "skillPickerClose", "skillPickerHint", "skillPickerMove", "skillPickerOpen", "resourceMenuClose", "resourceMenuConfirm", "resourceMenuFilter", "resourceMenuHint", "resourceMenuMove", "resourceMenuOpen", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmResolved", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "bugHuntContinueClose", "bugHuntContinueOpen", "bugHuntRunningClose", "bugHuntRunningOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "inspectOverlayClose", "inspectOverlayOpen", "inspectOverlayScroll", "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", "modelPickerEffort", "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", "autoProceedRelease", "bashModeEnter", "bashModeExit", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort", "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", "settingsWrongProxyUrlEditCancel", "settingsWrongProxyUrlEditChange", "settingsWrongProxyUrlEditCommit", "settingsWrongProxyUrlEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineFilter", "statuslineHint", "statuslineMoveLine", "statuslineMoveOrder", "statuslineOpen", "statuslineResetLayout", "statuslineSetDensity", "statuslineSetLine", "statuslineToggle", "statuslineToggleLine", "statuslineVisibleChipsSync", "subagentModelsClose", "subagentModelsHint", "subagentModelsMove", "subagentModelsOpen", "subagentModelsUpdate", "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", "toolResultViewSet", "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", "authFormCancel", "authFormChange", "authFormStart", "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", "sidebarScrollSet", "sidebarScrollReset", "toggleSidebarFocus", "skillMentionResults", "skillPickerClose", "skillPickerHint", "skillPickerMove", "skillPickerOpen", "resourceMenuClose", "resourceMenuConfirm", "resourceMenuFilter", "resourceMenuHint", "resourceMenuMove", "resourceMenuOpen", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmResolved", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "bugHuntContinueClose", "bugHuntContinueOpen", "bugHuntRunningClose", "bugHuntRunningOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "inspectOverlayClose", "inspectOverlayOpen", "inspectOverlayScroll", "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", "goalRunTaskAgent", "goalRunTaskCompleted", "goalSummary", "helpClose", "helpFilter", "helpHint", "helpMove", "helpOpen", "helpScrollDetail", "hint", "historyDown", "historyPush", "historyUp", "interrupt", "leaderCtxPct", "leaderIterEnd", "leaderIterStart", "leaderToolEnd", "leaderToolStart", "mcpPickerBusy", "mcpPickerClose", "mcpPickerHint", "mcpPickerMove", "mcpPickerOpen", "mcpPickerSetItems", "modePickerClose", "modePickerHint", "modePickerMove", "modePickerOpen", "modelPickerBack", "modelPickerClose", "modelPickerEffort", "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", "autoProceedRelease", "bashModeEnter", "bashModeExit", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort", "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", "settingsWrongProxyUrlEditCancel", "settingsWrongProxyUrlEditChange", "settingsWrongProxyUrlEditCommit", "settingsWrongProxyUrlEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineFilter", "statuslineHint", "statuslineMoveLine", "statuslineMoveOrder", "statuslineOpen", "statuslineResetLayout", "statuslineSetDensity", "statuslineSetLine", "statuslineToggle", "statuslineToggleLine", "statuslineVisibleChipsSync", "subagentModelsClose", "subagentModelsHint", "subagentModelsMove", "subagentModelsOpen", "subagentModelsUpdate", "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", "toolResultViewSet", "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
@@ -0,0 +1,9 @@
1
+ import type { ValidationResult } from './input-validation/result.js';
2
+ export declare function validateCoordinationAction(action: {
3
+ type: string;
4
+ [key: string]: unknown;
5
+ }, payload: {
6
+ type: string;
7
+ [key: string]: unknown;
8
+ }): ValidationResult<Record<string, unknown>>;
9
+ //# sourceMappingURL=input-validation-coordination.d.ts.map
@@ -0,0 +1,48 @@
1
+ import type { KanbanBoundaryAccess, KanbanBoundaryPolicy, KanbanBoundarySelectorKind } from '@wrongstack/kanban';
2
+ export type ParsedKanbanArgs = {
3
+ kind: 'open';
4
+ } | {
5
+ kind: 'help';
6
+ } | {
7
+ kind: 'boards';
8
+ } | {
9
+ kind: 'create';
10
+ title: string;
11
+ } | {
12
+ kind: 'add';
13
+ title: string;
14
+ column: string | null;
15
+ description?: string | undefined;
16
+ } | {
17
+ kind: 'use';
18
+ query: string;
19
+ } | {
20
+ kind: 'health';
21
+ } | {
22
+ kind: 'audit';
23
+ boardQuery: string;
24
+ } | {
25
+ kind: 'boundary';
26
+ boardQuery: string;
27
+ action: 'show' | 'allow' | 'deny' | 'clear';
28
+ taskQuery?: string | undefined;
29
+ selectorKind?: KanbanBoundarySelectorKind | undefined;
30
+ access?: KanbanBoundaryAccess | undefined;
31
+ path?: string | undefined;
32
+ enforcement?: KanbanBoundaryPolicy['enforcement'] | undefined;
33
+ shellAccess?: KanbanBoundaryPolicy['shellAccess'] | undefined;
34
+ };
35
+ /**
36
+ * Parse the raw `args` string (everything after `/kanban`) into a tagged
37
+ * union. Exported so tests can exercise the grammar in isolation.
38
+ *
39
+ * Grammar (whitespace-separated; quoted titles supported for the `create`
40
+ * subcommand):
41
+ *
42
+ * args ::= ε | "help" | "boards" | "create" title
43
+ * | "add" title ("--" "column" columnId)?
44
+ * title ::= token+
45
+ * columnId ::= token
46
+ */
47
+ export declare function parseKanbanArgs(raw: string): ParsedKanbanArgs;
48
+ //# sourceMappingURL=kanban-arguments.d.ts.map
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Result of resolving the board that an `add` operation should target.
3
+ *
4
+ * `KanbanPanel` resolves the active board from the session tag
5
+ * (`session:<sessionId>`) and falls back to the most-recently-updated board.
6
+ * We mirror that exact precedence so a `/kanban add` issued while the panel
7
+ * is open lands on the same board the user is looking at.
8
+ */
9
+ export interface KanbanAddTarget {
10
+ boardId: string;
11
+ boardTitle: string;
12
+ /** Column that the task will be placed in. Defaults to the first column. */
13
+ columnId: string;
14
+ /**
15
+ * Whether the board enforces the managed Kanban Agent lifecycle. Managed
16
+ * boards require new cards to be created in the Backlog column and with a
17
+ * description, so callers route the user accordingly.
18
+ */
19
+ managed: boolean;
20
+ }
21
+ export interface KanbanSlashDeps {
22
+ /**
23
+ * Absolute project root used by the kanban file store. Must match the
24
+ * value `KanbanPanel` reads from `agent.ctx.projectRoot` — using
25
+ * `agent.ctx.cwd` would diverge when the user launches the TUI from a
26
+ * subdirectory of the project.
27
+ */
28
+ projectRoot: string;
29
+ /**
30
+ * Session running the TUI. Used to prefer a `session:<id>`-tagged board, and
31
+ * to attribute every board event `/kanban` writes.
32
+ */
33
+ sessionId: string;
34
+ /**
35
+ * Panel-open bridge installed by `App`. Calling `onPanelOpen.current(...)`
36
+ * with `'toggleKanbanPanel'` opens the kanban panel — same mechanism the
37
+ * other slash commands use. When absent, slash command returns text-only.
38
+ */
39
+ onPanelOpen?: {
40
+ current: ((action: string) => boolean) | null;
41
+ } | undefined;
42
+ /**
43
+ * Optional hook that selects a specific board in the kanban panel. Used
44
+ * by `/kanban use <boardId|title|tag>` and the Goal → Kanban bridge.
45
+ * The callback receives a board id and returns true on success.
46
+ */
47
+ onBoardFocus?: {
48
+ current: ((boardId: string) => boolean) | null;
49
+ } | undefined;
50
+ /** Terminal width (cols) for help / boards table rendering. */
51
+ terminalWidth?: number | undefined;
52
+ }
53
+ //# sourceMappingURL=kanban-command-types.d.ts.map
@@ -0,0 +1,42 @@
1
+ import type { KanbanBoardSummary, KanbanQueueHealth } from '@wrongstack/kanban';
2
+ import { type KanbanAuditSummary } from './kanban-audit.js';
3
+ import type { KanbanSlashDeps } from './kanban-command-types.js';
4
+ /**
5
+ * Render the kanban queue health report as a compact markdown block.
6
+ * Surfaces the same Sprint-2 fields the WebUI's `KanbanView` shows
7
+ * (dependencyBlocked, staleAssignments, failedRetryable, heartbeatDue)
8
+ * plus per-status counts and the last dispatch / last recovery stamps.
9
+ */
10
+ export declare function renderHealthReport(health: KanbanQueueHealth): string;
11
+ /**
12
+ * Render the Kanban Cleaner audit across the project. Mirrors the WebUI
13
+ * `KanbanCleanerAlert` vocabulary so a user running either surface gets
14
+ * the same findings.
15
+ *
16
+ * Two modes:
17
+ * - `boardQuery` empty → audit every board (per-board table).
18
+ * - `boardQuery` present → audit the single matching board, or report
19
+ * a clear "not found" error.
20
+ *
21
+ * Each board's row shows the issue counts (error · warning) and the
22
+ * top-3 issues, biasing toward error severity first.
23
+ */
24
+ export declare function renderProjectAudit(deps: Pick<KanbanSlashDeps, 'projectRoot'>, boardQuery: string): Promise<string>;
25
+ /**
26
+ * Render a board-row table from a list of audited boards. The output
27
+ * is a compact markdown block suitable for the slash composer.
28
+ *
29
+ * When `multi` is true (audit-all mode) each row is prefixed with the
30
+ * board title; in single-board mode the title appears once as a header.
31
+ */
32
+ export declare function renderAuditReport(rows: ReadonlyArray<{
33
+ title: string;
34
+ summary: KanbanAuditSummary;
35
+ error?: string;
36
+ }>, multi: boolean): string;
37
+ /**
38
+ * Render a compact boards table. Width-aware so a 60-col terminal still gets
39
+ * useful output (column titles truncated, counts abbreviated).
40
+ */
41
+ export declare function renderBoardsList(boards: readonly KanbanBoardSummary[], width?: number): string;
42
+ //# sourceMappingURL=kanban-reports.d.ts.map
@@ -19,107 +19,8 @@
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 { KanbanBoardSummary, KanbanBoundaryAccess, KanbanBoundaryPolicy, KanbanBoundarySelectorKind, KanbanQueueHealth } from '@wrongstack/kanban';
23
- import { type KanbanAuditSummary } from './kanban-audit.js';
24
- /**
25
- * Result of resolving the board that an `add` operation should target.
26
- *
27
- * `KanbanPanel` resolves the active board from the session tag
28
- * (`session:<sessionId>`) and falls back to the most-recently-updated board.
29
- * We mirror that exact precedence so a `/kanban add` issued while the panel
30
- * is open lands on the same board the user is looking at.
31
- */
32
- interface KanbanAddTarget {
33
- boardId: string;
34
- boardTitle: string;
35
- /** Column that the task will be placed in. Defaults to the first column. */
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;
43
- }
44
- export interface KanbanSlashDeps {
45
- /**
46
- * Absolute project root used by the kanban file store. Must match the
47
- * value `KanbanPanel` reads from `agent.ctx.projectRoot` — using
48
- * `agent.ctx.cwd` would diverge when the user launches the TUI from a
49
- * subdirectory of the project.
50
- */
51
- projectRoot: string;
52
- /**
53
- * Session running the TUI. Used to prefer a `session:<id>`-tagged board, and
54
- * to attribute every board event `/kanban` writes.
55
- */
56
- sessionId: string;
57
- /**
58
- * Panel-open bridge installed by `App`. Calling `onPanelOpen.current(...)`
59
- * with `'toggleKanbanPanel'` opens the kanban panel — same mechanism the
60
- * other slash commands use. When absent, slash command returns text-only.
61
- */
62
- onPanelOpen?: {
63
- current: ((action: string) => boolean) | null;
64
- } | undefined;
65
- /**
66
- * Optional hook that selects a specific board in the kanban panel. Used
67
- * by `/kanban use <boardId|title|tag>` and the Goal → Kanban bridge.
68
- * The callback receives a board id and returns true on success.
69
- */
70
- onBoardFocus?: {
71
- current: ((boardId: string) => boolean) | null;
72
- } | undefined;
73
- /** Terminal width (cols) for help / boards table rendering. */
74
- terminalWidth?: number | undefined;
75
- }
22
+ import type { KanbanAddTarget, KanbanSlashDeps } from './kanban-command-types.js';
76
23
  export declare function createKanbanSlashCommand(deps: KanbanSlashDeps): SlashCommand;
77
- type ParsedKanbanArgs = {
78
- kind: 'open';
79
- } | {
80
- kind: 'help';
81
- } | {
82
- kind: 'boards';
83
- } | {
84
- kind: 'create';
85
- title: string;
86
- } | {
87
- kind: 'add';
88
- title: string;
89
- column: string | null;
90
- description?: string | undefined;
91
- } | {
92
- kind: 'use';
93
- query: string;
94
- } | {
95
- kind: 'health';
96
- } | {
97
- kind: 'audit';
98
- boardQuery: string;
99
- } | {
100
- kind: 'boundary';
101
- boardQuery: string;
102
- action: 'show' | 'allow' | 'deny' | 'clear';
103
- taskQuery?: string | undefined;
104
- selectorKind?: KanbanBoundarySelectorKind | undefined;
105
- access?: KanbanBoundaryAccess | undefined;
106
- path?: string | undefined;
107
- enforcement?: KanbanBoundaryPolicy['enforcement'] | undefined;
108
- shellAccess?: KanbanBoundaryPolicy['shellAccess'] | undefined;
109
- };
110
- /**
111
- * Parse the raw `args` string (everything after `/kanban`) into a tagged
112
- * union. Exported so tests can exercise the grammar in isolation.
113
- *
114
- * Grammar (whitespace-separated; quoted titles supported for the `create`
115
- * subcommand):
116
- *
117
- * args ::= ε | "help" | "boards" | "create" title
118
- * | "add" title ("--" "column" columnId)?
119
- * title ::= token+
120
- * columnId ::= token
121
- */
122
- export declare function parseKanbanArgs(raw: string): ParsedKanbanArgs;
123
24
  /**
124
25
  * Resolve the board that an `/kanban add` should target, matching the
125
26
  * precedence used by `KanbanPanel`:
@@ -133,29 +34,7 @@ export declare function parseKanbanArgs(raw: string): ParsedKanbanArgs;
133
34
  * Exported so tests can validate the precedence rules against fixture boards.
134
35
  */
135
36
  export declare function resolveAddTarget(deps: Pick<KanbanSlashDeps, 'projectRoot' | 'sessionId'>, column: string | null): Promise<KanbanAddTarget | null>;
136
- /**
137
- * Render the kanban queue health report as a compact markdown block.
138
- * Surfaces the same Sprint-2 fields the WebUI's `KanbanView` shows
139
- * (dependencyBlocked, staleAssignments, failedRetryable, heartbeatDue)
140
- * plus per-status counts and the last dispatch / last recovery stamps.
141
- */
142
- export declare function renderHealthReport(health: KanbanQueueHealth): string;
143
- /**
144
- * Render a board-row table from a list of audited boards. The output
145
- * is a compact markdown block suitable for the slash composer.
146
- *
147
- * When `multi` is true (audit-all mode) each row is prefixed with the
148
- * board title; in single-board mode the title appears once as a header.
149
- */
150
- export declare function renderAuditReport(rows: ReadonlyArray<{
151
- title: string;
152
- summary: KanbanAuditSummary;
153
- error?: string;
154
- }>, multi: boolean): string;
155
- /**
156
- * Render a compact boards table. Width-aware so a 60-col terminal still gets
157
- * useful output (column titles truncated, counts abbreviated).
158
- */
159
- export declare function renderBoardsList(boards: readonly KanbanBoardSummary[], width?: number): string;
160
- export {};
37
+ export { parseKanbanArgs } from './kanban-arguments.js';
38
+ export type { KanbanSlashDeps } from './kanban-command-types.js';
39
+ export { renderAuditReport, renderBoardsList, renderHealthReport } from './kanban-reports.js';
161
40
  //# sourceMappingURL=kanban-slash.d.ts.map
@@ -7,8 +7,8 @@ import type { KeyRouteContext } from '../key-handler-context.js';
7
7
  * ride with this route as the panel family (no dedicated slice among the
8
8
  * approved route names).
9
9
  *
10
- * Orchestrator call order (pinned): routeModalOverlay → routeDoubleEsc →
11
- * routeEscClosePanels → routeChordPanels → routeFKeyPanels → routeSddBoard →
10
+ * Orchestrator call order (pinned): routeModalOverlay → picker routing →
11
+ * routeEscClosePanels → routeDoubleEsc → routeChordPanels → routeFKeyPanels → routeSddBoard →
12
12
  * routeSettingsOverlay → routePanelEscapeRouter.
13
13
  */
14
14
  /** Modal overlays with their own dedicated UI (confirmQueue, enhance,
@@ -39,7 +39,7 @@ export interface PanelOpenDeps {
39
39
  * Async opener for the Shadow Agent panel (`/shadow`). Fetches shadow state
40
40
  * from the host, then dispatches shadowOpen.
41
41
  */
42
- openShadowPanel?: (() => void | Promise<unknown>) | undefined;
42
+ openShadowPanel?: (() => void | boolean) | undefined;
43
43
  /**
44
44
  * Opener for the Help panel (`/help`). Builds entries from the slash
45
45
  * command registry and dispatches helpOpen with the populated list.
@@ -0,0 +1,4 @@
1
+ /** Single-line picker fields accept pasted Unicode but never terminal controls. */
2
+ export declare function pickerInputText(input: string): string;
3
+ export declare function pickerBackspace(value: string): string;
4
+ //# sourceMappingURL=picker-text-input.d.ts.map
@@ -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", "bashModeEnter", "bashModeExit", "slashPickerOpen", "slashPickerClose", "slashPickerMove", "historyPush", "historyUp", "historyDown", "setInputHistory", "clearInputHistory", "modelPickerOpen", "modelPickerClose", "modelPickerMove", "modelPickerPickProvider", "modelPickerBack", "modelPickerSearch", "modelPickerEffort", "modelPickerHint", "autonomyPickerOpen", "autonomyPickerClose", "autonomyPickerMove", "autonomyPickerHint", "themePickerOpen", "themePickerClose", "themePickerMove", "themePickerHint", "modePickerOpen", "modePickerClose", "modePickerMove", "modePickerHint", "skillPickerOpen", "skillPickerClose", "skillPickerMove", "skillPickerHint", "resourceMenuOpen", "resourceMenuClose", "resourceMenuMove", "resourceMenuHint", "resourceMenuFilter", "resourceMenuConfirm", "designPickerOpen", "designPickerClose", "designPickerMove", "designPickerStack", "promptPickerOpen", "promptPickerClose", "promptPickerMove", "promptPickerCategory", "resumePickerOpen", "resumePickerClose", "resumePickerMove", "resumePickerBusy", "resumePickerHint", "resumePickerError", "replaceHistory", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort"];
3
+ declare const composerActionTypes: readonly ["brainPromptSet", "brainPromptClear", "pickerOpen", "pickerClose", "pickerSetMatches", "pickerMove", "toolStarted", "toolEnded", "toolStreamAppend", "toolStreamClear", "enqueue", "dequeueFirst", "queueClear", "queueDelete", "queueToggleRefine", "bashModeEnter", "bashModeExit", "slashPickerOpen", "slashPickerClose", "slashPickerMove", "historyPush", "historyUp", "historyDown", "setInputHistory", "clearInputHistory", "modelPickerOpen", "modelPickerClose", "modelPickerMove", "modelPickerPickProvider", "modelPickerBack", "modelPickerSearch", "modelPickerEffort", "modelPickerHint", "autonomyPickerOpen", "autonomyPickerClose", "autonomyPickerMove", "autonomyPickerHint", "themePickerOpen", "themePickerClose", "themePickerMove", "themePickerHint", "modePickerOpen", "modePickerClose", "modePickerMove", "modePickerHint", "skillPickerOpen", "skillMentionResults", "skillPickerClose", "skillPickerMove", "skillPickerHint", "resourceMenuOpen", "resourceMenuClose", "resourceMenuMove", "resourceMenuHint", "resourceMenuFilter", "resourceMenuConfirm", "designPickerOpen", "designPickerClose", "designPickerMove", "designPickerStack", "promptPickerOpen", "promptPickerClose", "promptPickerMove", "promptPickerCategory", "resumePickerOpen", "resumePickerClose", "resumePickerMove", "resumePickerBusy", "resumePickerHint", "resumePickerError", "replaceHistory", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort"];
4
4
  type ComposerAction = Extract<Action, {
5
5
  type: (typeof composerActionTypes)[number];
6
6
  }>;
@@ -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 panelPickerActionTypes: readonly ["statuslineOpen", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineToggle", "statuslineSetLine", "statuslineMoveLine", "statuslineMoveOrder", "statuslineSetDensity", "statuslineToggleLine", "statuslineResetLayout", "statuslineFilter", "statuslineHint", "statuslineChipShow", "statuslineChipExpire", "statuslineVisibleChipsSync", "pluginPickerOpen", "pluginPickerClose", "pluginPickerMove", "pluginPickerSetItems", "pluginPickerBusy", "pluginPickerHint", "mcpPickerOpen", "mcpPickerClose", "mcpPickerMove", "mcpPickerSetItems", "mcpPickerBusy", "mcpPickerHint", "toolsPickerOpen", "toolsPickerClose", "toolsPickerMove", "toolsPickerSetItems", "toolsPickerToggle", "toolsPickerBusy", "toolsPickerHint", "toolsPickerFilter", "brainOpen", "brainClose", "brainMove", "brainRiskChange", "brainSetLog", "brainHint", "brainSettingsLoaded", "brainView", "brainRowMove", "brainBusy", "helpOpen", "helpClose", "helpMove", "helpFilter", "helpHint", "shadowOpen", "shadowClose", "shadowUpdate", "shadowHint", "subagentModelsOpen", "subagentModelsClose", "subagentModelsMove", "subagentModelsUpdate", "subagentModelsHint"];
3
+ declare const panelPickerActionTypes: readonly ["statuslineOpen", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineToggle", "statuslineSetLine", "statuslineMoveLine", "statuslineMoveOrder", "statuslineSetDensity", "statuslineToggleLine", "statuslineResetLayout", "statuslineFilter", "statuslineHint", "statuslineChipShow", "statuslineChipExpire", "statuslineVisibleChipsSync", "pluginPickerOpen", "pluginPickerClose", "pluginPickerMove", "pluginPickerSetItems", "pluginPickerBusy", "pluginPickerHint", "mcpPickerOpen", "mcpPickerClose", "mcpPickerMove", "mcpPickerSetItems", "mcpPickerBusy", "mcpPickerHint", "toolsPickerOpen", "toolsPickerClose", "toolsPickerMove", "toolsPickerSetItems", "toolsPickerToggle", "toolsPickerBusy", "toolsPickerHint", "toolsPickerFilter", "brainOpen", "brainClose", "brainMove", "brainRiskChange", "brainSetLog", "brainHint", "brainSettingsLoaded", "brainView", "brainRowMove", "brainBusy", "helpOpen", "helpClose", "helpScrollDetail", "helpMove", "helpFilter", "helpHint", "helpScrollDetail", "shadowOpen", "shadowClose", "shadowUpdate", "shadowHint", "subagentModelsOpen", "subagentModelsClose", "subagentModelsMove", "subagentModelsUpdate", "subagentModelsHint"];
4
4
  type PanelPickerAction = Extract<Action, {
5
5
  type: (typeof panelPickerActionTypes)[number];
6
6
  }>;
@@ -10,7 +10,7 @@ import type { State } from '../app-state.js';
10
10
  * {@link computeMaxSidebarScroll}; see its doc for the layout budget.
11
11
  */
12
12
  export declare function estimateSidebarMaxScroll(state: State, viewportHeight?: number, effectiveSwarmOnSidebar?: boolean | undefined): number;
13
- declare const workspacePanelActionTypes: readonly ["toggleMonitor", "toggleAgentsMonitor", "toggleHelp", "toggleTodosMonitor", "toggleQueuePanel", "toggleProcessList", "toggleCronMonitor", "togglePlanPanel", "closeAllPanels", "toggleSidebarFocus", "sidebarScroll", "sidebarScrollSet", "sidebarScrollReset", "toggleKanbanPanel", "toggleGoalPanel", "toggleGoalKanbanPanel", "toggleContextPanel", "toggleConnectionsPanel", "checkpointReceived", "rewindOverlayOpen", "rewindOverlayClose", "rewindOverlayMove", "sessionRewound", "eternalStage", "goalSummary", "goalRunInit", "goalRunPhaseUpdate", "goalRunTaskActive", "goalRunRunningPhases", "goalRunElapsed", "goalRunMonitorToggle", "goalRunReset", "sddBoardSnapshot", "toggleSddBoardMonitor", "sddBoardFocusNext", "sddBoardFocusPrev", "worktreeUpsert", "worktreeRemove", "toggleWorktreeMonitor"];
13
+ declare const workspacePanelActionTypes: readonly ["toggleMonitor", "toggleAgentsMonitor", "toggleHelp", "toggleTodosMonitor", "toggleQueuePanel", "toggleProcessList", "toggleCronMonitor", "togglePlanPanel", "closeAllPanels", "toggleSidebarFocus", "sidebarScroll", "sidebarScrollSet", "sidebarScrollReset", "toggleKanbanPanel", "toggleGoalPanel", "toggleGoalKanbanPanel", "toggleContextPanel", "toggleConnectionsPanel", "checkpointReceived", "rewindOverlayOpen", "rewindOverlayClose", "rewindOverlayMove", "sessionRewound", "eternalStage", "goalSummary", "goalRunInit", "goalRunPhaseUpdate", "goalRunTaskActive", "goalRunTaskAgent", "goalRunTaskCompleted", "goalRunRunningPhases", "goalRunElapsed", "goalRunMonitorToggle", "goalRunReset", "sddBoardSnapshot", "toggleSddBoardMonitor", "sddBoardFocusNext", "sddBoardFocusPrev", "worktreeUpsert", "worktreeRemove", "toggleWorktreeMonitor"];
14
14
  type WorkspacePanelAction = Extract<Action, {
15
15
  type: (typeof workspacePanelActionTypes)[number];
16
16
  }>;
@@ -559,7 +559,7 @@ export interface RunTuiOptions {
559
559
  nextSteps?: string[] | undefined;
560
560
  } | null>) | undefined;
561
561
  getProjectPickerItems?: (() => Promise<import('./components/project-picker.js').ProjectPickerItem[]>) | undefined;
562
- onProjectSelect?: ((key: string, kind: 'project' | 'action') => void) | undefined;
562
+ onProjectSelect?: ((key: string, kind: 'project' | 'action') => void | string | null | Promise<void | string | null>) | undefined;
563
563
  /**
564
564
  * Request the TUI to exit with a specific code. Used by the project picker
565
565
  * to trigger a clean exit before spawning a new wstack process in a different
@@ -0,0 +1,4 @@
1
+ import type { Theme } from './theme-types.js';
2
+ /** Preserve the preset's five hues while keeping small status text at 4.5:1. */
3
+ export declare function statuslineBackgrounds(palette: Theme): string[];
4
+ //# sourceMappingURL=statusline-palette.d.ts.map
@@ -60,7 +60,7 @@ export declare function resolveSyntaxColor(role: SyntaxRole, palette: Theme): st
60
60
  export declare function resolveSyntaxPalette(palette: Theme): SyntaxPalette;
61
61
  export declare function softColorWithTheme(color: string | undefined, currentTheme: Theme): string | undefined;
62
62
  /**
63
- * Mix two hex colors in linear-light sRGB. `weight` is the fraction of
63
+ * Mix two hex colors in encoded sRGB. `weight` is the fraction of
64
64
  * `colorA` (0..1) — at 0 the result is `colorB`, at 1 it is `colorA`. Used
65
65
  * by the sidebar's card tints to derive per-card "raised" surfaces from
66
66
  * the theme's accent + surface tokens, so each panel feels color-coded
@@ -142,6 +142,7 @@ export interface HelpEntry {
142
142
  category: string;
143
143
  aliases?: string[] | undefined;
144
144
  argsHint?: string | undefined;
145
+ help?: string | undefined;
145
146
  }
146
147
  export interface McpPickerItem {
147
148
  name: string;