@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
@@ -46,7 +46,7 @@ export declare function useAppPanelsState(params: {
46
46
  brainCtl: import("./use-brain-panel.js").BrainPanelController;
47
47
  openBrainPanel: () => void;
48
48
  changeBrainRisk: (delta: number) => void;
49
- openShadowPanel: () => void;
49
+ openShadowPanel: () => boolean;
50
50
  handleShadowStart: () => Promise<void>;
51
51
  handleShadowStop: () => Promise<void>;
52
52
  subagentModelsCtl: import("./use-subagent-models-panel.js").SubagentModelsPanelController;
@@ -11,6 +11,7 @@ import type { usePanelControllers } from './use-panel-controllers.js';
11
11
  import type { useStatusbarViewModel } from './use-statusbar-view-model.js';
12
12
  import type { useTuiEnvironmentState } from './use-tui-environment-state.js';
13
13
  interface UseAppPickerKeysOptions {
14
+ sessionGenerationRef?: MutableRefObject<number> | undefined;
14
15
  host: AppProps;
15
16
  state: State;
16
17
  dispatch: Dispatch<Action>;
@@ -36,6 +37,6 @@ interface UseAppPickerKeysOptions {
36
37
  onThemePickerEnter?: () => void;
37
38
  setPromptFavorite: (slug: string, favorite: boolean) => Promise<void>;
38
39
  }
39
- export declare function useAppPickerKeys({ host, state, dispatch, environment, statusbar, panelControllers, authPanelController, brainController, lastEnterAtRef, inputGateRef, submitRef, promptUsageRef, setDraft, acceptSlashPickerSelection, changeBrainRisk, handleModelPicked, handleShadowStart, handleShadowStop, subagentModelsController, statuslineHiddenForPicker, onPickerEnter, onThemePickerEnter, setPromptFavorite, }: UseAppPickerKeysOptions): (input: string, key: import("../components/input.js").KeyEvent, isEnter: boolean) => boolean;
40
+ export declare function useAppPickerKeys({ sessionGenerationRef, host, state, dispatch, environment, statusbar, panelControllers, authPanelController, brainController, lastEnterAtRef, inputGateRef, submitRef, promptUsageRef, setDraft, acceptSlashPickerSelection, changeBrainRisk, handleModelPicked, handleShadowStart, handleShadowStop, subagentModelsController, statuslineHiddenForPicker, onPickerEnter, onThemePickerEnter, setPromptFavorite, }: UseAppPickerKeysOptions): (input: string, key: import("../components/input.js").KeyEvent, isEnter: boolean) => boolean;
40
41
  export {};
41
42
  //# sourceMappingURL=use-app-picker-keys.d.ts.map
@@ -3,9 +3,10 @@
3
3
  *
4
4
  * Fleet event bridges must discard events from subagents that were spawned
5
5
  * before the last `/clear`. This shared hook encapsulates that logic so any
6
- * bridge can apply it consistently. Currently consumed by
7
- * `useDirectorFleetBridge` (Director FleetBus streaming); `useSubagentEvents`
8
- * (EventBus lifecycle) does not gate on generation today.
6
+ * bridge can apply it consistently. Both consumers wire it: `useDirectorFleetBridge`
7
+ * (Director FleetBus streaming) and `useSubagentEvents` (EventBus lifecycle —
8
+ * instantiated at use-subagent-events.ts:126, `gate.track` on spawn, `gate.isLive`
9
+ * on every subagent event handler, `gate.forget` on removal).
9
10
  *
10
11
  * Usage:
11
12
  * ```ts
@@ -14,7 +14,7 @@ interface PanelControllersOptions {
14
14
  openAuthPanel: (view?: 'list' | 'oauth') => boolean;
15
15
  openModePicker: () => void | Promise<void>;
16
16
  openBrainPanel: () => void | Promise<void>;
17
- openShadowPanel: () => void | Promise<void>;
17
+ openShadowPanel: () => void | boolean;
18
18
  /** Opens the `/subagent-models` lane panel; omitted when the host wires no plan. */
19
19
  openSubagentModelsPanel?: (() => void) | undefined;
20
20
  openHelpPanel: () => void | Promise<void>;
@@ -43,6 +43,7 @@ export interface PickerKeysHost {
43
43
  onResumePickerEnter: (() => Promise<void>) | undefined;
44
44
  onSessionsPanelEnter: (() => Promise<void>) | undefined;
45
45
  onProjectPickerEnter: (() => Promise<void>) | undefined;
46
+ onSkillMentionPick?: ((name: string) => void) | undefined;
46
47
  onSlashPickerEnter: (() => void) | undefined;
47
48
  onSettingsPickerEnter: (() => void) | undefined;
48
49
  onPluginPickerToggle: (() => Promise<void> | void) | undefined;
@@ -10,7 +10,7 @@ interface ShadowPanelHost {
10
10
  onShadowStop?: (() => Promise<string | undefined>) | undefined;
11
11
  }
12
12
  export declare function useShadowPanel(dispatch: React.Dispatch<Action>, host: ShadowPanelHost): {
13
- openShadowPanel: () => void;
13
+ openShadowPanel: () => boolean;
14
14
  handleShadowStart: () => Promise<void>;
15
15
  handleShadowStop: () => Promise<void>;
16
16
  };
@@ -9,10 +9,10 @@
9
9
  * Each hook is self-contained: it manages its own refresh interval and
10
10
  * cleanup. The hooks must be called unconditionally (rules of hooks), but
11
11
  * polling is gated by the `enabled` flag — app-view passes whether the
12
- * twin currently occupies a visible sidebar slot. While a panel is closed
13
- * or routed to the bottom region no polling runs (the bottom panels run
14
- * their own polling when open), so the session pays no IPC probes or disk
15
- * reads for panels nobody is looking at. Each hook performs an immediate
12
+ * twin currently occupies a visible sidebar slot. Connections also supplies
13
+ * the persistent icon strip, so it polls whenever the sidebar is visible.
14
+ * Hidden surfaces do not poll (bottom panels run their own polling when open).
15
+ * Each hook performs an immediate
16
16
  * first read when enabled, so data is fresh the moment the twin mounts.
17
17
  */
18
18
  interface SidebarProcess {
@@ -30,7 +30,9 @@ export declare function useSidebarProcessList(enabled?: boolean): {
30
30
  totalCount: number;
31
31
  processes: readonly SidebarProcess[];
32
32
  };
33
- interface SidebarConnection {
33
+ export interface SidebarConnection {
34
+ id?: import('../connections-health.js').ConnectionHealthServiceId | undefined;
35
+ healthStatus?: import('../connections-health.js').ConnectionHealthStatus | undefined;
34
36
  name: string;
35
37
  status: 'ok' | 'warn' | 'down' | 'unknown';
36
38
  latencyMs?: number | undefined;
@@ -0,0 +1,6 @@
1
+ import type { SkillLoader } from '@wrongstack/core/types';
2
+ import { type Dispatch } from 'react';
3
+ import type { Action } from '../app-action-type.js';
4
+ import type { State } from '../app-state.js';
5
+ export declare function useSkillMentionPicker(state: State, loader: SkillLoader | undefined, dispatch: Dispatch<Action>): void;
6
+ //# sourceMappingURL=use-skill-mention-picker.d.ts.map
@@ -34,12 +34,12 @@ interface StatusbarViewModelOptions {
34
34
  */
35
35
  tokenRefresh?: TokenRefreshData;
36
36
  }
37
- interface PlanCounts {
37
+ export interface PlanCounts {
38
38
  open: number;
39
39
  inProgress: number;
40
40
  done: number;
41
41
  }
42
- interface TaskCounts {
42
+ export interface TaskCounts {
43
43
  pending: number;
44
44
  inProgress: number;
45
45
  completed: number;
@@ -61,7 +61,7 @@ export interface UseWindowedPickerOptions {
61
61
  * 24-row terminal even when the input bar or status bar grows.
62
62
  */
63
63
  readonly maxRows?: number | undefined;
64
- /** Minimum visible options even on a tiny terminal. Defaults to 3. */
64
+ /** Legacy minimum without a measured maxRows budget. Defaults to 3. */
65
65
  readonly minVisible?: number | undefined;
66
66
  }
67
67
  export interface WindowedPickerSlice {
@@ -82,9 +82,8 @@ export interface WindowedPickerSlice {
82
82
  * Behavior contract:
83
83
  * - Visible count is `floor((available - chrome - markers) / rowSpan)`
84
84
  * where `available` is either `maxRows` (measured) or
85
- * `rows - shellReservedRows` (guessed), clamped to `[minVisible, total]`.
86
- * A 1-row terminal always shows at least `minVisible` options even if
87
- * that overflows — better to bleed than to hide the focused row.
85
+ * `rows - shellReservedRows` (guessed). Measured budgets show at least
86
+ * one focused option; only the legacy guessed budget uses minVisible.
88
87
  * - The window stays centered on `selected` once the picker is past the
89
88
  * first page; on the first page it stays top-aligned so the user sees
90
89
  * the list start. `selected < 0 || selected >= total` is treated as no