@wrongstack/tui 1.0.13 → 1.0.15
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/README.md +5 -1
- package/dist/app-action-type.d.ts +9 -2
- package/dist/app-props.d.ts +9 -5
- package/dist/app-state.d.ts +3 -1
- package/dist/components/powerline-rail.d.ts +17 -12
- package/dist/components/status-bar-types.d.ts +3 -1
- package/dist/components/status-bar.d.ts +3 -3
- package/dist/components/status-line-registry.d.ts +4 -2
- package/dist/components/statusline-picker.d.ts +10 -6
- package/dist/hooks/use-app-environment.d.ts +4 -1
- package/dist/hooks/use-statusline-hidden-sync.d.ts +7 -4
- package/dist/hooks/use-statusline-state.d.ts +5 -1
- package/dist/hooks/use-tui-environment-state.d.ts +4 -2
- package/dist/index.js +462 -166
- package/dist/input-validation/action-types.d.ts +1 -1
- package/dist/reducers/panel-pickers.d.ts +1 -1
- package/dist/run-tui-options.d.ts +9 -5
- package/dist/ui-glyphs.d.ts +21 -1
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -84,7 +84,11 @@ The wordmark and route label render in the brand gradient (orange → pink).
|
|
|
84
84
|
|
|
85
85
|
The TUI defaults to a portable Unicode icon set, so the segmented status rail,
|
|
86
86
|
composer frame, and tool cards work without installing a special font. Two
|
|
87
|
-
|
|
87
|
+
When no override is set, WrongStack checks the local OS font directories once
|
|
88
|
+
at startup and automatically selects the Nerd profile when it finds an
|
|
89
|
+
installed Nerd Font. SSH sessions stay on portable Unicode because the server
|
|
90
|
+
cannot inspect the client terminal's font. Explicit profiles are available
|
|
91
|
+
through `WRONGSTACK_TUI_ICON_STYLE`:
|
|
88
92
|
|
|
89
93
|
```powershell
|
|
90
94
|
# Rich Powerline + development icons (requires a Nerd Font in the terminal)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StatuslineDensities, StatuslineDensity, StatuslineLine, StatuslineLines } from '@wrongstack/core/statusline';
|
|
1
|
+
import type { StatuslineDensities, StatuslineDensity, StatuslineLine, StatuslineLines, StatuslineOrder } from '@wrongstack/core/statusline';
|
|
2
2
|
import type { AutonomyStage, ContextSnapshot, DesignKitEntry, FleetChatVerbosity, SkillEntry, TokenSavingTier } from '@wrongstack/core/types';
|
|
3
3
|
import type { SddBoardSnapshot } from '@wrongstack/sdd';
|
|
4
4
|
import type { State } from './app-state.js';
|
|
@@ -543,6 +543,7 @@ export type Action = {
|
|
|
543
543
|
hiddenItems: StatuslineItem[];
|
|
544
544
|
lines?: StatuslineLines | undefined;
|
|
545
545
|
densities?: StatuslineDensities | undefined;
|
|
546
|
+
order?: StatuslineOrder | undefined;
|
|
546
547
|
} | {
|
|
547
548
|
type: 'statuslineClose';
|
|
548
549
|
} | {
|
|
@@ -567,6 +568,12 @@ export type Action = {
|
|
|
567
568
|
item: StatuslineItem;
|
|
568
569
|
delta: number;
|
|
569
570
|
}
|
|
571
|
+
/** Move a chip earlier/later within its effective rail. */
|
|
572
|
+
| {
|
|
573
|
+
type: 'statuslineMoveOrder';
|
|
574
|
+
item: StatuslineItem;
|
|
575
|
+
delta: number;
|
|
576
|
+
}
|
|
570
577
|
/** Cycle or set a chip's density pin (auto → full → short → micro). */
|
|
571
578
|
| {
|
|
572
579
|
type: 'statuslineSetDensity';
|
|
@@ -578,7 +585,7 @@ export type Action = {
|
|
|
578
585
|
type: 'statuslineToggleLine';
|
|
579
586
|
line: StatuslineLine;
|
|
580
587
|
}
|
|
581
|
-
/** Restore default lines and densities (chip visibility untouched). */
|
|
588
|
+
/** Restore default lines, order and densities (chip visibility untouched). */
|
|
582
589
|
| {
|
|
583
590
|
type: 'statuslineResetLayout';
|
|
584
591
|
}
|
package/dist/app-props.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Agent } from '@wrongstack/core/agent';
|
|
|
2
2
|
import type { CoordinatorEvent, Director } from '@wrongstack/core/coordination';
|
|
3
3
|
import type { EventBus } from '@wrongstack/core/kernel';
|
|
4
4
|
import type { SlashCommandRegistry } from '@wrongstack/core/registry';
|
|
5
|
-
import type { StatuslineDensities, StatuslineLines } from '@wrongstack/core/statusline';
|
|
5
|
+
import type { StatuslineDensities, StatuslineLines, StatuslineOrder } from '@wrongstack/core/statusline';
|
|
6
6
|
import type { QueueStore } from '@wrongstack/core/storage';
|
|
7
7
|
import type { AttachmentStore, AutonomyStage, ConfigStore, ContextSnapshot, FleetChatVerbosity, Message, SessionLoadProgress, SkillLoader, TokenCounter, TokenSavingTier } from '@wrongstack/core/types';
|
|
8
8
|
import type { VisionAdapters } from '@wrongstack/runtime/vision';
|
|
@@ -600,15 +600,19 @@ export interface AppProps {
|
|
|
600
600
|
* Optional: hosts that don't load it keep the core contract defaults.
|
|
601
601
|
*/
|
|
602
602
|
statuslineLines?: StatuslineLines | undefined;
|
|
603
|
-
setStatuslineLines?: (lines: StatuslineLines) => void;
|
|
604
|
-
saveStatuslineLines?: (lines: StatuslineLines) => Promise<void
|
|
603
|
+
setStatuslineLines?: ((lines: StatuslineLines) => void) | undefined;
|
|
604
|
+
saveStatuslineLines?: ((lines: StatuslineLines) => Promise<void>) | undefined;
|
|
605
605
|
/**
|
|
606
606
|
* Per-chip density pin (statusline.json schema v3). Absent keys leave the
|
|
607
607
|
* chip to the rail fitter.
|
|
608
608
|
*/
|
|
609
609
|
statuslineDensities?: StatuslineDensities | undefined;
|
|
610
|
-
setStatuslineDensities?: (densities: StatuslineDensities) => void;
|
|
611
|
-
saveStatuslineDensities?: (densities: StatuslineDensities) => Promise<void
|
|
610
|
+
setStatuslineDensities?: ((densities: StatuslineDensities) => void) | undefined;
|
|
611
|
+
saveStatuslineDensities?: ((densities: StatuslineDensities) => Promise<void>) | undefined;
|
|
612
|
+
/** Custom left-to-right chip order (statusline.json schema v4). */
|
|
613
|
+
statuslineOrder?: StatuslineOrder | undefined;
|
|
614
|
+
setStatuslineOrder?: ((order: StatuslineOrder) => void) | undefined;
|
|
615
|
+
saveStatuslineOrder?: ((order: StatuslineOrder) => Promise<void>) | undefined;
|
|
612
616
|
/**
|
|
613
617
|
* Controller for the agents monitor overlay. App installs a dispatch-backed
|
|
614
618
|
* setter on mount so the `/agents on|off` slash command can toggle the
|
package/dist/app-state.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StatuslineDensities, StatuslineLines } from '@wrongstack/core/statusline';
|
|
1
|
+
import type { StatuslineDensities, StatuslineLines, StatuslineOrder } from '@wrongstack/core/statusline';
|
|
2
2
|
import type { AutonomyStage, ContentBlock, DesignKitEntry, FleetChatVerbosity, SkillEntry, TokenSavingTier } from '@wrongstack/core/types';
|
|
3
3
|
import type { SddBoardSnapshot } from '@wrongstack/sdd';
|
|
4
4
|
import type { GoalSummary, QueueItem, ResumeSessionEntry, SlashCommandMatch } from './app-state-core-types.js';
|
|
@@ -443,6 +443,8 @@ export type State = {
|
|
|
443
443
|
lines: StatuslineLines;
|
|
444
444
|
/** Per-chip density pin being edited. */
|
|
445
445
|
densities: StatuslineDensities;
|
|
446
|
+
/** Custom left-to-right chip order being edited. */
|
|
447
|
+
order: StatuslineOrder;
|
|
446
448
|
/** Text filter over chip names/descriptions. */
|
|
447
449
|
filter: string;
|
|
448
450
|
/** True while `/` is capturing filter keystrokes. */
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
export declare function visibleNodeText(node: React.ReactNode): string;
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Columns between adjacent chip payloads: one transition glyph plus one
|
|
5
|
+
* padding cell on each side of the incoming payload.
|
|
6
|
+
*/
|
|
7
|
+
export declare const RAIL_SEP_COST = 3;
|
|
5
8
|
export interface RailSpanEntry {
|
|
6
9
|
/** Stable identifier used by the mouse hit-test ('model', 'todos', …). */
|
|
7
10
|
id: string;
|
|
@@ -36,9 +39,9 @@ export interface RailLayout {
|
|
|
36
39
|
items: RailLayoutItem[];
|
|
37
40
|
/** Ids the fitter had to drop entirely (rendered as the `+N` marker). */
|
|
38
41
|
droppedIds: string[];
|
|
39
|
-
/** Whether the
|
|
42
|
+
/** Whether the reserved priority-tail chip fits and will be drawn. */
|
|
40
43
|
rightVisible: boolean;
|
|
41
|
-
/**
|
|
44
|
+
/** Reserved for layout consumers; connected tails use no filler gap. */
|
|
42
45
|
gap: number;
|
|
43
46
|
/** Columns the rail actually consumes (left chips + separators + anchor). */
|
|
44
47
|
used: number;
|
|
@@ -63,18 +66,20 @@ interface PowerlineRailProps {
|
|
|
63
66
|
segments: Array<React.ReactElement | RailSpanEntry>;
|
|
64
67
|
budget: number;
|
|
65
68
|
/**
|
|
66
|
-
* Optional
|
|
67
|
-
*
|
|
68
|
-
* position is independent of how wide the left segments are —
|
|
69
|
-
* preventing visual jitter when the left side updates frequently.
|
|
69
|
+
* Optional priority-tail segment. The fitter reserves it before dropping
|
|
70
|
+
* ordinary chips, then the renderer joins it to the same connected rail.
|
|
70
71
|
*/
|
|
71
72
|
rightAnchor?: React.ReactElement | null | undefined;
|
|
73
|
+
/** Keep the segmented silhouette but emit no foreground/background colors. */
|
|
74
|
+
monochrome?: boolean | undefined;
|
|
72
75
|
}
|
|
73
76
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
+
* Theme-aware, Powerline-style status capsules. Chip payloads keep their
|
|
78
|
+
* semantic foreground colors while low-contrast surface tones provide the
|
|
79
|
+
* connected silhouette. The renderer and layout fitter share the exact cap,
|
|
80
|
+
* transition, padding and anchor costs, keeping overflow and pointer spans
|
|
81
|
+
* aligned with the cells on screen.
|
|
77
82
|
*/
|
|
78
|
-
export declare function PowerlineRail({ segments, budget, rightAnchor, }: PowerlineRailProps): React.ReactElement;
|
|
83
|
+
export declare function PowerlineRail({ segments, budget, rightAnchor, monochrome, }: PowerlineRailProps): React.ReactElement;
|
|
79
84
|
export {};
|
|
80
85
|
//# sourceMappingURL=powerline-rail.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { EventBus } from '@wrongstack/core/kernel';
|
|
2
|
-
import type { StatuslineDensities, StatuslineLine, StatuslineLines } from '@wrongstack/core/statusline';
|
|
2
|
+
import type { StatuslineDensities, StatuslineLine, StatuslineLines, StatuslineOrder } from '@wrongstack/core/statusline';
|
|
3
3
|
import type { AutonomyStage, TokenCounter, TokenSavingTier } from '@wrongstack/core/types';
|
|
4
4
|
import type { GitInfo } from '../git-info.js';
|
|
5
5
|
import type { MemoryContextMonitorState } from '../memory-context-monitor.js';
|
|
@@ -250,6 +250,8 @@ export interface StatusBarProps {
|
|
|
250
250
|
* already at its narrowest form.
|
|
251
251
|
*/
|
|
252
252
|
statuslineDensities?: StatuslineDensities | undefined;
|
|
253
|
+
/** Custom left-to-right chip order (detailed mode). */
|
|
254
|
+
statuslineOrder?: StatuslineOrder | undefined;
|
|
253
255
|
/**
|
|
254
256
|
* Statusline density. The prop default 'detailed' is kept for back-compat
|
|
255
257
|
* with tests/callers that omit `mode`; the user-facing default is 'minimum'
|
|
@@ -8,9 +8,9 @@ export type { BrainStatusChip, ContextWindow, FleetAgentDetail, FleetCounts, Mai
|
|
|
8
8
|
* the reader's eye learns where to look:
|
|
9
9
|
*
|
|
10
10
|
* L1 IDENTITY — project, working_dir, git, model, mode, prompt_variant,
|
|
11
|
-
* theme, sessions, tools; version
|
|
11
|
+
* theme, sessions, tools; version is the reserved tail. Fixed for the session.
|
|
12
12
|
* L2 VITALS — state, context, tokens, cost, cache, elapsed, queue, hint;
|
|
13
|
-
* index
|
|
13
|
+
* index is the reserved tail. Redraws every token.
|
|
14
14
|
* L3 SAFETY & WORK — yolo, autonomy, eternal_stage, breaker, token_saving,
|
|
15
15
|
* processes, side_effects, dropped_tools, goal, todos, plan, tasks.
|
|
16
16
|
* L4 ASYNC — fleet, fleet_agents, mailbox, brain, debug_stream, memory,
|
|
@@ -22,5 +22,5 @@ export type { BrainStatusChip, ContextWindow, FleetAgentDetail, FleetCounts, Mai
|
|
|
22
22
|
* the rendered entries themselves, so an empty rail never renders and a
|
|
23
23
|
* vanilla session keeps its two-line footprint.
|
|
24
24
|
*/
|
|
25
|
-
export declare function StatusBar({ model, provider, version, latestVersion, updateAvailable, state, thinkingWord, thinkingAnimationStyle, tokenCounter, hint, queueCount, yolo, autonomy, fleetWorkingTime, todos, plan, tasks, fleet, fleetAgents, git, subagentCount, brain, projectName, workingDir, processCount, context, estimatedContextTokens, Sage, memoryContextMonitor, contextStrategy, hiddenItems, statuslineLines, statuslineDensities, mode, events, sessionId, eternalStage, goalSummary, droppedTools, indexState, breakerCountdown, modeLabel, promptVariant, themeName, debugStreamStats, enhanceCountdown, nextStepsAutoSubmitCountdown, nextStepsAutoSubmitLabel, autoProceedCountdown, sessionCount, mailbox, tokenSavingMode, toolCount, visibleChips, sideEffectCount, maxWidth, clickMapRef, }: StatusBarProps): React.ReactElement;
|
|
25
|
+
export declare function StatusBar({ model, provider, version, latestVersion, updateAvailable, state, thinkingWord, thinkingAnimationStyle, tokenCounter, hint, queueCount, yolo, autonomy, fleetWorkingTime, todos, plan, tasks, fleet, fleetAgents, git, subagentCount, brain, projectName, workingDir, processCount, context, estimatedContextTokens, Sage, memoryContextMonitor, contextStrategy, hiddenItems, statuslineLines, statuslineDensities, statuslineOrder, mode, events, sessionId, eternalStage, goalSummary, droppedTools, indexState, breakerCountdown, modeLabel, promptVariant, themeName, debugStreamStats, enhanceCountdown, nextStepsAutoSubmitCountdown, nextStepsAutoSubmitLabel, autoProceedCountdown, sessionCount, mailbox, tokenSavingMode, toolCount, visibleChips, sideEffectCount, maxWidth, clickMapRef, }: StatusBarProps): React.ReactElement;
|
|
26
26
|
//# sourceMappingURL=status-bar.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { type StatuslineItem, type StatuslineLine, type StatuslineLines, type StatuslineOrder } from '@wrongstack/core/statusline';
|
|
1
2
|
import type React from 'react';
|
|
2
|
-
import { type StatuslineItem, type StatuslineLine, type StatuslineLines } from '@wrongstack/core/statusline';
|
|
3
3
|
import type { RailSpanEntry } from './powerline-rail.js';
|
|
4
4
|
import { type StatusBarRailBuildParams } from './status-bar-rails.js';
|
|
5
5
|
/**
|
|
@@ -35,7 +35,7 @@ export interface RailSource {
|
|
|
35
35
|
* Partition built rail entries into four lines. Pure — no builder calls, so
|
|
36
36
|
* tests can exercise line assignment with synthetic entries.
|
|
37
37
|
*/
|
|
38
|
-
export declare function partitionRailEntries(sources: readonly RailSource[], lines?: StatuslineLines): DetailedRail[];
|
|
38
|
+
export declare function partitionRailEntries(sources: readonly RailSource[], lines?: StatuslineLines, order?: StatuslineOrder): DetailedRail[];
|
|
39
39
|
export interface DetailedRailBuildOptions {
|
|
40
40
|
/** Pre-built provider/model chip (status-bar.tsx owns its dim-provider styling). */
|
|
41
41
|
modelChip: React.ReactElement | null;
|
|
@@ -48,6 +48,8 @@ export interface DetailedRailBuildOptions {
|
|
|
48
48
|
indexChip: React.ReactElement | null;
|
|
49
49
|
/** Per-chip line overrides; absent = `DEFAULT_LINES`. */
|
|
50
50
|
lines?: StatuslineLines | undefined;
|
|
51
|
+
/** Custom left-to-right chip order; absent = canonical contract order. */
|
|
52
|
+
order?: StatuslineOrder | undefined;
|
|
51
53
|
}
|
|
52
54
|
/**
|
|
53
55
|
* Build the four detailed-mode rails: run the rail builders (which apply
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CHIP_DESCRIPTIONS, DEFAULT_LINES, STATUSLINE_FIELD_COUNT, STATUSLINE_ITEMS, type StatuslineDensities, type StatuslineDensity, type StatuslineItem, type StatuslineLines } from '@wrongstack/core/statusline';
|
|
1
|
+
import { CHIP_DESCRIPTIONS, DEFAULT_LINES, STATUSLINE_FIELD_COUNT, STATUSLINE_ITEMS, type StatuslineDensities, type StatuslineDensity, type StatuslineItem, type StatuslineLine, type StatuslineLines, type StatuslineOrder } from '@wrongstack/core/statusline';
|
|
2
2
|
import type React from 'react';
|
|
3
3
|
import type { ChipMeta } from '../ui-contracts.js';
|
|
4
4
|
import type { StatusBarClickMap } from './status-bar-types.js';
|
|
@@ -41,7 +41,7 @@ export declare function nextDensity(current: StatuslineDensity, delta?: number):
|
|
|
41
41
|
*/
|
|
42
42
|
export declare function matchesFilter(item: StatuslineItem, filter: string): boolean;
|
|
43
43
|
/** Field indices the arrow keys may land on under the current filter. */
|
|
44
|
-
export declare function navigableFields(filter: string): number[];
|
|
44
|
+
export declare function navigableFields(filter: string, order?: StatuslineOrder): number[];
|
|
45
45
|
interface StatuslinePickerProps {
|
|
46
46
|
/** Focused field index into STATUSLINE_ITEMS. */
|
|
47
47
|
field: number;
|
|
@@ -51,6 +51,8 @@ interface StatuslinePickerProps {
|
|
|
51
51
|
lines?: StatuslineLines | undefined;
|
|
52
52
|
/** Per-chip density pin; absent keys mean 'auto'. */
|
|
53
53
|
densities?: StatuslineDensities | undefined;
|
|
54
|
+
/** Custom left-to-right order; absent means canonical contract order. */
|
|
55
|
+
order?: StatuslineOrder | undefined;
|
|
54
56
|
/** Temporarily-visible chips with expiration metadata. */
|
|
55
57
|
visibleChips?: ChipMeta[] | undefined;
|
|
56
58
|
/** Text filter over chip names and descriptions. */
|
|
@@ -62,15 +64,17 @@ interface StatuslinePickerProps {
|
|
|
62
64
|
/** Last published rail geometry, used for the live fill gauges. */
|
|
63
65
|
clickMap?: StatusBarClickMap | null | undefined;
|
|
64
66
|
}
|
|
67
|
+
/** Fixed-width inline line picker rendered beside every chip's on/off state. */
|
|
68
|
+
export declare function lineSelectorText(active: StatuslineLine): string;
|
|
65
69
|
/**
|
|
66
70
|
* The `/statusline` editor.
|
|
67
71
|
*
|
|
68
|
-
*
|
|
69
|
-
*
|
|
70
|
-
*
|
|
72
|
+
* Line, order and density controls share one row: 1-4 assigns the rail,
|
|
73
|
+
* `o`/`O` changes left-to-right position (`[`/`]` and Shift+Up/Down are aliases), and `d` pins density. The
|
|
74
|
+
* measured strip above previews the resulting layout rather than mocking it.
|
|
71
75
|
* The layout strip at the top is not a mock-up — it reads the rail geometry
|
|
72
76
|
* the StatusBar published on its last render, so `used/budget` and the
|
|
73
77
|
* dropped/shortened marks are the real thing.
|
|
74
78
|
*/
|
|
75
|
-
export declare function StatuslinePicker({ field, hiddenItems, lines, densities, visibleChips, filter, filtering, hint, clickMap, }: StatuslinePickerProps): React.ReactElement;
|
|
79
|
+
export declare function StatuslinePicker({ field, hiddenItems, lines, densities, order, visibleChips, filter, filtering, hint, clickMap, }: StatuslinePickerProps): React.ReactElement;
|
|
76
80
|
//# sourceMappingURL=statusline-picker.d.ts.map
|
|
@@ -4,7 +4,7 @@ import type { Action } from '../app-action-type.js';
|
|
|
4
4
|
import type { AppProps } from '../app-props.js';
|
|
5
5
|
import type { State } from '../app-state.js';
|
|
6
6
|
import type { AppRefSpine } from './use-app-ref-spine.js';
|
|
7
|
-
export interface AppEnvironmentDeps extends Pick<AppProps, 'agent' | 'attachments' | 'configStore' | 'events' | 'memoryStore' | 'model' | 'provider' | 'effectiveMaxContext' | 'yolo' | 'getAutonomy' | 'modeLabel' | 'statuslineHiddenItems' | 'toolCount' | 'getSettings' | 'setStatuslineHiddenItems' | 'saveStatuslineHiddenItems' | 'statuslineLines' | 'titleController' | 'chime' | 'confirmExit' | 'getYolo' | 'getModeLabel' | 'getEternalEngine' | 'getParallelEngine' | 'switchAutonomy' | 'subscribeEternalIteration' | 'subscribeEternalStage' | 'getLiveSessions' | 'mouse' | 'capability' | 'saveSettings'> {
|
|
7
|
+
export interface AppEnvironmentDeps extends Pick<AppProps, 'agent' | 'attachments' | 'configStore' | 'events' | 'memoryStore' | 'model' | 'provider' | 'effectiveMaxContext' | 'yolo' | 'getAutonomy' | 'modeLabel' | 'statuslineHiddenItems' | 'toolCount' | 'getSettings' | 'setStatuslineHiddenItems' | 'saveStatuslineHiddenItems' | 'statuslineLines' | 'setStatuslineLines' | 'saveStatuslineLines' | 'statuslineDensities' | 'setStatuslineDensities' | 'saveStatuslineDensities' | 'statuslineOrder' | 'setStatuslineOrder' | 'saveStatuslineOrder' | 'titleController' | 'chime' | 'confirmExit' | 'getYolo' | 'getModeLabel' | 'getEternalEngine' | 'getParallelEngine' | 'switchAutonomy' | 'subscribeEternalIteration' | 'subscribeEternalStage' | 'getLiveSessions' | 'mouse' | 'capability' | 'saveSettings'> {
|
|
8
8
|
state: State;
|
|
9
9
|
dispatch: Dispatch<Action>;
|
|
10
10
|
mailboxPanelOpen: boolean;
|
|
@@ -60,6 +60,8 @@ export declare function useAppEnvironment(deps: AppEnvironmentDeps): {
|
|
|
60
60
|
setLines: (v: import("@wrongstack/core/statusline").StatuslineLines) => void;
|
|
61
61
|
densities: import("@wrongstack/core/statusline").StatuslineDensities;
|
|
62
62
|
setDensities: (v: import("@wrongstack/core/statusline").StatuslineDensities) => void;
|
|
63
|
+
order: import("@wrongstack/core/statusline").StatuslineOrder;
|
|
64
|
+
setOrder: (v: import("@wrongstack/core/statusline").StatuslineOrder) => void;
|
|
63
65
|
sessionCount: number;
|
|
64
66
|
setSessionCount: (v: number) => void;
|
|
65
67
|
hiddenItemsRef: React.RefObject<import("@wrongstack/core/statusline").StatuslineItem[]>;
|
|
@@ -101,6 +103,7 @@ export declare function useAppEnvironment(deps: AppEnvironmentDeps): {
|
|
|
101
103
|
refreshGoalSummary: () => void;
|
|
102
104
|
linesRef: React.RefObject<Partial<Record<import("@wrongstack/core/statusline").StatuslineItem, import("@wrongstack/core/statusline").StatuslineLine>>>;
|
|
103
105
|
densitiesRef: React.RefObject<Partial<Record<import("@wrongstack/core/statusline").StatuslineItem, import("@wrongstack/core/statusline").StatuslineDensity>>>;
|
|
106
|
+
orderRef: React.RefObject<import("@wrongstack/core/statusline").StatuslineOrder>;
|
|
104
107
|
projectRoot: string;
|
|
105
108
|
projectName: string | undefined;
|
|
106
109
|
workingDirChip: string | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StatuslineDensities, StatuslineLines } from '@wrongstack/core/statusline';
|
|
1
|
+
import type { StatuslineDensities, StatuslineLines, StatuslineOrder } from '@wrongstack/core/statusline';
|
|
2
2
|
import type { StatuslineItem } from '../components/statusline-picker.js';
|
|
3
3
|
export declare function statuslineHiddenDiffers(hookHidden: readonly StatuslineItem[], pickerHidden: readonly StatuslineItem[]): boolean;
|
|
4
4
|
/**
|
|
@@ -28,17 +28,20 @@ interface UseStatuslineLayoutSyncOptions {
|
|
|
28
28
|
layoutSeeded: boolean;
|
|
29
29
|
pickerLines: StatuslineLines;
|
|
30
30
|
pickerDensities: StatuslineDensities;
|
|
31
|
+
pickerOrder: StatuslineOrder;
|
|
31
32
|
lines: StatuslineLines;
|
|
32
33
|
densities: StatuslineDensities;
|
|
34
|
+
order: StatuslineOrder;
|
|
33
35
|
setLines: (lines: StatuslineLines) => void;
|
|
34
36
|
setDensities: (densities: StatuslineDensities) => void;
|
|
37
|
+
setOrder: (order: StatuslineOrder) => void;
|
|
35
38
|
}
|
|
36
39
|
/**
|
|
37
40
|
* The layout twin of {@link useStatuslineHiddenSync}: reducer-owned line and
|
|
38
|
-
* density edits land in the statusline state hook, which re-renders the bar
|
|
41
|
+
* density/order edits land in the statusline state hook, which re-renders the bar
|
|
39
42
|
* and (via `use-tui-environment-state`) persists them. Without this the
|
|
40
|
-
* picker's `1-4` / `d` keys would only change
|
|
43
|
+
* picker's `1-4` / `Shift+Up/Down` / `d` keys would only change its own view.
|
|
41
44
|
*/
|
|
42
|
-
export declare function useStatuslineLayoutSync({ pickerOpen, layoutSeeded, pickerLines, pickerDensities, lines, densities, setLines, setDensities, }: UseStatuslineLayoutSyncOptions): void;
|
|
45
|
+
export declare function useStatuslineLayoutSync({ pickerOpen, layoutSeeded, pickerLines, pickerDensities, pickerOrder, lines, densities, order, setLines, setDensities, setOrder, }: UseStatuslineLayoutSyncOptions): void;
|
|
43
46
|
export {};
|
|
44
47
|
//# sourceMappingURL=use-statusline-hidden-sync.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { StatuslineDensities, StatuslineLines } from '@wrongstack/core/statusline';
|
|
1
|
+
import type { StatuslineDensities, StatuslineLines, StatuslineOrder } from '@wrongstack/core/statusline';
|
|
2
2
|
import type { StatuslineItem } from '../components/statusline-picker.js';
|
|
3
3
|
export type AutonomyStage = 'off' | 'suggest' | 'auto' | 'eternal' | 'eternal-parallel';
|
|
4
4
|
/**
|
|
@@ -26,6 +26,8 @@ interface UseStatuslineStateOptions {
|
|
|
26
26
|
statuslineLines?: StatuslineLines | undefined;
|
|
27
27
|
/** Per-chip density pin (schema v3); absent keys leave the rail fitter free. */
|
|
28
28
|
statuslineDensities?: StatuslineDensities | undefined;
|
|
29
|
+
/** Custom left-to-right order (schema v4); empty means canonical. */
|
|
30
|
+
statuslineOrder?: StatuslineOrder | undefined;
|
|
29
31
|
}
|
|
30
32
|
interface UseStatuslineState {
|
|
31
33
|
liveModel: string;
|
|
@@ -46,6 +48,8 @@ interface UseStatuslineState {
|
|
|
46
48
|
setLines: (v: StatuslineLines) => void;
|
|
47
49
|
densities: StatuslineDensities;
|
|
48
50
|
setDensities: (v: StatuslineDensities) => void;
|
|
51
|
+
order: StatuslineOrder;
|
|
52
|
+
setOrder: (v: StatuslineOrder) => void;
|
|
49
53
|
sessionCount: number;
|
|
50
54
|
setSessionCount: (v: number) => void;
|
|
51
55
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { AppProps } from '../app-props.js';
|
|
2
|
-
type EnvironmentProps = Omit<Pick<AppProps, 'events' | 'memoryStore' | 'model' | 'provider' | 'effectiveMaxContext' | 'yolo' | 'getAutonomy' | 'modeLabel' | 'statuslineHiddenItems' | 'statuslineLines' | 'statuslineDensities' | 'toolCount' | 'getSettings' | 'setStatuslineHiddenItems' | 'saveStatuslineHiddenItems' | 'setStatuslineLines' | 'saveStatuslineLines' | 'setStatuslineDensities' | 'saveStatuslineDensities'>, 'yolo'> & {
|
|
2
|
+
type EnvironmentProps = Omit<Pick<AppProps, 'events' | 'memoryStore' | 'model' | 'provider' | 'effectiveMaxContext' | 'yolo' | 'getAutonomy' | 'modeLabel' | 'statuslineHiddenItems' | 'statuslineLines' | 'statuslineDensities' | 'statuslineOrder' | 'toolCount' | 'getSettings' | 'setStatuslineHiddenItems' | 'saveStatuslineHiddenItems' | 'setStatuslineLines' | 'saveStatuslineLines' | 'setStatuslineDensities' | 'saveStatuslineDensities' | 'setStatuslineOrder' | 'saveStatuslineOrder'>, 'yolo'> & {
|
|
3
3
|
yolo: boolean;
|
|
4
4
|
};
|
|
5
|
-
export declare function useTuiEnvironmentState({ events, memoryStore, model, provider, effectiveMaxContext, yolo, getAutonomy, modeLabel, statuslineHiddenItems, statuslineLines, statuslineDensities, toolCount, getSettings, setStatuslineHiddenItems, saveStatuslineHiddenItems, setStatuslineLines, saveStatuslineLines, setStatuslineDensities, saveStatuslineDensities, }: EnvironmentProps): {
|
|
5
|
+
export declare function useTuiEnvironmentState({ events, memoryStore, model, provider, effectiveMaxContext, yolo, getAutonomy, modeLabel, statuslineHiddenItems, statuslineLines, statuslineDensities, statuslineOrder, toolCount, getSettings, setStatuslineHiddenItems, saveStatuslineHiddenItems, setStatuslineLines, saveStatuslineLines, setStatuslineDensities, saveStatuslineDensities, setStatuslineOrder, saveStatuslineOrder, }: EnvironmentProps): {
|
|
6
6
|
liveModel: string;
|
|
7
7
|
setLiveModel: (v: string) => void;
|
|
8
8
|
liveProvider: string;
|
|
@@ -21,6 +21,8 @@ export declare function useTuiEnvironmentState({ events, memoryStore, model, pro
|
|
|
21
21
|
setLines: (v: import("@wrongstack/core/statusline").StatuslineLines) => void;
|
|
22
22
|
densities: import("@wrongstack/core/statusline").StatuslineDensities;
|
|
23
23
|
setDensities: (v: import("@wrongstack/core/statusline").StatuslineDensities) => void;
|
|
24
|
+
order: import("@wrongstack/core/statusline").StatuslineOrder;
|
|
25
|
+
setOrder: (v: import("@wrongstack/core/statusline").StatuslineOrder) => void;
|
|
24
26
|
sessionCount: number;
|
|
25
27
|
setSessionCount: (v: number) => void;
|
|
26
28
|
hiddenItemsRef: import("react").RefObject<import("@wrongstack/core/statusline").StatuslineItem[]>;
|