@stackmemoryai/stackmemory 0.3.1 → 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 (734) hide show
  1. package/README.md +52 -272
  2. package/dist/cli/commands/clear.js +191 -0
  3. package/dist/cli/commands/clear.js.map +7 -0
  4. package/dist/cli/commands/config.js +152 -1
  5. package/dist/cli/commands/config.js.map +2 -2
  6. package/dist/cli/commands/dashboard.js +178 -0
  7. package/dist/cli/commands/dashboard.js.map +7 -0
  8. package/dist/cli/commands/handoff.js +125 -8
  9. package/dist/cli/commands/handoff.js.map +2 -2
  10. package/dist/cli/commands/linear-create.js +132 -0
  11. package/dist/cli/commands/linear-create.js.map +7 -0
  12. package/dist/cli/commands/linear-list.js +69 -0
  13. package/dist/cli/commands/linear-list.js.map +7 -0
  14. package/dist/cli/commands/linear-migrate.js +40 -0
  15. package/dist/cli/commands/linear-migrate.js.map +7 -0
  16. package/dist/cli/commands/linear.js +185 -36
  17. package/dist/cli/commands/linear.js.map +2 -2
  18. package/dist/cli/commands/monitor.js +309 -0
  19. package/dist/cli/commands/monitor.js.map +7 -0
  20. package/dist/cli/commands/quality.js +414 -0
  21. package/dist/cli/commands/quality.js.map +7 -0
  22. package/dist/cli/commands/storage.js +275 -0
  23. package/dist/cli/commands/storage.js.map +7 -0
  24. package/dist/cli/commands/tui.js +66 -0
  25. package/dist/cli/commands/tui.js.map +7 -0
  26. package/dist/cli/commands/workflow.js +134 -0
  27. package/dist/cli/commands/workflow.js.map +7 -0
  28. package/dist/cli/index.js +104 -8
  29. package/dist/cli/index.js.map +3 -3
  30. package/dist/core/analytics/team-analytics.js +374 -0
  31. package/dist/core/analytics/team-analytics.js.map +7 -0
  32. package/dist/core/context/context-bridge.js +234 -0
  33. package/dist/core/context/context-bridge.js.map +7 -0
  34. package/dist/core/context/dual-stack-manager.js +850 -0
  35. package/dist/core/context/dual-stack-manager.js.map +7 -0
  36. package/dist/core/context/frame-handoff-manager.js +384 -0
  37. package/dist/core/context/frame-handoff-manager.js.map +7 -0
  38. package/dist/core/context/frame-manager.js +132 -12
  39. package/dist/core/context/frame-manager.js.map +2 -2
  40. package/dist/core/context/permission-manager.js +181 -0
  41. package/dist/core/context/permission-manager.js.map +7 -0
  42. package/dist/core/context/shared-context-layer.js +386 -0
  43. package/dist/core/context/shared-context-layer.js.map +7 -0
  44. package/dist/core/context/stack-merge-resolver.js +600 -0
  45. package/dist/core/context/stack-merge-resolver.js.map +7 -0
  46. package/dist/core/context/validation.js +121 -0
  47. package/dist/core/context/validation.js.map +7 -0
  48. package/dist/core/database/connection-pool.js +266 -175
  49. package/dist/core/database/connection-pool.js.map +2 -2
  50. package/dist/core/database/database-adapter.js +51 -0
  51. package/dist/core/database/database-adapter.js.map +7 -0
  52. package/dist/core/database/migration-manager.js +514 -0
  53. package/dist/core/database/migration-manager.js.map +7 -0
  54. package/dist/core/database/paradedb-adapter.js +970 -0
  55. package/dist/core/database/paradedb-adapter.js.map +7 -0
  56. package/dist/core/database/query-router.js +421 -0
  57. package/dist/core/database/query-router.js.map +7 -0
  58. package/dist/core/database/sqlite-adapter.js +547 -0
  59. package/dist/core/database/sqlite-adapter.js.map +7 -0
  60. package/dist/core/errors/index.js +21 -1
  61. package/dist/core/errors/index.js.map +2 -2
  62. package/dist/core/frame/workflow-templates-stub.js +42 -0
  63. package/dist/core/frame/workflow-templates-stub.js.map +7 -0
  64. package/dist/core/frame/workflow-templates.js +276 -0
  65. package/dist/core/frame/workflow-templates.js.map +7 -0
  66. package/dist/core/merge/conflict-detector.js +5 -2
  67. package/dist/core/merge/conflict-detector.js.map +2 -2
  68. package/dist/core/merge/resolution-engine.js +3 -14
  69. package/dist/core/merge/resolution-engine.js.map +2 -2
  70. package/dist/core/merge/stack-diff.js.map +2 -2
  71. package/dist/core/monitoring/logger.js +18 -3
  72. package/dist/core/monitoring/logger.js.map +2 -2
  73. package/dist/core/monitoring/session-monitor.js +296 -0
  74. package/dist/core/monitoring/session-monitor.js.map +7 -0
  75. package/dist/core/retrieval/context-retriever.js +475 -0
  76. package/dist/core/retrieval/context-retriever.js.map +7 -0
  77. package/dist/core/retrieval/graph-retrieval.js +658 -0
  78. package/dist/core/retrieval/graph-retrieval.js.map +7 -0
  79. package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
  80. package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
  81. package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
  82. package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
  83. package/dist/core/session/clear-survival-stub.js +49 -0
  84. package/dist/core/session/clear-survival-stub.js.map +7 -0
  85. package/dist/core/session/clear-survival.js +426 -0
  86. package/dist/core/session/clear-survival.js.map +7 -0
  87. package/dist/core/session/handoff-generator.js +339 -0
  88. package/dist/core/session/handoff-generator.js.map +7 -0
  89. package/dist/core/session/session-manager.js +61 -26
  90. package/dist/core/session/session-manager.js.map +3 -3
  91. package/dist/core/skills/index.js +3 -0
  92. package/dist/core/skills/index.js.map +7 -0
  93. package/dist/core/skills/skill-storage.js +749 -0
  94. package/dist/core/skills/skill-storage.js.map +7 -0
  95. package/dist/core/skills/types.js +189 -0
  96. package/dist/core/skills/types.js.map +7 -0
  97. package/dist/core/storage/railway-optimized-storage.js +550 -0
  98. package/dist/core/storage/railway-optimized-storage.js.map +7 -0
  99. package/dist/core/storage/remote-storage.js +456 -0
  100. package/dist/core/storage/remote-storage.js.map +7 -0
  101. package/dist/core/trace/trace-detector.js +136 -5
  102. package/dist/core/trace/trace-detector.js.map +2 -2
  103. package/dist/core/trace/trace-store.js.map +2 -2
  104. package/dist/features/tui/components/analytics-panel.js +136 -0
  105. package/dist/features/tui/components/analytics-panel.js.map +7 -0
  106. package/dist/features/tui/components/frame-visualizer.js +377 -0
  107. package/dist/features/tui/components/frame-visualizer.js.map +7 -0
  108. package/dist/features/tui/components/pr-tracker.js +123 -0
  109. package/dist/features/tui/components/pr-tracker.js.map +7 -0
  110. package/dist/features/tui/components/session-monitor.js +286 -0
  111. package/dist/features/tui/components/session-monitor.js.map +7 -0
  112. package/dist/features/tui/components/subagent-fleet.js +388 -0
  113. package/dist/features/tui/components/subagent-fleet.js.map +7 -0
  114. package/dist/features/tui/components/task-board.js +475 -0
  115. package/dist/features/tui/components/task-board.js.map +7 -0
  116. package/dist/features/tui/index.js +397 -0
  117. package/dist/features/tui/index.js.map +7 -0
  118. package/dist/features/tui/services/data-service.js +654 -0
  119. package/dist/features/tui/services/data-service.js.map +7 -0
  120. package/dist/features/tui/services/websocket-client.js +149 -0
  121. package/dist/features/tui/services/websocket-client.js.map +7 -0
  122. package/dist/features/tui/terminal-compat.js +205 -0
  123. package/dist/features/tui/terminal-compat.js.map +7 -0
  124. package/dist/features/tui/types.js +1 -0
  125. package/dist/features/tui/types.js.map +7 -0
  126. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
  127. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  128. package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
  129. package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  130. package/dist/integrations/claude-code/post-task-hooks.js +541 -0
  131. package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
  132. package/dist/integrations/linear/client.js +22 -4
  133. package/dist/integrations/linear/client.js.map +2 -2
  134. package/dist/integrations/linear/migration.js +299 -0
  135. package/dist/integrations/linear/migration.js.map +7 -0
  136. package/dist/integrations/linear/oauth-server.js +396 -0
  137. package/dist/integrations/linear/oauth-server.js.map +7 -0
  138. package/dist/integrations/linear/rest-client.js +199 -0
  139. package/dist/integrations/linear/rest-client.js.map +7 -0
  140. package/dist/integrations/linear/sync.js +14 -2
  141. package/dist/integrations/linear/sync.js.map +2 -2
  142. package/dist/integrations/linear/webhook-handler.js +200 -0
  143. package/dist/integrations/linear/webhook-handler.js.map +7 -0
  144. package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
  145. package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  146. package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
  147. package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  148. package/dist/integrations/mcp/refactored-server.js +31 -3
  149. package/dist/integrations/mcp/refactored-server.js.map +2 -2
  150. package/dist/integrations/mcp/server.js +25 -7
  151. package/dist/integrations/mcp/server.js.map +2 -2
  152. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  153. package/dist/models/user.model.js +3 -0
  154. package/dist/models/user.model.js.map +2 -2
  155. package/dist/services/context-service.js.map +2 -2
  156. package/dist/utils/formatting.js +58 -0
  157. package/dist/utils/formatting.js.map +7 -0
  158. package/package.json +21 -5
  159. package/dist/cli/__tests__/index.test.js +0 -290
  160. package/dist/cli/__tests__/index.test.js.map +0 -7
  161. package/dist/core/config/__tests__/config-manager.test.js +0 -248
  162. package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
  163. package/dist/core/context/__tests__/frame-manager.test.js +0 -879
  164. package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
  165. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
  166. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
  167. package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
  168. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
  169. package/dist/core/errors/__tests__/error-handling.test.js +0 -270
  170. package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
  171. package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
  172. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
  173. package/dist/core/query/__tests__/query-parser.test.js +0 -301
  174. package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
  175. package/dist/core/query/__tests__/query-templates.test.js +0 -210
  176. package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
  177. package/dist/core/trace/trace-detector.test.js +0 -401
  178. package/dist/core/trace/trace-detector.test.js.map +0 -7
  179. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
  180. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
  181. package/dist/integrations/linear/__tests__/auth.test.js +0 -558
  182. package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
  183. package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
  184. package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
  185. package/dist/integrations/mcp/__tests__/server.test.js +0 -798
  186. package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
  187. package/dist/scripts/benchmark-performance.d.ts +0 -7
  188. package/dist/scripts/benchmark-performance.d.ts.map +0 -1
  189. package/dist/scripts/benchmark-performance.js +0 -44
  190. package/dist/scripts/benchmark-performance.js.map +0 -1
  191. package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
  192. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
  193. package/dist/scripts/cancel-duplicate-tasks.js +0 -172
  194. package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
  195. package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
  196. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
  197. package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
  198. package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
  199. package/dist/scripts/initialize.d.ts +0 -6
  200. package/dist/scripts/initialize.d.ts.map +0 -1
  201. package/dist/scripts/initialize.js +0 -93
  202. package/dist/scripts/initialize.js.map +0 -1
  203. package/dist/scripts/list-linear-tasks.d.ts +0 -6
  204. package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
  205. package/dist/scripts/list-linear-tasks.js +0 -121
  206. package/dist/scripts/list-linear-tasks.js.map +0 -1
  207. package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
  208. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
  209. package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
  210. package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
  211. package/dist/scripts/show-linear-summary.d.ts +0 -6
  212. package/dist/scripts/show-linear-summary.d.ts.map +0 -1
  213. package/dist/scripts/show-linear-summary.js +0 -120
  214. package/dist/scripts/show-linear-summary.js.map +0 -1
  215. package/dist/scripts/status.d.ts +0 -6
  216. package/dist/scripts/status.d.ts.map +0 -1
  217. package/dist/scripts/status.js +0 -101
  218. package/dist/scripts/status.js.map +0 -1
  219. package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
  220. package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
  221. package/dist/src/agents/core/agent-task-manager.js +0 -504
  222. package/dist/src/agents/core/agent-task-manager.js.map +0 -1
  223. package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
  224. package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
  225. package/dist/src/agents/verifiers/base-verifier.js +0 -130
  226. package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
  227. package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
  228. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
  229. package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
  230. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
  231. package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
  232. package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
  233. package/dist/src/agents/verifiers/llm-judge.js +0 -248
  234. package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
  235. package/dist/src/cli/auto-detect.d.ts +0 -61
  236. package/dist/src/cli/auto-detect.d.ts.map +0 -1
  237. package/dist/src/cli/auto-detect.js +0 -350
  238. package/dist/src/cli/auto-detect.js.map +0 -1
  239. package/dist/src/cli/browser-test.d.ts +0 -6
  240. package/dist/src/cli/browser-test.d.ts.map +0 -1
  241. package/dist/src/cli/browser-test.js +0 -32
  242. package/dist/src/cli/browser-test.js.map +0 -1
  243. package/dist/src/cli/claude-sm.d.ts +0 -7
  244. package/dist/src/cli/claude-sm.d.ts.map +0 -1
  245. package/dist/src/cli/claude-sm.js +0 -412
  246. package/dist/src/cli/claude-sm.js.map +0 -1
  247. package/dist/src/cli/commands/agent.d.ts +0 -9
  248. package/dist/src/cli/commands/agent.d.ts.map +0 -1
  249. package/dist/src/cli/commands/agent.js +0 -303
  250. package/dist/src/cli/commands/agent.js.map +0 -1
  251. package/dist/src/cli/commands/config.d.ts +0 -6
  252. package/dist/src/cli/commands/config.d.ts.map +0 -1
  253. package/dist/src/cli/commands/config.js +0 -224
  254. package/dist/src/cli/commands/config.js.map +0 -1
  255. package/dist/src/cli/commands/context.d.ts +0 -7
  256. package/dist/src/cli/commands/context.d.ts.map +0 -1
  257. package/dist/src/cli/commands/context.js +0 -365
  258. package/dist/src/cli/commands/context.js.map +0 -1
  259. package/dist/src/cli/commands/handoff.d.ts +0 -6
  260. package/dist/src/cli/commands/handoff.d.ts.map +0 -1
  261. package/dist/src/cli/commands/handoff.js +0 -212
  262. package/dist/src/cli/commands/handoff.js.map +0 -1
  263. package/dist/src/cli/commands/linear-test.d.ts +0 -6
  264. package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
  265. package/dist/src/cli/commands/linear-test.js +0 -123
  266. package/dist/src/cli/commands/linear-test.js.map +0 -1
  267. package/dist/src/cli/commands/linear.d.ts +0 -6
  268. package/dist/src/cli/commands/linear.d.ts.map +0 -1
  269. package/dist/src/cli/commands/linear.js +0 -393
  270. package/dist/src/cli/commands/linear.js.map +0 -1
  271. package/dist/src/cli/commands/log.d.ts +0 -7
  272. package/dist/src/cli/commands/log.d.ts.map +0 -1
  273. package/dist/src/cli/commands/log.js +0 -168
  274. package/dist/src/cli/commands/log.js.map +0 -1
  275. package/dist/src/cli/commands/onboard.d.ts +0 -8
  276. package/dist/src/cli/commands/onboard.d.ts.map +0 -1
  277. package/dist/src/cli/commands/onboard.js +0 -363
  278. package/dist/src/cli/commands/onboard.js.map +0 -1
  279. package/dist/src/cli/commands/projects.d.ts +0 -8
  280. package/dist/src/cli/commands/projects.d.ts.map +0 -1
  281. package/dist/src/cli/commands/projects.js +0 -220
  282. package/dist/src/cli/commands/projects.js.map +0 -1
  283. package/dist/src/cli/commands/search.d.ts +0 -7
  284. package/dist/src/cli/commands/search.d.ts.map +0 -1
  285. package/dist/src/cli/commands/search.js +0 -162
  286. package/dist/src/cli/commands/search.js.map +0 -1
  287. package/dist/src/cli/commands/session.d.ts +0 -7
  288. package/dist/src/cli/commands/session.d.ts.map +0 -1
  289. package/dist/src/cli/commands/session.js +0 -222
  290. package/dist/src/cli/commands/session.js.map +0 -1
  291. package/dist/src/cli/commands/tasks.d.ts +0 -7
  292. package/dist/src/cli/commands/tasks.d.ts.map +0 -1
  293. package/dist/src/cli/commands/tasks.js +0 -229
  294. package/dist/src/cli/commands/tasks.js.map +0 -1
  295. package/dist/src/cli/commands/webhook.d.ts +0 -3
  296. package/dist/src/cli/commands/webhook.d.ts.map +0 -1
  297. package/dist/src/cli/commands/webhook.js +0 -157
  298. package/dist/src/cli/commands/webhook.js.map +0 -1
  299. package/dist/src/cli/commands/worktree.d.ts +0 -8
  300. package/dist/src/cli/commands/worktree.d.ts.map +0 -1
  301. package/dist/src/cli/commands/worktree.js +0 -339
  302. package/dist/src/cli/commands/worktree.js.map +0 -1
  303. package/dist/src/cli/index.d.ts +0 -8
  304. package/dist/src/cli/index.d.ts.map +0 -1
  305. package/dist/src/cli/index.js +0 -995
  306. package/dist/src/cli/index.js.map +0 -1
  307. package/dist/src/cli/utils/viewer.d.ts +0 -3
  308. package/dist/src/cli/utils/viewer.d.ts.map +0 -1
  309. package/dist/src/cli/utils/viewer.js +0 -91
  310. package/dist/src/cli/utils/viewer.js.map +0 -1
  311. package/dist/src/core/config/config-manager.d.ts +0 -95
  312. package/dist/src/core/config/config-manager.d.ts.map +0 -1
  313. package/dist/src/core/config/config-manager.js +0 -359
  314. package/dist/src/core/config/config-manager.js.map +0 -1
  315. package/dist/src/core/config/types.d.ts +0 -72
  316. package/dist/src/core/config/types.d.ts.map +0 -1
  317. package/dist/src/core/config/types.js +0 -127
  318. package/dist/src/core/config/types.js.map +0 -1
  319. package/dist/src/core/context/auto-context.d.ts +0 -22
  320. package/dist/src/core/context/auto-context.d.ts.map +0 -1
  321. package/dist/src/core/context/auto-context.js +0 -77
  322. package/dist/src/core/context/auto-context.js.map +0 -1
  323. package/dist/src/core/context/compaction-handler.d.ts +0 -119
  324. package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
  325. package/dist/src/core/context/compaction-handler.js +0 -306
  326. package/dist/src/core/context/compaction-handler.js.map +0 -1
  327. package/dist/src/core/context/frame-database.d.ts +0 -59
  328. package/dist/src/core/context/frame-database.d.ts.map +0 -1
  329. package/dist/src/core/context/frame-database.js +0 -333
  330. package/dist/src/core/context/frame-database.js.map +0 -1
  331. package/dist/src/core/context/frame-digest.d.ts +0 -59
  332. package/dist/src/core/context/frame-digest.d.ts.map +0 -1
  333. package/dist/src/core/context/frame-digest.js +0 -264
  334. package/dist/src/core/context/frame-digest.js.map +0 -1
  335. package/dist/src/core/context/frame-manager.d.ts +0 -112
  336. package/dist/src/core/context/frame-manager.d.ts.map +0 -1
  337. package/dist/src/core/context/frame-manager.js +0 -600
  338. package/dist/src/core/context/frame-manager.js.map +0 -1
  339. package/dist/src/core/context/frame-stack.d.ts +0 -85
  340. package/dist/src/core/context/frame-stack.d.ts.map +0 -1
  341. package/dist/src/core/context/frame-stack.js +0 -287
  342. package/dist/src/core/context/frame-stack.js.map +0 -1
  343. package/dist/src/core/context/frame-types.d.ts +0 -67
  344. package/dist/src/core/context/frame-types.d.ts.map +0 -1
  345. package/dist/src/core/context/frame-types.js +0 -6
  346. package/dist/src/core/context/frame-types.js.map +0 -1
  347. package/dist/src/core/context/index.d.ts +0 -11
  348. package/dist/src/core/context/index.d.ts.map +0 -1
  349. package/dist/src/core/context/index.js +0 -14
  350. package/dist/src/core/context/index.js.map +0 -1
  351. package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
  352. package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
  353. package/dist/src/core/context/model-aware-compaction.js +0 -616
  354. package/dist/src/core/context/model-aware-compaction.js.map +0 -1
  355. package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
  356. package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
  357. package/dist/src/core/context/refactored-frame-manager.js +0 -340
  358. package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
  359. package/dist/src/core/database/batch-operations.d.ts +0 -118
  360. package/dist/src/core/database/batch-operations.d.ts.map +0 -1
  361. package/dist/src/core/database/batch-operations.js +0 -339
  362. package/dist/src/core/database/batch-operations.js.map +0 -1
  363. package/dist/src/core/database/connection-pool.d.ts +0 -79
  364. package/dist/src/core/database/connection-pool.d.ts.map +0 -1
  365. package/dist/src/core/database/connection-pool.js +0 -236
  366. package/dist/src/core/database/connection-pool.js.map +0 -1
  367. package/dist/src/core/database/query-cache.d.ts +0 -135
  368. package/dist/src/core/database/query-cache.d.ts.map +0 -1
  369. package/dist/src/core/database/query-cache.js +0 -294
  370. package/dist/src/core/database/query-cache.js.map +0 -1
  371. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
  372. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
  373. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
  374. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
  375. package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
  376. package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
  377. package/dist/src/core/digest/frame-digest-integration.js +0 -198
  378. package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
  379. package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
  380. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
  381. package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
  382. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
  383. package/dist/src/core/digest/index.d.ts +0 -9
  384. package/dist/src/core/digest/index.d.ts.map +0 -1
  385. package/dist/src/core/digest/index.js +0 -9
  386. package/dist/src/core/digest/index.js.map +0 -1
  387. package/dist/src/core/digest/types.d.ts +0 -154
  388. package/dist/src/core/digest/types.d.ts.map +0 -1
  389. package/dist/src/core/digest/types.js +0 -18
  390. package/dist/src/core/digest/types.js.map +0 -1
  391. package/dist/src/core/errors/index.d.ts +0 -143
  392. package/dist/src/core/errors/index.d.ts.map +0 -1
  393. package/dist/src/core/errors/index.js +0 -282
  394. package/dist/src/core/errors/index.js.map +0 -1
  395. package/dist/src/core/errors/recovery.d.ts +0 -86
  396. package/dist/src/core/errors/recovery.d.ts.map +0 -1
  397. package/dist/src/core/errors/recovery.js +0 -274
  398. package/dist/src/core/errors/recovery.js.map +0 -1
  399. package/dist/src/core/merge/conflict-detector.d.ts +0 -122
  400. package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
  401. package/dist/src/core/merge/conflict-detector.js +0 -468
  402. package/dist/src/core/merge/conflict-detector.js.map +0 -1
  403. package/dist/src/core/merge/index.d.ts +0 -9
  404. package/dist/src/core/merge/index.d.ts.map +0 -1
  405. package/dist/src/core/merge/index.js +0 -9
  406. package/dist/src/core/merge/index.js.map +0 -1
  407. package/dist/src/core/merge/resolution-engine.d.ts +0 -120
  408. package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
  409. package/dist/src/core/merge/resolution-engine.js +0 -573
  410. package/dist/src/core/merge/resolution-engine.js.map +0 -1
  411. package/dist/src/core/merge/stack-diff.d.ts +0 -97
  412. package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
  413. package/dist/src/core/merge/stack-diff.js +0 -516
  414. package/dist/src/core/merge/stack-diff.js.map +0 -1
  415. package/dist/src/core/merge/types.d.ts +0 -110
  416. package/dist/src/core/merge/types.d.ts.map +0 -1
  417. package/dist/src/core/merge/types.js +0 -6
  418. package/dist/src/core/merge/types.js.map +0 -1
  419. package/dist/src/core/monitoring/error-handler.d.ts +0 -46
  420. package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
  421. package/dist/src/core/monitoring/error-handler.js +0 -212
  422. package/dist/src/core/monitoring/error-handler.js.map +0 -1
  423. package/dist/src/core/monitoring/logger.d.ts +0 -24
  424. package/dist/src/core/monitoring/logger.d.ts.map +0 -1
  425. package/dist/src/core/monitoring/logger.js +0 -126
  426. package/dist/src/core/monitoring/logger.js.map +0 -1
  427. package/dist/src/core/monitoring/metrics.d.ts +0 -10
  428. package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
  429. package/dist/src/core/monitoring/metrics.js +0 -152
  430. package/dist/src/core/monitoring/metrics.js.map +0 -1
  431. package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
  432. package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
  433. package/dist/src/core/monitoring/progress-tracker.js +0 -178
  434. package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
  435. package/dist/src/core/performance/context-cache.d.ts +0 -109
  436. package/dist/src/core/performance/context-cache.d.ts.map +0 -1
  437. package/dist/src/core/performance/context-cache.js +0 -280
  438. package/dist/src/core/performance/context-cache.js.map +0 -1
  439. package/dist/src/core/performance/index.d.ts +0 -3
  440. package/dist/src/core/performance/index.d.ts.map +0 -1
  441. package/dist/src/core/performance/index.js +0 -3
  442. package/dist/src/core/performance/index.js.map +0 -1
  443. package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
  444. package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
  445. package/dist/src/core/performance/lazy-context-loader.js +0 -332
  446. package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
  447. package/dist/src/core/performance/monitor.d.ts +0 -48
  448. package/dist/src/core/performance/monitor.d.ts.map +0 -1
  449. package/dist/src/core/performance/monitor.js +0 -226
  450. package/dist/src/core/performance/monitor.js.map +0 -1
  451. package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
  452. package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
  453. package/dist/src/core/performance/optimized-frame-context.js +0 -330
  454. package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
  455. package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
  456. package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
  457. package/dist/src/core/performance/performance-benchmark.js +0 -290
  458. package/dist/src/core/performance/performance-benchmark.js.map +0 -1
  459. package/dist/src/core/performance/performance-profiler.d.ts +0 -151
  460. package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
  461. package/dist/src/core/performance/performance-profiler.js +0 -346
  462. package/dist/src/core/performance/performance-profiler.js.map +0 -1
  463. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
  464. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
  465. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
  466. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
  467. package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
  468. package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
  469. package/dist/src/core/persistence/postgres-adapter.js +0 -330
  470. package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
  471. package/dist/src/core/projects/project-manager.d.ts +0 -130
  472. package/dist/src/core/projects/project-manager.d.ts.map +0 -1
  473. package/dist/src/core/projects/project-manager.js +0 -709
  474. package/dist/src/core/projects/project-manager.js.map +0 -1
  475. package/dist/src/core/query/query-parser.d.ts +0 -109
  476. package/dist/src/core/query/query-parser.d.ts.map +0 -1
  477. package/dist/src/core/query/query-parser.js +0 -415
  478. package/dist/src/core/query/query-parser.js.map +0 -1
  479. package/dist/src/core/query/query-templates.d.ts +0 -44
  480. package/dist/src/core/query/query-templates.d.ts.map +0 -1
  481. package/dist/src/core/query/query-templates.js +0 -326
  482. package/dist/src/core/query/query-templates.js.map +0 -1
  483. package/dist/src/core/retrieval/index.d.ts +0 -8
  484. package/dist/src/core/retrieval/index.d.ts.map +0 -1
  485. package/dist/src/core/retrieval/index.js +0 -8
  486. package/dist/src/core/retrieval/index.js.map +0 -1
  487. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
  488. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
  489. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
  490. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
  491. package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
  492. package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
  493. package/dist/src/core/retrieval/summary-generator.js +0 -622
  494. package/dist/src/core/retrieval/summary-generator.js.map +0 -1
  495. package/dist/src/core/retrieval/types.d.ts +0 -257
  496. package/dist/src/core/retrieval/types.d.ts.map +0 -1
  497. package/dist/src/core/retrieval/types.js +0 -18
  498. package/dist/src/core/retrieval/types.js.map +0 -1
  499. package/dist/src/core/session/index.d.ts +0 -2
  500. package/dist/src/core/session/index.d.ts.map +0 -1
  501. package/dist/src/core/session/index.js +0 -2
  502. package/dist/src/core/session/index.js.map +0 -1
  503. package/dist/src/core/session/session-manager.d.ts +0 -69
  504. package/dist/src/core/session/session-manager.d.ts.map +0 -1
  505. package/dist/src/core/session/session-manager.js +0 -311
  506. package/dist/src/core/session/session-manager.js.map +0 -1
  507. package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
  508. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
  509. package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
  510. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
  511. package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
  512. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
  513. package/dist/src/core/trace/db-trace-wrapper.js +0 -252
  514. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
  515. package/dist/src/core/trace/debug-trace.d.ts +0 -84
  516. package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
  517. package/dist/src/core/trace/debug-trace.js +0 -402
  518. package/dist/src/core/trace/debug-trace.js.map +0 -1
  519. package/dist/src/core/trace/error-test.d.ts +0 -6
  520. package/dist/src/core/trace/error-test.d.ts.map +0 -1
  521. package/dist/src/core/trace/error-test.js +0 -128
  522. package/dist/src/core/trace/error-test.js.map +0 -1
  523. package/dist/src/core/trace/index.d.ts +0 -25
  524. package/dist/src/core/trace/index.d.ts.map +0 -1
  525. package/dist/src/core/trace/index.js +0 -121
  526. package/dist/src/core/trace/index.js.map +0 -1
  527. package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
  528. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
  529. package/dist/src/core/trace/linear-api-wrapper.js +0 -205
  530. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
  531. package/dist/src/core/trace/performance-test.d.ts +0 -6
  532. package/dist/src/core/trace/performance-test.d.ts.map +0 -1
  533. package/dist/src/core/trace/performance-test.js +0 -111
  534. package/dist/src/core/trace/performance-test.js.map +0 -1
  535. package/dist/src/core/trace/trace-demo.d.ts +0 -8
  536. package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
  537. package/dist/src/core/trace/trace-demo.js +0 -154
  538. package/dist/src/core/trace/trace-demo.js.map +0 -1
  539. package/dist/src/core/trace/trace-detector.d.ts +0 -108
  540. package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
  541. package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
  542. package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
  543. package/dist/src/core/trace/trace-detector.demo.js +0 -145
  544. package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
  545. package/dist/src/core/trace/trace-detector.js +0 -425
  546. package/dist/src/core/trace/trace-detector.js.map +0 -1
  547. package/dist/src/core/trace/trace-store.d.ts +0 -60
  548. package/dist/src/core/trace/trace-store.d.ts.map +0 -1
  549. package/dist/src/core/trace/trace-store.js +0 -323
  550. package/dist/src/core/trace/trace-store.js.map +0 -1
  551. package/dist/src/core/trace/types.d.ts +0 -81
  552. package/dist/src/core/trace/types.d.ts.map +0 -1
  553. package/dist/src/core/trace/types.js +0 -70
  554. package/dist/src/core/trace/types.js.map +0 -1
  555. package/dist/src/core/types.d.ts +0 -35
  556. package/dist/src/core/types.d.ts.map +0 -1
  557. package/dist/src/core/types.js +0 -2
  558. package/dist/src/core/types.js.map +0 -1
  559. package/dist/src/core/utils/update-checker.d.ts +0 -38
  560. package/dist/src/core/utils/update-checker.d.ts.map +0 -1
  561. package/dist/src/core/utils/update-checker.js +0 -213
  562. package/dist/src/core/utils/update-checker.js.map +0 -1
  563. package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
  564. package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
  565. package/dist/src/core/worktree/worktree-manager.js +0 -456
  566. package/dist/src/core/worktree/worktree-manager.js.map +0 -1
  567. package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
  568. package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
  569. package/dist/src/features/analytics/api/analytics-api.js +0 -289
  570. package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
  571. package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
  572. package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
  573. package/dist/src/features/analytics/core/analytics-service.js +0 -275
  574. package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
  575. package/dist/src/features/analytics/index.d.ts +0 -12
  576. package/dist/src/features/analytics/index.d.ts.map +0 -1
  577. package/dist/src/features/analytics/index.js +0 -11
  578. package/dist/src/features/analytics/index.js.map +0 -1
  579. package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
  580. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
  581. package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
  582. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
  583. package/dist/src/features/analytics/types/metrics.d.ts +0 -60
  584. package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
  585. package/dist/src/features/analytics/types/metrics.js +0 -2
  586. package/dist/src/features/analytics/types/metrics.js.map +0 -1
  587. package/dist/src/features/browser/browser-mcp.d.ts +0 -94
  588. package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
  589. package/dist/src/features/browser/browser-mcp.js +0 -459
  590. package/dist/src/features/browser/browser-mcp.js.map +0 -1
  591. package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
  592. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
  593. package/dist/src/features/tasks/pebbles-task-store.js +0 -572
  594. package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
  595. package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
  596. package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
  597. package/dist/src/features/tasks/task-aware-context.js +0 -412
  598. package/dist/src/features/tasks/task-aware-context.js.map +0 -1
  599. package/dist/src/index.d.ts +0 -21
  600. package/dist/src/index.d.ts.map +0 -1
  601. package/dist/src/index.js +0 -9
  602. package/dist/src/index.js.map +0 -1
  603. package/dist/src/integrations/linear/auth.d.ts +0 -99
  604. package/dist/src/integrations/linear/auth.d.ts.map +0 -1
  605. package/dist/src/integrations/linear/auth.js +0 -319
  606. package/dist/src/integrations/linear/auth.js.map +0 -1
  607. package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
  608. package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
  609. package/dist/src/integrations/linear/auto-sync.js +0 -268
  610. package/dist/src/integrations/linear/auto-sync.js.map +0 -1
  611. package/dist/src/integrations/linear/client.d.ts +0 -127
  612. package/dist/src/integrations/linear/client.d.ts.map +0 -1
  613. package/dist/src/integrations/linear/client.js +0 -446
  614. package/dist/src/integrations/linear/client.js.map +0 -1
  615. package/dist/src/integrations/linear/config.d.ts +0 -51
  616. package/dist/src/integrations/linear/config.d.ts.map +0 -1
  617. package/dist/src/integrations/linear/config.js +0 -103
  618. package/dist/src/integrations/linear/config.js.map +0 -1
  619. package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
  620. package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
  621. package/dist/src/integrations/linear/sync-manager.js +0 -235
  622. package/dist/src/integrations/linear/sync-manager.js.map +0 -1
  623. package/dist/src/integrations/linear/sync-service.d.ts +0 -46
  624. package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
  625. package/dist/src/integrations/linear/sync-service.js +0 -217
  626. package/dist/src/integrations/linear/sync-service.js.map +0 -1
  627. package/dist/src/integrations/linear/sync.d.ts +0 -125
  628. package/dist/src/integrations/linear/sync.d.ts.map +0 -1
  629. package/dist/src/integrations/linear/sync.js +0 -563
  630. package/dist/src/integrations/linear/sync.js.map +0 -1
  631. package/dist/src/integrations/linear/types.d.ts +0 -90
  632. package/dist/src/integrations/linear/types.d.ts.map +0 -1
  633. package/dist/src/integrations/linear/types.js +0 -2
  634. package/dist/src/integrations/linear/types.js.map +0 -1
  635. package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
  636. package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
  637. package/dist/src/integrations/linear/webhook-server.js +0 -190
  638. package/dist/src/integrations/linear/webhook-server.js.map +0 -1
  639. package/dist/src/integrations/linear/webhook.d.ts +0 -108
  640. package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
  641. package/dist/src/integrations/linear/webhook.js +0 -291
  642. package/dist/src/integrations/linear/webhook.js.map +0 -1
  643. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
  644. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
  645. package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
  646. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
  647. package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
  648. package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
  649. package/dist/src/integrations/mcp/handlers/index.js +0 -134
  650. package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
  651. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
  652. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
  653. package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
  654. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
  655. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
  656. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
  657. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
  658. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
  659. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
  660. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
  661. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
  662. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
  663. package/dist/src/integrations/mcp/index.d.ts +0 -13
  664. package/dist/src/integrations/mcp/index.d.ts.map +0 -1
  665. package/dist/src/integrations/mcp/index.js +0 -17
  666. package/dist/src/integrations/mcp/index.js.map +0 -1
  667. package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
  668. package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
  669. package/dist/src/integrations/mcp/refactored-server.js +0 -351
  670. package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
  671. package/dist/src/integrations/mcp/server.d.ts +0 -54
  672. package/dist/src/integrations/mcp/server.d.ts.map +0 -1
  673. package/dist/src/integrations/mcp/server.js +0 -1616
  674. package/dist/src/integrations/mcp/server.js.map +0 -1
  675. package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
  676. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
  677. package/dist/src/integrations/mcp/tool-definitions.js +0 -563
  678. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
  679. package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
  680. package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
  681. package/dist/src/integrations/mcp/trace-test.js +0 -54
  682. package/dist/src/integrations/mcp/trace-test.js.map +0 -1
  683. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
  684. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
  685. package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
  686. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
  687. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
  688. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
  689. package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
  690. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
  691. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
  692. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
  693. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
  694. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
  695. package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
  696. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
  697. package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
  698. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
  699. package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
  700. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
  701. package/dist/src/middleware/exponential-rate-limiter.js +0 -293
  702. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
  703. package/dist/src/models/user.model.d.ts +0 -62
  704. package/dist/src/models/user.model.d.ts.map +0 -1
  705. package/dist/src/models/user.model.js +0 -311
  706. package/dist/src/models/user.model.js.map +0 -1
  707. package/dist/src/servers/production/auth-middleware.d.ts +0 -76
  708. package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
  709. package/dist/src/servers/production/auth-middleware.js +0 -558
  710. package/dist/src/servers/production/auth-middleware.js.map +0 -1
  711. package/dist/src/servers/railway/index.d.ts +0 -7
  712. package/dist/src/servers/railway/index.d.ts.map +0 -1
  713. package/dist/src/servers/railway/index.js +0 -401
  714. package/dist/src/servers/railway/index.js.map +0 -1
  715. package/dist/src/services/config-service.d.ts +0 -44
  716. package/dist/src/services/config-service.d.ts.map +0 -1
  717. package/dist/src/services/config-service.js +0 -61
  718. package/dist/src/services/config-service.js.map +0 -1
  719. package/dist/src/services/context-service.d.ts +0 -17
  720. package/dist/src/services/context-service.d.ts.map +0 -1
  721. package/dist/src/services/context-service.js +0 -173
  722. package/dist/src/services/context-service.js.map +0 -1
  723. package/dist/src/types/task.d.ts +0 -27
  724. package/dist/src/types/task.d.ts.map +0 -1
  725. package/dist/src/types/task.js +0 -2
  726. package/dist/src/types/task.js.map +0 -1
  727. package/dist/src/utils/logger.d.ts +0 -13
  728. package/dist/src/utils/logger.d.ts.map +0 -1
  729. package/dist/src/utils/logger.js +0 -52
  730. package/dist/src/utils/logger.js.map +0 -1
  731. package/dist/src/validation/schemas.d.ts +0 -633
  732. package/dist/src/validation/schemas.d.ts.map +0 -1
  733. package/dist/src/validation/schemas.js +0 -347
  734. package/dist/src/validation/schemas.js.map +0 -1
