@auto-engineer/narrative 0.13.3 → 0.15.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 (240) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +26 -0
  3. package/README.md +151 -99
  4. package/dist/scripts/convert-flow-exec.js +2 -2
  5. package/dist/scripts/convert-flow-exec.js.map +1 -1
  6. package/dist/scripts/convert-flow-helper.js +3 -4
  7. package/dist/scripts/convert-flow-helper.js.map +1 -1
  8. package/dist/scripts/convert-flow.js +4 -4
  9. package/dist/scripts/convert-flow.js.map +1 -1
  10. package/dist/scripts/print-schema.js +1 -1
  11. package/dist/scripts/print-schema.js.map +1 -1
  12. package/dist/src/commands/export-schema-helper.js +9 -9
  13. package/dist/src/commands/export-schema-helper.js.map +1 -1
  14. package/dist/src/commands/export-schema.d.ts.map +1 -1
  15. package/dist/src/commands/export-schema.js +49 -68
  16. package/dist/src/commands/export-schema.js.map +1 -1
  17. package/dist/src/data-narrative-builders.d.ts +1 -1
  18. package/dist/src/data-narrative-builders.d.ts.map +1 -1
  19. package/dist/src/data-narrative-builders.js +13 -19
  20. package/dist/src/data-narrative-builders.js.map +1 -1
  21. package/dist/src/fluent-builder.d.ts.map +1 -1
  22. package/dist/src/fluent-builder.js +2 -2
  23. package/dist/src/fluent-builder.js.map +1 -1
  24. package/dist/src/fluent-builder.specs.js +2 -2
  25. package/dist/src/fluent-builder.specs.js.map +1 -1
  26. package/dist/src/getNarratives.cache.specs.js +5 -5
  27. package/dist/src/getNarratives.cache.specs.js.map +1 -1
  28. package/dist/src/getNarratives.d.ts +1 -1
  29. package/dist/src/getNarratives.d.ts.map +1 -1
  30. package/dist/src/getNarratives.js +6 -3
  31. package/dist/src/getNarratives.js.map +1 -1
  32. package/dist/src/getNarratives.specs.js +6 -6
  33. package/dist/src/getNarratives.specs.js.map +1 -1
  34. package/dist/src/id/addAutoIds.d.ts +1 -1
  35. package/dist/src/id/addAutoIds.d.ts.map +1 -1
  36. package/dist/src/id/addAutoIds.js.map +1 -1
  37. package/dist/src/id/addAutoIds.specs.js +1 -1
  38. package/dist/src/id/addAutoIds.specs.js.map +1 -1
  39. package/dist/src/id/hasAllIds.d.ts +1 -1
  40. package/dist/src/id/hasAllIds.d.ts.map +1 -1
  41. package/dist/src/id/hasAllIds.specs.js +1 -1
  42. package/dist/src/id/hasAllIds.specs.js.map +1 -1
  43. package/dist/src/id/index.d.ts +1 -1
  44. package/dist/src/id/index.d.ts.map +1 -1
  45. package/dist/src/id/index.js +1 -1
  46. package/dist/src/id/index.js.map +1 -1
  47. package/dist/src/index.d.ts +14 -17
  48. package/dist/src/index.d.ts.map +1 -1
  49. package/dist/src/index.js +8 -10
  50. package/dist/src/index.js.map +1 -1
  51. package/dist/src/integration-export-registry.d.ts +2 -2
  52. package/dist/src/integration-export-registry.d.ts.map +1 -1
  53. package/dist/src/integration-registry.d.ts +1 -1
  54. package/dist/src/integration-registry.d.ts.map +1 -1
  55. package/dist/src/integration-registry.js +1 -0
  56. package/dist/src/integration-registry.js.map +1 -1
  57. package/dist/src/loader/fs-path.js +2 -2
  58. package/dist/src/loader/fs-path.js.map +1 -1
  59. package/dist/src/loader/graph.d.ts +2 -2
  60. package/dist/src/loader/graph.d.ts.map +1 -1
  61. package/dist/src/loader/graph.js +2 -2
  62. package/dist/src/loader/graph.js.map +1 -1
  63. package/dist/src/loader/index.d.ts +1 -1
  64. package/dist/src/loader/index.d.ts.map +1 -1
  65. package/dist/src/loader/index.js +5 -5
  66. package/dist/src/loader/index.js.map +1 -1
  67. package/dist/src/loader/resolver.js +1 -1
  68. package/dist/src/loader/resolver.js.map +1 -1
  69. package/dist/src/loader/runtime-cjs.d.ts.map +1 -1
  70. package/dist/src/loader/runtime-cjs.js +2 -2
  71. package/dist/src/loader/runtime-cjs.js.map +1 -1
  72. package/dist/src/loader/ts-utils.js +5 -5
  73. package/dist/src/loader/ts-utils.js.map +1 -1
  74. package/dist/src/model-to-narrative.specs.js +73 -98
  75. package/dist/src/model-to-narrative.specs.js.map +1 -1
  76. package/dist/src/narrative-context.d.ts +4 -4
  77. package/dist/src/narrative-context.d.ts.map +1 -1
  78. package/dist/src/narrative-context.js +2 -2
  79. package/dist/src/narrative-context.js.map +1 -1
  80. package/dist/src/narrative-context.specs.js +118 -3
  81. package/dist/src/narrative-context.specs.js.map +1 -1
  82. package/dist/src/narrative-registry.d.ts +1 -1
  83. package/dist/src/narrative-registry.d.ts.map +1 -1
  84. package/dist/src/narrative-registry.js +1 -1
  85. package/dist/src/narrative-registry.js.map +1 -1
  86. package/dist/src/narrative.d.ts +3 -3
  87. package/dist/src/narrative.d.ts.map +1 -1
  88. package/dist/src/narrative.js +15 -17
  89. package/dist/src/narrative.js.map +1 -1
  90. package/dist/src/node.d.ts +1 -1
  91. package/dist/src/node.d.ts.map +1 -1
  92. package/dist/src/node.js +1 -1
  93. package/dist/src/node.js.map +1 -1
  94. package/dist/src/samples/items.narrative.js +2 -2
  95. package/dist/src/samples/items.narrative.js.map +1 -1
  96. package/dist/src/samples/mixed-given-types.narrative.js +1 -1
  97. package/dist/src/samples/mixed-given-types.narrative.js.map +1 -1
  98. package/dist/src/samples/place-order.narrative.js +1 -1
  99. package/dist/src/samples/place-order.narrative.js.map +1 -1
  100. package/dist/src/samples/questionnaires.narrative.js +1 -1
  101. package/dist/src/samples/questionnaires.narrative.js.map +1 -1
  102. package/dist/src/samples/test-with-ids.narrative.js +1 -1
  103. package/dist/src/samples/test-with-ids.narrative.js.map +1 -1
  104. package/dist/src/schema-test.js +1 -1
  105. package/dist/src/schema-test.js.map +1 -1
  106. package/dist/src/schema.d.ts +264 -264
  107. package/dist/src/slice-builder.d.ts.map +1 -1
  108. package/dist/src/slice-builder.js +1 -1
  109. package/dist/src/slice-builder.js.map +1 -1
  110. package/dist/src/transformers/model-to-narrative/ast/emit-helpers.d.ts +1 -1
  111. package/dist/src/transformers/model-to-narrative/ast/emit-helpers.d.ts.map +1 -1
  112. package/dist/src/transformers/model-to-narrative/formatting/sort-types.js +1 -1
  113. package/dist/src/transformers/model-to-narrative/formatting/sort-types.js.map +1 -1
  114. package/dist/src/transformers/model-to-narrative/generators/compose.d.ts +1 -1
  115. package/dist/src/transformers/model-to-narrative/generators/compose.d.ts.map +1 -1
  116. package/dist/src/transformers/model-to-narrative/generators/compose.js +4 -4
  117. package/dist/src/transformers/model-to-narrative/generators/compose.js.map +1 -1
  118. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts +1 -1
  119. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
  120. package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
  121. package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts +1 -1
  122. package/dist/src/transformers/model-to-narrative/generators/gwt.d.ts.map +1 -1
  123. package/dist/src/transformers/model-to-narrative/generators/gwt.js +47 -57
  124. package/dist/src/transformers/model-to-narrative/generators/gwt.js.map +1 -1
  125. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts +2 -0
  126. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts.map +1 -0
  127. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js +142 -0
  128. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js.map +1 -0
  129. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts +1 -1
  130. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts.map +1 -1
  131. package/dist/src/transformers/model-to-narrative/generators/imports.js +0 -4
  132. package/dist/src/transformers/model-to-narrative/generators/imports.js.map +1 -1
  133. package/dist/src/transformers/model-to-narrative/generators/types.d.ts +1 -1
  134. package/dist/src/transformers/model-to-narrative/generators/types.d.ts.map +1 -1
  135. package/dist/src/transformers/model-to-narrative/index.d.ts +1 -1
  136. package/dist/src/transformers/model-to-narrative/index.d.ts.map +1 -1
  137. package/dist/src/transformers/model-to-narrative/index.js +1 -1
  138. package/dist/src/transformers/model-to-narrative/index.js.map +1 -1
  139. package/dist/src/transformers/narrative-to-model/assemble.d.ts +1 -1
  140. package/dist/src/transformers/narrative-to-model/assemble.d.ts.map +1 -1
  141. package/dist/src/transformers/narrative-to-model/example-shapes.d.ts +1 -1
  142. package/dist/src/transformers/narrative-to-model/example-shapes.d.ts.map +1 -1
  143. package/dist/src/transformers/narrative-to-model/index.d.ts +2 -2
  144. package/dist/src/transformers/narrative-to-model/index.d.ts.map +1 -1
  145. package/dist/src/transformers/narrative-to-model/index.js +5 -5
  146. package/dist/src/transformers/narrative-to-model/index.js.map +1 -1
  147. package/dist/src/transformers/narrative-to-model/inlining.d.ts +2 -2
  148. package/dist/src/transformers/narrative-to-model/inlining.d.ts.map +1 -1
  149. package/dist/src/transformers/narrative-to-model/integrations.d.ts +2 -2
  150. package/dist/src/transformers/narrative-to-model/integrations.d.ts.map +1 -1
  151. package/dist/src/transformers/narrative-to-model/integrations.js +3 -3
  152. package/dist/src/transformers/narrative-to-model/integrations.js.map +1 -1
  153. package/dist/src/transformers/narrative-to-model/messages.d.ts +2 -2
  154. package/dist/src/transformers/narrative-to-model/messages.d.ts.map +1 -1
  155. package/dist/src/transformers/narrative-to-model/messages.js +1 -1
  156. package/dist/src/transformers/narrative-to-model/messages.js.map +1 -1
  157. package/dist/src/transformers/narrative-to-model/normalize.d.ts +1 -1
  158. package/dist/src/transformers/narrative-to-model/normalize.d.ts.map +1 -1
  159. package/dist/src/transformers/narrative-to-model/spec-processors.d.ts +3 -3
  160. package/dist/src/transformers/narrative-to-model/spec-processors.d.ts.map +1 -1
  161. package/dist/src/transformers/narrative-to-model/spec-processors.js +2 -2
  162. package/dist/src/transformers/narrative-to-model/spec-processors.js.map +1 -1
  163. package/dist/src/transformers/narrative-to-model/type-inference.d.ts +1 -1
  164. package/dist/src/transformers/narrative-to-model/type-inference.d.ts.map +1 -1
  165. package/dist/src/transformers/narrative-to-model/type-inference.js +1 -1
  166. package/dist/src/transformers/narrative-to-model/type-inference.js.map +1 -1
  167. package/dist/src/transformers/narrative-to-model/type-inference.specs.js +1 -1
  168. package/dist/src/transformers/narrative-to-model/type-inference.specs.js.map +1 -1
  169. package/dist/src/transformers/narrative-to-model/zod-adapter.d.ts +2 -2
  170. package/dist/src/transformers/narrative-to-model/zod-adapter.d.ts.map +1 -1
  171. package/dist/src/types.d.ts +1 -1
  172. package/dist/src/types.d.ts.map +1 -1
  173. package/dist/tsconfig.tsbuildinfo +1 -1
  174. package/package.json +5 -12
  175. package/scripts/convert-flow-exec.ts +2 -2
  176. package/scripts/convert-flow-helper.ts +3 -4
  177. package/scripts/convert-flow.ts +4 -4
  178. package/scripts/print-schema.ts +2 -2
  179. package/src/commands/export-schema-helper.ts +10 -12
  180. package/src/commands/export-schema.ts +50 -70
  181. package/src/data-narrative-builders.ts +8 -11
  182. package/src/fluent-builder.specs.ts +2 -2
  183. package/src/fluent-builder.ts +6 -6
  184. package/src/getNarratives.cache.specs.ts +6 -6
  185. package/src/getNarratives.specs.ts +6 -6
  186. package/src/getNarratives.ts +13 -5
  187. package/src/id/addAutoIds.specs.ts +2 -2
  188. package/src/id/addAutoIds.ts +1 -1
  189. package/src/id/hasAllIds.specs.ts +1 -1
  190. package/src/id/hasAllIds.ts +1 -1
  191. package/src/id/index.ts +1 -1
  192. package/src/index.ts +61 -54
  193. package/src/integration-export-registry.ts +2 -2
  194. package/src/integration-registry.ts +2 -1
  195. package/src/loader/fs-path.ts +2 -2
  196. package/src/loader/graph.ts +9 -9
  197. package/src/loader/index.ts +7 -7
  198. package/src/loader/resolver.ts +1 -1
  199. package/src/loader/runtime-cjs.ts +3 -3
  200. package/src/loader/ts-utils.ts +5 -5
  201. package/src/model-to-narrative.specs.ts +76 -99
  202. package/src/narrative-context.specs.ts +138 -4
  203. package/src/narrative-context.ts +6 -7
  204. package/src/narrative-registry.ts +2 -2
  205. package/src/narrative.ts +27 -33
  206. package/src/node.ts +1 -2
  207. package/src/samples/items.narrative.ts +3 -3
  208. package/src/samples/mixed-given-types.narrative.ts +2 -2
  209. package/src/samples/place-order.narrative.ts +1 -1
  210. package/src/samples/questionnaires.narrative.ts +10 -10
  211. package/src/samples/test-with-ids.narrative.ts +2 -2
  212. package/src/schema-test.ts +1 -1
  213. package/src/slice-builder.ts +2 -2
  214. package/src/transformers/model-to-narrative/ast/emit-helpers.ts +1 -1
  215. package/src/transformers/model-to-narrative/formatting/sort-types.ts +1 -1
  216. package/src/transformers/model-to-narrative/generators/compose.ts +5 -5
  217. package/src/transformers/model-to-narrative/generators/flow.ts +9 -9
  218. package/src/transformers/model-to-narrative/generators/gwt.specs.ts +157 -0
  219. package/src/transformers/model-to-narrative/generators/gwt.ts +80 -122
  220. package/src/transformers/model-to-narrative/generators/imports.ts +0 -4
  221. package/src/transformers/model-to-narrative/generators/types.ts +1 -1
  222. package/src/transformers/model-to-narrative/index.ts +2 -2
  223. package/src/transformers/narrative-to-model/assemble.ts +1 -1
  224. package/src/transformers/narrative-to-model/example-shapes.ts +1 -1
  225. package/src/transformers/narrative-to-model/index.ts +7 -7
  226. package/src/transformers/narrative-to-model/inlining.ts +2 -2
  227. package/src/transformers/narrative-to-model/integrations.ts +5 -5
  228. package/src/transformers/narrative-to-model/messages.ts +3 -3
  229. package/src/transformers/narrative-to-model/normalize.ts +1 -1
  230. package/src/transformers/narrative-to-model/spec-processors.ts +4 -4
  231. package/src/transformers/narrative-to-model/type-inference.specs.ts +2 -2
  232. package/src/transformers/narrative-to-model/type-inference.ts +2 -2
  233. package/src/transformers/narrative-to-model/zod-adapter.ts +2 -2
  234. package/src/types.ts +1 -1
  235. package/dist/src/commands/export-schema-runner.d.ts +0 -3
  236. package/dist/src/commands/export-schema-runner.d.ts.map +0 -1
  237. package/dist/src/commands/export-schema-runner.js +0 -53
  238. package/dist/src/commands/export-schema-runner.js.map +0 -1
  239. package/eslint.config.ts +0 -12
  240. package/src/commands/export-schema-runner.ts +0 -74
