@stackmemoryai/stackmemory 0.3.1 → 0.3.5

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 (744) hide show
  1. package/README.md +69 -288
  2. package/dist/cli/commands/chromadb.js +267 -0
  3. package/dist/cli/commands/chromadb.js.map +7 -0
  4. package/dist/cli/commands/clear.js +191 -0
  5. package/dist/cli/commands/clear.js.map +7 -0
  6. package/dist/cli/commands/config.js +152 -1
  7. package/dist/cli/commands/config.js.map +2 -2
  8. package/dist/cli/commands/context.js +15 -5
  9. package/dist/cli/commands/context.js.map +2 -2
  10. package/dist/cli/commands/dashboard.js +178 -0
  11. package/dist/cli/commands/dashboard.js.map +7 -0
  12. package/dist/cli/commands/handoff.js +125 -8
  13. package/dist/cli/commands/handoff.js.map +2 -2
  14. package/dist/cli/commands/linear-create.js +132 -0
  15. package/dist/cli/commands/linear-create.js.map +7 -0
  16. package/dist/cli/commands/linear-list.js +69 -0
  17. package/dist/cli/commands/linear-list.js.map +7 -0
  18. package/dist/cli/commands/linear-migrate.js +40 -0
  19. package/dist/cli/commands/linear-migrate.js.map +7 -0
  20. package/dist/cli/commands/linear.js +185 -36
  21. package/dist/cli/commands/linear.js.map +2 -2
  22. package/dist/cli/commands/monitor.js +309 -0
  23. package/dist/cli/commands/monitor.js.map +7 -0
  24. package/dist/cli/commands/quality.js +414 -0
  25. package/dist/cli/commands/quality.js.map +7 -0
  26. package/dist/cli/commands/skills.js +262 -0
  27. package/dist/cli/commands/skills.js.map +7 -0
  28. package/dist/cli/commands/storage.js +275 -0
  29. package/dist/cli/commands/storage.js.map +7 -0
  30. package/dist/cli/commands/tui.js +66 -0
  31. package/dist/cli/commands/tui.js.map +7 -0
  32. package/dist/cli/commands/workflow.js +134 -0
  33. package/dist/cli/commands/workflow.js.map +7 -0
  34. package/dist/cli/index.js +109 -8
  35. package/dist/cli/index.js.map +3 -3
  36. package/dist/core/analytics/team-analytics.js +374 -0
  37. package/dist/core/analytics/team-analytics.js.map +7 -0
  38. package/dist/core/context/context-bridge.js +234 -0
  39. package/dist/core/context/context-bridge.js.map +7 -0
  40. package/dist/core/context/dual-stack-manager.js +850 -0
  41. package/dist/core/context/dual-stack-manager.js.map +7 -0
  42. package/dist/core/context/frame-handoff-manager.js +774 -0
  43. package/dist/core/context/frame-handoff-manager.js.map +7 -0
  44. package/dist/core/context/frame-manager.js +142 -13
  45. package/dist/core/context/frame-manager.js.map +2 -2
  46. package/dist/core/context/permission-manager.js +181 -0
  47. package/dist/core/context/permission-manager.js.map +7 -0
  48. package/dist/core/context/shared-context-layer.js +386 -0
  49. package/dist/core/context/shared-context-layer.js.map +7 -0
  50. package/dist/core/context/stack-merge-resolver.js +600 -0
  51. package/dist/core/context/stack-merge-resolver.js.map +7 -0
  52. package/dist/core/context/validation.js +121 -0
  53. package/dist/core/context/validation.js.map +7 -0
  54. package/dist/core/database/connection-pool.js +266 -175
  55. package/dist/core/database/connection-pool.js.map +2 -2
  56. package/dist/core/database/database-adapter.js +51 -0
  57. package/dist/core/database/database-adapter.js.map +7 -0
  58. package/dist/core/database/migration-manager.js +514 -0
  59. package/dist/core/database/migration-manager.js.map +7 -0
  60. package/dist/core/database/paradedb-adapter.js +970 -0
  61. package/dist/core/database/paradedb-adapter.js.map +7 -0
  62. package/dist/core/database/query-router.js +421 -0
  63. package/dist/core/database/query-router.js.map +7 -0
  64. package/dist/core/database/sqlite-adapter.js +547 -0
  65. package/dist/core/database/sqlite-adapter.js.map +7 -0
  66. package/dist/core/errors/index.js +21 -1
  67. package/dist/core/errors/index.js.map +2 -2
  68. package/dist/core/frame/workflow-templates-stub.js +42 -0
  69. package/dist/core/frame/workflow-templates-stub.js.map +7 -0
  70. package/dist/core/frame/workflow-templates.js +276 -0
  71. package/dist/core/frame/workflow-templates.js.map +7 -0
  72. package/dist/core/merge/conflict-detector.js +5 -2
  73. package/dist/core/merge/conflict-detector.js.map +2 -2
  74. package/dist/core/merge/resolution-engine.js +3 -14
  75. package/dist/core/merge/resolution-engine.js.map +2 -2
  76. package/dist/core/merge/stack-diff.js.map +2 -2
  77. package/dist/core/monitoring/logger.js +18 -3
  78. package/dist/core/monitoring/logger.js.map +2 -2
  79. package/dist/core/monitoring/session-monitor.js +296 -0
  80. package/dist/core/monitoring/session-monitor.js.map +7 -0
  81. package/dist/core/retrieval/context-retriever.js +475 -0
  82. package/dist/core/retrieval/context-retriever.js.map +7 -0
  83. package/dist/core/retrieval/graph-retrieval.js +658 -0
  84. package/dist/core/retrieval/graph-retrieval.js.map +7 -0
  85. package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
  86. package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
  87. package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
  88. package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
  89. package/dist/core/session/clear-survival-stub.js +49 -0
  90. package/dist/core/session/clear-survival-stub.js.map +7 -0
  91. package/dist/core/session/clear-survival.js +426 -0
  92. package/dist/core/session/clear-survival.js.map +7 -0
  93. package/dist/core/session/handoff-generator.js +339 -0
  94. package/dist/core/session/handoff-generator.js.map +7 -0
  95. package/dist/core/session/session-manager.js +61 -26
  96. package/dist/core/session/session-manager.js.map +3 -3
  97. package/dist/core/skills/index.js +3 -0
  98. package/dist/core/skills/index.js.map +7 -0
  99. package/dist/core/skills/skill-storage.js +749 -0
  100. package/dist/core/skills/skill-storage.js.map +7 -0
  101. package/dist/core/skills/types.js +189 -0
  102. package/dist/core/skills/types.js.map +7 -0
  103. package/dist/core/storage/chromadb-adapter.js +346 -0
  104. package/dist/core/storage/chromadb-adapter.js.map +7 -0
  105. package/dist/core/storage/railway-optimized-storage.js +550 -0
  106. package/dist/core/storage/railway-optimized-storage.js.map +7 -0
  107. package/dist/core/storage/remote-storage.js +456 -0
  108. package/dist/core/storage/remote-storage.js.map +7 -0
  109. package/dist/core/trace/trace-detector.js +136 -5
  110. package/dist/core/trace/trace-detector.js.map +2 -2
  111. package/dist/core/trace/trace-store.js.map +2 -2
  112. package/dist/features/tui/components/analytics-panel.js +136 -0
  113. package/dist/features/tui/components/analytics-panel.js.map +7 -0
  114. package/dist/features/tui/components/frame-visualizer.js +377 -0
  115. package/dist/features/tui/components/frame-visualizer.js.map +7 -0
  116. package/dist/features/tui/components/pr-tracker.js +123 -0
  117. package/dist/features/tui/components/pr-tracker.js.map +7 -0
  118. package/dist/features/tui/components/session-monitor.js +286 -0
  119. package/dist/features/tui/components/session-monitor.js.map +7 -0
  120. package/dist/features/tui/components/subagent-fleet.js +388 -0
  121. package/dist/features/tui/components/subagent-fleet.js.map +7 -0
  122. package/dist/features/tui/components/task-board.js +475 -0
  123. package/dist/features/tui/components/task-board.js.map +7 -0
  124. package/dist/features/tui/index.js +397 -0
  125. package/dist/features/tui/index.js.map +7 -0
  126. package/dist/features/tui/services/data-service.js +654 -0
  127. package/dist/features/tui/services/data-service.js.map +7 -0
  128. package/dist/features/tui/services/websocket-client.js +149 -0
  129. package/dist/features/tui/services/websocket-client.js.map +7 -0
  130. package/dist/features/tui/terminal-compat.js +205 -0
  131. package/dist/features/tui/terminal-compat.js.map +7 -0
  132. package/dist/features/tui/types.js +1 -0
  133. package/dist/features/tui/types.js.map +7 -0
  134. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
  135. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  136. package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
  137. package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  138. package/dist/integrations/claude-code/post-task-hooks.js +541 -0
  139. package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
  140. package/dist/integrations/linear/client.js +22 -4
  141. package/dist/integrations/linear/client.js.map +2 -2
  142. package/dist/integrations/linear/migration.js +299 -0
  143. package/dist/integrations/linear/migration.js.map +7 -0
  144. package/dist/integrations/linear/oauth-server.js +396 -0
  145. package/dist/integrations/linear/oauth-server.js.map +7 -0
  146. package/dist/integrations/linear/rest-client.js +199 -0
  147. package/dist/integrations/linear/rest-client.js.map +7 -0
  148. package/dist/integrations/linear/sync.js +14 -2
  149. package/dist/integrations/linear/sync.js.map +2 -2
  150. package/dist/integrations/linear/webhook-handler.js +200 -0
  151. package/dist/integrations/linear/webhook-handler.js.map +7 -0
  152. package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
  153. package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  154. package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
  155. package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  156. package/dist/integrations/mcp/refactored-server.js +31 -3
  157. package/dist/integrations/mcp/refactored-server.js.map +2 -2
  158. package/dist/integrations/mcp/server.js +25 -7
  159. package/dist/integrations/mcp/server.js.map +2 -2
  160. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  161. package/dist/models/user.model.js +3 -0
  162. package/dist/models/user.model.js.map +2 -2
  163. package/dist/services/context-service.js.map +2 -2
  164. package/dist/skills/claude-skills.js +666 -0
  165. package/dist/skills/claude-skills.js.map +7 -0
  166. package/dist/utils/formatting.js +58 -0
  167. package/dist/utils/formatting.js.map +7 -0
  168. package/package.json +30 -24
  169. package/dist/cli/__tests__/index.test.js +0 -290
  170. package/dist/cli/__tests__/index.test.js.map +0 -7
  171. package/dist/core/config/__tests__/config-manager.test.js +0 -248
  172. package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
  173. package/dist/core/context/__tests__/frame-manager.test.js +0 -879
  174. package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
  175. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
  176. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
  177. package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
  178. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
  179. package/dist/core/errors/__tests__/error-handling.test.js +0 -270
  180. package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
  181. package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
  182. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
  183. package/dist/core/query/__tests__/query-parser.test.js +0 -301
  184. package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
  185. package/dist/core/query/__tests__/query-templates.test.js +0 -210
  186. package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
  187. package/dist/core/trace/trace-detector.test.js +0 -401
  188. package/dist/core/trace/trace-detector.test.js.map +0 -7
  189. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
  190. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
  191. package/dist/integrations/linear/__tests__/auth.test.js +0 -558
  192. package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
  193. package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
  194. package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
  195. package/dist/integrations/mcp/__tests__/server.test.js +0 -798
  196. package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
  197. package/dist/scripts/benchmark-performance.d.ts +0 -7
  198. package/dist/scripts/benchmark-performance.d.ts.map +0 -1
  199. package/dist/scripts/benchmark-performance.js +0 -44
  200. package/dist/scripts/benchmark-performance.js.map +0 -1
  201. package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
  202. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
  203. package/dist/scripts/cancel-duplicate-tasks.js +0 -172
  204. package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
  205. package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
  206. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
  207. package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
  208. package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
  209. package/dist/scripts/initialize.d.ts +0 -6
  210. package/dist/scripts/initialize.d.ts.map +0 -1
  211. package/dist/scripts/initialize.js +0 -93
  212. package/dist/scripts/initialize.js.map +0 -1
  213. package/dist/scripts/list-linear-tasks.d.ts +0 -6
  214. package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
  215. package/dist/scripts/list-linear-tasks.js +0 -121
  216. package/dist/scripts/list-linear-tasks.js.map +0 -1
  217. package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
  218. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
  219. package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
  220. package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
  221. package/dist/scripts/show-linear-summary.d.ts +0 -6
  222. package/dist/scripts/show-linear-summary.d.ts.map +0 -1
  223. package/dist/scripts/show-linear-summary.js +0 -120
  224. package/dist/scripts/show-linear-summary.js.map +0 -1
  225. package/dist/scripts/status.d.ts +0 -6
  226. package/dist/scripts/status.d.ts.map +0 -1
  227. package/dist/scripts/status.js +0 -101
  228. package/dist/scripts/status.js.map +0 -1
  229. package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
  230. package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
  231. package/dist/src/agents/core/agent-task-manager.js +0 -504
  232. package/dist/src/agents/core/agent-task-manager.js.map +0 -1
  233. package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
  234. package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
  235. package/dist/src/agents/verifiers/base-verifier.js +0 -130
  236. package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
  237. package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
  238. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
  239. package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
  240. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
  241. package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
  242. package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
  243. package/dist/src/agents/verifiers/llm-judge.js +0 -248
  244. package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
  245. package/dist/src/cli/auto-detect.d.ts +0 -61
  246. package/dist/src/cli/auto-detect.d.ts.map +0 -1
  247. package/dist/src/cli/auto-detect.js +0 -350
  248. package/dist/src/cli/auto-detect.js.map +0 -1
  249. package/dist/src/cli/browser-test.d.ts +0 -6
  250. package/dist/src/cli/browser-test.d.ts.map +0 -1
  251. package/dist/src/cli/browser-test.js +0 -32
  252. package/dist/src/cli/browser-test.js.map +0 -1
  253. package/dist/src/cli/claude-sm.d.ts +0 -7
  254. package/dist/src/cli/claude-sm.d.ts.map +0 -1
  255. package/dist/src/cli/claude-sm.js +0 -412
  256. package/dist/src/cli/claude-sm.js.map +0 -1
  257. package/dist/src/cli/commands/agent.d.ts +0 -9
  258. package/dist/src/cli/commands/agent.d.ts.map +0 -1
  259. package/dist/src/cli/commands/agent.js +0 -303
  260. package/dist/src/cli/commands/agent.js.map +0 -1
  261. package/dist/src/cli/commands/config.d.ts +0 -6
  262. package/dist/src/cli/commands/config.d.ts.map +0 -1
  263. package/dist/src/cli/commands/config.js +0 -224
  264. package/dist/src/cli/commands/config.js.map +0 -1
  265. package/dist/src/cli/commands/context.d.ts +0 -7
  266. package/dist/src/cli/commands/context.d.ts.map +0 -1
  267. package/dist/src/cli/commands/context.js +0 -365
  268. package/dist/src/cli/commands/context.js.map +0 -1
  269. package/dist/src/cli/commands/handoff.d.ts +0 -6
  270. package/dist/src/cli/commands/handoff.d.ts.map +0 -1
  271. package/dist/src/cli/commands/handoff.js +0 -212
  272. package/dist/src/cli/commands/handoff.js.map +0 -1
  273. package/dist/src/cli/commands/linear-test.d.ts +0 -6
  274. package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
  275. package/dist/src/cli/commands/linear-test.js +0 -123
  276. package/dist/src/cli/commands/linear-test.js.map +0 -1
  277. package/dist/src/cli/commands/linear.d.ts +0 -6
  278. package/dist/src/cli/commands/linear.d.ts.map +0 -1
  279. package/dist/src/cli/commands/linear.js +0 -393
  280. package/dist/src/cli/commands/linear.js.map +0 -1
  281. package/dist/src/cli/commands/log.d.ts +0 -7
  282. package/dist/src/cli/commands/log.d.ts.map +0 -1
  283. package/dist/src/cli/commands/log.js +0 -168
  284. package/dist/src/cli/commands/log.js.map +0 -1
  285. package/dist/src/cli/commands/onboard.d.ts +0 -8
  286. package/dist/src/cli/commands/onboard.d.ts.map +0 -1
  287. package/dist/src/cli/commands/onboard.js +0 -363
  288. package/dist/src/cli/commands/onboard.js.map +0 -1
  289. package/dist/src/cli/commands/projects.d.ts +0 -8
  290. package/dist/src/cli/commands/projects.d.ts.map +0 -1
  291. package/dist/src/cli/commands/projects.js +0 -220
  292. package/dist/src/cli/commands/projects.js.map +0 -1
  293. package/dist/src/cli/commands/search.d.ts +0 -7
  294. package/dist/src/cli/commands/search.d.ts.map +0 -1
  295. package/dist/src/cli/commands/search.js +0 -162
  296. package/dist/src/cli/commands/search.js.map +0 -1
  297. package/dist/src/cli/commands/session.d.ts +0 -7
  298. package/dist/src/cli/commands/session.d.ts.map +0 -1
  299. package/dist/src/cli/commands/session.js +0 -222
  300. package/dist/src/cli/commands/session.js.map +0 -1
  301. package/dist/src/cli/commands/tasks.d.ts +0 -7
  302. package/dist/src/cli/commands/tasks.d.ts.map +0 -1
  303. package/dist/src/cli/commands/tasks.js +0 -229
  304. package/dist/src/cli/commands/tasks.js.map +0 -1
  305. package/dist/src/cli/commands/webhook.d.ts +0 -3
  306. package/dist/src/cli/commands/webhook.d.ts.map +0 -1
  307. package/dist/src/cli/commands/webhook.js +0 -157
  308. package/dist/src/cli/commands/webhook.js.map +0 -1
  309. package/dist/src/cli/commands/worktree.d.ts +0 -8
  310. package/dist/src/cli/commands/worktree.d.ts.map +0 -1
  311. package/dist/src/cli/commands/worktree.js +0 -339
  312. package/dist/src/cli/commands/worktree.js.map +0 -1
  313. package/dist/src/cli/index.d.ts +0 -8
  314. package/dist/src/cli/index.d.ts.map +0 -1
  315. package/dist/src/cli/index.js +0 -995
  316. package/dist/src/cli/index.js.map +0 -1
  317. package/dist/src/cli/utils/viewer.d.ts +0 -3
  318. package/dist/src/cli/utils/viewer.d.ts.map +0 -1
  319. package/dist/src/cli/utils/viewer.js +0 -91
  320. package/dist/src/cli/utils/viewer.js.map +0 -1
  321. package/dist/src/core/config/config-manager.d.ts +0 -95
  322. package/dist/src/core/config/config-manager.d.ts.map +0 -1
  323. package/dist/src/core/config/config-manager.js +0 -359
  324. package/dist/src/core/config/config-manager.js.map +0 -1
  325. package/dist/src/core/config/types.d.ts +0 -72
  326. package/dist/src/core/config/types.d.ts.map +0 -1
  327. package/dist/src/core/config/types.js +0 -127
  328. package/dist/src/core/config/types.js.map +0 -1
  329. package/dist/src/core/context/auto-context.d.ts +0 -22
  330. package/dist/src/core/context/auto-context.d.ts.map +0 -1
  331. package/dist/src/core/context/auto-context.js +0 -77
  332. package/dist/src/core/context/auto-context.js.map +0 -1
  333. package/dist/src/core/context/compaction-handler.d.ts +0 -119
  334. package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
  335. package/dist/src/core/context/compaction-handler.js +0 -306
  336. package/dist/src/core/context/compaction-handler.js.map +0 -1
  337. package/dist/src/core/context/frame-database.d.ts +0 -59
  338. package/dist/src/core/context/frame-database.d.ts.map +0 -1
  339. package/dist/src/core/context/frame-database.js +0 -333
  340. package/dist/src/core/context/frame-database.js.map +0 -1
  341. package/dist/src/core/context/frame-digest.d.ts +0 -59
  342. package/dist/src/core/context/frame-digest.d.ts.map +0 -1
  343. package/dist/src/core/context/frame-digest.js +0 -264
  344. package/dist/src/core/context/frame-digest.js.map +0 -1
  345. package/dist/src/core/context/frame-manager.d.ts +0 -112
  346. package/dist/src/core/context/frame-manager.d.ts.map +0 -1
  347. package/dist/src/core/context/frame-manager.js +0 -600
  348. package/dist/src/core/context/frame-manager.js.map +0 -1
  349. package/dist/src/core/context/frame-stack.d.ts +0 -85
  350. package/dist/src/core/context/frame-stack.d.ts.map +0 -1
  351. package/dist/src/core/context/frame-stack.js +0 -287
  352. package/dist/src/core/context/frame-stack.js.map +0 -1
  353. package/dist/src/core/context/frame-types.d.ts +0 -67
  354. package/dist/src/core/context/frame-types.d.ts.map +0 -1
  355. package/dist/src/core/context/frame-types.js +0 -6
  356. package/dist/src/core/context/frame-types.js.map +0 -1
  357. package/dist/src/core/context/index.d.ts +0 -11
  358. package/dist/src/core/context/index.d.ts.map +0 -1
  359. package/dist/src/core/context/index.js +0 -14
  360. package/dist/src/core/context/index.js.map +0 -1
  361. package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
  362. package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
  363. package/dist/src/core/context/model-aware-compaction.js +0 -616
  364. package/dist/src/core/context/model-aware-compaction.js.map +0 -1
  365. package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
  366. package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
  367. package/dist/src/core/context/refactored-frame-manager.js +0 -340
  368. package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
  369. package/dist/src/core/database/batch-operations.d.ts +0 -118
  370. package/dist/src/core/database/batch-operations.d.ts.map +0 -1
  371. package/dist/src/core/database/batch-operations.js +0 -339
  372. package/dist/src/core/database/batch-operations.js.map +0 -1
  373. package/dist/src/core/database/connection-pool.d.ts +0 -79
  374. package/dist/src/core/database/connection-pool.d.ts.map +0 -1
  375. package/dist/src/core/database/connection-pool.js +0 -236
  376. package/dist/src/core/database/connection-pool.js.map +0 -1
  377. package/dist/src/core/database/query-cache.d.ts +0 -135
  378. package/dist/src/core/database/query-cache.d.ts.map +0 -1
  379. package/dist/src/core/database/query-cache.js +0 -294
  380. package/dist/src/core/database/query-cache.js.map +0 -1
  381. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
  382. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
  383. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
  384. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
  385. package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
  386. package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
  387. package/dist/src/core/digest/frame-digest-integration.js +0 -198
  388. package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
  389. package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
  390. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
  391. package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
  392. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
  393. package/dist/src/core/digest/index.d.ts +0 -9
  394. package/dist/src/core/digest/index.d.ts.map +0 -1
  395. package/dist/src/core/digest/index.js +0 -9
  396. package/dist/src/core/digest/index.js.map +0 -1
  397. package/dist/src/core/digest/types.d.ts +0 -154
  398. package/dist/src/core/digest/types.d.ts.map +0 -1
  399. package/dist/src/core/digest/types.js +0 -18
  400. package/dist/src/core/digest/types.js.map +0 -1
  401. package/dist/src/core/errors/index.d.ts +0 -143
  402. package/dist/src/core/errors/index.d.ts.map +0 -1
  403. package/dist/src/core/errors/index.js +0 -282
  404. package/dist/src/core/errors/index.js.map +0 -1
  405. package/dist/src/core/errors/recovery.d.ts +0 -86
  406. package/dist/src/core/errors/recovery.d.ts.map +0 -1
  407. package/dist/src/core/errors/recovery.js +0 -274
  408. package/dist/src/core/errors/recovery.js.map +0 -1
  409. package/dist/src/core/merge/conflict-detector.d.ts +0 -122
  410. package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
  411. package/dist/src/core/merge/conflict-detector.js +0 -468
  412. package/dist/src/core/merge/conflict-detector.js.map +0 -1
  413. package/dist/src/core/merge/index.d.ts +0 -9
  414. package/dist/src/core/merge/index.d.ts.map +0 -1
  415. package/dist/src/core/merge/index.js +0 -9
  416. package/dist/src/core/merge/index.js.map +0 -1
  417. package/dist/src/core/merge/resolution-engine.d.ts +0 -120
  418. package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
  419. package/dist/src/core/merge/resolution-engine.js +0 -573
  420. package/dist/src/core/merge/resolution-engine.js.map +0 -1
  421. package/dist/src/core/merge/stack-diff.d.ts +0 -97
  422. package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
  423. package/dist/src/core/merge/stack-diff.js +0 -516
  424. package/dist/src/core/merge/stack-diff.js.map +0 -1
  425. package/dist/src/core/merge/types.d.ts +0 -110
  426. package/dist/src/core/merge/types.d.ts.map +0 -1
  427. package/dist/src/core/merge/types.js +0 -6
  428. package/dist/src/core/merge/types.js.map +0 -1
  429. package/dist/src/core/monitoring/error-handler.d.ts +0 -46
  430. package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
  431. package/dist/src/core/monitoring/error-handler.js +0 -212
  432. package/dist/src/core/monitoring/error-handler.js.map +0 -1
  433. package/dist/src/core/monitoring/logger.d.ts +0 -24
  434. package/dist/src/core/monitoring/logger.d.ts.map +0 -1
  435. package/dist/src/core/monitoring/logger.js +0 -126
  436. package/dist/src/core/monitoring/logger.js.map +0 -1
  437. package/dist/src/core/monitoring/metrics.d.ts +0 -10
  438. package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
  439. package/dist/src/core/monitoring/metrics.js +0 -152
  440. package/dist/src/core/monitoring/metrics.js.map +0 -1
  441. package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
  442. package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
  443. package/dist/src/core/monitoring/progress-tracker.js +0 -178
  444. package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
  445. package/dist/src/core/performance/context-cache.d.ts +0 -109
  446. package/dist/src/core/performance/context-cache.d.ts.map +0 -1
  447. package/dist/src/core/performance/context-cache.js +0 -280
  448. package/dist/src/core/performance/context-cache.js.map +0 -1
  449. package/dist/src/core/performance/index.d.ts +0 -3
  450. package/dist/src/core/performance/index.d.ts.map +0 -1
  451. package/dist/src/core/performance/index.js +0 -3
  452. package/dist/src/core/performance/index.js.map +0 -1
  453. package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
  454. package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
  455. package/dist/src/core/performance/lazy-context-loader.js +0 -332
  456. package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
  457. package/dist/src/core/performance/monitor.d.ts +0 -48
  458. package/dist/src/core/performance/monitor.d.ts.map +0 -1
  459. package/dist/src/core/performance/monitor.js +0 -226
  460. package/dist/src/core/performance/monitor.js.map +0 -1
  461. package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
  462. package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
  463. package/dist/src/core/performance/optimized-frame-context.js +0 -330
  464. package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
  465. package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
  466. package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
  467. package/dist/src/core/performance/performance-benchmark.js +0 -290
  468. package/dist/src/core/performance/performance-benchmark.js.map +0 -1
  469. package/dist/src/core/performance/performance-profiler.d.ts +0 -151
  470. package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
  471. package/dist/src/core/performance/performance-profiler.js +0 -346
  472. package/dist/src/core/performance/performance-profiler.js.map +0 -1
  473. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
  474. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
  475. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
  476. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
  477. package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
  478. package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
  479. package/dist/src/core/persistence/postgres-adapter.js +0 -330
  480. package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
  481. package/dist/src/core/projects/project-manager.d.ts +0 -130
  482. package/dist/src/core/projects/project-manager.d.ts.map +0 -1
  483. package/dist/src/core/projects/project-manager.js +0 -709
  484. package/dist/src/core/projects/project-manager.js.map +0 -1
  485. package/dist/src/core/query/query-parser.d.ts +0 -109
  486. package/dist/src/core/query/query-parser.d.ts.map +0 -1
  487. package/dist/src/core/query/query-parser.js +0 -415
  488. package/dist/src/core/query/query-parser.js.map +0 -1
  489. package/dist/src/core/query/query-templates.d.ts +0 -44
  490. package/dist/src/core/query/query-templates.d.ts.map +0 -1
  491. package/dist/src/core/query/query-templates.js +0 -326
  492. package/dist/src/core/query/query-templates.js.map +0 -1
  493. package/dist/src/core/retrieval/index.d.ts +0 -8
  494. package/dist/src/core/retrieval/index.d.ts.map +0 -1
  495. package/dist/src/core/retrieval/index.js +0 -8
  496. package/dist/src/core/retrieval/index.js.map +0 -1
  497. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
  498. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
  499. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
  500. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
  501. package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
  502. package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
  503. package/dist/src/core/retrieval/summary-generator.js +0 -622
  504. package/dist/src/core/retrieval/summary-generator.js.map +0 -1
  505. package/dist/src/core/retrieval/types.d.ts +0 -257
  506. package/dist/src/core/retrieval/types.d.ts.map +0 -1
  507. package/dist/src/core/retrieval/types.js +0 -18
  508. package/dist/src/core/retrieval/types.js.map +0 -1
  509. package/dist/src/core/session/index.d.ts +0 -2
  510. package/dist/src/core/session/index.d.ts.map +0 -1
  511. package/dist/src/core/session/index.js +0 -2
  512. package/dist/src/core/session/index.js.map +0 -1
  513. package/dist/src/core/session/session-manager.d.ts +0 -69
  514. package/dist/src/core/session/session-manager.d.ts.map +0 -1
  515. package/dist/src/core/session/session-manager.js +0 -311
  516. package/dist/src/core/session/session-manager.js.map +0 -1
  517. package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
  518. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
  519. package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
  520. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
  521. package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
  522. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
  523. package/dist/src/core/trace/db-trace-wrapper.js +0 -252
  524. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
  525. package/dist/src/core/trace/debug-trace.d.ts +0 -84
  526. package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
  527. package/dist/src/core/trace/debug-trace.js +0 -402
  528. package/dist/src/core/trace/debug-trace.js.map +0 -1
  529. package/dist/src/core/trace/error-test.d.ts +0 -6
  530. package/dist/src/core/trace/error-test.d.ts.map +0 -1
  531. package/dist/src/core/trace/error-test.js +0 -128
  532. package/dist/src/core/trace/error-test.js.map +0 -1
  533. package/dist/src/core/trace/index.d.ts +0 -25
  534. package/dist/src/core/trace/index.d.ts.map +0 -1
  535. package/dist/src/core/trace/index.js +0 -121
  536. package/dist/src/core/trace/index.js.map +0 -1
  537. package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
  538. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
  539. package/dist/src/core/trace/linear-api-wrapper.js +0 -205
  540. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
  541. package/dist/src/core/trace/performance-test.d.ts +0 -6
  542. package/dist/src/core/trace/performance-test.d.ts.map +0 -1
  543. package/dist/src/core/trace/performance-test.js +0 -111
  544. package/dist/src/core/trace/performance-test.js.map +0 -1
  545. package/dist/src/core/trace/trace-demo.d.ts +0 -8
  546. package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
  547. package/dist/src/core/trace/trace-demo.js +0 -154
  548. package/dist/src/core/trace/trace-demo.js.map +0 -1
  549. package/dist/src/core/trace/trace-detector.d.ts +0 -108
  550. package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
  551. package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
  552. package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
  553. package/dist/src/core/trace/trace-detector.demo.js +0 -145
  554. package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
  555. package/dist/src/core/trace/trace-detector.js +0 -425
  556. package/dist/src/core/trace/trace-detector.js.map +0 -1
  557. package/dist/src/core/trace/trace-store.d.ts +0 -60
  558. package/dist/src/core/trace/trace-store.d.ts.map +0 -1
  559. package/dist/src/core/trace/trace-store.js +0 -323
  560. package/dist/src/core/trace/trace-store.js.map +0 -1
  561. package/dist/src/core/trace/types.d.ts +0 -81
  562. package/dist/src/core/trace/types.d.ts.map +0 -1
  563. package/dist/src/core/trace/types.js +0 -70
  564. package/dist/src/core/trace/types.js.map +0 -1
  565. package/dist/src/core/types.d.ts +0 -35
  566. package/dist/src/core/types.d.ts.map +0 -1
  567. package/dist/src/core/types.js +0 -2
  568. package/dist/src/core/types.js.map +0 -1
  569. package/dist/src/core/utils/update-checker.d.ts +0 -38
  570. package/dist/src/core/utils/update-checker.d.ts.map +0 -1
  571. package/dist/src/core/utils/update-checker.js +0 -213
  572. package/dist/src/core/utils/update-checker.js.map +0 -1
  573. package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
  574. package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
  575. package/dist/src/core/worktree/worktree-manager.js +0 -456
  576. package/dist/src/core/worktree/worktree-manager.js.map +0 -1
  577. package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
  578. package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
  579. package/dist/src/features/analytics/api/analytics-api.js +0 -289
  580. package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
  581. package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
  582. package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
  583. package/dist/src/features/analytics/core/analytics-service.js +0 -275
  584. package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
  585. package/dist/src/features/analytics/index.d.ts +0 -12
  586. package/dist/src/features/analytics/index.d.ts.map +0 -1
  587. package/dist/src/features/analytics/index.js +0 -11
  588. package/dist/src/features/analytics/index.js.map +0 -1
  589. package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
  590. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
  591. package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
  592. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
  593. package/dist/src/features/analytics/types/metrics.d.ts +0 -60
  594. package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
  595. package/dist/src/features/analytics/types/metrics.js +0 -2
  596. package/dist/src/features/analytics/types/metrics.js.map +0 -1
  597. package/dist/src/features/browser/browser-mcp.d.ts +0 -94
  598. package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
  599. package/dist/src/features/browser/browser-mcp.js +0 -459
  600. package/dist/src/features/browser/browser-mcp.js.map +0 -1
  601. package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
  602. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
  603. package/dist/src/features/tasks/pebbles-task-store.js +0 -572
  604. package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
  605. package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
  606. package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
  607. package/dist/src/features/tasks/task-aware-context.js +0 -412
  608. package/dist/src/features/tasks/task-aware-context.js.map +0 -1
  609. package/dist/src/index.d.ts +0 -21
  610. package/dist/src/index.d.ts.map +0 -1
  611. package/dist/src/index.js +0 -9
  612. package/dist/src/index.js.map +0 -1
  613. package/dist/src/integrations/linear/auth.d.ts +0 -99
  614. package/dist/src/integrations/linear/auth.d.ts.map +0 -1
  615. package/dist/src/integrations/linear/auth.js +0 -319
  616. package/dist/src/integrations/linear/auth.js.map +0 -1
  617. package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
  618. package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
  619. package/dist/src/integrations/linear/auto-sync.js +0 -268
  620. package/dist/src/integrations/linear/auto-sync.js.map +0 -1
  621. package/dist/src/integrations/linear/client.d.ts +0 -127
  622. package/dist/src/integrations/linear/client.d.ts.map +0 -1
  623. package/dist/src/integrations/linear/client.js +0 -446
  624. package/dist/src/integrations/linear/client.js.map +0 -1
  625. package/dist/src/integrations/linear/config.d.ts +0 -51
  626. package/dist/src/integrations/linear/config.d.ts.map +0 -1
  627. package/dist/src/integrations/linear/config.js +0 -103
  628. package/dist/src/integrations/linear/config.js.map +0 -1
  629. package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
  630. package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
  631. package/dist/src/integrations/linear/sync-manager.js +0 -235
  632. package/dist/src/integrations/linear/sync-manager.js.map +0 -1
  633. package/dist/src/integrations/linear/sync-service.d.ts +0 -46
  634. package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
  635. package/dist/src/integrations/linear/sync-service.js +0 -217
  636. package/dist/src/integrations/linear/sync-service.js.map +0 -1
  637. package/dist/src/integrations/linear/sync.d.ts +0 -125
  638. package/dist/src/integrations/linear/sync.d.ts.map +0 -1
  639. package/dist/src/integrations/linear/sync.js +0 -563
  640. package/dist/src/integrations/linear/sync.js.map +0 -1
  641. package/dist/src/integrations/linear/types.d.ts +0 -90
  642. package/dist/src/integrations/linear/types.d.ts.map +0 -1
  643. package/dist/src/integrations/linear/types.js +0 -2
  644. package/dist/src/integrations/linear/types.js.map +0 -1
  645. package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
  646. package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
  647. package/dist/src/integrations/linear/webhook-server.js +0 -190
  648. package/dist/src/integrations/linear/webhook-server.js.map +0 -1
  649. package/dist/src/integrations/linear/webhook.d.ts +0 -108
  650. package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
  651. package/dist/src/integrations/linear/webhook.js +0 -291
  652. package/dist/src/integrations/linear/webhook.js.map +0 -1
  653. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
  654. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
  655. package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
  656. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
  657. package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
  658. package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
  659. package/dist/src/integrations/mcp/handlers/index.js +0 -134
  660. package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
  661. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
  662. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
  663. package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
  664. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
  665. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
  666. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
  667. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
  668. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
  669. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
  670. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
  671. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
  672. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
  673. package/dist/src/integrations/mcp/index.d.ts +0 -13
  674. package/dist/src/integrations/mcp/index.d.ts.map +0 -1
  675. package/dist/src/integrations/mcp/index.js +0 -17
  676. package/dist/src/integrations/mcp/index.js.map +0 -1
  677. package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
  678. package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
  679. package/dist/src/integrations/mcp/refactored-server.js +0 -351
  680. package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
  681. package/dist/src/integrations/mcp/server.d.ts +0 -54
  682. package/dist/src/integrations/mcp/server.d.ts.map +0 -1
  683. package/dist/src/integrations/mcp/server.js +0 -1616
  684. package/dist/src/integrations/mcp/server.js.map +0 -1
  685. package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
  686. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
  687. package/dist/src/integrations/mcp/tool-definitions.js +0 -563
  688. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
  689. package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
  690. package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
  691. package/dist/src/integrations/mcp/trace-test.js +0 -54
  692. package/dist/src/integrations/mcp/trace-test.js.map +0 -1
  693. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
  694. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
  695. package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
  696. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
  697. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
  698. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
  699. package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
  700. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
  701. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
  702. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
  703. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
  704. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
  705. package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
  706. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
  707. package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
  708. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
  709. package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
  710. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
  711. package/dist/src/middleware/exponential-rate-limiter.js +0 -293
  712. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
  713. package/dist/src/models/user.model.d.ts +0 -62
  714. package/dist/src/models/user.model.d.ts.map +0 -1
  715. package/dist/src/models/user.model.js +0 -311
  716. package/dist/src/models/user.model.js.map +0 -1
  717. package/dist/src/servers/production/auth-middleware.d.ts +0 -76
  718. package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
  719. package/dist/src/servers/production/auth-middleware.js +0 -558
  720. package/dist/src/servers/production/auth-middleware.js.map +0 -1
  721. package/dist/src/servers/railway/index.d.ts +0 -7
  722. package/dist/src/servers/railway/index.d.ts.map +0 -1
  723. package/dist/src/servers/railway/index.js +0 -401
  724. package/dist/src/servers/railway/index.js.map +0 -1
  725. package/dist/src/services/config-service.d.ts +0 -44
  726. package/dist/src/services/config-service.d.ts.map +0 -1
  727. package/dist/src/services/config-service.js +0 -61
  728. package/dist/src/services/config-service.js.map +0 -1
  729. package/dist/src/services/context-service.d.ts +0 -17
  730. package/dist/src/services/context-service.d.ts.map +0 -1
  731. package/dist/src/services/context-service.js +0 -173
  732. package/dist/src/services/context-service.js.map +0 -1
  733. package/dist/src/types/task.d.ts +0 -27
  734. package/dist/src/types/task.d.ts.map +0 -1
  735. package/dist/src/types/task.js +0 -2
  736. package/dist/src/types/task.js.map +0 -1
  737. package/dist/src/utils/logger.d.ts +0 -13
  738. package/dist/src/utils/logger.d.ts.map +0 -1
  739. package/dist/src/utils/logger.js +0 -52
  740. package/dist/src/utils/logger.js.map +0 -1
  741. package/dist/src/validation/schemas.d.ts +0 -633
  742. package/dist/src/validation/schemas.d.ts.map +0 -1
  743. package/dist/src/validation/schemas.js +0 -347
  744. package/dist/src/validation/schemas.js.map +0 -1
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/mcp/__tests__/server.test.ts"],
4
- "sourcesContent": ["/**\n * Tests for StackMemory MCP Server - Local Instance\n */\n\nimport { describe, it, expect, beforeEach, afterEach, vi, Mock } from 'vitest';\nimport { Server } from '@modelcontextprotocol/sdk/server/index.js';\nimport Database from 'better-sqlite3';\nimport LocalStackMemoryMCP from '../server.js';\nimport { join } from 'path';\nimport { mkdtempSync, rmSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { tmpdir } from 'os';\n\n// Create a mock server reference that can be updated per test\nlet mockServerInstance: any = null;\n\n// Mock the MCP SDK - use a proper constructor function\nvi.mock('@modelcontextprotocol/sdk/server/index.js', () => {\n const MockServer = vi.fn().mockImplementation(function (this: any) {\n if (mockServerInstance) {\n Object.assign(this, mockServerInstance);\n } else {\n this.setRequestHandler = vi.fn();\n this.connect = vi.fn();\n }\n return this;\n });\n return { Server: MockServer };\n});\n\nvi.mock('@modelcontextprotocol/sdk/server/stdio.js', () => ({\n StdioServerTransport: vi.fn(),\n}));\n\n// Mock child_process\nvi.mock('child_process', () => ({\n execSync: vi.fn(() => Buffer.from('mocked git output')),\n}));\n\n// Mock browser MCP integration\nvi.mock('../../features/browser/browser-mcp.js', () => ({\n BrowserMCPIntegration: vi.fn().mockImplementation(() => ({\n initialize: vi.fn().mockResolvedValue(undefined),\n })),\n}));\n\n// Mock Linear imports with dynamic imports\nvi.mock('../../integrations/linear/auth.js', async () => {\n const actual = await vi.importActual('../../integrations/linear/auth.js');\n return {\n ...actual,\n LinearAuthManager: vi.fn().mockImplementation(() => ({\n loadTokens: vi.fn(),\n isConfigured: vi.fn(() => false),\n })),\n };\n});\n\nvi.mock('../../integrations/linear/client.js', async () => {\n const actual = await vi.importActual('../../integrations/linear/client.js');\n return {\n ...actual,\n LinearClient: vi.fn().mockImplementation(() => ({\n getIssue: vi.fn(),\n findIssueByIdentifier: vi.fn(),\n updateIssue: vi.fn(),\n getTeam: vi.fn(),\n getWorkflowStates: vi.fn(),\n getViewer: vi.fn(),\n getIssues: vi.fn(),\n })),\n };\n});\n\nvi.mock('../../integrations/linear/sync.js', async () => {\n const actual = await vi.importActual('../../integrations/linear/sync.js');\n return {\n ...actual,\n LinearSyncEngine: vi.fn().mockImplementation(() => ({\n sync: vi.fn(),\n })),\n DEFAULT_SYNC_CONFIG: {\n enabled: true,\n direction: 'bidirectional',\n conflictResolution: 'newest_wins',\n },\n };\n});\n\ndescribe('LocalStackMemoryMCP', () => {\n let tempDir: string;\n let mcpServer: any;\n let mockServer: any;\n let originalCwd: string;\n let originalArgv: string[];\n\n beforeEach(() => {\n // Setup temp directory\n tempDir = mkdtempSync(join(tmpdir(), 'stackmemory-mcp-test-'));\n originalCwd = process.cwd();\n originalArgv = [...process.argv];\n\n // Create .git directory to simulate git repo\n const gitDir = join(tempDir, '.git');\n mkdirSync(gitDir, { recursive: true });\n writeFileSync(\n join(gitDir, 'config'),\n '[core]\\n\\trepositoryformatversion = 0'\n );\n\n // Create package.json\n writeFileSync(\n join(tempDir, 'package.json'),\n JSON.stringify({\n name: 'test-project',\n version: '1.0.0',\n })\n );\n\n // Mock process.cwd() to return our temp directory\n vi.spyOn(process, 'cwd').mockReturnValue(tempDir);\n\n // Setup mock server - update the module-level reference\n mockServer = {\n setRequestHandler: vi.fn(),\n connect: vi.fn(),\n };\n mockServerInstance = mockServer;\n });\n\n afterEach(() => {\n if (mcpServer) {\n // Cleanup if needed\n }\n\n // Restore original process state\n vi.spyOn(process, 'cwd').mockRestore();\n process.argv = originalArgv;\n\n // Cleanup temp directory\n if (tempDir) {\n rmSync(tempDir, { recursive: true, force: true });\n }\n\n vi.clearAllMocks();\n });\n\n describe('Initialization', () => {\n it('should initialize server with correct project detection', () => {\n mcpServer = new LocalStackMemoryMCP();\n\n expect(Server).toHaveBeenCalledWith(\n {\n name: 'stackmemory-local',\n version: '0.1.0',\n },\n {\n capabilities: {\n tools: {},\n },\n }\n );\n });\n\n it('should create .stackmemory directory if it does not exist', () => {\n mcpServer = new LocalStackMemoryMCP();\n\n const stackmemoryDir = join(tempDir, '.stackmemory');\n expect(existsSync(stackmemoryDir)).toBe(true);\n });\n\n it('should initialize database and frame manager', () => {\n mcpServer = new LocalStackMemoryMCP();\n\n const dbPath = join(tempDir, '.stackmemory', 'context.db');\n expect(existsSync(dbPath)).toBe(true);\n });\n\n it('should handle missing .git directory gracefully', () => {\n // Remove .git directory\n rmSync(join(tempDir, '.git'), { recursive: true });\n\n // Should still work, using current directory as project root\n expect(() => {\n mcpServer = new LocalStackMemoryMCP();\n }).not.toThrow();\n });\n\n it('should setup tool handlers correctly', () => {\n mockServer.setRequestHandler.mockClear();\n mcpServer = new LocalStackMemoryMCP();\n\n // Should have called setRequestHandler at least twice (tools/list and tools/call)\n // BrowserMCP also adds handlers, so we check for at least 2\n expect(\n mockServer.setRequestHandler.mock.calls.length\n ).toBeGreaterThanOrEqual(2);\n\n // Check for tools/list handler\n const toolsListCall = mockServer.setRequestHandler.mock.calls.find(\n (call: any) => {\n try {\n return (\n call[0].parse({ method: 'tools/list' }).method === 'tools/list'\n );\n } catch {\n return false;\n }\n }\n );\n expect(toolsListCall).toBeDefined();\n\n // Check for tools/call handler\n const toolsCallCall = mockServer.setRequestHandler.mock.calls.find(\n (call: any) => {\n try {\n return (\n call[0].parse({\n method: 'tools/call',\n params: { name: 'test', arguments: {} },\n }).method === 'tools/call'\n );\n } catch {\n return false;\n }\n }\n );\n expect(toolsCallCall).toBeDefined();\n });\n });\n\n describe('Tool Listing', () => {\n beforeEach(() => {\n mcpServer = new LocalStackMemoryMCP();\n });\n\n it('should list all available tools', async () => {\n const toolsListHandler = mockServer.setRequestHandler.mock.calls[0][1];\n\n const result = await toolsListHandler({ method: 'tools/list' });\n\n expect(result.tools).toBeDefined();\n expect(Array.isArray(result.tools)).toBe(true);\n expect(result.tools.length).toBeGreaterThan(0);\n\n // Check for essential tools\n const toolNames = result.tools.map((tool: any) => tool.name);\n expect(toolNames).toContain('get_context');\n expect(toolNames).toContain('add_decision');\n expect(toolNames).toContain('start_frame');\n expect(toolNames).toContain('close_frame');\n expect(toolNames).toContain('add_anchor');\n expect(toolNames).toContain('get_hot_stack');\n expect(toolNames).toContain('create_task');\n expect(toolNames).toContain('update_task_status');\n expect(toolNames).toContain('get_active_tasks');\n });\n\n it('should include Linear integration tools', async () => {\n const toolsListHandler = mockServer.setRequestHandler.mock.calls[0][1];\n\n const result = await toolsListHandler({ method: 'tools/list' });\n\n const toolNames = result.tools.map((tool: any) => tool.name);\n expect(toolNames).toContain('linear_sync');\n expect(toolNames).toContain('linear_update_task');\n expect(toolNames).toContain('linear_get_tasks');\n expect(toolNames).toContain('linear_status');\n });\n\n it('should include proper tool schemas', async () => {\n const toolsListHandler = mockServer.setRequestHandler.mock.calls[0][1];\n\n const result = await toolsListHandler({ method: 'tools/list' });\n\n const getContextTool = result.tools.find(\n (tool: any) => tool.name === 'get_context'\n );\n expect(getContextTool).toBeDefined();\n expect(getContextTool.description).toBeDefined();\n expect(getContextTool.inputSchema).toBeDefined();\n expect(getContextTool.inputSchema.type).toBe('object');\n expect(getContextTool.inputSchema.properties).toBeDefined();\n\n const startFrameTool = result.tools.find(\n (tool: any) => tool.name === 'start_frame'\n );\n expect(startFrameTool.inputSchema.required).toContain('name');\n expect(startFrameTool.inputSchema.required).toContain('type');\n });\n });\n\n describe('Tool Execution - Context Management', () => {\n let toolsCallHandler: any;\n\n beforeEach(() => {\n mockServer.setRequestHandler.mockClear();\n mcpServer = new LocalStackMemoryMCP();\n toolsCallHandler = mockServer.setRequestHandler.mock.calls[1][1];\n });\n\n it('should handle get_context tool', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_context',\n arguments: { query: 'test', limit: 5 },\n },\n });\n\n expect(result.content).toBeDefined();\n expect(Array.isArray(result.content)).toBe(true);\n expect(result.content[0].type).toBe('text');\n });\n\n it('should handle add_decision tool', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'add_decision',\n arguments: { content: 'Test decision', type: 'decision' },\n },\n });\n\n expect(result.content).toBeDefined();\n expect(result.content[0].text).toContain('Added decision');\n expect(result.content[0].text).toContain('Test decision');\n });\n\n it('should handle start_frame tool', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: {\n name: 'Test Frame',\n type: 'task',\n constraints: ['constraint1', 'constraint2'],\n },\n },\n });\n\n expect(result.content).toBeDefined();\n expect(result.content[0].text).toContain('Started task');\n expect(result.content[0].text).toContain('Test Frame');\n expect(result.content[0].text).toContain('Frame ID:');\n expect(result.content[0].text).toContain('Stack depth:');\n });\n\n it('should handle close_frame tool', async () => {\n // First start a frame\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Test Frame', type: 'task' },\n },\n });\n\n // Then close it\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'close_frame',\n arguments: {\n result: 'Completed successfully',\n outputs: { key: 'value' },\n },\n },\n });\n\n expect(result.content).toBeDefined();\n expect(result.content[0].text).toContain('Closed frame');\n expect(result.content[0].text).toContain('Completed successfully');\n });\n\n it('should handle close_frame with no active frame', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'close_frame',\n arguments: { result: 'Test' },\n },\n });\n\n expect(result.content[0].text).toContain('No active frame to close');\n });\n\n it('should handle add_anchor tool', async () => {\n // First start a frame\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Test Frame', type: 'task' },\n },\n });\n\n // Then add an anchor\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'add_anchor',\n arguments: {\n type: 'FACT',\n text: 'Important fact',\n priority: 9,\n },\n },\n });\n\n expect(result.content[0].text).toContain('Added FACT');\n expect(result.content[0].text).toContain('Important fact');\n expect(result.content[0].text).toContain('Anchor ID:');\n });\n\n it('should handle get_hot_stack tool', async () => {\n // First start some frames\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Root Frame', type: 'task' },\n },\n });\n\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Child Frame', type: 'subtask' },\n },\n });\n\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_hot_stack',\n arguments: { maxEvents: 10 },\n },\n });\n\n expect(result.content[0].text).toContain('Active Call Stack');\n expect(result.content[0].text).toContain('Root Frame');\n expect(result.content[0].text).toContain('Child Frame');\n expect(result.content[0].text).toContain('Total stack depth');\n });\n\n it('should handle get_hot_stack with no active frames', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_hot_stack',\n arguments: {},\n },\n });\n\n expect(result.content[0].text).toContain('No active frames');\n });\n });\n\n describe('Tool Execution - Task Management', () => {\n let toolsCallHandler: any;\n\n beforeEach(async () => {\n mockServer.setRequestHandler.mockClear();\n mcpServer = new LocalStackMemoryMCP();\n toolsCallHandler = mockServer.setRequestHandler.mock.calls[1][1];\n\n // Start a frame for task operations (await it!)\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Task Frame', type: 'task' },\n },\n });\n });\n\n it('should handle create_task tool', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: {\n title: 'Test Task',\n description: 'A test task',\n priority: 'high',\n estimatedEffort: 120,\n tags: ['test', 'urgent'],\n },\n },\n });\n\n expect(result.content[0].text).toContain('Created task');\n expect(result.content[0].text).toContain('Test Task');\n expect(result.content[0].text).toContain('ID:');\n expect(result.content[0].text).toContain('tasks.jsonl');\n });\n\n it('should handle create_task without active frame', async () => {\n // First ensure we wait for any pending frame creation from beforeEach\n await new Promise((resolve) => setTimeout(resolve, 10));\n\n // Close all frames first (may fail if frame wasn't created, that's ok)\n try {\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'close_frame',\n arguments: { result: 'closed' },\n },\n });\n } catch {\n // Ignore close errors\n }\n\n // Create a fresh server instance with no frames\n mockServer.setRequestHandler.mockClear();\n mcpServer = new LocalStackMemoryMCP();\n const freshToolsHandler = mockServer.setRequestHandler.mock.calls[1][1];\n\n const result = await freshToolsHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'No Frame Task' },\n },\n });\n\n expect(result.content[0].text).toContain('No active frame');\n });\n\n it('should handle update_task_status tool', async () => {\n // First create a task\n const createResult = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'Update Test Task' },\n },\n });\n\n // Extract task ID from response (simplified)\n const taskIdMatch = createResult.content[0].text.match(\n /ID: (tsk-[a-f0-9]{8})/\n );\n expect(taskIdMatch).toBeTruthy();\n const taskId = taskIdMatch[1];\n\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'update_task_status',\n arguments: {\n taskId,\n status: 'in_progress',\n reason: 'Starting work',\n },\n },\n });\n\n expect(result.content[0].text).toContain('Updated task');\n expect(result.content[0].text).toContain('in_progress');\n expect(result.content[0].text).toContain('Starting work');\n });\n\n it('should handle update_task_status with invalid task', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'update_task_status',\n arguments: {\n taskId: 'invalid-task-id',\n status: 'completed',\n },\n },\n });\n\n expect(result.content[0].text).toContain('Failed to update task');\n });\n\n it('should handle get_active_tasks tool', async () => {\n // Create some tasks\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'Active Task 1', priority: 'high' },\n },\n });\n\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'Active Task 2', priority: 'low' },\n },\n });\n\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_active_tasks',\n arguments: {},\n },\n });\n\n // The response uses \"**Tasks**\" not \"Active Tasks\"\n expect(result.content[0].text).toContain('Tasks');\n expect(result.content[0].text).toContain('Active Task 1');\n expect(result.content[0].text).toContain('Active Task 2');\n });\n\n it('should handle get_active_tasks with no tasks', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_active_tasks',\n arguments: {},\n },\n });\n\n expect(result.content[0].text).toContain('No active tasks');\n });\n\n it('should handle get_task_metrics tool', async () => {\n // Create some tasks with different statuses\n const taskId1 = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'Metrics Task 1' },\n },\n });\n\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_task_metrics',\n arguments: {},\n },\n });\n\n expect(result.content[0].text).toContain('Task Metrics');\n expect(result.content[0].text).toContain('Total Tasks');\n expect(result.content[0].text).toContain('Completion Rate');\n expect(result.content[0].text).toContain('By Status');\n expect(result.content[0].text).toContain('By Priority');\n });\n\n it('should handle add_task_dependency tool', async () => {\n // Create two tasks\n const task1Result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'Dependency Task' },\n },\n });\n\n const task2Result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'Dependent Task' },\n },\n });\n\n // Extract task IDs\n const task1Id = task1Result.content[0].text.match(\n /ID: (tsk-[a-f0-9]{8})/\n )[1];\n const task2Id = task2Result.content[0].text.match(\n /ID: (tsk-[a-f0-9]{8})/\n )[1];\n\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'add_task_dependency',\n arguments: {\n taskId: task2Id,\n dependsOnId: task1Id,\n },\n },\n });\n\n expect(result.content[0].text).toContain('Added dependency');\n expect(result.content[0].text).toContain(task2Id);\n expect(result.content[0].text).toContain(task1Id);\n });\n });\n\n describe('Tool Execution - Linear Integration', () => {\n let toolsCallHandler: any;\n\n beforeEach(() => {\n mcpServer = new LocalStackMemoryMCP();\n toolsCallHandler = mockServer.setRequestHandler.mock.calls[1][1];\n });\n\n it('should handle linear_status tool when not configured', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'linear_status',\n arguments: {},\n },\n });\n\n expect(result.content[0].text).toContain(\n 'Linear integration not configured'\n );\n expect(result.content[0].text).toContain('stackmemory linear setup');\n });\n\n it('should handle linear_sync tool when not authenticated', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'linear_sync',\n arguments: { direction: 'bidirectional' },\n },\n });\n\n expect(result.content[0].text).toContain('Linear not authenticated');\n });\n\n it('should handle linear_update_task when not authenticated', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'linear_update_task',\n arguments: { issueId: 'STA-123', status: 'done' },\n },\n });\n\n expect(result.content[0].text).toContain('Linear not authenticated');\n });\n\n it('should handle linear_get_tasks when not authenticated', async () => {\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'linear_get_tasks',\n arguments: { status: 'todo', limit: 10 },\n },\n });\n\n expect(result.content[0].text).toContain('Linear not authenticated');\n });\n\n it('should handle linear integration errors gracefully', async () => {\n // This test verifies error handling when Linear is not configured\n // The mock always returns isConfigured: false, so we get the expected error message\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'linear_status',\n arguments: {},\n },\n });\n\n // Verify the error response is properly formatted\n expect(result.content[0].text).toContain('Linear');\n });\n });\n\n describe('Error Handling', () => {\n let toolsCallHandler: any;\n\n beforeEach(() => {\n mcpServer = new LocalStackMemoryMCP();\n toolsCallHandler = mockServer.setRequestHandler.mock.calls[1][1];\n });\n\n it('should handle unknown tool calls', async () => {\n await expect(\n toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'unknown_tool',\n arguments: {},\n },\n })\n ).rejects.toThrow('Unknown tool: unknown_tool');\n });\n\n it('should handle malformed tool arguments gracefully', async () => {\n // Start a frame first to avoid \"no active frame\" error\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Test Frame', type: 'task' },\n },\n });\n\n // Now test with incomplete arguments for update_task_status\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'update_task_status',\n arguments: { taskId: 'non-existent-task', status: 'in_progress' },\n },\n });\n\n // Should handle gracefully - returns error message about task not found\n expect(result).toBeDefined();\n });\n\n it('should maintain error context in responses', async () => {\n // First start a frame so we can add an anchor\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Test Frame', type: 'task' },\n },\n });\n\n const result = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'add_anchor',\n arguments: {\n type: 'FACT',\n text: 'Test fact',\n },\n },\n });\n\n // Should succeed now that we have an active frame\n expect(result).toBeDefined();\n expect(result.content[0].text).toContain('Added');\n });\n });\n\n describe('Project Detection and Context Loading', () => {\n it('should detect git repository information', () => {\n // The server is created with mocked child_process.execSync\n mcpServer = new LocalStackMemoryMCP();\n\n // Server should create successfully regardless of git output\n expect(mcpServer).toBeDefined();\n });\n\n it('should handle missing git repository gracefully', () => {\n // The mock is already set up to return generic output\n // This test verifies the server doesn't crash without git\n expect(() => {\n mcpServer = new LocalStackMemoryMCP();\n }).not.toThrow();\n });\n\n it('should load README.md if present', () => {\n const readmePath = join(tempDir, 'README.md');\n writeFileSync(\n readmePath,\n '# Test Project\\n\\nThis is a test project for MCP server testing.'\n );\n\n mcpServer = new LocalStackMemoryMCP();\n\n // Should have loaded README content into context\n expect(existsSync(readmePath)).toBe(true);\n });\n\n it('should handle missing README.md gracefully', () => {\n // Ensure no README exists\n const readmePath = join(tempDir, 'README.md');\n if (existsSync(readmePath)) {\n rmSync(readmePath);\n }\n\n expect(() => {\n mcpServer = new LocalStackMemoryMCP();\n }).not.toThrow();\n });\n });\n\n describe('Database Schema and Persistence', () => {\n beforeEach(() => {\n mcpServer = new LocalStackMemoryMCP();\n });\n\n it('should create required database tables', () => {\n const dbPath = join(tempDir, '.stackmemory', 'context.db');\n const db = new Database(dbPath);\n\n const tables = db\n .prepare(\n `\n SELECT name FROM sqlite_master \n WHERE type='table' AND name IN ('contexts', 'frames', 'attention_log')\n `\n )\n .all();\n\n expect(tables).toHaveLength(3);\n db.close();\n });\n\n it('should handle database initialization errors gracefully', () => {\n // Creating the MCP server with a valid database should work\n // We can't easily mock Database after it's been imported\n // So this test just verifies normal creation works\n expect(() => {\n mcpServer = new LocalStackMemoryMCP();\n }).not.toThrow();\n });\n });\n\n describe('Server Lifecycle', () => {\n it('should start server successfully', async () => {\n mcpServer = new LocalStackMemoryMCP();\n\n const mockTransport = { connect: vi.fn() };\n vi.doMock('@modelcontextprotocol/sdk/server/stdio.js', () => ({\n StdioServerTransport: vi.fn(() => mockTransport),\n }));\n\n mockServer.connect.mockResolvedValue(undefined);\n\n await expect(mcpServer.start()).resolves.not.toThrow();\n expect(mockServer.connect).toHaveBeenCalled();\n });\n\n it('should handle server start errors', async () => {\n mcpServer = new LocalStackMemoryMCP();\n\n mockServer.connect.mockRejectedValue(new Error('Connection failed'));\n\n await expect(mcpServer.start()).rejects.toThrow('Connection failed');\n });\n });\n\n describe('Integration with Framework Components', () => {\n let toolsCallHandler: any;\n\n beforeEach(() => {\n // Reset mock calls before creating a new instance\n mockServer.setRequestHandler.mockClear();\n mcpServer = new LocalStackMemoryMCP();\n // Now calls[1][1] is the tools/call handler for THIS instance\n toolsCallHandler = mockServer.setRequestHandler.mock.calls[1][1];\n });\n\n it('should integrate frame manager operations', async () => {\n // Test frame lifecycle\n const startResult = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Integration Test', type: 'task' },\n },\n });\n\n expect(startResult.content[0].text).toContain('Started');\n\n const hotStackResult = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_hot_stack',\n arguments: {},\n },\n });\n\n expect(hotStackResult.content[0].text).toContain('Integration Test');\n\n const closeResult = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'close_frame',\n arguments: { result: 'Integration complete' },\n },\n });\n\n expect(closeResult.content[0].text).toContain('Closed frame');\n });\n\n it('should integrate task store operations', async () => {\n // Start frame for task operations\n await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'start_frame',\n arguments: { name: 'Task Integration', type: 'task' },\n },\n });\n\n // Create task\n const createResult = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'create_task',\n arguments: { title: 'Integration Task' },\n },\n });\n\n expect(createResult.content[0].text).toContain('Created task');\n\n // Get active tasks\n const activeResult = await toolsCallHandler({\n method: 'tools/call',\n params: {\n name: 'get_active_tasks',\n arguments: {},\n },\n });\n\n expect(activeResult.content[0].text).toContain('Integration Task');\n });\n });\n});\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Run performance benchmarks
4
- */
5
- declare function runBenchmarks(): Promise<void>;
6
- export { runBenchmarks };
7
- //# sourceMappingURL=benchmark-performance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark-performance.d.ts","sourceRoot":"","sources":["../../scripts/benchmark-performance.ts"],"names":[],"mappings":";AACA;;GAEG;AAQH,iBAAe,aAAa,kBAsC3B;AAOD,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,44 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Run performance benchmarks
4
- */
5
- import Database from 'better-sqlite3';
6
- import { join } from 'path';
7
- import { existsSync } from 'fs';
8
- import { PerformanceBenchmark } from '../src/core/performance/performance-benchmark.js';
9
- import { logger } from '../src/core/monitoring/logger.js';
10
- async function runBenchmarks() {
11
- const projectRoot = process.cwd();
12
- const dbPath = join(projectRoot, '.stackmemory', 'context.db');
13
- if (!existsSync(dbPath)) {
14
- console.error('āŒ StackMemory not initialized. Run "stackmemory init" first.');
15
- process.exit(1);
16
- }
17
- const db = new Database(dbPath, { readonly: false });
18
- const projectId = 'benchmark-test';
19
- console.log('šŸš€ Starting Performance Benchmarks...\n');
20
- const benchmark = new PerformanceBenchmark();
21
- try {
22
- const suite = await benchmark.runFullSuite(projectRoot, db, projectId);
23
- console.log('\nāœ… Benchmarks completed successfully!');
24
- // Summary
25
- if (suite.averageImprovement > 0) {
26
- console.log(`\nšŸŽ‰ Overall performance improved by ${suite.averageImprovement.toFixed(1)}%`);
27
- }
28
- process.exit(0);
29
- }
30
- catch (error) {
31
- console.error('\nāŒ Benchmark failed:', error);
32
- logger.error('Benchmark error', error);
33
- process.exit(1);
34
- }
35
- finally {
36
- db.close();
37
- }
38
- }
39
- // Run if called directly
40
- if (import.meta.url === `file://${process.argv[1]}`) {
41
- runBenchmarks().catch(console.error);
42
- }
43
- export { runBenchmarks };
44
- //# sourceMappingURL=benchmark-performance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark-performance.js","sourceRoot":"","sources":["../../scripts/benchmark-performance.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AAE1D,KAAK,UAAU,aAAa;IAC1B,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IAE/D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,KAAK,CACX,8DAA8D,CAC/D,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,gBAAgB,CAAC;IAEnC,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAEvD,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,WAAW,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC;QAEvE,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;QAEtD,UAAU;QACV,IAAI,KAAK,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CACT,wCAAwC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAC/E,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAK,CAAC,CAAC;QAC9C,MAAM,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAc,CAAC,CAAC;QAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED,yBAAyB;AACzB,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,aAAa,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Script to cancel duplicate Linear tasks
4
- * Uses the actual Linear API to find and cancel duplicates
5
- */
6
- export {};
7
- //# sourceMappingURL=cancel-duplicate-tasks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cancel-duplicate-tasks.d.ts","sourceRoot":"","sources":["../../scripts/cancel-duplicate-tasks.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -1,172 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Script to cancel duplicate Linear tasks
4
- * Uses the actual Linear API to find and cancel duplicates
5
- */
6
- import { readFileSync } from 'fs';
7
- import { join } from 'path';
8
- // Define patterns to identify duplicate tasks
9
- const duplicatePatterns = [
10
- { pattern: 'Linear API Integration', keepFirst: true },
11
- { pattern: 'Performance Optimization', keepFirst: true },
12
- { pattern: 'Security Audit', keepFirst: true },
13
- { pattern: '[HIGH] Implement Proper Error Handling', keepFirst: true },
14
- { pattern: '[HIGH] Implement Comprehensive Testing Suite', keepFirst: true },
15
- ];
16
- async function cancelDuplicateTasks(dryRun = true) {
17
- const mode = dryRun ? 'šŸ” DRY RUN MODE' : '⚔ LIVE MODE';
18
- console.log(`\n${mode} - Cancel duplicate Linear tasks\n`);
19
- console.log('='.repeat(60));
20
- // Load Linear tokens
21
- const tokensPath = join(process.cwd(), '.stackmemory', 'linear-tokens.json');
22
- let accessToken;
23
- try {
24
- const tokensData = readFileSync(tokensPath, 'utf8');
25
- const tokens = JSON.parse(tokensData);
26
- accessToken = tokens.accessToken;
27
- console.log('āœ… Loaded Linear authentication tokens\n');
28
- }
29
- catch {
30
- console.error('āŒ Failed to load Linear tokens. Please run: stackmemory linear setup');
31
- process.exit(1);
32
- }
33
- // GraphQL helper
34
- const linearApiUrl = 'https://api.linear.app/graphql';
35
- async function graphqlRequest(query, variables = {}) {
36
- const response = await fetch(linearApiUrl, {
37
- method: 'POST',
38
- headers: {
39
- Authorization: `Bearer ${accessToken}`,
40
- 'Content-Type': 'application/json',
41
- },
42
- body: JSON.stringify({ query, variables }),
43
- });
44
- if (!response.ok) {
45
- throw new Error(`Linear API error: ${response.status} ${response.statusText}`);
46
- }
47
- const result = (await response.json());
48
- if (result.errors) {
49
- throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
50
- }
51
- return result.data;
52
- }
53
- // First, get all issues
54
- console.log('Fetching all issues...\n');
55
- const issuesQuery = `
56
- query {
57
- issues(first: 250, filter: { state: { type: { nin: ["completed", "canceled"] } } }) {
58
- nodes {
59
- id
60
- identifier
61
- title
62
- description
63
- createdAt
64
- state {
65
- id
66
- name
67
- type
68
- }
69
- team {
70
- id
71
- key
72
- states {
73
- nodes {
74
- id
75
- name
76
- type
77
- }
78
- }
79
- }
80
- }
81
- }
82
- }
83
- `;
84
- const issuesData = (await graphqlRequest(issuesQuery));
85
- const allIssues = issuesData.issues.nodes;
86
- console.log(`Found ${allIssues.length} active issues\n`);
87
- // Get canceled state from the first issue's team
88
- const canceledState = allIssues[0]?.team?.states?.nodes?.find((s) => s.type === 'canceled');
89
- if (!canceledState) {
90
- console.error('āŒ No canceled state found in workflow');
91
- process.exit(1);
92
- }
93
- // Group issues by pattern
94
- const groupedIssues = new Map();
95
- for (const pattern of duplicatePatterns) {
96
- const matches = allIssues.filter((issue) => issue.title.includes(pattern.pattern));
97
- if (matches.length > 1) {
98
- // Sort by creation date to keep the oldest
99
- matches.sort((a, b) => new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime());
100
- groupedIssues.set(pattern.pattern, matches);
101
- }
102
- }
103
- // Process each group
104
- let totalCanceled = 0;
105
- let totalKept = 0;
106
- for (const [pattern, issues] of groupedIssues.entries()) {
107
- console.log(`\nšŸ“‹ Pattern: "${pattern}"`);
108
- console.log(` Found ${issues.length} matching issues:`);
109
- const [primary, ...duplicates] = issues;
110
- console.log(` āœ… Keep: ${primary.identifier} - ${primary.title}`);
111
- totalKept++;
112
- for (const duplicate of duplicates) {
113
- console.log(` ${dryRun ? 'šŸ”' : 'āŒ'} Cancel: ${duplicate.identifier} - ${duplicate.title}`);
114
- if (!dryRun) {
115
- try {
116
- const cancelMutation = `
117
- mutation CancelIssue($id: String!, $stateId: String!) {
118
- issueUpdate(
119
- id: $id,
120
- input: {
121
- stateId: $stateId,
122
- description: "Duplicate task - kept ${primary.identifier}"
123
- }
124
- ) {
125
- success
126
- issue {
127
- identifier
128
- state {
129
- name
130
- }
131
- }
132
- }
133
- }
134
- `;
135
- await graphqlRequest(cancelMutation, {
136
- id: duplicate.id,
137
- stateId: canceledState.id,
138
- });
139
- console.log(` āœ… Successfully canceled ${duplicate.identifier}`);
140
- totalCanceled++;
141
- }
142
- catch (error) {
143
- const errorMessage = error instanceof Error ? error.message : String(error);
144
- console.log(` āŒ Failed to cancel ${duplicate.identifier}: ${errorMessage}`);
145
- }
146
- }
147
- else {
148
- totalCanceled++;
149
- }
150
- }
151
- }
152
- // Summary
153
- console.log('\n' + '='.repeat(60));
154
- console.log(`\n✨ ${dryRun ? 'DRY RUN' : 'CLEANUP'} COMPLETE!\n`);
155
- console.log('šŸ“Š Summary:');
156
- console.log(` Duplicate groups found: ${groupedIssues.size}`);
157
- console.log(` Tasks to keep: ${totalKept}`);
158
- console.log(` Tasks ${dryRun ? 'to cancel' : 'canceled'}: ${totalCanceled}`);
159
- console.log(` Total active tasks: ${allIssues.length}`);
160
- console.log(` Tasks after cleanup: ${allIssues.length - totalCanceled}`);
161
- if (dryRun) {
162
- console.log('\nšŸ’” To execute these changes, run with --execute flag');
163
- }
164
- }
165
- // Parse command line arguments
166
- const isDryRun = !process.argv.includes('--execute');
167
- // Run the cleanup
168
- cancelDuplicateTasks(isDryRun).catch((error) => {
169
- console.error('āŒ Fatal error:', error);
170
- process.exit(1);
171
- });
172
- //# sourceMappingURL=cancel-duplicate-tasks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cancel-duplicate-tasks.js","sourceRoot":"","sources":["../../scripts/cancel-duplicate-tasks.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- /**
3
- * Cleanup duplicate tasks from local JSONL storage
4
- *
5
- * This script:
6
- * 1. Identifies duplicate tasks by title/Linear ID
7
- * 2. Keeps the most recent version of each task
8
- * 3. Removes redundant Linear-imported duplicates
9
- * 4. Cleans up orphaned task mappings
10
- */
11
- export {};
12
- //# sourceMappingURL=cleanup-duplicate-tasks.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanup-duplicate-tasks.d.ts","sourceRoot":"","sources":["../../scripts/cleanup-duplicate-tasks.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
@@ -1,215 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- /**
3
- * Cleanup duplicate tasks from local JSONL storage
4
- *
5
- * This script:
6
- * 1. Identifies duplicate tasks by title/Linear ID
7
- * 2. Keeps the most recent version of each task
8
- * 3. Removes redundant Linear-imported duplicates
9
- * 4. Cleans up orphaned task mappings
10
- */
11
- import { readFileSync, writeFileSync, existsSync } from 'fs';
12
- import { join } from 'path';
13
- const projectRoot = process.cwd();
14
- const tasksPath = join(projectRoot, '.stackmemory', 'tasks.jsonl');
15
- const mappingsPath = join(projectRoot, '.stackmemory', 'linear-mappings.json');
16
- function loadTasks() {
17
- if (!existsSync(tasksPath)) {
18
- console.log('No tasks file found');
19
- return [];
20
- }
21
- const content = readFileSync(tasksPath, 'utf8');
22
- const lines = content
23
- .trim()
24
- .split('\n')
25
- .filter((l) => l.trim());
26
- return lines
27
- .map((line) => {
28
- try {
29
- return JSON.parse(line);
30
- }
31
- catch {
32
- console.warn('Failed to parse line:', line.substring(0, 50));
33
- return null;
34
- }
35
- })
36
- .filter((t) => t !== null);
37
- }
38
- function loadMappings() {
39
- if (!existsSync(mappingsPath)) {
40
- return [];
41
- }
42
- try {
43
- return JSON.parse(readFileSync(mappingsPath, 'utf8'));
44
- }
45
- catch {
46
- return [];
47
- }
48
- }
49
- function extractLinearId(title) {
50
- // Match patterns like [STA-123], [ENG-123], etc.
51
- const match = title.match(/\[([A-Z]+-\d+)\]/);
52
- return match ? match[1] : null;
53
- }
54
- function normalizeTitle(title) {
55
- // Remove Linear ID prefix for comparison
56
- return title
57
- .replace(/^\[[A-Z]+-\d+\]\s*/, '')
58
- .trim()
59
- .toLowerCase();
60
- }
61
- function cleanupTasks() {
62
- console.log('🧹 Starting task cleanup...\n');
63
- const events = loadTasks();
64
- const mappings = loadMappings();
65
- console.log(`šŸ“Š Found ${events.length} task events`);
66
- console.log(`šŸ“Š Found ${mappings.length} Linear mappings\n`);
67
- // First, deduplicate events:
68
- // 1. Remove exact duplicates (same id + type + timestamp)
69
- // 2. Keep only one task_create per task ID (the earliest one)
70
- const seenExact = new Set();
71
- const seenTaskCreate = new Map(); // id -> earliest create event
72
- const dedupedEvents = [];
73
- let exactDupes = 0;
74
- let createDupes = 0;
75
- // First pass: identify the earliest task_create for each task
76
- for (const event of events) {
77
- if (event.type === 'task_create') {
78
- const existing = seenTaskCreate.get(event.id);
79
- if (!existing || (event.timestamp || 0) < (existing.timestamp || 0)) {
80
- seenTaskCreate.set(event.id, event);
81
- }
82
- }
83
- }
84
- // Second pass: build deduped list
85
- for (const event of events) {
86
- const exactKey = `${event.id}:${event.type}:${event.timestamp}`;
87
- // Skip exact duplicates
88
- if (seenExact.has(exactKey)) {
89
- exactDupes++;
90
- continue;
91
- }
92
- seenExact.add(exactKey);
93
- // For task_create, only keep the earliest one per ID
94
- if (event.type === 'task_create') {
95
- const earliest = seenTaskCreate.get(event.id);
96
- if (earliest &&
97
- earliest !== event &&
98
- earliest.timestamp !== event.timestamp) {
99
- createDupes++;
100
- continue;
101
- }
102
- }
103
- dedupedEvents.push(event);
104
- }
105
- if (exactDupes > 0) {
106
- console.log(`šŸ”„ Removed ${exactDupes} exact duplicate events`);
107
- }
108
- if (createDupes > 0) {
109
- console.log(`šŸ”„ Removed ${createDupes} duplicate task_create events\n`);
110
- }
111
- // Group events by task ID
112
- const taskById = new Map();
113
- for (const event of dedupedEvents) {
114
- const existing = taskById.get(event.id) || [];
115
- existing.push(event);
116
- taskById.set(event.id, existing);
117
- }
118
- // Find the latest state for each task
119
- const latestTaskState = new Map();
120
- for (const [id, taskEvents] of taskById) {
121
- // Get the latest event (highest timestamp)
122
- const latest = taskEvents.reduce((a, b) => (a.timestamp || 0) > (b.timestamp || 0) ? a : b);
123
- latestTaskState.set(id, latest);
124
- }
125
- console.log(`šŸ“Š Found ${latestTaskState.size} unique tasks\n`);
126
- // Identify duplicates by normalized title
127
- const tasksByNormalizedTitle = new Map();
128
- for (const task of latestTaskState.values()) {
129
- const normalized = normalizeTitle(task.title);
130
- const existing = tasksByNormalizedTitle.get(normalized) || [];
131
- existing.push(task);
132
- tasksByNormalizedTitle.set(normalized, existing);
133
- }
134
- // Find duplicate groups
135
- const duplicateGroups = [];
136
- for (const [, tasks] of tasksByNormalizedTitle) {
137
- if (tasks.length > 1) {
138
- duplicateGroups.push(tasks);
139
- }
140
- }
141
- console.log(`šŸ” Found ${duplicateGroups.length} groups of duplicate tasks:\n`);
142
- // Determine which tasks to keep
143
- const tasksToRemove = new Set();
144
- for (const group of duplicateGroups) {
145
- // Sort by: prefer non-linear-import frame, then by timestamp (newest first)
146
- group.sort((a, b) => {
147
- const aIsImport = a.frame_id === 'linear-import';
148
- const bIsImport = b.frame_id === 'linear-import';
149
- if (aIsImport !== bIsImport) {
150
- return aIsImport ? 1 : -1; // Prefer non-import
151
- }
152
- return (b.timestamp || 0) - (a.timestamp || 0); // Prefer newer
153
- });
154
- // Keep the first (best) task, remove the rest
155
- const keeper = group[0];
156
- console.log(` āœ“ Keeping: ${keeper.title.substring(0, 60)}...`);
157
- console.log(` ID: ${keeper.id}, Frame: ${keeper.frame_id}`);
158
- for (let i = 1; i < group.length; i++) {
159
- const dupe = group[i];
160
- tasksToRemove.add(dupe.id);
161
- console.log(` āœ— Removing: ${dupe.id} (${dupe.frame_id})`);
162
- }
163
- console.log('');
164
- }
165
- // Also identify Linear-imported tasks that duplicate each other
166
- const linearIdCounts = new Map();
167
- for (const task of latestTaskState.values()) {
168
- const linearId = extractLinearId(task.title);
169
- if (linearId) {
170
- const existing = linearIdCounts.get(linearId) || [];
171
- existing.push(task);
172
- linearIdCounts.set(linearId, existing);
173
- }
174
- }
175
- // Find tasks with same Linear ID
176
- for (const [linearId, tasks] of linearIdCounts) {
177
- if (tasks.length > 1) {
178
- // Sort by timestamp (newest first)
179
- tasks.sort((a, b) => (b.timestamp || 0) - (a.timestamp || 0));
180
- console.log(`šŸ”— Duplicate Linear ID ${linearId}:`);
181
- console.log(` āœ“ Keeping: ${tasks[0].id}`);
182
- for (let i = 1; i < tasks.length; i++) {
183
- tasksToRemove.add(tasks[i].id);
184
- console.log(` āœ— Removing: ${tasks[i].id}`);
185
- }
186
- console.log('');
187
- }
188
- }
189
- // Filter out removed tasks (use dedupedEvents to include exact-dupe removal)
190
- const cleanedEvents = dedupedEvents.filter((e) => !tasksToRemove.has(e.id));
191
- // Write cleaned tasks
192
- const cleanedContent = cleanedEvents.map((e) => JSON.stringify(e)).join('\n') + '\n';
193
- // Backup original
194
- const backupPath = tasksPath + '.backup.' + Date.now();
195
- writeFileSync(backupPath, readFileSync(tasksPath));
196
- console.log(`šŸ’¾ Backed up original to: ${backupPath}\n`);
197
- // Write cleaned file
198
- writeFileSync(tasksPath, cleanedContent);
199
- // Clean up orphaned mappings
200
- const validTaskIds = new Set(cleanedEvents.map((e) => e.id));
201
- const cleanedMappings = mappings.filter((m) => validTaskIds.has(m.stackmemoryId));
202
- if (cleanedMappings.length < mappings.length) {
203
- writeFileSync(mappingsPath, JSON.stringify(cleanedMappings, null, 2));
204
- console.log(`šŸ—‘ļø Removed ${mappings.length - cleanedMappings.length} orphaned mappings`);
205
- }
206
- console.log('\nāœ… Cleanup complete!');
207
- console.log(` Original events: ${events.length}`);
208
- console.log(` After exact dedup: ${dedupedEvents.length}`);
209
- console.log(` Final cleaned: ${cleanedEvents.length}`);
210
- console.log(` Total removed: ${events.length - cleanedEvents.length} events`);
211
- console.log(` Unique tasks removed: ${tasksToRemove.size}`);
212
- }
213
- // Run cleanup
214
- cleanupTasks();
215
- //# sourceMappingURL=cleanup-duplicate-tasks.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanup-duplicate-tasks.js","sourceRoot":"","sources":["../../scripts/cleanup-duplicate-tasks.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- #!/usr/bin/env tsx
2
- /**
3
- * Initialize StackMemory in the current project
4
- */
5
- export {};
6
- //# sourceMappingURL=initialize.d.ts.map