lattice-orchestrator 0.7.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 (440) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +58 -0
  3. package/config/logrotate.conf +15 -0
  4. package/dist/cli-parser.d.ts +11 -0
  5. package/dist/cli-parser.d.ts.map +1 -0
  6. package/dist/cli-parser.js +48 -0
  7. package/dist/cli-parser.js.map +1 -0
  8. package/dist/lattice-server.d.ts +70 -0
  9. package/dist/lattice-server.d.ts.map +1 -0
  10. package/dist/lattice-server.js +969 -0
  11. package/dist/lattice-server.js.map +1 -0
  12. package/dist/mcp-server/index.d.ts +3 -0
  13. package/dist/mcp-server/index.d.ts.map +1 -0
  14. package/dist/mcp-server/index.js +190 -0
  15. package/dist/mcp-server/index.js.map +1 -0
  16. package/dist/mcp-server/lattice-tools.d.ts +15 -0
  17. package/dist/mcp-server/lattice-tools.d.ts.map +1 -0
  18. package/dist/mcp-server/lattice-tools.js +366 -0
  19. package/dist/mcp-server/lattice-tools.js.map +1 -0
  20. package/dist/middleware/cors-setup.d.ts +7 -0
  21. package/dist/middleware/cors-setup.d.ts.map +1 -0
  22. package/dist/middleware/cors-setup.js +8 -0
  23. package/dist/middleware/cors-setup.js.map +1 -0
  24. package/dist/middleware/error-handler.d.ts +4 -0
  25. package/dist/middleware/error-handler.d.ts.map +1 -0
  26. package/dist/middleware/error-handler.js +27 -0
  27. package/dist/middleware/error-handler.js.map +1 -0
  28. package/dist/middleware/query-parser.d.ts +11 -0
  29. package/dist/middleware/query-parser.d.ts.map +1 -0
  30. package/dist/middleware/query-parser.js +68 -0
  31. package/dist/middleware/query-parser.js.map +1 -0
  32. package/dist/middleware/request-logger.d.ts +4 -0
  33. package/dist/middleware/request-logger.d.ts.map +1 -0
  34. package/dist/middleware/request-logger.js +6 -0
  35. package/dist/middleware/request-logger.js.map +1 -0
  36. package/dist/process-daemon/index.d.ts +14 -0
  37. package/dist/process-daemon/index.d.ts.map +1 -0
  38. package/dist/process-daemon/index.js +51 -0
  39. package/dist/process-daemon/index.js.map +1 -0
  40. package/dist/process-daemon/process-daemon.d.ts +101 -0
  41. package/dist/process-daemon/process-daemon.d.ts.map +1 -0
  42. package/dist/process-daemon/process-daemon.js +846 -0
  43. package/dist/process-daemon/process-daemon.js.map +1 -0
  44. package/dist/process-daemon/process-manager-client.d.ts +123 -0
  45. package/dist/process-daemon/process-manager-client.d.ts.map +1 -0
  46. package/dist/process-daemon/process-manager-client.js +329 -0
  47. package/dist/process-daemon/process-manager-client.js.map +1 -0
  48. package/dist/process-daemon/process-manager-interface.d.ts +61 -0
  49. package/dist/process-daemon/process-manager-interface.d.ts.map +1 -0
  50. package/dist/process-daemon/process-manager-interface.js +8 -0
  51. package/dist/process-daemon/process-manager-interface.js.map +1 -0
  52. package/dist/process-daemon/test-daemon.d.ts +12 -0
  53. package/dist/process-daemon/test-daemon.d.ts.map +1 -0
  54. package/dist/process-daemon/test-daemon.js +81 -0
  55. package/dist/process-daemon/test-daemon.js.map +1 -0
  56. package/dist/process-daemon/types.d.ts +97 -0
  57. package/dist/process-daemon/types.d.ts.map +1 -0
  58. package/dist/process-daemon/types.js +8 -0
  59. package/dist/process-daemon/types.js.map +1 -0
  60. package/dist/routes/analysis.routes.d.ts +13 -0
  61. package/dist/routes/analysis.routes.d.ts.map +1 -0
  62. package/dist/routes/analysis.routes.js +520 -0
  63. package/dist/routes/analysis.routes.js.map +1 -0
  64. package/dist/routes/config.routes.d.ts +4 -0
  65. package/dist/routes/config.routes.d.ts.map +1 -0
  66. package/dist/routes/config.routes.js +27 -0
  67. package/dist/routes/config.routes.js.map +1 -0
  68. package/dist/routes/conversation.routes.d.ts +43 -0
  69. package/dist/routes/conversation.routes.d.ts.map +1 -0
  70. package/dist/routes/conversation.routes.js +79 -0
  71. package/dist/routes/conversation.routes.js.map +1 -0
  72. package/dist/routes/filesystem.routes.d.ts +4 -0
  73. package/dist/routes/filesystem.routes.d.ts.map +1 -0
  74. package/dist/routes/filesystem.routes.js +86 -0
  75. package/dist/routes/filesystem.routes.js.map +1 -0
  76. package/dist/routes/insights.routes.d.ts +17 -0
  77. package/dist/routes/insights.routes.d.ts.map +1 -0
  78. package/dist/routes/insights.routes.js +633 -0
  79. package/dist/routes/insights.routes.js.map +1 -0
  80. package/dist/routes/lattice.routes.d.ts +10 -0
  81. package/dist/routes/lattice.routes.d.ts.map +1 -0
  82. package/dist/routes/lattice.routes.js +123 -0
  83. package/dist/routes/lattice.routes.js.map +1 -0
  84. package/dist/routes/license.routes.d.ts +3 -0
  85. package/dist/routes/license.routes.d.ts.map +1 -0
  86. package/dist/routes/license.routes.js +95 -0
  87. package/dist/routes/license.routes.js.map +1 -0
  88. package/dist/routes/log.routes.d.ts +3 -0
  89. package/dist/routes/log.routes.d.ts.map +1 -0
  90. package/dist/routes/log.routes.js +184 -0
  91. package/dist/routes/log.routes.js.map +1 -0
  92. package/dist/routes/pending-question.routes.d.ts +9 -0
  93. package/dist/routes/pending-question.routes.d.ts.map +1 -0
  94. package/dist/routes/pending-question.routes.js +162 -0
  95. package/dist/routes/pending-question.routes.js.map +1 -0
  96. package/dist/routes/permission.routes.d.ts +18 -0
  97. package/dist/routes/permission.routes.d.ts.map +1 -0
  98. package/dist/routes/permission.routes.js +370 -0
  99. package/dist/routes/permission.routes.js.map +1 -0
  100. package/dist/routes/process-events.routes.d.ts +9 -0
  101. package/dist/routes/process-events.routes.d.ts.map +1 -0
  102. package/dist/routes/process-events.routes.js +141 -0
  103. package/dist/routes/process-events.routes.js.map +1 -0
  104. package/dist/routes/prototype.routes.d.ts +9 -0
  105. package/dist/routes/prototype.routes.d.ts.map +1 -0
  106. package/dist/routes/prototype.routes.js +757 -0
  107. package/dist/routes/prototype.routes.js.map +1 -0
  108. package/dist/routes/question.routes.d.ts +8 -0
  109. package/dist/routes/question.routes.d.ts.map +1 -0
  110. package/dist/routes/question.routes.js +83 -0
  111. package/dist/routes/question.routes.js.map +1 -0
  112. package/dist/routes/session-control.routes.d.ts +29 -0
  113. package/dist/routes/session-control.routes.d.ts.map +1 -0
  114. package/dist/routes/session-control.routes.js +455 -0
  115. package/dist/routes/session-control.routes.js.map +1 -0
  116. package/dist/routes/session-lifecycle.routes.d.ts +21 -0
  117. package/dist/routes/session-lifecycle.routes.d.ts.map +1 -0
  118. package/dist/routes/session-lifecycle.routes.js +256 -0
  119. package/dist/routes/session-lifecycle.routes.js.map +1 -0
  120. package/dist/routes/session-query.routes.d.ts +25 -0
  121. package/dist/routes/session-query.routes.d.ts.map +1 -0
  122. package/dist/routes/session-query.routes.js +363 -0
  123. package/dist/routes/session-query.routes.js.map +1 -0
  124. package/dist/routes/session-stream.routes.d.ts +21 -0
  125. package/dist/routes/session-stream.routes.d.ts.map +1 -0
  126. package/dist/routes/session-stream.routes.js +235 -0
  127. package/dist/routes/session-stream.routes.js.map +1 -0
  128. package/dist/routes/streaming.routes.d.ts +4 -0
  129. package/dist/routes/streaming.routes.d.ts.map +1 -0
  130. package/dist/routes/streaming.routes.js +33 -0
  131. package/dist/routes/streaming.routes.js.map +1 -0
  132. package/dist/routes/system.routes.d.ts +7 -0
  133. package/dist/routes/system.routes.d.ts.map +1 -0
  134. package/dist/routes/system.routes.js +214 -0
  135. package/dist/routes/system.routes.js.map +1 -0
  136. package/dist/routes/walkthrough.routes.d.ts +19 -0
  137. package/dist/routes/walkthrough.routes.d.ts.map +1 -0
  138. package/dist/routes/walkthrough.routes.js +688 -0
  139. package/dist/routes/walkthrough.routes.js.map +1 -0
  140. package/dist/routes/working-directories.routes.d.ts +4 -0
  141. package/dist/routes/working-directories.routes.d.ts.map +1 -0
  142. package/dist/routes/working-directories.routes.js +25 -0
  143. package/dist/routes/working-directories.routes.js.map +1 -0
  144. package/dist/server.d.ts +3 -0
  145. package/dist/server.d.ts.map +1 -0
  146. package/dist/server.js +34 -0
  147. package/dist/server.js.map +1 -0
  148. package/dist/services/ToolMetricsService.d.ts +53 -0
  149. package/dist/services/ToolMetricsService.d.ts.map +1 -0
  150. package/dist/services/ToolMetricsService.js +230 -0
  151. package/dist/services/ToolMetricsService.js.map +1 -0
  152. package/dist/services/claude-router-service.d.ts +19 -0
  153. package/dist/services/claude-router-service.d.ts.map +1 -0
  154. package/dist/services/claude-router-service.js +160 -0
  155. package/dist/services/claude-router-service.js.map +1 -0
  156. package/dist/services/commands-service.d.ts +20 -0
  157. package/dist/services/commands-service.d.ts.map +1 -0
  158. package/dist/services/commands-service.js +115 -0
  159. package/dist/services/commands-service.js.map +1 -0
  160. package/dist/services/connection-debug-logger.d.ts +85 -0
  161. package/dist/services/connection-debug-logger.d.ts.map +1 -0
  162. package/dist/services/connection-debug-logger.js +221 -0
  163. package/dist/services/connection-debug-logger.js.map +1 -0
  164. package/dist/services/debug-log.d.ts +6 -0
  165. package/dist/services/debug-log.d.ts.map +1 -0
  166. package/dist/services/debug-log.js +27 -0
  167. package/dist/services/debug-log.js.map +1 -0
  168. package/dist/services/gemini-service.d.ts +35 -0
  169. package/dist/services/gemini-service.d.ts.map +1 -0
  170. package/dist/services/gemini-service.js +256 -0
  171. package/dist/services/gemini-service.js.map +1 -0
  172. package/dist/services/infrastructure/config-service.d.ts +79 -0
  173. package/dist/services/infrastructure/config-service.d.ts.map +1 -0
  174. package/dist/services/infrastructure/config-service.js +431 -0
  175. package/dist/services/infrastructure/config-service.js.map +1 -0
  176. package/dist/services/infrastructure/cost-tracker.d.ts +112 -0
  177. package/dist/services/infrastructure/cost-tracker.d.ts.map +1 -0
  178. package/dist/services/infrastructure/cost-tracker.js +423 -0
  179. package/dist/services/infrastructure/cost-tracker.js.map +1 -0
  180. package/dist/services/infrastructure/file-system-service.d.ts +61 -0
  181. package/dist/services/infrastructure/file-system-service.d.ts.map +1 -0
  182. package/dist/services/infrastructure/file-system-service.js +348 -0
  183. package/dist/services/infrastructure/file-system-service.js.map +1 -0
  184. package/dist/services/infrastructure/log-formatter.d.ts +5 -0
  185. package/dist/services/infrastructure/log-formatter.d.ts.map +1 -0
  186. package/dist/services/infrastructure/log-formatter.js +77 -0
  187. package/dist/services/infrastructure/log-formatter.js.map +1 -0
  188. package/dist/services/infrastructure/log-stream-buffer.d.ts +11 -0
  189. package/dist/services/infrastructure/log-stream-buffer.d.ts.map +1 -0
  190. package/dist/services/infrastructure/log-stream-buffer.js +36 -0
  191. package/dist/services/infrastructure/log-stream-buffer.js.map +1 -0
  192. package/dist/services/infrastructure/logger.d.ts +71 -0
  193. package/dist/services/infrastructure/logger.d.ts.map +1 -0
  194. package/dist/services/infrastructure/logger.js +215 -0
  195. package/dist/services/infrastructure/logger.js.map +1 -0
  196. package/dist/services/infrastructure/service-registry.d.ts +86 -0
  197. package/dist/services/infrastructure/service-registry.d.ts.map +1 -0
  198. package/dist/services/infrastructure/service-registry.js +162 -0
  199. package/dist/services/infrastructure/service-registry.js.map +1 -0
  200. package/dist/services/infrastructure/stream-manager.d.ts +87 -0
  201. package/dist/services/infrastructure/stream-manager.d.ts.map +1 -0
  202. package/dist/services/infrastructure/stream-manager.js +436 -0
  203. package/dist/services/infrastructure/stream-manager.js.map +1 -0
  204. package/dist/services/infrastructure/timing.d.ts +72 -0
  205. package/dist/services/infrastructure/timing.d.ts.map +1 -0
  206. package/dist/services/infrastructure/timing.js +115 -0
  207. package/dist/services/infrastructure/timing.js.map +1 -0
  208. package/dist/services/insights/anthropic-service.d.ts +224 -0
  209. package/dist/services/insights/anthropic-service.d.ts.map +1 -0
  210. package/dist/services/insights/anthropic-service.js +1062 -0
  211. package/dist/services/insights/anthropic-service.js.map +1 -0
  212. package/dist/services/insights/insight-audit-repository.d.ts +119 -0
  213. package/dist/services/insights/insight-audit-repository.d.ts.map +1 -0
  214. package/dist/services/insights/insight-audit-repository.js +242 -0
  215. package/dist/services/insights/insight-audit-repository.js.map +1 -0
  216. package/dist/services/insights/insight-queue.d.ts +99 -0
  217. package/dist/services/insights/insight-queue.d.ts.map +1 -0
  218. package/dist/services/insights/insight-queue.js +277 -0
  219. package/dist/services/insights/insight-queue.js.map +1 -0
  220. package/dist/services/insights/insights-computer.d.ts +132 -0
  221. package/dist/services/insights/insights-computer.d.ts.map +1 -0
  222. package/dist/services/insights/insights-computer.js +936 -0
  223. package/dist/services/insights/insights-computer.js.map +1 -0
  224. package/dist/services/insights/insights-coordinator.d.ts +165 -0
  225. package/dist/services/insights/insights-coordinator.d.ts.map +1 -0
  226. package/dist/services/insights/insights-coordinator.js +1678 -0
  227. package/dist/services/insights/insights-coordinator.js.map +1 -0
  228. package/dist/services/insights/insights-event-log.d.ts +196 -0
  229. package/dist/services/insights/insights-event-log.d.ts.map +1 -0
  230. package/dist/services/insights/insights-event-log.js +319 -0
  231. package/dist/services/insights/insights-event-log.js.map +1 -0
  232. package/dist/services/lattice-service.d.ts +77 -0
  233. package/dist/services/lattice-service.d.ts.map +1 -0
  234. package/dist/services/lattice-service.js +195 -0
  235. package/dist/services/lattice-service.js.map +1 -0
  236. package/dist/services/license-service.d.ts +69 -0
  237. package/dist/services/license-service.d.ts.map +1 -0
  238. package/dist/services/license-service.js +330 -0
  239. package/dist/services/license-service.js.map +1 -0
  240. package/dist/services/mcp-config-generator.d.ts +32 -0
  241. package/dist/services/mcp-config-generator.d.ts.map +1 -0
  242. package/dist/services/mcp-config-generator.js +126 -0
  243. package/dist/services/mcp-config-generator.js.map +1 -0
  244. package/dist/services/message-filter.d.ts +22 -0
  245. package/dist/services/message-filter.d.ts.map +1 -0
  246. package/dist/services/message-filter.js +57 -0
  247. package/dist/services/message-filter.js.map +1 -0
  248. package/dist/services/notification-service.d.ts +45 -0
  249. package/dist/services/notification-service.d.ts.map +1 -0
  250. package/dist/services/notification-service.js +184 -0
  251. package/dist/services/notification-service.js.map +1 -0
  252. package/dist/services/pending-question-service.d.ts +97 -0
  253. package/dist/services/pending-question-service.d.ts.map +1 -0
  254. package/dist/services/pending-question-service.js +223 -0
  255. package/dist/services/pending-question-service.js.map +1 -0
  256. package/dist/services/permission-event-log.d.ts +136 -0
  257. package/dist/services/permission-event-log.d.ts.map +1 -0
  258. package/dist/services/permission-event-log.js +252 -0
  259. package/dist/services/permission-event-log.js.map +1 -0
  260. package/dist/services/permission-pattern-matcher.d.ts +82 -0
  261. package/dist/services/permission-pattern-matcher.d.ts.map +1 -0
  262. package/dist/services/permission-pattern-matcher.js +294 -0
  263. package/dist/services/permission-pattern-matcher.js.map +1 -0
  264. package/dist/services/permission-tracker.d.ts +67 -0
  265. package/dist/services/permission-tracker.d.ts.map +1 -0
  266. package/dist/services/permission-tracker.js +162 -0
  267. package/dist/services/permission-tracker.js.map +1 -0
  268. package/dist/services/process/claude-process-manager.d.ts +142 -0
  269. package/dist/services/process/claude-process-manager.d.ts.map +1 -0
  270. package/dist/services/process/claude-process-manager.js +1218 -0
  271. package/dist/services/process/claude-process-manager.js.map +1 -0
  272. package/dist/services/process/conversation-status-manager.d.ts +110 -0
  273. package/dist/services/process/conversation-status-manager.d.ts.map +1 -0
  274. package/dist/services/process/conversation-status-manager.js +349 -0
  275. package/dist/services/process/conversation-status-manager.js.map +1 -0
  276. package/dist/services/process/json-lines-parser.d.ts +19 -0
  277. package/dist/services/process/json-lines-parser.d.ts.map +1 -0
  278. package/dist/services/process/json-lines-parser.js +59 -0
  279. package/dist/services/process/json-lines-parser.js.map +1 -0
  280. package/dist/services/process/process-event-log.d.ts +263 -0
  281. package/dist/services/process/process-event-log.d.ts.map +1 -0
  282. package/dist/services/process/process-event-log.js +509 -0
  283. package/dist/services/process/process-event-log.js.map +1 -0
  284. package/dist/services/process/process-manager-factory.d.ts +109 -0
  285. package/dist/services/process/process-manager-factory.d.ts.map +1 -0
  286. package/dist/services/process/process-manager-factory.js +338 -0
  287. package/dist/services/process/process-manager-factory.js.map +1 -0
  288. package/dist/services/question-tracker.d.ts +51 -0
  289. package/dist/services/question-tracker.d.ts.map +1 -0
  290. package/dist/services/question-tracker.js +111 -0
  291. package/dist/services/question-tracker.js.map +1 -0
  292. package/dist/services/sessions/claude-history-reader.d.ts +139 -0
  293. package/dist/services/sessions/claude-history-reader.d.ts.map +1 -0
  294. package/dist/services/sessions/claude-history-reader.js +864 -0
  295. package/dist/services/sessions/claude-history-reader.js.map +1 -0
  296. package/dist/services/sessions/conversation-cache.d.ts +98 -0
  297. package/dist/services/sessions/conversation-cache.d.ts.map +1 -0
  298. package/dist/services/sessions/conversation-cache.js +329 -0
  299. package/dist/services/sessions/conversation-cache.js.map +1 -0
  300. package/dist/services/sessions/session-activity-watcher.d.ts +67 -0
  301. package/dist/services/sessions/session-activity-watcher.d.ts.map +1 -0
  302. package/dist/services/sessions/session-activity-watcher.js +236 -0
  303. package/dist/services/sessions/session-activity-watcher.js.map +1 -0
  304. package/dist/services/sessions/session-analysis-service.d.ts +72 -0
  305. package/dist/services/sessions/session-analysis-service.d.ts.map +1 -0
  306. package/dist/services/sessions/session-analysis-service.js +373 -0
  307. package/dist/services/sessions/session-analysis-service.js.map +1 -0
  308. package/dist/services/sessions/session-branch-service.d.ts +76 -0
  309. package/dist/services/sessions/session-branch-service.d.ts.map +1 -0
  310. package/dist/services/sessions/session-branch-service.js +355 -0
  311. package/dist/services/sessions/session-branch-service.js.map +1 -0
  312. package/dist/services/sessions/session-info-service.d.ts +455 -0
  313. package/dist/services/sessions/session-info-service.d.ts.map +1 -0
  314. package/dist/services/sessions/session-info-service.js +1640 -0
  315. package/dist/services/sessions/session-info-service.js.map +1 -0
  316. package/dist/services/sessions/session-marks-repository.d.ts +78 -0
  317. package/dist/services/sessions/session-marks-repository.d.ts.map +1 -0
  318. package/dist/services/sessions/session-marks-repository.js +263 -0
  319. package/dist/services/sessions/session-marks-repository.js.map +1 -0
  320. package/dist/services/sessions/session-marks-service.d.ts +137 -0
  321. package/dist/services/sessions/session-marks-service.d.ts.map +1 -0
  322. package/dist/services/sessions/session-marks-service.js +562 -0
  323. package/dist/services/sessions/session-marks-service.js.map +1 -0
  324. package/dist/services/sessions/session-review-service.d.ts +98 -0
  325. package/dist/services/sessions/session-review-service.d.ts.map +1 -0
  326. package/dist/services/sessions/session-review-service.js +629 -0
  327. package/dist/services/sessions/session-review-service.js.map +1 -0
  328. package/dist/services/sessions/turn-capture-service.d.ts +83 -0
  329. package/dist/services/sessions/turn-capture-service.d.ts.map +1 -0
  330. package/dist/services/sessions/turn-capture-service.js +477 -0
  331. package/dist/services/sessions/turn-capture-service.js.map +1 -0
  332. package/dist/services/sessions/turn-repository.d.ts +48 -0
  333. package/dist/services/sessions/turn-repository.d.ts.map +1 -0
  334. package/dist/services/sessions/turn-repository.js +103 -0
  335. package/dist/services/sessions/turn-repository.js.map +1 -0
  336. package/dist/services/walkthrough-service.d.ts +226 -0
  337. package/dist/services/walkthrough-service.d.ts.map +1 -0
  338. package/dist/services/walkthrough-service.js +1112 -0
  339. package/dist/services/walkthrough-service.js.map +1 -0
  340. package/dist/services/walkthrough-skill-prompt.d.ts +34 -0
  341. package/dist/services/walkthrough-skill-prompt.d.ts.map +1 -0
  342. package/dist/services/walkthrough-skill-prompt.js +313 -0
  343. package/dist/services/walkthrough-skill-prompt.js.map +1 -0
  344. package/dist/services/web-push-service.d.ts +48 -0
  345. package/dist/services/web-push-service.d.ts.map +1 -0
  346. package/dist/services/web-push-service.js +186 -0
  347. package/dist/services/web-push-service.js.map +1 -0
  348. package/dist/services/working-directories-service.d.ts +19 -0
  349. package/dist/services/working-directories-service.d.ts.map +1 -0
  350. package/dist/services/working-directories-service.js +103 -0
  351. package/dist/services/working-directories-service.js.map +1 -0
  352. package/dist/types/config.d.ts +122 -0
  353. package/dist/types/config.d.ts.map +1 -0
  354. package/dist/types/config.js +21 -0
  355. package/dist/types/config.js.map +1 -0
  356. package/dist/types/express.d.ts +5 -0
  357. package/dist/types/express.d.ts.map +1 -0
  358. package/dist/types/express.js +2 -0
  359. package/dist/types/express.js.map +1 -0
  360. package/dist/types/index.d.ts +400 -0
  361. package/dist/types/index.d.ts.map +1 -0
  362. package/dist/types/index.js +41 -0
  363. package/dist/types/index.js.map +1 -0
  364. package/dist/types/insights.d.ts +176 -0
  365. package/dist/types/insights.d.ts.map +1 -0
  366. package/dist/types/insights.js +23 -0
  367. package/dist/types/insights.js.map +1 -0
  368. package/dist/types/license.d.ts +70 -0
  369. package/dist/types/license.d.ts.map +1 -0
  370. package/dist/types/license.js +5 -0
  371. package/dist/types/license.js.map +1 -0
  372. package/dist/types/router-config.d.ts +13 -0
  373. package/dist/types/router-config.d.ts.map +1 -0
  374. package/dist/types/router-config.js +2 -0
  375. package/dist/types/router-config.js.map +1 -0
  376. package/dist/utils/constants.d.ts +26 -0
  377. package/dist/utils/constants.d.ts.map +1 -0
  378. package/dist/utils/constants.js +28 -0
  379. package/dist/utils/constants.js.map +1 -0
  380. package/dist/utils/machine-id.d.ts +7 -0
  381. package/dist/utils/machine-id.d.ts.map +1 -0
  382. package/dist/utils/machine-id.js +76 -0
  383. package/dist/utils/machine-id.js.map +1 -0
  384. package/dist/utils/server-startup.d.ts +11 -0
  385. package/dist/utils/server-startup.d.ts.map +1 -0
  386. package/dist/utils/server-startup.js +9 -0
  387. package/dist/utils/server-startup.js.map +1 -0
  388. package/dist/utils/update-check.d.ts +13 -0
  389. package/dist/utils/update-check.d.ts.map +1 -0
  390. package/dist/utils/update-check.js +90 -0
  391. package/dist/utils/update-check.js.map +1 -0
  392. package/dist/web/assets/ArchivedCardPrototype-S9ifiasa.js +5 -0
  393. package/dist/web/assets/BannerGallery-B__rJV6F.js +1 -0
  394. package/dist/web/assets/BannerPrototype-DBKP9Uiu.js +52 -0
  395. package/dist/web/assets/CodeHikeExperiment-B8jjWAFy.js +15 -0
  396. package/dist/web/assets/ContextTooltipVariations-DzklAFam.js +1 -0
  397. package/dist/web/assets/FontShowcasePrototype-KIMEWeP2.js +13 -0
  398. package/dist/web/assets/GeometricGallery-DddlWhHK.js +1 -0
  399. package/dist/web/assets/HistoryWalkthroughPrototype-DeniRRdw.js +18 -0
  400. package/dist/web/assets/InlineWalkthroughPrototype-Csd5r_Hk.js +1 -0
  401. package/dist/web/assets/MarkButtonPrototype-CxhxE0RP.js +1 -0
  402. package/dist/web/assets/MenuStylesPrototype-D7neA6YM.js +1 -0
  403. package/dist/web/assets/MomentCardVariations-2GT7GyFn.js +1 -0
  404. package/dist/web/assets/MomentHeaderVariations-DhGEw4XC.js +1 -0
  405. package/dist/web/assets/NarrativeWalkthroughDemo-B5C566fu.js +389 -0
  406. package/dist/web/assets/OutcomeVariations-BrZfsVcs.js +1 -0
  407. package/dist/web/assets/PermissionPatternPickerPrototype-CBOhe2Me.js +1 -0
  408. package/dist/web/assets/PermissionPrototype-BcF-a5an.js +1 -0
  409. package/dist/web/assets/PipelineGallery-BJhyM0rx.js +1 -0
  410. package/dist/web/assets/ScopeHeaderPrototype-GD1HNfaO.js +1 -0
  411. package/dist/web/assets/ScopeHeaderStylesPrototype-aa4uNJJ1.js +1 -0
  412. package/dist/web/assets/ScrollycodingPrototype-CKW1bf72.js +70 -0
  413. package/dist/web/assets/SectionHeaderVariations-DM8vUwfj.js +1 -0
  414. package/dist/web/assets/SemanticGallery-CtQEo7St.js +1 -0
  415. package/dist/web/assets/SessionCardPrototype-CgHCIMHe.js +1 -0
  416. package/dist/web/assets/SessionSidebarVariations-DMQL3Azj.js +3 -0
  417. package/dist/web/assets/SessionStartPrototype-Cwsv01Rr.js +1 -0
  418. package/dist/web/assets/SmartMenuPrototype-Br37Qbs_.js +1 -0
  419. package/dist/web/assets/StyleGallery-rZgrploB.js +1 -0
  420. package/dist/web/assets/TimelineCardPrototype-lzPc5mhe.js +19 -0
  421. package/dist/web/assets/ToolbarPrototype-Dm4BNZra.js +1 -0
  422. package/dist/web/assets/TooltipExperiment-Dy8QzTIP.js +13 -0
  423. package/dist/web/assets/WalkthroughCTAPrototype-uHoovujd.js +1 -0
  424. package/dist/web/assets/WalkthroughHeaderVariations-Do7Di1g1.js +1 -0
  425. package/dist/web/assets/WalkthroughShowcase-sGmRoPoM.js +112 -0
  426. package/dist/web/assets/arrow-right-D46Nx1mC.js +1 -0
  427. package/dist/web/assets/brain-BXIZKtOZ.js +1 -0
  428. package/dist/web/assets/grid-3x3-Cb81B62m.js +1 -0
  429. package/dist/web/assets/main-B1fyog77.js +321 -0
  430. package/dist/web/assets/main-C2PK2Klg.css +1 -0
  431. package/dist/web/assets/semantic-variations-Bd-W7ea2.js +1 -0
  432. package/dist/web/assets/target-Cf92wDTW.js +1 -0
  433. package/dist/web/favicon.png +0 -0
  434. package/dist/web/favicon.svg +22 -0
  435. package/dist/web/icon-192x192.png +0 -0
  436. package/dist/web/icon-512x512.png +0 -0
  437. package/dist/web/index.html +45 -0
  438. package/dist/web/manifest.json +61 -0
  439. package/package.json +192 -0
  440. package/scripts/postinstall.js +60 -0
