@bastani/atomic 0.9.29-alpha.2 → 0.9.30-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/dist/builtin/intercom/package.json +1 -1
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/CHANGELOG.md +6 -0
  5. package/dist/builtin/subagents/package.json +1 -1
  6. package/dist/builtin/web-access/package.json +1 -1
  7. package/dist/builtin/workflows/CHANGELOG.md +6 -0
  8. package/dist/builtin/workflows/package.json +1 -1
  9. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  10. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  11. package/dist/core/extensions/loader-virtual-modules.js +6 -0
  12. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  13. package/dist/core/http-dispatcher.d.ts +1 -1
  14. package/dist/core/http-dispatcher.d.ts.map +1 -1
  15. package/dist/core/http-dispatcher.js +2 -1
  16. package/dist/core/http-dispatcher.js.map +1 -1
  17. package/dist/core/key-id-schema.d.ts +6 -0
  18. package/dist/core/key-id-schema.d.ts.map +1 -0
  19. package/dist/core/key-id-schema.js +16 -0
  20. package/dist/core/key-id-schema.js.map +1 -0
  21. package/dist/core/keybindings-schema.d.ts +4 -0
  22. package/dist/core/keybindings-schema.d.ts.map +1 -0
  23. package/dist/core/keybindings-schema.js +20 -0
  24. package/dist/core/keybindings-schema.js.map +1 -0
  25. package/dist/core/keybindings.d.ts +226 -79
  26. package/dist/core/keybindings.d.ts.map +1 -1
  27. package/dist/core/keybindings.js +25 -20
  28. package/dist/core/keybindings.js.map +1 -1
  29. package/dist/core/model-config.d.ts +685 -164
  30. package/dist/core/model-config.d.ts.map +1 -1
  31. package/dist/core/model-config.js +22 -176
  32. package/dist/core/model-config.js.map +1 -1
  33. package/dist/core/project-trust.d.ts.map +1 -1
  34. package/dist/core/project-trust.js +2 -1
  35. package/dist/core/project-trust.js.map +1 -1
  36. package/dist/core/settings-defaults.d.ts +80 -0
  37. package/dist/core/settings-defaults.d.ts.map +1 -0
  38. package/dist/core/settings-defaults.js +81 -0
  39. package/dist/core/settings-defaults.js.map +1 -0
  40. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  41. package/dist/core/settings-manager-basic-accessors.js +34 -29
  42. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  43. package/dist/core/settings-manager-resource-accessors.d.ts.map +1 -1
  44. package/dist/core/settings-manager-resource-accessors.js +10 -9
  45. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  46. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  47. package/dist/core/settings-manager-ui-accessors.js +26 -18
  48. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  49. package/dist/core/settings-schema.d.ts +292 -0
  50. package/dist/core/settings-schema.d.ts.map +1 -0
  51. package/dist/core/settings-schema.js +403 -0
  52. package/dist/core/settings-schema.js.map +1 -0
  53. package/dist/core/settings-types.d.ts +2 -181
  54. package/dist/core/settings-types.d.ts.map +1 -1
  55. package/dist/core/settings-types.js.map +1 -1
  56. package/dist/extensions/codemode/index.d.ts.map +1 -1
  57. package/dist/extensions/codemode/index.js +2 -1
  58. package/dist/extensions/codemode/index.js.map +1 -1
  59. package/dist/extensions/codemode/tool.d.ts +1 -1
  60. package/dist/extensions/codemode/tool.d.ts.map +1 -1
  61. package/dist/extensions/codemode/tool.js +2 -1
  62. package/dist/extensions/codemode/tool.js.map +1 -1
  63. package/dist/extensions/herdr/index.d.ts.map +1 -1
  64. package/dist/extensions/herdr/index.js +4 -1
  65. package/dist/extensions/herdr/index.js.map +1 -1
  66. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  67. package/dist/modes/interactive/components/settings-selector-items.js +2 -4
  68. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  69. package/dist/modes/interactive/components/settings-selector-submenus.d.ts.map +1 -1
  70. package/dist/modes/interactive/components/settings-selector-submenus.js +2 -1
  71. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  72. package/dist/modes/interactive/theme/catppuccin-frappe.json +1 -1
  73. package/dist/modes/interactive/theme/catppuccin-latte.json +1 -1
  74. package/dist/modes/interactive/theme/catppuccin-macchiato.json +1 -1
  75. package/dist/modes/interactive/theme/catppuccin-mocha.json +1 -1
  76. package/dist/modes/interactive/theme/dark.json +1 -1
  77. package/dist/modes/interactive/theme/light.json +1 -1
  78. package/dist/modes/interactive/theme/theme-class.d.ts +3 -12
  79. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  80. package/dist/modes/interactive/theme/theme-class.js +2 -9
  81. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  82. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  83. package/dist/modes/interactive/theme/theme-loading.js +3 -21
  84. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  85. package/dist/modes/interactive/theme/theme-parse.d.ts.map +1 -1
  86. package/dist/modes/interactive/theme/theme-parse.js +3 -0
  87. package/dist/modes/interactive/theme/theme-parse.js.map +1 -1
  88. package/dist/modes/interactive/theme/theme-schema.d.ts +5 -224
  89. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  90. package/dist/modes/interactive/theme/theme-schema.js +47 -72
  91. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  92. package/dist/modes/interactive/theme/theme-tokens.d.ts +262 -0
  93. package/dist/modes/interactive/theme/theme-tokens.d.ts.map +1 -0
  94. package/dist/modes/interactive/theme/theme-tokens.js +126 -0
  95. package/dist/modes/interactive/theme/theme-tokens.js.map +1 -0
  96. package/docs/compaction/reference.md +1 -1
  97. package/docs/compaction.md +2 -2
  98. package/docs/keybindings.md +2 -0
  99. package/docs/models.md +2 -0
  100. package/docs/providers.md +1 -1
  101. package/docs/settings.md +2 -0
  102. package/docs/themes/reference.md +2 -2
  103. package/docs/themes.md +3 -1
  104. package/examples/extensions/dynamic-resources/dynamic.json +1 -1
  105. package/npm-shrinkwrap.json +32 -32
  106. package/package.json +5 -3
  107. package/schemas/keybindings.schema.json +413 -0
  108. package/schemas/models.schema.json +1178 -0
  109. package/schemas/settings.schema.json +940 -0
  110. package/schemas/theme.schema.json +369 -0
  111. package/dist/modes/interactive/theme/theme-schema.json +0 -361
