@auto-engineer/narrative 0.16.0 → 0.17.1

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 (87) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +26 -0
  3. package/dist/src/getNarratives.js +1 -1
  4. package/dist/src/getNarratives.js.map +1 -1
  5. package/dist/src/id/addAutoIds.d.ts.map +1 -1
  6. package/dist/src/id/addAutoIds.js +15 -0
  7. package/dist/src/id/addAutoIds.js.map +1 -1
  8. package/dist/src/id/hasAllIds.d.ts.map +1 -1
  9. package/dist/src/id/hasAllIds.js +6 -1
  10. package/dist/src/id/hasAllIds.js.map +1 -1
  11. package/dist/src/index.d.ts +5 -2
  12. package/dist/src/index.d.ts.map +1 -1
  13. package/dist/src/index.js +1 -1
  14. package/dist/src/index.js.map +1 -1
  15. package/dist/src/loader/runtime-cjs.d.ts.map +1 -1
  16. package/dist/src/loader/runtime-cjs.js +16 -3
  17. package/dist/src/loader/runtime-cjs.js.map +1 -1
  18. package/dist/src/schema.d.ts +301 -143
  19. package/dist/src/schema.d.ts.map +1 -1
  20. package/dist/src/schema.js +26 -0
  21. package/dist/src/schema.js.map +1 -1
  22. package/dist/src/transformers/model-to-narrative/cross-module-imports.d.ts +6 -0
  23. package/dist/src/transformers/model-to-narrative/cross-module-imports.d.ts.map +1 -0
  24. package/dist/src/transformers/model-to-narrative/cross-module-imports.js +63 -0
  25. package/dist/src/transformers/model-to-narrative/cross-module-imports.js.map +1 -0
  26. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts +1 -4
  27. package/dist/src/transformers/model-to-narrative/generators/flow.d.ts.map +1 -1
  28. package/dist/src/transformers/model-to-narrative/generators/flow.js.map +1 -1
  29. package/dist/src/transformers/model-to-narrative/generators/module-code.d.ts +9 -0
  30. package/dist/src/transformers/model-to-narrative/generators/module-code.d.ts.map +1 -0
  31. package/dist/src/transformers/model-to-narrative/generators/module-code.js +102 -0
  32. package/dist/src/transformers/model-to-narrative/generators/module-code.js.map +1 -0
  33. package/dist/src/transformers/model-to-narrative/index.d.ts +6 -4
  34. package/dist/src/transformers/model-to-narrative/index.d.ts.map +1 -1
  35. package/dist/src/transformers/model-to-narrative/index.js +10 -6
  36. package/dist/src/transformers/model-to-narrative/index.js.map +1 -1
  37. package/dist/src/transformers/model-to-narrative/ordering.d.ts +10 -0
  38. package/dist/src/transformers/model-to-narrative/ordering.d.ts.map +1 -0
  39. package/dist/src/transformers/model-to-narrative/ordering.js +37 -0
  40. package/dist/src/transformers/model-to-narrative/ordering.js.map +1 -0
  41. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts +3 -0
  42. package/dist/src/transformers/model-to-narrative/spec-traversal.d.ts.map +1 -0
  43. package/dist/src/transformers/model-to-narrative/spec-traversal.js +54 -0
  44. package/dist/src/transformers/model-to-narrative/spec-traversal.js.map +1 -0
  45. package/dist/src/transformers/model-to-narrative/types.d.ts +12 -0
  46. package/dist/src/transformers/model-to-narrative/types.d.ts.map +1 -0
  47. package/dist/src/transformers/model-to-narrative/types.js +2 -0
  48. package/dist/src/transformers/model-to-narrative/types.js.map +1 -0
  49. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts +8 -0
  50. package/dist/src/transformers/model-to-narrative/validate-modules.d.ts.map +1 -0
  51. package/dist/src/transformers/model-to-narrative/validate-modules.js +121 -0
  52. package/dist/src/transformers/model-to-narrative/validate-modules.js.map +1 -0
  53. package/dist/src/transformers/narrative-to-model/assemble.d.ts.map +1 -1
  54. package/dist/src/transformers/narrative-to-model/assemble.js +5 -1
  55. package/dist/src/transformers/narrative-to-model/assemble.js.map +1 -1
  56. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts +3 -0
  57. package/dist/src/transformers/narrative-to-model/derive-modules.d.ts.map +1 -0
  58. package/dist/src/transformers/narrative-to-model/derive-modules.js +29 -0
  59. package/dist/src/transformers/narrative-to-model/derive-modules.js.map +1 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +4 -4
  62. package/src/getNarratives.specs.ts +214 -1
  63. package/src/getNarratives.ts +1 -1
  64. package/src/id/addAutoIds.specs.ts +180 -0
  65. package/src/id/addAutoIds.ts +16 -1
  66. package/src/id/hasAllIds.specs.ts +87 -0
  67. package/src/id/hasAllIds.ts +10 -2
  68. package/src/index.ts +7 -0
  69. package/src/loader/runtime-cjs.ts +17 -3
  70. package/src/model-to-narrative.specs.ts +467 -17
  71. package/src/schema.ts +28 -0
  72. package/src/transformers/model-to-narrative/cross-module-imports.specs.ts +450 -0
  73. package/src/transformers/model-to-narrative/cross-module-imports.ts +83 -0
  74. package/src/transformers/model-to-narrative/generators/flow.ts +11 -10
  75. package/src/transformers/model-to-narrative/generators/module-code.ts +186 -0
  76. package/src/transformers/model-to-narrative/index.ts +19 -7
  77. package/src/transformers/model-to-narrative/modules.specs.ts +625 -0
  78. package/src/transformers/model-to-narrative/ordering.specs.ts +104 -0
  79. package/src/transformers/model-to-narrative/ordering.ts +46 -0
  80. package/src/transformers/model-to-narrative/spec-traversal.specs.ts +418 -0
  81. package/src/transformers/model-to-narrative/spec-traversal.ts +63 -0
  82. package/src/transformers/model-to-narrative/types.ts +13 -0
  83. package/src/transformers/model-to-narrative/validate-modules.ts +159 -0
  84. package/src/transformers/narrative-to-model/assemble.ts +7 -2
  85. package/src/transformers/narrative-to-model/derive-modules.specs.ts +121 -0
  86. package/src/transformers/narrative-to-model/derive-modules.ts +36 -0
  87. package/tsconfig.test.json +2 -1
