@auto-engineer/narrative 0.20.0 → 0.21.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 (31) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-format.log +1 -1
  3. package/.turbo/turbo-lint.log +1 -1
  4. package/.turbo/turbo-test.log +6 -6
  5. package/.turbo/turbo-type-check.log +5 -4
  6. package/CHANGELOG.md +13 -0
  7. package/dist/src/commands/export-schema-runner.js +6 -1
  8. package/dist/src/commands/export-schema-runner.js.map +1 -1
  9. package/dist/src/fluent-builder.specs.js +2 -2
  10. package/dist/src/fluent-builder.specs.js.map +1 -1
  11. package/dist/src/getNarratives.cache.specs.js +5 -5
  12. package/dist/src/getNarratives.cache.specs.js.map +1 -1
  13. package/dist/src/getNarratives.specs.js +194 -207
  14. package/dist/src/getNarratives.specs.js.map +1 -1
  15. package/dist/src/id/addAutoIds.specs.js +72 -409
  16. package/dist/src/id/addAutoIds.specs.js.map +1 -1
  17. package/dist/src/id/hasAllIds.specs.js +215 -408
  18. package/dist/src/id/hasAllIds.specs.js.map +1 -1
  19. package/dist/src/model-to-narrative.specs.js +505 -564
  20. package/dist/src/model-to-narrative.specs.js.map +1 -1
  21. package/dist/src/narrative-context.specs.js +58 -133
  22. package/dist/src/narrative-context.specs.js.map +1 -1
  23. package/dist/src/schema.d.ts +302 -302
  24. package/dist/src/transformers/narrative-to-model/type-inference.specs.js +94 -104
  25. package/dist/src/transformers/narrative-to-model/type-inference.specs.js.map +1 -1
  26. package/dist/tsconfig.tsbuildinfo +1 -1
  27. package/package.json +4 -4
  28. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts +0 -2
  29. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.d.ts.map +0 -1
  30. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js +0 -142
  31. package/dist/src/transformers/model-to-narrative/generators/gwt.specs.js.map +0 -1
package/package.json CHANGED
@@ -23,9 +23,9 @@
23
23
  "typescript": "^5.9.2",
24
24
  "zod": "^3.22.4",
25
25
  "zod-to-json-schema": "^3.22.3",
26
- "@auto-engineer/file-store": "0.20.0",
27
- "@auto-engineer/id": "0.20.0",
28
- "@auto-engineer/message-bus": "0.20.0"
26
+ "@auto-engineer/file-store": "0.21.0",
27
+ "@auto-engineer/id": "0.21.0",
28
+ "@auto-engineer/message-bus": "0.21.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@types/node": "^20.0.0",
@@ -35,7 +35,7 @@
35
35
  "publishConfig": {
36
36
  "access": "public"
37
37
  },
