@stackmemoryai/stackmemory 0.2.7 → 0.2.9

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 (346) hide show
  1. package/README.md +25 -8
  2. package/dist/scripts/cancel-duplicate-tasks.js +2 -1
  3. package/dist/scripts/cancel-duplicate-tasks.js.map +1 -1
  4. package/dist/scripts/list-linear-tasks.js +3 -4
  5. package/dist/scripts/list-linear-tasks.js.map +1 -1
  6. package/dist/scripts/merge-linear-duplicates-safe.js +4 -2
  7. package/dist/scripts/merge-linear-duplicates-safe.js.map +1 -1
  8. package/dist/scripts/show-linear-summary.js +4 -1
  9. package/dist/scripts/show-linear-summary.js.map +1 -1
  10. package/dist/scripts/status.js +6 -2
  11. package/dist/scripts/status.js.map +1 -1
  12. package/dist/src/cli/auto-detect.js.map +1 -1
  13. package/dist/src/cli/claude-sm.js.map +1 -1
  14. package/dist/src/cli/commands/config.d.ts +6 -0
  15. package/dist/src/cli/commands/config.d.ts.map +1 -0
  16. package/dist/src/cli/commands/config.js +224 -0
  17. package/dist/src/cli/commands/config.js.map +1 -0
  18. package/dist/src/cli/commands/linear.d.ts.map +1 -1
  19. package/dist/src/cli/commands/linear.js +123 -47
  20. package/dist/src/cli/commands/linear.js.map +1 -1
  21. package/dist/src/cli/index.d.ts.map +1 -1
  22. package/dist/src/cli/index.js +48 -1
  23. package/dist/src/cli/index.js.map +1 -1
  24. package/dist/src/core/config/config-manager.d.ts +95 -0
  25. package/dist/src/core/config/config-manager.d.ts.map +1 -0
  26. package/dist/src/core/config/config-manager.js +359 -0
  27. package/dist/src/core/config/config-manager.js.map +1 -0
  28. package/dist/src/core/config/types.d.ts +72 -0
  29. package/dist/src/core/config/types.d.ts.map +1 -0
  30. package/dist/src/core/config/types.js +127 -0
  31. package/dist/src/core/config/types.js.map +1 -0
  32. package/dist/src/core/context/compaction-handler.d.ts +119 -0
  33. package/dist/src/core/context/compaction-handler.d.ts.map +1 -0
  34. package/dist/src/core/context/compaction-handler.js +306 -0
  35. package/dist/src/core/context/compaction-handler.js.map +1 -0
  36. package/dist/src/core/context/model-aware-compaction.d.ts +101 -0
  37. package/dist/src/core/context/model-aware-compaction.d.ts.map +1 -0
  38. package/dist/src/core/context/model-aware-compaction.js +616 -0
  39. package/dist/src/core/context/model-aware-compaction.js.map +1 -0
  40. package/dist/src/core/digest/hybrid-digest-generator.d.ts +76 -0
  41. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +1 -0
  42. package/dist/src/core/digest/hybrid-digest-generator.js +629 -0
  43. package/dist/src/core/digest/hybrid-digest-generator.js.map +1 -0
  44. package/dist/src/core/digest/index.d.ts +7 -0
  45. package/dist/src/core/digest/index.d.ts.map +1 -0
  46. package/dist/src/core/digest/index.js +7 -0
  47. package/dist/src/core/digest/index.js.map +1 -0
  48. package/dist/src/core/digest/types.d.ts +154 -0
  49. package/dist/src/core/digest/types.d.ts.map +1 -0
  50. package/dist/src/core/digest/types.js +18 -0
  51. package/dist/src/core/digest/types.js.map +1 -0
  52. package/dist/src/core/monitoring/logger.d.ts +2 -2
  53. package/dist/src/core/monitoring/logger.d.ts.map +1 -1
  54. package/dist/src/core/monitoring/logger.js +10 -5
  55. package/dist/src/core/monitoring/logger.js.map +1 -1
  56. package/dist/src/core/monitoring/metrics.d.ts +3 -0
  57. package/dist/src/core/monitoring/metrics.d.ts.map +1 -1
  58. package/dist/src/core/monitoring/metrics.js +142 -3
  59. package/dist/src/core/monitoring/metrics.js.map +1 -1
  60. package/dist/src/core/persistence/postgres-adapter.d.ts +31 -0
  61. package/dist/src/core/persistence/postgres-adapter.d.ts.map +1 -0
  62. package/dist/src/core/persistence/postgres-adapter.js +316 -0
  63. package/dist/src/core/persistence/postgres-adapter.js.map +1 -0
  64. package/dist/src/core/query/query-parser.d.ts +104 -0
  65. package/dist/src/core/query/query-parser.d.ts.map +1 -0
  66. package/dist/src/core/query/query-parser.js +347 -0
  67. package/dist/src/core/query/query-parser.js.map +1 -0
  68. package/dist/src/core/retrieval/index.d.ts +8 -0
  69. package/dist/src/core/retrieval/index.d.ts.map +1 -0
  70. package/dist/src/core/retrieval/index.js +8 -0
  71. package/dist/src/core/retrieval/index.js.map +1 -0
  72. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +71 -0
  73. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +1 -0
  74. package/dist/src/core/retrieval/llm-context-retrieval.js +545 -0
  75. package/dist/src/core/retrieval/llm-context-retrieval.js.map +1 -0
  76. package/dist/src/core/retrieval/summary-generator.d.ts +63 -0
  77. package/dist/src/core/retrieval/summary-generator.d.ts.map +1 -0
  78. package/dist/src/core/retrieval/summary-generator.js +622 -0
  79. package/dist/src/core/retrieval/summary-generator.js.map +1 -0
  80. package/dist/src/core/retrieval/types.d.ts +257 -0
  81. package/dist/src/core/retrieval/types.d.ts.map +1 -0
  82. package/dist/src/core/retrieval/types.js +18 -0
  83. package/dist/src/core/retrieval/types.js.map +1 -0
  84. package/dist/src/core/trace/trace-detector.d.ts +108 -0
  85. package/dist/src/core/trace/trace-detector.d.ts.map +1 -0
  86. package/dist/src/core/trace/trace-detector.demo.d.ts +5 -0
  87. package/dist/src/core/trace/trace-detector.demo.d.ts.map +1 -0
  88. package/dist/src/core/trace/trace-detector.demo.js +145 -0
  89. package/dist/src/core/trace/trace-detector.demo.js.map +1 -0
  90. package/dist/src/core/trace/trace-detector.js +425 -0
  91. package/dist/src/core/trace/trace-detector.js.map +1 -0
  92. package/dist/src/core/trace/trace-store.d.ts +60 -0
  93. package/dist/src/core/trace/trace-store.d.ts.map +1 -0
  94. package/dist/src/core/trace/trace-store.js +323 -0
  95. package/dist/src/core/trace/trace-store.js.map +1 -0
  96. package/dist/src/core/trace/types.d.ts +81 -0
  97. package/dist/src/core/trace/types.d.ts.map +1 -0
  98. package/dist/src/core/trace/types.js +70 -0
  99. package/dist/src/core/trace/types.js.map +1 -0
  100. package/dist/src/core/types.d.ts +35 -0
  101. package/dist/src/core/types.d.ts.map +1 -0
  102. package/dist/src/core/types.js +2 -0
  103. package/dist/src/core/types.js.map +1 -0
  104. package/dist/src/integrations/linear/sync-manager.d.ts +76 -0
  105. package/dist/src/integrations/linear/sync-manager.d.ts.map +1 -0
  106. package/dist/src/integrations/linear/sync-manager.js +223 -0
  107. package/dist/src/integrations/linear/sync-manager.js.map +1 -0
  108. package/dist/src/integrations/mcp/server.d.ts +8 -0
  109. package/dist/src/integrations/mcp/server.d.ts.map +1 -1
  110. package/dist/src/integrations/mcp/server.js +369 -17
  111. package/dist/src/integrations/mcp/server.js.map +1 -1
  112. package/dist/src/integrations/mcp/trace-test.d.ts +5 -0
  113. package/dist/src/integrations/mcp/trace-test.d.ts.map +1 -0
  114. package/dist/src/integrations/mcp/trace-test.js +54 -0
  115. package/dist/src/integrations/mcp/trace-test.js.map +1 -0
  116. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +48 -0
  117. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +1 -0
  118. package/dist/src/integrations/pg-aiguide/embedding-provider.js +190 -0
  119. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +1 -0
  120. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +34 -0
  121. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +1 -0
  122. package/dist/src/integrations/pg-aiguide/semantic-search.js +154 -0
  123. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +1 -0
  124. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +44 -0
  125. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +1 -0
  126. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +215 -0
  127. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +1 -0
  128. package/dist/src/models/user.model.d.ts +55 -0
  129. package/dist/src/models/user.model.d.ts.map +1 -0
  130. package/dist/src/models/user.model.js +263 -0
  131. package/dist/src/models/user.model.js.map +1 -0
  132. package/dist/src/servers/production/auth-middleware.d.ts +7 -0
  133. package/dist/src/servers/production/auth-middleware.d.ts.map +1 -1
  134. package/dist/src/servers/production/auth-middleware.js +201 -26
  135. package/dist/src/servers/production/auth-middleware.js.map +1 -1
  136. package/dist/src/servers/railway/index.js.map +1 -1
  137. package/dist/src/services/config-service.d.ts +1 -1
  138. package/dist/src/services/config-service.d.ts.map +1 -1
  139. package/dist/src/services/config-service.js.map +1 -1
  140. package/dist/src/types/task.d.ts +11 -1
  141. package/dist/src/types/task.d.ts.map +1 -1
  142. package/dist/src/utils/logger.d.ts +4 -4
  143. package/dist/src/utils/logger.d.ts.map +1 -1
  144. package/dist/src/utils/logger.js.map +1 -1
  145. package/package.json +14 -8
  146. package/dist/attention-scoring/src/attention-tracker.d.ts +0 -79
  147. package/dist/attention-scoring/src/attention-tracker.d.ts.map +0 -1
  148. package/dist/attention-scoring/src/attention-tracker.js +0 -488
  149. package/dist/attention-scoring/src/attention-tracker.js.map +0 -1
  150. package/dist/attention-scoring/src/mcp-integration.d.ts +0 -56
  151. package/dist/attention-scoring/src/mcp-integration.d.ts.map +0 -1
  152. package/dist/attention-scoring/src/mcp-integration.js +0 -369
  153. package/dist/attention-scoring/src/mcp-integration.js.map +0 -1
  154. package/dist/index.js +0 -382
  155. package/dist/p2p-sync/src/p2p-sync.d.ts +0 -81
  156. package/dist/p2p-sync/src/p2p-sync.d.ts.map +0 -1
  157. package/dist/p2p-sync/src/p2p-sync.js +0 -457
  158. package/dist/p2p-sync/src/p2p-sync.js.map +0 -1
  159. package/dist/p2p-sync/src/team-context-sync.d.ts +0 -99
  160. package/dist/p2p-sync/src/team-context-sync.d.ts.map +0 -1
  161. package/dist/p2p-sync/src/team-context-sync.js +0 -491
  162. package/dist/p2p-sync/src/team-context-sync.js.map +0 -1
  163. package/dist/scripts/merge-linear-duplicates.d.ts +0 -7
  164. package/dist/scripts/merge-linear-duplicates.d.ts.map +0 -1
  165. package/dist/scripts/merge-linear-duplicates.js +0 -126
  166. package/dist/scripts/merge-linear-duplicates.js.map +0 -1
  167. package/dist/src/analytics/api/analytics-api.d.ts +0 -24
  168. package/dist/src/analytics/api/analytics-api.d.ts.map +0 -1
  169. package/dist/src/analytics/api/analytics-api.js +0 -279
  170. package/dist/src/analytics/api/analytics-api.js.map +0 -1
  171. package/dist/src/analytics/core/analytics-service.d.ts +0 -23
  172. package/dist/src/analytics/core/analytics-service.d.ts.map +0 -1
  173. package/dist/src/analytics/core/analytics-service.js +0 -160
  174. package/dist/src/analytics/core/analytics-service.js.map +0 -1
  175. package/dist/src/analytics/index.d.ts +0 -12
  176. package/dist/src/analytics/index.d.ts.map +0 -1
  177. package/dist/src/analytics/index.js +0 -11
  178. package/dist/src/analytics/index.js.map +0 -1
  179. package/dist/src/analytics/queries/metrics-queries.d.ts +0 -11
  180. package/dist/src/analytics/queries/metrics-queries.d.ts.map +0 -1
  181. package/dist/src/analytics/queries/metrics-queries.js +0 -179
  182. package/dist/src/analytics/queries/metrics-queries.js.map +0 -1
  183. package/dist/src/analytics/types/metrics.d.ts +0 -60
  184. package/dist/src/analytics/types/metrics.d.ts.map +0 -1
  185. package/dist/src/analytics/types/metrics.js +0 -2
  186. package/dist/src/analytics/types/metrics.js.map +0 -1
  187. package/dist/src/beads/beads-task-store.d.ts +0 -117
  188. package/dist/src/beads/beads-task-store.d.ts.map +0 -1
  189. package/dist/src/beads/beads-task-store.js +0 -318
  190. package/dist/src/beads/beads-task-store.js.map +0 -1
  191. package/dist/src/beads/task-aware-context.d.ts +0 -103
  192. package/dist/src/beads/task-aware-context.d.ts.map +0 -1
  193. package/dist/src/beads/task-aware-context.js +0 -395
  194. package/dist/src/beads/task-aware-context.js.map +0 -1
  195. package/dist/src/beads-task-store.d.ts +0 -117
  196. package/dist/src/beads-task-store.d.ts.map +0 -1
  197. package/dist/src/beads-task-store.js +0 -318
  198. package/dist/src/beads-task-store.js.map +0 -1
  199. package/dist/src/cli/__tests__/index.test.d.ts +0 -5
  200. package/dist/src/cli/__tests__/index.test.d.ts.map +0 -1
  201. package/dist/src/cli/__tests__/index.test.js +0 -726
  202. package/dist/src/cli/__tests__/index.test.js.map +0 -1
  203. package/dist/src/cli/analytics-viewer.d.ts +0 -3
  204. package/dist/src/cli/analytics-viewer.d.ts.map +0 -1
  205. package/dist/src/cli/analytics-viewer.js +0 -89
  206. package/dist/src/cli/analytics-viewer.js.map +0 -1
  207. package/dist/src/cli/cli.d.ts +0 -7
  208. package/dist/src/cli/cli.d.ts.map +0 -1
  209. package/dist/src/cli/cli.js +0 -704
  210. package/dist/src/cli/cli.js.map +0 -1
  211. package/dist/src/cli/project-commands.d.ts +0 -8
  212. package/dist/src/cli/project-commands.d.ts.map +0 -1
  213. package/dist/src/cli/project-commands.js +0 -212
  214. package/dist/src/cli/project-commands.js.map +0 -1
  215. package/dist/src/cli.d.ts +0 -7
  216. package/dist/src/cli.d.ts.map +0 -1
  217. package/dist/src/cli.js +0 -73
  218. package/dist/src/cli.js.map +0 -1
  219. package/dist/src/core/context/__tests__/frame-manager.test.d.ts +0 -5
  220. package/dist/src/core/context/__tests__/frame-manager.test.d.ts.map +0 -1
  221. package/dist/src/core/context/__tests__/frame-manager.test.js +0 -892
  222. package/dist/src/core/context/__tests__/frame-manager.test.js.map +0 -1
  223. package/dist/src/core/error-handler.d.ts +0 -46
  224. package/dist/src/core/error-handler.d.ts.map +0 -1
  225. package/dist/src/core/error-handler.js +0 -212
  226. package/dist/src/core/error-handler.js.map +0 -1
  227. package/dist/src/core/errors/__tests__/error-handling.test.d.ts +0 -5
  228. package/dist/src/core/errors/__tests__/error-handling.test.d.ts.map +0 -1
  229. package/dist/src/core/errors/__tests__/error-handling.test.js +0 -239
  230. package/dist/src/core/errors/__tests__/error-handling.test.js.map +0 -1
  231. package/dist/src/core/frame-manager.d.ts +0 -106
  232. package/dist/src/core/frame-manager.d.ts.map +0 -1
  233. package/dist/src/core/frame-manager.js +0 -387
  234. package/dist/src/core/frame-manager.js.map +0 -1
  235. package/dist/src/core/logger.d.ts +0 -24
  236. package/dist/src/core/logger.d.ts.map +0 -1
  237. package/dist/src/core/logger.js +0 -121
  238. package/dist/src/core/logger.js.map +0 -1
  239. package/dist/src/core/logger.test.d.ts +0 -2
  240. package/dist/src/core/logger.test.d.ts.map +0 -1
  241. package/dist/src/core/logger.test.js +0 -31
  242. package/dist/src/core/logger.test.js.map +0 -1
  243. package/dist/src/core/progress-tracker.d.ts +0 -95
  244. package/dist/src/core/progress-tracker.d.ts.map +0 -1
  245. package/dist/src/core/progress-tracker.js +0 -178
  246. package/dist/src/core/progress-tracker.js.map +0 -1
  247. package/dist/src/core/project-manager.d.ts +0 -130
  248. package/dist/src/core/project-manager.d.ts.map +0 -1
  249. package/dist/src/core/project-manager.js +0 -582
  250. package/dist/src/core/project-manager.js.map +0 -1
  251. package/dist/src/core/update-checker.d.ts +0 -38
  252. package/dist/src/core/update-checker.d.ts.map +0 -1
  253. package/dist/src/core/update-checker.js +0 -156
  254. package/dist/src/core/update-checker.js.map +0 -1
  255. package/dist/src/error-handler.d.ts +0 -42
  256. package/dist/src/error-handler.d.ts.map +0 -1
  257. package/dist/src/error-handler.js +0 -155
  258. package/dist/src/error-handler.js.map +0 -1
  259. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts +0 -5
  260. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts.map +0 -1
  261. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js +0 -712
  262. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -1
  263. package/dist/src/frame-manager.d.ts +0 -106
  264. package/dist/src/frame-manager.d.ts.map +0 -1
  265. package/dist/src/frame-manager.js +0 -361
  266. package/dist/src/frame-manager.js.map +0 -1
  267. package/dist/src/integrations/browser-mcp.d.ts +0 -94
  268. package/dist/src/integrations/browser-mcp.d.ts.map +0 -1
  269. package/dist/src/integrations/browser-mcp.js +0 -431
  270. package/dist/src/integrations/browser-mcp.js.map +0 -1
  271. package/dist/src/integrations/linear/__tests__/auth.test.d.ts +0 -5
  272. package/dist/src/integrations/linear/__tests__/auth.test.d.ts.map +0 -1
  273. package/dist/src/integrations/linear/__tests__/auth.test.js +0 -517
  274. package/dist/src/integrations/linear/__tests__/auth.test.js.map +0 -1
  275. package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts +0 -5
  276. package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts.map +0 -1
  277. package/dist/src/integrations/linear/__tests__/sync-service.test.js +0 -700
  278. package/dist/src/integrations/linear/__tests__/sync-service.test.js.map +0 -1
  279. package/dist/src/integrations/linear-auth.d.ts +0 -99
  280. package/dist/src/integrations/linear-auth.d.ts.map +0 -1
  281. package/dist/src/integrations/linear-auth.js +0 -319
  282. package/dist/src/integrations/linear-auth.js.map +0 -1
  283. package/dist/src/integrations/linear-auto-sync.d.ts +0 -77
  284. package/dist/src/integrations/linear-auto-sync.d.ts.map +0 -1
  285. package/dist/src/integrations/linear-auto-sync.js +0 -268
  286. package/dist/src/integrations/linear-auto-sync.js.map +0 -1
  287. package/dist/src/integrations/linear-client.d.ts +0 -86
  288. package/dist/src/integrations/linear-client.d.ts.map +0 -1
  289. package/dist/src/integrations/linear-client.js +0 -277
  290. package/dist/src/integrations/linear-client.js.map +0 -1
  291. package/dist/src/integrations/linear-config.d.ts +0 -51
  292. package/dist/src/integrations/linear-config.d.ts.map +0 -1
  293. package/dist/src/integrations/linear-config.js +0 -103
  294. package/dist/src/integrations/linear-config.js.map +0 -1
  295. package/dist/src/integrations/linear-sync.d.ts +0 -97
  296. package/dist/src/integrations/linear-sync.d.ts.map +0 -1
  297. package/dist/src/integrations/linear-sync.js +0 -391
  298. package/dist/src/integrations/linear-sync.js.map +0 -1
  299. package/dist/src/integrations/mcp/__tests__/server.test.d.ts +0 -5
  300. package/dist/src/integrations/mcp/__tests__/server.test.d.ts.map +0 -1
  301. package/dist/src/integrations/mcp/__tests__/server.test.js +0 -790
  302. package/dist/src/integrations/mcp/__tests__/server.test.js.map +0 -1
  303. package/dist/src/logger.d.ts +0 -24
  304. package/dist/src/logger.d.ts.map +0 -1
  305. package/dist/src/logger.js +0 -120
  306. package/dist/src/logger.js.map +0 -1
  307. package/dist/src/mcp/mcp-server.d.ts +0 -40
  308. package/dist/src/mcp/mcp-server.d.ts.map +0 -1
  309. package/dist/src/mcp/mcp-server.js +0 -828
  310. package/dist/src/mcp/mcp-server.js.map +0 -1
  311. package/dist/src/mcp-server.d.ts +0 -32
  312. package/dist/src/mcp-server.d.ts.map +0 -1
  313. package/dist/src/mcp-server.js +0 -441
  314. package/dist/src/mcp-server.js.map +0 -1
  315. package/dist/src/pebbles/pebbles-task-store.d.ts +0 -117
  316. package/dist/src/pebbles/pebbles-task-store.d.ts.map +0 -1
  317. package/dist/src/pebbles/pebbles-task-store.js +0 -335
  318. package/dist/src/pebbles/pebbles-task-store.js.map +0 -1
  319. package/dist/src/pebbles/task-aware-context.d.ts +0 -103
  320. package/dist/src/pebbles/task-aware-context.d.ts.map +0 -1
  321. package/dist/src/pebbles/task-aware-context.js +0 -412
  322. package/dist/src/pebbles/task-aware-context.js.map +0 -1
  323. package/dist/src/railway/index.d.ts +0 -7
  324. package/dist/src/railway/index.d.ts.map +0 -1
  325. package/dist/src/railway/index.js +0 -401
  326. package/dist/src/railway/index.js.map +0 -1
  327. package/dist/src/runway/auth/auth-middleware.d.ts +0 -66
  328. package/dist/src/runway/auth/auth-middleware.d.ts.map +0 -1
  329. package/dist/src/runway/auth/auth-middleware.js +0 -337
  330. package/dist/src/runway/auth/auth-middleware.js.map +0 -1
  331. package/dist/src/runway/server/runway-mcp-server.d.ts +0 -46
  332. package/dist/src/runway/server/runway-mcp-server.d.ts.map +0 -1
  333. package/dist/src/runway/server/runway-mcp-server.js +0 -601
  334. package/dist/src/runway/server/runway-mcp-server.js.map +0 -1
  335. package/dist/src/runway.bak/auth/auth-middleware.d.ts +0 -66
  336. package/dist/src/runway.bak/auth/auth-middleware.d.ts.map +0 -1
  337. package/dist/src/runway.bak/auth/auth-middleware.js +0 -337
  338. package/dist/src/runway.bak/auth/auth-middleware.js.map +0 -1
  339. package/dist/src/runway.bak/server/runway-mcp-server.d.ts +0 -46
  340. package/dist/src/runway.bak/server/runway-mcp-server.d.ts.map +0 -1
  341. package/dist/src/runway.bak/server/runway-mcp-server.js +0 -601
  342. package/dist/src/runway.bak/server/runway-mcp-server.js.map +0 -1
  343. package/dist/src/task-aware-context.d.ts +0 -103
  344. package/dist/src/task-aware-context.d.ts.map +0 -1
  345. package/dist/src/task-aware-context.js +0 -395
  346. package/dist/src/task-aware-context.js.map +0 -1
