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