@stackmemoryai/stackmemory 0.2.7 → 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 (297) 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/query/query-parser.d.ts +104 -0
  41. package/dist/src/core/query/query-parser.d.ts.map +1 -0
  42. package/dist/src/core/query/query-parser.js +347 -0
  43. package/dist/src/core/query/query-parser.js.map +1 -0
  44. package/dist/src/core/retrieval/index.d.ts +8 -0
  45. package/dist/src/core/retrieval/index.d.ts.map +1 -0
  46. package/dist/src/core/retrieval/index.js +8 -0
  47. package/dist/src/core/retrieval/index.js.map +1 -0
  48. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +71 -0
  49. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +1 -0
  50. package/dist/src/core/retrieval/llm-context-retrieval.js +545 -0
  51. package/dist/src/core/retrieval/llm-context-retrieval.js.map +1 -0
  52. package/dist/src/core/retrieval/summary-generator.d.ts +63 -0
  53. package/dist/src/core/retrieval/summary-generator.d.ts.map +1 -0
  54. package/dist/src/core/retrieval/summary-generator.js +622 -0
  55. package/dist/src/core/retrieval/summary-generator.js.map +1 -0
  56. package/dist/src/core/retrieval/types.d.ts +257 -0
  57. package/dist/src/core/retrieval/types.d.ts.map +1 -0
  58. package/dist/src/core/retrieval/types.js +18 -0
  59. package/dist/src/core/retrieval/types.js.map +1 -0
  60. package/dist/src/core/trace/trace-detector.d.ts +108 -0
  61. package/dist/src/core/trace/trace-detector.d.ts.map +1 -0
  62. package/dist/src/core/trace/trace-detector.demo.d.ts +5 -0
  63. package/dist/src/core/trace/trace-detector.demo.d.ts.map +1 -0
  64. package/dist/src/core/trace/trace-detector.demo.js +145 -0
  65. package/dist/src/core/trace/trace-detector.demo.js.map +1 -0
  66. package/dist/src/core/trace/trace-detector.js +425 -0
  67. package/dist/src/core/trace/trace-detector.js.map +1 -0
  68. package/dist/src/core/trace/trace-store.d.ts +60 -0
  69. package/dist/src/core/trace/trace-store.d.ts.map +1 -0
  70. package/dist/src/core/trace/trace-store.js +323 -0
  71. package/dist/src/core/trace/trace-store.js.map +1 -0
  72. package/dist/src/core/trace/types.d.ts +81 -0
  73. package/dist/src/core/trace/types.d.ts.map +1 -0
  74. package/dist/src/core/trace/types.js +70 -0
  75. package/dist/src/core/trace/types.js.map +1 -0
  76. package/dist/src/integrations/linear/sync-manager.d.ts +76 -0
  77. package/dist/src/integrations/linear/sync-manager.d.ts.map +1 -0
  78. package/dist/src/integrations/linear/sync-manager.js +223 -0
  79. package/dist/src/integrations/linear/sync-manager.js.map +1 -0
  80. package/dist/src/integrations/mcp/server.d.ts +8 -0
  81. package/dist/src/integrations/mcp/server.d.ts.map +1 -1
  82. package/dist/src/integrations/mcp/server.js +368 -16
  83. package/dist/src/integrations/mcp/server.js.map +1 -1
  84. package/dist/src/integrations/mcp/trace-test.d.ts +5 -0
  85. package/dist/src/integrations/mcp/trace-test.d.ts.map +1 -0
  86. package/dist/src/integrations/mcp/trace-test.js +54 -0
  87. package/dist/src/integrations/mcp/trace-test.js.map +1 -0
  88. package/dist/src/services/config-service.d.ts +1 -1
  89. package/dist/src/services/config-service.d.ts.map +1 -1
  90. package/dist/src/services/config-service.js.map +1 -1
  91. package/dist/src/types/task.d.ts +11 -1
  92. package/dist/src/types/task.d.ts.map +1 -1
  93. package/dist/src/utils/logger.d.ts +4 -4
  94. package/dist/src/utils/logger.d.ts.map +1 -1
  95. package/dist/src/utils/logger.js.map +1 -1
  96. package/package.json +9 -8
  97. package/dist/attention-scoring/src/attention-tracker.d.ts +0 -79
  98. package/dist/attention-scoring/src/attention-tracker.d.ts.map +0 -1
  99. package/dist/attention-scoring/src/attention-tracker.js +0 -488
  100. package/dist/attention-scoring/src/attention-tracker.js.map +0 -1
  101. package/dist/attention-scoring/src/mcp-integration.d.ts +0 -56
  102. package/dist/attention-scoring/src/mcp-integration.d.ts.map +0 -1
  103. package/dist/attention-scoring/src/mcp-integration.js +0 -369
  104. package/dist/attention-scoring/src/mcp-integration.js.map +0 -1
  105. package/dist/index.js +0 -382
  106. package/dist/p2p-sync/src/p2p-sync.d.ts +0 -81
  107. package/dist/p2p-sync/src/p2p-sync.d.ts.map +0 -1
  108. package/dist/p2p-sync/src/p2p-sync.js +0 -457
  109. package/dist/p2p-sync/src/p2p-sync.js.map +0 -1
  110. package/dist/p2p-sync/src/team-context-sync.d.ts +0 -99
  111. package/dist/p2p-sync/src/team-context-sync.d.ts.map +0 -1
  112. package/dist/p2p-sync/src/team-context-sync.js +0 -491
  113. package/dist/p2p-sync/src/team-context-sync.js.map +0 -1
  114. package/dist/scripts/merge-linear-duplicates.d.ts +0 -7
  115. package/dist/scripts/merge-linear-duplicates.d.ts.map +0 -1
  116. package/dist/scripts/merge-linear-duplicates.js +0 -126
  117. package/dist/scripts/merge-linear-duplicates.js.map +0 -1
  118. package/dist/src/analytics/api/analytics-api.d.ts +0 -24
  119. package/dist/src/analytics/api/analytics-api.d.ts.map +0 -1
  120. package/dist/src/analytics/api/analytics-api.js +0 -279
  121. package/dist/src/analytics/api/analytics-api.js.map +0 -1
  122. package/dist/src/analytics/core/analytics-service.d.ts +0 -23
  123. package/dist/src/analytics/core/analytics-service.d.ts.map +0 -1
  124. package/dist/src/analytics/core/analytics-service.js +0 -160
  125. package/dist/src/analytics/core/analytics-service.js.map +0 -1
  126. package/dist/src/analytics/index.d.ts +0 -12
  127. package/dist/src/analytics/index.d.ts.map +0 -1
  128. package/dist/src/analytics/index.js +0 -11
  129. package/dist/src/analytics/index.js.map +0 -1
  130. package/dist/src/analytics/queries/metrics-queries.d.ts +0 -11
  131. package/dist/src/analytics/queries/metrics-queries.d.ts.map +0 -1
  132. package/dist/src/analytics/queries/metrics-queries.js +0 -179
  133. package/dist/src/analytics/queries/metrics-queries.js.map +0 -1
  134. package/dist/src/analytics/types/metrics.d.ts +0 -60
  135. package/dist/src/analytics/types/metrics.d.ts.map +0 -1
  136. package/dist/src/analytics/types/metrics.js +0 -2
  137. package/dist/src/analytics/types/metrics.js.map +0 -1
  138. package/dist/src/beads/beads-task-store.d.ts +0 -117
  139. package/dist/src/beads/beads-task-store.d.ts.map +0 -1
  140. package/dist/src/beads/beads-task-store.js +0 -318
  141. package/dist/src/beads/beads-task-store.js.map +0 -1
  142. package/dist/src/beads/task-aware-context.d.ts +0 -103
  143. package/dist/src/beads/task-aware-context.d.ts.map +0 -1
  144. package/dist/src/beads/task-aware-context.js +0 -395
  145. package/dist/src/beads/task-aware-context.js.map +0 -1
  146. package/dist/src/beads-task-store.d.ts +0 -117
  147. package/dist/src/beads-task-store.d.ts.map +0 -1
  148. package/dist/src/beads-task-store.js +0 -318
  149. package/dist/src/beads-task-store.js.map +0 -1
  150. package/dist/src/cli/__tests__/index.test.d.ts +0 -5
  151. package/dist/src/cli/__tests__/index.test.d.ts.map +0 -1
  152. package/dist/src/cli/__tests__/index.test.js +0 -726
  153. package/dist/src/cli/__tests__/index.test.js.map +0 -1
  154. package/dist/src/cli/analytics-viewer.d.ts +0 -3
  155. package/dist/src/cli/analytics-viewer.d.ts.map +0 -1
  156. package/dist/src/cli/analytics-viewer.js +0 -89
  157. package/dist/src/cli/analytics-viewer.js.map +0 -1
  158. package/dist/src/cli/cli.d.ts +0 -7
  159. package/dist/src/cli/cli.d.ts.map +0 -1
  160. package/dist/src/cli/cli.js +0 -704
  161. package/dist/src/cli/cli.js.map +0 -1
  162. package/dist/src/cli/project-commands.d.ts +0 -8
  163. package/dist/src/cli/project-commands.d.ts.map +0 -1
  164. package/dist/src/cli/project-commands.js +0 -212
  165. package/dist/src/cli/project-commands.js.map +0 -1
  166. package/dist/src/cli.d.ts +0 -7
  167. package/dist/src/cli.d.ts.map +0 -1
  168. package/dist/src/cli.js +0 -73
  169. package/dist/src/cli.js.map +0 -1
  170. package/dist/src/core/context/__tests__/frame-manager.test.d.ts +0 -5
  171. package/dist/src/core/context/__tests__/frame-manager.test.d.ts.map +0 -1
  172. package/dist/src/core/context/__tests__/frame-manager.test.js +0 -892
  173. package/dist/src/core/context/__tests__/frame-manager.test.js.map +0 -1
  174. package/dist/src/core/error-handler.d.ts +0 -46
  175. package/dist/src/core/error-handler.d.ts.map +0 -1
  176. package/dist/src/core/error-handler.js +0 -212
  177. package/dist/src/core/error-handler.js.map +0 -1
  178. package/dist/src/core/errors/__tests__/error-handling.test.d.ts +0 -5
  179. package/dist/src/core/errors/__tests__/error-handling.test.d.ts.map +0 -1
  180. package/dist/src/core/errors/__tests__/error-handling.test.js +0 -239
  181. package/dist/src/core/errors/__tests__/error-handling.test.js.map +0 -1
  182. package/dist/src/core/frame-manager.d.ts +0 -106
  183. package/dist/src/core/frame-manager.d.ts.map +0 -1
  184. package/dist/src/core/frame-manager.js +0 -387
  185. package/dist/src/core/frame-manager.js.map +0 -1
  186. package/dist/src/core/logger.d.ts +0 -24
  187. package/dist/src/core/logger.d.ts.map +0 -1
  188. package/dist/src/core/logger.js +0 -121
  189. package/dist/src/core/logger.js.map +0 -1
  190. package/dist/src/core/logger.test.d.ts +0 -2
  191. package/dist/src/core/logger.test.d.ts.map +0 -1
  192. package/dist/src/core/logger.test.js +0 -31
  193. package/dist/src/core/logger.test.js.map +0 -1
  194. package/dist/src/core/progress-tracker.d.ts +0 -95
  195. package/dist/src/core/progress-tracker.d.ts.map +0 -1
  196. package/dist/src/core/progress-tracker.js +0 -178
  197. package/dist/src/core/progress-tracker.js.map +0 -1
  198. package/dist/src/core/project-manager.d.ts +0 -130
  199. package/dist/src/core/project-manager.d.ts.map +0 -1
  200. package/dist/src/core/project-manager.js +0 -582
  201. package/dist/src/core/project-manager.js.map +0 -1
  202. package/dist/src/core/update-checker.d.ts +0 -38
  203. package/dist/src/core/update-checker.d.ts.map +0 -1
  204. package/dist/src/core/update-checker.js +0 -156
  205. package/dist/src/core/update-checker.js.map +0 -1
  206. package/dist/src/error-handler.d.ts +0 -42
  207. package/dist/src/error-handler.d.ts.map +0 -1
  208. package/dist/src/error-handler.js +0 -155
  209. package/dist/src/error-handler.js.map +0 -1
  210. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts +0 -5
  211. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.d.ts.map +0 -1
  212. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js +0 -712
  213. package/dist/src/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -1
  214. package/dist/src/frame-manager.d.ts +0 -106
  215. package/dist/src/frame-manager.d.ts.map +0 -1
  216. package/dist/src/frame-manager.js +0 -361
  217. package/dist/src/frame-manager.js.map +0 -1
  218. package/dist/src/integrations/browser-mcp.d.ts +0 -94
  219. package/dist/src/integrations/browser-mcp.d.ts.map +0 -1
  220. package/dist/src/integrations/browser-mcp.js +0 -431
  221. package/dist/src/integrations/browser-mcp.js.map +0 -1
  222. package/dist/src/integrations/linear/__tests__/auth.test.d.ts +0 -5
  223. package/dist/src/integrations/linear/__tests__/auth.test.d.ts.map +0 -1
  224. package/dist/src/integrations/linear/__tests__/auth.test.js +0 -517
  225. package/dist/src/integrations/linear/__tests__/auth.test.js.map +0 -1
  226. package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts +0 -5
  227. package/dist/src/integrations/linear/__tests__/sync-service.test.d.ts.map +0 -1
  228. package/dist/src/integrations/linear/__tests__/sync-service.test.js +0 -700
  229. package/dist/src/integrations/linear/__tests__/sync-service.test.js.map +0 -1
  230. package/dist/src/integrations/linear-auth.d.ts +0 -99
  231. package/dist/src/integrations/linear-auth.d.ts.map +0 -1
  232. package/dist/src/integrations/linear-auth.js +0 -319
  233. package/dist/src/integrations/linear-auth.js.map +0 -1
  234. package/dist/src/integrations/linear-auto-sync.d.ts +0 -77
  235. package/dist/src/integrations/linear-auto-sync.d.ts.map +0 -1
  236. package/dist/src/integrations/linear-auto-sync.js +0 -268
  237. package/dist/src/integrations/linear-auto-sync.js.map +0 -1
  238. package/dist/src/integrations/linear-client.d.ts +0 -86
  239. package/dist/src/integrations/linear-client.d.ts.map +0 -1
  240. package/dist/src/integrations/linear-client.js +0 -277
  241. package/dist/src/integrations/linear-client.js.map +0 -1
  242. package/dist/src/integrations/linear-config.d.ts +0 -51
  243. package/dist/src/integrations/linear-config.d.ts.map +0 -1
  244. package/dist/src/integrations/linear-config.js +0 -103
  245. package/dist/src/integrations/linear-config.js.map +0 -1
  246. package/dist/src/integrations/linear-sync.d.ts +0 -97
  247. package/dist/src/integrations/linear-sync.d.ts.map +0 -1
  248. package/dist/src/integrations/linear-sync.js +0 -391
  249. package/dist/src/integrations/linear-sync.js.map +0 -1
  250. package/dist/src/integrations/mcp/__tests__/server.test.d.ts +0 -5
  251. package/dist/src/integrations/mcp/__tests__/server.test.d.ts.map +0 -1
  252. package/dist/src/integrations/mcp/__tests__/server.test.js +0 -790
  253. package/dist/src/integrations/mcp/__tests__/server.test.js.map +0 -1
  254. package/dist/src/logger.d.ts +0 -24
  255. package/dist/src/logger.d.ts.map +0 -1
  256. package/dist/src/logger.js +0 -120
  257. package/dist/src/logger.js.map +0 -1
  258. package/dist/src/mcp/mcp-server.d.ts +0 -40
  259. package/dist/src/mcp/mcp-server.d.ts.map +0 -1
  260. package/dist/src/mcp/mcp-server.js +0 -828
  261. package/dist/src/mcp/mcp-server.js.map +0 -1
  262. package/dist/src/mcp-server.d.ts +0 -32
  263. package/dist/src/mcp-server.d.ts.map +0 -1
  264. package/dist/src/mcp-server.js +0 -441
  265. package/dist/src/mcp-server.js.map +0 -1
  266. package/dist/src/pebbles/pebbles-task-store.d.ts +0 -117
  267. package/dist/src/pebbles/pebbles-task-store.d.ts.map +0 -1
  268. package/dist/src/pebbles/pebbles-task-store.js +0 -335
  269. package/dist/src/pebbles/pebbles-task-store.js.map +0 -1
  270. package/dist/src/pebbles/task-aware-context.d.ts +0 -103
  271. package/dist/src/pebbles/task-aware-context.d.ts.map +0 -1
  272. package/dist/src/pebbles/task-aware-context.js +0 -412
  273. package/dist/src/pebbles/task-aware-context.js.map +0 -1
  274. package/dist/src/railway/index.d.ts +0 -7
  275. package/dist/src/railway/index.d.ts.map +0 -1
  276. package/dist/src/railway/index.js +0 -401
  277. package/dist/src/railway/index.js.map +0 -1
  278. package/dist/src/runway/auth/auth-middleware.d.ts +0 -66
  279. package/dist/src/runway/auth/auth-middleware.d.ts.map +0 -1
  280. package/dist/src/runway/auth/auth-middleware.js +0 -337
  281. package/dist/src/runway/auth/auth-middleware.js.map +0 -1
  282. package/dist/src/runway/server/runway-mcp-server.d.ts +0 -46
  283. package/dist/src/runway/server/runway-mcp-server.d.ts.map +0 -1
  284. package/dist/src/runway/server/runway-mcp-server.js +0 -601
  285. package/dist/src/runway/server/runway-mcp-server.js.map +0 -1
  286. package/dist/src/runway.bak/auth/auth-middleware.d.ts +0 -66
  287. package/dist/src/runway.bak/auth/auth-middleware.d.ts.map +0 -1
  288. package/dist/src/runway.bak/auth/auth-middleware.js +0 -337
  289. package/dist/src/runway.bak/auth/auth-middleware.js.map +0 -1
  290. package/dist/src/runway.bak/server/runway-mcp-server.d.ts +0 -46
  291. package/dist/src/runway.bak/server/runway-mcp-server.d.ts.map +0 -1
  292. package/dist/src/runway.bak/server/runway-mcp-server.js +0 -601
  293. package/dist/src/runway.bak/server/runway-mcp-server.js.map +0 -1
  294. package/dist/src/task-aware-context.d.ts +0 -103
  295. package/dist/src/task-aware-context.d.ts.map +0 -1
  296. package/dist/src/task-aware-context.js +0 -395
  297. package/dist/src/task-aware-context.js.map +0 -1
