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,18 @@
1
+ import { Router } from 'express';
2
+ import { PermissionTracker } from '../services/permission-tracker.js';
3
+ /**
4
+ * Check if a tool invocation is allowed by allowlists.
5
+ * Now supports pattern matching like "Bash(npm *)", "Write(src/**)".
6
+ *
7
+ * @returns Object with matching pattern and source if allowed, null otherwise
8
+ */
9
+ export declare function isToolAllowed(toolName: string, toolInput: Record<string, unknown>, streamingId?: string): {
10
+ pattern: string;
11
+ source: 'global' | 'session';
12
+ } | null;
13
+ export declare function addToSessionAllowlist(streamingId: string, pattern: string): void;
14
+ export declare function addToGlobalAllowlist(pattern: string): void;
15
+ export declare function clearSessionAllowlist(streamingId: string): void;
16
+ export { suggestPatterns } from '../services/permission-pattern-matcher.js';
17
+ export declare function createPermissionRoutes(permissionTracker: PermissionTracker): Router;
18
+ //# sourceMappingURL=permission.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.routes.d.ts","sourceRoot":"","sources":["../../src/routes/permission.routes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAgErE;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,WAAW,CAAC,EAAE,MAAM,GACnB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAA;CAAE,GAAG,IAAI,CAoB1D;AAGD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAOhF;AAGD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM1D;AAGD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAE/D;AAGD,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAE3E,wBAAgB,sBAAsB,CACpC,iBAAiB,EAAE,iBAAiB,GACnC,MAAM,CAgUR"}
@@ -0,0 +1,370 @@
1
+ import { Router } from 'express';
2
+ import { LatticeError } from '../types/index.js';
3
+ import { createLogger } from '../services/infrastructure/logger.js';
4
+ import { isAllowedByPatterns, suggestPatterns } from '../services/permission-pattern-matcher.js';
5
+ import { anthropicService } from '../services/insights/anthropic-service.js';
6
+ import { getPermissionEventLog } from '../services/permission-event-log.js';
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import os from 'os';
10
+ // Claude Code's native settings file (source of truth for allowlists)
11
+ const CLAUDE_SETTINGS_PATH = path.join(os.homedir(), '.claude', 'settings.json');
12
+ // Note: Legacy allowlist was at ~/.claudia/allowed-tools.json
13
+ // Now we use Claude's native ~/.claude/settings.json toolPermissions.allow
14
+ // Session-level allowlists (in-memory, keyed by streamingId, stores patterns)
15
+ const sessionAllowlists = new Map();
16
+ // Load Claude Code's native settings.json
17
+ function loadClaudeSettings() {
18
+ try {
19
+ if (fs.existsSync(CLAUDE_SETTINGS_PATH)) {
20
+ const data = fs.readFileSync(CLAUDE_SETTINGS_PATH, 'utf-8');
21
+ return JSON.parse(data);
22
+ }
23
+ }
24
+ catch {
25
+ // Ignore errors, return empty
26
+ }
27
+ return {};
28
+ }
29
+ // Save Claude Code's native settings.json (preserving other settings)
30
+ function saveClaudeSettings(settings) {
31
+ const dir = path.dirname(CLAUDE_SETTINGS_PATH);
32
+ if (!fs.existsSync(dir)) {
33
+ fs.mkdirSync(dir, { recursive: true });
34
+ }
35
+ fs.writeFileSync(CLAUDE_SETTINGS_PATH, JSON.stringify(settings, null, 2));
36
+ }
37
+ // Load global allowlist from Claude's native settings
38
+ function loadGlobalAllowlist() {
39
+ const settings = loadClaudeSettings();
40
+ return settings.toolPermissions?.allow || [];
41
+ }
42
+ // Save pattern to Claude's native settings.json allowlist
43
+ function saveGlobalAllowlist(patterns) {
44
+ const settings = loadClaudeSettings();
45
+ if (!settings.toolPermissions) {
46
+ settings.toolPermissions = {};
47
+ }
48
+ settings.toolPermissions.allow = patterns;
49
+ saveClaudeSettings(settings);
50
+ }
51
+ /**
52
+ * Check if a tool invocation is allowed by allowlists.
53
+ * Now supports pattern matching like "Bash(npm *)", "Write(src/**)".
54
+ *
55
+ * @returns Object with matching pattern and source if allowed, null otherwise
56
+ */
57
+ export function isToolAllowed(toolName, toolInput, streamingId) {
58
+ // Check global allowlist with pattern matching
59
+ const globalAllowlist = loadGlobalAllowlist();
60
+ const globalMatch = isAllowedByPatterns(globalAllowlist, toolName, toolInput);
61
+ if (globalMatch) {
62
+ return { pattern: globalMatch, source: 'global' };
63
+ }
64
+ // Check session allowlist with pattern matching
65
+ if (streamingId) {
66
+ const sessionAllowlist = sessionAllowlists.get(streamingId);
67
+ if (sessionAllowlist) {
68
+ const sessionMatch = isAllowedByPatterns(Array.from(sessionAllowlist), toolName, toolInput);
69
+ if (sessionMatch) {
70
+ return { pattern: sessionMatch, source: 'session' };
71
+ }
72
+ }
73
+ }
74
+ return null;
75
+ }
76
+ // Add pattern to session allowlist
77
+ export function addToSessionAllowlist(streamingId, pattern) {
78
+ let allowlist = sessionAllowlists.get(streamingId);
79
+ if (!allowlist) {
80
+ allowlist = new Set();
81
+ sessionAllowlists.set(streamingId, allowlist);
82
+ }
83
+ allowlist.add(pattern);
84
+ }
85
+ // Add pattern to global allowlist
86
+ export function addToGlobalAllowlist(pattern) {
87
+ const allowlist = loadGlobalAllowlist();
88
+ if (!allowlist.includes(pattern)) {
89
+ allowlist.push(pattern);
90
+ saveGlobalAllowlist(allowlist);
91
+ }
92
+ }
93
+ // Clear session allowlist (call when session ends)
94
+ export function clearSessionAllowlist(streamingId) {
95
+ sessionAllowlists.delete(streamingId);
96
+ }
97
+ // Re-export suggestPatterns for use by frontend
98
+ export { suggestPatterns } from '../services/permission-pattern-matcher.js';
99
+ export function createPermissionRoutes(permissionTracker) {
100
+ const router = Router();
101
+ const logger = createLogger('PermissionRoutes');
102
+ // Notify endpoint - called by MCP server when permission is requested
103
+ // Returns auto-approved if tool invocation matches an allowlist pattern
104
+ router.post('/notify', async (req, res, next) => {
105
+ const requestId = req.requestId;
106
+ const permissionLog = getPermissionEventLog();
107
+ logger.debug('Permission notification received', {
108
+ requestId,
109
+ body: req.body
110
+ });
111
+ try {
112
+ const { toolName, toolInput, streamingId } = req.body;
113
+ if (!toolName) {
114
+ throw new LatticeError('MISSING_TOOL_NAME', 'toolName is required', 400);
115
+ }
116
+ // Check if tool invocation is auto-allowed by any pattern (session or global)
117
+ const match = isToolAllowed(toolName, toolInput || {}, streamingId);
118
+ if (match) {
119
+ // Log auto-approval with structured event
120
+ permissionLog.autoApproved({
121
+ toolName,
122
+ toolInput,
123
+ streamingId,
124
+ matchedPattern: match.pattern,
125
+ patternSource: match.source,
126
+ });
127
+ res.json({ success: true, id: 'auto-approved', autoApproved: true, matchedPattern: match.pattern });
128
+ return;
129
+ }
130
+ // Add permission request with the provided streamingId
131
+ const request = permissionTracker.addPermissionRequest(toolName, toolInput, streamingId);
132
+ // Log permission request with structured event
133
+ permissionLog.request({
134
+ toolName,
135
+ toolInput,
136
+ streamingId,
137
+ permissionRequestId: request.id,
138
+ });
139
+ res.json({ success: true, id: request.id });
140
+ }
141
+ catch (error) {
142
+ logger.debug('Permission notification failed', {
143
+ requestId,
144
+ error: error instanceof Error ? error.message : String(error)
145
+ });
146
+ next(error);
147
+ }
148
+ });
149
+ // Get suggested patterns for a tool invocation
150
+ // Called by frontend to show pattern options in the permission banner
151
+ // Uses LLM (Haiku) for intelligent suggestions, with heuristic fallback
152
+ router.post('/suggest-patterns', async (req, res, next) => {
153
+ const requestId = req.requestId;
154
+ const permissionLog = getPermissionEventLog();
155
+ const startTime = Date.now();
156
+ try {
157
+ const { toolName, toolInput, useLLM = true } = req.body;
158
+ if (!toolName) {
159
+ throw new LatticeError('MISSING_TOOL_NAME', 'toolName is required', 400);
160
+ }
161
+ let patterns;
162
+ let source;
163
+ // Try LLM-powered suggestions first (if enabled and configured)
164
+ if (useLLM && anthropicService.isConfigured()) {
165
+ try {
166
+ const llmPatterns = await anthropicService.suggestPermissionPatterns(toolName, toolInput || {});
167
+ if (llmPatterns.length > 0) {
168
+ patterns = llmPatterns;
169
+ source = 'llm';
170
+ // Log structured event
171
+ permissionLog.patternSuggest({
172
+ toolName,
173
+ toolInput,
174
+ suggestedPatterns: patterns,
175
+ suggestionSource: 'llm',
176
+ durationMs: Date.now() - startTime,
177
+ });
178
+ res.json({ patterns, source });
179
+ return;
180
+ }
181
+ }
182
+ catch (llmError) {
183
+ logger.debug('LLM pattern suggestion failed, falling back to heuristic', {
184
+ requestId,
185
+ error: llmError instanceof Error ? llmError.message : String(llmError)
186
+ });
187
+ }
188
+ }
189
+ // Fallback to heuristic-based suggestions
190
+ patterns = suggestPatterns(toolName, toolInput || {});
191
+ source = 'heuristic';
192
+ // Log structured event
193
+ permissionLog.patternSuggest({
194
+ toolName,
195
+ toolInput,
196
+ suggestedPatterns: patterns,
197
+ suggestionSource: 'heuristic',
198
+ durationMs: Date.now() - startTime,
199
+ });
200
+ res.json({ patterns, source });
201
+ }
202
+ catch (error) {
203
+ next(error);
204
+ }
205
+ });
206
+ // Add pattern to session allowlist
207
+ // Accepts either `pattern` (new) or `toolName` (legacy, for backwards compat)
208
+ router.post('/allowlist/session', async (req, res, next) => {
209
+ const permissionLog = getPermissionEventLog();
210
+ try {
211
+ const { pattern, toolName, streamingId } = req.body;
212
+ const effectivePattern = pattern || toolName; // Support both new and old API
213
+ if (!effectivePattern || !streamingId) {
214
+ throw new LatticeError('MISSING_PARAMS', 'pattern (or toolName) and streamingId are required', 400);
215
+ }
216
+ addToSessionAllowlist(streamingId, effectivePattern);
217
+ // Log structured event
218
+ permissionLog.allowlistAdd({
219
+ pattern: effectivePattern,
220
+ scope: 'session',
221
+ streamingId,
222
+ });
223
+ res.json({ success: true, pattern: effectivePattern });
224
+ }
225
+ catch (error) {
226
+ next(error);
227
+ }
228
+ });
229
+ // Add pattern to global allowlist
230
+ // Accepts either `pattern` (new) or `toolName` (legacy, for backwards compat)
231
+ router.post('/allowlist/global', async (req, res, next) => {
232
+ const permissionLog = getPermissionEventLog();
233
+ try {
234
+ const { pattern, toolName } = req.body;
235
+ const effectivePattern = pattern || toolName; // Support both new and old API
236
+ if (!effectivePattern) {
237
+ throw new LatticeError('MISSING_PARAMS', 'pattern (or toolName) is required', 400);
238
+ }
239
+ addToGlobalAllowlist(effectivePattern);
240
+ // Log structured event
241
+ permissionLog.allowlistAdd({
242
+ pattern: effectivePattern,
243
+ scope: 'global',
244
+ });
245
+ res.json({ success: true, pattern: effectivePattern });
246
+ }
247
+ catch (error) {
248
+ next(error);
249
+ }
250
+ });
251
+ // Get current allowlists
252
+ router.get('/allowlist', async (req, res) => {
253
+ const { streamingId } = req.query;
254
+ const global = loadGlobalAllowlist();
255
+ const session = streamingId ? Array.from(sessionAllowlists.get(streamingId) || []) : [];
256
+ res.json({ global, session });
257
+ });
258
+ // Get permission event log (for debugging and monitoring)
259
+ router.get('/events', async (req, res) => {
260
+ const permissionLog = getPermissionEventLog();
261
+ const { streamingId, limit = '50', format = 'json' } = req.query;
262
+ const limitNum = Math.min(parseInt(limit, 10) || 50, 200);
263
+ if (format === 'timeline') {
264
+ // Return human-readable timeline
265
+ const timeline = streamingId
266
+ ? permissionLog.getForSession(streamingId, limitNum).map(e => {
267
+ const time = new Date(e.timestamp).toISOString().slice(11, 19);
268
+ return `${time} ${e.eventType}: ${e.toolName}${e.matchedPattern ? ` [${e.matchedPattern}]` : ''}`;
269
+ })
270
+ : permissionLog.getTimeline(limitNum);
271
+ res.json({ timeline });
272
+ }
273
+ else {
274
+ // Return structured events
275
+ const events = streamingId
276
+ ? permissionLog.getForSession(streamingId, limitNum)
277
+ : permissionLog.getAll(limitNum);
278
+ res.json({ events });
279
+ }
280
+ });
281
+ // Get permission pattern statistics
282
+ router.get('/events/stats', async (req, res) => {
283
+ const permissionLog = getPermissionEventLog();
284
+ const stats = permissionLog.getPatternStats();
285
+ res.json(stats);
286
+ });
287
+ // List permissions
288
+ router.get('/', async (req, res, next) => {
289
+ const requestId = req.requestId;
290
+ logger.debug('List permissions request', {
291
+ requestId,
292
+ query: req.query
293
+ });
294
+ try {
295
+ const { streamingId, status } = req.query;
296
+ const permissions = permissionTracker.getPermissionRequests({ streamingId, status });
297
+ logger.debug('Permissions listed successfully', {
298
+ requestId,
299
+ count: permissions.length,
300
+ filter: { streamingId, status }
301
+ });
302
+ res.json({ permissions });
303
+ }
304
+ catch (error) {
305
+ logger.debug('List permissions failed', {
306
+ requestId,
307
+ error: error instanceof Error ? error.message : String(error)
308
+ });
309
+ next(error);
310
+ }
311
+ });
312
+ // Permission decision endpoint - called by frontend to approve/deny permissions
313
+ router.post('/:requestId/decision', async (req, res, next) => {
314
+ const requestIdHeader = req.requestId;
315
+ const { requestId } = req.params;
316
+ const decisionRequest = req.body;
317
+ const permissionLog = getPermissionEventLog();
318
+ logger.debug('Permission decision request', {
319
+ requestId: requestIdHeader,
320
+ permissionRequestId: requestId,
321
+ decision: decisionRequest
322
+ });
323
+ try {
324
+ // Validate request body
325
+ if (!decisionRequest.action || !['approve', 'deny'].includes(decisionRequest.action)) {
326
+ throw new LatticeError('INVALID_ACTION', 'Action must be either "approve" or "deny"', 400);
327
+ }
328
+ // Get the permission request to validate it exists and is pending
329
+ const permissions = permissionTracker.getPermissionRequests({ status: 'pending' });
330
+ const permission = permissions.find(p => p.id === requestId);
331
+ if (!permission) {
332
+ throw new LatticeError('PERMISSION_NOT_FOUND', 'Permission request not found or not pending', 404);
333
+ }
334
+ // Update permission status
335
+ let updated;
336
+ if (decisionRequest.action === 'approve') {
337
+ updated = permissionTracker.updatePermissionStatus(requestId, 'approved', { modifiedInput: decisionRequest.modifiedInput });
338
+ }
339
+ else {
340
+ updated = permissionTracker.updatePermissionStatus(requestId, 'denied', { denyReason: decisionRequest.denyReason });
341
+ }
342
+ if (!updated) {
343
+ throw new LatticeError('UPDATE_FAILED', 'Failed to update permission status', 500);
344
+ }
345
+ // Log structured event
346
+ permissionLog.decision({
347
+ permissionRequestId: requestId,
348
+ toolName: permission.toolName,
349
+ decision: decisionRequest.action,
350
+ denyReason: decisionRequest.denyReason,
351
+ streamingId: permission.streamingId,
352
+ });
353
+ const response = {
354
+ success: true,
355
+ message: `Permission ${decisionRequest.action === 'approve' ? 'approved' : 'denied'} successfully`
356
+ };
357
+ res.json(response);
358
+ }
359
+ catch (error) {
360
+ logger.debug('Permission decision failed', {
361
+ requestId: requestIdHeader,
362
+ permissionRequestId: requestId,
363
+ error: error instanceof Error ? error.message : String(error)
364
+ });
365
+ next(error);
366
+ }
367
+ });
368
+ return router;
369
+ }
370
+ //# sourceMappingURL=permission.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission.routes.js","sourceRoot":"","sources":["../../src/routes/permission.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * API routes for process event log observability.
3
+ *
4
+ * Provides endpoints to query Claude process lifecycle events for debugging.
5
+ */
6
+ import { Router } from 'express';
7
+ declare const router: Router;
8
+ export default router;
9
+ //# sourceMappingURL=process-events.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-events.routes.d.ts","sourceRoot":"","sources":["../../src/routes/process-events.routes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,MAAM,EAA+B,MAAM,SAAS,CAAC;AAG9D,QAAA,MAAM,MAAM,EAAE,MAAiB,CAAC;AAmJhC,eAAe,MAAM,CAAC"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * API routes for process event log observability.
3
+ *
4
+ * Provides endpoints to query Claude process lifecycle events for debugging.
5
+ */
6
+ import { Router } from 'express';
7
+ import { getProcessEventLog } from '../services/process/process-event-log.js';
8
+ const router = Router();
9
+ /**
10
+ * GET /api/process-events
11
+ * Get recent process events across all streams.
12
+ *
13
+ * Query params:
14
+ * limit: number of events to return (default 100)
15
+ */
16
+ router.get('/', (_req, res) => {
17
+ const limit = parseInt(_req.query.limit) || 100;
18
+ const log = getProcessEventLog();
19
+ const events = log.getAll(limit);
20
+ res.json({ events });
21
+ });
22
+ /**
23
+ * GET /api/process-events/summary
24
+ * Get lifecycle summary statistics.
25
+ */
26
+ router.get('/summary', (_req, res) => {
27
+ const log = getProcessEventLog();
28
+ const summary = log.getLifecycleSummary();
29
+ res.json(summary);
30
+ });
31
+ /**
32
+ * GET /api/process-events/active
33
+ * Get all currently active processes.
34
+ */
35
+ router.get('/active', (_req, res) => {
36
+ const log = getProcessEventLog();
37
+ const active = log.getActiveProcesses();
38
+ res.json({ processes: active });
39
+ });
40
+ /**
41
+ * GET /api/process-events/exits
42
+ * Get recent process exits.
43
+ *
44
+ * Query params:
45
+ * limit: number of events to return (default 20)
46
+ */
47
+ router.get('/exits', (_req, res) => {
48
+ const limit = parseInt(_req.query.limit) || 20;
49
+ const log = getProcessEventLog();
50
+ const exits = log.getRecentExits(limit);
51
+ res.json({ events: exits });
52
+ });
53
+ /**
54
+ * GET /api/process-events/errors
55
+ * Get recent error events.
56
+ *
57
+ * Query params:
58
+ * limit: number of events to return (default 20)
59
+ */
60
+ router.get('/errors', (_req, res) => {
61
+ const limit = parseInt(_req.query.limit) || 20;
62
+ const log = getProcessEventLog();
63
+ const errors = log.getRecentErrors(limit);
64
+ res.json({ events: errors });
65
+ });
66
+ /**
67
+ * GET /api/process-events/stream/:streamingId
68
+ * Get events for a specific streaming ID.
69
+ *
70
+ * Query params:
71
+ * format: 'json' | 'timeline' (default 'json')
72
+ * limit: number of events to return (default 50)
73
+ */
74
+ router.get('/stream/:streamingId', (req, res) => {
75
+ const { streamingId } = req.params;
76
+ const format = req.query.format || 'json';
77
+ const limit = parseInt(req.query.limit) || 50;
78
+ const log = getProcessEventLog();
79
+ if (format === 'timeline') {
80
+ const timeline = log.getTimeline(streamingId, limit);
81
+ res.json({ timeline });
82
+ }
83
+ else {
84
+ const events = log.getForStreamingId(streamingId, limit);
85
+ const state = log.getProcessState(streamingId);
86
+ res.json({ events, state });
87
+ }
88
+ });
89
+ /**
90
+ * GET /api/process-events/session/:sessionId
91
+ * Get events for a specific Claude session ID.
92
+ *
93
+ * Query params:
94
+ * limit: number of events to return (default 50)
95
+ */
96
+ router.get('/session/:sessionId', (req, res) => {
97
+ const { sessionId } = req.params;
98
+ const limit = parseInt(req.query.limit) || 50;
99
+ const log = getProcessEventLog();
100
+ const events = log.getForSessionId(sessionId, limit);
101
+ res.json({ events });
102
+ });
103
+ /**
104
+ * GET /api/process-events/trace/:traceId
105
+ * Get all events for a specific trace ID.
106
+ */
107
+ router.get('/trace/:traceId', (req, res) => {
108
+ const { traceId } = req.params;
109
+ const log = getProcessEventLog();
110
+ const events = log.getByTraceId(traceId);
111
+ res.json({ events });
112
+ });
113
+ /**
114
+ * GET /api/process-events/type/:eventType
115
+ * Get events by type.
116
+ *
117
+ * Query params:
118
+ * limit: number of events to return (default 50)
119
+ */
120
+ router.get('/type/:eventType', (req, res) => {
121
+ const { eventType } = req.params;
122
+ const limit = parseInt(req.query.limit) || 50;
123
+ const log = getProcessEventLog();
124
+ const events = log.getByType(eventType, limit);
125
+ res.json({ events });
126
+ });
127
+ /**
128
+ * GET /api/process-events/states
129
+ * Get all process states (including exited).
130
+ *
131
+ * Query params:
132
+ * limit: number of states to return (default 50)
133
+ */
134
+ router.get('/states', (_req, res) => {
135
+ const limit = parseInt(_req.query.limit) || 50;
136
+ const log = getProcessEventLog();
137
+ const states = log.getAllProcessStates(limit);
138
+ res.json({ states });
139
+ });
140
+ export default router;
141
+ //# sourceMappingURL=process-events.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-events.routes.js","sourceRoot":"","sources":["../../src/routes/process-events.routes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Prototype routes - experimental features for testing and development.
3
+ *
4
+ * In production builds, these routes are gated and return 404 by default.
5
+ * They can be enabled by setting CLAUDIA_ENABLE_PROTOTYPES=true.
6
+ */
7
+ import { Router } from 'express';
8
+ export declare function createPrototypeRoutes(): Router;
9
+ //# sourceMappingURL=prototype.routes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototype.routes.d.ts","sourceRoot":"","sources":["../../src/routes/prototype.routes.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAA0B,MAAM,SAAS,CAAC;AA+IzD,wBAAgB,qBAAqB,IAAI,MAAM,CAyrB9C"}