38
- "version": "0.20.0",
38
+ "version": "0.21.0",
39
39
  "scripts": {
40
40
  "build": "tsx scripts/build.ts",
41
41
  "test": "vitest run --reporter=dot",
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=gwt.specs.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gwt.specs.d.ts","sourceRoot":"","sources":["../../../../../src/transformers/model-to-narrative/generators/gwt.specs.ts"],"names":[],"mappings":""}
@@ -1,142 +0,0 @@
1
- import ts from 'typescript';
2
- import { describe, expect, it } from 'vitest';
3
- import { buildConsolidatedGwtSpecBlock, buildGwtSpecBlock } from './gwt.js';
4
- function printNode(node) {
5
- const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
6
- const sourceFile = ts.createSourceFile('test.ts', '', ts.ScriptTarget.Latest, false, ts.ScriptKind.TS);
7
- return printer.printNode(ts.EmitHint.Unspecified, node, sourceFile);
8
- }
9
- describe('buildGwtSpecBlock', () => {
10
- it('generates builder chain pattern for when+then (no given)', () => {
11
- const gwtBlock = {
12
- when: { commandRef: 'AddTodo', exampleData: { todoId: 'todo-001', description: 'Buy groceries' } },
13
- then: [
14
- {
15
- eventRef: 'TodoAdded',
16
- exampleData: {
17
- todoId: 'todo-001',
18
- description: 'Buy groceries',
19
- status: 'pending',
20
- addedAt: '2030-01-01T09:00:00.000Z',
21
- },
22
- },
23
- ],
24
- ruleDescription: 'todos can be added to the list',
25
- exampleDescription: 'adds a new todo successfully',
26
- ruleId: 'r1B2Cp8Y',
27
- };
28
- const result = buildGwtSpecBlock(ts, ts.factory, gwtBlock, 'command');
29
- const code = printNode(result);
30
- expect(code).toContain('rule("todos can be added to the list"');
31
- expect(code).toContain('"r1B2Cp8Y"');
32
- expect(code).toContain('example("adds a new todo successfully")');
33
- expect(code).toContain('.when<AddTodo>');
34
- expect(code).toContain('.then<TodoAdded>');
35
- expect(code).not.toMatch(/example\("[^"]+",\s*\(\)/);
36
- });
37
- it('generates builder chain pattern for given+when+then', () => {
38
- const gwtBlock = {
39
- given: [
40
- {
41
- eventRef: 'TodoAdded',
42
- exampleData: {
43
- todoId: 'todo-001',
44
- description: 'Buy groceries',
45
- status: 'pending',
46
- addedAt: '2030-01-01T09:00:00.000Z',
47
- },
48
- },
49
- ],
50
- when: { commandRef: 'MarkTodoInProgress', exampleData: { todoId: 'todo-001' } },
51
- then: [
52
- {
53
- eventRef: 'TodoMarkedInProgress',
54
- exampleData: { todoId: 'todo-001', markedAt: '2030-01-01T10:00:00.000Z' },
55
- },
56
- ],
57
- ruleDescription: 'todos can be moved to in progress',
58
- exampleDescription: 'moves a pending todo to in progress',
59
- ruleId: 'r2C3Dq9Z',
60
- };
61
- const result = buildGwtSpecBlock(ts, ts.factory, gwtBlock, 'command');
62
- const code = printNode(result);
63
- expect(code).toContain('example("moves a pending todo to in progress")');
64
- expect(code).toContain('.given<TodoAdded>');
65
- expect(code).toContain('.when<MarkTodoInProgress>');
66
- expect(code).toContain('.then<TodoMarkedInProgress>');
67
- expect(code).not.toMatch(/example\("[^"]+",\s*\(\)/);
68
- });
69
- it('generates builder chain with .and() for multiple given events', () => {
70
- const gwtBlock = {
71
- given: [
72
- {
73
- eventRef: 'TodoAdded',
74
- exampleData: { todoId: 'todo-001', description: 'Buy groceries', status: 'pending' },
75
- },
76
- {
77
- eventRef: 'TodoMarkedInProgress',
78
- exampleData: { todoId: 'todo-001', markedAt: '2030-01-01T10:00:00.000Z' },
79
- },
80
- ],
81
- when: { commandRef: 'MarkTodoComplete', exampleData: { todoId: 'todo-001' } },
82
- then: [
83
- {
84
- eventRef: 'TodoMarkedComplete',
85
- exampleData: { todoId: 'todo-001', completedAt: '2030-01-01T11:00:00.000Z' },
86
- },
87
- ],
88
- ruleDescription: 'todos can be marked as complete',
89
- exampleDescription: 'marks an in-progress todo as complete',
90
- ruleId: 'r3D4Eq0A',
91
- };
92
- const result = buildGwtSpecBlock(ts, ts.factory, gwtBlock, 'command');
93
- const code = printNode(result);
94
- expect(code).toContain('.given<TodoAdded>');
95
- expect(code).toContain('.and<TodoMarkedInProgress>');
96
- expect(code).toContain('.when<MarkTodoComplete>');
97
- expect(code).toContain('.then<TodoMarkedComplete>');
98
- expect(code).not.toMatch(/example\("[^"]+",\s*\(\)/);
99
- });
100
- it('still wraps example in rule callback', () => {
101
- const gwtBlock = {
102
- when: { commandRef: 'AddTodo', exampleData: { todoId: 'todo-001' } },
103
- then: [{ eventRef: 'TodoAdded', exampleData: { todoId: 'todo-001' } }],
104
- ruleDescription: 'test rule',
105
- exampleDescription: 'test example',
106
- ruleId: 'testId',
107
- };
108
- const result = buildGwtSpecBlock(ts, ts.factory, gwtBlock, 'command');
109
- const code = printNode(result);
110
- expect(code).toMatch(/rule\([^)]+\)\s*=>/);
111
- });
112
- });
113
- describe('buildConsolidatedGwtSpecBlock', () => {
114
- it('generates multiple examples with builder chain pattern', () => {
115
- const rule = { id: 'r3D4Eq0A', description: 'todos can be marked as complete' };
116
- const gwtBlocks = [
117
- {
118
- given: [{ eventRef: 'TodoAdded', exampleData: { todoId: 'todo-001' } }],
119
- when: { commandRef: 'MarkTodoComplete', exampleData: { todoId: 'todo-001' } },
120
- then: [{ eventRef: 'TodoMarkedComplete', exampleData: { todoId: 'todo-001' } }],
121
- exampleDescription: 'marks an in-progress todo as complete',
122
- },
123
- {
124
- given: [{ eventRef: 'TodoAdded', exampleData: { todoId: 'todo-002' } }],
125
- when: { commandRef: 'MarkTodoComplete', exampleData: { todoId: 'todo-002' } },
126
- then: [{ eventRef: 'TodoMarkedComplete', exampleData: { todoId: 'todo-002' } }],
127
- exampleDescription: 'marks a pending todo directly as complete',
128
- },
129
- ];
130
- const result = buildConsolidatedGwtSpecBlock(ts, ts.factory, rule, gwtBlocks, 'command');
131
- const code = printNode(result);
132
- expect(code).toContain('rule("todos can be marked as complete"');
133
- expect(code).toContain('"r3D4Eq0A"');
134
- expect(code).toContain('example("marks an in-progress todo as complete")');
135
- expect(code).toContain('example("marks a pending todo directly as complete")');
136
- expect(code).toContain('.given<TodoAdded>');
137
- expect(code).toContain('.when<MarkTodoComplete>');
138
- expect(code).toContain('.then<TodoMarkedComplete>');
139
- expect(code).not.toMatch(/example\("[^"]+",\s*\(\)/);
140
- });
141
- });
142
- //# sourceMappingURL=gwt.specs.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gwt.specs.js","sourceRoot":"","sources":["../../../../../src/transformers/model-to-narrative/generators/gwt.specs.ts"],"names":[],"mappings":"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"}