@@ -1,760 +0,0 @@
1
- import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
- import { LinearSyncService } from "../sync-service.js";
3
- const mockLinearClientInstance = {
4
- getIssues: vi.fn(),
5
- updateIssue: vi.fn(),
6
- createIssue: vi.fn()
7
- };
8
- const mockContextServiceInstance = {
9
- getTaskByExternalId: vi.fn(),
10
- updateTask: vi.fn(),
11
- createTask: vi.fn(),
12
- getTask: vi.fn(),
13
- deleteTask: vi.fn(),
14
- getAllTasks: vi.fn()
15
- };
16
- const mockConfigServiceInstance = {
17
- getConfig: vi.fn()
18
- };
19
- vi.mock("../client.js", () => ({
20
- LinearClient: class {
21
- getIssues = mockLinearClientInstance.getIssues;
22
- updateIssue = mockLinearClientInstance.updateIssue;
23
- createIssue = mockLinearClientInstance.createIssue;
24
- }
25
- }));
26
- vi.mock("../../../services/context-service.js", () => ({
27
- ContextService: class {
28
- getTaskByExternalId = mockContextServiceInstance.getTaskByExternalId;
29
- updateTask = mockContextServiceInstance.updateTask;
30
- createTask = mockContextServiceInstance.createTask;
31
- getTask = mockContextServiceInstance.getTask;
32
- deleteTask = mockContextServiceInstance.deleteTask;
33
- getAllTasks = mockContextServiceInstance.getAllTasks;
34
- }
35
- }));
36
- vi.mock("../../../services/config-service.js", () => ({
37
- ConfigService: class {
38
- getConfig = mockConfigServiceInstance.getConfig;
39
- }
40
- }));
41
- vi.mock("../../../utils/logger.js", () => ({
42
- Logger: class {
43
- info = vi.fn();
44
- error = vi.fn();
45
- debug = vi.fn();
46
- warn = vi.fn();
47
- }
48
- }));
49
- describe("LinearSyncService", () => {
50
- let syncService;
51
- let originalEnv;
52
- beforeEach(() => {
53
- originalEnv = process.env;
54
- process.env.LINEAR_API_KEY = "test-api-key";
55
- mockLinearClientInstance.getIssues.mockReset();
56
- mockLinearClientInstance.updateIssue.mockReset();
57
- mockLinearClientInstance.createIssue.mockReset();
58
- mockContextServiceInstance.getTaskByExternalId.mockReset();
59
- mockContextServiceInstance.updateTask.mockReset();
60
- mockContextServiceInstance.createTask.mockReset();
61
- mockContextServiceInstance.getTask.mockReset();
62
- mockContextServiceInstance.deleteTask.mockReset();
63
- mockContextServiceInstance.getAllTasks.mockReset();
64
- mockConfigServiceInstance.getConfig.mockReset();
65
- syncService = new LinearSyncService();
66
- });
67
- afterEach(() => {
68
- process.env = originalEnv;
69
- });
70
- const mockLinearClient = mockLinearClientInstance;
71
- const mockContextService = mockContextServiceInstance;
72
- const mockConfigService = mockConfigServiceInstance;
73
- describe("Initialization", () => {
74
- it("should initialize with Linear API key from environment", () => {
75
- expect(syncService).toBeDefined();
76
- });
77
- it("should throw error when LINEAR_API_KEY is not set", () => {
78
- delete process.env.LINEAR_API_KEY;
79
- expect(() => {
80
- new LinearSyncService();
81
- }).toThrow("LINEAR_API_KEY environment variable not set");
82
- });
83
- it("should initialize services correctly", () => {
84
- expect(syncService).toBeDefined();
85
- });
86
- });
87
- describe("syncAllIssues", () => {
88
- beforeEach(() => {
89
- mockConfigService.getConfig.mockResolvedValue({
90
- integrations: {
91
- linear: {
92
- teamId: "test-team-id"
93
- }
94
- }
95
- });
96
- });
97
- it("should sync all issues from Linear successfully", async () => {
98
- const mockIssues = [
99
- {
100
- id: "issue-1",
101
- identifier: "STA-1",
102
- title: "Test Issue 1",
103
- description: "Description 1",
104
- state: { type: "unstarted" },
105
- priority: 2,
106
- url: "https://linear.app/issue-1",
107
- team: { id: "team-1", key: "STA" },
108
- labels: [{ name: "bug" }],
109
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
110
- },
111
- {
112
- id: "issue-2",
113
- identifier: "STA-2",
114
- title: "Test Issue 2",
115
- description: "Description 2",
116
- state: { type: "completed" },
117
- priority: 3,
118
- url: "https://linear.app/issue-2",
119
- team: { id: "team-1", key: "STA" },
120
- labels: [],
121
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
122
- }
123
- ];
124
- mockLinearClient.getIssues.mockResolvedValue(mockIssues);
125
- mockContextService.getTaskByExternalId.mockResolvedValue(null);
126
- const result = await syncService.syncAllIssues();
127
- expect(result.created).toBe(2);
128
- expect(result.updated).toBe(0);
129
- expect(result.errors).toHaveLength(0);
130
- expect(mockContextService.createTask).toHaveBeenCalledTimes(2);
131
- });
132
- it("should update existing tasks when they have changes", async () => {
133
- const mockIssue = {
134
- id: "issue-1",
135
- identifier: "STA-1",
136
- title: "Updated Title",
137
- description: "Updated Description",
138
- state: { type: "completed" },
139
- priority: 3,
140
- url: "https://linear.app/issue-1",
141
- team: { id: "team-1", key: "STA" },
142
- labels: [{ name: "feature" }],
143
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
144
- };
145
- const existingTask = {
146
- id: "local-task-1",
147
- title: "Old Title",
148
- description: "Old Description",
149
- status: "todo",
150
- priority: "high",
151
- externalId: "issue-1"
152
- };
153
- mockLinearClient.getIssues.mockResolvedValue([mockIssue]);
154
- mockContextService.getTaskByExternalId.mockResolvedValue(existingTask);
155
- const result = await syncService.syncAllIssues();
156
- expect(result.created).toBe(0);
157
- expect(result.updated).toBe(1);
158
- expect(mockContextService.updateTask).toHaveBeenCalledWith(
159
- "local-task-1",
160
- expect.objectContaining({
161
- title: "Updated Title",
162
- description: "Updated Description",
163
- status: "done",
164
- priority: "medium"
165
- })
166
- );
167
- });
168
- it("should skip tasks without changes", async () => {
169
- const mockIssue = {
170
- id: "issue-1",
171
- identifier: "STA-1",
172
- title: "Same Title",
173
- description: "Same Description",
174
- state: { type: "unstarted" },
175
- priority: 2,
176
- url: "https://linear.app/issue-1",
177
- team: { id: "team-1", key: "STA" },
178
- labels: [{ name: "bug" }],
179
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
180
- };
181
- const existingTask = {
182
- id: "local-task-1",
183
- title: "Same Title",
184
- description: "Same Description",
185
- status: "todo",
186
- priority: "high",
187
- tags: ["bug"],
188
- externalId: "issue-1"
189
- };
190
- mockLinearClient.getIssues.mockResolvedValue([mockIssue]);
191
- mockContextService.getTaskByExternalId.mockResolvedValue(existingTask);
192
- const result = await syncService.syncAllIssues();
193
- expect(result.created).toBe(0);
194
- expect(result.updated).toBe(0);
195
- expect(mockContextService.updateTask).not.toHaveBeenCalled();
196
- });
197
- it("should handle sync errors gracefully", async () => {
198
- const mockIssues = [
199
- {
200
- id: "issue-1",
201
- identifier: "STA-1",
202
- title: "Test Issue",
203
- state: { type: "unstarted" },
204
- team: { id: "team-1", key: "STA" },
205
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
206
- }
207
- ];
208
- mockLinearClient.getIssues.mockResolvedValue(mockIssues);
209
- mockContextService.getTaskByExternalId.mockRejectedValue(
210
- new Error("Database error")
211
- );
212
- const result = await syncService.syncAllIssues();
213
- expect(result.errors).toHaveLength(1);
214
- expect(result.errors[0]).toContain("Failed to sync STA-1");
215
- });
216
- it("should throw error when Linear team ID is not configured", async () => {
217
- mockConfigService.getConfig.mockResolvedValue({
218
- integrations: {}
219
- });
220
- const result = await syncService.syncAllIssues();
221
- expect(result.errors).toContain("Linear team ID not configured");
222
- });
223
- it("should handle Linear API errors", async () => {
224
- mockConfigService.getConfig.mockResolvedValue({
225
- integrations: {
226
- linear: { teamId: "test-team-id" }
227
- }
228
- });
229
- mockLinearClient.getIssues.mockRejectedValue(
230
- new Error("Linear API error")
231
- );
232
- const result = await syncService.syncAllIssues();
233
- expect(result.errors).toContain("Linear API error");
234
- });
235
- });
236
- describe("syncIssueToLocal", () => {
237
- it("should create new local task from Linear issue", async () => {
238
- const mockIssue = {
239
- id: "issue-1",
240
- identifier: "STA-1",
241
- title: "New Issue",
242
- description: "Issue description",
243
- state: { type: "unstarted", id: "state-1", name: "Todo" },
244
- priority: 1,
245
- url: "https://linear.app/issue-1",
246
- team: { id: "team-1", key: "STA" },
247
- labels: [{ name: "bug" }, { name: "urgent" }],
248
- project: { id: "proj-1", name: "Main Project" },
249
- assignee: { id: "user-1", name: "John Doe" },
250
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
251
- };
252
- mockContextService.getTaskByExternalId.mockResolvedValue(null);
253
- const result = await syncService.syncIssueToLocal(mockIssue);
254
- expect(result).toBe("created");
255
- expect(mockContextService.createTask).toHaveBeenCalledWith(
256
- expect.objectContaining({
257
- title: "New Issue",
258
- description: "Issue description",
259
- status: "todo",
260
- priority: "urgent",
261
- externalId: "issue-1",
262
- externalIdentifier: "STA-1",
263
- externalUrl: "https://linear.app/issue-1",
264
- tags: ["bug", "urgent"],
265
- metadata: {
266
- linear: {
267
- stateId: "state-1",
268
- stateName: "Todo",
269
- assigneeId: "user-1",
270
- assigneeName: "John Doe"
271
- }
272
- }
273
- })
274
- );
275
- });
276
- it("should update existing local task", async () => {
277
- const mockIssue = {
278
- id: "issue-1",
279
- identifier: "STA-1",
280
- title: "Updated Issue",
281
- description: "Updated description",
282
- state: { type: "started", id: "state-2", name: "In Progress" },
283
- priority: 2,
284
- url: "https://linear.app/issue-1",
285
- team: { id: "team-1", key: "STA" },
286
- labels: [{ name: "feature" }],
287
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
288
- };
289
- const existingTask = {
290
- id: "local-1",
291
- title: "Old Title",
292
- description: "Old description",
293
- status: "todo",
294
- priority: "low",
295
- tags: ["old-tag"],
296
- externalId: "issue-1",
297
- createdAt: /* @__PURE__ */ new Date(),
298
- updatedAt: /* @__PURE__ */ new Date()
299
- };
300
- mockContextService.getTaskByExternalId.mockResolvedValue(existingTask);
301
- const result = await syncService.syncIssueToLocal(mockIssue);
302
- expect(result).toBe("updated");
303
- expect(mockContextService.updateTask).toHaveBeenCalledWith(
304
- "local-1",
305
- expect.objectContaining({
306
- title: "Updated Issue",
307
- description: "Updated description",
308
- status: "in_progress",
309
- priority: "high",
310
- externalId: "issue-1",
311
- externalIdentifier: "STA-1",
312
- externalUrl: "https://linear.app/issue-1",
313
- tags: ["feature"],
314
- metadata: {
315
- linear: {
316
- stateId: "state-2",
317
- stateName: "In Progress",
318
- assigneeId: void 0,
319
- assigneeName: void 0
320
- }
321
- }
322
- })
323
- );
324
- });
325
- it("should handle sync errors and rethrow", async () => {
326
- const mockIssue = {
327
- id: "issue-1",
328
- identifier: "STA-1",
329
- title: "Error Issue",
330
- state: { type: "unstarted" },
331
- team: { id: "team-1", key: "STA" },
332
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
333
- };
334
- mockContextService.getTaskByExternalId.mockRejectedValue(
335
- new Error("Database error")
336
- );
337
- await expect(syncService.syncIssueToLocal(mockIssue)).rejects.toThrow(
338
- "Database error"
339
- );
340
- });
341
- });
342
- describe("syncLocalToLinear", () => {
343
- beforeEach(() => {
344
- mockConfigService.getConfig.mockResolvedValue({
345
- integrations: {
346
- linear: {
347
- teamId: "test-team-id"
348
- }
349
- }
350
- });
351
- });
352
- it("should create new Linear issue from local task", async () => {
353
- const mockTask = {
354
- id: "local-1",
355
- title: "Local Task",
356
- description: "Local description",
357
- status: "todo",
358
- priority: "high",
359
- tags: [],
360
- createdAt: /* @__PURE__ */ new Date(),
361
- updatedAt: /* @__PURE__ */ new Date()
362
- };
363
- const mockCreatedIssue = {
364
- id: "issue-1",
365
- identifier: "STA-1",
366
- title: "Local Task",
367
- url: "https://linear.app/issue-1"
368
- };
369
- mockContextService.getTask.mockResolvedValue(mockTask);
370
- mockLinearClient.createIssue.mockResolvedValue(mockCreatedIssue);
371
- const result = await syncService.syncLocalToLinear("local-1");
372
- expect(result).toEqual(mockCreatedIssue);
373
- expect(mockLinearClient.createIssue).toHaveBeenCalledWith({
374
- title: "Local Task",
375
- description: "Local description",
376
- teamId: "test-team-id",
377
- priority: 2
378
- // high -> 2
379
- });
380
- expect(mockContextService.updateTask).toHaveBeenCalledWith("local-1", {
381
- externalId: "issue-1"
382
- });
383
- });
384
- it("should update existing Linear issue", async () => {
385
- const mockTask = {
386
- id: "local-1",
387
- title: "Updated Local Task",
388
- description: "Updated description",
389
- status: "in_progress",
390
- priority: "medium",
391
- tags: [],
392
- externalId: "issue-1",
393
- metadata: {
394
- linear: {
395
- stateId: "state-1",
396
- projectId: "proj-1",
397
- assigneeId: "user-1"
398
- }
399
- },
400
- createdAt: /* @__PURE__ */ new Date(),
401
- updatedAt: /* @__PURE__ */ new Date()
402
- };
403
- const mockUpdatedIssue = {
404
- id: "issue-1",
405
- identifier: "STA-1",
406
- title: "Updated Local Task"
407
- };
408
- mockContextService.getTask.mockResolvedValue(mockTask);
409
- mockLinearClient.updateIssue.mockResolvedValue(mockUpdatedIssue);
410
- const result = await syncService.syncLocalToLinear("local-1");
411
- expect(result).toEqual(mockUpdatedIssue);
412
- expect(mockLinearClient.updateIssue).toHaveBeenCalledWith("issue-1", {
413
- title: "Updated Local Task",
414
- description: "Updated description",
415
- priority: 3,
416
- // medium -> 3
417
- stateId: "state-1"
418
- });
419
- });
420
- it("should throw error for non-existent task", async () => {
421
- mockContextService.getTask.mockResolvedValue(null);
422
- await expect(
423
- syncService.syncLocalToLinear("non-existent")
424
- ).rejects.toThrow("Task non-existent not found");
425
- });
426
- it("should handle Linear API errors", async () => {
427
- const mockTask = {
428
- id: "local-1",
429
- title: "Task",
430
- description: "Test task description",
431
- status: "todo",
432
- priority: "medium",
433
- tags: [],
434
- createdAt: /* @__PURE__ */ new Date(),
435
- updatedAt: /* @__PURE__ */ new Date()
436
- };
437
- mockContextService.getTask.mockResolvedValue(mockTask);
438
- mockLinearClient.createIssue.mockRejectedValue(
439
- new Error("Linear API error")
440
- );
441
- await expect(syncService.syncLocalToLinear("local-1")).rejects.toThrow(
442
- "Linear API error"
443
- );
444
- });
445
- });
446
- describe("removeLocalIssue", () => {
447
- it("should remove local task by Linear identifier", async () => {
448
- const mockTasks = [
449
- {
450
- id: "local-1",
451
- title: "Task 1",
452
- description: "Task 1 description",
453
- status: "todo",
454
- priority: "medium",
455
- tags: [],
456
- externalIdentifier: "STA-1",
457
- createdAt: /* @__PURE__ */ new Date(),
458
- updatedAt: /* @__PURE__ */ new Date()
459
- },
460
- {
461
- id: "local-2",
462
- title: "Task 2",
463
- description: "Task 2 description",
464
- status: "todo",
465
- priority: "medium",
466
- tags: [],
467
- externalIdentifier: "STA-2",
468
- createdAt: /* @__PURE__ */ new Date(),
469
- updatedAt: /* @__PURE__ */ new Date()
470
- }
471
- ];
472
- mockContextService.getAllTasks.mockResolvedValue(mockTasks);
473
- await syncService.removeLocalIssue("STA-1");
474
- expect(mockContextService.deleteTask).toHaveBeenCalledWith("local-1");
475
- });
476
- it("should handle non-existent identifier gracefully", async () => {
477
- mockContextService.getAllTasks.mockResolvedValue([]);
478
- await expect(
479
- syncService.removeLocalIssue("NON-EXISTENT")
480
- ).resolves.not.toThrow();
481
- expect(mockContextService.deleteTask).not.toHaveBeenCalled();
482
- });
483
- it("should handle deletion errors", async () => {
484
- const mockTasks = [
485
- {
486
- id: "local-1",
487
- title: "Task",
488
- description: "Task description",
489
- status: "todo",
490
- priority: "medium",
491
- tags: [],
492
- externalIdentifier: "STA-1",
493
- createdAt: /* @__PURE__ */ new Date(),
494
- updatedAt: /* @__PURE__ */ new Date()
495
- }
496
- ];
497
- mockContextService.getAllTasks.mockResolvedValue(mockTasks);
498
- mockContextService.deleteTask.mockRejectedValue(
499
- new Error("Delete error")
500
- );
501
- await expect(syncService.removeLocalIssue("STA-1")).rejects.toThrow(
502
- "Delete error"
503
- );
504
- });
505
- });
506
- describe("Status and Priority Mapping", () => {
507
- beforeEach(() => {
508
- mockConfigService.getConfig.mockResolvedValue({
509
- integrations: {
510
- linear: {
511
- teamId: "test-team-id"
512
- }
513
- }
514
- });
515
- });
516
- it("should map Linear states to task statuses correctly", async () => {
517
- const testCases = [
518
- { linearState: "backlog", expectedStatus: "todo" },
519
- { linearState: "triage", expectedStatus: "todo" },
520
- { linearState: "unstarted", expectedStatus: "todo" },
521
- { linearState: "todo", expectedStatus: "todo" },
522
- { linearState: "started", expectedStatus: "in_progress" },
523
- { linearState: "in_progress", expectedStatus: "in_progress" },
524
- { linearState: "completed", expectedStatus: "done" },
525
- { linearState: "done", expectedStatus: "done" },
526
- { linearState: "canceled", expectedStatus: "cancelled" },
527
- { linearState: "cancelled", expectedStatus: "cancelled" },
528
- { linearState: "unknown", expectedStatus: "todo" }
529
- ];
530
- for (const { linearState, expectedStatus } of testCases) {
531
- const mockIssue = {
532
- id: "test-issue",
533
- identifier: "TEST-1",
534
- title: "Test",
535
- state: { type: linearState },
536
- team: { id: "team-1", key: "TEST" },
537
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
538
- };
539
- mockContextService.getTaskByExternalId.mockResolvedValue(null);
540
- await syncService.syncIssueToLocal(mockIssue);
541
- expect(mockContextService.createTask).toHaveBeenCalledWith(
542
- expect.objectContaining({ status: expectedStatus })
543
- );
544
- mockContextService.createTask.mockClear();
545
- mockContextService.getTaskByExternalId.mockClear();
546
- }
547
- });
548
- it("should map Linear priorities to task priorities correctly", async () => {
549
- const testCases = [
550
- { linearPriority: 1, expectedPriority: "urgent" },
551
- { linearPriority: 2, expectedPriority: "high" },
552
- { linearPriority: 3, expectedPriority: "medium" },
553
- { linearPriority: 4, expectedPriority: "low" },
554
- { linearPriority: void 0, expectedPriority: void 0 }
555
- ];
556
- for (const { linearPriority, expectedPriority } of testCases) {
557
- const mockIssue = {
558
- id: "test-issue",
559
- identifier: "TEST-1",
560
- title: "Test",
561
- state: { type: "unstarted" },
562
- priority: linearPriority,
563
- team: { id: "team-1", key: "TEST" },
564
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
565
- };
566
- mockContextService.getTaskByExternalId.mockResolvedValue(null);
567
- await syncService.syncIssueToLocal(mockIssue);
568
- expect(mockContextService.createTask).toHaveBeenCalledWith(
569
- expect.objectContaining({ priority: expectedPriority })
570
- );
571
- mockContextService.createTask.mockClear();
572
- mockContextService.getTaskByExternalId.mockClear();
573
- }
574
- });
575
- it("should map task priorities to Linear priorities correctly", async () => {
576
- const testCases = [
577
- { taskPriority: "urgent", expectedLinearPriority: 1 },
578
- { taskPriority: "high", expectedLinearPriority: 2 },
579
- { taskPriority: "medium", expectedLinearPriority: 3 },
580
- { taskPriority: "low", expectedLinearPriority: 4 },
581
- { taskPriority: void 0, expectedLinearPriority: 0 }
582
- ];
583
- for (const { taskPriority, expectedLinearPriority } of testCases) {
584
- const mockTask = {
585
- id: "local-1",
586
- title: "Test Task",
587
- description: "Test description",
588
- status: "todo",
589
- priority: taskPriority,
590
- tags: [],
591
- createdAt: /* @__PURE__ */ new Date(),
592
- updatedAt: /* @__PURE__ */ new Date()
593
- };
594
- mockContextService.getTask.mockResolvedValue(mockTask);
595
- mockLinearClient.createIssue.mockResolvedValue({
596
- id: "created",
597
- identifier: "TEST-1"
598
- });
599
- await syncService.syncLocalToLinear("local-1");
600
- expect(mockLinearClient.createIssue).toHaveBeenCalledWith(
601
- expect.objectContaining({ priority: expectedLinearPriority })
602
- );
603
- mockLinearClient.createIssue.mockClear();
604
- mockContextService.getTask.mockClear();
605
- mockContextService.updateTask.mockClear();
606
- }
607
- });
608
- });
609
- describe("Change Detection", () => {
610
- it("should detect changes in title", async () => {
611
- const existing = {
612
- id: "1",
613
- title: "Old Title",
614
- description: "Same",
615
- status: "todo",
616
- priority: "medium",
617
- tags: [],
618
- createdAt: /* @__PURE__ */ new Date(),
619
- updatedAt: /* @__PURE__ */ new Date()
620
- };
621
- mockContextService.getTaskByExternalId.mockResolvedValue(existing);
622
- const mockIssue = {
623
- id: "issue-1",
624
- identifier: "STA-1",
625
- title: "New Title",
626
- description: "Same",
627
- state: { type: "unstarted" },
628
- priority: 2,
629
- team: { id: "team-1", key: "STA" },
630
- labels: [],
631
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
632
- };
633
- await syncService.syncIssueToLocal(mockIssue);
634
- expect(mockContextService.updateTask).toHaveBeenCalled();
635
- });
636
- it("should detect changes in tags", async () => {
637
- const existing = {
638
- id: "1",
639
- title: "Same",
640
- description: "Same",
641
- status: "todo",
642
- priority: "medium",
643
- tags: ["old-tag"],
644
- createdAt: /* @__PURE__ */ new Date(),
645
- updatedAt: /* @__PURE__ */ new Date()
646
- };
647
- mockContextService.getTaskByExternalId.mockResolvedValue(existing);
648
- const mockIssue = {
649
- id: "issue-1",
650
- identifier: "STA-1",
651
- title: "Same",
652
- description: "Same",
653
- state: { type: "unstarted" },
654
- priority: 2,
655
- team: { id: "team-1", key: "STA" },
656
- labels: [{ name: "new-tag" }],
657
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
658
- };
659
- await syncService.syncIssueToLocal(mockIssue);
660
- expect(mockContextService.updateTask).toHaveBeenCalled();
661
- });
662
- it("should not update when no changes detected", async () => {
663
- const existing = {
664
- id: "1",
665
- title: "Same Title",
666
- description: "Same Description",
667
- status: "todo",
668
- priority: "high",
669
- // Linear priority 2 maps to 'high'
670
- tags: ["tag1"],
671
- createdAt: /* @__PURE__ */ new Date(),
672
- updatedAt: /* @__PURE__ */ new Date()
673
- };
674
- mockContextService.getTaskByExternalId.mockResolvedValue(existing);
675
- const mockIssue = {
676
- id: "issue-1",
677
- identifier: "STA-1",
678
- title: "Same Title",
679
- description: "Same Description",
680
- state: { type: "unstarted" },
681
- priority: 2,
682
- // Maps to 'high'
683
- team: { id: "team-1", key: "STA" },
684
- labels: [{ name: "tag1" }],
685
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
686
- };
687
- await syncService.syncIssueToLocal(mockIssue);
688
- expect(mockContextService.updateTask).not.toHaveBeenCalled();
689
- });
690
- });
691
- describe("Error Recovery and Edge Cases", () => {
692
- it("should handle partial sync failures gracefully", async () => {
693
- const mockIssues = [
694
- {
695
- id: "issue-1",
696
- identifier: "STA-1",
697
- title: "Good Issue",
698
- state: { type: "unstarted" },
699
- team: { id: "team-1", key: "STA" },
700
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
701
- },
702
- {
703
- id: "issue-2",
704
- identifier: "STA-2",
705
- title: "Bad Issue",
706
- state: { type: "unstarted" },
707
- team: { id: "team-1", key: "STA" },
708
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
709
- }
710
- ];
711
- mockConfigService.getConfig.mockResolvedValue({
712
- integrations: { linear: { teamId: "test-team-id" } }
713
- });
714
- mockLinearClient.getIssues.mockResolvedValue(mockIssues);
715
- mockContextService.getTaskByExternalId.mockResolvedValue(null);
716
- mockContextService.createTask.mockResolvedValueOnce("success").mockRejectedValueOnce(new Error("Creation failed"));
717
- const result = await syncService.syncAllIssues();
718
- expect(result.created).toBe(1);
719
- expect(result.errors).toHaveLength(1);
720
- expect(result.errors[0]).toContain("Failed to sync STA-2");
721
- });
722
- it("should handle empty issues list", async () => {
723
- mockConfigService.getConfig.mockResolvedValue({
724
- integrations: { linear: { teamId: "test-team-id" } }
725
- });
726
- mockLinearClient.getIssues.mockResolvedValue([]);
727
- const result = await syncService.syncAllIssues();
728
- expect(result.created).toBe(0);
729
- expect(result.updated).toBe(0);
730
- expect(result.errors).toHaveLength(0);
731
- });
732
- it("should handle malformed Linear issues", async () => {
733
- const malformedIssue = {
734
- // Missing required fields
735
- id: "issue-1",
736
- title: null,
737
- state: null,
738
- team: null
739
- };
740
- mockConfigService.getConfig.mockResolvedValue({
741
- integrations: { linear: { teamId: "test-team-id" } }
742
- });
743
- mockLinearClient.getIssues.mockResolvedValue([malformedIssue]);
744
- const result = await syncService.syncAllIssues();
745
- expect(result.errors).toHaveLength(1);
746
- });
747
- it("should handle network timeouts gracefully", async () => {
748
- mockConfigService.getConfig.mockResolvedValue({
749
- integrations: { linear: { teamId: "test-team-id" } }
750
- });
751
- const timeoutError = new Error("Request timeout");
752
- timeoutError.name = "TimeoutError";
753
- mockLinearClient.getIssues.mockRejectedValue(timeoutError);
754
- const result = await syncService.syncAllIssues();
755
- expect(result.errors).toHaveLength(1);
756
- expect(result.errors[0]).toContain("Request timeout");
757
- });
758
- });
759
- });
760
- //# sourceMappingURL=sync-service.test.js.map