@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.
- package/dist/ai/commands/fill.d.ts.map +1 -1
- package/dist/ai/commands/fill.js +16 -7
- package/dist/ai/commands/fill.js.map +1 -1
- package/dist/ai/commands/template.d.ts.map +1 -1
- package/dist/ai/commands/template.js +17 -8
- package/dist/ai/commands/template.js.map +1 -1
- package/dist/bundles/deriveCatalog.d.ts +18 -0
- package/dist/bundles/deriveCatalog.d.ts.map +1 -0
- package/dist/bundles/deriveCatalog.js +263 -0
- package/dist/bundles/deriveCatalog.js.map +1 -0
- package/dist/bundles/index.d.ts +15 -0
- package/dist/bundles/index.d.ts.map +1 -0
- package/dist/bundles/index.js +15 -0
- package/dist/bundles/index.js.map +1 -0
- package/dist/bundles/types.d.ts +53 -0
- package/dist/bundles/types.d.ts.map +1 -0
- package/dist/bundles/types.js +22 -0
- package/dist/bundles/types.js.map +1 -0
- package/dist/bundles/validate.d.ts +55 -0
- package/dist/bundles/validate.d.ts.map +1 -0
- package/dist/bundles/validate.js +471 -0
- package/dist/bundles/validate.js.map +1 -0
- package/dist/inference/quint-transpiler.js +2 -2
- package/dist/inference/quint-transpiler.js.map +1 -1
- package/dist/libs/instance-factories/applications/templates/react/runtime-package-json-generator.js +1 -1
- package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +43 -0
- package/dist/libs/instance-factories/tools/templates/mcp/mcp-server-generator.js +11 -4
- package/libs/instance-factories/applications/templates/react/runtime-package-json-generator.ts +1 -1
- package/libs/instance-factories/cli/templates/commander/command-generator.ts +43 -0
- package/libs/instance-factories/tools/templates/mcp/mcp-server-generator.ts +10 -3
- package/package.json +9 -5
- package/assets/examples/09-api/ai-spec.yaml +0 -194
- package/assets/examples/09-api/converted.yaml +0 -95
- package/assets/examples/09-api/diagram-architecture.mmd +0 -10
- package/assets/examples/09-api/diagram-er.mmd +0 -10
- package/assets/examples/09-api/documentation.html +0 -104
- package/assets/examples/09-api/documentation.md +0 -95
- package/assets/examples/09-api/inferred-spec.yaml +0 -420
- package/assets/examples/09-api/openapi.json +0 -61
- package/assets/examples/10-api/README.md +0 -216
- package/assets/examples/10-api/ai-spec.yaml +0 -194
- package/assets/examples/10-api/converted.yaml +0 -96
- package/assets/examples/10-api/diagram-architecture.mmd +0 -10
- package/assets/examples/10-api/diagram-er.mmd +0 -10
- package/assets/examples/10-api/documentation.html +0 -104
- package/assets/examples/10-api/documentation.md +0 -95
- package/assets/examples/10-api/inferred-spec.yaml +0 -7
- package/assets/examples/10-api/metadata.yaml +0 -89
- package/assets/examples/10-api/openapi.json +0 -61
- package/assets/examples/10-api/package-integration-test.js +0 -177
- package/assets/examples/10-api/usage-example.js +0 -323
- package/assets/examples/10-api/usage-example.ts +0 -363
- package/assets/examples/10-api/workflow-test.js +0 -113
- package/assets/examples/validate-examples-with-expected-failures.cjs +0 -328
- package/assets/examples/validate-examples.cjs +0 -225
- package/assets/prompts/MOVED.md +0 -35
- package/assets/prompts/SUMMARY-v8-PROMOTION.md +0 -445
|
@@ -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
|
-
}
|