@@ -1,5 +1,5 @@
1
1
 
2
- > @auto-engineer/narrative@0.13.3 build /home/runner/work/auto-engineer/auto-engineer/packages/narrative
2
+ > @auto-engineer/narrative@0.15.0 build /home/runner/work/auto-engineer/auto-engineer/packages/narrative
3
3
  > tsx scripts/build.ts
4
4
 
5
5
  Running: tsc
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  # @auto-engineer/flow
2
2
 
3
+ ## 0.15.0
4
+
5
+ ### Minor Changes
6
+
7
+ - version bump
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies []:
12
+ - @auto-engineer/message-bus@0.15.0
13
+ - @auto-engineer/file-store@0.15.0
14
+ - @auto-engineer/id@0.15.0
15
+
16
+ ## 0.14.0
17
+
18
+ ### Minor Changes
19
+
20
+ - Rewrite CLI and Pipeline
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies []:
25
+ - @auto-engineer/file-store@0.14.0
26
+ - @auto-engineer/id@0.14.0
27
+ - @auto-engineer/message-bus@0.14.0
28
+
3
29
  ## 0.13.3
4
30
 
5
31
  ### Patch Changes
package/README.md CHANGED
@@ -1,141 +1,193 @@
1
- # @auto-engineer/flow
1
+ # @auto-engineer/narrative
2
2
 
