@stackmemoryai/stackmemory 0.3.0 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/README.md +52 -272
  2. package/dist/cli/codex-sm.js +48 -19
  3. package/dist/cli/codex-sm.js.map +2 -2
  4. package/dist/cli/commands/clear.js +191 -0
  5. package/dist/cli/commands/clear.js.map +7 -0
  6. package/dist/cli/commands/config.js +152 -1
  7. package/dist/cli/commands/config.js.map +2 -2
  8. package/dist/cli/commands/dashboard.js +178 -0
  9. package/dist/cli/commands/dashboard.js.map +7 -0
  10. package/dist/cli/commands/handoff.js +125 -8
  11. package/dist/cli/commands/handoff.js.map +2 -2
  12. package/dist/cli/commands/linear-create.js +132 -0
  13. package/dist/cli/commands/linear-create.js.map +7 -0
  14. package/dist/cli/commands/linear-list.js +69 -0
  15. package/dist/cli/commands/linear-list.js.map +7 -0
  16. package/dist/cli/commands/linear-migrate.js +40 -0
  17. package/dist/cli/commands/linear-migrate.js.map +7 -0
  18. package/dist/cli/commands/linear.js +185 -36
  19. package/dist/cli/commands/linear.js.map +2 -2
  20. package/dist/cli/commands/monitor.js +309 -0
  21. package/dist/cli/commands/monitor.js.map +7 -0
  22. package/dist/cli/commands/quality.js +414 -0
  23. package/dist/cli/commands/quality.js.map +7 -0
  24. package/dist/cli/commands/storage.js +275 -0
  25. package/dist/cli/commands/storage.js.map +7 -0
  26. package/dist/cli/commands/tui.js +66 -0
  27. package/dist/cli/commands/tui.js.map +7 -0
  28. package/dist/cli/commands/workflow.js +134 -0
  29. package/dist/cli/commands/workflow.js.map +7 -0
  30. package/dist/cli/index.js +105 -9
  31. package/dist/cli/index.js.map +3 -3
  32. package/dist/core/analytics/team-analytics.js +374 -0
  33. package/dist/core/analytics/team-analytics.js.map +7 -0
  34. package/dist/core/context/context-bridge.js +234 -0
  35. package/dist/core/context/context-bridge.js.map +7 -0
  36. package/dist/core/context/dual-stack-manager.js +850 -0
  37. package/dist/core/context/dual-stack-manager.js.map +7 -0
  38. package/dist/core/context/frame-handoff-manager.js +384 -0
  39. package/dist/core/context/frame-handoff-manager.js.map +7 -0
  40. package/dist/core/context/frame-manager.js +132 -12
  41. package/dist/core/context/frame-manager.js.map +2 -2
  42. package/dist/core/context/permission-manager.js +181 -0
  43. package/dist/core/context/permission-manager.js.map +7 -0
  44. package/dist/core/context/shared-context-layer.js +386 -0
  45. package/dist/core/context/shared-context-layer.js.map +7 -0
  46. package/dist/core/context/stack-merge-resolver.js +600 -0
  47. package/dist/core/context/stack-merge-resolver.js.map +7 -0
  48. package/dist/core/context/validation.js +121 -0
  49. package/dist/core/context/validation.js.map +7 -0
  50. package/dist/core/database/connection-pool.js +266 -175
  51. package/dist/core/database/connection-pool.js.map +2 -2
  52. package/dist/core/database/database-adapter.js +51 -0
  53. package/dist/core/database/database-adapter.js.map +7 -0
  54. package/dist/core/database/migration-manager.js +514 -0
  55. package/dist/core/database/migration-manager.js.map +7 -0
  56. package/dist/core/database/paradedb-adapter.js +970 -0
  57. package/dist/core/database/paradedb-adapter.js.map +7 -0
  58. package/dist/core/database/query-router.js +421 -0
  59. package/dist/core/database/query-router.js.map +7 -0
  60. package/dist/core/database/sqlite-adapter.js +547 -0
  61. package/dist/core/database/sqlite-adapter.js.map +7 -0
  62. package/dist/core/errors/index.js +21 -1
  63. package/dist/core/errors/index.js.map +2 -2
  64. package/dist/core/frame/workflow-templates-stub.js +42 -0
  65. package/dist/core/frame/workflow-templates-stub.js.map +7 -0
  66. package/dist/core/frame/workflow-templates.js +276 -0
  67. package/dist/core/frame/workflow-templates.js.map +7 -0
  68. package/dist/core/merge/conflict-detector.js +5 -2
  69. package/dist/core/merge/conflict-detector.js.map +2 -2
  70. package/dist/core/merge/resolution-engine.js +3 -14
  71. package/dist/core/merge/resolution-engine.js.map +2 -2
  72. package/dist/core/merge/stack-diff.js.map +2 -2
  73. package/dist/core/monitoring/logger.js +18 -3
  74. package/dist/core/monitoring/logger.js.map +2 -2
  75. package/dist/core/monitoring/session-monitor.js +296 -0
  76. package/dist/core/monitoring/session-monitor.js.map +7 -0
  77. package/dist/core/retrieval/context-retriever.js +475 -0
  78. package/dist/core/retrieval/context-retriever.js.map +7 -0
  79. package/dist/core/retrieval/graph-retrieval.js +658 -0
  80. package/dist/core/retrieval/graph-retrieval.js.map +7 -0
  81. package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
  82. package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
  83. package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
  84. package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
  85. package/dist/core/session/clear-survival-stub.js +49 -0
  86. package/dist/core/session/clear-survival-stub.js.map +7 -0
  87. package/dist/core/session/clear-survival.js +426 -0
  88. package/dist/core/session/clear-survival.js.map +7 -0
  89. package/dist/core/session/handoff-generator.js +339 -0
  90. package/dist/core/session/handoff-generator.js.map +7 -0
  91. package/dist/core/session/session-manager.js +61 -26
  92. package/dist/core/session/session-manager.js.map +3 -3
  93. package/dist/core/skills/index.js +3 -0
  94. package/dist/core/skills/index.js.map +7 -0
  95. package/dist/core/skills/skill-storage.js +749 -0
  96. package/dist/core/skills/skill-storage.js.map +7 -0
  97. package/dist/core/skills/types.js +189 -0
  98. package/dist/core/skills/types.js.map +7 -0
  99. package/dist/core/storage/railway-optimized-storage.js +550 -0
  100. package/dist/core/storage/railway-optimized-storage.js.map +7 -0
  101. package/dist/core/storage/remote-storage.js +456 -0
  102. package/dist/core/storage/remote-storage.js.map +7 -0
  103. package/dist/core/trace/trace-detector.js +136 -5
  104. package/dist/core/trace/trace-detector.js.map +2 -2
  105. package/dist/core/trace/trace-store.js.map +2 -2
  106. package/dist/features/tui/components/analytics-panel.js +136 -0
  107. package/dist/features/tui/components/analytics-panel.js.map +7 -0
  108. package/dist/features/tui/components/frame-visualizer.js +377 -0
  109. package/dist/features/tui/components/frame-visualizer.js.map +7 -0
  110. package/dist/features/tui/components/pr-tracker.js +123 -0
  111. package/dist/features/tui/components/pr-tracker.js.map +7 -0
  112. package/dist/features/tui/components/session-monitor.js +286 -0
  113. package/dist/features/tui/components/session-monitor.js.map +7 -0
  114. package/dist/features/tui/components/subagent-fleet.js +388 -0
  115. package/dist/features/tui/components/subagent-fleet.js.map +7 -0
  116. package/dist/features/tui/components/task-board.js +475 -0
  117. package/dist/features/tui/components/task-board.js.map +7 -0
  118. package/dist/features/tui/index.js +397 -0
  119. package/dist/features/tui/index.js.map +7 -0
  120. package/dist/features/tui/services/data-service.js +654 -0
  121. package/dist/features/tui/services/data-service.js.map +7 -0
  122. package/dist/features/tui/services/websocket-client.js +149 -0
  123. package/dist/features/tui/services/websocket-client.js.map +7 -0
  124. package/dist/features/tui/terminal-compat.js +205 -0
  125. package/dist/features/tui/terminal-compat.js.map +7 -0
  126. package/dist/features/tui/types.js +1 -0
  127. package/dist/features/tui/types.js.map +7 -0
  128. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
  129. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  130. package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
  131. package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  132. package/dist/integrations/claude-code/post-task-hooks.js +541 -0
  133. package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
  134. package/dist/integrations/linear/client.js +22 -4
  135. package/dist/integrations/linear/client.js.map +2 -2
  136. package/dist/integrations/linear/migration.js +299 -0
  137. package/dist/integrations/linear/migration.js.map +7 -0
  138. package/dist/integrations/linear/oauth-server.js +396 -0
  139. package/dist/integrations/linear/oauth-server.js.map +7 -0
  140. package/dist/integrations/linear/rest-client.js +199 -0
  141. package/dist/integrations/linear/rest-client.js.map +7 -0
  142. package/dist/integrations/linear/sync.js +14 -2
  143. package/dist/integrations/linear/sync.js.map +2 -2
  144. package/dist/integrations/linear/webhook-handler.js +200 -0
  145. package/dist/integrations/linear/webhook-handler.js.map +7 -0
  146. package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
  147. package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  148. package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
  149. package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  150. package/dist/integrations/mcp/refactored-server.js +31 -3
  151. package/dist/integrations/mcp/refactored-server.js.map +2 -2
  152. package/dist/integrations/mcp/server.js +25 -7
  153. package/dist/integrations/mcp/server.js.map +2 -2
  154. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  155. package/dist/models/user.model.js +3 -0
  156. package/dist/models/user.model.js.map +2 -2
  157. package/dist/services/context-service.js.map +2 -2
  158. package/dist/utils/formatting.js +58 -0
  159. package/dist/utils/formatting.js.map +7 -0
  160. package/package.json +24 -5
  161. package/dist/cli/__tests__/index.test.js +0 -290
  162. package/dist/cli/__tests__/index.test.js.map +0 -7
  163. package/dist/core/config/__tests__/config-manager.test.js +0 -248
  164. package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
  165. package/dist/core/context/__tests__/frame-manager.test.js +0 -879
  166. package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
  167. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
  168. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
  169. package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
  170. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
  171. package/dist/core/errors/__tests__/error-handling.test.js +0 -270
  172. package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
  173. package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
  174. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
  175. package/dist/core/query/__tests__/query-parser.test.js +0 -301
  176. package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
  177. package/dist/core/query/__tests__/query-templates.test.js +0 -210
  178. package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
  179. package/dist/core/trace/trace-detector.test.js +0 -401
  180. package/dist/core/trace/trace-detector.test.js.map +0 -7
  181. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
  182. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
  183. package/dist/integrations/linear/__tests__/auth.test.js +0 -558
  184. package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
  185. package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
  186. package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
  187. package/dist/integrations/mcp/__tests__/server.test.js +0 -798
  188. package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
  189. package/dist/scripts/benchmark-performance.d.ts +0 -7
  190. package/dist/scripts/benchmark-performance.d.ts.map +0 -1
  191. package/dist/scripts/benchmark-performance.js +0 -44
  192. package/dist/scripts/benchmark-performance.js.map +0 -1
  193. package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
  194. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
  195. package/dist/scripts/cancel-duplicate-tasks.js +0 -172
  196. package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
  197. package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
  198. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
  199. package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
  200. package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
  201. package/dist/scripts/initialize.d.ts +0 -6
  202. package/dist/scripts/initialize.d.ts.map +0 -1
  203. package/dist/scripts/initialize.js +0 -93
  204. package/dist/scripts/initialize.js.map +0 -1
  205. package/dist/scripts/list-linear-tasks.d.ts +0 -6
  206. package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
  207. package/dist/scripts/list-linear-tasks.js +0 -121
  208. package/dist/scripts/list-linear-tasks.js.map +0 -1
  209. package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
  210. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
  211. package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
  212. package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
  213. package/dist/scripts/show-linear-summary.d.ts +0 -6
  214. package/dist/scripts/show-linear-summary.d.ts.map +0 -1
  215. package/dist/scripts/show-linear-summary.js +0 -120
  216. package/dist/scripts/show-linear-summary.js.map +0 -1
  217. package/dist/scripts/status.d.ts +0 -6
  218. package/dist/scripts/status.d.ts.map +0 -1
  219. package/dist/scripts/status.js +0 -101
  220. package/dist/scripts/status.js.map +0 -1
  221. package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
  222. package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
  223. package/dist/src/agents/core/agent-task-manager.js +0 -504
  224. package/dist/src/agents/core/agent-task-manager.js.map +0 -1
  225. package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
  226. package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
  227. package/dist/src/agents/verifiers/base-verifier.js +0 -130
  228. package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
  229. package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
  230. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
  231. package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
  232. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
  233. package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
  234. package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
  235. package/dist/src/agents/verifiers/llm-judge.js +0 -248
  236. package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
  237. package/dist/src/cli/auto-detect.d.ts +0 -61
  238. package/dist/src/cli/auto-detect.d.ts.map +0 -1
  239. package/dist/src/cli/auto-detect.js +0 -350
  240. package/dist/src/cli/auto-detect.js.map +0 -1
  241. package/dist/src/cli/browser-test.d.ts +0 -6
  242. package/dist/src/cli/browser-test.d.ts.map +0 -1
  243. package/dist/src/cli/browser-test.js +0 -32
  244. package/dist/src/cli/browser-test.js.map +0 -1
  245. package/dist/src/cli/claude-sm.d.ts +0 -7
  246. package/dist/src/cli/claude-sm.d.ts.map +0 -1
  247. package/dist/src/cli/claude-sm.js +0 -412
  248. package/dist/src/cli/claude-sm.js.map +0 -1
  249. package/dist/src/cli/commands/agent.d.ts +0 -9
  250. package/dist/src/cli/commands/agent.d.ts.map +0 -1
  251. package/dist/src/cli/commands/agent.js +0 -303
  252. package/dist/src/cli/commands/agent.js.map +0 -1
  253. package/dist/src/cli/commands/config.d.ts +0 -6
  254. package/dist/src/cli/commands/config.d.ts.map +0 -1
  255. package/dist/src/cli/commands/config.js +0 -224
  256. package/dist/src/cli/commands/config.js.map +0 -1
  257. package/dist/src/cli/commands/context.d.ts +0 -7
  258. package/dist/src/cli/commands/context.d.ts.map +0 -1
  259. package/dist/src/cli/commands/context.js +0 -365
  260. package/dist/src/cli/commands/context.js.map +0 -1
  261. package/dist/src/cli/commands/handoff.d.ts +0 -6
  262. package/dist/src/cli/commands/handoff.d.ts.map +0 -1
  263. package/dist/src/cli/commands/handoff.js +0 -212
  264. package/dist/src/cli/commands/handoff.js.map +0 -1
  265. package/dist/src/cli/commands/linear-test.d.ts +0 -6
  266. package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
  267. package/dist/src/cli/commands/linear-test.js +0 -123
  268. package/dist/src/cli/commands/linear-test.js.map +0 -1
  269. package/dist/src/cli/commands/linear.d.ts +0 -6
  270. package/dist/src/cli/commands/linear.d.ts.map +0 -1
  271. package/dist/src/cli/commands/linear.js +0 -393
  272. package/dist/src/cli/commands/linear.js.map +0 -1
  273. package/dist/src/cli/commands/log.d.ts +0 -7
  274. package/dist/src/cli/commands/log.d.ts.map +0 -1
  275. package/dist/src/cli/commands/log.js +0 -168
  276. package/dist/src/cli/commands/log.js.map +0 -1
  277. package/dist/src/cli/commands/onboard.d.ts +0 -8
  278. package/dist/src/cli/commands/onboard.d.ts.map +0 -1
  279. package/dist/src/cli/commands/onboard.js +0 -363
  280. package/dist/src/cli/commands/onboard.js.map +0 -1
  281. package/dist/src/cli/commands/projects.d.ts +0 -8
  282. package/dist/src/cli/commands/projects.d.ts.map +0 -1
  283. package/dist/src/cli/commands/projects.js +0 -220
  284. package/dist/src/cli/commands/projects.js.map +0 -1
  285. package/dist/src/cli/commands/search.d.ts +0 -7
  286. package/dist/src/cli/commands/search.d.ts.map +0 -1
  287. package/dist/src/cli/commands/search.js +0 -162
  288. package/dist/src/cli/commands/search.js.map +0 -1
  289. package/dist/src/cli/commands/session.d.ts +0 -7
  290. package/dist/src/cli/commands/session.d.ts.map +0 -1
  291. package/dist/src/cli/commands/session.js +0 -222
  292. package/dist/src/cli/commands/session.js.map +0 -1
  293. package/dist/src/cli/commands/tasks.d.ts +0 -7
  294. package/dist/src/cli/commands/tasks.d.ts.map +0 -1
  295. package/dist/src/cli/commands/tasks.js +0 -229
  296. package/dist/src/cli/commands/tasks.js.map +0 -1
  297. package/dist/src/cli/commands/webhook.d.ts +0 -3
  298. package/dist/src/cli/commands/webhook.d.ts.map +0 -1
  299. package/dist/src/cli/commands/webhook.js +0 -157
  300. package/dist/src/cli/commands/webhook.js.map +0 -1
  301. package/dist/src/cli/commands/worktree.d.ts +0 -8
  302. package/dist/src/cli/commands/worktree.d.ts.map +0 -1
  303. package/dist/src/cli/commands/worktree.js +0 -339
  304. package/dist/src/cli/commands/worktree.js.map +0 -1
  305. package/dist/src/cli/index.d.ts +0 -8
  306. package/dist/src/cli/index.d.ts.map +0 -1
  307. package/dist/src/cli/index.js +0 -995
  308. package/dist/src/cli/index.js.map +0 -1
  309. package/dist/src/cli/utils/viewer.d.ts +0 -3
  310. package/dist/src/cli/utils/viewer.d.ts.map +0 -1
  311. package/dist/src/cli/utils/viewer.js +0 -91
  312. package/dist/src/cli/utils/viewer.js.map +0 -1
  313. package/dist/src/core/config/config-manager.d.ts +0 -95
  314. package/dist/src/core/config/config-manager.d.ts.map +0 -1
  315. package/dist/src/core/config/config-manager.js +0 -359
  316. package/dist/src/core/config/config-manager.js.map +0 -1
  317. package/dist/src/core/config/types.d.ts +0 -72
  318. package/dist/src/core/config/types.d.ts.map +0 -1
  319. package/dist/src/core/config/types.js +0 -127
  320. package/dist/src/core/config/types.js.map +0 -1
  321. package/dist/src/core/context/auto-context.d.ts +0 -22
  322. package/dist/src/core/context/auto-context.d.ts.map +0 -1
  323. package/dist/src/core/context/auto-context.js +0 -77
  324. package/dist/src/core/context/auto-context.js.map +0 -1
  325. package/dist/src/core/context/compaction-handler.d.ts +0 -119
  326. package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
  327. package/dist/src/core/context/compaction-handler.js +0 -306
  328. package/dist/src/core/context/compaction-handler.js.map +0 -1
  329. package/dist/src/core/context/frame-database.d.ts +0 -59
  330. package/dist/src/core/context/frame-database.d.ts.map +0 -1
  331. package/dist/src/core/context/frame-database.js +0 -333
  332. package/dist/src/core/context/frame-database.js.map +0 -1
  333. package/dist/src/core/context/frame-digest.d.ts +0 -59
  334. package/dist/src/core/context/frame-digest.d.ts.map +0 -1
  335. package/dist/src/core/context/frame-digest.js +0 -264
  336. package/dist/src/core/context/frame-digest.js.map +0 -1
  337. package/dist/src/core/context/frame-manager.d.ts +0 -112
  338. package/dist/src/core/context/frame-manager.d.ts.map +0 -1
  339. package/dist/src/core/context/frame-manager.js +0 -600
  340. package/dist/src/core/context/frame-manager.js.map +0 -1
  341. package/dist/src/core/context/frame-stack.d.ts +0 -85
  342. package/dist/src/core/context/frame-stack.d.ts.map +0 -1
  343. package/dist/src/core/context/frame-stack.js +0 -287
  344. package/dist/src/core/context/frame-stack.js.map +0 -1
  345. package/dist/src/core/context/frame-types.d.ts +0 -67
  346. package/dist/src/core/context/frame-types.d.ts.map +0 -1
  347. package/dist/src/core/context/frame-types.js +0 -6
  348. package/dist/src/core/context/frame-types.js.map +0 -1
  349. package/dist/src/core/context/index.d.ts +0 -11
  350. package/dist/src/core/context/index.d.ts.map +0 -1
  351. package/dist/src/core/context/index.js +0 -14
  352. package/dist/src/core/context/index.js.map +0 -1
  353. package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
  354. package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
  355. package/dist/src/core/context/model-aware-compaction.js +0 -616
  356. package/dist/src/core/context/model-aware-compaction.js.map +0 -1
  357. package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
  358. package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
  359. package/dist/src/core/context/refactored-frame-manager.js +0 -340
  360. package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
  361. package/dist/src/core/database/batch-operations.d.ts +0 -118
  362. package/dist/src/core/database/batch-operations.d.ts.map +0 -1
  363. package/dist/src/core/database/batch-operations.js +0 -339
  364. package/dist/src/core/database/batch-operations.js.map +0 -1
  365. package/dist/src/core/database/connection-pool.d.ts +0 -79
  366. package/dist/src/core/database/connection-pool.d.ts.map +0 -1
  367. package/dist/src/core/database/connection-pool.js +0 -236
  368. package/dist/src/core/database/connection-pool.js.map +0 -1
  369. package/dist/src/core/database/query-cache.d.ts +0 -135
  370. package/dist/src/core/database/query-cache.d.ts.map +0 -1
  371. package/dist/src/core/database/query-cache.js +0 -294
  372. package/dist/src/core/database/query-cache.js.map +0 -1
  373. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
  374. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
  375. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
  376. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
  377. package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
  378. package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
  379. package/dist/src/core/digest/frame-digest-integration.js +0 -198
  380. package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
  381. package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
  382. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
  383. package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
  384. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
  385. package/dist/src/core/digest/index.d.ts +0 -9
  386. package/dist/src/core/digest/index.d.ts.map +0 -1
  387. package/dist/src/core/digest/index.js +0 -9
  388. package/dist/src/core/digest/index.js.map +0 -1
  389. package/dist/src/core/digest/types.d.ts +0 -154
  390. package/dist/src/core/digest/types.d.ts.map +0 -1
  391. package/dist/src/core/digest/types.js +0 -18
  392. package/dist/src/core/digest/types.js.map +0 -1
  393. package/dist/src/core/errors/index.d.ts +0 -143
  394. package/dist/src/core/errors/index.d.ts.map +0 -1
  395. package/dist/src/core/errors/index.js +0 -282
  396. package/dist/src/core/errors/index.js.map +0 -1
  397. package/dist/src/core/errors/recovery.d.ts +0 -86
  398. package/dist/src/core/errors/recovery.d.ts.map +0 -1
  399. package/dist/src/core/errors/recovery.js +0 -274
  400. package/dist/src/core/errors/recovery.js.map +0 -1
  401. package/dist/src/core/merge/conflict-detector.d.ts +0 -122
  402. package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
  403. package/dist/src/core/merge/conflict-detector.js +0 -468
  404. package/dist/src/core/merge/conflict-detector.js.map +0 -1
  405. package/dist/src/core/merge/index.d.ts +0 -9
  406. package/dist/src/core/merge/index.d.ts.map +0 -1
  407. package/dist/src/core/merge/index.js +0 -9
  408. package/dist/src/core/merge/index.js.map +0 -1
  409. package/dist/src/core/merge/resolution-engine.d.ts +0 -120
  410. package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
  411. package/dist/src/core/merge/resolution-engine.js +0 -573
  412. package/dist/src/core/merge/resolution-engine.js.map +0 -1
  413. package/dist/src/core/merge/stack-diff.d.ts +0 -97
  414. package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
  415. package/dist/src/core/merge/stack-diff.js +0 -516
  416. package/dist/src/core/merge/stack-diff.js.map +0 -1
  417. package/dist/src/core/merge/types.d.ts +0 -110
  418. package/dist/src/core/merge/types.d.ts.map +0 -1
  419. package/dist/src/core/merge/types.js +0 -6
  420. package/dist/src/core/merge/types.js.map +0 -1
  421. package/dist/src/core/monitoring/error-handler.d.ts +0 -46
  422. package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
  423. package/dist/src/core/monitoring/error-handler.js +0 -212
  424. package/dist/src/core/monitoring/error-handler.js.map +0 -1
  425. package/dist/src/core/monitoring/logger.d.ts +0 -24
  426. package/dist/src/core/monitoring/logger.d.ts.map +0 -1
  427. package/dist/src/core/monitoring/logger.js +0 -126
  428. package/dist/src/core/monitoring/logger.js.map +0 -1
  429. package/dist/src/core/monitoring/metrics.d.ts +0 -10
  430. package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
  431. package/dist/src/core/monitoring/metrics.js +0 -152
  432. package/dist/src/core/monitoring/metrics.js.map +0 -1
  433. package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
  434. package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
  435. package/dist/src/core/monitoring/progress-tracker.js +0 -178
  436. package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
  437. package/dist/src/core/performance/context-cache.d.ts +0 -109
  438. package/dist/src/core/performance/context-cache.d.ts.map +0 -1
  439. package/dist/src/core/performance/context-cache.js +0 -280
  440. package/dist/src/core/performance/context-cache.js.map +0 -1
  441. package/dist/src/core/performance/index.d.ts +0 -3
  442. package/dist/src/core/performance/index.d.ts.map +0 -1
  443. package/dist/src/core/performance/index.js +0 -3
  444. package/dist/src/core/performance/index.js.map +0 -1
  445. package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
  446. package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
  447. package/dist/src/core/performance/lazy-context-loader.js +0 -332
  448. package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
  449. package/dist/src/core/performance/monitor.d.ts +0 -48
  450. package/dist/src/core/performance/monitor.d.ts.map +0 -1
  451. package/dist/src/core/performance/monitor.js +0 -226
  452. package/dist/src/core/performance/monitor.js.map +0 -1
  453. package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
  454. package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
  455. package/dist/src/core/performance/optimized-frame-context.js +0 -330
  456. package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
  457. package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
  458. package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
  459. package/dist/src/core/performance/performance-benchmark.js +0 -290
  460. package/dist/src/core/performance/performance-benchmark.js.map +0 -1
  461. package/dist/src/core/performance/performance-profiler.d.ts +0 -151
  462. package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
  463. package/dist/src/core/performance/performance-profiler.js +0 -346
  464. package/dist/src/core/performance/performance-profiler.js.map +0 -1
  465. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
  466. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
  467. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
  468. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
  469. package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
  470. package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
  471. package/dist/src/core/persistence/postgres-adapter.js +0 -330
  472. package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
  473. package/dist/src/core/projects/project-manager.d.ts +0 -130
  474. package/dist/src/core/projects/project-manager.d.ts.map +0 -1
  475. package/dist/src/core/projects/project-manager.js +0 -709
  476. package/dist/src/core/projects/project-manager.js.map +0 -1
  477. package/dist/src/core/query/query-parser.d.ts +0 -109
  478. package/dist/src/core/query/query-parser.d.ts.map +0 -1
  479. package/dist/src/core/query/query-parser.js +0 -415
  480. package/dist/src/core/query/query-parser.js.map +0 -1
  481. package/dist/src/core/query/query-templates.d.ts +0 -44
  482. package/dist/src/core/query/query-templates.d.ts.map +0 -1
  483. package/dist/src/core/query/query-templates.js +0 -326
  484. package/dist/src/core/query/query-templates.js.map +0 -1
  485. package/dist/src/core/retrieval/index.d.ts +0 -8
  486. package/dist/src/core/retrieval/index.d.ts.map +0 -1
  487. package/dist/src/core/retrieval/index.js +0 -8
  488. package/dist/src/core/retrieval/index.js.map +0 -1
  489. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
  490. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
  491. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
  492. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
  493. package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
  494. package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
  495. package/dist/src/core/retrieval/summary-generator.js +0 -622
  496. package/dist/src/core/retrieval/summary-generator.js.map +0 -1
  497. package/dist/src/core/retrieval/types.d.ts +0 -257
  498. package/dist/src/core/retrieval/types.d.ts.map +0 -1
  499. package/dist/src/core/retrieval/types.js +0 -18
  500. package/dist/src/core/retrieval/types.js.map +0 -1
  501. package/dist/src/core/session/index.d.ts +0 -2
  502. package/dist/src/core/session/index.d.ts.map +0 -1
  503. package/dist/src/core/session/index.js +0 -2
  504. package/dist/src/core/session/index.js.map +0 -1
  505. package/dist/src/core/session/session-manager.d.ts +0 -69
  506. package/dist/src/core/session/session-manager.d.ts.map +0 -1
  507. package/dist/src/core/session/session-manager.js +0 -311
  508. package/dist/src/core/session/session-manager.js.map +0 -1
  509. package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
  510. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
  511. package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
  512. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
  513. package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
  514. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
  515. package/dist/src/core/trace/db-trace-wrapper.js +0 -252
  516. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
  517. package/dist/src/core/trace/debug-trace.d.ts +0 -84
  518. package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
  519. package/dist/src/core/trace/debug-trace.js +0 -402
  520. package/dist/src/core/trace/debug-trace.js.map +0 -1
  521. package/dist/src/core/trace/error-test.d.ts +0 -6
  522. package/dist/src/core/trace/error-test.d.ts.map +0 -1
  523. package/dist/src/core/trace/error-test.js +0 -128
  524. package/dist/src/core/trace/error-test.js.map +0 -1
  525. package/dist/src/core/trace/index.d.ts +0 -25
  526. package/dist/src/core/trace/index.d.ts.map +0 -1
  527. package/dist/src/core/trace/index.js +0 -121
  528. package/dist/src/core/trace/index.js.map +0 -1
  529. package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
  530. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
  531. package/dist/src/core/trace/linear-api-wrapper.js +0 -205
  532. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
  533. package/dist/src/core/trace/performance-test.d.ts +0 -6
  534. package/dist/src/core/trace/performance-test.d.ts.map +0 -1
  535. package/dist/src/core/trace/performance-test.js +0 -111
  536. package/dist/src/core/trace/performance-test.js.map +0 -1
  537. package/dist/src/core/trace/trace-demo.d.ts +0 -8
  538. package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
  539. package/dist/src/core/trace/trace-demo.js +0 -154
  540. package/dist/src/core/trace/trace-demo.js.map +0 -1
  541. package/dist/src/core/trace/trace-detector.d.ts +0 -108
  542. package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
  543. package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
  544. package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
  545. package/dist/src/core/trace/trace-detector.demo.js +0 -145
  546. package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
  547. package/dist/src/core/trace/trace-detector.js +0 -425
  548. package/dist/src/core/trace/trace-detector.js.map +0 -1
  549. package/dist/src/core/trace/trace-store.d.ts +0 -60
  550. package/dist/src/core/trace/trace-store.d.ts.map +0 -1
  551. package/dist/src/core/trace/trace-store.js +0 -323
  552. package/dist/src/core/trace/trace-store.js.map +0 -1
  553. package/dist/src/core/trace/types.d.ts +0 -81
  554. package/dist/src/core/trace/types.d.ts.map +0 -1
  555. package/dist/src/core/trace/types.js +0 -70
  556. package/dist/src/core/trace/types.js.map +0 -1
  557. package/dist/src/core/types.d.ts +0 -35
  558. package/dist/src/core/types.d.ts.map +0 -1
  559. package/dist/src/core/types.js +0 -2
  560. package/dist/src/core/types.js.map +0 -1
  561. package/dist/src/core/utils/update-checker.d.ts +0 -38
  562. package/dist/src/core/utils/update-checker.d.ts.map +0 -1
  563. package/dist/src/core/utils/update-checker.js +0 -213
  564. package/dist/src/core/utils/update-checker.js.map +0 -1
  565. package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
  566. package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
  567. package/dist/src/core/worktree/worktree-manager.js +0 -456
  568. package/dist/src/core/worktree/worktree-manager.js.map +0 -1
  569. package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
  570. package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
  571. package/dist/src/features/analytics/api/analytics-api.js +0 -289
  572. package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
  573. package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
  574. package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
  575. package/dist/src/features/analytics/core/analytics-service.js +0 -275
  576. package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
  577. package/dist/src/features/analytics/index.d.ts +0 -12
  578. package/dist/src/features/analytics/index.d.ts.map +0 -1
  579. package/dist/src/features/analytics/index.js +0 -11
  580. package/dist/src/features/analytics/index.js.map +0 -1
  581. package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
  582. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
  583. package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
  584. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
  585. package/dist/src/features/analytics/types/metrics.d.ts +0 -60
  586. package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
  587. package/dist/src/features/analytics/types/metrics.js +0 -2
  588. package/dist/src/features/analytics/types/metrics.js.map +0 -1
  589. package/dist/src/features/browser/browser-mcp.d.ts +0 -94
  590. package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
  591. package/dist/src/features/browser/browser-mcp.js +0 -459
  592. package/dist/src/features/browser/browser-mcp.js.map +0 -1
  593. package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
  594. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
  595. package/dist/src/features/tasks/pebbles-task-store.js +0 -572
  596. package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
  597. package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
  598. package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
  599. package/dist/src/features/tasks/task-aware-context.js +0 -412
  600. package/dist/src/features/tasks/task-aware-context.js.map +0 -1
  601. package/dist/src/index.d.ts +0 -21
  602. package/dist/src/index.d.ts.map +0 -1
  603. package/dist/src/index.js +0 -9
  604. package/dist/src/index.js.map +0 -1
  605. package/dist/src/integrations/linear/auth.d.ts +0 -99
  606. package/dist/src/integrations/linear/auth.d.ts.map +0 -1
  607. package/dist/src/integrations/linear/auth.js +0 -319
  608. package/dist/src/integrations/linear/auth.js.map +0 -1
  609. package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
  610. package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
  611. package/dist/src/integrations/linear/auto-sync.js +0 -268
  612. package/dist/src/integrations/linear/auto-sync.js.map +0 -1
  613. package/dist/src/integrations/linear/client.d.ts +0 -127
  614. package/dist/src/integrations/linear/client.d.ts.map +0 -1
  615. package/dist/src/integrations/linear/client.js +0 -446
  616. package/dist/src/integrations/linear/client.js.map +0 -1
  617. package/dist/src/integrations/linear/config.d.ts +0 -51
  618. package/dist/src/integrations/linear/config.d.ts.map +0 -1
  619. package/dist/src/integrations/linear/config.js +0 -103
  620. package/dist/src/integrations/linear/config.js.map +0 -1
  621. package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
  622. package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
  623. package/dist/src/integrations/linear/sync-manager.js +0 -235
  624. package/dist/src/integrations/linear/sync-manager.js.map +0 -1
  625. package/dist/src/integrations/linear/sync-service.d.ts +0 -46
  626. package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
  627. package/dist/src/integrations/linear/sync-service.js +0 -217
  628. package/dist/src/integrations/linear/sync-service.js.map +0 -1
  629. package/dist/src/integrations/linear/sync.d.ts +0 -125
  630. package/dist/src/integrations/linear/sync.d.ts.map +0 -1
  631. package/dist/src/integrations/linear/sync.js +0 -563
  632. package/dist/src/integrations/linear/sync.js.map +0 -1
  633. package/dist/src/integrations/linear/types.d.ts +0 -90
  634. package/dist/src/integrations/linear/types.d.ts.map +0 -1
  635. package/dist/src/integrations/linear/types.js +0 -2
  636. package/dist/src/integrations/linear/types.js.map +0 -1
  637. package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
  638. package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
  639. package/dist/src/integrations/linear/webhook-server.js +0 -190
  640. package/dist/src/integrations/linear/webhook-server.js.map +0 -1
  641. package/dist/src/integrations/linear/webhook.d.ts +0 -108
  642. package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
  643. package/dist/src/integrations/linear/webhook.js +0 -291
  644. package/dist/src/integrations/linear/webhook.js.map +0 -1
  645. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
  646. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
  647. package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
  648. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
  649. package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
  650. package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
  651. package/dist/src/integrations/mcp/handlers/index.js +0 -134
  652. package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
  653. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
  654. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
  655. package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
  656. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
  657. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
  658. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
  659. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
  660. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
  661. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
  662. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
  663. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
  664. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
  665. package/dist/src/integrations/mcp/index.d.ts +0 -13
  666. package/dist/src/integrations/mcp/index.d.ts.map +0 -1
  667. package/dist/src/integrations/mcp/index.js +0 -17
  668. package/dist/src/integrations/mcp/index.js.map +0 -1
  669. package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
  670. package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
  671. package/dist/src/integrations/mcp/refactored-server.js +0 -351
  672. package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
  673. package/dist/src/integrations/mcp/server.d.ts +0 -54
  674. package/dist/src/integrations/mcp/server.d.ts.map +0 -1
  675. package/dist/src/integrations/mcp/server.js +0 -1616
  676. package/dist/src/integrations/mcp/server.js.map +0 -1
  677. package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
  678. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
  679. package/dist/src/integrations/mcp/tool-definitions.js +0 -563
  680. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
  681. package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
  682. package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
  683. package/dist/src/integrations/mcp/trace-test.js +0 -54
  684. package/dist/src/integrations/mcp/trace-test.js.map +0 -1
  685. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
  686. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
  687. package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
  688. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
  689. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
  690. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
  691. package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
  692. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
  693. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
  694. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
  695. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
  696. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
  697. package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
  698. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
  699. package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
  700. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
  701. package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
  702. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
  703. package/dist/src/middleware/exponential-rate-limiter.js +0 -293
  704. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
  705. package/dist/src/models/user.model.d.ts +0 -62
  706. package/dist/src/models/user.model.d.ts.map +0 -1
  707. package/dist/src/models/user.model.js +0 -311
  708. package/dist/src/models/user.model.js.map +0 -1
  709. package/dist/src/servers/production/auth-middleware.d.ts +0 -76
  710. package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
  711. package/dist/src/servers/production/auth-middleware.js +0 -558
  712. package/dist/src/servers/production/auth-middleware.js.map +0 -1
  713. package/dist/src/servers/railway/index.d.ts +0 -7
  714. package/dist/src/servers/railway/index.d.ts.map +0 -1
  715. package/dist/src/servers/railway/index.js +0 -401
  716. package/dist/src/servers/railway/index.js.map +0 -1
  717. package/dist/src/services/config-service.d.ts +0 -44
  718. package/dist/src/services/config-service.d.ts.map +0 -1
  719. package/dist/src/services/config-service.js +0 -61
  720. package/dist/src/services/config-service.js.map +0 -1
  721. package/dist/src/services/context-service.d.ts +0 -17
  722. package/dist/src/services/context-service.d.ts.map +0 -1
  723. package/dist/src/services/context-service.js +0 -173
  724. package/dist/src/services/context-service.js.map +0 -1
  725. package/dist/src/types/task.d.ts +0 -27
  726. package/dist/src/types/task.d.ts.map +0 -1
  727. package/dist/src/types/task.js +0 -2
  728. package/dist/src/types/task.js.map +0 -1
  729. package/dist/src/utils/logger.d.ts +0 -13
  730. package/dist/src/utils/logger.d.ts.map +0 -1
  731. package/dist/src/utils/logger.js +0 -52
  732. package/dist/src/utils/logger.js.map +0 -1
  733. package/dist/src/validation/schemas.d.ts +0 -633
  734. package/dist/src/validation/schemas.d.ts.map +0 -1
  735. package/dist/src/validation/schemas.js +0 -347
  736. package/dist/src/validation/schemas.js.map +0 -1
