@wrongstack/tui 0.319.0 → 1.0.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.
Files changed (86) hide show
  1. package/README.md +0 -1
  2. package/dist/app-action-type.d.ts +46 -0
  3. package/dist/app-key-handler.d.ts +2 -0
  4. package/dist/app-props.d.ts +8 -1
  5. package/dist/app-state.d.ts +30 -0
  6. package/dist/app-view-contract.d.ts +2 -3
  7. package/dist/auth-panel-model.d.ts +70 -0
  8. package/dist/brain-panel-model.d.ts +11 -0
  9. package/dist/components/bug-hunt-continue-panel.d.ts +15 -0
  10. package/dist/components/bug-hunt-running-panel.d.ts +9 -0
  11. package/dist/components/confirm-prompt.d.ts +7 -1
  12. package/dist/components/help-panel.d.ts +1 -1
  13. package/dist/components/history/entry-helpers.d.ts +5 -0
  14. package/dist/components/history/index.d.ts +2 -2
  15. package/dist/components/history/scroll-controller-types.d.ts +1 -1
  16. package/dist/components/history/types.d.ts +1 -1
  17. package/dist/components/history/utils.d.ts +2 -2
  18. package/dist/components/history.d.ts +1 -1
  19. package/dist/components/mode-picker.d.ts +1 -1
  20. package/dist/components/powerline-rail.d.ts +46 -8
  21. package/dist/components/settings-picker-constants.d.ts +73 -0
  22. package/dist/components/settings-picker-model.d.ts +2 -192
  23. package/dist/components/settings-picker-resolver.d.ts +27 -0
  24. package/dist/components/shadow-panel.d.ts +1 -1
  25. package/dist/components/status-bar-chips.d.ts +1 -1
  26. package/dist/components/status-bar-format.d.ts +8 -1
  27. package/dist/components/status-bar-icons.d.ts +7 -1
  28. package/dist/components/status-bar-rails-async.d.ts +9 -0
  29. package/dist/components/status-bar-rails-common.d.ts +117 -0
  30. package/dist/components/status-bar-rails-safety.d.ts +9 -0
  31. package/dist/components/status-bar-rails.d.ts +16 -103
  32. package/dist/components/status-bar-types.d.ts +24 -5
  33. package/dist/components/status-bar.d.ts +18 -16
  34. package/dist/components/status-line-registry.d.ts +11 -13
  35. package/dist/components/statusline-picker.d.ts +48 -15
  36. package/dist/history-archive.d.ts +3 -1
  37. package/dist/history-entry.d.ts +18 -0
  38. package/dist/hooks/use-app-event-bridges.d.ts +22 -43
  39. package/dist/hooks/use-app-panels-state.d.ts +30 -12
  40. package/dist/hooks/use-app-pipeline-builders.d.ts +5 -0
  41. package/dist/hooks/use-bug-hunt-loop.d.ts +9 -0
  42. package/dist/hooks/use-history-auto-scroll.d.ts +13 -0
  43. package/dist/hooks/use-history-viewport-sync.d.ts +2 -2
  44. package/dist/hooks/use-mode-picker.d.ts +1 -1
  45. package/dist/hooks/use-statusline-hidden-sync.d.ts +29 -0
  46. package/dist/hooks/use-statusline-state.d.ts +5 -1
  47. package/dist/hooks/use-tui-environment-state.d.ts +4 -2
  48. package/dist/index.d.ts +1 -1
  49. package/dist/index.js +6698 -5035
  50. package/dist/input-validation/action-types.d.ts +1 -1
  51. package/dist/input-validation.d.ts +3 -3
  52. package/dist/reducers/dialogs.d.ts +1 -1
  53. package/dist/reducers/panel-pickers.d.ts +1 -1
  54. package/dist/run-tui-options.d.ts +5 -1
  55. package/dist/submit-controller.d.ts +2 -0
  56. package/dist/theme-presets/accessible.d.ts +66 -0
  57. package/dist/theme-presets/atom.d.ts +97 -0
  58. package/dist/theme-presets/ayu.d.ts +66 -0
  59. package/dist/theme-presets/base.d.ts +3 -0
  60. package/dist/theme-presets/catppuccin.d.ts +97 -0
  61. package/dist/theme-presets/everforest.d.ts +66 -0
  62. package/dist/theme-presets/flexoki.d.ts +35 -0
  63. package/dist/theme-presets/github.d.ts +99 -0
  64. package/dist/theme-presets/gruvbox.d.ts +97 -0
  65. package/dist/theme-presets/japanese.d.ts +35 -0
  66. package/dist/theme-presets/material.d.ts +66 -0
  67. package/dist/theme-presets/misc-1.d.ts +254 -0
  68. package/dist/theme-presets/misc-2.d.ts +256 -0
  69. package/dist/theme-presets/misc-3.d.ts +252 -0
  70. package/dist/theme-presets/mono-crt.d.ts +66 -0
  71. package/dist/theme-presets/mono.d.ts +128 -0
  72. package/dist/theme-presets/monokai.d.ts +68 -0
  73. package/dist/theme-presets/nightfox.d.ts +35 -0
  74. package/dist/theme-presets/options.d.ts +4 -0
  75. package/dist/theme-presets/rose-pine.d.ts +66 -0
  76. package/dist/theme-presets/synthwave.d.ts +68 -0
  77. package/dist/theme-presets/tokyo-night.d.ts +97 -0
  78. package/dist/theme-presets/vitesse.d.ts +66 -0
  79. package/dist/theme-presets.d.ts +17 -4
  80. package/dist/tui-host-capabilities.d.ts +4 -0
  81. package/dist/ui-contracts.d.ts +1 -1
  82. package/package.json +7 -7
  83. package/dist/components/key-hint-bar.d.ts +0 -42
  84. package/dist/components/live-activity-strip.d.ts +0 -40
  85. package/dist/components/memory-context-widget.d.ts +0 -5
  86. package/dist/components/statusline-detail-panel.d.ts +0 -10
