@oh-my-pi/pi-coding-agent 15.11.3 → 15.11.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +107 -0
- package/dist/cli.js +692 -607
- package/dist/types/cli/usage-cli.d.ts +10 -1
- package/dist/types/commands/usage.d.ts +9 -0
- package/dist/types/config/api-key-resolver.d.ts +9 -3
- package/dist/types/config/keybindings.d.ts +1 -1
- package/dist/types/config/model-discovery.d.ts +6 -4
- package/dist/types/config/model-registry.d.ts +7 -4
- package/dist/types/config/settings-schema.d.ts +508 -155
- package/dist/types/export/html/template.generated.d.ts +1 -1
- package/dist/types/mnemopi/config.d.ts +3 -1
- package/dist/types/modes/components/reset-usage-selector.d.ts +12 -0
- package/dist/types/modes/components/session-selector.d.ts +1 -1
- package/dist/types/modes/components/settings-defs.d.ts +9 -2
- package/dist/types/modes/components/settings-selector.d.ts +9 -4
- package/dist/types/modes/components/tool-execution.d.ts +26 -1
- package/dist/types/modes/components/transcript-container.d.ts +12 -0
- package/dist/types/modes/controllers/input-controller.d.ts +9 -1
- package/dist/types/modes/controllers/selector-controller.d.ts +1 -0
- package/dist/types/modes/interactive-mode.d.ts +10 -0
- package/dist/types/modes/session-observer-registry.d.ts +2 -0
- package/dist/types/modes/theme/theme.d.ts +23 -3
- package/dist/types/modes/types.d.ts +2 -0
- package/dist/types/modes/utils/context-usage.d.ts +6 -1
- package/dist/types/session/agent-session.d.ts +28 -8
- package/dist/types/session/auth-storage.d.ts +1 -1
- package/dist/types/session/codex-auto-reset.d.ts +107 -0
- package/dist/types/session/snapcompact-inline.d.ts +129 -0
- package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
- package/dist/types/slash-commands/helpers/reset-usage.d.ts +27 -0
- package/dist/types/system-prompt.d.ts +3 -1
- package/dist/types/task/render.d.ts +17 -6
- package/dist/types/tools/gh.d.ts +3 -0
- package/dist/types/tools/render-utils.d.ts +8 -16
- package/dist/types/tools/todo.d.ts +0 -11
- package/dist/types/utils/session-color.d.ts +15 -3
- package/dist/types/web/kagi.d.ts +1 -2
- package/dist/types/web/search/providers/codex.d.ts +1 -1
- package/dist/types/web/search/providers/gemini.d.ts +9 -6
- package/package.json +11 -11
- package/src/auto-thinking/classifier.ts +1 -5
- package/src/cli/usage-cli.ts +187 -16
- package/src/commands/usage.ts +8 -0
- package/src/commit/model-selection.ts +3 -6
- package/src/config/api-key-resolver.ts +10 -3
- package/src/config/keybindings.ts +1 -1
- package/src/config/model-discovery.ts +60 -46
- package/src/config/model-registry.ts +21 -8
- package/src/config/model-resolver.ts +57 -3
- package/src/config/settings-schema.ts +654 -153
- package/src/config/settings.ts +9 -0
- package/src/eval/completion-bridge.ts +1 -5
- package/src/export/html/template.generated.ts +1 -1
- package/src/export/html/template.js +13 -6
- package/src/internal-urls/docs-index.generated.ts +6 -6
- package/src/internal-urls/issue-pr-protocol.ts +10 -4
- package/src/memories/index.ts +2 -10
- package/src/mnemopi/backend.ts +30 -8
- package/src/mnemopi/config.ts +6 -1
- package/src/mnemopi/state.ts +6 -0
- package/src/modes/components/extensions/inspector-panel.ts +6 -2
- package/src/modes/components/plan-review-overlay.ts +15 -17
- package/src/modes/components/plugin-settings.ts +22 -5
- package/src/modes/components/reset-usage-selector.ts +161 -0
- package/src/modes/components/session-selector.ts +8 -2
- package/src/modes/components/settings-defs.ts +19 -4
- package/src/modes/components/settings-selector.ts +510 -95
- package/src/modes/components/status-line/component.ts +3 -1
- package/src/modes/components/status-line/segments.ts +3 -1
- package/src/modes/components/tool-execution.ts +87 -12
- package/src/modes/components/transcript-container.ts +49 -1
- package/src/modes/components/tree-selector.ts +16 -6
- package/src/modes/controllers/command-controller.ts +61 -8
- package/src/modes/controllers/event-controller.ts +1 -0
- package/src/modes/controllers/input-controller.ts +68 -6
- package/src/modes/controllers/selector-controller.ts +149 -61
- package/src/modes/interactive-mode.ts +63 -2
- package/src/modes/rpc/rpc-mode.ts +2 -1
- package/src/modes/session-observer-registry.ts +61 -3
- package/src/modes/shared.ts +2 -0
- package/src/modes/theme/theme.ts +102 -9
- package/src/modes/types.ts +2 -0
- package/src/modes/utils/context-usage.ts +78 -2
- package/src/modes/utils/hotkeys-markdown.ts +1 -1
- package/src/modes/utils/ui-helpers.ts +9 -5
- package/src/prompts/system/personalities/default.md +26 -0
- package/src/prompts/system/personalities/friendly.md +17 -0
- package/src/prompts/system/personalities/pragmatic.md +15 -0
- package/src/prompts/system/snapcompact-context-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-context-stub.md +1 -0
- package/src/prompts/system/snapcompact-system-frames-note.md +1 -0
- package/src/prompts/system/snapcompact-system-stub.md +1 -0
- package/src/prompts/system/snapcompact-toolresult-note.md +1 -0
- package/src/prompts/system/system-prompt.md +5 -22
- package/src/prompts/tools/browser.md +33 -43
- package/src/prompts/tools/eval.md +27 -50
- package/src/prompts/tools/irc.md +29 -31
- package/src/prompts/tools/read.md +31 -37
- package/src/prompts/tools/task.md +3 -3
- package/src/prompts/tools/todo.md +1 -2
- package/src/sdk.ts +23 -1
- package/src/session/agent-session.ts +221 -29
- package/src/session/auth-storage.ts +4 -0
- package/src/session/codex-auto-reset.ts +190 -0
- package/src/session/session-dump-format.ts +8 -1
- package/src/session/session-manager.ts +5 -5
- package/src/session/snapcompact-inline.ts +524 -0
- package/src/slash-commands/builtin-registry.ts +145 -8
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/context-report.ts +28 -1
- package/src/slash-commands/helpers/reset-usage.ts +66 -0
- package/src/slash-commands/helpers/usage-report.ts +36 -3
- package/src/system-prompt.ts +15 -1
- package/src/task/index.ts +30 -7
- package/src/task/render.ts +57 -32
- package/src/tool-discovery/tool-index.ts +2 -0
- package/src/tools/bash.ts +10 -3
- package/src/tools/eval-render.ts +13 -8
- package/src/tools/gh.ts +39 -1
- package/src/tools/image-gen.ts +114 -78
- package/src/tools/inspect-image.ts +1 -5
- package/src/tools/job.ts +25 -5
- package/src/tools/read.ts +1 -57
- package/src/tools/render-utils.ts +29 -31
- package/src/tools/ssh.ts +3 -3
- package/src/tools/todo.ts +8 -128
- package/src/tools/tts.ts +40 -20
- package/src/utils/clipboard.ts +56 -4
- package/src/utils/commit-message-generator.ts +1 -5
- package/src/utils/session-color.ts +83 -9
- package/src/utils/title-generator.ts +1 -1
- package/src/web/kagi.ts +26 -27
- package/src/web/search/providers/codex.ts +42 -40
- package/src/web/search/providers/gemini.ts +42 -22
- package/src/web/search/providers/perplexity.ts +22 -10
|
@@ -25,11 +25,15 @@ import { EDIT_MODES } from "../utils/edit-mode";
|
|
|
25
25
|
import { SEARCH_PROVIDER_OPTIONS, SEARCH_PROVIDER_PREFERENCES } from "../web/search/types";
|
|
26
26
|
|
|
27
27
|
/** Unified settings schema - single source of truth for all settings.
|
|
28
|
-
* Unified settings schema - single source of truth for all settings.
|
|
29
28
|
*
|
|
30
29
|
* Each setting is defined once here with:
|
|
31
30
|
* - Type and default value
|
|
32
|
-
* - Optional UI metadata (label, description, tab)
|
|
31
|
+
* - Optional UI metadata (label, description, tab, group)
|
|
32
|
+
*
|
|
33
|
+
* UI metadata places the setting in the settings panel: `tab` picks the
|
|
34
|
+
* panel tab, `group` the titled section within it (registered in
|
|
35
|
+
* TAB_GROUPS). Sections render in TAB_GROUPS order; settings within a
|
|
36
|
+
* section keep declaration order.
|
|
33
37
|
*
|
|
34
38
|
* The Settings singleton provides type-safe path-based access:
|
|
35
39
|
* settings.get("compaction.enabled") // => boolean
|
|
@@ -46,7 +50,8 @@ export type SettingTab =
|
|
|
46
50
|
| "interaction"
|
|
47
51
|
| "context"
|
|
48
52
|
| "memory"
|
|
49
|
-
| "
|
|
53
|
+
| "files"
|
|
54
|
+
| "shell"
|
|
50
55
|
| "tools"
|
|
51
56
|
| "tasks"
|
|
52
57
|
| "providers";
|
|
@@ -61,7 +66,8 @@ export const SETTING_TABS: SettingTab[] = [
|
|
|
61
66
|
"interaction",
|
|
62
67
|
"context",
|
|
63
68
|
"memory",
|
|
64
|
-
"
|
|
69
|
+
"files",
|
|
70
|
+
"shell",
|
|
65
71
|
"tools",
|
|
66
72
|
"tasks",
|
|
67
73
|
"providers",
|
|
@@ -74,12 +80,48 @@ export const TAB_METADATA: Record<SettingTab, { label: string; icon: `tab.${stri
|
|
|
74
80
|
interaction: { label: "Interaction", icon: "tab.interaction" },
|
|
75
81
|
context: { label: "Context", icon: "tab.context" },
|
|
76
82
|
memory: { label: "Memory", icon: "tab.memory" },
|
|
77
|
-
|
|
83
|
+
files: { label: "Files", icon: "tab.files" },
|
|
84
|
+
shell: { label: "Shell", icon: "tab.shell" },
|
|
78
85
|
tools: { label: "Tools", icon: "tab.tools" },
|
|
79
86
|
tasks: { label: "Tasks", icon: "tab.tasks" },
|
|
80
87
|
providers: { label: "Providers", icon: "tab.providers" },
|
|
81
88
|
};
|
|
82
89
|
|
|
90
|
+
/**
|
|
91
|
+
* Ordered section groups per tab. Settings declare their section via `ui.group`;
|
|
92
|
+
* the settings UI renders groups in this order with a heading row between them.
|
|
93
|
+
* Ungrouped settings render first, before any section heading.
|
|
94
|
+
*/
|
|
95
|
+
export const TAB_GROUPS: Record<SettingTab, readonly string[]> = {
|
|
96
|
+
appearance: ["Theme", "Status Line", "Display", "Images"],
|
|
97
|
+
model: ["Thinking", "Sampling", "Prompt", "Retry & Fallback"],
|
|
98
|
+
interaction: [
|
|
99
|
+
"Input",
|
|
100
|
+
"Approvals",
|
|
101
|
+
"Notifications",
|
|
102
|
+
"Speech",
|
|
103
|
+
"Magic Keywords",
|
|
104
|
+
"Startup & Updates",
|
|
105
|
+
"Power (macOS)",
|
|
106
|
+
],
|
|
107
|
+
context: ["General", "Compaction", "Rules (TTSR)", "Experimental"],
|
|
108
|
+
memory: ["General", "Mnemopi", "Hindsight"],
|
|
109
|
+
files: ["Editing", "Reading", "Read Summaries", "LSP"],
|
|
110
|
+
shell: ["Bash", "Eval & Python"],
|
|
111
|
+
tools: [
|
|
112
|
+
"Available Tools",
|
|
113
|
+
"Todos",
|
|
114
|
+
"Search & Browser",
|
|
115
|
+
"GitHub",
|
|
116
|
+
"Output Limits",
|
|
117
|
+
"Execution",
|
|
118
|
+
"Discovery & MCP",
|
|
119
|
+
"Developer",
|
|
120
|
+
],
|
|
121
|
+
tasks: ["Modes", "Subagents", "Isolation", "Commands & Skills"],
|
|
122
|
+
providers: ["Services", "Tiny Model", "Protocol", "Privacy"],
|
|
123
|
+
};
|
|
124
|
+
|
|
83
125
|
/** Status line segment identifiers */
|
|
84
126
|
export type StatusLineSegmentId =
|
|
85
127
|
| "pi"
|
|
@@ -115,6 +157,8 @@ export type SubmenuOption<V extends string = string> = {
|
|
|
115
157
|
|
|
116
158
|
interface UiBase {
|
|
117
159
|
tab: SettingTab;
|
|
160
|
+
/** Section within the tab; must be listed in TAB_GROUPS[tab]. Ungrouped settings render at the top. */
|
|
161
|
+
group?: string;
|
|
118
162
|
label: string;
|
|
119
163
|
description: string;
|
|
120
164
|
/** Condition function name - setting only shown when true */
|
|
@@ -273,6 +317,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
273
317
|
default: false,
|
|
274
318
|
ui: {
|
|
275
319
|
tab: "interaction",
|
|
320
|
+
group: "Startup & Updates",
|
|
276
321
|
label: "Auto Resume",
|
|
277
322
|
description: "Automatically resume the most recent session in the current directory",
|
|
278
323
|
},
|
|
@@ -284,8 +329,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
284
329
|
default: true,
|
|
285
330
|
ui: {
|
|
286
331
|
tab: "interaction",
|
|
287
|
-
|
|
288
|
-
|
|
332
|
+
group: "Power (macOS)",
|
|
333
|
+
label: "Prevent Idle Sleep",
|
|
334
|
+
description: "Keep the system awake while a session is open (caffeinate -i)",
|
|
289
335
|
},
|
|
290
336
|
},
|
|
291
337
|
"power.preventSystemSleep": {
|
|
@@ -293,8 +339,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
293
339
|
default: false,
|
|
294
340
|
ui: {
|
|
295
341
|
tab: "interaction",
|
|
296
|
-
|
|
297
|
-
|
|
342
|
+
group: "Power (macOS)",
|
|
343
|
+
label: "Prevent System Sleep on AC",
|
|
344
|
+
description: "Block all system sleep while on AC power (caffeinate -s)",
|
|
298
345
|
},
|
|
299
346
|
},
|
|
300
347
|
"power.declareUserActive": {
|
|
@@ -302,8 +349,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
302
349
|
default: false,
|
|
303
350
|
ui: {
|
|
304
351
|
tab: "interaction",
|
|
305
|
-
|
|
306
|
-
|
|
352
|
+
group: "Power (macOS)",
|
|
353
|
+
label: "Declare User Active",
|
|
354
|
+
description: "Keep the display lit and treat the user as active (caffeinate -u)",
|
|
307
355
|
},
|
|
308
356
|
},
|
|
309
357
|
"power.preventDisplaySleep": {
|
|
@@ -311,30 +359,15 @@ export const SETTINGS_SCHEMA = {
|
|
|
311
359
|
default: false,
|
|
312
360
|
ui: {
|
|
313
361
|
tab: "interaction",
|
|
314
|
-
|
|
315
|
-
|
|
362
|
+
group: "Power (macOS)",
|
|
363
|
+
label: "Prevent Display Sleep",
|
|
364
|
+
description: "Keep the display from idle-sleeping while a session is open (caffeinate -d)",
|
|
316
365
|
},
|
|
317
366
|
},
|
|
318
367
|
shellPath: { type: "string", default: undefined },
|
|
319
368
|
|
|
320
369
|
extensions: { type: "array", default: EMPTY_STRING_ARRAY },
|
|
321
370
|
|
|
322
|
-
"marketplace.autoUpdate": {
|
|
323
|
-
type: "enum",
|
|
324
|
-
values: ["off", "notify", "auto"] as const,
|
|
325
|
-
default: "notify",
|
|
326
|
-
ui: {
|
|
327
|
-
tab: "tools",
|
|
328
|
-
label: "Marketplace Auto-Update",
|
|
329
|
-
description: "Check for plugin updates on startup (off/notify/auto)",
|
|
330
|
-
options: [
|
|
331
|
-
{ value: "off", label: "Off", description: "Don't check for plugin updates" },
|
|
332
|
-
{ value: "notify", label: "Notify", description: "Check on startup and notify when updates are available" },
|
|
333
|
-
{ value: "auto", label: "Auto", description: "Check on startup and auto-install updates" },
|
|
334
|
-
],
|
|
335
|
-
},
|
|
336
|
-
},
|
|
337
|
-
|
|
338
371
|
enabledModels: { type: "array", default: EMPTY_STRING_ARRAY },
|
|
339
372
|
|
|
340
373
|
disabledProviders: { type: "array", default: EMPTY_STRING_ARRAY },
|
|
@@ -359,8 +392,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
359
392
|
default: "titanium",
|
|
360
393
|
ui: {
|
|
361
394
|
tab: "appearance",
|
|
395
|
+
group: "Theme",
|
|
362
396
|
label: "Dark Theme",
|
|
363
|
-
description: "Theme used when terminal has dark background",
|
|
397
|
+
description: "Theme used when the terminal has a dark background",
|
|
364
398
|
options: "runtime",
|
|
365
399
|
},
|
|
366
400
|
},
|
|
@@ -370,8 +404,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
370
404
|
default: "light",
|
|
371
405
|
ui: {
|
|
372
406
|
tab: "appearance",
|
|
407
|
+
group: "Theme",
|
|
373
408
|
label: "Light Theme",
|
|
374
|
-
description: "Theme used when terminal has light background",
|
|
409
|
+
description: "Theme used when the terminal has a light background",
|
|
375
410
|
options: "runtime",
|
|
376
411
|
},
|
|
377
412
|
},
|
|
@@ -382,8 +417,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
382
417
|
default: "unicode",
|
|
383
418
|
ui: {
|
|
384
419
|
tab: "appearance",
|
|
420
|
+
group: "Theme",
|
|
385
421
|
label: "Symbol Preset",
|
|
386
|
-
description: "
|
|
422
|
+
description: "Glyph set for icons and symbols (Unicode, Nerd Font, or ASCII)",
|
|
387
423
|
options: [
|
|
388
424
|
{ value: "unicode", label: "Unicode", description: "Standard symbols (default)" },
|
|
389
425
|
{ value: "nerd", label: "Nerd Font", description: "Requires Nerd Font" },
|
|
@@ -397,6 +433,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
397
433
|
default: false,
|
|
398
434
|
ui: {
|
|
399
435
|
tab: "appearance",
|
|
436
|
+
group: "Theme",
|
|
400
437
|
label: "Color-Blind Mode",
|
|
401
438
|
description: "Use blue instead of green for diff additions",
|
|
402
439
|
},
|
|
@@ -409,6 +446,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
409
446
|
default: "default",
|
|
410
447
|
ui: {
|
|
411
448
|
tab: "appearance",
|
|
449
|
+
group: "Status Line",
|
|
412
450
|
label: "Status Line Preset",
|
|
413
451
|
description: "Pre-built status line configurations",
|
|
414
452
|
options: [
|
|
@@ -429,6 +467,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
429
467
|
default: "powerline-thin",
|
|
430
468
|
ui: {
|
|
431
469
|
tab: "appearance",
|
|
470
|
+
group: "Status Line",
|
|
432
471
|
label: "Status Line Separator",
|
|
433
472
|
description: "Style of separators between segments",
|
|
434
473
|
options: [
|
|
@@ -448,6 +487,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
448
487
|
default: true,
|
|
449
488
|
ui: {
|
|
450
489
|
tab: "appearance",
|
|
490
|
+
group: "Status Line",
|
|
451
491
|
label: "Session Accent",
|
|
452
492
|
description: "Use the session name color for the editor border and status line gap",
|
|
453
493
|
},
|
|
@@ -458,6 +498,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
458
498
|
default: false,
|
|
459
499
|
ui: {
|
|
460
500
|
tab: "appearance",
|
|
501
|
+
group: "Status Line",
|
|
461
502
|
label: "Transparent Status Line",
|
|
462
503
|
description:
|
|
463
504
|
"Use the terminal's default background for the status line instead of the theme's `statusLineBg`. Powerline end caps are dropped because they need a contrasting fill to bridge into the surrounding terminal.",
|
|
@@ -468,7 +509,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
468
509
|
default: 50,
|
|
469
510
|
ui: {
|
|
470
511
|
tab: "tools",
|
|
471
|
-
|
|
512
|
+
group: "Output Limits",
|
|
513
|
+
label: "Artifact Spill Threshold (KB)",
|
|
472
514
|
description: "Tool output above this size is saved as an artifact; tail is kept inline",
|
|
473
515
|
options: [
|
|
474
516
|
{ value: "1", label: "1 KB", description: "~250 tokens" },
|
|
@@ -491,7 +533,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
491
533
|
default: 20,
|
|
492
534
|
ui: {
|
|
493
535
|
tab: "tools",
|
|
494
|
-
|
|
536
|
+
group: "Output Limits",
|
|
537
|
+
label: "Artifact Tail Size (KB)",
|
|
495
538
|
description: "Amount of tail content kept inline when output spills to artifact",
|
|
496
539
|
options: [
|
|
497
540
|
{ value: "1", label: "1 KB", description: "~250 tokens" },
|
|
@@ -510,7 +553,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
510
553
|
default: 20,
|
|
511
554
|
ui: {
|
|
512
555
|
tab: "tools",
|
|
513
|
-
|
|
556
|
+
group: "Output Limits",
|
|
557
|
+
label: "Artifact Head Size (KB)",
|
|
514
558
|
description:
|
|
515
559
|
"Amount of head content kept inline alongside the tail when output spills to artifact (middle elision). 0 disables — keep tail only.",
|
|
516
560
|
options: [
|
|
@@ -531,7 +575,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
531
575
|
default: 768,
|
|
532
576
|
ui: {
|
|
533
577
|
tab: "tools",
|
|
534
|
-
|
|
578
|
+
group: "Output Limits",
|
|
579
|
+
label: "Output Column Cap",
|
|
535
580
|
description:
|
|
536
581
|
"Per-line byte cap for streaming tool outputs (bash, ssh, python, js eval) and `read`. Lines wider than this are ellipsis-truncated; remaining bytes up to the next newline are dropped. 0 disables.",
|
|
537
582
|
options: [
|
|
@@ -550,7 +595,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
550
595
|
default: 500,
|
|
551
596
|
ui: {
|
|
552
597
|
tab: "tools",
|
|
553
|
-
|
|
598
|
+
group: "Output Limits",
|
|
599
|
+
label: "Artifact Tail Lines",
|
|
554
600
|
description: "Maximum lines of tail content kept inline when output spills to artifact",
|
|
555
601
|
options: [
|
|
556
602
|
{ value: "50", label: "50 lines", description: "~250 tokens" },
|
|
@@ -569,8 +615,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
569
615
|
default: true,
|
|
570
616
|
ui: {
|
|
571
617
|
tab: "appearance",
|
|
618
|
+
group: "Status Line",
|
|
572
619
|
label: "Show Hook Status",
|
|
573
|
-
description: "Display hook status messages below status line",
|
|
620
|
+
description: "Display hook status messages below the status line",
|
|
574
621
|
},
|
|
575
622
|
},
|
|
576
623
|
|
|
@@ -586,8 +633,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
586
633
|
default: true,
|
|
587
634
|
ui: {
|
|
588
635
|
tab: "appearance",
|
|
636
|
+
group: "Images",
|
|
589
637
|
label: "Show Inline Images",
|
|
590
|
-
description: "Render images inline in terminal",
|
|
638
|
+
description: "Render images inline in the terminal",
|
|
591
639
|
condition: "hasImageProtocol",
|
|
592
640
|
},
|
|
593
641
|
},
|
|
@@ -597,6 +645,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
597
645
|
default: true,
|
|
598
646
|
ui: {
|
|
599
647
|
tab: "appearance",
|
|
648
|
+
group: "Images",
|
|
600
649
|
label: "Auto-Resize Images",
|
|
601
650
|
description: "Resize large images to 2000x2000 max for better model compatibility",
|
|
602
651
|
},
|
|
@@ -605,7 +654,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
605
654
|
"images.blockImages": {
|
|
606
655
|
type: "boolean",
|
|
607
656
|
default: false,
|
|
608
|
-
ui: {
|
|
657
|
+
ui: {
|
|
658
|
+
tab: "appearance",
|
|
659
|
+
group: "Images",
|
|
660
|
+
label: "Block Images",
|
|
661
|
+
description: "Prevent images from being sent to LLM providers",
|
|
662
|
+
},
|
|
609
663
|
},
|
|
610
664
|
|
|
611
665
|
"tui.maxInlineImageColumns": {
|
|
@@ -634,6 +688,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
634
688
|
default: false,
|
|
635
689
|
ui: {
|
|
636
690
|
tab: "appearance",
|
|
691
|
+
group: "Display",
|
|
637
692
|
label: "Large Headings (Kitty)",
|
|
638
693
|
description:
|
|
639
694
|
"Render Markdown H1 headings at 2x scale using Kitty's OSC 66 text-sizing protocol. Only takes effect on Kitty terminals; ignored everywhere else. Off by default.",
|
|
@@ -646,6 +701,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
646
701
|
default: "auto",
|
|
647
702
|
ui: {
|
|
648
703
|
tab: "appearance",
|
|
704
|
+
group: "Display",
|
|
649
705
|
label: "Terminal Hyperlinks",
|
|
650
706
|
description:
|
|
651
707
|
"Wrap paths and URLs in OSC 8 hyperlinks for terminal-native click-to-open (auto: detect support; off: never; always: unconditional)",
|
|
@@ -663,6 +719,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
663
719
|
default: "classic",
|
|
664
720
|
ui: {
|
|
665
721
|
tab: "appearance",
|
|
722
|
+
group: "Display",
|
|
666
723
|
label: "Shimmer",
|
|
667
724
|
description: "Animation style for working/loading messages",
|
|
668
725
|
options: [
|
|
@@ -678,6 +735,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
678
735
|
default: true,
|
|
679
736
|
ui: {
|
|
680
737
|
tab: "appearance",
|
|
738
|
+
group: "Display",
|
|
681
739
|
label: "Smooth Streaming",
|
|
682
740
|
description: "Reveal assistant text and streamed tool input smoothly while chunks arrive",
|
|
683
741
|
},
|
|
@@ -688,6 +746,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
688
746
|
default: false,
|
|
689
747
|
ui: {
|
|
690
748
|
tab: "appearance",
|
|
749
|
+
group: "Display",
|
|
691
750
|
label: "Show Token Usage",
|
|
692
751
|
description: "Show per-turn token usage on assistant messages",
|
|
693
752
|
},
|
|
@@ -696,7 +755,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
696
755
|
showHardwareCursor: {
|
|
697
756
|
type: "boolean",
|
|
698
757
|
default: true, // will be computed based on platform if undefined
|
|
699
|
-
ui: {
|
|
758
|
+
ui: {
|
|
759
|
+
tab: "appearance",
|
|
760
|
+
group: "Display",
|
|
761
|
+
label: "Show Hardware Cursor",
|
|
762
|
+
description: "Show terminal cursor for IME support",
|
|
763
|
+
},
|
|
700
764
|
},
|
|
701
765
|
|
|
702
766
|
// ────────────────────────────────────────────────────────────────────────
|
|
@@ -710,6 +774,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
710
774
|
default: "high",
|
|
711
775
|
ui: {
|
|
712
776
|
tab: "model",
|
|
777
|
+
group: "Thinking",
|
|
713
778
|
label: "Thinking Level",
|
|
714
779
|
description: "Reasoning depth for thinking-capable models",
|
|
715
780
|
options: [
|
|
@@ -722,7 +787,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
722
787
|
hideThinkingBlock: {
|
|
723
788
|
type: "boolean",
|
|
724
789
|
default: false,
|
|
725
|
-
ui: {
|
|
790
|
+
ui: {
|
|
791
|
+
tab: "model",
|
|
792
|
+
group: "Thinking",
|
|
793
|
+
label: "Hide Thinking Blocks",
|
|
794
|
+
description: "Hide thinking blocks in assistant responses",
|
|
795
|
+
},
|
|
726
796
|
},
|
|
727
797
|
|
|
728
798
|
repeatToolDescriptions: {
|
|
@@ -730,6 +800,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
730
800
|
default: false,
|
|
731
801
|
ui: {
|
|
732
802
|
tab: "model",
|
|
803
|
+
group: "Prompt",
|
|
733
804
|
label: "Repeat Tool Descriptions",
|
|
734
805
|
description: "Render full tool descriptions in the system prompt instead of a tool name list",
|
|
735
806
|
},
|
|
@@ -740,17 +811,49 @@ export const SETTINGS_SCHEMA = {
|
|
|
740
811
|
default: true,
|
|
741
812
|
ui: {
|
|
742
813
|
tab: "model",
|
|
743
|
-
|
|
814
|
+
group: "Prompt",
|
|
815
|
+
label: "Include Model in Prompt",
|
|
744
816
|
description: "Surface the active model identifier in the system prompt so the agent knows which model it is",
|
|
745
817
|
},
|
|
746
818
|
},
|
|
747
819
|
|
|
820
|
+
personality: {
|
|
821
|
+
type: "enum",
|
|
822
|
+
values: ["default", "friendly", "pragmatic", "none"] as const,
|
|
823
|
+
default: "default",
|
|
824
|
+
ui: {
|
|
825
|
+
tab: "model",
|
|
826
|
+
group: "Prompt",
|
|
827
|
+
label: "Personality",
|
|
828
|
+
description: "Communication style rendered into the system prompt's personality block",
|
|
829
|
+
options: [
|
|
830
|
+
{
|
|
831
|
+
value: "default",
|
|
832
|
+
label: "Default",
|
|
833
|
+
description: "Terse, evidence-first engineer; dense, action-oriented replies",
|
|
834
|
+
},
|
|
835
|
+
{
|
|
836
|
+
value: "friendly",
|
|
837
|
+
label: "Friendly",
|
|
838
|
+
description: "Warm, encouraging collaborator focused on momentum and morale",
|
|
839
|
+
},
|
|
840
|
+
{
|
|
841
|
+
value: "pragmatic",
|
|
842
|
+
label: "Pragmatic",
|
|
843
|
+
description: "Direct, efficient engineer focused on clarity and rigor",
|
|
844
|
+
},
|
|
845
|
+
{ value: "none", label: "None", description: "Omit the personality block entirely" },
|
|
846
|
+
],
|
|
847
|
+
},
|
|
848
|
+
},
|
|
849
|
+
|
|
748
850
|
// Sampling
|
|
749
851
|
temperature: {
|
|
750
852
|
type: "number",
|
|
751
853
|
default: -1,
|
|
752
854
|
ui: {
|
|
753
855
|
tab: "model",
|
|
856
|
+
group: "Sampling",
|
|
754
857
|
label: "Temperature",
|
|
755
858
|
description: "Sampling temperature (0 = deterministic, 1 = creative, -1 = provider default)",
|
|
756
859
|
options: [
|
|
@@ -769,6 +872,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
769
872
|
default: -1,
|
|
770
873
|
ui: {
|
|
771
874
|
tab: "model",
|
|
875
|
+
group: "Sampling",
|
|
772
876
|
label: "Top P",
|
|
773
877
|
description: "Nucleus sampling cutoff (0-1, -1 = provider default)",
|
|
774
878
|
options: [
|
|
@@ -787,6 +891,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
787
891
|
default: -1,
|
|
788
892
|
ui: {
|
|
789
893
|
tab: "model",
|
|
894
|
+
group: "Sampling",
|
|
790
895
|
label: "Top K",
|
|
791
896
|
description: "Sample from top-K tokens (-1 = provider default)",
|
|
792
897
|
options: [
|
|
@@ -804,6 +909,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
804
909
|
default: -1,
|
|
805
910
|
ui: {
|
|
806
911
|
tab: "model",
|
|
912
|
+
group: "Sampling",
|
|
807
913
|
label: "Min P",
|
|
808
914
|
description: "Minimum probability threshold (0-1, -1 = provider default)",
|
|
809
915
|
options: [
|
|
@@ -820,6 +926,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
820
926
|
default: -1,
|
|
821
927
|
ui: {
|
|
822
928
|
tab: "model",
|
|
929
|
+
group: "Sampling",
|
|
823
930
|
label: "Presence Penalty",
|
|
824
931
|
description: "Penalty for introducing already-present tokens (-1 = provider default)",
|
|
825
932
|
options: [
|
|
@@ -837,6 +944,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
837
944
|
default: -1,
|
|
838
945
|
ui: {
|
|
839
946
|
tab: "model",
|
|
947
|
+
group: "Sampling",
|
|
840
948
|
label: "Repetition Penalty",
|
|
841
949
|
description: "Penalty for repeated tokens (-1 = provider default)",
|
|
842
950
|
options: [
|
|
@@ -856,6 +964,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
856
964
|
default: "none",
|
|
857
965
|
ui: {
|
|
858
966
|
tab: "model",
|
|
967
|
+
group: "Sampling",
|
|
859
968
|
label: "Service Tier",
|
|
860
969
|
description:
|
|
861
970
|
'Processing priority hint (none = omit). OpenAI accepts the tier values directly; Anthropic realizes `priority` as `speed: "fast"` on supported Opus models. Scoped values target one family.',
|
|
@@ -892,6 +1001,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
892
1001
|
default: 10,
|
|
893
1002
|
ui: {
|
|
894
1003
|
tab: "model",
|
|
1004
|
+
group: "Retry & Fallback",
|
|
895
1005
|
label: "Retry Attempts",
|
|
896
1006
|
description: "Maximum retry attempts on API errors",
|
|
897
1007
|
options: [
|
|
@@ -910,6 +1020,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
910
1020
|
default: 5 * 60 * 1000,
|
|
911
1021
|
ui: {
|
|
912
1022
|
tab: "model",
|
|
1023
|
+
group: "Retry & Fallback",
|
|
913
1024
|
label: "Max Retry Delay",
|
|
914
1025
|
description:
|
|
915
1026
|
"Maximum wait between retries, in ms. When the provider asks us to wait longer than this and no credential or model fallback succeeds, the request fails fast instead of sleeping (e.g. 3-hour Anthropic rate-limit windows).",
|
|
@@ -920,6 +1031,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
920
1031
|
default: true,
|
|
921
1032
|
ui: {
|
|
922
1033
|
tab: "model",
|
|
1034
|
+
group: "Retry & Fallback",
|
|
923
1035
|
label: "Retry Model Fallback",
|
|
924
1036
|
description: "Allow retry recovery to switch to configured fallback models",
|
|
925
1037
|
},
|
|
@@ -931,6 +1043,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
931
1043
|
default: "cooldown-expiry",
|
|
932
1044
|
ui: {
|
|
933
1045
|
tab: "model",
|
|
1046
|
+
group: "Retry & Fallback",
|
|
934
1047
|
label: "Fallback Revert Policy",
|
|
935
1048
|
description: "When to return to the primary model after a fallback",
|
|
936
1049
|
options: [
|
|
@@ -955,6 +1068,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
955
1068
|
default: "one-at-a-time",
|
|
956
1069
|
ui: {
|
|
957
1070
|
tab: "interaction",
|
|
1071
|
+
group: "Input",
|
|
958
1072
|
label: "Steering Mode",
|
|
959
1073
|
description: "How to process queued messages while agent is working",
|
|
960
1074
|
},
|
|
@@ -966,6 +1080,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
966
1080
|
default: "one-at-a-time",
|
|
967
1081
|
ui: {
|
|
968
1082
|
tab: "interaction",
|
|
1083
|
+
group: "Input",
|
|
969
1084
|
label: "Follow-Up Mode",
|
|
970
1085
|
description: "How to drain follow-up messages after a turn completes",
|
|
971
1086
|
},
|
|
@@ -977,6 +1092,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
977
1092
|
default: "immediate",
|
|
978
1093
|
ui: {
|
|
979
1094
|
tab: "interaction",
|
|
1095
|
+
group: "Input",
|
|
980
1096
|
label: "Interrupt Mode",
|
|
981
1097
|
description: "When steering messages interrupt tool execution",
|
|
982
1098
|
},
|
|
@@ -988,6 +1104,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
988
1104
|
default: "prompt",
|
|
989
1105
|
ui: {
|
|
990
1106
|
tab: "interaction",
|
|
1107
|
+
group: "Input",
|
|
991
1108
|
label: "Loop Mode",
|
|
992
1109
|
description: "What happens between /loop iterations before re-submitting the prompt",
|
|
993
1110
|
options: [
|
|
@@ -1013,6 +1130,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1013
1130
|
default: "tree",
|
|
1014
1131
|
ui: {
|
|
1015
1132
|
tab: "interaction",
|
|
1133
|
+
group: "Input",
|
|
1016
1134
|
label: "Double-Escape Action",
|
|
1017
1135
|
description: "Action when pressing Escape twice with empty editor",
|
|
1018
1136
|
},
|
|
@@ -1024,6 +1142,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1024
1142
|
default: "default",
|
|
1025
1143
|
ui: {
|
|
1026
1144
|
tab: "interaction",
|
|
1145
|
+
group: "Input",
|
|
1027
1146
|
label: "Session Tree Filter",
|
|
1028
1147
|
description: "Default filter mode when opening the session tree",
|
|
1029
1148
|
},
|
|
@@ -1034,6 +1153,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1034
1153
|
default: 5,
|
|
1035
1154
|
ui: {
|
|
1036
1155
|
tab: "interaction",
|
|
1156
|
+
group: "Input",
|
|
1037
1157
|
label: "Autocomplete Items",
|
|
1038
1158
|
description: "Max visible items in autocomplete dropdown (3-20)",
|
|
1039
1159
|
options: [
|
|
@@ -1052,6 +1172,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1052
1172
|
default: true,
|
|
1053
1173
|
ui: {
|
|
1054
1174
|
tab: "interaction",
|
|
1175
|
+
group: "Input",
|
|
1055
1176
|
label: "Emoji Autocomplete",
|
|
1056
1177
|
description: "Suggest emojis from `:name:` shortcodes and expand text emoticons like `:D` or `:-)`",
|
|
1057
1178
|
},
|
|
@@ -1062,6 +1183,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1062
1183
|
default: false,
|
|
1063
1184
|
ui: {
|
|
1064
1185
|
tab: "interaction",
|
|
1186
|
+
group: "Startup & Updates",
|
|
1065
1187
|
label: "Quiet Startup",
|
|
1066
1188
|
description: "Skip welcome screen and startup status messages",
|
|
1067
1189
|
},
|
|
@@ -1072,6 +1194,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1072
1194
|
default: true,
|
|
1073
1195
|
ui: {
|
|
1074
1196
|
tab: "interaction",
|
|
1197
|
+
group: "Startup & Updates",
|
|
1075
1198
|
label: "Setup Wizard",
|
|
1076
1199
|
description: "Show newly added onboarding steps once per setup version",
|
|
1077
1200
|
},
|
|
@@ -1082,15 +1205,38 @@ export const SETTINGS_SCHEMA = {
|
|
|
1082
1205
|
default: true,
|
|
1083
1206
|
ui: {
|
|
1084
1207
|
tab: "interaction",
|
|
1208
|
+
group: "Startup & Updates",
|
|
1085
1209
|
label: "Check for Updates",
|
|
1086
|
-
description: "
|
|
1210
|
+
description: "Check for omp updates on startup",
|
|
1211
|
+
},
|
|
1212
|
+
},
|
|
1213
|
+
|
|
1214
|
+
"marketplace.autoUpdate": {
|
|
1215
|
+
type: "enum",
|
|
1216
|
+
values: ["off", "notify", "auto"] as const,
|
|
1217
|
+
default: "notify",
|
|
1218
|
+
ui: {
|
|
1219
|
+
tab: "interaction",
|
|
1220
|
+
group: "Startup & Updates",
|
|
1221
|
+
label: "Marketplace Auto-Update",
|
|
1222
|
+
description: "Check for plugin updates on startup",
|
|
1223
|
+
options: [
|
|
1224
|
+
{ value: "off", label: "Off", description: "Don't check for plugin updates" },
|
|
1225
|
+
{ value: "notify", label: "Notify", description: "Check on startup and notify when updates are available" },
|
|
1226
|
+
{ value: "auto", label: "Auto", description: "Check on startup and auto-install updates" },
|
|
1227
|
+
],
|
|
1087
1228
|
},
|
|
1088
1229
|
},
|
|
1089
1230
|
|
|
1090
1231
|
collapseChangelog: {
|
|
1091
1232
|
type: "boolean",
|
|
1092
1233
|
default: false,
|
|
1093
|
-
ui: {
|
|
1234
|
+
ui: {
|
|
1235
|
+
tab: "interaction",
|
|
1236
|
+
group: "Startup & Updates",
|
|
1237
|
+
label: "Collapse Changelog",
|
|
1238
|
+
description: "Show condensed changelog after updates",
|
|
1239
|
+
},
|
|
1094
1240
|
},
|
|
1095
1241
|
|
|
1096
1242
|
"magicKeywords.enabled": {
|
|
@@ -1098,6 +1244,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1098
1244
|
default: true,
|
|
1099
1245
|
ui: {
|
|
1100
1246
|
tab: "interaction",
|
|
1247
|
+
group: "Magic Keywords",
|
|
1101
1248
|
label: "Magic Keywords",
|
|
1102
1249
|
description: "Enable hidden notices for standalone ultrathink, orchestrate, and workflowz keywords",
|
|
1103
1250
|
},
|
|
@@ -1108,6 +1255,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1108
1255
|
default: true,
|
|
1109
1256
|
ui: {
|
|
1110
1257
|
tab: "interaction",
|
|
1258
|
+
group: "Magic Keywords",
|
|
1111
1259
|
label: "Ultrathink Keyword",
|
|
1112
1260
|
description: "Let standalone ultrathink request maximum automatic thinking and append its hidden notice",
|
|
1113
1261
|
},
|
|
@@ -1118,6 +1266,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1118
1266
|
default: true,
|
|
1119
1267
|
ui: {
|
|
1120
1268
|
tab: "interaction",
|
|
1269
|
+
group: "Magic Keywords",
|
|
1121
1270
|
label: "Orchestrate Keyword",
|
|
1122
1271
|
description: "Let standalone orchestrate append its hidden multi-agent orchestration notice",
|
|
1123
1272
|
},
|
|
@@ -1128,6 +1277,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1128
1277
|
default: true,
|
|
1129
1278
|
ui: {
|
|
1130
1279
|
tab: "interaction",
|
|
1280
|
+
group: "Magic Keywords",
|
|
1131
1281
|
label: "Workflow Keyword",
|
|
1132
1282
|
description: "Let standalone workflowz append its hidden eval workflow notice",
|
|
1133
1283
|
},
|
|
@@ -1138,7 +1288,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
1138
1288
|
type: "enum",
|
|
1139
1289
|
values: ["on", "off"] as const,
|
|
1140
1290
|
default: "on",
|
|
1141
|
-
ui: {
|
|
1291
|
+
ui: {
|
|
1292
|
+
tab: "interaction",
|
|
1293
|
+
group: "Notifications",
|
|
1294
|
+
label: "Completion Notification",
|
|
1295
|
+
description: "Notify when the agent finishes a turn",
|
|
1296
|
+
},
|
|
1142
1297
|
},
|
|
1143
1298
|
|
|
1144
1299
|
"ask.timeout": {
|
|
@@ -1146,8 +1301,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
1146
1301
|
default: 0,
|
|
1147
1302
|
ui: {
|
|
1148
1303
|
tab: "interaction",
|
|
1304
|
+
group: "Notifications",
|
|
1149
1305
|
label: "Ask Timeout",
|
|
1150
|
-
description: "Auto-select recommended option after
|
|
1306
|
+
description: "Auto-select the recommended ask option after this many seconds (0 disables)",
|
|
1151
1307
|
options: [
|
|
1152
1308
|
{ value: "0", label: "Disabled" },
|
|
1153
1309
|
{ value: "15", label: "15 seconds" },
|
|
@@ -1162,14 +1318,24 @@ export const SETTINGS_SCHEMA = {
|
|
|
1162
1318
|
type: "enum",
|
|
1163
1319
|
values: ["on", "off"] as const,
|
|
1164
1320
|
default: "on",
|
|
1165
|
-
ui: {
|
|
1321
|
+
ui: {
|
|
1322
|
+
tab: "interaction",
|
|
1323
|
+
group: "Notifications",
|
|
1324
|
+
label: "Ask Notification",
|
|
1325
|
+
description: "Notify when the ask tool is waiting for input",
|
|
1326
|
+
},
|
|
1166
1327
|
},
|
|
1167
1328
|
|
|
1168
1329
|
// Speech-to-text
|
|
1169
1330
|
"stt.enabled": {
|
|
1170
1331
|
type: "boolean",
|
|
1171
1332
|
default: false,
|
|
1172
|
-
ui: {
|
|
1333
|
+
ui: {
|
|
1334
|
+
tab: "interaction",
|
|
1335
|
+
group: "Speech",
|
|
1336
|
+
label: "Speech-to-Text",
|
|
1337
|
+
description: "Enable speech-to-text input via microphone",
|
|
1338
|
+
},
|
|
1173
1339
|
},
|
|
1174
1340
|
|
|
1175
1341
|
"stt.language": {
|
|
@@ -1183,6 +1349,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1183
1349
|
default: "base.en",
|
|
1184
1350
|
ui: {
|
|
1185
1351
|
tab: "interaction",
|
|
1352
|
+
group: "Speech",
|
|
1186
1353
|
label: "Speech Model",
|
|
1187
1354
|
description: "Whisper model size (larger = more accurate but slower)",
|
|
1188
1355
|
options: [
|
|
@@ -1209,6 +1376,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1209
1376
|
default: true,
|
|
1210
1377
|
ui: {
|
|
1211
1378
|
tab: "context",
|
|
1379
|
+
group: "General",
|
|
1212
1380
|
label: "Auto-Promote Context",
|
|
1213
1381
|
description: "Promote to a larger-context model on context overflow instead of compacting",
|
|
1214
1382
|
},
|
|
@@ -1220,6 +1388,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1220
1388
|
default: true,
|
|
1221
1389
|
ui: {
|
|
1222
1390
|
tab: "context",
|
|
1391
|
+
group: "Compaction",
|
|
1223
1392
|
label: "Auto-Compact",
|
|
1224
1393
|
description: "Automatically compact context when it gets too large",
|
|
1225
1394
|
},
|
|
@@ -1231,6 +1400,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1231
1400
|
default: "context-full",
|
|
1232
1401
|
ui: {
|
|
1233
1402
|
tab: "context",
|
|
1403
|
+
group: "Compaction",
|
|
1234
1404
|
label: "Compaction Strategy",
|
|
1235
1405
|
description:
|
|
1236
1406
|
"Choose in-place context-full maintenance, auto-handoff, surgical shake (drop heavy content), snapcompact (archive history as dense images), or disable auto maintenance (off)",
|
|
@@ -1265,6 +1435,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1265
1435
|
default: -1,
|
|
1266
1436
|
ui: {
|
|
1267
1437
|
tab: "context",
|
|
1438
|
+
group: "Compaction",
|
|
1268
1439
|
label: "Compaction Threshold",
|
|
1269
1440
|
description: "Percent threshold for context maintenance; set to Default to use legacy reserve-based behavior",
|
|
1270
1441
|
options: [
|
|
@@ -1289,6 +1460,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1289
1460
|
default: -1,
|
|
1290
1461
|
ui: {
|
|
1291
1462
|
tab: "context",
|
|
1463
|
+
group: "Compaction",
|
|
1292
1464
|
label: "Compaction Token Limit",
|
|
1293
1465
|
description: "Fixed token limit for context maintenance; overrides percentage if set",
|
|
1294
1466
|
options: [
|
|
@@ -1309,6 +1481,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1309
1481
|
default: false,
|
|
1310
1482
|
ui: {
|
|
1311
1483
|
tab: "context",
|
|
1484
|
+
group: "Compaction",
|
|
1312
1485
|
label: "Save Handoff Docs",
|
|
1313
1486
|
description: "Save generated handoff documents to markdown files for the auto-handoff flow",
|
|
1314
1487
|
},
|
|
@@ -1319,6 +1492,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1319
1492
|
default: true,
|
|
1320
1493
|
ui: {
|
|
1321
1494
|
tab: "context",
|
|
1495
|
+
group: "Compaction",
|
|
1322
1496
|
label: "Remote Compaction",
|
|
1323
1497
|
description: "Use remote compaction endpoints when available instead of local summarization",
|
|
1324
1498
|
},
|
|
@@ -1338,6 +1512,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1338
1512
|
default: false,
|
|
1339
1513
|
ui: {
|
|
1340
1514
|
tab: "context",
|
|
1515
|
+
group: "Compaction",
|
|
1341
1516
|
label: "Idle Compaction",
|
|
1342
1517
|
description: "Compact context while idle when token count exceeds threshold",
|
|
1343
1518
|
},
|
|
@@ -1348,6 +1523,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1348
1523
|
default: 200000,
|
|
1349
1524
|
ui: {
|
|
1350
1525
|
tab: "context",
|
|
1526
|
+
group: "Compaction",
|
|
1351
1527
|
label: "Idle Compaction Threshold",
|
|
1352
1528
|
description: "Token count above which idle compaction triggers",
|
|
1353
1529
|
options: [
|
|
@@ -1369,6 +1545,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1369
1545
|
default: 300,
|
|
1370
1546
|
ui: {
|
|
1371
1547
|
tab: "context",
|
|
1548
|
+
group: "Compaction",
|
|
1372
1549
|
label: "Idle Compaction Delay",
|
|
1373
1550
|
description: "Seconds to wait while idle before compacting",
|
|
1374
1551
|
options: [
|
|
@@ -1387,16 +1564,61 @@ export const SETTINGS_SCHEMA = {
|
|
|
1387
1564
|
default: true,
|
|
1388
1565
|
ui: {
|
|
1389
1566
|
tab: "context",
|
|
1567
|
+
group: "Compaction",
|
|
1390
1568
|
label: "Supersede Stale Reads",
|
|
1391
1569
|
description: "Prune older read results when the same file is read again (cache-aware, runs every turn)",
|
|
1392
1570
|
},
|
|
1393
1571
|
},
|
|
1394
1572
|
|
|
1573
|
+
// Experimental: snapcompact inline imaging (transient, per-request; never persisted)
|
|
1574
|
+
"snapcompact.systemPrompt": {
|
|
1575
|
+
type: "enum",
|
|
1576
|
+
values: ["none", "agents-md", "all"] as const,
|
|
1577
|
+
default: "none",
|
|
1578
|
+
ui: {
|
|
1579
|
+
tab: "context",
|
|
1580
|
+
group: "Experimental",
|
|
1581
|
+
label: "Snapcompact System Prompt",
|
|
1582
|
+
description:
|
|
1583
|
+
"Experimental: render selected system prompt text as dense PNG image(s) and attach to the first user message (vision models only). Saves tokens; loses prompt caching for imaged text.",
|
|
1584
|
+
options: [
|
|
1585
|
+
{ value: "none", label: "None", description: "Keep the system prompt as text." },
|
|
1586
|
+
{
|
|
1587
|
+
value: "agents-md",
|
|
1588
|
+
label: "AGENTS.md",
|
|
1589
|
+
description: "Only move loaded context-file instructions to images, when that saves tokens.",
|
|
1590
|
+
},
|
|
1591
|
+
{
|
|
1592
|
+
value: "all",
|
|
1593
|
+
label: "All",
|
|
1594
|
+
description: "Move the full system prompt to images, when that saves tokens.",
|
|
1595
|
+
},
|
|
1596
|
+
],
|
|
1597
|
+
},
|
|
1598
|
+
},
|
|
1599
|
+
|
|
1600
|
+
"snapcompact.toolResults": {
|
|
1601
|
+
type: "boolean",
|
|
1602
|
+
default: false,
|
|
1603
|
+
ui: {
|
|
1604
|
+
tab: "context",
|
|
1605
|
+
group: "Experimental",
|
|
1606
|
+
label: "Snapcompact Tool Results",
|
|
1607
|
+
description:
|
|
1608
|
+
"Experimental: render large historical tool results as dense PNG image(s) instead of text (vision models only). Saves tokens on accumulated read/search output.",
|
|
1609
|
+
},
|
|
1610
|
+
},
|
|
1611
|
+
|
|
1395
1612
|
// Branch summaries
|
|
1396
1613
|
"branchSummary.enabled": {
|
|
1397
1614
|
type: "boolean",
|
|
1398
1615
|
default: false,
|
|
1399
|
-
ui: {
|
|
1616
|
+
ui: {
|
|
1617
|
+
tab: "context",
|
|
1618
|
+
group: "General",
|
|
1619
|
+
label: "Branch Summaries",
|
|
1620
|
+
description: "Prompt to summarize when leaving a branch",
|
|
1621
|
+
},
|
|
1400
1622
|
},
|
|
1401
1623
|
|
|
1402
1624
|
"branchSummary.reserveTokens": { type: "number", default: 16384 },
|
|
@@ -1449,6 +1671,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1449
1671
|
default: "off",
|
|
1450
1672
|
ui: {
|
|
1451
1673
|
tab: "memory",
|
|
1674
|
+
group: "General",
|
|
1452
1675
|
label: "Memory Backend",
|
|
1453
1676
|
description: "Off, local summary pipeline, Mnemopi SQLite, or Hindsight remote memory",
|
|
1454
1677
|
options: [
|
|
@@ -1470,6 +1693,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1470
1693
|
default: undefined,
|
|
1471
1694
|
ui: {
|
|
1472
1695
|
tab: "memory",
|
|
1696
|
+
group: "Mnemopi",
|
|
1473
1697
|
label: "Mnemopi DB Path",
|
|
1474
1698
|
description: "Optional SQLite DB path. Defaults to the agent memories directory.",
|
|
1475
1699
|
condition: "mnemopiActive",
|
|
@@ -1480,6 +1704,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1480
1704
|
default: undefined,
|
|
1481
1705
|
ui: {
|
|
1482
1706
|
tab: "memory",
|
|
1707
|
+
group: "Mnemopi",
|
|
1483
1708
|
label: "Mnemopi Bank",
|
|
1484
1709
|
description: "Optional shared bank base name. Per-project modes derive project-local banks from it.",
|
|
1485
1710
|
condition: "mnemopiActive",
|
|
@@ -1491,6 +1716,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1491
1716
|
default: "per-project",
|
|
1492
1717
|
ui: {
|
|
1493
1718
|
tab: "memory",
|
|
1719
|
+
group: "Mnemopi",
|
|
1494
1720
|
label: "Mnemopi Scoping",
|
|
1495
1721
|
description:
|
|
1496
1722
|
"global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = project-local writes plus global recall visibility",
|
|
@@ -1519,6 +1745,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1519
1745
|
default: true,
|
|
1520
1746
|
ui: {
|
|
1521
1747
|
tab: "memory",
|
|
1748
|
+
group: "Mnemopi",
|
|
1522
1749
|
label: "Mnemopi Auto Recall",
|
|
1523
1750
|
description: "Recall local memories into the first turn of each session",
|
|
1524
1751
|
condition: "mnemopiActive",
|
|
@@ -1529,16 +1756,40 @@ export const SETTINGS_SCHEMA = {
|
|
|
1529
1756
|
default: true,
|
|
1530
1757
|
ui: {
|
|
1531
1758
|
tab: "memory",
|
|
1759
|
+
group: "Mnemopi",
|
|
1532
1760
|
label: "Mnemopi Auto Retain",
|
|
1533
1761
|
description: "Retain completed conversation turns into local Mnemopi memory",
|
|
1534
1762
|
condition: "mnemopiActive",
|
|
1535
1763
|
},
|
|
1536
1764
|
},
|
|
1765
|
+
"mnemopi.polyphonicRecall": {
|
|
1766
|
+
type: "boolean",
|
|
1767
|
+
default: false,
|
|
1768
|
+
ui: {
|
|
1769
|
+
tab: "memory",
|
|
1770
|
+
group: "Mnemopi",
|
|
1771
|
+
label: "Mnemopi Polyphonic Recall",
|
|
1772
|
+
description: "Enable 4-voice recall (vector, graph, fact, temporal) fused with reciprocal rank fusion",
|
|
1773
|
+
condition: "mnemopiActive",
|
|
1774
|
+
},
|
|
1775
|
+
},
|
|
1776
|
+
"mnemopi.enhancedRecall": {
|
|
1777
|
+
type: "boolean",
|
|
1778
|
+
default: false,
|
|
1779
|
+
ui: {
|
|
1780
|
+
tab: "memory",
|
|
1781
|
+
group: "Mnemopi",
|
|
1782
|
+
label: "Mnemopi Enhanced Recall",
|
|
1783
|
+
description: "Enable the tiered query result cache for repeated and similar recall queries",
|
|
1784
|
+
condition: "mnemopiActive",
|
|
1785
|
+
},
|
|
1786
|
+
},
|
|
1537
1787
|
"mnemopi.noEmbeddings": {
|
|
1538
1788
|
type: "boolean",
|
|
1539
1789
|
default: false,
|
|
1540
1790
|
ui: {
|
|
1541
1791
|
tab: "memory",
|
|
1792
|
+
group: "Mnemopi",
|
|
1542
1793
|
label: "Mnemopi Disable Embeddings",
|
|
1543
1794
|
description: "Force deterministic FTS-only recall instead of vector embeddings",
|
|
1544
1795
|
condition: "mnemopiActive",
|
|
@@ -1549,6 +1800,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1549
1800
|
default: undefined,
|
|
1550
1801
|
ui: {
|
|
1551
1802
|
tab: "memory",
|
|
1803
|
+
group: "Mnemopi",
|
|
1552
1804
|
label: "Mnemopi Embedding Model",
|
|
1553
1805
|
description: "Optional embedding model override passed to Mnemopi",
|
|
1554
1806
|
condition: "mnemopiActive",
|
|
@@ -1559,6 +1811,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1559
1811
|
default: undefined,
|
|
1560
1812
|
ui: {
|
|
1561
1813
|
tab: "memory",
|
|
1814
|
+
group: "Mnemopi",
|
|
1562
1815
|
label: "Mnemopi Embedding API URL",
|
|
1563
1816
|
description: "Optional OpenAI-compatible embedding endpoint passed to Mnemopi",
|
|
1564
1817
|
condition: "mnemopiActive",
|
|
@@ -1569,6 +1822,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1569
1822
|
default: undefined,
|
|
1570
1823
|
ui: {
|
|
1571
1824
|
tab: "memory",
|
|
1825
|
+
group: "Mnemopi",
|
|
1572
1826
|
label: "Mnemopi Embedding API Key",
|
|
1573
1827
|
description: "Optional embedding API key passed to Mnemopi",
|
|
1574
1828
|
condition: "mnemopiActive",
|
|
@@ -1580,6 +1834,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1580
1834
|
default: "smol",
|
|
1581
1835
|
ui: {
|
|
1582
1836
|
tab: "memory",
|
|
1837
|
+
group: "Mnemopi",
|
|
1583
1838
|
label: "Mnemopi LLM Mode",
|
|
1584
1839
|
description: "Use no LLM, the configured smol model, or a remote OpenAI-compatible endpoint",
|
|
1585
1840
|
condition: "mnemopiActive",
|
|
@@ -1595,6 +1850,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1595
1850
|
default: undefined,
|
|
1596
1851
|
ui: {
|
|
1597
1852
|
tab: "memory",
|
|
1853
|
+
group: "Mnemopi",
|
|
1598
1854
|
label: "Mnemopi LLM Base URL",
|
|
1599
1855
|
description: "Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode",
|
|
1600
1856
|
condition: "mnemopiActive",
|
|
@@ -1605,6 +1861,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1605
1861
|
default: undefined,
|
|
1606
1862
|
ui: {
|
|
1607
1863
|
tab: "memory",
|
|
1864
|
+
group: "Mnemopi",
|
|
1608
1865
|
label: "Mnemopi LLM API Key",
|
|
1609
1866
|
description: "Optional LLM API key for Mnemopi remote mode",
|
|
1610
1867
|
condition: "mnemopiActive",
|
|
@@ -1615,6 +1872,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1615
1872
|
default: undefined,
|
|
1616
1873
|
ui: {
|
|
1617
1874
|
tab: "memory",
|
|
1875
|
+
group: "Mnemopi",
|
|
1618
1876
|
label: "Mnemopi LLM Model",
|
|
1619
1877
|
description: "Optional LLM model name for Mnemopi remote mode",
|
|
1620
1878
|
condition: "mnemopiActive",
|
|
@@ -1633,6 +1891,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1633
1891
|
default: "http://localhost:8888",
|
|
1634
1892
|
ui: {
|
|
1635
1893
|
tab: "memory",
|
|
1894
|
+
group: "Hindsight",
|
|
1636
1895
|
label: "Hindsight API URL",
|
|
1637
1896
|
description: "Hindsight server URL (Cloud or self-hosted)",
|
|
1638
1897
|
condition: "hindsightActive",
|
|
@@ -1646,6 +1905,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1646
1905
|
default: undefined,
|
|
1647
1906
|
ui: {
|
|
1648
1907
|
tab: "memory",
|
|
1908
|
+
group: "Hindsight",
|
|
1649
1909
|
label: "Hindsight Bank ID",
|
|
1650
1910
|
description: "Memory bank identifier (default: project name)",
|
|
1651
1911
|
condition: "hindsightActive",
|
|
@@ -1659,6 +1919,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1659
1919
|
default: "per-project-tagged",
|
|
1660
1920
|
ui: {
|
|
1661
1921
|
tab: "memory",
|
|
1922
|
+
group: "Hindsight",
|
|
1662
1923
|
label: "Hindsight Scoping",
|
|
1663
1924
|
description:
|
|
1664
1925
|
"global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = shared bank with project tags so global + project memories merge on recall",
|
|
@@ -1691,6 +1952,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1691
1952
|
default: true,
|
|
1692
1953
|
ui: {
|
|
1693
1954
|
tab: "memory",
|
|
1955
|
+
group: "Hindsight",
|
|
1694
1956
|
label: "Hindsight Auto Recall",
|
|
1695
1957
|
description: "Recall memories on the first turn of each session",
|
|
1696
1958
|
condition: "hindsightActive",
|
|
@@ -1701,6 +1963,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1701
1963
|
default: true,
|
|
1702
1964
|
ui: {
|
|
1703
1965
|
tab: "memory",
|
|
1966
|
+
group: "Hindsight",
|
|
1704
1967
|
label: "Hindsight Auto Retain",
|
|
1705
1968
|
description: "Retain transcript every N turns and at session boundaries",
|
|
1706
1969
|
condition: "hindsightActive",
|
|
@@ -1713,6 +1976,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1713
1976
|
default: "full-session",
|
|
1714
1977
|
ui: {
|
|
1715
1978
|
tab: "memory",
|
|
1979
|
+
group: "Hindsight",
|
|
1716
1980
|
label: "Hindsight Retain Mode",
|
|
1717
1981
|
description: "full-session = upsert one document per session, last-turn = chunked",
|
|
1718
1982
|
options: [
|
|
@@ -1747,6 +2011,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1747
2011
|
default: true,
|
|
1748
2012
|
ui: {
|
|
1749
2013
|
tab: "memory",
|
|
2014
|
+
group: "Hindsight",
|
|
1750
2015
|
label: "Hindsight Mental Models",
|
|
1751
2016
|
description:
|
|
1752
2017
|
"Read curated reflect summaries (mental models) into developer instructions at boot. Loads existing models on the bank — does not write. Pair with hindsight.mentalModelAutoSeed to also auto-create the built-in seed set.",
|
|
@@ -1758,6 +2023,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1758
2023
|
default: true,
|
|
1759
2024
|
ui: {
|
|
1760
2025
|
tab: "memory",
|
|
2026
|
+
group: "Hindsight",
|
|
1761
2027
|
label: "Hindsight Mental Model Auto-Seed",
|
|
1762
2028
|
description:
|
|
1763
2029
|
"At session start, create any built-in mental models (project-conventions, project-decisions, user-preferences) that do not yet exist on the bank.",
|
|
@@ -1773,8 +2039,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
1773
2039
|
default: true,
|
|
1774
2040
|
ui: {
|
|
1775
2041
|
tab: "context",
|
|
2042
|
+
group: "Rules (TTSR)",
|
|
1776
2043
|
label: "TTSR",
|
|
1777
|
-
description: "
|
|
2044
|
+
description: "Interrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules)",
|
|
1778
2045
|
},
|
|
1779
2046
|
},
|
|
1780
2047
|
|
|
@@ -1784,6 +2051,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1784
2051
|
default: "discard",
|
|
1785
2052
|
ui: {
|
|
1786
2053
|
tab: "context",
|
|
2054
|
+
group: "Rules (TTSR)",
|
|
1787
2055
|
label: "TTSR Context Mode",
|
|
1788
2056
|
description: "What to do with partial output when TTSR triggers",
|
|
1789
2057
|
},
|
|
@@ -1795,6 +2063,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1795
2063
|
default: "always",
|
|
1796
2064
|
ui: {
|
|
1797
2065
|
tab: "context",
|
|
2066
|
+
group: "Rules (TTSR)",
|
|
1798
2067
|
label: "TTSR Interrupt Mode",
|
|
1799
2068
|
description: "When to interrupt mid-stream vs inject warning after completion",
|
|
1800
2069
|
options: [
|
|
@@ -1812,6 +2081,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1812
2081
|
default: "once",
|
|
1813
2082
|
ui: {
|
|
1814
2083
|
tab: "context",
|
|
2084
|
+
group: "Rules (TTSR)",
|
|
1815
2085
|
label: "TTSR Repeat Mode",
|
|
1816
2086
|
description: "How rules can repeat: once per session or after a message gap",
|
|
1817
2087
|
},
|
|
@@ -1822,6 +2092,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1822
2092
|
default: 10,
|
|
1823
2093
|
ui: {
|
|
1824
2094
|
tab: "context",
|
|
2095
|
+
group: "Rules (TTSR)",
|
|
1825
2096
|
label: "TTSR Repeat Gap",
|
|
1826
2097
|
description: "Messages before a rule can trigger again",
|
|
1827
2098
|
options: [
|
|
@@ -1839,7 +2110,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1839
2110
|
default: true,
|
|
1840
2111
|
ui: {
|
|
1841
2112
|
tab: "context",
|
|
1842
|
-
|
|
2113
|
+
group: "Rules (TTSR)",
|
|
2114
|
+
label: "Built-in Rules",
|
|
1843
2115
|
description: "Load the default rules shipped with the agent (override individually with ttsr.disabledRules)",
|
|
1844
2116
|
},
|
|
1845
2117
|
},
|
|
@@ -1849,6 +2121,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1849
2121
|
default: [] as string[],
|
|
1850
2122
|
ui: {
|
|
1851
2123
|
tab: "context",
|
|
2124
|
+
group: "Rules (TTSR)",
|
|
1852
2125
|
label: "Disabled Rules",
|
|
1853
2126
|
description: "Rule names to ignore entirely (applies to bundled defaults and your own rules)",
|
|
1854
2127
|
},
|
|
@@ -1864,7 +2137,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1864
2137
|
values: EDIT_MODES,
|
|
1865
2138
|
default: "hashline",
|
|
1866
2139
|
ui: {
|
|
1867
|
-
tab: "
|
|
2140
|
+
tab: "files",
|
|
2141
|
+
group: "Editing",
|
|
1868
2142
|
label: "Edit Mode",
|
|
1869
2143
|
description: "Select the edit tool variant (replace, patch, hashline, or apply_patch)",
|
|
1870
2144
|
},
|
|
@@ -1874,7 +2148,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1874
2148
|
type: "boolean",
|
|
1875
2149
|
default: true,
|
|
1876
2150
|
ui: {
|
|
1877
|
-
tab: "
|
|
2151
|
+
tab: "files",
|
|
2152
|
+
group: "Editing",
|
|
1878
2153
|
label: "Fuzzy Match",
|
|
1879
2154
|
description: "Accept high-confidence fuzzy matches for whitespace differences",
|
|
1880
2155
|
},
|
|
@@ -1884,9 +2159,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
1884
2159
|
type: "number",
|
|
1885
2160
|
default: 0.95,
|
|
1886
2161
|
ui: {
|
|
1887
|
-
tab: "
|
|
2162
|
+
tab: "files",
|
|
2163
|
+
group: "Editing",
|
|
1888
2164
|
label: "Fuzzy Match Threshold",
|
|
1889
|
-
description: "Similarity threshold for fuzzy matches",
|
|
2165
|
+
description: "Similarity threshold (0-1) for accepting fuzzy matches",
|
|
1890
2166
|
options: [
|
|
1891
2167
|
{ value: "0.85", label: "0.85", description: "Lenient" },
|
|
1892
2168
|
{ value: "0.90", label: "0.90", description: "Moderate" },
|
|
@@ -1900,7 +2176,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1900
2176
|
type: "boolean",
|
|
1901
2177
|
default: false,
|
|
1902
2178
|
ui: {
|
|
1903
|
-
tab: "
|
|
2179
|
+
tab: "files",
|
|
2180
|
+
group: "Editing",
|
|
1904
2181
|
label: "Abort on Failed Preview",
|
|
1905
2182
|
description: "Abort streaming edit tool calls when patch preview fails",
|
|
1906
2183
|
},
|
|
@@ -1910,7 +2187,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1910
2187
|
type: "boolean",
|
|
1911
2188
|
default: true,
|
|
1912
2189
|
ui: {
|
|
1913
|
-
tab: "
|
|
2190
|
+
tab: "files",
|
|
2191
|
+
group: "Editing",
|
|
1914
2192
|
label: "Block Auto-Generated Files",
|
|
1915
2193
|
description: "Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)",
|
|
1916
2194
|
},
|
|
@@ -1920,7 +2198,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1920
2198
|
type: "boolean",
|
|
1921
2199
|
default: false,
|
|
1922
2200
|
ui: {
|
|
1923
|
-
tab: "
|
|
2201
|
+
tab: "files",
|
|
2202
|
+
group: "Reading",
|
|
1924
2203
|
label: "Line Numbers",
|
|
1925
2204
|
description: "Prepend line numbers to read tool output by default",
|
|
1926
2205
|
},
|
|
@@ -1930,7 +2209,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1930
2209
|
type: "boolean",
|
|
1931
2210
|
default: true,
|
|
1932
2211
|
ui: {
|
|
1933
|
-
tab: "
|
|
2212
|
+
tab: "files",
|
|
2213
|
+
group: "Reading",
|
|
1934
2214
|
label: "Hash Lines",
|
|
1935
2215
|
description:
|
|
1936
2216
|
"Include snapshot-tag headers and line numbers in read output for hashline edit mode ([PATH#TAG] plus LINE:content)",
|
|
@@ -1941,7 +2221,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1941
2221
|
type: "number",
|
|
1942
2222
|
default: 300,
|
|
1943
2223
|
ui: {
|
|
1944
|
-
tab: "
|
|
2224
|
+
tab: "files",
|
|
2225
|
+
group: "Reading",
|
|
1945
2226
|
label: "Default Read Limit",
|
|
1946
2227
|
description: "Default number of lines returned when agent calls read without a limit",
|
|
1947
2228
|
options: [
|
|
@@ -1958,7 +2239,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1958
2239
|
type: "boolean",
|
|
1959
2240
|
default: true,
|
|
1960
2241
|
ui: {
|
|
1961
|
-
tab: "
|
|
2242
|
+
tab: "files",
|
|
2243
|
+
group: "Read Summaries",
|
|
1962
2244
|
label: "Read Summaries",
|
|
1963
2245
|
description: "Return structural code summaries when read is called without an explicit selector",
|
|
1964
2246
|
},
|
|
@@ -1968,7 +2250,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1968
2250
|
type: "boolean",
|
|
1969
2251
|
default: false,
|
|
1970
2252
|
ui: {
|
|
1971
|
-
tab: "
|
|
2253
|
+
tab: "files",
|
|
2254
|
+
group: "Read Summaries",
|
|
1972
2255
|
label: "Prose Summaries",
|
|
1973
2256
|
description: "Return structural summaries for Markdown and plain text reads",
|
|
1974
2257
|
},
|
|
@@ -1978,7 +2261,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1978
2261
|
type: "number",
|
|
1979
2262
|
default: 4,
|
|
1980
2263
|
ui: {
|
|
1981
|
-
tab: "
|
|
2264
|
+
tab: "files",
|
|
2265
|
+
group: "Read Summaries",
|
|
1982
2266
|
label: "Read Summary Body Lines",
|
|
1983
2267
|
description: "Minimum multiline body or literal length before read summaries collapse it",
|
|
1984
2268
|
},
|
|
@@ -1988,7 +2272,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1988
2272
|
type: "number",
|
|
1989
2273
|
default: 6,
|
|
1990
2274
|
ui: {
|
|
1991
|
-
tab: "
|
|
2275
|
+
tab: "files",
|
|
2276
|
+
group: "Read Summaries",
|
|
1992
2277
|
label: "Read Summary Comment Lines",
|
|
1993
2278
|
description: "Minimum multiline block comment length before read summaries collapse it",
|
|
1994
2279
|
},
|
|
@@ -1998,7 +2283,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1998
2283
|
type: "number",
|
|
1999
2284
|
default: 100,
|
|
2000
2285
|
ui: {
|
|
2001
|
-
tab: "
|
|
2286
|
+
tab: "files",
|
|
2287
|
+
group: "Read Summaries",
|
|
2002
2288
|
label: "Read Summary Minimum File Length",
|
|
2003
2289
|
description: "Files with fewer total lines are read verbatim instead of structurally summarized",
|
|
2004
2290
|
},
|
|
@@ -2008,7 +2294,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2008
2294
|
type: "number",
|
|
2009
2295
|
default: 50,
|
|
2010
2296
|
ui: {
|
|
2011
|
-
tab: "
|
|
2297
|
+
tab: "files",
|
|
2298
|
+
group: "Read Summaries",
|
|
2012
2299
|
label: "Read Summary Unfold Target",
|
|
2013
2300
|
description:
|
|
2014
2301
|
"BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions.",
|
|
@@ -2019,7 +2306,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2019
2306
|
type: "number",
|
|
2020
2307
|
default: 100,
|
|
2021
2308
|
ui: {
|
|
2022
|
-
tab: "
|
|
2309
|
+
tab: "files",
|
|
2310
|
+
group: "Read Summaries",
|
|
2023
2311
|
label: "Read Summary Unfold Ceiling",
|
|
2024
2312
|
description:
|
|
2025
2313
|
"Hard ceiling on summary size while BFS-unfolding. An unfold that would exceed this is reverted and unfolding stops.",
|
|
@@ -2030,7 +2318,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2030
2318
|
type: "boolean",
|
|
2031
2319
|
default: false,
|
|
2032
2320
|
ui: {
|
|
2033
|
-
tab: "
|
|
2321
|
+
tab: "files",
|
|
2322
|
+
group: "Reading",
|
|
2034
2323
|
label: "Inline Read Previews",
|
|
2035
2324
|
description: "Render read tool results inline in the transcript instead of summary rows",
|
|
2036
2325
|
},
|
|
@@ -2040,14 +2329,20 @@ export const SETTINGS_SCHEMA = {
|
|
|
2040
2329
|
"lsp.enabled": {
|
|
2041
2330
|
type: "boolean",
|
|
2042
2331
|
default: true,
|
|
2043
|
-
ui: {
|
|
2332
|
+
ui: {
|
|
2333
|
+
tab: "files",
|
|
2334
|
+
group: "LSP",
|
|
2335
|
+
label: "LSP",
|
|
2336
|
+
description: "Enable the lsp tool for code intelligence (definitions, references, diagnostics, rename)",
|
|
2337
|
+
},
|
|
2044
2338
|
},
|
|
2045
2339
|
|
|
2046
2340
|
"lsp.lazy": {
|
|
2047
2341
|
type: "boolean",
|
|
2048
2342
|
default: true,
|
|
2049
2343
|
ui: {
|
|
2050
|
-
tab: "
|
|
2344
|
+
tab: "files",
|
|
2345
|
+
group: "LSP",
|
|
2051
2346
|
label: "Lazy LSP Startup",
|
|
2052
2347
|
description:
|
|
2053
2348
|
"Start language servers on first use (lsp tool or editing a matching file type) instead of at session startup",
|
|
@@ -2058,7 +2353,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2058
2353
|
type: "boolean",
|
|
2059
2354
|
default: false,
|
|
2060
2355
|
ui: {
|
|
2061
|
-
tab: "
|
|
2356
|
+
tab: "files",
|
|
2357
|
+
group: "LSP",
|
|
2062
2358
|
label: "Format on Write",
|
|
2063
2359
|
description: "Automatically format code files using LSP after writing",
|
|
2064
2360
|
},
|
|
@@ -2068,7 +2364,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2068
2364
|
type: "boolean",
|
|
2069
2365
|
default: true,
|
|
2070
2366
|
ui: {
|
|
2071
|
-
tab: "
|
|
2367
|
+
tab: "files",
|
|
2368
|
+
group: "LSP",
|
|
2072
2369
|
label: "Diagnostics on Write",
|
|
2073
2370
|
description: "Return LSP diagnostics after writing code files",
|
|
2074
2371
|
},
|
|
@@ -2078,7 +2375,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2078
2375
|
type: "boolean",
|
|
2079
2376
|
default: false,
|
|
2080
2377
|
ui: {
|
|
2081
|
-
tab: "
|
|
2378
|
+
tab: "files",
|
|
2379
|
+
group: "LSP",
|
|
2082
2380
|
label: "Diagnostics on Edit",
|
|
2083
2381
|
description: "Return LSP diagnostics after editing code files",
|
|
2084
2382
|
},
|
|
@@ -2088,17 +2386,45 @@ export const SETTINGS_SCHEMA = {
|
|
|
2088
2386
|
type: "boolean",
|
|
2089
2387
|
default: true,
|
|
2090
2388
|
ui: {
|
|
2091
|
-
tab: "
|
|
2389
|
+
tab: "files",
|
|
2390
|
+
group: "LSP",
|
|
2092
2391
|
label: "Deduplicate Diagnostics",
|
|
2093
2392
|
description: "Suppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones",
|
|
2094
2393
|
},
|
|
2095
2394
|
},
|
|
2096
2395
|
|
|
2396
|
+
"bash.enabled": {
|
|
2397
|
+
type: "boolean",
|
|
2398
|
+
default: true,
|
|
2399
|
+
ui: {
|
|
2400
|
+
tab: "shell",
|
|
2401
|
+
group: "Bash",
|
|
2402
|
+
label: "Bash",
|
|
2403
|
+
description: "Enable the bash tool for shell command execution",
|
|
2404
|
+
},
|
|
2405
|
+
},
|
|
2406
|
+
|
|
2407
|
+
"bash.autoBackground.enabled": {
|
|
2408
|
+
type: "boolean",
|
|
2409
|
+
default: false,
|
|
2410
|
+
ui: {
|
|
2411
|
+
tab: "shell",
|
|
2412
|
+
group: "Bash",
|
|
2413
|
+
label: "Bash Auto-Background",
|
|
2414
|
+
description: "Automatically background long-running bash commands and deliver the result later",
|
|
2415
|
+
},
|
|
2416
|
+
},
|
|
2417
|
+
|
|
2097
2418
|
// Bash interceptor
|
|
2098
2419
|
"bashInterceptor.enabled": {
|
|
2099
2420
|
type: "boolean",
|
|
2100
2421
|
default: false,
|
|
2101
|
-
ui: {
|
|
2422
|
+
ui: {
|
|
2423
|
+
tab: "shell",
|
|
2424
|
+
group: "Bash",
|
|
2425
|
+
label: "Bash Interceptor",
|
|
2426
|
+
description: "Block shell commands that have dedicated tools",
|
|
2427
|
+
},
|
|
2102
2428
|
},
|
|
2103
2429
|
"bashInterceptor.patterns": { type: "array", default: DEFAULT_BASH_INTERCEPTOR_RULES },
|
|
2104
2430
|
|
|
@@ -2106,8 +2432,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2106
2432
|
type: "boolean",
|
|
2107
2433
|
default: true,
|
|
2108
2434
|
ui: {
|
|
2109
|
-
tab: "
|
|
2110
|
-
|
|
2435
|
+
tab: "shell",
|
|
2436
|
+
group: "Bash",
|
|
2437
|
+
label: "Strip head/tail Pipes",
|
|
2111
2438
|
description:
|
|
2112
2439
|
"Silently drop trailing `| head`/`| tail` pipes from single-line bash commands. Output is already truncated automatically.",
|
|
2113
2440
|
},
|
|
@@ -2118,7 +2445,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2118
2445
|
type: "boolean",
|
|
2119
2446
|
default: true,
|
|
2120
2447
|
ui: {
|
|
2121
|
-
tab: "
|
|
2448
|
+
tab: "shell",
|
|
2449
|
+
group: "Bash",
|
|
2122
2450
|
label: "Shell Minimizer",
|
|
2123
2451
|
description: "Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent",
|
|
2124
2452
|
},
|
|
@@ -2138,7 +2466,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2138
2466
|
values: ["default", "aggressive"] as const,
|
|
2139
2467
|
default: "default",
|
|
2140
2468
|
ui: {
|
|
2141
|
-
tab: "
|
|
2469
|
+
tab: "shell",
|
|
2470
|
+
group: "Bash",
|
|
2142
2471
|
label: "Shell Minimizer Source Outline",
|
|
2143
2472
|
description: "Source outline mode for cat/read of source files: default or aggressive",
|
|
2144
2473
|
},
|
|
@@ -2153,9 +2482,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2153
2482
|
type: "boolean",
|
|
2154
2483
|
default: true,
|
|
2155
2484
|
ui: {
|
|
2156
|
-
tab: "
|
|
2157
|
-
|
|
2158
|
-
|
|
2485
|
+
tab: "shell",
|
|
2486
|
+
group: "Eval & Python",
|
|
2487
|
+
label: "Python Eval Backend",
|
|
2488
|
+
description: "Allow the eval tool to dispatch Python cells to the IPython kernel",
|
|
2159
2489
|
},
|
|
2160
2490
|
},
|
|
2161
2491
|
|
|
@@ -2163,9 +2493,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2163
2493
|
type: "boolean",
|
|
2164
2494
|
default: true,
|
|
2165
2495
|
ui: {
|
|
2166
|
-
tab: "
|
|
2167
|
-
|
|
2168
|
-
|
|
2496
|
+
tab: "shell",
|
|
2497
|
+
group: "Eval & Python",
|
|
2498
|
+
label: "JavaScript Eval Backend",
|
|
2499
|
+
description: "Allow the eval tool to dispatch JavaScript cells to the in-process runtime",
|
|
2169
2500
|
},
|
|
2170
2501
|
},
|
|
2171
2502
|
|
|
@@ -2175,16 +2506,18 @@ export const SETTINGS_SCHEMA = {
|
|
|
2175
2506
|
values: ["session", "per-call"] as const,
|
|
2176
2507
|
default: "session",
|
|
2177
2508
|
ui: {
|
|
2178
|
-
tab: "
|
|
2509
|
+
tab: "shell",
|
|
2510
|
+
group: "Eval & Python",
|
|
2179
2511
|
label: "Python Kernel Mode",
|
|
2180
|
-
description: "
|
|
2512
|
+
description: "Keep the IPython kernel alive across eval calls or start fresh each time",
|
|
2181
2513
|
},
|
|
2182
2514
|
},
|
|
2183
2515
|
"python.interpreter": {
|
|
2184
2516
|
type: "string",
|
|
2185
2517
|
default: "",
|
|
2186
2518
|
ui: {
|
|
2187
|
-
tab: "
|
|
2519
|
+
tab: "shell",
|
|
2520
|
+
group: "Eval & Python",
|
|
2188
2521
|
label: "Python Interpreter",
|
|
2189
2522
|
description:
|
|
2190
2523
|
"Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.",
|
|
@@ -2200,7 +2533,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2200
2533
|
type: "record",
|
|
2201
2534
|
default: {},
|
|
2202
2535
|
ui: {
|
|
2203
|
-
tab: "
|
|
2536
|
+
tab: "interaction",
|
|
2537
|
+
group: "Approvals",
|
|
2204
2538
|
label: "Tool Approval Policies",
|
|
2205
2539
|
description:
|
|
2206
2540
|
"Per-tool approval policies. Set to 'allow' to auto-approve, 'prompt' to require confirmation, or 'deny' to block. Overrides are honored in every approval mode.",
|
|
@@ -2217,9 +2551,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2217
2551
|
default: "yolo",
|
|
2218
2552
|
ui: {
|
|
2219
2553
|
tab: "interaction",
|
|
2554
|
+
group: "Approvals",
|
|
2220
2555
|
label: "Tool Approval",
|
|
2221
2556
|
description:
|
|
2222
|
-
"Default approval
|
|
2557
|
+
"Default approval behavior for tool calls. 'Always ask' auto-approves read-only tools only. 'Write' auto-approves read and workspace-write tools. 'Yolo' auto-approves all tiers; user policy may still prompt or block.",
|
|
2223
2558
|
options: [
|
|
2224
2559
|
{
|
|
2225
2560
|
value: "always-ask",
|
|
@@ -2246,13 +2581,23 @@ export const SETTINGS_SCHEMA = {
|
|
|
2246
2581
|
"todo.enabled": {
|
|
2247
2582
|
type: "boolean",
|
|
2248
2583
|
default: true,
|
|
2249
|
-
ui: {
|
|
2584
|
+
ui: {
|
|
2585
|
+
tab: "tools",
|
|
2586
|
+
group: "Available Tools",
|
|
2587
|
+
label: "Todos",
|
|
2588
|
+
description: "Enable the todo tool for task tracking",
|
|
2589
|
+
},
|
|
2250
2590
|
},
|
|
2251
2591
|
|
|
2252
2592
|
"todo.reminders": {
|
|
2253
2593
|
type: "boolean",
|
|
2254
2594
|
default: true,
|
|
2255
|
-
ui: {
|
|
2595
|
+
ui: {
|
|
2596
|
+
tab: "tools",
|
|
2597
|
+
group: "Todos",
|
|
2598
|
+
label: "Todo Reminders",
|
|
2599
|
+
description: "Remind the agent to complete todos before stopping",
|
|
2600
|
+
},
|
|
2256
2601
|
},
|
|
2257
2602
|
|
|
2258
2603
|
"todo.reminders.max": {
|
|
@@ -2260,8 +2605,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2260
2605
|
default: 3,
|
|
2261
2606
|
ui: {
|
|
2262
2607
|
tab: "tools",
|
|
2608
|
+
group: "Todos",
|
|
2263
2609
|
label: "Todo Reminder Limit",
|
|
2264
|
-
description: "Maximum
|
|
2610
|
+
description: "Maximum number of todo reminders before giving up",
|
|
2265
2611
|
options: [
|
|
2266
2612
|
{ value: "1", label: "1 reminder" },
|
|
2267
2613
|
{ value: "2", label: "2 reminders" },
|
|
@@ -2276,28 +2622,33 @@ export const SETTINGS_SCHEMA = {
|
|
|
2276
2622
|
default: false,
|
|
2277
2623
|
ui: {
|
|
2278
2624
|
tab: "tools",
|
|
2625
|
+
group: "Todos",
|
|
2279
2626
|
label: "Create Todos Automatically",
|
|
2280
2627
|
description: "Automatically create a comprehensive todo list after the first message",
|
|
2281
2628
|
},
|
|
2282
2629
|
},
|
|
2283
2630
|
|
|
2284
|
-
"bash.enabled": {
|
|
2285
|
-
type: "boolean",
|
|
2286
|
-
default: true,
|
|
2287
|
-
ui: { tab: "tools", label: "Bash", description: "Enable the bash tool for shell command execution" },
|
|
2288
|
-
},
|
|
2289
|
-
|
|
2290
2631
|
// Search and AST tools
|
|
2291
2632
|
"find.enabled": {
|
|
2292
2633
|
type: "boolean",
|
|
2293
2634
|
default: true,
|
|
2294
|
-
ui: {
|
|
2635
|
+
ui: {
|
|
2636
|
+
tab: "tools",
|
|
2637
|
+
group: "Available Tools",
|
|
2638
|
+
label: "Find",
|
|
2639
|
+
description: "Enable the find tool for glob-based file lookup",
|
|
2640
|
+
},
|
|
2295
2641
|
},
|
|
2296
2642
|
|
|
2297
2643
|
"search.enabled": {
|
|
2298
2644
|
type: "boolean",
|
|
2299
2645
|
default: true,
|
|
2300
|
-
ui: {
|
|
2646
|
+
ui: {
|
|
2647
|
+
tab: "tools",
|
|
2648
|
+
group: "Available Tools",
|
|
2649
|
+
label: "Search",
|
|
2650
|
+
description: "Enable the search tool for regex content search",
|
|
2651
|
+
},
|
|
2301
2652
|
},
|
|
2302
2653
|
|
|
2303
2654
|
"search.contextBefore": {
|
|
@@ -2305,6 +2656,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2305
2656
|
default: 1,
|
|
2306
2657
|
ui: {
|
|
2307
2658
|
tab: "tools",
|
|
2659
|
+
group: "Search & Browser",
|
|
2308
2660
|
label: "Search Context Before",
|
|
2309
2661
|
description: "Lines of context before each search match",
|
|
2310
2662
|
options: [
|
|
@@ -2322,6 +2674,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2322
2674
|
default: 3,
|
|
2323
2675
|
ui: {
|
|
2324
2676
|
tab: "tools",
|
|
2677
|
+
group: "Search & Browser",
|
|
2325
2678
|
label: "Search Context After",
|
|
2326
2679
|
description: "Lines of context after each search match",
|
|
2327
2680
|
options: [
|
|
@@ -2340,6 +2693,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2340
2693
|
default: true,
|
|
2341
2694
|
ui: {
|
|
2342
2695
|
tab: "tools",
|
|
2696
|
+
group: "Available Tools",
|
|
2343
2697
|
label: "AST Grep",
|
|
2344
2698
|
description: "Enable the ast_grep tool for structural AST search",
|
|
2345
2699
|
},
|
|
@@ -2350,28 +2704,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2350
2704
|
default: true,
|
|
2351
2705
|
ui: {
|
|
2352
2706
|
tab: "tools",
|
|
2707
|
+
group: "Available Tools",
|
|
2353
2708
|
label: "AST Edit",
|
|
2354
2709
|
description: "Enable the ast_edit tool for structural AST rewrites",
|
|
2355
2710
|
},
|
|
2356
2711
|
},
|
|
2357
2712
|
|
|
2358
|
-
"irc.timeoutMs": {
|
|
2359
|
-
type: "number",
|
|
2360
|
-
default: 120_000,
|
|
2361
|
-
ui: {
|
|
2362
|
-
tab: "tools",
|
|
2363
|
-
label: "IRC Timeout",
|
|
2364
|
-
description: "Default timeout for irc wait (and send await:true) in milliseconds; 0 disables the timeout",
|
|
2365
|
-
options: [
|
|
2366
|
-
{ value: "0", label: "Disabled" },
|
|
2367
|
-
{ value: "30000", label: "30 seconds" },
|
|
2368
|
-
{ value: "60000", label: "1 minute" },
|
|
2369
|
-
{ value: "120000", label: "2 minutes" },
|
|
2370
|
-
{ value: "300000", label: "5 minutes" },
|
|
2371
|
-
],
|
|
2372
|
-
},
|
|
2373
|
-
},
|
|
2374
|
-
|
|
2375
2713
|
// Optional tools
|
|
2376
2714
|
|
|
2377
2715
|
"renderMermaid.enabled": {
|
|
@@ -2379,6 +2717,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2379
2717
|
default: false,
|
|
2380
2718
|
ui: {
|
|
2381
2719
|
tab: "tools",
|
|
2720
|
+
group: "Available Tools",
|
|
2382
2721
|
label: "Render Mermaid",
|
|
2383
2722
|
description: "Enable the render_mermaid tool for Mermaid-to-ASCII rendering",
|
|
2384
2723
|
},
|
|
@@ -2389,6 +2728,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2389
2728
|
default: true,
|
|
2390
2729
|
ui: {
|
|
2391
2730
|
tab: "tools",
|
|
2731
|
+
group: "Available Tools",
|
|
2392
2732
|
label: "Debug",
|
|
2393
2733
|
description: "Enable the debug tool for DAP-based debugging",
|
|
2394
2734
|
},
|
|
@@ -2399,6 +2739,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2399
2739
|
default: false,
|
|
2400
2740
|
ui: {
|
|
2401
2741
|
tab: "tools",
|
|
2742
|
+
group: "Available Tools",
|
|
2402
2743
|
label: "Text-to-Speech",
|
|
2403
2744
|
description: "Enable the tts tool for xAI Grok Voice speech synthesis",
|
|
2404
2745
|
},
|
|
@@ -2409,6 +2750,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2409
2750
|
default: false,
|
|
2410
2751
|
ui: {
|
|
2411
2752
|
tab: "tools",
|
|
2753
|
+
group: "Available Tools",
|
|
2412
2754
|
label: "Inspect Image",
|
|
2413
2755
|
description: "Enable the inspect_image tool, delegating image understanding to a vision-capable model",
|
|
2414
2756
|
},
|
|
@@ -2419,6 +2761,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2419
2761
|
default: false,
|
|
2420
2762
|
ui: {
|
|
2421
2763
|
tab: "tools",
|
|
2764
|
+
group: "Available Tools",
|
|
2422
2765
|
label: "Checkpoint/Rewind",
|
|
2423
2766
|
description: "Enable the checkpoint and rewind tools for context checkpointing",
|
|
2424
2767
|
},
|
|
@@ -2428,7 +2771,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2428
2771
|
"fetch.enabled": {
|
|
2429
2772
|
type: "boolean",
|
|
2430
2773
|
default: true,
|
|
2431
|
-
ui: {
|
|
2774
|
+
ui: {
|
|
2775
|
+
tab: "tools",
|
|
2776
|
+
group: "Available Tools",
|
|
2777
|
+
label: "Read URLs",
|
|
2778
|
+
description: "Allow the read tool to fetch and process URLs",
|
|
2779
|
+
},
|
|
2432
2780
|
},
|
|
2433
2781
|
|
|
2434
2782
|
"vault.enabled": {
|
|
@@ -2436,6 +2784,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2436
2784
|
default: false,
|
|
2437
2785
|
ui: {
|
|
2438
2786
|
tab: "tools",
|
|
2787
|
+
group: "Available Tools",
|
|
2439
2788
|
label: "Obsidian Vault",
|
|
2440
2789
|
description:
|
|
2441
2790
|
"Enable the vault:// internal URL for reading and editing Obsidian vault content via the Obsidian CLI. When disabled, vault:// resolution is refused and the vault:// entry is omitted from the system prompt.",
|
|
@@ -2447,6 +2796,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2447
2796
|
default: false,
|
|
2448
2797
|
ui: {
|
|
2449
2798
|
tab: "tools",
|
|
2799
|
+
group: "Available Tools",
|
|
2450
2800
|
label: "GitHub CLI",
|
|
2451
2801
|
description:
|
|
2452
2802
|
"Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows)",
|
|
@@ -2458,7 +2808,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2458
2808
|
default: true,
|
|
2459
2809
|
ui: {
|
|
2460
2810
|
tab: "tools",
|
|
2461
|
-
|
|
2811
|
+
group: "GitHub",
|
|
2812
|
+
label: "GitHub View Cache",
|
|
2462
2813
|
description: "Cache rendered issue/PR view output in ~/.omp/cache/github-cache.db so repeated reads are free",
|
|
2463
2814
|
},
|
|
2464
2815
|
},
|
|
@@ -2468,8 +2819,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2468
2819
|
default: 300,
|
|
2469
2820
|
ui: {
|
|
2470
2821
|
tab: "tools",
|
|
2471
|
-
|
|
2472
|
-
|
|
2822
|
+
group: "GitHub",
|
|
2823
|
+
label: "GitHub Cache Soft TTL",
|
|
2824
|
+
description:
|
|
2825
|
+
"Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes)",
|
|
2473
2826
|
},
|
|
2474
2827
|
},
|
|
2475
2828
|
|
|
@@ -2478,16 +2831,22 @@ export const SETTINGS_SCHEMA = {
|
|
|
2478
2831
|
default: 604800,
|
|
2479
2832
|
ui: {
|
|
2480
2833
|
tab: "tools",
|
|
2481
|
-
|
|
2834
|
+
group: "GitHub",
|
|
2835
|
+
label: "GitHub Cache Hard TTL",
|
|
2482
2836
|
description:
|
|
2483
|
-
"Past soft TTL
|
|
2837
|
+
"Past the soft TTL the cached row is returned and refreshed in the background; past the hard TTL it is dropped (seconds; default 7 days)",
|
|
2484
2838
|
},
|
|
2485
2839
|
},
|
|
2486
2840
|
|
|
2487
2841
|
"web_search.enabled": {
|
|
2488
2842
|
type: "boolean",
|
|
2489
2843
|
default: true,
|
|
2490
|
-
ui: {
|
|
2844
|
+
ui: {
|
|
2845
|
+
tab: "tools",
|
|
2846
|
+
group: "Available Tools",
|
|
2847
|
+
label: "Web Search",
|
|
2848
|
+
description: "Enable the web_search tool for live web results",
|
|
2849
|
+
},
|
|
2491
2850
|
},
|
|
2492
2851
|
|
|
2493
2852
|
"browser.enabled": {
|
|
@@ -2495,8 +2854,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2495
2854
|
default: true,
|
|
2496
2855
|
ui: {
|
|
2497
2856
|
tab: "tools",
|
|
2857
|
+
group: "Available Tools",
|
|
2498
2858
|
label: "Browser",
|
|
2499
|
-
description: "Enable the browser tool (
|
|
2859
|
+
description: "Enable the browser tool for scripted Chromium automation (puppeteer)",
|
|
2500
2860
|
},
|
|
2501
2861
|
},
|
|
2502
2862
|
|
|
@@ -2505,6 +2865,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2505
2865
|
default: true,
|
|
2506
2866
|
ui: {
|
|
2507
2867
|
tab: "tools",
|
|
2868
|
+
group: "Search & Browser",
|
|
2508
2869
|
label: "Headless Browser",
|
|
2509
2870
|
description: "Launch browser in headless mode (disable to show browser UI)",
|
|
2510
2871
|
},
|
|
@@ -2514,7 +2875,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2514
2875
|
default: undefined,
|
|
2515
2876
|
ui: {
|
|
2516
2877
|
tab: "tools",
|
|
2517
|
-
|
|
2878
|
+
group: "Search & Browser",
|
|
2879
|
+
label: "Screenshot Directory",
|
|
2518
2880
|
description:
|
|
2519
2881
|
"Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)",
|
|
2520
2882
|
},
|
|
@@ -2526,6 +2888,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2526
2888
|
default: true,
|
|
2527
2889
|
ui: {
|
|
2528
2890
|
tab: "tools",
|
|
2891
|
+
group: "Execution",
|
|
2529
2892
|
label: "Intent Tracing",
|
|
2530
2893
|
description: "Ask the agent to describe the intent of each tool call before executing it",
|
|
2531
2894
|
},
|
|
@@ -2536,6 +2899,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2536
2899
|
default: 0,
|
|
2537
2900
|
ui: {
|
|
2538
2901
|
tab: "tools",
|
|
2902
|
+
group: "Execution",
|
|
2539
2903
|
label: "Max Tool Timeout",
|
|
2540
2904
|
description: "Maximum timeout in seconds the agent can set for any tool (0 = no limit)",
|
|
2541
2905
|
options: [
|
|
@@ -2555,6 +2919,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2555
2919
|
default: true,
|
|
2556
2920
|
ui: {
|
|
2557
2921
|
tab: "tools",
|
|
2922
|
+
group: "Execution",
|
|
2558
2923
|
label: "Async Execution",
|
|
2559
2924
|
description: "Enable async bash commands and background task execution",
|
|
2560
2925
|
},
|
|
@@ -2571,6 +2936,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2571
2936
|
default: "30s",
|
|
2572
2937
|
ui: {
|
|
2573
2938
|
tab: "tools",
|
|
2939
|
+
group: "Execution",
|
|
2574
2940
|
label: "Poll Wait Duration",
|
|
2575
2941
|
description: "How long the poll tool waits for background job updates before returning the current state",
|
|
2576
2942
|
options: [
|
|
@@ -2583,13 +2949,21 @@ export const SETTINGS_SCHEMA = {
|
|
|
2583
2949
|
},
|
|
2584
2950
|
},
|
|
2585
2951
|
|
|
2586
|
-
"
|
|
2587
|
-
type: "
|
|
2588
|
-
default:
|
|
2952
|
+
"irc.timeoutMs": {
|
|
2953
|
+
type: "number",
|
|
2954
|
+
default: 120_000,
|
|
2589
2955
|
ui: {
|
|
2590
2956
|
tab: "tools",
|
|
2591
|
-
|
|
2592
|
-
|
|
2957
|
+
group: "Execution",
|
|
2958
|
+
label: "IRC Timeout",
|
|
2959
|
+
description: "Default timeout for irc wait (and send await:true) in milliseconds; 0 disables the timeout",
|
|
2960
|
+
options: [
|
|
2961
|
+
{ value: "0", label: "Disabled" },
|
|
2962
|
+
{ value: "30000", label: "30 seconds" },
|
|
2963
|
+
{ value: "60000", label: "1 minute" },
|
|
2964
|
+
{ value: "120000", label: "2 minutes" },
|
|
2965
|
+
{ value: "300000", label: "5 minutes" },
|
|
2966
|
+
],
|
|
2593
2967
|
},
|
|
2594
2968
|
},
|
|
2595
2969
|
|
|
@@ -2605,6 +2979,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2605
2979
|
default: "auto",
|
|
2606
2980
|
ui: {
|
|
2607
2981
|
tab: "tools",
|
|
2982
|
+
group: "Discovery & MCP",
|
|
2608
2983
|
label: "Tool Discovery",
|
|
2609
2984
|
description:
|
|
2610
2985
|
"Hide tools behind a search tool to save tokens. 'auto' hides MCP tools once the tool set has more than 40 tools; 'mcp-only' always hides MCP tools; 'all' hides all non-essential built-ins too.",
|
|
@@ -2616,6 +2991,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2616
2991
|
default: [] as string[],
|
|
2617
2992
|
ui: {
|
|
2618
2993
|
tab: "tools",
|
|
2994
|
+
group: "Discovery & MCP",
|
|
2619
2995
|
label: "Essential Tools Override",
|
|
2620
2996
|
description:
|
|
2621
2997
|
"Override the always-loaded built-in tools (default: read, bash, edit). Leave empty to use defaults.",
|
|
@@ -2626,7 +3002,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2626
3002
|
"mcp.enableProjectConfig": {
|
|
2627
3003
|
type: "boolean",
|
|
2628
3004
|
default: true,
|
|
2629
|
-
ui: {
|
|
3005
|
+
ui: {
|
|
3006
|
+
tab: "tools",
|
|
3007
|
+
group: "Discovery & MCP",
|
|
3008
|
+
label: "MCP Project Config",
|
|
3009
|
+
description: "Load .mcp.json/mcp.json from project root",
|
|
3010
|
+
},
|
|
2630
3011
|
},
|
|
2631
3012
|
|
|
2632
3013
|
"mcp.discoveryMode": {
|
|
@@ -2634,6 +3015,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2634
3015
|
default: false,
|
|
2635
3016
|
ui: {
|
|
2636
3017
|
tab: "tools",
|
|
3018
|
+
group: "Discovery & MCP",
|
|
2637
3019
|
label: "MCP Tool Discovery",
|
|
2638
3020
|
description: "Hide MCP tools by default and expose them through a tool discovery tool",
|
|
2639
3021
|
},
|
|
@@ -2644,6 +3026,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2644
3026
|
default: [] as string[],
|
|
2645
3027
|
ui: {
|
|
2646
3028
|
tab: "tools",
|
|
3029
|
+
group: "Discovery & MCP",
|
|
2647
3030
|
label: "MCP Discovery Default Servers",
|
|
2648
3031
|
description: "Keep MCP tools from these servers visible while discovery mode hides other MCP tools",
|
|
2649
3032
|
},
|
|
@@ -2654,6 +3037,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2654
3037
|
default: false,
|
|
2655
3038
|
ui: {
|
|
2656
3039
|
tab: "tools",
|
|
3040
|
+
group: "Discovery & MCP",
|
|
2657
3041
|
label: "MCP Update Injection",
|
|
2658
3042
|
description: "Inject MCP resource updates into the agent conversation",
|
|
2659
3043
|
},
|
|
@@ -2664,8 +3048,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2664
3048
|
default: 500,
|
|
2665
3049
|
ui: {
|
|
2666
3050
|
tab: "tools",
|
|
3051
|
+
group: "Discovery & MCP",
|
|
2667
3052
|
label: "MCP Notification Debounce",
|
|
2668
|
-
description:
|
|
3053
|
+
description:
|
|
3054
|
+
"Debounce window in milliseconds for MCP resource updates before injecting them into the conversation",
|
|
2669
3055
|
},
|
|
2670
3056
|
},
|
|
2671
3057
|
|
|
@@ -2679,6 +3065,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2679
3065
|
default: true,
|
|
2680
3066
|
ui: {
|
|
2681
3067
|
tab: "tasks",
|
|
3068
|
+
group: "Modes",
|
|
2682
3069
|
label: "Plan Mode",
|
|
2683
3070
|
description: "Enable plan mode for read-only exploration and planning before execution",
|
|
2684
3071
|
},
|
|
@@ -2689,6 +3076,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2689
3076
|
default: true,
|
|
2690
3077
|
ui: {
|
|
2691
3078
|
tab: "tasks",
|
|
3079
|
+
group: "Modes",
|
|
2692
3080
|
label: "Goal Mode",
|
|
2693
3081
|
description: "Enable per-session goal mode and the hidden goal tool",
|
|
2694
3082
|
},
|
|
@@ -2699,7 +3087,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2699
3087
|
default: true,
|
|
2700
3088
|
ui: {
|
|
2701
3089
|
tab: "tasks",
|
|
2702
|
-
|
|
3090
|
+
group: "Modes",
|
|
3091
|
+
label: "Goal Status in Footer",
|
|
2703
3092
|
description: "Show token budget alongside the goal indicator in the status line",
|
|
2704
3093
|
},
|
|
2705
3094
|
},
|
|
@@ -2709,6 +3098,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2709
3098
|
default: ["interactive"],
|
|
2710
3099
|
ui: {
|
|
2711
3100
|
tab: "tasks",
|
|
3101
|
+
group: "Modes",
|
|
2712
3102
|
label: "Goal Continuation Modes",
|
|
2713
3103
|
description: "Run modes where active goals may auto-continue between turns",
|
|
2714
3104
|
},
|
|
@@ -2732,6 +3122,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2732
3122
|
default: "none",
|
|
2733
3123
|
ui: {
|
|
2734
3124
|
tab: "tasks",
|
|
3125
|
+
group: "Isolation",
|
|
2735
3126
|
label: "Isolation Mode",
|
|
2736
3127
|
description:
|
|
2737
3128
|
'Isolation backend for subagents. "auto" lets the native PAL pick the best available backend (CoW-aware filesystems, then overlayfs/ProjFS, then a git worktree / recursive-copy fallback).',
|
|
@@ -2768,6 +3159,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2768
3159
|
default: "patch",
|
|
2769
3160
|
ui: {
|
|
2770
3161
|
tab: "tasks",
|
|
3162
|
+
group: "Isolation",
|
|
2771
3163
|
label: "Isolation Merge Strategy",
|
|
2772
3164
|
description: "How isolated task changes are integrated (patch apply or branch merge)",
|
|
2773
3165
|
options: [
|
|
@@ -2783,6 +3175,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2783
3175
|
default: "generic",
|
|
2784
3176
|
ui: {
|
|
2785
3177
|
tab: "tasks",
|
|
3178
|
+
group: "Isolation",
|
|
2786
3179
|
label: "Isolation Commit Style",
|
|
2787
3180
|
description: "Commit message style for nested repo changes (generic or AI-generated)",
|
|
2788
3181
|
options: [
|
|
@@ -2797,6 +3190,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2797
3190
|
default: false,
|
|
2798
3191
|
ui: {
|
|
2799
3192
|
tab: "tasks",
|
|
3193
|
+
group: "Subagents",
|
|
2800
3194
|
label: "Prefer Task Delegation",
|
|
2801
3195
|
description: "Encourage the agent to delegate work to subagents unless changes are trivial",
|
|
2802
3196
|
},
|
|
@@ -2807,6 +3201,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2807
3201
|
default: true,
|
|
2808
3202
|
ui: {
|
|
2809
3203
|
tab: "tasks",
|
|
3204
|
+
group: "Subagents",
|
|
2810
3205
|
label: "Batch Task Calls",
|
|
2811
3206
|
description:
|
|
2812
3207
|
"Switch the task tool to its batch shape: one call carries { agent, context, tasks[] } — one subagent per item (with per-item isolation) and a required shared context prepended to every assignment. With async.enabled=true, each spawn runs as an independent background agent with the normal idle/parked lifecycle; otherwise the call blocks for merged results. Disable to restore the flat single-spawn schema.",
|
|
@@ -2818,8 +3213,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2818
3213
|
default: 32,
|
|
2819
3214
|
ui: {
|
|
2820
3215
|
tab: "tasks",
|
|
3216
|
+
group: "Subagents",
|
|
2821
3217
|
label: "Max Concurrent Tasks",
|
|
2822
|
-
description: "
|
|
3218
|
+
description: "Maximum number of subagents running concurrently",
|
|
2823
3219
|
options: [
|
|
2824
3220
|
{ value: "0", label: "Unlimited" },
|
|
2825
3221
|
{ value: "1", label: "1 task" },
|
|
@@ -2838,6 +3234,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2838
3234
|
default: false,
|
|
2839
3235
|
ui: {
|
|
2840
3236
|
tab: "tasks",
|
|
3237
|
+
group: "Subagents",
|
|
2841
3238
|
label: "LSP in Subagents",
|
|
2842
3239
|
description:
|
|
2843
3240
|
"Allow subagents spawned via the task tool to use the lsp tool. Off by default to keep subagents cheap; enable when LSP-aware delegation is worth the extra tokens.",
|
|
@@ -2849,6 +3246,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2849
3246
|
default: 2,
|
|
2850
3247
|
ui: {
|
|
2851
3248
|
tab: "tasks",
|
|
3249
|
+
group: "Subagents",
|
|
2852
3250
|
label: "Max Task Recursion",
|
|
2853
3251
|
description: "How many levels deep subagents can spawn their own subagents",
|
|
2854
3252
|
options: [
|
|
@@ -2866,6 +3264,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2866
3264
|
default: 0,
|
|
2867
3265
|
ui: {
|
|
2868
3266
|
tab: "tasks",
|
|
3267
|
+
group: "Subagents",
|
|
2869
3268
|
label: "Max Subagent Runtime",
|
|
2870
3269
|
description:
|
|
2871
3270
|
"Hard wall-clock limit per subagent (ms). 0 disables it. Defense-in-depth against provider-side stream hangs that escape the inference-layer watchdog; triggers a normal subagent abort with a 'timed out' reason.",
|
|
@@ -2884,6 +3283,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2884
3283
|
default: 420_000,
|
|
2885
3284
|
ui: {
|
|
2886
3285
|
tab: "tasks",
|
|
3286
|
+
group: "Subagents",
|
|
2887
3287
|
label: "Agent Idle TTL",
|
|
2888
3288
|
description:
|
|
2889
3289
|
"How long an idle subagent stays live in memory before being parked to disk (ms). Parked agents are revived automatically when messaged or resumed. 0 keeps idle agents live until exit.",
|
|
@@ -2895,6 +3295,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2895
3295
|
default: 90,
|
|
2896
3296
|
ui: {
|
|
2897
3297
|
tab: "tasks",
|
|
3298
|
+
group: "Subagents",
|
|
2898
3299
|
label: "Soft Subagent Request Budget",
|
|
2899
3300
|
description:
|
|
2900
3301
|
"Soft per-subagent request budget (assistant requests per run). Crossing it injects one steering notice asking the subagent to wrap up; at 1.5x the budget the run is aborted gracefully, salvaging partial output. 0 disables the guard. Bundled explore/quick_task agents use a lower built-in budget.",
|
|
@@ -2921,9 +3322,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2921
3322
|
type: "number",
|
|
2922
3323
|
default: 60,
|
|
2923
3324
|
ui: {
|
|
2924
|
-
tab: "
|
|
2925
|
-
|
|
2926
|
-
|
|
3325
|
+
tab: "tools",
|
|
3326
|
+
group: "Todos",
|
|
3327
|
+
label: "Todo Auto-Clear Delay",
|
|
3328
|
+
description: "Delay before completed or abandoned todos are removed from the todo widget",
|
|
2927
3329
|
options: [
|
|
2928
3330
|
{ value: "0", label: "Instant" },
|
|
2929
3331
|
{ value: "60", label: "1 minute", description: "Default" },
|
|
@@ -2941,6 +3343,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2941
3343
|
default: false,
|
|
2942
3344
|
ui: {
|
|
2943
3345
|
tab: "appearance",
|
|
3346
|
+
group: "Display",
|
|
2944
3347
|
label: "Show Resolved Model Badge",
|
|
2945
3348
|
description: "Display the actual model ID used by each subagent in the task widget status line",
|
|
2946
3349
|
},
|
|
@@ -2952,7 +3355,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2952
3355
|
"skills.enableSkillCommands": {
|
|
2953
3356
|
type: "boolean",
|
|
2954
3357
|
default: true,
|
|
2955
|
-
ui: {
|
|
3358
|
+
ui: {
|
|
3359
|
+
tab: "tasks",
|
|
3360
|
+
group: "Commands & Skills",
|
|
3361
|
+
label: "Skill Commands",
|
|
3362
|
+
description: "Register skills as /skill:name commands",
|
|
3363
|
+
},
|
|
2956
3364
|
},
|
|
2957
3365
|
|
|
2958
3366
|
"skills.enableCodexUser": { type: "boolean", default: true },
|
|
@@ -2975,13 +3383,23 @@ export const SETTINGS_SCHEMA = {
|
|
|
2975
3383
|
"commands.enableClaudeUser": {
|
|
2976
3384
|
type: "boolean",
|
|
2977
3385
|
default: true,
|
|
2978
|
-
ui: {
|
|
3386
|
+
ui: {
|
|
3387
|
+
tab: "tasks",
|
|
3388
|
+
group: "Commands & Skills",
|
|
3389
|
+
label: "Claude User Commands",
|
|
3390
|
+
description: "Load commands from ~/.claude/commands/",
|
|
3391
|
+
},
|
|
2979
3392
|
},
|
|
2980
3393
|
|
|
2981
3394
|
"commands.enableClaudeProject": {
|
|
2982
3395
|
type: "boolean",
|
|
2983
3396
|
default: true,
|
|
2984
|
-
ui: {
|
|
3397
|
+
ui: {
|
|
3398
|
+
tab: "tasks",
|
|
3399
|
+
group: "Commands & Skills",
|
|
3400
|
+
label: "Claude Project Commands",
|
|
3401
|
+
description: "Load commands from .claude/commands/",
|
|
3402
|
+
},
|
|
2985
3403
|
},
|
|
2986
3404
|
|
|
2987
3405
|
"commands.enableOpencodeUser": {
|
|
@@ -2989,6 +3407,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2989
3407
|
default: true,
|
|
2990
3408
|
ui: {
|
|
2991
3409
|
tab: "tasks",
|
|
3410
|
+
group: "Commands & Skills",
|
|
2992
3411
|
label: "OpenCode User Commands",
|
|
2993
3412
|
description: "Load commands from ~/.config/opencode/commands/",
|
|
2994
3413
|
},
|
|
@@ -2997,7 +3416,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2997
3416
|
"commands.enableOpencodeProject": {
|
|
2998
3417
|
type: "boolean",
|
|
2999
3418
|
default: true,
|
|
3000
|
-
ui: {
|
|
3419
|
+
ui: {
|
|
3420
|
+
tab: "tasks",
|
|
3421
|
+
group: "Commands & Skills",
|
|
3422
|
+
label: "OpenCode Project Commands",
|
|
3423
|
+
description: "Load commands from .opencode/commands/",
|
|
3424
|
+
},
|
|
3001
3425
|
},
|
|
3002
3426
|
|
|
3003
3427
|
// ────────────────────────────────────────────────────────────────────────
|
|
@@ -3008,7 +3432,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
3008
3432
|
"secrets.enabled": {
|
|
3009
3433
|
type: "boolean",
|
|
3010
3434
|
default: false,
|
|
3011
|
-
ui: {
|
|
3435
|
+
ui: {
|
|
3436
|
+
tab: "providers",
|
|
3437
|
+
group: "Privacy",
|
|
3438
|
+
label: "Hide Secrets",
|
|
3439
|
+
description: "Obfuscate secrets before sending to AI providers",
|
|
3440
|
+
},
|
|
3012
3441
|
},
|
|
3013
3442
|
|
|
3014
3443
|
// Provider selection
|
|
@@ -3018,8 +3447,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3018
3447
|
default: "auto",
|
|
3019
3448
|
ui: {
|
|
3020
3449
|
tab: "providers",
|
|
3450
|
+
group: "Services",
|
|
3021
3451
|
label: "Web Search Provider",
|
|
3022
|
-
description: "
|
|
3452
|
+
description: "Preferred provider for the web_search tool",
|
|
3023
3453
|
options: SEARCH_PROVIDER_OPTIONS,
|
|
3024
3454
|
},
|
|
3025
3455
|
},
|
|
@@ -3029,8 +3459,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3029
3459
|
default: "auto",
|
|
3030
3460
|
ui: {
|
|
3031
3461
|
tab: "providers",
|
|
3462
|
+
group: "Services",
|
|
3032
3463
|
label: "Image Provider",
|
|
3033
|
-
description: "
|
|
3464
|
+
description: "Preferred provider for image generation",
|
|
3034
3465
|
options: [
|
|
3035
3466
|
{
|
|
3036
3467
|
value: "auto",
|
|
@@ -3059,6 +3490,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3059
3490
|
default: ONLINE_TINY_TITLE_MODEL_KEY,
|
|
3060
3491
|
ui: {
|
|
3061
3492
|
tab: "providers",
|
|
3493
|
+
group: "Tiny Model",
|
|
3062
3494
|
label: "Tiny Model",
|
|
3063
3495
|
description: "Session-title model: online pi/smol by default, or a local on-device model",
|
|
3064
3496
|
options: TINY_TITLE_MODEL_OPTIONS,
|
|
@@ -3070,6 +3502,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3070
3502
|
default: TINY_MODEL_DEVICE_DEFAULT,
|
|
3071
3503
|
ui: {
|
|
3072
3504
|
tab: "providers",
|
|
3505
|
+
group: "Tiny Model",
|
|
3073
3506
|
label: "Tiny Model Device",
|
|
3074
3507
|
description:
|
|
3075
3508
|
"ONNX execution provider for local tiny models (titles + memory). Default uses CPU-only inference. The PI_TINY_DEVICE env var overrides this.",
|
|
@@ -3082,6 +3515,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3082
3515
|
default: TINY_MODEL_DTYPE_DEFAULT,
|
|
3083
3516
|
ui: {
|
|
3084
3517
|
tab: "providers",
|
|
3518
|
+
group: "Tiny Model",
|
|
3085
3519
|
label: "Tiny Model Precision",
|
|
3086
3520
|
description:
|
|
3087
3521
|
"ONNX quantization/precision for local tiny models. Default uses each model's shipped dtype (q4); lower precision is faster, higher is more faithful. The PI_TINY_DTYPE env var overrides this.",
|
|
@@ -3094,6 +3528,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3094
3528
|
default: ONLINE_MEMORY_MODEL_KEY,
|
|
3095
3529
|
ui: {
|
|
3096
3530
|
tab: "memory",
|
|
3531
|
+
group: "General",
|
|
3097
3532
|
label: "Memory Model",
|
|
3098
3533
|
description:
|
|
3099
3534
|
"Mnemopi LLM for fact extraction + consolidation: online (smol/remote) by default, or a local on-device model",
|
|
@@ -3108,6 +3543,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3108
3543
|
default: ONLINE_AUTO_THINKING_MODEL_KEY,
|
|
3109
3544
|
ui: {
|
|
3110
3545
|
tab: "model",
|
|
3546
|
+
group: "Thinking",
|
|
3111
3547
|
label: "Auto Thinking Model",
|
|
3112
3548
|
description:
|
|
3113
3549
|
"Difficulty classifier for the `auto` thinking level: online smol by default, or a local on-device model",
|
|
@@ -3122,6 +3558,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3122
3558
|
default: "anthropic",
|
|
3123
3559
|
ui: {
|
|
3124
3560
|
tab: "providers",
|
|
3561
|
+
group: "Protocol",
|
|
3125
3562
|
label: "Kimi API Format",
|
|
3126
3563
|
description: "API format for Kimi Code provider",
|
|
3127
3564
|
options: [
|
|
@@ -3137,6 +3574,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3137
3574
|
default: "auto",
|
|
3138
3575
|
ui: {
|
|
3139
3576
|
tab: "providers",
|
|
3577
|
+
group: "Protocol",
|
|
3140
3578
|
label: "OpenAI WebSockets",
|
|
3141
3579
|
description: "Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)",
|
|
3142
3580
|
options: [
|
|
@@ -3153,6 +3591,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3153
3591
|
default: "default",
|
|
3154
3592
|
ui: {
|
|
3155
3593
|
tab: "providers",
|
|
3594
|
+
group: "Protocol",
|
|
3156
3595
|
label: "OpenRouter Routing",
|
|
3157
3596
|
description:
|
|
3158
3597
|
"Default routing-variant suffix appended to OpenRouter model IDs (overridden when the selector already names a variant)",
|
|
@@ -3175,6 +3614,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3175
3614
|
default: "auto",
|
|
3176
3615
|
ui: {
|
|
3177
3616
|
tab: "providers",
|
|
3617
|
+
group: "Services",
|
|
3178
3618
|
label: "Fetch Provider",
|
|
3179
3619
|
description: "Reader backend priority for the fetch/read URL tool",
|
|
3180
3620
|
options: [
|
|
@@ -3191,12 +3631,46 @@ export const SETTINGS_SCHEMA = {
|
|
|
3191
3631
|
],
|
|
3192
3632
|
},
|
|
3193
3633
|
},
|
|
3634
|
+
// Codex saved rate-limit resets (auto-redeem)
|
|
3635
|
+
"codexResets.autoRedeem": {
|
|
3636
|
+
type: "boolean",
|
|
3637
|
+
default: false,
|
|
3638
|
+
ui: {
|
|
3639
|
+
tab: "providers",
|
|
3640
|
+
group: "Services",
|
|
3641
|
+
label: "Codex Auto-Redeem Saved Resets",
|
|
3642
|
+
description:
|
|
3643
|
+
"When a turn is blocked by the Codex weekly limit on the active account and no other account is available, automatically spend one saved rate-limit reset (ChatGPT 'save rate limit resets'). Conservative: never fires for 5-hour-only or Spark limits, near a natural reset, or twice for the same block. Requires retries enabled.",
|
|
3644
|
+
},
|
|
3645
|
+
},
|
|
3646
|
+
"codexResets.minBlockedMinutes": {
|
|
3647
|
+
type: "number",
|
|
3648
|
+
default: 60,
|
|
3649
|
+
ui: {
|
|
3650
|
+
tab: "providers",
|
|
3651
|
+
group: "Services",
|
|
3652
|
+
label: "Codex Auto-Redeem Min Block",
|
|
3653
|
+
description:
|
|
3654
|
+
"Only auto-redeem when the natural weekly reset is at least this many minutes away (don't spend a ~30-day credit to save a short wait).",
|
|
3655
|
+
},
|
|
3656
|
+
},
|
|
3657
|
+
"codexResets.keepCredits": {
|
|
3658
|
+
type: "number",
|
|
3659
|
+
default: 0,
|
|
3660
|
+
ui: {
|
|
3661
|
+
tab: "providers",
|
|
3662
|
+
group: "Services",
|
|
3663
|
+
label: "Codex Auto-Redeem Reserve",
|
|
3664
|
+
description: "Never auto-spend below this many saved resets (0 = the last credit may be spent automatically).",
|
|
3665
|
+
},
|
|
3666
|
+
},
|
|
3194
3667
|
"provider.appendOnlyContext": {
|
|
3195
3668
|
type: "enum",
|
|
3196
3669
|
values: ["auto", "on", "off"] as const,
|
|
3197
3670
|
default: "auto",
|
|
3198
3671
|
ui: {
|
|
3199
3672
|
tab: "providers",
|
|
3673
|
+
group: "Protocol",
|
|
3200
3674
|
label: "Append-Only Context",
|
|
3201
3675
|
description:
|
|
3202
3676
|
"Cache system prompt + tool specs and keep an append-only message log so provider prefix caches (DeepSeek, Xiaomi/SGLang, Anthropic) hit at maximum rate. Auto enables for known prefix-cache providers.",
|
|
@@ -3212,25 +3686,40 @@ export const SETTINGS_SCHEMA = {
|
|
|
3212
3686
|
"exa.enabled": {
|
|
3213
3687
|
type: "boolean",
|
|
3214
3688
|
default: true,
|
|
3215
|
-
ui: { tab: "providers", label: "Exa", description: "Master toggle for all Exa search tools" },
|
|
3689
|
+
ui: { tab: "providers", group: "Services", label: "Exa", description: "Master toggle for all Exa search tools" },
|
|
3216
3690
|
},
|
|
3217
3691
|
|
|
3218
3692
|
"exa.enableSearch": {
|
|
3219
3693
|
type: "boolean",
|
|
3220
3694
|
default: true,
|
|
3221
|
-
ui: {
|
|
3695
|
+
ui: {
|
|
3696
|
+
tab: "providers",
|
|
3697
|
+
group: "Services",
|
|
3698
|
+
label: "Exa Search",
|
|
3699
|
+
description: "Enable Exa basic search, deep search, code search, and crawl tools",
|
|
3700
|
+
},
|
|
3222
3701
|
},
|
|
3223
3702
|
|
|
3224
3703
|
"exa.enableResearcher": {
|
|
3225
3704
|
type: "boolean",
|
|
3226
3705
|
default: false,
|
|
3227
|
-
ui: {
|
|
3706
|
+
ui: {
|
|
3707
|
+
tab: "providers",
|
|
3708
|
+
group: "Services",
|
|
3709
|
+
label: "Exa Researcher",
|
|
3710
|
+
description: "Enable the Exa researcher tool for AI-powered deep research",
|
|
3711
|
+
},
|
|
3228
3712
|
},
|
|
3229
3713
|
|
|
3230
3714
|
"exa.enableWebsets": {
|
|
3231
3715
|
type: "boolean",
|
|
3232
3716
|
default: false,
|
|
3233
|
-
ui: {
|
|
3717
|
+
ui: {
|
|
3718
|
+
tab: "providers",
|
|
3719
|
+
group: "Services",
|
|
3720
|
+
label: "Exa Websets",
|
|
3721
|
+
description: "Enable Exa webset management and enrichment tools",
|
|
3722
|
+
},
|
|
3234
3723
|
},
|
|
3235
3724
|
|
|
3236
3725
|
// SearXNG
|
|
@@ -3239,8 +3728,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3239
3728
|
default: undefined,
|
|
3240
3729
|
ui: {
|
|
3241
3730
|
tab: "providers",
|
|
3731
|
+
group: "Services",
|
|
3242
3732
|
label: "SearXNG Endpoint",
|
|
3243
|
-
description: "
|
|
3733
|
+
description: "Base URL of a self-hosted SearXNG instance used for web search",
|
|
3244
3734
|
},
|
|
3245
3735
|
},
|
|
3246
3736
|
|
|
@@ -3286,6 +3776,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3286
3776
|
default: false,
|
|
3287
3777
|
ui: {
|
|
3288
3778
|
tab: "tools",
|
|
3779
|
+
group: "Developer",
|
|
3289
3780
|
label: "Auto QA",
|
|
3290
3781
|
description: "Enable automated tool issue reporting (report_tool_issue) for all agents",
|
|
3291
3782
|
},
|
|
@@ -3299,8 +3790,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3299
3790
|
default: "https://qa.omp.sh/v1/grievances" as const,
|
|
3300
3791
|
ui: {
|
|
3301
3792
|
tab: "tools",
|
|
3793
|
+
group: "Developer",
|
|
3302
3794
|
label: "Auto QA Push Endpoint",
|
|
3303
|
-
description: "Full URL
|
|
3795
|
+
description: "Full URL receiving Auto QA JSON reports (default https://qa.omp.sh/v1/grievances)",
|
|
3304
3796
|
},
|
|
3305
3797
|
},
|
|
3306
3798
|
|
|
@@ -3413,6 +3905,9 @@ export type StatusLineSeparatorStyle = SettingValue<"statusLine.separator">;
|
|
|
3413
3905
|
/** Tree selector filter mode - derived from schema */
|
|
3414
3906
|
export type TreeFilterMode = SettingValue<"treeFilterMode">;
|
|
3415
3907
|
|
|
3908
|
+
/** Personality preset - derived from schema */
|
|
3909
|
+
export type Personality = SettingValue<"personality">;
|
|
3910
|
+
|
|
3416
3911
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
3417
3912
|
// Typed Group Definitions
|
|
3418
3913
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
@@ -3557,6 +4052,11 @@ export interface ShellMinimizerSettings {
|
|
|
3557
4052
|
sourceOutlineLevel: "default" | "aggressive";
|
|
3558
4053
|
legacyFilters: boolean | undefined;
|
|
3559
4054
|
}
|
|
4055
|
+
export interface CodexResetsSettings {
|
|
4056
|
+
autoRedeem: boolean;
|
|
4057
|
+
minBlockedMinutes: number;
|
|
4058
|
+
keepCredits: number;
|
|
4059
|
+
}
|
|
3560
4060
|
|
|
3561
4061
|
/** Map group prefix -> typed settings interface */
|
|
3562
4062
|
export interface GroupTypeMap {
|
|
@@ -3576,6 +4076,7 @@ export interface GroupTypeMap {
|
|
|
3576
4076
|
modelTags: ModelTagsSettings;
|
|
3577
4077
|
cycleOrder: string[];
|
|
3578
4078
|
shellMinimizer: ShellMinimizerSettings;
|
|
4079
|
+
codexResets: CodexResetsSettings;
|
|
3579
4080
|
}
|
|
3580
4081
|
|
|
3581
4082
|
export type GroupPrefix = keyof GroupTypeMap;
|