@stackmemoryai/stackmemory 0.3.0 → 0.3.3

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 (736) hide show
  1. package/README.md +52 -272
  2. package/dist/cli/codex-sm.js +48 -19
  3. package/dist/cli/codex-sm.js.map +2 -2
  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/dashboard.js +178 -0
  9. package/dist/cli/commands/dashboard.js.map +7 -0
  10. package/dist/cli/commands/handoff.js +125 -8
  11. package/dist/cli/commands/handoff.js.map +2 -2
  12. package/dist/cli/commands/linear-create.js +132 -0
  13. package/dist/cli/commands/linear-create.js.map +7 -0
  14. package/dist/cli/commands/linear-list.js +69 -0
  15. package/dist/cli/commands/linear-list.js.map +7 -0
  16. package/dist/cli/commands/linear-migrate.js +40 -0
  17. package/dist/cli/commands/linear-migrate.js.map +7 -0
  18. package/dist/cli/commands/linear.js +185 -36
  19. package/dist/cli/commands/linear.js.map +2 -2
  20. package/dist/cli/commands/monitor.js +309 -0
  21. package/dist/cli/commands/monitor.js.map +7 -0
  22. package/dist/cli/commands/quality.js +414 -0
  23. package/dist/cli/commands/quality.js.map +7 -0
  24. package/dist/cli/commands/storage.js +275 -0
  25. package/dist/cli/commands/storage.js.map +7 -0
  26. package/dist/cli/commands/tui.js +66 -0
  27. package/dist/cli/commands/tui.js.map +7 -0
  28. package/dist/cli/commands/workflow.js +134 -0
  29. package/dist/cli/commands/workflow.js.map +7 -0
  30. package/dist/cli/index.js +105 -9
  31. package/dist/cli/index.js.map +3 -3
  32. package/dist/core/analytics/team-analytics.js +374 -0
  33. package/dist/core/analytics/team-analytics.js.map +7 -0
  34. package/dist/core/context/context-bridge.js +234 -0
  35. package/dist/core/context/context-bridge.js.map +7 -0
  36. package/dist/core/context/dual-stack-manager.js +850 -0
  37. package/dist/core/context/dual-stack-manager.js.map +7 -0
  38. package/dist/core/context/frame-handoff-manager.js +384 -0
  39. package/dist/core/context/frame-handoff-manager.js.map +7 -0
  40. package/dist/core/context/frame-manager.js +132 -12
  41. package/dist/core/context/frame-manager.js.map +2 -2
  42. package/dist/core/context/permission-manager.js +181 -0
  43. package/dist/core/context/permission-manager.js.map +7 -0
  44. package/dist/core/context/shared-context-layer.js +386 -0
  45. package/dist/core/context/shared-context-layer.js.map +7 -0
  46. package/dist/core/context/stack-merge-resolver.js +600 -0
  47. package/dist/core/context/stack-merge-resolver.js.map +7 -0
  48. package/dist/core/context/validation.js +121 -0
  49. package/dist/core/context/validation.js.map +7 -0
  50. package/dist/core/database/connection-pool.js +266 -175
  51. package/dist/core/database/connection-pool.js.map +2 -2
  52. package/dist/core/database/database-adapter.js +51 -0
  53. package/dist/core/database/database-adapter.js.map +7 -0
  54. package/dist/core/database/migration-manager.js +514 -0
  55. package/dist/core/database/migration-manager.js.map +7 -0
  56. package/dist/core/database/paradedb-adapter.js +970 -0
  57. package/dist/core/database/paradedb-adapter.js.map +7 -0
  58. package/dist/core/database/query-router.js +421 -0
  59. package/dist/core/database/query-router.js.map +7 -0
  60. package/dist/core/database/sqlite-adapter.js +547 -0
  61. package/dist/core/database/sqlite-adapter.js.map +7 -0
  62. package/dist/core/errors/index.js +21 -1
  63. package/dist/core/errors/index.js.map +2 -2
  64. package/dist/core/frame/workflow-templates-stub.js +42 -0
  65. package/dist/core/frame/workflow-templates-stub.js.map +7 -0
  66. package/dist/core/frame/workflow-templates.js +276 -0
  67. package/dist/core/frame/workflow-templates.js.map +7 -0
  68. package/dist/core/merge/conflict-detector.js +5 -2
  69. package/dist/core/merge/conflict-detector.js.map +2 -2
  70. package/dist/core/merge/resolution-engine.js +3 -14
  71. package/dist/core/merge/resolution-engine.js.map +2 -2
  72. package/dist/core/merge/stack-diff.js.map +2 -2
  73. package/dist/core/monitoring/logger.js +18 -3
  74. package/dist/core/monitoring/logger.js.map +2 -2
  75. package/dist/core/monitoring/session-monitor.js +296 -0
  76. package/dist/core/monitoring/session-monitor.js.map +7 -0
  77. package/dist/core/retrieval/context-retriever.js +475 -0
  78. package/dist/core/retrieval/context-retriever.js.map +7 -0
  79. package/dist/core/retrieval/graph-retrieval.js +658 -0
  80. package/dist/core/retrieval/graph-retrieval.js.map +7 -0
  81. package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
  82. package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
  83. package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
  84. package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
  85. package/dist/core/session/clear-survival-stub.js +49 -0
  86. package/dist/core/session/clear-survival-stub.js.map +7 -0
  87. package/dist/core/session/clear-survival.js +426 -0
  88. package/dist/core/session/clear-survival.js.map +7 -0
  89. package/dist/core/session/handoff-generator.js +339 -0
  90. package/dist/core/session/handoff-generator.js.map +7 -0
  91. package/dist/core/session/session-manager.js +61 -26
  92. package/dist/core/session/session-manager.js.map +3 -3
  93. package/dist/core/skills/index.js +3 -0
  94. package/dist/core/skills/index.js.map +7 -0
  95. package/dist/core/skills/skill-storage.js +749 -0
  96. package/dist/core/skills/skill-storage.js.map +7 -0
  97. package/dist/core/skills/types.js +189 -0
  98. package/dist/core/skills/types.js.map +7 -0
  99. package/dist/core/storage/railway-optimized-storage.js +550 -0
  100. package/dist/core/storage/railway-optimized-storage.js.map +7 -0
  101. package/dist/core/storage/remote-storage.js +456 -0
  102. package/dist/core/storage/remote-storage.js.map +7 -0
  103. package/dist/core/trace/trace-detector.js +136 -5
  104. package/dist/core/trace/trace-detector.js.map +2 -2
  105. package/dist/core/trace/trace-store.js.map +2 -2
  106. package/dist/features/tui/components/analytics-panel.js +136 -0
  107. package/dist/features/tui/components/analytics-panel.js.map +7 -0
  108. package/dist/features/tui/components/frame-visualizer.js +377 -0
  109. package/dist/features/tui/components/frame-visualizer.js.map +7 -0
  110. package/dist/features/tui/components/pr-tracker.js +123 -0
  111. package/dist/features/tui/components/pr-tracker.js.map +7 -0
  112. package/dist/features/tui/components/session-monitor.js +286 -0
  113. package/dist/features/tui/components/session-monitor.js.map +7 -0
  114. package/dist/features/tui/components/subagent-fleet.js +388 -0
  115. package/dist/features/tui/components/subagent-fleet.js.map +7 -0
  116. package/dist/features/tui/components/task-board.js +475 -0
  117. package/dist/features/tui/components/task-board.js.map +7 -0
  118. package/dist/features/tui/index.js +397 -0
  119. package/dist/features/tui/index.js.map +7 -0
  120. package/dist/features/tui/services/data-service.js +654 -0
  121. package/dist/features/tui/services/data-service.js.map +7 -0
  122. package/dist/features/tui/services/websocket-client.js +149 -0
  123. package/dist/features/tui/services/websocket-client.js.map +7 -0
  124. package/dist/features/tui/terminal-compat.js +205 -0
  125. package/dist/features/tui/terminal-compat.js.map +7 -0
  126. package/dist/features/tui/types.js +1 -0
  127. package/dist/features/tui/types.js.map +7 -0
  128. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
  129. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  130. package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
  131. package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  132. package/dist/integrations/claude-code/post-task-hooks.js +541 -0
  133. package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
  134. package/dist/integrations/linear/client.js +22 -4
  135. package/dist/integrations/linear/client.js.map +2 -2
  136. package/dist/integrations/linear/migration.js +299 -0
  137. package/dist/integrations/linear/migration.js.map +7 -0
  138. package/dist/integrations/linear/oauth-server.js +396 -0
  139. package/dist/integrations/linear/oauth-server.js.map +7 -0
  140. package/dist/integrations/linear/rest-client.js +199 -0
  141. package/dist/integrations/linear/rest-client.js.map +7 -0
  142. package/dist/integrations/linear/sync.js +14 -2
  143. package/dist/integrations/linear/sync.js.map +2 -2
  144. package/dist/integrations/linear/webhook-handler.js +200 -0
  145. package/dist/integrations/linear/webhook-handler.js.map +7 -0
  146. package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
  147. package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  148. package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
  149. package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  150. package/dist/integrations/mcp/refactored-server.js +31 -3
  151. package/dist/integrations/mcp/refactored-server.js.map +2 -2
  152. package/dist/integrations/mcp/server.js +25 -7
  153. package/dist/integrations/mcp/server.js.map +2 -2
  154. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  155. package/dist/models/user.model.js +3 -0
  156. package/dist/models/user.model.js.map +2 -2
  157. package/dist/services/context-service.js.map +2 -2
  158. package/dist/utils/formatting.js +58 -0
  159. package/dist/utils/formatting.js.map +7 -0
  160. package/package.json +24 -5
  161. package/dist/cli/__tests__/index.test.js +0 -290
  162. package/dist/cli/__tests__/index.test.js.map +0 -7
  163. package/dist/core/config/__tests__/config-manager.test.js +0 -248
  164. package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
  165. package/dist/core/context/__tests__/frame-manager.test.js +0 -879
  166. package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
  167. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
  168. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
  169. package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
  170. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
  171. package/dist/core/errors/__tests__/error-handling.test.js +0 -270
  172. package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
  173. package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
  174. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
  175. package/dist/core/query/__tests__/query-parser.test.js +0 -301
  176. package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
  177. package/dist/core/query/__tests__/query-templates.test.js +0 -210
  178. package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
  179. package/dist/core/trace/trace-detector.test.js +0 -401
  180. package/dist/core/trace/trace-detector.test.js.map +0 -7
  181. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
  182. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
  183. package/dist/integrations/linear/__tests__/auth.test.js +0 -558
  184. package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
  185. package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
  186. package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
  187. package/dist/integrations/mcp/__tests__/server.test.js +0 -798
  188. package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
  189. package/dist/scripts/benchmark-performance.d.ts +0 -7
  190. package/dist/scripts/benchmark-performance.d.ts.map +0 -1
  191. package/dist/scripts/benchmark-performance.js +0 -44
  192. package/dist/scripts/benchmark-performance.js.map +0 -1
  193. package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
  194. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
  195. package/dist/scripts/cancel-duplicate-tasks.js +0 -172
  196. package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
  197. package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
  198. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
  199. package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
  200. package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
  201. package/dist/scripts/initialize.d.ts +0 -6
  202. package/dist/scripts/initialize.d.ts.map +0 -1
  203. package/dist/scripts/initialize.js +0 -93
  204. package/dist/scripts/initialize.js.map +0 -1
  205. package/dist/scripts/list-linear-tasks.d.ts +0 -6
  206. package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
  207. package/dist/scripts/list-linear-tasks.js +0 -121
  208. package/dist/scripts/list-linear-tasks.js.map +0 -1
  209. package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
  210. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
  211. package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
  212. package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
  213. package/dist/scripts/show-linear-summary.d.ts +0 -6
  214. package/dist/scripts/show-linear-summary.d.ts.map +0 -1
  215. package/dist/scripts/show-linear-summary.js +0 -120
  216. package/dist/scripts/show-linear-summary.js.map +0 -1
  217. package/dist/scripts/status.d.ts +0 -6
  218. package/dist/scripts/status.d.ts.map +0 -1
  219. package/dist/scripts/status.js +0 -101
  220. package/dist/scripts/status.js.map +0 -1
  221. package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
  222. package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
  223. package/dist/src/agents/core/agent-task-manager.js +0 -504
  224. package/dist/src/agents/core/agent-task-manager.js.map +0 -1
  225. package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
  226. package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
  227. package/dist/src/agents/verifiers/base-verifier.js +0 -130
  228. package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
  229. package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
  230. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
  231. package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
  232. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
  233. package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
  234. package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
  235. package/dist/src/agents/verifiers/llm-judge.js +0 -248
  236. package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
  237. package/dist/src/cli/auto-detect.d.ts +0 -61
  238. package/dist/src/cli/auto-detect.d.ts.map +0 -1
  239. package/dist/src/cli/auto-detect.js +0 -350
  240. package/dist/src/cli/auto-detect.js.map +0 -1
  241. package/dist/src/cli/browser-test.d.ts +0 -6
  242. package/dist/src/cli/browser-test.d.ts.map +0 -1
  243. package/dist/src/cli/browser-test.js +0 -32
  244. package/dist/src/cli/browser-test.js.map +0 -1
  245. package/dist/src/cli/claude-sm.d.ts +0 -7
  246. package/dist/src/cli/claude-sm.d.ts.map +0 -1
  247. package/dist/src/cli/claude-sm.js +0 -412
  248. package/dist/src/cli/claude-sm.js.map +0 -1
  249. package/dist/src/cli/commands/agent.d.ts +0 -9
  250. package/dist/src/cli/commands/agent.d.ts.map +0 -1
  251. package/dist/src/cli/commands/agent.js +0 -303
  252. package/dist/src/cli/commands/agent.js.map +0 -1
  253. package/dist/src/cli/commands/config.d.ts +0 -6
  254. package/dist/src/cli/commands/config.d.ts.map +0 -1
  255. package/dist/src/cli/commands/config.js +0 -224
  256. package/dist/src/cli/commands/config.js.map +0 -1
  257. package/dist/src/cli/commands/context.d.ts +0 -7
  258. package/dist/src/cli/commands/context.d.ts.map +0 -1
  259. package/dist/src/cli/commands/context.js +0 -365
  260. package/dist/src/cli/commands/context.js.map +0 -1
  261. package/dist/src/cli/commands/handoff.d.ts +0 -6
  262. package/dist/src/cli/commands/handoff.d.ts.map +0 -1
  263. package/dist/src/cli/commands/handoff.js +0 -212
  264. package/dist/src/cli/commands/handoff.js.map +0 -1
  265. package/dist/src/cli/commands/linear-test.d.ts +0 -6
  266. package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
  267. package/dist/src/cli/commands/linear-test.js +0 -123
  268. package/dist/src/cli/commands/linear-test.js.map +0 -1
  269. package/dist/src/cli/commands/linear.d.ts +0 -6
  270. package/dist/src/cli/commands/linear.d.ts.map +0 -1
  271. package/dist/src/cli/commands/linear.js +0 -393
  272. package/dist/src/cli/commands/linear.js.map +0 -1
  273. package/dist/src/cli/commands/log.d.ts +0 -7
  274. package/dist/src/cli/commands/log.d.ts.map +0 -1
  275. package/dist/src/cli/commands/log.js +0 -168
  276. package/dist/src/cli/commands/log.js.map +0 -1
  277. package/dist/src/cli/commands/onboard.d.ts +0 -8
  278. package/dist/src/cli/commands/onboard.d.ts.map +0 -1
  279. package/dist/src/cli/commands/onboard.js +0 -363
  280. package/dist/src/cli/commands/onboard.js.map +0 -1
  281. package/dist/src/cli/commands/projects.d.ts +0 -8
  282. package/dist/src/cli/commands/projects.d.ts.map +0 -1
  283. package/dist/src/cli/commands/projects.js +0 -220
  284. package/dist/src/cli/commands/projects.js.map +0 -1
  285. package/dist/src/cli/commands/search.d.ts +0 -7
  286. package/dist/src/cli/commands/search.d.ts.map +0 -1
  287. package/dist/src/cli/commands/search.js +0 -162
  288. package/dist/src/cli/commands/search.js.map +0 -1
  289. package/dist/src/cli/commands/session.d.ts +0 -7
  290. package/dist/src/cli/commands/session.d.ts.map +0 -1
  291. package/dist/src/cli/commands/session.js +0 -222
  292. package/dist/src/cli/commands/session.js.map +0 -1
  293. package/dist/src/cli/commands/tasks.d.ts +0 -7
  294. package/dist/src/cli/commands/tasks.d.ts.map +0 -1
  295. package/dist/src/cli/commands/tasks.js +0 -229
  296. package/dist/src/cli/commands/tasks.js.map +0 -1
  297. package/dist/src/cli/commands/webhook.d.ts +0 -3
  298. package/dist/src/cli/commands/webhook.d.ts.map +0 -1
  299. package/dist/src/cli/commands/webhook.js +0 -157
  300. package/dist/src/cli/commands/webhook.js.map +0 -1
  301. package/dist/src/cli/commands/worktree.d.ts +0 -8
  302. package/dist/src/cli/commands/worktree.d.ts.map +0 -1
  303. package/dist/src/cli/commands/worktree.js +0 -339
  304. package/dist/src/cli/commands/worktree.js.map +0 -1
  305. package/dist/src/cli/index.d.ts +0 -8
  306. package/dist/src/cli/index.d.ts.map +0 -1
  307. package/dist/src/cli/index.js +0 -995
  308. package/dist/src/cli/index.js.map +0 -1
  309. package/dist/src/cli/utils/viewer.d.ts +0 -3
  310. package/dist/src/cli/utils/viewer.d.ts.map +0 -1
  311. package/dist/src/cli/utils/viewer.js +0 -91
  312. package/dist/src/cli/utils/viewer.js.map +0 -1
  313. package/dist/src/core/config/config-manager.d.ts +0 -95
  314. package/dist/src/core/config/config-manager.d.ts.map +0 -1
  315. package/dist/src/core/config/config-manager.js +0 -359
  316. package/dist/src/core/config/config-manager.js.map +0 -1
  317. package/dist/src/core/config/types.d.ts +0 -72
  318. package/dist/src/core/config/types.d.ts.map +0 -1
  319. package/dist/src/core/config/types.js +0 -127
  320. package/dist/src/core/config/types.js.map +0 -1
  321. package/dist/src/core/context/auto-context.d.ts +0 -22
  322. package/dist/src/core/context/auto-context.d.ts.map +0 -1
  323. package/dist/src/core/context/auto-context.js +0 -77
  324. package/dist/src/core/context/auto-context.js.map +0 -1
  325. package/dist/src/core/context/compaction-handler.d.ts +0 -119
  326. package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
  327. package/dist/src/core/context/compaction-handler.js +0 -306
  328. package/dist/src/core/context/compaction-handler.js.map +0 -1
  329. package/dist/src/core/context/frame-database.d.ts +0 -59
  330. package/dist/src/core/context/frame-database.d.ts.map +0 -1
  331. package/dist/src/core/context/frame-database.js +0 -333
  332. package/dist/src/core/context/frame-database.js.map +0 -1
  333. package/dist/src/core/context/frame-digest.d.ts +0 -59
  334. package/dist/src/core/context/frame-digest.d.ts.map +0 -1
  335. package/dist/src/core/context/frame-digest.js +0 -264
  336. package/dist/src/core/context/frame-digest.js.map +0 -1
  337. package/dist/src/core/context/frame-manager.d.ts +0 -112
  338. package/dist/src/core/context/frame-manager.d.ts.map +0 -1
  339. package/dist/src/core/context/frame-manager.js +0 -600
  340. package/dist/src/core/context/frame-manager.js.map +0 -1
  341. package/dist/src/core/context/frame-stack.d.ts +0 -85
  342. package/dist/src/core/context/frame-stack.d.ts.map +0 -1
  343. package/dist/src/core/context/frame-stack.js +0 -287
  344. package/dist/src/core/context/frame-stack.js.map +0 -1
  345. package/dist/src/core/context/frame-types.d.ts +0 -67
  346. package/dist/src/core/context/frame-types.d.ts.map +0 -1
  347. package/dist/src/core/context/frame-types.js +0 -6
  348. package/dist/src/core/context/frame-types.js.map +0 -1
  349. package/dist/src/core/context/index.d.ts +0 -11
  350. package/dist/src/core/context/index.d.ts.map +0 -1
  351. package/dist/src/core/context/index.js +0 -14
  352. package/dist/src/core/context/index.js.map +0 -1
  353. package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
  354. package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
  355. package/dist/src/core/context/model-aware-compaction.js +0 -616
  356. package/dist/src/core/context/model-aware-compaction.js.map +0 -1
  357. package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
  358. package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
  359. package/dist/src/core/context/refactored-frame-manager.js +0 -340
  360. package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
  361. package/dist/src/core/database/batch-operations.d.ts +0 -118
  362. package/dist/src/core/database/batch-operations.d.ts.map +0 -1
  363. package/dist/src/core/database/batch-operations.js +0 -339
  364. package/dist/src/core/database/batch-operations.js.map +0 -1
  365. package/dist/src/core/database/connection-pool.d.ts +0 -79
  366. package/dist/src/core/database/connection-pool.d.ts.map +0 -1
  367. package/dist/src/core/database/connection-pool.js +0 -236
  368. package/dist/src/core/database/connection-pool.js.map +0 -1
  369. package/dist/src/core/database/query-cache.d.ts +0 -135
  370. package/dist/src/core/database/query-cache.d.ts.map +0 -1
  371. package/dist/src/core/database/query-cache.js +0 -294
  372. package/dist/src/core/database/query-cache.js.map +0 -1
  373. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
  374. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
  375. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
  376. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
  377. package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
  378. package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
  379. package/dist/src/core/digest/frame-digest-integration.js +0 -198
  380. package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
  381. package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
  382. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
  383. package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
  384. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
  385. package/dist/src/core/digest/index.d.ts +0 -9
  386. package/dist/src/core/digest/index.d.ts.map +0 -1
  387. package/dist/src/core/digest/index.js +0 -9
  388. package/dist/src/core/digest/index.js.map +0 -1
  389. package/dist/src/core/digest/types.d.ts +0 -154
  390. package/dist/src/core/digest/types.d.ts.map +0 -1
  391. package/dist/src/core/digest/types.js +0 -18
  392. package/dist/src/core/digest/types.js.map +0 -1
  393. package/dist/src/core/errors/index.d.ts +0 -143
  394. package/dist/src/core/errors/index.d.ts.map +0 -1
  395. package/dist/src/core/errors/index.js +0 -282
  396. package/dist/src/core/errors/index.js.map +0 -1
  397. package/dist/src/core/errors/recovery.d.ts +0 -86
  398. package/dist/src/core/errors/recovery.d.ts.map +0 -1
  399. package/dist/src/core/errors/recovery.js +0 -274
  400. package/dist/src/core/errors/recovery.js.map +0 -1
  401. package/dist/src/core/merge/conflict-detector.d.ts +0 -122
  402. package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
  403. package/dist/src/core/merge/conflict-detector.js +0 -468
  404. package/dist/src/core/merge/conflict-detector.js.map +0 -1
  405. package/dist/src/core/merge/index.d.ts +0 -9
  406. package/dist/src/core/merge/index.d.ts.map +0 -1
  407. package/dist/src/core/merge/index.js +0 -9
  408. package/dist/src/core/merge/index.js.map +0 -1
  409. package/dist/src/core/merge/resolution-engine.d.ts +0 -120
  410. package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
  411. package/dist/src/core/merge/resolution-engine.js +0 -573
  412. package/dist/src/core/merge/resolution-engine.js.map +0 -1
  413. package/dist/src/core/merge/stack-diff.d.ts +0 -97
  414. package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
  415. package/dist/src/core/merge/stack-diff.js +0 -516
  416. package/dist/src/core/merge/stack-diff.js.map +0 -1
  417. package/dist/src/core/merge/types.d.ts +0 -110
  418. package/dist/src/core/merge/types.d.ts.map +0 -1
  419. package/dist/src/core/merge/types.js +0 -6
  420. package/dist/src/core/merge/types.js.map +0 -1
  421. package/dist/src/core/monitoring/error-handler.d.ts +0 -46
  422. package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
  423. package/dist/src/core/monitoring/error-handler.js +0 -212
  424. package/dist/src/core/monitoring/error-handler.js.map +0 -1
  425. package/dist/src/core/monitoring/logger.d.ts +0 -24
  426. package/dist/src/core/monitoring/logger.d.ts.map +0 -1
  427. package/dist/src/core/monitoring/logger.js +0 -126
  428. package/dist/src/core/monitoring/logger.js.map +0 -1
  429. package/dist/src/core/monitoring/metrics.d.ts +0 -10
  430. package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
  431. package/dist/src/core/monitoring/metrics.js +0 -152
  432. package/dist/src/core/monitoring/metrics.js.map +0 -1
  433. package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
  434. package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
  435. package/dist/src/core/monitoring/progress-tracker.js +0 -178
  436. package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
  437. package/dist/src/core/performance/context-cache.d.ts +0 -109
  438. package/dist/src/core/performance/context-cache.d.ts.map +0 -1
  439. package/dist/src/core/performance/context-cache.js +0 -280
  440. package/dist/src/core/performance/context-cache.js.map +0 -1
  441. package/dist/src/core/performance/index.d.ts +0 -3
  442. package/dist/src/core/performance/index.d.ts.map +0 -1
  443. package/dist/src/core/performance/index.js +0 -3
  444. package/dist/src/core/performance/index.js.map +0 -1
  445. package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
  446. package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
  447. package/dist/src/core/performance/lazy-context-loader.js +0 -332
  448. package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
  449. package/dist/src/core/performance/monitor.d.ts +0 -48
  450. package/dist/src/core/performance/monitor.d.ts.map +0 -1
  451. package/dist/src/core/performance/monitor.js +0 -226
  452. package/dist/src/core/performance/monitor.js.map +0 -1
  453. package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
  454. package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
  455. package/dist/src/core/performance/optimized-frame-context.js +0 -330
  456. package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
  457. package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
  458. package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
  459. package/dist/src/core/performance/performance-benchmark.js +0 -290
  460. package/dist/src/core/performance/performance-benchmark.js.map +0 -1
  461. package/dist/src/core/performance/performance-profiler.d.ts +0 -151
  462. package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
  463. package/dist/src/core/performance/performance-profiler.js +0 -346
  464. package/dist/src/core/performance/performance-profiler.js.map +0 -1
  465. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
  466. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
  467. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
  468. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
  469. package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
  470. package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
  471. package/dist/src/core/persistence/postgres-adapter.js +0 -330
  472. package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
  473. package/dist/src/core/projects/project-manager.d.ts +0 -130
  474. package/dist/src/core/projects/project-manager.d.ts.map +0 -1
  475. package/dist/src/core/projects/project-manager.js +0 -709
  476. package/dist/src/core/projects/project-manager.js.map +0 -1
  477. package/dist/src/core/query/query-parser.d.ts +0 -109
  478. package/dist/src/core/query/query-parser.d.ts.map +0 -1
  479. package/dist/src/core/query/query-parser.js +0 -415
  480. package/dist/src/core/query/query-parser.js.map +0 -1
  481. package/dist/src/core/query/query-templates.d.ts +0 -44
  482. package/dist/src/core/query/query-templates.d.ts.map +0 -1
  483. package/dist/src/core/query/query-templates.js +0 -326
  484. package/dist/src/core/query/query-templates.js.map +0 -1
  485. package/dist/src/core/retrieval/index.d.ts +0 -8
  486. package/dist/src/core/retrieval/index.d.ts.map +0 -1
  487. package/dist/src/core/retrieval/index.js +0 -8
  488. package/dist/src/core/retrieval/index.js.map +0 -1
  489. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
  490. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
  491. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
  492. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
  493. package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
  494. package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
  495. package/dist/src/core/retrieval/summary-generator.js +0 -622
  496. package/dist/src/core/retrieval/summary-generator.js.map +0 -1
  497. package/dist/src/core/retrieval/types.d.ts +0 -257
  498. package/dist/src/core/retrieval/types.d.ts.map +0 -1
  499. package/dist/src/core/retrieval/types.js +0 -18
  500. package/dist/src/core/retrieval/types.js.map +0 -1
  501. package/dist/src/core/session/index.d.ts +0 -2
  502. package/dist/src/core/session/index.d.ts.map +0 -1
  503. package/dist/src/core/session/index.js +0 -2
  504. package/dist/src/core/session/index.js.map +0 -1
  505. package/dist/src/core/session/session-manager.d.ts +0 -69
  506. package/dist/src/core/session/session-manager.d.ts.map +0 -1
  507. package/dist/src/core/session/session-manager.js +0 -311
  508. package/dist/src/core/session/session-manager.js.map +0 -1
  509. package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
  510. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
  511. package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
  512. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
  513. package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
  514. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
  515. package/dist/src/core/trace/db-trace-wrapper.js +0 -252
  516. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
  517. package/dist/src/core/trace/debug-trace.d.ts +0 -84
  518. package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
  519. package/dist/src/core/trace/debug-trace.js +0 -402
  520. package/dist/src/core/trace/debug-trace.js.map +0 -1
  521. package/dist/src/core/trace/error-test.d.ts +0 -6
  522. package/dist/src/core/trace/error-test.d.ts.map +0 -1
  523. package/dist/src/core/trace/error-test.js +0 -128
  524. package/dist/src/core/trace/error-test.js.map +0 -1
  525. package/dist/src/core/trace/index.d.ts +0 -25
  526. package/dist/src/core/trace/index.d.ts.map +0 -1
  527. package/dist/src/core/trace/index.js +0 -121
  528. package/dist/src/core/trace/index.js.map +0 -1
  529. package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
  530. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
  531. package/dist/src/core/trace/linear-api-wrapper.js +0 -205
  532. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
  533. package/dist/src/core/trace/performance-test.d.ts +0 -6
  534. package/dist/src/core/trace/performance-test.d.ts.map +0 -1
  535. package/dist/src/core/trace/performance-test.js +0 -111
  536. package/dist/src/core/trace/performance-test.js.map +0 -1
  537. package/dist/src/core/trace/trace-demo.d.ts +0 -8
  538. package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
  539. package/dist/src/core/trace/trace-demo.js +0 -154
  540. package/dist/src/core/trace/trace-demo.js.map +0 -1
  541. package/dist/src/core/trace/trace-detector.d.ts +0 -108
  542. package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
  543. package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
  544. package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
  545. package/dist/src/core/trace/trace-detector.demo.js +0 -145
  546. package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
  547. package/dist/src/core/trace/trace-detector.js +0 -425
  548. package/dist/src/core/trace/trace-detector.js.map +0 -1
  549. package/dist/src/core/trace/trace-store.d.ts +0 -60
  550. package/dist/src/core/trace/trace-store.d.ts.map +0 -1
  551. package/dist/src/core/trace/trace-store.js +0 -323
  552. package/dist/src/core/trace/trace-store.js.map +0 -1
  553. package/dist/src/core/trace/types.d.ts +0 -81
  554. package/dist/src/core/trace/types.d.ts.map +0 -1
  555. package/dist/src/core/trace/types.js +0 -70
  556. package/dist/src/core/trace/types.js.map +0 -1
  557. package/dist/src/core/types.d.ts +0 -35
  558. package/dist/src/core/types.d.ts.map +0 -1
  559. package/dist/src/core/types.js +0 -2
  560. package/dist/src/core/types.js.map +0 -1
  561. package/dist/src/core/utils/update-checker.d.ts +0 -38
  562. package/dist/src/core/utils/update-checker.d.ts.map +0 -1
  563. package/dist/src/core/utils/update-checker.js +0 -213
  564. package/dist/src/core/utils/update-checker.js.map +0 -1
  565. package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
  566. package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
  567. package/dist/src/core/worktree/worktree-manager.js +0 -456
  568. package/dist/src/core/worktree/worktree-manager.js.map +0 -1
  569. package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
  570. package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
  571. package/dist/src/features/analytics/api/analytics-api.js +0 -289
  572. package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
  573. package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
  574. package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
  575. package/dist/src/features/analytics/core/analytics-service.js +0 -275
  576. package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
  577. package/dist/src/features/analytics/index.d.ts +0 -12
  578. package/dist/src/features/analytics/index.d.ts.map +0 -1
  579. package/dist/src/features/analytics/index.js +0 -11
  580. package/dist/src/features/analytics/index.js.map +0 -1
  581. package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
  582. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
  583. package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
  584. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
  585. package/dist/src/features/analytics/types/metrics.d.ts +0 -60
  586. package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
  587. package/dist/src/features/analytics/types/metrics.js +0 -2
  588. package/dist/src/features/analytics/types/metrics.js.map +0 -1
  589. package/dist/src/features/browser/browser-mcp.d.ts +0 -94
  590. package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
  591. package/dist/src/features/browser/browser-mcp.js +0 -459
  592. package/dist/src/features/browser/browser-mcp.js.map +0 -1
  593. package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
  594. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
  595. package/dist/src/features/tasks/pebbles-task-store.js +0 -572
  596. package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
  597. package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
  598. package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
  599. package/dist/src/features/tasks/task-aware-context.js +0 -412
  600. package/dist/src/features/tasks/task-aware-context.js.map +0 -1
  601. package/dist/src/index.d.ts +0 -21
  602. package/dist/src/index.d.ts.map +0 -1
  603. package/dist/src/index.js +0 -9
  604. package/dist/src/index.js.map +0 -1
  605. package/dist/src/integrations/linear/auth.d.ts +0 -99
  606. package/dist/src/integrations/linear/auth.d.ts.map +0 -1
  607. package/dist/src/integrations/linear/auth.js +0 -319
  608. package/dist/src/integrations/linear/auth.js.map +0 -1
  609. package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
  610. package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
  611. package/dist/src/integrations/linear/auto-sync.js +0 -268
  612. package/dist/src/integrations/linear/auto-sync.js.map +0 -1
  613. package/dist/src/integrations/linear/client.d.ts +0 -127
  614. package/dist/src/integrations/linear/client.d.ts.map +0 -1
  615. package/dist/src/integrations/linear/client.js +0 -446
  616. package/dist/src/integrations/linear/client.js.map +0 -1
  617. package/dist/src/integrations/linear/config.d.ts +0 -51
  618. package/dist/src/integrations/linear/config.d.ts.map +0 -1
  619. package/dist/src/integrations/linear/config.js +0 -103
  620. package/dist/src/integrations/linear/config.js.map +0 -1
  621. package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
  622. package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
  623. package/dist/src/integrations/linear/sync-manager.js +0 -235
  624. package/dist/src/integrations/linear/sync-manager.js.map +0 -1
  625. package/dist/src/integrations/linear/sync-service.d.ts +0 -46
  626. package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
  627. package/dist/src/integrations/linear/sync-service.js +0 -217
  628. package/dist/src/integrations/linear/sync-service.js.map +0 -1
  629. package/dist/src/integrations/linear/sync.d.ts +0 -125
  630. package/dist/src/integrations/linear/sync.d.ts.map +0 -1
  631. package/dist/src/integrations/linear/sync.js +0 -563
  632. package/dist/src/integrations/linear/sync.js.map +0 -1
  633. package/dist/src/integrations/linear/types.d.ts +0 -90
  634. package/dist/src/integrations/linear/types.d.ts.map +0 -1
  635. package/dist/src/integrations/linear/types.js +0 -2
  636. package/dist/src/integrations/linear/types.js.map +0 -1
  637. package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
  638. package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
  639. package/dist/src/integrations/linear/webhook-server.js +0 -190
  640. package/dist/src/integrations/linear/webhook-server.js.map +0 -1
  641. package/dist/src/integrations/linear/webhook.d.ts +0 -108
  642. package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
  643. package/dist/src/integrations/linear/webhook.js +0 -291
  644. package/dist/src/integrations/linear/webhook.js.map +0 -1
  645. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
  646. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
  647. package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
  648. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
  649. package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
  650. package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
  651. package/dist/src/integrations/mcp/handlers/index.js +0 -134
  652. package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
  653. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
  654. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
  655. package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
  656. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
  657. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
  658. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
  659. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
  660. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
  661. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
  662. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
  663. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
  664. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
  665. package/dist/src/integrations/mcp/index.d.ts +0 -13
  666. package/dist/src/integrations/mcp/index.d.ts.map +0 -1
  667. package/dist/src/integrations/mcp/index.js +0 -17
  668. package/dist/src/integrations/mcp/index.js.map +0 -1
  669. package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
  670. package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
  671. package/dist/src/integrations/mcp/refactored-server.js +0 -351
  672. package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
  673. package/dist/src/integrations/mcp/server.d.ts +0 -54
  674. package/dist/src/integrations/mcp/server.d.ts.map +0 -1
  675. package/dist/src/integrations/mcp/server.js +0 -1616
  676. package/dist/src/integrations/mcp/server.js.map +0 -1
  677. package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
  678. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
  679. package/dist/src/integrations/mcp/tool-definitions.js +0 -563
  680. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
  681. package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
  682. package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
  683. package/dist/src/integrations/mcp/trace-test.js +0 -54
  684. package/dist/src/integrations/mcp/trace-test.js.map +0 -1
  685. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
  686. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
  687. package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
  688. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
  689. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
  690. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
  691. package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
  692. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
  693. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
  694. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
  695. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
  696. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
  697. package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
  698. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
  699. package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
  700. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
  701. package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
  702. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
  703. package/dist/src/middleware/exponential-rate-limiter.js +0 -293
  704. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
  705. package/dist/src/models/user.model.d.ts +0 -62
  706. package/dist/src/models/user.model.d.ts.map +0 -1
  707. package/dist/src/models/user.model.js +0 -311
  708. package/dist/src/models/user.model.js.map +0 -1
  709. package/dist/src/servers/production/auth-middleware.d.ts +0 -76
  710. package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
  711. package/dist/src/servers/production/auth-middleware.js +0 -558
  712. package/dist/src/servers/production/auth-middleware.js.map +0 -1
  713. package/dist/src/servers/railway/index.d.ts +0 -7
  714. package/dist/src/servers/railway/index.d.ts.map +0 -1
  715. package/dist/src/servers/railway/index.js +0 -401
  716. package/dist/src/servers/railway/index.js.map +0 -1
  717. package/dist/src/services/config-service.d.ts +0 -44
  718. package/dist/src/services/config-service.d.ts.map +0 -1
  719. package/dist/src/services/config-service.js +0 -61
  720. package/dist/src/services/config-service.js.map +0 -1
  721. package/dist/src/services/context-service.d.ts +0 -17
  722. package/dist/src/services/context-service.d.ts.map +0 -1
  723. package/dist/src/services/context-service.js +0 -173
  724. package/dist/src/services/context-service.js.map +0 -1
  725. package/dist/src/types/task.d.ts +0 -27
  726. package/dist/src/types/task.d.ts.map +0 -1
  727. package/dist/src/types/task.js +0 -2
  728. package/dist/src/types/task.js.map +0 -1
  729. package/dist/src/utils/logger.d.ts +0 -13
  730. package/dist/src/utils/logger.d.ts.map +0 -1
  731. package/dist/src/utils/logger.js +0 -52
  732. package/dist/src/utils/logger.js.map +0 -1
  733. package/dist/src/validation/schemas.d.ts +0 -633
  734. package/dist/src/validation/schemas.d.ts.map +0 -1
  735. package/dist/src/validation/schemas.js +0 -347
  736. package/dist/src/validation/schemas.js.map +0 -1
