@auto-engineer/narrative 1.138.0 → 1.140.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 (181) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +5 -5
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +41 -0
  5. package/dist/scripts/convert-flow-exec.js +2 -2
  6. package/dist/scripts/convert-flow-exec.js.map +1 -1
  7. package/dist/scripts/print-schema.js +5 -5
  8. package/dist/scripts/print-schema.js.map +1 -1
  9. package/dist/src/fluent-builder.d.ts +29 -29
  10. package/dist/src/fluent-builder.d.ts.map +1 -1
  11. package/dist/src/fluent-builder.js +81 -81
  12. package/dist/src/fluent-builder.js.map +1 -1
  13. package/dist/src/{getNarratives.d.ts → getScenes.d.ts} +6 -6
  14. package/dist/src/getScenes.d.ts.map +1 -0
  15. package/dist/src/{getNarratives.js → getScenes.js} +16 -16
  16. package/dist/src/getScenes.js.map +1 -0
  17. package/dist/src/id/addAutoIds.d.ts.map +1 -1
  18. package/dist/src/id/addAutoIds.js +22 -22
  19. package/dist/src/id/addAutoIds.js.map +1 -1
  20. package/dist/src/id/hasAllIds.d.ts.map +1 -1
  21. package/dist/src/id/hasAllIds.js +2 -2
  22. package/dist/src/id/hasAllIds.js.map +1 -1
  23. package/dist/src/index.d.ts +8 -8
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +4 -4
  26. package/dist/src/index.js.map +1 -1
  27. package/dist/src/loader/index.js +1 -1
  28. package/dist/src/loader/index.js.map +1 -1
  29. package/dist/src/loader/runtime-cjs.js +1 -1
  30. package/dist/src/loader/runtime-cjs.js.map +1 -1
  31. package/dist/src/narrative-context.d.ts +9 -9
  32. package/dist/src/narrative-context.d.ts.map +1 -1
  33. package/dist/src/narrative-context.js +47 -47
  34. package/dist/src/narrative-context.js.map +1 -1
  35. package/dist/src/narrative-registry.d.ts +6 -6
  36. package/dist/src/narrative-registry.d.ts.map +1 -1
  37. package/dist/src/narrative-registry.js +26 -26
  38. package/dist/src/narrative-registry.js.map +1 -1
  39. package/dist/src/narrative.d.ts +5 -5
  40. package/dist/src/narrative.d.ts.map +1 -1
  41. package/dist/src/narrative.js +26 -27
  42. package/dist/src/narrative.js.map +1 -1
  43. package/dist/src/parse-graphql-request.d.ts +1 -1
  44. package/dist/src/parse-graphql-request.d.ts.map +1 -1
  45. package/dist/src/parse-graphql-request.js +3 -3
  46. package/dist/src/parse-graphql-request.js.map +1 -1
  47. package/dist/src/samples/items.narrative.js +2 -2
  48. package/dist/src/samples/items.narrative.js.map +1 -1
  49. package/dist/src/samples/mixed-given-types.narrative.js +2 -2
  50. package/dist/src/samples/mixed-given-types.narrative.js.map +1 -1
  51. package/dist/src/samples/place-order.narrative.js +2 -2
  52. package/dist/src/samples/place-order.narrative.js.map +1 -1
  53. package/dist/src/samples/questionnaires.narrative.js +2 -2
  54. package/dist/src/samples/questionnaires.narrative.js.map +1 -1
  55. package/dist/src/samples/seasonal-assistant.schema.json +2 -2
  56. package/dist/src/samples/test-with-ids.narrative.js +2 -2
  57. package/dist/src/samples/test-with-ids.narrative.js.map +1 -1
  58. package/dist/src/schema.d.ts +136 -136
  59. package/dist/src/schema.d.ts.map +1 -1
  60. package/dist/src/schema.js +76 -76
  61. package/dist/src/schema.js.map +1 -1
  62. package/dist/src/slice-builder.d.ts +6 -6
  63. package/dist/src/slice-builder.d.ts.map +1 -1
  64. package/dist/src/slice-builder.js +21 -21
  65. package/dist/src/slice-builder.js.map +1 -1
  66. package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js +1 -1
  67. package/dist/src/transformers/model-to-narrative/analysis/lint-helpers.js.map +1 -1
  68. package/dist/src/transformers/model-to-narrative/cross-module-imports.js +4 -4
  69. package/dist/src/transformers/model-to-narrative/cross-module-imports.js.map +1 -1
  70. package/dist/src/transformers/model-to-narrative/generators/compose.js +3 -3
  71. package/dist/src/transformers/model-to-narrative/generators/compose.js.map +1 -1
  72. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts +2 -2
  73. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
  74. package/dist/src/transformers/model-to-narrative/generators/flow.js +20 -20
  75. package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
  76. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts +1 -1
  77. package/dist/src/transformers/model-to-narrative/generators/imports.d.ts.map +1 -1
  78. package/dist/src/transformers/model-to-narrative/generators/imports.js +1 -1
  79. package/dist/src/transformers/model-to-narrative/generators/imports.js.map +1 -1
  80. package/dist/src/transformers/model-to-narrative/generators/module-code.js +14 -14
  81. package/dist/src/transformers/model-to-narrative/generators/module-code.js.map +1 -1
  82. package/dist/src/transformers/model-to-narrative/index.d.ts +4 -4
  83. package/dist/src/transformers/model-to-narrative/index.d.ts.map +1 -1
  84. package/dist/src/transformers/model-to-narrative/index.js +1 -1
  85. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts +2 -2
  86. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts.map +1 -1
  87. package/dist/src/transformers/model-to-narrative/spec-traversal.js +5 -5
  88. package/dist/src/transformers/model-to-narrative/spec-traversal.js.map +1 -1
  89. package/dist/src/transformers/model-to-narrative/types.d.ts +1 -1
  90. package/dist/src/transformers/model-to-narrative/types.d.ts.map +1 -1
  91. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts +1 -1
  92. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.d.ts.map +1 -1
  93. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js +4 -4
  94. package/dist/src/transformers/model-to-narrative/utils/integration-extractor.js.map +1 -1
  95. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts +1 -1
  96. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts.map +1 -1
  97. package/dist/src/transformers/model-to-narrative/validate-modules.js +19 -19
  98. package/dist/src/transformers/model-to-narrative/validate-modules.js.map +1 -1
  99. package/dist/src/transformers/narrative-to-model/assemble.d.ts +2 -2
  100. package/dist/src/transformers/narrative-to-model/assemble.d.ts.map +1 -1
  101. package/dist/src/transformers/narrative-to-model/assemble.js +10 -3
  102. package/dist/src/transformers/narrative-to-model/assemble.js.map +1 -1
  103. package/dist/src/transformers/narrative-to-model/debug.d.ts.map +1 -1
  104. package/dist/src/transformers/narrative-to-model/debug.js +1 -1
  105. package/dist/src/transformers/narrative-to-model/debug.js.map +1 -1
  106. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts +2 -2
  107. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts.map +1 -1
  108. package/dist/src/transformers/narrative-to-model/derive-modules.js +9 -9
  109. package/dist/src/transformers/narrative-to-model/derive-modules.js.map +1 -1
  110. package/dist/src/transformers/narrative-to-model/index.d.ts +2 -2
  111. package/dist/src/transformers/narrative-to-model/index.d.ts.map +1 -1
  112. package/dist/src/transformers/narrative-to-model/index.js +39 -39
  113. package/dist/src/transformers/narrative-to-model/index.js.map +1 -1
  114. package/dist/src/transformers/narrative-to-model/spec-processors.js +1 -1
  115. package/dist/src/transformers/narrative-to-model/spec-processors.js.map +1 -1
  116. package/dist/src/transformers/narrative-to-model/strings.d.ts +1 -1
  117. package/dist/src/transformers/narrative-to-model/strings.d.ts.map +1 -1
  118. package/dist/src/transformers/narrative-to-model/strings.js +6 -6
  119. package/dist/src/transformers/narrative-to-model/strings.js.map +1 -1
  120. package/dist/src/validate-slice-requests.d.ts +4 -4
  121. package/dist/src/validate-slice-requests.d.ts.map +1 -1
  122. package/dist/src/validate-slice-requests.js +34 -34
  123. package/dist/src/validate-slice-requests.js.map +1 -1
  124. package/dist/tsconfig.tsbuildinfo +1 -1
  125. package/package.json +4 -4
  126. package/scripts/convert-flow-exec.ts +2 -2
  127. package/scripts/print-schema.ts +8 -8
  128. package/src/fluent-builder.specs.ts +3 -3
  129. package/src/fluent-builder.ts +141 -141
  130. package/src/{getNarratives.cache.specs.ts → getScenes.cache.specs.ts} +45 -45
  131. package/src/{getNarratives.specs.ts → getScenes.specs.ts} +302 -300
  132. package/src/{getNarratives.ts → getScenes.ts} +20 -20
  133. package/src/id/addAutoIds.specs.ts +105 -105
  134. package/src/id/addAutoIds.ts +26 -26
  135. package/src/id/hasAllIds.specs.ts +59 -59
  136. package/src/id/hasAllIds.ts +6 -6
  137. package/src/index.ts +12 -13
  138. package/src/loader/index.ts +1 -1
  139. package/src/loader/runtime-cjs.ts +1 -1
  140. package/src/model-to-narrative.specs.ts +133 -135
  141. package/src/narrative-context.specs.ts +24 -24
  142. package/src/narrative-context.ts +61 -61
  143. package/src/narrative-registry.ts +31 -31
  144. package/src/narrative.ts +31 -33
  145. package/src/parse-graphql-request.specs.ts +5 -5
  146. package/src/parse-graphql-request.ts +3 -3
  147. package/src/samples/items.narrative.ts +2 -2
  148. package/src/samples/mixed-given-types.narrative.ts +2 -2
  149. package/src/samples/place-order.narrative.ts +2 -2
  150. package/src/samples/questionnaires.narrative.ts +2 -2
  151. package/src/samples/seasonal-assistant.schema.json +2 -2
  152. package/src/samples/test-with-ids.narrative.ts +2 -2
  153. package/src/schema.specs.ts +99 -91
  154. package/src/schema.ts +89 -89
  155. package/src/slice-builder.ts +30 -30
  156. package/src/transformers/model-to-narrative/analysis/lint-helpers.ts +1 -1
  157. package/src/transformers/model-to-narrative/cross-module-imports.specs.ts +43 -43
  158. package/src/transformers/model-to-narrative/cross-module-imports.ts +4 -4
  159. package/src/transformers/model-to-narrative/generators/compose.ts +4 -4
  160. package/src/transformers/model-to-narrative/generators/flow.ts +36 -36
  161. package/src/transformers/model-to-narrative/generators/imports.ts +1 -1
  162. package/src/transformers/model-to-narrative/generators/module-code.ts +15 -15
  163. package/src/transformers/model-to-narrative/index.ts +4 -4
  164. package/src/transformers/model-to-narrative/modules.specs.ts +58 -58
  165. package/src/transformers/model-to-narrative/spec-traversal.specs.ts +43 -43
  166. package/src/transformers/model-to-narrative/spec-traversal.ts +6 -6
  167. package/src/transformers/model-to-narrative/types.ts +1 -1
  168. package/src/transformers/model-to-narrative/utils/integration-extractor.ts +5 -5
  169. package/src/transformers/model-to-narrative/validate-modules.ts +22 -22
  170. package/src/transformers/narrative-to-model/assemble.ts +12 -4
  171. package/src/transformers/narrative-to-model/debug.ts +1 -1
  172. package/src/transformers/narrative-to-model/derive-modules.specs.ts +35 -35
  173. package/src/transformers/narrative-to-model/derive-modules.ts +11 -11
  174. package/src/transformers/narrative-to-model/index.ts +47 -47
  175. package/src/transformers/narrative-to-model/spec-processors.ts +1 -1
  176. package/src/transformers/narrative-to-model/strings.ts +6 -6
  177. package/src/transformers/narrative-to-model/type-inference.specs.ts +11 -11
  178. package/src/validate-slice-requests.specs.ts +113 -113
  179. package/src/validate-slice-requests.ts +49 -49
  180. package/dist/src/getNarratives.d.ts.map +0 -1
  181. package/dist/src/getNarratives.js.map +0 -1