@@ -0,0 +1,323 @@
1
+ /**
2
+ * Trace Store - Database persistence for traces
3
+ */
4
+ import { TraceType, } from './types.js';
5
+ import { logger } from '../monitoring/logger.js';
6
+ export class TraceStore {
7
+ db;
8
+ constructor(db) {
9
+ this.db = db;
10
+ this.initializeSchema();
11
+ }
12
+ /**
13
+ * Initialize database schema for traces
14
+ */
15
+ initializeSchema() {
16
+ // Check if frames table exists (it may not in all contexts)
17
+ const hasFramesTable = this.db
18
+ .prepare(`
19
+ SELECT name FROM sqlite_master
20
+ WHERE type='table' AND name='frames'
21
+ `)
22
+ .get();
23
+ // Create traces table with optional foreign key
24
+ if (hasFramesTable) {
25
+ this.db.exec(`
26
+ CREATE TABLE IF NOT EXISTS traces (
27
+ id TEXT PRIMARY KEY,
28
+ type TEXT NOT NULL,
29
+ score REAL NOT NULL,
30
+ summary TEXT NOT NULL,
31
+ start_time INTEGER NOT NULL,
32
+ end_time INTEGER NOT NULL,
33
+ frame_id TEXT,
34
+ user_id TEXT,
35
+ files_modified TEXT,
36
+ errors_encountered TEXT,
37
+ decisions_recorded TEXT,
38
+ causal_chain INTEGER,
39
+ compressed_data TEXT,
40
+ created_at INTEGER DEFAULT (unixepoch()),
41
+ FOREIGN KEY (frame_id) REFERENCES frames(frame_id) ON DELETE SET NULL
42
+ )
43
+ `);
44
+ }
45
+ else {
46
+ // Create without foreign key constraint
47
+ this.db.exec(`
48
+ CREATE TABLE IF NOT EXISTS traces (
49
+ id TEXT PRIMARY KEY,
50
+ type TEXT NOT NULL,
51
+ score REAL NOT NULL,
52
+ summary TEXT NOT NULL,
53
+ start_time INTEGER NOT NULL,
54
+ end_time INTEGER NOT NULL,
55
+ frame_id TEXT,
56
+ user_id TEXT,
57
+ files_modified TEXT,
58
+ errors_encountered TEXT,
59
+ decisions_recorded TEXT,
60
+ causal_chain INTEGER,
61
+ compressed_data TEXT,
62
+ created_at INTEGER DEFAULT (unixepoch())
63
+ )
64
+ `);
65
+ }
66
+ // Create tool_calls table
67
+ this.db.exec(`
68
+ CREATE TABLE IF NOT EXISTS tool_calls (
69
+ id TEXT PRIMARY KEY,
70
+ trace_id TEXT NOT NULL,
71
+ tool TEXT NOT NULL,
72
+ arguments TEXT,
73
+ timestamp INTEGER NOT NULL,
74
+ result TEXT,
75
+ error TEXT,
76
+ files_affected TEXT,
77
+ duration INTEGER,
78
+ sequence_number INTEGER NOT NULL,
79
+ FOREIGN KEY (trace_id) REFERENCES traces(id) ON DELETE CASCADE
80
+ )
81
+ `);
82
+ // Create indexes
83
+ this.db.exec(`
84
+ CREATE INDEX IF NOT EXISTS idx_traces_type ON traces(type);
85
+ CREATE INDEX IF NOT EXISTS idx_traces_frame_id ON traces(frame_id);
86
+ CREATE INDEX IF NOT EXISTS idx_traces_start_time ON traces(start_time);
87
+ CREATE INDEX IF NOT EXISTS idx_traces_score ON traces(score);
88
+ CREATE INDEX IF NOT EXISTS idx_tool_calls_trace_id ON tool_calls(trace_id);
89
+ CREATE INDEX IF NOT EXISTS idx_tool_calls_timestamp ON tool_calls(timestamp);
90
+ `);
91
+ }
92
+ /**
93
+ * Save a trace to the database
94
+ */
95
+ saveTrace(trace) {
96
+ const traceStmt = this.db.prepare(`
97
+ INSERT OR REPLACE INTO traces (
98
+ id, type, score, summary, start_time, end_time,
99
+ frame_id, user_id, files_modified, errors_encountered,
100
+ decisions_recorded, causal_chain, compressed_data
101
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
102
+ `);
103
+ const toolCallStmt = this.db.prepare(`
104
+ INSERT OR REPLACE INTO tool_calls (
105
+ id, trace_id, tool, arguments, timestamp, result,
106
+ error, files_affected, duration, sequence_number
107
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
108
+ `);
109
+ try {
110
+ this.db.transaction(() => {
111
+ // Save trace
112
+ traceStmt.run(trace.id, trace.type, trace.score, trace.summary, trace.metadata.startTime, trace.metadata.endTime, trace.metadata.frameId || null, trace.metadata.userId || null, JSON.stringify(trace.metadata.filesModified), JSON.stringify(trace.metadata.errorsEncountered), JSON.stringify(trace.metadata.decisionsRecorded), trace.metadata.causalChain ? 1 : 0, trace.compressed ? JSON.stringify(trace.compressed) : null);
113
+ // Save tool calls
114
+ trace.tools.forEach((tool, index) => {
115
+ toolCallStmt.run(tool.id, trace.id, tool.tool, tool.arguments ? JSON.stringify(tool.arguments) : null, tool.timestamp, tool.result ? JSON.stringify(tool.result) : null, tool.error || null, tool.filesAffected ? JSON.stringify(tool.filesAffected) : null, tool.duration || null, index);
116
+ });
117
+ })();
118
+ logger.debug(`Saved trace ${trace.id} with ${trace.tools.length} tool calls`);
119
+ }
120
+ catch (error) {
121
+ logger.error(`Failed to save trace ${trace.id}:`, error);
122
+ throw error;
123
+ }
124
+ }
125
+ /**
126
+ * Load a trace by ID
127
+ */
128
+ getTrace(id) {
129
+ const traceRow = this.db
130
+ .prepare(`
131
+ SELECT * FROM traces WHERE id = ?
132
+ `)
133
+ .get(id);
134
+ if (!traceRow) {
135
+ return null;
136
+ }
137
+ const toolRows = this.db
138
+ .prepare(`
139
+ SELECT * FROM tool_calls WHERE trace_id = ? ORDER BY sequence_number
140
+ `)
141
+ .all(id);
142
+ return this.rowsToTrace(traceRow, toolRows);
143
+ }
144
+ /**
145
+ * Load all traces
146
+ */
147
+ getAllTraces() {
148
+ const traceRows = this.db
149
+ .prepare(`
150
+ SELECT * FROM traces ORDER BY start_time DESC
151
+ `)
152
+ .all();
153
+ return traceRows.map((traceRow) => {
154
+ const toolRows = this.db
155
+ .prepare(`
156
+ SELECT * FROM tool_calls WHERE trace_id = ? ORDER BY sequence_number
157
+ `)
158
+ .all(traceRow.id);
159
+ return this.rowsToTrace(traceRow, toolRows);
160
+ });
161
+ }
162
+ /**
163
+ * Load traces by type
164
+ */
165
+ getTracesByType(type) {
166
+ const traceRows = this.db
167
+ .prepare(`
168
+ SELECT * FROM traces WHERE type = ? ORDER BY start_time DESC
169
+ `)
170
+ .all(type);
171
+ return traceRows.map((traceRow) => {
172
+ const toolRows = this.db
173
+ .prepare(`
174
+ SELECT * FROM tool_calls WHERE trace_id = ? ORDER BY sequence_number
175
+ `)
176
+ .all(traceRow.id);
177
+ return this.rowsToTrace(traceRow, toolRows);
178
+ });
179
+ }
180
+ /**
181
+ * Load traces by frame
182
+ */
183
+ getTracesByFrame(frameId) {
184
+ const traceRows = this.db
185
+ .prepare(`
186
+ SELECT * FROM traces WHERE frame_id = ? ORDER BY start_time DESC
187
+ `)
188
+ .all(frameId);
189
+ return traceRows.map((traceRow) => {
190
+ const toolRows = this.db
191
+ .prepare(`
192
+ SELECT * FROM tool_calls WHERE trace_id = ? ORDER BY sequence_number
193
+ `)
194
+ .all(traceRow.id);
195
+ return this.rowsToTrace(traceRow, toolRows);
196
+ });
197
+ }
198
+ /**
199
+ * Load high-importance traces
200
+ */
201
+ getHighImportanceTraces(minScore = 0.7) {
202
+ const traceRows = this.db
203
+ .prepare(`
204
+ SELECT * FROM traces WHERE score >= ? ORDER BY score DESC, start_time DESC
205
+ `)
206
+ .all(minScore);
207
+ return traceRows.map((traceRow) => {
208
+ const toolRows = this.db
209
+ .prepare(`
210
+ SELECT * FROM tool_calls WHERE trace_id = ? ORDER BY sequence_number
211
+ `)
212
+ .all(traceRow.id);
213
+ return this.rowsToTrace(traceRow, toolRows);
214
+ });
215
+ }
216
+ /**
217
+ * Load error traces
218
+ */
219
+ getErrorTraces() {
220
+ const traceRows = this.db
221
+ .prepare(`
222
+ SELECT * FROM traces
223
+ WHERE type = ? OR errors_encountered != '[]'
224
+ ORDER BY start_time DESC
225
+ `)
226
+ .all(TraceType.ERROR_RECOVERY);
227
+ return traceRows.map((traceRow) => {
228
+ const toolRows = this.db
229
+ .prepare(`
230
+ SELECT * FROM tool_calls WHERE trace_id = ? ORDER BY sequence_number
231
+ `)
232
+ .all(traceRow.id);
233
+ return this.rowsToTrace(traceRow, toolRows);
234
+ });
235
+ }
236
+ /**
237
+ * Get trace statistics
238
+ */
239
+ getStatistics() {
240
+ const stats = this.db
241
+ .prepare(`
242
+ SELECT
243
+ COUNT(*) as total,
244
+ AVG(score) as avg_score,
245
+ AVG((
246
+ SELECT COUNT(*) FROM tool_calls WHERE trace_id = traces.id
247
+ )) as avg_length,
248
+ SUM(CASE WHEN type = ? OR errors_encountered != '[]' THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as error_rate
249
+ FROM traces
250
+ `)
251
+ .get(TraceType.ERROR_RECOVERY);
252
+ const typeStats = this.db
253
+ .prepare(`
254
+ SELECT type, COUNT(*) as count
255
+ FROM traces
256
+ GROUP BY type
257
+ `)
258
+ .all();
259
+ const tracesByType = {};
260
+ typeStats.forEach((row) => {
261
+ tracesByType[row.type] = row.count;
262
+ });
263
+ return {
264
+ totalTraces: stats.total || 0,
265
+ tracesByType,
266
+ averageScore: stats.avg_score || 0,
267
+ averageLength: stats.avg_length || 0,
268
+ errorRate: stats.error_rate || 0,
269
+ };
270
+ }
271
+ /**
272
+ * Delete old traces
273
+ */
274
+ deleteOldTraces(olderThanMs) {
275
+ const cutoff = Date.now() - olderThanMs;
276
+ const result = this.db
277
+ .prepare(`
278
+ DELETE FROM traces WHERE start_time < ?
279
+ `)
280
+ .run(cutoff);
281
+ return result.changes;
282
+ }
283
+ /**
284
+ * Convert database rows to Trace object
285
+ */
286
+ rowsToTrace(traceRow, toolRows) {
287
+ const tools = toolRows.map((row) => ({
288
+ id: row.id,
289
+ tool: row.tool,
290
+ arguments: row.arguments ? JSON.parse(row.arguments) : undefined,
291
+ timestamp: row.timestamp,
292
+ result: row.result ? JSON.parse(row.result) : undefined,
293
+ error: row.error || undefined,
294
+ filesAffected: row.files_affected
295
+ ? JSON.parse(row.files_affected)
296
+ : undefined,
297
+ duration: row.duration || undefined,
298
+ }));
299
+ const metadata = {
300
+ startTime: traceRow.start_time,
301
+ endTime: traceRow.end_time,
302
+ frameId: traceRow.frame_id || undefined,
303
+ userId: traceRow.user_id || undefined,
304
+ filesModified: JSON.parse(traceRow.files_modified || '[]'),
305
+ errorsEncountered: JSON.parse(traceRow.errors_encountered || '[]'),
306
+ decisionsRecorded: JSON.parse(traceRow.decisions_recorded || '[]'),
307
+ causalChain: traceRow.causal_chain === 1,
308
+ };
309
+ const trace = {
310
+ id: traceRow.id,
311
+ type: traceRow.type,
312
+ tools,
313
+ score: traceRow.score,
314
+ summary: traceRow.summary,
315
+ metadata,
316
+ };
317
+ if (traceRow.compressed_data) {
318
+ trace.compressed = JSON.parse(traceRow.compressed_data);
319
+ }
320
+ return trace;
321
+ }
322
+ }
323
+ //# sourceMappingURL=trace-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trace-store.js","sourceRoot":"","sources":["../../../../src/core/trace/trace-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Types for Trace Detection and Bundling System
3
+ */
4
+ export interface ToolCall {
5
+ id: string;
6
+ tool: string;
7
+ arguments?: Record<string, any>;
8
+ timestamp: number;
9
+ result?: any;
10
+ error?: string;
11
+ filesAffected?: string[];
12
+ duration?: number;
13
+ }
14
+ export interface Trace {
15
+ id: string;
16
+ type: TraceType;
17
+ tools: ToolCall[];
18
+ score: number;
19
+ summary: string;
20
+ compressed?: CompressedTrace;
21
+ metadata: TraceMetadata;
22
+ }
23
+ export interface CompressedTrace {
24
+ pattern: string;
25
+ summary: string;
26
+ score: number;
27
+ toolCount: number;
28
+ duration: number;
29
+ timestamp: number;
30
+ }
31
+ export interface TraceMetadata {
32
+ startTime: number;
33
+ endTime: number;
34
+ frameId?: string;
35
+ userId?: string;
36
+ filesModified: string[];
37
+ errorsEncountered: string[];
38
+ decisionsRecorded: string[];
39
+ causalChain: boolean;
40
+ }
41
+ export declare enum TraceType {
42
+ SEARCH_DRIVEN = "search_driven",
43
+ ERROR_RECOVERY = "error_recovery",
44
+ FEATURE_IMPLEMENTATION = "feature_implementation",
45
+ REFACTORING = "refactoring",
46
+ TESTING = "testing",
47
+ EXPLORATION = "exploration",
48
+ DEBUGGING = "debugging",
49
+ DOCUMENTATION = "documentation",
50
+ BUILD_DEPLOY = "build_deploy",
51
+ UNKNOWN = "unknown"
52
+ }
53
+ export interface TraceBoundaryConfig {
54
+ timeProximityMs: number;
55
+ sameDirThreshold: boolean;
56
+ causalRelationship: boolean;
57
+ maxTraceSize: number;
58
+ compressionThreshold: number;
59
+ }
60
+ export declare const DEFAULT_TRACE_CONFIG: TraceBoundaryConfig;
61
+ export interface TracePattern {
62
+ pattern: RegExp | string[];
63
+ type: TraceType;
64
+ description: string;
65
+ }
66
+ export declare const TRACE_PATTERNS: TracePattern[];
67
+ export interface TraceScoringFactors {
68
+ toolScores: number[];
69
+ hasDecisions: boolean;
70
+ hasErrors: boolean;
71
+ filesModifiedCount: number;
72
+ isPermanent: boolean;
73
+ referenceCount: number;
74
+ }
75
+ export declare enum CompressionStrategy {
76
+ SUMMARY_ONLY = "summary_only",// Keep only summary and score
77
+ PATTERN_BASED = "pattern_based",// Keep pattern and outcome
78
+ SELECTIVE = "selective",// Keep high-score tools only
79
+ FULL_COMPRESSION = "full_compression"
80
+ }
81
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/trace/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,oBAAY,SAAS;IACnB,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;IACjC,sBAAsB,2BAA2B;IACjD,WAAW,gBAAgB;IAC3B,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC3B,SAAS,cAAc;IACvB,aAAa,kBAAkB;IAC/B,YAAY,iBAAiB;IAC7B,OAAO,YAAY;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,eAAO,MAAM,oBAAoB,EAAE,mBAMlC,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,eAAO,MAAM,cAAc,EAAE,YAAY,EAoCxC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAGD,oBAAY,mBAAmB;IAC7B,YAAY,iBAAiB,CAAE,8BAA8B;IAC7D,aAAa,kBAAkB,CAAE,2BAA2B;IAC5D,SAAS,cAAc,CAAE,6BAA6B;IACtD,gBAAgB,qBAAqB;CACtC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Types for Trace Detection and Bundling System
3
+ */
4
+ export var TraceType;
5
+ (function (TraceType) {
6
+ TraceType["SEARCH_DRIVEN"] = "search_driven";
7
+ TraceType["ERROR_RECOVERY"] = "error_recovery";
8
+ TraceType["FEATURE_IMPLEMENTATION"] = "feature_implementation";
9
+ TraceType["REFACTORING"] = "refactoring";
10
+ TraceType["TESTING"] = "testing";
11
+ TraceType["EXPLORATION"] = "exploration";
12
+ TraceType["DEBUGGING"] = "debugging";
13
+ TraceType["DOCUMENTATION"] = "documentation";
14
+ TraceType["BUILD_DEPLOY"] = "build_deploy";
15
+ TraceType["UNKNOWN"] = "unknown";
16
+ })(TraceType || (TraceType = {}));
17
+ export const DEFAULT_TRACE_CONFIG = {
18
+ timeProximityMs: 30000, // 30 seconds
19
+ sameDirThreshold: true,
20
+ causalRelationship: true,
21
+ maxTraceSize: 50,
22
+ compressionThreshold: 24, // Compress after 24 hours
23
+ };
24
+ // Common patterns for trace type detection
25
+ export const TRACE_PATTERNS = [
26
+ {
27
+ pattern: ['search', 'grep', 'read', 'edit'],
28
+ type: TraceType.SEARCH_DRIVEN,
29
+ description: 'Search-driven code modification',
30
+ },
31
+ {
32
+ pattern: ['bash', 'error', 'edit', 'bash'],
33
+ type: TraceType.ERROR_RECOVERY,
34
+ description: 'Error recovery sequence',
35
+ },
36
+ {
37
+ pattern: ['write', 'edit', 'test'],
38
+ type: TraceType.FEATURE_IMPLEMENTATION,
39
+ description: 'New feature implementation',
40
+ },
41
+ {
42
+ pattern: ['read', 'edit', 'edit', 'test'],
43
+ type: TraceType.REFACTORING,
44
+ description: 'Code refactoring',
45
+ },
46
+ {
47
+ pattern: ['test', 'bash', 'test'],
48
+ type: TraceType.TESTING,
49
+ description: 'Test execution and validation',
50
+ },
51
+ {
52
+ pattern: ['grep', 'search', 'read'],
53
+ type: TraceType.EXPLORATION,
54
+ description: 'Codebase exploration',
55
+ },
56
+ {
57
+ pattern: ['bash', 'build', 'deploy'],
58
+ type: TraceType.BUILD_DEPLOY,
59
+ description: 'Build and deployment',
60
+ },
61
+ ];
62
+ // Trace compression strategies
63
+ export var CompressionStrategy;
64
+ (function (CompressionStrategy) {
65
+ CompressionStrategy["SUMMARY_ONLY"] = "summary_only";
66
+ CompressionStrategy["PATTERN_BASED"] = "pattern_based";
67
+ CompressionStrategy["SELECTIVE"] = "selective";
68
+ CompressionStrategy["FULL_COMPRESSION"] = "full_compression";
69
+ })(CompressionStrategy || (CompressionStrategy = {}));
70
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/trace/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2CH,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,4CAA+B,CAAA;IAC/B,8CAAiC,CAAA;IACjC,8DAAiD,CAAA;IACjD,wCAA2B,CAAA;IAC3B,gCAAmB,CAAA;IACnB,wCAA2B,CAAA;IAC3B,oCAAuB,CAAA;IACvB,4CAA+B,CAAA;IAC/B,0CAA6B,CAAA;IAC7B,gCAAmB,CAAA;AACrB,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AAUD,MAAM,CAAC,MAAM,oBAAoB,GAAwB;IACvD,eAAe,EAAE,KAAK,EAAE,aAAa;IACrC,gBAAgB,EAAE,IAAI;IACtB,kBAAkB,EAAE,IAAI;IACxB,YAAY,EAAE,EAAE;IAChB,oBAAoB,EAAE,EAAE,EAAE,0BAA0B;CACrD,CAAC;AAQF,2CAA2C;AAC3C,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C;QACE,OAAO,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QAC3C,IAAI,EAAE,SAAS,CAAC,aAAa;QAC7B,WAAW,EAAE,iCAAiC;KAC/C;IACD;QACE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QAC1C,IAAI,EAAE,SAAS,CAAC,cAAc;QAC9B,WAAW,EAAE,yBAAyB;KACvC;IACD;QACE,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC;QAClC,IAAI,EAAE,SAAS,CAAC,sBAAsB;QACtC,WAAW,EAAE,4BAA4B;KAC1C;IACD;QACE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QACzC,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,WAAW,EAAE,kBAAkB;KAChC;IACD;QACE,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;QACjC,IAAI,EAAE,SAAS,CAAC,OAAO;QACvB,WAAW,EAAE,+BAA+B;KAC7C;IACD;QACE,OAAO,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC;QACnC,IAAI,EAAE,SAAS,CAAC,WAAW;QAC3B,WAAW,EAAE,sBAAsB;KACpC;IACD;QACE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;QACpC,IAAI,EAAE,SAAS,CAAC,YAAY;QAC5B,WAAW,EAAE,sBAAsB;KACpC;CACF,CAAC;AAWF,+BAA+B;AAC/B,MAAM,CAAN,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC7B,oDAA6B,CAAA;IAC7B,sDAA+B,CAAA;IAC/B,8CAAuB,CAAA;IACvB,4DAAqC,CAAA;AACvC,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Linear Sync Manager
3
+ * Handles periodic and event-based synchronization with Linear
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { SyncConfig, SyncResult } from './sync.js';
7
+ import { PebblesTaskStore } from '../../features/tasks/pebbles-task-store.js';
8
+ import { LinearAuthManager } from './auth.js';
9
+ export interface SyncManagerConfig extends SyncConfig {
10
+ autoSyncInterval?: number;
11
+ syncOnTaskChange?: boolean;
12
+ syncOnSessionStart?: boolean;
13
+ syncOnSessionEnd?: boolean;
14
+ debounceInterval?: number;
15
+ }
16
+ export declare class LinearSyncManager extends EventEmitter {
17
+ private syncEngine;
18
+ private syncTimer?;
19
+ private pendingSyncTimer?;
20
+ private config;
21
+ private lastSyncTime;
22
+ private syncInProgress;
23
+ private taskStore;
24
+ constructor(taskStore: PebblesTaskStore, authManager: LinearAuthManager, config: SyncManagerConfig, projectRoot?: string);
25
+ /**
26
+ * Setup event listeners for automatic sync triggers
27
+ */
28
+ private setupEventListeners;
29
+ /**
30
+ * Setup periodic sync timer
31
+ */
32
+ private setupPeriodicSync;
33
+ /**
34
+ * Schedule a debounced sync to avoid too frequent syncs
35
+ */
36
+ private scheduleDebouncedSync;
37
+ /**
38
+ * Perform a sync operation
39
+ */
40
+ performSync(trigger: 'manual' | 'periodic' | 'task-change' | 'session-start' | 'session-end'): Promise<SyncResult>;
41
+ /**
42
+ * Sync on session start
43
+ */
44
+ syncOnStart(): Promise<SyncResult | null>;
45
+ /**
46
+ * Sync on session end
47
+ */
48
+ syncOnEnd(): Promise<SyncResult | null>;
49
+ /**
50
+ * Update sync configuration
51
+ */
52
+ updateConfig(newConfig: Partial<SyncManagerConfig>): void;
53
+ /**
54
+ * Get sync status
55
+ */
56
+ getStatus(): {
57
+ enabled: boolean;
58
+ syncInProgress: boolean;
59
+ lastSyncTime: number;
60
+ nextSyncTime: number | null;
61
+ config: SyncManagerConfig;
62
+ };
63
+ /**
64
+ * Stop all sync activities
65
+ */
66
+ stop(): void;
67
+ /**
68
+ * Force an immediate sync
69
+ */
70
+ forceSync(): Promise<SyncResult>;
71
+ }
72
+ /**
73
+ * Default sync manager configuration
74
+ */
75
+ export declare const DEFAULT_SYNC_MANAGER_CONFIG: SyncManagerConfig;
76
+ //# sourceMappingURL=sync-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-manager.d.ts","sourceRoot":"","sources":["../../../../src/integrations/linear/sync-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,OAAO,EAAoB,UAAU,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9C,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IACjD,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,SAAS,CAAC,CAAiB;IACnC,OAAO,CAAC,gBAAgB,CAAC,CAAiB;IAC1C,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,YAAY,CAAa;IACjC,OAAO,CAAC,cAAc,CAAkB;IACxC,OAAO,CAAC,SAAS,CAAmB;gBAGlC,SAAS,EAAE,gBAAgB,EAC3B,WAAW,EAAE,iBAAiB,EAC9B,MAAM,EAAE,iBAAiB,EACzB,WAAW,CAAC,EAAE,MAAM;IAwBtB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAU3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqBzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAc7B;;OAEG;IACG,WAAW,CACf,OAAO,EACH,QAAQ,GACR,UAAU,GACV,aAAa,GACb,eAAe,GACf,aAAa,GAChB,OAAO,CAAC,UAAU,CAAC;IA8EtB;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO/C;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAO7C;;OAEG;IACH,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI;IAazD;;OAEG;IACH,SAAS,IAAI;QACX,OAAO,EAAE,OAAO,CAAC;QACjB,cAAc,EAAE,OAAO,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE,iBAAiB,CAAC;KAC3B;IAeD;;OAEG;IACH,IAAI,IAAI,IAAI;IAeZ;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,UAAU,CAAC;CAGvC;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,EAAE,iBAUzC,CAAC"}