@oh-my-pi/pi-coding-agent 15.11.3 → 15.11.4
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 +54 -0
- package/dist/cli.js +353 -294
- 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 +458 -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/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 +12 -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/theme/theme.d.ts +23 -3
- package/dist/types/session/agent-session.d.ts +14 -7
- package/dist/types/session/auth-storage.d.ts +1 -1
- package/dist/types/session/snapcompact-inline.d.ts +28 -0
- package/dist/types/slash-commands/helpers/active-oauth-account.d.ts +14 -0
- package/dist/types/system-prompt.d.ts +3 -1
- package/dist/types/task/render.d.ts +16 -6
- package/dist/types/tools/gh.d.ts +3 -0
- package/dist/types/tools/render-utils.d.ts +8 -16
- 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/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 +601 -153
- 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 +5 -5
- 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/settings-defs.ts +19 -4
- package/src/modes/components/settings-selector.ts +493 -93
- 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 +69 -12
- package/src/modes/components/transcript-container.ts +26 -0
- package/src/modes/components/tree-selector.ts +16 -6
- package/src/modes/controllers/command-controller.ts +37 -7
- 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 +81 -61
- package/src/modes/interactive-mode.ts +4 -2
- package/src/modes/rpc/rpc-mode.ts +2 -1
- package/src/modes/shared.ts +2 -0
- package/src/modes/theme/theme.ts +100 -7
- package/src/modes/utils/context-usage.ts +3 -1
- 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-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/task.md +3 -3
- package/src/sdk.ts +22 -1
- package/src/session/agent-session.ts +91 -24
- package/src/session/auth-storage.ts +1 -0
- package/src/session/session-dump-format.ts +8 -1
- package/src/session/session-manager.ts +5 -5
- package/src/session/snapcompact-inline.ts +187 -0
- package/src/slash-commands/helpers/active-oauth-account.ts +44 -0
- package/src/slash-commands/helpers/usage-report.ts +24 -3
- package/src/system-prompt.ts +15 -1
- package/src/task/render.ts +29 -19
- 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/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,47 @@ 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: "boolean",
|
|
1576
|
+
default: false,
|
|
1577
|
+
ui: {
|
|
1578
|
+
tab: "context",
|
|
1579
|
+
group: "Experimental",
|
|
1580
|
+
label: "Snapcompact System Prompt",
|
|
1581
|
+
description:
|
|
1582
|
+
"Experimental: render the system prompt as dense PNG image(s) and attach to the first user message (vision models only). Saves tokens; loses system-prompt prompt caching.",
|
|
1583
|
+
},
|
|
1584
|
+
},
|
|
1585
|
+
|
|
1586
|
+
"snapcompact.toolResults": {
|
|
1587
|
+
type: "boolean",
|
|
1588
|
+
default: false,
|
|
1589
|
+
ui: {
|
|
1590
|
+
tab: "context",
|
|
1591
|
+
group: "Experimental",
|
|
1592
|
+
label: "Snapcompact Tool Results",
|
|
1593
|
+
description:
|
|
1594
|
+
"Experimental: render large historical tool results as dense PNG image(s) instead of text (vision models only). Saves tokens on accumulated read/search output.",
|
|
1595
|
+
},
|
|
1596
|
+
},
|
|
1597
|
+
|
|
1395
1598
|
// Branch summaries
|
|
1396
1599
|
"branchSummary.enabled": {
|
|
1397
1600
|
type: "boolean",
|
|
1398
1601
|
default: false,
|
|
1399
|
-
ui: {
|
|
1602
|
+
ui: {
|
|
1603
|
+
tab: "context",
|
|
1604
|
+
group: "General",
|
|
1605
|
+
label: "Branch Summaries",
|
|
1606
|
+
description: "Prompt to summarize when leaving a branch",
|
|
1607
|
+
},
|
|
1400
1608
|
},
|
|
1401
1609
|
|
|
1402
1610
|
"branchSummary.reserveTokens": { type: "number", default: 16384 },
|
|
@@ -1449,6 +1657,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1449
1657
|
default: "off",
|
|
1450
1658
|
ui: {
|
|
1451
1659
|
tab: "memory",
|
|
1660
|
+
group: "General",
|
|
1452
1661
|
label: "Memory Backend",
|
|
1453
1662
|
description: "Off, local summary pipeline, Mnemopi SQLite, or Hindsight remote memory",
|
|
1454
1663
|
options: [
|
|
@@ -1470,6 +1679,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1470
1679
|
default: undefined,
|
|
1471
1680
|
ui: {
|
|
1472
1681
|
tab: "memory",
|
|
1682
|
+
group: "Mnemopi",
|
|
1473
1683
|
label: "Mnemopi DB Path",
|
|
1474
1684
|
description: "Optional SQLite DB path. Defaults to the agent memories directory.",
|
|
1475
1685
|
condition: "mnemopiActive",
|
|
@@ -1480,6 +1690,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1480
1690
|
default: undefined,
|
|
1481
1691
|
ui: {
|
|
1482
1692
|
tab: "memory",
|
|
1693
|
+
group: "Mnemopi",
|
|
1483
1694
|
label: "Mnemopi Bank",
|
|
1484
1695
|
description: "Optional shared bank base name. Per-project modes derive project-local banks from it.",
|
|
1485
1696
|
condition: "mnemopiActive",
|
|
@@ -1491,6 +1702,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1491
1702
|
default: "per-project",
|
|
1492
1703
|
ui: {
|
|
1493
1704
|
tab: "memory",
|
|
1705
|
+
group: "Mnemopi",
|
|
1494
1706
|
label: "Mnemopi Scoping",
|
|
1495
1707
|
description:
|
|
1496
1708
|
"global = one shared bank; per-project = isolated bank per cwd; per-project-tagged = project-local writes plus global recall visibility",
|
|
@@ -1519,6 +1731,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1519
1731
|
default: true,
|
|
1520
1732
|
ui: {
|
|
1521
1733
|
tab: "memory",
|
|
1734
|
+
group: "Mnemopi",
|
|
1522
1735
|
label: "Mnemopi Auto Recall",
|
|
1523
1736
|
description: "Recall local memories into the first turn of each session",
|
|
1524
1737
|
condition: "mnemopiActive",
|
|
@@ -1529,16 +1742,40 @@ export const SETTINGS_SCHEMA = {
|
|
|
1529
1742
|
default: true,
|
|
1530
1743
|
ui: {
|
|
1531
1744
|
tab: "memory",
|
|
1745
|
+
group: "Mnemopi",
|
|
1532
1746
|
label: "Mnemopi Auto Retain",
|
|
1533
1747
|
description: "Retain completed conversation turns into local Mnemopi memory",
|
|
1534
1748
|
condition: "mnemopiActive",
|
|
1535
1749
|
},
|
|
1536
1750
|
},
|
|
1751
|
+
"mnemopi.polyphonicRecall": {
|
|
1752
|
+
type: "boolean",
|
|
1753
|
+
default: false,
|
|
1754
|
+
ui: {
|
|
1755
|
+
tab: "memory",
|
|
1756
|
+
group: "Mnemopi",
|
|
1757
|
+
label: "Mnemopi Polyphonic Recall",
|
|
1758
|
+
description: "Enable 4-voice recall (vector, graph, fact, temporal) fused with reciprocal rank fusion",
|
|
1759
|
+
condition: "mnemopiActive",
|
|
1760
|
+
},
|
|
1761
|
+
},
|
|
1762
|
+
"mnemopi.enhancedRecall": {
|
|
1763
|
+
type: "boolean",
|
|
1764
|
+
default: false,
|
|
1765
|
+
ui: {
|
|
1766
|
+
tab: "memory",
|
|
1767
|
+
group: "Mnemopi",
|
|
1768
|
+
label: "Mnemopi Enhanced Recall",
|
|
1769
|
+
description: "Enable the tiered query result cache for repeated and similar recall queries",
|
|
1770
|
+
condition: "mnemopiActive",
|
|
1771
|
+
},
|
|
1772
|
+
},
|
|
1537
1773
|
"mnemopi.noEmbeddings": {
|
|
1538
1774
|
type: "boolean",
|
|
1539
1775
|
default: false,
|
|
1540
1776
|
ui: {
|
|
1541
1777
|
tab: "memory",
|
|
1778
|
+
group: "Mnemopi",
|
|
1542
1779
|
label: "Mnemopi Disable Embeddings",
|
|
1543
1780
|
description: "Force deterministic FTS-only recall instead of vector embeddings",
|
|
1544
1781
|
condition: "mnemopiActive",
|
|
@@ -1549,6 +1786,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1549
1786
|
default: undefined,
|
|
1550
1787
|
ui: {
|
|
1551
1788
|
tab: "memory",
|
|
1789
|
+
group: "Mnemopi",
|
|
1552
1790
|
label: "Mnemopi Embedding Model",
|
|
1553
1791
|
description: "Optional embedding model override passed to Mnemopi",
|
|
1554
1792
|
condition: "mnemopiActive",
|
|
@@ -1559,6 +1797,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1559
1797
|
default: undefined,
|
|
1560
1798
|
ui: {
|
|
1561
1799
|
tab: "memory",
|
|
1800
|
+
group: "Mnemopi",
|
|
1562
1801
|
label: "Mnemopi Embedding API URL",
|
|
1563
1802
|
description: "Optional OpenAI-compatible embedding endpoint passed to Mnemopi",
|
|
1564
1803
|
condition: "mnemopiActive",
|
|
@@ -1569,6 +1808,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1569
1808
|
default: undefined,
|
|
1570
1809
|
ui: {
|
|
1571
1810
|
tab: "memory",
|
|
1811
|
+
group: "Mnemopi",
|
|
1572
1812
|
label: "Mnemopi Embedding API Key",
|
|
1573
1813
|
description: "Optional embedding API key passed to Mnemopi",
|
|
1574
1814
|
condition: "mnemopiActive",
|
|
@@ -1580,6 +1820,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1580
1820
|
default: "smol",
|
|
1581
1821
|
ui: {
|
|
1582
1822
|
tab: "memory",
|
|
1823
|
+
group: "Mnemopi",
|
|
1583
1824
|
label: "Mnemopi LLM Mode",
|
|
1584
1825
|
description: "Use no LLM, the configured smol model, or a remote OpenAI-compatible endpoint",
|
|
1585
1826
|
condition: "mnemopiActive",
|
|
@@ -1595,6 +1836,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1595
1836
|
default: undefined,
|
|
1596
1837
|
ui: {
|
|
1597
1838
|
tab: "memory",
|
|
1839
|
+
group: "Mnemopi",
|
|
1598
1840
|
label: "Mnemopi LLM Base URL",
|
|
1599
1841
|
description: "Optional OpenAI-compatible LLM endpoint for Mnemopi remote mode",
|
|
1600
1842
|
condition: "mnemopiActive",
|
|
@@ -1605,6 +1847,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1605
1847
|
default: undefined,
|
|
1606
1848
|
ui: {
|
|
1607
1849
|
tab: "memory",
|
|
1850
|
+
group: "Mnemopi",
|
|
1608
1851
|
label: "Mnemopi LLM API Key",
|
|
1609
1852
|
description: "Optional LLM API key for Mnemopi remote mode",
|
|
1610
1853
|
condition: "mnemopiActive",
|
|
@@ -1615,6 +1858,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1615
1858
|
default: undefined,
|
|
1616
1859
|
ui: {
|
|
1617
1860
|
tab: "memory",
|
|
1861
|
+
group: "Mnemopi",
|
|
1618
1862
|
label: "Mnemopi LLM Model",
|
|
1619
1863
|
description: "Optional LLM model name for Mnemopi remote mode",
|
|
1620
1864
|
condition: "mnemopiActive",
|
|
@@ -1633,6 +1877,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1633
1877
|
default: "http://localhost:8888",
|
|
1634
1878
|
ui: {
|
|
1635
1879
|
tab: "memory",
|
|
1880
|
+
group: "Hindsight",
|
|
1636
1881
|
label: "Hindsight API URL",
|
|
1637
1882
|
description: "Hindsight server URL (Cloud or self-hosted)",
|
|
1638
1883
|
condition: "hindsightActive",
|
|
@@ -1646,6 +1891,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1646
1891
|
default: undefined,
|
|
1647
1892
|
ui: {
|
|
1648
1893
|
tab: "memory",
|
|
1894
|
+
group: "Hindsight",
|
|
1649
1895
|
label: "Hindsight Bank ID",
|
|
1650
1896
|
description: "Memory bank identifier (default: project name)",
|
|
1651
1897
|
condition: "hindsightActive",
|
|
@@ -1659,6 +1905,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1659
1905
|
default: "per-project-tagged",
|
|
1660
1906
|
ui: {
|
|
1661
1907
|
tab: "memory",
|
|
1908
|
+
group: "Hindsight",
|
|
1662
1909
|
label: "Hindsight Scoping",
|
|
1663
1910
|
description:
|
|
1664
1911
|
"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 +1938,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1691
1938
|
default: true,
|
|
1692
1939
|
ui: {
|
|
1693
1940
|
tab: "memory",
|
|
1941
|
+
group: "Hindsight",
|
|
1694
1942
|
label: "Hindsight Auto Recall",
|
|
1695
1943
|
description: "Recall memories on the first turn of each session",
|
|
1696
1944
|
condition: "hindsightActive",
|
|
@@ -1701,6 +1949,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1701
1949
|
default: true,
|
|
1702
1950
|
ui: {
|
|
1703
1951
|
tab: "memory",
|
|
1952
|
+
group: "Hindsight",
|
|
1704
1953
|
label: "Hindsight Auto Retain",
|
|
1705
1954
|
description: "Retain transcript every N turns and at session boundaries",
|
|
1706
1955
|
condition: "hindsightActive",
|
|
@@ -1713,6 +1962,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1713
1962
|
default: "full-session",
|
|
1714
1963
|
ui: {
|
|
1715
1964
|
tab: "memory",
|
|
1965
|
+
group: "Hindsight",
|
|
1716
1966
|
label: "Hindsight Retain Mode",
|
|
1717
1967
|
description: "full-session = upsert one document per session, last-turn = chunked",
|
|
1718
1968
|
options: [
|
|
@@ -1747,6 +1997,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1747
1997
|
default: true,
|
|
1748
1998
|
ui: {
|
|
1749
1999
|
tab: "memory",
|
|
2000
|
+
group: "Hindsight",
|
|
1750
2001
|
label: "Hindsight Mental Models",
|
|
1751
2002
|
description:
|
|
1752
2003
|
"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 +2009,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1758
2009
|
default: true,
|
|
1759
2010
|
ui: {
|
|
1760
2011
|
tab: "memory",
|
|
2012
|
+
group: "Hindsight",
|
|
1761
2013
|
label: "Hindsight Mental Model Auto-Seed",
|
|
1762
2014
|
description:
|
|
1763
2015
|
"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 +2025,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
1773
2025
|
default: true,
|
|
1774
2026
|
ui: {
|
|
1775
2027
|
tab: "context",
|
|
2028
|
+
group: "Rules (TTSR)",
|
|
1776
2029
|
label: "TTSR",
|
|
1777
|
-
description: "
|
|
2030
|
+
description: "Interrupt the agent mid-stream when output matches rule patterns (Time-Traveling Stream Rules)",
|
|
1778
2031
|
},
|
|
1779
2032
|
},
|
|
1780
2033
|
|
|
@@ -1784,6 +2037,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1784
2037
|
default: "discard",
|
|
1785
2038
|
ui: {
|
|
1786
2039
|
tab: "context",
|
|
2040
|
+
group: "Rules (TTSR)",
|
|
1787
2041
|
label: "TTSR Context Mode",
|
|
1788
2042
|
description: "What to do with partial output when TTSR triggers",
|
|
1789
2043
|
},
|
|
@@ -1795,6 +2049,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1795
2049
|
default: "always",
|
|
1796
2050
|
ui: {
|
|
1797
2051
|
tab: "context",
|
|
2052
|
+
group: "Rules (TTSR)",
|
|
1798
2053
|
label: "TTSR Interrupt Mode",
|
|
1799
2054
|
description: "When to interrupt mid-stream vs inject warning after completion",
|
|
1800
2055
|
options: [
|
|
@@ -1812,6 +2067,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1812
2067
|
default: "once",
|
|
1813
2068
|
ui: {
|
|
1814
2069
|
tab: "context",
|
|
2070
|
+
group: "Rules (TTSR)",
|
|
1815
2071
|
label: "TTSR Repeat Mode",
|
|
1816
2072
|
description: "How rules can repeat: once per session or after a message gap",
|
|
1817
2073
|
},
|
|
@@ -1822,6 +2078,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1822
2078
|
default: 10,
|
|
1823
2079
|
ui: {
|
|
1824
2080
|
tab: "context",
|
|
2081
|
+
group: "Rules (TTSR)",
|
|
1825
2082
|
label: "TTSR Repeat Gap",
|
|
1826
2083
|
description: "Messages before a rule can trigger again",
|
|
1827
2084
|
options: [
|
|
@@ -1839,7 +2096,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1839
2096
|
default: true,
|
|
1840
2097
|
ui: {
|
|
1841
2098
|
tab: "context",
|
|
1842
|
-
|
|
2099
|
+
group: "Rules (TTSR)",
|
|
2100
|
+
label: "Built-in Rules",
|
|
1843
2101
|
description: "Load the default rules shipped with the agent (override individually with ttsr.disabledRules)",
|
|
1844
2102
|
},
|
|
1845
2103
|
},
|
|
@@ -1849,6 +2107,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
1849
2107
|
default: [] as string[],
|
|
1850
2108
|
ui: {
|
|
1851
2109
|
tab: "context",
|
|
2110
|
+
group: "Rules (TTSR)",
|
|
1852
2111
|
label: "Disabled Rules",
|
|
1853
2112
|
description: "Rule names to ignore entirely (applies to bundled defaults and your own rules)",
|
|
1854
2113
|
},
|
|
@@ -1864,7 +2123,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1864
2123
|
values: EDIT_MODES,
|
|
1865
2124
|
default: "hashline",
|
|
1866
2125
|
ui: {
|
|
1867
|
-
tab: "
|
|
2126
|
+
tab: "files",
|
|
2127
|
+
group: "Editing",
|
|
1868
2128
|
label: "Edit Mode",
|
|
1869
2129
|
description: "Select the edit tool variant (replace, patch, hashline, or apply_patch)",
|
|
1870
2130
|
},
|
|
@@ -1874,7 +2134,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1874
2134
|
type: "boolean",
|
|
1875
2135
|
default: true,
|
|
1876
2136
|
ui: {
|
|
1877
|
-
tab: "
|
|
2137
|
+
tab: "files",
|
|
2138
|
+
group: "Editing",
|
|
1878
2139
|
label: "Fuzzy Match",
|
|
1879
2140
|
description: "Accept high-confidence fuzzy matches for whitespace differences",
|
|
1880
2141
|
},
|
|
@@ -1884,9 +2145,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
1884
2145
|
type: "number",
|
|
1885
2146
|
default: 0.95,
|
|
1886
2147
|
ui: {
|
|
1887
|
-
tab: "
|
|
2148
|
+
tab: "files",
|
|
2149
|
+
group: "Editing",
|
|
1888
2150
|
label: "Fuzzy Match Threshold",
|
|
1889
|
-
description: "Similarity threshold for fuzzy matches",
|
|
2151
|
+
description: "Similarity threshold (0-1) for accepting fuzzy matches",
|
|
1890
2152
|
options: [
|
|
1891
2153
|
{ value: "0.85", label: "0.85", description: "Lenient" },
|
|
1892
2154
|
{ value: "0.90", label: "0.90", description: "Moderate" },
|
|
@@ -1900,7 +2162,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1900
2162
|
type: "boolean",
|
|
1901
2163
|
default: false,
|
|
1902
2164
|
ui: {
|
|
1903
|
-
tab: "
|
|
2165
|
+
tab: "files",
|
|
2166
|
+
group: "Editing",
|
|
1904
2167
|
label: "Abort on Failed Preview",
|
|
1905
2168
|
description: "Abort streaming edit tool calls when patch preview fails",
|
|
1906
2169
|
},
|
|
@@ -1910,7 +2173,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1910
2173
|
type: "boolean",
|
|
1911
2174
|
default: true,
|
|
1912
2175
|
ui: {
|
|
1913
|
-
tab: "
|
|
2176
|
+
tab: "files",
|
|
2177
|
+
group: "Editing",
|
|
1914
2178
|
label: "Block Auto-Generated Files",
|
|
1915
2179
|
description: "Prevent editing of files that appear to be auto-generated (protoc, sqlc, swagger, etc.)",
|
|
1916
2180
|
},
|
|
@@ -1920,7 +2184,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1920
2184
|
type: "boolean",
|
|
1921
2185
|
default: false,
|
|
1922
2186
|
ui: {
|
|
1923
|
-
tab: "
|
|
2187
|
+
tab: "files",
|
|
2188
|
+
group: "Reading",
|
|
1924
2189
|
label: "Line Numbers",
|
|
1925
2190
|
description: "Prepend line numbers to read tool output by default",
|
|
1926
2191
|
},
|
|
@@ -1930,7 +2195,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1930
2195
|
type: "boolean",
|
|
1931
2196
|
default: true,
|
|
1932
2197
|
ui: {
|
|
1933
|
-
tab: "
|
|
2198
|
+
tab: "files",
|
|
2199
|
+
group: "Reading",
|
|
1934
2200
|
label: "Hash Lines",
|
|
1935
2201
|
description:
|
|
1936
2202
|
"Include snapshot-tag headers and line numbers in read output for hashline edit mode ([PATH#TAG] plus LINE:content)",
|
|
@@ -1941,7 +2207,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1941
2207
|
type: "number",
|
|
1942
2208
|
default: 300,
|
|
1943
2209
|
ui: {
|
|
1944
|
-
tab: "
|
|
2210
|
+
tab: "files",
|
|
2211
|
+
group: "Reading",
|
|
1945
2212
|
label: "Default Read Limit",
|
|
1946
2213
|
description: "Default number of lines returned when agent calls read without a limit",
|
|
1947
2214
|
options: [
|
|
@@ -1958,7 +2225,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1958
2225
|
type: "boolean",
|
|
1959
2226
|
default: true,
|
|
1960
2227
|
ui: {
|
|
1961
|
-
tab: "
|
|
2228
|
+
tab: "files",
|
|
2229
|
+
group: "Read Summaries",
|
|
1962
2230
|
label: "Read Summaries",
|
|
1963
2231
|
description: "Return structural code summaries when read is called without an explicit selector",
|
|
1964
2232
|
},
|
|
@@ -1968,7 +2236,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1968
2236
|
type: "boolean",
|
|
1969
2237
|
default: false,
|
|
1970
2238
|
ui: {
|
|
1971
|
-
tab: "
|
|
2239
|
+
tab: "files",
|
|
2240
|
+
group: "Read Summaries",
|
|
1972
2241
|
label: "Prose Summaries",
|
|
1973
2242
|
description: "Return structural summaries for Markdown and plain text reads",
|
|
1974
2243
|
},
|
|
@@ -1978,7 +2247,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1978
2247
|
type: "number",
|
|
1979
2248
|
default: 4,
|
|
1980
2249
|
ui: {
|
|
1981
|
-
tab: "
|
|
2250
|
+
tab: "files",
|
|
2251
|
+
group: "Read Summaries",
|
|
1982
2252
|
label: "Read Summary Body Lines",
|
|
1983
2253
|
description: "Minimum multiline body or literal length before read summaries collapse it",
|
|
1984
2254
|
},
|
|
@@ -1988,7 +2258,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1988
2258
|
type: "number",
|
|
1989
2259
|
default: 6,
|
|
1990
2260
|
ui: {
|
|
1991
|
-
tab: "
|
|
2261
|
+
tab: "files",
|
|
2262
|
+
group: "Read Summaries",
|
|
1992
2263
|
label: "Read Summary Comment Lines",
|
|
1993
2264
|
description: "Minimum multiline block comment length before read summaries collapse it",
|
|
1994
2265
|
},
|
|
@@ -1998,7 +2269,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
1998
2269
|
type: "number",
|
|
1999
2270
|
default: 100,
|
|
2000
2271
|
ui: {
|
|
2001
|
-
tab: "
|
|
2272
|
+
tab: "files",
|
|
2273
|
+
group: "Read Summaries",
|
|
2002
2274
|
label: "Read Summary Minimum File Length",
|
|
2003
2275
|
description: "Files with fewer total lines are read verbatim instead of structurally summarized",
|
|
2004
2276
|
},
|
|
@@ -2008,7 +2280,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2008
2280
|
type: "number",
|
|
2009
2281
|
default: 50,
|
|
2010
2282
|
ui: {
|
|
2011
|
-
tab: "
|
|
2283
|
+
tab: "files",
|
|
2284
|
+
group: "Read Summaries",
|
|
2012
2285
|
label: "Read Summary Unfold Target",
|
|
2013
2286
|
description:
|
|
2014
2287
|
"BFS-unfold elidable spans until the summary is at least this many visible lines. 0 keeps only the outermost elisions.",
|
|
@@ -2019,7 +2292,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2019
2292
|
type: "number",
|
|
2020
2293
|
default: 100,
|
|
2021
2294
|
ui: {
|
|
2022
|
-
tab: "
|
|
2295
|
+
tab: "files",
|
|
2296
|
+
group: "Read Summaries",
|
|
2023
2297
|
label: "Read Summary Unfold Ceiling",
|
|
2024
2298
|
description:
|
|
2025
2299
|
"Hard ceiling on summary size while BFS-unfolding. An unfold that would exceed this is reverted and unfolding stops.",
|
|
@@ -2030,7 +2304,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2030
2304
|
type: "boolean",
|
|
2031
2305
|
default: false,
|
|
2032
2306
|
ui: {
|
|
2033
|
-
tab: "
|
|
2307
|
+
tab: "files",
|
|
2308
|
+
group: "Reading",
|
|
2034
2309
|
label: "Inline Read Previews",
|
|
2035
2310
|
description: "Render read tool results inline in the transcript instead of summary rows",
|
|
2036
2311
|
},
|
|
@@ -2040,14 +2315,20 @@ export const SETTINGS_SCHEMA = {
|
|
|
2040
2315
|
"lsp.enabled": {
|
|
2041
2316
|
type: "boolean",
|
|
2042
2317
|
default: true,
|
|
2043
|
-
ui: {
|
|
2318
|
+
ui: {
|
|
2319
|
+
tab: "files",
|
|
2320
|
+
group: "LSP",
|
|
2321
|
+
label: "LSP",
|
|
2322
|
+
description: "Enable the lsp tool for code intelligence (definitions, references, diagnostics, rename)",
|
|
2323
|
+
},
|
|
2044
2324
|
},
|
|
2045
2325
|
|
|
2046
2326
|
"lsp.lazy": {
|
|
2047
2327
|
type: "boolean",
|
|
2048
2328
|
default: true,
|
|
2049
2329
|
ui: {
|
|
2050
|
-
tab: "
|
|
2330
|
+
tab: "files",
|
|
2331
|
+
group: "LSP",
|
|
2051
2332
|
label: "Lazy LSP Startup",
|
|
2052
2333
|
description:
|
|
2053
2334
|
"Start language servers on first use (lsp tool or editing a matching file type) instead of at session startup",
|
|
@@ -2058,7 +2339,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2058
2339
|
type: "boolean",
|
|
2059
2340
|
default: false,
|
|
2060
2341
|
ui: {
|
|
2061
|
-
tab: "
|
|
2342
|
+
tab: "files",
|
|
2343
|
+
group: "LSP",
|
|
2062
2344
|
label: "Format on Write",
|
|
2063
2345
|
description: "Automatically format code files using LSP after writing",
|
|
2064
2346
|
},
|
|
@@ -2068,7 +2350,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2068
2350
|
type: "boolean",
|
|
2069
2351
|
default: true,
|
|
2070
2352
|
ui: {
|
|
2071
|
-
tab: "
|
|
2353
|
+
tab: "files",
|
|
2354
|
+
group: "LSP",
|
|
2072
2355
|
label: "Diagnostics on Write",
|
|
2073
2356
|
description: "Return LSP diagnostics after writing code files",
|
|
2074
2357
|
},
|
|
@@ -2078,7 +2361,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2078
2361
|
type: "boolean",
|
|
2079
2362
|
default: false,
|
|
2080
2363
|
ui: {
|
|
2081
|
-
tab: "
|
|
2364
|
+
tab: "files",
|
|
2365
|
+
group: "LSP",
|
|
2082
2366
|
label: "Diagnostics on Edit",
|
|
2083
2367
|
description: "Return LSP diagnostics after editing code files",
|
|
2084
2368
|
},
|
|
@@ -2088,17 +2372,45 @@ export const SETTINGS_SCHEMA = {
|
|
|
2088
2372
|
type: "boolean",
|
|
2089
2373
|
default: true,
|
|
2090
2374
|
ui: {
|
|
2091
|
-
tab: "
|
|
2375
|
+
tab: "files",
|
|
2376
|
+
group: "LSP",
|
|
2092
2377
|
label: "Deduplicate Diagnostics",
|
|
2093
2378
|
description: "Suppress post-edit LSP diagnostics already shown for a file; only surface new or changed ones",
|
|
2094
2379
|
},
|
|
2095
2380
|
},
|
|
2096
2381
|
|
|
2382
|
+
"bash.enabled": {
|
|
2383
|
+
type: "boolean",
|
|
2384
|
+
default: true,
|
|
2385
|
+
ui: {
|
|
2386
|
+
tab: "shell",
|
|
2387
|
+
group: "Bash",
|
|
2388
|
+
label: "Bash",
|
|
2389
|
+
description: "Enable the bash tool for shell command execution",
|
|
2390
|
+
},
|
|
2391
|
+
},
|
|
2392
|
+
|
|
2393
|
+
"bash.autoBackground.enabled": {
|
|
2394
|
+
type: "boolean",
|
|
2395
|
+
default: false,
|
|
2396
|
+
ui: {
|
|
2397
|
+
tab: "shell",
|
|
2398
|
+
group: "Bash",
|
|
2399
|
+
label: "Bash Auto-Background",
|
|
2400
|
+
description: "Automatically background long-running bash commands and deliver the result later",
|
|
2401
|
+
},
|
|
2402
|
+
},
|
|
2403
|
+
|
|
2097
2404
|
// Bash interceptor
|
|
2098
2405
|
"bashInterceptor.enabled": {
|
|
2099
2406
|
type: "boolean",
|
|
2100
2407
|
default: false,
|
|
2101
|
-
ui: {
|
|
2408
|
+
ui: {
|
|
2409
|
+
tab: "shell",
|
|
2410
|
+
group: "Bash",
|
|
2411
|
+
label: "Bash Interceptor",
|
|
2412
|
+
description: "Block shell commands that have dedicated tools",
|
|
2413
|
+
},
|
|
2102
2414
|
},
|
|
2103
2415
|
"bashInterceptor.patterns": { type: "array", default: DEFAULT_BASH_INTERCEPTOR_RULES },
|
|
2104
2416
|
|
|
@@ -2106,8 +2418,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2106
2418
|
type: "boolean",
|
|
2107
2419
|
default: true,
|
|
2108
2420
|
ui: {
|
|
2109
|
-
tab: "
|
|
2110
|
-
|
|
2421
|
+
tab: "shell",
|
|
2422
|
+
group: "Bash",
|
|
2423
|
+
label: "Strip head/tail Pipes",
|
|
2111
2424
|
description:
|
|
2112
2425
|
"Silently drop trailing `| head`/`| tail` pipes from single-line bash commands. Output is already truncated automatically.",
|
|
2113
2426
|
},
|
|
@@ -2118,7 +2431,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2118
2431
|
type: "boolean",
|
|
2119
2432
|
default: true,
|
|
2120
2433
|
ui: {
|
|
2121
|
-
tab: "
|
|
2434
|
+
tab: "shell",
|
|
2435
|
+
group: "Bash",
|
|
2122
2436
|
label: "Shell Minimizer",
|
|
2123
2437
|
description: "Compress verbose shell output (git, npm, cargo, etc.) before returning it to the agent",
|
|
2124
2438
|
},
|
|
@@ -2138,7 +2452,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2138
2452
|
values: ["default", "aggressive"] as const,
|
|
2139
2453
|
default: "default",
|
|
2140
2454
|
ui: {
|
|
2141
|
-
tab: "
|
|
2455
|
+
tab: "shell",
|
|
2456
|
+
group: "Bash",
|
|
2142
2457
|
label: "Shell Minimizer Source Outline",
|
|
2143
2458
|
description: "Source outline mode for cat/read of source files: default or aggressive",
|
|
2144
2459
|
},
|
|
@@ -2153,9 +2468,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2153
2468
|
type: "boolean",
|
|
2154
2469
|
default: true,
|
|
2155
2470
|
ui: {
|
|
2156
|
-
tab: "
|
|
2157
|
-
|
|
2158
|
-
|
|
2471
|
+
tab: "shell",
|
|
2472
|
+
group: "Eval & Python",
|
|
2473
|
+
label: "Python Eval Backend",
|
|
2474
|
+
description: "Allow the eval tool to dispatch Python cells to the IPython kernel",
|
|
2159
2475
|
},
|
|
2160
2476
|
},
|
|
2161
2477
|
|
|
@@ -2163,9 +2479,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2163
2479
|
type: "boolean",
|
|
2164
2480
|
default: true,
|
|
2165
2481
|
ui: {
|
|
2166
|
-
tab: "
|
|
2167
|
-
|
|
2168
|
-
|
|
2482
|
+
tab: "shell",
|
|
2483
|
+
group: "Eval & Python",
|
|
2484
|
+
label: "JavaScript Eval Backend",
|
|
2485
|
+
description: "Allow the eval tool to dispatch JavaScript cells to the in-process runtime",
|
|
2169
2486
|
},
|
|
2170
2487
|
},
|
|
2171
2488
|
|
|
@@ -2175,16 +2492,18 @@ export const SETTINGS_SCHEMA = {
|
|
|
2175
2492
|
values: ["session", "per-call"] as const,
|
|
2176
2493
|
default: "session",
|
|
2177
2494
|
ui: {
|
|
2178
|
-
tab: "
|
|
2495
|
+
tab: "shell",
|
|
2496
|
+
group: "Eval & Python",
|
|
2179
2497
|
label: "Python Kernel Mode",
|
|
2180
|
-
description: "
|
|
2498
|
+
description: "Keep the IPython kernel alive across eval calls or start fresh each time",
|
|
2181
2499
|
},
|
|
2182
2500
|
},
|
|
2183
2501
|
"python.interpreter": {
|
|
2184
2502
|
type: "string",
|
|
2185
2503
|
default: "",
|
|
2186
2504
|
ui: {
|
|
2187
|
-
tab: "
|
|
2505
|
+
tab: "shell",
|
|
2506
|
+
group: "Eval & Python",
|
|
2188
2507
|
label: "Python Interpreter",
|
|
2189
2508
|
description:
|
|
2190
2509
|
"Optional path to an exact Python executable. When set, automatic Python runtime discovery is skipped.",
|
|
@@ -2200,7 +2519,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2200
2519
|
type: "record",
|
|
2201
2520
|
default: {},
|
|
2202
2521
|
ui: {
|
|
2203
|
-
tab: "
|
|
2522
|
+
tab: "interaction",
|
|
2523
|
+
group: "Approvals",
|
|
2204
2524
|
label: "Tool Approval Policies",
|
|
2205
2525
|
description:
|
|
2206
2526
|
"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 +2537,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2217
2537
|
default: "yolo",
|
|
2218
2538
|
ui: {
|
|
2219
2539
|
tab: "interaction",
|
|
2540
|
+
group: "Approvals",
|
|
2220
2541
|
label: "Tool Approval",
|
|
2221
2542
|
description:
|
|
2222
|
-
"Default approval
|
|
2543
|
+
"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
2544
|
options: [
|
|
2224
2545
|
{
|
|
2225
2546
|
value: "always-ask",
|
|
@@ -2246,13 +2567,23 @@ export const SETTINGS_SCHEMA = {
|
|
|
2246
2567
|
"todo.enabled": {
|
|
2247
2568
|
type: "boolean",
|
|
2248
2569
|
default: true,
|
|
2249
|
-
ui: {
|
|
2570
|
+
ui: {
|
|
2571
|
+
tab: "tools",
|
|
2572
|
+
group: "Available Tools",
|
|
2573
|
+
label: "Todos",
|
|
2574
|
+
description: "Enable the todo tool for task tracking",
|
|
2575
|
+
},
|
|
2250
2576
|
},
|
|
2251
2577
|
|
|
2252
2578
|
"todo.reminders": {
|
|
2253
2579
|
type: "boolean",
|
|
2254
2580
|
default: true,
|
|
2255
|
-
ui: {
|
|
2581
|
+
ui: {
|
|
2582
|
+
tab: "tools",
|
|
2583
|
+
group: "Todos",
|
|
2584
|
+
label: "Todo Reminders",
|
|
2585
|
+
description: "Remind the agent to complete todos before stopping",
|
|
2586
|
+
},
|
|
2256
2587
|
},
|
|
2257
2588
|
|
|
2258
2589
|
"todo.reminders.max": {
|
|
@@ -2260,8 +2591,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2260
2591
|
default: 3,
|
|
2261
2592
|
ui: {
|
|
2262
2593
|
tab: "tools",
|
|
2594
|
+
group: "Todos",
|
|
2263
2595
|
label: "Todo Reminder Limit",
|
|
2264
|
-
description: "Maximum
|
|
2596
|
+
description: "Maximum number of todo reminders before giving up",
|
|
2265
2597
|
options: [
|
|
2266
2598
|
{ value: "1", label: "1 reminder" },
|
|
2267
2599
|
{ value: "2", label: "2 reminders" },
|
|
@@ -2276,28 +2608,33 @@ export const SETTINGS_SCHEMA = {
|
|
|
2276
2608
|
default: false,
|
|
2277
2609
|
ui: {
|
|
2278
2610
|
tab: "tools",
|
|
2611
|
+
group: "Todos",
|
|
2279
2612
|
label: "Create Todos Automatically",
|
|
2280
2613
|
description: "Automatically create a comprehensive todo list after the first message",
|
|
2281
2614
|
},
|
|
2282
2615
|
},
|
|
2283
2616
|
|
|
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
2617
|
// Search and AST tools
|
|
2291
2618
|
"find.enabled": {
|
|
2292
2619
|
type: "boolean",
|
|
2293
2620
|
default: true,
|
|
2294
|
-
ui: {
|
|
2621
|
+
ui: {
|
|
2622
|
+
tab: "tools",
|
|
2623
|
+
group: "Available Tools",
|
|
2624
|
+
label: "Find",
|
|
2625
|
+
description: "Enable the find tool for glob-based file lookup",
|
|
2626
|
+
},
|
|
2295
2627
|
},
|
|
2296
2628
|
|
|
2297
2629
|
"search.enabled": {
|
|
2298
2630
|
type: "boolean",
|
|
2299
2631
|
default: true,
|
|
2300
|
-
ui: {
|
|
2632
|
+
ui: {
|
|
2633
|
+
tab: "tools",
|
|
2634
|
+
group: "Available Tools",
|
|
2635
|
+
label: "Search",
|
|
2636
|
+
description: "Enable the search tool for regex content search",
|
|
2637
|
+
},
|
|
2301
2638
|
},
|
|
2302
2639
|
|
|
2303
2640
|
"search.contextBefore": {
|
|
@@ -2305,6 +2642,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2305
2642
|
default: 1,
|
|
2306
2643
|
ui: {
|
|
2307
2644
|
tab: "tools",
|
|
2645
|
+
group: "Search & Browser",
|
|
2308
2646
|
label: "Search Context Before",
|
|
2309
2647
|
description: "Lines of context before each search match",
|
|
2310
2648
|
options: [
|
|
@@ -2322,6 +2660,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2322
2660
|
default: 3,
|
|
2323
2661
|
ui: {
|
|
2324
2662
|
tab: "tools",
|
|
2663
|
+
group: "Search & Browser",
|
|
2325
2664
|
label: "Search Context After",
|
|
2326
2665
|
description: "Lines of context after each search match",
|
|
2327
2666
|
options: [
|
|
@@ -2340,6 +2679,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2340
2679
|
default: true,
|
|
2341
2680
|
ui: {
|
|
2342
2681
|
tab: "tools",
|
|
2682
|
+
group: "Available Tools",
|
|
2343
2683
|
label: "AST Grep",
|
|
2344
2684
|
description: "Enable the ast_grep tool for structural AST search",
|
|
2345
2685
|
},
|
|
@@ -2350,28 +2690,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2350
2690
|
default: true,
|
|
2351
2691
|
ui: {
|
|
2352
2692
|
tab: "tools",
|
|
2693
|
+
group: "Available Tools",
|
|
2353
2694
|
label: "AST Edit",
|
|
2354
2695
|
description: "Enable the ast_edit tool for structural AST rewrites",
|
|
2355
2696
|
},
|
|
2356
2697
|
},
|
|
2357
2698
|
|
|
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
2699
|
// Optional tools
|
|
2376
2700
|
|
|
2377
2701
|
"renderMermaid.enabled": {
|
|
@@ -2379,6 +2703,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2379
2703
|
default: false,
|
|
2380
2704
|
ui: {
|
|
2381
2705
|
tab: "tools",
|
|
2706
|
+
group: "Available Tools",
|
|
2382
2707
|
label: "Render Mermaid",
|
|
2383
2708
|
description: "Enable the render_mermaid tool for Mermaid-to-ASCII rendering",
|
|
2384
2709
|
},
|
|
@@ -2389,6 +2714,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2389
2714
|
default: true,
|
|
2390
2715
|
ui: {
|
|
2391
2716
|
tab: "tools",
|
|
2717
|
+
group: "Available Tools",
|
|
2392
2718
|
label: "Debug",
|
|
2393
2719
|
description: "Enable the debug tool for DAP-based debugging",
|
|
2394
2720
|
},
|
|
@@ -2399,6 +2725,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2399
2725
|
default: false,
|
|
2400
2726
|
ui: {
|
|
2401
2727
|
tab: "tools",
|
|
2728
|
+
group: "Available Tools",
|
|
2402
2729
|
label: "Text-to-Speech",
|
|
2403
2730
|
description: "Enable the tts tool for xAI Grok Voice speech synthesis",
|
|
2404
2731
|
},
|
|
@@ -2409,6 +2736,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2409
2736
|
default: false,
|
|
2410
2737
|
ui: {
|
|
2411
2738
|
tab: "tools",
|
|
2739
|
+
group: "Available Tools",
|
|
2412
2740
|
label: "Inspect Image",
|
|
2413
2741
|
description: "Enable the inspect_image tool, delegating image understanding to a vision-capable model",
|
|
2414
2742
|
},
|
|
@@ -2419,6 +2747,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2419
2747
|
default: false,
|
|
2420
2748
|
ui: {
|
|
2421
2749
|
tab: "tools",
|
|
2750
|
+
group: "Available Tools",
|
|
2422
2751
|
label: "Checkpoint/Rewind",
|
|
2423
2752
|
description: "Enable the checkpoint and rewind tools for context checkpointing",
|
|
2424
2753
|
},
|
|
@@ -2428,7 +2757,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2428
2757
|
"fetch.enabled": {
|
|
2429
2758
|
type: "boolean",
|
|
2430
2759
|
default: true,
|
|
2431
|
-
ui: {
|
|
2760
|
+
ui: {
|
|
2761
|
+
tab: "tools",
|
|
2762
|
+
group: "Available Tools",
|
|
2763
|
+
label: "Read URLs",
|
|
2764
|
+
description: "Allow the read tool to fetch and process URLs",
|
|
2765
|
+
},
|
|
2432
2766
|
},
|
|
2433
2767
|
|
|
2434
2768
|
"vault.enabled": {
|
|
@@ -2436,6 +2770,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2436
2770
|
default: false,
|
|
2437
2771
|
ui: {
|
|
2438
2772
|
tab: "tools",
|
|
2773
|
+
group: "Available Tools",
|
|
2439
2774
|
label: "Obsidian Vault",
|
|
2440
2775
|
description:
|
|
2441
2776
|
"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 +2782,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2447
2782
|
default: false,
|
|
2448
2783
|
ui: {
|
|
2449
2784
|
tab: "tools",
|
|
2785
|
+
group: "Available Tools",
|
|
2450
2786
|
label: "GitHub CLI",
|
|
2451
2787
|
description:
|
|
2452
2788
|
"Enable the github tool (op-based dispatch for repository, issue, pull request, diff, search, checkout, push, and Actions watch workflows)",
|
|
@@ -2458,7 +2794,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2458
2794
|
default: true,
|
|
2459
2795
|
ui: {
|
|
2460
2796
|
tab: "tools",
|
|
2461
|
-
|
|
2797
|
+
group: "GitHub",
|
|
2798
|
+
label: "GitHub View Cache",
|
|
2462
2799
|
description: "Cache rendered issue/PR view output in ~/.omp/cache/github-cache.db so repeated reads are free",
|
|
2463
2800
|
},
|
|
2464
2801
|
},
|
|
@@ -2468,8 +2805,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2468
2805
|
default: 300,
|
|
2469
2806
|
ui: {
|
|
2470
2807
|
tab: "tools",
|
|
2471
|
-
|
|
2472
|
-
|
|
2808
|
+
group: "GitHub",
|
|
2809
|
+
label: "GitHub Cache Soft TTL",
|
|
2810
|
+
description:
|
|
2811
|
+
"Within this window, cached issue/PR view rows are returned directly (seconds; default 5 minutes)",
|
|
2473
2812
|
},
|
|
2474
2813
|
},
|
|
2475
2814
|
|
|
@@ -2478,16 +2817,22 @@ export const SETTINGS_SCHEMA = {
|
|
|
2478
2817
|
default: 604800,
|
|
2479
2818
|
ui: {
|
|
2480
2819
|
tab: "tools",
|
|
2481
|
-
|
|
2820
|
+
group: "GitHub",
|
|
2821
|
+
label: "GitHub Cache Hard TTL",
|
|
2482
2822
|
description:
|
|
2483
|
-
"Past soft TTL
|
|
2823
|
+
"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
2824
|
},
|
|
2485
2825
|
},
|
|
2486
2826
|
|
|
2487
2827
|
"web_search.enabled": {
|
|
2488
2828
|
type: "boolean",
|
|
2489
2829
|
default: true,
|
|
2490
|
-
ui: {
|
|
2830
|
+
ui: {
|
|
2831
|
+
tab: "tools",
|
|
2832
|
+
group: "Available Tools",
|
|
2833
|
+
label: "Web Search",
|
|
2834
|
+
description: "Enable the web_search tool for live web results",
|
|
2835
|
+
},
|
|
2491
2836
|
},
|
|
2492
2837
|
|
|
2493
2838
|
"browser.enabled": {
|
|
@@ -2495,8 +2840,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2495
2840
|
default: true,
|
|
2496
2841
|
ui: {
|
|
2497
2842
|
tab: "tools",
|
|
2843
|
+
group: "Available Tools",
|
|
2498
2844
|
label: "Browser",
|
|
2499
|
-
description: "Enable the browser tool (
|
|
2845
|
+
description: "Enable the browser tool for scripted Chromium automation (puppeteer)",
|
|
2500
2846
|
},
|
|
2501
2847
|
},
|
|
2502
2848
|
|
|
@@ -2505,6 +2851,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2505
2851
|
default: true,
|
|
2506
2852
|
ui: {
|
|
2507
2853
|
tab: "tools",
|
|
2854
|
+
group: "Search & Browser",
|
|
2508
2855
|
label: "Headless Browser",
|
|
2509
2856
|
description: "Launch browser in headless mode (disable to show browser UI)",
|
|
2510
2857
|
},
|
|
@@ -2514,7 +2861,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2514
2861
|
default: undefined,
|
|
2515
2862
|
ui: {
|
|
2516
2863
|
tab: "tools",
|
|
2517
|
-
|
|
2864
|
+
group: "Search & Browser",
|
|
2865
|
+
label: "Screenshot Directory",
|
|
2518
2866
|
description:
|
|
2519
2867
|
"Directory to save screenshots. If unset, screenshots go to a temp file. Supports ~. Examples: ~/Downloads, ~/Desktop, /sdcard/Download (Android)",
|
|
2520
2868
|
},
|
|
@@ -2526,6 +2874,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2526
2874
|
default: true,
|
|
2527
2875
|
ui: {
|
|
2528
2876
|
tab: "tools",
|
|
2877
|
+
group: "Execution",
|
|
2529
2878
|
label: "Intent Tracing",
|
|
2530
2879
|
description: "Ask the agent to describe the intent of each tool call before executing it",
|
|
2531
2880
|
},
|
|
@@ -2536,6 +2885,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2536
2885
|
default: 0,
|
|
2537
2886
|
ui: {
|
|
2538
2887
|
tab: "tools",
|
|
2888
|
+
group: "Execution",
|
|
2539
2889
|
label: "Max Tool Timeout",
|
|
2540
2890
|
description: "Maximum timeout in seconds the agent can set for any tool (0 = no limit)",
|
|
2541
2891
|
options: [
|
|
@@ -2555,6 +2905,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2555
2905
|
default: true,
|
|
2556
2906
|
ui: {
|
|
2557
2907
|
tab: "tools",
|
|
2908
|
+
group: "Execution",
|
|
2558
2909
|
label: "Async Execution",
|
|
2559
2910
|
description: "Enable async bash commands and background task execution",
|
|
2560
2911
|
},
|
|
@@ -2571,6 +2922,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2571
2922
|
default: "30s",
|
|
2572
2923
|
ui: {
|
|
2573
2924
|
tab: "tools",
|
|
2925
|
+
group: "Execution",
|
|
2574
2926
|
label: "Poll Wait Duration",
|
|
2575
2927
|
description: "How long the poll tool waits for background job updates before returning the current state",
|
|
2576
2928
|
options: [
|
|
@@ -2583,13 +2935,21 @@ export const SETTINGS_SCHEMA = {
|
|
|
2583
2935
|
},
|
|
2584
2936
|
},
|
|
2585
2937
|
|
|
2586
|
-
"
|
|
2587
|
-
type: "
|
|
2588
|
-
default:
|
|
2938
|
+
"irc.timeoutMs": {
|
|
2939
|
+
type: "number",
|
|
2940
|
+
default: 120_000,
|
|
2589
2941
|
ui: {
|
|
2590
2942
|
tab: "tools",
|
|
2591
|
-
|
|
2592
|
-
|
|
2943
|
+
group: "Execution",
|
|
2944
|
+
label: "IRC Timeout",
|
|
2945
|
+
description: "Default timeout for irc wait (and send await:true) in milliseconds; 0 disables the timeout",
|
|
2946
|
+
options: [
|
|
2947
|
+
{ value: "0", label: "Disabled" },
|
|
2948
|
+
{ value: "30000", label: "30 seconds" },
|
|
2949
|
+
{ value: "60000", label: "1 minute" },
|
|
2950
|
+
{ value: "120000", label: "2 minutes" },
|
|
2951
|
+
{ value: "300000", label: "5 minutes" },
|
|
2952
|
+
],
|
|
2593
2953
|
},
|
|
2594
2954
|
},
|
|
2595
2955
|
|
|
@@ -2605,6 +2965,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2605
2965
|
default: "auto",
|
|
2606
2966
|
ui: {
|
|
2607
2967
|
tab: "tools",
|
|
2968
|
+
group: "Discovery & MCP",
|
|
2608
2969
|
label: "Tool Discovery",
|
|
2609
2970
|
description:
|
|
2610
2971
|
"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 +2977,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2616
2977
|
default: [] as string[],
|
|
2617
2978
|
ui: {
|
|
2618
2979
|
tab: "tools",
|
|
2980
|
+
group: "Discovery & MCP",
|
|
2619
2981
|
label: "Essential Tools Override",
|
|
2620
2982
|
description:
|
|
2621
2983
|
"Override the always-loaded built-in tools (default: read, bash, edit). Leave empty to use defaults.",
|
|
@@ -2626,7 +2988,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2626
2988
|
"mcp.enableProjectConfig": {
|
|
2627
2989
|
type: "boolean",
|
|
2628
2990
|
default: true,
|
|
2629
|
-
ui: {
|
|
2991
|
+
ui: {
|
|
2992
|
+
tab: "tools",
|
|
2993
|
+
group: "Discovery & MCP",
|
|
2994
|
+
label: "MCP Project Config",
|
|
2995
|
+
description: "Load .mcp.json/mcp.json from project root",
|
|
2996
|
+
},
|
|
2630
2997
|
},
|
|
2631
2998
|
|
|
2632
2999
|
"mcp.discoveryMode": {
|
|
@@ -2634,6 +3001,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2634
3001
|
default: false,
|
|
2635
3002
|
ui: {
|
|
2636
3003
|
tab: "tools",
|
|
3004
|
+
group: "Discovery & MCP",
|
|
2637
3005
|
label: "MCP Tool Discovery",
|
|
2638
3006
|
description: "Hide MCP tools by default and expose them through a tool discovery tool",
|
|
2639
3007
|
},
|
|
@@ -2644,6 +3012,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2644
3012
|
default: [] as string[],
|
|
2645
3013
|
ui: {
|
|
2646
3014
|
tab: "tools",
|
|
3015
|
+
group: "Discovery & MCP",
|
|
2647
3016
|
label: "MCP Discovery Default Servers",
|
|
2648
3017
|
description: "Keep MCP tools from these servers visible while discovery mode hides other MCP tools",
|
|
2649
3018
|
},
|
|
@@ -2654,6 +3023,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2654
3023
|
default: false,
|
|
2655
3024
|
ui: {
|
|
2656
3025
|
tab: "tools",
|
|
3026
|
+
group: "Discovery & MCP",
|
|
2657
3027
|
label: "MCP Update Injection",
|
|
2658
3028
|
description: "Inject MCP resource updates into the agent conversation",
|
|
2659
3029
|
},
|
|
@@ -2664,8 +3034,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2664
3034
|
default: 500,
|
|
2665
3035
|
ui: {
|
|
2666
3036
|
tab: "tools",
|
|
3037
|
+
group: "Discovery & MCP",
|
|
2667
3038
|
label: "MCP Notification Debounce",
|
|
2668
|
-
description:
|
|
3039
|
+
description:
|
|
3040
|
+
"Debounce window in milliseconds for MCP resource updates before injecting them into the conversation",
|
|
2669
3041
|
},
|
|
2670
3042
|
},
|
|
2671
3043
|
|
|
@@ -2679,6 +3051,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2679
3051
|
default: true,
|
|
2680
3052
|
ui: {
|
|
2681
3053
|
tab: "tasks",
|
|
3054
|
+
group: "Modes",
|
|
2682
3055
|
label: "Plan Mode",
|
|
2683
3056
|
description: "Enable plan mode for read-only exploration and planning before execution",
|
|
2684
3057
|
},
|
|
@@ -2689,6 +3062,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2689
3062
|
default: true,
|
|
2690
3063
|
ui: {
|
|
2691
3064
|
tab: "tasks",
|
|
3065
|
+
group: "Modes",
|
|
2692
3066
|
label: "Goal Mode",
|
|
2693
3067
|
description: "Enable per-session goal mode and the hidden goal tool",
|
|
2694
3068
|
},
|
|
@@ -2699,7 +3073,8 @@ export const SETTINGS_SCHEMA = {
|
|
|
2699
3073
|
default: true,
|
|
2700
3074
|
ui: {
|
|
2701
3075
|
tab: "tasks",
|
|
2702
|
-
|
|
3076
|
+
group: "Modes",
|
|
3077
|
+
label: "Goal Status in Footer",
|
|
2703
3078
|
description: "Show token budget alongside the goal indicator in the status line",
|
|
2704
3079
|
},
|
|
2705
3080
|
},
|
|
@@ -2709,6 +3084,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2709
3084
|
default: ["interactive"],
|
|
2710
3085
|
ui: {
|
|
2711
3086
|
tab: "tasks",
|
|
3087
|
+
group: "Modes",
|
|
2712
3088
|
label: "Goal Continuation Modes",
|
|
2713
3089
|
description: "Run modes where active goals may auto-continue between turns",
|
|
2714
3090
|
},
|
|
@@ -2732,6 +3108,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2732
3108
|
default: "none",
|
|
2733
3109
|
ui: {
|
|
2734
3110
|
tab: "tasks",
|
|
3111
|
+
group: "Isolation",
|
|
2735
3112
|
label: "Isolation Mode",
|
|
2736
3113
|
description:
|
|
2737
3114
|
'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 +3145,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2768
3145
|
default: "patch",
|
|
2769
3146
|
ui: {
|
|
2770
3147
|
tab: "tasks",
|
|
3148
|
+
group: "Isolation",
|
|
2771
3149
|
label: "Isolation Merge Strategy",
|
|
2772
3150
|
description: "How isolated task changes are integrated (patch apply or branch merge)",
|
|
2773
3151
|
options: [
|
|
@@ -2783,6 +3161,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2783
3161
|
default: "generic",
|
|
2784
3162
|
ui: {
|
|
2785
3163
|
tab: "tasks",
|
|
3164
|
+
group: "Isolation",
|
|
2786
3165
|
label: "Isolation Commit Style",
|
|
2787
3166
|
description: "Commit message style for nested repo changes (generic or AI-generated)",
|
|
2788
3167
|
options: [
|
|
@@ -2797,6 +3176,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2797
3176
|
default: false,
|
|
2798
3177
|
ui: {
|
|
2799
3178
|
tab: "tasks",
|
|
3179
|
+
group: "Subagents",
|
|
2800
3180
|
label: "Prefer Task Delegation",
|
|
2801
3181
|
description: "Encourage the agent to delegate work to subagents unless changes are trivial",
|
|
2802
3182
|
},
|
|
@@ -2807,6 +3187,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2807
3187
|
default: true,
|
|
2808
3188
|
ui: {
|
|
2809
3189
|
tab: "tasks",
|
|
3190
|
+
group: "Subagents",
|
|
2810
3191
|
label: "Batch Task Calls",
|
|
2811
3192
|
description:
|
|
2812
3193
|
"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 +3199,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
2818
3199
|
default: 32,
|
|
2819
3200
|
ui: {
|
|
2820
3201
|
tab: "tasks",
|
|
3202
|
+
group: "Subagents",
|
|
2821
3203
|
label: "Max Concurrent Tasks",
|
|
2822
|
-
description: "
|
|
3204
|
+
description: "Maximum number of subagents running concurrently",
|
|
2823
3205
|
options: [
|
|
2824
3206
|
{ value: "0", label: "Unlimited" },
|
|
2825
3207
|
{ value: "1", label: "1 task" },
|
|
@@ -2838,6 +3220,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2838
3220
|
default: false,
|
|
2839
3221
|
ui: {
|
|
2840
3222
|
tab: "tasks",
|
|
3223
|
+
group: "Subagents",
|
|
2841
3224
|
label: "LSP in Subagents",
|
|
2842
3225
|
description:
|
|
2843
3226
|
"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 +3232,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2849
3232
|
default: 2,
|
|
2850
3233
|
ui: {
|
|
2851
3234
|
tab: "tasks",
|
|
3235
|
+
group: "Subagents",
|
|
2852
3236
|
label: "Max Task Recursion",
|
|
2853
3237
|
description: "How many levels deep subagents can spawn their own subagents",
|
|
2854
3238
|
options: [
|
|
@@ -2866,6 +3250,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2866
3250
|
default: 0,
|
|
2867
3251
|
ui: {
|
|
2868
3252
|
tab: "tasks",
|
|
3253
|
+
group: "Subagents",
|
|
2869
3254
|
label: "Max Subagent Runtime",
|
|
2870
3255
|
description:
|
|
2871
3256
|
"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 +3269,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2884
3269
|
default: 420_000,
|
|
2885
3270
|
ui: {
|
|
2886
3271
|
tab: "tasks",
|
|
3272
|
+
group: "Subagents",
|
|
2887
3273
|
label: "Agent Idle TTL",
|
|
2888
3274
|
description:
|
|
2889
3275
|
"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 +3281,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2895
3281
|
default: 90,
|
|
2896
3282
|
ui: {
|
|
2897
3283
|
tab: "tasks",
|
|
3284
|
+
group: "Subagents",
|
|
2898
3285
|
label: "Soft Subagent Request Budget",
|
|
2899
3286
|
description:
|
|
2900
3287
|
"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 +3308,10 @@ export const SETTINGS_SCHEMA = {
|
|
|
2921
3308
|
type: "number",
|
|
2922
3309
|
default: 60,
|
|
2923
3310
|
ui: {
|
|
2924
|
-
tab: "
|
|
2925
|
-
|
|
2926
|
-
|
|
3311
|
+
tab: "tools",
|
|
3312
|
+
group: "Todos",
|
|
3313
|
+
label: "Todo Auto-Clear Delay",
|
|
3314
|
+
description: "Delay before completed or abandoned todos are removed from the todo widget",
|
|
2927
3315
|
options: [
|
|
2928
3316
|
{ value: "0", label: "Instant" },
|
|
2929
3317
|
{ value: "60", label: "1 minute", description: "Default" },
|
|
@@ -2941,6 +3329,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2941
3329
|
default: false,
|
|
2942
3330
|
ui: {
|
|
2943
3331
|
tab: "appearance",
|
|
3332
|
+
group: "Display",
|
|
2944
3333
|
label: "Show Resolved Model Badge",
|
|
2945
3334
|
description: "Display the actual model ID used by each subagent in the task widget status line",
|
|
2946
3335
|
},
|
|
@@ -2952,7 +3341,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2952
3341
|
"skills.enableSkillCommands": {
|
|
2953
3342
|
type: "boolean",
|
|
2954
3343
|
default: true,
|
|
2955
|
-
ui: {
|
|
3344
|
+
ui: {
|
|
3345
|
+
tab: "tasks",
|
|
3346
|
+
group: "Commands & Skills",
|
|
3347
|
+
label: "Skill Commands",
|
|
3348
|
+
description: "Register skills as /skill:name commands",
|
|
3349
|
+
},
|
|
2956
3350
|
},
|
|
2957
3351
|
|
|
2958
3352
|
"skills.enableCodexUser": { type: "boolean", default: true },
|
|
@@ -2975,13 +3369,23 @@ export const SETTINGS_SCHEMA = {
|
|
|
2975
3369
|
"commands.enableClaudeUser": {
|
|
2976
3370
|
type: "boolean",
|
|
2977
3371
|
default: true,
|
|
2978
|
-
ui: {
|
|
3372
|
+
ui: {
|
|
3373
|
+
tab: "tasks",
|
|
3374
|
+
group: "Commands & Skills",
|
|
3375
|
+
label: "Claude User Commands",
|
|
3376
|
+
description: "Load commands from ~/.claude/commands/",
|
|
3377
|
+
},
|
|
2979
3378
|
},
|
|
2980
3379
|
|
|
2981
3380
|
"commands.enableClaudeProject": {
|
|
2982
3381
|
type: "boolean",
|
|
2983
3382
|
default: true,
|
|
2984
|
-
ui: {
|
|
3383
|
+
ui: {
|
|
3384
|
+
tab: "tasks",
|
|
3385
|
+
group: "Commands & Skills",
|
|
3386
|
+
label: "Claude Project Commands",
|
|
3387
|
+
description: "Load commands from .claude/commands/",
|
|
3388
|
+
},
|
|
2985
3389
|
},
|
|
2986
3390
|
|
|
2987
3391
|
"commands.enableOpencodeUser": {
|
|
@@ -2989,6 +3393,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
2989
3393
|
default: true,
|
|
2990
3394
|
ui: {
|
|
2991
3395
|
tab: "tasks",
|
|
3396
|
+
group: "Commands & Skills",
|
|
2992
3397
|
label: "OpenCode User Commands",
|
|
2993
3398
|
description: "Load commands from ~/.config/opencode/commands/",
|
|
2994
3399
|
},
|
|
@@ -2997,7 +3402,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
2997
3402
|
"commands.enableOpencodeProject": {
|
|
2998
3403
|
type: "boolean",
|
|
2999
3404
|
default: true,
|
|
3000
|
-
ui: {
|
|
3405
|
+
ui: {
|
|
3406
|
+
tab: "tasks",
|
|
3407
|
+
group: "Commands & Skills",
|
|
3408
|
+
label: "OpenCode Project Commands",
|
|
3409
|
+
description: "Load commands from .opencode/commands/",
|
|
3410
|
+
},
|
|
3001
3411
|
},
|
|
3002
3412
|
|
|
3003
3413
|
// ────────────────────────────────────────────────────────────────────────
|
|
@@ -3008,7 +3418,12 @@ export const SETTINGS_SCHEMA = {
|
|
|
3008
3418
|
"secrets.enabled": {
|
|
3009
3419
|
type: "boolean",
|
|
3010
3420
|
default: false,
|
|
3011
|
-
ui: {
|
|
3421
|
+
ui: {
|
|
3422
|
+
tab: "providers",
|
|
3423
|
+
group: "Privacy",
|
|
3424
|
+
label: "Hide Secrets",
|
|
3425
|
+
description: "Obfuscate secrets before sending to AI providers",
|
|
3426
|
+
},
|
|
3012
3427
|
},
|
|
3013
3428
|
|
|
3014
3429
|
// Provider selection
|
|
@@ -3018,8 +3433,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3018
3433
|
default: "auto",
|
|
3019
3434
|
ui: {
|
|
3020
3435
|
tab: "providers",
|
|
3436
|
+
group: "Services",
|
|
3021
3437
|
label: "Web Search Provider",
|
|
3022
|
-
description: "
|
|
3438
|
+
description: "Preferred provider for the web_search tool",
|
|
3023
3439
|
options: SEARCH_PROVIDER_OPTIONS,
|
|
3024
3440
|
},
|
|
3025
3441
|
},
|
|
@@ -3029,8 +3445,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3029
3445
|
default: "auto",
|
|
3030
3446
|
ui: {
|
|
3031
3447
|
tab: "providers",
|
|
3448
|
+
group: "Services",
|
|
3032
3449
|
label: "Image Provider",
|
|
3033
|
-
description: "
|
|
3450
|
+
description: "Preferred provider for image generation",
|
|
3034
3451
|
options: [
|
|
3035
3452
|
{
|
|
3036
3453
|
value: "auto",
|
|
@@ -3059,6 +3476,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3059
3476
|
default: ONLINE_TINY_TITLE_MODEL_KEY,
|
|
3060
3477
|
ui: {
|
|
3061
3478
|
tab: "providers",
|
|
3479
|
+
group: "Tiny Model",
|
|
3062
3480
|
label: "Tiny Model",
|
|
3063
3481
|
description: "Session-title model: online pi/smol by default, or a local on-device model",
|
|
3064
3482
|
options: TINY_TITLE_MODEL_OPTIONS,
|
|
@@ -3070,6 +3488,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3070
3488
|
default: TINY_MODEL_DEVICE_DEFAULT,
|
|
3071
3489
|
ui: {
|
|
3072
3490
|
tab: "providers",
|
|
3491
|
+
group: "Tiny Model",
|
|
3073
3492
|
label: "Tiny Model Device",
|
|
3074
3493
|
description:
|
|
3075
3494
|
"ONNX execution provider for local tiny models (titles + memory). Default uses CPU-only inference. The PI_TINY_DEVICE env var overrides this.",
|
|
@@ -3082,6 +3501,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3082
3501
|
default: TINY_MODEL_DTYPE_DEFAULT,
|
|
3083
3502
|
ui: {
|
|
3084
3503
|
tab: "providers",
|
|
3504
|
+
group: "Tiny Model",
|
|
3085
3505
|
label: "Tiny Model Precision",
|
|
3086
3506
|
description:
|
|
3087
3507
|
"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 +3514,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3094
3514
|
default: ONLINE_MEMORY_MODEL_KEY,
|
|
3095
3515
|
ui: {
|
|
3096
3516
|
tab: "memory",
|
|
3517
|
+
group: "General",
|
|
3097
3518
|
label: "Memory Model",
|
|
3098
3519
|
description:
|
|
3099
3520
|
"Mnemopi LLM for fact extraction + consolidation: online (smol/remote) by default, or a local on-device model",
|
|
@@ -3108,6 +3529,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3108
3529
|
default: ONLINE_AUTO_THINKING_MODEL_KEY,
|
|
3109
3530
|
ui: {
|
|
3110
3531
|
tab: "model",
|
|
3532
|
+
group: "Thinking",
|
|
3111
3533
|
label: "Auto Thinking Model",
|
|
3112
3534
|
description:
|
|
3113
3535
|
"Difficulty classifier for the `auto` thinking level: online smol by default, or a local on-device model",
|
|
@@ -3122,6 +3544,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3122
3544
|
default: "anthropic",
|
|
3123
3545
|
ui: {
|
|
3124
3546
|
tab: "providers",
|
|
3547
|
+
group: "Protocol",
|
|
3125
3548
|
label: "Kimi API Format",
|
|
3126
3549
|
description: "API format for Kimi Code provider",
|
|
3127
3550
|
options: [
|
|
@@ -3137,6 +3560,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3137
3560
|
default: "auto",
|
|
3138
3561
|
ui: {
|
|
3139
3562
|
tab: "providers",
|
|
3563
|
+
group: "Protocol",
|
|
3140
3564
|
label: "OpenAI WebSockets",
|
|
3141
3565
|
description: "Websocket policy for OpenAI Codex models (auto uses model defaults, on forces, off disables)",
|
|
3142
3566
|
options: [
|
|
@@ -3153,6 +3577,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3153
3577
|
default: "default",
|
|
3154
3578
|
ui: {
|
|
3155
3579
|
tab: "providers",
|
|
3580
|
+
group: "Protocol",
|
|
3156
3581
|
label: "OpenRouter Routing",
|
|
3157
3582
|
description:
|
|
3158
3583
|
"Default routing-variant suffix appended to OpenRouter model IDs (overridden when the selector already names a variant)",
|
|
@@ -3175,6 +3600,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3175
3600
|
default: "auto",
|
|
3176
3601
|
ui: {
|
|
3177
3602
|
tab: "providers",
|
|
3603
|
+
group: "Services",
|
|
3178
3604
|
label: "Fetch Provider",
|
|
3179
3605
|
description: "Reader backend priority for the fetch/read URL tool",
|
|
3180
3606
|
options: [
|
|
@@ -3197,6 +3623,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3197
3623
|
default: "auto",
|
|
3198
3624
|
ui: {
|
|
3199
3625
|
tab: "providers",
|
|
3626
|
+
group: "Protocol",
|
|
3200
3627
|
label: "Append-Only Context",
|
|
3201
3628
|
description:
|
|
3202
3629
|
"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 +3639,40 @@ export const SETTINGS_SCHEMA = {
|
|
|
3212
3639
|
"exa.enabled": {
|
|
3213
3640
|
type: "boolean",
|
|
3214
3641
|
default: true,
|
|
3215
|
-
ui: { tab: "providers", label: "Exa", description: "Master toggle for all Exa search tools" },
|
|
3642
|
+
ui: { tab: "providers", group: "Services", label: "Exa", description: "Master toggle for all Exa search tools" },
|
|
3216
3643
|
},
|
|
3217
3644
|
|
|
3218
3645
|
"exa.enableSearch": {
|
|
3219
3646
|
type: "boolean",
|
|
3220
3647
|
default: true,
|
|
3221
|
-
ui: {
|
|
3648
|
+
ui: {
|
|
3649
|
+
tab: "providers",
|
|
3650
|
+
group: "Services",
|
|
3651
|
+
label: "Exa Search",
|
|
3652
|
+
description: "Enable Exa basic search, deep search, code search, and crawl tools",
|
|
3653
|
+
},
|
|
3222
3654
|
},
|
|
3223
3655
|
|
|
3224
3656
|
"exa.enableResearcher": {
|
|
3225
3657
|
type: "boolean",
|
|
3226
3658
|
default: false,
|
|
3227
|
-
ui: {
|
|
3659
|
+
ui: {
|
|
3660
|
+
tab: "providers",
|
|
3661
|
+
group: "Services",
|
|
3662
|
+
label: "Exa Researcher",
|
|
3663
|
+
description: "Enable the Exa researcher tool for AI-powered deep research",
|
|
3664
|
+
},
|
|
3228
3665
|
},
|
|
3229
3666
|
|
|
3230
3667
|
"exa.enableWebsets": {
|
|
3231
3668
|
type: "boolean",
|
|
3232
3669
|
default: false,
|
|
3233
|
-
ui: {
|
|
3670
|
+
ui: {
|
|
3671
|
+
tab: "providers",
|
|
3672
|
+
group: "Services",
|
|
3673
|
+
label: "Exa Websets",
|
|
3674
|
+
description: "Enable Exa webset management and enrichment tools",
|
|
3675
|
+
},
|
|
3234
3676
|
},
|
|
3235
3677
|
|
|
3236
3678
|
// SearXNG
|
|
@@ -3239,8 +3681,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3239
3681
|
default: undefined,
|
|
3240
3682
|
ui: {
|
|
3241
3683
|
tab: "providers",
|
|
3684
|
+
group: "Services",
|
|
3242
3685
|
label: "SearXNG Endpoint",
|
|
3243
|
-
description: "
|
|
3686
|
+
description: "Base URL of a self-hosted SearXNG instance used for web search",
|
|
3244
3687
|
},
|
|
3245
3688
|
},
|
|
3246
3689
|
|
|
@@ -3286,6 +3729,7 @@ export const SETTINGS_SCHEMA = {
|
|
|
3286
3729
|
default: false,
|
|
3287
3730
|
ui: {
|
|
3288
3731
|
tab: "tools",
|
|
3732
|
+
group: "Developer",
|
|
3289
3733
|
label: "Auto QA",
|
|
3290
3734
|
description: "Enable automated tool issue reporting (report_tool_issue) for all agents",
|
|
3291
3735
|
},
|
|
@@ -3299,8 +3743,9 @@ export const SETTINGS_SCHEMA = {
|
|
|
3299
3743
|
default: "https://qa.omp.sh/v1/grievances" as const,
|
|
3300
3744
|
ui: {
|
|
3301
3745
|
tab: "tools",
|
|
3746
|
+
group: "Developer",
|
|
3302
3747
|
label: "Auto QA Push Endpoint",
|
|
3303
|
-
description: "Full URL
|
|
3748
|
+
description: "Full URL receiving Auto QA JSON reports (default https://qa.omp.sh/v1/grievances)",
|
|
3304
3749
|
},
|
|
3305
3750
|
},
|
|
3306
3751
|
|
|
@@ -3413,6 +3858,9 @@ export type StatusLineSeparatorStyle = SettingValue<"statusLine.separator">;
|
|
|
3413
3858
|
/** Tree selector filter mode - derived from schema */
|
|
3414
3859
|
export type TreeFilterMode = SettingValue<"treeFilterMode">;
|
|
3415
3860
|
|
|
3861
|
+
/** Personality preset - derived from schema */
|
|
3862
|
+
export type Personality = SettingValue<"personality">;
|
|
3863
|
+
|
|
3416
3864
|
// ═══════════════════════════════════════════════════════════════════════════
|
|
3417
3865
|
// Typed Group Definitions
|
|
3418
3866
|
// ═══════════════════════════════════════════════════════════════════════════
|