@promptctl/cc-candybar 1.0.0

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/LICENSE +21 -0
  2. package/README.md +145 -0
  3. package/bin/cc-candybar +6 -0
  4. package/dist/index.mjs +185 -0
  5. package/package.json +99 -0
  6. package/plugin/.claude-plugin/plugin.json +11 -0
  7. package/plugin/bin/preview.sh +305 -0
  8. package/plugin/commands/candybar.md +403 -0
  9. package/plugin/templates/config-essential.json +36 -0
  10. package/plugin/templates/config-full.json +55 -0
  11. package/plugin/templates/config-standard.json +39 -0
  12. package/plugin/templates/config-tui-compact.json +48 -0
  13. package/plugin/templates/config-tui-full.json +89 -0
  14. package/plugin/templates/config-tui-standard.json +56 -0
  15. package/plugin/templates/config-tui.json +18 -0
  16. package/plugin/templates/nerd-fonts-sample.txt +5 -0
  17. package/schema/cc-candybar.schema.json +1379 -0
  18. package/src/click/wire.ts +113 -0
  19. package/src/config/action.ts +91 -0
  20. package/src/config/cli.ts +170 -0
  21. package/src/config/default-dsl-config.ts +661 -0
  22. package/src/config/dsl-loader.ts +265 -0
  23. package/src/config/dsl-types.ts +425 -0
  24. package/src/config/loader/actions.ts +530 -0
  25. package/src/config/loader/cache.ts +206 -0
  26. package/src/config/loader/cross-ref.ts +326 -0
  27. package/src/config/loader/cycles.ts +148 -0
  28. package/src/config/loader/diagnostics.ts +99 -0
  29. package/src/config/loader/discovery.ts +182 -0
  30. package/src/config/loader/emit-schema.ts +63 -0
  31. package/src/config/loader/globals.ts +42 -0
  32. package/src/config/loader/helpers.ts +48 -0
  33. package/src/config/loader/layout.ts +688 -0
  34. package/src/config/loader/merge.ts +40 -0
  35. package/src/config/loader/refs.ts +96 -0
  36. package/src/config/loader/segments.ts +120 -0
  37. package/src/config/loader/validate-core.ts +674 -0
  38. package/src/config/loader/variables.ts +260 -0
  39. package/src/daemon/acquire.ts +411 -0
  40. package/src/daemon/cache/git.ts +553 -0
  41. package/src/daemon/cache/render.ts +449 -0
  42. package/src/daemon/cache/session-usage-store.ts +446 -0
  43. package/src/daemon/cache/watchers.ts +245 -0
  44. package/src/daemon/client-debug.ts +120 -0
  45. package/src/daemon/client-stats.ts +129 -0
  46. package/src/daemon/client-transport.ts +273 -0
  47. package/src/daemon/client.ts +75 -0
  48. package/src/daemon/debug-types.ts +91 -0
  49. package/src/daemon/debug.ts +264 -0
  50. package/src/daemon/limits.ts +154 -0
  51. package/src/daemon/log.ts +69 -0
  52. package/src/daemon/parent-watchdog.ts +80 -0
  53. package/src/daemon/paths.ts +127 -0
  54. package/src/daemon/protocol.ts +235 -0
  55. package/src/daemon/render-payload.ts +611 -0
  56. package/src/daemon/server.ts +1103 -0
  57. package/src/daemon/session-state-file.ts +108 -0
  58. package/src/daemon/session-state.ts +237 -0
  59. package/src/daemon/stats.ts +229 -0
  60. package/src/daemon/verbs/index.ts +458 -0
  61. package/src/daemon/verbs/state-validators.ts +708 -0
  62. package/src/demo/dsl.ts +117 -0
  63. package/src/demo/mock-data.ts +67 -0
  64. package/src/demo/statusline.json5 +92 -0
  65. package/src/dsl/node-registry.ts +281 -0
  66. package/src/dsl/render.ts +558 -0
  67. package/src/index.ts +206 -0
  68. package/src/install/index.ts +410 -0
  69. package/src/proc/launch.ts +451 -0
  70. package/src/proc/stats-handle.ts +13 -0
  71. package/src/render/action.ts +458 -0
  72. package/src/render/diagnostic-style.ts +23 -0
  73. package/src/render/diagnostic-text.ts +77 -0
  74. package/src/render/error-glyph.ts +53 -0
  75. package/src/render/outcome-plan.ts +45 -0
  76. package/src/render/picker.ts +231 -0
  77. package/src/render/split-lines.ts +51 -0
  78. package/src/render/strip.ts +103 -0
  79. package/src/segments/cache.ts +131 -0
  80. package/src/segments/context.ts +190 -0
  81. package/src/segments/git.ts +561 -0
  82. package/src/segments/metrics.ts +101 -0
  83. package/src/segments/pricing.ts +452 -0
  84. package/src/segments/session.ts +188 -0
  85. package/src/segments/tmux.ts +74 -0
  86. package/src/template-engine/cells.ts +90 -0
  87. package/src/template-engine/colors.ts +102 -0
  88. package/src/template-engine/engine.ts +108 -0
  89. package/src/template-engine/funcs.ts +216 -0
  90. package/src/template-engine/index.ts +11 -0
  91. package/src/template-engine/layout.ts +112 -0
  92. package/src/template-engine/scope.ts +62 -0
  93. package/src/themes/index.ts +19 -0
  94. package/src/themes/palette-resolvers.ts +86 -0
  95. package/src/themes/policy.ts +79 -0
  96. package/src/themes/session-random.ts +88 -0
  97. package/src/utils/cache.ts +206 -0
  98. package/src/utils/claude.ts +616 -0
  99. package/src/utils/color-support.ts +118 -0
  100. package/src/utils/formatters.ts +77 -0
  101. package/src/utils/logger.ts +5 -0
  102. package/src/utils/outcome.ts +33 -0
  103. package/src/utils/schema-validator.ts +126 -0
  104. package/src/utils/single-flight.ts +57 -0
  105. package/src/utils/terminal-width.ts +43 -0
  106. package/src/utils/terminal.ts +11 -0
  107. package/src/utils/transcript-fs.ts +162 -0
  108. package/src/var-system/index.ts +24 -0
  109. package/src/var-system/sources.ts +1038 -0
  110. package/src/var-system/store.ts +223 -0
  111. package/src/var-system/types.ts +57 -0
