@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.
- package/README.md +0 -1
- package/dist/app-action-type.d.ts +46 -0
- package/dist/app-key-handler.d.ts +2 -0
- package/dist/app-props.d.ts +8 -1
- package/dist/app-state.d.ts +30 -0
- package/dist/app-view-contract.d.ts +2 -3
- package/dist/auth-panel-model.d.ts +70 -0
- package/dist/brain-panel-model.d.ts +11 -0
- package/dist/components/bug-hunt-continue-panel.d.ts +15 -0
- package/dist/components/bug-hunt-running-panel.d.ts +9 -0
- package/dist/components/confirm-prompt.d.ts +7 -1
- package/dist/components/help-panel.d.ts +1 -1
- package/dist/components/history/entry-helpers.d.ts +5 -0
- package/dist/components/history/index.d.ts +2 -2
- package/dist/components/history/scroll-controller-types.d.ts +1 -1
- package/dist/components/history/types.d.ts +1 -1
- package/dist/components/history/utils.d.ts +2 -2
- package/dist/components/history.d.ts +1 -1
- package/dist/components/mode-picker.d.ts +1 -1
- package/dist/components/powerline-rail.d.ts +46 -8
- package/dist/components/settings-picker-constants.d.ts +73 -0
- package/dist/components/settings-picker-model.d.ts +2 -192
- package/dist/components/settings-picker-resolver.d.ts +27 -0
- package/dist/components/shadow-panel.d.ts +1 -1
- package/dist/components/status-bar-chips.d.ts +1 -1
- package/dist/components/status-bar-format.d.ts +8 -1
- package/dist/components/status-bar-icons.d.ts +7 -1
- package/dist/components/status-bar-rails-async.d.ts +9 -0
- package/dist/components/status-bar-rails-common.d.ts +117 -0
- package/dist/components/status-bar-rails-safety.d.ts +9 -0
- package/dist/components/status-bar-rails.d.ts +16 -103
- package/dist/components/status-bar-types.d.ts +24 -5
- package/dist/components/status-bar.d.ts +18 -16
- package/dist/components/status-line-registry.d.ts +11 -13
- package/dist/components/statusline-picker.d.ts +48 -15
- package/dist/history-archive.d.ts +3 -1
- package/dist/history-entry.d.ts +18 -0
- package/dist/hooks/use-app-event-bridges.d.ts +22 -43
- package/dist/hooks/use-app-panels-state.d.ts +30 -12
- package/dist/hooks/use-app-pipeline-builders.d.ts +5 -0
- package/dist/hooks/use-bug-hunt-loop.d.ts +9 -0
- package/dist/hooks/use-history-auto-scroll.d.ts +13 -0
- package/dist/hooks/use-history-viewport-sync.d.ts +2 -2
- package/dist/hooks/use-mode-picker.d.ts +1 -1
- package/dist/hooks/use-statusline-hidden-sync.d.ts +29 -0
- package/dist/hooks/use-statusline-state.d.ts +5 -1
- package/dist/hooks/use-tui-environment-state.d.ts +4 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.js +6698 -5035
- package/dist/input-validation/action-types.d.ts +1 -1
- package/dist/input-validation.d.ts +3 -3
- package/dist/reducers/dialogs.d.ts +1 -1
- package/dist/reducers/panel-pickers.d.ts +1 -1
- package/dist/run-tui-options.d.ts +5 -1
- package/dist/submit-controller.d.ts +2 -0
- package/dist/theme-presets/accessible.d.ts +66 -0
- package/dist/theme-presets/atom.d.ts +97 -0
- package/dist/theme-presets/ayu.d.ts +66 -0
- package/dist/theme-presets/base.d.ts +3 -0
- package/dist/theme-presets/catppuccin.d.ts +97 -0
- package/dist/theme-presets/everforest.d.ts +66 -0
- package/dist/theme-presets/flexoki.d.ts +35 -0
- package/dist/theme-presets/github.d.ts +99 -0
- package/dist/theme-presets/gruvbox.d.ts +97 -0
- package/dist/theme-presets/japanese.d.ts +35 -0
- package/dist/theme-presets/material.d.ts +66 -0
- package/dist/theme-presets/misc-1.d.ts +254 -0
- package/dist/theme-presets/misc-2.d.ts +256 -0
- package/dist/theme-presets/misc-3.d.ts +252 -0
- package/dist/theme-presets/mono-crt.d.ts +66 -0
- package/dist/theme-presets/mono.d.ts +128 -0
- package/dist/theme-presets/monokai.d.ts +68 -0
- package/dist/theme-presets/nightfox.d.ts +35 -0
- package/dist/theme-presets/options.d.ts +4 -0
- package/dist/theme-presets/rose-pine.d.ts +66 -0
- package/dist/theme-presets/synthwave.d.ts +68 -0
- package/dist/theme-presets/tokyo-night.d.ts +97 -0
- package/dist/theme-presets/vitesse.d.ts +66 -0
- package/dist/theme-presets.d.ts +17 -4
- package/dist/tui-host-capabilities.d.ts +4 -0
- package/dist/ui-contracts.d.ts +1 -1
- package/package.json +7 -7
- package/dist/components/key-hint-bar.d.ts +0 -42
- package/dist/components/live-activity-strip.d.ts +0 -40
- package/dist/components/memory-context-widget.d.ts +0 -5
- package/dist/components/statusline-detail-panel.d.ts +0 -10
package/README.md
CHANGED
|
@@ -71,7 +71,6 @@ The wordmark and route label render in the brand gradient (orange → pink).
|
|
|
71
71
|
- **History pane** — assistant text, tool calls, tool results, errors, turn summaries
|
|
72
72
|
- **Streaming text** — partial deltas render live; on abort, partial response is preserved
|
|
73
73
|
- **Status bar** — model · provider · context-window % · YOLO chip · spinner
|
|
74
|
-
- **Bottom bar** — shows `github.com/wrongstack/wrongstack` in idle state; context-aware hints (y/n/a/d for confirm prompts, ↑↓/↵/Esc for pickers, Esc/F2/F3/F4/F6/F9 for monitors) appear when interactive overlays are active
|
|
75
74
|
- **Input box** — multi-line buffer with bracketed-paste detection, history (↑/↓), placeholder pills for attachments
|
|
76
75
|
- **Pickers** — fuzzy file picker (`@`), slash picker (`/`), model picker (Ctrl+M)
|
|
77
76
|
- **Permission dialog** — modal y/n/always/deny for `confirm`-permission tools
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StatuslineDensities, StatuslineDensity, StatuslineLine, StatuslineLines } from '@wrongstack/core/statusline';
|
|
1
2
|
import type { AutonomyStage, ContextSnapshot, DesignKitEntry, FleetChatVerbosity, SkillEntry, TokenSavingTier } from '@wrongstack/core/types';
|
|
2
3
|
import type { SddBoardSnapshot } from '@wrongstack/sdd';
|
|
3
4
|
import type { State } from './app-state.js';
|
|
@@ -465,6 +466,8 @@ export type Action = {
|
|
|
465
466
|
} | {
|
|
466
467
|
type: 'statuslineOpen';
|
|
467
468
|
hiddenItems: StatuslineItem[];
|
|
469
|
+
lines?: StatuslineLines | undefined;
|
|
470
|
+
densities?: StatuslineDensities | undefined;
|
|
468
471
|
} | {
|
|
469
472
|
type: 'statuslineClose';
|
|
470
473
|
} | {
|
|
@@ -476,6 +479,39 @@ export type Action = {
|
|
|
476
479
|
} | {
|
|
477
480
|
type: 'statuslineToggle';
|
|
478
481
|
item: StatuslineItem;
|
|
482
|
+
}
|
|
483
|
+
/** Move a chip to another rail (1-4). */
|
|
484
|
+
| {
|
|
485
|
+
type: 'statuslineSetLine';
|
|
486
|
+
item: StatuslineItem;
|
|
487
|
+
line: StatuslineLine;
|
|
488
|
+
}
|
|
489
|
+
/** Shift a chip one rail up/down, wrapping within 1-4. */
|
|
490
|
+
| {
|
|
491
|
+
type: 'statuslineMoveLine';
|
|
492
|
+
item: StatuslineItem;
|
|
493
|
+
delta: number;
|
|
494
|
+
}
|
|
495
|
+
/** Cycle or set a chip's density pin (auto → full → short → micro). */
|
|
496
|
+
| {
|
|
497
|
+
type: 'statuslineSetDensity';
|
|
498
|
+
item: StatuslineItem;
|
|
499
|
+
density?: StatuslineDensity | undefined;
|
|
500
|
+
}
|
|
501
|
+
/** Turn every chip on the given rail on or off in one keystroke. */
|
|
502
|
+
| {
|
|
503
|
+
type: 'statuslineToggleLine';
|
|
504
|
+
line: StatuslineLine;
|
|
505
|
+
}
|
|
506
|
+
/** Restore default lines and densities (chip visibility untouched). */
|
|
507
|
+
| {
|
|
508
|
+
type: 'statuslineResetLayout';
|
|
509
|
+
}
|
|
510
|
+
/** Enter/leave `/` filter capture, or replace the filter text. */
|
|
511
|
+
| {
|
|
512
|
+
type: 'statuslineFilter';
|
|
513
|
+
text?: string | undefined;
|
|
514
|
+
filtering?: boolean | undefined;
|
|
479
515
|
} | {
|
|
480
516
|
type: 'statuslineHint';
|
|
481
517
|
text?: string | undefined;
|
|
@@ -753,6 +789,16 @@ export type Action = {
|
|
|
753
789
|
info: NonNullable<State['continueConfirm']>;
|
|
754
790
|
} | {
|
|
755
791
|
type: 'continueConfirmClose';
|
|
792
|
+
} | {
|
|
793
|
+
type: 'bugHuntContinueOpen';
|
|
794
|
+
info: NonNullable<State['bugHuntContinue']>;
|
|
795
|
+
} | {
|
|
796
|
+
type: 'bugHuntContinueClose';
|
|
797
|
+
} | {
|
|
798
|
+
type: 'bugHuntRunningOpen';
|
|
799
|
+
info: NonNullable<State['bugHuntRunning']>;
|
|
800
|
+
} | {
|
|
801
|
+
type: 'bugHuntRunningClose';
|
|
756
802
|
} | {
|
|
757
803
|
type: 'clearConfirmOpen';
|
|
758
804
|
info: NonNullable<State['clearConfirm']>;
|
|
@@ -13,6 +13,8 @@ interface AppKeyHandlerOptions {
|
|
|
13
13
|
state: State;
|
|
14
14
|
dispatch: Dispatch<Action>;
|
|
15
15
|
historyScrollRef: MutableRefObject<HistoryScrollController | null>;
|
|
16
|
+
/** Resets the live-tail timeout after a user-driven history navigation. */
|
|
17
|
+
onHistoryScrollActivity?: (() => void) | undefined;
|
|
16
18
|
runInterruptLadder: () => void;
|
|
17
19
|
enhanceCancelledRef: MutableRefObject<boolean>;
|
|
18
20
|
enhanceAbortRef: MutableRefObject<AbortController | null>;
|
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 { StatuslineLines } from '@wrongstack/core/statusline';
|
|
5
|
+
import type { StatuslineDensities, StatuslineLines } 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';
|
|
@@ -583,6 +583,13 @@ export interface AppProps {
|
|
|
583
583
|
statuslineLines?: StatuslineLines | undefined;
|
|
584
584
|
setStatuslineLines?: (lines: StatuslineLines) => void;
|
|
585
585
|
saveStatuslineLines?: (lines: StatuslineLines) => Promise<void>;
|
|
586
|
+
/**
|
|
587
|
+
* Per-chip density pin (statusline.json schema v3). Absent keys leave the
|
|
588
|
+
* chip to the rail fitter.
|
|
589
|
+
*/
|
|
590
|
+
statuslineDensities?: StatuslineDensities | undefined;
|
|
591
|
+
setStatuslineDensities?: (densities: StatuslineDensities) => void;
|
|
592
|
+
saveStatuslineDensities?: (densities: StatuslineDensities) => Promise<void>;
|
|
586
593
|
/**
|
|
587
594
|
* Controller for the agents monitor overlay. App installs a dispatch-backed
|
|
588
595
|
* setter on mount so the `/agents on|off` slash command can toggle the
|
package/dist/app-state.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { StatuslineDensities, StatuslineLines } from '@wrongstack/core/statusline';
|
|
1
2
|
import type { AutonomyStage, ContentBlock, DesignKitEntry, FleetChatVerbosity, SkillEntry, TokenSavingTier } from '@wrongstack/core/types';
|
|
2
3
|
import type { SddBoardSnapshot } from '@wrongstack/sdd';
|
|
3
4
|
import type { GoalSummary, QueueItem, ResumeSessionEntry, SlashCommandMatch } from './app-state-core-types.js';
|
|
@@ -415,6 +416,22 @@ export type State = {
|
|
|
415
416
|
* chips stay visible via their data being truthy — they are NOT here.
|
|
416
417
|
*/
|
|
417
418
|
visibleChips: ChipMeta[];
|
|
419
|
+
/** Per-chip line assignment being edited (mirrors statusline.json v3). */
|
|
420
|
+
lines: StatuslineLines;
|
|
421
|
+
/** Per-chip density pin being edited. */
|
|
422
|
+
densities: StatuslineDensities;
|
|
423
|
+
/** Text filter over chip names/descriptions. */
|
|
424
|
+
filter: string;
|
|
425
|
+
/** True while `/` is capturing filter keystrokes. */
|
|
426
|
+
filtering: boolean;
|
|
427
|
+
/**
|
|
428
|
+
* True once the editor holds the live layout (seeded on open, or made
|
|
429
|
+
* true by any layout edit). The app only mirrors the editor's layout
|
|
430
|
+
* back into the live statusline while this is set, so a caller that
|
|
431
|
+
* opens the picker WITHOUT seeding it can never publish an empty layout
|
|
432
|
+
* over the user's saved one.
|
|
433
|
+
*/
|
|
434
|
+
layoutSeeded: boolean;
|
|
418
435
|
hint?: string | undefined;
|
|
419
436
|
};
|
|
420
437
|
/** Plugin toggle editor — opened by `/plugin menu` or `/settings plugins`. */
|
|
@@ -498,6 +515,8 @@ export type State = {
|
|
|
498
515
|
/** True when the call was classified destructive. */
|
|
499
516
|
destructive: boolean;
|
|
500
517
|
boundaryReason?: string | undefined;
|
|
518
|
+
/** Real write destinations from `Tool.writeTargets`, when declared (VULN-001 Phase 2). */
|
|
519
|
+
writeTargets?: string[] | undefined;
|
|
501
520
|
}[];
|
|
502
521
|
/**
|
|
503
522
|
* Active warning for the `!<command>` shell shortcut. It resolves before
|
|
@@ -585,6 +604,17 @@ export type State = {
|
|
|
585
604
|
grounded: boolean;
|
|
586
605
|
resolve: (decision: 'proceed' | 'edit' | 'cancel') => void;
|
|
587
606
|
} | null;
|
|
607
|
+
/** TUI-only follow-up gate shown after each completed `/bughunt` round. */
|
|
608
|
+
bugHuntContinue: {
|
|
609
|
+
completedRounds: number;
|
|
610
|
+
totalRounds?: number | undefined;
|
|
611
|
+
resolve: (decision: 'yes' | 'stop') => void;
|
|
612
|
+
} | null;
|
|
613
|
+
/** Visible, non-blocking progress card for the currently running bug-hunt round. */
|
|
614
|
+
bugHuntRunning: {
|
|
615
|
+
currentRound: number;
|
|
616
|
+
totalRounds?: number | undefined;
|
|
617
|
+
} | null;
|
|
588
618
|
/**
|
|
589
619
|
* Pending destructive `/clear` confirmation. Unlike ordinary yes/no
|
|
590
620
|
* prompts this requires the user to type the full uppercase word `YES`.
|
|
@@ -39,8 +39,7 @@ interface AppViewRuntime {
|
|
|
39
39
|
historyScrollRef: MutableRefObject<import('./components/scrollable-history.js').HistoryScrollController | null>;
|
|
40
40
|
/**
|
|
41
41
|
* Stable callback ScrollableHistory calls on scroll-state transitions
|
|
42
|
-
* (scrolled away from / re-pinned to the newest output).
|
|
43
|
-
* "managed" key hint via `state.historyScrolled`.
|
|
42
|
+
* (scrolled away from / re-pinned to the newest output).
|
|
44
43
|
*/
|
|
45
44
|
onScrollInfo?: ((info: {
|
|
46
45
|
scrolled: boolean;
|
|
@@ -56,7 +55,7 @@ interface AppViewRuntime {
|
|
|
56
55
|
belowStatusBarRef: MutableRefObject<DOMElement | null>;
|
|
57
56
|
/**
|
|
58
57
|
* Measured rows consumed by the status chrome below the pickers (status
|
|
59
|
-
* bar + mailbox/monitors
|
|
58
|
+
* bar + mailbox/monitors). Picker overlays use it to size their
|
|
60
59
|
* window against the real remaining space instead of a hardcoded guess.
|
|
61
60
|
*/
|
|
62
61
|
statusBarRows: number;
|
|
@@ -49,6 +49,64 @@ export interface AuthFlowIo {
|
|
|
49
49
|
}): Promise<string>;
|
|
50
50
|
signal: AbortSignal;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* One-screen "add provider" form (catalog card or fully custom entry).
|
|
54
|
+
* Every field arrives as raw text exactly as typed; the CLI host trims,
|
|
55
|
+
* validates, and splits the comma-separated lists. `apiKey` is the only
|
|
56
|
+
* secret here and never re-enters the TUI after the save.
|
|
57
|
+
*/
|
|
58
|
+
export interface AuthProviderSetup {
|
|
59
|
+
/** `catalog` prefills from models.dev; `custom` is user-authored. */
|
|
60
|
+
source: 'catalog' | 'custom';
|
|
61
|
+
/** Provider type id (models.dev id for catalog entries). */
|
|
62
|
+
type: string;
|
|
63
|
+
/** Human label shown on the setup card. */
|
|
64
|
+
name: string;
|
|
65
|
+
family: string;
|
|
66
|
+
baseUrl: string;
|
|
67
|
+
/** Config key the provider is saved under — may differ from `type`. */
|
|
68
|
+
alias: string;
|
|
69
|
+
keyLabel: string;
|
|
70
|
+
apiKey: string;
|
|
71
|
+
/** Comma-separated model allowlist. */
|
|
72
|
+
models: string;
|
|
73
|
+
/** Comma-separated env var names. */
|
|
74
|
+
envVars: string;
|
|
75
|
+
}
|
|
76
|
+
/** Non-secret settings of an existing provider, edited as one form. */
|
|
77
|
+
export interface AuthProviderEdit {
|
|
78
|
+
providerId: string;
|
|
79
|
+
family: string;
|
|
80
|
+
baseUrl: string;
|
|
81
|
+
/** Comma-separated model allowlist. */
|
|
82
|
+
models: string;
|
|
83
|
+
/** Comma-separated env var names. */
|
|
84
|
+
envVars: string;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* The subset of a model's models.dev schema the panel edits inline.
|
|
88
|
+
* Numeric fields are carried as text so a half-typed value round-trips;
|
|
89
|
+
* the host parses and rejects non-numeric input with a message.
|
|
90
|
+
*/
|
|
91
|
+
export interface AuthModelEdit {
|
|
92
|
+
providerId: string;
|
|
93
|
+
modelId: string;
|
|
94
|
+
name: string;
|
|
95
|
+
contextWindow: string;
|
|
96
|
+
maxOutput: string;
|
|
97
|
+
costInput: string;
|
|
98
|
+
costOutput: string;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Add-or-rename form for one saved key. `originalLabel` absent means
|
|
102
|
+
* "append a new key"; present means "replace that key in place".
|
|
103
|
+
*/
|
|
104
|
+
export interface AuthKeyEdit {
|
|
105
|
+
providerId: string;
|
|
106
|
+
label: string;
|
|
107
|
+
apiKey: string;
|
|
108
|
+
originalLabel?: string | undefined;
|
|
109
|
+
}
|
|
52
110
|
export interface AuthFlowResult {
|
|
53
111
|
ok: boolean;
|
|
54
112
|
message?: string | undefined;
|
|
@@ -97,6 +155,18 @@ export interface AuthPanelHost {
|
|
|
97
155
|
addCustomProvider(io: AuthFlowIo): Promise<AuthFlowResult>;
|
|
98
156
|
addLocal(presetId: string, io: AuthFlowIo): Promise<AuthFlowResult>;
|
|
99
157
|
oauthLogin(kind: AuthOAuthKind, io: AuthFlowIo): Promise<AuthFlowResult>;
|
|
158
|
+
/**
|
|
159
|
+
* Form-shaped counterparts to the `io`-driven flows above: the panel hands
|
|
160
|
+
* over one filled-in form instead of a question-at-a-time sequence, and the
|
|
161
|
+
* host validates the whole thing in a single config mutation. Each resolves
|
|
162
|
+
* to an error string, or null on success.
|
|
163
|
+
*/
|
|
164
|
+
saveProviderSetup(setup: AuthProviderSetup): Promise<string | null>;
|
|
165
|
+
saveProviderEdit(edit: AuthProviderEdit): Promise<string | null>;
|
|
166
|
+
/** Current editable schema values, or null when the model is gone. */
|
|
167
|
+
getModelEdit(providerId: string, modelId: string): Promise<AuthModelEdit | null>;
|
|
168
|
+
saveModelEdit(edit: AuthModelEdit): Promise<string | null>;
|
|
169
|
+
saveKeyEdit(edit: AuthKeyEdit): Promise<string | null>;
|
|
100
170
|
}
|
|
101
171
|
export type AuthPanelView = 'list' | 'provider' | 'models' | 'catalog' | 'local' | 'oauth' | 'flow';
|
|
102
172
|
export type AuthConfirmAction = {
|
|
@@ -63,6 +63,8 @@ export interface BrainPanelSettings {
|
|
|
63
63
|
councilMaxConcurrency?: number | undefined;
|
|
64
64
|
/** Output budget per voter seat call (undefined = default 2000). */
|
|
65
65
|
councilVoterMaxTokens?: number | undefined;
|
|
66
|
+
/** Voting rounds; undefined = product default (2). 1 disables deliberation. */
|
|
67
|
+
councilDeliberationRounds?: number | undefined;
|
|
66
68
|
/** Output budget for the judge call (undefined = follows the seat budget). */
|
|
67
69
|
councilJudgeMaxTokens?: number | undefined;
|
|
68
70
|
/** Explicitly configured voters (empty = seats derive from the pool). */
|
|
@@ -149,6 +151,7 @@ export interface BrainPanelHost {
|
|
|
149
151
|
setCouncilPerCallTimeout(ms: number | undefined): Promise<string | null>;
|
|
150
152
|
setCouncilMaxConcurrency(count: number | undefined): Promise<string | null>;
|
|
151
153
|
setCouncilVoterMaxTokens(tokens: number | undefined): Promise<string | null>;
|
|
154
|
+
setCouncilDeliberationRounds(rounds: number | undefined): Promise<string | null>;
|
|
152
155
|
setCouncilJudgeMaxTokens(tokens: number | undefined): Promise<string | null>;
|
|
153
156
|
setLedgerEnabled(on: boolean): Promise<string | null>;
|
|
154
157
|
setAutoDeny(count: number | undefined): Promise<string | null>;
|
|
@@ -209,6 +212,8 @@ export type BrainPanelRow = {
|
|
|
209
212
|
kind: 'councilConcurrency';
|
|
210
213
|
} | {
|
|
211
214
|
kind: 'councilVoterMaxTokens';
|
|
215
|
+
} | {
|
|
216
|
+
kind: 'councilDeliberationRounds';
|
|
212
217
|
} | {
|
|
213
218
|
kind: 'councilJudgeMaxTokens';
|
|
214
219
|
} | {
|
|
@@ -291,6 +296,12 @@ export declare const COUNCIL_JUDGE_MAX_TOKENS_PRESETS: ReadonlyArray<number | un
|
|
|
291
296
|
* their thinking tokens from this budget, so the rungs skew higher than the
|
|
292
297
|
* judge ladder.
|
|
293
298
|
*/
|
|
299
|
+
/**
|
|
300
|
+
* Deliberation round presets. Deliberately short: every step is another
|
|
301
|
+
* provider call PER SEAT on every council decision, so this is the panel's
|
|
302
|
+
* steepest cost lever and the list should not invite exploration.
|
|
303
|
+
*/
|
|
304
|
+
export declare const COUNCIL_DELIBERATION_ROUNDS_PRESETS: ReadonlyArray<number | undefined>;
|
|
294
305
|
export declare const COUNCIL_VOTER_MAX_TOKENS_PRESETS: ReadonlyArray<number | undefined>;
|
|
295
306
|
/**
|
|
296
307
|
* Fallback lens cycle for hosts that publish no `personaCatalog`. Prefer
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type BugHuntContinueDecision = 'yes' | 'stop';
|
|
3
|
+
interface BugHuntContinuePanelProps {
|
|
4
|
+
completedRounds: number;
|
|
5
|
+
totalRounds?: number | undefined;
|
|
6
|
+
onDecision: (decision: BugHuntContinueDecision) => void;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* The deliberate pause between Proof-Driven Bug Hunter rounds. The timeout is an
|
|
10
|
+
* affirmative default: it keeps a deliberately unbounded hunt moving, while
|
|
11
|
+
* Esc/S makes stopping immediate and unambiguous.
|
|
12
|
+
*/
|
|
13
|
+
export declare function BugHuntContinuePanel({ completedRounds, totalRounds, onDecision, }: BugHuntContinuePanelProps): React.ReactElement;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=bug-hunt-continue-panel.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type React from 'react';
|
|
2
|
+
interface BugHuntRunningPanelProps {
|
|
3
|
+
currentRound: number;
|
|
4
|
+
totalRounds?: number | undefined;
|
|
5
|
+
}
|
|
6
|
+
/** A compact, non-blocking marker for the bug-hunt round currently in flight. */
|
|
7
|
+
export declare function BugHuntRunningPanel({ currentRound, totalRounds, }: BugHuntRunningPanelProps): React.ReactElement;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=bug-hunt-running-panel.d.ts.map
|
|
@@ -10,6 +10,12 @@ interface ConfirmPromptProps {
|
|
|
10
10
|
/** Whether this call was classified destructive. */
|
|
11
11
|
destructive?: boolean;
|
|
12
12
|
boundaryReason?: string | undefined;
|
|
13
|
+
/**
|
|
14
|
+
* Real write destinations from `Tool.writeTargets` (VULN-001 Phase 2) —
|
|
15
|
+
* what the call would actually touch, as opposed to the permission
|
|
16
|
+
* subject (`patch`'s is just `directory: "."`).
|
|
17
|
+
*/
|
|
18
|
+
writeTargets?: string[] | undefined;
|
|
13
19
|
}
|
|
14
20
|
/**
|
|
15
21
|
* 0-based column spans of each button WITHIN the dialog's content area (i.e.
|
|
@@ -37,6 +43,6 @@ export declare function confirmButtonSegments(suggestedPattern: string): Array<{
|
|
|
37
43
|
* through the same DiffBlock the committed history entries use.
|
|
38
44
|
*/
|
|
39
45
|
export declare function payloadDiff(input: unknown): string;
|
|
40
|
-
export declare function ConfirmPrompt({ toolName, input, suggestedPattern, onDecision, onEnableYolo, destructive, boundaryReason, }: ConfirmPromptProps): React.ReactElement;
|
|
46
|
+
export declare function ConfirmPrompt({ toolName, input, suggestedPattern, onDecision, onEnableYolo, destructive, boundaryReason, writeTargets, }: ConfirmPromptProps): React.ReactElement;
|
|
41
47
|
export {};
|
|
42
48
|
//# sourceMappingURL=confirm-prompt.d.ts.map
|
|
@@ -12,6 +12,6 @@ interface HelpPanelProps {
|
|
|
12
12
|
selected: number;
|
|
13
13
|
hint?: string | undefined;
|
|
14
14
|
}
|
|
15
|
-
export declare function HelpPanel({ entries, filter, selected, hint
|
|
15
|
+
export declare function HelpPanel({ entries, filter, selected, hint }: HelpPanelProps): React.ReactElement;
|
|
16
16
|
export {};
|
|
17
17
|
//# sourceMappingURL=help-panel.d.ts.map
|
|
@@ -36,6 +36,11 @@ export declare function councilHeadline(council: NonNullable<Extract<HistoryEntr
|
|
|
36
36
|
export declare function councilSeatLine(seat: NonNullable<Extract<HistoryEntry, {
|
|
37
37
|
kind: 'brain';
|
|
38
38
|
}>['council']>['seats'][number]): string;
|
|
39
|
+
/**
|
|
40
|
+
* Colour for a decision tier chip: the deterministic tiers are free and stay
|
|
41
|
+
* dim, the model-backed ones are what a reader is scanning for.
|
|
42
|
+
*/
|
|
43
|
+
export declare function brainTierColor(tier: string): string | undefined;
|
|
39
44
|
export declare function memoryLifecycleStyle(action: Extract<HistoryEntry, {
|
|
40
45
|
kind: 'memory-lifecycle';
|
|
41
46
|
}>['action']): {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { HistoryProps } from './types.js';
|
|
3
|
-
export { AssistantBody, assistantContentWidth, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH, splitFencedBlocks } from './assistant.js';
|
|
3
|
+
export { AssistantBody, assistantContentWidth, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH, splitFencedBlocks, } from './assistant.js';
|
|
4
4
|
export { Banner } from './banner.js';
|
|
5
5
|
export { CodeBlock, DiffBlock, DiffFileBlock, type DiffFilePreview, type DiffLineKind, type DiffLineRow, type DiffPreview, extractDiffPreview, extractMultiFileDiffs, extractReplaceDiffs, formatDiffStats, formatMultiDiffSummary, MULTI_DIFF_MAX_FILES, MULTI_DIFF_MAX_ROWS, MULTI_DIFF_SUMMARY_THRESHOLD, type MultiDiffSummary, parseUnifiedDiff, summarizeMultiFileDiffs, } from './code-block.js';
|
|
6
6
|
export { Entry } from './entry.js';
|
|
7
7
|
export type { AutonomyAgentStatus, BodySegment, HistoryEntry, HistoryProps } from './types.js';
|
|
8
|
-
export { AssistantStreamBox, assistantStreamBoxHeight, countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatToolArgs, formatToolOutput, formatToolVisualOutput, MAX_STREAM_DISPLAY_CHARS, numOf, scanNumberedRange, shortenPath, streamBoxRows, stringOf, ToolOutputLines, ToolStreamBox, type ToolVisualLine, type ToolVisualLineKind, tailForDisplay, toolStreamBoxHeight, truncMid, tryParseJson } from './utils.js';
|
|
8
|
+
export { AssistantStreamBox, assistantStreamBoxHeight, countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatToolArgs, formatToolOutput, formatToolVisualOutput, MAX_STREAM_DISPLAY_CHARS, numOf, scanNumberedRange, shortenPath, streamBoxRows, stringOf, ToolOutputLines, ToolStreamBox, type ToolVisualLine, type ToolVisualLineKind, tailForDisplay, toolStreamBoxHeight, truncMid, tryParseJson, } from './utils.js';
|
|
9
9
|
/**
|
|
10
10
|
* History component — renders committed entries via <Static> so they
|
|
11
11
|
* flow into terminal scrollback.
|
|
@@ -118,7 +118,7 @@ export interface ScrollableHistoryProps extends HistoryProps {
|
|
|
118
118
|
* mount and clears on unmount. Optional for isolated renderers. */
|
|
119
119
|
controllerRef?: MutableRefObject<HistoryScrollController | null> | undefined;
|
|
120
120
|
/** Reports scroll-state transitions (scrolled away from / re-pinned to the
|
|
121
|
-
* newest output)
|
|
121
|
+
* newest output). */
|
|
122
122
|
onScrollInfo?: ((info: {
|
|
123
123
|
scrolled: boolean;
|
|
124
124
|
}) => void) | undefined;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { TodoItem } from '@wrongstack/core/agent';
|
|
2
2
|
import type { Lang } from '../../highlight.js';
|
|
3
3
|
import type { HistoryEntry } from '../../history-entry.js';
|
|
4
|
-
export type { AutonomyAgentStatus, HistoryEntry, MemoryActivationItem } from '../../history-entry.js';
|
|
4
|
+
export type { AutonomyAgentStatus, HistoryEntry, MemoryActivationItem, } from '../../history-entry.js';
|
|
5
5
|
export interface HistoryProps {
|
|
6
6
|
entries: HistoryEntry[];
|
|
7
7
|
/**
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
export { countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, numOf, scanNumberedRange, shortenPath, stringOf, truncMid, tryParseJson } from './basic-format.js';
|
|
1
|
+
export { countLines, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, numOf, scanNumberedRange, shortenPath, stringOf, truncMid, tryParseJson, } from './basic-format.js';
|
|
2
2
|
export { AssistantStreamBox, assistantStreamBoxHeight, MAX_STREAM_DISPLAY_CHARS, streamBoxRows, ToolStreamBox, tailForDisplay, toolStreamBoxHeight, } from './stream-box.js';
|
|
3
3
|
export { ToolOutputLines } from './visual-lines.js';
|
|
4
4
|
export type { ToolVisualLine, ToolVisualLineKind } from './tool-visual-types.js';
|
|
5
5
|
import type { ToolVisualLine } from './tool-visual-types.js';
|
|
6
6
|
export { formatToolArgs } from './tool-arg-format.js';
|
|
7
|
-
export { extractSageBlock, resolveEntrySage, type SageSplit, parseSageMemoryLine, type ParsedSageMemoryLine } from './sage-output-format.js';
|
|
7
|
+
export { extractSageBlock, resolveEntrySage, type SageSplit, parseSageMemoryLine, type ParsedSageMemoryLine, } from './sage-output-format.js';
|
|
8
8
|
/**
|
|
9
9
|
* Like `formatToolOutput` but strips SAGE-injected memory lines first.
|
|
10
10
|
* Returns the tool output lines and any SAGE block lines separately.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { AssistantBody, AssistantStreamBox, assistantStreamBoxHeight, type AutonomyAgentStatus, assistantContentWidth, Banner, type BodySegment, CodeBlock, countLines, DiffBlock, DiffFileBlock, type DiffFilePreview, type DiffLineKind, type DiffLineRow, type DiffPreview, Entry, extractDiffPreview, extractMultiFileDiffs, extractReplaceDiffs, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatMultiDiffSummary, formatToolArgs, formatToolOutput, formatToolVisualOutput, History, type HistoryEntry, type HistoryProps, MAX_STREAM_DISPLAY_CHARS, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH, MULTI_DIFF_MAX_FILES, MULTI_DIFF_MAX_ROWS, MULTI_DIFF_SUMMARY_THRESHOLD, type MultiDiffSummary, numOf, parseUnifiedDiff, scanNumberedRange, shortenPath, splitFencedBlocks, streamBoxRows, stringOf, summarizeMultiFileDiffs, ToolOutputLines, ToolStreamBox, type ToolVisualLine, type ToolVisualLineKind, tailForDisplay, toolStreamBoxHeight, truncMid, tryParseJson } from './history/index.js';
|
|
1
|
+
export { AssistantBody, AssistantStreamBox, assistantStreamBoxHeight, type AutonomyAgentStatus, assistantContentWidth, Banner, type BodySegment, CodeBlock, countLines, DiffBlock, DiffFileBlock, type DiffFilePreview, type DiffLineKind, type DiffLineRow, type DiffPreview, Entry, extractDiffPreview, extractMultiFileDiffs, extractReplaceDiffs, firstNonEmpty, fmtBytes, fmtDuration, fmtTok, formatMatchHit, formatMultiDiffSummary, formatToolArgs, formatToolOutput, formatToolVisualOutput, History, type HistoryEntry, type HistoryProps, MAX_STREAM_DISPLAY_CHARS, MESSAGE_PANEL_BORDER_WIDTH, MESSAGE_PANEL_CHROME_WIDTH, MULTI_DIFF_MAX_FILES, MULTI_DIFF_MAX_ROWS, MULTI_DIFF_SUMMARY_THRESHOLD, type MultiDiffSummary, numOf, parseUnifiedDiff, scanNumberedRange, shortenPath, splitFencedBlocks, streamBoxRows, stringOf, summarizeMultiFileDiffs, ToolOutputLines, ToolStreamBox, type ToolVisualLine, type ToolVisualLineKind, tailForDisplay, toolStreamBoxHeight, truncMid, tryParseJson, } from './history/index.js';
|
|
2
2
|
//# sourceMappingURL=history.d.ts.map
|
|
@@ -13,6 +13,6 @@ interface ModePickerProps {
|
|
|
13
13
|
hint?: string | undefined;
|
|
14
14
|
}
|
|
15
15
|
export declare function toModeOptions(modes: Mode[], activeId: string | null): ModeOption[];
|
|
16
|
-
export declare function ModePicker({ modes, selected, hint
|
|
16
|
+
export declare function ModePicker({ modes, selected, hint }: ModePickerProps): React.ReactElement;
|
|
17
17
|
export {};
|
|
18
18
|
//# sourceMappingURL=mode-picker.d.ts.map
|
|
@@ -1,9 +1,23 @@
|
|
|
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
5
|
export interface RailSpanEntry {
|
|
4
6
|
/** Stable identifier used by the mouse hit-test ('model', 'todos', …). */
|
|
5
7
|
id: string;
|
|
8
|
+
/** Widest rendering of the chip (density level 0). */
|
|
6
9
|
node: React.ReactElement;
|
|
10
|
+
/**
|
|
11
|
+
* Narrower renderings, widest → narrowest, EXCLUDING {@link node}. A chip
|
|
12
|
+
* with `alt: [short, micro]` has three levels: 0 = node, 1 = short,
|
|
13
|
+
* 2 = micro. The fitter degrades a chip through these before it will drop
|
|
14
|
+
* any chip from the rail.
|
|
15
|
+
*/
|
|
16
|
+
alt?: React.ReactElement[] | undefined;
|
|
17
|
+
/** Widest level the fitter may use (density pin). Defaults to 0. */
|
|
18
|
+
lo?: number | undefined;
|
|
19
|
+
/** Narrowest level the fitter may use (density pin). Defaults to the last. */
|
|
20
|
+
hi?: number | undefined;
|
|
7
21
|
}
|
|
8
22
|
export interface RailSpan {
|
|
9
23
|
id: string;
|
|
@@ -11,18 +25,42 @@ export interface RailSpan {
|
|
|
11
25
|
start: number;
|
|
12
26
|
/** Rendered width in columns. */
|
|
13
27
|
len: number;
|
|
28
|
+
/** Density level actually rendered (0 = widest). */
|
|
29
|
+
level: number;
|
|
30
|
+
}
|
|
31
|
+
export interface RailLayoutItem extends RailSpan {
|
|
32
|
+
node: React.ReactElement;
|
|
33
|
+
}
|
|
34
|
+
export interface RailLayout {
|
|
35
|
+
/** Chips that survive, in render order, with their resolved columns. */
|
|
36
|
+
items: RailLayoutItem[];
|
|
37
|
+
/** Ids the fitter had to drop entirely (rendered as the `+N` marker). */
|
|
38
|
+
droppedIds: string[];
|
|
39
|
+
/** Whether the right-anchored chip fits and will be drawn. */
|
|
40
|
+
rightVisible: boolean;
|
|
41
|
+
/** Filler columns between the last left chip and the right anchor. */
|
|
42
|
+
gap: number;
|
|
43
|
+
/** Columns the rail actually consumes (left chips + separators + anchor). */
|
|
44
|
+
used: number;
|
|
14
45
|
}
|
|
15
46
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
47
|
+
* Fit a rail into `budget` columns.
|
|
48
|
+
*
|
|
49
|
+
* The order of concessions is deliberate and is the whole point of the
|
|
50
|
+
* density system: **shorten before you drop**. A rail first degrades chips
|
|
51
|
+
* one level at a time — always the chip that gives back the most columns, so
|
|
52
|
+
* a 92-column telemetry composite collapses long before a 5-column
|
|
53
|
+
* `⚠ -7` disappears — and only starts dropping trailing chips once every
|
|
54
|
+
* chip is already at its narrowest permitted level. A chip with a pinned
|
|
55
|
+
* density (`lo === hi`) never degrades; it can only be dropped.
|
|
56
|
+
*
|
|
57
|
+
* Both {@link PowerlineRail} and the status bar's click-map builder consume
|
|
58
|
+
* this layout, so the mouse hit-test can never drift from what is drawn.
|
|
22
59
|
*/
|
|
23
|
-
export declare function
|
|
60
|
+
export declare function layoutRail(entries: readonly RailSpanEntry[], budget: number, rightAnchor?: React.ReactElement | null): RailLayout;
|
|
24
61
|
interface PowerlineRailProps {
|
|
25
|
-
|
|
62
|
+
/** Chips in render order. Plain elements are treated as single-level chips. */
|
|
63
|
+
segments: Array<React.ReactElement | RailSpanEntry>;
|
|
26
64
|
budget: number;
|
|
27
65
|
monochrome?: boolean | undefined;
|
|
28
66
|
/** Override the filler background for per-line tonal layering. */
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { ReasoningEffort as CoreReasoningEffort } from '@wrongstack/core/types';
|
|
2
|
+
/** Selectable presets for the auto-proceed delay, so the field is fully
|
|
3
|
+
* keyboard-cyclable (←/→) instead of needing typed numeric input. */
|
|
4
|
+
export declare const DELAY_PRESETS_MS: number[];
|
|
5
|
+
export declare const SETTINGS_MODES: readonly ['off', 'suggest', 'auto'];
|
|
6
|
+
export type SettingsMode = (typeof SETTINGS_MODES)[number];
|
|
7
|
+
export declare const LOG_LEVELS: readonly ['error', 'warn', 'info', 'debug', 'trace'];
|
|
8
|
+
export type LogLevel = (typeof LOG_LEVELS)[number];
|
|
9
|
+
export declare const AUDIT_LEVELS: readonly ['minimal', 'standard', 'full'];
|
|
10
|
+
export type AuditLevel = (typeof AUDIT_LEVELS)[number];
|
|
11
|
+
export declare const COMPACTOR_STRATEGIES: readonly ['hybrid', 'intelligent', 'selective'];
|
|
12
|
+
export type CompactorStrategy = (typeof COMPACTOR_STRATEGIES)[number];
|
|
13
|
+
/** Context window mode options — cyclable via ←/→. */
|
|
14
|
+
export declare const CONTEXT_MODES: readonly ['balanced', 'frugal', 'deep'];
|
|
15
|
+
export type ContextMode = (typeof CONTEXT_MODES)[number];
|
|
16
|
+
export declare const CONTEXT_MODE_DESCS: Record<ContextMode, string>;
|
|
17
|
+
export declare const STATUSLINE_MODES: readonly ['minimum', 'detailed', 'no-color'];
|
|
18
|
+
export type StatuslineMode = (typeof STATUSLINE_MODES)[number];
|
|
19
|
+
export declare const DEFAULT_STATUSLINE_MODE: StatuslineMode;
|
|
20
|
+
export declare const REASONING_MODES: readonly ['auto', 'on', 'off'];
|
|
21
|
+
export type ReasoningMode = (typeof REASONING_MODES)[number];
|
|
22
|
+
export declare const REASONING_EFFORTS: readonly ["none", "minimal", "low", "medium", "high", "xhigh", "max"];
|
|
23
|
+
export type ReasoningEffort = CoreReasoningEffort;
|
|
24
|
+
export declare const CACHE_TTLS: readonly ['default', '5m', '1h'];
|
|
25
|
+
export type CacheTtl = (typeof CACHE_TTLS)[number];
|
|
26
|
+
export declare const STATUSLINE_MODE_DESCS: Record<StatuslineMode, string>;
|
|
27
|
+
/** Presets for max iterations — cyclable via ←/→. 0 = unlimited. */
|
|
28
|
+
export declare const MAX_ITERATIONS_PRESETS: number[];
|
|
29
|
+
/** Presets for max concurrent subagents. 0 = runtime default. */
|
|
30
|
+
export declare const MAX_CONCURRENT_PRESETS: number[];
|
|
31
|
+
/** Presets for auto-proceed max iterations. 0 = unlimited, 50 default. */
|
|
32
|
+
export declare const AUTO_PROCEED_MAX_PRESETS: number[];
|
|
33
|
+
/** Presets for prompt refinement preview countdown. */
|
|
34
|
+
export declare const ENHANCE_DELAY_PRESETS: number[];
|
|
35
|
+
/** Presets for pre-refine grace countdown (seconds). 0 = skip. */
|
|
36
|
+
export declare const PRE_REFINE_SECONDS_PRESETS: number[];
|
|
37
|
+
/** Presets for the circuit-breaker auto kill/reset delay. 0 = manual recovery. */
|
|
38
|
+
export declare const BREAKER_TIMEOUT_PRESETS: number[];
|
|
39
|
+
export declare function formatBreakerTimeout(ms: number): string;
|
|
40
|
+
export declare const MULTI_DIFF_SUMMARY_THRESHOLD_PRESETS: number[];
|
|
41
|
+
/** Language options for prompt refinement. */
|
|
42
|
+
export declare const ENHANCE_LANGUAGES: readonly ['original', 'english'];
|
|
43
|
+
export type EnhanceLanguage = (typeof ENHANCE_LANGUAGES)[number];
|
|
44
|
+
export declare const TOKEN_SAVING_TIERS: readonly ['auto', 'off', 'minimal', 'light', 'medium', 'aggressive'];
|
|
45
|
+
export type TokenSavingTierTui = (typeof TOKEN_SAVING_TIERS)[number];
|
|
46
|
+
export declare const TOKEN_SAVING_TIER_DESCS: Record<TokenSavingTierTui, string>;
|
|
47
|
+
export declare const FLEET_CHAT_MODES: readonly ['off', 'full'];
|
|
48
|
+
export type FleetChatVerbosityTui = (typeof FLEET_CHAT_MODES)[number];
|
|
49
|
+
export declare const FLEET_CHAT_MODE_DESCS: Record<FleetChatVerbosityTui, string>;
|
|
50
|
+
export declare function formatSettingsDelay(ms: number): string;
|
|
51
|
+
export declare function formatMaxIterations(n: number): string;
|
|
52
|
+
export declare function formatMultiDiffSummaryThreshold(n: number): string;
|
|
53
|
+
export declare function formatEnhanceDelay(ms: number): string;
|
|
54
|
+
export declare function formatPreRefineSeconds(s: number): string;
|
|
55
|
+
export declare const ANIMATION_STYLE_CHOICES: readonly ["rainbow", "wave", "pulse", "dots", "breathe", "static", "cycle"];
|
|
56
|
+
export type AnimationStyleChoice = (typeof ANIMATION_STYLE_CHOICES)[number];
|
|
57
|
+
export declare function formatAnimationStyle(style: AnimationStyleChoice): string;
|
|
58
|
+
export declare const MODE_DESC: Record<SettingsMode, string>;
|
|
59
|
+
export declare const SETTINGS_FIELD_COUNT: number;
|
|
60
|
+
export declare const THINKING_WORD_FIELD = 22;
|
|
61
|
+
export declare const WRONGPROXY_URL_FIELD = 60;
|
|
62
|
+
export declare const MULTI_DIFF_SUMMARY_THRESHOLD_FIELD = 21;
|
|
63
|
+
export declare const THINKING_WORD_PRESETS: readonly ['thinking', 'random', 'working', 'cooking', 'vibing', 'pondering', 'brewing', 'crunching', 'computing', 'grinding', 'noodling', 'churning', 'hacking'];
|
|
64
|
+
export declare const CONFIG_SCOPES: readonly ['global', 'project'];
|
|
65
|
+
export type ConfigScope = (typeof CONFIG_SCOPES)[number];
|
|
66
|
+
export declare const SAGE_THRESHOLD_PRESETS: number[];
|
|
67
|
+
export declare function formatSageThreshold(t: number): string;
|
|
68
|
+
/**
|
|
69
|
+
* Human-readable labels for all settings fields (0–SETTINGS_FIELD_COUNT-1),
|
|
70
|
+
* in picker row order.
|
|
71
|
+
*/
|
|
72
|
+
export declare const SETTINGS_FIELD_LABELS: readonly string[];
|
|
73
|
+
//# sourceMappingURL=settings-picker-constants.d.ts.map
|