@@ -1,32 +1,32 @@
1
1
  import { describe, expect, it } from 'vitest';
2
2
  import type {
3
3
  ComponentDefinition,
4
- Journey,
5
- JourneyPlanning,
4
+ Narrative,
5
+ NarrativePlanning,
6
6
  RegionEntry,
7
7
  SceneClassification,
8
8
  SceneRoute,
9
9
  UI,
10
10
  } from './schema';
11
11
  import {
12
- CommandSliceSchema,
12
+ CommandMomentSchema,
13
13
  ComponentDefinitionSchema,
14
14
  DataSchema,
15
15
  DataTargetSchema,
16
16
  DesignSchema,
17
- JourneyPlanningSchema,
18
- JourneySchema,
19
17
  modelSchema,
20
- NarrativeNamesOnlySchema,
18
+ NarrativePlanningSchema,
21
19
  NarrativeSchema,
22
- QuerySliceSchema,
20
+ QueryMomentSchema,
23
21
  RegionEntrySchema,
24
22
  SceneClassificationSchema,
23
+ SceneNamesOnlySchema,
25
24
  SceneRouteSchema,
25
+ SceneSchema,
26
26
  UISchema,
27
27
  } from './schema';
28
28
 
29
- describe('CommandSliceSchema', () => {
29
+ describe('CommandMomentSchema', () => {
30
30
  it('should accept optional mappings field with structured entries', () => {
31
31
  const slice = {
32
32
  type: 'command' as const,
@@ -41,7 +41,7 @@ describe('CommandSliceSchema', () => {
41
41
  ],
42
42
  };
43
43
 
44
- const result = CommandSliceSchema.safeParse(slice);
44
+ const result = CommandMomentSchema.safeParse(slice);
45
45
 
46
46
  expect(result.success).toBe(true);
47
47
  if (result.success) {
@@ -142,11 +142,11 @@ describe('SceneClassificationSchema', () => {
142
142
  });
143
143
  });
144
144
 
145
- describe('NarrativeSchema scene field', () => {
145
+ describe('SceneSchema scene field', () => {
146
146
  it('should accept a narrative with optional scene classification', () => {
147
- const result = NarrativeSchema.safeParse({
147
+ const result = SceneSchema.safeParse({
148
148
  name: 'Create Todo',
149
- slices: [],
149
+ moments: [],
150
150
  scene: {
151
151
  kind: 'page',
152
152
  pattern: 'create-form',
@@ -162,9 +162,9 @@ describe('NarrativeSchema scene field', () => {
162
162
  });
163
163
 
164
164
  it('should accept a narrative without scene', () => {
165
- const result = NarrativeSchema.safeParse({
165
+ const result = SceneSchema.safeParse({
166
166
  name: 'Create Todo',
167
- slices: [],
167
+ moments: [],
168
168
  });
169
169
  expect(result.success).toBe(true);
170
170
  if (result.success) {
@@ -173,26 +173,26 @@ describe('NarrativeSchema scene field', () => {
173
173
  });
174
174
  });
175
175
 
176
- describe('JourneySchema', () => {
177
- it('should accept a valid journey with required fields', () => {
178
- const result = JourneySchema.safeParse({
176
+ describe('NarrativeSchema', () => {
177
+ it('should accept a valid narrative with required fields', () => {
178
+ const result = NarrativeSchema.safeParse({
179
179
  name: 'Onboarding',
180
- narrativeIds: ['n-1', 'n-2'],
180
+ sceneIds: ['n-1', 'n-2'],
181
181
  });
182
182
  expect(result.success).toBe(true);
183
183
  if (result.success) {
184
184
  expect(result.data.name).toBe('Onboarding');
185
- expect(result.data.narrativeIds).toEqual(['n-1', 'n-2']);
185
+ expect(result.data.sceneIds).toEqual(['n-1', 'n-2']);
186
186
  }
187
187
  });
188
188
 
189
189
  it('should accept all optional fields', () => {
190
- const result = JourneySchema.safeParse({
190
+ const result = NarrativeSchema.safeParse({
191
191
  id: 'j-1',
192
192
  name: 'Checkout',
193
193
  description: 'Full checkout flow',
194
194
  actors: ['buyer', 'seller'],
195
- narrativeIds: ['n-cart', 'n-pay'],
195
+ sceneIds: ['n-cart', 'n-pay'],
196
196
  });
197
197
  expect(result.success).toBe(true);
198
198
  if (result.success) {
@@ -203,67 +203,74 @@ describe('JourneySchema', () => {
203
203
  });
204
204
 
205
205
  it('should reject missing name', () => {
206
- const result = JourneySchema.safeParse({ narrativeIds: ['n-1'] });
206
+ const result = NarrativeSchema.safeParse({ sceneIds: ['n-1'] });
207
207
  expect(result.success).toBe(false);
208
208
  });
209
209
 
210
- it('should reject missing narrativeIds', () => {
211
- const result = JourneySchema.safeParse({ name: 'Onboarding' });
210
+ it('should reject missing sceneIds', () => {
211
+ const result = NarrativeSchema.safeParse({ name: 'Onboarding' });
212
212
  expect(result.success).toBe(false);
213
213
  });
214
214
  });
215
215
 
216
- describe('modelSchema journeys field', () => {
216
+ describe('modelSchema narratives field', () => {
217
217
  const minimalModel = {
218
218
  variant: 'specs' as const,
219
- narratives: [],
219
+ scenes: [],
220
220
  messages: [],
221
221
  modules: [],
222
+ narratives: [],
222
223
  };
223
224
 
224
- it('should accept model without journeys (optional)', () => {
225
+ it('should reject model without narratives (required)', () => {
226
+ const { narratives: _, ...modelWithoutNarratives } = minimalModel;
227
+ const result = modelSchema.safeParse(modelWithoutNarratives);
228
+ expect(result.success).toBe(false);
229
+ });
230
+
231
+ it('should accept model with empty narratives array', () => {
225
232
  const result = modelSchema.safeParse(minimalModel);
226
233
  expect(result.success).toBe(true);
227
234
  if (result.success) {
228
- expect(result.data.journeys).toBeUndefined();
235
+ expect(result.data.narratives).toEqual([]);
229
236
  }
230
237
  });
231
238
 
232
- it('should accept model with journeys array', () => {
239
+ it('should accept model with narratives array', () => {
233
240
  const result = modelSchema.safeParse({
234
241
  ...minimalModel,
235
- journeys: [
242
+ narratives: [
236
243
  {
237
244
  id: 'j-1',
238
245
  name: 'Onboarding',
239
- narrativeIds: ['n-1', 'n-2'],
246
+ sceneIds: ['n-1', 'n-2'],
240
247
  },
241
248
  ],
242
249
  });
243
250
  expect(result.success).toBe(true);
244
251
  if (result.success) {
245
- expect(result.data.journeys).toHaveLength(1);
246
- expect(result.data.journeys![0].name).toBe('Onboarding');
252
+ expect(result.data.narratives).toHaveLength(1);
253
+ expect(result.data.narratives![0].name).toBe('Onboarding');
247
254
  }
248
255
  });
249
256
  });
250
257
 
251
- describe('JourneyPlanningSchema', () => {
252
- it('should accept a valid journey-planning variant', () => {
258
+ describe('NarrativePlanningSchema', () => {
259
+ it('should accept a valid narrative-planning variant', () => {
253
260
  const input = {
254
- variant: 'journey-planning',
255
- journeys: [
261
+ variant: 'narrative-planning',
262
+ narratives: [
256
263
  {
257
264
  name: 'Onboarding',
258
265
  description: 'New user onboarding flow',
259
- narrativeNames: ['Sign Up', 'Verify Email'],
266
+ sceneNames: ['Sign Up', 'Verify Email'],
260
267
  },
261
268
  {
262
269
  name: 'Checkout',
263
- narrativeNames: ['Add to Cart', 'Payment'],
270
+ sceneNames: ['Add to Cart', 'Payment'],
264
271
  },
265
272
  ],
266
- narratives: [
273
+ scenes: [
267
274
  { name: 'Sign Up' },
268
275
  { name: 'Verify Email', id: 'n-verify', description: 'Email verification' },
269
276
  { name: 'Add to Cart' },
@@ -271,24 +278,24 @@ describe('JourneyPlanningSchema', () => {
271
278
  ],
272
279
  };
273
280
 
274
- const result = JourneyPlanningSchema.safeParse(input);
281
+ const result = NarrativePlanningSchema.safeParse(input);
275
282
 
276
283
  expect(result.success).toBe(true);
277
284
  if (result.success) {
278
285
  expect(result.data).toEqual({
279
- variant: 'journey-planning',
280
- journeys: [
286
+ variant: 'narrative-planning',
287
+ narratives: [
281
288
  {
282
289
  name: 'Onboarding',
283
290
  description: 'New user onboarding flow',
284
- narrativeNames: ['Sign Up', 'Verify Email'],
291
+ sceneNames: ['Sign Up', 'Verify Email'],
285
292
  },
286
293
  {
287
294
  name: 'Checkout',
288
- narrativeNames: ['Add to Cart', 'Payment'],
295
+ sceneNames: ['Add to Cart', 'Payment'],
289
296
  },
290
297
  ],
291
- narratives: [
298
+ scenes: [
292
299
  { name: 'Sign Up' },
293
300
  { name: 'Verify Email', id: 'n-verify', description: 'Email verification' },
294
301
  { name: 'Add to Cart' },
@@ -299,74 +306,74 @@ describe('JourneyPlanningSchema', () => {
299
306
  });
300
307
 
301
308
  it('should reject missing variant', () => {
302
- const result = JourneyPlanningSchema.safeParse({
303
- journeys: [],
309
+ const result = NarrativePlanningSchema.safeParse({
304
310
  narratives: [],
311
+ scenes: [],
305
312
  });
306
313
 
307
314
  expect(result.success).toBe(false);
308
315
  });
309
316
 
310
317
  it('should reject wrong variant', () => {
311
- const result = JourneyPlanningSchema.safeParse({
312
- variant: 'narrative-names',
313
- journeys: [],
318
+ const result = NarrativePlanningSchema.safeParse({
319
+ variant: 'scene-names',
314
320
  narratives: [],
321
+ scenes: [],
315
322
  });
316
323
 
317
324
  expect(result.success).toBe(false);
318
325
  });
319
326
 
320
- it('should reject missing journeys', () => {
321
- const result = JourneyPlanningSchema.safeParse({
322
- variant: 'journey-planning',
323
- narratives: [],
327
+ it('should reject missing narratives', () => {
328
+ const result = NarrativePlanningSchema.safeParse({
329
+ variant: 'narrative-planning',
330
+ scenes: [],
324
331
  });
325
332
 
326
333
  expect(result.success).toBe(false);
327
334
  });
328
335
 
329
- it('should reject missing narratives', () => {
330
- const result = JourneyPlanningSchema.safeParse({
331
- variant: 'journey-planning',
332
- journeys: [],
336
+ it('should reject missing scenes', () => {
337
+ const result = NarrativePlanningSchema.safeParse({
338
+ variant: 'narrative-planning',
339
+ narratives: [],
333
340
  });
334
341
 
335
342
  expect(result.success).toBe(false);
336
343
  });
337
344
 
338
- it('should accept journey with actors', () => {
339
- const result = JourneyPlanningSchema.safeParse({
340
- variant: 'journey-planning',
341
- journeys: [
345
+ it('should accept narrative with actors', () => {
346
+ const result = NarrativePlanningSchema.safeParse({
347
+ variant: 'narrative-planning',
348
+ narratives: [
342
349
  {
343
350
  name: 'Onboarding',
344
351
  actors: ['new-user', 'admin'],
345
- narrativeNames: ['Sign Up'],
352
+ sceneNames: ['Sign Up'],
346
353
  },
347
354
  ],
348
- narratives: [{ name: 'Sign Up' }],
355
+ scenes: [{ name: 'Sign Up' }],
349
356
  });
350
357
  expect(result.success).toBe(true);
351
358
  if (result.success) {
352
- expect(result.data.journeys[0].actors).toEqual(['new-user', 'admin']);
359
+ expect(result.data.narratives[0].actors).toEqual(['new-user', 'admin']);
353
360
  }
354
361
  });
355
362
 
356
- it('should reject journey missing narrativeNames', () => {
357
- const result = JourneyPlanningSchema.safeParse({
358
- variant: 'journey-planning',
359
- journeys: [{ name: 'Onboarding' }],
360
- narratives: [],
363
+ it('should reject narrative missing sceneNames', () => {
364
+ const result = NarrativePlanningSchema.safeParse({
365
+ variant: 'narrative-planning',
366
+ narratives: [{ name: 'Onboarding' }],
367
+ scenes: [],
361
368
  });
362
369
 
363
370
  expect(result.success).toBe(false);
364
371
  });
365
372
  });
366
373
 
367
- describe('NarrativeNamesOnlySchema', () => {
374
+ describe('SceneNamesOnlySchema', () => {
368
375
  it('should be exported and accept valid input', () => {
369
- const result = NarrativeNamesOnlySchema.safeParse({
376
+ const result = SceneNamesOnlySchema.safeParse({
370
377
  name: 'Create Todo',
371
378
  id: 'n-1',
372
379
  description: 'Create a todo item',
@@ -378,18 +385,18 @@ describe('NarrativeNamesOnlySchema', () => {
378
385
  });
379
386
 
380
387
  it('should require name', () => {
381
- const result = NarrativeNamesOnlySchema.safeParse({ description: 'no name' });
388
+ const result = SceneNamesOnlySchema.safeParse({ description: 'no name' });
382
389
  expect(result.success).toBe(false);
383
390
  });
384
391
  });
385
392
 
386
393
  describe('exported types', () => {
387
- it('Journey type matches JourneySchema inference', () => {
388
- const input = { name: 'Onboarding', narrativeIds: ['n-1'] };
389
- const parsed = JourneySchema.parse(input);
390
- const typed: Journey = parsed;
394
+ it('Narrative type matches NarrativeSchema inference', () => {
395
+ const input = { name: 'Onboarding', sceneIds: ['n-1'] };
396
+ const parsed = NarrativeSchema.parse(input);
397
+ const typed: Narrative = parsed;
391
398
 
392
- expect(typed).toEqual({ name: 'Onboarding', narrativeIds: ['n-1'] });
399
+ expect(typed).toEqual({ name: 'Onboarding', sceneIds: ['n-1'] });
393
400
  });
394
401
 
395
402
  it('SceneClassification type matches SceneClassificationSchema inference', () => {
@@ -408,19 +415,19 @@ describe('exported types', () => {
408
415
  expect(typed).toEqual({ type: 'dedicated', deepLinkable: true });
409
416
  });
410
417
 
411
- it('JourneyPlanning type matches JourneyPlanningSchema inference', () => {
418
+ it('NarrativePlanning type matches NarrativePlanningSchema inference', () => {
412
419
  const input = {
413
- variant: 'journey-planning' as const,
414
- journeys: [{ name: 'Flow', narrativeNames: ['Step 1'] }],
415
- narratives: [{ name: 'Step 1' }],
420
+ variant: 'narrative-planning' as const,
421
+ narratives: [{ name: 'Flow', sceneNames: ['Step 1'] }],
422
+ scenes: [{ name: 'Step 1' }],
416
423
  };
417
- const parsed = JourneyPlanningSchema.parse(input);
418
- const typed: JourneyPlanning = parsed;
424
+ const parsed = NarrativePlanningSchema.parse(input);
425
+ const typed: NarrativePlanning = parsed;
419
426
 
420
427
  expect(typed).toEqual({
421
- variant: 'journey-planning',
422
- journeys: [{ name: 'Flow', narrativeNames: ['Step 1'] }],
423
- narratives: [{ name: 'Step 1' }],
428
+ variant: 'narrative-planning',
429
+ narratives: [{ name: 'Flow', sceneNames: ['Step 1'] }],
430
+ scenes: [{ name: 'Step 1' }],
424
431
  });
425
432
  });
426
433
  });
@@ -511,7 +518,7 @@ describe('DataSchema with target-only items', () => {
511
518
  });
512
519
  });
513
520
 
514
- describe('QuerySliceSchema', () => {
521
+ describe('QueryMomentSchema', () => {
515
522
  it('should accept optional mappings field with structured entries', () => {
516
523
  const slice = {
517
524
  type: 'query' as const,
@@ -526,7 +533,7 @@ describe('QuerySliceSchema', () => {
526
533
  ],
527
534
  };
528
535
 
529
- const result = QuerySliceSchema.safeParse(slice);
536
+ const result = QueryMomentSchema.safeParse(slice);
530
537
 
531
538
  expect(result.success).toBe(true);
532
539
  if (result.success) {
@@ -682,9 +689,10 @@ describe('DesignSchema ui field', () => {
682
689
  describe('modelSchema design.components field', () => {
683
690
  const minimalModel = {
684
691
  variant: 'specs' as const,
685
- narratives: [],
692
+ scenes: [],
686
693
  messages: [],
687
694
  modules: [],
695
+ narratives: [],
688
696
  };
689
697
 
690
698
  it('should accept model with design.components', () => {