@@ -0,0 +1,68 @@
1
+ /** 2 palettes: monokai, sonokai. */
2
+ export declare const monokaiPresets: {
3
+ monokai: Readonly<{
4
+ dim: true | string;
5
+ supportsBackground: boolean;
6
+ textPrimary: "#f8f8f2";
7
+ textSecondary: "#cfcfc2";
8
+ textMuted: "#8f8b76";
9
+ brandPrimary: "#fd971f";
10
+ brandAccent: "#ae81ff";
11
+ surface: "#1e1f1c";
12
+ surfaceRaised: "#272822";
13
+ accent: "#66d9ef";
14
+ user: "#f4bf75";
15
+ assistant: "#66d9ef";
16
+ tool: "#a1efe4";
17
+ success: "#a6e22e";
18
+ warn: "#f4bf75";
19
+ error: "#f92672";
20
+ borderDefault: "#75715e";
21
+ borderSubtle: "#4c4a3d";
22
+ borderActive: "#fd971f";
23
+ brand: "#ae81ff";
24
+ diffAddBg: "#1f3318";
25
+ diffDelBg: "#3a1f25";
26
+ monitor: {
27
+ fleet: string;
28
+ agents: string;
29
+ worktree: string;
30
+ phase: string;
31
+ };
32
+ syntax: {
33
+ string: string;
34
+ };
35
+ }>;
36
+ sonokai: Readonly<{
37
+ dim: true | string;
38
+ supportsBackground: boolean;
39
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
40
+ textPrimary: "#e3e1e4";
41
+ textSecondary: "#c9c6cb";
42
+ textMuted: "#848089";
43
+ brandPrimary: "#ef9062";
44
+ brandAccent: "#ab9df2";
45
+ surface: "#2d2a2e";
46
+ surfaceRaised: "#37343a";
47
+ accent: "#7accd7";
48
+ user: "#e5c463";
49
+ assistant: "#7accd7";
50
+ tool: "#9ecd6f";
51
+ success: "#9ecd6f";
52
+ warn: "#e5c463";
53
+ error: "#f85e84";
54
+ borderDefault: "#4b484d";
55
+ borderSubtle: "#4a474b";
56
+ borderActive: "#ef9062";
57
+ brand: "#ab9df2";
58
+ diffAddBg: "#2c3a2b";
59
+ diffDelBg: "#43262f";
60
+ monitor: {
61
+ fleet: string;
62
+ agents: string;
63
+ worktree: string;
64
+ phase: string;
65
+ };
66
+ }>;
67
+ };
68
+ //# sourceMappingURL=monokai.d.ts.map
@@ -0,0 +1,35 @@
1
+ /** 1 palette: nightfox. */
2
+ export declare const nightfoxPresets: {
3
+ nightfox: Readonly<{
4
+ dim: true | string;
5
+ supportsBackground: boolean;
6
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
7
+ textPrimary: "#cdcecf";
8
+ textSecondary: "#aeafb0";
9
+ textMuted: "#71839b";
10
+ brandPrimary: "#f4a261";
11
+ brandAccent: "#9d79d6";
12
+ surface: "#192330";
13
+ surfaceRaised: "#212e3f";
14
+ accent: "#719cd6";
15
+ user: "#dbc074";
16
+ assistant: "#63cdcf";
17
+ tool: "#719cd6";
18
+ success: "#81b29a";
19
+ warn: "#dbc074";
20
+ error: "#c94f6d";
21
+ borderDefault: "#39506d";
22
+ borderSubtle: "#314963";
23
+ borderActive: "#719cd6";
24
+ brand: "#9d79d6";
25
+ diffAddBg: "#1d3025";
26
+ diffDelBg: "#33202a";
27
+ monitor: {
28
+ fleet: string;
29
+ agents: string;
30
+ worktree: string;
31
+ phase: string;
32
+ };
33
+ }>;
34
+ };
35
+ //# sourceMappingURL=nightfox.d.ts.map
@@ -0,0 +1,4 @@
1
+ import type { ThemePickerOption } from '../theme-types.js';
2
+ /** Picker rows in canonical THEME_PRESET_IDS order. */
3
+ export declare const THEME_OPTIONS: readonly ThemePickerOption[];
4
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1,66 @@
1
+ /** 2 palettes: rose-pine, rose-pine-moon. */
2
+ export declare const rosePinePresets: {
3
+ 'rose-pine': Readonly<{
4
+ dim: true | string;
5
+ supportsBackground: boolean;
6
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
7
+ textPrimary: "#e0def4";
8
+ textSecondary: "#c4c1d8";
9
+ textMuted: "#908caa";
10
+ brandPrimary: "#f6c177";
11
+ brandAccent: "#ebbcba";
12
+ surface: "#191724";
13
+ surfaceRaised: "#1f1d2e";
14
+ accent: "#9ccfd8";
15
+ user: "#f6c177";
16
+ assistant: "#c4a7e7";
17
+ tool: "#9ccfd8";
18
+ success: "#31748f";
19
+ warn: "#f6c177";
20
+ error: "#eb6f92";
21
+ borderDefault: "#524f67";
22
+ borderSubtle: "#26233a";
23
+ borderActive: "#ebbcba";
24
+ brand: "#c4a7e7";
25
+ diffAddBg: "#1f3538";
26
+ diffDelBg: "#3a2530";
27
+ monitor: {
28
+ fleet: string;
29
+ agents: string;
30
+ worktree: string;
31
+ phase: string;
32
+ };
33
+ }>;
34
+ 'rose-pine-moon': Readonly<{
35
+ dim: true | string;
36
+ supportsBackground: boolean;
37
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
38
+ textPrimary: "#e0def4";
39
+ textSecondary: "#c4c1d8";
40
+ textMuted: "#6e6a86";
41
+ brandPrimary: "#f6c177";
42
+ brandAccent: "#ea9a97";
43
+ surface: "#232136";
44
+ surfaceRaised: "#2a273f";
45
+ accent: "#9ccfd8";
46
+ user: "#f6c177";
47
+ assistant: "#c4a7e7";
48
+ tool: "#3e8fb0";
49
+ success: "#3e8fb0";
50
+ warn: "#f6c177";
51
+ error: "#eb6f92";
52
+ borderDefault: "#44415a";
53
+ borderSubtle: "#393552";
54
+ borderActive: "#ea9a97";
55
+ brand: "#c4a7e7";
56
+ diffAddBg: "#22403e";
57
+ diffDelBg: "#3a2836";
58
+ monitor: {
59
+ fleet: string;
60
+ agents: string;
61
+ worktree: string;
62
+ phase: string;
63
+ };
64
+ }>;
65
+ };
66
+ //# sourceMappingURL=rose-pine.d.ts.map
@@ -0,0 +1,68 @@
1
+ /** 2 palettes: synthwave, laserwave. */
2
+ export declare const synthwavePresets: {
3
+ synthwave: Readonly<{
4
+ dim: true | string;
5
+ supportsBackground: boolean;
6
+ textPrimary: "#f8f8f2";
7
+ textSecondary: "#c9c9de";
8
+ textMuted: "#9d9dc0";
9
+ brandPrimary: "#ff7edb";
10
+ brandAccent: "#b56cff";
11
+ surface: "#1a103a";
12
+ surfaceRaised: "#241b46";
13
+ accent: "#36f9f6";
14
+ user: "#fffc6e";
15
+ assistant: "#36f9f6";
16
+ tool: "#42f6e3";
17
+ success: "#72f1b8";
18
+ warn: "#fffc6e";
19
+ error: "#fe4450";
20
+ borderDefault: "#3d3266";
21
+ borderSubtle: "#2c2254";
22
+ borderActive: "#ff7edb";
23
+ brand: "#b56cff";
24
+ diffAddBg: "#1f3530";
25
+ diffDelBg: "#3a1f30";
26
+ monitor: {
27
+ fleet: string;
28
+ agents: string;
29
+ worktree: string;
30
+ phase: string;
31
+ };
32
+ syntax: {
33
+ string: string;
34
+ };
35
+ }>;
36
+ laserwave: Readonly<{
37
+ dim: true | string;
38
+ supportsBackground: boolean;
39
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
40
+ textPrimary: "#ffffff";
41
+ textSecondary: "#d0bfe6";
42
+ textMuted: "#716485";
43
+ brandPrimary: "#eb64b9";
44
+ brandAccent: "#b381c5";
45
+ surface: "#161320";
46
+ surfaceRaised: "#1f1a2e";
47
+ accent: "#40b4c4";
48
+ user: "#eb64b9";
49
+ assistant: "#40b4c4";
50
+ tool: "#b381c5";
51
+ success: "#74dfc4";
52
+ warn: "#ffe261";
53
+ error: "#e95678";
54
+ borderDefault: "#44385f";
55
+ borderSubtle: "#3a2f52";
56
+ borderActive: "#eb64b9";
57
+ brand: "#b381c5";
58
+ diffAddBg: "#143830";
59
+ diffDelBg: "#3a1728";
60
+ monitor: {
61
+ fleet: string;
62
+ agents: string;
63
+ worktree: string;
64
+ phase: string;
65
+ };
66
+ }>;
67
+ };
68
+ //# sourceMappingURL=synthwave.d.ts.map
@@ -0,0 +1,97 @@
1
+ /** 3 palettes: tokyo-night, tokyo-night-storm, tokyo-night-moon. */
2
+ export declare const tokyoNightPresets: {
3
+ 'tokyo-night': Readonly<{
4
+ dim: true | string;
5
+ supportsBackground: boolean;
6
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
7
+ textPrimary: "#c0caf5";
8
+ textSecondary: "#a9b1d6";
9
+ textMuted: "#5a6390";
10
+ brandPrimary: "#ff9e64";
11
+ brandAccent: "#bb9af7";
12
+ surface: "#16161e";
13
+ surfaceRaised: "#1d1f2e";
14
+ accent: "#7dcfff";
15
+ user: "#e0af68";
16
+ assistant: "#7dcfff";
17
+ tool: "#73daca";
18
+ success: "#9ece6a";
19
+ warn: "#e0af68";
20
+ error: "#f7768e";
21
+ borderDefault: "#414868";
22
+ borderSubtle: "#24283b";
23
+ borderActive: "#ff9e64";
24
+ brand: "#bb9af7";
25
+ diffAddBg: "#1c3326";
26
+ diffDelBg: "#37202b";
27
+ monitor: {
28
+ fleet: string;
29
+ agents: string;
30
+ worktree: string;
31
+ phase: string;
32
+ };
33
+ }>;
34
+ 'tokyo-night-storm': Readonly<{
35
+ dim: true | string;
36
+ supportsBackground: boolean;
37
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
38
+ textPrimary: "#c0caf5";
39
+ textSecondary: "#a9b1d6";
40
+ textMuted: "#6b76a8";
41
+ brandPrimary: "#ff9e64";
42
+ brandAccent: "#bb9af7";
43
+ surface: "#1f2335";
44
+ surfaceRaised: "#24283b";
45
+ accent: "#7aa2f7";
46
+ user: "#e0af68";
47
+ assistant: "#7dcfff";
48
+ tool: "#73daca";
49
+ success: "#9ece6a";
50
+ warn: "#e0af68";
51
+ error: "#f7768e";
52
+ borderDefault: "#3b4261";
53
+ borderSubtle: "#3a405f";
54
+ borderActive: "#7aa2f7";
55
+ brand: "#bb9af7";
56
+ diffAddBg: "#20372c";
57
+ diffDelBg: "#3b2331";
58
+ monitor: {
59
+ fleet: string;
60
+ agents: string;
61
+ worktree: string;
62
+ phase: string;
63
+ };
64
+ }>;
65
+ 'tokyo-night-moon': Readonly<{
66
+ dim: true | string;
67
+ supportsBackground: boolean;
68
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
69
+ textPrimary: "#c8d3f5";
70
+ textSecondary: "#a5b6cf";
71
+ textMuted: "#636e8d";
72
+ brandPrimary: "#ff966c";
73
+ brandAccent: "#c099ff";
74
+ surface: "#1e2030";
75
+ surfaceRaised: "#2a2d45";
76
+ accent: "#82aaff";
77
+ user: "#ffc777";
78
+ assistant: "#82aaff";
79
+ tool: "#c099ff";
80
+ success: "#c3e88d";
81
+ warn: "#ffc777";
82
+ error: "#ff757f";
83
+ borderDefault: "#3b4261";
84
+ borderSubtle: "#3a405f";
85
+ borderActive: "#82aaff";
86
+ brand: "#c099ff";
87
+ diffAddBg: "#1d3627";
88
+ diffDelBg: "#3d1e28";
89
+ monitor: {
90
+ fleet: string;
91
+ agents: string;
92
+ worktree: string;
93
+ phase: string;
94
+ };
95
+ }>;
96
+ };
97
+ //# sourceMappingURL=tokyo-night.d.ts.map
@@ -0,0 +1,66 @@
1
+ /** 2 palettes: vitesse-dark, vitesse-black. */
2
+ export declare const vitessePresets: {
3
+ 'vitesse-dark': Readonly<{
4
+ dim: true | string;
5
+ supportsBackground: boolean;
6
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
7
+ textPrimary: "#dbd7ca";
8
+ textSecondary: "#bfbaaa";
9
+ textMuted: "#758575";
10
+ brandPrimary: "#dfab5c";
11
+ brandAccent: "#d3869b";
12
+ surface: "#121212";
13
+ surfaceRaised: "#1c1c1c";
14
+ accent: "#6394bf";
15
+ user: "#e6cc77";
16
+ assistant: "#5eaab5";
17
+ tool: "#6394bf";
18
+ success: "#4d9375";
19
+ warn: "#e6cc77";
20
+ error: "#cb7676";
21
+ borderDefault: "#333333";
22
+ borderSubtle: "#2d2d2d";
23
+ borderActive: "#dfab5c";
24
+ brand: "#d3869b";
25
+ diffAddBg: "#16301f";
26
+ diffDelBg: "#331d1d";
27
+ monitor: {
28
+ fleet: string;
29
+ agents: string;
30
+ worktree: string;
31
+ phase: string;
32
+ };
33
+ }>;
34
+ 'vitesse-black': Readonly<{
35
+ dim: true | string;
36
+ supportsBackground: boolean;
37
+ syntax?: Partial<import("../theme-types.js").SyntaxPalette> | undefined;
38
+ textPrimary: "#dbd7ca";
39
+ textSecondary: "#bdb9ac";
40
+ textMuted: "#8a8f85";
41
+ brandPrimary: "#dfab5c";
42
+ brandAccent: "#d3869b";
43
+ surface: "#0a0a0a";
44
+ surfaceRaised: "#181818";
45
+ accent: "#6394bf";
46
+ user: "#dfab5c";
47
+ assistant: "#5eaab5";
48
+ tool: "#8ac699";
49
+ success: "#4d9375";
50
+ warn: "#e6cc77";
51
+ error: "#cb7676";
52
+ borderDefault: "#3d3d3d";
53
+ borderSubtle: "#1d1d1d";
54
+ borderActive: "#dfab5c";
55
+ brand: "#d3869b";
56
+ diffAddBg: "#254236";
57
+ diffDelBg: "#5e3939";
58
+ monitor: {
59
+ fleet: string;
60
+ agents: string;
61
+ worktree: string;
62
+ phase: string;
63
+ };
64
+ }>;
65
+ };
66
+ //# sourceMappingURL=vitesse.d.ts.map
@@ -1,6 +1,19 @@
1
- import type { Theme, ThemeName, ThemePickerOption } from './theme-types.js';
2
- export declare const baseTheme: Theme;
1
+ import { baseTheme } from './theme-presets/base.js';
2
+ import { THEME_OPTIONS } from './theme-presets/options.js';
3
+ import type { Theme, ThemeName } from './theme-types.js';
4
+ export { baseTheme, THEME_OPTIONS };
5
+ /**
6
+ * The canonical preset registry. The palette data itself lives in
7
+ * `theme-presets/<family>.ts` modules — this file only composes them, per
8
+ * the architecture hotspot guardrail on this path.
9
+ *
10
+ * Every colour key is written out explicitly in each preset rather than
11
+ * inherited from `baseTheme`: fourteen presets once shipped Catppuccin body
12
+ * text on their own palettes because they spread `...baseTheme` and forgot
13
+ * to override the text tokens. `satisfies Record<string, Theme>` in the data
14
+ * modules keeps each entry type-checked, and the annotation below keeps a
15
+ * missing preset a compile error.
16
+ */
3
17
  export declare const themePresets: Record<ThemeName, Theme>;
