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,373 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ import Database from 'better-sqlite3';
5
+ import { createLogger } from '../infrastructure/logger.js';
6
+ import { SessionInfoService } from '../sessions/session-info-service.js';
7
+ import { ClaudeHistoryReader } from '../sessions/claude-history-reader.js';
8
+ // ============================================================================
9
+ // Service
10
+ // ============================================================================
11
+ /**
12
+ * SessionAnalysisService extracts and stores session health metrics.
13
+ * Phase 1: Metrics-only extraction (no LLM calls).
14
+ *
15
+ * Data sources:
16
+ * - Session JSONL file: messages, tool uses, timestamps
17
+ * - Debug log: errors, context overflows, auto-compacts
18
+ * - insight_event_audit: mission pivot count
19
+ */
20
+ export class SessionAnalysisService {
21
+ static instance;
22
+ logger;
23
+ sessionInfoService;
24
+ historyReader;
25
+ db;
26
+ isInitialized = false;
27
+ // Prepared statements
28
+ getAnalysisStmt;
29
+ insertAnalysisStmt;
30
+ updateAnalysisStmt;
31
+ constructor(sessionInfoService, historyReader) {
32
+ this.logger = createLogger('SessionAnalysisService');
33
+ this.sessionInfoService = sessionInfoService || SessionInfoService.getInstance();
34
+ this.historyReader = historyReader || new ClaudeHistoryReader(this.sessionInfoService);
35
+ }
36
+ static getInstance() {
37
+ if (!SessionAnalysisService.instance) {
38
+ SessionAnalysisService.instance = new SessionAnalysisService();
39
+ }
40
+ return SessionAnalysisService.instance;
41
+ }
42
+ static resetInstance() {
43
+ SessionAnalysisService.instance = null;
44
+ }
45
+ async initialize() {
46
+ if (this.isInitialized)
47
+ return;
48
+ // Get the database from SessionInfoService (shares the same DB file)
49
+ await this.sessionInfoService.initialize();
50
+ // Access the underlying database - we need to add our table to it
51
+ const dbPath = this.sessionInfoService.getDbPath();
52
+ this.db = new Database(dbPath);
53
+ this.db.pragma('busy_timeout = 10000');
54
+ // Create our table
55
+ this.db.exec(`
56
+ CREATE TABLE IF NOT EXISTS session_analyses (
57
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
58
+ session_id TEXT NOT NULL UNIQUE,
59
+ created_at TEXT NOT NULL,
60
+ status TEXT NOT NULL DEFAULT 'pending',
61
+ error_message TEXT,
62
+
63
+ -- Extracted metrics
64
+ duration_minutes INTEGER,
65
+ message_count INTEGER,
66
+ tool_use_count INTEGER,
67
+ error_count INTEGER,
68
+ context_overflow_count INTEGER,
69
+ auto_compact_count INTEGER,
70
+ file_edit_count INTEGER,
71
+ file_rewrite_count INTEGER,
72
+ mission_pivot_count INTEGER,
73
+
74
+ FOREIGN KEY (session_id) REFERENCES sessions(session_id)
75
+ )
76
+ `);
77
+ // Create index for fast lookups
78
+ this.db.exec(`
79
+ CREATE INDEX IF NOT EXISTS idx_session_analyses_session_id
80
+ ON session_analyses(session_id)
81
+ `);
82
+ this.prepareStatements();
83
+ this.isInitialized = true;
84
+ this.logger.info('SessionAnalysisService initialized');
85
+ }
86
+ prepareStatements() {
87
+ this.getAnalysisStmt = this.db.prepare('SELECT * FROM session_analyses WHERE session_id = ?');
88
+ this.insertAnalysisStmt = this.db.prepare(`
89
+ INSERT INTO session_analyses (session_id, created_at, status)
90
+ VALUES (@sessionId, @createdAt, @status)
91
+ `);
92
+ this.updateAnalysisStmt = this.db.prepare(`
93
+ UPDATE session_analyses SET
94
+ status = @status,
95
+ error_message = @errorMessage,
96
+ duration_minutes = @durationMinutes,
97
+ message_count = @messageCount,
98
+ tool_use_count = @toolUseCount,
99
+ error_count = @errorCount,
100
+ context_overflow_count = @contextOverflowCount,
101
+ auto_compact_count = @autoCompactCount,
102
+ file_edit_count = @fileEditCount,
103
+ file_rewrite_count = @fileRewriteCount,
104
+ mission_pivot_count = @missionPivotCount
105
+ WHERE session_id = @sessionId
106
+ `);
107
+ }
108
+ mapRow(row) {
109
+ const hasMetrics = row.message_count !== null;
110
+ return {
111
+ id: row.id,
112
+ sessionId: row.session_id,
113
+ createdAt: row.created_at,
114
+ status: row.status,
115
+ errorMessage: row.error_message,
116
+ metrics: hasMetrics ? {
117
+ durationMinutes: row.duration_minutes,
118
+ messageCount: row.message_count,
119
+ toolUseCount: row.tool_use_count ?? 0,
120
+ errorCount: row.error_count ?? 0,
121
+ contextOverflowCount: row.context_overflow_count ?? 0,
122
+ autoCompactCount: row.auto_compact_count ?? 0,
123
+ fileEditCount: row.file_edit_count ?? 0,
124
+ fileRewriteCount: row.file_rewrite_count ?? 0,
125
+ missionPivotCount: row.mission_pivot_count ?? 0,
126
+ } : null,
127
+ };
128
+ }
129
+ // ============================================================================
130
+ // Public API
131
+ // ============================================================================
132
+ /**
133
+ * Check if a session is eligible for analysis.
134
+ * Eligible if: ≥10 messages OR ≥5 min duration OR ≥5 tool uses
135
+ */
136
+ async isEligible(sessionId) {
137
+ try {
138
+ // Quick check: get basic message info from session file
139
+ const { messages } = await this.historyReader.fetchConversationDirect(sessionId);
140
+ const messageCount = messages.length;
141
+ const toolUseCount = this.countToolUses(messages);
142
+ // Calculate duration from first to last message
143
+ let durationMinutes = null;
144
+ if (messages.length >= 2) {
145
+ const firstTs = new Date(messages[0].timestamp).getTime();
146
+ const lastTs = new Date(messages[messages.length - 1].timestamp).getTime();
147
+ durationMinutes = Math.round((lastTs - firstTs) / 60000);
148
+ }
149
+ const metrics = { messageCount, toolUseCount, durationMinutes };
150
+ // Eligibility thresholds
151
+ if (messageCount >= 10) {
152
+ return { eligible: true, reason: `${messageCount} messages`, metrics };
153
+ }
154
+ if (durationMinutes !== null && durationMinutes >= 5) {
155
+ return { eligible: true, reason: `${durationMinutes} minute session`, metrics };
156
+ }
157
+ if (toolUseCount >= 5) {
158
+ return { eligible: true, reason: `${toolUseCount} tool uses`, metrics };
159
+ }
160
+ return {
161
+ eligible: false,
162
+ reason: `Session too small (${messageCount} msgs, ${durationMinutes ?? 0} min, ${toolUseCount} tools)`,
163
+ metrics,
164
+ };
165
+ }
166
+ catch (error) {
167
+ this.logger.error('Failed to check eligibility', { sessionId, error });
168
+ return { eligible: false, reason: 'Failed to read session' };
169
+ }
170
+ }
171
+ /**
172
+ * Get existing analysis for a session.
173
+ */
174
+ async getAnalysis(sessionId) {
175
+ try {
176
+ const row = this.getAnalysisStmt.get(sessionId);
177
+ return row ? this.mapRow(row) : null;
178
+ }
179
+ catch (error) {
180
+ this.logger.error('Failed to get analysis', { sessionId, error });
181
+ return null;
182
+ }
183
+ }
184
+ /**
185
+ * Extract metrics for a session.
186
+ * Creates a new analysis record or updates existing one.
187
+ */
188
+ async extractMetrics(sessionId) {
189
+ const now = new Date().toISOString();
190
+ // Check if analysis already exists
191
+ let existing = await this.getAnalysis(sessionId);
192
+ if (!existing) {
193
+ this.insertAnalysisStmt.run({
194
+ sessionId,
195
+ createdAt: now,
196
+ status: 'extracting',
197
+ });
198
+ existing = await this.getAnalysis(sessionId);
199
+ }
200
+ try {
201
+ // Update status to extracting
202
+ this.updateAnalysisStmt.run({
203
+ sessionId,
204
+ status: 'extracting',
205
+ errorMessage: null,
206
+ durationMinutes: null,
207
+ messageCount: null,
208
+ toolUseCount: null,
209
+ errorCount: null,
210
+ contextOverflowCount: null,
211
+ autoCompactCount: null,
212
+ fileEditCount: null,
213
+ fileRewriteCount: null,
214
+ missionPivotCount: null,
215
+ });
216
+ // Extract metrics from various sources
217
+ const metrics = await this.doExtractMetrics(sessionId);
218
+ // Update with extracted metrics
219
+ this.updateAnalysisStmt.run({
220
+ sessionId,
221
+ status: 'complete',
222
+ errorMessage: null,
223
+ durationMinutes: metrics.durationMinutes,
224
+ messageCount: metrics.messageCount,
225
+ toolUseCount: metrics.toolUseCount,
226
+ errorCount: metrics.errorCount,
227
+ contextOverflowCount: metrics.contextOverflowCount,
228
+ autoCompactCount: metrics.autoCompactCount,
229
+ fileEditCount: metrics.fileEditCount,
230
+ fileRewriteCount: metrics.fileRewriteCount,
231
+ missionPivotCount: metrics.missionPivotCount,
232
+ });
233
+ this.logger.info('Metrics extracted successfully', { sessionId, metrics });
234
+ return (await this.getAnalysis(sessionId));
235
+ }
236
+ catch (error) {
237
+ const errorMessage = error instanceof Error ? error.message : String(error);
238
+ this.updateAnalysisStmt.run({
239
+ sessionId,
240
+ status: 'failed',
241
+ errorMessage,
242
+ durationMinutes: null,
243
+ messageCount: null,
244
+ toolUseCount: null,
245
+ errorCount: null,
246
+ contextOverflowCount: null,
247
+ autoCompactCount: null,
248
+ fileEditCount: null,
249
+ fileRewriteCount: null,
250
+ missionPivotCount: null,
251
+ });
252
+ this.logger.error('Failed to extract metrics', { sessionId, error });
253
+ return (await this.getAnalysis(sessionId));
254
+ }
255
+ }
256
+ // ============================================================================
257
+ // Private Extraction Methods
258
+ // ============================================================================
259
+ async doExtractMetrics(sessionId) {
260
+ // 1. Extract from session file
261
+ const { messages } = await this.historyReader.fetchConversationDirect(sessionId);
262
+ const messageCount = messages.length;
263
+ const toolUseCount = this.countToolUses(messages);
264
+ const { fileEditCount, fileRewriteCount } = this.countFileEdits(messages);
265
+ // Calculate duration
266
+ let durationMinutes = null;
267
+ if (messages.length >= 2) {
268
+ const firstTs = new Date(messages[0].timestamp).getTime();
269
+ const lastTs = new Date(messages[messages.length - 1].timestamp).getTime();
270
+ durationMinutes = Math.round((lastTs - firstTs) / 60000);
271
+ }
272
+ // 2. Extract from debug log
273
+ const debugMetrics = await this.extractDebugLogMetrics(sessionId);
274
+ // 3. Extract from insight audit
275
+ const missionPivotCount = this.countMissionPivots(sessionId);
276
+ return {
277
+ durationMinutes,
278
+ messageCount,
279
+ toolUseCount,
280
+ errorCount: debugMetrics.errorCount,
281
+ contextOverflowCount: debugMetrics.contextOverflowCount,
282
+ autoCompactCount: debugMetrics.autoCompactCount,
283
+ fileEditCount,
284
+ fileRewriteCount,
285
+ missionPivotCount,
286
+ };
287
+ }
288
+ countToolUses(messages) {
289
+ let count = 0;
290
+ for (const msg of messages) {
291
+ const content = msg.message?.content;
292
+ if (!Array.isArray(content))
293
+ continue;
294
+ for (const block of content) {
295
+ if (typeof block === 'object' &&
296
+ block !== null &&
297
+ 'type' in block &&
298
+ block.type === 'tool_use') {
299
+ count++;
300
+ }
301
+ }
302
+ }
303
+ return count;
304
+ }
305
+ countFileEdits(messages) {
306
+ const fileCounts = new Map();
307
+ for (const msg of messages) {
308
+ const content = msg.message?.content;
309
+ if (!Array.isArray(content))
310
+ continue;
311
+ for (const block of content) {
312
+ if (typeof block === 'object' &&
313
+ block !== null &&
314
+ 'type' in block &&
315
+ block.type === 'tool_use' &&
316
+ 'name' in block &&
317
+ (block.name === 'Edit' || block.name === 'Write') &&
318
+ 'input' in block &&
319
+ typeof block.input === 'object' &&
320
+ block.input !== null &&
321
+ 'file_path' in block.input) {
322
+ const filePath = String(block.input.file_path);
323
+ fileCounts.set(filePath, (fileCounts.get(filePath) || 0) + 1);
324
+ }
325
+ }
326
+ }
327
+ const fileEditCount = fileCounts.size;
328
+ const fileRewriteCount = Array.from(fileCounts.values()).filter(c => c >= 3).length;
329
+ return { fileEditCount, fileRewriteCount };
330
+ }
331
+ async extractDebugLogMetrics(sessionId) {
332
+ const debugPath = path.join(os.homedir(), '.claude', 'debug', `${sessionId}.txt`);
333
+ try {
334
+ const content = await fs.readFile(debugPath, 'utf-8');
335
+ const lines = content.split('\n');
336
+ let errorCount = 0;
337
+ let contextOverflowCount = 0;
338
+ let autoCompactCount = 0;
339
+ for (const line of lines) {
340
+ if (line.includes('[ERROR]')) {
341
+ errorCount++;
342
+ }
343
+ if (line.includes('prompt is too long')) {
344
+ contextOverflowCount++;
345
+ }
346
+ if (line.includes('PreCompact with query: auto')) {
347
+ autoCompactCount++;
348
+ }
349
+ }
350
+ return { errorCount, contextOverflowCount, autoCompactCount };
351
+ }
352
+ catch (error) {
353
+ // Debug file may not exist for all sessions
354
+ this.logger.debug('Could not read debug log', { sessionId, error });
355
+ return { errorCount: 0, contextOverflowCount: 0, autoCompactCount: 0 };
356
+ }
357
+ }
358
+ countMissionPivots(sessionId) {
359
+ try {
360
+ const row = this.db.prepare(`
361
+ SELECT COUNT(*) as count
362
+ FROM insight_event_audit
363
+ WHERE session_id = ? AND event_type = 'recompute'
364
+ `).get(sessionId);
365
+ return row?.count ?? 0;
366
+ }
367
+ catch (error) {
368
+ this.logger.debug('Could not count mission pivots', { sessionId, error });
369
+ return 0;
370
+ }
371
+ }
372
+ }
373
+ //# sourceMappingURL=session-analysis-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-analysis-service.js","sourceRoot":"","sources":["../../../src/services/sessions/session-analysis-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Session Branch Service
3
+ *
4
+ * Creates branch sessions by truncating conversation history to a specific turn.
5
+ * Enables "rewind and branch" functionality - pick a point in history and start fresh.
6
+ */
7
+ interface BranchResult {
8
+ newSessionId: string;
9
+ turnCount: number;
10
+ messageCount: number;
11
+ }
12
+ export declare class SessionBranchService {
13
+ private static instance;
14
+ private claudeHomePath;
15
+ private historyReader;
16
+ private sessionInfoService;
17
+ private constructor();
18
+ static getInstance(): SessionBranchService;
19
+ /**
20
+ * Create a branch from a session at a specific turn.
21
+ * The branch will contain all content up through the specified turn.
22
+ *
23
+ * @param sessionId - Source session to branch from
24
+ * @param options - Branch options including turn number and optional timestamp
25
+ * @returns New session ID and metadata
26
+ */
27
+ branchAfterTurn(sessionId: string, afterTurn: number, timestamp?: string): Promise<BranchResult>;
28
+ /**
29
+ * Copy session data (turns, marks) from source to branch.
30
+ * Only copies data for turns <= afterTurn.
31
+ */
32
+ private copySessionData;
33
+ /**
34
+ * Find indices where each turn starts (human text messages).
35
+ * A "turn" begins with a user message containing actual text content,
36
+ * not tool results.
37
+ */
38
+ private findTurnBoundaries;
39
+ /**
40
+ * Check if a user message contains actual human text (not just tool results).
41
+ */
42
+ private hasHumanText;
43
+ /**
44
+ * Find the cut index by matching a timestamp to a turn in the JSONL.
45
+ * This handles the discrepancy between DB turn numbers and JSONL turn counts.
46
+ *
47
+ * Strategy: Find the turn whose user message timestamp is closest to the target,
48
+ * then return the cut index (start of the next turn, or end of file).
49
+ */
50
+ private findCutIndexByTimestamp;
51
+ /**
52
+ * Determine the target project directory for the branch.
53
+ * The CLI uses RESOLVED paths (symlinks followed), so we need to match that.
54
+ */
55
+ private determineTargetDirectory;
56
+ /**
57
+ * Find the JSONL file for a session by checking each project folder.
58
+ */
59
+ private findSessionFile;
60
+ /**
61
+ * Get the number of turns in a session.
62
+ * Useful for UI to know valid range for branching.
63
+ */
64
+ getTurnCount(sessionId: string): Promise<number>;
65
+ /**
66
+ * Find the UUID of the last message in a specific turn.
67
+ * Used to identify the branch point for UI indicators.
68
+ *
69
+ * @param sessionId - The session to search
70
+ * @param turnNumber - The turn number (1-indexed)
71
+ * @returns The UUID of the last message in that turn, or null if not found
72
+ */
73
+ getBranchPointMessageId(sessionId: string, turnNumber: number): Promise<string | null>;
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=session-branch-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-branch-service.d.ts","sourceRoot":"","sources":["../../../src/services/sessions/session-branch-service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA0BH,UAAU,YAAY;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAuB;IAC9C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,kBAAkB,CAAqB;IAE/C,OAAO;IAMP,MAAM,CAAC,WAAW,IAAI,oBAAoB;IAO1C;;;;;;;OAOG;IACG,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA2GtG;;;OAGG;YACW,eAAe;IA0C7B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,YAAY;IAkBpB;;;;;;OAMG;IACH,OAAO,CAAC,uBAAuB;IAyD/B;;;OAGG;YACW,wBAAwB;IAuBtC;;OAEG;YACW,eAAe;IA2B7B;;;OAGG;IACG,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAatD;;;;;;;OAOG;IACG,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CA6C7F"}