@auto-engineer/pipeline 1.65.0 → 1.67.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 (120) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +6 -6
  3. package/.turbo/turbo-type-check.log +1 -1
  4. package/CHANGELOG.md +135 -0
  5. package/dist/src/builder/define-v2.d.ts +101 -0
  6. package/dist/src/builder/define-v2.d.ts.map +1 -0
  7. package/dist/src/builder/define-v2.js +209 -0
  8. package/dist/src/builder/define-v2.js.map +1 -0
  9. package/dist/src/engine/command-dispatcher.d.ts +31 -0
  10. package/dist/src/engine/command-dispatcher.d.ts.map +1 -0
  11. package/dist/src/engine/command-dispatcher.js +26 -0
  12. package/dist/src/engine/command-dispatcher.js.map +1 -0
  13. package/dist/src/engine/event-router.d.ts +21 -0
  14. package/dist/src/engine/event-router.d.ts.map +1 -0
  15. package/dist/src/engine/event-router.js +22 -0
  16. package/dist/src/engine/event-router.js.map +1 -0
  17. package/dist/src/engine/index.d.ts +15 -0
  18. package/dist/src/engine/index.d.ts.map +1 -0
  19. package/dist/src/engine/index.js +15 -0
  20. package/dist/src/engine/index.js.map +1 -0
  21. package/dist/src/engine/pipeline-engine.d.ts +37 -0
  22. package/dist/src/engine/pipeline-engine.d.ts.map +1 -0
  23. package/dist/src/engine/pipeline-engine.js +53 -0
  24. package/dist/src/engine/pipeline-engine.js.map +1 -0
  25. package/dist/src/engine/projections/item-status.d.ts +9 -0
  26. package/dist/src/engine/projections/item-status.d.ts.map +1 -0
  27. package/dist/src/engine/projections/item-status.js +9 -0
  28. package/dist/src/engine/projections/item-status.js.map +1 -0
  29. package/dist/src/engine/projections/latest-run.d.ts +9 -0
  30. package/dist/src/engine/projections/latest-run.d.ts.map +1 -0
  31. package/dist/src/engine/projections/latest-run.js +9 -0
  32. package/dist/src/engine/projections/latest-run.js.map +1 -0
  33. package/dist/src/engine/projections/message-log.d.ts +9 -0
  34. package/dist/src/engine/projections/message-log.d.ts.map +1 -0
  35. package/dist/src/engine/projections/message-log.js +10 -0
  36. package/dist/src/engine/projections/message-log.js.map +1 -0
  37. package/dist/src/engine/projections/node-status.d.ts +9 -0
  38. package/dist/src/engine/projections/node-status.d.ts.map +1 -0
  39. package/dist/src/engine/projections/node-status.js +9 -0
  40. package/dist/src/engine/projections/node-status.js.map +1 -0
  41. package/dist/src/engine/projections/stats.d.ts +9 -0
  42. package/dist/src/engine/projections/stats.d.ts.map +1 -0
  43. package/dist/src/engine/projections/stats.js +9 -0
  44. package/dist/src/engine/projections/stats.js.map +1 -0
  45. package/dist/src/engine/sqlite-consumer.d.ts +11 -0
  46. package/dist/src/engine/sqlite-consumer.d.ts.map +1 -0
  47. package/dist/src/engine/sqlite-consumer.js +27 -0
  48. package/dist/src/engine/sqlite-consumer.js.map +1 -0
  49. package/dist/src/engine/sqlite-store.d.ts +10 -0
  50. package/dist/src/engine/sqlite-store.d.ts.map +1 -0
  51. package/dist/src/engine/sqlite-store.js +14 -0
  52. package/dist/src/engine/sqlite-store.js.map +1 -0
  53. package/dist/src/engine/workflow-processor.d.ts +20 -0
  54. package/dist/src/engine/workflow-processor.d.ts.map +1 -0
  55. package/dist/src/engine/workflow-processor.js +36 -0
  56. package/dist/src/engine/workflow-processor.js.map +1 -0
  57. package/dist/src/engine/workflows/await-workflow.d.ts +33 -0
  58. package/dist/src/engine/workflows/await-workflow.d.ts.map +1 -0
  59. package/dist/src/engine/workflows/await-workflow.js +45 -0
  60. package/dist/src/engine/workflows/await-workflow.js.map +1 -0
  61. package/dist/src/engine/workflows/phased-workflow.d.ts +64 -0
  62. package/dist/src/engine/workflows/phased-workflow.d.ts.map +1 -0
  63. package/dist/src/engine/workflows/phased-workflow.js +103 -0
  64. package/dist/src/engine/workflows/phased-workflow.js.map +1 -0
  65. package/dist/src/engine/workflows/settled-workflow.d.ts +62 -0
  66. package/dist/src/engine/workflows/settled-workflow.d.ts.map +1 -0
  67. package/dist/src/engine/workflows/settled-workflow.js +92 -0
  68. package/dist/src/engine/workflows/settled-workflow.js.map +1 -0
  69. package/dist/src/graph/types.d.ts +1 -1
  70. package/dist/src/graph/types.d.ts.map +1 -1
  71. package/dist/src/index.d.ts +2 -0
  72. package/dist/src/index.d.ts.map +1 -1
  73. package/dist/src/index.js +2 -0
  74. package/dist/src/index.js.map +1 -1
  75. package/dist/src/server/pipeline-server-v2.d.ts +48 -0
  76. package/dist/src/server/pipeline-server-v2.d.ts.map +1 -0
  77. package/dist/src/server/pipeline-server-v2.js +61 -0
  78. package/dist/src/server/pipeline-server-v2.js.map +1 -0
  79. package/dist/src/server/pipeline-server.d.ts +5 -1
  80. package/dist/src/server/pipeline-server.d.ts.map +1 -1
  81. package/dist/src/server/pipeline-server.js +71 -10
  82. package/dist/src/server/pipeline-server.js.map +1 -1
  83. package/dist/tsconfig.tsbuildinfo +1 -1
  84. package/ketchup-plan.md +13 -0
  85. package/package.json +3 -3
  86. package/src/builder/define-v2.specs.ts +236 -0
  87. package/src/builder/define-v2.ts +351 -0
  88. package/src/engine/command-dispatcher.specs.ts +62 -0
  89. package/src/engine/command-dispatcher.ts +46 -0
  90. package/src/engine/event-router.specs.ts +75 -0
  91. package/src/engine/event-router.ts +36 -0
  92. package/src/engine/index.ts +39 -0
  93. package/src/engine/pipeline-engine-e2e.specs.ts +776 -0
  94. package/src/engine/pipeline-engine.integration.specs.ts +126 -0
  95. package/src/engine/pipeline-engine.specs.ts +70 -0
  96. package/src/engine/pipeline-engine.ts +82 -0
  97. package/src/engine/projections/item-status.ts +11 -0
  98. package/src/engine/projections/latest-run.ts +10 -0
  99. package/src/engine/projections/message-log.ts +11 -0
  100. package/src/engine/projections/node-status.ts +10 -0
  101. package/src/engine/projections/projections.specs.ts +176 -0
  102. package/src/engine/projections/stats.ts +10 -0
  103. package/src/engine/sqlite-consumer.specs.ts +42 -0
  104. package/src/engine/sqlite-consumer.ts +34 -0
  105. package/src/engine/sqlite-store.specs.ts +46 -0
  106. package/src/engine/sqlite-store.ts +21 -0
  107. package/src/engine/workflow-processor.specs.ts +37 -0
  108. package/src/engine/workflow-processor.ts +57 -0
  109. package/src/engine/workflows/await-workflow.specs.ts +104 -0
  110. package/src/engine/workflows/await-workflow.ts +66 -0
  111. package/src/engine/workflows/phased-workflow.specs.ts +383 -0
  112. package/src/engine/workflows/phased-workflow.ts +153 -0
  113. package/src/engine/workflows/settled-workflow.specs.ts +364 -0
  114. package/src/engine/workflows/settled-workflow.ts +139 -0
  115. package/src/graph/types.ts +1 -1
  116. package/src/index.ts +2 -0
  117. package/src/server/pipeline-server-v2.specs.ts +91 -0
  118. package/src/server/pipeline-server-v2.ts +70 -0
  119. package/src/server/pipeline-server.specs.ts +327 -134
  120. package/src/server/pipeline-server.ts +77 -11
