@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 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
- additional profiles are available through `WRONGSTACK_TUI_ICON_STYLE`:
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
  }
@@ -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
@@ -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
- /** Columns between two adjacent chips on a rail. */
4
- export declare const RAIL_SEP_COST = 2;
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 right-anchored chip fits and will be drawn. */
42
+ /** Whether the reserved priority-tail chip fits and will be drawn. */
40
43
  rightVisible: boolean;
41
- /** Filler columns between the last left chip and the right anchor. */
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 right-anchored segment. When provided, the rail reserves
67
- * space for this segment at the right edge of the budget so its
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
- * Status segments on the terminal's natural background.
75
- * No per-chip backgrounds, transition glyphs, or segment caps — just clean
76
- * chips separated by whitespace. The caller owns any outer side inset.
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 right-anchored. Fixed for the session.
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 right-anchored. Redraws every token.
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
- * Three things the old picker could not do, all of which the renderer and the
69
- * v3 config already supported with no UI to reach them: move a chip to
70
- * another line, pin its density, and see whether the result actually fits.
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 the picker's own view.
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[]>;