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,348 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import { exec } from 'child_process';
4
+ import { promisify } from 'util';
5
+ import { existsSync, constants } from 'fs';
6
+ import ignore from 'ignore';
7
+ import { LatticeError } from '../../types/index.js';
8
+ import { createLogger } from '../infrastructure/logger.js';
9
+ const execAsync = promisify(exec);
10
+ /**
11
+ * Service for secure file system operations
12
+ */
13
+ export class FileSystemService {
14
+ logger;
15
+ maxFileSize = 10 * 1024 * 1024; // 10MB default
16
+ allowedBasePaths = []; // Empty means all paths allowed
17
+ constructor(maxFileSize, allowedBasePaths) {
18
+ this.logger = createLogger('FileSystemService');
19
+ if (maxFileSize !== undefined) {
20
+ this.maxFileSize = maxFileSize;
21
+ }
22
+ if (allowedBasePaths) {
23
+ this.allowedBasePaths = allowedBasePaths.map(p => path.normalize(p));
24
+ }
25
+ }
26
+ /**
27
+ * List directory contents with security checks
28
+ */
29
+ async listDirectory(requestedPath, recursive = false, respectGitignore = false) {
30
+ this.logger.debug('List directory requested', { requestedPath, recursive, respectGitignore });
31
+ try {
32
+ // Validate and normalize path
33
+ const safePath = await this.validatePath(requestedPath);
34
+ // Check if path exists and is a directory
35
+ const stats = await fs.stat(safePath);
36
+ if (!stats.isDirectory()) {
37
+ throw new LatticeError('NOT_A_DIRECTORY', `Path is not a directory: ${requestedPath}`, 400);
38
+ }
39
+ // Initialize gitignore if requested
40
+ let ig = null;
41
+ if (respectGitignore) {
42
+ ig = await this.loadGitignore(safePath);
43
+ }
44
+ // Get entries
45
+ const entries = recursive
46
+ ? await this.listDirectoryRecursive(safePath, safePath, ig)
47
+ : await this.listDirectoryFlat(safePath, ig);
48
+ // Sort entries: directories first, then by name
49
+ entries.sort((a, b) => {
50
+ if (a.type !== b.type) {
51
+ return a.type === 'directory' ? -1 : 1;
52
+ }
53
+ return a.name.localeCompare(b.name);
54
+ });
55
+ this.logger.debug('Directory listed successfully', {
56
+ path: safePath,
57
+ entryCount: entries.length,
58
+ recursive,
59
+ respectGitignore
60
+ });
61
+ return {
62
+ path: safePath,
63
+ entries,
64
+ total: entries.length
65
+ };
66
+ }
67
+ catch (error) {
68
+ if (error instanceof LatticeError) {
69
+ throw error;
70
+ }
71
+ const errorCode = error.code;
72
+ if (errorCode === 'ENOENT') {
73
+ throw new LatticeError('PATH_NOT_FOUND', `Path not found: ${requestedPath}`, 404);
74
+ }
75
+ else if (errorCode === 'EACCES') {
76
+ throw new LatticeError('ACCESS_DENIED', `Access denied to path: ${requestedPath}`, 403);
77
+ }
78
+ this.logger.error('Error listing directory', error, { requestedPath });
79
+ throw new LatticeError('LIST_DIRECTORY_FAILED', `Failed to list directory: ${error}`, 500);
80
+ }
81
+ }
82
+ /**
83
+ * Read file contents with security checks
84
+ */
85
+ async readFile(requestedPath) {
86
+ this.logger.debug('Read file requested', { requestedPath });
87
+ try {
88
+ // Validate and normalize path
89
+ const safePath = await this.validatePath(requestedPath);
90
+ // Check if path exists and is a file
91
+ const stats = await fs.stat(safePath);
92
+ if (!stats.isFile()) {
93
+ throw new LatticeError('NOT_A_FILE', `Path is not a file: ${requestedPath}`, 400);
94
+ }
95
+ // Check file size
96
+ if (stats.size > this.maxFileSize) {
97
+ throw new LatticeError('FILE_TOO_LARGE', `File size (${stats.size} bytes) exceeds maximum allowed size (${this.maxFileSize} bytes)`, 400);
98
+ }
99
+ // Read file content
100
+ const content = await fs.readFile(safePath, 'utf-8');
101
+ // Check if content is valid UTF-8 text
102
+ if (!this.isValidUtf8(content)) {
103
+ throw new LatticeError('BINARY_FILE', 'File appears to be binary or not valid UTF-8', 400);
104
+ }
105
+ this.logger.debug('File read successfully', {
106
+ path: safePath,
107
+ size: stats.size
108
+ });
109
+ return {
110
+ path: safePath,
111
+ content,
112
+ size: stats.size,
113
+ lastModified: stats.mtime.toISOString(),
114
+ encoding: 'utf-8'
115
+ };
116
+ }
117
+ catch (error) {
118
+ if (error instanceof LatticeError) {
119
+ throw error;
120
+ }
121
+ const errorCode = error.code;
122
+ if (errorCode === 'ENOENT') {
123
+ throw new LatticeError('FILE_NOT_FOUND', `File not found: ${requestedPath}`, 404);
124
+ }
125
+ else if (errorCode === 'EACCES') {
126
+ throw new LatticeError('ACCESS_DENIED', `Access denied to file: ${requestedPath}`, 403);
127
+ }
128
+ this.logger.error('Error reading file', error, { requestedPath });
129
+ throw new LatticeError('READ_FILE_FAILED', `Failed to read file: ${error}`, 500);
130
+ }
131
+ }
132
+ /**
133
+ * Validate and normalize a path to prevent path traversal attacks
134
+ */
135
+ async validatePath(requestedPath) {
136
+ // Require absolute paths
137
+ if (!path.isAbsolute(requestedPath)) {
138
+ throw new LatticeError('INVALID_PATH', 'Path must be absolute', 400);
139
+ }
140
+ // Check for path traversal attempts before normalization
141
+ if (requestedPath.includes('..')) {
142
+ this.logger.warn('Path traversal attempt detected', {
143
+ requestedPath
144
+ });
145
+ throw new LatticeError('PATH_TRAVERSAL_DETECTED', 'Invalid path: path traversal detected', 400);
146
+ }
147
+ // Normalize the path to resolve . segments and clean up
148
+ const normalizedPath = path.normalize(requestedPath);
149
+ // Check against allowed base paths if configured
150
+ if (this.allowedBasePaths.length > 0) {
151
+ const isAllowed = this.allowedBasePaths.some(basePath => normalizedPath.startsWith(basePath));
152
+ if (!isAllowed) {
153
+ this.logger.warn('Path outside allowed directories', {
154
+ requestedPath,
155
+ normalizedPath,
156
+ allowedBasePaths: this.allowedBasePaths
157
+ });
158
+ throw new LatticeError('PATH_NOT_ALLOWED', 'Path is outside allowed directories', 403);
159
+ }
160
+ }
161
+ // Additional security checks
162
+ const segments = normalizedPath.split(path.sep);
163
+ for (const segment of segments) {
164
+ if (!segment)
165
+ continue;
166
+ // Check for hidden files/directories
167
+ if (segment.startsWith('.')) {
168
+ this.logger.warn('Hidden file/directory detected', {
169
+ requestedPath,
170
+ segment
171
+ });
172
+ throw new LatticeError('INVALID_PATH', 'Path contains hidden files/directories', 400);
173
+ }
174
+ // Check for null bytes
175
+ if (segment.includes('\u0000')) {
176
+ this.logger.warn('Null byte detected in path', {
177
+ requestedPath,
178
+ segment
179
+ });
180
+ throw new LatticeError('INVALID_PATH', 'Path contains null bytes', 400);
181
+ }
182
+ // Check for invalid characters
183
+ if (/[<>:|?*]/.test(segment)) {
184
+ this.logger.warn('Invalid characters detected in path', {
185
+ requestedPath,
186
+ segment
187
+ });
188
+ throw new LatticeError('INVALID_PATH', 'Path contains invalid characters', 400);
189
+ }
190
+ }
191
+ this.logger.debug('Path validated successfully', {
192
+ requestedPath,
193
+ normalizedPath
194
+ });
195
+ return normalizedPath;
196
+ }
197
+ /**
198
+ * Check if content appears to be valid UTF-8 text
199
+ */
200
+ isValidUtf8(content) {
201
+ // Check for null bytes - common binary file indicator
202
+ if (content.includes('\u0000')) {
203
+ return false;
204
+ }
205
+ // Check for control characters (excluding tab, newline, and carriage return)
206
+ for (let i = 0; i < content.length; i++) {
207
+ const charCode = content.charCodeAt(i);
208
+ // Allow tab (9), newline (10), and carriage return (13)
209
+ // Reject other control characters (1-8, 11-12, 14-31)
210
+ if ((charCode >= 1 && charCode <= 8) ||
211
+ (charCode >= 11 && charCode <= 12) ||
212
+ (charCode >= 14 && charCode <= 31)) {
213
+ return false;
214
+ }
215
+ }
216
+ return true;
217
+ }
218
+ /**
219
+ * List directory contents without recursion
220
+ */
221
+ async listDirectoryFlat(dirPath, ig) {
222
+ const dirents = await fs.readdir(dirPath, { withFileTypes: true });
223
+ const entries = [];
224
+ for (const dirent of dirents) {
225
+ // Check gitignore BEFORE any expensive operations
226
+ if (ig && ig.ignores(dirent.name)) {
227
+ continue;
228
+ }
229
+ const fullPath = path.join(dirPath, dirent.name);
230
+ const stats = await fs.stat(fullPath);
231
+ entries.push({
232
+ name: dirent.name,
233
+ type: dirent.isDirectory() ? 'directory' : 'file',
234
+ size: dirent.isFile() ? stats.size : undefined,
235
+ lastModified: stats.mtime.toISOString()
236
+ });
237
+ }
238
+ return entries;
239
+ }
240
+ /**
241
+ * List directory contents recursively
242
+ */
243
+ async listDirectoryRecursive(dirPath, basePath, ig) {
244
+ const entries = [];
245
+ async function traverse(currentPath) {
246
+ const dirents = await fs.readdir(currentPath, { withFileTypes: true });
247
+ for (const dirent of dirents) {
248
+ const fullPath = path.join(currentPath, dirent.name);
249
+ const relativePath = path.relative(basePath, fullPath);
250
+ // Check gitignore BEFORE any expensive operations
251
+ if (ig && ig.ignores(relativePath)) {
252
+ // Skip this entry entirely - don't stat, don't recurse into directories
253
+ continue;
254
+ }
255
+ const stats = await fs.stat(fullPath);
256
+ entries.push({
257
+ name: relativePath,
258
+ type: dirent.isDirectory() ? 'directory' : 'file',
259
+ size: dirent.isFile() ? stats.size : undefined,
260
+ lastModified: stats.mtime.toISOString()
261
+ });
262
+ // Recurse into subdirectories (already checked it's not ignored)
263
+ if (dirent.isDirectory()) {
264
+ await traverse(fullPath);
265
+ }
266
+ }
267
+ }
268
+ await traverse(dirPath);
269
+ return entries;
270
+ }
271
+ /**
272
+ * Load gitignore patterns from a directory and its parents
273
+ */
274
+ async loadGitignore(dirPath) {
275
+ const ig = ignore();
276
+ // Load .gitignore from the directory
277
+ try {
278
+ const gitignorePath = path.join(dirPath, '.gitignore');
279
+ const content = await fs.readFile(gitignorePath, 'utf-8');
280
+ ig.add(content);
281
+ this.logger.debug('Loaded .gitignore', { path: gitignorePath });
282
+ }
283
+ catch (error) {
284
+ // .gitignore doesn't exist or can't be read - that's fine
285
+ const errorCode = error.code;
286
+ if (errorCode !== 'ENOENT') {
287
+ this.logger.debug('Error reading .gitignore', { error, path: dirPath });
288
+ }
289
+ }
290
+ // Always ignore .git directory
291
+ ig.add('.git');
292
+ return ig;
293
+ }
294
+ /**
295
+ * Check if a directory is a git repository
296
+ */
297
+ async isGitRepository(dirPath) {
298
+ try {
299
+ await execAsync('git rev-parse --git-dir', { cwd: dirPath });
300
+ return true;
301
+ }
302
+ catch (error) {
303
+ this.logger.debug('Directory is not a git repository', { dirPath, error });
304
+ return false;
305
+ }
306
+ }
307
+ /**
308
+ * Get current git HEAD commit hash
309
+ */
310
+ async getCurrentGitHead(dirPath) {
311
+ try {
312
+ const { stdout } = await execAsync('git rev-parse HEAD', { cwd: dirPath });
313
+ return stdout.trim();
314
+ }
315
+ catch (error) {
316
+ this.logger.debug('Failed to get git HEAD', { dirPath, error });
317
+ return null;
318
+ }
319
+ }
320
+ /**
321
+ * Validate that an executable exists and has executable permissions
322
+ */
323
+ async validateExecutable(executablePath) {
324
+ this.logger.debug('Validating executable', { executablePath });
325
+ try {
326
+ // Check if file exists
327
+ if (!existsSync(executablePath)) {
328
+ throw new LatticeError('EXECUTABLE_NOT_FOUND', `Executable not found: ${executablePath}`, 404);
329
+ }
330
+ // Check if file is executable
331
+ try {
332
+ await fs.access(executablePath, constants.X_OK);
333
+ }
334
+ catch (_error) {
335
+ throw new LatticeError('NOT_EXECUTABLE', `File exists but is not executable: ${executablePath}`, 403);
336
+ }
337
+ this.logger.debug('Executable validation successful', { executablePath });
338
+ }
339
+ catch (error) {
340
+ if (error instanceof LatticeError) {
341
+ throw error;
342
+ }
343
+ this.logger.error('Error validating executable', error, { executablePath });
344
+ throw new LatticeError('EXECUTABLE_VALIDATION_FAILED', `Failed to validate executable: ${error}`, 500);
345
+ }
346
+ }
347
+ }
348
+ //# sourceMappingURL=file-system-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-system-service.js","sourceRoot":"","sources":["../../../src/services/infrastructure/file-system-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Transform } from 'stream';
2
+ export declare class LogFormatter extends Transform {
3
+ constructor();
4
+ }
5
+ //# sourceMappingURL=log-formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-formatter.d.ts","sourceRoot":"","sources":["../../../src/services/infrastructure/log-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AA0BnC,qBAAa,YAAa,SAAQ,SAAS;;CAsB1C"}
@@ -0,0 +1,77 @@
1
+ import { Transform } from 'stream';
2
+ const RESET = '\x1b[0m';
3
+ const GRAY = '\x1b[90m';
4
+ const BOLD = '\x1b[1m';
5
+ const BLUE = '\x1b[34m';
6
+ export class LogFormatter extends Transform {
7
+ constructor() {
8
+ super({
9
+ writableObjectMode: true,
10
+ transform(chunk, _encoding, callback) {
11
+ try {
12
+ const logLine = String(chunk).trim();
13
+ if (!logLine) {
14
+ callback();
15
+ return;
16
+ }
17
+ const log = JSON.parse(logLine);
18
+ const formatted = formatLog(log);
19
+ callback(null, formatted + '\n');
20
+ }
21
+ catch (_err) {
22
+ // If we can't parse it, pass it through as-is
23
+ callback(null, chunk);
24
+ }
25
+ }
26
+ });
27
+ }
28
+ }
29
+ function formatLog(log) {
30
+ // Format timestamp in 12-hour format with AM/PM
31
+ const time = new Date(typeof log.time === 'string' ? log.time : log.time);
32
+ const hours = time.getHours();
33
+ const minutes = time.getMinutes().toString().padStart(2, '0');
34
+ const seconds = time.getSeconds().toString().padStart(2, '0');
35
+ const ampm = hours >= 12 ? 'PM' : 'AM';
36
+ const displayHours = (hours % 12 || 12).toString().padStart(2, '0');
37
+ const timestamp = `${displayHours}:${minutes}:${seconds} ${ampm}`;
38
+ // Build the formatted message
39
+ let formatted = `${GRAY}${timestamp}${RESET}`;
40
+ // Add component in bold blue brackets if present
41
+ if (log.component) {
42
+ formatted += ` ${BOLD}${BLUE}[${log.component}]${RESET}`;
43
+ }
44
+ // Add the main message
45
+ formatted += ` ${log.msg}`;
46
+ // Add context fields (filter out only pino internals)
47
+ const excludedFields = ['level', 'time', 'msg', 'component', 'pid', 'hostname', 'v'];
48
+ const contextFields = Object.keys(log)
49
+ .filter(key => !excludedFields.includes(key) && log[key] !== undefined && log[key] !== null);
50
+ if (contextFields.length > 0) {
51
+ const contextPairs = contextFields.map(key => {
52
+ const value = log[key];
53
+ // Special handling for error objects
54
+ if ((key === 'err' || key === 'error') && typeof value === 'object' && value !== null && 'message' in value) {
55
+ return `${key}="${value.message}"`;
56
+ }
57
+ // Format based on value type
58
+ if (typeof value === 'string') {
59
+ return `${key}="${value}"`;
60
+ }
61
+ else if (typeof value === 'number' || typeof value === 'boolean') {
62
+ return `${key}=${value}`;
63
+ }
64
+ else {
65
+ // For objects and arrays, use JSON.stringify
66
+ return `${key}=${JSON.stringify(value)}`;
67
+ }
68
+ });
69
+ formatted += ` ${GRAY}${contextPairs.join(' ')}${RESET}`;
70
+ }
71
+ // Handle error stack traces
72
+ if (log.err && typeof log.err === 'object' && 'stack' in log.err && log.err.stack) {
73
+ formatted += `\n${log.err.stack}`;
74
+ }
75
+ return formatted;
76
+ }
77
+ //# sourceMappingURL=log-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-formatter.js","sourceRoot":"","sources":["../../../src/services/infrastructure/log-formatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { EventEmitter } from 'events';
2
+ export declare class LogStreamBuffer extends EventEmitter {
3
+ private buffer;
4
+ private maxBufferSize;
5
+ constructor(maxBufferSize?: number);
6
+ addLog(logLine: string): void;
7
+ getRecentLogs(limit?: number): string[];
8
+ clear(): void;
9
+ }
10
+ export declare const logStreamBuffer: LogStreamBuffer;
11
+ //# sourceMappingURL=log-stream-buffer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-stream-buffer.d.ts","sourceRoot":"","sources":["../../../src/services/infrastructure/log-stream-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAS;gBAElB,aAAa,GAAE,MAAa;IAKjC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAa7B,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IAcvC,KAAK,IAAI,IAAI;CAGrB;AAGD,eAAO,MAAM,eAAe,iBAAwB,CAAC"}
@@ -0,0 +1,36 @@
1
+ import { EventEmitter } from 'events';
2
+ export class LogStreamBuffer extends EventEmitter {
3
+ buffer = [];
4
+ maxBufferSize;
5
+ constructor(maxBufferSize = 1000) {
6
+ super();
7
+ this.maxBufferSize = maxBufferSize;
8
+ }
9
+ addLog(logLine) {
10
+ // Add to buffer
11
+ this.buffer.push(logLine);
12
+ // Maintain buffer size
13
+ if (this.buffer.length > this.maxBufferSize) {
14
+ this.buffer.shift();
15
+ }
16
+ // Emit for real-time streaming
17
+ this.emit('log', logLine);
18
+ }
19
+ getRecentLogs(limit) {
20
+ // Handle zero limit explicitly
21
+ if (limit === 0) {
22
+ return [];
23
+ }
24
+ // Handle undefined/null limit or limit larger than buffer
25
+ if (limit === undefined || limit === null || limit >= this.buffer.length) {
26
+ return [...this.buffer];
27
+ }
28
+ return this.buffer.slice(-limit);
29
+ }
30
+ clear() {
31
+ this.buffer = [];
32
+ }
33
+ }
34
+ // Singleton instance
35
+ export const logStreamBuffer = new LogStreamBuffer();
36
+ //# sourceMappingURL=log-stream-buffer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-stream-buffer.js","sourceRoot":"","sources":["../../../src/services/infrastructure/log-stream-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,OAAO,eAAgB,SAAQ,YAAY;IACvC,MAAM,GAAa,EAAE,CAAC;IACtB,aAAa,CAAS;IAE9B,YAAY,gBAAwB,IAAI;QACtC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAEM,MAAM,CAAC,OAAe;QAC3B,gBAAgB;QAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE1B,uBAAuB;QACvB,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC;IAEM,aAAa,CAAC,KAAc;QACjC,+BAA+B;QAC/B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,0DAA0D;QAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;CACF;AAED,qBAAqB;AACrB,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { Logger as PinoLogger } from 'pino';
2
+ export interface LogContext {
3
+ component?: string;
4
+ sessionId?: string;
5
+ streamingId?: string;
6
+ requestId?: string;
7
+ [key: string]: any;
8
+ }
9
+ /**
10
+ * Wrapper class for Pino logger that provides an intuitive API
11
+ * Translates logger.method('message', context) to Pino's logger.method(context, 'message')
12
+ */
13
+ export type Logger = CUILogger;
14
+ export declare class CUILogger {
15
+ private pinoLogger;
16
+ constructor(pinoLogger: PinoLogger);
17
+ debug(message: string, context?: any): void;
18
+ info(message: string, context?: any): void;
19
+ warn(message: string, context?: any): void;
20
+ error(message: string, error?: Error | unknown, context?: any): void;
21
+ fatal(message: string, error?: Error | unknown, context?: any): void;
22
+ child(context: LogContext): CUILogger;
23
+ }
24
+ /**
25
+ * Centralized logger service using Pino
26
+ * Provides consistent logging across all CUI components
27
+ * Log level is controlled by LOG_LEVEL environment variable
28
+ */
29
+ declare class LoggerService {
30
+ private static instance;
31
+ private baseLogger;
32
+ private logInterceptStream;
33
+ private childLoggers;
34
+ private constructor();
35
+ /**
36
+ * Get the singleton logger instance
37
+ */
38
+ static getInstance(): LoggerService;
39
+ /**
40
+ * Create a child logger with context
41
+ */
42
+ child(context: LogContext): CUILogger;
43
+ /**
44
+ * Get the base logger
45
+ */
46
+ getLogger(): CUILogger;
47
+ /**
48
+ * Log debug message
49
+ */
50
+ debug(message: string, context?: LogContext): void;
51
+ /**
52
+ * Log info message
53
+ */
54
+ info(message: string, context?: LogContext): void;
55
+ /**
56
+ * Log warning message
57
+ */
58
+ warn(message: string, context?: LogContext): void;
59
+ /**
60
+ * Log error message
61
+ */
62
+ error(message: string, error?: Error | unknown, context?: LogContext): void;
63
+ /**
64
+ * Log fatal message
65
+ */
66
+ fatal(message: string, error?: Error | unknown, context?: LogContext): void;
67
+ }
68
+ export declare const logger: LoggerService;
69
+ export declare function createLogger(component: string, baseContext?: LogContext): CUILogger;
70
+ export {};
71
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/services/infrastructure/logger.ts"],"names":[],"mappings":"AAAA,OAAa,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAIlD,MAAM,WAAW,UAAU;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;;GAGG;AAEH,MAAM,MAAM,MAAM,GAAG,SAAS,CAAC;AAE/B,qBAAa,SAAS;IACR,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,UAAU;IAG1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAS3C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAS1C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAS1C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAiBpE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,IAAI;IAiBpE,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;CAGtC;AAED;;;;GAIG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IACvC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,kBAAkB,CAAc;IACxC,OAAO,CAAC,YAAY,CAAsC;IAE1D,OAAO;IA0CP;;OAEG;IACH,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAQrC;;OAEG;IACH,SAAS,IAAI,SAAS;IAItB;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAQlD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAQjD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAQjD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;IAS3E;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI;CAQ5E;AAGD,eAAO,MAAM,MAAM,eAA8B,CAAC;AAGlD,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,UAAU,GAAG,SAAS,CAGnF"}