@wrongstack/tui 1.0.0 → 1.0.1
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.
|
@@ -4,7 +4,7 @@ import type { SddBoardSnapshot } from '@wrongstack/sdd';
|
|
|
4
4
|
import type { State } from './app-state.js';
|
|
5
5
|
import type { DraftEntry, GoalSummary, QueueItem, ResumeSessionEntry, SlashCommandMatch } from './app-state-core-types.js';
|
|
6
6
|
import type { FleetEntry } from './app-state-fleet.js';
|
|
7
|
-
import type { AuthCatalogRow, AuthConfirmAction, AuthLocalPresetRow, AuthPanelView, AuthProviderRow } from './auth-panel-model.js';
|
|
7
|
+
import type { AuthCatalogRow, AuthConfirmAction, AuthFormFieldId, AuthFormState, AuthLocalPresetRow, AuthPanelView, AuthProviderRow } from './auth-panel-model.js';
|
|
8
8
|
import type { BrainLogEntry, BrainRiskLevel } from './brain-contracts.js';
|
|
9
9
|
import type { BrainPanelSettings } from './brain-panel-model.js';
|
|
10
10
|
import type { StatuslineItem } from './components/statusline-picker.js';
|
|
@@ -708,6 +708,15 @@ export type Action = {
|
|
|
708
708
|
action: AuthConfirmAction;
|
|
709
709
|
} | {
|
|
710
710
|
type: 'authConfirmEnd';
|
|
711
|
+
} | {
|
|
712
|
+
type: 'authFormStart';
|
|
713
|
+
form: AuthFormState;
|
|
714
|
+
} | {
|
|
715
|
+
type: 'authFormChange';
|
|
716
|
+
field: AuthFormFieldId;
|
|
717
|
+
value: string;
|
|
718
|
+
} | {
|
|
719
|
+
type: 'authFormCancel';
|
|
711
720
|
} | {
|
|
712
721
|
type: 'projectPickerOpen';
|
|
713
722
|
items: ProjectPickerItem[];
|
|
@@ -153,7 +153,17 @@ export interface AuthPanelHost {
|
|
|
153
153
|
resetModelToCatalog(providerId: string, modelId: string): Promise<string | null>;
|
|
154
154
|
addCatalogProvider(catalogId: string, io: AuthFlowIo): Promise<AuthFlowResult>;
|
|
155
155
|
addCustomProvider(io: AuthFlowIo): Promise<AuthFlowResult>;
|
|
156
|
-
|
|
156
|
+
/**
|
|
157
|
+
* Probe-and-add a local preset. With `opts` present (the form path) no
|
|
158
|
+
* interactive prompts run — the form supplies the base URL and the key
|
|
159
|
+
* decision (empty apiKey string = save without a key). Without `opts`
|
|
160
|
+
* the flow prompts for the URL, and runAuthLocal prompts for the
|
|
161
|
+
* optional key itself. The health probe still streams into the flow log.
|
|
162
|
+
*/
|
|
163
|
+
addLocal(presetId: string, io: AuthFlowIo, opts?: {
|
|
164
|
+
baseUrl?: string;
|
|
165
|
+
apiKey?: string;
|
|
166
|
+
}): Promise<AuthFlowResult>;
|
|
157
167
|
oauthLogin(kind: AuthOAuthKind, io: AuthFlowIo): Promise<AuthFlowResult>;
|
|
158
168
|
/**
|
|
159
169
|
* Form-shaped counterparts to the `io`-driven flows above: the panel hands
|
|
@@ -168,7 +178,7 @@ export interface AuthPanelHost {
|
|
|
168
178
|
saveModelEdit(edit: AuthModelEdit): Promise<string | null>;
|
|
169
179
|
saveKeyEdit(edit: AuthKeyEdit): Promise<string | null>;
|
|
170
180
|
}
|
|
171
|
-
export type AuthPanelView = 'list' | 'provider' | 'models' | 'catalog' | 'local' | 'oauth' | 'flow';
|
|
181
|
+
export type AuthPanelView = 'list' | 'provider' | 'models' | 'catalog' | 'local' | 'oauth' | 'flow' | 'form';
|
|
172
182
|
export type AuthConfirmAction = {
|
|
173
183
|
kind: 'delete-key';
|
|
174
184
|
providerId: string;
|
|
@@ -211,6 +221,53 @@ export interface AuthPanelState {
|
|
|
211
221
|
question: string;
|
|
212
222
|
action: AuthConfirmAction;
|
|
213
223
|
} | undefined;
|
|
224
|
+
/**
|
|
225
|
+
* Live add/edit form (view === 'form'). The form lists every input
|
|
226
|
+
* field vertically on one screen with a Cancel/Save row at the bottom.
|
|
227
|
+
* `authFormStart` opens it with pre-filled defaults; `authFormChange`
|
|
228
|
+
* updates fields; `authFormCancel` / `authView` clear it.
|
|
229
|
+
*/
|
|
230
|
+
form?: AuthFormState | undefined;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Provider-add / provider-edit form. Every input field sits on its own
|
|
234
|
+
* row above a Cancel/Save pair at the bottom — no question-and-answer
|
|
235
|
+
* prompt bridge, no per-field modal.
|
|
236
|
+
*
|
|
237
|
+
* `kind` chooses which fields are editable:
|
|
238
|
+
* - `setup`: full add form (catalog prefilled or fully custom).
|
|
239
|
+
* - `edit`: non-secret settings of an existing provider.
|
|
240
|
+
*
|
|
241
|
+
* The `family` field is cycled with left/right arrow keys in the key
|
|
242
|
+
* router; the text fields accept printable input + backspace.
|
|
243
|
+
*/
|
|
244
|
+
export interface AuthFormState {
|
|
245
|
+
kind: 'setup' | 'edit' | 'local';
|
|
246
|
+
/** Provider being edited (`edit` only). */
|
|
247
|
+
providerId?: string;
|
|
248
|
+
/** Local preset being added (`local` only). */
|
|
249
|
+
presetId?: string;
|
|
250
|
+
/** Pre-filled defaults the user can edit in place. */
|
|
251
|
+
fields: AuthFormFields;
|
|
252
|
+
}
|
|
253
|
+
export type AuthFormFieldId = 'type' | 'name' | 'family' | 'baseUrl' | 'alias' | 'keyLabel' | 'apiKey' | 'models' | 'envVars';
|
|
254
|
+
/**
|
|
255
|
+
* Mirrors `validateFamily` in packages/cli/src/auth-menu/shared.ts.
|
|
256
|
+
* Kept in sync by the shared form screen — a new value requires both
|
|
257
|
+
* sites to change. The list drives the ←/→ cycling on the family row.
|
|
258
|
+
*/
|
|
259
|
+
export declare const WIRE_FAMILIES: readonly ['anthropic', 'openai', 'openai-compatible', 'google'];
|
|
260
|
+
export type WireFamily = (typeof WIRE_FAMILIES)[number];
|
|
261
|
+
export interface AuthFormFields {
|
|
262
|
+
type: string;
|
|
263
|
+
name: string;
|
|
264
|
+
family: WireFamily | '';
|
|
265
|
+
baseUrl: string;
|
|
266
|
+
alias: string;
|
|
267
|
+
keyLabel: string;
|
|
268
|
+
apiKey: string;
|
|
269
|
+
models: string;
|
|
270
|
+
envVars: string;
|
|
214
271
|
}
|
|
215
272
|
export declare const AUTH_PANEL_INITIAL: AuthPanelState;
|
|
216
273
|
export type AuthPanelRow = {
|
|
@@ -224,7 +281,7 @@ export type AuthPanelRow = {
|
|
|
224
281
|
keyRow: AuthKeyRow;
|
|
225
282
|
} | {
|
|
226
283
|
kind: 'provider-action';
|
|
227
|
-
action: 'add-key' | 'edit-
|
|
284
|
+
action: 'add-key' | 'edit-provider' | 'edit-model-details' | 'add-model' | 'reset-model-to-catalog' | 'remove' | 'back-to-list';
|
|
228
285
|
} | {
|
|
229
286
|
kind: 'model-row';
|
|
230
287
|
providerId: string;
|
|
@@ -239,6 +296,18 @@ export type AuthPanelRow = {
|
|
|
239
296
|
} | {
|
|
240
297
|
kind: 'oauth-option';
|
|
241
298
|
oauth: AuthOAuthKind;
|
|
299
|
+
} | {
|
|
300
|
+
kind: 'form-field';
|
|
301
|
+
field: AuthFormFieldId;
|
|
302
|
+
/** One-line field label shown on the left of the row. */
|
|
303
|
+
label: string;
|
|
304
|
+
/** Text fields render their value verbatim; family shows the active family; secret masks the value. */
|
|
305
|
+
value: string;
|
|
306
|
+
/** True for the API-key field — masked on screen, raw in panel state. */
|
|
307
|
+
secret: boolean;
|
|
308
|
+
} | {
|
|
309
|
+
kind: 'form-action';
|
|
310
|
+
action: 'cancel' | 'save';
|
|
242
311
|
};
|
|
243
312
|
/** Case-insensitive substring filter over id + name + family. */
|
|
244
313
|
export declare function filterAuthCatalog(catalog: AuthCatalogRow[], filter: string): AuthCatalogRow[];
|
package/dist/index.js
CHANGED
|
@@ -12170,6 +12170,7 @@ function AuditPanel({ sideEffects, onClose: _onClose }) {
|
|
|
12170
12170
|
}
|
|
12171
12171
|
|
|
12172
12172
|
// src/auth-panel-model.ts
|
|
12173
|
+
var WIRE_FAMILIES = ["anthropic", "openai", "openai-compatible", "google"];
|
|
12173
12174
|
var AUTH_PANEL_INITIAL = {
|
|
12174
12175
|
open: false,
|
|
12175
12176
|
view: "list",
|
|
@@ -12225,9 +12226,7 @@ function authPanelRows(state) {
|
|
|
12225
12226
|
}
|
|
12226
12227
|
rows.push(
|
|
12227
12228
|
{ kind: "provider-action", action: "add-key" },
|
|
12228
|
-
{ kind: "provider-action", action: "edit-
|
|
12229
|
-
{ kind: "provider-action", action: "edit-base-url" },
|
|
12230
|
-
{ kind: "provider-action", action: "edit-models" },
|
|
12229
|
+
{ kind: "provider-action", action: "edit-provider" },
|
|
12231
12230
|
{ kind: "provider-action", action: "add-model" },
|
|
12232
12231
|
{ kind: "provider-action", action: "remove" }
|
|
12233
12232
|
);
|
|
@@ -12244,7 +12243,7 @@ function authPanelRows(state) {
|
|
|
12244
12243
|
}));
|
|
12245
12244
|
rows.push(
|
|
12246
12245
|
{ kind: "provider-action", action: "add-model" },
|
|
12247
|
-
{ kind: "provider-action", action: "edit-
|
|
12246
|
+
{ kind: "provider-action", action: "edit-provider" },
|
|
12248
12247
|
{ kind: "provider-action", action: "back-to-list" }
|
|
12249
12248
|
);
|
|
12250
12249
|
return rows;
|
|
@@ -12263,6 +12262,63 @@ function authPanelRows(state) {
|
|
|
12263
12262
|
}));
|
|
12264
12263
|
case "flow":
|
|
12265
12264
|
return [];
|
|
12265
|
+
case "form": {
|
|
12266
|
+
const form = state.form;
|
|
12267
|
+
if (!form) return [];
|
|
12268
|
+
let fieldIds = FORM_FIELD_ORDER[form.kind];
|
|
12269
|
+
if (form.kind === "local" && form.presetId) {
|
|
12270
|
+
const preset = state.presets.find((p) => p.id === form.presetId);
|
|
12271
|
+
if (preset?.noAuth) fieldIds = fieldIds.filter((f) => f !== "apiKey");
|
|
12272
|
+
}
|
|
12273
|
+
const rows = fieldIds.map((field) => ({
|
|
12274
|
+
kind: "form-field",
|
|
12275
|
+
field,
|
|
12276
|
+
label: FORM_FIELD_LABELS[field],
|
|
12277
|
+
value: formValue(form, field),
|
|
12278
|
+
secret: field === "apiKey"
|
|
12279
|
+
}));
|
|
12280
|
+
rows.push({ kind: "form-action", action: "cancel" }, { kind: "form-action", action: "save" });
|
|
12281
|
+
return rows;
|
|
12282
|
+
}
|
|
12283
|
+
}
|
|
12284
|
+
}
|
|
12285
|
+
var FORM_FIELD_ORDER = {
|
|
12286
|
+
setup: ["type", "name", "family", "baseUrl", "alias", "keyLabel", "apiKey", "models", "envVars"],
|
|
12287
|
+
edit: ["family", "baseUrl", "models", "envVars"],
|
|
12288
|
+
local: ["baseUrl", "apiKey"]
|
|
12289
|
+
};
|
|
12290
|
+
var FORM_FIELD_LABELS = {
|
|
12291
|
+
type: "Type (provider id)",
|
|
12292
|
+
name: "Name",
|
|
12293
|
+
family: "Family (\u2190 \u2192)",
|
|
12294
|
+
baseUrl: "Base URL",
|
|
12295
|
+
alias: "Alias (config key)",
|
|
12296
|
+
keyLabel: "Key label",
|
|
12297
|
+
apiKey: "API key",
|
|
12298
|
+
models: "Models (comma-separated)",
|
|
12299
|
+
envVars: "Env vars (comma-separated)"
|
|
12300
|
+
};
|
|
12301
|
+
function formValue(form, field) {
|
|
12302
|
+
const f = form.fields;
|
|
12303
|
+
switch (field) {
|
|
12304
|
+
case "type":
|
|
12305
|
+
return f.type;
|
|
12306
|
+
case "name":
|
|
12307
|
+
return f.name;
|
|
12308
|
+
case "family":
|
|
12309
|
+
return f.family;
|
|
12310
|
+
case "baseUrl":
|
|
12311
|
+
return f.baseUrl;
|
|
12312
|
+
case "alias":
|
|
12313
|
+
return f.alias;
|
|
12314
|
+
case "keyLabel":
|
|
12315
|
+
return f.keyLabel;
|
|
12316
|
+
case "apiKey":
|
|
12317
|
+
return f.apiKey;
|
|
12318
|
+
case "models":
|
|
12319
|
+
return f.models;
|
|
12320
|
+
case "envVars":
|
|
12321
|
+
return f.envVars;
|
|
12266
12322
|
}
|
|
12267
12323
|
}
|
|
12268
12324
|
function authMoveSelected(state, delta) {
|
|
@@ -12358,6 +12414,7 @@ var LIST_ACTION_LABEL = {
|
|
|
12358
12414
|
};
|
|
12359
12415
|
var PROVIDER_ACTION_LABEL = {
|
|
12360
12416
|
"add-key": "\uFF0B Add another key",
|
|
12417
|
+
"edit-provider": "\u270E Edit provider",
|
|
12361
12418
|
"edit-family": "\u270E Edit family",
|
|
12362
12419
|
"edit-base-url": "\u270E Edit base URL",
|
|
12363
12420
|
"edit-models": "\u270E Edit visible model list",
|
|
@@ -12482,6 +12539,28 @@ function renderRow(row, focused, i) {
|
|
|
12482
12539
|
/* @__PURE__ */ jsx33(Text, { dimColor: true, children: o.detail })
|
|
12483
12540
|
] }, `o-${row.oauth}`);
|
|
12484
12541
|
}
|
|
12542
|
+
case "form-field": {
|
|
12543
|
+
const placeholder2 = row.field === "family" ? focused ? "\u25C0 \u25B6" : " " : focused ? "\u258F" : "";
|
|
12544
|
+
const display = row.field === "family" ? row.value || "\u2014" : row.secret ? "\u2022".repeat(row.value.length) : row.value.length > 0 ? row.value : focused ? " " : "";
|
|
12545
|
+
const valueColor = row.field === "family" ? focused ? UI_COLORS.focused : UI_COLORS.active : row.value.length > 0 ? void 0 : UI_COLORS.hint;
|
|
12546
|
+
return /* @__PURE__ */ jsxs33(Text, { color: rowColor, wrap: "truncate-end", children: [
|
|
12547
|
+
marker,
|
|
12548
|
+
" ",
|
|
12549
|
+
/* @__PURE__ */ jsx33(Text, { dimColor: true, children: row.label.padEnd(22) }),
|
|
12550
|
+
" ",
|
|
12551
|
+
/* @__PURE__ */ jsx33(Text, { color: valueColor, children: display }),
|
|
12552
|
+
focused ? /* @__PURE__ */ jsx33(Text, { color: UI_COLORS.focused, children: placeholder2 }) : null
|
|
12553
|
+
] }, `ff-${row.field}`);
|
|
12554
|
+
}
|
|
12555
|
+
case "form-action": {
|
|
12556
|
+
const label = row.action === "save" ? "\u2714 Save" : "\u2715 Cancel";
|
|
12557
|
+
const color = row.action === "save" ? focused ? UI_COLORS.focused : UI_COLORS.active : focused ? UI_COLORS.focused : UI_COLORS.warning;
|
|
12558
|
+
return /* @__PURE__ */ jsxs33(Text, { color: rowColor, wrap: "truncate-end", children: [
|
|
12559
|
+
marker,
|
|
12560
|
+
" ",
|
|
12561
|
+
/* @__PURE__ */ jsx33(Text, { color, children: label })
|
|
12562
|
+
] }, `fa-${row.action}`);
|
|
12563
|
+
}
|
|
12485
12564
|
default:
|
|
12486
12565
|
return /* @__PURE__ */ jsx33(Text, { children: " " }, `r-${i}`);
|
|
12487
12566
|
}
|
|
@@ -12523,6 +12602,13 @@ function viewTitle(panel) {
|
|
|
12523
12602
|
return "Sign in with OAuth";
|
|
12524
12603
|
case "flow":
|
|
12525
12604
|
return panel.flowTitle || "Working\u2026";
|
|
12605
|
+
case "form":
|
|
12606
|
+
if (panel.form?.kind === "edit") return `Edit provider \u2014 ${panel.form.providerId ?? ""}`;
|
|
12607
|
+
if (panel.form?.kind === "local") {
|
|
12608
|
+
const preset = panel.presets.find((p) => p.id === panel.form?.presetId);
|
|
12609
|
+
return `Add local server \u2014 ${preset?.label ?? panel.form.presetId ?? ""}`;
|
|
12610
|
+
}
|
|
12611
|
+
return "Add provider";
|
|
12526
12612
|
}
|
|
12527
12613
|
}
|
|
12528
12614
|
function viewLegend(panel) {
|
|
@@ -12543,6 +12629,8 @@ function viewLegend(panel) {
|
|
|
12543
12629
|
return "\u2191/\u2193 select \xB7 Enter sign in \xB7 Esc back";
|
|
12544
12630
|
case "flow":
|
|
12545
12631
|
return panel.flowDone ? "Enter/Esc back" : "Esc cancel";
|
|
12632
|
+
case "form":
|
|
12633
|
+
return panel.form?.kind === "local" ? "type to edit \xB7 Enter select \xB7 Esc cancel" : "type to edit \xB7 \u2190/\u2192 cycle family \xB7 Enter select \xB7 Esc cancel";
|
|
12546
12634
|
}
|
|
12547
12635
|
}
|
|
12548
12636
|
function AuthPanel({ panel }) {
|
|
@@ -20141,9 +20229,9 @@ var SETTINGS_DEFAULTS = Object.freeze({
|
|
|
20141
20229
|
titleAnimation: true,
|
|
20142
20230
|
yolo: true,
|
|
20143
20231
|
fleetChat: "off",
|
|
20144
|
-
chime:
|
|
20232
|
+
chime: true,
|
|
20145
20233
|
confirmExit: true,
|
|
20146
|
-
nextPrediction:
|
|
20234
|
+
nextPrediction: true,
|
|
20147
20235
|
featureMcp: true,
|
|
20148
20236
|
featurePlugins: true,
|
|
20149
20237
|
featureMemory: true,
|
|
@@ -20155,20 +20243,20 @@ var SETTINGS_DEFAULTS = Object.freeze({
|
|
|
20155
20243
|
contextStrategy: "hybrid",
|
|
20156
20244
|
contextMode: "balanced",
|
|
20157
20245
|
maxConcurrent: 10,
|
|
20158
|
-
logLevel: "
|
|
20159
|
-
auditLevel: "
|
|
20246
|
+
logLevel: "warn",
|
|
20247
|
+
auditLevel: "full",
|
|
20160
20248
|
indexOnStart: true,
|
|
20161
20249
|
multiDiffSummaryThreshold: 5,
|
|
20162
|
-
maxIterations:
|
|
20163
|
-
autoProceedMaxIterations:
|
|
20164
|
-
enhanceDelayMs:
|
|
20250
|
+
maxIterations: 0,
|
|
20251
|
+
autoProceedMaxIterations: 0,
|
|
20252
|
+
enhanceDelayMs: 15e3,
|
|
20165
20253
|
preRefineSeconds: 3,
|
|
20166
20254
|
enhanceEnabled: true,
|
|
20167
|
-
enhanceLanguage: "
|
|
20168
|
-
debugStream:
|
|
20255
|
+
enhanceLanguage: "english",
|
|
20256
|
+
debugStream: true,
|
|
20169
20257
|
statuslineMode: DEFAULT_STATUSLINE_MODE,
|
|
20170
20258
|
reasoningMode: "auto",
|
|
20171
|
-
reasoningEffort: "
|
|
20259
|
+
reasoningEffort: "medium",
|
|
20172
20260
|
reasoningPreserve: false,
|
|
20173
20261
|
thinkingWord: "thinking",
|
|
20174
20262
|
cacheTtl: "default",
|
|
@@ -20176,7 +20264,7 @@ var SETTINGS_DEFAULTS = Object.freeze({
|
|
|
20176
20264
|
animationStyle: "rainbow",
|
|
20177
20265
|
breakerEnabled: false,
|
|
20178
20266
|
breakerAutoKillResetMs: 6e4,
|
|
20179
|
-
showModelReasoning:
|
|
20267
|
+
showModelReasoning: false,
|
|
20180
20268
|
showAgentSwarmPanel: "bottom",
|
|
20181
20269
|
panelPositions: DEFAULT_PANEL_POSITIONS,
|
|
20182
20270
|
readSymbols: false,
|
|
@@ -29745,11 +29833,11 @@ function routeSettingsOverlayKey(host, input, key, isEnter) {
|
|
|
29745
29833
|
mode: config.mode,
|
|
29746
29834
|
delayMs: config.delayMs,
|
|
29747
29835
|
titleAnimation: config.titleAnimation ?? true,
|
|
29748
|
-
yolo: config.yolo ??
|
|
29836
|
+
yolo: config.yolo ?? true,
|
|
29749
29837
|
fleetChat: config.fleetChatVerbosity ?? "off",
|
|
29750
|
-
chime: config.chime ??
|
|
29838
|
+
chime: config.chime ?? true,
|
|
29751
29839
|
confirmExit: config.confirmExit ?? true,
|
|
29752
|
-
nextPrediction: config.nextPrediction ??
|
|
29840
|
+
nextPrediction: config.nextPrediction ?? true,
|
|
29753
29841
|
featureMcp: config.featureMcp ?? true,
|
|
29754
29842
|
featurePlugins: config.featurePlugins ?? true,
|
|
29755
29843
|
featureMemory: config.featureMemory ?? true,
|
|
@@ -29761,20 +29849,20 @@ function routeSettingsOverlayKey(host, input, key, isEnter) {
|
|
|
29761
29849
|
contextStrategy: config.contextStrategy ?? "hybrid",
|
|
29762
29850
|
contextMode: config.contextMode ?? "balanced",
|
|
29763
29851
|
maxConcurrent: config.maxConcurrent ?? 10,
|
|
29764
|
-
logLevel: config.logLevel ?? "
|
|
29765
|
-
auditLevel: config.auditLevel ?? "
|
|
29852
|
+
logLevel: config.logLevel ?? "warn",
|
|
29853
|
+
auditLevel: config.auditLevel ?? "full",
|
|
29766
29854
|
indexOnStart: config.indexOnStart ?? true,
|
|
29767
29855
|
multiDiffSummaryThreshold: config.multiDiffSummaryThreshold ?? 5,
|
|
29768
29856
|
lastSettingsField: config.lastSettingsField ?? 0,
|
|
29769
|
-
maxIterations: config.maxIterations ??
|
|
29770
|
-
autoProceedMaxIterations: config.autoProceedMaxIterations ??
|
|
29771
|
-
enhanceDelayMs: config.enhanceDelayMs ??
|
|
29857
|
+
maxIterations: config.maxIterations ?? 0,
|
|
29858
|
+
autoProceedMaxIterations: config.autoProceedMaxIterations ?? 0,
|
|
29859
|
+
enhanceDelayMs: config.enhanceDelayMs ?? 15e3,
|
|
29772
29860
|
enhanceEnabled: config.enhanceEnabled ?? true,
|
|
29773
|
-
enhanceLanguage: config.enhanceLanguage ?? "
|
|
29774
|
-
debugStream: config.debugStream ??
|
|
29861
|
+
enhanceLanguage: config.enhanceLanguage ?? "english",
|
|
29862
|
+
debugStream: config.debugStream ?? true,
|
|
29775
29863
|
statuslineMode: config.statuslineMode ?? DEFAULT_STATUSLINE_MODE,
|
|
29776
29864
|
reasoningMode: config.reasoningMode ?? "auto",
|
|
29777
|
-
reasoningEffort: config.reasoningEffort ?? "
|
|
29865
|
+
reasoningEffort: config.reasoningEffort ?? "medium",
|
|
29778
29866
|
reasoningPreserve: config.reasoningPreserve ?? false,
|
|
29779
29867
|
thinkingWord: config.thinkingWord ?? "thinking",
|
|
29780
29868
|
cacheTtl: config.cacheTtl ?? "default",
|
|
@@ -29782,7 +29870,7 @@ function routeSettingsOverlayKey(host, input, key, isEnter) {
|
|
|
29782
29870
|
animationStyle: config.animationStyle ?? "rainbow",
|
|
29783
29871
|
breakerEnabled: config.breakerEnabled ?? false,
|
|
29784
29872
|
breakerAutoKillResetMs: config.breakerAutoKillResetMs ?? 6e4,
|
|
29785
|
-
showModelReasoning: config.showModelReasoning ??
|
|
29873
|
+
showModelReasoning: config.showModelReasoning ?? false,
|
|
29786
29874
|
showAgentSwarmPanel: coerceAgentSwarmMode(config.showAgentSwarmPanel),
|
|
29787
29875
|
// Migrate the legacy `showAgentSwarmPanel: 'sidebar'` tri-state into
|
|
29788
29876
|
// the new per-panel `panelPositions.fleet` map so users with old
|
|
@@ -32092,6 +32180,45 @@ function tryAuthModelPickerKeys(host, input, key, isEnter, debouncedEnter2) {
|
|
|
32092
32180
|
host.onAuthShortcut?.(input);
|
|
32093
32181
|
return true;
|
|
32094
32182
|
}
|
|
32183
|
+
if (ap.view === "form" && ap.form) {
|
|
32184
|
+
const rows = authPanelRows(ap);
|
|
32185
|
+
const row = rows[ap.selected];
|
|
32186
|
+
if (row?.kind === "form-field") {
|
|
32187
|
+
if (row.field === "family") {
|
|
32188
|
+
if (key.leftArrow || key.rightArrow) {
|
|
32189
|
+
const current = row.value;
|
|
32190
|
+
const idx = current === "" ? -1 : WIRE_FAMILIES.indexOf(current);
|
|
32191
|
+
const nextIdx = idx === -1 ? 0 : (idx + (key.rightArrow ? 1 : -1) + WIRE_FAMILIES.length) % WIRE_FAMILIES.length;
|
|
32192
|
+
dispatch({
|
|
32193
|
+
type: "authFormChange",
|
|
32194
|
+
field: "family",
|
|
32195
|
+
value: WIRE_FAMILIES[nextIdx] ?? "openai-compatible"
|
|
32196
|
+
});
|
|
32197
|
+
return true;
|
|
32198
|
+
}
|
|
32199
|
+
return true;
|
|
32200
|
+
}
|
|
32201
|
+
if (key.backspace) {
|
|
32202
|
+
dispatch({
|
|
32203
|
+
type: "authFormChange",
|
|
32204
|
+
field: row.field,
|
|
32205
|
+
value: row.value.slice(0, -1)
|
|
32206
|
+
});
|
|
32207
|
+
return true;
|
|
32208
|
+
}
|
|
32209
|
+
if (input && !key.ctrl && !key.meta) {
|
|
32210
|
+
const printable = Array.from(input).filter((ch) => ch.charCodeAt(0) >= 32 && ch.charCodeAt(0) !== 127).join("");
|
|
32211
|
+
if (printable.length > 0) {
|
|
32212
|
+
dispatch({
|
|
32213
|
+
type: "authFormChange",
|
|
32214
|
+
field: row.field,
|
|
32215
|
+
value: row.value + printable
|
|
32216
|
+
});
|
|
32217
|
+
}
|
|
32218
|
+
return true;
|
|
32219
|
+
}
|
|
32220
|
+
}
|
|
32221
|
+
}
|
|
32095
32222
|
return true;
|
|
32096
32223
|
}
|
|
32097
32224
|
if (state.modelPicker.open) {
|
|
@@ -34354,11 +34481,11 @@ function createInitialState(options) {
|
|
|
34354
34481
|
mode: "off",
|
|
34355
34482
|
delayMs: 0,
|
|
34356
34483
|
titleAnimation: true,
|
|
34357
|
-
yolo:
|
|
34484
|
+
yolo: true,
|
|
34358
34485
|
fleetChat,
|
|
34359
|
-
chime:
|
|
34486
|
+
chime: true,
|
|
34360
34487
|
confirmExit: true,
|
|
34361
|
-
nextPrediction:
|
|
34488
|
+
nextPrediction: true,
|
|
34362
34489
|
featureMcp: true,
|
|
34363
34490
|
featurePlugins: true,
|
|
34364
34491
|
featureMemory: true,
|
|
@@ -34370,20 +34497,20 @@ function createInitialState(options) {
|
|
|
34370
34497
|
contextStrategy: "hybrid",
|
|
34371
34498
|
contextMode: "balanced",
|
|
34372
34499
|
maxConcurrent: 10,
|
|
34373
|
-
logLevel: "
|
|
34374
|
-
auditLevel: "
|
|
34500
|
+
logLevel: "warn",
|
|
34501
|
+
auditLevel: "full",
|
|
34375
34502
|
indexOnStart: true,
|
|
34376
34503
|
multiDiffSummaryThreshold: 5,
|
|
34377
|
-
maxIterations:
|
|
34378
|
-
autoProceedMaxIterations:
|
|
34379
|
-
enhanceDelayMs:
|
|
34504
|
+
maxIterations: 0,
|
|
34505
|
+
autoProceedMaxIterations: 0,
|
|
34506
|
+
enhanceDelayMs: 15e3,
|
|
34380
34507
|
preRefineSeconds: 3,
|
|
34381
34508
|
enhanceEnabled: true,
|
|
34382
|
-
enhanceLanguage: "
|
|
34383
|
-
debugStream:
|
|
34509
|
+
enhanceLanguage: "english",
|
|
34510
|
+
debugStream: true,
|
|
34384
34511
|
statuslineMode: DEFAULT_STATUSLINE_MODE,
|
|
34385
34512
|
reasoningMode: "auto",
|
|
34386
|
-
reasoningEffort: "
|
|
34513
|
+
reasoningEffort: "medium",
|
|
34387
34514
|
reasoningEffortLevels: void 0,
|
|
34388
34515
|
reasoningPreserve: false,
|
|
34389
34516
|
thinkingWord: "thinking",
|
|
@@ -34394,7 +34521,7 @@ function createInitialState(options) {
|
|
|
34394
34521
|
animationStyle: "rainbow",
|
|
34395
34522
|
breakerEnabled: false,
|
|
34396
34523
|
breakerAutoKillResetMs: 6e4,
|
|
34397
|
-
showModelReasoning:
|
|
34524
|
+
showModelReasoning: false,
|
|
34398
34525
|
showAgentSwarmPanel: "bottom",
|
|
34399
34526
|
showSidebar: true,
|
|
34400
34527
|
panelPositions: DEFAULT_PANEL_POSITIONS,
|
|
@@ -35178,6 +35305,9 @@ var dialogActionTypes = [
|
|
|
35178
35305
|
"authPromptEnd",
|
|
35179
35306
|
"authConfirmStart",
|
|
35180
35307
|
"authConfirmEnd",
|
|
35308
|
+
"authFormStart",
|
|
35309
|
+
"authFormChange",
|
|
35310
|
+
"authFormCancel",
|
|
35181
35311
|
"projectPickerOpen",
|
|
35182
35312
|
"projectPickerClose",
|
|
35183
35313
|
"projectPickerMove",
|
|
@@ -35265,6 +35395,9 @@ function reduceDialogs(state, action) {
|
|
|
35265
35395
|
...state.authPanel,
|
|
35266
35396
|
view: action.view,
|
|
35267
35397
|
providerId: action.providerId ?? state.authPanel.providerId,
|
|
35398
|
+
// Leaving the form view clears the form slice so Esc-back from
|
|
35399
|
+
// a re-opened form doesn't surface stale defaults.
|
|
35400
|
+
form: action.view === "form" ? state.authPanel.form : void 0,
|
|
35268
35401
|
selected: 0,
|
|
35269
35402
|
filter: "",
|
|
35270
35403
|
hint: void 0
|
|
@@ -35345,6 +35478,31 @@ function reduceDialogs(state, action) {
|
|
|
35345
35478
|
};
|
|
35346
35479
|
case "authConfirmEnd":
|
|
35347
35480
|
return { ...state, authPanel: { ...state.authPanel, confirm: void 0 } };
|
|
35481
|
+
case "authFormStart":
|
|
35482
|
+
return {
|
|
35483
|
+
...state,
|
|
35484
|
+
authPanel: {
|
|
35485
|
+
...state.authPanel,
|
|
35486
|
+
view: "form",
|
|
35487
|
+
form: action.form,
|
|
35488
|
+
selected: 0,
|
|
35489
|
+
hint: void 0
|
|
35490
|
+
}
|
|
35491
|
+
};
|
|
35492
|
+
case "authFormChange": {
|
|
35493
|
+
const cur = state.authPanel.form;
|
|
35494
|
+
if (!cur) return state;
|
|
35495
|
+
const fields = { ...cur.fields, [action.field]: action.value };
|
|
35496
|
+
return {
|
|
35497
|
+
...state,
|
|
35498
|
+
authPanel: { ...state.authPanel, form: { ...cur, fields } }
|
|
35499
|
+
};
|
|
35500
|
+
}
|
|
35501
|
+
case "authFormCancel":
|
|
35502
|
+
return {
|
|
35503
|
+
...state,
|
|
35504
|
+
authPanel: { ...state.authPanel, view: "list", form: void 0 }
|
|
35505
|
+
};
|
|
35348
35506
|
case "projectPickerOpen":
|
|
35349
35507
|
return {
|
|
35350
35508
|
...state,
|
|
@@ -38534,6 +38692,163 @@ function useAuthPanel(opts) {
|
|
|
38534
38692
|
}
|
|
38535
38693
|
})();
|
|
38536
38694
|
}, [authHost, dispatch]);
|
|
38695
|
+
const openCustomSetupForm = useCallback9(() => {
|
|
38696
|
+
dispatch({
|
|
38697
|
+
type: "authFormStart",
|
|
38698
|
+
form: {
|
|
38699
|
+
kind: "setup",
|
|
38700
|
+
fields: {
|
|
38701
|
+
type: "",
|
|
38702
|
+
name: "",
|
|
38703
|
+
family: "openai-compatible",
|
|
38704
|
+
baseUrl: "",
|
|
38705
|
+
alias: "",
|
|
38706
|
+
keyLabel: "default",
|
|
38707
|
+
apiKey: "",
|
|
38708
|
+
models: "",
|
|
38709
|
+
envVars: ""
|
|
38710
|
+
}
|
|
38711
|
+
}
|
|
38712
|
+
});
|
|
38713
|
+
}, [dispatch]);
|
|
38714
|
+
const openCatalogSetupForm = useCallback9(
|
|
38715
|
+
(entry2) => {
|
|
38716
|
+
const family = WIRE_FAMILIES.includes(entry2.family) ? entry2.family : "openai-compatible";
|
|
38717
|
+
dispatch({
|
|
38718
|
+
type: "authFormStart",
|
|
38719
|
+
form: {
|
|
38720
|
+
kind: "setup",
|
|
38721
|
+
fields: {
|
|
38722
|
+
type: entry2.id,
|
|
38723
|
+
name: entry2.name,
|
|
38724
|
+
family,
|
|
38725
|
+
baseUrl: entry2.apiBase ?? "",
|
|
38726
|
+
alias: entry2.id,
|
|
38727
|
+
keyLabel: "default",
|
|
38728
|
+
apiKey: "",
|
|
38729
|
+
models: "",
|
|
38730
|
+
envVars: entry2.envVars.join(", ")
|
|
38731
|
+
}
|
|
38732
|
+
}
|
|
38733
|
+
});
|
|
38734
|
+
},
|
|
38735
|
+
[dispatch]
|
|
38736
|
+
);
|
|
38737
|
+
const openEditProviderForm = useCallback9(
|
|
38738
|
+
(providerId) => {
|
|
38739
|
+
const provider = stateRef.current.authPanel.providers.find((p) => p.id === providerId);
|
|
38740
|
+
if (!provider) {
|
|
38741
|
+
dispatch({ type: "authHint", text: `\u2717 Provider "${providerId}" no longer in config.` });
|
|
38742
|
+
return;
|
|
38743
|
+
}
|
|
38744
|
+
const family = WIRE_FAMILIES.includes(
|
|
38745
|
+
provider.family ?? ""
|
|
38746
|
+
) ? provider.family : "openai-compatible";
|
|
38747
|
+
dispatch({
|
|
38748
|
+
type: "authFormStart",
|
|
38749
|
+
form: {
|
|
38750
|
+
kind: "edit",
|
|
38751
|
+
providerId,
|
|
38752
|
+
fields: {
|
|
38753
|
+
type: provider.type ?? providerId,
|
|
38754
|
+
name: "",
|
|
38755
|
+
family,
|
|
38756
|
+
baseUrl: provider.baseUrl ?? "",
|
|
38757
|
+
alias: providerId,
|
|
38758
|
+
keyLabel: "",
|
|
38759
|
+
apiKey: "",
|
|
38760
|
+
models: provider.models.join(", "),
|
|
38761
|
+
envVars: provider.envVars.join(", ")
|
|
38762
|
+
}
|
|
38763
|
+
}
|
|
38764
|
+
});
|
|
38765
|
+
},
|
|
38766
|
+
[dispatch, stateRef]
|
|
38767
|
+
);
|
|
38768
|
+
const submitAuthForm = useCallback9(async () => {
|
|
38769
|
+
if (!authHost) return;
|
|
38770
|
+
const form = stateRef.current.authPanel.form;
|
|
38771
|
+
if (!form) return;
|
|
38772
|
+
dispatch({ type: "authBusy", busy: true });
|
|
38773
|
+
let err;
|
|
38774
|
+
if (form.kind === "setup") {
|
|
38775
|
+
const setup = {
|
|
38776
|
+
source: form.fields.type ? "catalog" : "custom",
|
|
38777
|
+
type: form.fields.type,
|
|
38778
|
+
name: form.fields.name,
|
|
38779
|
+
family: form.fields.family,
|
|
38780
|
+
baseUrl: form.fields.baseUrl,
|
|
38781
|
+
alias: form.fields.alias,
|
|
38782
|
+
keyLabel: form.fields.keyLabel,
|
|
38783
|
+
apiKey: form.fields.apiKey,
|
|
38784
|
+
models: form.fields.models,
|
|
38785
|
+
envVars: form.fields.envVars
|
|
38786
|
+
};
|
|
38787
|
+
err = await authHost.saveProviderSetup(setup);
|
|
38788
|
+
} else {
|
|
38789
|
+
const edit = {
|
|
38790
|
+
providerId: form.providerId ?? "",
|
|
38791
|
+
family: form.fields.family,
|
|
38792
|
+
baseUrl: form.fields.baseUrl,
|
|
38793
|
+
models: form.fields.models,
|
|
38794
|
+
envVars: form.fields.envVars
|
|
38795
|
+
};
|
|
38796
|
+
err = await authHost.saveProviderEdit(edit);
|
|
38797
|
+
}
|
|
38798
|
+
if (!mountedRef.current) return;
|
|
38799
|
+
dispatch({ type: "authBusy", busy: false });
|
|
38800
|
+
if (err) {
|
|
38801
|
+
dispatch({ type: "authHint", text: `\u2717 ${err}` });
|
|
38802
|
+
return;
|
|
38803
|
+
}
|
|
38804
|
+
dispatch({ type: "authHint", text: "\u2713 Provider saved." });
|
|
38805
|
+
const nextView = form.kind === "edit" && form.providerId ? "provider" : "list";
|
|
38806
|
+
const nextProviderId = form.kind === "edit" ? form.providerId : void 0;
|
|
38807
|
+
dispatch({
|
|
38808
|
+
type: "authView",
|
|
38809
|
+
view: nextView,
|
|
38810
|
+
providerId: nextProviderId
|
|
38811
|
+
});
|
|
38812
|
+
await reloadProviders();
|
|
38813
|
+
}, [authHost, stateRef, dispatch, reloadProviders]);
|
|
38814
|
+
const openLocalForm = useCallback9(
|
|
38815
|
+
(preset) => {
|
|
38816
|
+
dispatch({
|
|
38817
|
+
type: "authFormStart",
|
|
38818
|
+
form: {
|
|
38819
|
+
kind: "local",
|
|
38820
|
+
presetId: preset.id,
|
|
38821
|
+
fields: {
|
|
38822
|
+
type: "",
|
|
38823
|
+
name: "",
|
|
38824
|
+
family: "",
|
|
38825
|
+
baseUrl: preset.defaultBaseUrl,
|
|
38826
|
+
alias: "",
|
|
38827
|
+
keyLabel: "",
|
|
38828
|
+
apiKey: "",
|
|
38829
|
+
models: "",
|
|
38830
|
+
envVars: ""
|
|
38831
|
+
}
|
|
38832
|
+
}
|
|
38833
|
+
});
|
|
38834
|
+
},
|
|
38835
|
+
[dispatch]
|
|
38836
|
+
);
|
|
38837
|
+
const startLocalFlow = useCallback9(
|
|
38838
|
+
(form) => {
|
|
38839
|
+
if (!authHost) return;
|
|
38840
|
+
const presetId = form.presetId ?? "";
|
|
38841
|
+
const preset = stateRef.current.authPanel.presets.find((p) => p.id === presetId);
|
|
38842
|
+
runFlow(
|
|
38843
|
+
`Add ${preset?.label ?? presetId}`,
|
|
38844
|
+
(io) => authHost.addLocal(presetId, io, {
|
|
38845
|
+
baseUrl: form.fields.baseUrl,
|
|
38846
|
+
apiKey: form.fields.apiKey
|
|
38847
|
+
})
|
|
38848
|
+
);
|
|
38849
|
+
},
|
|
38850
|
+
[authHost, stateRef, runFlow]
|
|
38851
|
+
);
|
|
38537
38852
|
const onAuthEnter = useCallback9(() => {
|
|
38538
38853
|
if (!authHost) return;
|
|
38539
38854
|
const panel = stateRef.current.authPanel;
|
|
@@ -38564,7 +38879,7 @@ function useAuthPanel(opts) {
|
|
|
38564
38879
|
if (row.action === "catalog") openCatalog();
|
|
38565
38880
|
else if (row.action === "local") dispatch({ type: "authView", view: "local" });
|
|
38566
38881
|
else if (row.action === "oauth") dispatch({ type: "authView", view: "oauth" });
|
|
38567
|
-
else
|
|
38882
|
+
else openCustomSetupForm();
|
|
38568
38883
|
return;
|
|
38569
38884
|
case "key": {
|
|
38570
38885
|
const providerId = panel.providerId;
|
|
@@ -38585,23 +38900,8 @@ function useAuthPanel(opts) {
|
|
|
38585
38900
|
case "add-key":
|
|
38586
38901
|
runFlow(`Add key \u2014 ${providerId}`, (io) => authHost.addKey(providerId, io));
|
|
38587
38902
|
break;
|
|
38588
|
-
case "edit-
|
|
38589
|
-
|
|
38590
|
-
`Edit family \u2014 ${providerId}`,
|
|
38591
|
-
(io) => authHost.editField(providerId, "family", io)
|
|
38592
|
-
);
|
|
38593
|
-
break;
|
|
38594
|
-
case "edit-base-url":
|
|
38595
|
-
runFlow(
|
|
38596
|
-
`Edit base URL \u2014 ${providerId}`,
|
|
38597
|
-
(io) => authHost.editField(providerId, "baseUrl", io)
|
|
38598
|
-
);
|
|
38599
|
-
break;
|
|
38600
|
-
case "edit-models":
|
|
38601
|
-
runFlow(
|
|
38602
|
-
`Edit models \u2014 ${providerId}`,
|
|
38603
|
-
(io) => authHost.editField(providerId, "models", io)
|
|
38604
|
-
);
|
|
38903
|
+
case "edit-provider":
|
|
38904
|
+
openEditProviderForm(providerId);
|
|
38605
38905
|
break;
|
|
38606
38906
|
case "add-model":
|
|
38607
38907
|
runFlow(`Add model \u2014 ${providerId}`, (io) => authHost.addModel(providerId, io));
|
|
@@ -38625,11 +38925,25 @@ function useAuthPanel(opts) {
|
|
|
38625
38925
|
}
|
|
38626
38926
|
return;
|
|
38627
38927
|
}
|
|
38928
|
+
case "form-field":
|
|
38929
|
+
dispatch({ type: "authMove", delta: 1 });
|
|
38930
|
+
return;
|
|
38931
|
+
case "form-action":
|
|
38932
|
+
if (row.action === "cancel") {
|
|
38933
|
+
dispatch({ type: "authFormCancel" });
|
|
38934
|
+
return;
|
|
38935
|
+
}
|
|
38936
|
+
if (stateRef.current.authPanel.form?.kind === "local") {
|
|
38937
|
+
startLocalFlow(stateRef.current.authPanel.form);
|
|
38938
|
+
return;
|
|
38939
|
+
}
|
|
38940
|
+
void submitAuthForm();
|
|
38941
|
+
return;
|
|
38628
38942
|
case "catalog-entry":
|
|
38629
|
-
|
|
38943
|
+
openCatalogSetupForm(row.entry);
|
|
38630
38944
|
return;
|
|
38631
38945
|
case "local-preset":
|
|
38632
|
-
|
|
38946
|
+
openLocalForm(row.preset);
|
|
38633
38947
|
return;
|
|
38634
38948
|
case "oauth-option":
|
|
38635
38949
|
runFlow(OAUTH_TITLE[row.oauth] ?? "Sign in", (io) => authHost.oauthLogin(row.oauth, io));
|
|
@@ -38648,6 +38962,10 @@ function useAuthPanel(opts) {
|
|
|
38648
38962
|
dispatch({ type: "authClose" });
|
|
38649
38963
|
return;
|
|
38650
38964
|
}
|
|
38965
|
+
if (panel.view === "form" && panel.form?.kind === "edit" && panel.form.providerId) {
|
|
38966
|
+
dispatch({ type: "authView", view: "provider", providerId: panel.form.providerId });
|
|
38967
|
+
return;
|
|
38968
|
+
}
|
|
38651
38969
|
dispatch({ type: "authView", view: "list" });
|
|
38652
38970
|
}, [stateRef, dispatch]);
|
|
38653
38971
|
const onAuthShortcut = useCallback9(
|
|
@@ -43829,7 +44147,7 @@ function useNextStepsAutoSubmit({
|
|
|
43829
44147
|
}
|
|
43830
44148
|
if (candidate.source === "todo" && suggestions.length > 0) setSuggestions?.([]);
|
|
43831
44149
|
const cfg = getSettings?.();
|
|
43832
|
-
const maxAuto = cfg?.autoProceedMaxIterations ??
|
|
44150
|
+
const maxAuto = cfg?.autoProceedMaxIterations ?? 0;
|
|
43833
44151
|
if (maxAuto > 0 && autoSubmitStreakRef.current >= maxAuto) {
|
|
43834
44152
|
if (!autoSubmitCapWarnedRef.current) {
|
|
43835
44153
|
autoSubmitCapWarnedRef.current = true;
|
|
@@ -44233,11 +44551,11 @@ function usePanelControllers({
|
|
|
44233
44551
|
mode: s2.mode,
|
|
44234
44552
|
delayMs: s2.delayMs,
|
|
44235
44553
|
titleAnimation: s2.titleAnimation ?? true,
|
|
44236
|
-
yolo: s2.yolo ??
|
|
44554
|
+
yolo: s2.yolo ?? true,
|
|
44237
44555
|
fleetChat: s2.fleetChatVerbosity ?? "off",
|
|
44238
|
-
chime: s2.chime ??
|
|
44556
|
+
chime: s2.chime ?? true,
|
|
44239
44557
|
confirmExit: s2.confirmExit ?? true,
|
|
44240
|
-
nextPrediction: s2.nextPrediction ??
|
|
44558
|
+
nextPrediction: s2.nextPrediction ?? true,
|
|
44241
44559
|
featureMcp: s2.featureMcp ?? true,
|
|
44242
44560
|
featurePlugins: s2.featurePlugins ?? true,
|
|
44243
44561
|
featureMemory: s2.featureMemory ?? true,
|
|
@@ -44249,20 +44567,20 @@ function usePanelControllers({
|
|
|
44249
44567
|
contextStrategy: s2.contextStrategy ?? "hybrid",
|
|
44250
44568
|
contextMode: s2.contextMode ?? "balanced",
|
|
44251
44569
|
maxConcurrent: s2.maxConcurrent ?? 10,
|
|
44252
|
-
logLevel: s2.logLevel ?? "
|
|
44253
|
-
auditLevel: s2.auditLevel ?? "
|
|
44570
|
+
logLevel: s2.logLevel ?? "warn",
|
|
44571
|
+
auditLevel: s2.auditLevel ?? "full",
|
|
44254
44572
|
indexOnStart: s2.indexOnStart ?? true,
|
|
44255
44573
|
multiDiffSummaryThreshold: s2.multiDiffSummaryThreshold ?? 5,
|
|
44256
44574
|
lastSettingsField: s2.lastSettingsField ?? 0,
|
|
44257
|
-
maxIterations: s2.maxIterations ??
|
|
44258
|
-
autoProceedMaxIterations: s2.autoProceedMaxIterations ??
|
|
44259
|
-
enhanceDelayMs: s2.enhanceDelayMs ??
|
|
44575
|
+
maxIterations: s2.maxIterations ?? 0,
|
|
44576
|
+
autoProceedMaxIterations: s2.autoProceedMaxIterations ?? 0,
|
|
44577
|
+
enhanceDelayMs: s2.enhanceDelayMs ?? 15e3,
|
|
44260
44578
|
enhanceEnabled: s2.enhanceEnabled ?? true,
|
|
44261
|
-
enhanceLanguage: s2.enhanceLanguage ?? "
|
|
44262
|
-
debugStream: s2.debugStream ??
|
|
44579
|
+
enhanceLanguage: s2.enhanceLanguage ?? "english",
|
|
44580
|
+
debugStream: s2.debugStream ?? true,
|
|
44263
44581
|
statuslineMode: s2.statuslineMode ?? DEFAULT_STATUSLINE_MODE,
|
|
44264
44582
|
reasoningMode: s2.reasoningMode ?? "auto",
|
|
44265
|
-
reasoningEffort: s2.reasoningEffort ?? "
|
|
44583
|
+
reasoningEffort: s2.reasoningEffort ?? "medium",
|
|
44266
44584
|
reasoningEffortLevels: getActiveModelReasoningEffortLevels?.(),
|
|
44267
44585
|
reasoningPreserve: s2.reasoningPreserve ?? false,
|
|
44268
44586
|
thinkingWord: s2.thinkingWord ?? "thinking",
|
|
@@ -44271,7 +44589,7 @@ function usePanelControllers({
|
|
|
44271
44589
|
animationStyle: s2.animationStyle ?? "rainbow",
|
|
44272
44590
|
breakerEnabled: s2.breakerEnabled ?? false,
|
|
44273
44591
|
breakerAutoKillResetMs: s2.breakerAutoKillResetMs ?? 6e4,
|
|
44274
|
-
showModelReasoning: s2.showModelReasoning ??
|
|
44592
|
+
showModelReasoning: s2.showModelReasoning ?? false,
|
|
44275
44593
|
showAgentSwarmPanel: coerceAgentSwarmMode(s2.showAgentSwarmPanel),
|
|
44276
44594
|
// Migrate the legacy `showAgentSwarmPanel: 'sidebar'` tri-state into
|
|
44277
44595
|
// the new per-panel `panelPositions.fleet` map so users with old
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/** Known reducer action types — exact, compile-time checked allow-list. */
|
|
2
|
-
export declare const ALLOWED_ACTION_TYPES: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "authBusy", "authCatalog", "authClose", "authConfirmEnd", "authConfirmStart", "authFilter", "authFlowDone", "authFlowLog", "authFlowStart", "authHint", "authMove", "authOpen", "authPromptChange", "authPromptEnd", "authPromptStart", "authProviders", "authView", "autonomyPickerClose", "autonomyPickerHint", "autonomyPickerMove", "autonomyPickerOpen", "brainBusy", "brainClose", "brainHint", "brainMove", "brainOpen", "brainPromptClear", "brainPromptSet", "brainRiskChange", "brainRowMove", "brainSetLog", "brainSettingsLoaded", "brainStatus", "brainView", "checkpointReceived", "clearConfirmClose", "clearConfirmOpen", "clearConfirmSetValue", "clearHistory", "clearInput", "clearInputHistory", "closeAllPanels", "collabBugFound", "collabEvalComplete", "sidebarScroll", "sidebarScrollReset", "toggleSidebarFocus", "skillPickerClose", "skillPickerHint", "skillPickerMove", "skillPickerOpen", "resourceMenuClose", "resourceMenuConfirm", "resourceMenuFilter", "resourceMenuHint", "resourceMenuMove", "resourceMenuOpen", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "bugHuntContinueClose", "bugHuntContinueOpen", "bugHuntRunningClose", "bugHuntRunningOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "eternalStage", "exitConfirmClose", "exitConfirmOpen", "fKeyPickerClose", "fKeyPickerMove", "fKeyPickerOpen", "fleetBatch", "fleetBudgetExtended", "fleetBudgetWarning", "fleetConcurrency", "fleetCost", "fleetCtxPct", "fleetDelta", "fleetDone", "fleetMessage", "fleetRemove", "fleetSeed", "fleetSpawn", "fleetStart", "fleetTool", "fleetToolEnd", "fleetToolStart", "fleetUsage", "goalRunElapsed", "goalRunInit", "goalRunMonitorToggle", "goalRunPhaseUpdate", "goalRunReset", "goalRunRunningPhases", "goalRunTaskActive", "goalSummary", "helpClose", "helpFilter", "helpHint", "helpMove", "helpOpen", "hint", "historyDown", "historyPush", "historyUp", "interrupt", "leaderCtxPct", "leaderIterEnd", "leaderIterStart", "leaderToolEnd", "leaderToolStart", "mcpPickerBusy", "mcpPickerClose", "mcpPickerHint", "mcpPickerMove", "mcpPickerOpen", "mcpPickerSetItems", "modePickerClose", "modePickerHint", "modePickerMove", "modePickerOpen", "modelPickerBack", "modelPickerClose", "modelPickerHint", "modelPickerMove", "modelPickerOpen", "modelPickerPickProvider", "modelPickerSearch", "pickerClose", "pickerMove", "pickerOpen", "pickerSetMatches", "pluginPickerBusy", "pluginPickerClose", "pluginPickerHint", "pluginPickerMove", "pluginPickerOpen", "pluginPickerSetItems", "projectPickerClose", "projectPickerFilter", "projectPickerHint", "projectPickerMove", "projectPickerOpen", "promptPickerCategory", "promptPickerClose", "promptPickerMove", "promptPickerOpen", "queueClear", "queueDelete", "queueToggleRefine", "refineCountdownClose", "refineCountdownOpen", "refineFailureClose", "refineFailureOpen", "replaceHistory", "autoProceedRelease", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort", "resetContextChip", "resetInterrupts", "resumePickerBusy", "resumePickerClose", "resumePickerError", "resumePickerHint", "resumePickerMove", "resumePickerOpen", "rewindOverlayClose", "rewindOverlayMove", "rewindOverlayOpen", "sddBoardSnapshot", "sddBoardFocusNext", "sddBoardFocusPrev", "sendModePickerClose", "sendModePickerMove", "sendModePickerOpen", "sessionResumeConfirmClear", "sessionResumeConfirmSet", "sessionRewound", "sessionsPanelBusy", "sessionsPanelMove", "sessionsPanelSet", "setBuffer", "setFleetChat", "setHistoryScrolled", "setInputHistory", "setViewportRows", "settingsClose", "settingsFieldMove", "settingsFieldSet", "settingsFilterSet", "settingsHint", "settingsOpen", "settingsThinkingEditCancel", "settingsThinkingEditChange", "settingsThinkingEditCommit", "settingsThinkingEditStart", "settingsWrongProxyUrlEditCancel", "settingsWrongProxyUrlEditChange", "settingsWrongProxyUrlEditCommit", "settingsWrongProxyUrlEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineFilter", "statuslineHint", "statuslineMoveLine", "statuslineOpen", "statuslineResetLayout", "statuslineSetDensity", "statuslineSetLine", "statuslineToggle", "statuslineToggleLine", "statuslineVisibleChipsSync", "steerConsume", "steerStart", "streamDelta", "streamReset", "themePickerClose", "themePickerHint", "themePickerMove", "themePickerOpen", "toggleAgentsMonitor", "toggleAuditPanel", "toggleContextPanel", "toggleConnectionsPanel", "toggleCoordinatorMonitor", "toggleCronMonitor", "toggleGoalKanbanPanel", "toggleGoalPanel", "toggleHelp", "toggleKanbanPanel", "toggleMonitor", "togglePlanPanel", "toggleProcessList", "toggleQueuePanel", "toggleSddBoardMonitor", "toggleSessionsPanel", "toggleTodosMonitor", "toggleWorktreeMonitor", "toolEnded", "toolStarted", "toolStreamAppend", "toolStreamClear", "topicCheckBusy", "toolsPickerBusy", "toolsPickerClose", "toolsPickerFilter", "toolsPickerHint", "toolsPickerMove", "toolsPickerOpen", "toolsPickerSetItems", "toolsPickerToggle", "worktreeRemove", "worktreeUpsert"];
|
|
2
|
+
export declare const ALLOWED_ACTION_TYPES: readonly ["addEntry", "archiveLoaded", "startArchiveLoad", "authBusy", "authCatalog", "authClose", "authConfirmEnd", "authConfirmStart", "authFormCancel", "authFormChange", "authFormStart", "authFilter", "authFlowDone", "authFlowLog", "authFlowStart", "authHint", "authMove", "authOpen", "authPromptChange", "authPromptEnd", "authPromptStart", "authProviders", "authView", "autonomyPickerClose", "autonomyPickerHint", "autonomyPickerMove", "autonomyPickerOpen", "brainBusy", "brainClose", "brainHint", "brainMove", "brainOpen", "brainPromptClear", "brainPromptSet", "brainRiskChange", "brainRowMove", "brainSetLog", "brainSettingsLoaded", "brainStatus", "brainView", "checkpointReceived", "clearConfirmClose", "clearConfirmOpen", "clearConfirmSetValue", "clearHistory", "clearInput", "clearInputHistory", "closeAllPanels", "collabBugFound", "collabEvalComplete", "sidebarScroll", "sidebarScrollReset", "toggleSidebarFocus", "skillPickerClose", "skillPickerHint", "skillPickerMove", "skillPickerOpen", "resourceMenuClose", "resourceMenuConfirm", "resourceMenuFilter", "resourceMenuHint", "resourceMenuMove", "resourceMenuOpen", "collabPlanEmitted", "collabSessionDone", "collabSubagentSpawned", "compactHistory", "confirmClearAll", "confirmClose", "confirmOpen", "continueConfirmClose", "continueConfirmOpen", "bugHuntContinueClose", "bugHuntContinueOpen", "bugHuntRunningClose", "bugHuntRunningOpen", "copiedNotice", "coordinatorEvent", "countdownEnded", "countdownTick", "debugStreamStats", "debugStreamStatsClear", "dequeueFirst", "designPickerClose", "designPickerMove", "designPickerOpen", "designPickerStack", "enhanceBusy", "enhanceClose", "enhanceOpen", "enhanceSet", "enqueue", "escConfirmClose", "escConfirmOpen", "fallbackOverlayClose", "fallbackOverlayMove", "fallbackOverlayOpen", "eternalStage", "exitConfirmClose", "exitConfirmOpen", "fKeyPickerClose", "fKeyPickerMove", "fKeyPickerOpen", "fleetBatch", "fleetBudgetExtended", "fleetBudgetWarning", "fleetConcurrency", "fleetCost", "fleetCtxPct", "fleetDelta", "fleetDone", "fleetMessage", "fleetRemove", "fleetSeed", "fleetSpawn", "fleetStart", "fleetTool", "fleetToolEnd", "fleetToolStart", "fleetUsage", "goalRunElapsed", "goalRunInit", "goalRunMonitorToggle", "goalRunPhaseUpdate", "goalRunReset", "goalRunRunningPhases", "goalRunTaskActive", "goalSummary", "helpClose", "helpFilter", "helpHint", "helpMove", "helpOpen", "hint", "historyDown", "historyPush", "historyUp", "interrupt", "leaderCtxPct", "leaderIterEnd", "leaderIterStart", "leaderToolEnd", "leaderToolStart", "mcpPickerBusy", "mcpPickerClose", "mcpPickerHint", "mcpPickerMove", "mcpPickerOpen", "mcpPickerSetItems", "modePickerClose", "modePickerHint", "modePickerMove", "modePickerOpen", "modelPickerBack", "modelPickerClose", "modelPickerHint", "modelPickerMove", "modelPickerOpen", "modelPickerPickProvider", "modelPickerSearch", "pickerClose", "pickerMove", "pickerOpen", "pickerSetMatches", "pluginPickerBusy", "pluginPickerClose", "pluginPickerHint", "pluginPickerMove", "pluginPickerOpen", "pluginPickerSetItems", "projectPickerClose", "projectPickerFilter", "projectPickerHint", "projectPickerMove", "projectPickerOpen", "promptPickerCategory", "promptPickerClose", "promptPickerMove", "promptPickerOpen", "queueClear", "queueDelete", "queueToggleRefine", "refineCountdownClose", "refineCountdownOpen", "refineFailureClose", "refineFailureOpen", "replaceHistory", "autoProceedRelease", "resumeLoadStart", "resumeLoadTick", "resumeStreamChunk", "resumeLoadAbort", "resetContextChip", "resetInterrupts", "resumePickerBusy", "resumePickerClose", "resumePickerError", "resumePickerHint", "resumePickerMove", "resumePickerOpen", "rewindOverlayClose", "rewindOverlayMove", "rewindOverlayOpen", "sddBoardSnapshot", "sddBoardFocusNext", "sddBoardFocusPrev", "sendModePickerClose", "sendModePickerMove", "sendModePickerOpen", "sessionResumeConfirmClear", "sessionResumeConfirmSet", "sessionRewound", "sessionsPanelBusy", "sessionsPanelMove", "sessionsPanelSet", "setBuffer", "setFleetChat", "setHistoryScrolled", "setInputHistory", "setViewportRows", "settingsClose", "settingsFieldMove", "settingsFieldSet", "settingsFilterSet", "settingsHint", "settingsOpen", "settingsThinkingEditCancel", "settingsThinkingEditChange", "settingsThinkingEditCommit", "settingsThinkingEditStart", "settingsWrongProxyUrlEditCancel", "settingsWrongProxyUrlEditChange", "settingsWrongProxyUrlEditCommit", "settingsWrongProxyUrlEditStart", "settingsValueChange", "settingsValueSet", "shadowClose", "shadowHint", "shadowOpen", "shadowUpdate", "shellCommandWarningClose", "shellCommandWarningOpen", "slashConfirmClose", "slashConfirmOpen", "slashPickerClose", "slashPickerMove", "slashPickerOpen", "status", "statuslineChipExpire", "statuslineChipShow", "statuslineClose", "statuslineFieldMove", "statuslineFieldSet", "statuslineFilter", "statuslineHint", "statuslineMoveLine", "statuslineOpen", "statuslineResetLayout", "statuslineSetDensity", "statuslineSetLine", "statuslineToggle", "statuslineToggleLine", "statuslineVisibleChipsSync", "steerConsume", "steerStart", "streamDelta", "streamReset", "themePickerClose", "themePickerHint", "themePickerMove", "themePickerOpen", "toggleAgentsMonitor", "toggleAuditPanel", "toggleContextPanel", "toggleConnectionsPanel", "toggleCoordinatorMonitor", "toggleCronMonitor", "toggleGoalKanbanPanel", "toggleGoalPanel", "toggleHelp", "toggleKanbanPanel", "toggleMonitor", "togglePlanPanel", "toggleProcessList", "toggleQueuePanel", "toggleSddBoardMonitor", "toggleSessionsPanel", "toggleTodosMonitor", "toggleWorktreeMonitor", "toolEnded", "toolStarted", "toolStreamAppend", "toolStreamClear", "topicCheckBusy", "toolsPickerBusy", "toolsPickerClose", "toolsPickerFilter", "toolsPickerHint", "toolsPickerMove", "toolsPickerOpen", "toolsPickerSetItems", "toolsPickerToggle", "worktreeRemove", "worktreeUpsert"];
|
|
3
3
|
export type AllowedActionType = (typeof ALLOWED_ACTION_TYPES)[number];
|
|
4
4
|
//# sourceMappingURL=action-types.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Action } from '../app-action-type.js';
|
|
2
2
|
import type { State } from '../app-state.js';
|
|
3
|
-
declare const dialogActionTypes: readonly ["authOpen", "authClose", "authProviders", "authCatalog", "authView", "authMove", "authBusy", "authHint", "authFilter", "authFlowStart", "authFlowLog", "authFlowDone", "authPromptStart", "authPromptChange", "authPromptEnd", "authConfirmStart", "authConfirmEnd", "projectPickerOpen", "projectPickerClose", "projectPickerMove", "projectPickerFilter", "projectPickerHint", "fKeyPickerOpen", "fKeyPickerClose", "fKeyPickerMove", "confirmOpen", "confirmClose", "confirmClearAll", "shellCommandWarningOpen", "shellCommandWarningClose", "enhanceOpen", "enhanceClose", "enhanceSet", "enhanceBusy", "topicCheckBusy", "refineCountdownOpen", "refineCountdownClose", "refineFailureOpen", "refineFailureClose", "continueConfirmOpen", "continueConfirmClose", "bugHuntContinueOpen", "bugHuntContinueClose", "bugHuntRunningOpen", "bugHuntRunningClose", "clearConfirmOpen", "clearConfirmSetValue", "clearConfirmClose", "exitConfirmOpen", "exitConfirmClose", "slashConfirmOpen", "slashConfirmClose", "escConfirmOpen", "escConfirmClose", "fallbackOverlayOpen", "fallbackOverlayMove", "fallbackOverlayClose", "sendModePickerOpen", "sendModePickerMove", "sendModePickerClose", "resetContextChip"];
|
|
3
|
+
declare const dialogActionTypes: readonly ["authOpen", "authClose", "authProviders", "authCatalog", "authView", "authMove", "authBusy", "authHint", "authFilter", "authFlowStart", "authFlowLog", "authFlowDone", "authPromptStart", "authPromptChange", "authPromptEnd", "authConfirmStart", "authConfirmEnd", "authFormStart", "authFormChange", "authFormCancel", "projectPickerOpen", "projectPickerClose", "projectPickerMove", "projectPickerFilter", "projectPickerHint", "fKeyPickerOpen", "fKeyPickerClose", "fKeyPickerMove", "confirmOpen", "confirmClose", "confirmClearAll", "shellCommandWarningOpen", "shellCommandWarningClose", "enhanceOpen", "enhanceClose", "enhanceSet", "enhanceBusy", "topicCheckBusy", "refineCountdownOpen", "refineCountdownClose", "refineFailureOpen", "refineFailureClose", "continueConfirmOpen", "continueConfirmClose", "bugHuntContinueOpen", "bugHuntContinueClose", "bugHuntRunningOpen", "bugHuntRunningClose", "clearConfirmOpen", "clearConfirmSetValue", "clearConfirmClose", "exitConfirmOpen", "exitConfirmClose", "slashConfirmOpen", "slashConfirmClose", "escConfirmOpen", "escConfirmClose", "fallbackOverlayOpen", "fallbackOverlayMove", "fallbackOverlayClose", "sendModePickerOpen", "sendModePickerMove", "sendModePickerClose", "resetContextChip"];
|
|
4
4
|
type DialogAction = Extract<Action, {
|
|
5
5
|
type: (typeof dialogActionTypes)[number];
|
|
6
6
|
}>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/tui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "WrongStack terminal UI: Ink-based interactive renderer with history, pickers, and slash menus.",
|
|
6
6
|
"repository": {
|
|
@@ -26,12 +26,12 @@
|
|
|
26
26
|
"!dist/**/*.map"
|
|
27
27
|
],
|
|
28
28
|
"dependencies": {
|
|
29
|
-
"@wrongstack/core": "1.0.
|
|
30
|
-
"@wrongstack/kanban": "1.0.
|
|
31
|
-
"@wrongstack/runtime": "1.0.
|
|
32
|
-
"@wrongstack/sage": "1.0.
|
|
33
|
-
"@wrongstack/sdd": "1.0.
|
|
34
|
-
"@wrongstack/tools": "1.0.
|
|
29
|
+
"@wrongstack/core": "1.0.1",
|
|
30
|
+
"@wrongstack/kanban": "1.0.1",
|
|
31
|
+
"@wrongstack/runtime": "1.0.1",
|
|
32
|
+
"@wrongstack/sage": "1.0.1",
|
|
33
|
+
"@wrongstack/sdd": "1.0.1",
|
|
34
|
+
"@wrongstack/tools": "1.0.1",
|
|
35
35
|
"ink": "7.1.1",
|
|
36
36
|
"react": "^19.2.8",
|
|
37
37
|
"string-width": "8.2.2",
|