@@ -0,0 +1,514 @@
1
+ import { EventEmitter } from "events";
2
+ import { logger } from "../monitoring/logger.js";
3
+ class MigrationManager extends EventEmitter {
4
+ config;
5
+ progress;
6
+ isRunning = false;
7
+ isPaused = false;
8
+ abortController;
9
+ constructor(config) {
10
+ super();
11
+ this.validateConfig(config);
12
+ this.config = this.normalizeConfig(config);
13
+ this.progress = this.initializeProgress();
14
+ }
15
+ validateConfig(config) {
16
+ if (!config.sourceAdapter || !config.targetAdapter) {
17
+ throw new Error("Source and target adapters are required");
18
+ }
19
+ if (config.batchSize && (config.batchSize < 1 || config.batchSize > 1e4)) {
20
+ throw new Error("Batch size must be between 1 and 10000");
21
+ }
22
+ if (config.retryAttempts && (config.retryAttempts < 0 || config.retryAttempts > 10)) {
23
+ throw new Error("Retry attempts must be between 0 and 10");
24
+ }
25
+ if (config.retryDelayMs && (config.retryDelayMs < 0 || config.retryDelayMs > 3e4)) {
26
+ throw new Error("Retry delay must be between 0 and 30000ms");
27
+ }
28
+ }
29
+ normalizeConfig(config) {
30
+ return {
31
+ ...config,
32
+ batchSize: config.batchSize ?? 1e3,
33
+ retryAttempts: config.retryAttempts ?? 3,
34
+ retryDelayMs: config.retryDelayMs ?? 1e3,
35
+ verifyData: config.verifyData ?? true,
36
+ enableDualWrite: config.enableDualWrite ?? true,
37
+ progressCallback: config.progressCallback ?? (() => {
38
+ })
39
+ };
40
+ }
41
+ initializeProgress() {
42
+ return {
43
+ phase: "initializing",
44
+ totalRecords: 0,
45
+ processedRecords: 0,
46
+ percentage: 0,
47
+ startTime: /* @__PURE__ */ new Date(),
48
+ errors: [],
49
+ warnings: []
50
+ };
51
+ }
52
+ async planMigration() {
53
+ logger.info("Planning migration strategy");
54
+ const plan = [];
55
+ const tables = ["frames", "events", "anchors"];
56
+ for (const table of tables) {
57
+ try {
58
+ const stats = await this.config.sourceAdapter.getStats();
59
+ const estimatedRows = this.estimateTableRows(table, stats);
60
+ plan.push({
61
+ table,
62
+ priority: this.getTablePriority(table),
63
+ estimatedRows,
64
+ dependencies: this.getTableDependencies(table),
65
+ strategy: "full"
66
+ });
67
+ } catch (error) {
68
+ logger.warn(`Failed to estimate rows for table ${table}:`, error);
69
+ plan.push({
70
+ table,
71
+ priority: this.getTablePriority(table),
72
+ estimatedRows: 0,
73
+ dependencies: this.getTableDependencies(table),
74
+ strategy: "skip"
75
+ });
76
+ }
77
+ }
78
+ plan.sort((a, b) => a.priority - b.priority);
79
+ const totalRecords = plan.reduce((sum, p) => sum + p.estimatedRows, 0);
80
+ this.progress.totalRecords = totalRecords;
81
+ logger.info(
82
+ `Migration plan: ${plan.length} tables, ~${totalRecords} records`
83
+ );
84
+ return plan;
85
+ }
86
+ estimateTableRows(table, stats) {
87
+ switch (table) {
88
+ case "frames":
89
+ return stats.totalFrames || 0;
90
+ case "events":
91
+ return stats.totalEvents || 0;
92
+ case "anchors":
93
+ return stats.totalAnchors || 0;
94
+ default:
95
+ return 0;
96
+ }
97
+ }
98
+ getTablePriority(table) {
99
+ const priorities = { frames: 1, events: 2, anchors: 3 };
100
+ return priorities[table] || 99;
101
+ }
102
+ getTableDependencies(table) {
103
+ const dependencies = {
104
+ frames: [],
105
+ events: ["frames"],
106
+ anchors: ["frames"]
107
+ };
108
+ return dependencies[table] || [];
109
+ }
110
+ async migrate(strategy = {
111
+ type: "online",
112
+ allowWrites: true,
113
+ verifyIntegrity: true,
114
+ fallbackOnError: true
115
+ }) {
116
+ if (this.isRunning) {
117
+ throw new Error("Migration already in progress");
118
+ }
119
+ this.isRunning = true;
120
+ this.abortController = new AbortController();
121
+ try {
122
+ logger.info("Starting database migration", strategy);
123
+ this.updateProgress({ phase: "initializing" });
124
+ await this.validateAdapters();
125
+ const plan = await this.planMigration();
126
+ await this.initializeTargetSchema();
127
+ if (strategy.type === "dual-write" && this.config.enableDualWrite) {
128
+ await this.enableDualWrite();
129
+ }
130
+ this.updateProgress({ phase: "migrating" });
131
+ await this.executeMigrationPlan(plan, strategy);
132
+ if (strategy.verifyIntegrity) {
133
+ this.updateProgress({ phase: "verifying" });
134
+ await this.verifyDataIntegrity(plan);
135
+ }
136
+ this.updateProgress({ phase: "completing" });
137
+ await this.completeMigration(strategy);
138
+ this.updateProgress({ phase: "completed", percentage: 100 });
139
+ logger.info("Migration completed successfully");
140
+ this.emit("completed", this.progress);
141
+ } catch (error) {
142
+ this.updateProgress({ phase: "failed" });
143
+ const sanitizedError = this.sanitizeError(error);
144
+ logger.error("Migration failed:", sanitizedError);
145
+ if (strategy.fallbackOnError) {
146
+ try {
147
+ await this.rollbackMigration();
148
+ } catch (rollbackError) {
149
+ logger.error("Rollback failed:", this.sanitizeError(rollbackError));
150
+ }
151
+ }
152
+ const userError = new Error("Migration failed. Check logs for details.");
153
+ this.emit("failed", userError);
154
+ throw userError;
155
+ } finally {
156
+ this.isRunning = false;
157
+ this.abortController = void 0;
158
+ }
159
+ }
160
+ async validateAdapters() {
161
+ logger.debug("Validating database adapters");
162
+ if (!this.config.sourceAdapter.isConnected()) {
163
+ await this.config.sourceAdapter.connect();
164
+ }
165
+ if (!await this.config.sourceAdapter.ping()) {
166
+ throw new Error("Source adapter is not responding");
167
+ }
168
+ if (!this.config.targetAdapter.isConnected()) {
169
+ await this.config.targetAdapter.connect();
170
+ }
171
+ if (!await this.config.targetAdapter.ping()) {
172
+ throw new Error("Target adapter is not responding");
173
+ }
174
+ const sourceVersion = await this.config.sourceAdapter.getSchemaVersion();
175
+ const targetVersion = await this.config.targetAdapter.getSchemaVersion();
176
+ if (sourceVersion !== targetVersion) {
177
+ logger.warn(
178
+ `Schema version mismatch: source=${sourceVersion}, target=${targetVersion}`
179
+ );
180
+ this.addWarning("Schema version mismatch detected");
181
+ }
182
+ }
183
+ async initializeTargetSchema() {
184
+ logger.debug("Initializing target schema");
185
+ try {
186
+ await this.config.targetAdapter.initializeSchema();
187
+ } catch (error) {
188
+ logger.error("Failed to initialize target schema:", error);
189
+ throw new Error(`Target schema initialization failed: ${error}`);
190
+ }
191
+ }
192
+ async enableDualWrite() {
193
+ logger.info("Enabling dual-write mode");
194
+ this.addWarning(
195
+ "Dual-write mode enabled - ensure application routes writes to both adapters"
196
+ );
197
+ }
198
+ async executeMigrationPlan(plan, strategy) {
199
+ for (const tablePlan of plan) {
200
+ if (this.abortController?.signal.aborted) {
201
+ throw new Error("Migration aborted by user");
202
+ }
203
+ if (tablePlan.strategy === "skip") {
204
+ logger.info(`Skipping table: ${tablePlan.table}`);
205
+ continue;
206
+ }
207
+ this.updateProgress({ currentTable: tablePlan.table });
208
+ await this.migrateTable(tablePlan, strategy);
209
+ }
210
+ }
211
+ async migrateTable(plan, strategy) {
212
+ logger.info(`Migrating table: ${plan.table} (~${plan.estimatedRows} rows)`);
213
+ let offset = 0;
214
+ let migratedRows = 0;
215
+ while (true) {
216
+ if (this.abortController?.signal.aborted || this.isPaused) {
217
+ break;
218
+ }
219
+ try {
220
+ const batch = await this.getBatch(
221
+ plan.table,
222
+ offset,
223
+ this.config.batchSize
224
+ );
225
+ if (batch.length === 0) {
226
+ break;
227
+ }
228
+ await this.migrateBatch(plan.table, batch);
229
+ migratedRows += batch.length;
230
+ offset += this.config.batchSize;
231
+ this.progress.processedRecords += batch.length;
232
+ this.updateProgressPercentage();
233
+ await this.sleep(this.calculateAdaptiveDelay());
234
+ } catch (error) {
235
+ this.addError(plan.table, `Batch migration failed: ${error}`);
236
+ if (this.config.retryAttempts > 0) {
237
+ await this.retryBatch(plan.table, offset, this.config.batchSize);
238
+ } else {
239
+ throw error;
240
+ }
241
+ }
242
+ }
243
+ logger.info(
244
+ `Completed migrating table ${plan.table}: ${migratedRows} rows`
245
+ );
246
+ }
247
+ async getBatch(table, offset, limit) {
248
+ const allowedTables = ["frames", "events", "anchors"];
249
+ if (!allowedTables.includes(table)) {
250
+ throw new Error(`Invalid table name: ${table}`);
251
+ }
252
+ const safeLimit = Math.max(1, Math.min(limit, 1e4));
253
+ const safeOffset = Math.max(0, offset);
254
+ const options = {
255
+ limit: safeLimit,
256
+ offset: safeOffset,
257
+ orderBy: "created_at",
258
+ orderDirection: "ASC"
259
+ };
260
+ switch (table) {
261
+ case "frames":
262
+ return [];
263
+ // Placeholder
264
+ case "events":
265
+ return [];
266
+ // Placeholder
267
+ case "anchors":
268
+ return [];
269
+ // Placeholder
270
+ default:
271
+ throw new Error(`Unsupported table: ${table}`);
272
+ }
273
+ }
274
+ async migrateBatch(table, batch) {
275
+ const allowedTables = ["frames", "events", "anchors"];
276
+ if (!allowedTables.includes(table)) {
277
+ throw new Error(`Invalid table name: ${table}`);
278
+ }
279
+ await this.config.targetAdapter.inTransaction(async (adapter) => {
280
+ const operations = batch.map((row) => ({
281
+ type: "insert",
282
+ table,
283
+ data: this.validateRowData(table, row)
284
+ }));
285
+ await adapter.executeBulk(operations);
286
+ });
287
+ }
288
+ validateRowData(table, row) {
289
+ if (!row || typeof row !== "object") {
290
+ throw new Error(`Invalid row data for table ${table}`);
291
+ }
292
+ switch (table) {
293
+ case "frames":
294
+ return this.validateFrameRow(row);
295
+ case "events":
296
+ return this.validateEventRow(row);
297
+ case "anchors":
298
+ return this.validateAnchorRow(row);
299
+ default:
300
+ throw new Error(`Unknown table: ${table}`);
301
+ }
302
+ }
303
+ validateFrameRow(row) {
304
+ const required = [
305
+ "frame_id",
306
+ "project_id",
307
+ "run_id",
308
+ "type",
309
+ "name",
310
+ "state",
311
+ "depth"
312
+ ];
313
+ for (const field of required) {
314
+ if (!(field in row)) {
315
+ throw new Error(`Missing required field ${field} in frame row`);
316
+ }
317
+ }
318
+ return row;
319
+ }
320
+ validateEventRow(row) {
321
+ const required = ["event_id", "frame_id", "seq", "type", "text"];
322
+ for (const field of required) {
323
+ if (!(field in row)) {
324
+ throw new Error(`Missing required field ${field} in event row`);
325
+ }
326
+ }
327
+ return row;
328
+ }
329
+ validateAnchorRow(row) {
330
+ const required = ["anchor_id", "frame_id", "type", "text", "priority"];
331
+ for (const field of required) {
332
+ if (!(field in row)) {
333
+ throw new Error(`Missing required field ${field} in anchor row`);
334
+ }
335
+ }
336
+ return row;
337
+ }
338
+ async retryBatch(table, offset, batchSize) {
339
+ for (let attempt = 1; attempt <= this.config.retryAttempts; attempt++) {
340
+ try {
341
+ await this.sleep(this.config.retryDelayMs * attempt);
342
+ const batch = await this.getBatch(table, offset, batchSize);
343
+ await this.migrateBatch(table, batch);
344
+ logger.info(`Retry successful for table ${table} at offset ${offset}`);
345
+ return;
346
+ } catch (error) {
347
+ logger.warn(
348
+ `Retry ${attempt}/${this.config.retryAttempts} failed:`,
349
+ error
350
+ );
351
+ if (attempt === this.config.retryAttempts) {
352
+ throw new Error(
353
+ `Failed after ${this.config.retryAttempts} retries: ${error}`
354
+ );
355
+ }
356
+ }
357
+ }
358
+ }
359
+ async verifyDataIntegrity(plan) {
360
+ logger.info("Verifying data integrity");
361
+ for (const tablePlan of plan) {
362
+ if (tablePlan.strategy === "skip") continue;
363
+ try {
364
+ const sourceStats = await this.config.sourceAdapter.getStats();
365
+ const targetStats = await this.config.targetAdapter.getStats();
366
+ const sourceCount = this.estimateTableRows(
367
+ tablePlan.table,
368
+ sourceStats
369
+ );
370
+ const targetCount = this.estimateTableRows(
371
+ tablePlan.table,
372
+ targetStats
373
+ );
374
+ if (sourceCount !== targetCount) {
375
+ this.addError(
376
+ tablePlan.table,
377
+ `Row count mismatch: source=${sourceCount}, target=${targetCount}`
378
+ );
379
+ } else {
380
+ logger.debug(
381
+ `Table ${tablePlan.table} verified: ${sourceCount} rows`
382
+ );
383
+ }
384
+ } catch (error) {
385
+ this.addError(tablePlan.table, `Verification failed: ${error}`);
386
+ }
387
+ }
388
+ if (this.progress.errors.length > 0) {
389
+ throw new Error(
390
+ `Data integrity verification failed with ${this.progress.errors.length} errors`
391
+ );
392
+ }
393
+ }
394
+ async completeMigration(strategy) {
395
+ logger.info("Completing migration");
396
+ const sourceVersion = await this.config.sourceAdapter.getSchemaVersion();
397
+ await this.config.targetAdapter.migrateSchema(sourceVersion);
398
+ await this.config.targetAdapter.analyze();
399
+ logger.info("Migration completion tasks finished");
400
+ }
401
+ async rollbackMigration() {
402
+ logger.warn("Rolling back migration");
403
+ try {
404
+ logger.warn(
405
+ "Rollback would clean target database - implement based on strategy"
406
+ );
407
+ } catch (error) {
408
+ logger.error("Rollback failed:", error);
409
+ }
410
+ }
411
+ updateProgress(updates) {
412
+ Object.assign(this.progress, updates);
413
+ this.updateProgressPercentage();
414
+ if (this.progress.totalRecords > 0) {
415
+ const elapsed = Date.now() - this.progress.startTime.getTime();
416
+ const rate = this.progress.processedRecords / (elapsed / 1e3);
417
+ const remaining = this.progress.totalRecords - this.progress.processedRecords;
418
+ if (rate > 0) {
419
+ this.progress.estimatedEndTime = new Date(
420
+ Date.now() + remaining / rate * 1e3
421
+ );
422
+ }
423
+ }
424
+ this.config.progressCallback(this.progress);
425
+ this.emit("progress", this.progress);
426
+ }
427
+ updateProgressPercentage() {
428
+ if (this.progress.totalRecords > 0) {
429
+ this.progress.percentage = Math.min(
430
+ 100,
431
+ this.progress.processedRecords / this.progress.totalRecords * 100
432
+ );
433
+ }
434
+ }
435
+ addError(table, error) {
436
+ this.progress.errors.push({
437
+ table,
438
+ error,
439
+ timestamp: /* @__PURE__ */ new Date()
440
+ });
441
+ logger.error(`Migration error for table ${table}: ${error}`);
442
+ }
443
+ addWarning(warning, table) {
444
+ this.progress.warnings.push({
445
+ table: table || "general",
446
+ warning,
447
+ timestamp: /* @__PURE__ */ new Date()
448
+ });
449
+ logger.warn(`Migration warning: ${warning}`);
450
+ }
451
+ sanitizeError(error) {
452
+ if (error instanceof Error) {
453
+ return {
454
+ name: error.name,
455
+ message: error.message
456
+ // Exclude stack traces and sensitive data for security
457
+ };
458
+ }
459
+ return { message: "Unknown error occurred" };
460
+ }
461
+ calculateAdaptiveDelay() {
462
+ const memoryUsage = process.memoryUsage().heapUsed / 1024 / 1024;
463
+ if (memoryUsage > 400) return 100;
464
+ if (memoryUsage > 300) return 50;
465
+ return 10;
466
+ }
467
+ sleep(ms) {
468
+ return new Promise((resolve) => setTimeout(resolve, ms));
469
+ }
470
+ pause() {
471
+ if (!this.isRunning) {
472
+ throw new Error("No migration in progress");
473
+ }
474
+ this.isPaused = true;
475
+ logger.info("Migration paused");
476
+ this.emit("paused");
477
+ }
478
+ resume() {
479
+ if (!this.isRunning) {
480
+ throw new Error("No migration in progress");
481
+ }
482
+ this.isPaused = false;
483
+ logger.info("Migration resumed");
484
+ this.emit("resumed");
485
+ }
486
+ abort() {
487
+ if (!this.isRunning) {
488
+ throw new Error("No migration in progress");
489
+ }
490
+ this.abortController?.abort();
491
+ logger.info("Migration aborted");
492
+ this.emit("aborted");
493
+ }
494
+ getProgress() {
495
+ return { ...this.progress };
496
+ }
497
+ isActive() {
498
+ return this.isRunning;
499
+ }
500
+ async estimateDuration() {
501
+ const plan = await this.planMigration();
502
+ const totalRecords = plan.reduce((sum, p) => sum + p.estimatedRows, 0);
503
+ const estimatedSeconds = totalRecords / 1e3;
504
+ const estimatedMinutes = Math.ceil(estimatedSeconds / 60);
505
+ let confidence = "medium";
506
+ if (totalRecords < 1e4) confidence = "high";
507
+ if (totalRecords > 1e5) confidence = "low";
508
+ return { estimatedMinutes, confidence };
509
+ }
510
+ }
511
+ export {
512
+ MigrationManager
513
+ };
514
+ //# sourceMappingURL=migration-manager.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/core/database/migration-manager.ts"],
4
+ "sourcesContent": ["/**\n * Migration Manager for Dual-Write Strategy\n * Enables seamless migration between SQLite and ParadeDB with zero downtime\n */\n\nimport { EventEmitter } from 'events';\nimport { DatabaseAdapter } from './database-adapter.js';\nimport { logger } from '../monitoring/logger.js';\n\nexport interface MigrationConfig {\n sourceAdapter: DatabaseAdapter;\n targetAdapter: DatabaseAdapter;\n batchSize?: number;\n retryAttempts?: number;\n retryDelayMs?: number;\n verifyData?: boolean;\n enableDualWrite?: boolean;\n progressCallback?: (progress: MigrationProgress) => void;\n}\n\nexport interface MigrationProgress {\n phase:\n | 'initializing'\n | 'migrating'\n | 'verifying'\n | 'completing'\n | 'completed'\n | 'failed';\n totalRecords: number;\n processedRecords: number;\n percentage: number;\n startTime: Date;\n estimatedEndTime?: Date;\n currentTable?: string;\n errors: Array<{ table: string; error: string; timestamp: Date }>;\n warnings: Array<{ table: string; warning: string; timestamp: Date }>;\n}\n\nexport interface MigrationStrategy {\n type: 'online' | 'offline' | 'dual-write';\n allowWrites: boolean;\n verifyIntegrity: boolean;\n fallbackOnError: boolean;\n}\n\nexport interface TableMigrationPlan {\n table: string;\n priority: number;\n estimatedRows: number;\n dependencies: string[];\n strategy: 'full' | 'incremental' | 'skip';\n}\n\nexport class MigrationManager extends EventEmitter {\n private config: Required<MigrationConfig>;\n private progress: MigrationProgress;\n private isRunning = false;\n private isPaused = false;\n private abortController?: AbortController;\n\n constructor(config: MigrationConfig) {\n super();\n\n this.validateConfig(config);\n this.config = this.normalizeConfig(config);\n this.progress = this.initializeProgress();\n }\n\n private validateConfig(config: MigrationConfig): void {\n if (!config.sourceAdapter || !config.targetAdapter) {\n throw new Error('Source and target adapters are required');\n }\n\n if (\n config.batchSize &&\n (config.batchSize < 1 || config.batchSize > 10000)\n ) {\n throw new Error('Batch size must be between 1 and 10000');\n }\n\n if (\n config.retryAttempts &&\n (config.retryAttempts < 0 || config.retryAttempts > 10)\n ) {\n throw new Error('Retry attempts must be between 0 and 10');\n }\n\n if (\n config.retryDelayMs &&\n (config.retryDelayMs < 0 || config.retryDelayMs > 30000)\n ) {\n throw new Error('Retry delay must be between 0 and 30000ms');\n }\n }\n\n private normalizeConfig(config: MigrationConfig): Required<MigrationConfig> {\n return {\n ...config,\n batchSize: config.batchSize ?? 1000,\n retryAttempts: config.retryAttempts ?? 3,\n retryDelayMs: config.retryDelayMs ?? 1000,\n verifyData: config.verifyData ?? true,\n enableDualWrite: config.enableDualWrite ?? true,\n progressCallback: config.progressCallback ?? (() => {}),\n };\n }\n\n private initializeProgress(): MigrationProgress {\n return {\n phase: 'initializing',\n totalRecords: 0,\n processedRecords: 0,\n percentage: 0,\n startTime: new Date(),\n errors: [],\n warnings: [],\n };\n }\n\n async planMigration(): Promise<TableMigrationPlan[]> {\n logger.info('Planning migration strategy');\n\n const plan: TableMigrationPlan[] = [];\n const tables = ['frames', 'events', 'anchors'];\n\n for (const table of tables) {\n try {\n const stats = await this.config.sourceAdapter.getStats();\n const estimatedRows = this.estimateTableRows(table, stats);\n\n plan.push({\n table,\n priority: this.getTablePriority(table),\n estimatedRows,\n dependencies: this.getTableDependencies(table),\n strategy: 'full',\n });\n } catch (error) {\n logger.warn(`Failed to estimate rows for table ${table}:`, error);\n plan.push({\n table,\n priority: this.getTablePriority(table),\n estimatedRows: 0,\n dependencies: this.getTableDependencies(table),\n strategy: 'skip',\n });\n }\n }\n\n // Sort by priority (dependencies first)\n plan.sort((a, b) => a.priority - b.priority);\n\n const totalRecords = plan.reduce((sum, p) => sum + p.estimatedRows, 0);\n this.progress.totalRecords = totalRecords;\n\n logger.info(\n `Migration plan: ${plan.length} tables, ~${totalRecords} records`\n );\n return plan;\n }\n\n private estimateTableRows(table: string, stats: any): number {\n switch (table) {\n case 'frames':\n return stats.totalFrames || 0;\n case 'events':\n return stats.totalEvents || 0;\n case 'anchors':\n return stats.totalAnchors || 0;\n default:\n return 0;\n }\n }\n\n private getTablePriority(table: string): number {\n const priorities = { frames: 1, events: 2, anchors: 3 };\n return priorities[table as keyof typeof priorities] || 99;\n }\n\n private getTableDependencies(table: string): string[] {\n const dependencies = {\n frames: [],\n events: ['frames'],\n anchors: ['frames'],\n };\n return dependencies[table as keyof typeof dependencies] || [];\n }\n\n async migrate(\n strategy: MigrationStrategy = {\n type: 'online',\n allowWrites: true,\n verifyIntegrity: true,\n fallbackOnError: true,\n }\n ): Promise<void> {\n if (this.isRunning) {\n throw new Error('Migration already in progress');\n }\n\n this.isRunning = true;\n this.abortController = new AbortController();\n\n try {\n logger.info('Starting database migration', strategy);\n this.updateProgress({ phase: 'initializing' });\n\n // Validate adapters\n await this.validateAdapters();\n\n // Create migration plan\n const plan = await this.planMigration();\n\n // Initialize target schema\n await this.initializeTargetSchema();\n\n // Enable dual-write if requested\n if (strategy.type === 'dual-write' && this.config.enableDualWrite) {\n await this.enableDualWrite();\n }\n\n // Execute migration\n this.updateProgress({ phase: 'migrating' });\n await this.executeMigrationPlan(plan, strategy);\n\n // Verify data integrity\n if (strategy.verifyIntegrity) {\n this.updateProgress({ phase: 'verifying' });\n await this.verifyDataIntegrity(plan);\n }\n\n // Complete migration\n this.updateProgress({ phase: 'completing' });\n await this.completeMigration(strategy);\n\n this.updateProgress({ phase: 'completed', percentage: 100 });\n logger.info('Migration completed successfully');\n this.emit('completed', this.progress);\n } catch (error) {\n this.updateProgress({ phase: 'failed' });\n\n // Sanitize error for logging\n const sanitizedError = this.sanitizeError(error);\n logger.error('Migration failed:', sanitizedError);\n\n if (strategy.fallbackOnError) {\n try {\n await this.rollbackMigration();\n } catch (rollbackError) {\n logger.error('Rollback failed:', this.sanitizeError(rollbackError));\n }\n }\n\n // Create user-safe error message\n const userError = new Error('Migration failed. Check logs for details.');\n this.emit('failed', userError);\n throw userError;\n } finally {\n this.isRunning = false;\n this.abortController = undefined;\n }\n }\n\n private async validateAdapters(): Promise<void> {\n logger.debug('Validating database adapters');\n\n // Check source adapter\n if (!this.config.sourceAdapter.isConnected()) {\n await this.config.sourceAdapter.connect();\n }\n\n if (!(await this.config.sourceAdapter.ping())) {\n throw new Error('Source adapter is not responding');\n }\n\n // Check target adapter\n if (!this.config.targetAdapter.isConnected()) {\n await this.config.targetAdapter.connect();\n }\n\n if (!(await this.config.targetAdapter.ping())) {\n throw new Error('Target adapter is not responding');\n }\n\n // Verify schema compatibility\n const sourceVersion = await this.config.sourceAdapter.getSchemaVersion();\n const targetVersion = await this.config.targetAdapter.getSchemaVersion();\n\n if (sourceVersion !== targetVersion) {\n logger.warn(\n `Schema version mismatch: source=${sourceVersion}, target=${targetVersion}`\n );\n this.addWarning('Schema version mismatch detected');\n }\n }\n\n private async initializeTargetSchema(): Promise<void> {\n logger.debug('Initializing target schema');\n\n try {\n await this.config.targetAdapter.initializeSchema();\n } catch (error) {\n logger.error('Failed to initialize target schema:', error);\n throw new Error(`Target schema initialization failed: ${error}`);\n }\n }\n\n private async enableDualWrite(): Promise<void> {\n logger.info('Enabling dual-write mode');\n // This would typically involve configuring the application to write to both databases\n // For now, we'll just log the intention\n this.addWarning(\n 'Dual-write mode enabled - ensure application routes writes to both adapters'\n );\n }\n\n private async executeMigrationPlan(\n plan: TableMigrationPlan[],\n strategy: MigrationStrategy\n ): Promise<void> {\n for (const tablePlan of plan) {\n if (this.abortController?.signal.aborted) {\n throw new Error('Migration aborted by user');\n }\n\n if (tablePlan.strategy === 'skip') {\n logger.info(`Skipping table: ${tablePlan.table}`);\n continue;\n }\n\n this.updateProgress({ currentTable: tablePlan.table });\n await this.migrateTable(tablePlan, strategy);\n }\n }\n\n private async migrateTable(\n plan: TableMigrationPlan,\n strategy: MigrationStrategy\n ): Promise<void> {\n logger.info(`Migrating table: ${plan.table} (~${plan.estimatedRows} rows)`);\n\n let offset = 0;\n let migratedRows = 0;\n\n while (true) {\n if (this.abortController?.signal.aborted || this.isPaused) {\n break;\n }\n\n try {\n // Get batch of data from source\n const batch = await this.getBatch(\n plan.table,\n offset,\n this.config.batchSize\n );\n\n if (batch.length === 0) {\n break; // No more data\n }\n\n // Migrate batch to target\n await this.migrateBatch(plan.table, batch);\n\n migratedRows += batch.length;\n offset += this.config.batchSize;\n\n this.progress.processedRecords += batch.length;\n this.updateProgressPercentage();\n\n // Adaptive delay based on system resources\n await this.sleep(this.calculateAdaptiveDelay());\n } catch (error) {\n this.addError(plan.table, `Batch migration failed: ${error}`);\n\n if (this.config.retryAttempts > 0) {\n await this.retryBatch(plan.table, offset, this.config.batchSize);\n } else {\n throw error;\n }\n }\n }\n\n logger.info(\n `Completed migrating table ${plan.table}: ${migratedRows} rows`\n );\n }\n\n private async getBatch(\n table: string,\n offset: number,\n limit: number\n ): Promise<any[]> {\n // Validate table name against whitelist\n const allowedTables = ['frames', 'events', 'anchors'] as const;\n if (!allowedTables.includes(table as any)) {\n throw new Error(`Invalid table name: ${table}`);\n }\n\n // Validate and bound parameters\n const safeLimit = Math.max(1, Math.min(limit, 10000));\n const safeOffset = Math.max(0, offset);\n\n const options = {\n limit: safeLimit,\n offset: safeOffset,\n orderBy: 'created_at',\n orderDirection: 'ASC' as const,\n };\n\n switch (table) {\n case 'frames':\n // This would need to be implemented in the adapter\n return []; // Placeholder\n case 'events':\n return []; // Placeholder\n case 'anchors':\n return []; // Placeholder\n default:\n throw new Error(`Unsupported table: ${table}`);\n }\n }\n\n private async migrateBatch(table: string, batch: any[]): Promise<void> {\n // Validate table name\n const allowedTables = ['frames', 'events', 'anchors'] as const;\n if (!allowedTables.includes(table as any)) {\n throw new Error(`Invalid table name: ${table}`);\n }\n\n // Use transaction for batch safety\n await this.config.targetAdapter.inTransaction(async (adapter) => {\n const operations = batch.map((row) => ({\n type: 'insert' as const,\n table,\n data: this.validateRowData(table, row),\n }));\n\n await adapter.executeBulk(operations);\n });\n }\n\n private validateRowData(table: string, row: any): any {\n if (!row || typeof row !== 'object') {\n throw new Error(`Invalid row data for table ${table}`);\n }\n\n switch (table) {\n case 'frames':\n return this.validateFrameRow(row);\n case 'events':\n return this.validateEventRow(row);\n case 'anchors':\n return this.validateAnchorRow(row);\n default:\n throw new Error(`Unknown table: ${table}`);\n }\n }\n\n private validateFrameRow(row: any): any {\n const required = [\n 'frame_id',\n 'project_id',\n 'run_id',\n 'type',\n 'name',\n 'state',\n 'depth',\n ];\n for (const field of required) {\n if (!(field in row)) {\n throw new Error(`Missing required field ${field} in frame row`);\n }\n }\n return row;\n }\n\n private validateEventRow(row: any): any {\n const required = ['event_id', 'frame_id', 'seq', 'type', 'text'];\n for (const field of required) {\n if (!(field in row)) {\n throw new Error(`Missing required field ${field} in event row`);\n }\n }\n return row;\n }\n\n private validateAnchorRow(row: any): any {\n const required = ['anchor_id', 'frame_id', 'type', 'text', 'priority'];\n for (const field of required) {\n if (!(field in row)) {\n throw new Error(`Missing required field ${field} in anchor row`);\n }\n }\n return row;\n }\n\n private async retryBatch(\n table: string,\n offset: number,\n batchSize: number\n ): Promise<void> {\n for (let attempt = 1; attempt <= this.config.retryAttempts; attempt++) {\n try {\n await this.sleep(this.config.retryDelayMs * attempt);\n\n const batch = await this.getBatch(table, offset, batchSize);\n await this.migrateBatch(table, batch);\n\n logger.info(`Retry successful for table ${table} at offset ${offset}`);\n return;\n } catch (error) {\n logger.warn(\n `Retry ${attempt}/${this.config.retryAttempts} failed:`,\n error\n );\n\n if (attempt === this.config.retryAttempts) {\n throw new Error(\n `Failed after ${this.config.retryAttempts} retries: ${error}`\n );\n }\n }\n }\n }\n\n private async verifyDataIntegrity(plan: TableMigrationPlan[]): Promise<void> {\n logger.info('Verifying data integrity');\n\n for (const tablePlan of plan) {\n if (tablePlan.strategy === 'skip') continue;\n\n try {\n const sourceStats = await this.config.sourceAdapter.getStats();\n const targetStats = await this.config.targetAdapter.getStats();\n\n const sourceCount = this.estimateTableRows(\n tablePlan.table,\n sourceStats\n );\n const targetCount = this.estimateTableRows(\n tablePlan.table,\n targetStats\n );\n\n if (sourceCount !== targetCount) {\n this.addError(\n tablePlan.table,\n `Row count mismatch: source=${sourceCount}, target=${targetCount}`\n );\n } else {\n logger.debug(\n `Table ${tablePlan.table} verified: ${sourceCount} rows`\n );\n }\n } catch (error) {\n this.addError(tablePlan.table, `Verification failed: ${error}`);\n }\n }\n\n if (this.progress.errors.length > 0) {\n throw new Error(\n `Data integrity verification failed with ${this.progress.errors.length} errors`\n );\n }\n }\n\n private async completeMigration(strategy: MigrationStrategy): Promise<void> {\n logger.info('Completing migration');\n\n // Update target schema version if needed\n const sourceVersion = await this.config.sourceAdapter.getSchemaVersion();\n await this.config.targetAdapter.migrateSchema(sourceVersion);\n\n // Analyze target database for optimal performance\n await this.config.targetAdapter.analyze();\n\n logger.info('Migration completion tasks finished');\n }\n\n private async rollbackMigration(): Promise<void> {\n logger.warn('Rolling back migration');\n\n try {\n // This would typically involve cleaning up the target database\n // For now, we'll just log the intention\n logger.warn(\n 'Rollback would clean target database - implement based on strategy'\n );\n } catch (error) {\n logger.error('Rollback failed:', error);\n }\n }\n\n private updateProgress(updates: Partial<MigrationProgress>): void {\n Object.assign(this.progress, updates);\n this.updateProgressPercentage();\n\n if (this.progress.totalRecords > 0) {\n const elapsed = Date.now() - this.progress.startTime.getTime();\n const rate = this.progress.processedRecords / (elapsed / 1000);\n const remaining =\n this.progress.totalRecords - this.progress.processedRecords;\n\n if (rate > 0) {\n this.progress.estimatedEndTime = new Date(\n Date.now() + (remaining / rate) * 1000\n );\n }\n }\n\n this.config.progressCallback(this.progress);\n this.emit('progress', this.progress);\n }\n\n private updateProgressPercentage(): void {\n if (this.progress.totalRecords > 0) {\n this.progress.percentage = Math.min(\n 100,\n (this.progress.processedRecords / this.progress.totalRecords) * 100\n );\n }\n }\n\n private addError(table: string, error: string): void {\n this.progress.errors.push({\n table,\n error,\n timestamp: new Date(),\n });\n\n logger.error(`Migration error for table ${table}: ${error}`);\n }\n\n private addWarning(warning: string, table?: string): void {\n this.progress.warnings.push({\n table: table || 'general',\n warning,\n timestamp: new Date(),\n });\n\n logger.warn(`Migration warning: ${warning}`);\n }\n\n private sanitizeError(error: any): any {\n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n // Exclude stack traces and sensitive data for security\n };\n }\n return { message: 'Unknown error occurred' };\n }\n\n private calculateAdaptiveDelay(): number {\n const memoryUsage = process.memoryUsage().heapUsed / 1024 / 1024;\n\n // Adaptive delay based on system resources\n if (memoryUsage > 400) return 100;\n if (memoryUsage > 300) return 50;\n return 10;\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n pause(): void {\n if (!this.isRunning) {\n throw new Error('No migration in progress');\n }\n\n this.isPaused = true;\n logger.info('Migration paused');\n this.emit('paused');\n }\n\n resume(): void {\n if (!this.isRunning) {\n throw new Error('No migration in progress');\n }\n\n this.isPaused = false;\n logger.info('Migration resumed');\n this.emit('resumed');\n }\n\n abort(): void {\n if (!this.isRunning) {\n throw new Error('No migration in progress');\n }\n\n this.abortController?.abort();\n logger.info('Migration aborted');\n this.emit('aborted');\n }\n\n getProgress(): MigrationProgress {\n return { ...this.progress };\n }\n\n isActive(): boolean {\n return this.isRunning;\n }\n\n async estimateDuration(): Promise<{\n estimatedMinutes: number;\n confidence: 'low' | 'medium' | 'high';\n }> {\n const plan = await this.planMigration();\n const totalRecords = plan.reduce((sum, p) => sum + p.estimatedRows, 0);\n\n // Rough estimate: 1000 records per second\n const estimatedSeconds = totalRecords / 1000;\n const estimatedMinutes = Math.ceil(estimatedSeconds / 60);\n\n let confidence: 'low' | 'medium' | 'high' = 'medium';\n if (totalRecords < 10000) confidence = 'high';\n if (totalRecords > 100000) confidence = 'low';\n\n return { estimatedMinutes, confidence };\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }