@lesliechan721/aw-plugin-core 0.1.0-beta.6 → 0.1.0-beta.60

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 (58) hide show
  1. package/dist/aw-capabilities.d.ts +27 -0
  2. package/dist/aw-capabilities.js +117 -0
  3. package/dist/aw-capabilities.js.map +1 -0
  4. package/dist/catalog-file-modes.d.ts +5 -0
  5. package/dist/catalog-file-modes.js +67 -0
  6. package/dist/catalog-file-modes.js.map +1 -0
  7. package/dist/catalog-workspace-resolution.d.ts +3 -0
  8. package/dist/catalog-workspace-resolution.js +34 -0
  9. package/dist/catalog-workspace-resolution.js.map +1 -0
  10. package/dist/generated/plugin-manifest-v3.d.ts +1532 -0
  11. package/dist/generated/{plugin-manifest-v1.js → plugin-manifest-v3.js} +1 -1
  12. package/dist/generated/plugin-manifest-v3.js.map +1 -0
  13. package/dist/index.d.ts +3 -2
  14. package/dist/index.js +2 -1
  15. package/dist/index.js.map +1 -1
  16. package/dist/managed-commands.d.ts +167 -0
  17. package/dist/managed-commands.js +463 -0
  18. package/dist/managed-commands.js.map +1 -0
  19. package/dist/manifest-contract.d.ts +3 -6
  20. package/dist/manifest-contract.js +271 -407
  21. package/dist/manifest-contract.js.map +1 -1
  22. package/dist/manifest-type-contract.d.ts +2 -2
  23. package/dist/manifest.d.ts +12 -8
  24. package/dist/manifest.js +18 -7
  25. package/dist/manifest.js.map +1 -1
  26. package/dist/native-runtime/reader-runtime.mjs +34 -0
  27. package/dist/native-runtime/reader.d.mts +6 -0
  28. package/dist/native-runtime/reader.mjs +11 -0
  29. package/dist/native-tools.d.ts +48 -0
  30. package/dist/native-tools.js +192 -0
  31. package/dist/native-tools.js.map +1 -0
  32. package/dist/plugin-authoring-capabilities.d.ts +1 -1
  33. package/dist/plugin-authoring-capabilities.js +133 -26
  34. package/dist/plugin-authoring-capabilities.js.map +1 -1
  35. package/dist/plugin-config.d.ts +47 -0
  36. package/dist/plugin-config.js +1355 -0
  37. package/dist/plugin-config.js.map +1 -0
  38. package/dist/plugin-requirements.d.ts +34 -0
  39. package/dist/plugin-requirements.js +300 -0
  40. package/dist/plugin-requirements.js.map +1 -0
  41. package/dist/plugin-script-contract.d.ts +11 -12
  42. package/dist/plugin-script-contract.js +44 -71
  43. package/dist/plugin-script-contract.js.map +1 -1
  44. package/dist/runtime-config.d.ts +38 -0
  45. package/dist/runtime-config.js +31 -0
  46. package/dist/runtime-config.js.map +1 -0
  47. package/dist/types.d.ts +266 -73
  48. package/dist/workspace.d.ts +37 -9
  49. package/dist/workspace.js +419 -191
  50. package/dist/workspace.js.map +1 -1
  51. package/package.json +16 -6
  52. package/schemas/plugin-manifest-v3.json +2655 -0
  53. package/dist/generated/plugin-manifest-v1.d.ts +0 -368
  54. package/dist/generated/plugin-manifest-v1.js.map +0 -1
  55. package/dist/plugin-release.d.ts +0 -30
  56. package/dist/plugin-release.js +0 -187
  57. package/dist/plugin-release.js.map +0 -1
  58. package/schemas/plugin-manifest-v1.json +0 -329
