@stackmemoryai/stackmemory 0.2.6 → 0.2.8

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 (406) hide show
  1. package/README.md +262 -83
  2. package/dist/scripts/cancel-duplicate-tasks.d.ts +7 -0
  3. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +1 -0
  4. package/dist/scripts/cancel-duplicate-tasks.js +172 -0
  5. package/dist/scripts/cancel-duplicate-tasks.js.map +1 -0
  6. package/dist/scripts/list-linear-tasks.d.ts +6 -0
  7. package/dist/scripts/list-linear-tasks.d.ts.map +1 -0
  8. package/dist/scripts/list-linear-tasks.js +121 -0
  9. package/dist/scripts/list-linear-tasks.js.map +1 -0
  10. package/dist/scripts/merge-linear-duplicates-safe.d.ts +7 -0
  11. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +1 -0
  12. package/dist/scripts/merge-linear-duplicates-safe.js +267 -0
  13. package/dist/scripts/merge-linear-duplicates-safe.js.map +1 -0
  14. package/dist/scripts/show-linear-summary.d.ts +6 -0
  15. package/dist/scripts/show-linear-summary.d.ts.map +1 -0
  16. package/dist/scripts/show-linear-summary.js +120 -0
  17. package/dist/scripts/show-linear-summary.js.map +1 -0
  18. package/dist/scripts/status.js +6 -2
  19. package/dist/scripts/status.js.map +1 -1
  20. package/dist/src/cli/auto-detect.d.ts +61 -0
  21. package/dist/src/cli/auto-detect.d.ts.map +1 -0
  22. package/dist/src/cli/auto-detect.js +350 -0
  23. package/dist/src/cli/auto-detect.js.map +1 -0
  24. package/dist/src/cli/claude-sm.d.ts +7 -0
  25. package/dist/src/cli/claude-sm.d.ts.map +1 -0
  26. package/dist/src/cli/claude-sm.js +357 -0
  27. package/dist/src/cli/claude-sm.js.map +1 -0
  28. package/dist/src/cli/commands/config.d.ts +6 -0
  29. package/dist/src/cli/commands/config.d.ts.map +1 -0
  30. package/dist/src/cli/commands/config.js +224 -0
  31. package/dist/src/cli/commands/config.js.map +1 -0
  32. package/dist/src/cli/commands/context.d.ts +7 -0
  33. package/dist/src/cli/commands/context.d.ts.map +1 -0
  34. package/dist/src/cli/commands/context.js +365 -0
  35. package/dist/src/cli/commands/context.js.map +1 -0
  36. package/dist/src/cli/commands/linear-test.d.ts +6 -0
  37. package/dist/src/cli/commands/linear-test.d.ts.map +1 -0
  38. package/dist/src/cli/commands/linear-test.js +123 -0
  39. package/dist/src/cli/commands/linear-test.js.map +1 -0
  40. package/dist/src/cli/commands/linear.d.ts +6 -0
  41. package/dist/src/cli/commands/linear.d.ts.map +1 -0
  42. package/dist/src/cli/commands/linear.js +393 -0
  43. package/dist/src/cli/commands/linear.js.map +1 -0
  44. package/dist/src/cli/commands/log.d.ts +7 -0
  45. package/dist/src/cli/commands/log.d.ts.map +1 -0
  46. package/dist/src/cli/commands/log.js +168 -0
  47. package/dist/src/cli/commands/log.js.map +1 -0
  48. package/dist/src/cli/commands/onboard.d.ts +8 -0
  49. package/dist/src/cli/commands/onboard.d.ts.map +1 -0
  50. package/dist/src/cli/commands/onboard.js +363 -0
  51. package/dist/src/cli/commands/onboard.js.map +1 -0
  52. package/dist/src/cli/commands/projects.js +1 -1
  53. package/dist/src/cli/commands/projects.js.map +1 -1
  54. package/dist/src/cli/commands/search.d.ts +7 -0
  55. package/dist/src/cli/commands/search.d.ts.map +1 -0
  56. package/dist/src/cli/commands/search.js +162 -0
  57. package/dist/src/cli/commands/search.js.map +1 -0
  58. package/dist/src/cli/commands/session.d.ts +7 -0
  59. package/dist/src/cli/commands/session.d.ts.map +1 -0
  60. package/dist/src/cli/commands/session.js +222 -0
  61. package/dist/src/cli/commands/session.js.map +1 -0
  62. package/dist/src/cli/commands/tasks.d.ts +7 -0
  63. package/dist/src/cli/commands/tasks.d.ts.map +1 -0
  64. package/dist/src/cli/commands/tasks.js +229 -0
  65. package/dist/src/cli/commands/tasks.js.map +1 -0
  66. package/dist/src/cli/commands/webhook.d.ts +3 -0
  67. package/dist/src/cli/commands/webhook.d.ts.map +1 -0
  68. package/dist/src/cli/commands/webhook.js +157 -0
  69. package/dist/src/cli/commands/webhook.js.map +1 -0
  70. package/dist/src/cli/commands/worktree.d.ts +8 -0
  71. package/dist/src/cli/commands/worktree.d.ts.map +1 -0
  72. package/dist/src/cli/commands/worktree.js +339 -0
  73. package/dist/src/cli/commands/worktree.js.map +1 -0
  74. package/dist/src/cli/index.d.ts +2 -1
  75. package/dist/src/cli/index.d.ts.map +1 -1
  76. package/dist/src/cli/index.js +337 -50
  77. package/dist/src/cli/index.js.map +1 -1
  78. package/dist/src/cli/utils/viewer.d.ts.map +1 -1
  79. package/dist/src/cli/utils/viewer.js +3 -1
  80. package/dist/src/cli/utils/viewer.js.map +1 -1
  81. package/dist/src/core/config/config-manager.d.ts +95 -0
  82. package/dist/src/core/config/config-manager.d.ts.map +1 -0
  83. package/dist/src/core/config/config-manager.js +359 -0
  84. package/dist/src/core/config/config-manager.js.map +1 -0
  85. package/dist/src/core/config/types.d.ts +72 -0
  86. package/dist/src/core/config/types.d.ts.map +1 -0
  87. package/dist/src/core/config/types.js +127 -0
  88. package/dist/src/core/config/types.js.map +1 -0
  89. package/dist/src/core/context/auto-context.d.ts +22 -0
  90. package/dist/src/core/context/auto-context.d.ts.map +1 -0
  91. package/dist/src/core/context/auto-context.js +77 -0
  92. package/dist/src/core/context/auto-context.js.map +1 -0
  93. package/dist/src/core/context/compaction-handler.d.ts +119 -0
  94. package/dist/src/core/context/compaction-handler.d.ts.map +1 -0
  95. package/dist/src/core/context/compaction-handler.js +306 -0
  96. package/dist/src/core/context/compaction-handler.js.map +1 -0
  97. package/dist/src/core/context/frame-manager.d.ts +4 -0
  98. package/dist/src/core/context/frame-manager.d.ts.map +1 -1
  99. package/dist/src/core/context/frame-manager.js +350 -144
  100. package/dist/src/core/context/frame-manager.js.map +1 -1
  101. package/dist/src/core/context/model-aware-compaction.d.ts +101 -0
  102. package/dist/src/core/context/model-aware-compaction.d.ts.map +1 -0
  103. package/dist/src/core/context/model-aware-compaction.js +616 -0
  104. package/dist/src/core/context/model-aware-compaction.js.map +1 -0
  105. package/dist/src/core/errors/index.d.ts +135 -0
  106. package/dist/src/core/errors/index.d.ts.map +1 -0
  107. package/dist/src/core/errors/index.js +274 -0
  108. package/dist/src/core/errors/index.js.map +1 -0
  109. package/dist/src/core/errors/recovery.d.ts +86 -0
  110. package/dist/src/core/errors/recovery.d.ts.map +1 -0
  111. package/dist/src/core/errors/recovery.js +274 -0
  112. package/dist/src/core/errors/recovery.js.map +1 -0
  113. package/dist/src/core/projects/project-manager.d.ts.map +1 -1
  114. package/dist/src/core/projects/project-manager.js +240 -122
  115. package/dist/src/core/projects/project-manager.js.map +1 -1
  116. package/dist/src/core/query/query-parser.d.ts +104 -0
  117. package/dist/src/core/query/query-parser.d.ts.map +1 -0
  118. package/dist/src/core/query/query-parser.js +347 -0
  119. package/dist/src/core/query/query-parser.js.map +1 -0
  120. package/dist/src/core/retrieval/index.d.ts +8 -0
  121. package/dist/src/core/retrieval/index.d.ts.map +1 -0
  122. package/dist/src/core/retrieval/index.js +8 -0
  123. package/dist/src/core/retrieval/index.js.map +1 -0
  124. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +71 -0
  125. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +1 -0
  126. package/dist/src/core/retrieval/llm-context-retrieval.js +545 -0
  127. package/dist/src/core/retrieval/llm-context-retrieval.js.map +1 -0
  128. package/dist/src/core/retrieval/summary-generator.d.ts +63 -0
  129. package/dist/src/core/retrieval/summary-generator.d.ts.map +1 -0
  130. package/dist/src/core/retrieval/summary-generator.js +622 -0
  131. package/dist/src/core/retrieval/summary-generator.js.map +1 -0
  132. package/dist/src/core/retrieval/types.d.ts +257 -0
  133. package/dist/src/core/retrieval/types.d.ts.map +1 -0
  134. package/dist/src/core/retrieval/types.js +18 -0
  135. package/dist/src/core/retrieval/types.js.map +1 -0
  136. package/dist/src/core/session/index.d.ts +2 -0
  137. package/dist/src/core/session/index.d.ts.map +1 -0
  138. package/dist/src/core/session/index.js +2 -0
  139. package/dist/src/core/session/index.js.map +1 -0
  140. package/dist/src/core/session/session-manager.d.ts +69 -0
  141. package/dist/src/core/session/session-manager.d.ts.map +1 -0
  142. package/dist/src/core/session/session-manager.js +311 -0
  143. package/dist/src/core/session/session-manager.js.map +1 -0
  144. package/dist/src/core/trace/trace-detector.d.ts +108 -0
  145. package/dist/src/core/trace/trace-detector.d.ts.map +1 -0
  146. package/dist/src/core/trace/trace-detector.demo.d.ts +5 -0
  147. package/dist/src/core/trace/trace-detector.demo.d.ts.map +1 -0
  148. package/dist/src/core/trace/trace-detector.demo.js +145 -0
  149. package/dist/src/core/trace/trace-detector.demo.js.map +1 -0
  150. package/dist/src/core/trace/trace-detector.js +425 -0
  151. package/dist/src/core/trace/trace-detector.js.map +1 -0
  152. package/dist/src/core/trace/trace-store.d.ts +60 -0
  153. package/dist/src/core/trace/trace-store.d.ts.map +1 -0
  154. package/dist/src/core/trace/trace-store.js +323 -0
  155. package/dist/src/core/trace/trace-store.js.map +1 -0
  156. package/dist/src/core/trace/types.d.ts +81 -0
  157. package/dist/src/core/trace/types.d.ts.map +1 -0
  158. package/dist/src/core/trace/types.js +70 -0
  159. package/dist/src/core/trace/types.js.map +1 -0
  160. package/dist/src/core/utils/update-checker.d.ts.map +1 -1
  161. package/dist/src/core/utils/update-checker.js +82 -25
  162. package/dist/src/core/utils/update-checker.js.map +1 -1
  163. package/dist/src/core/worktree/worktree-manager.d.ts +110 -0
  164. package/dist/src/core/worktree/worktree-manager.d.ts.map +1 -0
  165. package/dist/src/core/worktree/worktree-manager.js +456 -0
  166. package/dist/src/core/worktree/worktree-manager.js.map +1 -0
  167. package/dist/src/features/analytics/core/analytics-service.d.ts +6 -0
  168. package/dist/src/features/analytics/core/analytics-service.d.ts.map +1 -1
  169. package/dist/src/features/analytics/core/analytics-service.js +125 -10
  170. package/dist/src/features/analytics/core/analytics-service.js.map +1 -1
  171. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +1 -1
  172. package/dist/src/features/analytics/queries/metrics-queries.js +220 -163
  173. package/dist/src/features/analytics/queries/metrics-queries.js.map +1 -1
  174. package/dist/src/features/browser/browser-mcp.d.ts.map +1 -1
  175. package/dist/src/features/browser/browser-mcp.js +3 -0
  176. package/dist/src/features/browser/browser-mcp.js.map +1 -1
  177. package/dist/src/features/tasks/pebbles-task-store.d.ts +4 -0
  178. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +1 -1
  179. package/dist/src/features/tasks/pebbles-task-store.js +299 -141
  180. package/dist/src/features/tasks/pebbles-task-store.js.map +1 -1
  181. package/dist/src/integrations/linear/client.d.ts +28 -1
  182. package/dist/src/integrations/linear/client.d.ts.map +1 -1
  183. package/dist/src/integrations/linear/client.js +87 -0
  184. package/dist/src/integrations/linear/client.js.map +1 -1
  185. package/dist/src/integrations/linear/sync-manager.d.ts +76 -0
  186. package/dist/src/integrations/linear/sync-manager.d.ts.map +1 -0
  187. package/dist/src/integrations/linear/sync-manager.js +223 -0
  188. package/dist/src/integrations/linear/sync-manager.js.map +1 -0
  189. package/dist/src/integrations/linear/sync-service.d.ts +25 -0
  190. package/dist/src/integrations/linear/sync-service.d.ts.map +1 -0
  191. package/dist/src/integrations/linear/sync-service.js +198 -0
  192. package/dist/src/integrations/linear/sync-service.js.map +1 -0
  193. package/dist/src/integrations/linear/sync.d.ts +23 -1
  194. package/dist/src/integrations/linear/sync.d.ts.map +1 -1
  195. package/dist/src/integrations/linear/sync.js +156 -9
  196. package/dist/src/integrations/linear/sync.js.map +1 -1
  197. package/dist/src/integrations/linear/types.d.ts +75 -0
  198. package/dist/src/integrations/linear/types.d.ts.map +1 -0
  199. package/dist/src/integrations/linear/types.js +2 -0
  200. package/dist/src/integrations/linear/types.js.map +1 -0
  201. package/dist/src/integrations/linear/webhook-server.d.ts +32 -0
  202. package/dist/src/integrations/linear/webhook-server.d.ts.map +1 -0
  203. package/dist/src/integrations/linear/webhook-server.js +188 -0
  204. package/dist/src/integrations/linear/webhook-server.js.map +1 -0
  205. package/dist/src/integrations/linear/webhook.d.ts +95 -0
  206. package/dist/src/integrations/linear/webhook.d.ts.map +1 -0
  207. package/dist/src/integrations/linear/webhook.js +204 -0
  208. package/dist/src/integrations/linear/webhook.js.map +1 -0
  209. package/dist/src/integrations/mcp/server.d.ts +14 -0
  210. package/dist/src/integrations/mcp/server.d.ts.map +1 -1
  211. package/dist/src/integrations/mcp/server.js +849 -61
  212. package/dist/src/integrations/mcp/server.js.map +1 -1
  213. package/dist/src/integrations/mcp/trace-test.d.ts +5 -0
  214. package/dist/src/integrations/mcp/trace-test.d.ts.map +1 -0
  215. package/dist/src/integrations/mcp/trace-test.js +54 -0
  216. package/dist/src/integrations/mcp/trace-test.js.map +1 -0
  217. package/dist/src/servers/production/auth-middleware.d.ts +2 -2
  218. package/dist/src/servers/production/auth-middleware.d.ts.map +1 -1
  219. package/dist/src/servers/production/auth-middleware.js +1 -1
  220. package/dist/src/servers/production/auth-middleware.js.map +1 -1
  221. package/dist/src/services/config-service.d.ts +44 -0
  222. package/dist/src/services/config-service.d.ts.map +1 -0
  223. package/dist/src/services/config-service.js +61 -0
  224. package/dist/src/services/config-service.js.map +1 -0
  225. package/dist/src/services/context-service.d.ts +17 -0
  226. package/dist/src/services/context-service.d.ts.map +1 -0
  227. package/dist/src/services/context-service.js +88 -0
  228. package/dist/src/services/context-service.js.map +1 -0
  229. package/dist/src/types/task.d.ts +27 -0
  230. package/dist/src/types/task.d.ts.map +1 -0
  231. package/dist/src/types/task.js +2 -0
  232. package/dist/src/types/task.js.map +1 -0
  233. package/dist/src/utils/logger.d.ts +13 -0
  234. package/dist/src/utils/logger.d.ts.map +1 -0
  235. package/dist/src/utils/logger.js +52 -0
  236. package/dist/src/utils/logger.js.map +1 -0
  237. package/package.json +24 -10
  238. package/dist/attention-scoring/src/attention-tracker.d.ts +0 -79
  239. package/dist/attention-scoring/src/attention-tracker.d.ts.map +0 -1
  240. package/dist/attention-scoring/src/attention-tracker.js +0 -488
  241. package/dist/attention-scoring/src/attention-tracker.js.map +0 -1
  242. package/dist/attention-scoring/src/mcp-integration.d.ts +0 -56
  243. package/dist/attention-scoring/src/mcp-integration.d.ts.map +0 -1
  244. package/dist/attention-scoring/src/mcp-integration.js +0 -369
  245. package/dist/attention-scoring/src/mcp-integration.js.map +0 -1
  246. package/dist/index.js +0 -382
  247. package/dist/p2p-sync/src/p2p-sync.d.ts +0 -81
  248. package/dist/p2p-sync/src/p2p-sync.d.ts.map +0 -1
  249. package/dist/p2p-sync/src/p2p-sync.js +0 -457
  250. package/dist/p2p-sync/src/p2p-sync.js.map +0 -1
  251. package/dist/p2p-sync/src/team-context-sync.d.ts +0 -99
  252. package/dist/p2p-sync/src/team-context-sync.d.ts.map +0 -1
  253. package/dist/p2p-sync/src/team-context-sync.js +0 -491
  254. package/dist/p2p-sync/src/team-context-sync.js.map +0 -1
  255. package/dist/src/analytics/api/analytics-api.d.ts +0 -24
  256. package/dist/src/analytics/api/analytics-api.d.ts.map +0 -1
  257. package/dist/src/analytics/api/analytics-api.js +0 -279
  258. package/dist/src/analytics/api/analytics-api.js.map +0 -1
  259. package/dist/src/analytics/core/analytics-service.d.ts +0 -23
  260. package/dist/src/analytics/core/analytics-service.d.ts.map +0 -1
  261. package/dist/src/analytics/core/analytics-service.js +0 -160
  262. package/dist/src/analytics/core/analytics-service.js.map +0 -1
  263. package/dist/src/analytics/index.d.ts +0 -12
  264. package/dist/src/analytics/index.d.ts.map +0 -1
  265. package/dist/src/analytics/index.js +0 -11
  266. package/dist/src/analytics/index.js.map +0 -1
  267. package/dist/src/analytics/queries/metrics-queries.d.ts +0 -11
  268. package/dist/src/analytics/queries/metrics-queries.d.ts.map +0 -1
  269. package/dist/src/analytics/queries/metrics-queries.js +0 -179
  270. package/dist/src/analytics/queries/metrics-queries.js.map +0 -1
  271. package/dist/src/analytics/types/metrics.d.ts +0 -60
  272. package/dist/src/analytics/types/metrics.d.ts.map +0 -1
  273. package/dist/src/analytics/types/metrics.js +0 -2
  274. package/dist/src/analytics/types/metrics.js.map +0 -1
  275. package/dist/src/beads/beads-task-store.d.ts +0 -117
  276. package/dist/src/beads/beads-task-store.d.ts.map +0 -1
  277. package/dist/src/beads/beads-task-store.js +0 -318
  278. package/dist/src/beads/beads-task-store.js.map +0 -1
  279. package/dist/src/beads/task-aware-context.d.ts +0 -103
  280. package/dist/src/beads/task-aware-context.d.ts.map +0 -1
  281. package/dist/src/beads/task-aware-context.js +0 -395
  282. package/dist/src/beads/task-aware-context.js.map +0 -1
  283. package/dist/src/beads-task-store.d.ts +0 -117
  284. package/dist/src/beads-task-store.d.ts.map +0 -1
  285. package/dist/src/beads-task-store.js +0 -318
  286. package/dist/src/beads-task-store.js.map +0 -1
  287. package/dist/src/cli/analytics-viewer.d.ts +0 -3
  288. package/dist/src/cli/analytics-viewer.d.ts.map +0 -1
  289. package/dist/src/cli/analytics-viewer.js +0 -89
  290. package/dist/src/cli/analytics-viewer.js.map +0 -1
  291. package/dist/src/cli/cli.d.ts +0 -7
  292. package/dist/src/cli/cli.d.ts.map +0 -1
  293. package/dist/src/cli/cli.js +0 -704
  294. package/dist/src/cli/cli.js.map +0 -1
  295. package/dist/src/cli/project-commands.d.ts +0 -8
  296. package/dist/src/cli/project-commands.d.ts.map +0 -1
  297. package/dist/src/cli/project-commands.js +0 -212
  298. package/dist/src/cli/project-commands.js.map +0 -1
  299. package/dist/src/cli.d.ts +0 -7
  300. package/dist/src/cli.d.ts.map +0 -1
  301. package/dist/src/cli.js +0 -73
  302. package/dist/src/cli.js.map +0 -1
  303. package/dist/src/core/error-handler.d.ts +0 -46
  304. package/dist/src/core/error-handler.d.ts.map +0 -1
  305. package/dist/src/core/error-handler.js +0 -212
  306. package/dist/src/core/error-handler.js.map +0 -1
  307. package/dist/src/core/frame-manager.d.ts +0 -106
  308. package/dist/src/core/frame-manager.d.ts.map +0 -1
  309. package/dist/src/core/frame-manager.js +0 -387
  310. package/dist/src/core/frame-manager.js.map +0 -1
  311. package/dist/src/core/logger.d.ts +0 -24
  312. package/dist/src/core/logger.d.ts.map +0 -1
  313. package/dist/src/core/logger.js +0 -121
  314. package/dist/src/core/logger.js.map +0 -1
  315. package/dist/src/core/logger.test.d.ts +0 -2
  316. package/dist/src/core/logger.test.d.ts.map +0 -1
  317. package/dist/src/core/logger.test.js +0 -31
  318. package/dist/src/core/logger.test.js.map +0 -1
  319. package/dist/src/core/progress-tracker.d.ts +0 -95
  320. package/dist/src/core/progress-tracker.d.ts.map +0 -1
  321. package/dist/src/core/progress-tracker.js +0 -178
  322. package/dist/src/core/progress-tracker.js.map +0 -1
  323. package/dist/src/core/project-manager.d.ts +0 -130
  324. package/dist/src/core/project-manager.d.ts.map +0 -1
  325. package/dist/src/core/project-manager.js +0 -582
  326. package/dist/src/core/project-manager.js.map +0 -1
  327. package/dist/src/core/update-checker.d.ts +0 -38
  328. package/dist/src/core/update-checker.d.ts.map +0 -1
  329. package/dist/src/core/update-checker.js +0 -156
  330. package/dist/src/core/update-checker.js.map +0 -1
  331. package/dist/src/error-handler.d.ts +0 -42
  332. package/dist/src/error-handler.d.ts.map +0 -1
  333. package/dist/src/error-handler.js +0 -155
  334. package/dist/src/error-handler.js.map +0 -1
  335. package/dist/src/frame-manager.d.ts +0 -106
  336. package/dist/src/frame-manager.d.ts.map +0 -1
  337. package/dist/src/frame-manager.js +0 -361
  338. package/dist/src/frame-manager.js.map +0 -1
  339. package/dist/src/integrations/browser-mcp.d.ts +0 -94
  340. package/dist/src/integrations/browser-mcp.d.ts.map +0 -1
  341. package/dist/src/integrations/browser-mcp.js +0 -431
  342. package/dist/src/integrations/browser-mcp.js.map +0 -1
  343. package/dist/src/integrations/linear-auth.d.ts +0 -99
  344. package/dist/src/integrations/linear-auth.d.ts.map +0 -1
  345. package/dist/src/integrations/linear-auth.js +0 -319
  346. package/dist/src/integrations/linear-auth.js.map +0 -1
  347. package/dist/src/integrations/linear-auto-sync.d.ts +0 -77
  348. package/dist/src/integrations/linear-auto-sync.d.ts.map +0 -1
  349. package/dist/src/integrations/linear-auto-sync.js +0 -268
  350. package/dist/src/integrations/linear-auto-sync.js.map +0 -1
  351. package/dist/src/integrations/linear-client.d.ts +0 -86
  352. package/dist/src/integrations/linear-client.d.ts.map +0 -1
  353. package/dist/src/integrations/linear-client.js +0 -277
  354. package/dist/src/integrations/linear-client.js.map +0 -1
  355. package/dist/src/integrations/linear-config.d.ts +0 -51
  356. package/dist/src/integrations/linear-config.d.ts.map +0 -1
  357. package/dist/src/integrations/linear-config.js +0 -103
  358. package/dist/src/integrations/linear-config.js.map +0 -1
  359. package/dist/src/integrations/linear-sync.d.ts +0 -97
  360. package/dist/src/integrations/linear-sync.d.ts.map +0 -1
  361. package/dist/src/integrations/linear-sync.js +0 -391
  362. package/dist/src/integrations/linear-sync.js.map +0 -1
  363. package/dist/src/logger.d.ts +0 -24
  364. package/dist/src/logger.d.ts.map +0 -1
  365. package/dist/src/logger.js +0 -120
  366. package/dist/src/logger.js.map +0 -1
  367. package/dist/src/mcp/mcp-server.d.ts +0 -40
  368. package/dist/src/mcp/mcp-server.d.ts.map +0 -1
  369. package/dist/src/mcp/mcp-server.js +0 -828
  370. package/dist/src/mcp/mcp-server.js.map +0 -1
  371. package/dist/src/mcp-server.d.ts +0 -32
  372. package/dist/src/mcp-server.d.ts.map +0 -1
  373. package/dist/src/mcp-server.js +0 -441
  374. package/dist/src/mcp-server.js.map +0 -1
  375. package/dist/src/pebbles/pebbles-task-store.d.ts +0 -117
  376. package/dist/src/pebbles/pebbles-task-store.d.ts.map +0 -1
  377. package/dist/src/pebbles/pebbles-task-store.js +0 -335
  378. package/dist/src/pebbles/pebbles-task-store.js.map +0 -1
  379. package/dist/src/pebbles/task-aware-context.d.ts +0 -103
  380. package/dist/src/pebbles/task-aware-context.d.ts.map +0 -1
  381. package/dist/src/pebbles/task-aware-context.js +0 -412
  382. package/dist/src/pebbles/task-aware-context.js.map +0 -1
  383. package/dist/src/railway/index.d.ts +0 -7
  384. package/dist/src/railway/index.d.ts.map +0 -1
  385. package/dist/src/railway/index.js +0 -401
  386. package/dist/src/railway/index.js.map +0 -1
  387. package/dist/src/runway/auth/auth-middleware.d.ts +0 -66
  388. package/dist/src/runway/auth/auth-middleware.d.ts.map +0 -1
  389. package/dist/src/runway/auth/auth-middleware.js +0 -337
  390. package/dist/src/runway/auth/auth-middleware.js.map +0 -1
  391. package/dist/src/runway/server/runway-mcp-server.d.ts +0 -46
  392. package/dist/src/runway/server/runway-mcp-server.d.ts.map +0 -1
  393. package/dist/src/runway/server/runway-mcp-server.js +0 -601
  394. package/dist/src/runway/server/runway-mcp-server.js.map +0 -1
  395. package/dist/src/runway.bak/auth/auth-middleware.d.ts +0 -66
  396. package/dist/src/runway.bak/auth/auth-middleware.d.ts.map +0 -1
  397. package/dist/src/runway.bak/auth/auth-middleware.js +0 -337
  398. package/dist/src/runway.bak/auth/auth-middleware.js.map +0 -1
  399. package/dist/src/runway.bak/server/runway-mcp-server.d.ts +0 -46
  400. package/dist/src/runway.bak/server/runway-mcp-server.d.ts.map +0 -1
  401. package/dist/src/runway.bak/server/runway-mcp-server.js +0 -601
  402. package/dist/src/runway.bak/server/runway-mcp-server.js.map +0 -1
  403. package/dist/src/task-aware-context.d.ts +0 -103
  404. package/dist/src/task-aware-context.d.ts.map +0 -1
  405. package/dist/src/task-aware-context.js +0 -395
  406. package/dist/src/task-aware-context.js.map +0 -1
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Configuration types for StackMemory
3
+ */
4
+ export const DEFAULT_WEIGHTS = {
5
+ base: 0.4,
6
+ impact: 0.3,
7
+ persistence: 0.2,
8
+ reference: 0.1,
9
+ };
10
+ export const DEFAULT_TOOL_SCORES = {
11
+ search: 0.95,
12
+ task_creation: 0.9,
13
+ decision_recording: 0.9,
14
+ context_retrieval: 0.85,
15
+ write: 0.75,
16
+ edit: 0.5,
17
+ test: 0.45,
18
+ bash: 0.4,
19
+ read: 0.25,
20
+ grep: 0.15,
21
+ };
22
+ export const PRESET_PROFILES = {
23
+ default: {
24
+ name: 'default',
25
+ description: 'Balanced configuration for general use',
26
+ scoring: {
27
+ weights: DEFAULT_WEIGHTS,
28
+ tool_scores: DEFAULT_TOOL_SCORES,
29
+ },
30
+ },
31
+ 'security-focused': {
32
+ name: 'security-focused',
33
+ description: 'Prioritizes security decisions and audit trails',
34
+ scoring: {
35
+ weights: {
36
+ base: 0.2,
37
+ impact: 0.5,
38
+ persistence: 0.2,
39
+ reference: 0.1,
40
+ },
41
+ tool_scores: {
42
+ decision_recording: 0.95,
43
+ bash: 0.8, // Security-critical commands
44
+ test: 0.7, // Security tests important
45
+ },
46
+ },
47
+ retention: {
48
+ local: {
49
+ young: '7d',
50
+ mature: '30d',
51
+ old: '90d', // Keep security decisions longer
52
+ max_size: '100MB',
53
+ },
54
+ },
55
+ },
56
+ 'exploration-heavy': {
57
+ name: 'exploration-heavy',
58
+ description: 'Optimized for codebase exploration and learning',
59
+ scoring: {
60
+ weights: {
61
+ base: 0.3,
62
+ impact: 0.1,
63
+ persistence: 0.1,
64
+ reference: 0.5, // Discovery paths matter most
65
+ },
66
+ tool_scores: {
67
+ search: 0.99,
68
+ grep: 0.3, // Grep more valuable during exploration
69
+ read: 0.4,
70
+ },
71
+ },
72
+ performance: {
73
+ retrieval_timeout_ms: 1000, // Allow deeper searches
74
+ },
75
+ },
76
+ 'production-system': {
77
+ name: 'production-system',
78
+ description: 'For production environments with stability focus',
79
+ scoring: {
80
+ weights: {
81
+ base: 0.2,
82
+ impact: 0.4,
83
+ persistence: 0.3, // Permanent changes critical
84
+ reference: 0.1,
85
+ },
86
+ tool_scores: {
87
+ write: 0.9, // File changes very important
88
+ edit: 0.85,
89
+ test: 0.8, // Testing critical
90
+ bash: 0.7, // Deploy commands
91
+ },
92
+ },
93
+ },
94
+ };
95
+ export const DEFAULT_CONFIG = {
96
+ version: '1.0',
97
+ scoring: {
98
+ weights: DEFAULT_WEIGHTS,
99
+ tool_scores: DEFAULT_TOOL_SCORES,
100
+ },
101
+ retention: {
102
+ local: {
103
+ young: '1d',
104
+ mature: '7d',
105
+ old: '30d',
106
+ max_size: '2GB',
107
+ },
108
+ remote: {
109
+ enabled: true,
110
+ endpoint: 'api.stackmemory.io',
111
+ retention: 'infinite',
112
+ },
113
+ generational_gc: {
114
+ young_strategy: 'keep_all',
115
+ mature_strategy: 'digest_only',
116
+ old_strategy: 'anchors_only',
117
+ },
118
+ },
119
+ performance: {
120
+ max_stack_depth: 10000,
121
+ max_frame_events: 5000,
122
+ retrieval_timeout_ms: 500,
123
+ batch_upload_size: 100,
124
+ },
125
+ profiles: PRESET_PROFILES,
126
+ };
127
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/config/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Auto-context management
3
+ * Automatically creates and manages context frames
4
+ */
5
+ import { FrameManager } from './frame-manager.js';
6
+ export declare class AutoContext {
7
+ private frameManager;
8
+ constructor(frameManager: FrameManager);
9
+ /**
10
+ * Initialize a session context
11
+ */
12
+ initializeSession(command?: string): void;
13
+ /**
14
+ * Create a command context
15
+ */
16
+ createCommandContext(command: string, args?: any): string | null;
17
+ /**
18
+ * Auto-save important context
19
+ */
20
+ autoSaveContext(data: any, importance?: number): void;
21
+ }
22
+ //# sourceMappingURL=auto-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-context.d.ts","sourceRoot":"","sources":["../../../../src/core/context/auto-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,qBAAa,WAAW;IACtB,OAAO,CAAC,YAAY,CAAe;gBAEvB,YAAY,EAAE,YAAY;IAItC;;OAEG;IACH,iBAAiB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IAsBzC;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI;IAqBhE;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,GAAE,MAAU,GAAG,IAAI;CAezD"}
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Auto-context management
3
+ * Automatically creates and manages context frames
4
+ */
5
+ import { logger } from '../monitoring/logger.js';
6
+ export class AutoContext {
7
+ frameManager;
8
+ constructor(frameManager) {
9
+ this.frameManager = frameManager;
10
+ }
11
+ /**
12
+ * Initialize a session context
13
+ */
14
+ initializeSession(command) {
15
+ try {
16
+ // Create a root session frame
17
+ const sessionFrame = this.frameManager.createFrame({
18
+ type: 'task',
19
+ name: 'Session',
20
+ inputs: {
21
+ command,
22
+ timestamp: new Date().toISOString(),
23
+ cwd: process.cwd(),
24
+ }
25
+ });
26
+ logger.info('Session context initialized', {
27
+ frameId: sessionFrame,
28
+ depth: this.frameManager.getStackDepth()
29
+ });
30
+ }
31
+ catch (error) {
32
+ logger.error('Failed to initialize session context', error);
33
+ }
34
+ }
35
+ /**
36
+ * Create a command context
37
+ */
38
+ createCommandContext(command, args) {
39
+ try {
40
+ const frameId = this.frameManager.createFrame({
41
+ type: 'tool_scope',
42
+ name: command,
43
+ inputs: args
44
+ });
45
+ logger.info('Command context created', {
46
+ frameId,
47
+ command,
48
+ depth: this.frameManager.getStackDepth()
49
+ });
50
+ return frameId;
51
+ }
52
+ catch (error) {
53
+ logger.error('Failed to create command context', error);
54
+ return null;
55
+ }
56
+ }
57
+ /**
58
+ * Auto-save important context
59
+ */
60
+ autoSaveContext(data, importance = 5) {
61
+ try {
62
+ const currentFrame = this.frameManager.getCurrentFrameId();
63
+ if (currentFrame) {
64
+ this.frameManager.addEvent('observation', {
65
+ type: 'context_save',
66
+ data,
67
+ importance,
68
+ timestamp: new Date().toISOString()
69
+ }, currentFrame);
70
+ }
71
+ }
72
+ catch (error) {
73
+ logger.error('Failed to auto-save context', error);
74
+ }
75
+ }
76
+ }
77
+ //# sourceMappingURL=auto-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-context.js","sourceRoot":"","sources":["../../../../src/core/context/auto-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,OAAO,WAAW;IACd,YAAY,CAAe;IAEnC,YAAY,YAA0B;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,OAAgB;QAChC,IAAI,CAAC;YACH,8BAA8B;YAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;gBACjD,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,SAAS;gBACf,MAAM,EAAE;oBACN,OAAO;oBACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;iBACnB;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE;gBACzC,OAAO,EAAE,YAAY;gBACrB,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;aACzC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,sCAAsC,EAAE,KAAc,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,OAAe,EAAE,IAAU;QAC9C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;gBAC5C,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACrC,OAAO;gBACP,OAAO;gBACP,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;aACzC,CAAC,CAAC;YAEH,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAc,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAS,EAAE,aAAqB,CAAC;QAC/C,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YAC3D,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,aAAa,EAAE;oBACxC,IAAI,EAAE,cAAc;oBACpB,IAAI;oBACJ,UAAU;oBACV,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;iBACpC,EAAE,YAAY,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAc,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,119 @@
1
+ /**
2
+ * Compaction Handler for Claude Code Autocompaction
3
+ * Preserves critical context across token limit boundaries
4
+ */
5
+ import { FrameManager } from './frame-manager.js';
6
+ export interface CompactionMetrics {
7
+ estimatedTokens: number;
8
+ warningThreshold: number;
9
+ criticalThreshold: number;
10
+ lastCompactionAt?: number;
11
+ anchorsPreserved: number;
12
+ }
13
+ export interface ToolCallSummary {
14
+ tool: string;
15
+ timestamp: number;
16
+ key_inputs: Record<string, any>;
17
+ key_outputs: Record<string, any>;
18
+ files_affected: string[];
19
+ success: boolean;
20
+ error?: string;
21
+ }
22
+ export interface CriticalContextAnchor {
23
+ anchor_id: string;
24
+ type: 'COMPACTION_PRESERVE';
25
+ priority: 10;
26
+ content: {
27
+ tool_calls: ToolCallSummary[];
28
+ decisions: string[];
29
+ file_operations: FileOperation[];
30
+ error_resolutions: ErrorPattern[];
31
+ };
32
+ created_at: number;
33
+ token_estimate: number;
34
+ }
35
+ export interface FileOperation {
36
+ type: 'read' | 'write' | 'edit' | 'delete' | 'create';
37
+ path: string;
38
+ timestamp: number;
39
+ success: boolean;
40
+ error?: string;
41
+ }
42
+ export interface ErrorPattern {
43
+ error: string;
44
+ resolution: string;
45
+ tool_sequence: string[];
46
+ timestamp: number;
47
+ }
48
+ export declare class CompactionHandler {
49
+ private frameManager;
50
+ private metrics;
51
+ private tokenAccumulator;
52
+ private preservedAnchors;
53
+ constructor(frameManager: FrameManager);
54
+ /**
55
+ * Track token usage from a message
56
+ */
57
+ trackTokens(content: string): void;
58
+ /**
59
+ * Check if approaching compaction threshold
60
+ */
61
+ isApproachingCompaction(): boolean;
62
+ /**
63
+ * Check if past critical threshold
64
+ */
65
+ isPastCriticalThreshold(): boolean;
66
+ /**
67
+ * Detect if compaction likely occurred
68
+ */
69
+ detectCompactionEvent(content: string): boolean;
70
+ /**
71
+ * Preserve critical context before compaction
72
+ */
73
+ preserveCriticalContext(): Promise<void>;
74
+ /**
75
+ * Extract tool calls from events
76
+ */
77
+ private extractToolCalls;
78
+ /**
79
+ * Extract key inputs from tool call
80
+ */
81
+ private extractKeyInputs;
82
+ /**
83
+ * Extract key outputs from tool result
84
+ */
85
+ private extractKeyOutputs;
86
+ /**
87
+ * Extract affected files from tool events
88
+ */
89
+ private extractAffectedFiles;
90
+ /**
91
+ * Extract file operations from events
92
+ */
93
+ private extractFileOperations;
94
+ /**
95
+ * Map tool name to file operation type
96
+ */
97
+ private mapToolToOperation;
98
+ /**
99
+ * Extract decisions from events
100
+ */
101
+ private extractDecisions;
102
+ /**
103
+ * Extract error patterns and resolutions
104
+ */
105
+ private extractErrorPatterns;
106
+ /**
107
+ * Restore context after compaction detected
108
+ */
109
+ restoreContext(): Promise<void>;
110
+ /**
111
+ * Get current metrics
112
+ */
113
+ getMetrics(): CompactionMetrics;
114
+ /**
115
+ * Reset token counter (e.g., at session start)
116
+ */
117
+ resetTokenCount(): void;
118
+ }
119
+ //# sourceMappingURL=compaction-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compaction-handler.d.ts","sourceRoot":"","sources":["../../../../src/core/context/compaction-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAC;AAGjE,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACjC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,qBAAqB,CAAC;IAC5B,QAAQ,EAAE,EAAE,CAAC;IACb,OAAO,EAAE;QACP,UAAU,EAAE,eAAe,EAAE,CAAC;QAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,eAAe,EAAE,aAAa,EAAE,CAAC;QACjC,iBAAiB,EAAE,YAAY,EAAE,CAAC;KACnC,CAAC;IACF,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,gBAAgB,CAAa;IACrC,OAAO,CAAC,gBAAgB,CAAiD;gBAE7D,YAAY,EAAE,YAAY;IAUtC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAYlC;;OAEG;IACH,uBAAuB,IAAI,OAAO;IAIlC;;OAEG;IACH,uBAAuB,IAAI,OAAO;IAIlC;;OAEG;IACH,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAgB/C;;OAEG;IACG,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD9C;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+BxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAoBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsB5B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IA4B7B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAaxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA2B5B;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAkErC;;OAEG;IACH,UAAU,IAAI,iBAAiB;IAI/B;;OAEG;IACH,eAAe,IAAI,IAAI;CAKxB"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Compaction Handler for Claude Code Autocompaction
3
+ * Preserves critical context across token limit boundaries
4
+ */
5
+ import { logger } from '../monitoring/logger.js';
6
+ export class CompactionHandler {
7
+ frameManager;
8
+ metrics;
9
+ tokenAccumulator = 0;
10
+ preservedAnchors = new Map();
11
+ constructor(frameManager) {
12
+ this.frameManager = frameManager;
13
+ this.metrics = {
14
+ estimatedTokens: 0,
15
+ warningThreshold: 150000, // 150K tokens
16
+ criticalThreshold: 170000, // 170K tokens
17
+ anchorsPreserved: 0,
18
+ };
19
+ }
20
+ /**
21
+ * Track token usage from a message
22
+ */
23
+ trackTokens(content) {
24
+ // Rough estimation: 1 token ≈ 4 characters
25
+ const estimatedTokens = Math.ceil(content.length / 4);
26
+ this.tokenAccumulator += estimatedTokens;
27
+ this.metrics.estimatedTokens += estimatedTokens;
28
+ // Check thresholds
29
+ if (this.isApproachingCompaction()) {
30
+ this.preserveCriticalContext();
31
+ }
32
+ }
33
+ /**
34
+ * Check if approaching compaction threshold
35
+ */
36
+ isApproachingCompaction() {
37
+ return this.metrics.estimatedTokens >= this.metrics.warningThreshold;
38
+ }
39
+ /**
40
+ * Check if past critical threshold
41
+ */
42
+ isPastCriticalThreshold() {
43
+ return this.metrics.estimatedTokens >= this.metrics.criticalThreshold;
44
+ }
45
+ /**
46
+ * Detect if compaction likely occurred
47
+ */
48
+ detectCompactionEvent(content) {
49
+ const compactionIndicators = [
50
+ 'earlier in this conversation',
51
+ 'previously discussed',
52
+ 'as mentioned before',
53
+ 'summarized for brevity',
54
+ '[conversation compressed]',
55
+ '[context truncated]',
56
+ ];
57
+ const lowerContent = content.toLowerCase();
58
+ return compactionIndicators.some((indicator) => lowerContent.includes(indicator));
59
+ }
60
+ /**
61
+ * Preserve critical context before compaction
62
+ */
63
+ async preserveCriticalContext() {
64
+ try {
65
+ const currentFrameId = this.frameManager.getCurrentFrameId();
66
+ if (!currentFrameId) {
67
+ logger.warn('No active frame to preserve context from');
68
+ return;
69
+ }
70
+ // Get events from current frame
71
+ const events = this.frameManager.getFrameEvents(currentFrameId);
72
+ // Extract critical information
73
+ const toolCalls = this.extractToolCalls(events);
74
+ const fileOps = this.extractFileOperations(events);
75
+ const decisions = this.extractDecisions(events);
76
+ const errorPatterns = this.extractErrorPatterns(events);
77
+ // Create preservation anchor
78
+ const anchor = {
79
+ anchor_id: `compact_${Date.now()}`,
80
+ type: 'COMPACTION_PRESERVE',
81
+ priority: 10,
82
+ content: {
83
+ tool_calls: toolCalls,
84
+ file_operations: fileOps,
85
+ decisions: decisions,
86
+ error_resolutions: errorPatterns,
87
+ },
88
+ created_at: Date.now(),
89
+ token_estimate: this.metrics.estimatedTokens,
90
+ };
91
+ // Store in frame manager as high-priority anchor
92
+ this.frameManager.addAnchor('CONSTRAINT', // Using CONSTRAINT type for now
93
+ JSON.stringify(anchor), 10, {
94
+ compaction_preserve: true,
95
+ token_count: this.metrics.estimatedTokens,
96
+ }, currentFrameId);
97
+ // Store locally for quick access
98
+ this.preservedAnchors.set(anchor.anchor_id, anchor);
99
+ this.metrics.anchorsPreserved++;
100
+ logger.info(`Preserved critical context at ${this.metrics.estimatedTokens} tokens`);
101
+ }
102
+ catch (error) {
103
+ logger.error('Failed to preserve critical context:', error);
104
+ }
105
+ }
106
+ /**
107
+ * Extract tool calls from events
108
+ */
109
+ extractToolCalls(events) {
110
+ const toolCalls = [];
111
+ const toolEvents = events.filter((e) => e.event_type === 'tool_call');
112
+ for (const event of toolEvents) {
113
+ const resultEvent = events.find((e) => e.event_type === 'tool_result' &&
114
+ e.seq > event.seq &&
115
+ e.payload.tool_name === event.payload.tool_name);
116
+ toolCalls.push({
117
+ tool: event.payload.tool_name || 'unknown',
118
+ timestamp: event.ts,
119
+ key_inputs: this.extractKeyInputs(event.payload),
120
+ key_outputs: resultEvent
121
+ ? this.extractKeyOutputs(resultEvent.payload)
122
+ : {},
123
+ files_affected: this.extractAffectedFiles(event.payload, resultEvent?.payload),
124
+ success: resultEvent ? !resultEvent.payload.error : false,
125
+ error: resultEvent?.payload.error,
126
+ });
127
+ }
128
+ return toolCalls;
129
+ }
130
+ /**
131
+ * Extract key inputs from tool call
132
+ */
133
+ extractKeyInputs(payload) {
134
+ const keys = [
135
+ 'file_path',
136
+ 'command',
137
+ 'query',
138
+ 'path',
139
+ 'pattern',
140
+ 'content',
141
+ ];
142
+ const result = {};
143
+ for (const key of keys) {
144
+ if (payload.arguments?.[key]) {
145
+ result[key] = payload.arguments[key];
146
+ }
147
+ }
148
+ return result;
149
+ }
150
+ /**
151
+ * Extract key outputs from tool result
152
+ */
153
+ extractKeyOutputs(payload) {
154
+ return {
155
+ success: !payload.error,
156
+ error: payload.error,
157
+ result_type: payload.result_type,
158
+ files_created: payload.files_created,
159
+ files_modified: payload.files_modified,
160
+ };
161
+ }
162
+ /**
163
+ * Extract affected files from tool events
164
+ */
165
+ extractAffectedFiles(callPayload, resultPayload) {
166
+ const files = new Set();
167
+ // From tool call
168
+ if (callPayload?.arguments?.file_path) {
169
+ files.add(callPayload.arguments.file_path);
170
+ }
171
+ if (callPayload?.arguments?.path) {
172
+ files.add(callPayload.arguments.path);
173
+ }
174
+ // From tool result
175
+ if (resultPayload?.files_created) {
176
+ resultPayload.files_created.forEach((f) => files.add(f));
177
+ }
178
+ if (resultPayload?.files_modified) {
179
+ resultPayload.files_modified.forEach((f) => files.add(f));
180
+ }
181
+ return Array.from(files);
182
+ }
183
+ /**
184
+ * Extract file operations from events
185
+ */
186
+ extractFileOperations(events) {
187
+ const fileOps = [];
188
+ const fileTools = ['Read', 'Write', 'Edit', 'MultiEdit', 'Delete'];
189
+ const toolEvents = events.filter((e) => e.event_type === 'tool_call' && fileTools.includes(e.payload.tool_name));
190
+ for (const event of toolEvents) {
191
+ const operation = this.mapToolToOperation(event.payload.tool_name);
192
+ const path = event.payload.arguments?.file_path ||
193
+ event.payload.arguments?.path ||
194
+ 'unknown';
195
+ fileOps.push({
196
+ type: operation,
197
+ path: path,
198
+ timestamp: event.ts,
199
+ success: true, // Will be updated from result
200
+ error: undefined,
201
+ });
202
+ }
203
+ return fileOps;
204
+ }
205
+ /**
206
+ * Map tool name to file operation type
207
+ */
208
+ mapToolToOperation(toolName) {
209
+ const mapping = {
210
+ Read: 'read',
211
+ Write: 'write',
212
+ Edit: 'edit',
213
+ MultiEdit: 'edit',
214
+ Delete: 'delete',
215
+ };
216
+ return mapping[toolName] || 'read';
217
+ }
218
+ /**
219
+ * Extract decisions from events
220
+ */
221
+ extractDecisions(events) {
222
+ const decisions = [];
223
+ const decisionEvents = events.filter((e) => e.event_type === 'decision');
224
+ for (const event of decisionEvents) {
225
+ if (event.payload.text) {
226
+ decisions.push(event.payload.text);
227
+ }
228
+ }
229
+ return decisions;
230
+ }
231
+ /**
232
+ * Extract error patterns and resolutions
233
+ */
234
+ extractErrorPatterns(events) {
235
+ const patterns = [];
236
+ // Find tool results with errors
237
+ const errorEvents = events.filter((e) => e.event_type === 'tool_result' && e.payload.error);
238
+ for (const errorEvent of errorEvents) {
239
+ // Look for subsequent successful tool calls that might be resolutions
240
+ const subsequentTools = events
241
+ .filter((e) => e.event_type === 'tool_call' && e.seq > errorEvent.seq)
242
+ .slice(0, 3); // Next 3 tools might be resolution attempts
243
+ if (subsequentTools.length > 0) {
244
+ patterns.push({
245
+ error: errorEvent.payload.error,
246
+ resolution: `Attempted resolution with ${subsequentTools.map((t) => t.payload.tool_name).join(', ')}`,
247
+ tool_sequence: subsequentTools.map((t) => t.payload.tool_name),
248
+ timestamp: errorEvent.ts,
249
+ });
250
+ }
251
+ }
252
+ return patterns;
253
+ }
254
+ /**
255
+ * Restore context after compaction detected
256
+ */
257
+ async restoreContext() {
258
+ if (this.preservedAnchors.size === 0) {
259
+ logger.warn('No preserved anchors to restore from');
260
+ return;
261
+ }
262
+ // Get the most recent anchor
263
+ const anchors = Array.from(this.preservedAnchors.values());
264
+ anchors.sort((a, b) => b.created_at - a.created_at);
265
+ const latestAnchor = anchors[0];
266
+ // Create restoration frame
267
+ const restorationFrame = this.frameManager.createFrame({
268
+ type: 'review',
269
+ name: 'Context Restoration After Compaction',
270
+ inputs: { reason: 'autocompaction_detected' },
271
+ });
272
+ // Add restoration anchor
273
+ this.frameManager.addAnchor('FACT', `Context restored from token position ${latestAnchor.token_estimate}`, 10, { restoration: true }, restorationFrame);
274
+ // Add tool sequence summary
275
+ const toolSequence = latestAnchor.content.tool_calls
276
+ .map((t) => t.tool)
277
+ .join(' → ');
278
+ this.frameManager.addAnchor('FACT', `Tool sequence: ${toolSequence}`, 9, {}, restorationFrame);
279
+ // Add file operations summary
280
+ const files = new Set();
281
+ latestAnchor.content.file_operations.forEach((op) => files.add(op.path));
282
+ if (files.size > 0) {
283
+ this.frameManager.addAnchor('FACT', `Files touched: ${Array.from(files).join(', ')}`, 8, {}, restorationFrame);
284
+ }
285
+ // Add decisions
286
+ for (const decision of latestAnchor.content.decisions) {
287
+ this.frameManager.addAnchor('DECISION', decision, 7, {}, restorationFrame);
288
+ }
289
+ logger.info('Context restored after compaction detection');
290
+ }
291
+ /**
292
+ * Get current metrics
293
+ */
294
+ getMetrics() {
295
+ return { ...this.metrics };
296
+ }
297
+ /**
298
+ * Reset token counter (e.g., at session start)
299
+ */
300
+ resetTokenCount() {
301
+ this.metrics.estimatedTokens = 0;
302
+ this.tokenAccumulator = 0;
303
+ this.metrics.lastCompactionAt = undefined;
304
+ }
305
+ }
306
+ //# sourceMappingURL=compaction-handler.js.map