@@ -0,0 +1,215 @@
1
+ import pino from 'pino';
2
+ import { PassThrough } from 'stream';
3
+ import { LogFormatter } from './log-formatter.js';
4
+ export class CUILogger {
5
+ pinoLogger;
6
+ constructor(pinoLogger) {
7
+ this.pinoLogger = pinoLogger;
8
+ }
9
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
10
+ debug(message, context) {
11
+ if (context !== undefined) {
12
+ this.pinoLogger.debug(context, message);
13
+ }
14
+ else {
15
+ this.pinoLogger.debug(message);
16
+ }
17
+ }
18
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
19
+ info(message, context) {
20
+ if (context !== undefined) {
21
+ this.pinoLogger.info(context, message);
22
+ }
23
+ else {
24
+ this.pinoLogger.info(message);
25
+ }
26
+ }
27
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
+ warn(message, context) {
29
+ if (context !== undefined) {
30
+ this.pinoLogger.warn(context, message);
31
+ }
32
+ else {
33
+ this.pinoLogger.warn(message);
34
+ }
35
+ }
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
37
+ error(message, error, context) {
38
+ if (error instanceof Error) {
39
+ const logData = { err: error, ...context };
40
+ this.pinoLogger.error(logData, message);
41
+ }
42
+ else if (error !== undefined && context !== undefined) {
43
+ // error is actually context, context is extra data
44
+ const logData = { ...error, ...context };
45
+ this.pinoLogger.error(logData, message);
46
+ }
47
+ else if (error !== undefined) {
48
+ // error is context
49
+ this.pinoLogger.error(error, message);
50
+ }
51
+ else {
52
+ this.pinoLogger.error(message);
53
+ }
54
+ }
55
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
56
+ fatal(message, error, context) {
57
+ if (error instanceof Error) {
58
+ const logData = { err: error, ...context };
59
+ this.pinoLogger.fatal(logData, message);
60
+ }
61
+ else if (error !== undefined && context !== undefined) {
62
+ // error is actually context, context is extra data
63
+ const logData = { ...error, ...context };
64
+ this.pinoLogger.fatal(logData, message);
65
+ }
66
+ else if (error !== undefined) {
67
+ // error is context
68
+ this.pinoLogger.fatal(error, message);
69
+ }
70
+ else {
71
+ this.pinoLogger.fatal(message);
72
+ }
73
+ }
74
+ // Support for creating child loggers
75
+ child(context) {
76
+ return new CUILogger(this.pinoLogger.child(context));
77
+ }
78
+ }
79
+ /**
80
+ * Centralized logger service using Pino
81
+ * Provides consistent logging across all CUI components
82
+ * Log level is controlled by LOG_LEVEL environment variable
83
+ */
84
+ class LoggerService {
85
+ static instance;
86
+ baseLogger;
87
+ logInterceptStream;
88
+ childLoggers = new Map();
89
+ constructor() {
90
+ // Get log level from environment variable, default to 'info'
91
+ const logLevel = process.env.LOG_LEVEL || 'info';
92
+ // Create a pass-through stream to intercept logs
93
+ this.logInterceptStream = new PassThrough();
94
+ // Forward logs to the log buffer (lazy loaded to avoid circular dependency)
95
+ this.logInterceptStream.on('data', (chunk) => {
96
+ const logLine = chunk.toString().trim();
97
+ if (logLine) {
98
+ // Lazy load to avoid circular dependency
99
+ import('../../services/infrastructure/log-stream-buffer').then(({ logStreamBuffer }) => {
100
+ logStreamBuffer.addLog(logLine);
101
+ }).catch(() => {
102
+ // Silently ignore if log buffer is not available
103
+ });
104
+ }
105
+ });
106
+ const formatter = new LogFormatter();
107
+ formatter.pipe(process.stdout);
108
+ // Create multi-stream configuration with formatter
109
+ const streams = [
110
+ { level: logLevel, stream: formatter },
111
+ { level: logLevel, stream: this.logInterceptStream }
112
+ ];
113
+ this.baseLogger = pino({
114
+ level: logLevel,
115
+ formatters: {
116
+ level: (label) => {
117
+ return { level: label };
118
+ }
119
+ },
120
+ timestamp: pino.stdTimeFunctions.isoTime,
121
+ // Enable in test environment if debug level, otherwise suppress
122
+ enabled: process.env.NODE_ENV !== 'test' || logLevel === 'debug'
123
+ }, pino.multistream(streams));
124
+ }
125
+ /**
126
+ * Get the singleton logger instance
127
+ */
128
+ static getInstance() {
129
+ if (!LoggerService.instance) {
130
+ LoggerService.instance = new LoggerService();
131
+ }
132
+ return LoggerService.instance;
133
+ }
134
+ /**
135
+ * Create a child logger with context
136
+ */
137
+ child(context) {
138
+ const contextKey = JSON.stringify(context);
139
+ if (!this.childLoggers.has(contextKey)) {
140
+ this.childLoggers.set(contextKey, this.baseLogger.child(context));
141
+ }
142
+ return new CUILogger(this.childLoggers.get(contextKey));
143
+ }
144
+ /**
145
+ * Get the base logger
146
+ */
147
+ getLogger() {
148
+ return new CUILogger(this.baseLogger);
149
+ }
150
+ /**
151
+ * Log debug message
152
+ */
153
+ debug(message, context) {
154
+ if (context) {
155
+ this.baseLogger.child(context).debug(message);
156
+ }
157
+ else {
158
+ this.baseLogger.debug(message);
159
+ }
160
+ }
161
+ /**
162
+ * Log info message
163
+ */
164
+ info(message, context) {
165
+ if (context) {
166
+ this.baseLogger.child(context).info(message);
167
+ }
168
+ else {
169
+ this.baseLogger.info(message);
170
+ }
171
+ }
172
+ /**
173
+ * Log warning message
174
+ */
175
+ warn(message, context) {
176
+ if (context) {
177
+ this.baseLogger.child(context).warn(message);
178
+ }
179
+ else {
180
+ this.baseLogger.warn(message);
181
+ }
182
+ }
183
+ /**
184
+ * Log error message
185
+ */
186
+ error(message, error, context) {
187
+ const logData = error ? { err: error } : {};
188
+ if (context) {
189
+ this.baseLogger.child({ ...context, ...logData }).error(message);
190
+ }
191
+ else {
192
+ this.baseLogger.error(logData, message);
193
+ }
194
+ }
195
+ /**
196
+ * Log fatal message
197
+ */
198
+ fatal(message, error, context) {
199
+ const logData = error ? { err: error } : {};
200
+ if (context) {
201
+ this.baseLogger.child({ ...context, ...logData }).fatal(message);
202
+ }
203
+ else {
204
+ this.baseLogger.fatal(logData, message);
205
+ }
206
+ }
207
+ }
208
+ // Export singleton instance
209
+ export const logger = LoggerService.getInstance();
210
+ // Export factory function for creating component loggers
211
+ export function createLogger(component, baseContext) {
212
+ const context = { component, ...baseContext };
213
+ return logger.child(context);
214
+ }
215
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/services/infrastructure/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Service Registry - Explicit initialization tracking with dependency validation.
3
+ *
4
+ * Solves the "singleton initialization chaos" problem where:
5
+ * - Services depend on initialization order with no enforcement
6
+ * - Lazy initialization can silently fail if dependencies aren't ready
7
+ * - No visibility into which services are initialized
8
+ *
9
+ * USAGE:
10
+ *
11
+ * 1. Register services during startup:
12
+ * serviceRegistry.register('SessionInfoService', {
13
+ * dependsOn: ['ConfigService']
14
+ * });
15
+ *
16
+ * 2. Mark as initialized after async init completes:
17
+ * await sessionInfoService.initialize();
18
+ * serviceRegistry.markInitialized('SessionInfoService');
19
+ *
20
+ * 3. Services can guard their methods:
21
+ * serviceRegistry.requireInitialized('SessionInfoService');
22
+ *
23
+ * 4. Check status for debugging:
24
+ * serviceRegistry.getStatus(); // Returns all services and their state
25
+ */
26
+ export interface ServiceRegistration {
27
+ /** Services that must be initialized before this one */
28
+ dependsOn?: string[];
29
+ /** Optional description for debugging */
30
+ description?: string;
31
+ }
32
+ declare class ServiceRegistry {
33
+ private services;
34
+ /**
35
+ * Register a service. Call this before initialization.
36
+ * Validates that declared dependencies are already registered.
37
+ */
38
+ register(name: string, options?: ServiceRegistration): void;
39
+ /**
40
+ * Mark a service as initialized.
41
+ * Validates that all dependencies are already initialized.
42
+ */
43
+ markInitialized(name: string): void;
44
+ /**
45
+ * Check if a service is initialized.
46
+ */
47
+ isInitialized(name: string): boolean;
48
+ /**
49
+ * Require a service to be initialized, throwing if not.
50
+ * Use this to guard service methods.
51
+ */
52
+ requireInitialized(name: string): void;
53
+ /**
54
+ * Get status of all registered services.
55
+ * Useful for debugging and health checks.
56
+ */
57
+ getStatus(): Record<string, {
58
+ initialized: boolean;
59
+ dependsOn: string[];
60
+ initializedAt?: string;
61
+ }>;
62
+ /**
63
+ * Get list of services that aren't initialized yet.
64
+ */
65
+ getUninitializedServices(): string[];
66
+ /**
67
+ * Verify all registered services are initialized.
68
+ * Throws if any service is not initialized.
69
+ */
70
+ requireAllInitialized(): void;
71
+ /**
72
+ * Reset all services (for testing).
73
+ */
74
+ reset(): void;
75
+ /**
76
+ * Unregister a specific service (for testing).
77
+ */
78
+ unregister(name: string): void;
79
+ }
80
+ export declare const serviceRegistry: ServiceRegistry;
81
+ export declare const registerService: (name: string, options?: ServiceRegistration) => void;
82
+ export declare const markServiceInitialized: (name: string) => void;
83
+ export declare const requireServiceInitialized: (name: string) => void;
84
+ export declare const isServiceInitialized: (name: string) => boolean;
85
+ export {};
86
+ //# sourceMappingURL=service-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-registry.d.ts","sourceRoot":"","sources":["../../../src/services/infrastructure/service-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,MAAM,WAAW,mBAAmB;IAClC,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAaD,cAAM,eAAe;IACnB,OAAO,CAAC,QAAQ,CAAmC;IAEnD;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAwB,GAAG,IAAI;IA6B/D;;;OAGG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAkCnC;;OAEG;IACH,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIpC;;;OAGG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAqBtC;;;OAGG;IACH,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE;QAAE,WAAW,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAclG;;OAEG;IACH,wBAAwB,IAAI,MAAM,EAAE;IAMpC;;;OAGG;IACH,qBAAqB,IAAI,IAAI;IAW7B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;CAG/B;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC;AAGrD,eAAO,MAAM,eAAe,GAAI,MAAM,MAAM,EAAE,UAAU,mBAAmB,SAClC,CAAC;AAE1C,eAAO,MAAM,sBAAsB,GAAI,MAAM,MAAM,SACZ,CAAC;AAExC,eAAO,MAAM,yBAAyB,GAAI,MAAM,MAAM,SACZ,CAAC;AAE3C,eAAO,MAAM,oBAAoB,GAAI,MAAM,MAAM,YACZ,CAAC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Service Registry - Explicit initialization tracking with dependency validation.
3
+ *
4
+ * Solves the "singleton initialization chaos" problem where:
5
+ * - Services depend on initialization order with no enforcement
6
+ * - Lazy initialization can silently fail if dependencies aren't ready
7
+ * - No visibility into which services are initialized
8
+ *
9
+ * USAGE:
10
+ *
11
+ * 1. Register services during startup:
12
+ * serviceRegistry.register('SessionInfoService', {
13
+ * dependsOn: ['ConfigService']
14
+ * });
15
+ *
16
+ * 2. Mark as initialized after async init completes:
17
+ * await sessionInfoService.initialize();
18
+ * serviceRegistry.markInitialized('SessionInfoService');
19
+ *
20
+ * 3. Services can guard their methods:
21
+ * serviceRegistry.requireInitialized('SessionInfoService');
22
+ *
23
+ * 4. Check status for debugging:
24
+ * serviceRegistry.getStatus(); // Returns all services and their state
25
+ */
26
+ import { createLogger } from './logger.js';
27
+ const logger = createLogger('ServiceRegistry');
28
+ class ServiceRegistry {
29
+ services = new Map();
30
+ /**
31
+ * Register a service. Call this before initialization.
32
+ * Validates that declared dependencies are already registered.
33
+ */
34
+ register(name, options = {}) {
35
+ if (this.services.has(name)) {
36
+ logger.warn(`Service "${name}" already registered, skipping`);
37
+ return;
38
+ }
39
+ const dependsOn = options.dependsOn || [];
40
+ // Validate dependencies are registered (but not necessarily initialized yet)
41
+ for (const dep of dependsOn) {
42
+ if (!this.services.has(dep)) {
43
+ throw new Error(`Service "${name}" depends on "${dep}" which is not registered. ` +
44
+ `Register dependencies before dependents.`);
45
+ }
46
+ }
47
+ this.services.set(name, {
48
+ name,
49
+ registered: true,
50
+ initialized: false,
51
+ dependsOn,
52
+ description: options.description
53
+ });
54
+ logger.debug(`Registered service: ${name}`, { dependsOn });
55
+ }
56
+ /**
57
+ * Mark a service as initialized.
58
+ * Validates that all dependencies are already initialized.
59
+ */
60
+ markInitialized(name) {
61
+ const state = this.services.get(name);
62
+ if (!state) {
63
+ throw new Error(`Cannot mark "${name}" as initialized - not registered. ` +
64
+ `Call register() before markInitialized().`);
65
+ }
66
+ if (state.initialized) {
67
+ logger.warn(`Service "${name}" already marked as initialized`);
68
+ return;
69
+ }
70
+ // Validate all dependencies are initialized
71
+ const uninitializedDeps = state.dependsOn.filter(dep => {
72
+ const depState = this.services.get(dep);
73
+ return !depState?.initialized;
74
+ });
75
+ if (uninitializedDeps.length > 0) {
76
+ throw new Error(`Cannot initialize "${name}" - dependencies not initialized: ${uninitializedDeps.join(', ')}. ` +
77
+ `Initialize dependencies first.`);
78
+ }
79
+ state.initialized = true;
80
+ state.initializedAt = new Date();
81
+ logger.debug(`Initialized service: ${name}`);
82
+ }
83
+ /**
84
+ * Check if a service is initialized.
85
+ */
86
+ isInitialized(name) {
87
+ return this.services.get(name)?.initialized ?? false;
88
+ }
89
+ /**
90
+ * Require a service to be initialized, throwing if not.
91
+ * Use this to guard service methods.
92
+ */
93
+ requireInitialized(name) {
94
+ const state = this.services.get(name);
95
+ if (!state) {
96
+ throw new Error(`Service "${name}" is not registered. ` +
97
+ `This may indicate a missing service or a typo in the service name.`);
98
+ }
99
+ if (!state.initialized) {
100
+ const deps = state.dependsOn.length > 0
101
+ ? ` (depends on: ${state.dependsOn.join(', ')})`
102
+ : '';
103
+ throw new Error(`Service "${name}" is not initialized${deps}. ` +
104
+ `Ensure initialize() is called during server startup.`);
105
+ }
106
+ }
107
+ /**
108
+ * Get status of all registered services.
109
+ * Useful for debugging and health checks.
110
+ */
111
+ getStatus() {
112
+ const status = {};
113
+ for (const [name, state] of this.services) {
114
+ status[name] = {
115
+ initialized: state.initialized,
116
+ dependsOn: state.dependsOn,
117
+ initializedAt: state.initializedAt?.toISOString()
118
+ };
119
+ }
120
+ return status;
121
+ }
122
+ /**
123
+ * Get list of services that aren't initialized yet.
124
+ */
125
+ getUninitializedServices() {
126
+ return Array.from(this.services.entries())
127
+ .filter(([_, state]) => !state.initialized)
128
+ .map(([name]) => name);
129
+ }
130
+ /**
131
+ * Verify all registered services are initialized.
132
+ * Throws if any service is not initialized.
133
+ */
134
+ requireAllInitialized() {
135
+ const uninitialized = this.getUninitializedServices();
136
+ if (uninitialized.length > 0) {
137
+ throw new Error(`The following services are not initialized: ${uninitialized.join(', ')}. ` +
138
+ `Ensure all services complete initialization during startup.`);
139
+ }
140
+ }
141
+ /**
142
+ * Reset all services (for testing).
143
+ */
144
+ reset() {
145
+ this.services.clear();
146
+ logger.debug('Service registry reset');
147
+ }
148
+ /**
149
+ * Unregister a specific service (for testing).
150
+ */
151
+ unregister(name) {
152
+ this.services.delete(name);
153
+ }
154
+ }
155
+ // Singleton instance
156
+ export const serviceRegistry = new ServiceRegistry();
157
+ // Convenience re-exports for common operations
158
+ export const registerService = (name, options) => serviceRegistry.register(name, options);
159
+ export const markServiceInitialized = (name) => serviceRegistry.markInitialized(name);
160
+ export const requireServiceInitialized = (name) => serviceRegistry.requireInitialized(name);
161
+ export const isServiceInitialized = (name) => serviceRegistry.isInitialized(name);
162
+ //# sourceMappingURL=service-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-registry.js","sourceRoot":"","sources":["../../../src/services/infrastructure/service-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import { Response } from 'express';
2
+ import { StreamEvent } from '../../types/index.js';
3
+ import { EventEmitter } from 'events';
4
+ /**
5
+ * Manages streaming connections to multiple clients
6
+ */
7
+ export declare class StreamManager extends EventEmitter {
8
+ private clients;
9
+ private logger;
10
+ private heartbeatInterval?;
11
+ private eventBuffers;
12
+ private readonly EVENT_BUFFER_WINDOW_MS;
13
+ private readonly MAX_BUFFERED_EVENTS;
14
+ private readonly HEARTBEAT_INTERVAL_MS;
15
+ constructor();
16
+ /**
17
+ * Start buffering events for a session.
18
+ * Call this when a session is created, before any clients connect.
19
+ * Events will be replayed when the first client connects.
20
+ */
21
+ startBuffering(streamingId: string): void;
22
+ /**
23
+ * Stop buffering events for a session and discard any buffered events.
24
+ * Called automatically after the buffer window expires.
25
+ */
26
+ private stopBuffering;
27
+ /**
28
+ * Replay buffered events to a client and stop buffering.
29
+ * Called when the first client connects.
30
+ */
31
+ private replayBufferedEvents;
32
+ /**
33
+ * Add a client to receive stream updates
34
+ */
35
+ addClient(streamingId: string, res: Response): void;
36
+ /**
37
+ * Remove a client connection
38
+ */
39
+ removeClient(streamingId: string, res: Response): void;
40
+ /**
41
+ * Broadcast an event to all clients watching a session
42
+ */
43
+ broadcast(streamingId: string, event: StreamEvent): void;
44
+ /**
45
+ * Send an SSE event to a specific client
46
+ */
47
+ private sendSSEEvent;
48
+ /**
49
+ * Send SSE heartbeat (comment) to keep connection alive
50
+ */
51
+ private sendHeartbeat;
52
+ /**
53
+ * Get number of clients connected to a session
54
+ */
55
+ getClientCount(streamingId: string): number;
56
+ /**
57
+ * Get all active sessions
58
+ */
59
+ getActiveSessions(): string[];
60
+ /**
61
+ * Close all connections for a session
62
+ */
63
+ closeSession(streamingId: string): void;
64
+ /**
65
+ * Get total number of clients across all sessions
66
+ */
67
+ getTotalClientCount(): number;
68
+ /**
69
+ * Clean up orphaned sessions that don't have an active Claude process.
70
+ * Call this with a set of active streamingIds to close any sessions not in that set.
71
+ */
72
+ cleanupOrphanedSessions(activeStreamingIds: Set<string>): number;
73
+ /**
74
+ * Disconnect all clients from all sessions
75
+ */
76
+ disconnectAll(): void;
77
+ /**
78
+ * Start periodic heartbeat to keep SSE connections alive
79
+ * Also prunes stale/dead clients that failed to disconnect properly
80
+ */
81
+ private startHeartbeat;
82
+ /**
83
+ * Stop periodic heartbeat
84
+ */
85
+ private stopHeartbeat;
86
+ }
87
+ //# sourceMappingURL=stream-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-manager.d.ts","sourceRoot":"","sources":["../../../src/services/infrastructure/stream-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAgBtC;;GAEG;AACH,qBAAa,aAAc,SAAQ,YAAY;IAC7C,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,iBAAiB,CAAC,CAAiB;IAG3C,OAAO,CAAC,YAAY,CAAuC;IAI3D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAQ;IAG/C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAO;IAK3C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;;IAO/C;;;;OAIG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAsBzC;;;OAGG;IACH,OAAO,CAAC,aAAa;IAiBrB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA8B5B;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IA2EnD;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,IAAI;IAyBtD;;OAEG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAwExD;;OAEG;IACH,OAAO,CAAC,YAAY;IAuBpB;;OAEG;IACH,OAAO,CAAC,aAAa;IAMrB;;OAEG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;IAI3C;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACH,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAwCvC;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAQ7B;;;OAGG;IACH,uBAAuB,CAAC,kBAAkB,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM;IAuBhE;;OAEG;IACH,aAAa,IAAI,IAAI;IAYrB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,aAAa;CAOtB"}