@@ -1,5 +1,5 @@
1
1
 
2
- > @auto-engineer/pipeline@1.65.0 build /home/runner/work/auto-engineer/auto-engineer/packages/pipeline
2
+ > @auto-engineer/pipeline@1.67.0 build /home/runner/work/auto-engineer/auto-engineer/packages/pipeline
3
3
  > tsc && tsx ../../scripts/fix-esm-imports.ts
4
4
 
5
5
  Fixed ESM imports in dist/
@@ -1,14 +1,14 @@
1
1
 
2
- > @auto-engineer/pipeline@1.64.0 test /home/runner/work/auto-engineer/auto-engineer/packages/pipeline
2
+ > @auto-engineer/pipeline@1.66.0 test /home/runner/work/auto-engineer/auto-engineer/packages/pipeline
3
3
  > vitest run --reporter=dot
4
4
 
5
5
 
6
6
   RUN  v3.2.4 /home/runner/work/auto-engineer/auto-engineer/packages/pipeline
7
7
 
8
- ·······························································································································································································································································································································································································································································································
8
+ ·················································································································································································································································································································································································································································································································································································································
9
9
 
10
-  Test Files  27 passed (27)
11
-  Tests  479 passed (479)
12
-  Start at  03:27:38
13
-  Duration  23.55s (transform 5.84s, setup 0ms, collect 9.84s, tests 19.84s, environment 12ms, prepare 15.51s)
10
+  Test Files  41 passed (41)
11
+  Tests  593 passed (593)
12
+  Start at  08:27:38
13
+  Duration  31.18s (transform 7.97s, setup 0ms, collect 15.35s, tests 25.80s, environment 66ms, prepare 20.75s)
14
14
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @auto-engineer/pipeline@1.64.0 type-check /home/runner/work/auto-engineer/auto-engineer/packages/pipeline
2
+ > @auto-engineer/pipeline@1.66.0 type-check /home/runner/work/auto-engineer/auto-engineer/packages/pipeline
3
3
  > tsc --noEmit
