@specverse/engines 5.0.2 → 5.1.0

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 (57) hide show
  1. package/dist/ai/commands/fill.d.ts.map +1 -1
  2. package/dist/ai/commands/fill.js +16 -7
  3. package/dist/ai/commands/fill.js.map +1 -1
  4. package/dist/ai/commands/template.d.ts.map +1 -1
  5. package/dist/ai/commands/template.js +17 -8
  6. package/dist/ai/commands/template.js.map +1 -1
  7. package/dist/bundles/deriveCatalog.d.ts +18 -0
  8. package/dist/bundles/deriveCatalog.d.ts.map +1 -0
  9. package/dist/bundles/deriveCatalog.js +263 -0
  10. package/dist/bundles/deriveCatalog.js.map +1 -0
  11. package/dist/bundles/index.d.ts +15 -0
  12. package/dist/bundles/index.d.ts.map +1 -0
  13. package/dist/bundles/index.js +15 -0
  14. package/dist/bundles/index.js.map +1 -0
  15. package/dist/bundles/types.d.ts +53 -0
  16. package/dist/bundles/types.d.ts.map +1 -0
  17. package/dist/bundles/types.js +22 -0
  18. package/dist/bundles/types.js.map +1 -0
  19. package/dist/bundles/validate.d.ts +55 -0
  20. package/dist/bundles/validate.d.ts.map +1 -0
  21. package/dist/bundles/validate.js +471 -0
  22. package/dist/bundles/validate.js.map +1 -0
  23. package/dist/inference/quint-transpiler.js +2 -2
  24. package/dist/inference/quint-transpiler.js.map +1 -1
  25. package/dist/libs/instance-factories/applications/templates/react/runtime-package-json-generator.js +1 -1
  26. package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +43 -0
  27. package/dist/libs/instance-factories/tools/templates/mcp/mcp-server-generator.js +11 -4
  28. package/libs/instance-factories/applications/templates/react/runtime-package-json-generator.ts +1 -1
  29. package/libs/instance-factories/cli/templates/commander/command-generator.ts +43 -0
  30. package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +10 -3
  31. package/package.json +9 -5
  32. package/assets/examples/09-api/ai-spec.yaml +0 -194
  33. package/assets/examples/09-api/converted.yaml +0 -95
  34. package/assets/examples/09-api/diagram-architecture.mmd +0 -10
  35. package/assets/examples/09-api/diagram-er.mmd +0 -10
  36. package/assets/examples/09-api/documentation.html +0 -104
  37. package/assets/examples/09-api/documentation.md +0 -95
  38. package/assets/examples/09-api/inferred-spec.yaml +0 -420
  39. package/assets/examples/09-api/openapi.json +0 -61
  40. package/assets/examples/10-api/README.md +0 -216
  41. package/assets/examples/10-api/ai-spec.yaml +0 -194
  42. package/assets/examples/10-api/converted.yaml +0 -96
  43. package/assets/examples/10-api/diagram-architecture.mmd +0 -10
  44. package/assets/examples/10-api/diagram-er.mmd +0 -10
  45. package/assets/examples/10-api/documentation.html +0 -104
  46. package/assets/examples/10-api/documentation.md +0 -95
  47. package/assets/examples/10-api/inferred-spec.yaml +0 -7
  48. package/assets/examples/10-api/metadata.yaml +0 -89
  49. package/assets/examples/10-api/openapi.json +0 -61
  50. package/assets/examples/10-api/package-integration-test.js +0 -177
  51. package/assets/examples/10-api/usage-example.js +0 -323
  52. package/assets/examples/10-api/usage-example.ts +0 -363
  53. package/assets/examples/10-api/workflow-test.js +0 -113
  54. package/assets/examples/validate-examples-with-expected-failures.cjs +0 -328
  55. package/assets/examples/validate-examples.cjs +0 -225
  56. package/assets/prompts/MOVED.md +0 -35
  57. package/assets/prompts/SUMMARY-v8-PROMOTION.md +0 -445
