@objectstack/spec 1.0.10 → 1.0.12

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 (147) hide show
  1. package/README.md +41 -1
  2. package/dist/ai/index.d.mts +2 -1
  3. package/dist/ai/index.d.ts +2 -1
  4. package/dist/ai/index.js +2047 -1944
  5. package/dist/ai/index.js.map +1 -1
  6. package/dist/ai/index.mjs +2047 -1944
  7. package/dist/ai/index.mjs.map +1 -1
  8. package/dist/api/index.d.mts +3 -1
  9. package/dist/api/index.d.ts +3 -1
  10. package/dist/api/index.js +2599 -2292
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/api/index.mjs +2587 -2292
  13. package/dist/api/index.mjs.map +1 -1
  14. package/dist/automation/index.d.mts +2 -1
  15. package/dist/automation/index.d.ts +2 -1
  16. package/dist/automation/index.js +83 -0
  17. package/dist/automation/index.js.map +1 -1
  18. package/dist/automation/index.mjs +77 -0
  19. package/dist/automation/index.mjs.map +1 -1
  20. package/dist/contracts/index.d.mts +3 -2
  21. package/dist/contracts/index.d.ts +3 -2
  22. package/dist/data/index.d.mts +3 -2
  23. package/dist/data/index.d.ts +3 -2
  24. package/dist/data/index.js +658 -556
  25. package/dist/data/index.js.map +1 -1
  26. package/dist/data/index.mjs +656 -556
  27. package/dist/data/index.mjs.map +1 -1
  28. package/dist/{driver.zod-lfi00zVT.d.ts → driver.zod-CfGk9GYh.d.ts} +2164 -11
  29. package/dist/{driver.zod-BOM_Etco.d.mts → driver.zod-y1cX6R3c.d.mts} +2164 -11
  30. package/dist/hub/index.d.mts +1 -1
  31. package/dist/hub/index.d.ts +1 -1
  32. package/dist/hub/index.js +789 -724
  33. package/dist/hub/index.js.map +1 -1
  34. package/dist/hub/index.mjs +789 -724
  35. package/dist/hub/index.mjs.map +1 -1
  36. package/dist/{index-C67cfwmW.d.ts → index-B0Hf65bV.d.ts} +13 -5
  37. package/dist/{index-DLcySG7U.d.ts → index-B5pKM0My.d.ts} +335 -4370
  38. package/dist/{index-Os7lItRe.d.mts → index-BA022mg2.d.ts} +6178 -129
  39. package/dist/{index-B5-VbOKg.d.mts → index-BGeLoH2z.d.ts} +4251 -74
  40. package/dist/{index-CH5zloR3.d.ts → index-BwO__aqV.d.ts} +1 -1
  41. package/dist/{index-Dp7GFJ8V.d.mts → index-Cia3JPQ8.d.mts} +13 -5
  42. package/dist/{index-D12rNohm.d.mts → index-CpD1q1FP.d.ts} +35 -18
  43. package/dist/{index-Os7lItRe.d.ts → index-D5RSFPuB.d.mts} +6178 -129
  44. package/dist/{index-CU4m6noq.d.mts → index-DGjpaj0X.d.mts} +1 -1
  45. package/dist/{index-D12rNohm.d.ts → index-Dfn5VXl6.d.mts} +35 -18
  46. package/dist/{index-l6WIlmOD.d.mts → index-Dgybxlky.d.mts} +177 -158
  47. package/dist/{index-l6WIlmOD.d.ts → index-Dgybxlky.d.ts} +177 -158
  48. package/dist/{index-DLcySG7U.d.mts → index-Dpsk8PF4.d.mts} +335 -4370
  49. package/dist/{index-CyognKSZ.d.ts → index-DrNah5E0.d.ts} +1952 -6990
  50. package/dist/{index-DE_lJ11p.d.mts → index-OO84R20k.d.mts} +1952 -6990
  51. package/dist/{index-B5-VbOKg.d.ts → index-upA3Xt04.d.mts} +4251 -74
  52. package/dist/index.d.mts +8072 -1922
  53. package/dist/index.d.ts +8072 -1922
  54. package/dist/index.js +8563 -8249
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +8563 -8249
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/integration/index.d.mts +1 -1
  59. package/dist/integration/index.d.ts +1 -1
  60. package/dist/kernel/index.d.mts +2 -1
  61. package/dist/kernel/index.d.ts +2 -1
  62. package/dist/kernel/index.js +884 -684
  63. package/dist/kernel/index.js.map +1 -1
  64. package/dist/kernel/index.mjs +870 -684
  65. package/dist/kernel/index.mjs.map +1 -1
  66. package/dist/package-registry.zod-JMcOYNxM.d.mts +21119 -0
  67. package/dist/package-registry.zod-JMcOYNxM.d.ts +21119 -0
  68. package/dist/state-machine.zod-B-lFFSxQ.d.mts +285 -0
  69. package/dist/state-machine.zod-B-lFFSxQ.d.ts +285 -0
  70. package/dist/system/index.d.mts +2 -1
  71. package/dist/system/index.d.ts +2 -1
  72. package/dist/system/index.js +749 -651
  73. package/dist/system/index.js.map +1 -1
  74. package/dist/system/index.mjs +749 -651
  75. package/dist/system/index.mjs.map +1 -1
  76. package/dist/ui/index.d.mts +1 -1
  77. package/dist/ui/index.d.ts +1 -1
  78. package/json-schema/ai/Agent.json +499 -0
  79. package/json-schema/ai/DevOpsAgent.json +499 -0
  80. package/json-schema/ai/FeedbackLoop.json +2188 -186
  81. package/json-schema/ai/Resolution.json +2188 -186
  82. package/json-schema/api/ApiRoutes.json +4 -0
  83. package/json-schema/api/CompileManifestResponse.json +40 -10
  84. package/json-schema/api/DisablePackageRequest.json +18 -0
  85. package/json-schema/api/DisablePackageResponse.json +1521 -0
  86. package/json-schema/api/Discovery.json +4 -0
  87. package/json-schema/api/EnablePackageRequest.json +18 -0
  88. package/json-schema/api/EnablePackageResponse.json +1521 -0
  89. package/json-schema/api/GetDiscoveryResponse.json +4 -0
  90. package/json-schema/api/GetPackageRequest.json +18 -0
  91. package/json-schema/api/GetPackageResponse.json +1518 -0
  92. package/json-schema/api/InstallPackageRequest.json +1483 -0
  93. package/json-schema/api/InstallPackageResponse.json +1521 -0
  94. package/json-schema/api/ListPackagesRequest.json +42 -0
  95. package/json-schema/api/ListPackagesResponse.json +1525 -0
  96. package/json-schema/api/ObjectDefinitionResponse.json +1001 -0
  97. package/json-schema/api/ObjectStackProtocol.json +86 -1
  98. package/json-schema/api/RestApiConfig.json +5 -0
  99. package/json-schema/api/RestServerConfig.json +5 -0
  100. package/json-schema/api/UninstallPackageRequest.json +18 -0
  101. package/json-schema/api/UninstallPackageResponse.json +25 -0
  102. package/json-schema/automation/ActionRef.json +30 -0
  103. package/json-schema/automation/Event.json +24 -0
  104. package/json-schema/automation/Flow.json +1 -0
  105. package/json-schema/automation/FlowNode.json +1 -0
  106. package/json-schema/automation/FlowNodeAction.json +1 -0
  107. package/json-schema/automation/GuardRef.json +30 -0
  108. package/json-schema/automation/StateMachine.json +504 -0
  109. package/json-schema/automation/StateNode.json +324 -0
  110. package/json-schema/automation/Transition.json +73 -0
  111. package/json-schema/data/Object.json +1001 -0
  112. package/json-schema/data/ObjectExtension.json +2376 -0
  113. package/json-schema/data/ObjectOwnershipEnum.json +13 -0
  114. package/json-schema/hub/ComposerResponse.json +40 -10
  115. package/json-schema/kernel/DisablePackageRequest.json +18 -0
  116. package/json-schema/kernel/DisablePackageResponse.json +1521 -0
  117. package/json-schema/kernel/EnablePackageRequest.json +18 -0
  118. package/json-schema/kernel/EnablePackageResponse.json +1521 -0
  119. package/json-schema/kernel/EventBusConfig.json +15 -0
  120. package/json-schema/kernel/EventHandler.json +6 -0
  121. package/json-schema/kernel/EventPersistence.json +3 -0
  122. package/json-schema/kernel/EventRoute.json +3 -0
  123. package/json-schema/kernel/EventWebhookConfig.json +3 -0
  124. package/json-schema/kernel/GetPackageRequest.json +18 -0
  125. package/json-schema/kernel/GetPackageResponse.json +1518 -0
  126. package/json-schema/kernel/InstallPackageRequest.json +1483 -0
  127. package/json-schema/kernel/InstallPackageResponse.json +1521 -0
  128. package/json-schema/kernel/InstalledPackage.json +1509 -0
  129. package/json-schema/kernel/ListPackagesRequest.json +42 -0
  130. package/json-schema/kernel/ListPackagesResponse.json +1525 -0
  131. package/json-schema/kernel/Manifest.json +40 -10
  132. package/json-schema/kernel/PackageStatusEnum.json +16 -0
  133. package/json-schema/kernel/Plugin.json +5 -0
  134. package/json-schema/kernel/PluginContext.json +31 -7
  135. package/json-schema/kernel/PluginLifecycle.json +7 -1
  136. package/json-schema/kernel/RealTimeNotificationConfig.json +3 -0
  137. package/json-schema/kernel/UninstallPackageRequest.json +18 -0
  138. package/json-schema/kernel/UninstallPackageResponse.json +25 -0
  139. package/json-schema/system/ChangeSet.json +2188 -186
  140. package/json-schema/system/CreateObjectOperation.json +1001 -0
  141. package/json-schema/system/MigrationOperation.json +1001 -0
  142. package/package.json +29 -15
  143. package/prompts/create-new-project.md +37 -19
  144. package/dist/{index-I3piy4U4.d.mts → index-BmU_sD1f.d.mts} +8 -8
  145. package/dist/{index-CkhpsEUw.d.ts → index-BnXuc_HO.d.ts} +8 -8
  146. package/dist/{index-CIDI-8zR.d.mts → index-C_NTOcet.d.mts} +98 -98
  147. package/dist/{index-CIDI-8zR.d.ts → index-C_NTOcet.d.ts} +98 -98
