@auto-engineer/pipeline 0.0.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 (270) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/LICENSE +10 -0
  3. package/claude.md +160 -0
  4. package/dist/src/builder/define.d.ts +90 -0
  5. package/dist/src/builder/define.d.ts.map +1 -0
  6. package/dist/src/builder/define.js +425 -0
  7. package/dist/src/builder/define.js.map +1 -0
  8. package/dist/src/builder/define.specs.d.ts +2 -0
  9. package/dist/src/builder/define.specs.d.ts.map +1 -0
  10. package/dist/src/builder/define.specs.js +435 -0
  11. package/dist/src/builder/define.specs.js.map +1 -0
  12. package/dist/src/config/pipeline-config.d.ts +13 -0
  13. package/dist/src/config/pipeline-config.d.ts.map +1 -0
  14. package/dist/src/config/pipeline-config.js +15 -0
  15. package/dist/src/config/pipeline-config.js.map +1 -0
  16. package/dist/src/core/descriptors.d.ts +84 -0
  17. package/dist/src/core/descriptors.d.ts.map +1 -0
  18. package/dist/src/core/descriptors.js +2 -0
  19. package/dist/src/core/descriptors.js.map +1 -0
  20. package/dist/src/core/descriptors.specs.d.ts +2 -0
  21. package/dist/src/core/descriptors.specs.d.ts.map +1 -0
  22. package/dist/src/core/descriptors.specs.js +24 -0
  23. package/dist/src/core/descriptors.specs.js.map +1 -0
  24. package/dist/src/core/types.d.ts +10 -0
  25. package/dist/src/core/types.d.ts.map +1 -0
  26. package/dist/src/core/types.js +4 -0
  27. package/dist/src/core/types.js.map +1 -0
  28. package/dist/src/core/types.specs.d.ts +2 -0
  29. package/dist/src/core/types.specs.d.ts.map +1 -0
  30. package/dist/src/core/types.specs.js +40 -0
  31. package/dist/src/core/types.specs.js.map +1 -0
  32. package/dist/src/graph/types.d.ts +17 -0
  33. package/dist/src/graph/types.d.ts.map +1 -0
  34. package/dist/src/graph/types.js +2 -0
  35. package/dist/src/graph/types.js.map +1 -0
  36. package/dist/src/graph/types.specs.d.ts +2 -0
  37. package/dist/src/graph/types.specs.d.ts.map +1 -0
  38. package/dist/src/graph/types.specs.js +148 -0
  39. package/dist/src/graph/types.specs.js.map +1 -0
  40. package/dist/src/index.d.ts +20 -0
  41. package/dist/src/index.d.ts.map +1 -0
  42. package/dist/src/index.js +12 -0
  43. package/dist/src/index.js.map +1 -0
  44. package/dist/src/logging/event-logger.d.ts +21 -0
  45. package/dist/src/logging/event-logger.d.ts.map +1 -0
  46. package/dist/src/logging/event-logger.js +31 -0
  47. package/dist/src/logging/event-logger.js.map +1 -0
  48. package/dist/src/logging/event-logger.specs.d.ts +2 -0
  49. package/dist/src/logging/event-logger.specs.d.ts.map +1 -0
  50. package/dist/src/logging/event-logger.specs.js +81 -0
  51. package/dist/src/logging/event-logger.specs.js.map +1 -0
  52. package/dist/src/plugins/handler-adapter.d.ts +5 -0
  53. package/dist/src/plugins/handler-adapter.d.ts.map +1 -0
  54. package/dist/src/plugins/handler-adapter.js +17 -0
  55. package/dist/src/plugins/handler-adapter.js.map +1 -0
  56. package/dist/src/plugins/handler-adapter.specs.d.ts +2 -0
  57. package/dist/src/plugins/handler-adapter.specs.d.ts.map +1 -0
  58. package/dist/src/plugins/handler-adapter.specs.js +129 -0
  59. package/dist/src/plugins/handler-adapter.specs.js.map +1 -0
  60. package/dist/src/plugins/plugin-loader.d.ts +25 -0
  61. package/dist/src/plugins/plugin-loader.d.ts.map +1 -0
  62. package/dist/src/plugins/plugin-loader.js +150 -0
  63. package/dist/src/plugins/plugin-loader.js.map +1 -0
  64. package/dist/src/plugins/plugin-loader.specs.d.ts +2 -0
  65. package/dist/src/plugins/plugin-loader.specs.d.ts.map +1 -0
  66. package/dist/src/plugins/plugin-loader.specs.js +246 -0
  67. package/dist/src/plugins/plugin-loader.specs.js.map +1 -0
  68. package/dist/src/runtime/await-tracker.d.ts +10 -0
  69. package/dist/src/runtime/await-tracker.d.ts.map +1 -0
  70. package/dist/src/runtime/await-tracker.js +42 -0
  71. package/dist/src/runtime/await-tracker.js.map +1 -0
  72. package/dist/src/runtime/await-tracker.specs.d.ts +2 -0
  73. package/dist/src/runtime/await-tracker.specs.d.ts.map +1 -0
  74. package/dist/src/runtime/await-tracker.specs.js +46 -0
  75. package/dist/src/runtime/await-tracker.specs.js.map +1 -0
  76. package/dist/src/runtime/context.d.ts +12 -0
  77. package/dist/src/runtime/context.d.ts.map +1 -0
  78. package/dist/src/runtime/context.js +2 -0
  79. package/dist/src/runtime/context.js.map +1 -0
  80. package/dist/src/runtime/context.specs.d.ts +2 -0
  81. package/dist/src/runtime/context.specs.d.ts.map +1 -0
  82. package/dist/src/runtime/context.specs.js +26 -0
  83. package/dist/src/runtime/context.specs.js.map +1 -0
  84. package/dist/src/runtime/event-command-map.d.ts +15 -0
  85. package/dist/src/runtime/event-command-map.d.ts.map +1 -0
  86. package/dist/src/runtime/event-command-map.js +26 -0
  87. package/dist/src/runtime/event-command-map.js.map +1 -0
  88. package/dist/src/runtime/event-command-map.specs.d.ts +2 -0
  89. package/dist/src/runtime/event-command-map.specs.d.ts.map +1 -0
  90. package/dist/src/runtime/event-command-map.specs.js +108 -0
  91. package/dist/src/runtime/event-command-map.specs.js.map +1 -0
  92. package/dist/src/runtime/phased-executor.d.ts +29 -0
  93. package/dist/src/runtime/phased-executor.d.ts.map +1 -0
  94. package/dist/src/runtime/phased-executor.js +164 -0
  95. package/dist/src/runtime/phased-executor.js.map +1 -0
  96. package/dist/src/runtime/phased-executor.specs.d.ts +2 -0
  97. package/dist/src/runtime/phased-executor.specs.d.ts.map +1 -0
  98. package/dist/src/runtime/phased-executor.specs.js +256 -0
  99. package/dist/src/runtime/phased-executor.specs.js.map +1 -0
  100. package/dist/src/runtime/pipeline-runtime.d.ts +17 -0
  101. package/dist/src/runtime/pipeline-runtime.d.ts.map +1 -0
  102. package/dist/src/runtime/pipeline-runtime.js +87 -0
  103. package/dist/src/runtime/pipeline-runtime.js.map +1 -0
  104. package/dist/src/runtime/pipeline-runtime.specs.d.ts +2 -0
  105. package/dist/src/runtime/pipeline-runtime.specs.d.ts.map +1 -0
  106. package/dist/src/runtime/pipeline-runtime.specs.js +192 -0
  107. package/dist/src/runtime/pipeline-runtime.specs.js.map +1 -0
  108. package/dist/src/runtime/settled-tracker.d.ts +42 -0
  109. package/dist/src/runtime/settled-tracker.d.ts.map +1 -0
  110. package/dist/src/runtime/settled-tracker.js +161 -0
  111. package/dist/src/runtime/settled-tracker.js.map +1 -0
  112. package/dist/src/runtime/settled-tracker.specs.d.ts +2 -0
  113. package/dist/src/runtime/settled-tracker.specs.d.ts.map +1 -0
  114. package/dist/src/runtime/settled-tracker.specs.js +361 -0
  115. package/dist/src/runtime/settled-tracker.specs.js.map +1 -0
  116. package/dist/src/server/full-orchestration.e2e.specs.d.ts +2 -0
  117. package/dist/src/server/full-orchestration.e2e.specs.d.ts.map +1 -0
  118. package/dist/src/server/full-orchestration.e2e.specs.js +561 -0
  119. package/dist/src/server/full-orchestration.e2e.specs.js.map +1 -0
  120. package/dist/src/server/pipeline-server.d.ts +59 -0
  121. package/dist/src/server/pipeline-server.d.ts.map +1 -0
  122. package/dist/src/server/pipeline-server.e2e.specs.d.ts +2 -0
  123. package/dist/src/server/pipeline-server.e2e.specs.d.ts.map +1 -0
  124. package/dist/src/server/pipeline-server.e2e.specs.js +381 -0
  125. package/dist/src/server/pipeline-server.e2e.specs.js.map +1 -0
  126. package/dist/src/server/pipeline-server.js +527 -0
  127. package/dist/src/server/pipeline-server.js.map +1 -0
  128. package/dist/src/server/pipeline-server.specs.d.ts +2 -0
  129. package/dist/src/server/pipeline-server.specs.d.ts.map +1 -0
  130. package/dist/src/server/pipeline-server.specs.js +662 -0
  131. package/dist/src/server/pipeline-server.specs.js.map +1 -0
  132. package/dist/src/server/sse-manager.d.ts +12 -0
  133. package/dist/src/server/sse-manager.d.ts.map +1 -0
  134. package/dist/src/server/sse-manager.js +63 -0
  135. package/dist/src/server/sse-manager.js.map +1 -0
  136. package/dist/src/server/sse-manager.specs.d.ts +2 -0
  137. package/dist/src/server/sse-manager.specs.d.ts.map +1 -0
  138. package/dist/src/server/sse-manager.specs.js +158 -0
  139. package/dist/src/server/sse-manager.specs.js.map +1 -0
  140. package/dist/src/testing/event-capture.d.ts +14 -0
  141. package/dist/src/testing/event-capture.d.ts.map +1 -0
  142. package/dist/src/testing/event-capture.js +55 -0
  143. package/dist/src/testing/event-capture.js.map +1 -0
  144. package/dist/src/testing/event-capture.specs.d.ts +2 -0
  145. package/dist/src/testing/event-capture.specs.d.ts.map +1 -0
  146. package/dist/src/testing/event-capture.specs.js +114 -0
  147. package/dist/src/testing/event-capture.specs.js.map +1 -0
  148. package/dist/src/testing/fixtures/kanban-full.pipeline.d.ts +7 -0
  149. package/dist/src/testing/fixtures/kanban-full.pipeline.d.ts.map +1 -0
  150. package/dist/src/testing/fixtures/kanban-full.pipeline.js +168 -0
  151. package/dist/src/testing/fixtures/kanban-full.pipeline.js.map +1 -0
  152. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts +2 -0
  153. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.d.ts.map +1 -0
  154. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js +263 -0
  155. package/dist/src/testing/fixtures/kanban-full.pipeline.specs.js.map +1 -0
  156. package/dist/src/testing/fixtures/kanban-todo.config.d.ts +3 -0
  157. package/dist/src/testing/fixtures/kanban-todo.config.d.ts.map +1 -0
  158. package/dist/src/testing/fixtures/kanban-todo.config.js +19 -0
  159. package/dist/src/testing/fixtures/kanban-todo.config.js.map +1 -0
  160. package/dist/src/testing/fixtures/kanban.pipeline.d.ts +5 -0
  161. package/dist/src/testing/fixtures/kanban.pipeline.d.ts.map +1 -0
  162. package/dist/src/testing/fixtures/kanban.pipeline.js +76 -0
  163. package/dist/src/testing/fixtures/kanban.pipeline.js.map +1 -0
  164. package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts +2 -0
  165. package/dist/src/testing/fixtures/kanban.pipeline.specs.d.ts.map +1 -0
  166. package/dist/src/testing/fixtures/kanban.pipeline.specs.js +29 -0
  167. package/dist/src/testing/fixtures/kanban.pipeline.specs.js.map +1 -0
  168. package/dist/src/testing/kanban-todo.e2e.specs.d.ts +2 -0
  169. package/dist/src/testing/kanban-todo.e2e.specs.d.ts.map +1 -0
  170. package/dist/src/testing/kanban-todo.e2e.specs.js +160 -0
  171. package/dist/src/testing/kanban-todo.e2e.specs.js.map +1 -0
  172. package/dist/src/testing/mock-handlers.d.ts +21 -0
  173. package/dist/src/testing/mock-handlers.d.ts.map +1 -0
  174. package/dist/src/testing/mock-handlers.js +34 -0
  175. package/dist/src/testing/mock-handlers.js.map +1 -0
  176. package/dist/src/testing/mock-handlers.specs.d.ts +2 -0
  177. package/dist/src/testing/mock-handlers.specs.d.ts.map +1 -0
  178. package/dist/src/testing/mock-handlers.specs.js +193 -0
  179. package/dist/src/testing/mock-handlers.specs.js.map +1 -0
  180. package/dist/src/testing/real-execution.e2e.specs.d.ts +2 -0
  181. package/dist/src/testing/real-execution.e2e.specs.d.ts.map +1 -0
  182. package/dist/src/testing/real-execution.e2e.specs.js +140 -0
  183. package/dist/src/testing/real-execution.e2e.specs.js.map +1 -0
  184. package/dist/src/testing/real-plugin.e2e.specs.d.ts +2 -0
  185. package/dist/src/testing/real-plugin.e2e.specs.d.ts.map +1 -0
  186. package/dist/src/testing/real-plugin.e2e.specs.js +65 -0
  187. package/dist/src/testing/real-plugin.e2e.specs.js.map +1 -0
  188. package/dist/src/testing/server-startup.e2e.specs.d.ts +2 -0
  189. package/dist/src/testing/server-startup.e2e.specs.d.ts.map +1 -0
  190. package/dist/src/testing/server-startup.e2e.specs.js +104 -0
  191. package/dist/src/testing/server-startup.e2e.specs.js.map +1 -0
  192. package/dist/src/testing/snapshot-compare.d.ts +18 -0
  193. package/dist/src/testing/snapshot-compare.d.ts.map +1 -0
  194. package/dist/src/testing/snapshot-compare.js +86 -0
  195. package/dist/src/testing/snapshot-compare.js.map +1 -0
  196. package/dist/src/testing/snapshot-compare.specs.d.ts +2 -0
  197. package/dist/src/testing/snapshot-compare.specs.d.ts.map +1 -0
  198. package/dist/src/testing/snapshot-compare.specs.js +112 -0
  199. package/dist/src/testing/snapshot-compare.specs.js.map +1 -0
  200. package/dist/src/testing/snapshot-sanitize.d.ts +8 -0
  201. package/dist/src/testing/snapshot-sanitize.d.ts.map +1 -0
  202. package/dist/src/testing/snapshot-sanitize.js +10 -0
  203. package/dist/src/testing/snapshot-sanitize.js.map +1 -0
  204. package/dist/src/testing/snapshot-sanitize.specs.d.ts +2 -0
  205. package/dist/src/testing/snapshot-sanitize.specs.d.ts.map +1 -0
  206. package/dist/src/testing/snapshot-sanitize.specs.js +104 -0
  207. package/dist/src/testing/snapshot-sanitize.specs.js.map +1 -0
  208. package/dist/tsconfig.tsbuildinfo +1 -0
  209. package/docs/testing-analysis.md +395 -0
  210. package/package.json +31 -0
  211. package/pipeline-api-new.md +1078 -0
  212. package/pomodoro-plan.md +651 -0
  213. package/scripts/run-kanban-e2e.ts +219 -0
  214. package/scripts/start-server.ts +64 -0
  215. package/snapshots/e2e-run-2025-12-22T15-52-03.json +613 -0
  216. package/snapshots/e2e-run-2025-12-22T16-51-30.json +699 -0
  217. package/src/builder/define.specs.ts +531 -0
  218. package/src/builder/define.ts +700 -0
  219. package/src/config/pipeline-config.ts +32 -0
  220. package/src/core/descriptors.specs.ts +28 -0
  221. package/src/core/descriptors.ts +99 -0
  222. package/src/core/types.specs.ts +44 -0
  223. package/src/core/types.ts +16 -0
  224. package/src/graph/types.specs.ts +176 -0
  225. package/src/graph/types.ts +19 -0
  226. package/src/index.ts +54 -0
  227. package/src/logging/event-logger.specs.ts +100 -0
  228. package/src/logging/event-logger.ts +50 -0
  229. package/src/plugins/handler-adapter.specs.ts +164 -0
  230. package/src/plugins/handler-adapter.ts +21 -0
  231. package/src/plugins/plugin-loader.specs.ts +295 -0
  232. package/src/plugins/plugin-loader.ts +202 -0
  233. package/src/runtime/await-tracker.specs.ts +52 -0
  234. package/src/runtime/await-tracker.ts +50 -0
  235. package/src/runtime/context.specs.ts +28 -0
  236. package/src/runtime/context.ts +13 -0
  237. package/src/runtime/event-command-map.specs.ts +136 -0
  238. package/src/runtime/event-command-map.ts +38 -0
  239. package/src/runtime/phased-executor.specs.ts +358 -0
  240. package/src/runtime/phased-executor.ts +224 -0
  241. package/src/runtime/pipeline-runtime.specs.ts +214 -0
  242. package/src/runtime/pipeline-runtime.ts +119 -0
  243. package/src/runtime/settled-tracker.specs.ts +448 -0
  244. package/src/runtime/settled-tracker.ts +237 -0
  245. package/src/server/full-orchestration.e2e.specs.ts +672 -0
  246. package/src/server/pipeline-server.e2e.specs.ts +505 -0
  247. package/src/server/pipeline-server.specs.ts +761 -0
  248. package/src/server/pipeline-server.ts +656 -0
  249. package/src/server/sse-manager.specs.ts +208 -0
  250. package/src/server/sse-manager.ts +79 -0
  251. package/src/testing/event-capture.specs.ts +143 -0
  252. package/src/testing/event-capture.ts +65 -0
  253. package/src/testing/fixtures/kanban-full.pipeline.specs.ts +337 -0
  254. package/src/testing/fixtures/kanban-full.pipeline.ts +225 -0
  255. package/src/testing/fixtures/kanban-todo.config.ts +19 -0
  256. package/src/testing/fixtures/kanban.pipeline.specs.ts +33 -0
  257. package/src/testing/fixtures/kanban.pipeline.ts +124 -0
  258. package/src/testing/kanban-todo.e2e.specs.ts +209 -0
  259. package/src/testing/mock-handlers.specs.ts +229 -0
  260. package/src/testing/mock-handlers.ts +58 -0
  261. package/src/testing/real-execution.e2e.specs.ts +193 -0
  262. package/src/testing/real-plugin.e2e.specs.ts +94 -0
  263. package/src/testing/server-startup.e2e.specs.ts +162 -0
  264. package/src/testing/snapshot-compare.specs.ts +136 -0
  265. package/src/testing/snapshot-compare.ts +106 -0
  266. package/src/testing/snapshot-sanitize.specs.ts +131 -0
  267. package/src/testing/snapshot-sanitize.ts +17 -0
  268. package/tsconfig.json +11 -0
  269. package/tsconfig.test.json +9 -0
  270. package/vitest.config.ts +29 -0