4
4
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,140 @@
1
1
  # @auto-engineer/pipeline
2
2
 
3
+ ## 1.67.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`2132223`](https://github.com/BeOnAuto/auto-engineer/commit/2132223077bdc181cc7a5e5197fba921275056d6) Thanks [@SamHatoum](https://github.com/SamHatoum)! - - **pipeline**: emit PipelineRestarted event on RestartPipeline command
8
+ - **pipeline**: add SQLite persistence with dual-write and replay on startup
9
+ - **pipeline**: session-based status tracking
10
+ - **pipeline**: parallelize emit mapping commands with Promise.all
11
+ - **pipeline**: pipeline server v2 with POST /command, GET /health, /registry, /events SSE
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [[`2132223`](https://github.com/BeOnAuto/auto-engineer/commit/2132223077bdc181cc7a5e5197fba921275056d6)]:
16
+ - @auto-engineer/file-store@1.67.0
17
+ - @auto-engineer/message-bus@1.67.0
18
+
19
+ ## 1.66.0
20
+
21
+ ### Minor Changes
22
+
23
+ - 675ef99: - **pipeline**: settled decide returns SettledFailed when no retries left
24
+ - 3a2b8db: - **pipeline**: define-v2 toGraph() converts registrations to GraphIR
25
+ - 2934f85: - **pipeline**: createPipelineStore wraps SQLite event store
26
+ - b824630: - **pipeline**: session-based status tracking
27
+ - 3c013d7: - **pipeline**: settled decide returns RetryCommands on failure with retries left
28
+ - b0436c1: - **pipeline**: define-v2 on().emit() and on().handle() registrations
29
+ - 6cbae5c: - **pipeline**: settled decide returns [] when not all commands complete
30
+ - 34a0fd1: - **pipeline**: emit PipelineRestarted event on RestartPipeline command
31
+ - aa5cb13: - **pipeline**: settled workflow evolve tracks command starts and completions
32
+ - 5916594: - **pipeline**: parallelize emit mapping commands with Promise.all
33
+ - e44989c: - **pipeline**: sqlite consumer polls events in order from store
34
+ - bede5a3: - **pipeline**: engine projections wrap existing evolve functions for SQLite
35
+ - af1e4b6: - **packages/react-component-implementer**: fixes component generation
36
+ - **packages/generate-react-client**: fixes types
37
+ - **packages/generate-react-client**: improves starter
38
+ - **global**: version packages
39
+ - 00d3142: - **pipeline**: phased decide advances to next phase when current completes
40
+ - 0e9abee: - **pipeline**: pipeline server v2 with POST /command, GET /health, /registry, /events SSE
41
+ - 27c3b2a: - **pipeline**: pipeline engine wires dispatcher, router, and workflow processor
42
+ - 8002c21: - **pipeline**: event router dispatches commands for emit mappings
43
+ - 47ae70c: - **pipeline**: add SQLite persistence with dual-write and replay on startup
44
+ - 9e1658a: - **pipeline**: command dispatcher finds handler by command type
45
+ - 95399f7: - **pipeline**: settled decide returns AllSettled when all pass
46
+ - 1997734: - **pipeline**: dispatchAndStore appends command result events to store
47
+ - ea43b36: - **pipeline**: phased decide dispatches phase 0 commands on start
48
+ - 25dadc8: - **pipeline**: define-v2 .on().forEach().groupInto().process() produces PhasedRegistration
49
+ - 9d4d240: - **pipeline**: await workflow evolve tracks key completions
50
+ - f7c5dba: - **pipeline**: define-v2 .settled() produces SettledRegistration
51
+ - d6c7b68: - **pipeline**: await decide returns AwaitCompleted when all resolved
52
+ - bdc4728: - **pipeline**: createSettledWorkflow factory from DSL params
53
+
54
+ ### Patch Changes
55
+
56
+ - 613a84b: - Fixed incorrect indentation for .env and client entries in the typical example configuration
57
+ - b7739f4: - **pipeline**: integration tests for engine pipeline flow
58
+ - ba42186: - **pipeline**: mark all durable pipeline bursts done
59
+ - ab5f5cb: - **job-graph-processor**: verify ready jobs dispatch in parallel
60
+ - 68734cd: - **pipeline**: add replay bug reproduction e2e test
61
+ - 0d1bbff: - **pipeline**: add E2E test suite bursts to ketchup plan
62
+ - c418bbf: - **pipeline**: mark all E2E bursts complete in ketchup plan
63
+ - 7fecdac: - **pipeline**: add multi-archetype combined pipeline e2e test
64
+ - 75f7b31: - **pipeline**: add concurrency and non-blocking e2e tests
65
+ - 09bb123: - **pipeline**: add settled all-pass e2e test
66
+ - ef92bf1: - **pipeline**: add durable SQLite persistence bursts to plan
67
+ - cf0e26e: - **pipeline**: add graph visualization e2e test
68
+ - c5d3c0d: - **pipeline**: add await workflow e2e test
69
+ - 1c79ada: - **pipeline**: update ketchup plan — 44/48 bursts complete
70
+ - a3353c9: - **pipeline**: add parallel scatter-gather bursts P-1 to P-3
71
+ - e89fda3: - **pipeline**: mark session tracking bursts done in ketchup plan
72
+ - 19f89b4: - **pipeline**: add phased sequential execution e2e test
73
+ - a6a2567: - **pipeline**: add settled retry and failure e2e tests
74
+ - e1f9019: - **pipeline**: mark SQLite persistence bursts done in plan
75
+ - 5ca50f2: - **pipeline**: add ketchup plan for Emmett engine migration
76
+ - f5a1a84: - **pipeline**: add phased stopOnFailure e2e test
77
+ - 9da7fb4: - **pipeline**: add session-based status tracking bursts to ketchup plan
78
+ - f09beb4: - **job-graph-processor**: add parallel dispatch verification burst P-4
79
+ - fd92e76: - **pipeline**: settled scatter-gather runs checks in parallel
80
+ - 2a23265: - **pipeline**: add e2e test harness and emit chain tests
81
+ - 8561e33: - **pipeline**: add v2 pipeline exports to package barrel
82
+ - Updated dependencies [613a84b]
83
+ - Updated dependencies [b7739f4]
84
+ - Updated dependencies [ba42186]
85
+ - Updated dependencies [675ef99]
86
+ - Updated dependencies [ab5f5cb]
87
+ - Updated dependencies [68734cd]
88
+ - Updated dependencies [3a2b8db]
89
+ - Updated dependencies [0d1bbff]
90
+ - Updated dependencies [2934f85]
91
+ - Updated dependencies [c418bbf]
92
+ - Updated dependencies [b824630]
93
+ - Updated dependencies [7fecdac]
94
+ - Updated dependencies [3c013d7]
95
+ - Updated dependencies [b0436c1]
96
+ - Updated dependencies [75f7b31]
97
+ - Updated dependencies [09bb123]
98
+ - Updated dependencies [6cbae5c]
99
+ - Updated dependencies [ef92bf1]
100
+ - Updated dependencies [cf0e26e]
101
+ - Updated dependencies [34a0fd1]
102
+ - Updated dependencies [c5d3c0d]
103
+ - Updated dependencies [1c79ada]
104
+ - Updated dependencies [a3353c9]
105
+ - Updated dependencies [aa5cb13]
106
+ - Updated dependencies [e89fda3]
107
+ - Updated dependencies [19f89b4]
108
+ - Updated dependencies [5916594]
109
+ - Updated dependencies [a6a2567]
110
+ - Updated dependencies [e44989c]
111
+ - Updated dependencies [bede5a3]
112
+ - Updated dependencies [af1e4b6]
113
+ - Updated dependencies [e1f9019]
114
+ - Updated dependencies [00d3142]
115
+ - Updated dependencies [0e9abee]
116
+ - Updated dependencies [27c3b2a]
117
+ - Updated dependencies [5ca50f2]
118
+ - Updated dependencies [8002c21]
119
+ - Updated dependencies [47ae70c]
120
+ - Updated dependencies [f5a1a84]
121
+ - Updated dependencies [9e1658a]
122
+ - Updated dependencies [9da7fb4]
123
+ - Updated dependencies [95399f7]
124
+ - Updated dependencies [1997734]
125
+ - Updated dependencies [ea43b36]
126
+ - Updated dependencies [25dadc8]
127
+ - Updated dependencies [9d4d240]
128
+ - Updated dependencies [f09beb4]
129
+ - Updated dependencies [f7c5dba]
130
+ - Updated dependencies [fd92e76]
131
+ - Updated dependencies [2a23265]
132
+ - Updated dependencies [8561e33]
133
+ - Updated dependencies [d6c7b68]
134
+ - Updated dependencies [bdc4728]
135
+ - @auto-engineer/file-store@1.66.0
136
+ - @auto-engineer/message-bus@1.66.0
137
+
3
138
  ## 1.65.0
4
139
 
5
140
  ### Minor Changes
@@ -0,0 +1,101 @@
1
+ import type { GraphIR } from '../graph/types';
2
+ type EmitRegistration = {
3
+ type: 'emit';
4
+ eventType: string;
5
+ commands: Array<{
6
+ commandType: string;
7
+ data: Record<string, unknown> | ((event: Record<string, unknown>) => Record<string, unknown>);
8
+ }>;
9
+ };
10
+ type CustomHandlerRegistration = {
11
+ type: 'custom';
12
+ eventType: string;
13
+ handler: (event: {
14
+ type: string;
15
+ data: Record<string, unknown>;
16
+ }) => Array<{
17
+ type: string;
18
+ data: Record<string, unknown>;
19
+ }> | Promise<Array<{
20
+ type: string;
21
+ data: Record<string, unknown>;
22
+ }>>;
23
+ };
24
+ export type SettledRegistration = {
25
+ type: 'settled';
26
+ commandTypes: string[];
27
+ maxRetries?: number;
28
+ };
29
+ export type PhasedRegistration = {
30
+ type: 'phased';
31
+ eventType: string;
32
+ phases: string[];
33
+ stopOnFailure: boolean;
34
+ };
35
+ export type AwaitRegistration = {
36
+ type: 'await';
37
+ eventType: string;
38
+ keys: string[];
39
+ };
40
+ type Registration = EmitRegistration | CustomHandlerRegistration | SettledRegistration | PhasedRegistration | AwaitRegistration;
41
+ export type PipelineV2 = {
42
+ name: string;
43
+ registrations: Registration[];
44
+ };
45
+ type EmitChain = {
46
+ emit(commandType: string, data: Record<string, unknown> | ((event: Record<string, unknown>) => Record<string, unknown>)): EmitChain;
47
+ on(eventType: string): TriggerBuilder;
48
+ build(): PipelineV2;
49
+ };
50
+ type HandleChain = {
51
+ on(eventType: string): TriggerBuilder;
52
+ build(): PipelineV2;
53
+ };
54
+ type ProcessChain = {
55
+ stopOnFailure(): ProcessChain;
56
+ on(eventType: string): TriggerBuilder;
57
+ build(): PipelineV2;
58
+ };
59
+ type GroupIntoChain = {
60
+ process(): ProcessChain;
61
+ };
62
+ type ForEachChain = {
63
+ groupInto(phases: string[]): GroupIntoChain;
64
+ };
65
+ type AwaitAllChain = {
66
+ on(eventType: string): TriggerBuilder;
67
+ build(): PipelineV2;
68
+ };
69
+ type RunChain = {
70
+ awaitAll(): AwaitAllChain;
71
+ };
72
+ type TriggerBuilder = {
73
+ emit(commandType: string, data: Record<string, unknown> | ((event: Record<string, unknown>) => Record<string, unknown>)): EmitChain;
74
+ handle(handler: (event: {
75
+ type: string;
76
+ data: Record<string, unknown>;
77
+ }) => Array<{
78
+ type: string;
79
+ data: Record<string, unknown>;
80
+ }> | Promise<Array<{
81
+ type: string;
82
+ data: Record<string, unknown>;
83
+ }>>): HandleChain;
84
+ forEach(): ForEachChain;
85
+ run(keys: string[]): RunChain;
86
+ };
87
+ type SettledChain = {
88
+ maxRetries(n: number): SettledChain;
89
+ on(eventType: string): TriggerBuilder;
90
+ settled(commandTypes: string[]): SettledChain;
91
+ build(): PipelineV2;
92
+ };
93
+ type PipelineV2Builder = {
94
+ on(eventType: string): TriggerBuilder;
95
+ settled(commandTypes: string[]): SettledChain;
96
+ build(): PipelineV2;
97
+ };
98
+ export declare function defineV2(name: string): PipelineV2Builder;
99
+ export declare function toGraph(pipeline: PipelineV2): GraphIR;
100
+ export {};
101
+ //# sourceMappingURL=define-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-v2.d.ts","sourceRoot":"","sources":["../../../src/builder/define-v2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ export function defineV2(name) {
2
+ const registrations = [];
3
+ function createEmitChain(registration) {
4
+ return {
5
+ emit(commandType, data) {
6
+ registration.commands.push({ commandType, data });
7
+ return createEmitChain(registration);
8
+ },
9
+ on(eventType) {
10
+ return createTriggerBuilder(eventType);
11
+ },
12
+ build() {
13
+ return { name, registrations };
14
+ },
15
+ };
16
+ }
17
+ function createHandleChain() {
18
+ return {
19
+ on(eventType) {
20
+ return createTriggerBuilder(eventType);
21
+ },
22
+ build() {
23
+ return { name, registrations };
24
+ },
25
+ };
26
+ }
27
+ function createProcessChain(registration) {
28
+ return {
29
+ stopOnFailure() {
30
+ registration.stopOnFailure = true;
31
+ return createProcessChain(registration);
32
+ },
33
+ on(eventType) {
34
+ return createTriggerBuilder(eventType);
35
+ },
36
+ build() {
37
+ return { name, registrations };
38
+ },
39
+ };
40
+ }
41
+ function createForEachChain(eventType) {
42
+ return {
43
+ groupInto(phases) {
44
+ return {
45
+ process() {
46
+ const registration = {
47
+ type: 'phased',
48
+ eventType,
49
+ phases,
50
+ stopOnFailure: false,
51
+ };
52
+ registrations.push(registration);
53
+ return createProcessChain(registration);
54
+ },
55
+ };
56
+ },
57
+ };
58
+ }
59
+ function createAwaitAllChain() {
60
+ return {
61
+ on(eventType) {
62
+ return createTriggerBuilder(eventType);
63
+ },
64
+ build() {
65
+ return { name, registrations };
66
+ },
67
+ };
68
+ }
69
+ function createRunChain(eventType, keys) {
70
+ return {
71
+ awaitAll() {
72
+ const registration = {
73
+ type: 'await',
74
+ eventType,
75
+ keys,
76
+ };
77
+ registrations.push(registration);
78
+ return createAwaitAllChain();
79
+ },
80
+ };
81
+ }
82
+ function createTriggerBuilder(eventType) {
83
+ return {
84
+ emit(commandType, data) {
85
+ const registration = {
86
+ type: 'emit',
87
+ eventType,
88
+ commands: [{ commandType, data }],
89
+ };
90
+ registrations.push(registration);
91
+ return createEmitChain(registration);
92
+ },
93
+ handle(handler) {
94
+ const registration = {
95
+ type: 'custom',
96
+ eventType,
97
+ handler,
98
+ };
99
+ registrations.push(registration);
100
+ return createHandleChain();
101
+ },
102
+ forEach() {
103
+ return createForEachChain(eventType);
104
+ },
105
+ run(keys) {
106
+ return createRunChain(eventType, keys);
107
+ },
108
+ };
109
+ }
110
+ function createSettledChain(registration) {
111
+ return {
112
+ maxRetries(n) {
113
+ registration.maxRetries = n;
114
+ return createSettledChain(registration);
115
+ },
116
+ on(eventType) {
117
+ return createTriggerBuilder(eventType);
118
+ },
119
+ settled(commandTypes) {
120
+ const reg = { type: 'settled', commandTypes };
121
+ registrations.push(reg);
122
+ return createSettledChain(reg);
123
+ },
124
+ build() {
125
+ return { name, registrations };
126
+ },
127
+ };
128
+ }
129
+ return {
130
+ on(eventType) {
131
+ return createTriggerBuilder(eventType);
132
+ },
133
+ settled(commandTypes) {
134
+ const registration = { type: 'settled', commandTypes };
135
+ registrations.push(registration);
136
+ return createSettledChain(registration);
137
+ },
138
+ build() {
139
+ return { name, registrations };
140
+ },
141
+ };
142
+ }
143
+ function addNode(ctx, id, type, label) {
144
+ if (!ctx.nodeMap.has(id)) {
145
+ ctx.nodeMap.set(id, { id, type, label });
146
+ }
147
+ }
148
+ function processEmitRegistration(ctx, reg) {
149
+ addNode(ctx, `evt:${reg.eventType}`, 'event', reg.eventType);
150
+ for (const cmd of reg.commands) {
151
+ addNode(ctx, `cmd:${cmd.commandType}`, 'command', cmd.commandType);
152
+ ctx.edges.push({ from: `evt:${reg.eventType}`, to: `cmd:${cmd.commandType}` });
153
+ }
154
+ }
155
+ function processCustomRegistration(ctx, reg) {
156
+ addNode(ctx, `evt:${reg.eventType}`, 'event', reg.eventType);
157
+ addNode(ctx, `handler:${reg.eventType}`, 'command', `${reg.eventType} handler`);
158
+ ctx.edges.push({ from: `evt:${reg.eventType}`, to: `handler:${reg.eventType}` });
159
+ }
160
+ function processSettledRegistration(ctx, reg) {
161
+ const settledNodeId = `settled:${reg.commandTypes.join(',')}`;
162
+ addNode(ctx, settledNodeId, 'settled', 'Settled');
163
+ for (const commandType of reg.commandTypes) {
164
+ addNode(ctx, `cmd:${commandType}`, 'command', commandType);
165
+ ctx.edges.push({ from: `cmd:${commandType}`, to: settledNodeId });
166
+ }
167
+ }
168
+ function processPhasedRegistration(ctx, reg) {
169
+ addNode(ctx, `evt:${reg.eventType}`, 'event', reg.eventType);
170
+ const phasedNodeId = `phased:${reg.phases.join(',')}`;
171
+ addNode(ctx, phasedNodeId, 'phased', reg.phases.join(' → '));
172
+ ctx.edges.push({ from: `evt:${reg.eventType}`, to: phasedNodeId });
173
+ }
174
+ function processAwaitRegistration(ctx, reg) {
175
+ addNode(ctx, `evt:${reg.eventType}`, 'event', reg.eventType);
176
+ const awaitNodeId = `await:${reg.keys.join(',')}`;
177
+ addNode(ctx, awaitNodeId, 'await', reg.keys.join(', '));
178
+ ctx.edges.push({ from: `evt:${reg.eventType}`, to: awaitNodeId });
179
+ }
180
+ export function toGraph(pipeline) {
181
+ const ctx = {
182
+ nodeMap: new Map(),
183
+ edges: [],
184
+ };
185
+ for (const reg of pipeline.registrations) {
186
+ switch (reg.type) {
187
+ case 'emit':
188
+ processEmitRegistration(ctx, reg);
189
+ break;
190
+ case 'custom':
191
+ processCustomRegistration(ctx, reg);
192
+ break;
193
+ case 'settled':
194
+ processSettledRegistration(ctx, reg);
195
+ break;
196
+ case 'phased':
197
+ processPhasedRegistration(ctx, reg);
198
+ break;
199
+ case 'await':
200
+ processAwaitRegistration(ctx, reg);
201
+ break;
202
+ }
203
+ }
204
+ return {
205
+ nodes: Array.from(ctx.nodeMap.values()),
206
+ edges: ctx.edges,
207
+ };
208
+ }
209
+ //# sourceMappingURL=define-v2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-v2.js","sourceRoot":"","sources":["../../../src/builder/define-v2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { SQLiteEventStore } from '@event-driven-io/emmett-sqlite';
2
+ type CommandHandler = (command: {
3
+ type: string;
4
+ data: Record<string, unknown>;
5
+ }) => Array<{
6
+ type: string;
7
+ data: Record<string, unknown>;
8
+ }> | Promise<Array<{
9
+ type: string;
10
+ data: Record<string, unknown>;
11
+ }>>;
12
+ export declare function createCommandDispatcher(): {
13
+ register(commandType: string, handler: CommandHandler): void;
14
+ registeredTypes(): string[];
15
+ dispatch(command: {
16
+ type: string;
17
+ data: Record<string, unknown>;
18
+ }): Promise<Array<{
19
+ type: string;
20
+ data: Record<string, unknown>;
21
+ }>>;
22
+ };
23
+ export declare function dispatchAndStore(dispatcher: ReturnType<typeof createCommandDispatcher>, eventStore: SQLiteEventStore, streamName: string, command: {
24
+ type: string;
25
+ data: Record<string, unknown>;
26
+ }): Promise<Array<{
27
+ type: string;
28
+ data: Record<string, unknown>;
29
+ }>>;
30
+ export {};
31
+ //# sourceMappingURL=command-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-dispatcher.d.ts","sourceRoot":"","sources":["../../../src/engine/command-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,KAAK,cAAc,GAAG,CAAC,OAAO,EAAE;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B,KACG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,GACtD,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC,CAAC;AAEpE,wBAAgB,uBAAuB;0BAIb,MAAM,WAAW,cAAc,GAAG,IAAI;uBAIzC,MAAM,EAAE;sBAIH;QACtB,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/B,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;EAQtE;AAED,wBAAsB,gBAAgB,CACpC,UAAU,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC,EACtD,UAAU,EAAE,gBAAgB,EAC5B,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACvD,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC,CAAC,CAMjE"}
@@ -0,0 +1,26 @@
1
+ export function createCommandDispatcher() {
2
+ const handlers = new Map();
3
+ return {
4
+ register(commandType, handler) {
5
+ handlers.set(commandType, handler);
6
+ },
7
+ registeredTypes() {
8
+ return [...handlers.keys()];
9
+ },
10
+ async dispatch(command) {
11
+ const handler = handlers.get(command.type);
12
+ if (!handler) {
13
+ throw new Error(`No handler registered for command type: ${command.type}`);
14
+ }
15
+ return handler(command);
16
+ },
17
+ };
18
+ }
19
+ export async function dispatchAndStore(dispatcher, eventStore, streamName, command) {
20
+ const results = await dispatcher.dispatch(command);
21
+ if (results.length > 0) {
22
+ await eventStore.appendToStream(streamName, results);
23
+ }
24
+ return results;
25
+ }
26
+ //# sourceMappingURL=command-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-dispatcher.js","sourceRoot":"","sources":["../../../src/engine/command-dispatcher.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,uBAAuB;IACrC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnD,OAAO;QACL,QAAQ,CAAC,WAAmB,EAAE,OAAuB;YACnD,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QAED,eAAe;YACb,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,QAAQ,CAAC,OAGd;YACC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,2CAA2C,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,UAAsD,EACtD,UAA4B,EAC5B,UAAkB,EAClB,OAAwD;IAExD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACvD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { createCommandDispatcher } from './command-dispatcher.js';
2
+ type Event = {
3
+ type: string;
4
+ data: Record<string, unknown>;
5
+ };
6
+ type EmitMapping = {
7
+ eventType: string;
8
+ commands: Array<{
9
+ commandType: string;
10
+ data: Record<string, unknown> | ((event: Event) => Record<string, unknown>);
11
+ }>;
12
+ };
13
+ export declare function createEventRouter(dispatcher: ReturnType<typeof createCommandDispatcher>): {
14
+ register(mapping: EmitMapping): void;
15
+ route(event: Event): Promise<Array<{
16
+ type: string;
17
+ data: Record<string, unknown>;
18
+ }>>;
19
+ };
20
+ export {};
21
+ //# sourceMappingURL=event-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-router.d.ts","sourceRoot":"","sources":["../../../src/engine/event-router.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAE7D,KAAK,WAAW,GAAG;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;QACd,WAAW,EAAE,MAAM,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;KAC7E,CAAC,CAAC;CACJ,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,uBAAuB,CAAC;sBAIlE,WAAW,GAAG,IAAI;iBAKjB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;EAc7F"}