4
- export declare const THEME_OPTIONS: readonly ThemePickerOption[];
5
- export declare const themePickerOptions: readonly ThemePickerOption[];
18
+ export declare const themePickerOptions: readonly import("./theme-types.js").ThemePickerOption[];
6
19
  //# sourceMappingURL=theme-presets.d.ts.map
@@ -24,10 +24,14 @@ export interface RunBlocksCapabilities {
24
24
  visionAdapters?: VisionAdapters | undefined;
25
25
  onSDDOutput?: ((output: string) => Promise<string[]>) | undefined;
26
26
  onSuggestionsParsed?: ((finalText: string) => void) | undefined;
27
+ /** Suppresses next-step extraction and prediction for a self-managed loop. */
28
+ shouldSuppressNextSteps?: (() => boolean) | undefined;
27
29
  predictNext?: ((input: {
28
30
  userRequest: string;
29
31
  assistantSummary: string;
30
32
  }) => Promise<string[]>) | undefined;
33
+ /** Observes a completed foreground run after its result has been rendered. */
34
+ onRunFinished?: ((status: 'done' | 'aborted' | 'failed' | 'max_iterations') => void) | undefined;
31
35
  }
32
36
  type ClearAction = Extract<Action, {
33
37
  type: 'clearHistory';
@@ -1,5 +1,5 @@
1
1
  import type { AgentTimelineEntry } from '@wrongstack/core/coordination';
2
- import type { StatuslineItem as StatuslineItemSource } from './components/statusline-picker.js';
2
+ import type { StatuslineItem as StatuslineItemSource } from '@wrongstack/core/statusline';
3
3
  /**
4
4
  * Maximum mission-queue rows rendered in the right sidebar. Shared contract:
5
5
  * SidebarContent (components/sidebar-content.tsx) caps the rendered rows at
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wrongstack/tui",
3
- "version": "0.319.0",
3
+ "version": "1.0.0",
4
4
  "license": "MIT",
5
5
  "description": "WrongStack terminal UI: Ink-based interactive renderer with history, pickers, and slash menus.",
6
6
  "repository": {
@@ -26,12 +26,12 @@
26
26
  "!dist/**/*.map"
27
27
  ],