@@ -0,0 +1,1379 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://raw.githubusercontent.com/promptctl/cc-candybar/main/schema/cc-candybar.schema.json",
4
+ "title": "cc-candybar config (.cc-candybar.json5)",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "properties": {
8
+ "globals": {
9
+ "type": "object",
10
+ "properties": {
11
+ "default_bg": {
12
+ "type": "string"
13
+ },
14
+ "default_fg": {
15
+ "type": "string"
16
+ },
17
+ "default_empty_value": {
18
+ "type": "string"
19
+ },
20
+ "default_separator": {
21
+ "type": "string"
22
+ },
23
+ "default_truncate_marker": {
24
+ "type": "string"
25
+ },
26
+ "palette": {
27
+ "type": "string"
28
+ }
29
+ },
30
+ "additionalProperties": false
31
+ },
32
+ "variables": {
33
+ "type": "object",
34
+ "additionalProperties": {
35
+ "anyOf": [
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "kind": {
40
+ "const": "literal"
41
+ },
42
+ "value": {
43
+ "type": [
44
+ "string",
45
+ "number",
46
+ "boolean"
47
+ ]
48
+ },
49
+ "default": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ "required": [
54
+ "kind",
55
+ "value"
56
+ ],
57
+ "additionalProperties": false
58
+ },
59
+ {
60
+ "type": "object",
61
+ "properties": {
62
+ "kind": {
63
+ "const": "input"
64
+ },
65
+ "path": {
66
+ "type": "string"
67
+ },
68
+ "type": {
69
+ "enum": [
70
+ "string",
71
+ "number",
72
+ "boolean"
73
+ ]
74
+ },
75
+ "default": {
76
+ "type": [
77
+ "string",
78
+ "number",
79
+ "boolean"
80
+ ]
81
+ }
82
+ },
83
+ "required": [
84
+ "kind",
85
+ "path"
86
+ ],
87
+ "additionalProperties": false
88
+ },
89
+ {
90
+ "type": "object",
91
+ "properties": {
92
+ "kind": {
93
+ "const": "env"
94
+ },
95
+ "name": {
96
+ "type": "string"
97
+ },
98
+ "default": {
99
+ "type": "string"
100
+ }
101
+ },
102
+ "required": [
103
+ "kind",
104
+ "name"
105
+ ],
106
+ "additionalProperties": false
107
+ },
108
+ {
109
+ "type": "object",
110
+ "properties": {
111
+ "kind": {
112
+ "const": "file"
113
+ },
114
+ "path": {
115
+ "type": "string"
116
+ },
117
+ "readMode": {
118
+ "enum": [
119
+ "whole",
120
+ "first-line"
121
+ ]
122
+ },
123
+ "regex": {
124
+ "type": "string"
125
+ },
126
+ "cache": {
127
+ "anyOf": [
128
+ {
129
+ "type": "object",
130
+ "properties": {
131
+ "ttl": {
132
+ "type": "string"
133
+ }
134
+ },
135
+ "required": [
136
+ "ttl"
137
+ ],
138
+ "additionalProperties": false
139
+ },
140
+ {
141
+ "type": "object",
142
+ "properties": {
143
+ "watch_file": {
144
+ "type": "string"
145
+ }
146
+ },
147
+ "required": [
148
+ "watch_file"
149
+ ],
150
+ "additionalProperties": false
151
+ },
152
+ {
153
+ "type": "object",
154
+ "properties": {
155
+ "depends_on": {
156
+ "type": "array",
157
+ "items": {
158
+ "type": "string"
159
+ }
160
+ }
161
+ },
162
+ "required": [
163
+ "depends_on"
164
+ ],
165
+ "additionalProperties": false
166
+ },
167
+ {
168
+ "type": "object",
169
+ "properties": {
170
+ "key": {
171
+ "type": "string"
172
+ }
173
+ },
174
+ "required": [
175
+ "key"
176
+ ],
177
+ "additionalProperties": false
178
+ },
179
+ {
180
+ "type": "object",
181
+ "properties": {
182
+ "never": {
183
+ "const": true
184
+ }
185
+ },
186
+ "required": [
187
+ "never"
188
+ ],
189
+ "additionalProperties": false
190
+ }
191
+ ]
192
+ },
193
+ "default": {
194
+ "type": "string"
195
+ }
196
+ },
197
+ "required": [
198
+ "kind",
199
+ "path",
200
+ "cache"
201
+ ],
202
+ "additionalProperties": false
203
+ },
204
+ {
205
+ "type": "object",
206
+ "properties": {
207
+ "kind": {
208
+ "const": "shell"
209
+ },
210
+ "command": {
211
+ "type": "string"
212
+ },
213
+ "regex": {
214
+ "type": "string"
215
+ },
216
+ "cache": {
217
+ "anyOf": [
218
+ {
219
+ "type": "object",
220
+ "properties": {
221
+ "ttl": {
222
+ "type": "string"
223
+ }
224
+ },
225
+ "required": [
226
+ "ttl"
227
+ ],
228
+ "additionalProperties": false
229
+ },
230
+ {
231
+ "type": "object",
232
+ "properties": {
233
+ "watch_file": {
234
+ "type": "string"
235
+ }
236
+ },
237
+ "required": [
238
+ "watch_file"
239
+ ],
240
+ "additionalProperties": false
241
+ },
242
+ {
243
+ "type": "object",
244
+ "properties": {
245
+ "depends_on": {
246
+ "type": "array",
247
+ "items": {
248
+ "type": "string"
249
+ }
250
+ }
251
+ },
252
+ "required": [
253
+ "depends_on"
254
+ ],
255
+ "additionalProperties": false
256
+ },
257
+ {
258
+ "type": "object",
259
+ "properties": {
260
+ "key": {
261
+ "type": "string"
262
+ }
263
+ },
264
+ "required": [
265
+ "key"
266
+ ],
267
+ "additionalProperties": false
268
+ },
269
+ {
270
+ "type": "object",
271
+ "properties": {
272
+ "never": {
273
+ "const": true
274
+ }
275
+ },
276
+ "required": [
277
+ "never"
278
+ ],
279
+ "additionalProperties": false
280
+ }
281
+ ]
282
+ },
283
+ "default": {
284
+ "type": "string"
285
+ }
286
+ },
287
+ "required": [
288
+ "kind",
289
+ "command",
290
+ "cache"
291
+ ],
292
+ "additionalProperties": false
293
+ },
294
+ {
295
+ "type": "object",
296
+ "properties": {
297
+ "kind": {
298
+ "const": "template"
299
+ },
300
+ "template": {
301
+ "type": "string"
302
+ },
303
+ "cache": {
304
+ "anyOf": [
305
+ {
306
+ "type": "object",
307
+ "properties": {
308
+ "ttl": {
309
+ "type": "string"
310
+ }
311
+ },
312
+ "required": [
313
+ "ttl"
314
+ ],
315
+ "additionalProperties": false
316
+ },
317
+ {
318
+ "type": "object",
319
+ "properties": {
320
+ "watch_file": {
321
+ "type": "string"
322
+ }
323
+ },
324
+ "required": [
325
+ "watch_file"
326
+ ],
327
+ "additionalProperties": false
328
+ },
329
+ {
330
+ "type": "object",
331
+ "properties": {
332
+ "depends_on": {
333
+ "type": "array",
334
+ "items": {
335
+ "type": "string"
336
+ }
337
+ }
338
+ },
339
+ "required": [
340
+ "depends_on"
341
+ ],
342
+ "additionalProperties": false
343
+ },
344
+ {
345
+ "type": "object",
346
+ "properties": {
347
+ "key": {
348
+ "type": "string"
349
+ }
350
+ },
351
+ "required": [
352
+ "key"
353
+ ],
354
+ "additionalProperties": false
355
+ },
356
+ {
357
+ "type": "object",
358
+ "properties": {
359
+ "never": {
360
+ "const": true
361
+ }
362
+ },
363
+ "required": [
364
+ "never"
365
+ ],
366
+ "additionalProperties": false
367
+ }
368
+ ]
369
+ },
370
+ "default": {
371
+ "type": "string"
372
+ }
373
+ },
374
+ "required": [
375
+ "kind",
376
+ "template"
377
+ ],
378
+ "additionalProperties": false
379
+ },
380
+ {
381
+ "type": "object",
382
+ "properties": {
383
+ "kind": {
384
+ "const": "time"
385
+ },
386
+ "layout": {
387
+ "type": "string"
388
+ },
389
+ "cache": {
390
+ "anyOf": [
391
+ {
392
+ "type": "object",
393
+ "properties": {
394
+ "ttl": {
395
+ "type": "string"
396
+ }
397
+ },
398
+ "required": [
399
+ "ttl"
400
+ ],
401
+ "additionalProperties": false
402
+ }
403
+ ]
404
+ },
405
+ "default": {
406
+ "type": "string"
407
+ }
408
+ },
409
+ "required": [
410
+ "kind",
411
+ "layout"
412
+ ],
413
+ "additionalProperties": false
414
+ },
415
+ {
416
+ "type": "object",
417
+ "properties": {
418
+ "kind": {
419
+ "const": "git"
420
+ },
421
+ "field": {
422
+ "enum": [
423
+ "branch",
424
+ "sha",
425
+ "dirty",
426
+ "ahead",
427
+ "behind",
428
+ "stash"
429
+ ]
430
+ },
431
+ "cache": {
432
+ "anyOf": [
433
+ {
434
+ "type": "object",
435
+ "properties": {
436
+ "ttl": {
437
+ "type": "string"
438
+ }
439
+ },
440
+ "required": [
441
+ "ttl"
442
+ ],
443
+ "additionalProperties": false
444
+ },
445
+ {
446
+ "type": "object",
447
+ "properties": {
448
+ "watch_file": {
449
+ "type": "string"
450
+ }
451
+ },
452
+ "required": [
453
+ "watch_file"
454
+ ],
455
+ "additionalProperties": false
456
+ },
457
+ {
458
+ "type": "object",
459
+ "properties": {
460
+ "depends_on": {
461
+ "type": "array",
462
+ "items": {
463
+ "type": "string"
464
+ }
465
+ }
466
+ },
467
+ "required": [
468
+ "depends_on"
469
+ ],
470
+ "additionalProperties": false
471
+ },
472
+ {
473
+ "type": "object",
474
+ "properties": {
475
+ "key": {
476
+ "type": "string"
477
+ }
478
+ },
479
+ "required": [
480
+ "key"
481
+ ],
482
+ "additionalProperties": false
483
+ },
484
+ {
485
+ "type": "object",
486
+ "properties": {
487
+ "never": {
488
+ "const": true
489
+ }
490
+ },
491
+ "required": [
492
+ "never"
493
+ ],
494
+ "additionalProperties": false
495
+ }
496
+ ]
497
+ },
498
+ "default": {
499
+ "type": "string"
500
+ }
501
+ },
502
+ "required": [
503
+ "kind",
504
+ "field",
505
+ "cache"
506
+ ],
507
+ "additionalProperties": false
508
+ },
509
+ {
510
+ "type": "object",
511
+ "properties": {
512
+ "kind": {
513
+ "const": "state"
514
+ },
515
+ "key": {
516
+ "type": "string"
517
+ },
518
+ "default": {
519
+ "type": "string"
520
+ }
521
+ },
522
+ "required": [
523
+ "kind",
524
+ "key"
525
+ ],
526
+ "additionalProperties": false
527
+ }
528
+ ]
529
+ }
530
+ },
531
+ "segments": {
532
+ "type": "object",
533
+ "additionalProperties": {
534
+ "type": "object",
535
+ "properties": {
536
+ "template": {
537
+ "type": "string"
538
+ },
539
+ "width": {
540
+ "anyOf": [
541
+ {
542
+ "const": "auto"
543
+ },
544
+ {
545
+ "type": "integer",
546
+ "minimum": 1
547
+ }
548
+ ]
549
+ },
550
+ "justify": {
551
+ "enum": [
552
+ "left",
553
+ "center",
554
+ "right"
555
+ ]
556
+ },
557
+ "truncate": {
558
+ "enum": [
559
+ "right",
560
+ "left",
561
+ "middle"
562
+ ]
563
+ },
564
+ "bg": {
565
+ "type": "string"
566
+ },
567
+ "fg": {
568
+ "type": "string"
569
+ },
570
+ "when": {
571
+ "type": "string"
572
+ },
573
+ "palette": {
574
+ "type": "string"
575
+ },
576
+ "vars": {
577
+ "type": "object",
578
+ "additionalProperties": {
579
+ "anyOf": [
580
+ {
581
+ "type": "object",
582
+ "properties": {
583
+ "kind": {
584
+ "const": "literal"
585
+ },
586
+ "value": {
587
+ "type": [
588
+ "string",
589
+ "number",
590
+ "boolean"
591
+ ]
592
+ },
593
+ "default": {
594
+ "type": "string"
595
+ }
596
+ },
597
+ "required": [
598
+ "kind",
599
+ "value"
600
+ ],
601
+ "additionalProperties": false
602
+ },
603
+ {
604
+ "type": "object",
605
+ "properties": {
606
+ "kind": {
607
+ "const": "input"
608
+ },
609
+ "path": {
610
+ "type": "string"
611
+ },
612
+ "type": {
613
+ "enum": [
614
+ "string",
615
+ "number",
616
+ "boolean"
617
+ ]
618
+ },
619
+ "default": {
620
+ "type": [
621
+ "string",
622
+ "number",
623
+ "boolean"
624
+ ]
625
+ }
626
+ },
627
+ "required": [
628
+ "kind",
629
+ "path"
630
+ ],
631
+ "additionalProperties": false
632
+ },
633
+ {
634
+ "type": "object",
635
+ "properties": {
636
+ "kind": {
637
+ "const": "env"
638
+ },
639
+ "name": {
640
+ "type": "string"
641
+ },
642
+ "default": {
643
+ "type": "string"
644
+ }
645
+ },
646
+ "required": [
647
+ "kind",
648
+ "name"
649
+ ],
650
+ "additionalProperties": false
651
+ },
652
+ {
653
+ "type": "object",
654
+ "properties": {
655
+ "kind": {
656
+ "const": "file"
657
+ },
658
+ "path": {
659
+ "type": "string"
660
+ },
661
+ "readMode": {
662
+ "enum": [
663
+ "whole",
664
+ "first-line"
665
+ ]
666
+ },
667
+ "regex": {
668
+ "type": "string"
669
+ },
670
+ "cache": {
671
+ "anyOf": [
672
+ {
673
+ "type": "object",
674
+ "properties": {
675
+ "ttl": {
676
+ "type": "string"
677
+ }
678
+ },
679
+ "required": [
680
+ "ttl"
681
+ ],
682
+ "additionalProperties": false
683
+ },
684
+ {
685
+ "type": "object",
686
+ "properties": {
687
+ "watch_file": {
688
+ "type": "string"
689
+ }
690
+ },
691
+ "required": [
692
+ "watch_file"
693
+ ],
694
+ "additionalProperties": false
695
+ },
696
+ {
697
+ "type": "object",
698
+ "properties": {
699
+ "depends_on": {
700
+ "type": "array",
701
+ "items": {
702
+ "type": "string"
703
+ }
704
+ }
705
+ },
706
+ "required": [
707
+ "depends_on"
708
+ ],
709
+ "additionalProperties": false
710
+ },
711
+ {
712
+ "type": "object",
713
+ "properties": {
714
+ "key": {
715
+ "type": "string"
716
+ }
717
+ },
718
+ "required": [
719
+ "key"
720
+ ],
721
+ "additionalProperties": false
722
+ },
723
+ {
724
+ "type": "object",
725
+ "properties": {
726
+ "never": {
727
+ "const": true
728
+ }
729
+ },
730
+ "required": [
731
+ "never"
732
+ ],
733
+ "additionalProperties": false
734
+ }
735
+ ]
736
+ },
737
+ "default": {
738
+ "type": "string"
739
+ }
740
+ },
741
+ "required": [
742
+ "kind",
743
+ "path",
744
+ "cache"
745
+ ],
746
+ "additionalProperties": false
747
+ },
748
+ {
749
+ "type": "object",
750
+ "properties": {
751
+ "kind": {
752
+ "const": "shell"
753
+ },
754
+ "command": {
755
+ "type": "string"
756
+ },
757
+ "regex": {
758
+ "type": "string"
759
+ },
760
+ "cache": {
761
+ "anyOf": [
762
+ {
763
+ "type": "object",
764
+ "properties": {
765
+ "ttl": {
766
+ "type": "string"
767
+ }
768
+ },
769
+ "required": [
770
+ "ttl"
771
+ ],
772
+ "additionalProperties": false
773
+ },
774
+ {
775
+ "type": "object",
776
+ "properties": {
777
+ "watch_file": {
778
+ "type": "string"
779
+ }
780
+ },
781
+ "required": [
782
+ "watch_file"
783
+ ],
784
+ "additionalProperties": false
785
+ },
786
+ {
787
+ "type": "object",
788
+ "properties": {
789
+ "depends_on": {
790
+ "type": "array",
791
+ "items": {
792
+ "type": "string"
793
+ }
794
+ }
795
+ },
796
+ "required": [
797
+ "depends_on"
798
+ ],
799
+ "additionalProperties": false
800
+ },
801
+ {
802
+ "type": "object",
803
+ "properties": {
804
+ "key": {
805
+ "type": "string"
806
+ }
807
+ },
808
+ "required": [
809
+ "key"
810
+ ],
811
+ "additionalProperties": false
812
+ },
813
+ {
814
+ "type": "object",
815
+ "properties": {
816
+ "never": {
817
+ "const": true
818
+ }
819
+ },
820
+ "required": [
821
+ "never"
822
+ ],
823
+ "additionalProperties": false
824
+ }
825
+ ]
826
+ },
827
+ "default": {
828
+ "type": "string"
829
+ }
830
+ },
831
+ "required": [
832
+ "kind",
833
+ "command",
834
+ "cache"
835
+ ],
836
+ "additionalProperties": false
837
+ },
838
+ {
839
+ "type": "object",
840
+ "properties": {
841
+ "kind": {
842
+ "const": "template"
843
+ },
844
+ "template": {
845
+ "type": "string"
846
+ },
847
+ "cache": {
848
+ "anyOf": [
849
+ {
850
+ "type": "object",
851
+ "properties": {
852
+ "ttl": {
853
+ "type": "string"
854
+ }
855
+ },
856
+ "required": [
857
+ "ttl"
858
+ ],
859
+ "additionalProperties": false
860
+ },
861
+ {
862
+ "type": "object",
863
+ "properties": {
864
+ "watch_file": {
865
+ "type": "string"
866
+ }
867
+ },
868
+ "required": [
869
+ "watch_file"
870
+ ],
871
+ "additionalProperties": false
872
+ },
873
+ {
874
+ "type": "object",
875
+ "properties": {
876
+ "depends_on": {
877
+ "type": "array",
878
+ "items": {
879
+ "type": "string"
880
+ }
881
+ }
882
+ },
883
+ "required": [
884
+ "depends_on"
885
+ ],
886
+ "additionalProperties": false
887
+ },
888
+ {
889
+ "type": "object",
890
+ "properties": {
891
+ "key": {
892
+ "type": "string"
893
+ }
894
+ },
895
+ "required": [
896
+ "key"
897
+ ],
898
+ "additionalProperties": false
899
+ },
900
+ {
901
+ "type": "object",
902
+ "properties": {
903
+ "never": {
904
+ "const": true
905
+ }
906
+ },
907
+ "required": [
908
+ "never"
909
+ ],
910
+ "additionalProperties": false
911
+ }
912
+ ]
913
+ },
914
+ "default": {
915
+ "type": "string"
916
+ }
917
+ },
918
+ "required": [
919
+ "kind",
920
+ "template"
921
+ ],
922
+ "additionalProperties": false
923
+ },
924
+ {
925
+ "type": "object",
926
+ "properties": {
927
+ "kind": {
928
+ "const": "time"
929
+ },
930
+ "layout": {
931
+ "type": "string"
932
+ },
933
+ "cache": {
934
+ "anyOf": [
935
+ {
936
+ "type": "object",
937
+ "properties": {
938
+ "ttl": {
939
+ "type": "string"
940
+ }
941
+ },
942
+ "required": [
943
+ "ttl"
944
+ ],
945
+ "additionalProperties": false
946
+ }
947
+ ]
948
+ },
949
+ "default": {
950
+ "type": "string"
951
+ }
952
+ },
953
+ "required": [
954
+ "kind",
955
+ "layout"
956
+ ],
957
+ "additionalProperties": false
958
+ },
959
+ {
960
+ "type": "object",
961
+ "properties": {
962
+ "kind": {
963
+ "const": "git"
964
+ },
965
+ "field": {
966
+ "enum": [
967
+ "branch",
968
+ "sha",
969
+ "dirty",
970
+ "ahead",
971
+ "behind",
972
+ "stash"
973
+ ]
974
+ },
975
+ "cache": {
976
+ "anyOf": [
977
+ {
978
+ "type": "object",
979
+ "properties": {
980
+ "ttl": {
981
+ "type": "string"
982
+ }
983
+ },
984
+ "required": [
985
+ "ttl"
986
+ ],
987
+ "additionalProperties": false
988
+ },
989
+ {
990
+ "type": "object",
991
+ "properties": {
992
+ "watch_file": {
993
+ "type": "string"
994
+ }
995
+ },
996
+ "required": [
997
+ "watch_file"
998
+ ],
999
+ "additionalProperties": false
1000
+ },
1001
+ {
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "depends_on": {
1005
+ "type": "array",
1006
+ "items": {
1007
+ "type": "string"
1008
+ }
1009
+ }
1010
+ },
1011
+ "required": [
1012
+ "depends_on"
1013
+ ],
1014
+ "additionalProperties": false
1015
+ },
1016
+ {
1017
+ "type": "object",
1018
+ "properties": {
1019
+ "key": {
1020
+ "type": "string"
1021
+ }
1022
+ },
1023
+ "required": [
1024
+ "key"
1025
+ ],
1026
+ "additionalProperties": false
1027
+ },
1028
+ {
1029
+ "type": "object",
1030
+ "properties": {
1031
+ "never": {
1032
+ "const": true
1033
+ }
1034
+ },
1035
+ "required": [
1036
+ "never"
1037
+ ],
1038
+ "additionalProperties": false
1039
+ }
1040
+ ]
1041
+ },
1042
+ "default": {
1043
+ "type": "string"
1044
+ }
1045
+ },
1046
+ "required": [
1047
+ "kind",
1048
+ "field",
1049
+ "cache"
1050
+ ],
1051
+ "additionalProperties": false
1052
+ },
1053
+ {
1054
+ "type": "object",
1055
+ "properties": {
1056
+ "kind": {
1057
+ "const": "state"
1058
+ },
1059
+ "key": {
1060
+ "type": "string"
1061
+ },
1062
+ "default": {
1063
+ "type": "string"
1064
+ }
1065
+ },
1066
+ "required": [
1067
+ "kind",
1068
+ "key"
1069
+ ],
1070
+ "additionalProperties": false
1071
+ }
1072
+ ]
1073
+ }
1074
+ }
1075
+ },
1076
+ "required": [
1077
+ "template"
1078
+ ],
1079
+ "additionalProperties": false
1080
+ }
1081
+ },
1082
+ "root": {
1083
+ "$ref": "#/definitions/LayoutNode"
1084
+ },
1085
+ "actions": {
1086
+ "type": "object",
1087
+ "additionalProperties": {
1088
+ "anyOf": [
1089
+ {
1090
+ "type": "object",
1091
+ "properties": {
1092
+ "set": {
1093
+ "type": "string"
1094
+ },
1095
+ "to": {
1096
+ "type": "string"
1097
+ }
1098
+ },
1099
+ "required": [
1100
+ "set",
1101
+ "to"
1102
+ ],
1103
+ "additionalProperties": false
1104
+ },
1105
+ {
1106
+ "type": "object",
1107
+ "properties": {
1108
+ "set": {
1109
+ "type": "string"
1110
+ },
1111
+ "from": {
1112
+ "enum": [
1113
+ "themes",
1114
+ "styles"
1115
+ ]
1116
+ }
1117
+ },
1118
+ "required": [
1119
+ "set",
1120
+ "from"
1121
+ ],
1122
+ "additionalProperties": false
1123
+ },
1124
+ {
1125
+ "type": "object",
1126
+ "properties": {
1127
+ "set": {
1128
+ "type": "string"
1129
+ },
1130
+ "min": {
1131
+ "type": "integer"
1132
+ },
1133
+ "max": {
1134
+ "type": "integer"
1135
+ },
1136
+ "by": {
1137
+ "type": "integer"
1138
+ }
1139
+ },
1140
+ "required": [
1141
+ "set",
1142
+ "min",
1143
+ "max",
1144
+ "by"
1145
+ ],
1146
+ "additionalProperties": false
1147
+ },
1148
+ {
1149
+ "type": "object",
1150
+ "properties": {
1151
+ "set": {
1152
+ "type": "string"
1153
+ },
1154
+ "int": {
1155
+ "const": true
1156
+ }
1157
+ },
1158
+ "required": [
1159
+ "set",
1160
+ "int"
1161
+ ],
1162
+ "additionalProperties": false
1163
+ },
1164
+ {
1165
+ "type": "object",
1166
+ "properties": {
1167
+ "set": {
1168
+ "type": "string"
1169
+ },
1170
+ "cycle": {
1171
+ "type": "array",
1172
+ "items": {
1173
+ "type": "string",
1174
+ "minLength": 1
1175
+ },
1176
+ "minItems": 2,
1177
+ "uniqueItems": true
1178
+ }
1179
+ },
1180
+ "required": [
1181
+ "set",
1182
+ "cycle"
1183
+ ],
1184
+ "additionalProperties": false
1185
+ },
1186
+ {
1187
+ "type": "object",
1188
+ "properties": {
1189
+ "copy": {
1190
+ "type": "string"
1191
+ }
1192
+ },
1193
+ "required": [
1194
+ "copy"
1195
+ ],
1196
+ "additionalProperties": false
1197
+ },
1198
+ {
1199
+ "type": "object",
1200
+ "properties": {
1201
+ "open": {
1202
+ "type": "string"
1203
+ }
1204
+ },
1205
+ "required": [
1206
+ "open"
1207
+ ],
1208
+ "additionalProperties": false
1209
+ }
1210
+ ]
1211
+ }
1212
+ },
1213
+ "helpers": {
1214
+ "type": "object",
1215
+ "additionalProperties": {
1216
+ "type": "string"
1217
+ }
1218
+ }
1219
+ },
1220
+ "definitions": {
1221
+ "LayoutNode": {
1222
+ "anyOf": [
1223
+ {
1224
+ "type": "string"
1225
+ },
1226
+ {
1227
+ "type": "object",
1228
+ "properties": {
1229
+ "kind": {
1230
+ "const": "container"
1231
+ },
1232
+ "direction": {
1233
+ "enum": [
1234
+ "vertical",
1235
+ "horizontal"
1236
+ ]
1237
+ },
1238
+ "children": {
1239
+ "type": "array",
1240
+ "items": {
1241
+ "$ref": "#/definitions/LayoutNode"
1242
+ }
1243
+ },
1244
+ "when": {
1245
+ "type": "string"
1246
+ }
1247
+ },
1248
+ "required": [
1249
+ "kind",
1250
+ "direction",
1251
+ "children"
1252
+ ],
1253
+ "additionalProperties": false
1254
+ },
1255
+ {
1256
+ "type": "object",
1257
+ "properties": {
1258
+ "kind": {
1259
+ "const": "segment"
1260
+ },
1261
+ "name": {
1262
+ "type": "string"
1263
+ },
1264
+ "when": {
1265
+ "type": "string"
1266
+ }
1267
+ },
1268
+ "required": [
1269
+ "kind",
1270
+ "name"
1271
+ ],
1272
+ "additionalProperties": false
1273
+ },
1274
+ {
1275
+ "type": "object",
1276
+ "properties": {
1277
+ "kind": {
1278
+ "const": "group"
1279
+ },
1280
+ "name": {
1281
+ "type": "string",
1282
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
1283
+ },
1284
+ "label": {
1285
+ "type": "string",
1286
+ "pattern": "^[^\\n\\r]*$"
1287
+ },
1288
+ "open": {
1289
+ "type": "boolean"
1290
+ },
1291
+ "direction": {
1292
+ "enum": [
1293
+ "vertical",
1294
+ "horizontal"
1295
+ ]
1296
+ },
1297
+ "key": {
1298
+ "type": "string",
1299
+ "minLength": 1
1300
+ },
1301
+ "bg": {
1302
+ "type": "string"
1303
+ },
1304
+ "fg": {
1305
+ "type": "string"
1306
+ },
1307
+ "when": {
1308
+ "type": "string"
1309
+ },
1310
+ "children": {
1311
+ "type": "array",
1312
+ "items": {
1313
+ "$ref": "#/definitions/LayoutNode"
1314
+ }
1315
+ }
1316
+ },
1317
+ "required": [
1318
+ "kind",
1319
+ "name",
1320
+ "label",
1321
+ "children"
1322
+ ],
1323
+ "additionalProperties": false
1324
+ },
1325
+ {
1326
+ "type": "object",
1327
+ "properties": {
1328
+ "seg": {
1329
+ "type": "string"
1330
+ },
1331
+ "when": {
1332
+ "type": "string"
1333
+ }
1334
+ },
1335
+ "required": [
1336
+ "seg"
1337
+ ],
1338
+ "additionalProperties": false
1339
+ },
1340
+ {
1341
+ "type": "object",
1342
+ "properties": {
1343
+ "h": {
1344
+ "type": "array",
1345
+ "items": {
1346
+ "$ref": "#/definitions/LayoutNode"
1347
+ }
1348
+ },
1349
+ "when": {
1350
+ "type": "string"
1351
+ }
1352
+ },
1353
+ "required": [
1354
+ "h"
1355
+ ],
1356
+ "additionalProperties": false
1357
+ },
1358
+ {
1359
+ "type": "object",
1360
+ "properties": {
1361
+ "v": {
1362
+ "type": "array",
1363
+ "items": {
1364
+ "$ref": "#/definitions/LayoutNode"
1365
+ }
1366
+ },
1367
+ "when": {
1368
+ "type": "string"
1369
+ }
1370
+ },
1371
+ "required": [
1372
+ "v"
1373
+ ],
1374
+ "additionalProperties": false
1375
+ }
1376
+ ]
1377
+ }
1378
+ }
1379
+ }