@specverse/engines 4.3.5 → 5.0.1

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 (68) hide show
  1. package/assets/examples/10-api/README.md +3 -3
  2. package/assets/prompts/core/README.md +1 -1
  3. package/dist/inference/core/rule-engine.d.ts +0 -12
  4. package/dist/inference/core/rule-engine.d.ts.map +1 -1
  5. package/dist/inference/core/rule-engine.js +99 -968
  6. package/dist/inference/core/rule-engine.js.map +1 -1
  7. package/dist/inference/core/template-helpers.d.ts +56 -0
  8. package/dist/inference/core/template-helpers.d.ts.map +1 -0
  9. package/dist/inference/core/template-helpers.js +87 -0
  10. package/dist/inference/core/template-helpers.js.map +1 -0
  11. package/dist/inference/logical/generators/service-generator.d.ts.map +1 -1
  12. package/dist/inference/logical/generators/service-generator.js +0 -4
  13. package/dist/inference/logical/generators/service-generator.js.map +1 -1
  14. package/dist/inference/ui-contracts/rules/lifecycle-state-visible-in-detail.d.ts +9 -7
  15. package/dist/inference/ui-contracts/rules/lifecycle-state-visible-in-detail.d.ts.map +1 -1
  16. package/dist/inference/ui-contracts/rules/lifecycle-state-visible-in-detail.js +27 -9
  17. package/dist/inference/ui-contracts/rules/lifecycle-state-visible-in-detail.js.map +1 -1
  18. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +27 -5
  19. package/dist/libs/instance-factories/tools/README.md +1 -1
  20. package/dist/libs/instance-factories/tools/mcp.yaml +1 -1
  21. package/dist/libs/instance-factories/tools/templates/mcp/mcp-server-generator.js +342 -116
  22. package/dist/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.js +172 -8
  23. package/dist/libs/instance-factories/tools/vscode.yaml +1 -1
  24. package/libs/instance-factories/cli/templates/commander/command-generator.ts +27 -5
  25. package/libs/instance-factories/tools/README.md +1 -1
  26. package/libs/instance-factories/tools/mcp.yaml +1 -1
  27. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +392 -141
  28. package/libs/instance-factories/tools/templates/vscode/static/extension.ts +9 -2
  29. package/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.ts +246 -10
  30. package/libs/instance-factories/tools/vscode.yaml +1 -1
  31. package/package.json +5 -4
  32. package/libs/instance-factories/tools/templates/mcp/static/docs/DEPLOYMENT_GUIDE.md +0 -630
  33. package/libs/instance-factories/tools/templates/mcp/static/docs/HYBRID_RESOURCE_SYSTEM.md +0 -330
  34. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/EXTENSION_DEPLOYMENT.md +0 -552
  35. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/LOCAL_DEPLOYMENT.md +0 -164
  36. package/libs/instance-factories/tools/templates/mcp/static/docs/deployments/WEB_DEPLOYMENT.md +0 -247
  37. package/libs/instance-factories/tools/templates/mcp/static/package.json +0 -94
  38. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-enterprise.js +0 -284
  39. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-extension.js +0 -139
  40. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-local.js +0 -74
  41. package/libs/instance-factories/tools/templates/mcp/static/scripts/build-web.js +0 -156
  42. package/libs/instance-factories/tools/templates/mcp/static/scripts/copy-canonical-files.js +0 -41
  43. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-deployments.js +0 -259
  44. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-resources.js +0 -231
  45. package/libs/instance-factories/tools/templates/mcp/static/scripts/test-hybrid-simple.js +0 -196
  46. package/libs/instance-factories/tools/templates/mcp/static/src/controllers/MCPServerController.ts +0 -293
  47. package/libs/instance-factories/tools/templates/mcp/static/src/events/EventEmitter.ts +0 -90
  48. package/libs/instance-factories/tools/templates/mcp/static/src/index.ts +0 -24
  49. package/libs/instance-factories/tools/templates/mcp/static/src/interfaces/ResourceProvider.ts +0 -15
  50. package/libs/instance-factories/tools/templates/mcp/static/src/models/LibrarySuggestion.ts +0 -106
  51. package/libs/instance-factories/tools/templates/mcp/static/src/models/SpecVerseResource.ts +0 -75
  52. package/libs/instance-factories/tools/templates/mcp/static/src/server/mcp-server.ts +0 -239
  53. package/libs/instance-factories/tools/templates/mcp/static/src/services/CLIProxyService.ts +0 -1501
  54. package/libs/instance-factories/tools/templates/mcp/static/src/services/EmbeddedResourcesAdapter.ts +0 -211
  55. package/libs/instance-factories/tools/templates/mcp/static/src/services/EntityModuleService.ts +0 -308
  56. package/libs/instance-factories/tools/templates/mcp/static/src/services/HybridResourcesProvider.ts +0 -210
  57. package/libs/instance-factories/tools/templates/mcp/static/src/services/LibraryToolsService.ts +0 -356
  58. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorBridge.ts +0 -522
  59. package/libs/instance-factories/tools/templates/mcp/static/src/services/OrchestratorToolsService.ts +0 -530
  60. package/libs/instance-factories/tools/templates/mcp/static/src/services/PromptToolsService.ts +0 -594
  61. package/libs/instance-factories/tools/templates/mcp/static/src/services/ResourcesProviderService.ts +0 -170
  62. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.init.test.ts +0 -544
  63. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/CLIProxyService.test.ts +0 -189
  64. package/libs/instance-factories/tools/templates/mcp/static/src/tests/unit/ResourcesProviderService.test.ts +0 -89
  65. package/libs/instance-factories/tools/templates/mcp/static/src/types/index.ts +0 -110
  66. package/libs/instance-factories/tools/templates/mcp/static/tsconfig.json +0 -28
  67. package/libs/instance-factories/tools/templates/vscode/static/schemas/specverse-v3-schema.json +0 -4279
  68. /package/libs/instance-factories/tools/templates/vscode/static/themes/{specverse-complete-theme.json → specverse-dark-theme.json} +0 -0
