@lesliechan721/aw-plugin-core 0.1.0-beta.5 → 0.1.0-beta.50

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