@stackmemoryai/stackmemory 0.2.6 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. package/README.md +262 -83
  2. package/dist/scripts/cancel-duplicate-tasks.d.ts +7 -0
  3. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +1 -0
  4. package/dist/scripts/cancel-duplicate-tasks.js +172 -0
  5. package/dist/scripts/cancel-duplicate-tasks.js.map +1 -0
  6. package/dist/scripts/list-linear-tasks.d.ts +6 -0
  7. package/dist/scripts/list-linear-tasks.d.ts.map +1 -0
  8. package/dist/scripts/list-linear-tasks.js +121 -0
  9. package/dist/scripts/list-linear-tasks.js.map +1 -0
  10. package/dist/scripts/merge-linear-duplicates-safe.d.ts +7 -0
  11. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +1 -0
  12. package/dist/scripts/merge-linear-duplicates-safe.js +267 -0
  13. package/dist/scripts/merge-linear-duplicates-safe.js.map +1 -0
  14. package/dist/scripts/show-linear-summary.d.ts +6 -0
  15. package/dist/scripts/show-linear-summary.d.ts.map +1 -0
  16. package/dist/scripts/show-linear-summary.js +120 -0
  17. package/dist/scripts/show-linear-summary.js.map +1 -0
  18. package/dist/scripts/status.js +6 -2
  19. package/dist/scripts/status.js.map +1 -1
  20. package/dist/src/cli/auto-detect.d.ts +61 -0
  21. package/dist/src/cli/auto-detect.d.ts.map +1 -0
  22. package/dist/src/cli/auto-detect.js +350 -0
  23. package/dist/src/cli/auto-detect.js.map +1 -0
  24. package/dist/src/cli/claude-sm.d.ts +7 -0
  25. package/dist/src/cli/claude-sm.d.ts.map +1 -0
  26. package/dist/src/cli/claude-sm.js +357 -0
  27. package/dist/src/cli/claude-sm.js.map +1 -0
  28. package/dist/src/cli/commands/config.d.ts +6 -0
  29. package/dist/src/cli/commands/config.d.ts.map +1 -0
  30. package/dist/src/cli/commands/config.js +224 -0
  31. package/dist/src/cli/commands/config.js.map +1 -0
  32. package/dist/src/cli/commands/context.d.ts +7 -0
  33. package/dist/src/cli/commands/context.d.ts.map +1 -0
  34. package/dist/src/cli/commands/context.js +365 -0
  35. package/dist/src/cli/commands/context.js.map +1 -0
  36. package/dist/src/cli/commands/linear-test.d.ts +6 -0
  37. package/dist/src/cli/commands/linear-test.d.ts.map +1 -0
  38. package/dist/src/cli/commands/linear-test.js +123 -0
  39. package/dist/src/cli/commands/linear-test.js.map +1 -0
  40. package/dist/src/cli/commands/linear.d.ts +6 -0
  41. package/dist/src/cli/commands/linear.d.ts.map +1 -0
  42. package/dist/src/cli/commands/linear.js +393 -0
  43. package/dist/src/cli/commands/linear.js.map +1 -0
  44. package/dist/src/cli/commands/log.d.ts +7 -0
  45. package/dist/src/cli/commands/log.d.ts.map +1 -0
  46. package/dist/src/cli/commands/log.js +168 -0
  47. package/dist/src/cli/commands/log.js.map +1 -0
  48. package/dist/src/cli/commands/onboard.d.ts +8 -0
  49. package/dist/src/cli/commands/onboard.d.ts.map +1 -0
  50. package/dist/src/cli/commands/onboard.js +363 -0
  51. package/dist/src/cli/commands/onboard.js.map +1 -0
  52. package/dist/src/cli/commands/projects.js +1 -1
  53. package/dist/src/cli/commands/projects.js.map +1 -1
  54. package/dist/src/cli/commands/search.d.ts +7 -0
  55. package/dist/src/cli/commands/search.d.ts.map +1 -0
  56. package/dist/src/cli/commands/search.js +162 -0
  57. package/dist/src/cli/commands/search.js.map +1 -0
  58. package/dist/src/cli/commands/session.d.ts +7 -0
  59. package/dist/src/cli/commands/session.d.ts.map +1 -0
  60. package/dist/src/cli/commands/session.js +222 -0
  61. package/dist/src/cli/commands/session.js.map +1 -0
  62. package/dist/src/cli/commands/tasks.d.ts +7 -0
  63. package/dist/src/cli/commands/tasks.d.ts.map +1 -0
  64. package/dist/src/cli/commands/tasks.js +229 -0
  65. package/dist/src/cli/commands/tasks.js.map +1 -0
  66. package/dist/src/cli/commands/webhook.d.ts +3 -0
  67. package/dist/src/cli/commands/webhook.d.ts.map +1 -0
  68. package/dist/src/cli/commands/webhook.js +157 -0
  69. package/dist/src/cli/commands/webhook.js.map +1 -0
  70. package/dist/src/cli/commands/worktree.d.ts +8 -0
  71. package/dist/src/cli/commands/worktree.d.ts.map +1 -0
  72. package/dist/src/cli/commands/worktree.js +339 -0
  73. package/dist/src/cli/commands/worktree.js.map +1 -0
  74. package/dist/src/cli/index.d.ts +2 -1
  75. package/dist/src/cli/index.d.ts.map +1 -1
  76. package/dist/src/cli/index.js +337 -50
  77. package/dist/src/cli/index.js.map +1 -1
  78. package/dist/src/cli/utils/viewer.d.ts.map +1 -1
  79. package/dist/src/cli/utils/viewer.js +3 -1
  80. package/dist/src/cli/utils/viewer.js.map +1 -1
  81. package/dist/src/core/config/config-manager.d.ts +95 -0
  82. package/dist/src/core/config/config-manager.d.ts.map +1 -0
  83. package/dist/src/core/config/config-manager.js +359 -0
  84. package/dist/src/core/config/config-manager.js.map +1 -0
  85. package/dist/src/core/config/types.d.ts +72 -0
  86. package/dist/src/core/config/types.d.ts.map +1 -0
  87. package/dist/src/core/config/types.js +127 -0
  88. package/dist/src/core/config/types.js.map +1 -0
  89. package/dist/src/core/context/auto-context.d.ts +22 -0
  90. package/dist/src/core/context/auto-context.d.ts.map +1 -0
  91. package/dist/src/core/context/auto-context.js +77 -0
  92. package/dist/src/core/context/auto-context.js.map +1 -0
  93. package/dist/src/core/context/compaction-handler.d.ts +119 -0
  94. package/dist/src/core/context/compaction-handler.d.ts.map +1 -0
  95. package/dist/src/core/context/compaction-handler.js +306 -0
  96. package/dist/src/core/context/compaction-handler.js.map +1 -0
  97. package/dist/src/core/context/frame-manager.d.ts +4 -0
  98. package/dist/src/core/context/frame-manager.d.ts.map +1 -1
  99. package/dist/src/core/context/frame-manager.js +350 -144
  100. package/dist/src/core/context/frame-manager.js.map +1 -1
  101. package/dist/src/core/context/model-aware-compaction.d.ts +101 -0
  102. package/dist/src/core/context/model-aware-compaction.d.ts.map +1 -0
  103. package/dist/src/core/context/model-aware-compaction.js +616 -0
  104. package/dist/src/core/context/model-aware-compaction.js.map +1 -0
  105. package/dist/src/core/errors/index.d.ts +135 -0
  106. package/dist/src/core/errors/index.d.ts.map +1 -0
  107. package/dist/src/core/errors/index.js +274 -0
  108. package/dist/src/core/errors/index.js.map +1 -0
  109. package/dist/src/core/errors/recovery.d.ts +86 -0
  110. package/dist/src/core/errors/recovery.d.ts.map +1 -0
  111. package/dist/src/core/errors/recovery.js +274 -0
  112. package/dist/src/core/errors/recovery.js.map +1 -0
  113. package/dist/src/core/projects/project-manager.d.ts.map +1 -1
  114. package/dist/src/core/projects/project-manager.js +240 -122
  115. package/dist/src/core/projects/project-manager.js.map +1 -1
  116. package/dist/src/core/query/query-parser.d.ts +104 -0
  117. package/dist/src/core/query/query-parser.d.ts.map +1 -0
  118. package/dist/src/core/query/query-parser.js +347 -0
  119. package/dist/src/core/query/query-parser.js.map +1 -0
  120. package/dist/src/core/retrieval/index.d.ts +8 -0
  121. package/dist/src/core/retrieval/index.d.ts.map +1 -0
  122. package/dist/src/core/retrieval/index.js +8 -0
  123. package/dist/src/core/retrieval/index.js.map +1 -0
  124. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +71 -0
  125. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +1 -0
  126. package/dist/src/core/retrieval/llm-context-retrieval.js +545 -0
  127. package/dist/src/core/retrieval/llm-context-retrieval.js.map +1 -0
  128. package/dist/src/core/retrieval/summary-generator.d.ts +63 -0
  129. package/dist/src/core/retrieval/summary-generator.d.ts.map +1 -0
  130. package/dist/src/core/retrieval/summary-generator.js +622 -0
  131. package/dist/src/core/retrieval/summary-generator.js.map +1 -0
  132. package/dist/src/core/retrieval/types.d.ts +257 -0
  133. package/dist/src/core/retrieval/types.d.ts.map +1 -0
  134. package/dist/src/core/retrieval/types.js +18 -0
  135. package/dist/src/core/retrieval/types.js.map +1 -0
  136. package/dist/src/core/session/index.d.ts +2 -0
  137. package/dist/src/core/session/index.d.ts.map +1 -0
  138. package/dist/src/core/session/index.js +2 -0
  139. package/dist/src/core/session/index.js.map +1 -0
  140. package/dist/src/core/session/session-manager.d.ts +69 -0
  141. package/dist/src/core/session/session-manager.d.ts.map +1 -0
  142. package/dist/src/core/session/session-manager.js +311 -0
  143. package/dist/src/core/session/session-manager.js.map +1 -0
  144. package/dist/src/core/trace/trace-detector.d.ts +108 -0
  145. package/dist/src/core/trace/trace-detector.d.ts.map +1 -0
  146. package/dist/src/core/trace/trace-detector.demo.d.ts +5 -0
  147. package/dist/src/core/trace/trace-detector.demo.d.ts.map +1 -0
  148. package/dist/src/core/trace/trace-detector.demo.js +145 -0
  149. package/dist/src/core/trace/trace-detector.demo.js.map +1 -0
  150. package/dist/src/core/trace/trace-detector.js +425 -0
  151. package/dist/src/core/trace/trace-detector.js.map +1 -0
  152. package/dist/src/core/trace/trace-store.d.ts +60 -0
  153. package/dist/src/core/trace/trace-store.d.ts.map +1 -0
  154. package/dist/src/core/trace/trace-store.js +323 -0
  155. package/dist/src/core/trace/trace-store.js.map +1 -0
  156. package/dist/src/core/trace/types.d.ts +81 -0
  157. package/dist/src/core/trace/types.d.ts.map +1 -0
  158. package/dist/src/core/trace/types.js +70 -0
  159. package/dist/src/core/trace/types.js.map +1 -0
  160. package/dist/src/core/utils/update-checker.d.ts.map +1 -1
  161. package/dist/src/core/utils/update-checker.js +82 -25
  162. package/dist/src/core/utils/update-checker.js.map +1 -1
  163. package/dist/src/core/worktree/worktree-manager.d.ts +110 -0
  164. package/dist/src/core/worktree/worktree-manager.d.ts.map +1 -0
  165. package/dist/src/core/worktree/worktree-manager.js +456 -0
  166. package/dist/src/core/worktree/worktree-manager.js.map +1 -0
  167. package/dist/src/features/analytics/core/analytics-service.d.ts +6 -0
  168. package/dist/src/features/analytics/core/analytics-service.d.ts.map +1 -1
  169. package/dist/src/features/analytics/core/analytics-service.js +125 -10
  170. package/dist/src/features/analytics/core/analytics-service.js.map +1 -1
  171. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +1 -1
  172. package/dist/src/features/analytics/queries/metrics-queries.js +220 -163
  173. package/dist/src/features/analytics/queries/metrics-queries.js.map +1 -1
  174. package/dist/src/features/browser/browser-mcp.d.ts.map +1 -1
  175. package/dist/src/features/browser/browser-mcp.js +3 -0
  176. package/dist/src/features/browser/browser-mcp.js.map +1 -1
  177. package/dist/src/features/tasks/pebbles-task-store.d.ts +4 -0
  178. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +1 -1
  179. package/dist/src/features/tasks/pebbles-task-store.js +299 -141
  180. package/dist/src/features/tasks/pebbles-task-store.js.map +1 -1
  181. package/dist/src/integrations/linear/client.d.ts +28 -1
  182. package/dist/src/integrations/linear/client.d.ts.map +1 -1
  183. package/dist/src/integrations/linear/client.js +87 -0
  184. package/dist/src/integrations/linear/client.js.map +1 -1
  185. package/dist/src/integrations/linear/sync-manager.d.ts +76 -0
  186. package/dist/src/integrations/linear/sync-manager.d.ts.map +1 -0
  187. package/dist/src/integrations/linear/sync-manager.js +223 -0
  188. package/dist/src/integrations/linear/sync-manager.js.map +1 -0
  189. package/dist/src/integrations/linear/sync-service.d.ts +25 -0
  190. package/dist/src/integrations/linear/sync-service.d.ts.map +1 -0
  191. package/dist/src/integrations/linear/sync-service.js +198 -0
  192. package/dist/src/integrations/linear/sync-service.js.map +1 -0
  193. package/dist/src/integrations/linear/sync.d.ts +23 -1
  194. package/dist/src/integrations/linear/sync.d.ts.map +1 -1
  195. package/dist/src/integrations/linear/sync.js +156 -9
  196. package/dist/src/integrations/linear/sync.js.map +1 -1
  197. package/dist/src/integrations/linear/types.d.ts +75 -0
  198. package/dist/src/integrations/linear/types.d.ts.map +1 -0
  199. package/dist/src/integrations/linear/types.js +2 -0
  200. package/dist/src/integrations/linear/types.js.map +1 -0
  201. package/dist/src/integrations/linear/webhook-server.d.ts +32 -0
  202. package/dist/src/integrations/linear/webhook-server.d.ts.map +1 -0
  203. package/dist/src/integrations/linear/webhook-server.js +188 -0
  204. package/dist/src/integrations/linear/webhook-server.js.map +1 -0
  205. package/dist/src/integrations/linear/webhook.d.ts +95 -0
  206. package/dist/src/integrations/linear/webhook.d.ts.map +1 -0
  207. package/dist/src/integrations/linear/webhook.js +204 -0
  208. package/dist/src/integrations/linear/webhook.js.map +1 -0
  209. package/dist/src/integrations/mcp/server.d.ts +14 -0
  210. package/dist/src/integrations/mcp/server.d.ts.map +1 -1
  211. package/dist/src/integrations/mcp/server.js +849 -61
  212. package/dist/src/integrations/mcp/server.js.map +1 -1
  213. package/dist/src/integrations/mcp/trace-test.d.ts +5 -0
  214. package/dist/src/integrations/mcp/trace-test.d.ts.map +1 -0
  215. package/dist/src/integrations/mcp/trace-test.js +54 -0
  216. package/dist/src/integrations/mcp/trace-test.js.map +1 -0
  217. package/dist/src/servers/production/auth-middleware.d.ts +2 -2
  218. package/dist/src/servers/production/auth-middleware.d.ts.map +1 -1
  219. package/dist/src/servers/production/auth-middleware.js +1 -1
  220. package/dist/src/servers/production/auth-middleware.js.map +1 -1
  221. package/dist/src/services/config-service.d.ts +44 -0
  222. package/dist/src/services/config-service.d.ts.map +1 -0
  223. package/dist/src/services/config-service.js +61 -0
  224. package/dist/src/services/config-service.js.map +1 -0
  225. package/dist/src/services/context-service.d.ts +17 -0
  226. package/dist/src/services/context-service.d.ts.map +1 -0
  227. package/dist/src/services/context-service.js +88 -0
  228. package/dist/src/services/context-service.js.map +1 -0
  229. package/dist/src/types/task.d.ts +27 -0
  230. package/dist/src/types/task.d.ts.map +1 -0
  231. package/dist/src/types/task.js +2 -0
  232. package/dist/src/types/task.js.map +1 -0
  233. package/dist/src/utils/logger.d.ts +13 -0
  234. package/dist/src/utils/logger.d.ts.map +1 -0
  235. package/dist/src/utils/logger.js +52 -0
  236. package/dist/src/utils/logger.js.map +1 -0
  237. package/package.json +24 -10
  238. package/dist/attention-scoring/src/attention-tracker.d.ts +0 -79
  239. package/dist/attention-scoring/src/attention-tracker.d.ts.map +0 -1
  240. package/dist/attention-scoring/src/attention-tracker.js +0 -488
  241. package/dist/attention-scoring/src/attention-tracker.js.map +0 -1
  242. package/dist/attention-scoring/src/mcp-integration.d.ts +0 -56
  243. package/dist/attention-scoring/src/mcp-integration.d.ts.map +0 -1
  244. package/dist/attention-scoring/src/mcp-integration.js +0 -369
  245. package/dist/attention-scoring/src/mcp-integration.js.map +0 -1
  246. package/dist/index.js +0 -382
  247. package/dist/p2p-sync/src/p2p-sync.d.ts +0 -81
  248. package/dist/p2p-sync/src/p2p-sync.d.ts.map +0 -1
  249. package/dist/p2p-sync/src/p2p-sync.js +0 -457
  250. package/dist/p2p-sync/src/p2p-sync.js.map +0 -1
  251. package/dist/p2p-sync/src/team-context-sync.d.ts +0 -99
  252. package/dist/p2p-sync/src/team-context-sync.d.ts.map +0 -1
  253. package/dist/p2p-sync/src/team-context-sync.js +0 -491
  254. package/dist/p2p-sync/src/team-context-sync.js.map +0 -1
  255. package/dist/src/analytics/api/analytics-api.d.ts +0 -24
  256. package/dist/src/analytics/api/analytics-api.d.ts.map +0 -1
  257. package/dist/src/analytics/api/analytics-api.js +0 -279
  258. package/dist/src/analytics/api/analytics-api.js.map +0 -1
  259. package/dist/src/analytics/core/analytics-service.d.ts +0 -23
  260. package/dist/src/analytics/core/analytics-service.d.ts.map +0 -1
  261. package/dist/src/analytics/core/analytics-service.js +0 -160
  262. package/dist/src/analytics/core/analytics-service.js.map +0 -1
  263. package/dist/src/analytics/index.d.ts +0 -12
  264. package/dist/src/analytics/index.d.ts.map +0 -1
  265. package/dist/src/analytics/index.js +0 -11
  266. package/dist/src/analytics/index.js.map +0 -1
  267. package/dist/src/analytics/queries/metrics-queries.d.ts +0 -11
  268. package/dist/src/analytics/queries/metrics-queries.d.ts.map +0 -1
  269. package/dist/src/analytics/queries/metrics-queries.js +0 -179
  270. package/dist/src/analytics/queries/metrics-queries.js.map +0 -1
  271. package/dist/src/analytics/types/metrics.d.ts +0 -60
  272. package/dist/src/analytics/types/metrics.d.ts.map +0 -1
  273. package/dist/src/analytics/types/metrics.js +0 -2
  274. package/dist/src/analytics/types/metrics.js.map +0 -1
  275. package/dist/src/beads/beads-task-store.d.ts +0 -117
  276. package/dist/src/beads/beads-task-store.d.ts.map +0 -1
  277. package/dist/src/beads/beads-task-store.js +0 -318
  278. package/dist/src/beads/beads-task-store.js.map +0 -1
  279. package/dist/src/beads/task-aware-context.d.ts +0 -103
  280. package/dist/src/beads/task-aware-context.d.ts.map +0 -1
  281. package/dist/src/beads/task-aware-context.js +0 -395
  282. package/dist/src/beads/task-aware-context.js.map +0 -1
  283. package/dist/src/beads-task-store.d.ts +0 -117
  284. package/dist/src/beads-task-store.d.ts.map +0 -1
  285. package/dist/src/beads-task-store.js +0 -318
  286. package/dist/src/beads-task-store.js.map +0 -1
  287. package/dist/src/cli/analytics-viewer.d.ts +0 -3
  288. package/dist/src/cli/analytics-viewer.d.ts.map +0 -1
  289. package/dist/src/cli/analytics-viewer.js +0 -89
  290. package/dist/src/cli/analytics-viewer.js.map +0 -1
  291. package/dist/src/cli/cli.d.ts +0 -7
  292. package/dist/src/cli/cli.d.ts.map +0 -1
  293. package/dist/src/cli/cli.js +0 -704
  294. package/dist/src/cli/cli.js.map +0 -1
  295. package/dist/src/cli/project-commands.d.ts +0 -8
  296. package/dist/src/cli/project-commands.d.ts.map +0 -1
  297. package/dist/src/cli/project-commands.js +0 -212
  298. package/dist/src/cli/project-commands.js.map +0 -1
  299. package/dist/src/cli.d.ts +0 -7
  300. package/dist/src/cli.d.ts.map +0 -1
  301. package/dist/src/cli.js +0 -73
  302. package/dist/src/cli.js.map +0 -1
  303. package/dist/src/core/error-handler.d.ts +0 -46
  304. package/dist/src/core/error-handler.d.ts.map +0 -1
  305. package/dist/src/core/error-handler.js +0 -212
  306. package/dist/src/core/error-handler.js.map +0 -1
  307. package/dist/src/core/frame-manager.d.ts +0 -106
  308. package/dist/src/core/frame-manager.d.ts.map +0 -1
  309. package/dist/src/core/frame-manager.js +0 -387
  310. package/dist/src/core/frame-manager.js.map +0 -1
  311. package/dist/src/core/logger.d.ts +0 -24
  312. package/dist/src/core/logger.d.ts.map +0 -1
  313. package/dist/src/core/logger.js +0 -121
  314. package/dist/src/core/logger.js.map +0 -1
  315. package/dist/src/core/logger.test.d.ts +0 -2
  316. package/dist/src/core/logger.test.d.ts.map +0 -1
  317. package/dist/src/core/logger.test.js +0 -31
  318. package/dist/src/core/logger.test.js.map +0 -1
  319. package/dist/src/core/progress-tracker.d.ts +0 -95
  320. package/dist/src/core/progress-tracker.d.ts.map +0 -1
  321. package/dist/src/core/progress-tracker.js +0 -178
  322. package/dist/src/core/progress-tracker.js.map +0 -1
  323. package/dist/src/core/project-manager.d.ts +0 -130
  324. package/dist/src/core/project-manager.d.ts.map +0 -1
  325. package/dist/src/core/project-manager.js +0 -582
  326. package/dist/src/core/project-manager.js.map +0 -1
  327. package/dist/src/core/update-checker.d.ts +0 -38
  328. package/dist/src/core/update-checker.d.ts.map +0 -1
  329. package/dist/src/core/update-checker.js +0 -156
  330. package/dist/src/core/update-checker.js.map +0 -1
  331. package/dist/src/error-handler.d.ts +0 -42
  332. package/dist/src/error-handler.d.ts.map +0 -1
  333. package/dist/src/error-handler.js +0 -155
  334. package/dist/src/error-handler.js.map +0 -1
  335. package/dist/src/frame-manager.d.ts +0 -106
  336. package/dist/src/frame-manager.d.ts.map +0 -1
  337. package/dist/src/frame-manager.js +0 -361
  338. package/dist/src/frame-manager.js.map +0 -1
  339. package/dist/src/integrations/browser-mcp.d.ts +0 -94
  340. package/dist/src/integrations/browser-mcp.d.ts.map +0 -1
  341. package/dist/src/integrations/browser-mcp.js +0 -431
  342. package/dist/src/integrations/browser-mcp.js.map +0 -1
  343. package/dist/src/integrations/linear-auth.d.ts +0 -99
  344. package/dist/src/integrations/linear-auth.d.ts.map +0 -1
  345. package/dist/src/integrations/linear-auth.js +0 -319
  346. package/dist/src/integrations/linear-auth.js.map +0 -1
  347. package/dist/src/integrations/linear-auto-sync.d.ts +0 -77
  348. package/dist/src/integrations/linear-auto-sync.d.ts.map +0 -1
  349. package/dist/src/integrations/linear-auto-sync.js +0 -268
  350. package/dist/src/integrations/linear-auto-sync.js.map +0 -1
  351. package/dist/src/integrations/linear-client.d.ts +0 -86
  352. package/dist/src/integrations/linear-client.d.ts.map +0 -1
  353. package/dist/src/integrations/linear-client.js +0 -277
  354. package/dist/src/integrations/linear-client.js.map +0 -1
  355. package/dist/src/integrations/linear-config.d.ts +0 -51
  356. package/dist/src/integrations/linear-config.d.ts.map +0 -1
  357. package/dist/src/integrations/linear-config.js +0 -103
  358. package/dist/src/integrations/linear-config.js.map +0 -1
  359. package/dist/src/integrations/linear-sync.d.ts +0 -97
  360. package/dist/src/integrations/linear-sync.d.ts.map +0 -1
  361. package/dist/src/integrations/linear-sync.js +0 -391
  362. package/dist/src/integrations/linear-sync.js.map +0 -1
  363. package/dist/src/logger.d.ts +0 -24
  364. package/dist/src/logger.d.ts.map +0 -1
  365. package/dist/src/logger.js +0 -120
  366. package/dist/src/logger.js.map +0 -1
  367. package/dist/src/mcp/mcp-server.d.ts +0 -40
  368. package/dist/src/mcp/mcp-server.d.ts.map +0 -1
  369. package/dist/src/mcp/mcp-server.js +0 -828
  370. package/dist/src/mcp/mcp-server.js.map +0 -1
  371. package/dist/src/mcp-server.d.ts +0 -32
  372. package/dist/src/mcp-server.d.ts.map +0 -1
  373. package/dist/src/mcp-server.js +0 -441
  374. package/dist/src/mcp-server.js.map +0 -1
  375. package/dist/src/pebbles/pebbles-task-store.d.ts +0 -117
  376. package/dist/src/pebbles/pebbles-task-store.d.ts.map +0 -1
  377. package/dist/src/pebbles/pebbles-task-store.js +0 -335
  378. package/dist/src/pebbles/pebbles-task-store.js.map +0 -1
  379. package/dist/src/pebbles/task-aware-context.d.ts +0 -103
  380. package/dist/src/pebbles/task-aware-context.d.ts.map +0 -1
  381. package/dist/src/pebbles/task-aware-context.js +0 -412
  382. package/dist/src/pebbles/task-aware-context.js.map +0 -1
  383. package/dist/src/railway/index.d.ts +0 -7
  384. package/dist/src/railway/index.d.ts.map +0 -1
  385. package/dist/src/railway/index.js +0 -401
  386. package/dist/src/railway/index.js.map +0 -1
  387. package/dist/src/runway/auth/auth-middleware.d.ts +0 -66
  388. package/dist/src/runway/auth/auth-middleware.d.ts.map +0 -1
  389. package/dist/src/runway/auth/auth-middleware.js +0 -337
  390. package/dist/src/runway/auth/auth-middleware.js.map +0 -1
  391. package/dist/src/runway/server/runway-mcp-server.d.ts +0 -46
  392. package/dist/src/runway/server/runway-mcp-server.d.ts.map +0 -1
  393. package/dist/src/runway/server/runway-mcp-server.js +0 -601
  394. package/dist/src/runway/server/runway-mcp-server.js.map +0 -1
  395. package/dist/src/runway.bak/auth/auth-middleware.d.ts +0 -66
  396. package/dist/src/runway.bak/auth/auth-middleware.d.ts.map +0 -1
  397. package/dist/src/runway.bak/auth/auth-middleware.js +0 -337
  398. package/dist/src/runway.bak/auth/auth-middleware.js.map +0 -1
  399. package/dist/src/runway.bak/server/runway-mcp-server.d.ts +0 -46
  400. package/dist/src/runway.bak/server/runway-mcp-server.d.ts.map +0 -1
  401. package/dist/src/runway.bak/server/runway-mcp-server.js +0 -601
  402. package/dist/src/runway.bak/server/runway-mcp-server.js.map +0 -1
  403. package/dist/src/task-aware-context.d.ts +0 -103
  404. package/dist/src/task-aware-context.d.ts.map +0 -1
  405. package/dist/src/task-aware-context.js +0 -395
  406. package/dist/src/task-aware-context.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-server.d.ts","sourceRoot":"","sources":["../../../../src/integrations/linear/webhook-server.ts"],"names":[],"mappings":";AAUA,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,YAAY,CAAS;gBAEjB,MAAM,CAAC,EAAE,mBAAmB;IAoBxC,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,WAAW;IAwCnB,OAAO,CAAC,sBAAsB;YAsBhB,YAAY;YAoBZ,kBAAkB;YAkBlB,gBAAgB;YAqBhB,kBAAkB;YAIlB,kBAAkB;IAInB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAgBtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAYnC"}