@@ -1,10 +0,0 @@
1
- graph TB
2
- subgraph "Client Layer"
3
- end
4
- subgraph "Controller Layer"
5
- end
6
- subgraph "Service Layer"
7
- end
8
- subgraph "Model Layer"
9
- Product[(Product)]
10
- end
@@ -1,10 +0,0 @@
1
- erDiagram
2
- Product {
3
- uuid id "NOT NULL"
4
- string name "NOT NULL"
5
- string summary
6
- string price "NOT NULL"
7
- boolean inStock
8
- string category "NOT NULL"
9
- string contactEmail
10
- }
@@ -1,104 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>SpecVerseFundamentals Documentation</title>
7
- <style>
8
- body {
9
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, sans-serif;
10
- line-height: 1.6;
11
- color: #333;
12
- max-width: 900px;
13
- margin: 0 auto;
14
- padding: 20px;
15
- }
16
- h1, h2, h3, h4, h5 {
17
- color: #2c3e50;
18
- margin-top: 1.5em;
19
- }
20
- h1 { border-bottom: 2px solid #3498db; padding-bottom: 0.3em; }
21
- h2 { border-bottom: 1px solid #ecf0f1; padding-bottom: 0.2em; }
22
- table {
23
- border-collapse: collapse;
24
- width: 100%;
25
- margin: 1em 0;
26
- }
27
- th, td {
28
- border: 1px solid #ddd;
29
- padding: 8px;
30
- text-align: left;
31
- }
32
- th {
33
- background-color: #f8f9fa;
34
- font-weight: bold;
35
- }
36
- code {
37
- background-color: #f4f4f4;
38
- padding: 2px 4px;
39
- border-radius: 3px;
40
- font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
41
- }
42
- pre {
43
- background-color: #f4f4f4;
44
- padding: 1em;
45
- border-radius: 5px;
46
- overflow-x: auto;
47
- }
48
- .toc {
49
- background-color: #f8f9fa;
50
- padding: 1em;
51
- border-radius: 5px;
52
- margin: 1em 0;
53
- }
54
- .toc ul {
55
- list-style-type: none;
56
- padding-left: 1em;
57
- }
58
- .toc a {
59
- text-decoration: none;
60
- color: #3498db;
61
- }
62
- .toc a:hover {
63
- text-decoration: underline;
64
- }
65
- hr {
66
- border: none;
67
- border-top: 1px solid #ecf0f1;
68
- margin: 2em 0;
69
- }
70
- </style>
71
- </head>
72
- <body>
73
- <h1>SpecVerseFundamentals</h1><p>Example 01-01: Basic model definition with attributes</p><p><strong>Version:</strong> 1.0.0
74
- <strong>Generated:</strong> 2025-09-29T17:21:55.606Z</p><h2>Table of Contents</h2><ul><li><a href="#overview">Overview</a></li>
75
- <li><a href="#models">Models</a></li>
76
- - <a href="#product">Product</a></p><h2>Overview</h2><h3>Component Statistics</h3><p><tr><td>Component Type</td><td>Count</td></tr>
77
-
78
- <tr><td>Models</td><td>1</td></tr>
79
- <tr><td>Controllers</td><td>0</td></tr>
80
- <tr><td>Services</td><td>0</td></tr>
81
- <tr><td>Views</td><td>0</td></tr>
82
- <tr><td>Events</td><td>0</td></tr></p><h3>Imports</h3><p>
83
- <h3>Exports</h3><p><strong>SpecVerseFundamentals:</strong>
84
- <li><strong>models:</strong> Product</li></ul><h2>Models</h2><h3>Product</h3><p>Simple product with basic attributes</p><h4>Attributes</h4><p><tr><td>Name</td><td>Type</td><td>Required</td><td>Unique</td><td>Description</td></tr>
85
-
86
- <tr><td>id</td><td>UUID</td><td>✓</td></tr>
87
- <tr><td>name</td><td>String</td><td>✓</td></tr>
88
- <tr><td>summary</td><td>String</td></tr>
89
- <tr><td>price</td><td>Money</td><td>✓</td></tr>
90
- <tr><td>inStock</td><td>Boolean</td><td>Default: true</td></tr>
91
- <tr><td>category</td><td>String</td><td>✓</td></tr>
92
- <tr><td>contactEmail</td><td>Email</td></tr></p><h4>Behaviors</h4><h5>attachProfile</h5><p>Attach a profile to this model instance</p><p><strong>Parameters:</strong>
93
- <li><code>profileName</code>: String (required)</li></ul><p><strong>Returns:</strong> Boolean</p><p><strong>Preconditions:</strong>
94
- <li>Profile exists and is compatible with this model</li></ul><p><strong>Postconditions:</strong>
95
- <li>Profile is attached</li>
96
- <li>Profile attributes are available</li></ul><h5>detachProfile</h5><p>Detach a profile from this model instance</p><p><strong>Parameters:</strong>
97
- <li><code>profileName</code>: String (required)</li></ul><p><strong>Returns:</strong> Boolean</p><p><strong>Preconditions:</strong>
98
- <li>Profile is currently attached</li></ul><p><strong>Postconditions:</strong>
99
- <li>Profile is detached</li>
100
- <li>Profile attributes are no longer available</li></ul><h5>hasProfile</h5><p>Check if a profile is attached to this model instance</p><p><strong>Parameters:</strong>
101
- <li><code>profileName</code>: String (required)</li></ul><p><strong>Returns:</strong> Boolean</p><p>---
102
- </p>
103
- </body>
104
- </html>
@@ -1,95 +0,0 @@
1
- # SpecVerseFundamentals
2
-
3
- Example 01-01: Basic model definition with attributes
4
-
5
- **Version:** 1.0.0
6
- **Generated:** 2025-09-29T17:21:55.605Z
7
-
8
- ## Table of Contents
9
-
10
- - [Overview](#overview)
11
- - [Models](#models)
12
- - [Product](#product)
13
-
14
- ## Overview
15
-
16
- ### Component Statistics
17
-
18
- | Component Type | Count |
19
- |----------------|-------|
20
- | Models | 1 |
21
- | Controllers | 0 |
22
- | Services | 0 |
23
- | Views | 0 |
24
- | Events | 0 |
25
-
26
- ### Imports
27
-
28
-
29
- ### Exports
30
-
31
- **SpecVerseFundamentals:**
32
- - **models:** Product
33
-
34
- ## Models
35
-
36
- ### Product
37
-
38
- Simple product with basic attributes
39
-
40
- #### Attributes
41
-
42
- | Name | Type | Required | Unique | Description |
43
- |------|------|----------|--------|-------------|
44
- | id | UUID | ✓ | | |
45
- | name | String | ✓ | | |
46
- | summary | String | | | |
47
- | price | Money | ✓ | | |
48
- | inStock | Boolean | | | Default: true |
49
- | category | String | ✓ | | |
50
- | contactEmail | Email | | | |
51
-
52
- #### Behaviors
53
-
54
- ##### attachProfile
55
-
56
- Attach a profile to this model instance
57
-
58
- **Parameters:**
59
- - `profileName`: String (required)
60
-
61
- **Returns:** Boolean
62
-
63
- **Preconditions:**
64
- - Profile exists and is compatible with this model
65
-
66
- **Postconditions:**
67
- - Profile is attached
68
- - Profile attributes are available
69
-
70
- ##### detachProfile
71
-
72
- Detach a profile from this model instance
73
-
74
- **Parameters:**
75
- - `profileName`: String (required)
76
-
77
- **Returns:** Boolean
78
-
79
- **Preconditions:**
80
- - Profile is currently attached
81
-
82
- **Postconditions:**
83
- - Profile is detached
84
- - Profile attributes are no longer available
85
-
86
- ##### hasProfile
87
-
88
- Check if a profile is attached to this model instance
89
-
90
- **Parameters:**
91
- - `profileName`: String (required)
92
-
93
- **Returns:** Boolean
94
-
95
- ---
@@ -1,420 +0,0 @@
1
- name: GeneratedComponent
2
- version: 3.1.0
3
- description: Auto-generated component with 1 models
4
- controllers:
5
- ProductController:
6
- model: Product
7
- description: Auto-generated CURED controller for Product
8
- cured:
9
- create:
10
- parameters:
11
- data: Product required
12
- returns: Product
13
- requires:
14
- - Product data is valid
15
- - id is not empty
16
- - name is not empty
17
- - price is not empty
18
- - category is not empty
19
- ensures:
20
- - Product created with unique ID
21
- - Product persisted to storage
22
- publishes:
23
- - ProductCreated
24
- retrieve:
25
- parameters:
26
- id: UUID required
27
- returns: Product
28
- requires:
29
- - Product with ID exists
30
- ensures:
31
- - Returns complete Product details
32
- retrieve_many:
33
- parameters:
34
- filters: ProductFilter optional
35
- limit: Integer default=20
36
- offset: Integer default=0
37
- returns: Array[Product]
38
- ensures:
39
- - Returns paginated list of Products
40
- - Applies filters if specified
41
- update:
42
- parameters:
43
- id: UUID required
44
- updates: Object required
45
- returns: Product
46
- requires:
47
- - Product with ID exists
48
- - Update data is valid
49
- ensures:
50
- - Product attributes updated
51
- - Version number incremented
52
- publishes:
53
- - ProductUpdated
54
- destroy:
55
- parameters:
56
- id: UUID required
57
- soft: Boolean default=true
58
- returns: Boolean
59
- requires:
60
- - Product with ID exists
61
- ensures:
62
- - Product marked as deleted
63
- publishes:
64
- - ProductDeleted
65
- services:
66
- ProductProcessingService:
67
- description: Handles complex business logic and processing for Product
68
- subscribes_to:
69
- ProductCreated: handleProductCreation
70
- ProductUpdated: handleProductUpdate
71
- operations:
72
- handleProductCreation:
73
- parameters:
74
- event: ProductCreatedEvent required
75
- returns: Void
76
- requires:
77
- - Event data is valid
78
- ensures:
79
- - Product creation processing completed
80
- - Related systems notified
81
- handleProductUpdate:
82
- parameters:
83
- event: ProductUpdatedEvent required
84
- returns: Void
85
- requires:
86
- - Event data is valid
87
- ensures:
88
- - Product update processing completed
89
- - Change propagated to dependent systems
90
- validateProduct:
91
- parameters:
92
- data: Product required
93
- validationContext: Object optional
94
- returns: ValidationResult
95
- requires:
96
- - Product data is provided
97
- ensures:
98
- - Complete validation performed
99
- - Business rules checked
100
- processProductBusinessRules:
101
- parameters:
102
- id: UUID required
103
- ruleContext: Object required
104
- returns: BusinessRuleResult
105
- requires:
106
- - Product exists
107
- - Rule context is valid
108
- ensures:
109
- - All applicable business rules processed
110
- - Results documented
111
- NotificationService:
112
- description: Handles notifications for all model events
113
- subscribes_to:
114
- ProductCreated: handleCreationNotification
115
- ProductUpdated: handleUpdateNotification
116
- ProductDeleted: handleDeletionNotification
117
- operations:
118
- sendNotification:
119
- description: Send notification for an event
120
- parameters:
121
- eventType: String required
122
- eventData: Object required
123
- recipients: Array required
124
- returns: Boolean
125
- ensures:
126
- - Notification sent to all recipients
127
- sendEmail:
128
- description: Send email notification
129
- parameters:
130
- to: String required
131
- subject: String required
132
- body: String required
133
- returns: Boolean
134
- ensures:
135
- - Email sent successfully
136
- AuditService:
137
- description: Tracks all model changes for audit purposes
138
- subscribes_to:
139
- ProductCreated: recordCreation
140
- ProductUpdated: recordUpdate
141
- ProductDeleted: recordDeletion
142
- operations:
143
- recordChange:
144
- description: Record a model change for audit
145
- parameters:
146
- entityType: String required
147
- entityId: UUID required
148
- changeType: String required
149
- oldValues: Object optional
150
- newValues: Object optional
151
- userId: UUID required
152
- returns: AuditRecord
153
- ensures:
154
- - Change recorded in audit log
155
- getAuditHistory:
156
- description: Get audit history for an entity
157
- parameters:
158
- entityType: String required
159
- entityId: UUID required
160
- limit: Integer default=50
161
- returns: Array[AuditRecord]
162
- ensures:
163
- - Returns chronological audit history
164
- events:
165
- ProductCreated:
166
- description: Product was created
167
- attributes:
168
- id: UUID required
169
- timestamp: DateTime required
170
- createdBy: UUID required
171
- version: Integer default=1
172
- name: String required
173
- ProductUpdated:
174
- description: Product was updated
175
- attributes:
176
- id: UUID required
177
- changedFields: Array required
178
- previousValues: Object optional
179
- newValues: Object required
180
- timestamp: DateTime required
181
- updatedBy: UUID required
182
- version: Integer required
183
- name: String optional
184
- ProductDeleted:
185
- description: Product was deleted
186
- attributes:
187
- id: UUID required
188
- deletedBy: UUID required
189
- timestamp: DateTime required
190
- soft: Boolean default=true
191
- reason: String optional
192
- name: String optional
193
- views:
194
- ProductListView:
195
- type: list
196
- model: Product
197
- description: List view for Products with filtering and pagination
198
- subscribes_to:
199
- - ProductCreated
200
- - ProductUpdated
201
- - ProductDeleted
202
- components:
203
- searchBar:
204
- type: SearchInput
205
- properties:
206
- placeholder: Search products...
207
- debounce: 300
208
- filters:
209
- type: FilterPanel
210
- properties:
211
- model: Product
212
- filterFields:
213
- - name
214
- - summary
215
- - inStock
216
- - category
217
- productList:
218
- type: List
219
- properties:
220
- model: Product
221
- itemTemplate: ProductCard
222
- pagination: true
223
- sortable: true
224
- selectable: true
225
- actionToolbar:
226
- type: ActionToolbar
227
- properties:
228
- actions:
229
- - name: create
230
- label: Create Product
231
- icon: plus
232
- - name: delete
233
- label: Delete Selected
234
- icon: trash
235
- bulk: true
236
- - name: export
237
- label: Export
238
- icon: download
239
- ProductDetailView:
240
- type: detail
241
- model: Product
242
- description: Detailed view for a single Product with related data
243
- subscribes_to:
244
- - ProductUpdated
245
- components:
246
- detailHeader:
247
- type: DetailHeader
248
- properties:
249
- model: Product
250
- showBreadcrumb: true
251
- actions:
252
- - name: edit
253
- label: Edit
254
- icon: edit
255
- - name: delete
256
- label: Delete
257
- icon: trash
258
- detailsPanel:
259
- type: DetailsPanel
260
- properties:
261
- model: Product
262
- layout: card
263
- showMetadata: true
264
- ProductFormView:
265
- type: form
266
- model: Product
267
- description: Form view for creating and editing Product
268
- subscribes_to:
269
- - ProductCreated
270
- - ProductUpdated
271
- components:
272
- formHeader:
273
- type: FormHeader
274
- properties:
275
- model: Product
276
- showProgress: true
277
- basic informationSection:
278
- type: FormSection
279
- properties:
280
- title: Basic Information
281
- fields:
282
- - name: id
283
- type: TextInput
284
- label: Id
285
- required: true
286
- - name: name
287
- type: TextInput
288
- label: Name
289
- required: true
290
- additional detailsSection:
291
- type: FormSection
292
- properties:
293
- title: Additional Details
294
- fields:
295
- - name: summary
296
- type: TextInput
297
- label: Summary
298
- required: false
299
- - name: price
300
- type: CurrencyInput
301
- label: Price
302
- required: true
303
- - name: inStock
304
- type: Checkbox
305
- label: In Stock
306
- required: false
307
- - name: category
308
- type: TextInput
309
- label: Category
310
- required: true
311
- - name: contactEmail
312
- type: EmailInput
313
- label: Contact Email
314
- required: false
315
- formControls:
316
- type: FormControls
317
- properties:
318
- submitLabel: Save Product
319
- cancelLabel: Cancel
320
- showValidation: true
321
- ProductEnhancedListView:
322
- type: list
323
- model: Product
324
- description: Enhanced list view for Product with advanced filtering
325
- subscribes_to:
326
- - ProductCreated
327
- - ProductUpdated
328
- - ProductDeleted
329
- components:
330
- advancedSearch:
331
- type: AdvancedSearchInput
332
- properties:
333
- placeholder: Search Products...
334
- debounce: 300
335
- enableSuggestions: true
336
- advancedFilters:
337
- type: FilterPanel
338
- properties:
339
- model: Product
340
- collapsible: true
341
- productTable:
342
- type: DataTable
343
- properties:
344
- model: Product
345
- pagination:
346
- enabled: true
347
- pageSize: 25
348
- showSizeSelector: true
349
- selection:
350
- enabled: true
351
- multiSelect: true
352
- sorting:
353
- enabled: true
354
- multiColumn: true
355
- ProductAnalyticsView:
356
- type: dashboard
357
- model: Product
358
- description: Analytics and reporting dashboard for Product
359
- subscribes_to:
360
- - ProductCreated
361
- - ProductUpdated
362
- - ProductDeleted
363
- components:
364
- keyMetrics:
365
- type: MetricsSummary
366
- properties:
367
- title: Product Key Metrics
368
- refreshInterval: 300000
369
- trendsChart:
370
- type: TimeSeriesChart
371
- properties:
372
- title: Product Trends Over Time
373
- chartType: line
374
- dateRange: last30Days
375
- models:
376
- Product:
377
- description: Auto-generated model specification for Product
378
- attributes:
379
- id: UUID required
380
- name: String required
381
- summary: String
382
- price: Money required
383
- inStock: Boolean default=true
384
- category: String required
385
- contactEmail: Email
386
- relationships: {}
387
- commonDefinitions:
388
- ProductCreateRequest:
389
- type: object
390
- description: Request to create Product
391
- properties:
392
- name: String required
393
- summary: String
394
- price: Money required
395
- inStock: Boolean default=true
396
- category: String required
397
- contactEmail: Email
398
- ProductUpdateRequest:
399
- type: object
400
- description: Request to update Product
401
- properties:
402
- id: UUID required
403
- name: String
404
- summary: String
405
- price: Money
406
- inStock: Boolean default=true
407
- category: String
408
- contactEmail: Email
409
- ProductFilter:
410
- type: object
411
- description: Filter criteria for Product listings
412
- properties:
413
- id: UUID optional
414
- nameContains: String optional
415
- summaryContains: String optional
416
- priceMin: Money optional
417
- priceMax: Money optional
418
- inStock: Boolean optional
419
- categoryContains: String optional
420
- contactEmail: Email optional
@@ -1,61 +0,0 @@
1
- {
2
- "openapi": "3.0.3",
3
- "info": {
4
- "title": "SpecVerseFundamentals",
5
- "description": "Example 01-01: Basic model definition with attributes",
6
- "version": "1.0.0"
7
- },
8
- "servers": [
9
- {
10
- "url": "https://api.example.com"
11
- }
12
- ],
13
- "paths": {},
14
- "components": {
15
- "schemas": {
16
- "Product": {
17
- "type": "object",
18
- "description": "Simple product with basic attributes",
19
- "properties": {
20
- "id": {
21
- "type": "string",
22
- "description": ""
23
- },
24
- "name": {
25
- "type": "string",
26
- "description": ""
27
- },
28
- "summary": {
29
- "type": "string",
30
- "description": ""
31
- },
32
- "price": {
33
- "type": "string",
34
- "description": ""
35
- },
36
- "inStock": {
37
- "type": "boolean",
38
- "description": "Default: true",
39
- "default": "true"
40
- },
41
- "category": {
42
- "type": "string",
43
- "description": ""
44
- },
45
- "contactEmail": {
46
- "type": "string",
47
- "description": ""
48
- }
49
- },
50
- "required": [
51
- "id",
52
- "name",
53
- "price",
54
- "category"
55
- ]
56
- }
57
- },
58
- "responses": {},
59
- "parameters": {}
60
- }
61
- }