@@ -0,0 +1,527 @@
1
+ import { createServer } from 'node:http';
2
+ import { createMessageBus, } from '@auto-engineer/message-bus';
3
+ import { MemoryMessageStore } from '@auto-engineer/message-store';
4
+ import cors from 'cors';
5
+ import express from 'express';
6
+ import getPort from 'get-port';
7
+ import { nanoid } from 'nanoid';
8
+ import { EventCommandMapper } from '../runtime/event-command-map.js';
9
+ import { PhasedExecutor } from '../runtime/phased-executor.js';
10
+ import { PipelineRuntime } from '../runtime/pipeline-runtime.js';
11
+ import { SettledTracker } from '../runtime/settled-tracker.js';
12
+ import { SSEManager } from './sse-manager.js';
13
+ export class PipelineServer {
14
+ constructor(config) {
15
+ this.commandHandlers = new Map();
16
+ this.pipelines = new Map();
17
+ this.runtimes = new Map();
18
+ this.requestedPort = config.port;
19
+ this.actualPort = config.port;
20
+ this.app = express();
21
+ this.app.use(cors());
22
+ this.app.use(express.json());
23
+ this.httpServer = createServer(this.app);
24
+ this.messageBus = createMessageBus();
25
+ this.messageStore = config.messageStore ?? new MemoryMessageStore();
26
+ this.eventCommandMapper = new EventCommandMapper([]);
27
+ this.settledTracker = new SettledTracker({
28
+ onDispatch: (commandType, data, correlationId) => {
29
+ void this.dispatchFromSettled(commandType, data, correlationId);
30
+ },
31
+ });
32
+ this.phasedExecutor = new PhasedExecutor({
33
+ onDispatch: (commandType, data, correlationId) => {
34
+ void this.dispatchFromSettled(commandType, data, correlationId);
35
+ },
36
+ onComplete: (event, correlationId) => {
37
+ void this.handlePhasedComplete(event, correlationId);
38
+ },
39
+ });
40
+ this.sseManager = new SSEManager();
41
+ this.setupRoutes();
42
+ }
43
+ get port() {
44
+ return this.actualPort;
45
+ }
46
+ registerCommandHandlers(handlers) {
47
+ for (const handler of handlers) {
48
+ this.commandHandlers.set(handler.name, handler);
49
+ this.messageBus.registerCommandHandler(handler);
50
+ this.eventCommandMapper.addHandler(handler);
51
+ }
52
+ }
53
+ getRegisteredCommands() {
54
+ return Array.from(this.commandHandlers.keys());
55
+ }
56
+ registerPipeline(pipeline) {
57
+ this.pipelines.set(pipeline.descriptor.name, pipeline);
58
+ this.runtimes.set(pipeline.descriptor.name, new PipelineRuntime(pipeline.descriptor));
59
+ for (const handler of pipeline.descriptor.handlers) {
60
+ if (handler.type === 'settled') {
61
+ this.settledTracker.registerHandler({
62
+ commandTypes: handler.commandTypes,
63
+ handler: handler.handler,
64
+ });
65
+ }
66
+ }
67
+ }
68
+ getPipelineNames() {
69
+ return Array.from(this.pipelines.keys());
70
+ }
71
+ async start() {
72
+ if (this.requestedPort === 0) {
73
+ this.actualPort = await getPort();
74
+ }
75
+ this.currentSessionId = await this.messageStore.createSession();
76
+ await new Promise((resolve) => {
77
+ this.httpServer.listen(this.actualPort, () => {
78
+ resolve();
79
+ });
80
+ });
81
+ }
82
+ async stop() {
83
+ this.sseManager.closeAll();
84
+ if (this.currentSessionId !== undefined) {
85
+ await this.messageStore.endSession(this.currentSessionId);
86
+ }
87
+ await new Promise((resolve) => {
88
+ this.httpServer.close(() => resolve());
89
+ });
90
+ }
91
+ setupRoutes() {
92
+ this.app.get('/health', (_req, res) => {
93
+ res.json({
94
+ status: 'healthy',
95
+ uptime: process.uptime(),
96
+ timestamp: new Date().toISOString(),
97
+ });
98
+ });
99
+ this.app.get('/registry', (_req, res) => {
100
+ const eventHandlers = [];
101
+ for (const pipeline of this.pipelines.values()) {
102
+ for (const handler of pipeline.descriptor.handlers) {
103
+ if (handler.type === 'settled') {
104
+ continue;
105
+ }
106
+ if (!eventHandlers.includes(handler.eventType)) {
107
+ eventHandlers.push(handler.eventType);
108
+ }
109
+ }
110
+ }
111
+ const commandsWithMetadata = Array.from(this.commandHandlers.entries()).map(([name, handler]) => {
112
+ const alias = handler.alias ?? name;
113
+ const description = handler.description ?? '';
114
+ const fields = handler.fields ?? {};
115
+ const examples = handler.examples ?? [];
116
+ return { id: alias, name, alias, description, fields, examples };
117
+ });
118
+ res.json({
119
+ eventHandlers,
120
+ commandHandlers: Array.from(this.commandHandlers.keys()),
121
+ commandsWithMetadata,
122
+ folds: [],
123
+ });
124
+ });
125
+ this.app.get('/pipeline', (_req, res) => {
126
+ const combinedGraph = this.buildCombinedGraph();
127
+ const commandToEvents = this.buildCommandToEvents();
128
+ const eventToCommand = this.buildEventToCommand();
129
+ const pipelineNodes = this.buildPipelineNodes();
130
+ res.json({
131
+ nodes: [...combinedGraph.nodes, ...pipelineNodes],
132
+ edges: combinedGraph.edges,
133
+ commandToEvents,
134
+ eventToCommand,
135
+ });
136
+ });
137
+ this.app.get('/pipeline/mermaid', (_req, res) => {
138
+ const mermaid = this.buildMermaidDiagram();
139
+ res.type('text/plain').send(mermaid);
140
+ });
141
+ this.app.get('/pipeline/diagram', (_req, res) => {
142
+ const mermaidDefinition = this.buildMermaidDiagram();
143
+ const html = this.buildDiagramHtml(mermaidDefinition);
144
+ res.type('text/html').send(html);
145
+ });
146
+ this.app.post('/command', (req, res) => {
147
+ void (async () => {
148
+ const command = req.body;
149
+ if (!this.commandHandlers.has(command.type)) {
150
+ res.status(404).json({
151
+ status: 'nack',
152
+ error: `Command handler not found: ${command.type}`,
153
+ });
154
+ return;
155
+ }
156
+ const requestId = command.requestId ?? `req-${nanoid()}`;
157
+ const correlationId = command.correlationId ?? `corr-${nanoid()}`;
158
+ const commandWithIds = {
159
+ ...command,
160
+ requestId,
161
+ correlationId,
162
+ };
163
+ await this.messageStore.saveMessage('$all', commandWithIds, undefined, 'command');
164
+ void this.processCommand(commandWithIds);
165
+ res.json({
166
+ status: 'ack',
167
+ commandId: commandWithIds.requestId,
168
+ timestamp: new Date().toISOString(),
169
+ });
170
+ })();
171
+ });
172
+ this.app.get('/messages', (_req, res) => {
173
+ void (async () => {
174
+ const messages = await this.messageStore.getMessages('$all');
175
+ const serialized = messages.map((m) => ({
176
+ ...m,
177
+ revision: m.revision.toString(),
178
+ position: m.position.toString(),
179
+ }));
180
+ res.json(serialized);
181
+ })();
182
+ });
183
+ this.app.get('/stats', (_req, res) => {
184
+ void (async () => {
185
+ const stats = await this.messageStore.getStats();
186
+ res.json(stats);
187
+ })();
188
+ });
189
+ this.app.get('/sessions', (_req, res) => {
190
+ void (async () => {
191
+ const sessions = await this.messageStore.getSessions();
192
+ res.json(sessions);
193
+ })();
194
+ });
195
+ this.app.get('/events', (req, res) => {
196
+ const clientId = `sse-${nanoid()}`;
197
+ const correlationIdFilter = req.query.correlationId;
198
+ this.sseManager.addClient(clientId, res, correlationIdFilter);
199
+ });
200
+ }
201
+ buildCombinedGraph() {
202
+ const combinedGraph = { nodes: [], edges: [] };
203
+ const nodeSet = new Set();
204
+ for (const pipeline of this.pipelines.values()) {
205
+ const graph = pipeline.toGraph();
206
+ for (const node of graph.nodes) {
207
+ if (!nodeSet.has(node.id)) {
208
+ nodeSet.add(node.id);
209
+ combinedGraph.nodes.push(node);
210
+ }
211
+ }
212
+ combinedGraph.edges.push(...graph.edges);
213
+ }
214
+ return combinedGraph;
215
+ }
216
+ buildCommandToEvents() {
217
+ const commandToEvents = {};
218
+ for (const [name, handler] of this.commandHandlers.entries()) {
219
+ if (handler.events !== undefined && Array.isArray(handler.events)) {
220
+ commandToEvents[name] = handler.events;
221
+ }
222
+ }
223
+ return commandToEvents;
224
+ }
225
+ buildEventToCommand() {
226
+ const eventToCommand = {};
227
+ for (const pipeline of this.pipelines.values()) {
228
+ for (const handler of pipeline.descriptor.handlers) {
229
+ if (handler.type === 'emit') {
230
+ for (const cmd of handler.commands) {
231
+ eventToCommand[handler.eventType] = cmd.commandType;
232
+ }
233
+ }
234
+ }
235
+ }
236
+ return eventToCommand;
237
+ }
238
+ buildPipelineNodes() {
239
+ return Array.from(this.commandHandlers.entries()).map(([name, handler]) => ({
240
+ id: name,
241
+ name,
242
+ title: handler.description ?? '',
243
+ alias: handler.alias,
244
+ status: 'None',
245
+ }));
246
+ }
247
+ buildMermaidDiagram() {
248
+ const graph = this.buildCombinedGraph();
249
+ const commandToEvents = this.buildCommandToEvents();
250
+ const pipelineEvents = this.extractPipelineEvents(graph, commandToEvents);
251
+ const lines = ['flowchart LR'];
252
+ const eventNodes = new Set();
253
+ const commandNodes = new Set();
254
+ const settledNodes = new Set();
255
+ const edgeContext = { index: 0, backLinkIndices: [] };
256
+ this.addGraphNodesToMermaid(graph, lines, eventNodes, commandNodes, settledNodes);
257
+ const pipelineCommands = new Set(commandNodes);
258
+ this.addCommandEventNodesToMermaid(commandToEvents, pipelineCommands, pipelineEvents, lines, eventNodes);
259
+ this.addGraphEdgesToMermaid(graph, commandToEvents, lines, edgeContext);
260
+ this.addCommandEventEdgesToMermaid(commandToEvents, pipelineCommands, pipelineEvents, lines, edgeContext);
261
+ this.addMermaidStyles(lines, eventNodes, commandNodes, settledNodes, edgeContext.backLinkIndices);
262
+ return lines.join('\n');
263
+ }
264
+ extractPipelineEvents(graph, commandToEvents) {
265
+ const pipelineEvents = new Set();
266
+ for (const node of graph.nodes) {
267
+ if (node.id.startsWith('evt:')) {
268
+ pipelineEvents.add(node.id.replace('evt:', ''));
269
+ }
270
+ if (node.id.startsWith('settled:')) {
271
+ const commandTypes = node.id.replace('settled:', '').split(',');
272
+ for (const commandType of commandTypes) {
273
+ const events = commandToEvents[commandType];
274
+ if (events !== undefined) {
275
+ for (const eventName of events) {
276
+ pipelineEvents.add(eventName);
277
+ }
278
+ }
279
+ }
280
+ }
281
+ }
282
+ return pipelineEvents;
283
+ }
284
+ addGraphNodesToMermaid(graph, lines, eventNodes, commandNodes, settledNodes) {
285
+ for (const node of graph.nodes) {
286
+ if (node.id.startsWith('evt:')) {
287
+ const eventName = node.id.replace('evt:', '');
288
+ const safeId = `evt_${eventName}`;
289
+ eventNodes.add(safeId);
290
+ lines.push(` ${safeId}([${eventName}])`);
291
+ }
292
+ else if (node.id.startsWith('cmd:')) {
293
+ const commandName = node.id.replace('cmd:', '');
294
+ commandNodes.add(commandName);
295
+ lines.push(` ${commandName}[${commandName}]`);
296
+ }
297
+ else if (node.id.startsWith('settled:')) {
298
+ const commandTypes = node.id.replace('settled:', '').split(',');
299
+ const safeId = `settled_${commandTypes.join('_')}`;
300
+ settledNodes.add(safeId);
301
+ lines.push(` ${safeId}{{${commandTypes.join(', ')}}}`);
302
+ }
303
+ }
304
+ }
305
+ addCommandEventNodesToMermaid(commandToEvents, pipelineCommands, pipelineEvents, lines, eventNodes) {
306
+ for (const [commandName, events] of Object.entries(commandToEvents)) {
307
+ if (!pipelineCommands.has(commandName)) {
308
+ continue;
309
+ }
310
+ for (const eventName of events) {
311
+ if (!pipelineEvents.has(eventName)) {
312
+ continue;
313
+ }
314
+ const safeEventId = `evt_${eventName}`;
315
+ if (!eventNodes.has(safeEventId)) {
316
+ eventNodes.add(safeEventId);
317
+ lines.push(` ${safeEventId}([${eventName}])`);
318
+ }
319
+ }
320
+ }
321
+ }
322
+ addGraphEdgesToMermaid(graph, commandToEvents, lines, edgeContext) {
323
+ for (const edge of graph.edges) {
324
+ if (edge.from.startsWith('cmd:') && edge.to.startsWith('settled:')) {
325
+ const commandType = edge.from.replace('cmd:', '');
326
+ const commandTypes = edge.to.replace('settled:', '').split(',');
327
+ const settledId = `settled_${commandTypes.join('_')}`;
328
+ const events = commandToEvents[commandType];
329
+ if (events !== undefined) {
330
+ for (const eventName of events) {
331
+ lines.push(` evt_${eventName} --> ${settledId}`);
332
+ edgeContext.index++;
333
+ }
334
+ }
335
+ continue;
336
+ }
337
+ const from = this.normalizeNodeId(edge.from);
338
+ const to = this.normalizeNodeId(edge.to);
339
+ lines.push(` ${from} --> ${to}`);
340
+ if (edge.backLink === true) {
341
+ edgeContext.backLinkIndices.push(edgeContext.index);
342
+ }
343
+ edgeContext.index++;
344
+ }
345
+ }
346
+ normalizeNodeId(nodeId) {
347
+ if (nodeId.startsWith('evt:')) {
348
+ return `evt_${nodeId.replace('evt:', '')}`;
349
+ }
350
+ if (nodeId.startsWith('cmd:')) {
351
+ return nodeId.replace('cmd:', '');
352
+ }
353
+ const commandTypes = nodeId.replace('settled:', '').split(',');
354
+ return `settled_${commandTypes.join('_')}`;
355
+ }
356
+ addCommandEventEdgesToMermaid(commandToEvents, pipelineCommands, pipelineEvents, lines, edgeContext) {
357
+ for (const [commandName, events] of Object.entries(commandToEvents)) {
358
+ if (!pipelineCommands.has(commandName)) {
359
+ continue;
360
+ }
361
+ for (const eventName of events) {
362
+ if (!pipelineEvents.has(eventName)) {
363
+ continue;
364
+ }
365
+ lines.push(` ${commandName} --> evt_${eventName}`);
366
+ edgeContext.index++;
367
+ }
368
+ }
369
+ }
370
+ addMermaidStyles(lines, eventNodes, commandNodes, settledNodes, backLinkIndices) {
371
+ const failedEvents = [...eventNodes].filter((id) => id.toLowerCase().includes('failed'));
372
+ const normalEvents = [...eventNodes].filter((id) => !id.toLowerCase().includes('failed'));
373
+ lines.push('');
374
+ lines.push(' classDef event fill:#fff3e0,stroke:#e65100');
375
+ lines.push(' classDef eventFailed fill:#fff3e0,stroke:#e65100,color:#d32f2f');
376
+ lines.push(' classDef command fill:#e3f2fd,stroke:#1565c0');
377
+ lines.push(' classDef settled fill:#f3e5f5,stroke:#7b1fa2');
378
+ if (normalEvents.length > 0) {
379
+ lines.push(` class ${normalEvents.join(',')} event`);
380
+ }
381
+ if (failedEvents.length > 0) {
382
+ lines.push(` class ${failedEvents.join(',')} eventFailed`);
383
+ }
384
+ if (commandNodes.size > 0) {
385
+ lines.push(` class ${[...commandNodes].join(',')} command`);
386
+ }
387
+ if (settledNodes.size > 0) {
388
+ lines.push(` class ${[...settledNodes].join(',')} settled`);
389
+ }
390
+ if (backLinkIndices.length > 0) {
391
+ lines.push(` linkStyle ${backLinkIndices.join(',')} stroke:#d32f2f,stroke-width:2px`);
392
+ }
393
+ }
394
+ async processCommand(command) {
395
+ const handler = this.commandHandlers.get(command.type);
396
+ if (!handler)
397
+ return;
398
+ this.settledTracker.onCommandStarted(command);
399
+ const resultEvent = await handler.handle(command);
400
+ const events = Array.isArray(resultEvent) ? resultEvent : [resultEvent];
401
+ for (const event of events) {
402
+ const eventWithIds = {
403
+ ...event,
404
+ correlationId: command.correlationId,
405
+ requestId: command.requestId,
406
+ };
407
+ await this.messageStore.saveMessage('$all', eventWithIds, undefined, 'event');
408
+ this.sseManager.broadcast(eventWithIds);
409
+ const sourceCommand = this.eventCommandMapper.getSourceCommand(event.type);
410
+ if (sourceCommand !== undefined) {
411
+ this.settledTracker.onEventReceived(eventWithIds, sourceCommand);
412
+ }
413
+ this.routeEventToPhasedExecutor(eventWithIds);
414
+ await this.routeEventToPipelines(eventWithIds);
415
+ }
416
+ }
417
+ async dispatchFromSettled(commandType, data, correlationId) {
418
+ const command = {
419
+ type: commandType,
420
+ data: data,
421
+ correlationId,
422
+ requestId: `req-${nanoid()}`,
423
+ };
424
+ await this.messageStore.saveMessage('$all', command, undefined, 'command');
425
+ await this.processCommand(command);
426
+ }
427
+ async handlePhasedComplete(event, correlationId) {
428
+ const eventWithIds = {
429
+ ...event,
430
+ correlationId,
431
+ };
432
+ await this.messageStore.saveMessage('$all', eventWithIds, undefined, 'event');
433
+ this.sseManager.broadcast(eventWithIds);
434
+ await this.routeEventToPipelines(eventWithIds);
435
+ }
436
+ async routeEventToPipelines(event) {
437
+ const ctx = this.createContext(event.correlationId);
438
+ for (const runtime of this.runtimes.values()) {
439
+ await runtime.handleEvent(event, ctx);
440
+ }
441
+ }
442
+ createContext(correlationId) {
443
+ return {
444
+ correlationId,
445
+ emit: async (type, data) => {
446
+ const event = {
447
+ type,
448
+ data: data,
449
+ correlationId,
450
+ };
451
+ await this.messageStore.saveMessage('$all', event, undefined, 'event');
452
+ this.sseManager.broadcast(event);
453
+ await this.routeEventToPipelines(event);
454
+ },
455
+ sendCommand: async (type, data) => {
456
+ const command = {
457
+ type,
458
+ data: data,
459
+ correlationId,
460
+ requestId: `req-${nanoid()}`,
461
+ };
462
+ await this.messageStore.saveMessage('$all', command, undefined, 'command');
463
+ await this.processCommand(command);
464
+ },
465
+ startPhased: (handler, event) => {
466
+ this.phasedExecutor.startPhased(handler, event, correlationId);
467
+ },
468
+ };
469
+ }
470
+ routeEventToPhasedExecutor(event) {
471
+ for (const pipeline of this.pipelines.values()) {
472
+ for (const handler of pipeline.descriptor.handlers) {
473
+ if (handler.type === 'foreach-phased') {
474
+ const itemKey = handler.completion.itemKey(event);
475
+ this.phasedExecutor.onEventReceived(event, itemKey);
476
+ }
477
+ }
478
+ }
479
+ }
480
+ buildDiagramHtml(mermaidDefinition) {
481
+ return `<!DOCTYPE html>
482
+ <html lang="en">
483
+ <head>
484
+ <meta charset="UTF-8">
485
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
486
+ <title>Pipeline Diagram</title>
487
+ <script type="module">
488
+ import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
489
+ mermaid.initialize({ startOnLoad: true, theme: 'default' });
490
+ </script>
491
+ <style>
492
+ body {
493
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
494
+ margin: 0;
495
+ padding: 20px;
496
+ background: #f5f5f5;
497
+ }
498
+ .container {
499
+ max-width: 1200px;
500
+ margin: 0 auto;
501
+ background: white;
502
+ padding: 20px;
503
+ border-radius: 8px;
504
+ box-shadow: 0 2px 4px rgba(0,0,0,0.1);
505
+ }
506
+ h1 {
507
+ margin-top: 0;
508
+ color: #333;
509
+ }
510
+ .mermaid {
511
+ display: flex;
512
+ justify-content: center;
513
+ }
514
+ </style>
515
+ </head>
516
+ <body>
517
+ <div class="container">
518
+ <h1>Pipeline Diagram</h1>
519
+ <div class="mermaid">
520
+ ${mermaidDefinition}
521
+ </div>
522
+ </div>
523
+ </body>
524
+ </html>`;
525
+ }
526
+ }
527
+ //# sourceMappingURL=pipeline-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-server.js","sourceRoot":"","sources":["../../../src/server/pipeline-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=pipeline-server.specs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-server.specs.d.ts","sourceRoot":"","sources":["../../../src/server/pipeline-server.specs.ts"],"names":[],"mappings":""}