@@ -0,0 +1,188 @@
1
+ #!/usr/bin/env node
2
+ import express from 'express';
3
+ import crypto from 'crypto';
4
+ import { LinearSyncService } from './sync-service.js';
5
+ import { Logger } from '../../utils/logger.js';
6
+ import chalk from 'chalk';
7
+ export class LinearWebhookServer {
8
+ app;
9
+ server;
10
+ logger;
11
+ syncService;
12
+ config;
13
+ eventQueue = [];
14
+ isProcessing = false;
15
+ constructor(config) {
16
+ this.app = express();
17
+ this.logger = new Logger('LinearWebhook');
18
+ this.syncService = new LinearSyncService();
19
+ this.config = {
20
+ port: config?.port || parseInt(process.env.WEBHOOK_PORT || '3456'),
21
+ host: config?.host || process.env.WEBHOOK_HOST || 'localhost',
22
+ webhookSecret: config?.webhookSecret || process.env.LINEAR_WEBHOOK_SECRET,
23
+ maxPayloadSize: config?.maxPayloadSize || '10mb',
24
+ rateLimit: {
25
+ windowMs: config?.rateLimit?.windowMs || 60000,
26
+ max: config?.rateLimit?.max || 100,
27
+ }
28
+ };
29
+ this.setupMiddleware();
30
+ this.setupRoutes();
31
+ }
32
+ setupMiddleware() {
33
+ this.app.use(express.raw({
34
+ type: 'application/json',
35
+ limit: this.config.maxPayloadSize,
36
+ }));
37
+ this.app.use((req, res, next) => {
38
+ res.setHeader('X-Powered-By', 'StackMemory');
39
+ next();
40
+ });
41
+ }
42
+ setupRoutes() {
43
+ this.app.get('/health', (req, res) => {
44
+ res.json({
45
+ status: 'healthy',
46
+ service: 'linear-webhook',
47
+ timestamp: new Date().toISOString(),
48
+ queue: this.eventQueue.length,
49
+ processing: this.isProcessing,
50
+ });
51
+ });
52
+ this.app.post('/webhook/linear', async (req, res) => {
53
+ try {
54
+ if (!this.verifyWebhookSignature(req)) {
55
+ this.logger.warn('Invalid webhook signature');
56
+ return res.status(401).json({ error: 'Unauthorized' });
57
+ }
58
+ const payload = JSON.parse(req.body.toString());
59
+ this.logger.info(`Received webhook: ${payload.type} - ${payload.action}`);
60
+ this.eventQueue.push(payload);
61
+ this.processQueue();
62
+ res.status(200).json({
63
+ status: 'accepted',
64
+ queued: true,
65
+ });
66
+ }
67
+ catch (error) {
68
+ this.logger.error('Webhook processing error:', error);
69
+ res.status(500).json({ error: 'Internal server error' });
70
+ }
71
+ });
72
+ this.app.use((req, res) => {
73
+ res.status(404).json({ error: 'Not found' });
74
+ });
75
+ }
76
+ verifyWebhookSignature(req) {
77
+ if (!this.config.webhookSecret) {
78
+ this.logger.warn('No webhook secret configured, accepting all webhooks');
79
+ return true;
80
+ }
81
+ const signature = req.headers['linear-signature'];
82
+ if (!signature) {
83
+ return false;
84
+ }
85
+ const hash = crypto
86
+ .createHmac('sha256', this.config.webhookSecret)
87
+ .update(req.body)
88
+ .digest('hex');
89
+ return crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(hash));
90
+ }
91
+ async processQueue() {
92
+ if (this.isProcessing || this.eventQueue.length === 0) {
93
+ return;
94
+ }
95
+ this.isProcessing = true;
96
+ while (this.eventQueue.length > 0) {
97
+ const event = this.eventQueue.shift();
98
+ try {
99
+ await this.handleWebhookEvent(event);
100
+ }
101
+ catch (error) {
102
+ this.logger.error(`Failed to process event: ${event.type}`, error);
103
+ }
104
+ }
105
+ this.isProcessing = false;
106
+ }
107
+ async handleWebhookEvent(payload) {
108
+ const { type, action, data } = payload;
109
+ switch (type) {
110
+ case 'Issue':
111
+ await this.handleIssueEvent(action, data);
112
+ break;
113
+ case 'Comment':
114
+ await this.handleCommentEvent(action, data);
115
+ break;
116
+ case 'Project':
117
+ await this.handleProjectEvent(action, data);
118
+ break;
119
+ default:
120
+ this.logger.debug(`Unhandled event type: ${type}`);
121
+ }
122
+ }
123
+ async handleIssueEvent(action, data) {
124
+ const issue = data;
125
+ switch (action) {
126
+ case 'create':
127
+ this.logger.info(`New issue created: ${issue.identifier} - ${issue.title}`);
128
+ await this.syncService.syncIssueToLocal(issue);
129
+ break;
130
+ case 'update':
131
+ this.logger.info(`Issue updated: ${issue.identifier} - ${issue.title}`);
132
+ await this.syncService.syncIssueToLocal(issue);
133
+ break;
134
+ case 'remove':
135
+ this.logger.info(`Issue removed: ${issue.identifier}`);
136
+ await this.syncService.removeLocalIssue(issue.identifier);
137
+ break;
138
+ default:
139
+ this.logger.debug(`Unhandled issue action: ${action}`);
140
+ }
141
+ }
142
+ async handleCommentEvent(action, data) {
143
+ this.logger.debug(`Comment event: ${action}`, data);
144
+ }
145
+ async handleProjectEvent(action, data) {
146
+ this.logger.debug(`Project event: ${action}`, data);
147
+ }
148
+ async start() {
149
+ return new Promise((resolve) => {
150
+ this.server = this.app.listen(this.config.port, this.config.host, () => {
151
+ console.log(chalk.green('✓') + chalk.bold(' Linear Webhook Server Started'));
152
+ console.log(chalk.cyan(' URL: ') + `http://${this.config.host}:${this.config.port}/webhook/linear`);
153
+ console.log(chalk.cyan(' Health: ') + `http://${this.config.host}:${this.config.port}/health`);
154
+ if (!this.config.webhookSecret) {
155
+ console.log(chalk.yellow(' ⚠ Warning: No webhook secret configured (insecure)'));
156
+ }
157
+ resolve();
158
+ });
159
+ });
160
+ }
161
+ async stop() {
162
+ return new Promise((resolve) => {
163
+ if (this.server) {
164
+ this.server.close(() => {
165
+ this.logger.info('Webhook server stopped');
166
+ resolve();
167
+ });
168
+ }
169
+ else {
170
+ resolve();
171
+ }
172
+ });
173
+ }
174
+ }
175
+ // Standalone execution support
176
+ if (process.argv[1] === new URL(import.meta.url).pathname) {
177
+ const server = new LinearWebhookServer();
178
+ server.start().catch((error) => {
179
+ console.error(chalk.red('Failed to start webhook server:'), error);
180
+ process.exit(1);
181
+ });
182
+ process.on('SIGINT', async () => {
183
+ console.log(chalk.yellow('\n\nShutting down webhook server...'));
184
+ await server.stop();
185
+ process.exit(0);
186
+ });
187
+ }
188
+ //# sourceMappingURL=webhook-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-server.js","sourceRoot":"","sources":["../../../../src/integrations/linear/webhook-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Linear Webhook Handler
3
+ * Processes incoming webhooks from Linear for real-time sync
4
+ */
5
+ import { LinearSyncEngine } from './sync.js';
6
+ import { PebblesTaskStore } from '../../features/tasks/pebbles-task-store.js';
7
+ export interface LinearWebhookPayload {
8
+ action: 'create' | 'update' | 'remove';
9
+ createdAt: string;
10
+ data: {
11
+ id: string;
12
+ identifier: string;
13
+ title?: string;
14
+ description?: string;
15
+ state?: {
16
+ id: string;
17
+ name: string;
18
+ type: string;
19
+ };
20
+ priority?: number;
21
+ assignee?: {
22
+ id: string;
23
+ name: string;
24
+ email: string;
25
+ };
26
+ team?: {
27
+ id: string;
28
+ key: string;
29
+ name: string;
30
+ };
31
+ labels?: Array<{
32
+ id: string;
33
+ name: string;
34
+ color: string;
35
+ }>;
36
+ dueDate?: string;
37
+ completedAt?: string;
38
+ updatedAt: string;
39
+ };
40
+ type: 'Issue' | 'Comment' | 'Project' | 'Cycle';
41
+ url: string;
42
+ webhookId: string;
43
+ webhookTimestamp: number;
44
+ }
45
+ export declare class LinearWebhookHandler {
46
+ private syncEngine?;
47
+ private taskStore?;
48
+ private webhookSecret?;
49
+ constructor(webhookSecret?: string);
50
+ /**
51
+ * Set the sync engine for processing webhooks
52
+ */
53
+ setSyncEngine(syncEngine: LinearSyncEngine): void;
54
+ /**
55
+ * Set the task store for direct updates
56
+ */
57
+ setTaskStore(taskStore: PebblesTaskStore): void;
58
+ /**
59
+ * Verify webhook signature
60
+ */
61
+ verifySignature(body: string, signature: string): boolean;
62
+ /**
63
+ * Process incoming webhook
64
+ */
65
+ processWebhook(payload: LinearWebhookPayload): Promise<void>;
66
+ /**
67
+ * Handle issue created in Linear
68
+ */
69
+ private handleIssueCreated;
70
+ /**
71
+ * Handle issue updated in Linear
72
+ */
73
+ private handleIssueUpdated;
74
+ /**
75
+ * Handle issue removed in Linear
76
+ */
77
+ private handleIssueRemoved;
78
+ /**
79
+ * Check if we should sync this issue
80
+ */
81
+ private shouldSyncIssue;
82
+ /**
83
+ * Find mapping by Linear ID
84
+ */
85
+ private findMappingByLinearId;
86
+ /**
87
+ * Map Linear state to StackMemory status
88
+ */
89
+ private mapLinearStateToStatus;
90
+ /**
91
+ * Map Linear priority to StackMemory priority
92
+ */
93
+ private mapLinearPriorityToPriority;
94
+ }
95
+ //# sourceMappingURL=webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../../src/integrations/linear/webhook.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAG9E,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,KAAK,CAAC,EAAE;YACN,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE;YACT,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACf,CAAC;QACF,IAAI,CAAC,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,GAAG,EAAE,MAAM,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;QACF,MAAM,CAAC,EAAE,KAAK,CAAC;YACb,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,KAAK,EAAE,MAAM,CAAC;SACf,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,UAAU,CAAC,CAAmB;IACtC,OAAO,CAAC,SAAS,CAAC,CAAmB;IACrC,OAAO,CAAC,aAAa,CAAC,CAAS;gBAEnB,aAAa,CAAC,EAAE,MAAM;IAIlC;;OAEG;IACH,aAAa,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI;IAIjD;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAI/C;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO;IAazD;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA4BlE;;OAEG;YACW,kBAAkB;IAkBhC;;OAEG;YACW,kBAAkB;IAwDhC;;OAEG;YACW,kBAAkB;IAiBhC;;OAEG;IACH,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAM7B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAIpC"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * Linear Webhook Handler
3
+ * Processes incoming webhooks from Linear for real-time sync
4
+ */
5
+ import { logger } from '../../core/monitoring/logger.js';
6
+ import crypto from 'crypto';
7
+ export class LinearWebhookHandler {
8
+ syncEngine;
9
+ taskStore;
10
+ webhookSecret;
11
+ constructor(webhookSecret) {
12
+ this.webhookSecret = webhookSecret || process.env.LINEAR_WEBHOOK_SECRET;
13
+ }
14
+ /**
15
+ * Set the sync engine for processing webhooks
16
+ */
17
+ setSyncEngine(syncEngine) {
18
+ this.syncEngine = syncEngine;
19
+ }
20
+ /**
21
+ * Set the task store for direct updates
22
+ */
23
+ setTaskStore(taskStore) {
24
+ this.taskStore = taskStore;
25
+ }
26
+ /**
27
+ * Verify webhook signature
28
+ */
29
+ verifySignature(body, signature) {
30
+ if (!this.webhookSecret) {
31
+ logger.warn('No webhook secret configured, skipping verification');
32
+ return true; // Allow in development
33
+ }
34
+ const hmac = crypto.createHmac('sha256', this.webhookSecret);
35
+ hmac.update(body);
36
+ const expectedSignature = hmac.digest('hex');
37
+ return signature === expectedSignature;
38
+ }
39
+ /**
40
+ * Process incoming webhook
41
+ */
42
+ async processWebhook(payload) {
43
+ logger.info('Processing Linear webhook', {
44
+ action: payload.action,
45
+ type: payload.type,
46
+ id: payload.data.id
47
+ });
48
+ // Only process Issue webhooks for now
49
+ if (payload.type !== 'Issue') {
50
+ logger.info(`Ignoring webhook for type: ${payload.type}`);
51
+ return;
52
+ }
53
+ switch (payload.action) {
54
+ case 'create':
55
+ await this.handleIssueCreated(payload);
56
+ break;
57
+ case 'update':
58
+ await this.handleIssueUpdated(payload);
59
+ break;
60
+ case 'remove':
61
+ await this.handleIssueRemoved(payload);
62
+ break;
63
+ default:
64
+ logger.warn(`Unknown webhook action: ${payload.action}`);
65
+ }
66
+ }
67
+ /**
68
+ * Handle issue created in Linear
69
+ */
70
+ async handleIssueCreated(payload) {
71
+ logger.info('Linear issue created', { identifier: payload.data.identifier });
72
+ // Check if we should sync this issue
73
+ if (!this.shouldSyncIssue(payload.data)) {
74
+ return;
75
+ }
76
+ // For now, just log it - full implementation would create a StackMemory task
77
+ logger.info('Would create StackMemory task for Linear issue', {
78
+ identifier: payload.data.identifier,
79
+ title: payload.data.title
80
+ });
81
+ // TODO: Implement task creation with proper frame context
82
+ // This would require access to the current FrameManager context
83
+ }
84
+ /**
85
+ * Handle issue updated in Linear
86
+ */
87
+ async handleIssueUpdated(payload) {
88
+ logger.info('Linear issue updated', { identifier: payload.data.identifier });
89
+ if (!this.syncEngine) {
90
+ logger.warn('No sync engine configured, cannot process update');
91
+ return;
92
+ }
93
+ // Find mapped StackMemory task
94
+ const mapping = this.findMappingByLinearId(payload.data.id);
95
+ if (!mapping) {
96
+ logger.info('No mapping found for Linear issue', { id: payload.data.id });
97
+ return;
98
+ }
99
+ // Check for conflicts
100
+ const task = this.taskStore?.getTask(mapping.stackmemoryId);
101
+ if (!task) {
102
+ logger.warn('StackMemory task not found', { id: mapping.stackmemoryId });
103
+ return;
104
+ }
105
+ // Update the task based on Linear changes
106
+ let newStatus;
107
+ if (payload.data.state) {
108
+ const mappedStatus = this.mapLinearStateToStatus(payload.data.state);
109
+ if (mappedStatus !== task.status) {
110
+ newStatus = mappedStatus;
111
+ }
112
+ }
113
+ if (payload.data.completedAt) {
114
+ newStatus = 'completed';
115
+ }
116
+ // Update status if changed
117
+ if (newStatus) {
118
+ this.taskStore?.updateTaskStatus(mapping.stackmemoryId, newStatus, 'Linear webhook update');
119
+ logger.info('Updated StackMemory task status from webhook', {
120
+ taskId: mapping.stackmemoryId,
121
+ newStatus
122
+ });
123
+ }
124
+ // For other properties, we'd need to implement a more complete update method
125
+ // For now, log what changed
126
+ if (payload.data.title && payload.data.title !== task.title) {
127
+ logger.info('Task title changed in Linear but not updated in StackMemory', {
128
+ taskId: mapping.stackmemoryId,
129
+ oldTitle: task.title,
130
+ newTitle: payload.data.title
131
+ });
132
+ }
133
+ }
134
+ /**
135
+ * Handle issue removed in Linear
136
+ */
137
+ async handleIssueRemoved(payload) {
138
+ logger.info('Linear issue removed', { identifier: payload.data.identifier });
139
+ const mapping = this.findMappingByLinearId(payload.data.id);
140
+ if (!mapping) {
141
+ logger.info('No mapping found for removed Linear issue');
142
+ return;
143
+ }
144
+ // Mark the StackMemory task as cancelled
145
+ this.taskStore?.updateTaskStatus(mapping.stackmemoryId, 'cancelled', 'Linear issue deleted');
146
+ logger.info('Marked StackMemory task as cancelled due to Linear deletion', {
147
+ taskId: mapping.stackmemoryId
148
+ });
149
+ }
150
+ /**
151
+ * Check if we should sync this issue
152
+ */
153
+ shouldSyncIssue(issue) {
154
+ // Add your filtering logic here
155
+ // For example, only sync issues from specific teams or with certain labels
156
+ // Skip issues without a title
157
+ if (!issue.title) {
158
+ return false;
159
+ }
160
+ // Skip archived/cancelled issues
161
+ if (issue.state?.type === 'canceled' || issue.state?.type === 'archived') {
162
+ return false;
163
+ }
164
+ return true;
165
+ }
166
+ /**
167
+ * Find mapping by Linear ID
168
+ */
169
+ findMappingByLinearId(linearId) {
170
+ // TODO: Implement proper mapping lookup from database
171
+ // For now, return null
172
+ return null;
173
+ }
174
+ /**
175
+ * Map Linear state to StackMemory status
176
+ */
177
+ mapLinearStateToStatus(state) {
178
+ const stateType = state.type?.toLowerCase() || state.name?.toLowerCase();
179
+ switch (stateType) {
180
+ case 'backlog':
181
+ case 'unstarted':
182
+ return 'pending';
183
+ case 'started':
184
+ case 'in progress':
185
+ return 'in_progress';
186
+ case 'completed':
187
+ case 'done':
188
+ return 'completed';
189
+ case 'canceled':
190
+ case 'cancelled':
191
+ return 'cancelled';
192
+ default:
193
+ return 'pending';
194
+ }
195
+ }
196
+ /**
197
+ * Map Linear priority to StackMemory priority
198
+ */
199
+ mapLinearPriorityToPriority(priority) {
200
+ // Linear uses 0-4, StackMemory uses 1-5
201
+ return 5 - priority;
202
+ }
203
+ }
204
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../../../src/integrations/linear/webhook.ts"],"names":[],"mappings":"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"}
@@ -9,9 +9,13 @@ declare class LocalStackMemoryMCP {
9
9
  private projectRoot;
10
10
  private frameManager;
11
11
  private taskStore;
12
+ private linearAuthManager;
13
+ private linearSync;
12
14
  private projectId;
13
15
  private contexts;
14
16
  private browserMCP;
17
+ private traceDetector;
18
+ private contextRetrieval;
15
19
  constructor();
16
20
  private findProjectRoot;
17
21
  private initDB;
@@ -33,6 +37,16 @@ declare class LocalStackMemoryMCP {
33
37
  private handleGetActiveTasks;
34
38
  private handleGetTaskMetrics;
35
39
  private handleAddTaskDependency;
40
+ private handleLinearSync;
41
+ private handleLinearUpdateTask;
42
+ private handleLinearGetTasks;
43
+ private handleLinearStatus;
44
+ private handleGetTraces;
45
+ private handleGetTraceStatistics;
46
+ private handleFlushTraces;
47
+ private handleCompressOldTraces;
48
+ private handleSmartContext;
49
+ private handleGetSummary;
36
50
  start(): Promise<void>;
37
51
  }
38
52
  export default LocalStackMemoryMCP;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/integrations/mcp/server.ts"],"names":[],"mappings":";AACA;;;GAGG;AAyBH,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAmB;IAIpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,UAAU,CAAwB;;IAiE1C,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,MAAM;IA8Bd,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,aAAa;YAmSP,gBAAgB;YA6ChB,iBAAiB;YAejB,gBAAgB;YAqChB,gBAAgB;YAoChB,eAAe;YAuBf,iBAAiB;IA8D/B,OAAO,CAAC,YAAY;YAYN,gBAAgB;YA4ChB,sBAAsB;YAkCtB,oBAAoB;YA2CpB,oBAAoB;YAmCpB,uBAAuB;IAiC/B,KAAK;CAKZ;AAGD,eAAe,mBAAmB,CAAC;AAGnC,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/integrations/mcp/server.ts"],"names":[],"mappings":";AACA;;;GAGG;AA4BH,cAAM,mBAAmB;IACvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,UAAU,CAAwB;IAC1C,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,gBAAgB,CAAsB;;IA2E9C,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,MAAM;IAyBd,OAAO,CAAC,kBAAkB;IA+B1B,OAAO,CAAC,YAAY;IAepB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,aAAa;YA4lBP,gBAAgB;YA6ChB,iBAAiB;YAejB,gBAAgB;YAqChB,gBAAgB;YAoChB,eAAe;YAuBf,iBAAiB;IA8D/B,OAAO,CAAC,YAAY;YAYN,gBAAgB;YA4ChB,sBAAsB;YAkCtB,oBAAoB;YA0FpB,oBAAoB;YAmCpB,uBAAuB;YAkCvB,gBAAgB;YA4ChB,sBAAsB;YA8GtB,oBAAoB;YA8EpB,kBAAkB;YAuDlB,eAAe;YAgDf,wBAAwB;YAyBxB,iBAAiB;YAajB,uBAAuB;YAevB,kBAAkB;YAiDlB,gBAAgB;IAoFxB,KAAK;CAKZ;AAGD,eAAe,mBAAmB,CAAC;AAGnC,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD"}