3
- Domain-specific language for building event-driven applications with type-safe schemas and GraphQL API generation. Plugin for the Auto Engineer CLI that enables defining business flows, data transformations, and integrations using TypeScript-based syntax.
3
+ TypeScript DSL for defining business narratives using BDD patterns with Given/When/Then syntax.
4
4
 
5
- ## Installation
5
+ ---
6
6
 
7
- This is a plugin for the Auto Engineer CLI. Install both the CLI and this plugin:
7
+ ## Purpose
8
8
 
9
- ```bash
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
- ## Configuration
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
- Add this plugin to your `auto.config.ts`:
13
+ ---
17
14
 
18
- ```typescript
19
- export default {
20
- plugins: [
21
- '@auto-engineer/flow',
22
- // ... other plugins
23
- ],
24
- };
15
+ ## Installation
16
+
17
+ ```bash
18
+ pnpm add @auto-engineer/narrative
25
19
  ```
26
20
 
27
- ## Commands
21
+ ## Quick Start
28
22
 
29
- This plugin provides the following commands:
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
- - `create:example` - Create an example project with Flow
32
- - `export:schema` - Export flow schema to JSON
43
+ ---
33
44
 
34
- ## What is Flow?
45
+ ## How-to Guides
35
46
 
36
- Flow is a declarative language for describing business processes, data flows, and system integrations. It combines:
47
+ ### Define a Command Slice
37
48
 