@@ -1,4279 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://specverse.org/schemas/v3.5.0.json",
4
- "title": "SpecVerse Unified Schema v3.5.0",
5
- "description": "Unified schema for SpecVerse specifications, manifests, and instance factories. Supports components (WHAT), deployments (WHERE), and manifests (HOW) with instance-based technology mapping.",
6
- "version": "3.5.0",
7
- "oneOf": [
8
- {
9
- "$comment": "Specification file (.specly) - contains components and/or deployments",
10
- "type": "object",
11
- "properties": {
12
- "components": {
13
- "$ref": "#/definitions/ComponentsContainer"
14
- },
15
- "deployments": {
16
- "$ref": "#/definitions/DeploymentsContainer"
17
- },
18
- "manifests": {
19
- "$ref": "#/definitions/ManifestsContainer"
20
- }
21
- },
22
- "anyOf": [
23
- {
24
- "required": [
25
- "components"
26
- ]
27
- },
28
- {
29
- "required": [
30
- "deployments"
31
- ]
32
- },
33
- {
34
- "required": [
35
- "components",
36
- "deployments"
37
- ]
38
- },
39
- {
40
- "required": [
41
- "manifests"
42
- ]
43
- },
44
- {
45
- "required": [
46
- "manifests",
47
- "components"
48
- ]
49
- },
50
- {
51
- "required": [
52
- "manifests",
53
- "deployments"
54
- ]
55
- },
56
- {
57
- "required": [
58
- "manifests",
59
- "components",
60
- "deployments"
61
- ]
62
- }
63
- ],
64
- "additionalProperties": false
65
- },
66
- {
67
- "$comment": "Standalone manifest file (manifest.yaml) - maps deployment instances to instance factories",
68
- "$ref": "#/definitions/ManifestDefinition"
69
- },
70
- {
71
- "$comment": "Instance factory definition (e.g., fastify-prisma.yaml) - reusable technology specification",
72
- "$ref": "#/definitions/InstanceFactoryDefinition"
73
- }
74
- ],
75
- "definitions": {
76
- "NamespaceString": {
77
- "type": "string",
78
- "pattern": "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[a-z0-9][a-z0-9-]*[a-z0-9]|[A-Za-z][A-Za-z0-9_-]*)$",
79
- "description": "Namespace: @org/package, @org/domain/module, unscoped package (kebab-case), or component name (PascalCase)"
80
- },
81
- "SemanticVersion": {
82
- "type": "string",
83
- "pattern": "^(\\d+\\.\\d+\\.\\d+(?:-[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)?(?:\\+[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)?)$",
84
- "description": "Semantic version: 1.0.0, 1.0.0-alpha.1, 1.0.0+build.1"
85
- },
86
- "TypeReference": {
87
- "type": "string",
88
- "pattern": "^((@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[a-z0-9][a-z0-9-]*[a-z0-9])\\.)?[A-Z][A-Za-z0-9_]*$",
89
- "description": "Type reference: Type or namespace.Type"
90
- },
91
- "AttributesSection": {
92
- "type": "object",
93
- "patternProperties": {
94
- "^[a-z][a-zA-Z0-9_]*$": {
95
- "oneOf": [
96
- {
97
- "type": "string",
98
- "pattern": "^(?:Array<[A-Z][A-Za-z0-9_]*>|[A-Z][A-Za-z0-9_]*(?:\\[\\])?)(?:\\s+(?:required|optional|unique|auto=\\w+|min=\\d+(?:\\.\\d+)?|max=\\d+(?:\\.\\d+)?|default=(?:[\\w.]+|\"[^\"]*\")|verified|searchable|values=\\[[^\\]]+\\]))*$",
99
- "description": "Convention format: Type, Type[], or Array<Type> with modifiers (required, optional, unique, etc.)"
100
- },
101
- {
102
- "type": "object",
103
- "properties": {
104
- "name": {
105
- "type": "string"
106
- },
107
- "type": {
108
- "type": "string"
109
- },
110
- "required": {
111
- "type": "boolean"
112
- },
113
- "unique": {
114
- "type": "boolean"
115
- },
116
- "isArray": {
117
- "type": "boolean"
118
- },
119
- "auto": {
120
- "type": "string"
121
- },
122
- "min": {
123
- "type": "number"
124
- },
125
- "max": {
126
- "type": "number"
127
- },
128
- "default": {
129
- "type": "string"
130
- },
131
- "verified": {
132
- "type": "boolean"
133
- },
134
- "searchable": {
135
- "type": "boolean"
136
- },
137
- "values": {
138
- "type": "array",
139
- "items": {
140
- "type": "string"
141
- }
142
- }
143
- },
144
- "required": [
145
- "name",
146
- "type"
147
- ],
148
- "additionalProperties": false
149
- }
150
- ]
151
- }
152
- },
153
- "additionalProperties": false
154
- },
155
- "ExecutableProperties": {
156
- "type": "object",
157
- "properties": {
158
- "description": {
159
- "type": "string"
160
- },
161
- "parameters": {
162
- "$ref": "#/definitions/AttributesSection"
163
- },
164
- "returns": {
165
- "type": "string"
166
- },
167
- "requires": {
168
- "oneOf": [
169
- {
170
- "type": "string"
171
- },
172
- {
173
- "type": "array",
174
- "items": {
175
- "type": "string"
176
- }
177
- }
178
- ]
179
- },
180
- "ensures": {
181
- "oneOf": [
182
- {
183
- "type": "string"
184
- },
185
- {
186
- "type": "array",
187
- "items": {
188
- "type": "string"
189
- }
190
- }
191
- ]
192
- },
193
- "publishes": {
194
- "oneOf": [
195
- {
196
- "type": "string"
197
- },
198
- {
199
- "type": "array",
200
- "items": {
201
- "type": "string"
202
- }
203
- }
204
- ]
205
- },
206
- "steps": {
207
- "type": "array",
208
- "items": {
209
- "type": "string"
210
- },
211
- "description": "Sequential steps describing the execution process"
212
- }
213
- },
214
- "additionalProperties": false
215
- },
216
- "SubscriptionsPattern": {
217
- "oneOf": [
218
- {
219
- "type": "array",
220
- "items": {
221
- "type": "string"
222
- }
223
- },
224
- {
225
- "type": "object",
226
- "patternProperties": {
227
- "^[A-Z][A-Za-z0-9_]*$": {
228
- "type": "string"
229
- }
230
- }
231
- }
232
- ]
233
- },
234
- "CapabilityList": {
235
- "anyOf": [
236
- {
237
- "type": "string"
238
- },
239
- {
240
- "type": "array",
241
- "items": {
242
- "type": "string"
243
- }
244
- }
245
- ],
246
- "description": "Capability patterns: '*', 'behaviors.*', 'User.*', or explicit list"
247
- },
248
- "ComponentsContainer": {
249
- "type": "object",
250
- "patternProperties": {
251
- "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[A-Za-z][A-Za-z0-9_-]*)$": {
252
- "type": "object",
253
- "properties": {
254
- "version": {
255
- "$ref": "#/definitions/SemanticVersion"
256
- },
257
- "description": {
258
- "type": "string"
259
- },
260
- "tags": {
261
- "type": "array",
262
- "items": {
263
- "type": "string"
264
- }
265
- },
266
- "import": {
267
- "$ref": "#/definitions/ImportSection"
268
- },
269
- "export": {
270
- "$ref": "#/definitions/ExportSection"
271
- },
272
- "primitives": {
273
- "$ref": "#/definitions/PrimitivesSection"
274
- },
275
- "models": {
276
- "$ref": "#/definitions/ModelsSection"
277
- },
278
- "controllers": {
279
- "$ref": "#/definitions/ControllersSection"
280
- },
281
- "services": {
282
- "$ref": "#/definitions/ServicesSection"
283
- },
284
- "views": {
285
- "$ref": "#/definitions/ViewsSection"
286
- },
287
- "events": {
288
- "$ref": "#/definitions/EventsSection"
289
- },
290
- "commands": {
291
- "$ref": "#/definitions/CommandsSection"
292
- },
293
- "constraints": {
294
- "type": "array",
295
- "items": {
296
- "type": "string"
297
- },
298
- "description": "Behavioural conventions that expand into Quint invariants. Example: 'models must have attributes'"
299
- }
300
- },
301
- "required": [
302
- "version"
303
- ],
304
- "additionalProperties": false
305
- }
306
- },
307
- "additionalProperties": false
308
- },
309
- "ImportSection": {
310
- "type": "array",
311
- "description": "Import from other components/packages",
312
- "items": {
313
- "type": "object",
314
- "properties": {
315
- "from": {
316
- "$ref": "#/definitions/NamespaceString"
317
- },
318
- "file": {
319
- "type": "string"
320
- },
321
- "package": {
322
- "type": "string"
323
- },
324
- "namespace": {
325
- "type": "string"
326
- },
327
- "version": {
328
- "type": "string"
329
- },
330
- "select": {
331
- "type": "array",
332
- "items": {
333
- "type": "string"
334
- },
335
- "description": "Types to import"
336
- },
337
- "as": {
338
- "type": "object",
339
- "patternProperties": {
340
- "^[A-Z][A-Za-z0-9_]*$": {
341
- "type": "string"
342
- }
343
- },
344
- "description": "Type aliases: { ImportedType: LocalAlias }"
345
- }
346
- },
347
- "oneOf": [
348
- {
349
- "required": [
350
- "from",
351
- "select"
352
- ]
353
- },
354
- {
355
- "required": [
356
- "file",
357
- "select"
358
- ]
359
- },
360
- {
361
- "required": [
362
- "package",
363
- "version",
364
- "select"
365
- ]
366
- },
367
- {
368
- "required": [
369
- "namespace",
370
- "from"
371
- ]
372
- }
373
- ],
374
- "additionalProperties": false
375
- }
376
- },
377
- "ExportSection": {
378
- "type": "object",
379
- "description": "What this component exports for others to import",
380
- "properties": {
381
- "primitives": {
382
- "type": "array",
383
- "items": {
384
- "type": "string"
385
- }
386
- },
387
- "models": {
388
- "type": "array",
389
- "items": {
390
- "type": "string"
391
- }
392
- },
393
- "controllers": {
394
- "type": "array",
395
- "items": {
396
- "type": "string"
397
- }
398
- },
399
- "services": {
400
- "type": "array",
401
- "items": {
402
- "type": "string"
403
- }
404
- },
405
- "views": {
406
- "type": "array",
407
- "items": {
408
- "type": "string"
409
- }
410
- },
411
- "events": {
412
- "type": "array",
413
- "items": {
414
- "type": "string"
415
- }
416
- }
417
- },
418
- "additionalProperties": false
419
- },
420
- "ModelsSection": {
421
- "type": "object",
422
- "patternProperties": {
423
- "^[A-Z][A-Za-z0-9_]*$": {
424
- "type": "object",
425
- "properties": {
426
- "description": {
427
- "type": "string"
428
- },
429
- "extends": {
430
- "$ref": "#/definitions/TypeReference"
431
- },
432
- "profiles": {
433
- "type": "array",
434
- "items": {
435
- "$ref": "#/definitions/TypeReference"
436
- },
437
- "description": "Profiles currently attached to this model (runtime state)"
438
- },
439
- "metadata": {
440
- "$ref": "#/definitions/ModelMetadataSpec"
441
- },
442
- "attributes": {
443
- "$ref": "#/definitions/AttributesSection"
444
- },
445
- "relationships": {
446
- "$ref": "#/definitions/RelationshipsSection"
447
- },
448
- "lifecycles": {
449
- "$ref": "#/definitions/LifecyclesSection"
450
- },
451
- "behaviors": {
452
- "$ref": "#/definitions/BehaviorsSection"
453
- },
454
- "profile-attachment": {
455
- "$ref": "#/definitions/ProfileAttachmentSection"
456
- }
457
- },
458
- "additionalProperties": false
459
- }
460
- },
461
- "additionalProperties": false
462
- },
463
- "RelationshipsSection": {
464
- "type": "object",
465
- "patternProperties": {
466
- "^[a-z][a-zA-Z0-9_]*$": {
467
- "oneOf": [
468
- {
469
- "type": "string",
470
- "pattern": "^(hasMany|hasOne|belongsTo|manyToMany)\\s+[A-Z][A-Za-z0-9_]*(?:\\s+(?:cascade|dependent|eager|lazy|optional|through=[A-Z][A-Za-z0-9_]*))*$"
471
- },
472
- {
473
- "type": "object",
474
- "properties": {
475
- "name": {
476
- "type": "string"
477
- },
478
- "type": {
479
- "enum": [
480
- "hasMany",
481
- "hasOne",
482
- "belongsTo",
483
- "manyToMany"
484
- ]
485
- },
486
- "target": {
487
- "$ref": "#/definitions/TypeReference"
488
- },
489
- "cascade": {
490
- "type": "boolean"
491
- },
492
- "dependent": {
493
- "type": "boolean"
494
- },
495
- "eager": {
496
- "type": "boolean"
497
- },
498
- "lazy": {
499
- "type": "boolean"
500
- },
501
- "through": {
502
- "type": "string"
503
- }
504
- },
505
- "required": [
506
- "name",
507
- "type",
508
- "target"
509
- ],
510
- "additionalProperties": false
511
- }
512
- ]
513
- }
514
- },
515
- "additionalProperties": false
516
- },
517
- "LifecyclesSection": {
518
- "type": "object",
519
- "patternProperties": {
520
- "^[a-z][a-zA-Z0-9_]*$": {
521
- "oneOf": [
522
- {
523
- "type": "object",
524
- "properties": {
525
- "flow": {
526
- "type": "string",
527
- "pattern": "^\\w+(?:\\s*->\\s*\\w+)*$"
528
- }
529
- },
530
- "required": [
531
- "flow"
532
- ],
533
- "additionalProperties": false
534
- },
535
- {
536
- "type": "object",
537
- "properties": {
538
- "states": {
539
- "type": "array",
540
- "items": {
541
- "type": "string"
542
- }
543
- },
544
- "transitions": {
545
- "type": "object",
546
- "patternProperties": {
547
- "^[a-z][a-zA-Z0-9_]*$": {
548
- "type": "string"
549
- }
550
- }
551
- }
552
- },
553
- "required": [
554
- "states",
555
- "transitions"
556
- ],
557
- "additionalProperties": false
558
- },
559
- {
560
- "type": "object",
561
- "properties": {
562
- "name": {
563
- "type": "string"
564
- },
565
- "type": {
566
- "type": "string"
567
- },
568
- "states": {
569
- "type": "array",
570
- "items": {
571
- "type": "string"
572
- }
573
- },
574
- "actions": {
575
- "type": "array",
576
- "items": {
577
- "type": "string"
578
- }
579
- }
580
- },
581
- "required": [
582
- "name",
583
- "type",
584
- "states",
585
- "actions"
586
- ],
587
- "additionalProperties": false
588
- }
589
- ]
590
- }
591
- },
592
- "additionalProperties": false
593
- },
594
- "BehaviorsSection": {
595
- "type": "object",
596
- "patternProperties": {
597
- "^[a-z][a-zA-Z0-9_]*$": {
598
- "$ref": "#/definitions/ExecutableProperties"
599
- }
600
- },
601
- "additionalProperties": false
602
- },
603
- "ProfileAttachmentSection": {
604
- "type": "object",
605
- "description": "Configuration for profile attachment - defines which models this profile can attach to",
606
- "properties": {
607
- "profiles": {
608
- "type": "array",
609
- "items": {
610
- "$ref": "#/definitions/TypeReference"
611
- },
612
- "description": "List of model types this profile can attach to"
613
- },
614
- "conditions": {
615
- "type": "object",
616
- "description": "Optional conditions for when this profile should attach",
617
- "additionalProperties": {
618
- "type": "string"
619
- }
620
- },
621
- "priority": {
622
- "type": "integer",
623
- "description": "Attachment priority when multiple profiles compete",
624
- "default": 0
625
- }
626
- },
627
- "required": [
628
- "profiles"
629
- ],
630
- "additionalProperties": false
631
- },
632
- "ModelMetadataSpec": {
633
- "type": "object",
634
- "description": "Metadata configuration for models - generates common synthetic attributes (id, audit, softDelete, labels, status, version)",
635
- "properties": {
636
- "id": {
637
- "oneOf": [
638
- {
639
- "type": "string",
640
- "enum": [
641
- "auto",
642
- "manual",
643
- "composite",
644
- "uuid",
645
- "integer"
646
- ],
647
- "description": "ID generation strategy (simple form)"
648
- },
649
- {
650
- "type": "object",
651
- "description": "ID generation configuration (advanced form)",
652
- "properties": {
653
- "type": {
654
- "type": "string",
655
- "enum": [
656
- "auto",
657
- "manual",
658
- "composite",
659
- "uuid",
660
- "integer"
661
- ],
662
- "description": "ID generation type"
663
- },
664
- "name": {
665
- "type": "string",
666
- "description": "Custom name for ID field (default: 'id')"
667
- },
668
- "fields": {
669
- "type": "array",
670
- "items": {
671
- "type": "string"
672
- },
673
- "description": "Fields for composite ID"
674
- }
675
- },
676
- "required": [
677
- "type"
678
- ],
679
- "additionalProperties": false
680
- }
681
- ],
682
- "description": "ID field generation strategy"
683
- },
684
- "label": {
685
- "oneOf": [
686
- {
687
- "type": "string",
688
- "description": "Single field to use as display label"
689
- },
690
- {
691
- "type": "array",
692
- "items": {
693
- "type": "string"
694
- },
695
- "description": "Multiple fields to combine for display label"
696
- }
697
- ],
698
- "description": "Field(s) to use as display label in UIs"
699
- },
700
- "audit": {
701
- "oneOf": [
702
- {
703
- "type": "boolean",
704
- "description": "Enable audit fields with defaults (createdAt, updatedAt)"
705
- },
706
- {
707
- "type": "object",
708
- "description": "Advanced audit configuration",
709
- "properties": {
710
- "timestamps": {
711
- "type": "boolean",
712
- "default": true,
713
- "description": "Enable timestamp tracking (createdAt, updatedAt)"
714
- },
715
- "users": {
716
- "type": "boolean",
717
- "default": false,
718
- "description": "Enable user tracking (createdBy, updatedBy)"
719
- },
720
- "timestampNames": {
721
- "type": "object",
722
- "description": "Custom names for timestamp fields",
723
- "properties": {
724
- "created": {
725
- "type": "string",
726
- "default": "createdAt",
727
- "description": "Name for creation timestamp"
728
- },
729
- "updated": {
730
- "type": "string",
731
- "default": "updatedAt",
732
- "description": "Name for update timestamp"
733
- }
734
- },
735
- "additionalProperties": false
736
- },
737
- "userNames": {
738
- "type": "object",
739
- "description": "Custom names for user tracking fields",
740
- "properties": {
741
- "created": {
742
- "type": "string",
743
- "default": "createdBy",
744
- "description": "Name for creation user field"
745
- },
746
- "updated": {
747
- "type": "string",
748
- "default": "updatedBy",
749
- "description": "Name for update user field"
750
- }
751
- },
752
- "additionalProperties": false
753
- }
754
- },
755
- "additionalProperties": false
756
- }
757
- ],
758
- "description": "Enable audit fields (timestamps + optional user tracking)"
759
- },
760
- "softDelete": {
761
- "oneOf": [
762
- {
763
- "type": "boolean",
764
- "description": "Enable soft delete with defaults (deletedAt, isDeleted)"
765
- },
766
- {
767
- "type": "object",
768
- "description": "Advanced soft delete configuration",
769
- "properties": {
770
- "enabled": {
771
- "type": "boolean",
772
- "default": true,
773
- "description": "Enable soft delete"
774
- },
775
- "fieldNames": {
776
- "type": "object",
777
- "description": "Custom names for soft delete fields",
778
- "properties": {
779
- "deletedAt": {
780
- "type": "string",
781
- "default": "deletedAt",
782
- "description": "Name for deletion timestamp"
783
- },
784
- "isDeleted": {
785
- "type": "string",
786
- "default": "isDeleted",
787
- "description": "Name for deleted flag"
788
- }
789
- },
790
- "additionalProperties": false
791
- }
792
- },
793
- "additionalProperties": false
794
- }
795
- ],
796
- "description": "Enable soft delete (mark as deleted instead of hard delete)"
797
- },
798
- "status": {
799
- "oneOf": [
800
- {
801
- "type": "string",
802
- "description": "Lifecycle name to derive status field from"
803
- },
804
- {
805
- "type": "object",
806
- "description": "Advanced status configuration",
807
- "properties": {
808
- "field": {
809
- "type": "string",
810
- "default": "status",
811
- "description": "Name for status field"
812
- },
813
- "lifecycle": {
814
- "type": "string",
815
- "description": "Lifecycle to derive states from"
816
- },
817
- "values": {
818
- "type": "array",
819
- "items": {
820
- "type": "string"
821
- },
822
- "description": "Explicit status values (if no lifecycle)"
823
- }
824
- },
825
- "additionalProperties": false
826
- }
827
- ],
828
- "description": "Status field configuration (from lifecycle or explicit values)"
829
- },
830
- "version": {
831
- "oneOf": [
832
- {
833
- "type": "boolean",
834
- "description": "Enable versioning with defaults (integer version field)"
835
- },
836
- {
837
- "type": "object",
838
- "description": "Advanced versioning configuration",
839
- "properties": {
840
- "enabled": {
841
- "type": "boolean",
842
- "default": true,
843
- "description": "Enable versioning"
844
- },
845
- "field": {
846
- "type": "string",
847
- "default": "version",
848
- "description": "Name for version field"
849
- },
850
- "type": {
851
- "type": "string",
852
- "enum": [
853
- "integer",
854
- "timestamp"
855
- ],
856
- "default": "integer",
857
- "description": "Type of version field"
858
- }
859
- },
860
- "additionalProperties": false
861
- }
862
- ],
863
- "description": "Enable versioning for optimistic locking"
864
- }
865
- },
866
- "additionalProperties": false
867
- },
868
- "PrimitivesSection": {
869
- "type": "object",
870
- "description": "Custom primitive definitions with validation rules",
871
- "patternProperties": {
872
- "^[A-Z][A-Za-z0-9_]*$": {
873
- "oneOf": [
874
- {
875
- "type": "string",
876
- "description": "Convention syntax: 'String pattern=regex values=[a,b] min=0 max=100'"
877
- },
878
- {
879
- "$ref": "#/definitions/PrimitiveDefinition"
880
- }
881
- ]
882
- }
883
- },
884
- "additionalProperties": false
885
- },
886
- "PrimitiveDefinition": {
887
- "type": "object",
888
- "description": "Full primitive definition with validation rules",
889
- "properties": {
890
- "name": {
891
- "type": "string"
892
- },
893
- "baseType": {
894
- "type": "string",
895
- "enum": [
896
- "String",
897
- "Integer",
898
- "Number",
899
- "Boolean"
900
- ],
901
- "description": "Base primitive type"
902
- },
903
- "description": {
904
- "type": "string"
905
- },
906
- "typeAlias": {
907
- "type": "boolean",
908
- "default": true
909
- },
910
- "required": {
911
- "type": "boolean"
912
- },
913
- "unique": {
914
- "type": "boolean"
915
- },
916
- "validation": {
917
- "type": "object",
918
- "properties": {
919
- "pattern": {
920
- "type": "string",
921
- "description": "Regular expression pattern"
922
- },
923
- "values": {
924
- "type": "array",
925
- "items": {
926
- "type": "string"
927
- },
928
- "description": "Enum values"
929
- },
930
- "min": {
931
- "type": "number",
932
- "description": "Minimum value"
933
- },
934
- "max": {
935
- "type": "number",
936
- "description": "Maximum value"
937
- },
938
- "format": {
939
- "type": "string",
940
- "enum": [
941
- "Email",
942
- "URL",
943
- "UUID",
944
- "Date",
945
- "DateTime"
946
- ],
947
- "description": "Standard format validation"
948
- }
949
- },
950
- "additionalProperties": false
951
- }
952
- },
953
- "required": [
954
- "baseType"
955
- ],
956
- "additionalProperties": false
957
- },
958
- "ControllersSection": {
959
- "type": "object",
960
- "patternProperties": {
961
- "^[A-Z][A-Za-z0-9_]*$": {
962
- "type": "object",
963
- "properties": {
964
- "model": {
965
- "$ref": "#/definitions/TypeReference"
966
- },
967
- "description": {
968
- "type": "string"
969
- },
970
- "subscribes_to": {
971
- "$ref": "#/definitions/SubscriptionsPattern"
972
- },
973
- "cured": {
974
- "$ref": "#/definitions/CuredOperations"
975
- },
976
- "actions": {
977
- "type": "object",
978
- "patternProperties": {
979
- "^[a-z][a-zA-Z0-9_]*$": {
980
- "$ref": "#/definitions/ExecutableProperties"
981
- }
982
- }
983
- }
984
- },
985
- "additionalProperties": false
986
- }
987
- },
988
- "additionalProperties": false
989
- },
990
- "CuredOperations": {
991
- "type": "object",
992
- "properties": {
993
- "create": {
994
- "$ref": "#/definitions/ExecutableProperties"
995
- },
996
- "retrieve": {
997
- "$ref": "#/definitions/ExecutableProperties"
998
- },
999
- "retrieve_many": {
1000
- "$ref": "#/definitions/ExecutableProperties"
1001
- },
1002
- "update": {
1003
- "$ref": "#/definitions/ExecutableProperties"
1004
- },
1005
- "evolve": {
1006
- "$ref": "#/definitions/ExecutableProperties"
1007
- },
1008
- "delete": {
1009
- "$ref": "#/definitions/ExecutableProperties"
1010
- },
1011
- "validate": {
1012
- "$ref": "#/definitions/ExecutableProperties"
1013
- }
1014
- },
1015
- "additionalProperties": false
1016
- },
1017
- "ServicesSection": {
1018
- "type": "object",
1019
- "patternProperties": {
1020
- "^[A-Z][A-Za-z0-9_]*$": {
1021
- "type": "object",
1022
- "properties": {
1023
- "description": {
1024
- "type": "string"
1025
- },
1026
- "subscribes_to": {
1027
- "$ref": "#/definitions/SubscriptionsPattern"
1028
- },
1029
- "operations": {
1030
- "type": "object",
1031
- "patternProperties": {
1032
- "^[a-z][a-zA-Z0-9_]*$": {
1033
- "$ref": "#/definitions/ExecutableProperties"
1034
- }
1035
- }
1036
- }
1037
- },
1038
- "additionalProperties": false
1039
- }
1040
- },
1041
- "additionalProperties": false
1042
- },
1043
- "EventsSection": {
1044
- "type": "object",
1045
- "patternProperties": {
1046
- "^[A-Z][A-Za-z0-9_]*$": {
1047
- "type": "object",
1048
- "properties": {
1049
- "description": {
1050
- "type": "string"
1051
- },
1052
- "attributes": {
1053
- "$ref": "#/definitions/AttributesSection"
1054
- },
1055
- "version": {
1056
- "type": "integer",
1057
- "minimum": 1,
1058
- "default": 1,
1059
- "description": "Event schema version number"
1060
- },
1061
- "previousVersions": {
1062
- "type": "array",
1063
- "description": "Previous schema versions for compatibility tracking",
1064
- "items": {
1065
- "type": "object",
1066
- "properties": {
1067
- "version": {
1068
- "type": "integer",
1069
- "minimum": 1
1070
- },
1071
- "compatibility": {
1072
- "type": "string",
1073
- "enum": [
1074
- "backward",
1075
- "forward",
1076
- "full",
1077
- "none"
1078
- ],
1079
- "default": "none",
1080
- "description": "Compatibility mode with current version"
1081
- },
1082
- "deprecated": {
1083
- "type": "boolean",
1084
- "default": false
1085
- },
1086
- "deprecationMessage": {
1087
- "type": "string"
1088
- }
1089
- },
1090
- "required": [
1091
- "version"
1092
- ],
1093
- "additionalProperties": false
1094
- }
1095
- }
1096
- },
1097
- "additionalProperties": false
1098
- }
1099
- },
1100
- "additionalProperties": false
1101
- },
1102
- "ViewsSection": {
1103
- "type": "object",
1104
- "description": "View definitions for UI layer",
1105
- "patternProperties": {
1106
- "^[A-Z][A-Za-z0-9_]*$": {
1107
- "type": "object",
1108
- "description": "View definition for UI layer",
1109
- "properties": {
1110
- "description": {
1111
- "type": "string",
1112
- "description": "Human-readable description of the view"
1113
- },
1114
- "type": {
1115
- "type": "string",
1116
- "description": "View type/category. Standard types: page, list, detail, form, dashboard, modal, dialog, drawer, wizard, split. Custom types allowed (camelCase)."
1117
- },
1118
- "model": {
1119
- "oneOf": [
1120
- {
1121
- "$ref": "#/definitions/TypeReference"
1122
- },
1123
- {
1124
- "type": "array",
1125
- "items": {
1126
- "$ref": "#/definitions/TypeReference"
1127
- }
1128
- }
1129
- ],
1130
- "description": "Primary model(s) for this view"
1131
- },
1132
- "tags": {
1133
- "type": "array",
1134
- "items": {
1135
- "type": "string"
1136
- },
1137
- "description": "Tags for categorization"
1138
- },
1139
- "export": {
1140
- "type": "boolean",
1141
- "description": "Whether this view is exported for reuse"
1142
- },
1143
- "layout": {
1144
- "oneOf": [
1145
- {
1146
- "$ref": "#/definitions/StandardLayout"
1147
- },
1148
- {
1149
- "type": "object",
1150
- "description": "Custom layout configuration"
1151
- }
1152
- ],
1153
- "description": "View layout definition"
1154
- },
1155
- "subscribes_to": {
1156
- "$ref": "#/definitions/SubscriptionsPattern",
1157
- "description": "Events this view subscribes to"
1158
- },
1159
- "uiComponents": {
1160
- "type": "object",
1161
- "description": "UI components within this view (visual elements like tables, forms, buttons)",
1162
- "patternProperties": {
1163
- "^[a-zA-Z][a-zA-Z0-9_ ]*$": {
1164
- "oneOf": [
1165
- {
1166
- "$ref": "#/definitions/ViewComponent"
1167
- },
1168
- {
1169
- "type": "string",
1170
- "description": "Reference to component type (e.g., 'UI.FormView')"
1171
- }
1172
- ]
1173
- }
1174
- },
1175
- "additionalProperties": false
1176
- },
1177
- "properties": {
1178
- "$ref": "#/definitions/ViewProperties",
1179
- "description": "View-level feature flags and configuration"
1180
- }
1181
- },
1182
- "additionalProperties": false
1183
- }
1184
- },
1185
- "additionalProperties": false
1186
- },
1187
- "DeploymentsContainer": {
1188
- "type": "object",
1189
- "patternProperties": {
1190
- "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[A-Za-z][A-Za-z0-9_-]*)$": {
1191
- "type": "object",
1192
- "properties": {
1193
- "version": {
1194
- "$ref": "#/definitions/SemanticVersion"
1195
- },
1196
- "description": {
1197
- "type": "string"
1198
- },
1199
- "environment": {
1200
- "type": "string"
1201
- },
1202
- "instances": {
1203
- "$ref": "#/definitions/InstancesSection"
1204
- }
1205
- },
1206
- "required": [
1207
- "version"
1208
- ],
1209
- "additionalProperties": false
1210
- }
1211
- },
1212
- "additionalProperties": false
1213
- },
1214
- "InstancesSection": {
1215
- "type": "object",
1216
- "properties": {
1217
- "controllers": {
1218
- "$ref": "#/definitions/ControllerInstances"
1219
- },
1220
- "services": {
1221
- "$ref": "#/definitions/ServiceInstances"
1222
- },
1223
- "views": {
1224
- "$ref": "#/definitions/ViewInstances"
1225
- },
1226
- "communications": {
1227
- "$ref": "#/definitions/CommunicationInstances"
1228
- },
1229
- "storage": {
1230
- "$ref": "#/definitions/StorageInstances"
1231
- },
1232
- "security": {
1233
- "$ref": "#/definitions/SecurityInstances"
1234
- },
1235
- "infrastructure": {
1236
- "$ref": "#/definitions/InfrastructureInstances"
1237
- },
1238
- "monitoring": {
1239
- "$ref": "#/definitions/MonitoringInstances"
1240
- }
1241
- },
1242
- "additionalProperties": false
1243
- },
1244
- "ControllerInstances": {
1245
- "type": "object",
1246
- "patternProperties": {
1247
- "^[a-z][a-zA-Z0-9_]*$": {
1248
- "type": "object",
1249
- "properties": {
1250
- "component": {
1251
- "$ref": "#/definitions/NamespaceString"
1252
- },
1253
- "namespace": {
1254
- "type": "string"
1255
- },
1256
- "advertises": {
1257
- "$ref": "#/definitions/CapabilityList"
1258
- },
1259
- "uses": {
1260
- "$ref": "#/definitions/CapabilityList"
1261
- },
1262
- "scale": {
1263
- "type": "integer",
1264
- "minimum": 1,
1265
- "default": 1
1266
- },
1267
- "config": {
1268
- "type": "object"
1269
- },
1270
- "rateLimit": {
1271
- "$ref": "#/definitions/RateLimitPolicy"
1272
- },
1273
- "timeout": {
1274
- "type": "object",
1275
- "description": "Request timeout configuration",
1276
- "properties": {
1277
- "enabled": {
1278
- "type": "boolean",
1279
- "default": true
1280
- },
1281
- "requestMs": {
1282
- "type": "integer",
1283
- "minimum": 100,
1284
- "description": "Request timeout in milliseconds"
1285
- },
1286
- "keepAliveMs": {
1287
- "type": "integer",
1288
- "description": "Keep-alive timeout"
1289
- }
1290
- },
1291
- "additionalProperties": false
1292
- },
1293
- "operations": {
1294
- "type": "object",
1295
- "description": "Per-operation deployment policies",
1296
- "patternProperties": {
1297
- "^[a-z][a-zA-Z0-9_]*$": {
1298
- "$ref": "#/definitions/OperationPolicies"
1299
- }
1300
- },
1301
- "additionalProperties": false
1302
- },
1303
- "resources": {
1304
- "$ref": "#/definitions/ResourceConfiguration"
1305
- },
1306
- "autoscaling": {
1307
- "$ref": "#/definitions/AutoscalingConfiguration"
1308
- }
1309
- },
1310
- "required": [
1311
- "component"
1312
- ],
1313
- "additionalProperties": false
1314
- }
1315
- },
1316
- "additionalProperties": false
1317
- },
1318
- "ServiceInstances": {
1319
- "type": "object",
1320
- "patternProperties": {
1321
- "^[a-z][a-zA-Z0-9_]*$": {
1322
- "type": "object",
1323
- "properties": {
1324
- "component": {
1325
- "$ref": "#/definitions/NamespaceString"
1326
- },
1327
- "namespace": {
1328
- "type": "string"
1329
- },
1330
- "advertises": {
1331
- "$ref": "#/definitions/CapabilityList"
1332
- },
1333
- "uses": {
1334
- "$ref": "#/definitions/CapabilityList"
1335
- },
1336
- "scale": {
1337
- "type": "integer",
1338
- "minimum": 1,
1339
- "default": 1
1340
- },
1341
- "config": {
1342
- "type": "object"
1343
- },
1344
- "operations": {
1345
- "type": "object",
1346
- "description": "Per-operation deployment policies",
1347
- "patternProperties": {
1348
- "^[a-z][a-zA-Z0-9_]*$": {
1349
- "$ref": "#/definitions/OperationPolicies"
1350
- }
1351
- },
1352
- "additionalProperties": false
1353
- }
1354
- },
1355
- "required": [
1356
- "component"
1357
- ],
1358
- "additionalProperties": false
1359
- }
1360
- },
1361
- "additionalProperties": false
1362
- },
1363
- "ViewInstances": {
1364
- "type": "object",
1365
- "patternProperties": {
1366
- "^[a-z][a-zA-Z0-9_]*$": {
1367
- "type": "object",
1368
- "properties": {
1369
- "component": {
1370
- "$ref": "#/definitions/NamespaceString"
1371
- },
1372
- "namespace": {
1373
- "type": "string"
1374
- },
1375
- "uses": {
1376
- "$ref": "#/definitions/CapabilityList"
1377
- },
1378
- "scale": {
1379
- "type": "integer",
1380
- "minimum": 1,
1381
- "default": 1
1382
- },
1383
- "config": {
1384
- "type": "object"
1385
- }
1386
- },
1387
- "required": [
1388
- "component"
1389
- ],
1390
- "additionalProperties": false
1391
- }
1392
- },
1393
- "additionalProperties": false
1394
- },
1395
- "CommunicationInstances": {
1396
- "type": "object",
1397
- "patternProperties": {
1398
- "^[a-z][a-zA-Z0-9_]*$": {
1399
- "type": "object",
1400
- "properties": {
1401
- "namespace": {
1402
- "type": "string"
1403
- },
1404
- "capabilities": {
1405
- "type": "array",
1406
- "items": {
1407
- "type": "string"
1408
- },
1409
- "description": "Capabilities available on this communication channel"
1410
- },
1411
- "type": {
1412
- "type": "string",
1413
- "enum": [
1414
- "pubsub",
1415
- "streaming",
1416
- "rpc",
1417
- "queue"
1418
- ],
1419
- "default": "pubsub"
1420
- },
1421
- "config": {
1422
- "type": "object"
1423
- },
1424
- "consumer": {
1425
- "type": "object",
1426
- "description": "Consumer configuration",
1427
- "properties": {
1428
- "concurrency": {
1429
- "type": "integer",
1430
- "minimum": 1,
1431
- "default": 1,
1432
- "description": "Number of concurrent consumers"
1433
- },
1434
- "prefetch": {
1435
- "type": "integer",
1436
- "minimum": 1,
1437
- "default": 1,
1438
- "description": "Messages to prefetch per consumer"
1439
- },
1440
- "autoAck": {
1441
- "type": "boolean",
1442
- "default": false,
1443
- "description": "Automatically acknowledge messages"
1444
- }
1445
- },
1446
- "additionalProperties": false
1447
- }
1448
- },
1449
- "additionalProperties": false
1450
- }
1451
- },
1452
- "additionalProperties": false
1453
- },
1454
- "StorageInstances": {
1455
- "type": "object",
1456
- "patternProperties": {
1457
- "^[a-z][a-zA-Z0-9_]*$": {
1458
- "type": "object",
1459
- "properties": {
1460
- "component": {
1461
- "$ref": "#/definitions/NamespaceString"
1462
- },
1463
- "namespace": {
1464
- "type": "string"
1465
- },
1466
- "type": {
1467
- "type": "string",
1468
- "enum": [
1469
- "relational",
1470
- "document",
1471
- "keyvalue",
1472
- "cache",
1473
- "file",
1474
- "blob",
1475
- "queue",
1476
- "search"
1477
- ],
1478
- "description": "Type of storage system"
1479
- },
1480
- "advertises": {
1481
- "$ref": "#/definitions/CapabilityList"
1482
- },
1483
- "uses": {
1484
- "$ref": "#/definitions/CapabilityList"
1485
- },
1486
- "scale": {
1487
- "type": "integer",
1488
- "minimum": 1,
1489
- "default": 1
1490
- },
1491
- "persistence": {
1492
- "type": "string",
1493
- "enum": [
1494
- "durable",
1495
- "session",
1496
- "cache",
1497
- "temporary"
1498
- ],
1499
- "description": "Data persistence policy (logical requirement)"
1500
- },
1501
- "consistency": {
1502
- "type": "string",
1503
- "enum": [
1504
- "strong",
1505
- "eventual",
1506
- "weak"
1507
- ],
1508
- "description": "Data consistency policy (logical requirement)"
1509
- },
1510
- "encryption": {
1511
- "type": "boolean",
1512
- "description": "Whether encryption is required (logical requirement)"
1513
- },
1514
- "backup": {
1515
- "type": "boolean",
1516
- "description": "Whether backups are required (logical requirement)"
1517
- },
1518
- "replication": {
1519
- "type": "integer",
1520
- "minimum": 1,
1521
- "description": "Minimum number of data replicas required (logical requirement)"
1522
- }
1523
- },
1524
- "required": [
1525
- "component",
1526
- "type"
1527
- ],
1528
- "additionalProperties": false
1529
- }
1530
- },
1531
- "additionalProperties": false
1532
- },
1533
- "SecurityInstances": {
1534
- "type": "object",
1535
- "patternProperties": {
1536
- "^[a-z][a-zA-Z0-9_]*$": {
1537
- "type": "object",
1538
- "properties": {
1539
- "component": {
1540
- "$ref": "#/definitions/NamespaceString"
1541
- },
1542
- "namespace": {
1543
- "type": "string"
1544
- },
1545
- "type": {
1546
- "type": "string",
1547
- "enum": [
1548
- "authentication",
1549
- "authorization",
1550
- "encryption",
1551
- "audit",
1552
- "firewall",
1553
- "scanning",
1554
- "secrets",
1555
- "identity"
1556
- ],
1557
- "description": "Type of security system"
1558
- },
1559
- "advertises": {
1560
- "$ref": "#/definitions/CapabilityList"
1561
- },
1562
- "uses": {
1563
- "$ref": "#/definitions/CapabilityList"
1564
- },
1565
- "scale": {
1566
- "type": "integer",
1567
- "minimum": 1,
1568
- "default": 1
1569
- },
1570
- "scope": {
1571
- "type": "string",
1572
- "enum": [
1573
- "global",
1574
- "component",
1575
- "operation"
1576
- ],
1577
- "description": "Security scope policy (logical requirement)"
1578
- },
1579
- "policies": {
1580
- "type": "array",
1581
- "items": {
1582
- "type": "string"
1583
- },
1584
- "description": "Security policy names to enforce (logical requirement)"
1585
- },
1586
- "encryption": {
1587
- "type": "string",
1588
- "enum": [
1589
- "strong",
1590
- "basic",
1591
- "none"
1592
- ],
1593
- "description": "Encryption strength requirement (logical requirement)"
1594
- },
1595
- "auditLevel": {
1596
- "type": "string",
1597
- "enum": [
1598
- "comprehensive",
1599
- "detailed",
1600
- "basic",
1601
- "minimal"
1602
- ],
1603
- "description": "Audit logging level requirement (logical requirement)"
1604
- }
1605
- },
1606
- "required": [
1607
- "component",
1608
- "type"
1609
- ],
1610
- "additionalProperties": false
1611
- }
1612
- },
1613
- "additionalProperties": false
1614
- },
1615
- "InfrastructureInstances": {
1616
- "type": "object",
1617
- "patternProperties": {
1618
- "^[a-z][a-zA-Z0-9_]*$": {
1619
- "type": "object",
1620
- "properties": {
1621
- "component": {
1622
- "$ref": "#/definitions/NamespaceString"
1623
- },
1624
- "namespace": {
1625
- "type": "string"
1626
- },
1627
- "type": {
1628
- "type": "string",
1629
- "enum": [
1630
- "gateway",
1631
- "loadbalancer",
1632
- "proxy",
1633
- "cdn",
1634
- "dns",
1635
- "registry",
1636
- "mesh",
1637
- "ingress"
1638
- ],
1639
- "description": "Type of infrastructure system"
1640
- },
1641
- "advertises": {
1642
- "$ref": "#/definitions/CapabilityList"
1643
- },
1644
- "uses": {
1645
- "$ref": "#/definitions/CapabilityList"
1646
- },
1647
- "scale": {
1648
- "type": "integer",
1649
- "minimum": 1,
1650
- "default": 1
1651
- },
1652
- "healthCheck": {
1653
- "type": "boolean",
1654
- "description": "Whether health checking is required (logical requirement)"
1655
- },
1656
- "loadBalancing": {
1657
- "type": "boolean",
1658
- "description": "Whether load balancing is required (logical requirement)"
1659
- },
1660
- "redundancy": {
1661
- "type": "string",
1662
- "enum": [
1663
- "high",
1664
- "medium",
1665
- "low"
1666
- ],
1667
- "description": "Redundancy level requirement (logical requirement)"
1668
- }
1669
- },
1670
- "required": [
1671
- "component",
1672
- "type"
1673
- ],
1674
- "additionalProperties": false
1675
- }
1676
- },
1677
- "additionalProperties": false
1678
- },
1679
- "MonitoringInstances": {
1680
- "type": "object",
1681
- "patternProperties": {
1682
- "^[a-z][a-zA-Z0-9_]*$": {
1683
- "type": "object",
1684
- "properties": {
1685
- "component": {
1686
- "$ref": "#/definitions/NamespaceString"
1687
- },
1688
- "namespace": {
1689
- "type": "string"
1690
- },
1691
- "type": {
1692
- "type": "string",
1693
- "enum": [
1694
- "metrics",
1695
- "logging",
1696
- "tracing",
1697
- "alerting",
1698
- "analytics",
1699
- "profiling",
1700
- "uptime",
1701
- "synthetic"
1702
- ],
1703
- "description": "Type of monitoring system"
1704
- },
1705
- "advertises": {
1706
- "$ref": "#/definitions/CapabilityList"
1707
- },
1708
- "uses": {
1709
- "$ref": "#/definitions/CapabilityList"
1710
- },
1711
- "scale": {
1712
- "type": "integer",
1713
- "minimum": 1,
1714
- "default": 1
1715
- },
1716
- "config": {
1717
- "type": "object"
1718
- },
1719
- "scope": {
1720
- "type": "string",
1721
- "enum": [
1722
- "global",
1723
- "regional",
1724
- "local"
1725
- ],
1726
- "description": "Monitoring scope"
1727
- },
1728
- "retention": {
1729
- "type": "string",
1730
- "description": "Data retention period (e.g., '30d', '1y')"
1731
- },
1732
- "alerting": {
1733
- "type": "boolean",
1734
- "description": "Enable alerting capabilities"
1735
- },
1736
- "sampling": {
1737
- "type": "number",
1738
- "minimum": 0,
1739
- "maximum": 1,
1740
- "description": "Sampling rate (0.0 to 1.0)"
1741
- }
1742
- },
1743
- "required": [
1744
- "component",
1745
- "type"
1746
- ],
1747
- "additionalProperties": false
1748
- }
1749
- },
1750
- "additionalProperties": false
1751
- },
1752
- "CommandsSection": {
1753
- "type": "object",
1754
- "patternProperties": {
1755
- "^[a-z][a-zA-Z0-9_-]*$": {
1756
- "type": "object",
1757
- "properties": {
1758
- "description": {
1759
- "type": "string"
1760
- },
1761
- "arguments": {
1762
- "type": "object",
1763
- "additionalProperties": {
1764
- "type": "object",
1765
- "properties": {
1766
- "type": {
1767
- "type": "string"
1768
- },
1769
- "required": {
1770
- "type": "boolean"
1771
- },
1772
- "positional": {
1773
- "type": "boolean"
1774
- },
1775
- "description": {
1776
- "type": "string"
1777
- },
1778
- "default": {}
1779
- }
1780
- }
1781
- },
1782
- "flags": {
1783
- "type": "object",
1784
- "patternProperties": {
1785
- "^--[a-z][a-zA-Z0-9-]*$": {
1786
- "type": "object",
1787
- "properties": {
1788
- "type": {
1789
- "type": "string"
1790
- },
1791
- "default": {},
1792
- "description": {
1793
- "type": "string"
1794
- },
1795
- "alias": {
1796
- "type": "string"
1797
- }
1798
- }
1799
- }
1800
- }
1801
- },
1802
- "returns": {
1803
- "type": "string"
1804
- },
1805
- "exitCodes": {
1806
- "type": "object",
1807
- "patternProperties": {
1808
- "^[0-9]+$": {
1809
- "type": "string"
1810
- }
1811
- }
1812
- },
1813
- "subcommands": {
1814
- "type": "object",
1815
- "additionalProperties": {
1816
- "type": "object"
1817
- }
1818
- }
1819
- },
1820
- "additionalProperties": false
1821
- }
1822
- },
1823
- "additionalProperties": false
1824
- },
1825
- "ConventionsSection": {
1826
- "type": "object",
1827
- "patternProperties": {
1828
- "^[A-Z][A-Za-z0-9_]*$": {
1829
- "type": "object",
1830
- "properties": {
1831
- "baseType": {
1832
- "type": "string"
1833
- },
1834
- "description": {
1835
- "type": "string"
1836
- },
1837
- "implies": {
1838
- "type": "object",
1839
- "additionalProperties": true
1840
- },
1841
- "when_modified_by": {
1842
- "type": "object",
1843
- "additionalProperties": {
1844
- "type": "object",
1845
- "properties": {
1846
- "adds": {
1847
- "type": "array",
1848
- "items": {
1849
- "type": "string"
1850
- }
1851
- },
1852
- "sets": {
1853
- "type": "object",
1854
- "additionalProperties": true
1855
- },
1856
- "validates": {
1857
- "type": "string"
1858
- }
1859
- }
1860
- }
1861
- },
1862
- "appliesTo": {
1863
- "type": "array",
1864
- "items": {
1865
- "type": "string"
1866
- }
1867
- }
1868
- },
1869
- "required": [
1870
- "baseType"
1871
- ],
1872
- "additionalProperties": false
1873
- }
1874
- },
1875
- "additionalProperties": false
1876
- },
1877
- "MeasuresSection": {
1878
- "type": "object",
1879
- "patternProperties": {
1880
- "^[a-z][a-zA-Z0-9_]*$": {
1881
- "type": "object",
1882
- "properties": {
1883
- "description": {
1884
- "type": "string"
1885
- },
1886
- "source": {
1887
- "type": "string"
1888
- },
1889
- "aggregation": {
1890
- "type": "string",
1891
- "enum": [
1892
- "sum",
1893
- "count",
1894
- "avg",
1895
- "min",
1896
- "max",
1897
- "custom"
1898
- ]
1899
- },
1900
- "field": {
1901
- "type": "string"
1902
- },
1903
- "computation": {
1904
- "type": "string"
1905
- },
1906
- "filter": {
1907
- "type": "string"
1908
- },
1909
- "dimensions": {
1910
- "type": "array",
1911
- "items": {
1912
- "type": "string"
1913
- }
1914
- },
1915
- "format": {
1916
- "type": "string"
1917
- }
1918
- },
1919
- "required": [
1920
- "source",
1921
- "aggregation"
1922
- ],
1923
- "additionalProperties": false
1924
- }
1925
- },
1926
- "additionalProperties": false
1927
- },
1928
- "ManifestsContainer": {
1929
- "type": "object",
1930
- "description": "Container for implementation manifests",
1931
- "patternProperties": {
1932
- "^(@[a-z0-9][a-z0-9-]*[a-z0-9]/[a-z0-9][a-z0-9-]*[a-z0-9](/[a-z0-9][a-z0-9-]*[a-z0-9])?|[A-Za-z][A-Za-z0-9_-]*)$": {
1933
- "$ref": "#/definitions/ManifestDefinition"
1934
- }
1935
- },
1936
- "additionalProperties": false
1937
- },
1938
- "ManifestDefinition": {
1939
- "type": "object",
1940
- "description": "Implementation manifest - maps deployment instances to instance factories",
1941
- "required": [
1942
- "specVersion",
1943
- "name",
1944
- "version",
1945
- "deployment"
1946
- ],
1947
- "properties": {
1948
- "specVersion": {
1949
- "type": "string",
1950
- "description": "SpecVerse specification version",
1951
- "enum": [
1952
- "3.5.0"
1953
- ]
1954
- },
1955
- "name": {
1956
- "type": "string",
1957
- "description": "Manifest name"
1958
- },
1959
- "description": {
1960
- "type": "string",
1961
- "description": "Manifest description"
1962
- },
1963
- "version": {
1964
- "type": "string",
1965
- "pattern": "^\\d+\\.\\d+\\.\\d+$",
1966
- "description": "Manifest version (semver)"
1967
- },
1968
- "deployment": {
1969
- "type": "object",
1970
- "description": "Reference to deployment specification",
1971
- "required": [
1972
- "deploymentSource",
1973
- "deploymentName"
1974
- ],
1975
- "properties": {
1976
- "deploymentSource": {
1977
- "type": "string",
1978
- "description": "Path to .specly file containing deployment"
1979
- },
1980
- "deploymentName": {
1981
- "type": "string",
1982
- "description": "Name of deployment in the spec"
1983
- },
1984
- "deploymentVersion": {
1985
- "type": "string",
1986
- "description": "Version constraint for deployment"
1987
- }
1988
- }
1989
- },
1990
- "defaultMappings": {
1991
- "type": "object",
1992
- "description": "Default instance factory by category (lowest priority)",
1993
- "properties": {
1994
- "controller": {
1995
- "type": "string",
1996
- "description": "Default for controller instances"
1997
- },
1998
- "service": {
1999
- "type": "string",
2000
- "description": "Default for service instances"
2001
- },
2002
- "view": {
2003
- "type": "string",
2004
- "description": "Default for view instances"
2005
- },
2006
- "storage": {
2007
- "type": "string",
2008
- "description": "Default for storage instances"
2009
- },
2010
- "security": {
2011
- "type": "string",
2012
- "description": "Default for security instances"
2013
- },
2014
- "infrastructure": {
2015
- "type": "string",
2016
- "description": "Default for infrastructure instances"
2017
- },
2018
- "monitoring": {
2019
- "type": "string",
2020
- "description": "Default for monitoring instances"
2021
- },
2022
- "communication": {
2023
- "type": "string",
2024
- "description": "Default for communication instances"
2025
- }
2026
- },
2027
- "additionalProperties": false
2028
- },
2029
- "capabilityMappings": {
2030
- "type": "array",
2031
- "description": "Map capabilities to instance factories with pattern matching (medium priority)",
2032
- "items": {
2033
- "type": "object",
2034
- "required": [
2035
- "capability",
2036
- "instanceFactory"
2037
- ],
2038
- "properties": {
2039
- "capability": {
2040
- "type": "string",
2041
- "pattern": "^[a-z][a-z0-9]*(\\.[a-z*][a-z0-9*]*)*$",
2042
- "description": "Capability pattern (supports wildcards: api.rest.*)"
2043
- },
2044
- "instanceFactory": {
2045
- "type": "string",
2046
- "description": "Instance factory name"
2047
- },
2048
- "version": {
2049
- "type": "string",
2050
- "description": "Version constraint for instance factory"
2051
- },
2052
- "configuration": {
2053
- "type": "object",
2054
- "description": "Configuration overrides",
2055
- "additionalProperties": true
2056
- }
2057
- }
2058
- }
2059
- },
2060
- "instanceMappings": {
2061
- "type": "array",
2062
- "description": "Explicit instance-to-factory mappings (highest priority)",
2063
- "items": {
2064
- "type": "object",
2065
- "required": [
2066
- "instanceName",
2067
- "instanceFactory"
2068
- ],
2069
- "properties": {
2070
- "instanceName": {
2071
- "type": "string",
2072
- "description": "Specific instance name from deployment"
2073
- },
2074
- "instanceFactory": {
2075
- "type": "string",
2076
- "description": "Instance factory name"
2077
- },
2078
- "version": {
2079
- "type": "string",
2080
- "description": "Version constraint for instance factory"
2081
- },
2082
- "configuration": {
2083
- "type": "object",
2084
- "description": "Configuration overrides",
2085
- "additionalProperties": true
2086
- }
2087
- }
2088
- }
2089
- },
2090
- "manifestTemplates": {
2091
- "type": "array",
2092
- "description": "Import common technology combinations",
2093
- "items": {
2094
- "type": "object",
2095
- "required": [
2096
- "template"
2097
- ],
2098
- "properties": {
2099
- "template": {
2100
- "type": "string",
2101
- "description": "Template from library (e.g., '@specverse/manifest-templates/jamstack')"
2102
- },
2103
- "version": {
2104
- "type": "string",
2105
- "description": "Version constraint"
2106
- }
2107
- }
2108
- }
2109
- },
2110
- "configuration": {
2111
- "type": "object",
2112
- "description": "Global configuration settings",
2113
- "additionalProperties": true
2114
- },
2115
- "conditionalMappings": {
2116
- "type": "array",
2117
- "description": "Environment-based capability mappings",
2118
- "items": {
2119
- "type": "object",
2120
- "properties": {
2121
- "condition": {
2122
- "type": "object",
2123
- "properties": {
2124
- "environment": {
2125
- "oneOf": [
2126
- {
2127
- "type": "string"
2128
- },
2129
- {
2130
- "type": "array",
2131
- "items": {
2132
- "type": "string"
2133
- }
2134
- }
2135
- ],
2136
- "description": "Target environment(s)"
2137
- },
2138
- "region": {
2139
- "oneOf": [
2140
- {
2141
- "type": "string"
2142
- },
2143
- {
2144
- "type": "array",
2145
- "items": {
2146
- "type": "string"
2147
- }
2148
- }
2149
- ]
2150
- },
2151
- "featureFlags": {
2152
- "type": "array",
2153
- "items": {
2154
- "type": "string"
2155
- },
2156
- "description": "Required feature flags (prefix ! for negation)"
2157
- },
2158
- "scale": {
2159
- "type": "object",
2160
- "properties": {
2161
- "min": {
2162
- "type": "integer"
2163
- },
2164
- "max": {
2165
- "type": "integer"
2166
- }
2167
- },
2168
- "additionalProperties": false
2169
- }
2170
- },
2171
- "additionalProperties": false
2172
- },
2173
- "capabilityMappings": {
2174
- "type": "array",
2175
- "items": {
2176
- "type": "object",
2177
- "properties": {
2178
- "capability": {
2179
- "type": "string"
2180
- },
2181
- "instanceFactory": {
2182
- "type": "string"
2183
- },
2184
- "version": {
2185
- "type": "string"
2186
- },
2187
- "configuration": {
2188
- "type": "object",
2189
- "additionalProperties": true
2190
- },
2191
- "fallback": {
2192
- "type": "array",
2193
- "description": "Fallback instance factories",
2194
- "items": {
2195
- "type": "object",
2196
- "properties": {
2197
- "instanceFactory": {
2198
- "type": "string"
2199
- },
2200
- "degradedMode": {
2201
- "type": "boolean",
2202
- "default": false
2203
- },
2204
- "warnings": {
2205
- "type": "array",
2206
- "items": {
2207
- "type": "string"
2208
- }
2209
- },
2210
- "errors": {
2211
- "type": "array",
2212
- "items": {
2213
- "type": "string"
2214
- }
2215
- },
2216
- "requiredAcknowledgment": {
2217
- "type": "boolean",
2218
- "default": false
2219
- }
2220
- },
2221
- "required": [
2222
- "instanceFactory"
2223
- ],
2224
- "additionalProperties": false
2225
- }
2226
- }
2227
- },
2228
- "required": [
2229
- "capability",
2230
- "instanceFactory"
2231
- ],
2232
- "additionalProperties": false
2233
- }
2234
- }
2235
- },
2236
- "required": [
2237
- "condition",
2238
- "capabilityMappings"
2239
- ],
2240
- "additionalProperties": false
2241
- }
2242
- },
2243
- "conflicts": {
2244
- "type": "array",
2245
- "description": "Technology conflict declarations",
2246
- "items": {
2247
- "type": "object",
2248
- "properties": {
2249
- "instanceFactories": {
2250
- "type": "array",
2251
- "items": {
2252
- "type": "string"
2253
- },
2254
- "minItems": 2,
2255
- "description": "Conflicting instance factory names"
2256
- },
2257
- "reason": {
2258
- "type": "string",
2259
- "description": "Explanation of conflict"
2260
- },
2261
- "severity": {
2262
- "type": "string",
2263
- "enum": [
2264
- "error",
2265
- "warning"
2266
- ],
2267
- "default": "error"
2268
- }
2269
- },
2270
- "required": [
2271
- "instanceFactories",
2272
- "reason"
2273
- ],
2274
- "additionalProperties": false
2275
- }
2276
- },
2277
- "instanceFactories": {
2278
- "type": "array",
2279
- "description": "List of instance factories used by this manifest.",
2280
- "items": {
2281
- "$ref": "#/definitions/InstanceFactoryRef"
2282
- }
2283
- }
2284
- },
2285
- "additionalProperties": false
2286
- },
2287
- "ManifestImportSection": {
2288
- "type": "array",
2289
- "description": "Import standard definition libraries for implementation types",
2290
- "items": {
2291
- "type": "object",
2292
- "description": "Import standard definition library",
2293
- "required": [
2294
- "library"
2295
- ],
2296
- "properties": {
2297
- "library": {
2298
- "type": "string",
2299
- "description": "Library path (e.g., '@specverse/standards/nextjs')"
2300
- },
2301
- "version": {
2302
- "type": "string",
2303
- "description": "Version constraint (e.g., '^1.0.0')"
2304
- },
2305
- "select": {
2306
- "type": "array",
2307
- "description": "Select specific definitions from library",
2308
- "items": {
2309
- "type": "string"
2310
- }
2311
- },
2312
- "alias": {
2313
- "type": "string",
2314
- "description": "Optional alias for the imported library"
2315
- }
2316
- }
2317
- }
2318
- },
2319
- "ManifestComponentReference": {
2320
- "type": "object",
2321
- "description": "Information about the v3.1.0 Component specification",
2322
- "required": [
2323
- "componentSource",
2324
- "componentVersion"
2325
- ],
2326
- "additionalProperties": false,
2327
- "properties": {
2328
- "componentSource": {
2329
- "type": "string",
2330
- "description": "Source of the component"
2331
- },
2332
- "componentVersion": {
2333
- "type": "string",
2334
- "description": "Version constraint for the component (should be ^3.1.0)",
2335
- "pattern": "^(\\^|>=|~)?3\\.[1-9]\\.[0-9]+"
2336
- },
2337
- "description": {
2338
- "type": "string",
2339
- "description": "Description of the component"
2340
- }
2341
- }
2342
- },
2343
- "ManifestDeploymentReference": {
2344
- "type": "object",
2345
- "description": "Information about the v3.1.0 Deployment specification",
2346
- "required": [
2347
- "deploymentSource",
2348
- "deploymentVersion"
2349
- ],
2350
- "additionalProperties": false,
2351
- "properties": {
2352
- "deploymentSource": {
2353
- "type": "string",
2354
- "description": "Source of the deployment specification"
2355
- },
2356
- "deploymentVersion": {
2357
- "type": "string",
2358
- "description": "Version constraint for the deployment (should be ^3.1.0)",
2359
- "pattern": "^(\\^|>=|~)?3\\.[1-9]\\.[0-9]+"
2360
- },
2361
- "description": {
2362
- "type": "string",
2363
- "description": "Description of the deployment"
2364
- }
2365
- }
2366
- },
2367
- "ImplementationTypesSection": {
2368
- "type": "object",
2369
- "description": "Reusable implementation type definitions",
2370
- "additionalProperties": false,
2371
- "patternProperties": {
2372
- "^[a-zA-Z][a-zA-Z0-9_-]*$": {
2373
- "type": "object",
2374
- "oneOf": [
2375
- {
2376
- "description": "Extend from imported standard definition",
2377
- "required": [
2378
- "extends"
2379
- ],
2380
- "additionalProperties": false,
2381
- "properties": {
2382
- "extends": {
2383
- "type": "string",
2384
- "description": "Reference to imported standard definition"
2385
- },
2386
- "overrides": {
2387
- "type": "object",
2388
- "description": "Override any standard definition properties"
2389
- },
2390
- "localExtensions": {
2391
- "type": "object",
2392
- "description": "Technology-specific local extensions"
2393
- }
2394
- }
2395
- },
2396
- {
2397
- "description": "Custom local definition",
2398
- "required": [
2399
- "type",
2400
- "technology"
2401
- ],
2402
- "additionalProperties": false,
2403
- "properties": {
2404
- "type": {
2405
- "type": "string",
2406
- "enum": [
2407
- "controller",
2408
- "service",
2409
- "view",
2410
- "database",
2411
- "authentication",
2412
- "messaging",
2413
- "cache",
2414
- "storage",
2415
- "api"
2416
- ],
2417
- "description": "Category of implementation"
2418
- },
2419
- "technology": {
2420
- "type": "string",
2421
- "description": "Core technology (e.g., 'NextJS', 'PostgreSQL')"
2422
- },
2423
- "framework": {
2424
- "type": "string"
2425
- },
2426
- "adapter": {
2427
- "type": "string"
2428
- },
2429
- "provider": {
2430
- "type": "string"
2431
- },
2432
- "libraries": {
2433
- "type": "array",
2434
- "items": {
2435
- "type": "string"
2436
- }
2437
- },
2438
- "environmentVariables": {
2439
- "type": "array",
2440
- "items": {
2441
- "type": "string"
2442
- }
2443
- },
2444
- "defaultPath": {
2445
- "type": "string"
2446
- },
2447
- "configuration": {
2448
- "type": "object"
2449
- },
2450
- "capabilities": {
2451
- "type": "array",
2452
- "items": {
2453
- "type": "string"
2454
- }
2455
- }
2456
- }
2457
- }
2458
- ]
2459
- }
2460
- }
2461
- },
2462
- "BehaviorMappingsSection": {
2463
- "type": "array",
2464
- "description": "Model behavior implementation mappings",
2465
- "items": {
2466
- "type": "object",
2467
- "required": [
2468
- "modelName",
2469
- "behaviorName",
2470
- "implementationMethod"
2471
- ],
2472
- "additionalProperties": false,
2473
- "properties": {
2474
- "modelName": {
2475
- "type": "string"
2476
- },
2477
- "behaviorName": {
2478
- "type": "string"
2479
- },
2480
- "implementationMethod": {
2481
- "type": "string"
2482
- },
2483
- "implementationPath": {
2484
- "type": "string"
2485
- },
2486
- "description": {
2487
- "type": "string"
2488
- }
2489
- }
2490
- }
2491
- },
2492
- "CapabilityMappingsSection": {
2493
- "type": "array",
2494
- "description": "v3.1.0 capability mappings using implementation types",
2495
- "items": {
2496
- "type": "object",
2497
- "required": [
2498
- "capability",
2499
- "implementationType"
2500
- ],
2501
- "additionalProperties": false,
2502
- "properties": {
2503
- "capability": {
2504
- "type": "string",
2505
- "description": "Capability pattern (e.g., '*', 'models.*')"
2506
- },
2507
- "implementationType": {
2508
- "type": "string",
2509
- "description": "Reference to implementationType"
2510
- },
2511
- "capabilityType": {
2512
- "type": "string",
2513
- "enum": [
2514
- "advertises",
2515
- "uses",
2516
- "bidirectional"
2517
- ]
2518
- },
2519
- "namespace": {
2520
- "type": "string"
2521
- },
2522
- "channelBinding": {
2523
- "type": "string"
2524
- }
2525
- }
2526
- }
2527
- },
2528
- "CommunicationChannelsSection": {
2529
- "type": "array",
2530
- "description": "v3.1.0 communication channel mappings",
2531
- "items": {
2532
- "type": "object",
2533
- "required": [
2534
- "channelName",
2535
- "implementationType"
2536
- ],
2537
- "additionalProperties": false,
2538
- "properties": {
2539
- "channelName": {
2540
- "type": "string"
2541
- },
2542
- "implementationType": {
2543
- "type": "string"
2544
- },
2545
- "namespace": {
2546
- "type": "string"
2547
- },
2548
- "capabilities": {
2549
- "type": "array",
2550
- "items": {
2551
- "type": "string"
2552
- }
2553
- }
2554
- }
2555
- }
2556
- },
2557
- "LogicalDeploymentSection": {
2558
- "type": "object",
2559
- "description": "v3.1.0 logical deployment configuration",
2560
- "additionalProperties": false,
2561
- "properties": {
2562
- "deploymentName": {
2563
- "type": "string"
2564
- },
2565
- "environment": {
2566
- "type": "string"
2567
- },
2568
- "instances": {
2569
- "type": "object",
2570
- "properties": {
2571
- "controllers": {
2572
- "$ref": "#/definitions/LogicalInstanceMapping"
2573
- },
2574
- "services": {
2575
- "$ref": "#/definitions/LogicalInstanceMapping"
2576
- },
2577
- "views": {
2578
- "$ref": "#/definitions/LogicalInstanceMapping"
2579
- },
2580
- "communications": {
2581
- "$ref": "#/definitions/LogicalInstanceMapping"
2582
- }
2583
- }
2584
- }
2585
- }
2586
- },
2587
- "LogicalInstanceMapping": {
2588
- "type": "object",
2589
- "patternProperties": {
2590
- "^[a-zA-Z][a-zA-Z0-9_]*$": {
2591
- "oneOf": [
2592
- {
2593
- "type": "string",
2594
- "description": "Reference to implementationType"
2595
- },
2596
- {
2597
- "type": "object",
2598
- "properties": {
2599
- "implementationType": {
2600
- "type": "string"
2601
- },
2602
- "overrides": {
2603
- "type": "object"
2604
- }
2605
- },
2606
- "required": [
2607
- "implementationType"
2608
- ]
2609
- }
2610
- ]
2611
- }
2612
- }
2613
- },
2614
- "NamespaceConfigurationSection": {
2615
- "type": "object",
2616
- "description": "v3.1.0 namespace scoping configuration",
2617
- "additionalProperties": false,
2618
- "properties": {
2619
- "strategy": {
2620
- "type": "string",
2621
- "enum": [
2622
- "single",
2623
- "domain-based",
2624
- "environment-based",
2625
- "tenant-based"
2626
- ]
2627
- },
2628
- "namespaces": {
2629
- "type": "object",
2630
- "patternProperties": {
2631
- "^[a-zA-Z][a-zA-Z0-9_-]*$": {
2632
- "type": "object",
2633
- "properties": {
2634
- "description": {
2635
- "type": "string"
2636
- },
2637
- "isolation": {
2638
- "type": "string",
2639
- "enum": [
2640
- "strict",
2641
- "permissive"
2642
- ]
2643
- },
2644
- "resourceLimits": {
2645
- "type": "object"
2646
- },
2647
- "securityPolicy": {
2648
- "type": "string"
2649
- }
2650
- }
2651
- }
2652
- }
2653
- },
2654
- "crossNamespacePolicy": {
2655
- "type": "string",
2656
- "enum": [
2657
- "deny",
2658
- "allow",
2659
- "explicit"
2660
- ]
2661
- }
2662
- }
2663
- },
2664
- "InstanceFactoryDefinition": {
2665
- "type": "object",
2666
- "description": "Instance factory definition - reusable technology specification for deployment instances",
2667
- "required": [
2668
- "name",
2669
- "version",
2670
- "category",
2671
- "capabilities",
2672
- "technology",
2673
- "codeTemplates"
2674
- ],
2675
- "properties": {
2676
- "name": {
2677
- "type": "string",
2678
- "pattern": "^[A-Za-z][A-Za-z0-9]*$",
2679
- "description": "Unique name (e.g., 'FastifyPrismaAPI', 'PostgreSQL15')"
2680
- },
2681
- "version": {
2682
- "type": "string",
2683
- "pattern": "^\\d+\\.\\d+\\.\\d+(-[A-Za-z0-9-]+)?(\\+[A-Za-z0-9-]+)?$",
2684
- "description": "Semantic version"
2685
- },
2686
- "category": {
2687
- "type": "string",
2688
- "enum": [
2689
- "controller",
2690
- "service",
2691
- "view",
2692
- "storage",
2693
- "security",
2694
- "infrastructure",
2695
- "monitoring",
2696
- "communication",
2697
- "scaffolding",
2698
- "application",
2699
- "cli"
2700
- ],
2701
- "description": "Which deployment instance category this implements"
2702
- },
2703
- "description": {
2704
- "type": "string",
2705
- "description": "Human-readable description"
2706
- },
2707
- "compatibility": {
2708
- "type": "object",
2709
- "description": "Version compatibility requirements",
2710
- "required": [
2711
- "specverse"
2712
- ],
2713
- "properties": {
2714
- "specverse": {
2715
- "type": "string",
2716
- "description": "SpecVerse version range (semver)"
2717
- },
2718
- "node": {
2719
- "type": "string",
2720
- "description": "Node.js version requirement"
2721
- }
2722
- },
2723
- "additionalProperties": {
2724
- "type": "string"
2725
- }
2726
- },
2727
- "capabilities": {
2728
- "type": "object",
2729
- "description": "What this instance provides and requires",
2730
- "required": [
2731
- "provides"
2732
- ],
2733
- "properties": {
2734
- "provides": {
2735
- "type": "array",
2736
- "description": "Capabilities this instance type provides",
2737
- "items": {
2738
- "type": "string",
2739
- "pattern": "^[a-z][a-z0-9]*\\.[a-z][a-z0-9]*(\\.[a-z*][a-z0-9*]*)*$"
2740
- },
2741
- "minItems": 1
2742
- },
2743
- "requires": {
2744
- "type": "array",
2745
- "description": "Capabilities this instance type requires",
2746
- "items": {
2747
- "type": "string"
2748
- }
2749
- }
2750
- }
2751
- },
2752
- "technology": {
2753
- "type": "object",
2754
- "description": "Technology stack information",
2755
- "required": [
2756
- "runtime",
2757
- "language"
2758
- ],
2759
- "properties": {
2760
- "runtime": {
2761
- "type": "string",
2762
- "pattern": "^[a-z][a-z0-9-]+$",
2763
- "description": "Runtime environment identifier. Standard runtimes: node, deno, bun, python, rust, go, browser. See SpecVerse Registry for complete list.",
2764
- "examples": [
2765
- "node",
2766
- "deno",
2767
- "bun"
2768
- ],
2769
- "$comment": "Validation: Linter checks against SpecVerse runtime registry"
2770
- },
2771
- "language": {
2772
- "type": "string",
2773
- "pattern": "^[a-z][a-z0-9-]+$",
2774
- "description": "Programming language identifier (kebab-case). Standard languages: typescript, javascript, python, rust, go, java, csharp, php, ruby, kotlin, swift. See SpecVerse Registry for complete list.",
2775
- "examples": [
2776
- "typescript",
2777
- "python",
2778
- "rust"
2779
- ],
2780
- "$comment": "Validation: Linter checks against SpecVerse language registry"
2781
- },
2782
- "framework": {
2783
- "type": "string",
2784
- "description": "Framework name (e.g., 'fastify', 'express', 'nextjs')"
2785
- },
2786
- "database": {
2787
- "type": "string",
2788
- "description": "Database system (e.g., 'postgresql', 'mongodb')"
2789
- },
2790
- "version": {
2791
- "type": "string",
2792
- "description": "Technology version"
2793
- }
2794
- },
2795
- "additionalProperties": {
2796
- "type": "string",
2797
- "description": "Additional tech-specific fields (e.g., orm, validation, cache)"
2798
- }
2799
- },
2800
- "dependencies": {
2801
- "type": "object",
2802
- "description": "Package dependencies",
2803
- "properties": {
2804
- "runtime": {
2805
- "type": "array",
2806
- "description": "Runtime dependencies",
2807
- "items": {
2808
- "type": "object",
2809
- "required": [
2810
- "name",
2811
- "version"
2812
- ],
2813
- "properties": {
2814
- "name": {
2815
- "type": "string"
2816
- },
2817
- "version": {
2818
- "type": "string"
2819
- },
2820
- "optional": {
2821
- "type": "boolean"
2822
- }
2823
- }
2824
- }
2825
- },
2826
- "dev": {
2827
- "type": "array",
2828
- "description": "Development dependencies",
2829
- "items": {
2830
- "type": "object",
2831
- "required": [
2832
- "name",
2833
- "version"
2834
- ],
2835
- "properties": {
2836
- "name": {
2837
- "type": "string"
2838
- },
2839
- "version": {
2840
- "type": "string"
2841
- }
2842
- }
2843
- }
2844
- },
2845
- "peer": {
2846
- "type": "array",
2847
- "description": "Peer dependencies",
2848
- "items": {
2849
- "type": "object",
2850
- "required": [
2851
- "name",
2852
- "version"
2853
- ],
2854
- "properties": {
2855
- "name": {
2856
- "type": "string"
2857
- },
2858
- "version": {
2859
- "type": "string"
2860
- }
2861
- }
2862
- }
2863
- }
2864
- }
2865
- },
2866
- "codeTemplates": {
2867
- "type": "object",
2868
- "description": "Code generation templates",
2869
- "additionalProperties": {
2870
- "type": "object",
2871
- "required": [
2872
- "engine",
2873
- "outputPattern"
2874
- ],
2875
- "properties": {
2876
- "engine": {
2877
- "type": "string",
2878
- "description": "Template engine to use",
2879
- "enum": [
2880
- "typescript",
2881
- "handlebars",
2882
- "ai"
2883
- ]
2884
- },
2885
- "template": {
2886
- "type": "string",
2887
- "description": "Template content or path (for handlebars)"
2888
- },
2889
- "generator": {
2890
- "type": "string",
2891
- "description": "Path to generator function (for typescript)"
2892
- },
2893
- "prompt": {
2894
- "type": "string",
2895
- "description": "Generation prompt (for AI)"
2896
- },
2897
- "outputPattern": {
2898
- "type": "string",
2899
- "description": "Output file path pattern with variables"
2900
- },
2901
- "validators": {
2902
- "type": "array",
2903
- "description": "Validation function paths",
2904
- "items": {
2905
- "type": "string"
2906
- }
2907
- },
2908
- "postProcessors": {
2909
- "type": "array",
2910
- "description": "Post-processing function paths",
2911
- "items": {
2912
- "type": "string"
2913
- }
2914
- }
2915
- }
2916
- },
2917
- "minProperties": 1
2918
- },
2919
- "configuration": {
2920
- "type": "object",
2921
- "description": "Default configuration (tech-specific structure)",
2922
- "additionalProperties": true
2923
- },
2924
- "configurationSchema": {
2925
- "description": "Optional JSON Schema to validate configuration overrides",
2926
- "oneOf": [
2927
- {
2928
- "type": "object",
2929
- "description": "Inline JSON Schema"
2930
- },
2931
- {
2932
- "type": "object",
2933
- "required": [
2934
- "$ref"
2935
- ],
2936
- "properties": {
2937
- "$ref": {
2938
- "type": "string",
2939
- "description": "Path to external schema file"
2940
- }
2941
- }
2942
- }
2943
- ]
2944
- },
2945
- "configurationDocs": {
2946
- "type": "object",
2947
- "description": "Documentation for configuration options",
2948
- "additionalProperties": {
2949
- "type": "string"
2950
- }
2951
- },
2952
- "extends": {
2953
- "type": "string",
2954
- "description": "Parent instance type to extend from"
2955
- },
2956
- "metadata": {
2957
- "type": "object",
2958
- "description": "Additional metadata",
2959
- "properties": {
2960
- "author": {
2961
- "type": "string"
2962
- },
2963
- "repository": {
2964
- "type": "string",
2965
- "format": "uri"
2966
- },
2967
- "homepage": {
2968
- "type": "string",
2969
- "format": "uri"
2970
- },
2971
- "license": {
2972
- "type": "string"
2973
- },
2974
- "tags": {
2975
- "type": "array",
2976
- "items": {
2977
- "type": "string"
2978
- }
2979
- },
2980
- "keywords": {
2981
- "type": "array",
2982
- "items": {
2983
- "type": "string"
2984
- }
2985
- },
2986
- "documentation": {
2987
- "type": "string",
2988
- "format": "uri"
2989
- }
2990
- }
2991
- },
2992
- "requirements": {
2993
- "type": "object",
2994
- "description": "Generic requirements declared by this implementation type for scaffolding (runtime-agnostic structure)",
2995
- "properties": {
2996
- "dependencies": {
2997
- "type": "object",
2998
- "description": "Package/library dependencies (structure varies by runtime: npm, pip, cargo, go-mod, etc.)",
2999
- "additionalProperties": true
3000
- },
3001
- "environment": {
3002
- "type": "array",
3003
- "description": "Environment variables and configuration (universal structure)",
3004
- "items": {
3005
- "type": "object",
3006
- "required": [
3007
- "name"
3008
- ],
3009
- "properties": {
3010
- "name": {
3011
- "type": "string",
3012
- "description": "Environment variable name"
3013
- },
3014
- "description": {
3015
- "type": "string",
3016
- "description": "Human-readable description"
3017
- },
3018
- "example": {
3019
- "type": "string",
3020
- "description": "Example value"
3021
- },
3022
- "required": {
3023
- "type": "boolean",
3024
- "description": "Whether this variable is required"
3025
- },
3026
- "category": {
3027
- "type": "string",
3028
- "description": "Category for grouping (e.g., 'Database', 'Server', 'Authentication')"
3029
- }
3030
- },
3031
- "additionalProperties": true
3032
- }
3033
- },
3034
- "configuration": {
3035
- "type": "object",
3036
- "description": "Build/runtime configuration files (structure varies by runtime: tsconfig, pyproject, cargo-toml, etc.)",
3037
- "additionalProperties": true
3038
- },
3039
- "files": {
3040
- "type": "array",
3041
- "description": "Additional files to generate (optional)",
3042
- "items": {
3043
- "type": "object",
3044
- "required": [
3045
- "path"
3046
- ],
3047
- "properties": {
3048
- "path": {
3049
- "type": "string",
3050
- "description": "File path relative to project root"
3051
- },
3052
- "description": {
3053
- "type": "string",
3054
- "description": "Description of what this file is for"
3055
- }
3056
- },
3057
- "additionalProperties": true
3058
- }
3059
- }
3060
- },
3061
- "additionalProperties": true
3062
- },
3063
- "middleware": {
3064
- "type": "object",
3065
- "description": "Framework-specific middleware configuration",
3066
- "properties": {
3067
- "global": {
3068
- "type": "array",
3069
- "items": {
3070
- "type": "string"
3071
- }
3072
- },
3073
- "preHandler": {
3074
- "type": "array",
3075
- "items": {
3076
- "type": "string"
3077
- }
3078
- },
3079
- "postHandler": {
3080
- "type": "array",
3081
- "items": {
3082
- "type": "string"
3083
- }
3084
- },
3085
- "onResponse": {
3086
- "type": "array",
3087
- "items": {
3088
- "type": "string"
3089
- }
3090
- },
3091
- "onError": {
3092
- "type": "array",
3093
- "items": {
3094
- "type": "string"
3095
- }
3096
- }
3097
- },
3098
- "additionalProperties": false
3099
- },
3100
- "interceptors": {
3101
- "type": "object",
3102
- "description": "Framework-specific interceptors",
3103
- "properties": {
3104
- "global": {
3105
- "type": "array",
3106
- "items": {
3107
- "type": "string"
3108
- }
3109
- },
3110
- "controller": {
3111
- "type": "array",
3112
- "items": {
3113
- "type": "string"
3114
- }
3115
- },
3116
- "route": {
3117
- "type": "array",
3118
- "items": {
3119
- "type": "string"
3120
- }
3121
- }
3122
- },
3123
- "additionalProperties": false
3124
- },
3125
- "guards": {
3126
- "type": "array",
3127
- "items": {
3128
- "type": "string"
3129
- },
3130
- "description": "Framework-specific guards"
3131
- },
3132
- "pipes": {
3133
- "type": "array",
3134
- "items": {
3135
- "type": "string"
3136
- },
3137
- "description": "Framework-specific validation pipes"
3138
- },
3139
- "dependencyInjection": {
3140
- "type": "object",
3141
- "description": "DI system configuration",
3142
- "properties": {
3143
- "defaultScope": {
3144
- "type": "string",
3145
- "enum": [
3146
- "singleton",
3147
- "transient",
3148
- "request",
3149
- "session"
3150
- ],
3151
- "default": "singleton"
3152
- },
3153
- "scopeOptions": {
3154
- "type": "array",
3155
- "items": {
3156
- "type": "string"
3157
- }
3158
- }
3159
- },
3160
- "additionalProperties": false
3161
- },
3162
- "lifecycle": {
3163
- "type": "object",
3164
- "description": "Framework-specific lifecycle hook mappings",
3165
- "properties": {
3166
- "mount": {
3167
- "type": "string"
3168
- },
3169
- "unmount": {
3170
- "type": "string"
3171
- },
3172
- "update": {
3173
- "type": "string"
3174
- },
3175
- "beforeUpdate": {
3176
- "type": "string"
3177
- },
3178
- "afterUpdate": {
3179
- "type": "string"
3180
- }
3181
- },
3182
- "additionalProperties": false
3183
- },
3184
- "contentNegotiation": {
3185
- "type": "object",
3186
- "description": "Content type serialization/parsing",
3187
- "properties": {
3188
- "serializers": {
3189
- "type": "array",
3190
- "items": {
3191
- "type": "object",
3192
- "properties": {
3193
- "contentType": {
3194
- "type": "string"
3195
- },
3196
- "handler": {
3197
- "type": "string"
3198
- }
3199
- },
3200
- "required": [
3201
- "contentType",
3202
- "handler"
3203
- ],
3204
- "additionalProperties": false
3205
- }
3206
- },
3207
- "parsers": {
3208
- "type": "array",
3209
- "items": {
3210
- "type": "object",
3211
- "properties": {
3212
- "contentType": {
3213
- "type": "string"
3214
- },
3215
- "handler": {
3216
- "type": "string"
3217
- }
3218
- },
3219
- "required": [
3220
- "contentType",
3221
- "handler"
3222
- ],
3223
- "additionalProperties": false
3224
- }
3225
- }
3226
- },
3227
- "additionalProperties": false
3228
- },
3229
- "eventRouting": {
3230
- "type": "object",
3231
- "description": "Technology-specific event routing",
3232
- "properties": {
3233
- "mechanism": {
3234
- "type": "string",
3235
- "enum": [
3236
- "topic",
3237
- "queue",
3238
- "direct",
3239
- "fanout",
3240
- "partition"
3241
- ]
3242
- },
3243
- "exchangeType": {
3244
- "type": "string"
3245
- },
3246
- "topicStrategy": {
3247
- "type": "string"
3248
- },
3249
- "partitionStrategy": {
3250
- "type": "string",
3251
- "enum": [
3252
- "hash",
3253
- "roundRobin",
3254
- "custom"
3255
- ]
3256
- },
3257
- "routingKeyPattern": {
3258
- "type": "string"
3259
- }
3260
- },
3261
- "additionalProperties": false
3262
- },
3263
- "consumer": {
3264
- "type": "object",
3265
- "description": "Consumer implementation details",
3266
- "properties": {
3267
- "groupIdPattern": {
3268
- "type": "string"
3269
- },
3270
- "queuePattern": {
3271
- "type": "string"
3272
- },
3273
- "autoCommit": {
3274
- "type": "boolean"
3275
- },
3276
- "prefetch": {
3277
- "type": "integer"
3278
- }
3279
- },
3280
- "additionalProperties": false
3281
- },
3282
- "deadLetterQueue": {
3283
- "type": "object",
3284
- "description": "DLQ implementation",
3285
- "properties": {
3286
- "enabled": {
3287
- "type": "boolean",
3288
- "default": false
3289
- },
3290
- "namingPattern": {
3291
- "type": "string"
3292
- },
3293
- "mechanism": {
3294
- "type": "string"
3295
- }
3296
- },
3297
- "additionalProperties": false
3298
- },
3299
- "webhookVerification": {
3300
- "type": "object",
3301
- "description": "Webhook signature verification",
3302
- "properties": {
3303
- "signatureHeader": {
3304
- "type": "string"
3305
- },
3306
- "algorithm": {
3307
- "type": "string",
3308
- "enum": [
3309
- "sha256",
3310
- "sha512",
3311
- "rsa"
3312
- ]
3313
- },
3314
- "verificationMethod": {
3315
- "type": "string",
3316
- "enum": [
3317
- "hmac",
3318
- "rsa",
3319
- "custom"
3320
- ]
3321
- }
3322
- },
3323
- "additionalProperties": false
3324
- },
3325
- "styling": {
3326
- "type": "object",
3327
- "description": "Styling implementation approach",
3328
- "properties": {
3329
- "method": {
3330
- "type": "string",
3331
- "enum": [
3332
- "cssModules",
3333
- "styledComponents",
3334
- "scopedStyles",
3335
- "emotion",
3336
- "tailwind"
3337
- ]
3338
- },
3339
- "fileExtension": {
3340
- "type": "string"
3341
- },
3342
- "classNameStrategy": {
3343
- "type": "string",
3344
- "enum": [
3345
- "camelCase",
3346
- "kebab-case",
3347
- "snake_case"
3348
- ]
3349
- },
3350
- "library": {
3351
- "type": "string"
3352
- },
3353
- "preprocessor": {
3354
- "type": "string",
3355
- "enum": [
3356
- "scss",
3357
- "sass",
3358
- "less",
3359
- "stylus"
3360
- ]
3361
- },
3362
- "scoped": {
3363
- "type": "boolean"
3364
- }
3365
- },
3366
- "additionalProperties": false
3367
- },
3368
- "migrations": {
3369
- "type": "array",
3370
- "description": "Version migration paths",
3371
- "items": {
3372
- "type": "object",
3373
- "properties": {
3374
- "from": {
3375
- "type": "string"
3376
- },
3377
- "to": {
3378
- "type": "string"
3379
- },
3380
- "breaking": {
3381
- "type": "boolean",
3382
- "default": false
3383
- },
3384
- "migrationSteps": {
3385
- "type": "array",
3386
- "items": {
3387
- "type": "object",
3388
- "properties": {
3389
- "step": {
3390
- "type": "string"
3391
- },
3392
- "description": {
3393
- "type": "string"
3394
- },
3395
- "automated": {
3396
- "type": "boolean",
3397
- "default": false
3398
- },
3399
- "command": {
3400
- "type": "string"
3401
- },
3402
- "codemod": {
3403
- "type": "string"
3404
- },
3405
- "documentation": {
3406
- "type": "string"
3407
- },
3408
- "warnings": {
3409
- "type": "array",
3410
- "items": {
3411
- "type": "string"
3412
- }
3413
- }
3414
- },
3415
- "required": [
3416
- "step",
3417
- "description"
3418
- ],
3419
- "additionalProperties": false
3420
- }
3421
- },
3422
- "estimatedDuration": {
3423
- "type": "string"
3424
- },
3425
- "rollbackStrategy": {
3426
- "type": "object",
3427
- "properties": {
3428
- "automatic": {
3429
- "type": "boolean",
3430
- "default": false
3431
- },
3432
- "backupRequired": {
3433
- "type": "boolean",
3434
- "default": false
3435
- }
3436
- },
3437
- "additionalProperties": false
3438
- },
3439
- "deprecations": {
3440
- "type": "array",
3441
- "items": {
3442
- "type": "object",
3443
- "properties": {
3444
- "api": {
3445
- "type": "string"
3446
- },
3447
- "replacement": {
3448
- "type": "string"
3449
- }
3450
- },
3451
- "additionalProperties": false
3452
- }
3453
- }
3454
- },
3455
- "required": [
3456
- "from",
3457
- "to"
3458
- ],
3459
- "additionalProperties": false
3460
- }
3461
- }
3462
- },
3463
- "additionalProperties": false
3464
- },
3465
- "InstanceFactoryRef": {
3466
- "type": "object",
3467
- "properties": {
3468
- "name": {
3469
- "type": "string"
3470
- },
3471
- "source": {
3472
- "type": "string"
3473
- },
3474
- "version": {
3475
- "type": "string"
3476
- },
3477
- "peerDependencies": {
3478
- "type": "array",
3479
- "items": {
3480
- "type": "object",
3481
- "properties": {
3482
- "name": {
3483
- "type": "string"
3484
- },
3485
- "version": {
3486
- "type": "string",
3487
- "description": "Semver range"
3488
- },
3489
- "optional": {
3490
- "type": "boolean",
3491
- "default": false
3492
- }
3493
- },
3494
- "required": [
3495
- "name",
3496
- "version"
3497
- ]
3498
- },
3499
- "additionalProperties": false
3500
- }
3501
- },
3502
- "required": [
3503
- "name",
3504
- "source"
3505
- ],
3506
- "additionalProperties": false
3507
- },
3508
- "ViewComponent": {
3509
- "type": "object",
3510
- "description": "Individual UI component within a view",
3511
- "properties": {
3512
- "type": {
3513
- "anyOf": [
3514
- {
3515
- "type": "string",
3516
- "enum": [
3517
- "table",
3518
- "list",
3519
- "grid",
3520
- "card",
3521
- "chart",
3522
- "tree",
3523
- "timeline",
3524
- "avatar",
3525
- "image",
3526
- "form",
3527
- "input",
3528
- "textarea",
3529
- "select",
3530
- "checkbox",
3531
- "radio",
3532
- "slider",
3533
- "switch",
3534
- "autocomplete",
3535
- "datepicker",
3536
- "timepicker",
3537
- "button",
3538
- "button-group",
3539
- "link",
3540
- "icon",
3541
- "menu",
3542
- "modal",
3543
- "dialog",
3544
- "drawer",
3545
- "popover",
3546
- "tooltip",
3547
- "alert",
3548
- "snackbar",
3549
- "badge",
3550
- "spinner",
3551
- "tabs",
3552
- "breadcrumb",
3553
- "navbar",
3554
- "sidebar",
3555
- "pagination",
3556
- "accordion",
3557
- "carousel",
3558
- "container",
3559
- "divider",
3560
- "header",
3561
- "footer",
3562
- "progress-bar",
3563
- "progress-circle",
3564
- "searchBar",
3565
- "filterPanel"
3566
- ],
3567
- "description": "Standard component types"
3568
- },
3569
- {
3570
- "type": "string",
3571
- "pattern": "^[A-Z][a-zA-Z0-9]*$",
3572
- "description": "Custom component type (PascalCase)"
3573
- },
3574
- {
3575
- "type": "string",
3576
- "pattern": "^[a-z][a-z0-9-]*$",
3577
- "description": "Custom component type (kebab-case)"
3578
- }
3579
- ],
3580
- "description": "Component type identifier"
3581
- },
3582
- "model": {
3583
- "$ref": "#/definitions/TypeReference",
3584
- "description": "Model this component operates on"
3585
- },
3586
- "columns": {
3587
- "type": "array",
3588
- "items": {
3589
- "type": "string"
3590
- },
3591
- "description": "Column names for table/grid components"
3592
- },
3593
- "fields": {
3594
- "type": "array",
3595
- "items": {
3596
- "oneOf": [
3597
- {
3598
- "type": "string"
3599
- },
3600
- {
3601
- "type": "object",
3602
- "properties": {
3603
- "name": {
3604
- "type": "string"
3605
- },
3606
- "label": {
3607
- "type": "string"
3608
- },
3609
- "type": {
3610
- "type": "string"
3611
- },
3612
- "required": {
3613
- "type": "boolean"
3614
- },
3615
- "placeholder": {
3616
- "type": "string"
3617
- }
3618
- },
3619
- "required": [
3620
- "name"
3621
- ]
3622
- }
3623
- ]
3624
- },
3625
- "description": "Form fields or filter fields"
3626
- },
3627
- "chartType": {
3628
- "type": "string",
3629
- "enum": [
3630
- "pie",
3631
- "bar",
3632
- "line",
3633
- "area",
3634
- "scatter",
3635
- "donut"
3636
- ],
3637
- "description": "Chart type for chart components"
3638
- },
3639
- "dataSource": {
3640
- "type": "string",
3641
- "description": "Data source reference (e.g., 'tasks.status', 'events')"
3642
- },
3643
- "source": {
3644
- "type": "string",
3645
- "description": "Source reference for component data"
3646
- },
3647
- "options": {
3648
- "type": "array",
3649
- "items": {
3650
- "oneOf": [
3651
- {
3652
- "type": "string"
3653
- },
3654
- {
3655
- "type": "object",
3656
- "properties": {
3657
- "label": {
3658
- "type": "string"
3659
- },
3660
- "value": {
3661
- "type": "string"
3662
- }
3663
- },
3664
- "required": [
3665
- "label",
3666
- "value"
3667
- ]
3668
- }
3669
- ]
3670
- },
3671
- "description": "Options for select/dropdown components (strings or {label, value} objects)"
3672
- },
3673
- "properties": {
3674
- "type": "object",
3675
- "description": "Component-specific properties",
3676
- "additionalProperties": true
3677
- },
3678
- "events": {
3679
- "type": "object",
3680
- "description": "Event handlers",
3681
- "patternProperties": {
3682
- "^on[A-Z][a-zA-Z0-9]*$": {
3683
- "type": "string",
3684
- "description": "Handler reference (e.g., 'UserController.updateUser')"
3685
- }
3686
- },
3687
- "additionalProperties": false
3688
- },
3689
- "validation": {
3690
- "type": "object",
3691
- "description": "Validation rules for form components",
3692
- "properties": {
3693
- "required": {
3694
- "type": "boolean"
3695
- },
3696
- "pattern": {
3697
- "type": "string"
3698
- },
3699
- "min": {
3700
- "type": "number"
3701
- },
3702
- "max": {
3703
- "type": "number"
3704
- },
3705
- "minLength": {
3706
- "type": "integer"
3707
- },
3708
- "maxLength": {
3709
- "type": "integer"
3710
- }
3711
- }
3712
- }
3713
- },
3714
- "additionalProperties": true
3715
- },
3716
- "StandardLayout": {
3717
- "type": "object",
3718
- "description": "Standard layout patterns",
3719
- "properties": {
3720
- "type": {
3721
- "type": "string",
3722
- "enum": [
3723
- "single-column",
3724
- "two-column",
3725
- "three-column",
3726
- "grid",
3727
- "flex",
3728
- "sidebar-left",
3729
- "sidebar-right",
3730
- "sidebar-both",
3731
- "header-content",
3732
- "header-content-footer",
3733
- "master-detail",
3734
- "split-horizontal",
3735
- "split-vertical"
3736
- ],
3737
- "description": "Layout pattern type"
3738
- },
3739
- "regions": {
3740
- "type": "object",
3741
- "description": "Named layout regions",
3742
- "patternProperties": {
3743
- "^[a-z][a-zA-Z0-9_]*$": {
3744
- "type": "object",
3745
- "properties": {
3746
- "width": {
3747
- "type": "string"
3748
- },
3749
- "minWidth": {
3750
- "type": "string"
3751
- },
3752
- "maxWidth": {
3753
- "type": "string"
3754
- },
3755
- "height": {
3756
- "type": "string"
3757
- },
3758
- "minHeight": {
3759
- "type": "string"
3760
- },
3761
- "maxHeight": {
3762
- "type": "string"
3763
- },
3764
- "flex": {
3765
- "type": "string"
3766
- },
3767
- "order": {
3768
- "type": "integer"
3769
- },
3770
- "align": {
3771
- "type": "string",
3772
- "enum": [
3773
- "start",
3774
- "center",
3775
- "end",
3776
- "stretch"
3777
- ]
3778
- }
3779
- }
3780
- }
3781
- }
3782
- },
3783
- "spacing": {
3784
- "type": "string",
3785
- "description": "Gap between regions"
3786
- },
3787
- "responsive": {
3788
- "type": "object",
3789
- "description": "Responsive breakpoint overrides",
3790
- "properties": {
3791
- "mobile": {
3792
- "type": "object"
3793
- },
3794
- "tablet": {
3795
- "type": "object"
3796
- },
3797
- "desktop": {
3798
- "type": "object"
3799
- }
3800
- }
3801
- }
3802
- },
3803
- "required": [
3804
- "type"
3805
- ]
3806
- },
3807
- "ViewProperties": {
3808
- "type": "object",
3809
- "description": "View-level feature flags and configuration",
3810
- "properties": {
3811
- "responsive": {
3812
- "type": "boolean"
3813
- },
3814
- "authenticated": {
3815
- "type": "boolean"
3816
- },
3817
- "authorized": {
3818
- "type": "boolean"
3819
- },
3820
- "realtime": {
3821
- "type": "boolean"
3822
- },
3823
- "sortable": {
3824
- "type": "boolean"
3825
- },
3826
- "filterable": {
3827
- "type": "boolean"
3828
- },
3829
- "searchable": {
3830
- "type": "boolean"
3831
- },
3832
- "paginated": {
3833
- "type": "boolean"
3834
- },
3835
- "pagination": {
3836
- "type": "boolean"
3837
- },
3838
- "exportable": {
3839
- "type": "boolean"
3840
- },
3841
- "printable": {
3842
- "type": "boolean"
3843
- },
3844
- "bookmarkable": {
3845
- "type": "boolean"
3846
- },
3847
- "cacheable": {
3848
- "type": "boolean"
3849
- },
3850
- "editable": {
3851
- "type": "boolean"
3852
- },
3853
- "refreshInterval": {
3854
- "type": "integer",
3855
- "description": "Auto-refresh interval in milliseconds"
3856
- },
3857
- "theme": {
3858
- "type": "string",
3859
- "enum": [
3860
- "light",
3861
- "dark",
3862
- "auto",
3863
- "system"
3864
- ]
3865
- },
3866
- "locale": {
3867
- "type": "string",
3868
- "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
3869
- }
3870
- },
3871
- "additionalProperties": {
3872
- "oneOf": [
3873
- {
3874
- "type": "boolean"
3875
- },
3876
- {
3877
- "type": "string"
3878
- },
3879
- {
3880
- "type": "number"
3881
- },
3882
- {
3883
- "type": "array"
3884
- },
3885
- {
3886
- "type": "object"
3887
- }
3888
- ]
3889
- }
3890
- },
3891
- "OperationPolicies": {
3892
- "type": "object",
3893
- "description": "Deployment-specific operational policies for an operation",
3894
- "properties": {
3895
- "transactional": {
3896
- "type": "object",
3897
- "description": "Transaction management configuration",
3898
- "properties": {
3899
- "enabled": {
3900
- "type": "boolean",
3901
- "default": false
3902
- },
3903
- "isolation": {
3904
- "type": "string",
3905
- "enum": [
3906
- "READ_UNCOMMITTED",
3907
- "READ_COMMITTED",
3908
- "REPEATABLE_READ",
3909
- "SERIALIZABLE"
3910
- ],
3911
- "default": "READ_COMMITTED",
3912
- "description": "Transaction isolation level"
3913
- },
3914
- "propagation": {
3915
- "type": "string",
3916
- "enum": [
3917
- "REQUIRED",
3918
- "REQUIRES_NEW",
3919
- "SUPPORTS",
3920
- "NOT_SUPPORTED",
3921
- "MANDATORY",
3922
- "NEVER"
3923
- ],
3924
- "default": "REQUIRED",
3925
- "description": "Transaction propagation behavior"
3926
- },
3927
- "timeout": {
3928
- "type": "integer",
3929
- "minimum": 1,
3930
- "description": "Transaction timeout in seconds"
3931
- },
3932
- "readOnly": {
3933
- "type": "boolean",
3934
- "default": false,
3935
- "description": "Mark transaction as read-only for optimization"
3936
- }
3937
- },
3938
- "additionalProperties": false
3939
- },
3940
- "retry": {
3941
- "$ref": "#/definitions/RetryPolicy"
3942
- },
3943
- "circuitBreaker": {
3944
- "$ref": "#/definitions/CircuitBreakerPolicy"
3945
- },
3946
- "idempotency": {
3947
- "type": "object",
3948
- "description": "Idempotency enforcement",
3949
- "properties": {
3950
- "enabled": {
3951
- "type": "boolean",
3952
- "default": false
3953
- },
3954
- "keyField": {
3955
- "type": "string",
3956
- "description": "Parameter field to use as idempotency key"
3957
- },
3958
- "ttlSeconds": {
3959
- "type": "integer",
3960
- "minimum": 1,
3961
- "description": "How long to remember idempotency keys"
3962
- }
3963
- },
3964
- "additionalProperties": false
3965
- },
3966
- "cache": {
3967
- "type": "object",
3968
- "description": "Operation-level caching",
3969
- "properties": {
3970
- "enabled": {
3971
- "type": "boolean",
3972
- "default": false
3973
- },
3974
- "ttlSeconds": {
3975
- "type": "integer",
3976
- "minimum": 1,
3977
- "description": "Cache TTL in seconds"
3978
- },
3979
- "keyFields": {
3980
- "type": "array",
3981
- "items": {
3982
- "type": "string"
3983
- },
3984
- "description": "Parameter fields to include in cache key"
3985
- }
3986
- },
3987
- "additionalProperties": false
3988
- }
3989
- },
3990
- "additionalProperties": false
3991
- },
3992
- "RateLimitPolicy": {
3993
- "type": "object",
3994
- "description": "Rate limiting configuration",
3995
- "properties": {
3996
- "enabled": {
3997
- "type": "boolean",
3998
- "default": false
3999
- },
4000
- "requestsPerMinute": {
4001
- "type": "integer",
4002
- "minimum": 1,
4003
- "description": "Maximum requests per minute"
4004
- },
4005
- "burstSize": {
4006
- "type": "integer",
4007
- "minimum": 1,
4008
- "description": "Burst allowance above rate limit"
4009
- },
4010
- "byIP": {
4011
- "type": "boolean",
4012
- "default": true,
4013
- "description": "Apply limit per IP address"
4014
- },
4015
- "byUser": {
4016
- "type": "boolean",
4017
- "default": false,
4018
- "description": "Apply limit per authenticated user"
4019
- },
4020
- "byApiKey": {
4021
- "type": "boolean",
4022
- "default": false,
4023
- "description": "Apply limit per API key"
4024
- }
4025
- },
4026
- "additionalProperties": false
4027
- },
4028
- "RetryPolicy": {
4029
- "type": "object",
4030
- "description": "Retry policy configuration",
4031
- "properties": {
4032
- "enabled": {
4033
- "type": "boolean",
4034
- "default": false
4035
- },
4036
- "maxAttempts": {
4037
- "type": "integer",
4038
- "minimum": 1,
4039
- "maximum": 10,
4040
- "default": 3,
4041
- "description": "Maximum retry attempts"
4042
- },
4043
- "backoffMs": {
4044
- "type": "integer",
4045
- "minimum": 100,
4046
- "description": "Initial backoff delay in milliseconds"
4047
- },
4048
- "backoffMultiplier": {
4049
- "type": "number",
4050
- "minimum": 1,
4051
- "default": 2,
4052
- "description": "Exponential backoff multiplier"
4053
- },
4054
- "maxBackoffMs": {
4055
- "type": "integer",
4056
- "minimum": 100,
4057
- "description": "Maximum backoff delay"
4058
- },
4059
- "retryableErrors": {
4060
- "type": "array",
4061
- "items": {
4062
- "type": "string"
4063
- },
4064
- "description": "Error types/codes that should trigger retry"
4065
- }
4066
- },
4067
- "additionalProperties": false
4068
- },
4069
- "CircuitBreakerPolicy": {
4070
- "type": "object",
4071
- "description": "Circuit breaker policy configuration",
4072
- "properties": {
4073
- "enabled": {
4074
- "type": "boolean",
4075
- "default": false
4076
- },
4077
- "failureThreshold": {
4078
- "type": "integer",
4079
- "minimum": 1,
4080
- "default": 5,
4081
- "description": "Number of failures before opening circuit"
4082
- },
4083
- "successThreshold": {
4084
- "type": "integer",
4085
- "minimum": 1,
4086
- "default": 2,
4087
- "description": "Number of successes before closing circuit"
4088
- },
4089
- "timeoutMs": {
4090
- "type": "integer",
4091
- "minimum": 100,
4092
- "description": "Operation timeout before considering it a failure"
4093
- },
4094
- "halfOpenAfterMs": {
4095
- "type": "integer",
4096
- "minimum": 1000,
4097
- "default": 60000,
4098
- "description": "Time to wait before attempting half-open state"
4099
- }
4100
- },
4101
- "additionalProperties": false
4102
- },
4103
- "ResourceConfiguration": {
4104
- "type": "object",
4105
- "description": "Resource requests and limits",
4106
- "properties": {
4107
- "requests": {
4108
- "type": "object",
4109
- "description": "Guaranteed resource allocation",
4110
- "properties": {
4111
- "cpu": {
4112
- "type": "string",
4113
- "pattern": "^[0-9]+(m|[0-9]*\\.?[0-9]+)?$",
4114
- "description": "CPU request (e.g., 100m, 0.5, 1)"
4115
- },
4116
- "memory": {
4117
- "type": "string",
4118
- "pattern": "^[0-9]+([KMGT]i?)?$",
4119
- "description": "Memory request (e.g., 128Mi, 1Gi)"
4120
- },
4121
- "ephemeralStorage": {
4122
- "type": "string",
4123
- "pattern": "^[0-9]+([KMGT]i?)?$",
4124
- "description": "Ephemeral storage request"
4125
- }
4126
- },
4127
- "additionalProperties": false
4128
- },
4129
- "limits": {
4130
- "type": "object",
4131
- "description": "Maximum resource allocation",
4132
- "properties": {
4133
- "cpu": {
4134
- "type": "string",
4135
- "pattern": "^[0-9]+(m|[0-9]*\\.?[0-9]+)?$",
4136
- "description": "CPU limit"
4137
- },
4138
- "memory": {
4139
- "type": "string",
4140
- "pattern": "^[0-9]+([KMGT]i?)?$",
4141
- "description": "Memory limit"
4142
- },
4143
- "ephemeralStorage": {
4144
- "type": "string",
4145
- "pattern": "^[0-9]+([KMGT]i?)?$",
4146
- "description": "Ephemeral storage limit"
4147
- }
4148
- },
4149
- "additionalProperties": false
4150
- }
4151
- },
4152
- "additionalProperties": false
4153
- },
4154
- "AutoscalingConfiguration": {
4155
- "type": "object",
4156
- "description": "Horizontal pod autoscaling configuration",
4157
- "properties": {
4158
- "enabled": {
4159
- "type": "boolean",
4160
- "default": false
4161
- },
4162
- "minReplicas": {
4163
- "type": "integer",
4164
- "minimum": 1,
4165
- "default": 1,
4166
- "description": "Minimum number of replicas"
4167
- },
4168
- "maxReplicas": {
4169
- "type": "integer",
4170
- "minimum": 1,
4171
- "default": 10,
4172
- "description": "Maximum number of replicas"
4173
- },
4174
- "targetCPU": {
4175
- "type": "integer",
4176
- "minimum": 1,
4177
- "maximum": 100,
4178
- "description": "Target CPU utilization percentage"
4179
- },
4180
- "targetMemory": {
4181
- "type": "integer",
4182
- "minimum": 1,
4183
- "maximum": 100,
4184
- "description": "Target memory utilization percentage"
4185
- },
4186
- "customMetrics": {
4187
- "type": "array",
4188
- "description": "Custom metrics for scaling",
4189
- "items": {
4190
- "type": "object",
4191
- "properties": {
4192
- "name": {
4193
- "type": "string"
4194
- },
4195
- "type": {
4196
- "type": "string",
4197
- "enum": [
4198
- "pods",
4199
- "object",
4200
- "external"
4201
- ]
4202
- },
4203
- "target": {
4204
- "type": "object",
4205
- "properties": {
4206
- "type": {
4207
- "type": "string",
4208
- "enum": [
4209
- "Utilization",
4210
- "Value",
4211
- "AverageValue"
4212
- ]
4213
- },
4214
- "averageValue": {
4215
- "type": "string"
4216
- },
4217
- "value": {
4218
- "type": "string"
4219
- }
4220
- },
4221
- "additionalProperties": false
4222
- }
4223
- },
4224
- "additionalProperties": false
4225
- }
4226
- },
4227
- "scaleDown": {
4228
- "type": "object",
4229
- "description": "Scale down behavior",
4230
- "properties": {
4231
- "stabilizationWindowSeconds": {
4232
- "type": "integer",
4233
- "minimum": 0,
4234
- "default": 300,
4235
- "description": "Cooldown period before scaling down"
4236
- },
4237
- "selectPolicy": {
4238
- "type": "string",
4239
- "enum": [
4240
- "Max",
4241
- "Min",
4242
- "Disabled"
4243
- ],
4244
- "default": "Max"
4245
- }
4246
- },
4247
- "additionalProperties": false
4248
- },
4249
- "scaleUp": {
4250
- "type": "object",
4251
- "description": "Scale up behavior",
4252
- "properties": {
4253
- "stabilizationWindowSeconds": {
4254
- "type": "integer",
4255
- "minimum": 0,
4256
- "default": 0
4257
- },
4258
- "selectPolicy": {
4259
- "type": "string",
4260
- "enum": [
4261
- "Max",
4262
- "Min",
4263
- "Disabled"
4264
- ],
4265
- "default": "Max"
4266
- }
4267
- },
4268
- "additionalProperties": false
4269
- }
4270
- },
4271
- "additionalProperties": false
4272
- }
4273
- },
4274
- "_vscodeCompatibility": {
4275
- "convertedFrom": "draft/2020-12",
4276
- "convertedTo": "draft-07",
4277
- "originalSchema": "SPECVERSE-SCHEMA.json"
4278
- }
4279
- }