28
28
  "dependencies": {
29
- "@wrongstack/core": "0.319.0",
30
- "@wrongstack/kanban": "0.319.0",
31
- "@wrongstack/runtime": "0.319.0",
32
- "@wrongstack/sage": "0.319.0",
33
- "@wrongstack/sdd": "0.319.0",
34
- "@wrongstack/tools": "0.319.0",
29
+ "@wrongstack/core": "1.0.0",
30
+ "@wrongstack/kanban": "1.0.0",
31
+ "@wrongstack/runtime": "1.0.0",
32
+ "@wrongstack/sage": "1.0.0",
33
+ "@wrongstack/sdd": "1.0.0",
34
+ "@wrongstack/tools": "1.0.0",
35
35
  "ink": "7.1.1",
36
36
  "react": "^19.2.8",
37
37
  "string-width": "8.2.2",
@@ -1,42 +0,0 @@
1
- import type React from 'react';
2
- /** Which interactive context is active — drives which shortcuts the bar shows.
3
- * Ordered by priority (a confirm prompt overrides a picker, etc.). */
4
- export interface KeyHintContext {
5
- confirm?: boolean | undefined;
6
- picker?: boolean | undefined;
7
- monitor?: boolean;
8
- managed?: boolean;
9
- /** Hint for the next panel: key combination and panel name to encourage discovery. */
10
- nextPanelHint?: {
11
- key: string;
12
- label: string;
13
- } | undefined;
14
- }
15
- export interface Hint {
16
- key: string;
17
- label: string;
18
- /** When true, render in a distinct color to highlight panel discovery. */
19
- discovery?: boolean | undefined;
20
- }
21
- /**
22
- * Messages cycled in the idle status line (no active confirm/picker/monitor).
23
- * The first entry is the canonical brand link — tests depend on it being
24
- * index 0, so keep it there.
25
- */
26
- export declare const IDLE_MESSAGES: readonly Hint[];
27
- /** Returns true when no interactive context is active (idle / chat). */
28
- export declare function isIdleContext(ctx: KeyHintContext): boolean;
29
- export declare function hintsFor(ctx: KeyHintContext): Hint[];
30
- /**
31
- * Persistent one-line keybinding hint bar shown at the very bottom of the TUI,
32
- * like a status-line cheat sheet. Context-aware: surfaces the keys that matter
33
- * for whatever is on screen (confirm prompt → y/n/a/d, picker → ↑↓/↵, etc.).
34
- * Discovery hints (next panel) are rendered in a distinct color to encourage exploration.
35
- *
36
- * When idle (no active context), the bar rotates through {@link IDLE_MESSAGES}
37
- * on an interval so the status line serves different purposes over time.
38
- */
39
- export declare function KeyHintBar({ context }: {
40
- context: KeyHintContext;
41
- }): React.ReactElement;
42
- //# sourceMappingURL=key-hint-bar.d.ts.map
@@ -1,40 +0,0 @@
1
- import React from 'react';
2
- import type { FleetEntry } from '../app.js';
3
- interface LiveActivityStripProps {
4
- /** Per-subagent state from the FleetEntry table. */
5
- entries: Record<string, FleetEntry>;
6
- /** Re-renders every tick so elapsed timers stay live; otherwise the
7
- * bar freezes between FleetEntry updates (which can be 30s+ apart
8
- * if a subagent is parked in one tool). */
9
- nowTick: number;
10
- /** Optional cap on rows so a 20-subagent fleet doesn't push the
11
- * input off-screen. Default 4 — matches the status bar's 4th line. */
12
- maxRows?: number | undefined;
13
- }
14
- /**
15
- * Build the fixed-height set of strip rows. ALWAYS returns exactly
16
- * `maxRows` strings, each already truncated to `width` columns (no wrap).
17
- *
18
- * This is the inline-mode contract every bottom live region in the TUI
19
- * must honor (see live-tail-fixed-height.test.ts): a region whose height
20
- * or visual-row count changes between renders scrolls the screen on every
21
- * update, and in inline mode each scroll strands the changed rows into
22
- * native scrollback — the "● Security Scanner …" line re-stamped dozens of
23
- * times per second when a fleet is busy. Constant height + hard truncation
24
- * keeps Ink's log-update clear-and-rewrite in lockstep with what's drawn,
25
- * so nothing leaks. The leading "● " bullet is rendered by the component
26
- * (colored), so these strings exclude it and are truncated to `width - 2`.
27
- */
28
- export declare function activityStripRows(entries: Record<string, FleetEntry>, now: number, maxRows: number, width: number): string[];
29
- /**
30
- * Compact strip that sits directly above the input area, one line per
31
- * running subagent. Renders at a CONSTANT height (`maxRows`) with every
32
- * row hard-truncated to the terminal width, so it can never bleed into
33
- * native scrollback in inline mode (see `activityStripRows`).
34
- *
35
- * Renders nothing only when the fleet table is completely empty (e.g.
36
- * after /clear), so the input sits flush against history during solo work.
37
- */
38
- export declare const LiveActivityStrip: React.MemoExoticComponent<({ entries, nowTick, maxRows, }: LiveActivityStripProps) => React.ReactElement | null>;
39
- export {};
40
- //# sourceMappingURL=live-activity-strip.d.ts.map
@@ -1,5 +0,0 @@
1
- import { type MemoryContextMonitorState } from '../memory-context-monitor.js';
2
- export declare function MemoryContextWidget({ state }: {
3
- state: MemoryContextMonitorState;
4
- }): import("react").JSX.Element | null;
5
- //# sourceMappingURL=memory-context-widget.d.ts.map
@@ -1,10 +0,0 @@
1
- import type React from 'react';
2
- import type { StatusBarProps } from './status-bar-types.js';
3
- /**
4
- * Detailed status panel showing all status line information in a structured
5
- * read-only view. Toggle via F12 picker's detail option or Esc to close.
6
- */
7
- export declare function StatuslineDetailPanel(props: StatusBarProps & {
8
- onClose: () => void;
9
- }): React.ReactElement;
10
- //# sourceMappingURL=statusline-detail-panel.d.ts.map