@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
- addLocal(presetId: string, io: AuthFlowIo): Promise<AuthFlowResult>;
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-family' | 'edit-base-url' | 'edit-models' | 'edit-model-details' | 'add-model' | 'reset-model-to-catalog' | 'remove' | 'back-to-list';
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-family" },
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-models" },
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: false,
20232
+ chime: true,
20145
20233
  confirmExit: true,
20146
- nextPrediction: false,
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: "info",
20159
- auditLevel: "standard",
20246
+ logLevel: "warn",
20247
+ auditLevel: "full",
20160
20248
  indexOnStart: true,
20161
20249
  multiDiffSummaryThreshold: 5,
20162
- maxIterations: 500,
20163
- autoProceedMaxIterations: 50,
20164
- enhanceDelayMs: 6e4,
20250
+ maxIterations: 0,
20251
+ autoProceedMaxIterations: 0,
20252
+ enhanceDelayMs: 15e3,
20165
20253
  preRefineSeconds: 3,
20166
20254
  enhanceEnabled: true,
20167
- enhanceLanguage: "original",
20168
- debugStream: false,
20255
+ enhanceLanguage: "english",
20256
+ debugStream: true,
20169
20257
  statuslineMode: DEFAULT_STATUSLINE_MODE,
20170
20258
  reasoningMode: "auto",
20171
- reasoningEffort: "high",
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: true,
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 ?? false,
29836
+ yolo: config.yolo ?? true,
29749
29837
  fleetChat: config.fleetChatVerbosity ?? "off",
29750
- chime: config.chime ?? false,
29838
+ chime: config.chime ?? true,
29751
29839
  confirmExit: config.confirmExit ?? true,
29752
- nextPrediction: config.nextPrediction ?? false,
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 ?? "info",
29765
- auditLevel: config.auditLevel ?? "standard",
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 ?? 500,
29770
- autoProceedMaxIterations: config.autoProceedMaxIterations ?? 50,
29771
- enhanceDelayMs: config.enhanceDelayMs ?? 6e4,
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 ?? "original",
29774
- debugStream: config.debugStream ?? false,
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 ?? "high",
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 ?? true,
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: false,
34484
+ yolo: true,
34358
34485
  fleetChat,
34359
- chime: false,
34486
+ chime: true,
34360
34487
  confirmExit: true,
34361
- nextPrediction: false,
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: "info",
34374
- auditLevel: "standard",
34500
+ logLevel: "warn",
34501
+ auditLevel: "full",
34375
34502
  indexOnStart: true,
34376
34503
  multiDiffSummaryThreshold: 5,
34377
- maxIterations: 500,
34378
- autoProceedMaxIterations: 50,
34379
- enhanceDelayMs: 6e4,
34504
+ maxIterations: 0,
34505
+ autoProceedMaxIterations: 0,
34506
+ enhanceDelayMs: 15e3,
34380
34507
  preRefineSeconds: 3,
34381
34508
  enhanceEnabled: true,
34382
- enhanceLanguage: "original",
34383
- debugStream: false,
34509
+ enhanceLanguage: "english",
34510
+ debugStream: true,
34384
34511
  statuslineMode: DEFAULT_STATUSLINE_MODE,
34385
34512
  reasoningMode: "auto",
34386
- reasoningEffort: "high",
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: true,
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 runFlow("Add custom provider", (io) => authHost.addCustomProvider(io));
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-family":
38589
- runFlow(
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
- runFlow(`Add ${row.entry.id}`, (io) => authHost.addCatalogProvider(row.entry.id, io));
38943
+ openCatalogSetupForm(row.entry);
38630
38944
  return;
38631
38945
  case "local-preset":
38632
- runFlow(`Add ${row.preset.label}`, (io) => authHost.addLocal(row.preset.id, io));
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 ?? 50;
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 ?? false,
44554
+ yolo: s2.yolo ?? true,
44237
44555
  fleetChat: s2.fleetChatVerbosity ?? "off",
44238
- chime: s2.chime ?? false,
44556
+ chime: s2.chime ?? true,
44239
44557
  confirmExit: s2.confirmExit ?? true,
44240
- nextPrediction: s2.nextPrediction ?? false,
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 ?? "info",
44253
- auditLevel: s2.auditLevel ?? "standard",
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 ?? 500,
44258
- autoProceedMaxIterations: s2.autoProceedMaxIterations ?? 50,
44259
- enhanceDelayMs: s2.enhanceDelayMs ?? 6e4,
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 ?? "original",
44262
- debugStream: s2.debugStream ?? false,
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 ?? "high",
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 ?? true,
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.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.0",
30
- "@wrongstack/kanban": "1.0.0",
31
- "@wrongstack/runtime": "1.0.0",
32
- "@wrongstack/sage": "1.0.0",
33
- "@wrongstack/sdd": "1.0.0",
34
- "@wrongstack/tools": "1.0.0",
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",