@@ -0,0 +1,2655 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.agent-workflows.dev/plugin-manifest-v3.json",
4
+ "title": "PluginManifestSourceV3",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "name", "version", "description", "marketplace"],
8
+ "properties": {
9
+ "schemaVersion": { "const": 3 },
10
+ "name": {
11
+ "type": "string",
12
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
13
+ },
14
+ "version": { "$ref": "#/$defs/semver" },
15
+ "description": { "type": "string", "minLength": 1 },
16
+ "dependencies": {
17
+ "type": "array",
18
+ "maxItems": 64,
19
+ "uniqueItems": true,
20
+ "items": {
21
+ "type": "string",
22
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
23
+ }
24
+ },
25
+ "requires": { "$ref": "#/$defs/requires" },
26
+ "skills": { "$ref": "#/$defs/pluginPath" },
27
+ "slashCommands": { "$ref": "#/$defs/pluginPath" },
28
+ "mcpServers": { "$ref": "#/$defs/pluginPath" },
29
+ "apps": { "$ref": "#/$defs/pluginPath" },
30
+ "distributions": { "$ref": "#/$defs/distributions" },
31
+ "marketplace": { "$ref": "#/$defs/marketplace" },
32
+ "interface": { "$ref": "#/$defs/interface" },
33
+ "extensions": { "$ref": "#/$defs/extensions" },
34
+ "artifacts": { "$ref": "#/$defs/artifacts" },
35
+ "managedCommands": { "$ref": "#/$defs/managedCommands" },
36
+ "nativeTools": { "$ref": "#/$defs/nativeTools" },
37
+ "buildConfig": { "$ref": "#/$defs/buildConfig" },
38
+ "scripts": { "$ref": "#/$defs/scripts" },
39
+ "config": { "$ref": "#/$defs/config" }
40
+ },
41
+ "$defs": {
42
+ "nativeToolBinding": {
43
+ "oneOf": [
44
+ {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": [
48
+ "key",
49
+ "platforms",
50
+ "policy"
51
+ ],
52
+ "properties": {
53
+ "key": {
54
+ "$ref": "#/$defs/commandName"
55
+ },
56
+ "platforms": {
57
+ "type": "array",
58
+ "minItems": 1,
59
+ "maxItems": 1,
60
+ "uniqueItems": true,
61
+ "items": {
62
+ "const": "win32"
63
+ }
64
+ },
65
+ "policy": {
66
+ "const": "required"
67
+ }
68
+ }
69
+ },
70
+ {
71
+ "type": "object",
72
+ "additionalProperties": false,
73
+ "required": [
74
+ "key",
75
+ "platforms",
76
+ "policy",
77
+ "fallback"
78
+ ],
79
+ "properties": {
80
+ "key": {
81
+ "$ref": "#/$defs/commandName"
82
+ },
83
+ "platforms": {
84
+ "type": "array",
85
+ "minItems": 1,
86
+ "maxItems": 1,
87
+ "uniqueItems": true,
88
+ "items": {
89
+ "const": "win32"
90
+ }
91
+ },
92
+ "policy": {
93
+ "const": "preferred"
94
+ },
95
+ "fallback": {
96
+ "$ref": "#/$defs/commandName"
97
+ }
98
+ }
99
+ }
100
+ ]
101
+ },
102
+ "nativeToolConsumer": {
103
+ "type": "object",
104
+ "additionalProperties": false,
105
+ "required": [
106
+ "kind",
107
+ "key",
108
+ "tools"
109
+ ],
110
+ "properties": {
111
+ "kind": {
112
+ "enum": [
113
+ "managed-command-set",
114
+ "plugin-test"
115
+ ]
116
+ },
117
+ "key": {
118
+ "$ref": "#/$defs/commandName"
119
+ },
120
+ "tools": {
121
+ "type": "array",
122
+ "minItems": 1,
123
+ "maxItems": 32,
124
+ "items": {
125
+ "$ref": "#/$defs/nativeToolBinding"
126
+ }
127
+ }
128
+ }
129
+ },
130
+ "nativeTools": {
131
+ "type": "object",
132
+ "additionalProperties": false,
133
+ "required": [
134
+ "definitions",
135
+ "consumers"
136
+ ],
137
+ "properties": {
138
+ "reader": {
139
+ "$ref": "#/$defs/pluginPath"
140
+ },
141
+ "definitions": {
142
+ "type": "array",
143
+ "minItems": 1,
144
+ "maxItems": 32,
145
+ "items": {
146
+ "type": "object",
147
+ "additionalProperties": false,
148
+ "required": [
149
+ "key",
150
+ "protocol"
151
+ ],
152
+ "properties": {
153
+ "key": {
154
+ "$ref": "#/$defs/commandName"
155
+ },
156
+ "protocol": {
157
+ "type": "string",
158
+ "maxLength": 128,
159
+ "pattern": "^[a-z][a-z0-9]*(?:[.-][a-z0-9]+)+$"
160
+ }
161
+ }
162
+ }
163
+ },
164
+ "consumers": {
165
+ "type": "array",
166
+ "minItems": 1,
167
+ "maxItems": 128,
168
+ "items": {
169
+ "$ref": "#/$defs/nativeToolConsumer"
170
+ }
171
+ }
172
+ }
173
+ },
174
+ "commandName": {
175
+ "type": "string",
176
+ "pattern": "^[A-Za-z][A-Za-z0-9_.-]{0,63}$"
177
+ },
178
+ "commandRelativeFile": {
179
+ "type": "string",
180
+ "minLength": 1,
181
+ "pattern": "^(?!/|\\./|[A-Za-z]:)(?!.*(?:\\\\|[\\u0000-\\u001f\\u007f-\\u009f]))(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*//)(?!.*\\/$).+$"
182
+ },
183
+ "commandEnvironment": {
184
+ "type": "object",
185
+ "propertyNames": {
186
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
187
+ },
188
+ "additionalProperties": {
189
+ "type": "string",
190
+ "maxLength": 4096
191
+ }
192
+ },
193
+ "commandEnvironmentSource": {
194
+ "type": "object",
195
+ "propertyNames": {
196
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
197
+ },
198
+ "additionalProperties": {
199
+ "type": "string",
200
+ "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
201
+ }
202
+ },
203
+ "commandDefinition": {
204
+ "type": "object",
205
+ "additionalProperties": false,
206
+ "required": [
207
+ "key",
208
+ "runner",
209
+ "entry"
210
+ ],
211
+ "properties": {
212
+ "key": {
213
+ "$ref": "#/$defs/commandName"
214
+ },
215
+ "variant": {
216
+ "$ref": "#/$defs/commandName"
217
+ },
218
+ "runner": {
219
+ "enum": [
220
+ "node",
221
+ "executable"
222
+ ]
223
+ },
224
+ "entry": {
225
+ "$ref": "#/$defs/commandRelativeFile"
226
+ },
227
+ "args": {
228
+ "type": "array",
229
+ "items": {
230
+ "type": "string",
231
+ "maxLength": 4096
232
+ },
233
+ "maxItems": 128
234
+ },
235
+ "env": {
236
+ "$ref": "#/$defs/commandEnvironment"
237
+ },
238
+ "envFrom": {
239
+ "$ref": "#/$defs/commandEnvironmentSource"
240
+ },
241
+ "cwd": {
242
+ "enum": [
243
+ "caller",
244
+ "resource"
245
+ ]
246
+ }
247
+ }
248
+ },
249
+ "managedCommandReference": {
250
+ "type": "object",
251
+ "additionalProperties": false,
252
+ "required": [
253
+ "set",
254
+ "key"
255
+ ],
256
+ "properties": {
257
+ "set": {
258
+ "$ref": "#/$defs/commandName"
259
+ },
260
+ "key": {
261
+ "$ref": "#/$defs/commandName"
262
+ },
263
+ "variant": {
264
+ "$ref": "#/$defs/commandName"
265
+ }
266
+ }
267
+ },
268
+ "managedCommandPermission": {
269
+ "type": "object",
270
+ "additionalProperties": false,
271
+ "required": [
272
+ "command"
273
+ ],
274
+ "properties": {
275
+ "command": {
276
+ "$ref": "#/$defs/managedCommandReference"
277
+ },
278
+ "argsPrefix": {
279
+ "type": "array",
280
+ "items": {
281
+ "type": "string",
282
+ "pattern": "^[A-Za-z0-9_./:@%+=,-]+$"
283
+ }
284
+ }
285
+ }
286
+ },
287
+ "permissionCommands": {
288
+ "type": "array",
289
+ "items": {
290
+ "anyOf": [
291
+ {
292
+ "type": "string",
293
+ "minLength": 1
294
+ },
295
+ {
296
+ "$ref": "#/$defs/managedCommandPermission"
297
+ }
298
+ ]
299
+ }
300
+ },
301
+ "managedCommandProducer": {
302
+ "oneOf": [
303
+ {
304
+ "type": "object",
305
+ "additionalProperties": false,
306
+ "required": [
307
+ "kind",
308
+ "artifactId"
309
+ ],
310
+ "properties": {
311
+ "kind": {
312
+ "const": "artifact"
313
+ },
314
+ "artifactId": {
315
+ "type": "string",
316
+ "minLength": 1
317
+ }
318
+ }
319
+ },
320
+ {
321
+ "type": "object",
322
+ "additionalProperties": false,
323
+ "required": [
324
+ "kind",
325
+ "platform",
326
+ "skillKey"
327
+ ],
328
+ "properties": {
329
+ "kind": {
330
+ "const": "static-skill"
331
+ },
332
+ "platform": {
333
+ "enum": [
334
+ "codex",
335
+ "claude"
336
+ ]
337
+ },
338
+ "skillKey": {
339
+ "type": "string",
340
+ "minLength": 1
341
+ }
342
+ }
343
+ },
344
+ {
345
+ "type": "object",
346
+ "additionalProperties": false,
347
+ "required": [
348
+ "kind",
349
+ "packageKey"
350
+ ],
351
+ "properties": {
352
+ "kind": {
353
+ "const": "package"
354
+ },
355
+ "packageKey": {
356
+ "$ref": "#/$defs/commandName"
357
+ }
358
+ }
359
+ }
360
+ ]
361
+ },
362
+ "managedCommandPackage": {
363
+ "type": "object",
364
+ "additionalProperties": false,
365
+ "required": [
366
+ "key",
367
+ "scope",
368
+ "platforms",
369
+ "sourceDir"
370
+ ],
371
+ "properties": {
372
+ "key": {
373
+ "$ref": "#/$defs/commandName"
374
+ },
375
+ "scope": {
376
+ "enum": [
377
+ "user",
378
+ "project"
379
+ ]
380
+ },
381
+ "platforms": {
382
+ "type": "array",
383
+ "items": {
384
+ "enum": [
385
+ "codex",
386
+ "claude"
387
+ ]
388
+ },
389
+ "minItems": 1,
390
+ "uniqueItems": true
391
+ },
392
+ "sourceDir": {
393
+ "$ref": "#/$defs/pluginPath"
394
+ },
395
+ "render": {
396
+ "const": true
397
+ },
398
+ "refreshKeys": {
399
+ "type": "array",
400
+ "items": {
401
+ "type": "string"
402
+ },
403
+ "uniqueItems": true
404
+ }
405
+ }
406
+ },
407
+ "managedCommandSet": {
408
+ "oneOf": [
409
+ {
410
+ "type": "object",
411
+ "additionalProperties": false,
412
+ "required": [
413
+ "set",
414
+ "producer",
415
+ "mode",
416
+ "entries"
417
+ ],
418
+ "properties": {
419
+ "set": {
420
+ "$ref": "#/$defs/commandName"
421
+ },
422
+ "producer": {
423
+ "$ref": "#/$defs/managedCommandProducer"
424
+ },
425
+ "mode": {
426
+ "const": "static"
427
+ },
428
+ "entries": {
429
+ "type": "array",
430
+ "items": {
431
+ "$ref": "#/$defs/commandDefinition"
432
+ }
433
+ }
434
+ }
435
+ },
436
+ {
437
+ "type": "object",
438
+ "additionalProperties": false,
439
+ "required": [
440
+ "set",
441
+ "producer",
442
+ "mode",
443
+ "refreshKeys"
444
+ ],
445
+ "properties": {
446
+ "set": {
447
+ "$ref": "#/$defs/commandName"
448
+ },
449
+ "producer": {
450
+ "$ref": "#/$defs/managedCommandProducer"
451
+ },
452
+ "mode": {
453
+ "const": "dynamic"
454
+ },
455
+ "refreshKeys": {
456
+ "type": "array",
457
+ "items": {
458
+ "type": "string"
459
+ },
460
+ "uniqueItems": true
461
+ }
462
+ }
463
+ }
464
+ ]
465
+ },
466
+ "managedCommands": {
467
+ "type": "object",
468
+ "additionalProperties": false,
469
+ "required": [],
470
+ "properties": {
471
+ "packages": {
472
+ "type": "array",
473
+ "items": {
474
+ "$ref": "#/$defs/managedCommandPackage"
475
+ }
476
+ },
477
+ "sets": {
478
+ "type": "array",
479
+ "items": {
480
+ "$ref": "#/$defs/managedCommandSet"
481
+ }
482
+ }
483
+ }
484
+ },
485
+ "permissionOverrides": {
486
+ "type": "object",
487
+ "additionalProperties": false,
488
+ "required": [],
489
+ "properties": {
490
+ "codex": {
491
+ "anyOf": [
492
+ {
493
+ "type": "null"
494
+ },
495
+ {
496
+ "type": "object",
497
+ "additionalProperties": false,
498
+ "required": [],
499
+ "properties": {
500
+ "name": {
501
+ "type": "string"
502
+ },
503
+ "allow": {
504
+ "$ref": "#/$defs/permissionCommands"
505
+ },
506
+ "ask": {
507
+ "$ref": "#/$defs/permissionCommands"
508
+ },
509
+ "deny": {
510
+ "$ref": "#/$defs/permissionCommands"
511
+ }
512
+ }
513
+ }
514
+ ]
515
+ },
516
+ "claude": {
517
+ "anyOf": [
518
+ {
519
+ "type": "null"
520
+ },
521
+ {
522
+ "type": "object",
523
+ "additionalProperties": false,
524
+ "required": [],
525
+ "properties": {
526
+ "name": {
527
+ "type": "string"
528
+ },
529
+ "allow": {
530
+ "$ref": "#/$defs/permissionCommands"
531
+ },
532
+ "ask": {
533
+ "$ref": "#/$defs/permissionCommands"
534
+ },
535
+ "deny": {
536
+ "$ref": "#/$defs/permissionCommands"
537
+ },
538
+ "sandbox": {
539
+ "type": "object",
540
+ "additionalProperties": false,
541
+ "required": [
542
+ "excludedCommands"
543
+ ],
544
+ "properties": {
545
+ "excludedCommands": {
546
+ "type": "array",
547
+ "items": {
548
+ "$ref": "#/$defs/managedCommandPermission"
549
+ }
550
+ }
551
+ }
552
+ }
553
+ }
554
+ }
555
+ ]
556
+ }
557
+ }
558
+ },
559
+ "semver": {
560
+ "type": "string",
561
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(?:-((?:0|[1-9][0-9]*|(?:[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*))(?:\\.(?:0|[1-9][0-9]*|(?:[0-9A-Za-z-]*[A-Za-z-][0-9A-Za-z-]*)))*))?(?:\\+([0-9A-Za-z-]+(?:\\.[0-9A-Za-z-]+)*))?$"
562
+ },
563
+ "pluginPath": {
564
+ "type": "string",
565
+ "pattern": "^\\./"
566
+ },
567
+ "requires": {
568
+ "type": "object",
569
+ "additionalProperties": false,
570
+ "required": ["aw"],
571
+ "properties": {
572
+ "aw": {
573
+ "type": "object",
574
+ "additionalProperties": false,
575
+ "properties": {
576
+ "capabilities": {
577
+ "type": "array",
578
+ "uniqueItems": true,
579
+ "items": {
580
+ "type": "string",
581
+ "pattern": "^aw\\.[a-z0-9]+(?:-[a-z0-9]+)*(?:\\.[a-z0-9]+(?:-[a-z0-9]+)*)*\\.v[1-9][0-9]*$"
582
+ }
583
+ }
584
+ }
585
+ }
586
+ }
587
+ },
588
+ "runtimeExportRequires": {
589
+ "type": "object",
590
+ "additionalProperties": false,
591
+ "required": ["aw"],
592
+ "properties": {
593
+ "aw": {
594
+ "type": "object",
595
+ "additionalProperties": false,
596
+ "required": ["capabilities"],
597
+ "properties": {
598
+ "capabilities": {
599
+ "type": "array",
600
+ "uniqueItems": true,
601
+ "items": {
602
+ "type": "string",
603
+ "pattern": "^aw\\.[a-z0-9]+(?:-[a-z0-9]+)*(?:\\.[a-z0-9]+(?:-[a-z0-9]+)*)*\\.v[1-9][0-9]*$"
604
+ }
605
+ }
606
+ }
607
+ }
608
+ }
609
+ },
610
+ "distributions": {
611
+ "type": "object",
612
+ "additionalProperties": false,
613
+ "properties": {
614
+ "agentSkills": {
615
+ "type": "object",
616
+ "additionalProperties": false,
617
+ "properties": {
618
+ "skills": { "$ref": "#/$defs/pluginPath" }
619
+ }
620
+ }
621
+ }
622
+ },
623
+ "marketplace": {
624
+ "type": "object",
625
+ "additionalProperties": false,
626
+ "required": ["category", "strict", "policy"],
627
+ "properties": {
628
+ "category": { "type": "string", "minLength": 1 },
629
+ "tags": {
630
+ "type": "array",
631
+ "items": { "type": "string", "minLength": 1 }
632
+ },
633
+ "strict": { "type": "boolean" },
634
+ "policy": {
635
+ "type": "object",
636
+ "additionalProperties": false,
637
+ "required": ["installation", "authentication"],
638
+ "properties": {
639
+ "installation": { "enum": ["AVAILABLE", "NOT_AVAILABLE", "INSTALLED_BY_DEFAULT"] },
640
+ "authentication": { "enum": ["ON_INSTALL", "ON_USE"] },
641
+ "products": {
642
+ "type": "array",
643
+ "uniqueItems": true,
644
+ "items": { "type": "string", "minLength": 1 }
645
+ }
646
+ }
647
+ }
648
+ }
649
+ },
650
+ "stringArray": {
651
+ "type": "array",
652
+ "items": { "type": "string", "minLength": 1 }
653
+ },
654
+ "platformOverrides": {
655
+ "type": "object",
656
+ "additionalProperties": false,
657
+ "properties": { "claude": { "type": ["object", "null"] }, "codex": { "type": ["object", "null"] } }
658
+ },
659
+ "instruction": {
660
+ "type": "object",
661
+ "additionalProperties": false,
662
+ "required": ["name", "title", "content"],
663
+ "properties": {
664
+ "name": { "type": "string" }, "title": { "type": "string" }, "content": { "type": "string" },
665
+ "paths": { "$ref": "#/$defs/stringArray" }, "agentOverrides": { "$ref": "#/$defs/platformOverrides" }
666
+ }
667
+ },
668
+ "permission": {
669
+ "type": "object",
670
+ "additionalProperties": false,
671
+ "required": [
672
+ "name"
673
+ ],
674
+ "properties": {
675
+ "name": {
676
+ "type": "string"
677
+ },
678
+ "allow": {
679
+ "$ref": "#/$defs/permissionCommands"
680
+ },
681
+ "ask": {
682
+ "$ref": "#/$defs/permissionCommands"
683
+ },
684
+ "deny": {
685
+ "$ref": "#/$defs/permissionCommands"
686
+ },
687
+ "agentOverrides": {
688
+ "$ref": "#/$defs/permissionOverrides"
689
+ }
690
+ }
691
+ },
692
+ "hook": {
693
+ "type": "object", "additionalProperties": false, "required": ["event", "command"],
694
+ "properties": {
695
+ "event": { "type": "string" }, "matcher": { "type": "string" }, "command": { "type": "string" },
696
+ "agentOverrides": { "$ref": "#/$defs/platformOverrides" }
697
+ }
698
+ },
699
+ "nativeHook": {
700
+ "type": "object", "additionalProperties": false, "required": ["event", "command"],
701
+ "properties": { "event": { "type": "string" }, "matcher": { "type": "string" }, "command": { "type": "string" } }
702
+ },
703
+ "agent": {
704
+ "type": "object", "additionalProperties": false, "required": ["name", "description", "prompt"],
705
+ "properties": {
706
+ "name": { "type": "string" }, "description": { "type": "string" }, "prompt": { "type": "string" },
707
+ "tools": { "$ref": "#/$defs/stringArray" }, "agentOverrides": { "$ref": "#/$defs/platformOverrides" }
708
+ }
709
+ },
710
+ "extensions": {
711
+ "type": "object", "additionalProperties": false,
712
+ "properties": {
713
+ "instructions": { "type": "array", "items": { "$ref": "#/$defs/instruction" } },
714
+ "permissions": { "type": "array", "items": { "$ref": "#/$defs/permission" } },
715
+ "hooks": { "type": "array", "items": { "$ref": "#/$defs/hook" } },
716
+ "nativeHooks": {
717
+ "type": "object", "additionalProperties": false,
718
+ "properties": {
719
+ "claude": { "type": "array", "items": { "$ref": "#/$defs/nativeHook" } },
720
+ "codex": { "type": "array", "items": { "$ref": "#/$defs/nativeHook" } }
721
+ }
722
+ },
723
+ "agents": { "type": "array", "items": { "$ref": "#/$defs/agent" } }
724
+ }
725
+ },
726
+ "importReference": {
727
+ "type": "object", "additionalProperties": false, "required": ["plugin", "export"],
728
+ "properties": { "plugin": { "type": "string" }, "export": { "type": "string" } }
729
+ },
730
+ "codexSkillDelivery": {
731
+ "oneOf": [
732
+ {
733
+ "type": "object", "additionalProperties": false, "required": ["mode", "identity", "renderProfile"],
734
+ "properties": {
735
+ "mode": { "const": "codex-native" }, "identity": { "const": "shared" }, "renderProfile": { "const": "user" }
736
+ }
737
+ },
738
+ {
739
+ "type": "object", "additionalProperties": false, "required": ["mode"],
740
+ "properties": { "mode": { "const": "aw-extension" } }
741
+ }
742
+ ]
743
+ },
744
+ "artifactRuntimeImports": {
745
+ "type": "array", "items": {
746
+ "type": "object", "additionalProperties": false, "required": ["name", "plugin", "export"],
747
+ "properties": {
748
+ "name": { "type": "string" }, "plugin": { "type": "string" }, "export": { "type": "string" },
749
+ "resolved": {
750
+ "type": "object", "additionalProperties": false,
751
+ "required": ["path", "digest", "providerPluginId", "providerVersion", "source", "requiredCapabilities", "capabilitySetDigest"],
752
+ "properties": {
753
+ "path": { "type": "string" }, "digest": { "type": "string" }, "providerPluginId": { "type": "string" },
754
+ "providerVersion": { "$ref": "#/$defs/semver" }, "source": { "type": "string" },
755
+ "requiredCapabilities": { "$ref": "#/$defs/runtimeExportRequires/properties/aw/properties/capabilities" },
756
+ "capabilitySetDigest": { "type": "string", "pattern": "^sha256:[0-9a-f]{64}$" }
757
+ }
758
+ }
759
+ }
760
+ }
761
+ },
762
+ "artifactTarget": {
763
+ "oneOf": [
764
+ {
765
+ "type": "object", "additionalProperties": false,
766
+ "required": ["id", "scopes", "target", "states", "refreshKeys", "delivery"],
767
+ "properties": {
768
+ "id": { "type": "string" }, "platform": { "enum": ["codex", "claude"] },
769
+ "distribution": { "const": "agent-skills" }, "scopes": { "type": "array", "items": { "enum": ["user", "project"] } },
770
+ "target": { "const": "codex.skill" }, "kind": { "enum": ["instruction", "codexRole", "skill"] },
771
+ "projectManagedKind": { "enum": ["skill", "mcpServer", "instruction", "permission", "hook", "agent"] },
772
+ "states": { "type": "array", "items": { "enum": ["present", "disabled"] } },
773
+ "refreshKeys": { "$ref": "#/$defs/stringArray" }, "requiresCodexProjectConfig": { "type": "boolean" },
774
+ "delivery": { "$ref": "#/$defs/codexSkillDelivery" },
775
+ "roleKey": { "type": "string" }, "skillKey": { "type": "string" }, "sourceDirs": { "$ref": "#/$defs/stringArray" },
776
+ "runtimeImports": { "$ref": "#/$defs/artifactRuntimeImports" },
777
+ "runtimeConfig": { "$ref": "#/$defs/runtimeConfig" }
778
+ }
779
+ },
780
+ {
781
+ "type": "object", "additionalProperties": false,
782
+ "required": ["id", "scopes", "target", "states", "refreshKeys"],
783
+ "properties": {
784
+ "id": { "type": "string" }, "platform": { "enum": ["codex", "claude"] },
785
+ "distribution": { "const": "agent-skills" }, "scopes": { "type": "array", "items": { "enum": ["user", "project"] } },
786
+ "target": { "enum": ["codex.developerInstructionsBlock", "codex.agentRole", "claude.skill", "agent-skills.skill"] },
787
+ "kind": { "enum": ["instruction", "codexRole", "skill"] },
788
+ "projectManagedKind": { "enum": ["skill", "mcpServer", "instruction", "permission", "hook", "agent"] },
789
+ "states": { "type": "array", "items": { "enum": ["present", "disabled"] } },
790
+ "refreshKeys": { "$ref": "#/$defs/stringArray" }, "requiresCodexProjectConfig": { "type": "boolean" },
791
+ "roleKey": { "type": "string" }, "skillKey": { "type": "string" }, "sourceDirs": { "$ref": "#/$defs/stringArray" },
792
+ "runtimeImports": { "$ref": "#/$defs/artifactRuntimeImports" },
793
+ "runtimeConfig": { "$ref": "#/$defs/runtimeConfig" }
794
+ }
795
+ }
796
+ ]
797
+ },
798
+ "runtimeConfig": {
799
+ "type": "object", "additionalProperties": false, "required": ["keys"],
800
+ "properties": {
801
+ "keys": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
802
+ }
803
+ },
804
+ "artifacts": {
805
+ "type": "object", "additionalProperties": false,
806
+ "properties": { "targets": { "type": "array", "items": { "$ref": "#/$defs/artifactTarget" } } }
807
+ },
808
+ "fileRules": {
809
+ "type": "object", "additionalProperties": false,
810
+ "required": ["include", "exclude"],
811
+ "properties": { "include": { "$ref": "#/$defs/stringArray" }, "exclude": { "$ref": "#/$defs/stringArray" } }
812
+ },
813
+ "buildConfig": {
814
+ "type": "object", "additionalProperties": false,
815
+ "properties": {
816
+ "cacheable": { "const": true },
817
+ "templates": {
818
+ "type": "object", "additionalProperties": false, "required": ["vars", "include"],
819
+ "properties": {
820
+ "vars": { "type": "object", "additionalProperties": { "$ref": "#/$defs/platformTemplateValue" } },
821
+ "include": { "$ref": "#/$defs/stringArray" }
822
+ }
823
+ },
824
+ "fileRules": {
825
+ "type": "object", "additionalProperties": false,
826
+ "properties": { "claude": { "$ref": "#/$defs/fileRules" }, "codex": { "$ref": "#/$defs/fileRules" } }
827
+ },
828
+ "manifestOverrides": {
829
+ "type": "object", "additionalProperties": false,
830
+ "properties": {
831
+ "claude": {
832
+ "type": "object", "additionalProperties": false,
833
+ "properties": { "commands": { "type": "string" }, "outputStyles": { "type": "string" }, "lspServers": {}, "userConfig": {}, "channels": {} }
834
+ },
835
+ "codex": { "type": "object", "maxProperties": 0 }
836
+ }
837
+ },
838
+ "runtimeExports": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["name", "source", "requires"], "properties": { "name": { "type": "string" }, "source": { "type": "string" }, "requires": { "$ref": "#/$defs/runtimeExportRequires" } } } },
839
+ "buildImports": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["plugin", "export", "env"], "properties": { "plugin": { "type": "string" }, "export": { "type": "string" }, "env": { "type": "string" } } } },
840
+ "skillRuntimeFiles": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["skill", "target"], "properties": { "skill": { "type": "string" }, "target": { "type": "string" }, "platforms": { "type": "array", "items": { "enum": ["codex", "claude"] } }, "distributions": { "type": "array", "items": { "const": "agent-skills" } }, "source": { "type": "string" }, "import": { "$ref": "#/$defs/importReference" } } } },
841
+ "generatedSkillRuntimeFiles": { "type": "array", "items": { "type": "object", "additionalProperties": false, "required": ["skill", "target"], "properties": { "skill": { "type": "string" }, "target": { "type": "string" }, "distributions": { "type": "array", "items": { "const": "agent-skills" } } } } }
842
+ }
843
+ },
844
+ "platformTemplateValue": {
845
+ "type": "object", "additionalProperties": false, "required": ["claude", "codex"],
846
+ "properties": {
847
+ "claude": { "anyOf": [{ "type": "string" }, { "type": "boolean" }] },
848
+ "codex": { "anyOf": [{ "type": "string" }, { "type": "boolean" }] }
849
+ }
850
+ },
851
+ "scriptEntry": {
852
+ "type": "object", "additionalProperties": false, "required": ["runner", "path"],
853
+ "properties": { "runner": { "const": "node" }, "path": { "type": "string" }, "args": { "$ref": "#/$defs/stringArray" } }
854
+ },
855
+ "preApply": {
856
+ "type": "object", "additionalProperties": false, "required": ["path"],
857
+ "properties": {
858
+ "path": { "$ref": "#/$defs/pluginPath" },
859
+ "timeoutMs": { "type": "integer", "minimum": 1000, "maximum": 1800000 }
860
+ }
861
+ },
862
+ "scripts": {
863
+ "type": "object", "additionalProperties": false,
864
+ "properties": {
865
+ "preApply": { "$ref": "#/$defs/preApply" },
866
+ "helpers": { "type": "object", "additionalProperties": false, "required": ["config"], "properties": { "config": { "type": "string" } } },
867
+ "node": { "type": "object", "additionalProperties": false, "properties": { "packageRoot": { "type": "string" }, "build": { "$ref": "#/$defs/scriptEntry" } } },
868
+ "artifacts": { "type": "object", "additionalProperties": false, "properties": { "render": { "$ref": "#/$defs/scriptEntry" } } },
869
+ "tests": { "type": "object", "additionalProperties": false, "properties": { "node": { "$ref": "#/$defs/stringArray" } } }
870
+ }
871
+ },
872
+ "configStringValidation": {
873
+ "type": "object", "additionalProperties": false,
874
+ "properties": {
875
+ "minLength": { "type": "integer", "minimum": 0 },
876
+ "maxLength": { "type": "integer", "minimum": 0, "maximum": 4096 },
877
+ "pattern": { "type": "string", "maxLength": 512 },
878
+ "format": { "enum": ["identifier", "slug", "semver", "url", "hostname", "email"] }
879
+ },
880
+ "if": { "properties": { "pattern": true }, "required": ["pattern"] },
881
+ "then": { "properties": { "maxLength": true }, "required": ["maxLength"] }
882
+ },
883
+ "configNumberValidation": {
884
+ "type": "object", "additionalProperties": false,
885
+ "properties": {
886
+ "integer": { "type": "boolean" },
887
+ "minimum": { "type": "number" },
888
+ "maximum": { "type": "number" },
889
+ "multipleOf": { "type": "number", "exclusiveMinimum": 0 }
890
+ }
891
+ },
892
+ "configObjectValidation": {
893
+ "type": "object", "additionalProperties": false,
894
+ "properties": {
895
+ "minProperties": { "type": "integer", "minimum": 0, "maximum": 32 },
896
+ "maxProperties": { "type": "integer", "minimum": 0, "maximum": 32 },
897
+ "key": { "$ref": "#/$defs/configStringValidation" }
898
+ }
899
+ },
900
+ "configArrayValidation": {
901
+ "type": "object", "additionalProperties": false,
902
+ "properties": {
903
+ "minItems": { "type": "integer", "minimum": 0, "maximum": 128 },
904
+ "maxItems": { "type": "integer", "minimum": 0, "maximum": 128 },
905
+ "uniqueItems": { "type": "boolean" },
906
+ "uniqueBy": { "type": "string", "minLength": 1 }
907
+ }
908
+ },
909
+ "configStringPreset": {
910
+ "type": "object", "additionalProperties": false, "required": ["id", "title", "value"],
911
+ "properties": {
912
+ "id": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 },
913
+ "description": { "type": "string", "minLength": 1 }, "value": { "type": "string" }, "recommended": { "const": true }
914
+ }
915
+ },
916
+ "configNumberPreset": {
917
+ "type": "object", "additionalProperties": false, "required": ["id", "title", "value"],
918
+ "properties": {
919
+ "id": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 },
920
+ "description": { "type": "string", "minLength": 1 }, "value": { "type": "number" }, "recommended": { "const": true }
921
+ }
922
+ },
923
+ "configBooleanPreset": {
924
+ "type": "object", "additionalProperties": false, "required": ["id", "title", "value"],
925
+ "properties": {
926
+ "id": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 },
927
+ "description": { "type": "string", "minLength": 1 }, "value": { "type": "boolean" }, "recommended": { "const": true }
928
+ }
929
+ },
930
+ "configObjectPreset": {
931
+ "type": "object", "additionalProperties": false, "required": ["id", "title", "value"],
932
+ "properties": {
933
+ "id": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 },
934
+ "description": { "type": "string", "minLength": 1 },
935
+ "value": { "type": "object", "maxProperties": 32, "propertyNames": { "not": { "enum": ["__proto__", "constructor", "prototype"] } }, "additionalProperties": { "$ref": "#/$defs/configScalar" } },
936
+ "recommended": { "const": true }
937
+ }
938
+ },
939
+ "configStringChoices": {
940
+ "type": "object", "additionalProperties": false, "required": ["allowCustom", "presets"],
941
+ "not": { "properties": { "allowCustom": { "const": false }, "presets": { "type": "array", "maxItems": 0 } }, "required": ["allowCustom", "presets"] },
942
+ "properties": {
943
+ "allowCustom": { "type": "boolean" },
944
+ "presets": { "type": "array", "items": { "$ref": "#/$defs/configStringPreset" } }
945
+ }
946
+ },
947
+ "configNumberChoices": {
948
+ "type": "object", "additionalProperties": false, "required": ["allowCustom", "presets"],
949
+ "not": { "properties": { "allowCustom": { "const": false }, "presets": { "type": "array", "maxItems": 0 } }, "required": ["allowCustom", "presets"] },
950
+ "properties": {
951
+ "allowCustom": { "type": "boolean" },
952
+ "presets": { "type": "array", "items": { "$ref": "#/$defs/configNumberPreset" } }
953
+ }
954
+ },
955
+ "configBooleanChoices": {
956
+ "type": "object", "additionalProperties": false, "required": ["allowCustom", "presets"],
957
+ "not": { "properties": { "allowCustom": { "const": false }, "presets": { "type": "array", "maxItems": 0 } }, "required": ["allowCustom", "presets"] },
958
+ "properties": {
959
+ "allowCustom": { "type": "boolean" },
960
+ "presets": { "type": "array", "items": { "$ref": "#/$defs/configBooleanPreset" } }
961
+ }
962
+ },
963
+ "configObjectChoices": {
964
+ "type": "object", "additionalProperties": false, "required": ["allowCustom", "presets"],
965
+ "not": { "properties": { "allowCustom": { "const": false }, "presets": { "type": "array", "maxItems": 0 } }, "required": ["allowCustom", "presets"] },
966
+ "properties": {
967
+ "allowCustom": { "type": "boolean" },
968
+ "presets": { "type": "array", "items": { "$ref": "#/$defs/configObjectPreset" } }
969
+ }
970
+ },
971
+ "configValueReference": {
972
+ "type": "object", "additionalProperties": false, "required": ["field", "key"],
973
+ "properties": {
974
+ "field": { "type": "string", "minLength": 1 },
975
+ "key": { "type": "string", "minLength": 1 },
976
+ "label": { "type": "string", "minLength": 1 },
977
+ "include": { "type": "array", "maxItems": 128, "uniqueItems": true, "items": { "$ref": "#/$defs/configScalar" } }
978
+ }
979
+ },
980
+ "configScalar": {
981
+ "anyOf": [{ "type": "string" }, { "type": "number" }, { "type": "boolean" }]
982
+ },
983
+ "configArrayObjectValue": {
984
+ "type": "object", "maxProperties": 32,
985
+ "propertyNames": { "not": { "enum": ["__proto__", "constructor", "prototype"] } },
986
+ "additionalProperties": { "$ref": "#/$defs/configScalar" }
987
+ },
988
+ "configArrayValue": {
989
+ "anyOf": [
990
+ { "type": "array", "maxItems": 128, "items": { "type": "string" } },
991
+ { "type": "array", "maxItems": 128, "items": { "type": "number" } },
992
+ { "type": "array", "maxItems": 128, "items": { "type": "boolean" } },
993
+ { "type": "array", "maxItems": 128, "items": { "$ref": "#/$defs/configArrayObjectValue" } }
994
+ ]
995
+ },
996
+ "configArrayPreset": {
997
+ "type": "object", "additionalProperties": false, "required": ["id", "title", "value"],
998
+ "properties": {
999
+ "id": { "type": "string", "minLength": 1 }, "title": { "type": "string", "minLength": 1 },
1000
+ "description": { "type": "string", "minLength": 1 }, "value": { "$ref": "#/$defs/configArrayValue" },
1001
+ "recommended": { "const": true }
1002
+ }
1003
+ },
1004
+ "configArrayChoices": {
1005
+ "type": "object", "additionalProperties": false, "required": ["allowCustom", "presets"],
1006
+ "not": { "properties": { "allowCustom": { "const": false }, "presets": { "type": "array", "maxItems": 0 } }, "required": ["allowCustom", "presets"] },
1007
+ "properties": {
1008
+ "allowCustom": { "type": "boolean" },
1009
+ "presets": { "type": "array", "items": { "$ref": "#/$defs/configArrayPreset" } }
1010
+ }
1011
+ },
1012
+ "configStringField": {
1013
+ "oneOf": [
1014
+ { "$ref": "#/$defs/configPlainStringField" },
1015
+ { "$ref": "#/$defs/configSensitiveStringField" }
1016
+ ]
1017
+ },
1018
+ "configPlainStringField": {
1019
+ "type": "object", "additionalProperties": false, "required": ["type"],
1020
+ "properties": {
1021
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1022
+ "type": { "const": "string" }, "title": { "type": "string" }, "description": { "type": "string" },
1023
+ "default": { "type": "string" }, "required": { "type": "boolean" }, "sensitive": { "const": false },
1024
+ "choices": { "$ref": "#/$defs/configStringChoices" }, "validation": { "$ref": "#/$defs/configStringValidation" }
1025
+ }
1026
+ },
1027
+ "configSensitiveStringField": {
1028
+ "type": "object", "additionalProperties": false, "required": ["type", "sensitive"],
1029
+ "properties": {
1030
+ "type": { "const": "string" }, "title": { "type": "string" }, "description": { "type": "string" },
1031
+ "required": { "type": "boolean" }, "sensitive": { "const": true },
1032
+ "validation": { "$ref": "#/$defs/configStringValidation" }
1033
+ }
1034
+ },
1035
+ "configNumberField": {
1036
+ "type": "object", "additionalProperties": false, "required": ["type"],
1037
+ "properties": {
1038
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1039
+ "type": { "const": "number" }, "title": { "type": "string" }, "description": { "type": "string" },
1040
+ "default": { "type": "number" }, "required": { "type": "boolean" }, "sensitive": false,
1041
+ "choices": { "$ref": "#/$defs/configNumberChoices" }, "validation": { "$ref": "#/$defs/configNumberValidation" }
1042
+ }
1043
+ },
1044
+ "configBooleanField": {
1045
+ "type": "object", "additionalProperties": false, "required": ["type"],
1046
+ "properties": {
1047
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1048
+ "type": { "const": "boolean" }, "title": { "type": "string" }, "description": { "type": "string" },
1049
+ "default": { "type": "boolean" }, "required": { "type": "boolean" }, "sensitive": false,
1050
+ "choices": { "$ref": "#/$defs/configBooleanChoices" }
1051
+ }
1052
+ },
1053
+ "configScalarField": {
1054
+ "oneOf": [{ "$ref": "#/$defs/configStringField" }, { "$ref": "#/$defs/configNumberField" }, { "$ref": "#/$defs/configBooleanField" }]
1055
+ },
1056
+ "configScalarChildField": {
1057
+ "oneOf": [
1058
+ { "$ref": "#/$defs/configStringChildField" }, { "$ref": "#/$defs/configNumberChildField" }, { "$ref": "#/$defs/configBooleanChildField" }
1059
+ ]
1060
+ },
1061
+ "configStringChildField": {
1062
+ "type": "object", "additionalProperties": false, "required": ["type"],
1063
+ "properties": {
1064
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1065
+ "type": { "const": "string" }, "title": { "type": "string" }, "description": { "type": "string" },
1066
+ "required": { "type": "boolean" }, "sensitive": false,
1067
+ "choices": { "$ref": "#/$defs/configStringChoices" }, "validation": { "$ref": "#/$defs/configStringValidation" }
1068
+ }
1069
+ },
1070
+ "configNumberChildField": {
1071
+ "type": "object", "additionalProperties": false, "required": ["type"],
1072
+ "properties": {
1073
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1074
+ "type": { "const": "number" }, "title": { "type": "string" }, "description": { "type": "string" },
1075
+ "required": { "type": "boolean" }, "sensitive": false,
1076
+ "choices": { "$ref": "#/$defs/configNumberChoices" }, "validation": { "$ref": "#/$defs/configNumberValidation" }
1077
+ }
1078
+ },
1079
+ "configBooleanChildField": {
1080
+ "type": "object", "additionalProperties": false, "required": ["type"],
1081
+ "properties": {
1082
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1083
+ "type": { "const": "boolean" }, "title": { "type": "string" }, "description": { "type": "string" },
1084
+ "required": { "type": "boolean" }, "sensitive": false,
1085
+ "choices": { "$ref": "#/$defs/configBooleanChoices" }
1086
+ }
1087
+ },
1088
+ "configScalarDynamicField": {
1089
+ "oneOf": [
1090
+ { "$ref": "#/$defs/configStringDynamicField" }, { "$ref": "#/$defs/configNumberDynamicField" }, { "$ref": "#/$defs/configBooleanDynamicField" }
1091
+ ]
1092
+ },
1093
+ "configStringDynamicField": {
1094
+ "type": "object", "additionalProperties": false, "required": ["type"],
1095
+ "properties": {
1096
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1097
+ "type": { "const": "string" }, "title": { "type": "string" }, "description": { "type": "string" },
1098
+ "sensitive": false, "choices": { "$ref": "#/$defs/configStringChoices" },
1099
+ "validation": { "$ref": "#/$defs/configStringValidation" }
1100
+ }
1101
+ },
1102
+ "configNumberDynamicField": {
1103
+ "type": "object", "additionalProperties": false, "required": ["type"],
1104
+ "properties": {
1105
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1106
+ "type": { "const": "number" }, "title": { "type": "string" }, "description": { "type": "string" },
1107
+ "sensitive": false, "choices": { "$ref": "#/$defs/configNumberChoices" },
1108
+ "validation": { "$ref": "#/$defs/configNumberValidation" }
1109
+ }
1110
+ },
1111
+ "configBooleanDynamicField": {
1112
+ "type": "object", "additionalProperties": false, "required": ["type"],
1113
+ "properties": {
1114
+ "valueRef": { "$ref": "#/$defs/configValueReference" },
1115
+ "type": { "const": "boolean" }, "title": { "type": "string" }, "description": { "type": "string" },
1116
+ "sensitive": false, "choices": { "$ref": "#/$defs/configBooleanChoices" }
1117
+ }
1118
+ },
1119
+ "configFixedObjectField": {
1120
+ "type": "object", "additionalProperties": false, "required": ["type", "properties"],
1121
+ "properties": {
1122
+ "type": { "const": "object" }, "title": { "type": "string" }, "description": { "type": "string" },
1123
+ "default": { "type": "object", "maxProperties": 32, "propertyNames": { "not": { "enum": ["__proto__", "constructor", "prototype"] } }, "additionalProperties": { "$ref": "#/$defs/configScalar" } },
1124
+ "required": { "type": "boolean" }, "sensitive": false,
1125
+ "choices": { "$ref": "#/$defs/configObjectChoices" },
1126
+ "properties": { "type": "object", "maxProperties": 32, "propertyNames": { "not": { "enum": ["__proto__", "constructor", "prototype"] } }, "additionalProperties": { "$ref": "#/$defs/configScalarChildField" } },
1127
+ "additionalProperties": { "const": false },
1128
+ "validation": { "$ref": "#/$defs/configObjectValidation" }
1129
+ }
1130
+ },
1131
+ "configKeyValueObjectField": {
1132
+ "type": "object", "additionalProperties": false, "required": ["type", "additionalProperties"],
1133
+ "properties": {
1134
+ "type": { "const": "object" }, "title": { "type": "string" }, "description": { "type": "string" },
1135
+ "default": { "type": "object", "maxProperties": 32, "propertyNames": { "not": { "enum": ["__proto__", "constructor", "prototype"] } }, "additionalProperties": { "$ref": "#/$defs/configScalar" } },
1136
+ "required": { "type": "boolean" }, "sensitive": false,
1137
+ "choices": { "$ref": "#/$defs/configObjectChoices" },
1138
+ "additionalProperties": { "$ref": "#/$defs/configScalarDynamicField" },
1139
+ "validation": { "$ref": "#/$defs/configObjectValidation" }
1140
+ }
1141
+ },
1142
+ "configObjectField": {
1143
+ "oneOf": [
1144
+ { "$ref": "#/$defs/configFixedObjectField" },
1145
+ { "$ref": "#/$defs/configKeyValueObjectField" }
1146
+ ]
1147
+ },
1148
+ "configField": {
1149
+ "oneOf": [
1150
+ { "$ref": "#/$defs/configStringField" }, { "$ref": "#/$defs/configNumberField" },
1151
+ { "$ref": "#/$defs/configBooleanField" }, { "$ref": "#/$defs/configObjectField" }
1152
+ ]
1153
+ },
1154
+ "configReference": {
1155
+ "type": "object",
1156
+ "additionalProperties": false,
1157
+ "required": ["$ref"],
1158
+ "properties": {
1159
+ "$ref": {"type": "string", "pattern": "^#/config/definitions/[A-Za-z][A-Za-z0-9_]*$"},
1160
+ "title": {"type": "string"},
1161
+ "description": {"type": "string"},
1162
+ "default": {
1163
+ "oneOf": [
1164
+ {"$ref": "#/$defs/configScalar"},
1165
+ {"$ref": "#/$defs/configArrayValue"},
1166
+ {
1167
+ "type": "object",
1168
+ "maxProperties": 32,
1169
+ "propertyNames": {"not": {"enum": ["__proto__", "constructor", "prototype"]}},
1170
+ "additionalProperties": {"$ref": "#/$defs/configScalar"}
1171
+ }
1172
+ ]
1173
+ },
1174
+ "required": {"type": "boolean"}
1175
+ }
1176
+ },
1177
+ "configChildReference": {
1178
+ "type": "object",
1179
+ "additionalProperties": false,
1180
+ "required": ["$ref"],
1181
+ "properties": {
1182
+ "$ref": {"type": "string", "pattern": "^#/config/definitions/[A-Za-z][A-Za-z0-9_]*$"},
1183
+ "title": {"type": "string"},
1184
+ "description": {"type": "string"},
1185
+ "required": {"type": "boolean"}
1186
+ }
1187
+ },
1188
+ "configDynamicReference": {
1189
+ "type": "object",
1190
+ "additionalProperties": false,
1191
+ "required": ["$ref"],
1192
+ "properties": {"$ref": {"type": "string", "pattern": "^#/config/definitions/[A-Za-z][A-Za-z0-9_]*$"}, "title": {"type": "string"}, "description": {"type": "string"}}
1193
+ },
1194
+ "configV3FixedObjectField": {
1195
+ "type": "object",
1196
+ "additionalProperties": false,
1197
+ "required": ["type", "properties"],
1198
+ "properties": {
1199
+ "type": {"const": "object"},
1200
+ "title": {"type": "string"},
1201
+ "description": {"type": "string"},
1202
+ "default": {
1203
+ "type": "object",
1204
+ "maxProperties": 32,
1205
+ "propertyNames": {"not": {"enum": ["__proto__", "constructor", "prototype"]}},
1206
+ "additionalProperties": {"$ref": "#/$defs/configScalar"}
1207
+ },
1208
+ "required": {"type": "boolean"},
1209
+ "sensitive": false,
1210
+ "choices": {"$ref": "#/$defs/configObjectChoices"},
1211
+ "properties": {
1212
+ "type": "object",
1213
+ "maxProperties": 32,
1214
+ "propertyNames": {"not": {"enum": ["__proto__", "constructor", "prototype"]}},
1215
+ "additionalProperties": {"oneOf": [{"$ref": "#/$defs/configScalarChildField"}, {"$ref": "#/$defs/configChildReference"}]}
1216
+ },
1217
+ "additionalProperties": {"const": false},
1218
+ "validation": {"$ref": "#/$defs/configObjectValidation"}
1219
+ }
1220
+ },
1221
+ "configV3KeyValueObjectField": {
1222
+ "type": "object",
1223
+ "additionalProperties": false,
1224
+ "required": ["type", "additionalProperties"],
1225
+ "properties": {
1226
+ "type": {"const": "object"},
1227
+ "title": {"type": "string"},
1228
+ "description": {"type": "string"},
1229
+ "default": {
1230
+ "type": "object",
1231
+ "maxProperties": 32,
1232
+ "propertyNames": {"not": {"enum": ["__proto__", "constructor", "prototype"]}},
1233
+ "additionalProperties": {"$ref": "#/$defs/configScalar"}
1234
+ },
1235
+ "required": {"type": "boolean"},
1236
+ "sensitive": false,
1237
+ "choices": {"$ref": "#/$defs/configObjectChoices"},
1238
+ "additionalProperties": {"oneOf": [{"$ref": "#/$defs/configScalarDynamicField"}, {"$ref": "#/$defs/configDynamicReference"}]},
1239
+ "validation": {"$ref": "#/$defs/configObjectValidation"}
1240
+ }
1241
+ },
1242
+ "configArrayFixedObjectItem": {
1243
+ "type": "object", "additionalProperties": false, "required": ["type", "properties"],
1244
+ "properties": {
1245
+ "type": {"const": "object"}, "title": {"type": "string"}, "description": {"type": "string"},
1246
+ "sensitive": false,
1247
+ "choices": {"$ref": "#/$defs/configObjectChoices"},
1248
+ "properties": {
1249
+ "type": "object", "maxProperties": 32,
1250
+ "propertyNames": {"not": {"enum": ["__proto__", "constructor", "prototype"]}},
1251
+ "additionalProperties": {"oneOf": [{"$ref": "#/$defs/configScalarChildField"}, {"$ref": "#/$defs/configChildReference"}]}
1252
+ },
1253
+ "additionalProperties": {"const": false},
1254
+ "validation": {"$ref": "#/$defs/configObjectValidation"}
1255
+ }
1256
+ },
1257
+ "configArrayKeyValueObjectItem": {
1258
+ "type": "object", "additionalProperties": false, "required": ["type", "additionalProperties"],
1259
+ "properties": {
1260
+ "type": {"const": "object"}, "title": {"type": "string"}, "description": {"type": "string"},
1261
+ "sensitive": false,
1262
+ "choices": {"$ref": "#/$defs/configObjectChoices"},
1263
+ "additionalProperties": {"oneOf": [{"$ref": "#/$defs/configScalarDynamicField"}, {"$ref": "#/$defs/configDynamicReference"}]},
1264
+ "validation": {"$ref": "#/$defs/configObjectValidation"}
1265
+ }
1266
+ },
1267
+ "configArrayItemReference": {
1268
+ "type": "object", "additionalProperties": false, "required": ["$ref"],
1269
+ "properties": {
1270
+ "$ref": {"type": "string", "pattern": "^#/config/definitions/[A-Za-z][A-Za-z0-9_]*$"},
1271
+ "title": {"type": "string"}, "description": {"type": "string"}
1272
+ }
1273
+ },
1274
+ "configArrayItem": {
1275
+ "oneOf": [
1276
+ {"$ref": "#/$defs/configScalarDynamicField"},
1277
+ {"$ref": "#/$defs/configArrayFixedObjectItem"},
1278
+ {"$ref": "#/$defs/configArrayKeyValueObjectItem"},
1279
+ {"$ref": "#/$defs/configArrayItemReference"}
1280
+ ]
1281
+ },
1282
+ "configArrayField": {
1283
+ "type": "object", "additionalProperties": false, "required": ["type", "items"],
1284
+ "properties": {
1285
+ "type": {"const": "array"}, "title": {"type": "string"}, "description": {"type": "string"},
1286
+ "default": {"$ref": "#/$defs/configArrayValue"}, "required": {"type": "boolean"}, "sensitive": false,
1287
+ "items": {"$ref": "#/$defs/configArrayItem"},
1288
+ "choices": {"$ref": "#/$defs/configArrayChoices"},
1289
+ "validation": {"$ref": "#/$defs/configArrayValidation"}
1290
+ }
1291
+ },
1292
+ "configV3Field": {
1293
+ "oneOf": [
1294
+ {"$ref": "#/$defs/configScalarField"},
1295
+ {"$ref": "#/$defs/configV3FixedObjectField"},
1296
+ {"$ref": "#/$defs/configV3KeyValueObjectField"},
1297
+ {"$ref": "#/$defs/configArrayField"},
1298
+ {"$ref": "#/$defs/configReference"}
1299
+ ]
1300
+ },
1301
+ "configJoinSummary": {
1302
+ "type": "object",
1303
+ "additionalProperties": false,
1304
+ "required": ["kind", "parts", "separator", "missing"],
1305
+ "properties": {
1306
+ "kind": {"const": "join"},
1307
+ "parts": {
1308
+ "type": "array",
1309
+ "minItems": 1,
1310
+ "maxItems": 4,
1311
+ "items": {
1312
+ "type": "object",
1313
+ "additionalProperties": false,
1314
+ "required": ["path"],
1315
+ "properties": {"path": {"type": "string", "maxLength": 128, "pattern": "^/(?:[^~/]|~[01])*$"}, "format": {"enum": ["raw", "choiceTitle"]}}
1316
+ }
1317
+ },
1318
+ "separator": {"type": "string", "maxLength": 8},
1319
+ "missing": {"type": "string"}
1320
+ }
1321
+ },
1322
+ "configV2": {
1323
+ "type": "object",
1324
+ "additionalProperties": false,
1325
+ "required": ["fields"],
1326
+ "properties": {
1327
+ "fields": {
1328
+ "type": "object",
1329
+ "propertyNames": {"not": {"enum": ["__proto__", "constructor", "prototype"]}},
1330
+ "additionalProperties": {"$ref": "#/$defs/configField"}
1331
+ },
1332
+ "presentation": {
1333
+ "type": "object",
1334
+ "additionalProperties": false,
1335
+ "properties": {
1336
+ "groups": {
1337
+ "type": "array",
1338
+ "items": {
1339
+ "type": "object",
1340
+ "additionalProperties": false,
1341
+ "required": ["id", "title", "fields"],
1342
+ "properties": {
1343
+ "id": {"type": "string"},
1344
+ "title": {"type": "string"},
1345
+ "description": {"type": "string"},
1346
+ "fields": {"$ref": "#/$defs/stringArray"},
1347
+ "advanced": {"type": "boolean"}
1348
+ }
1349
+ }
1350
+ }
1351
+ }
1352
+ }
1353
+ }
1354
+ },
1355
+ "configV3": {
1356
+ "type": "object",
1357
+ "additionalProperties": false,
1358
+ "required": ["schemaVersion", "fields"],
1359
+ "properties": {
1360
+ "fields": {
1361
+ "type": "object",
1362
+ "maxProperties": 256,
1363
+ "propertyNames": {"pattern": "^[A-Za-z][A-Za-z0-9_]*$", "not": {"enum": ["__proto__", "constructor", "prototype"]}},
1364
+ "additionalProperties": {"$ref": "#/$defs/configV3Field"}
1365
+ },
1366
+ "presentation": {
1367
+ "type": "object",
1368
+ "additionalProperties": false,
1369
+ "properties": {
1370
+ "groups": {
1371
+ "type": "array",
1372
+ "items": {
1373
+ "type": "object",
1374
+ "additionalProperties": false,
1375
+ "required": ["id", "title", "fields"],
1376
+ "properties": {
1377
+ "id": {"type": "string"},
1378
+ "title": {"type": "string"},
1379
+ "description": {"type": "string"},
1380
+ "fields": {"$ref": "#/$defs/stringArray"},
1381
+ "advanced": {"type": "boolean"}
1382
+ }
1383
+ }
1384
+ },
1385
+ "summaries": {
1386
+ "type": "object",
1387
+ "propertyNames": {"pattern": "^[A-Za-z][A-Za-z0-9_]*$", "not": {"enum": ["__proto__", "constructor", "prototype"]}},
1388
+ "additionalProperties": {"$ref": "#/$defs/configJoinSummary"}
1389
+ },
1390
+ "fieldViews": {
1391
+ "type": "object",
1392
+ "propertyNames": {"pattern": "^[A-Za-z][A-Za-z0-9_]*$", "not": {"enum": ["__proto__", "constructor", "prototype"]}},
1393
+ "additionalProperties": {
1394
+ "oneOf": [
1395
+ {"type": "object", "additionalProperties": false, "required": ["summary"], "properties": {"summary": {"type": "string"}}},
1396
+ {"type": "object", "additionalProperties": false, "required": ["itemSummary"], "properties": {"itemSummary": {"type": "string"}}}
1397
+ ]
1398
+ }
1399
+ }
1400
+ }
1401
+ },
1402
+ "schemaVersion": {"const": 3},
1403
+ "definitions": {
1404
+ "type": "object",
1405
+ "maxProperties": 64,
1406
+ "propertyNames": {"pattern": "^[A-Za-z][A-Za-z0-9_]*$", "not": {"enum": ["__proto__", "constructor", "prototype"]}},
1407
+ "additionalProperties": {"$ref": "#/$defs/configV3Field"}
1408
+ }
1409
+ }
1410
+ },
1411
+ "config": {"oneOf": [{"$ref": "#/$defs/configV2"}, {"$ref": "#/$defs/configV3"}, {"$ref": "#/$defs/configV4"}]},
1412
+ "configV4PlainStringField": {
1413
+ "type": "object",
1414
+ "additionalProperties": false,
1415
+ "required": [
1416
+ "type"
1417
+ ],
1418
+ "properties": {
1419
+ "valueRef": {
1420
+ "$ref": "#/$defs/configValueReference"
1421
+ },
1422
+ "type": {
1423
+ "const": "string"
1424
+ },
1425
+ "title": {
1426
+ "type": "string"
1427
+ },
1428
+ "description": {
1429
+ "type": "string"
1430
+ },
1431
+ "default": {
1432
+ "type": "string"
1433
+ },
1434
+ "required": {
1435
+ "type": "boolean"
1436
+ },
1437
+ "sensitive": {
1438
+ "const": false
1439
+ },
1440
+ "choices": {
1441
+ "$ref": "#/$defs/configStringChoices"
1442
+ },
1443
+ "validation": {
1444
+ "$ref": "#/$defs/configStringValidation"
1445
+ },
1446
+ "const": {
1447
+ "type": "string"
1448
+ }
1449
+ }
1450
+ },
1451
+ "configV4StringChildField": {
1452
+ "type": "object",
1453
+ "additionalProperties": false,
1454
+ "required": [
1455
+ "type"
1456
+ ],
1457
+ "properties": {
1458
+ "valueRef": {
1459
+ "$ref": "#/$defs/configValueReference"
1460
+ },
1461
+ "type": {
1462
+ "const": "string"
1463
+ },
1464
+ "title": {
1465
+ "type": "string"
1466
+ },
1467
+ "description": {
1468
+ "type": "string"
1469
+ },
1470
+ "required": {
1471
+ "type": "boolean"
1472
+ },
1473
+ "sensitive": false,
1474
+ "choices": {
1475
+ "$ref": "#/$defs/configStringChoices"
1476
+ },
1477
+ "validation": {
1478
+ "$ref": "#/$defs/configStringValidation"
1479
+ },
1480
+ "const": {
1481
+ "type": "string"
1482
+ }
1483
+ }
1484
+ },
1485
+ "configV4StringDynamicField": {
1486
+ "type": "object",
1487
+ "additionalProperties": false,
1488
+ "required": [
1489
+ "type"
1490
+ ],
1491
+ "properties": {
1492
+ "valueRef": {
1493
+ "$ref": "#/$defs/configValueReference"
1494
+ },
1495
+ "type": {
1496
+ "const": "string"
1497
+ },
1498
+ "title": {
1499
+ "type": "string"
1500
+ },
1501
+ "description": {
1502
+ "type": "string"
1503
+ },
1504
+ "sensitive": false,
1505
+ "choices": {
1506
+ "$ref": "#/$defs/configStringChoices"
1507
+ },
1508
+ "validation": {
1509
+ "$ref": "#/$defs/configStringValidation"
1510
+ },
1511
+ "const": {
1512
+ "type": "string"
1513
+ }
1514
+ }
1515
+ },
1516
+ "configV4NumberField": {
1517
+ "type": "object",
1518
+ "additionalProperties": false,
1519
+ "required": [
1520
+ "type"
1521
+ ],
1522
+ "properties": {
1523
+ "valueRef": {
1524
+ "$ref": "#/$defs/configValueReference"
1525
+ },
1526
+ "type": {
1527
+ "const": "number"
1528
+ },
1529
+ "title": {
1530
+ "type": "string"
1531
+ },
1532
+ "description": {
1533
+ "type": "string"
1534
+ },
1535
+ "default": {
1536
+ "type": "number"
1537
+ },
1538
+ "required": {
1539
+ "type": "boolean"
1540
+ },
1541
+ "sensitive": false,
1542
+ "choices": {
1543
+ "$ref": "#/$defs/configNumberChoices"
1544
+ },
1545
+ "validation": {
1546
+ "$ref": "#/$defs/configNumberValidation"
1547
+ },
1548
+ "const": {
1549
+ "type": "number"
1550
+ }
1551
+ }
1552
+ },
1553
+ "configV4NumberChildField": {
1554
+ "type": "object",
1555
+ "additionalProperties": false,
1556
+ "required": [
1557
+ "type"
1558
+ ],
1559
+ "properties": {
1560
+ "valueRef": {
1561
+ "$ref": "#/$defs/configValueReference"
1562
+ },
1563
+ "type": {
1564
+ "const": "number"
1565
+ },
1566
+ "title": {
1567
+ "type": "string"
1568
+ },
1569
+ "description": {
1570
+ "type": "string"
1571
+ },
1572
+ "required": {
1573
+ "type": "boolean"
1574
+ },
1575
+ "sensitive": false,
1576
+ "choices": {
1577
+ "$ref": "#/$defs/configNumberChoices"
1578
+ },
1579
+ "validation": {
1580
+ "$ref": "#/$defs/configNumberValidation"
1581
+ },
1582
+ "const": {
1583
+ "type": "number"
1584
+ }
1585
+ }
1586
+ },
1587
+ "configV4NumberDynamicField": {
1588
+ "type": "object",
1589
+ "additionalProperties": false,
1590
+ "required": [
1591
+ "type"
1592
+ ],
1593
+ "properties": {
1594
+ "valueRef": {
1595
+ "$ref": "#/$defs/configValueReference"
1596
+ },
1597
+ "type": {
1598
+ "const": "number"
1599
+ },
1600
+ "title": {
1601
+ "type": "string"
1602
+ },
1603
+ "description": {
1604
+ "type": "string"
1605
+ },
1606
+ "sensitive": false,
1607
+ "choices": {
1608
+ "$ref": "#/$defs/configNumberChoices"
1609
+ },
1610
+ "validation": {
1611
+ "$ref": "#/$defs/configNumberValidation"
1612
+ },
1613
+ "const": {
1614
+ "type": "number"
1615
+ }
1616
+ }
1617
+ },
1618
+ "configV4BooleanField": {
1619
+ "type": "object",
1620
+ "additionalProperties": false,
1621
+ "required": [
1622
+ "type"
1623
+ ],
1624
+ "properties": {
1625
+ "valueRef": {
1626
+ "$ref": "#/$defs/configValueReference"
1627
+ },
1628
+ "type": {
1629
+ "const": "boolean"
1630
+ },
1631
+ "title": {
1632
+ "type": "string"
1633
+ },
1634
+ "description": {
1635
+ "type": "string"
1636
+ },
1637
+ "default": {
1638
+ "type": "boolean"
1639
+ },
1640
+ "required": {
1641
+ "type": "boolean"
1642
+ },
1643
+ "sensitive": false,
1644
+ "choices": {
1645
+ "$ref": "#/$defs/configBooleanChoices"
1646
+ },
1647
+ "const": {
1648
+ "type": "boolean"
1649
+ }
1650
+ }
1651
+ },
1652
+ "configV4BooleanChildField": {
1653
+ "type": "object",
1654
+ "additionalProperties": false,
1655
+ "required": [
1656
+ "type"
1657
+ ],
1658
+ "properties": {
1659
+ "valueRef": {
1660
+ "$ref": "#/$defs/configValueReference"
1661
+ },
1662
+ "type": {
1663
+ "const": "boolean"
1664
+ },
1665
+ "title": {
1666
+ "type": "string"
1667
+ },
1668
+ "description": {
1669
+ "type": "string"
1670
+ },
1671
+ "required": {
1672
+ "type": "boolean"
1673
+ },
1674
+ "sensitive": false,
1675
+ "choices": {
1676
+ "$ref": "#/$defs/configBooleanChoices"
1677
+ },
1678
+ "const": {
1679
+ "type": "boolean"
1680
+ }
1681
+ }
1682
+ },
1683
+ "configV4BooleanDynamicField": {
1684
+ "type": "object",
1685
+ "additionalProperties": false,
1686
+ "required": [
1687
+ "type"
1688
+ ],
1689
+ "properties": {
1690
+ "valueRef": {
1691
+ "$ref": "#/$defs/configValueReference"
1692
+ },
1693
+ "type": {
1694
+ "const": "boolean"
1695
+ },
1696
+ "title": {
1697
+ "type": "string"
1698
+ },
1699
+ "description": {
1700
+ "type": "string"
1701
+ },
1702
+ "sensitive": false,
1703
+ "choices": {
1704
+ "$ref": "#/$defs/configBooleanChoices"
1705
+ },
1706
+ "const": {
1707
+ "type": "boolean"
1708
+ }
1709
+ }
1710
+ },
1711
+ "configV4StringField": {
1712
+ "oneOf": [
1713
+ {
1714
+ "$ref": "#/$defs/configV4PlainStringField"
1715
+ },
1716
+ {
1717
+ "$ref": "#/$defs/configSensitiveStringField"
1718
+ }
1719
+ ]
1720
+ },
1721
+ "configV4ScalarField": {
1722
+ "oneOf": [
1723
+ {
1724
+ "$ref": "#/$defs/configV4StringField"
1725
+ },
1726
+ {
1727
+ "$ref": "#/$defs/configV4NumberField"
1728
+ },
1729
+ {
1730
+ "$ref": "#/$defs/configV4BooleanField"
1731
+ }
1732
+ ]
1733
+ },
1734
+ "configV4ScalarChildField": {
1735
+ "oneOf": [
1736
+ {
1737
+ "$ref": "#/$defs/configV4StringChildField"
1738
+ },
1739
+ {
1740
+ "$ref": "#/$defs/configV4NumberChildField"
1741
+ },
1742
+ {
1743
+ "$ref": "#/$defs/configV4BooleanChildField"
1744
+ }
1745
+ ]
1746
+ },
1747
+ "configV4ScalarDynamicField": {
1748
+ "oneOf": [
1749
+ {
1750
+ "$ref": "#/$defs/configV4StringDynamicField"
1751
+ },
1752
+ {
1753
+ "$ref": "#/$defs/configV4NumberDynamicField"
1754
+ },
1755
+ {
1756
+ "$ref": "#/$defs/configV4BooleanDynamicField"
1757
+ }
1758
+ ]
1759
+ },
1760
+ "configScalarArrayValue": {
1761
+ "anyOf": [
1762
+ {
1763
+ "type": "array",
1764
+ "maxItems": 128,
1765
+ "items": {
1766
+ "type": "string"
1767
+ }
1768
+ },
1769
+ {
1770
+ "type": "array",
1771
+ "maxItems": 128,
1772
+ "items": {
1773
+ "type": "number"
1774
+ }
1775
+ },
1776
+ {
1777
+ "type": "array",
1778
+ "maxItems": 128,
1779
+ "items": {
1780
+ "type": "boolean"
1781
+ }
1782
+ }
1783
+ ]
1784
+ },
1785
+ "configV4ObjectValue": {
1786
+ "type": "object",
1787
+ "maxProperties": 32,
1788
+ "propertyNames": {
1789
+ "not": {
1790
+ "enum": [
1791
+ "__proto__",
1792
+ "constructor",
1793
+ "prototype"
1794
+ ]
1795
+ }
1796
+ },
1797
+ "additionalProperties": {
1798
+ "anyOf": [
1799
+ {
1800
+ "$ref": "#/$defs/configScalar"
1801
+ },
1802
+ {
1803
+ "$ref": "#/$defs/configScalarArrayValue"
1804
+ },
1805
+ {
1806
+ "$ref": "#/$defs/configArrayObjectValue"
1807
+ }
1808
+ ]
1809
+ }
1810
+ },
1811
+ "configV4ObjectPreset": {
1812
+ "type": "object",
1813
+ "additionalProperties": false,
1814
+ "required": [
1815
+ "id",
1816
+ "title",
1817
+ "value"
1818
+ ],
1819
+ "properties": {
1820
+ "id": {
1821
+ "type": "string",
1822
+ "minLength": 1
1823
+ },
1824
+ "title": {
1825
+ "type": "string",
1826
+ "minLength": 1
1827
+ },
1828
+ "description": {
1829
+ "type": "string",
1830
+ "minLength": 1
1831
+ },
1832
+ "value": {
1833
+ "$ref": "#/$defs/configV4ObjectValue"
1834
+ },
1835
+ "recommended": {
1836
+ "const": true
1837
+ }
1838
+ }
1839
+ },
1840
+ "configV4ArrayPreset": {
1841
+ "type": "object",
1842
+ "additionalProperties": false,
1843
+ "required": [
1844
+ "id",
1845
+ "title",
1846
+ "value"
1847
+ ],
1848
+ "properties": {
1849
+ "id": {
1850
+ "type": "string",
1851
+ "minLength": 1
1852
+ },
1853
+ "title": {
1854
+ "type": "string",
1855
+ "minLength": 1
1856
+ },
1857
+ "description": {
1858
+ "type": "string",
1859
+ "minLength": 1
1860
+ },
1861
+ "value": {
1862
+ "$ref": "#/$defs/configV4ArrayValue"
1863
+ },
1864
+ "recommended": {
1865
+ "const": true
1866
+ }
1867
+ }
1868
+ },
1869
+ "configScalarArrayPreset": {
1870
+ "type": "object",
1871
+ "additionalProperties": false,
1872
+ "required": [
1873
+ "id",
1874
+ "title",
1875
+ "value"
1876
+ ],
1877
+ "properties": {
1878
+ "id": {
1879
+ "type": "string",
1880
+ "minLength": 1
1881
+ },
1882
+ "title": {
1883
+ "type": "string",
1884
+ "minLength": 1
1885
+ },
1886
+ "description": {
1887
+ "type": "string",
1888
+ "minLength": 1
1889
+ },
1890
+ "value": {
1891
+ "$ref": "#/$defs/configScalarArrayValue"
1892
+ },
1893
+ "recommended": {
1894
+ "const": true
1895
+ }
1896
+ }
1897
+ },
1898
+ "configV4ObjectChoices": {
1899
+ "type": "object",
1900
+ "additionalProperties": false,
1901
+ "required": [
1902
+ "allowCustom",
1903
+ "presets"
1904
+ ],
1905
+ "not": {
1906
+ "properties": {
1907
+ "allowCustom": {
1908
+ "const": false
1909
+ },
1910
+ "presets": {
1911
+ "type": "array",
1912
+ "maxItems": 0
1913
+ }
1914
+ },
1915
+ "required": [
1916
+ "allowCustom",
1917
+ "presets"
1918
+ ]
1919
+ },
1920
+ "properties": {
1921
+ "allowCustom": {
1922
+ "type": "boolean"
1923
+ },
1924
+ "presets": {
1925
+ "type": "array",
1926
+ "items": {
1927
+ "$ref": "#/$defs/configV4ObjectPreset"
1928
+ }
1929
+ }
1930
+ }
1931
+ },
1932
+ "configV4ArrayChoices": {
1933
+ "type": "object",
1934
+ "additionalProperties": false,
1935
+ "required": [
1936
+ "allowCustom",
1937
+ "presets"
1938
+ ],
1939
+ "not": {
1940
+ "properties": {
1941
+ "allowCustom": {
1942
+ "const": false
1943
+ },
1944
+ "presets": {
1945
+ "type": "array",
1946
+ "maxItems": 0
1947
+ }
1948
+ },
1949
+ "required": [
1950
+ "allowCustom",
1951
+ "presets"
1952
+ ]
1953
+ },
1954
+ "properties": {
1955
+ "allowCustom": {
1956
+ "type": "boolean"
1957
+ },
1958
+ "presets": {
1959
+ "type": "array",
1960
+ "items": {
1961
+ "$ref": "#/$defs/configV4ArrayPreset"
1962
+ }
1963
+ }
1964
+ }
1965
+ },
1966
+ "configScalarArrayChoices": {
1967
+ "type": "object",
1968
+ "additionalProperties": false,
1969
+ "required": [
1970
+ "allowCustom",
1971
+ "presets"
1972
+ ],
1973
+ "not": {
1974
+ "properties": {
1975
+ "allowCustom": {
1976
+ "const": false
1977
+ },
1978
+ "presets": {
1979
+ "type": "array",
1980
+ "maxItems": 0
1981
+ }
1982
+ },
1983
+ "required": [
1984
+ "allowCustom",
1985
+ "presets"
1986
+ ]
1987
+ },
1988
+ "properties": {
1989
+ "allowCustom": {
1990
+ "type": "boolean"
1991
+ },
1992
+ "presets": {
1993
+ "type": "array",
1994
+ "items": {
1995
+ "$ref": "#/$defs/configScalarArrayPreset"
1996
+ }
1997
+ }
1998
+ }
1999
+ },
2000
+ "configV4ArrayValue": {
2001
+ "anyOf": [
2002
+ {
2003
+ "type": "array",
2004
+ "maxItems": 128,
2005
+ "items": {
2006
+ "type": "string"
2007
+ }
2008
+ },
2009
+ {
2010
+ "type": "array",
2011
+ "maxItems": 128,
2012
+ "items": {
2013
+ "type": "number"
2014
+ }
2015
+ },
2016
+ {
2017
+ "type": "array",
2018
+ "maxItems": 128,
2019
+ "items": {
2020
+ "type": "boolean"
2021
+ }
2022
+ },
2023
+ {
2024
+ "type": "array",
2025
+ "maxItems": 128,
2026
+ "items": {
2027
+ "$ref": "#/$defs/configV4ObjectValue"
2028
+ }
2029
+ }
2030
+ ]
2031
+ },
2032
+ "configV4Reference": {
2033
+ "type": "object",
2034
+ "additionalProperties": false,
2035
+ "required": [
2036
+ "$ref"
2037
+ ],
2038
+ "properties": {
2039
+ "$ref": {
2040
+ "type": "string",
2041
+ "pattern": "^#/config/definitions/[A-Za-z][A-Za-z0-9_]*$"
2042
+ },
2043
+ "title": {
2044
+ "type": "string"
2045
+ },
2046
+ "description": {
2047
+ "type": "string"
2048
+ },
2049
+ "default": {
2050
+ "anyOf": [
2051
+ {
2052
+ "$ref": "#/$defs/configScalar"
2053
+ },
2054
+ {
2055
+ "$ref": "#/$defs/configV4ArrayValue"
2056
+ },
2057
+ {
2058
+ "$ref": "#/$defs/configV4ObjectValue"
2059
+ }
2060
+ ]
2061
+ },
2062
+ "required": {
2063
+ "type": "boolean"
2064
+ }
2065
+ }
2066
+ },
2067
+ "configV4LeafArrayField": {
2068
+ "type": "object",
2069
+ "additionalProperties": false,
2070
+ "required": [
2071
+ "type",
2072
+ "items"
2073
+ ],
2074
+ "properties": {
2075
+ "type": {
2076
+ "const": "array"
2077
+ },
2078
+ "title": {
2079
+ "type": "string"
2080
+ },
2081
+ "description": {
2082
+ "type": "string"
2083
+ },
2084
+ "required": {
2085
+ "type": "boolean"
2086
+ },
2087
+ "sensitive": false,
2088
+ "items": {
2089
+ "oneOf": [
2090
+ {
2091
+ "$ref": "#/$defs/configV4ScalarDynamicField"
2092
+ },
2093
+ {
2094
+ "$ref": "#/$defs/configDynamicReference"
2095
+ }
2096
+ ]
2097
+ },
2098
+ "choices": {
2099
+ "$ref": "#/$defs/configScalarArrayChoices"
2100
+ },
2101
+ "validation": {
2102
+ "type": "object",
2103
+ "additionalProperties": false,
2104
+ "properties": {
2105
+ "minItems": {
2106
+ "type": "integer",
2107
+ "minimum": 0,
2108
+ "maximum": 128
2109
+ },
2110
+ "maxItems": {
2111
+ "type": "integer",
2112
+ "minimum": 0,
2113
+ "maximum": 128
2114
+ },
2115
+ "uniqueItems": {
2116
+ "type": "boolean"
2117
+ }
2118
+ }
2119
+ }
2120
+ }
2121
+ },
2122
+ "configV4LeafObjectField": {
2123
+ "type": "object",
2124
+ "additionalProperties": false,
2125
+ "required": [
2126
+ "type",
2127
+ "additionalProperties"
2128
+ ],
2129
+ "properties": {
2130
+ "type": {
2131
+ "const": "object"
2132
+ },
2133
+ "title": {
2134
+ "type": "string"
2135
+ },
2136
+ "description": {
2137
+ "type": "string"
2138
+ },
2139
+ "required": {
2140
+ "type": "boolean"
2141
+ },
2142
+ "sensitive": false,
2143
+ "choices": {
2144
+ "$ref": "#/$defs/configObjectChoices"
2145
+ },
2146
+ "additionalProperties": {
2147
+ "oneOf": [
2148
+ {
2149
+ "$ref": "#/$defs/configV4ScalarDynamicField"
2150
+ },
2151
+ {
2152
+ "$ref": "#/$defs/configDynamicReference"
2153
+ }
2154
+ ]
2155
+ },
2156
+ "validation": {
2157
+ "$ref": "#/$defs/configObjectValidation"
2158
+ }
2159
+ }
2160
+ },
2161
+ "configV4PropertyField": {
2162
+ "oneOf": [
2163
+ {
2164
+ "$ref": "#/$defs/configV4ScalarChildField"
2165
+ },
2166
+ {
2167
+ "$ref": "#/$defs/configV4LeafArrayField"
2168
+ },
2169
+ {
2170
+ "$ref": "#/$defs/configV4LeafObjectField"
2171
+ },
2172
+ {
2173
+ "$ref": "#/$defs/configChildReference"
2174
+ }
2175
+ ]
2176
+ },
2177
+ "configV4ObjectVariant": {
2178
+ "type": "object",
2179
+ "additionalProperties": false,
2180
+ "required": [
2181
+ "properties"
2182
+ ],
2183
+ "properties": {
2184
+ "properties": {
2185
+ "type": "object",
2186
+ "maxProperties": 32,
2187
+ "propertyNames": {
2188
+ "not": {
2189
+ "enum": [
2190
+ "__proto__",
2191
+ "constructor",
2192
+ "prototype"
2193
+ ]
2194
+ }
2195
+ },
2196
+ "additionalProperties": {
2197
+ "$ref": "#/$defs/configV4PropertyField"
2198
+ }
2199
+ }
2200
+ }
2201
+ },
2202
+ "configV4ObjectVariants": {
2203
+ "type": "object",
2204
+ "additionalProperties": false,
2205
+ "required": [
2206
+ "discriminator",
2207
+ "cases"
2208
+ ],
2209
+ "properties": {
2210
+ "discriminator": {
2211
+ "type": "string",
2212
+ "minLength": 1
2213
+ },
2214
+ "cases": {
2215
+ "type": "object",
2216
+ "minProperties": 1,
2217
+ "maxProperties": 32,
2218
+ "propertyNames": {
2219
+ "not": {
2220
+ "enum": [
2221
+ "__proto__",
2222
+ "constructor",
2223
+ "prototype"
2224
+ ]
2225
+ }
2226
+ },
2227
+ "additionalProperties": {
2228
+ "$ref": "#/$defs/configV4ObjectVariant"
2229
+ }
2230
+ },
2231
+ "missing": {
2232
+ "type": "string",
2233
+ "minLength": 1
2234
+ },
2235
+ "otherwise": {
2236
+ "$ref": "#/$defs/configV4ObjectVariant"
2237
+ }
2238
+ }
2239
+ },
2240
+ "configV4FixedObjectField": {
2241
+ "type": "object",
2242
+ "additionalProperties": false,
2243
+ "required": [
2244
+ "type",
2245
+ "properties"
2246
+ ],
2247
+ "properties": {
2248
+ "type": {
2249
+ "const": "object"
2250
+ },
2251
+ "title": {
2252
+ "type": "string"
2253
+ },
2254
+ "description": {
2255
+ "type": "string"
2256
+ },
2257
+ "default": {
2258
+ "$ref": "#/$defs/configV4ObjectValue"
2259
+ },
2260
+ "required": {
2261
+ "type": "boolean"
2262
+ },
2263
+ "sensitive": false,
2264
+ "choices": {
2265
+ "$ref": "#/$defs/configV4ObjectChoices"
2266
+ },
2267
+ "properties": {
2268
+ "type": "object",
2269
+ "maxProperties": 32,
2270
+ "propertyNames": {
2271
+ "not": {
2272
+ "enum": [
2273
+ "__proto__",
2274
+ "constructor",
2275
+ "prototype"
2276
+ ]
2277
+ }
2278
+ },
2279
+ "additionalProperties": {
2280
+ "$ref": "#/$defs/configV4PropertyField"
2281
+ }
2282
+ },
2283
+ "additionalProperties": {
2284
+ "const": false
2285
+ },
2286
+ "validation": {
2287
+ "$ref": "#/$defs/configObjectValidation"
2288
+ },
2289
+ "variants": {
2290
+ "$ref": "#/$defs/configV4ObjectVariants"
2291
+ }
2292
+ }
2293
+ },
2294
+ "configV4KeyValueObjectField": {
2295
+ "type": "object",
2296
+ "additionalProperties": false,
2297
+ "required": [
2298
+ "type",
2299
+ "additionalProperties"
2300
+ ],
2301
+ "properties": {
2302
+ "type": {
2303
+ "const": "object"
2304
+ },
2305
+ "title": {
2306
+ "type": "string"
2307
+ },
2308
+ "description": {
2309
+ "type": "string"
2310
+ },
2311
+ "default": {
2312
+ "type": "object",
2313
+ "maxProperties": 32,
2314
+ "propertyNames": {
2315
+ "not": {
2316
+ "enum": [
2317
+ "__proto__",
2318
+ "constructor",
2319
+ "prototype"
2320
+ ]
2321
+ }
2322
+ },
2323
+ "additionalProperties": {
2324
+ "$ref": "#/$defs/configScalar"
2325
+ }
2326
+ },
2327
+ "required": {
2328
+ "type": "boolean"
2329
+ },
2330
+ "sensitive": false,
2331
+ "choices": {
2332
+ "$ref": "#/$defs/configObjectChoices"
2333
+ },
2334
+ "additionalProperties": {
2335
+ "oneOf": [
2336
+ {
2337
+ "$ref": "#/$defs/configV4ScalarDynamicField"
2338
+ },
2339
+ {
2340
+ "$ref": "#/$defs/configDynamicReference"
2341
+ }
2342
+ ]
2343
+ },
2344
+ "validation": {
2345
+ "$ref": "#/$defs/configObjectValidation"
2346
+ }
2347
+ }
2348
+ },
2349
+ "configV4ArrayFixedObjectItem": {
2350
+ "type": "object",
2351
+ "additionalProperties": false,
2352
+ "required": [
2353
+ "type",
2354
+ "properties"
2355
+ ],
2356
+ "properties": {
2357
+ "type": {
2358
+ "const": "object"
2359
+ },
2360
+ "title": {
2361
+ "type": "string"
2362
+ },
2363
+ "description": {
2364
+ "type": "string"
2365
+ },
2366
+ "sensitive": false,
2367
+ "choices": {
2368
+ "$ref": "#/$defs/configV4ObjectChoices"
2369
+ },
2370
+ "properties": {
2371
+ "type": "object",
2372
+ "maxProperties": 32,
2373
+ "propertyNames": {
2374
+ "not": {
2375
+ "enum": [
2376
+ "__proto__",
2377
+ "constructor",
2378
+ "prototype"
2379
+ ]
2380
+ }
2381
+ },
2382
+ "additionalProperties": {
2383
+ "$ref": "#/$defs/configV4PropertyField"
2384
+ }
2385
+ },
2386
+ "additionalProperties": {
2387
+ "const": false
2388
+ },
2389
+ "validation": {
2390
+ "$ref": "#/$defs/configObjectValidation"
2391
+ },
2392
+ "variants": {
2393
+ "$ref": "#/$defs/configV4ObjectVariants"
2394
+ }
2395
+ }
2396
+ },
2397
+ "configV4ArrayKeyValueObjectItem": {
2398
+ "type": "object",
2399
+ "additionalProperties": false,
2400
+ "required": [
2401
+ "type",
2402
+ "additionalProperties"
2403
+ ],
2404
+ "properties": {
2405
+ "type": {
2406
+ "const": "object"
2407
+ },
2408
+ "title": {
2409
+ "type": "string"
2410
+ },
2411
+ "description": {
2412
+ "type": "string"
2413
+ },
2414
+ "sensitive": false,
2415
+ "choices": {
2416
+ "$ref": "#/$defs/configObjectChoices"
2417
+ },
2418
+ "additionalProperties": {
2419
+ "oneOf": [
2420
+ {
2421
+ "$ref": "#/$defs/configV4ScalarDynamicField"
2422
+ },
2423
+ {
2424
+ "$ref": "#/$defs/configDynamicReference"
2425
+ }
2426
+ ]
2427
+ },
2428
+ "validation": {
2429
+ "$ref": "#/$defs/configObjectValidation"
2430
+ }
2431
+ }
2432
+ },
2433
+ "configV4ArrayItem": {
2434
+ "oneOf": [
2435
+ {
2436
+ "$ref": "#/$defs/configV4ScalarDynamicField"
2437
+ },
2438
+ {
2439
+ "$ref": "#/$defs/configV4ArrayFixedObjectItem"
2440
+ },
2441
+ {
2442
+ "$ref": "#/$defs/configV4ArrayKeyValueObjectItem"
2443
+ },
2444
+ {
2445
+ "$ref": "#/$defs/configArrayItemReference"
2446
+ }
2447
+ ]
2448
+ },
2449
+ "configV4ArrayField": {
2450
+ "type": "object",
2451
+ "additionalProperties": false,
2452
+ "required": [
2453
+ "type",
2454
+ "items"
2455
+ ],
2456
+ "properties": {
2457
+ "type": {
2458
+ "const": "array"
2459
+ },
2460
+ "title": {
2461
+ "type": "string"
2462
+ },
2463
+ "description": {
2464
+ "type": "string"
2465
+ },
2466
+ "default": {
2467
+ "$ref": "#/$defs/configV4ArrayValue"
2468
+ },
2469
+ "required": {
2470
+ "type": "boolean"
2471
+ },
2472
+ "sensitive": false,
2473
+ "items": {
2474
+ "$ref": "#/$defs/configV4ArrayItem"
2475
+ },
2476
+ "choices": {
2477
+ "$ref": "#/$defs/configV4ArrayChoices"
2478
+ },
2479
+ "validation": {
2480
+ "$ref": "#/$defs/configArrayValidation"
2481
+ }
2482
+ }
2483
+ },
2484
+ "configV4Field": {
2485
+ "oneOf": [
2486
+ {
2487
+ "$ref": "#/$defs/configV4ScalarField"
2488
+ },
2489
+ {
2490
+ "$ref": "#/$defs/configV4FixedObjectField"
2491
+ },
2492
+ {
2493
+ "$ref": "#/$defs/configV4KeyValueObjectField"
2494
+ },
2495
+ {
2496
+ "$ref": "#/$defs/configV4ArrayField"
2497
+ },
2498
+ {
2499
+ "$ref": "#/$defs/configV4Reference"
2500
+ }
2501
+ ]
2502
+ },
2503
+ "configV4": {
2504
+ "type": "object",
2505
+ "additionalProperties": false,
2506
+ "required": [
2507
+ "schemaVersion",
2508
+ "fields"
2509
+ ],
2510
+ "properties": {
2511
+ "fields": {
2512
+ "type": "object",
2513
+ "maxProperties": 256,
2514
+ "propertyNames": {
2515
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
2516
+ "not": {
2517
+ "enum": [
2518
+ "__proto__",
2519
+ "constructor",
2520
+ "prototype"
2521
+ ]
2522
+ }
2523
+ },
2524
+ "additionalProperties": {
2525
+ "$ref": "#/$defs/configV4Field"
2526
+ }
2527
+ },
2528
+ "presentation": {
2529
+ "type": "object",
2530
+ "additionalProperties": false,
2531
+ "properties": {
2532
+ "groups": {
2533
+ "type": "array",
2534
+ "items": {
2535
+ "type": "object",
2536
+ "additionalProperties": false,
2537
+ "required": [
2538
+ "id",
2539
+ "title",
2540
+ "fields"
2541
+ ],
2542
+ "properties": {
2543
+ "id": {
2544
+ "type": "string"
2545
+ },
2546
+ "title": {
2547
+ "type": "string"
2548
+ },
2549
+ "description": {
2550
+ "type": "string"
2551
+ },
2552
+ "fields": {
2553
+ "$ref": "#/$defs/stringArray"
2554
+ },
2555
+ "advanced": {
2556
+ "type": "boolean"
2557
+ }
2558
+ }
2559
+ }
2560
+ },
2561
+ "summaries": {
2562
+ "type": "object",
2563
+ "propertyNames": {
2564
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
2565
+ "not": {
2566
+ "enum": [
2567
+ "__proto__",
2568
+ "constructor",
2569
+ "prototype"
2570
+ ]
2571
+ }
2572
+ },
2573
+ "additionalProperties": {
2574
+ "$ref": "#/$defs/configJoinSummary"
2575
+ }
2576
+ },
2577
+ "fieldViews": {
2578
+ "type": "object",
2579
+ "propertyNames": {
2580
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
2581
+ "not": {
2582
+ "enum": [
2583
+ "__proto__",
2584
+ "constructor",
2585
+ "prototype"
2586
+ ]
2587
+ }
2588
+ },
2589
+ "additionalProperties": {
2590
+ "oneOf": [
2591
+ {
2592
+ "type": "object",
2593
+ "additionalProperties": false,
2594
+ "required": [
2595
+ "summary"
2596
+ ],
2597
+ "properties": {
2598
+ "summary": {
2599
+ "type": "string"
2600
+ }
2601
+ }
2602
+ },
2603
+ {
2604
+ "type": "object",
2605
+ "additionalProperties": false,
2606
+ "required": [
2607
+ "itemSummary"
2608
+ ],
2609
+ "properties": {
2610
+ "itemSummary": {
2611
+ "type": "string"
2612
+ }
2613
+ }
2614
+ }
2615
+ ]
2616
+ }
2617
+ }
2618
+ }
2619
+ },
2620
+ "schemaVersion": {
2621
+ "const": 4
2622
+ },
2623
+ "definitions": {
2624
+ "type": "object",
2625
+ "maxProperties": 64,
2626
+ "propertyNames": {
2627
+ "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
2628
+ "not": {
2629
+ "enum": [
2630
+ "__proto__",
2631
+ "constructor",
2632
+ "prototype"
2633
+ ]
2634
+ }
2635
+ },
2636
+ "additionalProperties": {
2637
+ "$ref": "#/$defs/configV4Field"
2638
+ }
2639
+ }
2640
+ }
2641
+ },
2642
+ "interface": {
2643
+ "type": "object",
2644
+ "additionalProperties": false,
2645
+ "properties": {
2646
+ "displayName": { "type": "string", "minLength": 1 },
2647
+ "shortDescription": { "type": "string", "minLength": 1 },
2648
+ "capabilities": {
2649
+ "type": "array",
2650
+ "items": { "type": "string", "minLength": 1 }
2651
+ }
2652
+ }
2653
+ }
2654
+ }
2655
+ }