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