@auto-engineer/narrative 0.14.0 → 0.16.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/.turbo/turbo-build.log +9 -10
- package/CHANGELOG.md +26 -0
- package/README.md +151 -99
- package/dist/src/commands/export-schema.d.ts.map +1 -1
- package/dist/src/commands/export-schema.js +5 -1
- package/dist/src/commands/export-schema.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +5 -4
- package/src/commands/export-schema.ts +5 -1
- package/tsconfig.json +1 -1
- package/dist/src/fluent-builder.specs.d.ts +0 -2
- package/dist/src/fluent-builder.specs.d.ts.map +0 -1
- package/dist/src/fluent-builder.specs.js +0 -28
- package/dist/src/fluent-builder.specs.js.map +0 -1
- package/dist/src/getNarratives.cache.specs.d.ts +0 -2
- package/dist/src/getNarratives.cache.specs.d.ts.map +0 -1
- package/dist/src/getNarratives.cache.specs.js +0 -234
- package/dist/src/getNarratives.cache.specs.js.map +0 -1
- package/dist/src/getNarratives.specs.d.ts +0 -2
- package/dist/src/getNarratives.specs.d.ts.map +0 -1
- package/dist/src/getNarratives.specs.js +0 -1307
- package/dist/src/getNarratives.specs.js.map +0 -1
- package/dist/src/id/addAutoIds.specs.d.ts +0 -2
- package/dist/src/id/addAutoIds.specs.d.ts.map +0 -1
- package/dist/src/id/addAutoIds.specs.js +0 -602
- package/dist/src/id/addAutoIds.specs.js.map +0 -1
- package/dist/src/id/hasAllIds.specs.d.ts +0 -2
- package/dist/src/id/hasAllIds.specs.d.ts.map +0 -1
- package/dist/src/id/hasAllIds.specs.js +0 -424
- package/dist/src/id/hasAllIds.specs.js.map +0 -1
- package/dist/src/model-to-narrative.specs.d.ts +0 -2
- package/dist/src/model-to-narrative.specs.d.ts.map +0 -1
- package/dist/src/model-to-narrative.specs.js +0 -2437
- package/dist/src/model-to-narrative.specs.js.map +0 -1
- package/dist/src/narrative-context.specs.d.ts +0 -2
- package/dist/src/narrative-context.specs.d.ts.map +0 -1
- package/dist/src/narrative-context.specs.js +0 -260
- package/dist/src/narrative-context.specs.js.map +0 -1
- package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts +0 -2
- package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts.map +0 -1
- package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js +0 -142
- package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js.map +0 -1
- package/dist/src/transformers/narrative-to-model/type-inference.specs.d.ts +0 -2
- package/dist/src/transformers/narrative-to-model/type-inference.specs.d.ts.map +0 -1
- package/dist/src/transformers/narrative-to-model/type-inference.specs.js +0 -177
- package/dist/src/transformers/narrative-to-model/type-inference.specs.js.map +0 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
>
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
Running:
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
Build completed successfully
|
|
1
|
+
|
|
2
|
+
> @auto-engineer/narrative@0.16.0 build /home/runner/work/auto-engineer/auto-engineer/packages/narrative
|
|
3
|
+
> tsx scripts/build.ts
|
|
4
|
+
|
|
5
|
+
Running: tsc
|
|
6
|
+
Running: tsx ../../scripts/fix-esm-imports.ts
|
|
7
|
+
Fixed ESM imports in dist/
|
|
8
|
+
No templates directory found, skipping template copying
|
|
9
|
+
Build completed successfully
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @auto-engineer/flow
|
|
2
2
|
|
|
3
|
+
## 0.16.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Adds new endpoints for on.auto
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- Updated dependencies []:
|
|
12
|
+
- @auto-engineer/file-store@0.16.0
|
|
13
|
+
- @auto-engineer/id@0.16.0
|
|
14
|
+
- @auto-engineer/message-bus@0.16.0
|
|
15
|
+
|
|
16
|
+
## 0.15.0
|
|
17
|
+
|
|
18
|
+
### Minor Changes
|
|
19
|
+
|
|
20
|
+
- version bump
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies []:
|
|
25
|
+
- @auto-engineer/message-bus@0.15.0
|
|
26
|
+
- @auto-engineer/file-store@0.15.0
|
|
27
|
+
- @auto-engineer/id@0.15.0
|
|
28
|
+
|
|
3
29
|
## 0.14.0
|
|
4
30
|
|
|
5
31
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,141 +1,193 @@
|
|
|
1
|
-
# @auto-engineer/
|
|
1
|
+
# @auto-engineer/narrative
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
TypeScript DSL for defining business narratives using BDD patterns with Given/When/Then syntax.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
## Purpose
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
npm install -g @auto-engineer/cli
|
|
11
|
-
npm install @auto-engineer/flow
|
|
12
|
-
```
|
|
9
|
+
Without `@auto-engineer/narrative`, you would have to manually structure behavioral specifications, write boilerplate for command/query definitions, and handle the conversion between specification code and JSON models.
|
|
13
10
|
|
|
14
|
-
|
|
11
|
+
This package enables developers to express system behavior through narratives containing slices (commands, queries, reactions, experiences). Each slice supports client and server specifications using Gherkin-style Given/When/Then syntax.
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
---
|
|
17
14
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
// ... other plugins
|
|
23
|
-
],
|
|
24
|
-
};
|
|
15
|
+
## Installation
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
pnpm add @auto-engineer/narrative
|
|
25
19
|
```
|
|
26
20
|
|
|
27
|
-
##
|
|
21
|
+
## Quick Start
|
|
28
22
|
|
|
29
|
-
|
|
23
|
+
```typescript
|
|
24
|
+
import { flow, command, specs, rule, example, type Event, type Command } from '@auto-engineer/narrative';
|
|
25
|
+
|
|
26
|
+
type OrderPlaced = Event<'OrderPlaced', { orderId: string }>;
|
|
27
|
+
type PlaceOrder = Command<'PlaceOrder', { productId: string }>;
|
|
28
|
+
|
|
29
|
+
flow('Orders', () => {
|
|
30
|
+
command('Place order')
|
|
31
|
+
.server(() => {
|
|
32
|
+
specs('Order placement', () => {
|
|
33
|
+
rule('Valid orders are processed', () => {
|
|
34
|
+
example('User places order')
|
|
35
|
+
.when<PlaceOrder>({ productId: 'p-001' })
|
|
36
|
+
.then<OrderPlaced>({ orderId: 'o-001' });
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
```
|
|
30
42
|
|
|
31
|
-
|
|
32
|
-
- `export:schema` - Export flow schema to JSON
|
|
43
|
+
---
|
|
33
44
|
|
|
34
|
-
##
|
|
45
|
+
## How-to Guides
|
|
35
46
|
|
|
36
|
-
|
|
47
|
+
### Define a Command Slice
|
|
37
48
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
```typescript
|
|
50
|
+
import { flow, command, specs, rule, example } from '@auto-engineer/narrative';
|
|
51
|
+
|
|
52
|
+
flow('Users', () => {
|
|
53
|
+
command('Create user')
|
|
54
|
+
.stream('user-${userId}')
|
|
55
|
+
.server(() => {
|
|
56
|
+
specs('User creation', () => {
|
|
57
|
+
rule('Valid users created', () => {
|
|
58
|
+
example('New user')
|
|
59
|
+
.when({ name: 'John' })
|
|
60
|
+
.then({ userId: 'u-001' });
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
```
|
|
43
66
|
|
|
44
|
-
|
|
67
|
+
### Define a Query Slice
|
|
45
68
|
|
|
46
|
-
|
|
69
|
+
```typescript
|
|
70
|
+
import { flow, query, describe, it, data, source } from '@auto-engineer/narrative';
|
|
71
|
+
|
|
72
|
+
flow('Products', () => {
|
|
73
|
+
query('View products')
|
|
74
|
+
.client(() => {
|
|
75
|
+
describe('Product list', () => {
|
|
76
|
+
it('displays all products');
|
|
77
|
+
});
|
|
78
|
+
})
|
|
79
|
+
.server(() => {
|
|
80
|
+
data([source().state('Products').fromProjection('ProductsProjection', 'id')]);
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
```
|
|
47
84
|
|
|
48
|
-
Define
|
|
85
|
+
### Define Data Sinks and Sources
|
|
49
86
|
|
|
50
87
|
```typescript
|
|
51
|
-
import { flow } from '@auto-engineer/
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
88
|
+
import { flow, command, data, sink, source } from '@auto-engineer/narrative';
|
|
89
|
+
|
|
90
|
+
flow('Payments', () => {
|
|
91
|
+
command('Process payment')
|
|
92
|
+
.server(() => {
|
|
93
|
+
data([
|
|
94
|
+
sink().event('PaymentProcessed').toStream('payment-${paymentId}'),
|
|
95
|
+
source().state('Account').fromProjection('Accounts', 'accountId'),
|
|
96
|
+
]);
|
|
97
|
+
});
|
|
98
|
+
});
|
|
62
99
|
```
|
|
63
100
|
|
|
64
|
-
###
|
|
65
|
-
|
|
66
|
-
Generate GraphQL schemas from flow definitions:
|
|
101
|
+
### Load Narratives from File System
|
|
67
102
|
|
|
68
103
|
```typescript
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
104
|
+
import { getNarratives } from '@auto-engineer/narrative';
|
|
105
|
+
import { NodeFileStore } from '@auto-engineer/file-store';
|
|
106
|
+
|
|
107
|
+
const vfs = new NodeFileStore();
|
|
108
|
+
const result = await getNarratives({ vfs, root: '/path/to/src' });
|
|
109
|
+
const model = result.toModel();
|
|
72
110
|
```
|
|
73
111
|
|
|
74
|
-
|
|
112
|
+
---
|
|
75
113
|
|
|
76
|
-
|
|
114
|
+
## API Reference
|
|
115
|
+
|
|
116
|
+
### Package Exports
|
|
77
117
|
|
|
78
118
|
```typescript
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
119
|
+
import {
|
|
120
|
+
flow, narrative,
|
|
121
|
+
command, query, react, experience,
|
|
122
|
+
specs, rule, example, describe, it, should,
|
|
123
|
+
client, server, data,
|
|
124
|
+
sink, source,
|
|
125
|
+
getNarratives, modelToNarrative,
|
|
126
|
+
addAutoIds, hasAllIds,
|
|
127
|
+
gql,
|
|
128
|
+
type Event, type Command, type State,
|
|
129
|
+
} from '@auto-engineer/narrative';
|
|
130
|
+
|
|
131
|
+
import { COMMANDS, exportSchemaCommandHandler } from '@auto-engineer/narrative/node';
|
|
87
132
|
```
|
|
88
133
|
|
|
89
|
-
###
|
|
134
|
+
### Entry Points
|
|
90
135
|
|
|
91
|
-
|
|
136
|
+
| Entry Point | Import Path | Description |
|
|
137
|
+
|-------------|-------------|-------------|
|
|
138
|
+
| Main | `@auto-engineer/narrative` | Core DSL and types |
|
|
139
|
+
| Node | `@auto-engineer/narrative/node` | Command handlers |
|
|
92
140
|
|
|
93
|
-
|
|
94
|
-
import { testFlow } from '@auto-engineer/flow/testing';
|
|
141
|
+
### Slice Types
|
|
95
142
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
143
|
+
| Type | Description | Client | Server |
|
|
144
|
+
|------|-------------|--------|--------|
|
|
145
|
+
| `command` | User actions that modify state | Yes | Yes |
|
|
146
|
+
| `query` | Read operations | Yes | Yes |
|
|
147
|
+
| `react` | Event reactions | No | Yes |
|
|
148
|
+
| `experience` | UI-only behaviors | Yes | No |
|
|
102
149
|
|
|
103
|
-
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
```
|
|
150
|
+
### Message Types
|
|
107
151
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
152
|
+
```typescript
|
|
153
|
+
type Event<Type extends string, Data> = { type: Type; data: Data };
|
|
154
|
+
type Command<Type extends string, Data> = { type: Type; data: Data };
|
|
155
|
+
type State<Type extends string, Data> = { type: Type; data: Data };
|
|
156
|
+
```
|
|
111
157
|
|
|
112
|
-
|
|
113
|
-
- Messages: Strongly-typed data structures for communication
|
|
114
|
-
- Integrations: External service connectors with retry and error handling
|
|
115
|
-
- Context: Runtime environment providing access to integrations and utilities
|
|
116
|
-
- Registry: Central repository for flow definitions and metadata
|
|
158
|
+
---
|
|
117
159
|
|
|
118
|
-
##
|
|
160
|
+
## Architecture
|
|
119
161
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
162
|
+
```
|
|
163
|
+
src/
|
|
164
|
+
├── index.ts
|
|
165
|
+
├── node.ts
|
|
166
|
+
├── narrative.ts
|
|
167
|
+
├── fluent-builder.ts
|
|
168
|
+
├── schema.ts
|
|
169
|
+
├── types.ts
|
|
170
|
+
├── data-narrative-builders.ts
|
|
171
|
+
├── loader/
|
|
172
|
+
├── transformers/
|
|
173
|
+
├── id/
|
|
174
|
+
└── commands/
|
|
175
|
+
```
|
|
131
176
|
|
|
132
|
-
|
|
177
|
+
### Key Concepts
|
|
133
178
|
|
|
134
|
-
|
|
179
|
+
- **Narratives**: Business capabilities containing slices
|
|
180
|
+
- **Slices**: Behavioral units (command, query, react, experience)
|
|
181
|
+
- **Specifications**: BDD-style Given/When/Then assertions
|
|
182
|
+
- **Data Flow**: Sinks (outbound) and Sources (inbound)
|
|
135
183
|
|
|
136
|
-
|
|
137
|
-
- **@auto-engineer/frontend-generator-react-graphql**: Creates React components from flow-generated GraphQL schemas
|
|
138
|
-
- **@auto-engineer/server-implementer**: Implements flow handlers with AI assistance
|
|
139
|
-
- **@auto-engineer/information-architect**: Generates information architecture from flow definitions
|
|
184
|
+
### Dependencies
|
|
140
185
|
|
|
141
|
-
|
|
186
|
+
| Package | Usage |
|
|
187
|
+
|---------|-------|
|
|
188
|
+
| `@auto-engineer/file-store` | Virtual file system |
|
|
189
|
+
| `@auto-engineer/id` | ID generation |
|
|
190
|
+
| `@auto-engineer/message-bus` | Command/Event types |
|
|
191
|
+
| `zod` | Schema validation |
|
|
192
|
+
| `typescript` | AST parsing |
|
|
193
|
+
| `graphql` | GraphQL query parsing |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-schema.d.ts","sourceRoot":"","sources":["../../../src/commands/export-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAQ5F,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,cAAc,EACd;IACE,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CACrC,gBAAgB,EAChB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,KAAK,CACzC,oBAAoB,EACpB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,cAAc;;;;;;
|
|
1
|
+
{"version":3,"file":"export-schema.d.ts","sourceRoot":"","sources":["../../../src/commands/export-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAQ5F,MAAM,MAAM,mBAAmB,GAAG,OAAO,CACvC,cAAc,EACd;IACE,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,KAAK,CACrC,gBAAgB,EAChB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,KAAK,CACzC,oBAAoB,EACpB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,mBAAmB,GAAG,uBAAuB,CAAC;AAE/E,eAAO,MAAM,cAAc;;;;;;GA4BzB,CAAC;AAEH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,CAoExD;AAGD,eAAe,cAAc,CAAC"}
|
|
@@ -6,11 +6,15 @@ if ('color' in debug && typeof debug === 'object') {
|
|
|
6
6
|
}
|
|
7
7
|
export const commandHandler = defineCommandHandler({
|
|
8
8
|
name: 'ExportSchema',
|
|
9
|
+
displayName: 'Export Schema',
|
|
9
10
|
alias: 'export:schema',
|
|
10
11
|
description: 'Export flow schemas to context directory',
|
|
11
12
|
category: 'export',
|
|
12
13
|
icon: 'download',
|
|
13
|
-
events: [
|
|
14
|
+
events: [
|
|
15
|
+
{ name: 'SchemaExported', displayName: 'Schema Exported' },
|
|
16
|
+
{ name: 'SchemaExportFailed', displayName: 'Schema Export Failed' },
|
|
17
|
+
],
|
|
14
18
|
fields: {
|
|
15
19
|
directory: {
|
|
16
20
|
description: 'Context directory path (defaults to current working directory)',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export-schema.js","sourceRoot":"","sources":["../../../src/commands/export-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,oBAAoB,EAAc,MAAM,4BAA4B,CAAC;AAC5F,OAAO,WAAW,MAAM,OAAO,CAAC;AAEhC,MAAM,KAAK,GAAG,WAAW,CAAC,8BAA8B,CAAC,CAAC;AAC1D,IAAI,OAAO,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;IACjD,KAA2B,CAAC,KAAK,GAAG,GAAG,CAAC;AAC3C,CAAC;AA2BD,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;IACjD,IAAI,EAAE,cAAc;IACpB,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,0CAA0C;IACvD,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"export-schema.js","sourceRoot":"","sources":["../../../src/commands/export-schema.ts"],"names":[],"mappings":"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"}
|