@@ -1,747 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import Database from "better-sqlite3";
3
- import {
4
- PebblesTaskStore
5
- } from "../pebbles-task-store.js";
6
- import {
7
- DatabaseError,
8
- TaskError
9
- } from "../../../core/errors/index.js";
10
- import { join } from "path";
11
- import {
12
- mkdtempSync,
13
- mkdirSync,
14
- rmSync,
15
- existsSync,
16
- readFileSync,
17
- writeFileSync
18
- } from "fs";
19
- import { tmpdir } from "os";
20
- describe("PebblesTaskStore", () => {
21
- let db;
22
- let taskStore;
23
- let tempDir;
24
- let projectRoot;
25
- beforeEach(() => {
26
- tempDir = mkdtempSync(join(tmpdir(), "stackmemory-task-test-"));
27
- projectRoot = tempDir;
28
- const stackmemoryDir = join(tempDir, ".stackmemory");
29
- mkdirSync(stackmemoryDir, { recursive: true });
30
- const dbPath = join(stackmemoryDir, "context.db");
31
- db = new Database(dbPath);
32
- taskStore = new PebblesTaskStore(projectRoot, db);
33
- });
34
- afterEach(() => {
35
- if (db) {
36
- db.close();
37
- }
38
- if (tempDir) {
39
- rmSync(tempDir, { recursive: true, force: true });
40
- }
41
- });
42
- describe("Initialization", () => {
43
- it("should create .stackmemory directory if it does not exist", () => {
44
- const stackmemoryDir = join(projectRoot, ".stackmemory");
45
- expect(existsSync(stackmemoryDir)).toBe(true);
46
- });
47
- it("should initialize cache database schema correctly", () => {
48
- const tables = db.prepare(
49
- `
50
- SELECT name FROM sqlite_master
51
- WHERE type='table' AND name='task_cache'
52
- `
53
- ).all();
54
- expect(tables).toHaveLength(1);
55
- });
56
- it("should create required indexes", () => {
57
- const indexes = db.prepare(
58
- `
59
- SELECT name FROM sqlite_master
60
- WHERE type='index' AND name LIKE 'idx_task_%'
61
- `
62
- ).all();
63
- const expectedIndexes = [
64
- "idx_task_status",
65
- "idx_task_priority",
66
- "idx_task_frame",
67
- "idx_task_timestamp",
68
- "idx_task_parent"
69
- ];
70
- expectedIndexes.forEach((expectedIndex) => {
71
- expect(indexes.some((idx) => idx.name === expectedIndex)).toBe(
72
- true
73
- );
74
- });
75
- });
76
- it("should load existing tasks from JSONL file", () => {
77
- const tasksFile = join(projectRoot, ".stackmemory", "tasks.jsonl");
78
- const existingTask = {
79
- id: "test-123",
80
- type: "task_create",
81
- timestamp: Math.floor(Date.now() / 1e3),
82
- frame_id: "frame-123",
83
- title: "Existing Task",
84
- description: "Pre-existing task",
85
- status: "pending",
86
- priority: "medium",
87
- created_at: Math.floor(Date.now() / 1e3),
88
- depends_on: [],
89
- blocks: [],
90
- tags: ["test"],
91
- context_score: 0.5
92
- };
93
- writeFileSync(tasksFile, JSON.stringify(existingTask) + "\n");
94
- const newTaskStore = new PebblesTaskStore(projectRoot, db);
95
- const loadedTask = newTaskStore.getTask("test-123");
96
- expect(loadedTask).toBeDefined();
97
- expect(loadedTask.title).toBe("Existing Task");
98
- });
99
- it("should handle corrupted JSONL lines gracefully", () => {
100
- const tasksFile = join(projectRoot, ".stackmemory", "tasks.jsonl");
101
- const content = `
102
- {"valid": "task", "id": "valid-1", "type": "task_create", "timestamp": 1, "frame_id": "f1", "title": "Valid", "status": "pending", "priority": "medium", "created_at": 1, "depends_on": [], "blocks": [], "tags": []}
103
- {invalid json line
104
- {"id": "valid-2", "type": "task_create", "timestamp": 2, "frame_id": "f2", "title": "Valid 2", "status": "pending", "priority": "high", "created_at": 2, "depends_on": [], "blocks": [], "tags": []}
105
- `.trim();
106
- writeFileSync(tasksFile, content);
107
- const newTaskStore = new PebblesTaskStore(projectRoot, db);
108
- expect(newTaskStore.getTask("valid-1")).toBeDefined();
109
- expect(newTaskStore.getTask("valid-2")).toBeDefined();
110
- });
111
- });
112
- describe("Task Creation", () => {
113
- it("should create a new task successfully", () => {
114
- const taskId = taskStore.createTask({
115
- title: "Test Task",
116
- description: "A test task",
117
- priority: "high",
118
- frameId: "frame-123",
119
- tags: ["test", "urgent"],
120
- estimatedEffort: 60,
121
- assignee: "developer"
122
- });
123
- expect(taskId).toBeDefined();
124
- expect(taskId).toMatch(/^tsk-[a-f0-9]{8}$/);
125
- const task = taskStore.getTask(taskId);
126
- expect(task).toBeDefined();
127
- expect(task.title).toBe("Test Task");
128
- expect(task.description).toBe("A test task");
129
- expect(task.priority).toBe("high");
130
- expect(task.status).toBe("pending");
131
- expect(task.frame_id).toBe("frame-123");
132
- expect(task.tags).toEqual(["test", "urgent"]);
133
- expect(task.estimated_effort).toBe(60);
134
- expect(task.assignee).toBe("developer");
135
- expect(task.depends_on).toEqual([]);
136
- expect(task.blocks).toEqual([]);
137
- });
138
- it("should create task with minimal required fields", () => {
139
- const taskId = taskStore.createTask({
140
- title: "Minimal Task",
141
- frameId: "frame-456"
142
- });
143
- const task = taskStore.getTask(taskId);
144
- expect(task).toBeDefined();
145
- expect(task.title).toBe("Minimal Task");
146
- expect(task.frame_id).toBe("frame-456");
147
- expect(task.priority).toBe("medium");
148
- expect(task.status).toBe("pending");
149
- expect(task.description).toBeNull();
150
- expect(task.tags).toEqual([]);
151
- });
152
- it("should create task with parent relationship", () => {
153
- const parentId = taskStore.createTask({
154
- title: "Parent Task",
155
- frameId: "frame-parent"
156
- });
157
- const childId = taskStore.createTask({
158
- title: "Child Task",
159
- frameId: "frame-child",
160
- parentId
161
- });
162
- const childTask = taskStore.getTask(childId);
163
- expect(childTask.parent_id).toBe(parentId);
164
- });
165
- it("should create task with dependencies", () => {
166
- const dep1Id = taskStore.createTask({
167
- title: "Dependency 1",
168
- frameId: "frame-dep1"
169
- });
170
- const dep2Id = taskStore.createTask({
171
- title: "Dependency 2",
172
- frameId: "frame-dep2"
173
- });
174
- const taskId = taskStore.createTask({
175
- title: "Dependent Task",
176
- frameId: "frame-main",
177
- dependsOn: [dep1Id, dep2Id]
178
- });
179
- const task = taskStore.getTask(taskId);
180
- expect(task.depends_on).toEqual([dep1Id, dep2Id]);
181
- });
182
- it("should append task to JSONL file", async () => {
183
- const taskId = taskStore.createTask({
184
- title: "JSONL Test",
185
- frameId: "frame-jsonl"
186
- });
187
- const tasksFile = join(projectRoot, ".stackmemory", "tasks.jsonl");
188
- expect(existsSync(tasksFile)).toBe(true);
189
- await new Promise((resolve) => setTimeout(resolve, 50));
190
- const content = readFileSync(tasksFile, "utf-8");
191
- expect(content).toContain(taskId);
192
- expect(content).toContain("JSONL Test");
193
- });
194
- });
195
- describe("Task Status Updates", () => {
196
- let taskId;
197
- beforeEach(() => {
198
- taskId = taskStore.createTask({
199
- title: "Status Test Task",
200
- frameId: "frame-status"
201
- });
202
- });
203
- it("should update task status from pending to in_progress", () => {
204
- taskStore.updateTaskStatus(taskId, "in_progress");
205
- const task = taskStore.getTask(taskId);
206
- expect(task.status).toBe("in_progress");
207
- expect(task.started_at).toBeDefined();
208
- });
209
- it("should update task status from in_progress to completed", () => {
210
- taskStore.updateTaskStatus(taskId, "in_progress");
211
- taskStore.updateTaskStatus(taskId, "completed");
212
- const task = taskStore.getTask(taskId);
213
- expect(task.status).toBe("completed");
214
- expect(task.completed_at).toBeDefined();
215
- expect(task.actual_effort).toBeDefined();
216
- });
217
- it("should update task status to blocked", () => {
218
- taskStore.updateTaskStatus(taskId, "blocked", "Waiting for external API");
219
- const task = taskStore.getTask(taskId);
220
- expect(task.status).toBe("blocked");
221
- expect(task.type).toBe("task_block");
222
- });
223
- it("should update task status to cancelled", () => {
224
- taskStore.updateTaskStatus(taskId, "cancelled");
225
- const task = taskStore.getTask(taskId);
226
- expect(task.status).toBe("cancelled");
227
- });
228
- it("should throw error when updating non-existent task", () => {
229
- expect(() => {
230
- taskStore.updateTaskStatus("non-existent", "completed");
231
- }).toThrow(TaskError);
232
- });
233
- it("should throw error when changing completed task status", () => {
234
- taskStore.updateTaskStatus(taskId, "in_progress");
235
- taskStore.updateTaskStatus(taskId, "completed");
236
- expect(() => {
237
- taskStore.updateTaskStatus(taskId, "in_progress");
238
- }).toThrow(TaskError);
239
- });
240
- it("should allow changing completed task to cancelled", () => {
241
- taskStore.updateTaskStatus(taskId, "in_progress");
242
- taskStore.updateTaskStatus(taskId, "completed");
243
- expect(() => {
244
- taskStore.updateTaskStatus(taskId, "cancelled");
245
- }).not.toThrow();
246
- const task = taskStore.getTask(taskId);
247
- expect(task.status).toBe("cancelled");
248
- });
249
- it("should calculate actual effort correctly", () => {
250
- const startTime = Date.now();
251
- taskStore.updateTaskStatus(taskId, "in_progress");
252
- vi.useFakeTimers();
253
- vi.advanceTimersByTime(30 * 60 * 1e3);
254
- taskStore.updateTaskStatus(taskId, "completed");
255
- const task = taskStore.getTask(taskId);
256
- expect(task.actual_effort).toBe(30);
257
- vi.useRealTimers();
258
- });
259
- it("should update task type based on status change", () => {
260
- const task1 = taskStore.getTask(taskId);
261
- expect(task1.type).toBe("task_create");
262
- taskStore.updateTaskStatus(taskId, "in_progress");
263
- const task2 = taskStore.getTask(taskId);
264
- expect(task2.type).toBe("task_update");
265
- taskStore.updateTaskStatus(taskId, "completed");
266
- const task3 = taskStore.getTask(taskId);
267
- expect(task3.type).toBe("task_complete");
268
- const blockedTaskId = taskStore.createTask({
269
- title: "Blocked Task",
270
- frameId: "frame-blocked"
271
- });
272
- taskStore.updateTaskStatus(blockedTaskId, "blocked");
273
- const task4 = taskStore.getTask(blockedTaskId);
274
- expect(task4.type).toBe("task_block");
275
- });
276
- });
277
- describe("Task Dependencies", () => {
278
- let task1Id;
279
- let task2Id;
280
- beforeEach(() => {
281
- task1Id = taskStore.createTask({
282
- title: "Task 1",
283
- frameId: "frame-1"
284
- });
285
- task2Id = taskStore.createTask({
286
- title: "Task 2",
287
- frameId: "frame-2"
288
- });
289
- });
290
- it("should add dependency relationship", () => {
291
- taskStore.addDependency(task2Id, task1Id);
292
- const task2 = taskStore.getTask(task2Id);
293
- const task1 = taskStore.getTask(task1Id);
294
- expect(task2.depends_on).toContain(task1Id);
295
- expect(task1.blocks).toContain(task2Id);
296
- });
297
- it("should prevent duplicate dependencies", () => {
298
- taskStore.addDependency(task2Id, task1Id);
299
- taskStore.addDependency(task2Id, task1Id);
300
- const task2 = taskStore.getTask(task2Id);
301
- expect(task2.depends_on.filter((id) => id === task1Id)).toHaveLength(1);
302
- });
303
- it("should throw error for non-existent task", () => {
304
- expect(() => {
305
- taskStore.addDependency("non-existent", task1Id);
306
- }).toThrow(TaskError);
307
- expect(() => {
308
- taskStore.addDependency(task2Id, "non-existent");
309
- }).toThrow(TaskError);
310
- });
311
- it("should detect circular dependencies", () => {
312
- taskStore.addDependency(task2Id, task1Id);
313
- expect(() => {
314
- taskStore.addDependency(task1Id, task2Id);
315
- }).toThrow(TaskError);
316
- });
317
- it("should detect complex circular dependencies", () => {
318
- const task3Id = taskStore.createTask({
319
- title: "Task 3",
320
- frameId: "frame-3"
321
- });
322
- const task4Id = taskStore.createTask({
323
- title: "Task 4",
324
- frameId: "frame-4"
325
- });
326
- taskStore.addDependency(task2Id, task1Id);
327
- taskStore.addDependency(task3Id, task2Id);
328
- taskStore.addDependency(task4Id, task3Id);
329
- expect(() => {
330
- taskStore.addDependency(task1Id, task4Id);
331
- }).toThrow(TaskError);
332
- });
333
- it("should handle self-dependency prevention", () => {
334
- expect(() => {
335
- taskStore.addDependency(task1Id, task1Id);
336
- }).toThrow(TaskError);
337
- });
338
- });
339
- describe("Task Queries", () => {
340
- beforeEach(() => {
341
- const tasks = [
342
- {
343
- title: "Active Task 1",
344
- status: "pending",
345
- priority: "high",
346
- frameId: "frame-1"
347
- },
348
- {
349
- title: "Active Task 2",
350
- status: "in_progress",
351
- priority: "medium",
352
- frameId: "frame-1"
353
- },
354
- {
355
- title: "Completed Task",
356
- status: "completed",
357
- priority: "low",
358
- frameId: "frame-2"
359
- },
360
- {
361
- title: "Blocked Task",
362
- status: "blocked",
363
- priority: "urgent",
364
- frameId: "frame-3"
365
- },
366
- {
367
- title: "Cancelled Task",
368
- status: "cancelled",
369
- priority: "medium",
370
- frameId: "frame-3"
371
- }
372
- ];
373
- tasks.forEach((task) => {
374
- const taskId = taskStore.createTask(task);
375
- if (task.status !== "pending") {
376
- taskStore.updateTaskStatus(taskId, task.status);
377
- }
378
- });
379
- });
380
- it("should get all active tasks", () => {
381
- const activeTasks = taskStore.getActiveTasks();
382
- expect(activeTasks).toHaveLength(2);
383
- expect(
384
- activeTasks.every((t) => ["pending", "in_progress"].includes(t.status))
385
- ).toBe(true);
386
- });
387
- it("should get active tasks filtered by frame", () => {
388
- const frame1Tasks = taskStore.getActiveTasks("frame-1");
389
- expect(frame1Tasks).toHaveLength(2);
390
- expect(frame1Tasks.every((t) => t.frame_id === "frame-1")).toBe(true);
391
- });
392
- it("should order active tasks by priority and creation time", () => {
393
- const activeTasks = taskStore.getActiveTasks();
394
- const priorities = activeTasks.map((t) => t.priority);
395
- expect(priorities).toContain("high");
396
- expect(priorities).toContain("medium");
397
- });
398
- it("should get blocking tasks", () => {
399
- const blockingTaskId = taskStore.createTask({
400
- title: "Blocking Task",
401
- frameId: "frame-blocker"
402
- });
403
- const dependentTaskId = taskStore.createTask({
404
- title: "Dependent Task",
405
- frameId: "frame-dependent"
406
- });
407
- taskStore.addDependency(dependentTaskId, blockingTaskId);
408
- const blockingTasks = taskStore.getBlockingTasks();
409
- expect(blockingTasks.length).toBeGreaterThan(0);
410
- const foundBlocking = blockingTasks.find((t) => t.id === blockingTaskId);
411
- expect(foundBlocking).toBeDefined();
412
- });
413
- it("should return empty array when no active tasks exist", () => {
414
- let activeTasks = taskStore.getActiveTasks();
415
- while (activeTasks.length > 0) {
416
- const task = activeTasks[0];
417
- if (task.status === "pending") {
418
- taskStore.updateTaskStatus(task.id, "in_progress");
419
- } else if (task.status === "in_progress") {
420
- taskStore.updateTaskStatus(task.id, "completed");
421
- }
422
- activeTasks = taskStore.getActiveTasks();
423
- }
424
- const remainingActive = taskStore.getActiveTasks();
425
- expect(remainingActive).toHaveLength(0);
426
- });
427
- });
428
- describe("Task Metrics", () => {
429
- beforeEach(() => {
430
- const tasks = [
431
- {
432
- title: "Task 1",
433
- status: "pending",
434
- priority: "high"
435
- },
436
- {
437
- title: "Task 2",
438
- status: "pending",
439
- priority: "medium"
440
- },
441
- {
442
- title: "Task 3",
443
- status: "completed",
444
- priority: "low",
445
- effort: 30
446
- },
447
- {
448
- title: "Task 4",
449
- status: "completed",
450
- priority: "high",
451
- effort: 60
452
- },
453
- {
454
- title: "Task 5",
455
- status: "blocked",
456
- priority: "urgent"
457
- },
458
- {
459
- title: "Task 6",
460
- status: "cancelled",
461
- priority: "medium"
462
- }
463
- ];
464
- tasks.forEach((task) => {
465
- const taskId = taskStore.createTask({
466
- title: task.title,
467
- frameId: "frame-metrics",
468
- priority: task.priority,
469
- estimatedEffort: task.effort
470
- });
471
- if (task.status !== "pending") {
472
- if (task.status === "completed") {
473
- taskStore.updateTaskStatus(taskId, "in_progress");
474
- }
475
- taskStore.updateTaskStatus(taskId, task.status);
476
- }
477
- });
478
- });
479
- it("should calculate basic metrics correctly", () => {
480
- const metrics = taskStore.getMetrics();
481
- expect(metrics.total_tasks).toBe(6);
482
- expect(metrics.by_status.pending).toBe(2);
483
- expect(metrics.by_status.completed).toBe(2);
484
- expect(metrics.by_status.blocked).toBe(1);
485
- expect(metrics.by_status.cancelled).toBe(1);
486
- expect(metrics.by_priority.high).toBe(2);
487
- expect(metrics.by_priority.medium).toBe(2);
488
- expect(metrics.by_priority.low).toBe(1);
489
- expect(metrics.by_priority.urgent).toBe(1);
490
- expect(metrics.completion_rate).toBe(2 / 6);
491
- expect(metrics.blocked_tasks).toBe(1);
492
- });
493
- it("should handle metrics when no tasks exist", () => {
494
- const emptyDb = new Database(":memory:");
495
- const emptyStore = new PebblesTaskStore(projectRoot, emptyDb);
496
- const metrics = emptyStore.getMetrics();
497
- expect(metrics.total_tasks).toBe(0);
498
- expect(metrics.completion_rate).toBe(0);
499
- expect(metrics.blocked_tasks).toBe(0);
500
- emptyDb.close();
501
- });
502
- it("should calculate effort accuracy", () => {
503
- const taskId = taskStore.createTask({
504
- title: "Effort Test",
505
- frameId: "frame-effort",
506
- estimatedEffort: 60
507
- // 1 hour estimate
508
- });
509
- taskStore.updateTaskStatus(taskId, "in_progress");
510
- const task = taskStore.getTask(taskId);
511
- if (task) {
512
- const stmt = db.prepare(`
513
- UPDATE task_cache
514
- SET actual_effort = ?
515
- WHERE id = ?
516
- `);
517
- stmt.run(50, taskId);
518
- }
519
- const metrics = taskStore.getMetrics();
520
- expect(metrics.avg_effort_accuracy).toBeGreaterThan(0);
521
- });
522
- });
523
- describe("Linear Integration Export", () => {
524
- beforeEach(() => {
525
- taskStore.createTask({
526
- title: "Local Task 1",
527
- frameId: "frame-1",
528
- description: "Task for Linear export",
529
- priority: "high",
530
- estimatedEffort: 120
531
- });
532
- taskStore.createTask({
533
- title: "Local Task 2",
534
- frameId: "frame-2",
535
- priority: "medium"
536
- });
537
- const taskWithLinear = taskStore.createTask({
538
- title: "Already Synced",
539
- frameId: "frame-3"
540
- });
541
- db.prepare(
542
- `
543
- UPDATE task_cache
544
- SET external_refs = ?
545
- WHERE id = ?
546
- `
547
- ).run(JSON.stringify({ linear: { id: "LIN-123" } }), taskWithLinear);
548
- });
549
- it("should export tasks for Linear integration", () => {
550
- const exported = taskStore.exportForLinear();
551
- expect(exported).toHaveLength(2);
552
- const task1 = exported.find((t) => t.title === "Local Task 1");
553
- expect(task1).toBeDefined();
554
- expect(task1.description).toBe("Task for Linear export");
555
- expect(task1.priority).toBe(3);
556
- expect(task1.estimate).toBe(120);
557
- const task2 = exported.find((t) => t.title === "Local Task 2");
558
- expect(task2).toBeDefined();
559
- expect(task2.priority).toBe(2);
560
- });
561
- it("should map priorities correctly for Linear", () => {
562
- const priorities = {
563
- low: 1,
564
- medium: 2,
565
- high: 3,
566
- urgent: 4
567
- };
568
- Object.entries(priorities).forEach(([priority, expectedValue]) => {
569
- const taskId = taskStore.createTask({
570
- title: `Priority ${priority}`,
571
- frameId: "frame-priority",
572
- priority
573
- });
574
- const exported = taskStore.exportForLinear();
575
- const task = exported.find((t) => t.title === `Priority ${priority}`);
576
- expect(task.priority).toBe(expectedValue);
577
- });
578
- });
579
- it("should map statuses correctly for Linear", () => {
580
- const statusMappings = {
581
- pending: "Backlog",
582
- in_progress: "In Progress",
583
- completed: "Done",
584
- blocked: "Blocked",
585
- cancelled: "Cancelled"
586
- };
587
- Object.entries(statusMappings).forEach(
588
- ([status, expectedLinearStatus]) => {
589
- const taskId = taskStore.createTask({
590
- title: `Status ${status}`,
591
- frameId: "frame-status"
592
- });
593
- if (status !== "pending") {
594
- taskStore.updateTaskStatus(taskId, status);
595
- }
596
- const exported = taskStore.exportForLinear();
597
- const task = exported.find((t) => t.title === `Status ${status}`);
598
- expect(task.status).toBe(expectedLinearStatus);
599
- }
600
- );
601
- });
602
- });
603
- describe("Error Handling and Edge Cases", () => {
604
- it("should handle database errors gracefully", () => {
605
- const taskId = taskStore.createTask({
606
- title: "Error Test",
607
- frameId: "frame-error"
608
- });
609
- db.close();
610
- expect(() => {
611
- taskStore.getTask(taskId);
612
- }).toThrow(DatabaseError);
613
- expect(() => {
614
- taskStore.updateTaskStatus(taskId, "completed");
615
- }).toThrow();
616
- });
617
- it("should handle JSONL file write errors gracefully", () => {
618
- const originalAppendFile = require("fs").appendFile;
619
- require("fs").appendFile = vi.fn((path, data, callback) => {
620
- callback(new Error("Write failed"));
621
- });
622
- expect(() => {
623
- taskStore.createTask({
624
- title: "Write Error Test",
625
- frameId: "frame-write-error"
626
- });
627
- }).not.toThrow();
628
- require("fs").appendFile = originalAppendFile;
629
- });
630
- it("should handle concurrent task operations", () => {
631
- const tasks = [];
632
- for (let i = 0; i < 20; i++) {
633
- const taskId = taskStore.createTask({
634
- title: `Concurrent Task ${i}`,
635
- frameId: `frame-${i}`,
636
- priority: i % 2 === 0 ? "high" : "low"
637
- });
638
- tasks.push(taskId);
639
- }
640
- expect(tasks).toHaveLength(20);
641
- tasks.forEach((taskId) => {
642
- taskStore.updateTaskStatus(taskId, "completed");
643
- });
644
- const allCompleted = tasks.every((taskId) => {
645
- const task = taskStore.getTask(taskId);
646
- return task?.status === "completed";
647
- });
648
- expect(allCompleted).toBe(true);
649
- });
650
- it("should handle empty or malformed task IDs", () => {
651
- expect(taskStore.getTask("")).toBeUndefined();
652
- expect(taskStore.getTask("invalid-format")).toBeUndefined();
653
- expect(taskStore.getTask("null")).toBeUndefined();
654
- });
655
- it("should validate task status transitions", () => {
656
- const taskId = taskStore.createTask({
657
- title: "Status Validation",
658
- frameId: "frame-validation"
659
- });
660
- expect(() => {
661
- taskStore.updateTaskStatus(taskId, "in_progress");
662
- }).not.toThrow();
663
- expect(() => {
664
- taskStore.updateTaskStatus(taskId, "blocked");
665
- }).not.toThrow();
666
- expect(() => {
667
- taskStore.updateTaskStatus(taskId, "in_progress");
668
- }).not.toThrow();
669
- expect(() => {
670
- taskStore.updateTaskStatus(taskId, "completed");
671
- }).not.toThrow();
672
- expect(() => {
673
- taskStore.updateTaskStatus(taskId, "in_progress");
674
- }).toThrow(TaskError);
675
- });
676
- it("should handle tasks with complex metadata", () => {
677
- const taskId = taskStore.createTask({
678
- title: "Complex Metadata Task",
679
- frameId: "frame-complex",
680
- tags: ["complex", "metadata", "test"],
681
- dependsOn: []
682
- });
683
- const depTaskId = taskStore.createTask({
684
- title: "Dependency Task",
685
- frameId: "frame-dep"
686
- });
687
- taskStore.addDependency(taskId, depTaskId);
688
- const task = taskStore.getTask(taskId);
689
- expect(task.tags).toEqual(["complex", "metadata", "test"]);
690
- expect(task.depends_on).toContain(depTaskId);
691
- });
692
- });
693
- describe("Data Integrity and Consistency", () => {
694
- it("should maintain referential integrity in dependencies", () => {
695
- const task1Id = taskStore.createTask({
696
- title: "Task 1",
697
- frameId: "frame-1"
698
- });
699
- const task2Id = taskStore.createTask({
700
- title: "Task 2",
701
- frameId: "frame-2"
702
- });
703
- taskStore.addDependency(task2Id, task1Id);
704
- const task1 = taskStore.getTask(task1Id);
705
- const task2 = taskStore.getTask(task2Id);
706
- expect(task2.depends_on).toContain(task1Id);
707
- expect(task1.blocks).toContain(task2Id);
708
- });
709
- it("should ensure content-based task IDs are deterministic for same content", () => {
710
- const now = Math.floor(Date.now() / 1e3);
711
- const originalRandom = Math.random;
712
- Math.random = vi.fn(() => 0.5);
713
- vi.spyOn(Date, "now").mockReturnValue(now * 1e3);
714
- try {
715
- const taskId1 = taskStore.createTask({
716
- title: "Deterministic Task",
717
- frameId: "frame-det"
718
- });
719
- const taskId2 = taskStore.createTask({
720
- title: "Deterministic Task",
721
- frameId: "frame-det"
722
- });
723
- expect(taskId1).toBe(taskId2);
724
- expect(taskId1).toMatch(/^tsk-[a-f0-9]{8}$/);
725
- expect(taskId2).toMatch(/^tsk-[a-f0-9]{8}$/);
726
- } finally {
727
- Math.random = originalRandom;
728
- vi.restoreAllMocks();
729
- }
730
- });
731
- it("should handle JSON serialization edge cases", () => {
732
- const taskId = taskStore.createTask({
733
- title: "JSON Edge Cases",
734
- frameId: "frame-json",
735
- tags: ["tag with spaces", 'tag"with"quotes', "tag\\with\\slashes"],
736
- dependsOn: []
737
- });
738
- const task = taskStore.getTask(taskId);
739
- expect(task.tags).toEqual([
740
- "tag with spaces",
741
- 'tag"with"quotes',
742
- "tag\\with\\slashes"
743
- ]);
744
- });
745
- });
746
- });
747
- //# sourceMappingURL=pebbles-task-store.test.js.map