@@ -1,491 +0,0 @@
1
- /**
2
- * Team Shared Context Management
3
- *
4
- * Per-project shared context that syncs across team members
5
- * Optimized for LLM context windows and collaborative AI coding
6
- */
7
- import { P2PSync } from './p2p-sync';
8
- import Database from 'better-sqlite3';
9
- import { v4 as uuidv4 } from 'uuid';
10
- import { createHash } from 'crypto';
11
- // ============================================
12
- // Team Context Manager
13
- // ============================================
14
- export class TeamContextManager {
15
- p2pSync;
16
- db;
17
- projectId;
18
- teamId;
19
- userId;
20
- // Context layers
21
- sharedContext;
22
- personalContext;
23
- activeFrames = new Map();
24
- constructor(config) {
25
- this.projectId = config.projectId;
26
- this.teamId = config.teamId;
27
- this.userId = config.userId;
28
- this.db = new Database(config.dbPath || `.stackmemory/${this.projectId}/context.db`);
29
- this.initDB();
30
- // Initialize P2P sync for team
31
- this.p2pSync = new P2PSync({
32
- userId: this.userId,
33
- teamId: this.teamId,
34
- signalingServer: config.signalingServer || 'wss://signal.stackmemory.dev',
35
- dbPath: `.stackmemory/${this.projectId}/sync.db`
36
- });
37
- this.sharedContext = new SharedContext(this.db, this.p2pSync);
38
- this.personalContext = new PersonalContext(this.db);
39
- this.setupSyncHandlers();
40
- }
41
- // ============================================
42
- // Database Schema
43
- // ============================================
44
- initDB() {
45
- this.db.exec(`
46
- -- Shared context visible to all team members
47
- CREATE TABLE IF NOT EXISTS shared_context (
48
- context_id TEXT PRIMARY KEY,
49
- project_id TEXT NOT NULL,
50
- type TEXT NOT NULL, -- 'decision', 'constraint', 'architecture', 'learning'
51
- content TEXT NOT NULL,
52
- importance REAL DEFAULT 0.5,
53
- author_id TEXT NOT NULL,
54
- created_at INTEGER DEFAULT (unixepoch()),
55
- updated_at INTEGER DEFAULT (unixepoch()),
56
- vector_clock TEXT NOT NULL,
57
- active BOOLEAN DEFAULT TRUE
58
- );
59
-
60
- -- Personal context (not shared)
61
- CREATE TABLE IF NOT EXISTS personal_context (
62
- context_id TEXT PRIMARY KEY,
63
- user_id TEXT NOT NULL,
64
- project_id TEXT NOT NULL,
65
- type TEXT NOT NULL,
66
- content TEXT NOT NULL,
67
- importance REAL DEFAULT 0.5,
68
- created_at INTEGER DEFAULT (unixepoch())
69
- );
70
-
71
- -- Active working frames (ephemeral, shared during collaboration)
72
- CREATE TABLE IF NOT EXISTS active_frames (
73
- frame_id TEXT PRIMARY KEY,
74
- project_id TEXT NOT NULL,
75
- user_id TEXT NOT NULL,
76
- task TEXT NOT NULL,
77
- status TEXT DEFAULT 'active', -- 'active', 'paused', 'completed'
78
- context_snapshot TEXT, -- Compressed context at frame creation
79
- started_at INTEGER DEFAULT (unixepoch()),
80
- last_activity INTEGER DEFAULT (unixepoch())
81
- );
82
-
83
- -- Project-level aggregated knowledge
84
- CREATE TABLE IF NOT EXISTS project_knowledge (
85
- knowledge_id TEXT PRIMARY KEY,
86
- project_id TEXT NOT NULL,
87
- category TEXT NOT NULL, -- 'patterns', 'gotchas', 'conventions', 'dependencies'
88
- title TEXT NOT NULL,
89
- content TEXT NOT NULL,
90
- confidence REAL DEFAULT 0.5,
91
- usage_count INTEGER DEFAULT 0,
92
- last_used INTEGER DEFAULT (unixepoch())
93
- );
94
-
95
- -- Context importance decay tracking
96
- CREATE TABLE IF NOT EXISTS context_decay (
97
- context_id TEXT PRIMARY KEY,
98
- last_accessed INTEGER DEFAULT (unixepoch()),
99
- access_count INTEGER DEFAULT 1,
100
- decay_rate REAL DEFAULT 0.1
101
- );
102
-
103
- -- Indexes for performance
104
- CREATE INDEX IF NOT EXISTS idx_shared_project ON shared_context(project_id, importance DESC);
105
- CREATE INDEX IF NOT EXISTS idx_shared_type ON shared_context(type, active);
106
- CREATE INDEX IF NOT EXISTS idx_personal_user ON personal_context(user_id, project_id);
107
- CREATE INDEX IF NOT EXISTS idx_frames_active ON active_frames(project_id, status);
108
- CREATE INDEX IF NOT EXISTS idx_knowledge_category ON project_knowledge(project_id, category);
109
- `);
110
- }
111
- // ============================================
112
- // Context Management
113
- // ============================================
114
- /**
115
- * Add a decision or constraint that should be shared with the team
116
- */
117
- addSharedContext(type, content, importance = 0.5) {
118
- const contextId = this.generateContextId(content);
119
- // Check if similar context exists
120
- const existing = this.findSimilarContext(content);
121
- if (existing) {
122
- this.reinforceContext(existing.context_id);
123
- return existing.context_id;
124
- }
125
- // Add to shared context
126
- const vectorClock = this.p2pSync.incrementClock();
127
- this.db.prepare(`
128
- INSERT INTO shared_context
129
- (context_id, project_id, type, content, importance, author_id, vector_clock)
130
- VALUES (?, ?, ?, ?, ?, ?, ?)
131
- `).run(contextId, this.projectId, type, content, importance, this.userId, JSON.stringify(vectorClock));
132
- // Broadcast to team
133
- this.p2pSync.createFrame({
134
- id: contextId,
135
- type: 'shared_context',
136
- content: {
137
- type,
138
- content,
139
- importance,
140
- author_id: this.userId
141
- }
142
- });
143
- return contextId;
144
- }
145
- /**
146
- * Add personal context (not shared with team)
147
- */
148
- addPersonalContext(type, content) {
149
- const contextId = this.generateContextId(content);
150
- this.db.prepare(`
151
- INSERT INTO personal_context
152
- (context_id, user_id, project_id, type, content)
153
- VALUES (?, ?, ?, ?, ?)
154
- `).run(contextId, this.userId, this.projectId, type, content);
155
- return contextId;
156
- }
157
- /**
158
- * Start a new working frame (task/feature/debug session)
159
- */
160
- startFrame(task) {
161
- const frameId = uuidv4();
162
- // Capture current context snapshot
163
- const snapshot = this.captureContextSnapshot();
164
- this.db.prepare(`
165
- INSERT INTO active_frames
166
- (frame_id, project_id, user_id, task, context_snapshot)
167
- VALUES (?, ?, ?, ?, ?)
168
- `).run(frameId, this.projectId, this.userId, task, JSON.stringify(snapshot));
169
- // Share frame with team (they see you're working on this)
170
- this.p2pSync.createFrame({
171
- id: frameId,
172
- type: 'active_frame',
173
- content: {
174
- task,
175
- user_id: this.userId,
176
- started_at: Date.now()
177
- }
178
- });
179
- this.activeFrames.set(frameId, {
180
- id: frameId,
181
- task,
182
- startedAt: Date.now(),
183
- context: snapshot
184
- });
185
- return frameId;
186
- }
187
- /**
188
- * Complete a frame and extract learnings
189
- */
190
- completeFrame(frameId, summary, learnings) {
191
- const frame = this.activeFrames.get(frameId);
192
- if (!frame)
193
- return;
194
- // Update frame status
195
- this.db.prepare(`
196
- UPDATE active_frames
197
- SET status = 'completed', last_activity = unixepoch()
198
- WHERE frame_id = ?
199
- `).run(frameId);
200
- // Extract and share important learnings
201
- learnings.forEach(learning => {
202
- this.addSharedContext('learning', learning, 0.7);
203
- });
204
- // Add to project knowledge if significant
205
- if (learnings.length > 0) {
206
- this.addProjectKnowledge('patterns', frame.task, summary);
207
- }
208
- // Notify team of completion
209
- this.p2pSync.updateFrame(frameId, {
210
- content: {
211
- ...this.p2pSync.getFrame(frameId)?.content,
212
- status: 'completed',
213
- summary,
214
- learnings,
215
- completed_at: Date.now()
216
- }
217
- });
218
- this.activeFrames.delete(frameId);
219
- }
220
- // ============================================
221
- // Context Assembly for LLM
222
- // ============================================
223
- /**
224
- * Get optimized context bundle for LLM
225
- */
226
- async getContextBundle(intent, tokenBudget = 8000) {
227
- const bundle = {
228
- shared: [],
229
- personal: [],
230
- active: [],
231
- knowledge: [],
232
- stats: {
233
- tokenCount: 0,
234
- sources: 0
235
- }
236
- };
237
- let tokensUsed = 0;
238
- const maxTokens = tokenBudget;
239
- // 1. Critical shared context (30% budget)
240
- const criticalShared = this.db.prepare(`
241
- SELECT * FROM shared_context
242
- WHERE project_id = ? AND active = TRUE
243
- ORDER BY importance DESC, updated_at DESC
244
- LIMIT 20
245
- `).all(this.projectId);
246
- for (const ctx of criticalShared) {
247
- const tokens = this.estimateTokens(ctx.content);
248
- if (tokensUsed + tokens > maxTokens * 0.3)
249
- break;
250
- bundle.shared.push({
251
- type: ctx.type,
252
- content: ctx.content,
253
- author: ctx.author_id,
254
- importance: ctx.importance
255
- });
256
- tokensUsed += tokens;
257
- }
258
- // 2. Active team frames (20% budget)
259
- const activeFrames = this.db.prepare(`
260
- SELECT * FROM active_frames
261
- WHERE project_id = ? AND status = 'active'
262
- ORDER BY last_activity DESC
263
- LIMIT 10
264
- `).all(this.projectId);
265
- for (const frame of activeFrames) {
266
- const tokens = this.estimateTokens(frame.task);
267
- if (tokensUsed + tokens > maxTokens * 0.5)
268
- break;
269
- bundle.active.push({
270
- user: frame.user_id,
271
- task: frame.task,
272
- duration: Date.now() - frame.started_at * 1000
273
- });
274
- tokensUsed += tokens;
275
- }
276
- // 3. Relevant project knowledge (30% budget)
277
- const knowledge = this.db.prepare(`
278
- SELECT * FROM project_knowledge
279
- WHERE project_id = ?
280
- ORDER BY confidence DESC, usage_count DESC
281
- LIMIT 15
282
- `).all(this.projectId);
283
- for (const k of knowledge) {
284
- const tokens = this.estimateTokens(k.content);
285
- if (tokensUsed + tokens > maxTokens * 0.8)
286
- break;
287
- bundle.knowledge.push({
288
- category: k.category,
289
- title: k.title,
290
- content: k.content,
291
- confidence: k.confidence
292
- });
293
- tokensUsed += tokens;
294
- }
295
- // 4. Personal context (remaining budget)
296
- const personal = this.db.prepare(`
297
- SELECT * FROM personal_context
298
- WHERE user_id = ? AND project_id = ?
299
- ORDER BY created_at DESC
300
- LIMIT 10
301
- `).all(this.userId, this.projectId);
302
- for (const p of personal) {
303
- const tokens = this.estimateTokens(p.content);
304
- if (tokensUsed + tokens > maxTokens * 0.95)
305
- break;
306
- bundle.personal.push({
307
- type: p.type,
308
- content: p.content
309
- });
310
- tokensUsed += tokens;
311
- }
312
- bundle.stats.tokenCount = tokensUsed;
313
- bundle.stats.sources = bundle.shared.length + bundle.personal.length +
314
- bundle.active.length + bundle.knowledge.length;
315
- return bundle;
316
- }
317
- // ============================================
318
- // Knowledge Extraction & Learning
319
- // ============================================
320
- addProjectKnowledge(category, title, content) {
321
- const knowledgeId = this.generateContextId(content);
322
- this.db.prepare(`
323
- INSERT OR REPLACE INTO project_knowledge
324
- (knowledge_id, project_id, category, title, content, confidence)
325
- VALUES (?, ?, ?, ?, ?, ?)
326
- `).run(knowledgeId, this.projectId, category, title, content, 0.5);
327
- // Share significant knowledge with team
328
- this.p2pSync.createFrame({
329
- id: knowledgeId,
330
- type: 'project_knowledge',
331
- content: {
332
- category,
333
- title,
334
- content
335
- }
336
- });
337
- }
338
- findSimilarContext(content) {
339
- // Simple similarity check - in production use embeddings
340
- const words = content.toLowerCase().split(/\s+/);
341
- const results = this.db.prepare(`
342
- SELECT * FROM shared_context
343
- WHERE project_id = ? AND active = TRUE
344
- `).all(this.projectId);
345
- for (const ctx of results) {
346
- const ctxWords = ctx.content.toLowerCase().split(/\s+/);
347
- const overlap = words.filter(w => ctxWords.includes(w)).length;
348
- if (overlap / words.length > 0.7) {
349
- return ctx;
350
- }
351
- }
352
- return null;
353
- }
354
- reinforceContext(contextId) {
355
- // Increase importance when context is referenced again
356
- this.db.prepare(`
357
- UPDATE shared_context
358
- SET importance = MIN(1.0, importance + 0.1),
359
- updated_at = unixepoch()
360
- WHERE context_id = ?
361
- `).run(contextId);
362
- // Update decay tracking
363
- this.db.prepare(`
364
- INSERT INTO context_decay (context_id, last_accessed, access_count)
365
- VALUES (?, unixepoch(), 1)
366
- ON CONFLICT(context_id) DO UPDATE SET
367
- last_accessed = unixepoch(),
368
- access_count = access_count + 1
369
- `).run(contextId);
370
- }
371
- // ============================================
372
- // Sync Handlers
373
- // ============================================
374
- setupSyncHandlers() {
375
- // Listen for shared context updates from team
376
- setInterval(() => {
377
- this.syncSharedContext();
378
- }, 5000);
379
- // Decay old context importance
380
- setInterval(() => {
381
- this.decayOldContext();
382
- }, 3600000); // Every hour
383
- }
384
- async syncSharedContext() {
385
- // P2P sync handles the actual synchronization
386
- // This method processes received updates
387
- const stats = await this.p2pSync.sync();
388
- console.log(`Synced with ${stats.connectedPeers} peers`);
389
- }
390
- decayOldContext() {
391
- // Reduce importance of unused context
392
- this.db.prepare(`
393
- UPDATE shared_context
394
- SET importance = importance * 0.95
395
- WHERE project_id = ?
396
- AND updated_at < unixepoch() - 86400 * 7 -- 7 days old
397
- AND importance > 0.1
398
- `).run(this.projectId);
399
- }
400
- // ============================================
401
- // Utilities
402
- // ============================================
403
- generateContextId(content) {
404
- return createHash('sha256')
405
- .update(content)
406
- .digest('hex')
407
- .substring(0, 12);
408
- }
409
- estimateTokens(text) {
410
- // Rough estimate: 1 token per 4 characters
411
- return Math.ceil(text.length / 4);
412
- }
413
- captureContextSnapshot() {
414
- const shared = this.db.prepare(`
415
- SELECT type, content, importance FROM shared_context
416
- WHERE project_id = ? AND active = TRUE
417
- ORDER BY importance DESC
418
- LIMIT 10
419
- `).all(this.projectId);
420
- const personal = this.db.prepare(`
421
- SELECT type, content FROM personal_context
422
- WHERE user_id = ? AND project_id = ?
423
- ORDER BY created_at DESC
424
- LIMIT 5
425
- `).all(this.userId, this.projectId);
426
- return {
427
- timestamp: Date.now(),
428
- shared: shared,
429
- personal: personal
430
- };
431
- }
432
- // ============================================
433
- // Public API
434
- // ============================================
435
- getTeamActivity() {
436
- const activeFrames = this.db.prepare(`
437
- SELECT user_id, task, started_at FROM active_frames
438
- WHERE project_id = ? AND status = 'active'
439
- `).all(this.projectId);
440
- const recentContext = this.db.prepare(`
441
- SELECT type, COUNT(*) as count FROM shared_context
442
- WHERE project_id = ? AND created_at > unixepoch() - 3600
443
- GROUP BY type
444
- `).all(this.projectId);
445
- return {
446
- activeUsers: [...new Set(activeFrames.map(f => f.user_id))],
447
- activeFrames: activeFrames.map(f => ({
448
- user: f.user_id,
449
- task: f.task,
450
- duration: Date.now() - f.started_at * 1000
451
- })),
452
- recentContext: recentContext
453
- };
454
- }
455
- exportContext() {
456
- const shared = this.db.prepare(`
457
- SELECT * FROM shared_context WHERE project_id = ?
458
- `).all(this.projectId);
459
- const knowledge = this.db.prepare(`
460
- SELECT * FROM project_knowledge WHERE project_id = ?
461
- `).all(this.projectId);
462
- return JSON.stringify({
463
- projectId: this.projectId,
464
- exported: Date.now(),
465
- sharedContext: shared,
466
- projectKnowledge: knowledge
467
- }, null, 2);
468
- }
469
- disconnect() {
470
- this.p2pSync.disconnect();
471
- this.db.close();
472
- }
473
- }
474
- // ============================================
475
- // Helper Classes
476
- // ============================================
477
- class SharedContext {
478
- db;
479
- p2pSync;
480
- constructor(db, p2pSync) {
481
- this.db = db;
482
- this.p2pSync = p2pSync;
483
- }
484
- }
485
- class PersonalContext {
486
- db;
487
- constructor(db) {
488
- this.db = db;
489
- }
490
- }
491
- //# sourceMappingURL=team-context-sync.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"team-context-sync.js","sourceRoot":"","sources":["../../../p2p-sync/src/team-context-sync.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Script to merge duplicate Linear tasks
4
- * Keeps the lowest-numbered task as primary and marks others as duplicates
5
- */
6
- export {};
7
- //# sourceMappingURL=merge-linear-duplicates.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-linear-duplicates.d.ts","sourceRoot":"","sources":["../../scripts/merge-linear-duplicates.ts"],"names":[],"mappings":";AAEA;;;GAGG"}
@@ -1,126 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Script to merge duplicate Linear tasks
4
- * Keeps the lowest-numbered task as primary and marks others as duplicates
5
- */
6
- import { LinearClient } from '@linear/sdk';
7
- import { readFileSync } from 'fs';
8
- import { join } from 'path';
9
- const duplicateGroups = [
10
- {
11
- name: 'Linear API Integration',
12
- taskIds: ['STA-88', 'STA-74', 'STA-61', 'STA-46', 'STA-32', 'STA-9'],
13
- primaryId: 'STA-9',
14
- },
15
- {
16
- name: 'Performance Optimization',
17
- taskIds: ['STA-87', 'STA-73', 'STA-60', 'STA-45', 'STA-31', 'STA-13', 'STA-21', 'STA-35', 'STA-50', 'STA-63', 'STA-77'],
18
- primaryId: 'STA-13',
19
- },
20
- {
21
- name: 'Security Audit and Input Validation',
22
- taskIds: ['STA-85', 'STA-71', 'STA-58', 'STA-43', 'STA-29'],
23
- primaryId: 'STA-29',
24
- },
25
- {
26
- name: 'Implement Proper Error Handling',
27
- taskIds: ['STA-84', 'STA-70', 'STA-57', 'STA-42', 'STA-28'],
28
- primaryId: 'STA-28',
29
- },
30
- {
31
- name: 'Implement Comprehensive Testing Suite',
32
- taskIds: ['STA-83', 'STA-69', 'STA-56', 'STA-41', 'STA-27'],
33
- primaryId: 'STA-27',
34
- },
35
- ];
36
- async function mergeDuplicateTasks() {
37
- console.log('šŸ”„ Starting Linear duplicate task merge...\n');
38
- // Load Linear tokens
39
- const tokensPath = join(process.cwd(), '.stackmemory', 'linear-tokens.json');
40
- let accessToken;
41
- try {
42
- const tokensData = readFileSync(tokensPath, 'utf8');
43
- const tokens = JSON.parse(tokensData);
44
- accessToken = tokens.accessToken;
45
- console.log('āœ… Loaded Linear authentication tokens\n');
46
- }
47
- catch (error) {
48
- console.error('āŒ Failed to load Linear tokens. Please run: stackmemory linear setup');
49
- process.exit(1);
50
- }
51
- // Initialize Linear client
52
- const client = new LinearClient({
53
- apiKey: accessToken,
54
- });
55
- // Process each duplicate group
56
- for (const group of duplicateGroups) {
57
- console.log(`\nšŸ“‹ Processing: ${group.name}`);
58
- console.log(` Primary: ${group.primaryId}`);
59
- console.log(` Duplicates: ${group.taskIds.filter(id => id !== group.primaryId).join(', ')}`);
60
- try {
61
- // Get the primary issue
62
- const primaryIssue = await client.issue(group.primaryId);
63
- if (!primaryIssue) {
64
- console.log(` āš ļø Primary issue ${group.primaryId} not found, skipping group`);
65
- continue;
66
- }
67
- // Collect descriptions from all duplicates
68
- let combinedDescription = primaryIssue.description || '';
69
- const duplicateIds = group.taskIds.filter(id => id !== group.primaryId);
70
- for (const duplicateId of duplicateIds) {
71
- try {
72
- const duplicateIssue = await client.issue(duplicateId);
73
- if (!duplicateIssue) {
74
- console.log(` āš ļø Issue ${duplicateId} not found, skipping`);
75
- continue;
76
- }
77
- // Add duplicate's description if it exists and differs
78
- if (duplicateIssue.description &&
79
- duplicateIssue.description !== primaryIssue.description) {
80
- combinedDescription += `\n\n---\n[Merged from ${duplicateId}]\n${duplicateIssue.description}`;
81
- }
82
- // Get the canceled state for the team
83
- const team = await duplicateIssue.team;
84
- const states = await team.states();
85
- const canceledState = states.nodes.find(s => s.type === 'canceled');
86
- if (!canceledState) {
87
- console.log(` āš ļø No 'canceled' state found for team, skipping ${duplicateId}`);
88
- continue;
89
- }
90
- // Update duplicate to canceled state with reference to primary
91
- await duplicateIssue.update({
92
- stateId: canceledState.id,
93
- description: `Duplicate of ${group.primaryId}\n\n${duplicateIssue.description || ''}`,
94
- });
95
- console.log(` āœ… Marked ${duplicateId} as duplicate of ${group.primaryId}`);
96
- }
97
- catch (error) {
98
- console.log(` āŒ Failed to process ${duplicateId}: ${error.message}`);
99
- }
100
- }
101
- // Update primary issue with combined description if changed
102
- if (combinedDescription !== primaryIssue.description) {
103
- await primaryIssue.update({
104
- description: combinedDescription,
105
- });
106
- console.log(` āœ… Updated ${group.primaryId} with merged descriptions`);
107
- }
108
- console.log(` āœ… Group "${group.name}" processed successfully`);
109
- }
110
- catch (error) {
111
- console.error(` āŒ Error processing group: ${error.message}`);
112
- }
113
- }
114
- console.log('\n✨ Duplicate merge complete!');
115
- console.log('\nšŸ“Š Summary:');
116
- console.log(` Groups processed: ${duplicateGroups.length}`);
117
- console.log(` Total tasks affected: ${duplicateGroups.reduce((acc, g) => acc + g.taskIds.length, 0)}`);
118
- console.log(` Primary tasks kept: ${duplicateGroups.length}`);
119
- console.log(` Tasks marked as duplicate: ${duplicateGroups.reduce((acc, g) => acc + g.taskIds.length - 1, 0)}`);
120
- }
121
- // Run the merge
122
- mergeDuplicateTasks().catch((error) => {
123
- console.error('āŒ Fatal error:', error);
124
- process.exit(1);
125
- });
126
- //# sourceMappingURL=merge-linear-duplicates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"merge-linear-duplicates.js","sourceRoot":"","sources":["../../scripts/merge-linear-duplicates.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import { Router } from 'express';
2
- import { Server } from 'http';
3
- export declare class AnalyticsAPI {
4
- private router;
5
- private analyticsService;
6
- private wss?;
7
- constructor(projectPath?: string);
8
- private setupRoutes;
9
- private getMetrics;
10
- private getTasks;
11
- private getTeamMetrics;
12
- private addTask;
13
- private updateTask;
14
- private syncLinear;
15
- private exportMetrics;
16
- private parseQuery;
17
- private getPresetTimeRange;
18
- private convertToCSV;
19
- private handleError;
20
- setupWebSocket(server: Server): void;
21
- getRouter(): Router;
22
- close(): void;
23
- }
24
- //# sourceMappingURL=analytics-api.d.ts.map