@@ -1,4 +1,4 @@
1
- import type { ClientSpecNode, Example, Model, Rule, Slice, Spec, Step } from '../index';
1
+ import type { ClientSpecNode, Example, Model, Module, Rule, Slice, Spec, Step } from '../index';
2
2
 
3
3
  function hasValidId(item: { id?: string }): boolean {
4
4
  return item.id !== undefined && item.id !== '';
@@ -44,6 +44,14 @@ function hasSliceIds(slice: Slice): boolean {
44
44
  return hasValidId(slice) && hasServerSpecIds(slice) && hasClientSpecIds(slice);
45
45
  }
46
46
 
47
+ function hasModuleIds(modules: Module[]): boolean {
48
+ return modules.every(hasValidId);
49
+ }
50
+
47
51
  export function hasAllIds(specs: Model): boolean {
48
- return specs.narratives.every((narrative) => hasValidId(narrative) && narrative.slices.every(hasSliceIds));
52
+ const narrativesValid = specs.narratives.every(
53
+ (narrative) => hasValidId(narrative) && narrative.slices.every(hasSliceIds),
54
+ );
55
+ const modulesValid = hasModuleIds(specs.modules ?? []);
56
+ return narrativesValid && modulesValid;
49
57
  }
package/src/index.ts CHANGED
@@ -71,7 +71,9 @@ export {
71
71
  ExperienceSliceSchema,
72
72
  IntegrationSchema,
73
73
  MessageFieldSchema,
74
+ MessageRefSchema,
74
75
  MessageSchema,
76
+ ModuleSchema,
75
77
  modelSchema as SpecsSystemSchema,
76
78
  modelSchema,
77
79
  NarrativeNamesSchema as NarrativeNamesSystemSchema,
@@ -91,6 +93,7 @@ export {
91
93
 
92
94
  // Testing helpers
93
95
  export { createNarrativeSpec, given as testGiven, when as testWhen } from './testing';
96
+ export type { GeneratedNarratives } from './transformers/model-to-narrative';
94
97
  export { modelToNarrative } from './transformers/model-to-narrative';
95
98
 
96
99
  import type {
@@ -98,7 +101,9 @@ import type {
98
101
  ExampleSchema,
99
102
  ExperienceSliceSchema,
100
103
  MessageFieldSchema,
104
+ MessageRefSchema,
101
105
  MessageSchema,
106
+ ModuleSchema,
102
107
  modelSchema,
103
108
  NarrativeSchema,
104
109
  QuerySliceSchema,
@@ -121,6 +126,8 @@ export type MessageField = z.infer<typeof MessageFieldSchema>;
121
126
  export type Rule = z.infer<typeof RuleSchema>;
122
127
  export type Spec = z.infer<typeof SpecSchema>;
123
128
  export type Step = z.infer<typeof StepSchema>;
129
+ export type Module = z.infer<typeof ModuleSchema>;
130
+ export type MessageRef = z.infer<typeof MessageRefSchema>;
124
131
 
125
132
  // ID assignment utilities
126
133
  export { addAutoIds, hasAllIds } from './id';
@@ -8,16 +8,30 @@ import type { Graph } from './types';
8
8
  const debug = createDebug('auto:flow:runtime');
9
9
  const dImp = createDebug('auto:flow:runtime:require');
10
10
 
11
+ // Conditional Node.js module loading - variable indirection prevents bundler static analysis
12
+ let _createRequire: ((url: string | URL) => NodeRequire) | undefined;
13
+
14
+ if (isNode()) {
15
+ try {
16
+ const id = 'node:module';
17
+ const nodeModule = await import(/* @vite-ignore */ id);
18
+ _createRequire = nodeModule.createRequire;
19
+ } catch {
20
+ // Graceful degradation - fall back to browser-style behavior
21
+ // This handles misconfigured Node builds or edge cases
22
+ }
23
+ }
24
+
11
25
  function isNode(): boolean {
12
26
  return typeof process !== 'undefined' && typeof (process as NodeJS.Process | undefined)?.versions?.node === 'string';
13
27
  }
14
28
 
15
29
  function nodeRequire(spec: string): unknown {
16
- if (!isNode()) {
30
+ if (!_createRequire) {
17
31
  throw new Error('Node require unavailable in browser');
18
32
  }
19
- const req = (0, eval)('require') as (id: string) => unknown;
20
- return req(spec);
33
+ const require = _createRequire(import.meta.url);
34
+ return require(spec);
21
35
  }
22
36
 
23
37
  function makeIntegration(): Integration {