@@ -0,0 +1,940 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://raw.githubusercontent.com/bastani-inc/atomic/main/packages/coding-agent/schemas/settings.schema.json",
4
+ "$comment": "This file is generated from TypeScript source. Do not edit it manually; run npm run generate:schemas --workspace=@bastani/atomic.",
5
+ "type": "object",
6
+ "properties": {
7
+ "$schema": {
8
+ "type": "string",
9
+ "description": "JSON Schema reference."
10
+ },
11
+ "lastChangelogVersion": {
12
+ "type": "string"
13
+ },
14
+ "firstRunOnboardingStartedVersion": {
15
+ "type": "string",
16
+ "description": "Managed onboarding state; leave unchanged."
17
+ },
18
+ "onboardedVersion": {
19
+ "type": "string",
20
+ "description": "Managed onboarding completion state; leave unchanged."
21
+ },
22
+ "defaultProvider": {
23
+ "type": "string"
24
+ },
25
+ "defaultModel": {
26
+ "type": "string"
27
+ },
28
+ "routerModel": {
29
+ "type": "string",
30
+ "description": "Inference model for workflow-stage and subagent model: \"auto\" selection only. An exact provider/model selects a registered chat or classifier model; \"auto\" and an empty string use the current chat model.",
31
+ "default": ""
32
+ },
33
+ "compactionModel": {
34
+ "type": "string",
35
+ "description": "Compaction model: \"auto\" or an empty string uses the session model, and an exact provider/model selects a registered chat model, classifier, or compactor."
36
+ },
37
+ "modelRouting": {
38
+ "type": "object",
39
+ "properties": {
40
+ "allowedProviders": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "string"
44
+ },
45
+ "description": "When nonempty, only models from these provider IDs are routing candidates."
46
+ },
47
+ "excludedProviders": {
48
+ "type": "array",
49
+ "items": {
50
+ "type": "string"
51
+ },
52
+ "description": "Provider IDs that are never routing candidates. Applied after allowedProviders."
53
+ },
54
+ "allowedModels": {
55
+ "type": "array",
56
+ "items": {
57
+ "type": "string"
58
+ },
59
+ "description": "When nonempty, only models matching these full-ID or glob patterns, as in enabledModels, are routing candidates."
60
+ },
61
+ "excludedModels": {
62
+ "type": "array",
63
+ "items": {
64
+ "type": "string"
65
+ },
66
+ "description": "Models matching these full-ID or glob patterns are never routing candidates. Applied after allowedModels."
67
+ }
68
+ },
69
+ "description": "Provider and model filters for the candidates model \"auto\" may route to. Does not affect routerModel."
70
+ },
71
+ "defaultThinkingLevel": {
72
+ "$ref": "#/$defs/ModelThinkingLevel"
73
+ },
74
+ "modelThinkingLevels": {
75
+ "type": "object",
76
+ "patternProperties": {
77
+ "^.*$": {
78
+ "$ref": "#/$defs/ModelThinkingLevel"
79
+ }
80
+ },
81
+ "description": "Per-model default thinking level overrides keyed by \"provider/modelId\"."
82
+ },
83
+ "fallbackModels": {
84
+ "type": "array",
85
+ "items": {
86
+ "type": "string"
87
+ },
88
+ "description": "Ordered main-chat fallback models, written as \"provider/model\" with an optional thinking-level suffix such as \":high\"."
89
+ },
90
+ "transport": {
91
+ "anyOf": [
92
+ {
93
+ "type": "string",
94
+ "const": "auto"
95
+ },
96
+ {
97
+ "type": "string",
98
+ "const": "sse"
99
+ },
100
+ {
101
+ "type": "string",
102
+ "const": "websocket"
103
+ },
104
+ {
105
+ "type": "string",
106
+ "const": "websocket-cached"
107
+ }
108
+ ],
109
+ "default": "auto"
110
+ },
111
+ "steeringMode": {
112
+ "anyOf": [
113
+ {
114
+ "type": "string",
115
+ "const": "all"
116
+ },
117
+ {
118
+ "type": "string",
119
+ "const": "one-at-a-time"
120
+ }
121
+ ],
122
+ "default": "one-at-a-time"
123
+ },
124
+ "followUpMode": {
125
+ "anyOf": [
126
+ {
127
+ "type": "string",
128
+ "const": "all"
129
+ },
130
+ {
131
+ "type": "string",
132
+ "const": "one-at-a-time"
133
+ }
134
+ ],
135
+ "default": "one-at-a-time"
136
+ },
137
+ "theme": {
138
+ "type": "string"
139
+ },
140
+ "enableAnalytics": {
141
+ "type": "boolean",
142
+ "description": "Opt in to analytics data sharing. Storage only; Atomic does not transmit analytics."
143
+ },
144
+ "trackingId": {
145
+ "type": "string",
146
+ "description": "Analytics tracking identifier, generated when analytics is enabled."
147
+ },
148
+ "deviceId": {
149
+ "type": "string",
150
+ "description": "Stable installation UUID, generated when authentication first needs it. Global only."
151
+ },
152
+ "showCacheMissNotices": {
153
+ "type": "boolean",
154
+ "description": "Show cache cost and provider recovery notices.",
155
+ "default": false
156
+ },
157
+ "compaction": {
158
+ "type": "object",
159
+ "properties": {
160
+ "enabled": {
161
+ "type": "boolean",
162
+ "default": true
163
+ },
164
+ "reserveTokens": {
165
+ "type": "integer",
166
+ "minimum": 0,
167
+ "maximum": 9007199254740991,
168
+ "description": "Tokens reserved for the next model response.",
169
+ "default": 16384
170
+ },
171
+ "compression_ratio": {
172
+ "type": "number",
173
+ "exclusiveMinimum": 0,
174
+ "exclusiveMaximum": 1,
175
+ "description": "Fraction of compactable transcript lines to keep.",
176
+ "default": 0.5
177
+ },
178
+ "preserve_recent": {
179
+ "type": "integer",
180
+ "minimum": 0,
181
+ "maximum": 9007199254740991,
182
+ "description": "Exact number of newest context-visible messages kept outside the compactable region.",
183
+ "default": 2
184
+ },
185
+ "query": {
186
+ "type": "string",
187
+ "description": "Relevance focus for selecting older lines to retain. Defaults to the last user message when omitted."
188
+ },
189
+ "modelOverrides": {
190
+ "type": "object",
191
+ "patternProperties": {
192
+ "^.*$": {
193
+ "type": "object",
194
+ "properties": {
195
+ "reserveTokens": {
196
+ "type": "integer",
197
+ "minimum": 0,
198
+ "maximum": 9007199254740991
199
+ },
200
+ "preserve_recent": {
201
+ "type": "integer",
202
+ "minimum": 0,
203
+ "maximum": 9007199254740991
204
+ }
205
+ }
206
+ }
207
+ },
208
+ "description": "Per-model overrides keyed by exact \"provider/modelId\" strings."
209
+ }
210
+ }
211
+ },
212
+ "branchSummary": {
213
+ "type": "object",
214
+ "properties": {
215
+ "reserveTokens": {
216
+ "type": "number",
217
+ "description": "Tokens reserved for the prompt and LLM response.",
218
+ "default": 16384
219
+ },
220
+ "skipPrompt": {
221
+ "type": "boolean",
222
+ "description": "When true, skips the \"Summarize branch?\" prompt and defaults to no summary.",
223
+ "default": false
224
+ }
225
+ }
226
+ },
227
+ "sessionSummary": {
228
+ "type": "object",
229
+ "properties": {
230
+ "enabled": {
231
+ "type": "boolean",
232
+ "description": "Generate a one-line resume-picker summary once the agent goes idle.",
233
+ "default": true
234
+ }
235
+ }
236
+ },
237
+ "retry": {
238
+ "type": "object",
239
+ "properties": {
240
+ "enabled": {
241
+ "type": "boolean",
242
+ "default": true
243
+ },
244
+ "maxRetries": {
245
+ "type": "number",
246
+ "default": 3
247
+ },
248
+ "baseDelayMs": {
249
+ "type": "number",
250
+ "description": "Exponential backoff base delay in milliseconds: 2s, 4s, 8s.",
251
+ "default": 2000
252
+ },
253
+ "maxAgentDelayMs": {
254
+ "type": "number",
255
+ "description": "Maximum agent-level backoff delay in milliseconds. 0 retries immediately.",
256
+ "default": 60000
257
+ },
258
+ "provider": {
259
+ "type": "object",
260
+ "properties": {
261
+ "timeoutMs": {
262
+ "type": "number",
263
+ "description": "SDK or provider request timeout in milliseconds."
264
+ },
265
+ "maxRetries": {
266
+ "type": "number",
267
+ "description": "SDK or provider retry attempts."
268
+ },
269
+ "maxRetryDelayMs": {
270
+ "type": "number",
271
+ "description": "Maximum server-requested delay before failing.",
272
+ "default": 60000
273
+ }
274
+ }
275
+ },
276
+ "maxDelayMs": {
277
+ "type": "number",
278
+ "description": "Legacy retry delay setting. Use provider.maxRetryDelayMs instead.",
279
+ "deprecated": true
280
+ }
281
+ }
282
+ },
283
+ "hideThinkingBlock": {
284
+ "type": "boolean",
285
+ "default": false
286
+ },
287
+ "externalEditor": {
288
+ "type": "string",
289
+ "description": "Command for Ctrl+G external editor; takes precedence over VISUAL and EDITOR."
290
+ },
291
+ "shellPath": {
292
+ "type": "string",
293
+ "description": "Custom shell path, for example for Cygwin on Windows, with support for leading ~ expansion."
294
+ },
295
+ "quietStartup": {
296
+ "anyOf": [
297
+ {
298
+ "type": "boolean"
299
+ },
300
+ {
301
+ "type": "string",
302
+ "const": "header"
303
+ }
304
+ ],
305
+ "description": "When true, hide all startup output. When \"header\", keep only the startup header.",
306
+ "default": false
307
+ },
308
+ "defaultProjectTrust": {
309
+ "anyOf": [
310
+ {
311
+ "type": "string",
312
+ "const": "ask"
313
+ },
314
+ {
315
+ "type": "string",
316
+ "const": "always"
317
+ },
318
+ {
319
+ "type": "string",
320
+ "const": "never"
321
+ }
322
+ ],
323
+ "description": "Global setting only.",
324
+ "default": "ask"
325
+ },
326
+ "shellCommandPrefix": {
327
+ "type": "string",
328
+ "description": "Prefix prepended to every bash command, for example to enable shell aliases."
329
+ },
330
+ "bashInterceptor": {
331
+ "type": "object",
332
+ "properties": {
333
+ "enabled": {
334
+ "type": "boolean",
335
+ "description": "When true, block shell commands that have dedicated tools and offer remaining bash tool calls to user_bash extension handlers before local execution.",
336
+ "default": false
337
+ }
338
+ }
339
+ },
340
+ "search": {
341
+ "type": "object",
342
+ "properties": {
343
+ "contextBefore": {
344
+ "type": "number",
345
+ "description": "Number of context lines before each search match.",
346
+ "default": 1
347
+ },
348
+ "contextAfter": {
349
+ "type": "number",
350
+ "description": "Number of context lines after each search match.",
351
+ "default": 3
352
+ }
353
+ }
354
+ },
355
+ "npmCommand": {
356
+ "type": "array",
357
+ "items": {
358
+ "type": "string"
359
+ },
360
+ "description": "Command used for npm package lookup and installation, in argv form such as [\"mise\", \"exec\", \"node@20\", \"--\", \"npm\"]."
361
+ },
362
+ "collapseChangelog": {
363
+ "type": "boolean",
364
+ "description": "Show the condensed changelog after update; use /changelog for the full changelog.",
365
+ "default": false
366
+ },
367
+ "enableInstallTelemetry": {
368
+ "type": "boolean",
369
+ "description": "Send an anonymous version-adoption ping on eligible interactive launches.",
370
+ "default": true
371
+ },
372
+ "packages": {
373
+ "type": "array",
374
+ "items": {
375
+ "anyOf": [
376
+ {
377
+ "type": "string",
378
+ "description": "Load all resources from the package."
379
+ },
380
+ {
381
+ "type": "object",
382
+ "required": [
383
+ "source"
384
+ ],
385
+ "properties": {
386
+ "source": {
387
+ "type": "string"
388
+ },
389
+ "autoload": {
390
+ "type": "boolean",
391
+ "description": "When false, start empty and only apply explicit resource patterns."
392
+ },
393
+ "extensions": {
394
+ "type": "array",
395
+ "items": {
396
+ "type": "string"
397
+ }
398
+ },
399
+ "skills": {
400
+ "type": "array",
401
+ "items": {
402
+ "type": "string"
403
+ }
404
+ },
405
+ "prompts": {
406
+ "type": "array",
407
+ "items": {
408
+ "type": "string"
409
+ }
410
+ },
411
+ "themes": {
412
+ "type": "array",
413
+ "items": {
414
+ "type": "string"
415
+ }
416
+ },
417
+ "workflows": {
418
+ "type": "array",
419
+ "items": {
420
+ "type": "string"
421
+ }
422
+ },
423
+ "mcpServers": {
424
+ "type": "array",
425
+ "items": {
426
+ "type": "string"
427
+ }
428
+ }
429
+ }
430
+ }
431
+ ],
432
+ "description": "Package source for npm or git packages. Use the string form to load all resources or the object form to filter resources."
433
+ },
434
+ "description": "npm or git package sources, as strings or objects with resource filtering."
435
+ },
436
+ "extensions": {
437
+ "type": "array",
438
+ "items": {
439
+ "type": "string"
440
+ },
441
+ "description": "Local extension file paths or directories."
442
+ },
443
+ "skills": {
444
+ "anyOf": [
445
+ {
446
+ "type": "array",
447
+ "items": {
448
+ "type": "string"
449
+ }
450
+ },
451
+ {
452
+ "type": "object",
453
+ "properties": {
454
+ "enableSkillCommands": {
455
+ "type": "boolean"
456
+ },
457
+ "customDirectories": {
458
+ "type": "array",
459
+ "items": {
460
+ "type": "string"
461
+ }
462
+ }
463
+ },
464
+ "deprecated": true
465
+ }
466
+ ],
467
+ "description": "Local skill file paths or directories."
468
+ },
469
+ "prompts": {
470
+ "type": "array",
471
+ "items": {
472
+ "type": "string"
473
+ },
474
+ "description": "Local prompt template file paths or directories."
475
+ },
476
+ "themes": {
477
+ "type": "array",
478
+ "items": {
479
+ "type": "string"
480
+ },
481
+ "description": "Local theme file paths or directories."
482
+ },
483
+ "workflows": {
484
+ "anyOf": [
485
+ {
486
+ "type": "array",
487
+ "items": {
488
+ "type": "string"
489
+ }
490
+ },
491
+ {
492
+ "type": "object",
493
+ "properties": {
494
+ "paths": {
495
+ "type": "array",
496
+ "items": {
497
+ "type": "string"
498
+ },
499
+ "description": "Workflow resource paths."
500
+ },
501
+ "durability": {
502
+ "type": "object",
503
+ "properties": {
504
+ "systemDatabaseUrl": {
505
+ "type": "string",
506
+ "description": "PostgreSQL URL for the workflow database."
507
+ },
508
+ "systemDatabaseUrlFile": {
509
+ "type": "string",
510
+ "description": "Read the PostgreSQL URL from a UTF-8 file instead of storing credentials in settings."
511
+ }
512
+ },
513
+ "description": "Existing PostgreSQL database for durable workflows. Set only one URL source per scope.",
514
+ "additionalProperties": false
515
+ }
516
+ }
517
+ }
518
+ ],
519
+ "description": "Local workflow paths, or an object with \"paths\" and \"durability\" for the workflow database."
520
+ },
521
+ "enableSkillCommands": {
522
+ "type": "boolean",
523
+ "description": "Register skills as /skill:name commands.",
524
+ "default": true
525
+ },
526
+ "terminal": {
527
+ "type": "object",
528
+ "properties": {
529
+ "showImages": {
530
+ "type": "boolean",
531
+ "description": "Show images when the terminal supports them.",
532
+ "default": true
533
+ },
534
+ "imageWidthCells": {
535
+ "type": "number",
536
+ "description": "Preferred inline image width in terminal cells.",
537
+ "default": 60
538
+ },
539
+ "clearOnShrink": {
540
+ "type": "boolean",
541
+ "description": "Clear empty rows when content shrinks.",
542
+ "default": false
543
+ },
544
+ "showTerminalProgress": {
545
+ "type": "boolean",
546
+ "description": "Show OSC 9;4 terminal progress indicators.",
547
+ "default": false
548
+ },
549
+ "hyperlinks": {
550
+ "anyOf": [
551
+ {
552
+ "type": "boolean"
553
+ },
554
+ {
555
+ "type": "string",
556
+ "const": "auto"
557
+ }
558
+ ],
559
+ "description": "Hyperlink capability override. \"auto\" and invalid values keep terminal detection."
560
+ },
561
+ "images": {
562
+ "anyOf": [
563
+ {
564
+ "type": "string",
565
+ "const": "kitty"
566
+ },
567
+ {
568
+ "type": "string",
569
+ "const": "iterm2"
570
+ },
571
+ {
572
+ "type": "string",
573
+ "const": "auto"
574
+ },
575
+ {
576
+ "type": "boolean",
577
+ "const": false
578
+ }
579
+ ],
580
+ "description": "Inline-image protocol override. false disables images; \"auto\" keeps terminal detection."
581
+ },
582
+ "trueColor": {
583
+ "anyOf": [
584
+ {
585
+ "type": "boolean"
586
+ },
587
+ {
588
+ "type": "string",
589
+ "const": "auto"
590
+ }
591
+ ],
592
+ "description": "Truecolor capability override. \"auto\" and invalid values keep terminal detection."
593
+ }
594
+ }
595
+ },
596
+ "herdr": {
597
+ "type": "object",
598
+ "properties": {
599
+ "enabled": {
600
+ "type": "boolean",
601
+ "description": "Enable the built-in reporter in an eligible Herdr pane.",
602
+ "default": true
603
+ }
604
+ }
605
+ },
606
+ "images": {
607
+ "type": "object",
608
+ "properties": {
609
+ "autoResize": {
610
+ "type": "boolean",
611
+ "description": "Resize images to 2000x2000 maximum for better model compatibility.",
612
+ "default": true
613
+ },
614
+ "blockImages": {
615
+ "type": "boolean",
616
+ "description": "When true, prevents all images from being sent to LLM providers.",
617
+ "default": false
618
+ }
619
+ }
620
+ },
621
+ "enabledModels": {
622
+ "type": "array",
623
+ "items": {
624
+ "type": "string"
625
+ },
626
+ "description": "Model patterns for cycling, in the same format as the --models CLI flag."
627
+ },
628
+ "defaultTools": {
629
+ "type": "array",
630
+ "items": {
631
+ "type": "string"
632
+ },
633
+ "description": "Initial tool selection. Plain names replace the inherited selection; +name and -name entries add or remove tools."
634
+ },
635
+ "doubleEscapeAction": {
636
+ "anyOf": [
637
+ {
638
+ "type": "string",
639
+ "const": "fork"
640
+ },
641
+ {
642
+ "type": "string",
643
+ "const": "tree"
644
+ },
645
+ {
646
+ "type": "string",
647
+ "const": "none"
648
+ }
649
+ ],
650
+ "description": "Action for double-escape with an empty editor.",
651
+ "default": "tree"
652
+ },
653
+ "treeFilterMode": {
654
+ "anyOf": [
655
+ {
656
+ "type": "string",
657
+ "const": "default"
658
+ },
659
+ {
660
+ "type": "string",
661
+ "const": "no-tools"
662
+ },
663
+ {
664
+ "type": "string",
665
+ "const": "user-only"
666
+ },
667
+ {
668
+ "type": "string",
669
+ "const": "labeled-only"
670
+ },
671
+ {
672
+ "type": "string",
673
+ "const": "all"
674
+ }
675
+ ],
676
+ "description": "Default filter when opening /tree.",
677
+ "default": "default"
678
+ },
679
+ "thinkingBudgets": {
680
+ "type": "object",
681
+ "properties": {
682
+ "minimal": {
683
+ "type": "number"
684
+ },
685
+ "low": {
686
+ "type": "number"
687
+ },
688
+ "medium": {
689
+ "type": "number"
690
+ },
691
+ "high": {
692
+ "type": "number"
693
+ }
694
+ },
695
+ "description": "Custom token budgets for thinking levels."
696
+ },
697
+ "editorPaddingX": {
698
+ "type": "number",
699
+ "description": "Horizontal padding for the input editor (0-3).",
700
+ "default": 0
701
+ },
702
+ "outputPad": {
703
+ "anyOf": [
704
+ {
705
+ "type": "number",
706
+ "const": 0
707
+ },
708
+ {
709
+ "type": "number",
710
+ "const": 1
711
+ }
712
+ ],
713
+ "description": "Horizontal padding for transcript content.",
714
+ "default": 1
715
+ },
716
+ "autocompleteMaxVisible": {
717
+ "type": "number",
718
+ "description": "Maximum visible items in the autocomplete dropdown (3-20).",
719
+ "default": 5
720
+ },
721
+ "showHardwareCursor": {
722
+ "type": "boolean",
723
+ "description": "Show the terminal cursor while still positioning it for IME."
724
+ },
725
+ "fullscreenScrollbar": {
726
+ "anyOf": [
727
+ {
728
+ "type": "string",
729
+ "const": "auto"
730
+ },
731
+ {
732
+ "type": "string",
733
+ "const": "always"
734
+ },
735
+ {
736
+ "type": "string",
737
+ "const": "hidden"
738
+ }
739
+ ],
740
+ "description": "Fullscreen transcript scrollbar visibility.",
741
+ "default": "auto"
742
+ },
743
+ "fullscreenExitOutput": {
744
+ "anyOf": [
745
+ {
746
+ "type": "string",
747
+ "const": "transcript"
748
+ },
749
+ {
750
+ "type": "string",
751
+ "const": "resume-hint"
752
+ }
753
+ ],
754
+ "description": "What the terminal keeps when a fullscreen session exits: the final transcript with a resume hint, or only the resume hint.",
755
+ "default": "transcript"
756
+ },
757
+ "fullscreenCopyOnSelect": {
758
+ "type": "boolean",
759
+ "description": "Copy fullscreen text selections automatically on mouse release.",
760
+ "default": true
761
+ },
762
+ "fullscreenWheelScrollLines": {
763
+ "anyOf": [
764
+ {
765
+ "type": "number"
766
+ },
767
+ {
768
+ "type": "string",
769
+ "const": "auto"
770
+ }
771
+ ],
772
+ "description": "Lines scrolled per wheel event in fullscreen mode; numeric values are clamped from 1 to 100.",
773
+ "default": "auto"
774
+ },
775
+ "codemode": {
776
+ "type": "object",
777
+ "properties": {
778
+ "mode": {
779
+ "anyOf": [
780
+ {
781
+ "type": "string",
782
+ "const": "on"
783
+ },
784
+ {
785
+ "type": "string",
786
+ "const": "only"
787
+ }
788
+ ],
789
+ "description": "How codemode presents tools. \"on\" keeps direct tool declarations visible with script-call information; \"only\" hides ordinary direct callable declarations so the model uses scripts. Model-only tools remain directly available.",
790
+ "default": "on"
791
+ },
792
+ "inlineBudget": {
793
+ "type": "number",
794
+ "minimum": 0,
795
+ "description": "Estimated tokens available for inline codemode tool declarations.",
796
+ "default": 3000
797
+ }
798
+ }
799
+ },
800
+ "markdown": {
801
+ "type": "object",
802
+ "properties": {
803
+ "codeBlockIndent": {
804
+ "type": "string",
805
+ "default": " "
806
+ },
807
+ "mermaid": {
808
+ "anyOf": [
809
+ {
810
+ "type": "string",
811
+ "const": "off"
812
+ },
813
+ {
814
+ "type": "string",
815
+ "const": "final"
816
+ },
817
+ {
818
+ "type": "string",
819
+ "const": "streaming"
820
+ }
821
+ ],
822
+ "default": "streaming"
823
+ },
824
+ "latex": {
825
+ "type": "boolean",
826
+ "description": "Render LaTeX expressions as terminal-friendly Unicode math.",
827
+ "default": true
828
+ }
829
+ }
830
+ },
831
+ "warnings": {
832
+ "type": "object",
833
+ "properties": {
834
+ "anthropicExtraUsage": {
835
+ "type": "boolean",
836
+ "default": true
837
+ }
838
+ }
839
+ },
840
+ "sessionDir": {
841
+ "type": "string",
842
+ "description": "Custom session storage directory, in the same format as the --session-dir CLI flag."
843
+ },
844
+ "httpProxy": {
845
+ "type": "string",
846
+ "description": "Proxy URL applied as HTTP_PROXY and HTTPS_PROXY for Atomic-managed HTTP clients. Global only."
847
+ },
848
+ "httpIdleTimeoutMs": {
849
+ "anyOf": [
850
+ {
851
+ "type": "number",
852
+ "minimum": 0
853
+ },
854
+ {
855
+ "type": "string",
856
+ "pattern": "^(?:[dD][iI][sS][aA][bB][lL][eE][dD]|[0-9]+(?:[mM][sS]|[smhSMH])?)$"
857
+ }
858
+ ],
859
+ "description": "HTTP idle timeout as milliseconds, a duration such as \"30s\", \"5m\", or \"1h\", or \"disabled\"; 0 or \"disabled\" disables it.",
860
+ "default": 600000
861
+ },
862
+ "cacheWarming": {
863
+ "anyOf": [
864
+ {
865
+ "type": "string",
866
+ "const": "off"
867
+ },
868
+ {
869
+ "type": "string",
870
+ "const": "streaming"
871
+ },
872
+ {
873
+ "type": "string",
874
+ "const": "idle"
875
+ }
876
+ ],
877
+ "description": "Cache-warming profile. \"idle\" also warms between agent runs. Global only because each refresh costs money.",
878
+ "default": "streaming"
879
+ },
880
+ "websocketConnectTimeoutMs": {
881
+ "anyOf": [
882
+ {
883
+ "type": "number",
884
+ "minimum": 0
885
+ },
886
+ {
887
+ "type": "string",
888
+ "pattern": "^(?:[dD][iI][sS][aA][bB][lL][eE][dD]|[0-9]+(?:[mM][sS]|[smhSMH])?)$"
889
+ }
890
+ ],
891
+ "description": "WebSocket connect or open handshake timeout as milliseconds, a duration such as \"30s\", or \"disabled\"; 0 or \"disabled\" disables it."
892
+ },
893
+ "streamDeadlineMs": {
894
+ "anyOf": [
895
+ {
896
+ "type": "number",
897
+ "minimum": 0
898
+ },
899
+ {
900
+ "type": "string",
901
+ "pattern": "^(?:[dD][iI][sS][aA][bB][lL][eE][dD]|[0-9]+(?:[mM][sS]|[smhSMH])?)$"
902
+ }
903
+ ],
904
+ "description": "Maximum idle gap between two provider stream events as milliseconds, a duration such as \"30s\", or \"disabled\"; 0 or \"disabled\" disables it."
905
+ },
906
+ "queueMode": {
907
+ "anyOf": [
908
+ {
909
+ "type": "string",
910
+ "const": "all"
911
+ },
912
+ {
913
+ "type": "string",
914
+ "const": "one-at-a-time"
915
+ }
916
+ ],
917
+ "description": "Legacy setting migrated to steeringMode.",
918
+ "deprecated": true
919
+ },
920
+ "websockets": {
921
+ "type": "boolean",
922
+ "description": "Legacy setting migrated to transport.",
923
+ "deprecated": true
924
+ }
925
+ },
926
+ "additionalProperties": true,
927
+ "$defs": {
928
+ "ModelThinkingLevel": {
929
+ "enum": [
930
+ "off",
931
+ "minimal",
932
+ "low",
933
+ "medium",
934
+ "high",
935
+ "xhigh",
936
+ "max"
937
+ ]
938
+ }
939
+ }
940
+ }