38
- - Type Safety: Full TypeScript integration with compile-time validation
39
- - Event-Driven Architecture: Built on top of the Emmett event sourcing framework
40
- - GraphQL Integration: Schema generation and resolver creation
41
- - Message Bus Support: Support for inter-service communication
42
- - Flow Orchestration: Define workflows with branching logic and error handling
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
- ## Key Features
67
+ ### Define a Query Slice
45
68
 
46
- ### Fluent API Design
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 business flows using chainable API:
85
+ ### Define Data Sinks and Sources
49
86
 
50
87
  ```typescript
51
- import { flow } from '@auto-engineer/flow';
52
-
53
- const orderFlow = flow('place-order')
54
- .input<PlaceOrderCommand>()
55
- .validate(command => /* validation logic */)
56
- .process(async (command, ctx) => {
57
- // Business logic here
58
- return { orderId: generateId(), status: 'confirmed' };
59
- })
60
- .emit<OrderPlaced>()
61
- .build();
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
- ### Schema Generation
65
-
66
- Generate GraphQL schemas from flow definitions:
101
+ ### Load Narratives from File System
67
102
 
68
103
  ```typescript
69
- // Flows are converted to GraphQL mutations and queries
70
- // Input types become GraphQL input types
71
- // Output events become GraphQL object types
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
- ### Integration Support
112
+ ---
75
113
 