@@ -0,0 +1,1521 @@
1
+ {
2
+ "$ref": "#/definitions/InstallPackageResponse",
3
+ "definitions": {
4
+ "InstallPackageResponse": {
5
+ "type": "object",
6
+ "properties": {
7
+ "package": {
8
+ "type": "object",
9
+ "properties": {
10
+ "manifest": {
11
+ "type": "object",
12
+ "properties": {
13
+ "id": {
14
+ "type": "string",
15
+ "description": "Unique package identifier (reverse domain style)"
16
+ },
17
+ "namespace": {
18
+ "type": "string",
19
+ "pattern": "^[a-z][a-z0-9_]{1,19}$",
20
+ "description": "Short namespace identifier for metadata scoping (e.g. \"crm\", \"todo\")"
21
+ },
22
+ "version": {
23
+ "type": "string",
24
+ "pattern": "^\\d+\\.\\d+\\.\\d+$",
25
+ "description": "Package version (semantic versioning)"
26
+ },
27
+ "type": {
28
+ "type": "string",
29
+ "enum": [
30
+ "plugin",
31
+ "ui",
32
+ "driver",
33
+ "server",
34
+ "app",
35
+ "theme",
36
+ "agent",
37
+ "objectql",
38
+ "module",
39
+ "gateway",
40
+ "adapter"
41
+ ],
42
+ "description": "Type of package"
43
+ },
44
+ "name": {
45
+ "type": "string",
46
+ "description": "Human-readable package name"
47
+ },
48
+ "description": {
49
+ "type": "string",
50
+ "description": "Package description"
51
+ },
52
+ "permissions": {
53
+ "type": "array",
54
+ "items": {
55
+ "type": "string"
56
+ },
57
+ "description": "Array of required permission strings"
58
+ },
59
+ "objects": {
60
+ "type": "array",
61
+ "items": {
62
+ "type": "string"
63
+ },
64
+ "description": "Glob patterns for ObjectQL schemas files"
65
+ },
66
+ "datasources": {
67
+ "type": "array",
68
+ "items": {
69
+ "type": "string"
70
+ },
71
+ "description": "Glob patterns for Datasource definitions"
72
+ },
73
+ "dependencies": {
74
+ "type": "object",
75
+ "additionalProperties": {
76
+ "type": "string"
77
+ },
78
+ "description": "Package dependencies"
79
+ },
80
+ "configuration": {
81
+ "type": "object",
82
+ "properties": {
83
+ "title": {
84
+ "type": "string"
85
+ },
86
+ "properties": {
87
+ "type": "object",
88
+ "additionalProperties": {
89
+ "type": "object",
90
+ "properties": {
91
+ "type": {
92
+ "type": "string",
93
+ "enum": [
94
+ "string",
95
+ "number",
96
+ "boolean",
97
+ "array",
98
+ "object"
99
+ ],
100
+ "description": "Data type of the setting"
101
+ },
102
+ "default": {
103
+ "description": "Default value"
104
+ },
105
+ "description": {
106
+ "type": "string",
107
+ "description": "Tooltip description"
108
+ },
109
+ "required": {
110
+ "type": "boolean",
111
+ "description": "Is this setting required?"
112
+ },
113
+ "secret": {
114
+ "type": "boolean",
115
+ "description": "If true, value is encrypted/masked (e.g. API Keys)"
116
+ },
117
+ "enum": {
118
+ "type": "array",
119
+ "items": {
120
+ "type": "string"
121
+ },
122
+ "description": "Allowed values for select inputs"
123
+ }
124
+ },
125
+ "required": [
126
+ "type"
127
+ ],
128
+ "additionalProperties": false
129
+ },
130
+ "description": "Map of configuration keys to their definitions"
131
+ }
132
+ },
133
+ "required": [
134
+ "properties"
135
+ ],
136
+ "additionalProperties": false,
137
+ "description": "Plugin configuration settings"
138
+ },
139
+ "contributes": {
140
+ "type": "object",
141
+ "properties": {
142
+ "kinds": {
143
+ "type": "array",
144
+ "items": {
145
+ "type": "object",
146
+ "properties": {
147
+ "id": {
148
+ "type": "string",
149
+ "description": "The generic identifier of the kind (e.g., \"sys.bi.report\")"
150
+ },
151
+ "globs": {
152
+ "type": "array",
153
+ "items": {
154
+ "type": "string"
155
+ },
156
+ "description": "File patterns to watch (e.g., [\"**/*.report.ts\"])"
157
+ },
158
+ "description": {
159
+ "type": "string",
160
+ "description": "Description of what this kind represents"
161
+ }
162
+ },
163
+ "required": [
164
+ "id",
165
+ "globs"
166
+ ],
167
+ "additionalProperties": false
168
+ },
169
+ "description": "New Metadata Types to recognize"
170
+ },
171
+ "events": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "string"
175
+ },
176
+ "description": "Events this plugin listens to"
177
+ },
178
+ "menus": {
179
+ "type": "object",
180
+ "additionalProperties": {
181
+ "type": "array",
182
+ "items": {
183
+ "type": "object",
184
+ "properties": {
185
+ "id": {
186
+ "type": "string"
187
+ },
188
+ "label": {
189
+ "type": "string"
190
+ },
191
+ "command": {
192
+ "type": "string"
193
+ }
194
+ },
195
+ "required": [
196
+ "id",
197
+ "label"
198
+ ],
199
+ "additionalProperties": false
200
+ }
201
+ },
202
+ "description": "UI Menu contributions"
203
+ },
204
+ "themes": {
205
+ "type": "array",
206
+ "items": {
207
+ "type": "object",
208
+ "properties": {
209
+ "id": {
210
+ "type": "string"
211
+ },
212
+ "label": {
213
+ "type": "string"
214
+ },
215
+ "path": {
216
+ "type": "string"
217
+ }
218
+ },
219
+ "required": [
220
+ "id",
221
+ "label",
222
+ "path"
223
+ ],
224
+ "additionalProperties": false
225
+ },
226
+ "description": "Theme contributions"
227
+ },
228
+ "translations": {
229
+ "type": "array",
230
+ "items": {
231
+ "type": "object",
232
+ "properties": {
233
+ "locale": {
234
+ "type": "string"
235
+ },
236
+ "path": {
237
+ "type": "string"
238
+ }
239
+ },
240
+ "required": [
241
+ "locale",
242
+ "path"
243
+ ],
244
+ "additionalProperties": false
245
+ },
246
+ "description": "Translation resources"
247
+ },
248
+ "actions": {
249
+ "type": "array",
250
+ "items": {
251
+ "type": "object",
252
+ "properties": {
253
+ "name": {
254
+ "type": "string",
255
+ "description": "Unique action name"
256
+ },
257
+ "label": {
258
+ "type": "string"
259
+ },
260
+ "description": {
261
+ "type": "string"
262
+ },
263
+ "input": {
264
+ "description": "Input validation schema"
265
+ },
266
+ "output": {
267
+ "description": "Output schema"
268
+ }
269
+ },
270
+ "required": [
271
+ "name"
272
+ ],
273
+ "additionalProperties": false
274
+ },
275
+ "description": "Exposed server actions"
276
+ },
277
+ "drivers": {
278
+ "type": "array",
279
+ "items": {
280
+ "type": "object",
281
+ "properties": {
282
+ "id": {
283
+ "type": "string",
284
+ "description": "Driver unique identifier (e.g. \"postgres\", \"mongo\")"
285
+ },
286
+ "label": {
287
+ "type": "string",
288
+ "description": "Human readable name"
289
+ },
290
+ "description": {
291
+ "type": "string"
292
+ }
293
+ },
294
+ "required": [
295
+ "id",
296
+ "label"
297
+ ],
298
+ "additionalProperties": false
299
+ },
300
+ "description": "Driver contributions"
301
+ },
302
+ "fieldTypes": {
303
+ "type": "array",
304
+ "items": {
305
+ "type": "object",
306
+ "properties": {
307
+ "name": {
308
+ "type": "string",
309
+ "description": "Unique field type name (e.g. \"vector\")"
310
+ },
311
+ "label": {
312
+ "type": "string",
313
+ "description": "Display label"
314
+ },
315
+ "description": {
316
+ "type": "string"
317
+ }
318
+ },
319
+ "required": [
320
+ "name",
321
+ "label"
322
+ ],
323
+ "additionalProperties": false
324
+ },
325
+ "description": "Field Type contributions"
326
+ },
327
+ "functions": {
328
+ "type": "array",
329
+ "items": {
330
+ "type": "object",
331
+ "properties": {
332
+ "name": {
333
+ "type": "string",
334
+ "description": "Function name (e.g. \"distance\")"
335
+ },
336
+ "description": {
337
+ "type": "string"
338
+ },
339
+ "args": {
340
+ "type": "array",
341
+ "items": {
342
+ "type": "string"
343
+ },
344
+ "description": "Argument types"
345
+ },
346
+ "returnType": {
347
+ "type": "string"
348
+ }
349
+ },
350
+ "required": [
351
+ "name"
352
+ ],
353
+ "additionalProperties": false
354
+ },
355
+ "description": "Query Function contributions"
356
+ }
357
+ },
358
+ "additionalProperties": false,
359
+ "description": "Platform contributions"
360
+ },
361
+ "data": {
362
+ "type": "array",
363
+ "items": {
364
+ "type": "object",
365
+ "properties": {
366
+ "object": {
367
+ "type": "string",
368
+ "pattern": "^[a-z_][a-z0-9_]*$",
369
+ "description": "Target Object Name"
370
+ },
371
+ "externalId": {
372
+ "type": "string",
373
+ "default": "name",
374
+ "description": "Field match for uniqueness check"
375
+ },
376
+ "mode": {
377
+ "type": "string",
378
+ "enum": [
379
+ "insert",
380
+ "update",
381
+ "upsert",
382
+ "replace",
383
+ "ignore"
384
+ ],
385
+ "default": "upsert",
386
+ "description": "Conflict resolution strategy"
387
+ },
388
+ "env": {
389
+ "type": "array",
390
+ "items": {
391
+ "type": "string",
392
+ "enum": [
393
+ "prod",
394
+ "dev",
395
+ "test"
396
+ ]
397
+ },
398
+ "default": [
399
+ "prod",
400
+ "dev",
401
+ "test"
402
+ ],
403
+ "description": "Applicable environments"
404
+ },
405
+ "records": {
406
+ "type": "array",
407
+ "items": {
408
+ "type": "object",
409
+ "additionalProperties": {}
410
+ },
411
+ "description": "Data records"
412
+ }
413
+ },
414
+ "required": [
415
+ "object",
416
+ "records"
417
+ ],
418
+ "additionalProperties": false
419
+ },
420
+ "description": "Initial seed data (prefer top-level data field)"
421
+ },
422
+ "capabilities": {
423
+ "type": "object",
424
+ "properties": {
425
+ "implements": {
426
+ "type": "array",
427
+ "items": {
428
+ "type": "object",
429
+ "properties": {
430
+ "protocol": {
431
+ "type": "object",
432
+ "properties": {
433
+ "id": {
434
+ "type": "string",
435
+ "pattern": "^([a-z][a-z0-9]*\\.)+protocol\\.[a-z][a-z0-9._]*\\.v\\d+$",
436
+ "description": "Unique protocol identifier (e.g., com.objectstack.protocol.storage.v1)"
437
+ },
438
+ "label": {
439
+ "type": "string"
440
+ },
441
+ "version": {
442
+ "type": "object",
443
+ "properties": {
444
+ "major": {
445
+ "type": "integer",
446
+ "minimum": 0
447
+ },
448
+ "minor": {
449
+ "type": "integer",
450
+ "minimum": 0
451
+ },
452
+ "patch": {
453
+ "type": "integer",
454
+ "minimum": 0
455
+ }
456
+ },
457
+ "required": [
458
+ "major",
459
+ "minor",
460
+ "patch"
461
+ ],
462
+ "additionalProperties": false,
463
+ "description": "Semantic version of the protocol"
464
+ },
465
+ "specification": {
466
+ "type": "string",
467
+ "description": "URL or path to protocol specification"
468
+ },
469
+ "description": {
470
+ "type": "string"
471
+ }
472
+ },
473
+ "required": [
474
+ "id",
475
+ "label",
476
+ "version"
477
+ ],
478
+ "additionalProperties": false
479
+ },
480
+ "conformance": {
481
+ "type": "string",
482
+ "enum": [
483
+ "full",
484
+ "partial",
485
+ "experimental",
486
+ "deprecated"
487
+ ],
488
+ "description": "Level of protocol conformance",
489
+ "default": "full"
490
+ },
491
+ "implementedFeatures": {
492
+ "type": "array",
493
+ "items": {
494
+ "type": "string"
495
+ },
496
+ "description": "List of implemented feature names"
497
+ },
498
+ "features": {
499
+ "type": "array",
500
+ "items": {
501
+ "type": "object",
502
+ "properties": {
503
+ "name": {
504
+ "type": "string",
505
+ "description": "Feature identifier within the protocol"
506
+ },
507
+ "enabled": {
508
+ "type": "boolean",
509
+ "default": true
510
+ },
511
+ "description": {
512
+ "type": "string"
513
+ },
514
+ "sinceVersion": {
515
+ "type": "string",
516
+ "description": "Version when this feature was added"
517
+ },
518
+ "deprecatedSince": {
519
+ "type": "string",
520
+ "description": "Version when deprecated"
521
+ }
522
+ },
523
+ "required": [
524
+ "name"
525
+ ],
526
+ "additionalProperties": false
527
+ }
528
+ },
529
+ "metadata": {
530
+ "type": "object",
531
+ "additionalProperties": {}
532
+ },
533
+ "certified": {
534
+ "type": "boolean",
535
+ "default": false,
536
+ "description": "Has passed official conformance tests"
537
+ },
538
+ "certificationDate": {
539
+ "type": "string",
540
+ "format": "date-time"
541
+ }
542
+ },
543
+ "required": [
544
+ "protocol"
545
+ ],
546
+ "additionalProperties": false
547
+ },
548
+ "description": "List of protocols this plugin conforms to"
549
+ },
550
+ "provides": {
551
+ "type": "array",
552
+ "items": {
553
+ "type": "object",
554
+ "properties": {
555
+ "id": {
556
+ "type": "string",
557
+ "pattern": "^([a-z][a-z0-9]*\\.)+interface\\.[a-z][a-z0-9._]+$",
558
+ "description": "Unique interface identifier"
559
+ },
560
+ "name": {
561
+ "type": "string"
562
+ },
563
+ "description": {
564
+ "type": "string"
565
+ },
566
+ "version": {
567
+ "type": "object",
568
+ "properties": {
569
+ "major": {
570
+ "type": "integer",
571
+ "minimum": 0
572
+ },
573
+ "minor": {
574
+ "type": "integer",
575
+ "minimum": 0
576
+ },
577
+ "patch": {
578
+ "type": "integer",
579
+ "minimum": 0
580
+ }
581
+ },
582
+ "required": [
583
+ "major",
584
+ "minor",
585
+ "patch"
586
+ ],
587
+ "additionalProperties": false,
588
+ "description": "Semantic version of the protocol"
589
+ },
590
+ "methods": {
591
+ "type": "array",
592
+ "items": {
593
+ "type": "object",
594
+ "properties": {
595
+ "name": {
596
+ "type": "string",
597
+ "description": "Method name"
598
+ },
599
+ "description": {
600
+ "type": "string"
601
+ },
602
+ "parameters": {
603
+ "type": "array",
604
+ "items": {
605
+ "type": "object",
606
+ "properties": {
607
+ "name": {
608
+ "type": "string"
609
+ },
610
+ "type": {
611
+ "type": "string",
612
+ "description": "Type notation (e.g., string, number, User)"
613
+ },
614
+ "required": {
615
+ "type": "boolean",
616
+ "default": true
617
+ },
618
+ "description": {
619
+ "type": "string"
620
+ }
621
+ },
622
+ "required": [
623
+ "name",
624
+ "type"
625
+ ],
626
+ "additionalProperties": false
627
+ }
628
+ },
629
+ "returnType": {
630
+ "type": "string",
631
+ "description": "Return value type"
632
+ },
633
+ "async": {
634
+ "type": "boolean",
635
+ "default": false,
636
+ "description": "Whether method returns a Promise"
637
+ }
638
+ },
639
+ "required": [
640
+ "name"
641
+ ],
642
+ "additionalProperties": false
643
+ }
644
+ },
645
+ "events": {
646
+ "type": "array",
647
+ "items": {
648
+ "type": "object",
649
+ "properties": {
650
+ "name": {
651
+ "type": "string",
652
+ "description": "Event name"
653
+ },
654
+ "description": {
655
+ "type": "string"
656
+ },
657
+ "payload": {
658
+ "type": "string",
659
+ "description": "Event payload type"
660
+ }
661
+ },
662
+ "required": [
663
+ "name"
664
+ ],
665
+ "additionalProperties": false
666
+ }
667
+ },
668
+ "stability": {
669
+ "type": "string",
670
+ "enum": [
671
+ "stable",
672
+ "beta",
673
+ "alpha",
674
+ "experimental"
675
+ ],
676
+ "default": "stable"
677
+ }
678
+ },
679
+ "required": [
680
+ "id",
681
+ "name",
682
+ "version",
683
+ "methods"
684
+ ],
685
+ "additionalProperties": false
686
+ },
687
+ "description": "Services/APIs this plugin offers to others"
688
+ },
689
+ "requires": {
690
+ "type": "array",
691
+ "items": {
692
+ "type": "object",
693
+ "properties": {
694
+ "pluginId": {
695
+ "type": "string",
696
+ "pattern": "^([a-z][a-z0-9]*\\.)+[a-z][a-z0-9-]+$",
697
+ "description": "Required plugin identifier"
698
+ },
699
+ "version": {
700
+ "type": "string",
701
+ "description": "Semantic version constraint"
702
+ },
703
+ "optional": {
704
+ "type": "boolean",
705
+ "default": false
706
+ },
707
+ "reason": {
708
+ "type": "string"
709
+ },
710
+ "requiredCapabilities": {
711
+ "type": "array",
712
+ "items": {
713
+ "type": "string"
714
+ },
715
+ "description": "Protocol IDs the dependency must support"
716
+ }
717
+ },
718
+ "required": [
719
+ "pluginId",
720
+ "version"
721
+ ],
722
+ "additionalProperties": false
723
+ },
724
+ "description": "Required plugins and their capabilities"
725
+ },
726
+ "extensionPoints": {
727
+ "type": "array",
728
+ "items": {
729
+ "type": "object",
730
+ "properties": {
731
+ "id": {
732
+ "type": "string",
733
+ "pattern": "^([a-z][a-z0-9]*\\.)+extension\\.[a-z][a-z0-9._]+$",
734
+ "description": "Unique extension point identifier"
735
+ },
736
+ "name": {
737
+ "type": "string"
738
+ },
739
+ "description": {
740
+ "type": "string"
741
+ },
742
+ "type": {
743
+ "type": "string",
744
+ "enum": [
745
+ "action",
746
+ "hook",
747
+ "widget",
748
+ "provider",
749
+ "transformer",
750
+ "validator",
751
+ "decorator"
752
+ ]
753
+ },
754
+ "contract": {
755
+ "type": "object",
756
+ "properties": {
757
+ "input": {
758
+ "type": "string",
759
+ "description": "Input type/schema"
760
+ },
761
+ "output": {
762
+ "type": "string",
763
+ "description": "Output type/schema"
764
+ },
765
+ "signature": {
766
+ "type": "string",
767
+ "description": "Function signature if applicable"
768
+ }
769
+ },
770
+ "additionalProperties": false
771
+ },
772
+ "cardinality": {
773
+ "type": "string",
774
+ "enum": [
775
+ "single",
776
+ "multiple"
777
+ ],
778
+ "default": "multiple",
779
+ "description": "Whether multiple extensions can register to this point"
780
+ }
781
+ },
782
+ "required": [
783
+ "id",
784
+ "name",
785
+ "type"
786
+ ],
787
+ "additionalProperties": false
788
+ },
789
+ "description": "Points where other plugins can extend this plugin"
790
+ },
791
+ "extensions": {
792
+ "type": "array",
793
+ "items": {
794
+ "type": "object",
795
+ "properties": {
796
+ "targetPluginId": {
797
+ "type": "string",
798
+ "description": "Plugin ID being extended"
799
+ },
800
+ "extensionPointId": {
801
+ "type": "string",
802
+ "description": "Extension point identifier"
803
+ },
804
+ "implementation": {
805
+ "type": "string",
806
+ "description": "Path to implementation module"
807
+ },
808
+ "priority": {
809
+ "type": "integer",
810
+ "default": 100,
811
+ "description": "Registration priority (lower = higher priority)"
812
+ }
813
+ },
814
+ "required": [
815
+ "targetPluginId",
816
+ "extensionPointId",
817
+ "implementation"
818
+ ],
819
+ "additionalProperties": false
820
+ },
821
+ "description": "Extensions contributed to other plugins"
822
+ }
823
+ },
824
+ "additionalProperties": false,
825
+ "description": "Plugin capability declarations for interoperability"
826
+ },
827
+ "extensions": {
828
+ "type": "object",
829
+ "additionalProperties": {},
830
+ "description": "Extension points and contributions"
831
+ },
832
+ "loading": {
833
+ "type": "object",
834
+ "properties": {
835
+ "strategy": {
836
+ "type": "string",
837
+ "enum": [
838
+ "eager",
839
+ "lazy",
840
+ "parallel",
841
+ "deferred",
842
+ "on-demand"
843
+ ],
844
+ "description": "Plugin loading strategy",
845
+ "default": "lazy"
846
+ },
847
+ "preload": {
848
+ "type": "object",
849
+ "properties": {
850
+ "enabled": {
851
+ "type": "boolean",
852
+ "default": false
853
+ },
854
+ "priority": {
855
+ "type": "integer",
856
+ "minimum": 0,
857
+ "default": 100
858
+ },
859
+ "resources": {
860
+ "type": "array",
861
+ "items": {
862
+ "type": "string",
863
+ "enum": [
864
+ "metadata",
865
+ "dependencies",
866
+ "assets",
867
+ "code",
868
+ "services"
869
+ ]
870
+ }
871
+ },
872
+ "conditions": {
873
+ "type": "object",
874
+ "properties": {
875
+ "routes": {
876
+ "type": "array",
877
+ "items": {
878
+ "type": "string"
879
+ }
880
+ },
881
+ "roles": {
882
+ "type": "array",
883
+ "items": {
884
+ "type": "string"
885
+ }
886
+ },
887
+ "deviceType": {
888
+ "type": "array",
889
+ "items": {
890
+ "type": "string",
891
+ "enum": [
892
+ "desktop",
893
+ "mobile",
894
+ "tablet"
895
+ ]
896
+ }
897
+ },
898
+ "minNetworkSpeed": {
899
+ "type": "string",
900
+ "enum": [
901
+ "slow-2g",
902
+ "2g",
903
+ "3g",
904
+ "4g"
905
+ ]
906
+ }
907
+ },
908
+ "additionalProperties": false
909
+ }
910
+ },
911
+ "additionalProperties": false,
912
+ "description": "Plugin preloading configuration"
913
+ },
914
+ "codeSplitting": {
915
+ "type": "object",
916
+ "properties": {
917
+ "enabled": {
918
+ "type": "boolean",
919
+ "default": true
920
+ },
921
+ "strategy": {
922
+ "type": "string",
923
+ "enum": [
924
+ "route",
925
+ "feature",
926
+ "size",
927
+ "custom"
928
+ ],
929
+ "default": "feature"
930
+ },
931
+ "chunkNaming": {
932
+ "type": "string",
933
+ "enum": [
934
+ "hashed",
935
+ "named",
936
+ "sequential"
937
+ ],
938
+ "default": "hashed"
939
+ },
940
+ "maxChunkSize": {
941
+ "type": "integer",
942
+ "minimum": 10,
943
+ "description": "Max chunk size in KB"
944
+ },
945
+ "sharedDependencies": {
946
+ "type": "object",
947
+ "properties": {
948
+ "enabled": {
949
+ "type": "boolean",
950
+ "default": true
951
+ },
952
+ "minChunks": {
953
+ "type": "integer",
954
+ "minimum": 1,
955
+ "default": 2
956
+ }
957
+ },
958
+ "additionalProperties": false
959
+ }
960
+ },
961
+ "additionalProperties": false,
962
+ "description": "Plugin code splitting configuration"
963
+ },
964
+ "dynamicImport": {
965
+ "type": "object",
966
+ "properties": {
967
+ "enabled": {
968
+ "type": "boolean",
969
+ "default": true
970
+ },
971
+ "mode": {
972
+ "type": "string",
973
+ "enum": [
974
+ "async",
975
+ "sync",
976
+ "eager",
977
+ "lazy"
978
+ ],
979
+ "default": "async"
980
+ },
981
+ "prefetch": {
982
+ "type": "boolean",
983
+ "default": false,
984
+ "description": "Prefetch module in idle time"
985
+ },
986
+ "preload": {
987
+ "type": "boolean",
988
+ "default": false,
989
+ "description": "Preload module in parallel with parent"
990
+ },
991
+ "webpackChunkName": {
992
+ "type": "string",
993
+ "description": "Custom chunk name for webpack"
994
+ },
995
+ "timeout": {
996
+ "type": "integer",
997
+ "minimum": 100,
998
+ "default": 30000,
999
+ "description": "Dynamic import timeout (ms)"
1000
+ },
1001
+ "retry": {
1002
+ "type": "object",
1003
+ "properties": {
1004
+ "enabled": {
1005
+ "type": "boolean",
1006
+ "default": true
1007
+ },
1008
+ "maxAttempts": {
1009
+ "type": "integer",
1010
+ "minimum": 1,
1011
+ "maximum": 10,
1012
+ "default": 3
1013
+ },
1014
+ "backoffMs": {
1015
+ "type": "integer",
1016
+ "minimum": 0,
1017
+ "default": 1000,
1018
+ "description": "Exponential backoff base delay"
1019
+ }
1020
+ },
1021
+ "additionalProperties": false
1022
+ }
1023
+ },
1024
+ "additionalProperties": false,
1025
+ "description": "Plugin dynamic import configuration"
1026
+ },
1027
+ "initialization": {
1028
+ "type": "object",
1029
+ "properties": {
1030
+ "mode": {
1031
+ "type": "string",
1032
+ "enum": [
1033
+ "sync",
1034
+ "async",
1035
+ "parallel",
1036
+ "sequential"
1037
+ ],
1038
+ "default": "async"
1039
+ },
1040
+ "timeout": {
1041
+ "type": "integer",
1042
+ "minimum": 100,
1043
+ "default": 30000
1044
+ },
1045
+ "priority": {
1046
+ "type": "integer",
1047
+ "minimum": 0,
1048
+ "default": 100
1049
+ },
1050
+ "critical": {
1051
+ "type": "boolean",
1052
+ "default": false,
1053
+ "description": "If true, kernel bootstrap fails if plugin fails"
1054
+ },
1055
+ "retry": {
1056
+ "type": "object",
1057
+ "properties": {
1058
+ "enabled": {
1059
+ "type": "boolean",
1060
+ "default": false
1061
+ },
1062
+ "maxAttempts": {
1063
+ "type": "integer",
1064
+ "minimum": 1,
1065
+ "maximum": 5,
1066
+ "default": 3
1067
+ },
1068
+ "backoffMs": {
1069
+ "type": "integer",
1070
+ "minimum": 0,
1071
+ "default": 1000
1072
+ }
1073
+ },
1074
+ "additionalProperties": false
1075
+ },
1076
+ "healthCheckInterval": {
1077
+ "type": "integer",
1078
+ "minimum": 0,
1079
+ "description": "Health check interval in ms (0 = disabled)"
1080
+ }
1081
+ },
1082
+ "additionalProperties": false,
1083
+ "description": "Plugin initialization configuration"
1084
+ },
1085
+ "dependencyResolution": {
1086
+ "type": "object",
1087
+ "properties": {
1088
+ "strategy": {
1089
+ "type": "string",
1090
+ "enum": [
1091
+ "strict",
1092
+ "compatible",
1093
+ "latest",
1094
+ "pinned"
1095
+ ],
1096
+ "default": "compatible"
1097
+ },
1098
+ "peerDependencies": {
1099
+ "type": "object",
1100
+ "properties": {
1101
+ "resolve": {
1102
+ "type": "boolean",
1103
+ "default": true
1104
+ },
1105
+ "onMissing": {
1106
+ "type": "string",
1107
+ "enum": [
1108
+ "error",
1109
+ "warn",
1110
+ "ignore"
1111
+ ],
1112
+ "default": "warn"
1113
+ },
1114
+ "onMismatch": {
1115
+ "type": "string",
1116
+ "enum": [
1117
+ "error",
1118
+ "warn",
1119
+ "ignore"
1120
+ ],
1121
+ "default": "warn"
1122
+ }
1123
+ },
1124
+ "additionalProperties": false
1125
+ },
1126
+ "optionalDependencies": {
1127
+ "type": "object",
1128
+ "properties": {
1129
+ "load": {
1130
+ "type": "boolean",
1131
+ "default": true
1132
+ },
1133
+ "onFailure": {
1134
+ "type": "string",
1135
+ "enum": [
1136
+ "warn",
1137
+ "ignore"
1138
+ ],
1139
+ "default": "warn"
1140
+ }
1141
+ },
1142
+ "additionalProperties": false
1143
+ },
1144
+ "conflictResolution": {
1145
+ "type": "string",
1146
+ "enum": [
1147
+ "fail",
1148
+ "latest",
1149
+ "oldest",
1150
+ "manual"
1151
+ ],
1152
+ "default": "latest"
1153
+ },
1154
+ "circularDependencies": {
1155
+ "type": "string",
1156
+ "enum": [
1157
+ "error",
1158
+ "warn",
1159
+ "allow"
1160
+ ],
1161
+ "default": "warn"
1162
+ }
1163
+ },
1164
+ "additionalProperties": false,
1165
+ "description": "Plugin dependency resolution configuration"
1166
+ },
1167
+ "hotReload": {
1168
+ "type": "object",
1169
+ "properties": {
1170
+ "enabled": {
1171
+ "type": "boolean",
1172
+ "default": false
1173
+ },
1174
+ "strategy": {
1175
+ "type": "string",
1176
+ "enum": [
1177
+ "full",
1178
+ "partial",
1179
+ "state-preserve"
1180
+ ],
1181
+ "default": "full"
1182
+ },
1183
+ "watchPatterns": {
1184
+ "type": "array",
1185
+ "items": {
1186
+ "type": "string"
1187
+ },
1188
+ "description": "Glob patterns for files to watch"
1189
+ },
1190
+ "ignorePatterns": {
1191
+ "type": "array",
1192
+ "items": {
1193
+ "type": "string"
1194
+ },
1195
+ "description": "Glob patterns for files to ignore"
1196
+ },
1197
+ "debounceMs": {
1198
+ "type": "integer",
1199
+ "minimum": 0,
1200
+ "default": 300
1201
+ },
1202
+ "preserveState": {
1203
+ "type": "boolean",
1204
+ "default": false
1205
+ },
1206
+ "stateSerialization": {
1207
+ "type": "object",
1208
+ "properties": {
1209
+ "enabled": {
1210
+ "type": "boolean",
1211
+ "default": false
1212
+ },
1213
+ "handler": {
1214
+ "type": "string"
1215
+ }
1216
+ },
1217
+ "additionalProperties": false
1218
+ },
1219
+ "hooks": {
1220
+ "type": "object",
1221
+ "properties": {
1222
+ "beforeReload": {
1223
+ "type": "string",
1224
+ "description": "Function to call before reload"
1225
+ },
1226
+ "afterReload": {
1227
+ "type": "string",
1228
+ "description": "Function to call after reload"
1229
+ },
1230
+ "onError": {
1231
+ "type": "string",
1232
+ "description": "Function to call on reload error"
1233
+ }
1234
+ },
1235
+ "additionalProperties": false
1236
+ }
1237
+ },
1238
+ "additionalProperties": false,
1239
+ "description": "Plugin hot reload configuration"
1240
+ },
1241
+ "caching": {
1242
+ "type": "object",
1243
+ "properties": {
1244
+ "enabled": {
1245
+ "type": "boolean",
1246
+ "default": true
1247
+ },
1248
+ "storage": {
1249
+ "type": "string",
1250
+ "enum": [
1251
+ "memory",
1252
+ "disk",
1253
+ "indexeddb",
1254
+ "hybrid"
1255
+ ],
1256
+ "default": "memory"
1257
+ },
1258
+ "keyStrategy": {
1259
+ "type": "string",
1260
+ "enum": [
1261
+ "version",
1262
+ "hash",
1263
+ "timestamp"
1264
+ ],
1265
+ "default": "version"
1266
+ },
1267
+ "ttl": {
1268
+ "type": "integer",
1269
+ "minimum": 0,
1270
+ "description": "Time to live in seconds (0 = infinite)"
1271
+ },
1272
+ "maxSize": {
1273
+ "type": "integer",
1274
+ "minimum": 1,
1275
+ "description": "Max cache size in MB"
1276
+ },
1277
+ "invalidateOn": {
1278
+ "type": "array",
1279
+ "items": {
1280
+ "type": "string",
1281
+ "enum": [
1282
+ "version-change",
1283
+ "dependency-change",
1284
+ "manual",
1285
+ "error"
1286
+ ]
1287
+ }
1288
+ },
1289
+ "compression": {
1290
+ "type": "object",
1291
+ "properties": {
1292
+ "enabled": {
1293
+ "type": "boolean",
1294
+ "default": false
1295
+ },
1296
+ "algorithm": {
1297
+ "type": "string",
1298
+ "enum": [
1299
+ "gzip",
1300
+ "brotli",
1301
+ "deflate"
1302
+ ],
1303
+ "default": "gzip"
1304
+ }
1305
+ },
1306
+ "additionalProperties": false
1307
+ }
1308
+ },
1309
+ "additionalProperties": false,
1310
+ "description": "Plugin caching configuration"
1311
+ },
1312
+ "sandboxing": {
1313
+ "type": "object",
1314
+ "properties": {
1315
+ "enabled": {
1316
+ "type": "boolean",
1317
+ "default": false
1318
+ },
1319
+ "isolationLevel": {
1320
+ "type": "string",
1321
+ "enum": [
1322
+ "none",
1323
+ "process",
1324
+ "vm",
1325
+ "iframe",
1326
+ "web-worker"
1327
+ ],
1328
+ "default": "none"
1329
+ },
1330
+ "allowedCapabilities": {
1331
+ "type": "array",
1332
+ "items": {
1333
+ "type": "string"
1334
+ },
1335
+ "description": "List of allowed capability IDs"
1336
+ },
1337
+ "resourceQuotas": {
1338
+ "type": "object",
1339
+ "properties": {
1340
+ "maxMemoryMB": {
1341
+ "type": "integer",
1342
+ "minimum": 1
1343
+ },
1344
+ "maxCpuTimeMs": {
1345
+ "type": "integer",
1346
+ "minimum": 100
1347
+ },
1348
+ "maxFileDescriptors": {
1349
+ "type": "integer",
1350
+ "minimum": 1
1351
+ },
1352
+ "maxNetworkKBps": {
1353
+ "type": "integer",
1354
+ "minimum": 1
1355
+ }
1356
+ },
1357
+ "additionalProperties": false
1358
+ },
1359
+ "permissions": {
1360
+ "type": "object",
1361
+ "properties": {
1362
+ "allowedAPIs": {
1363
+ "type": "array",
1364
+ "items": {
1365
+ "type": "string"
1366
+ }
1367
+ },
1368
+ "allowedPaths": {
1369
+ "type": "array",
1370
+ "items": {
1371
+ "type": "string"
1372
+ }
1373
+ },
1374
+ "allowedEndpoints": {
1375
+ "type": "array",
1376
+ "items": {
1377
+ "type": "string"
1378
+ }
1379
+ },
1380
+ "allowedEnvVars": {
1381
+ "type": "array",
1382
+ "items": {
1383
+ "type": "string"
1384
+ }
1385
+ }
1386
+ },
1387
+ "additionalProperties": false
1388
+ }
1389
+ },
1390
+ "additionalProperties": false,
1391
+ "description": "Plugin sandboxing configuration"
1392
+ },
1393
+ "monitoring": {
1394
+ "type": "object",
1395
+ "properties": {
1396
+ "enabled": {
1397
+ "type": "boolean",
1398
+ "default": false
1399
+ },
1400
+ "metrics": {
1401
+ "type": "array",
1402
+ "items": {
1403
+ "type": "string",
1404
+ "enum": [
1405
+ "load-time",
1406
+ "init-time",
1407
+ "memory-usage",
1408
+ "cpu-usage",
1409
+ "api-calls",
1410
+ "error-rate",
1411
+ "cache-hit-rate"
1412
+ ]
1413
+ }
1414
+ },
1415
+ "samplingRate": {
1416
+ "type": "number",
1417
+ "minimum": 0,
1418
+ "maximum": 1,
1419
+ "default": 1
1420
+ },
1421
+ "reportingInterval": {
1422
+ "type": "integer",
1423
+ "minimum": 1,
1424
+ "default": 60
1425
+ },
1426
+ "budgets": {
1427
+ "type": "object",
1428
+ "properties": {
1429
+ "maxLoadTimeMs": {
1430
+ "type": "integer",
1431
+ "minimum": 0
1432
+ },
1433
+ "maxInitTimeMs": {
1434
+ "type": "integer",
1435
+ "minimum": 0
1436
+ },
1437
+ "maxMemoryMB": {
1438
+ "type": "integer",
1439
+ "minimum": 0
1440
+ }
1441
+ },
1442
+ "additionalProperties": false
1443
+ },
1444
+ "onBudgetViolation": {
1445
+ "type": "string",
1446
+ "enum": [
1447
+ "warn",
1448
+ "error",
1449
+ "ignore"
1450
+ ],
1451
+ "default": "warn"
1452
+ }
1453
+ },
1454
+ "additionalProperties": false,
1455
+ "description": "Plugin performance monitoring configuration"
1456
+ }
1457
+ },
1458
+ "additionalProperties": false,
1459
+ "description": "Plugin loading and runtime behavior configuration"
1460
+ }
1461
+ },
1462
+ "required": [
1463
+ "id",
1464
+ "version",
1465
+ "type",
1466
+ "name"
1467
+ ],
1468
+ "additionalProperties": false
1469
+ },
1470
+ "status": {
1471
+ "type": "string",
1472
+ "enum": [
1473
+ "installed",
1474
+ "disabled",
1475
+ "installing",
1476
+ "uninstalling",
1477
+ "error"
1478
+ ],
1479
+ "default": "installed"
1480
+ },
1481
+ "enabled": {
1482
+ "type": "boolean",
1483
+ "default": true
1484
+ },
1485
+ "installedAt": {
1486
+ "type": "string",
1487
+ "format": "date-time"
1488
+ },
1489
+ "updatedAt": {
1490
+ "type": "string",
1491
+ "format": "date-time"
1492
+ },
1493
+ "statusChangedAt": {
1494
+ "type": "string",
1495
+ "format": "date-time"
1496
+ },
1497
+ "errorMessage": {
1498
+ "type": "string"
1499
+ },
1500
+ "settings": {
1501
+ "type": "object",
1502
+ "additionalProperties": {}
1503
+ }
1504
+ },
1505
+ "required": [
1506
+ "manifest"
1507
+ ],
1508
+ "additionalProperties": false
1509
+ },
1510
+ "message": {
1511
+ "type": "string"
1512
+ }
1513
+ },
1514
+ "required": [
1515
+ "package"
1516
+ ],
1517
+ "additionalProperties": false
1518
+ }
1519
+ },
1520
+ "$schema": "http://json-schema.org/draft-07/schema#"
1521
+ }