76
- Support for external service integrations:
114
+ ## API Reference
115
+
116
+ ### Package Exports
77
117
 
78
118
  ```typescript
79
- const flow = flow('payment-processing')
80
- .integration('stripe', StripePaymentGateway)
81
- .integration('email', EmailService)
82
- .process(async (command, ctx) => {
83
- const payment = await ctx.integrations.stripe.charge(command.amount);
84
- await ctx.integrations.email.sendReceipt(command.email, payment);
85
- return payment;
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
- ### Testing Support
134
+ ### Entry Points
90
135
 
91
- Testing utilities for flow validation:
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
- ```typescript
94
- import { testFlow } from '@auto-engineer/flow/testing';
141
+ ### Slice Types
95
142
 
96
- describe('order flow', () => {
97
- it('should process valid orders', async () => {
98
- const result = await testFlow(orderFlow)
99
- .withInput({ productId: '123', quantity: 2 })
100
- .expectEvent<OrderPlaced>()
101
- .run();
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
- expect(result.orderId).toBeDefined();
104
- });
105
- });
106
- ```
150
+ ### Message Types
107
151
 
108
- ## Architecture
109
-
110
- Flow builds on several core concepts:
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
- - Flows: The main building blocks that define business processes
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
- ## Getting Started
160
+ ## Architecture
119
161
 
120
- 1. Install the plugin (see Installation above)
121
- 2. Create your first flow project:
122
- ```bash
123
- auto create:example
124
- ```
125
- 3. Explore the generated example flows in the `flows/` directory
126
- 4. Define your own business flows using the Flow API
127
- 5. Export your schema for GraphQL integration:
128
- ```bash
129
- auto export:schema
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
- ## Integration with Auto Engineer
177
+ ### Key Concepts
133
178
 
134
- Flow works with other Auto Engineer plugins:
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
- - **@auto-engineer/server-generator-apollo-emmett**: Generates server infrastructure from Flow schemas
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
- This plugin-based approach allows building applications from high-level flow definitions to production code.
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,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { getNarratives } from '../src/index.js';
2
+ import path from 'node:path';
3
3
  import { NodeFileStore } from '@auto-engineer/file-store/node';
4
- import path from 'path';
4
+ import { getNarratives } from '../src/index.js';
5
5
  const main = async () => {
6
6
  try {
7
7
  const result = await getNarratives({ vfs: new NodeFileStore(), root: path.resolve(__dirname) });
@@ -1 +1 @@
1
- {"version":3,"file":"convert-flow-exec.js","sourceRoot":"","sources":["../../scripts/convert-flow-exec.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"convert-flow-exec.js","sourceRoot":"","sources":["../../scripts/convert-flow-exec.ts"],"names":[],"mappings":";AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAEvC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAChG,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
@@ -1,8 +1,7 @@
1
1
  #!/usr/bin/env node
2
- import { spawn } from 'child_process';
3
- import { resolve, dirname } from 'path';
4
- import { writeFileSync, unlinkSync } from 'fs';
5
- import { join } from 'path';
2
+ import { spawn } from 'node:child_process';
3
+ import { unlinkSync, writeFileSync } from 'node:fs';
4
+ import { dirname, join, resolve } from 'node:path';
6
5
  const main = async () => {
7
6
  const flowPath = process.argv[2];
8
7
  if (!flowPath) {
@@ -1 +1 @@
1
- {"version":3,"file":"convert-flow-helper.js","sourceRoot":"","sources":["../../scripts/convert-flow-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convert-flow-helper.js","sourceRoot":"","sources":["../../scripts/convert-flow-helper.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- import { resolve, dirname, relative, join } from 'path';
3
- import { existsSync, writeFileSync, statSync } from 'fs';
4
- import { spawn } from 'child_process';
5
- import { fileURLToPath } from 'url';
2
+ import { spawn } from 'node:child_process';
3
+ import { existsSync, statSync, writeFileSync } from 'node:fs';
4
+ import { dirname, join, relative, resolve } from 'node:path';
5
+ import { fileURLToPath } from 'node:url';
6
6
  const runInContext = (flowPath, projectRoot) => {
7
7
  return new Promise((resolve, reject) => {
8
8
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -1 +1 @@
1
- {"version":3,"file":"convert-flow.js","sourceRoot":"","sources":["../../scripts/convert-flow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convert-flow.js","sourceRoot":"","sources":["../../scripts/convert-flow.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { CommandSliceSchema, NarrativeSchema, IntegrationSchema, MessageSchema, QuerySliceSchema, ReactSliceSchema, } from '../src/index.js';
2
1
  import { zodToJsonSchema } from 'zod-to-json-schema';
2
+ import { CommandSliceSchema, IntegrationSchema, MessageSchema, NarrativeSchema, QuerySliceSchema, ReactSliceSchema, } from '../src/index.js';
3
3
  const schemas = Object.fromEntries(Object.entries({
4
4
  narrative: NarrativeSchema,
5
5
  message: MessageSchema,
@@ -1 +1 @@
1
- {"version":3,"file":"print-schema.js","sourceRoot":"","sources":["../../scripts/print-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,QAAQ,CAAC;AAEhB,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC;IACb,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,gBAAgB;CAC7B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACjB,CAAC;IACD,eAAe,CAAC,CAAC,EAAE;QACjB,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,aAAa;QACrB,cAAc,EAAE,aAAa;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACtC,CAAC;CACH,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"print-schema.js","sourceRoot":"","sources":["../../scripts/print-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,QAAQ,CAAC;AAEhB,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAChC,MAAM,CAAC,OAAO,CAAC;IACb,SAAS,EAAE,eAAe;IAC1B,OAAO,EAAE,aAAa;IACtB,WAAW,EAAE,iBAAiB;IAC9B,YAAY,EAAE,kBAAkB;IAChC,UAAU,EAAE,gBAAgB;IAC5B,UAAU,EAAE,gBAAgB;CAC7B,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IACjB,CAAC;IACD,eAAe,CAAC,CAAC,EAAE;QACjB,YAAY,EAAE,MAAM;QACpB,MAAM,EAAE,aAAa;QACrB,cAAc,EAAE,aAAa;QAC7B,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;KACtC,CAAC;CACH,CAAC,CACH,CAAC;AAEF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
+ import { NodeFileStore } from '@auto-engineer/file-store/node';
1
2
  import createDebug from 'debug';
2
3
  import { getFs } from './filestore.node.js';
3
- import { NodeFileStore } from '@auto-engineer/file-store/node';
4
4
  const debug = createDebug('auto:narrative:export-schema-helper');
5
5
  if ('color' in debug && typeof debug === 'object') {
6
6
  debug.color = '4';
@@ -13,7 +13,7 @@ const main = async () => {
13
13
  const fs = await getFileStore();
14
14
  const projectNarrativePath = fs.join(directory, 'node_modules', '@auto-engineer', 'narrative', 'dist', 'src', 'getNarratives.js');
15
15
  debug('Importing getNarratives from: %s', projectNarrativePath);
16
- const { pathToFileURL } = await import('url');
16
+ const { pathToFileURL } = await import('node:url');
17
17
  const narrativeModule = (await import(pathToFileURL(projectNarrativePath).href));
18
18
  const { getNarratives } = narrativeModule;
19
19
  const narrativesPath = fs.join(directory, 'narratives');
@@ -27,16 +27,16 @@ const main = async () => {
27
27
  await fs.ensureDir(contextDir);
28
28
  await fs.writeText(outPath, json);
29
29
  debug('Schema written to: %s', outPath);
30
- // Output success as JSON for parent process
31
- console.log(JSON.stringify({
32
- success: true,
33
- outputPath: outPath,
34
- }));
30
+ const resultPath = fs.join(contextDir, '.export-result.json');
31
+ await fs.writeText(resultPath, JSON.stringify({ success: true, outputPath: outPath }));
35
32
  }
36
33
  catch (error) {
37
34
  debug('Error occurred: %o', error);
38
- // Output error as JSON for parent process
39
- console.log(JSON.stringify({
35
+ const getFileStore = getFs;
36
+ const fss = await getFileStore();
37
+ const resultPath = fss.join(process.argv[2] || process.cwd(), '.context', '.export-result.json');
38
+ await fss.ensureDir(fss.dirname(resultPath));
39
+ await fss.writeText(resultPath, JSON.stringify({
40
40
  success: false,
41
41
  error: error instanceof Error ? error.message : 'Unknown error occurred',
42
42
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"export-schema-helper.js","sourceRoot":"","sources":["../../../src/commands/export-schema-helper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export-schema-helper.js","sourceRoot":"","sources":["../../../src/commands/export-schema-helper.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"export-schema.d.ts","sourceRoot":"","sources":["../../../src/commands/export-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,KAAK,EAAwB,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;;;;;;GAwBzB,CAAC;AAEH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,mBAAmB,GAAG,uBAAuB,CAAC,CA4FxD;AAGD,eAAe,cAAc,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,14 +6,18 @@ 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: ['SchemaExported', 'SchemaExportFailed'],
14
+ events: [
15
+ { name: 'SchemaExported', displayName: 'Schema Exported' },
16
+ { name: 'SchemaExportFailed', displayName: 'Schema Export Failed' },
17
+ ],
14
18
  fields: {
15
19
  directory: {
16
- description: 'Context directory path',
20
+ description: 'Context directory path (defaults to current working directory)',
17
21
  required: true,
18
22
  },
19
23
  },
@@ -31,79 +35,56 @@ export const commandHandler = defineCommandHandler({
31
35
  },
32
36
  });
33
37
  export async function handleExportSchemaCommand(command) {
34
- const { directory } = command.data;
38
+ const directory = command.data.directory ?? process.cwd();
35
39
  try {
36
40
  // Run the helper script with tsx
37
41
  const { getFs } = await import('./filestore.node.js');
38
42
  const fs = await getFs();
39
43
  const __dirname = fs.dirname(new URL(import.meta.url).href);
40
44
  const helperScript = fs.join(__dirname, 'export-schema-helper.js');
41
- const { spawn } = await import('child_process');
42
- return new Promise((resolve) => {
43
- const child = spawn('npx', ['tsx', helperScript, directory], {
44
- cwd: directory,
45
- stdio: ['inherit', 'pipe', 'inherit'], // Let stderr go directly to parent process
46
- env: {
47
- ...process.env,
48
- NODE_ENV: process.env.NODE_ENV ?? 'development',
49
- DEBUG: process.env.DEBUG, // Explicitly pass DEBUG env var
50
- DEBUG_COLORS: process.env.DEBUG_COLORS, // Pass color settings
51
- DEBUG_HIDE_DATE: 'true', // Always hide timestamps in child process to match parent
52
- },
53
- shell: true,
54
- });
55
- let stdout = '';
56
- child.stdout.on('data', (data) => {
57
- stdout += data.toString();
58
- });
59
- child.on('close', (code) => {
60
- try {
61
- // Extract JSON from stdout - look for the last line that starts with '{'
62
- const lines = stdout.trim().split('\n');
63
- const jsonLine = lines.reverse().find((line) => line.trim().startsWith('{'));
64
- if (jsonLine == null) {
65
- throw new Error('No JSON output found');
66
- }
67
- const result = JSON.parse(jsonLine);
68
- if (result.success === true) {
69
- resolve({
70
- type: 'SchemaExported',
71
- data: {
72
- directory,
73
- outputPath: result.outputPath ?? '',
74
- },
75
- timestamp: new Date(),
76
- requestId: command.requestId,
77
- correlationId: command.correlationId,
78
- });
79
- }
80
- else {
81
- resolve({
82
- type: 'SchemaExportFailed',
83
- data: {
84
- directory,
85
- error: result.error ?? 'Unknown error',
86
- },
87
- timestamp: new Date(),
88
- requestId: command.requestId,
89
- correlationId: command.correlationId,
90
- });
91
- }
92
- }
93
- catch {
94
- resolve({
95
- type: 'SchemaExportFailed',
96
- data: {
97
- directory,
98
- error: code === 0 ? 'Failed to parse result' : `Process failed with code ${code}`,
99
- },
100
- timestamp: new Date(),
101
- requestId: command.requestId,
102
- correlationId: command.correlationId,
103
- });
104
- }
105
- });
45
+ const resultPath = fs.join(directory, '.context', '.export-result.json');
46
+ const { spawnSync } = await import('node:child_process');
47
+ spawnSync('node', [helperScript, directory], {
48
+ cwd: directory,
49
+ encoding: 'utf-8',
50
+ stdio: 'ignore',
51
+ env: {
52
+ ...process.env,
53
+ NODE_ENV: process.env.NODE_ENV ?? 'development',
54
+ DEBUG: process.env.DEBUG,
55
+ DEBUG_COLORS: process.env.DEBUG_COLORS,
56
+ DEBUG_HIDE_DATE: 'true',
57
+ },
106
58
  });
59
+ const resultJson = await fs.readText(resultPath);
60
+ if (resultJson == null) {
61
+ return {
62
+ type: 'SchemaExportFailed',
63
+ data: { directory, error: 'No result file found' },
64
+ timestamp: new Date(),
65
+ requestId: command.requestId,
66
+ correlationId: command.correlationId,
67
+ };
68
+ }
69
+ const parsed = JSON.parse(resultJson);
70
+ if (parsed.success === true) {
71
+ return {
72
+ type: 'SchemaExported',
73
+ data: { directory, outputPath: parsed.outputPath ?? '' },
74
+ timestamp: new Date(),
75
+ requestId: command.requestId,
76
+ correlationId: command.correlationId,
77
+ };
78
+ }
79
+ else {
80
+ return {
81
+ type: 'SchemaExportFailed',
82
+ data: { directory, error: parsed.error ?? 'Unknown error' },
83
+ timestamp: new Date(),
84
+ requestId: command.requestId,
85
+ correlationId: command.correlationId,
86
+ };
87
+ }
107
88
  }
108
89
  catch (error) {
109
90
  const message = error instanceof Error ? error.message : String(error);