@stackmemoryai/stackmemory 0.5.58 → 0.5.61

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 (932) hide show
  1. package/README.md +105 -1
  2. package/dist/scripts/benchmark-performance.js +48 -0
  3. package/dist/scripts/benchmark-performance.js.map +7 -0
  4. package/dist/scripts/check-redis.js +42 -0
  5. package/dist/scripts/check-redis.js.map +7 -0
  6. package/dist/scripts/initialize.js +116 -0
  7. package/dist/scripts/initialize.js.map +7 -0
  8. package/dist/scripts/list-linear-tasks.js +124 -0
  9. package/dist/scripts/list-linear-tasks.js.map +7 -0
  10. package/dist/scripts/measure-handoff-impact.js +340 -0
  11. package/dist/scripts/measure-handoff-impact.js.map +7 -0
  12. package/dist/scripts/query-chromadb.js +160 -0
  13. package/dist/scripts/query-chromadb.js.map +7 -0
  14. package/dist/scripts/show-linear-summary.js +119 -0
  15. package/dist/scripts/show-linear-summary.js.map +7 -0
  16. package/dist/scripts/simple-swarm-demo.js +90 -0
  17. package/dist/scripts/simple-swarm-demo.js.map +7 -0
  18. package/dist/scripts/status.js +155 -0
  19. package/dist/scripts/status.js.map +7 -0
  20. package/dist/scripts/test-chromadb-sync.js +192 -0
  21. package/dist/scripts/test-chromadb-sync.js.map +7 -0
  22. package/dist/scripts/test-ralph-iteration-fix.js +86 -0
  23. package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
  24. package/dist/scripts/test-ralph-iterations.js +121 -0
  25. package/dist/scripts/test-ralph-iterations.js.map +7 -0
  26. package/dist/scripts/test-redis-storage.js +389 -0
  27. package/dist/scripts/test-redis-storage.js.map +7 -0
  28. package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
  29. package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
  30. package/dist/scripts/test-swarm-fixes.js +125 -0
  31. package/dist/scripts/test-swarm-fixes.js.map +7 -0
  32. package/dist/scripts/test-swarm-tui.js +23 -0
  33. package/dist/scripts/test-swarm-tui.js.map +7 -0
  34. package/dist/scripts/test-tui-shortcuts.js +52 -0
  35. package/dist/scripts/test-tui-shortcuts.js.map +7 -0
  36. package/dist/scripts/validate-tui-shortcuts.js +60 -0
  37. package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
  38. package/dist/src/agents/core/agent-task-manager.js.map +7 -0
  39. package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
  40. package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
  41. package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
  42. package/dist/src/cli/auto-detect.js.map +7 -0
  43. package/dist/src/cli/claude-sm-danger.js.map +7 -0
  44. package/dist/src/cli/claude-sm.js +1236 -0
  45. package/dist/src/cli/claude-sm.js.map +7 -0
  46. package/dist/src/cli/codex-sm-danger.js.map +7 -0
  47. package/dist/src/cli/codex-sm.js.map +7 -0
  48. package/dist/src/cli/commands/api.js.map +7 -0
  49. package/dist/src/cli/commands/auto-background.js.map +7 -0
  50. package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
  51. package/dist/src/cli/commands/clear.js.map +7 -0
  52. package/dist/src/cli/commands/config.js.map +7 -0
  53. package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
  54. package/dist/src/cli/commands/context.js.map +7 -0
  55. package/dist/src/cli/commands/daemon.js.map +7 -0
  56. package/dist/src/cli/commands/dashboard.js.map +7 -0
  57. package/dist/src/cli/commands/db.js.map +7 -0
  58. package/dist/src/cli/commands/decision.js.map +7 -0
  59. package/dist/src/cli/commands/discovery.js.map +7 -0
  60. package/dist/src/cli/commands/handoff.js.map +7 -0
  61. package/dist/src/cli/commands/hooks.js.map +7 -0
  62. package/dist/src/cli/commands/linear.js.map +7 -0
  63. package/dist/src/cli/commands/log.js.map +7 -0
  64. package/dist/src/cli/commands/login.js.map +7 -0
  65. package/dist/src/cli/commands/migrate.js.map +7 -0
  66. package/dist/src/cli/commands/model.js.map +7 -0
  67. package/dist/src/cli/commands/onboard.js.map +7 -0
  68. package/dist/src/cli/commands/projects.js.map +7 -0
  69. package/dist/src/cli/commands/ralph.js.map +7 -0
  70. package/dist/src/cli/commands/retrieval.js.map +7 -0
  71. package/dist/src/cli/commands/search.js +173 -0
  72. package/dist/src/cli/commands/search.js.map +7 -0
  73. package/dist/src/cli/commands/service.js.map +7 -0
  74. package/dist/src/cli/commands/session.js.map +7 -0
  75. package/dist/src/cli/commands/settings.js.map +7 -0
  76. package/dist/src/cli/commands/setup.js.map +7 -0
  77. package/dist/src/cli/commands/shell.js.map +7 -0
  78. package/dist/src/cli/commands/signup.js.map +7 -0
  79. package/dist/src/cli/commands/skills.js.map +7 -0
  80. package/dist/src/cli/commands/sms-notify.js.map +7 -0
  81. package/dist/src/cli/commands/storage-tier.js.map +7 -0
  82. package/dist/src/cli/commands/sweep.js.map +7 -0
  83. package/dist/src/cli/commands/tasks.js.map +7 -0
  84. package/dist/src/cli/commands/worktree.js.map +7 -0
  85. package/dist/src/cli/index.js +609 -0
  86. package/dist/src/cli/index.js.map +7 -0
  87. package/dist/src/cli/opencode-sm.js.map +7 -0
  88. package/dist/src/cli/utils/viewer.js.map +7 -0
  89. package/dist/src/core/config/config-manager.js.map +7 -0
  90. package/dist/src/core/config/feature-flags.js.map +7 -0
  91. package/dist/src/core/config/storage-config.js.map +7 -0
  92. package/dist/src/core/config/types.js.map +7 -0
  93. package/dist/src/core/context/auto-context.js.map +7 -0
  94. package/dist/src/core/context/dual-stack-manager.js.map +7 -0
  95. package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
  96. package/dist/src/core/context/frame-database.js.map +7 -0
  97. package/dist/src/core/context/frame-digest.js.map +7 -0
  98. package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
  99. package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
  100. package/dist/src/core/context/frame-recovery.js.map +7 -0
  101. package/dist/src/core/context/frame-stack.js.map +7 -0
  102. package/dist/src/core/context/index.js.map +7 -0
  103. package/dist/src/core/context/permission-manager.js.map +7 -0
  104. package/dist/src/core/context/recursive-context-manager.js.map +7 -0
  105. package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
  106. package/dist/src/core/context/shared-context-layer.js.map +7 -0
  107. package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
  108. package/dist/src/core/context/validation.js.map +7 -0
  109. package/dist/src/core/database/batch-operations.js.map +7 -0
  110. package/dist/src/core/database/connection-pool.js.map +7 -0
  111. package/dist/src/core/database/database-adapter.js.map +7 -0
  112. package/dist/src/core/database/migration-manager.js.map +7 -0
  113. package/dist/src/core/database/query-cache.js.map +7 -0
  114. package/dist/src/core/database/query-router.js.map +7 -0
  115. package/dist/src/core/database/sqlite-adapter.js +738 -0
  116. package/dist/src/core/database/sqlite-adapter.js.map +7 -0
  117. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
  118. package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
  119. package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
  120. package/dist/src/core/digest/index.js.map +7 -0
  121. package/dist/src/core/digest/types.js.map +7 -0
  122. package/dist/src/core/errors/error-utils.js +208 -0
  123. package/dist/src/core/errors/error-utils.js.map +7 -0
  124. package/dist/src/core/errors/index.js +521 -0
  125. package/dist/src/core/errors/index.js.map +7 -0
  126. package/dist/src/core/errors/recovery.js.map +7 -0
  127. package/dist/src/core/execution/parallel-executor.js.map +7 -0
  128. package/dist/src/core/extensions/custom-tools.js +567 -0
  129. package/dist/src/core/extensions/custom-tools.js.map +7 -0
  130. package/dist/src/core/extensions/index.js +55 -0
  131. package/dist/src/core/extensions/index.js.map +7 -0
  132. package/dist/src/core/extensions/loader.js +709 -0
  133. package/dist/src/core/extensions/loader.js.map +7 -0
  134. package/dist/src/core/extensions/plugin-system.js +506 -0
  135. package/dist/src/core/extensions/plugin-system.js.map +7 -0
  136. package/dist/src/core/extensions/provider-adapter.js +617 -0
  137. package/dist/src/core/extensions/provider-adapter.js.map +7 -0
  138. package/dist/src/core/extensions/sandbox-runtime.js +664 -0
  139. package/dist/src/core/extensions/sandbox-runtime.js.map +7 -0
  140. package/dist/src/core/frame/workflow-templates.js.map +7 -0
  141. package/dist/src/core/merge/conflict-detector.js.map +7 -0
  142. package/dist/src/core/merge/index.js.map +7 -0
  143. package/dist/src/core/merge/resolution-engine.js.map +7 -0
  144. package/dist/src/core/merge/stack-diff.js.map +7 -0
  145. package/dist/src/core/merge/unified-merge-resolver.js +303 -0
  146. package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
  147. package/dist/src/core/models/fallback-monitor.js.map +7 -0
  148. package/dist/src/core/models/model-router.js.map +7 -0
  149. package/dist/src/core/monitoring/error-handler.js.map +7 -0
  150. package/dist/src/core/monitoring/logger.js +202 -0
  151. package/dist/src/core/monitoring/logger.js.map +7 -0
  152. package/dist/src/core/monitoring/metrics.js.map +7 -0
  153. package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
  154. package/dist/src/core/monitoring/session-monitor.js.map +7 -0
  155. package/dist/src/core/performance/context-cache.js.map +7 -0
  156. package/dist/src/core/performance/index.js.map +7 -0
  157. package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
  158. package/dist/src/core/performance/monitor.js.map +7 -0
  159. package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
  160. package/dist/src/core/performance/performance-benchmark.js.map +7 -0
  161. package/dist/src/core/performance/performance-profiler.js.map +7 -0
  162. package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
  163. package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
  164. package/dist/src/core/projects/project-isolation.js.map +7 -0
  165. package/dist/src/core/projects/project-manager.js.map +7 -0
  166. package/dist/src/core/query/query-parser.js.map +7 -0
  167. package/dist/src/core/query/query-templates.js.map +7 -0
  168. package/dist/src/core/retrieval/context-retriever.js.map +7 -0
  169. package/dist/src/core/retrieval/index.js.map +7 -0
  170. package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
  171. package/dist/src/core/retrieval/llm-provider.js.map +7 -0
  172. package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
  173. package/dist/src/core/retrieval/summary-generator.js.map +7 -0
  174. package/dist/src/core/retrieval/types.js.map +7 -0
  175. package/dist/src/core/security/index.js +35 -0
  176. package/dist/src/core/security/index.js.map +7 -0
  177. package/dist/src/core/security/input-sanitizer.js +321 -0
  178. package/dist/src/core/security/input-sanitizer.js.map +7 -0
  179. package/dist/src/core/session/clear-survival.js.map +7 -0
  180. package/dist/src/core/session/enhanced-handoff.js.map +7 -0
  181. package/dist/src/core/session/handoff-generator.js.map +7 -0
  182. package/dist/src/core/session/index.js.map +7 -0
  183. package/dist/src/core/session/session-manager.js.map +7 -0
  184. package/dist/src/core/skills/index.js.map +7 -0
  185. package/dist/src/core/skills/skill-storage.js.map +7 -0
  186. package/dist/src/core/skills/types.js.map +7 -0
  187. package/dist/src/core/storage/chromadb-adapter.js +380 -0
  188. package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
  189. package/dist/src/core/storage/infinite-storage.js.map +7 -0
  190. package/dist/src/core/storage/remote-storage.js.map +7 -0
  191. package/dist/src/core/storage/two-tier-storage.js.map +7 -0
  192. package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
  193. package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
  194. package/dist/src/core/trace/debug-trace.js.map +7 -0
  195. package/dist/src/core/trace/index.js.map +7 -0
  196. package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
  197. package/dist/src/core/trace/trace-detector.js.map +7 -0
  198. package/dist/src/core/trace/trace-store.js.map +7 -0
  199. package/dist/src/core/trace/types.js.map +7 -0
  200. package/dist/src/core/utils/async-mutex.js.map +7 -0
  201. package/dist/src/core/utils/compression.js.map +7 -0
  202. package/dist/src/core/utils/update-checker.js.map +7 -0
  203. package/dist/src/core/worktree/worktree-manager.js.map +7 -0
  204. package/dist/src/daemon/daemon-config.js.map +7 -0
  205. package/dist/src/daemon/services/context-service.js.map +7 -0
  206. package/dist/src/daemon/services/linear-service.js.map +7 -0
  207. package/dist/src/daemon/session-daemon.js.map +7 -0
  208. package/dist/src/daemon/unified-daemon.js.map +7 -0
  209. package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
  210. package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
  211. package/dist/src/features/analytics/index.js.map +7 -0
  212. package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
  213. package/dist/src/features/browser/browser-mcp.js.map +7 -0
  214. package/dist/src/features/sweep/index.js.map +7 -0
  215. package/dist/src/features/sweep/prediction-client.js.map +7 -0
  216. package/dist/src/features/sweep/prompt-builder.js.map +7 -0
  217. package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
  218. package/dist/src/features/sweep/state-watcher.js.map +7 -0
  219. package/dist/src/features/sweep/status-bar.js.map +7 -0
  220. package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
  221. package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
  222. package/dist/src/features/sweep/types.js.map +7 -0
  223. package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
  224. package/dist/src/features/tasks/task-aware-context.js.map +7 -0
  225. package/dist/src/features/tui/simple-monitor.js.map +7 -0
  226. package/dist/src/features/tui/swarm-monitor.js.map +7 -0
  227. package/dist/src/features/web/client/stores/task-store.js.map +7 -0
  228. package/dist/src/features/web/server/index.js.map +7 -0
  229. package/dist/src/hooks/auto-background.js.map +7 -0
  230. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
  231. package/dist/src/hooks/config.js.map +7 -0
  232. package/dist/src/hooks/daemon.js.map +7 -0
  233. package/dist/src/hooks/events.js.map +7 -0
  234. package/dist/src/hooks/index.js.map +7 -0
  235. package/dist/src/hooks/linear-task-picker.js.map +7 -0
  236. package/dist/src/hooks/schemas.js.map +7 -0
  237. package/dist/src/hooks/secure-fs.js.map +7 -0
  238. package/dist/src/hooks/security-logger.js.map +7 -0
  239. package/dist/src/hooks/session-summary.js.map +7 -0
  240. package/dist/src/hooks/sms-action-runner.js.map +7 -0
  241. package/dist/src/hooks/sms-notify.js.map +7 -0
  242. package/dist/src/hooks/sms-watcher.js.map +7 -0
  243. package/dist/src/hooks/sms-webhook.js.map +7 -0
  244. package/dist/src/hooks/whatsapp-commands.js.map +7 -0
  245. package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
  246. package/dist/src/hooks/whatsapp-sync.js.map +7 -0
  247. package/dist/src/index.js.map +7 -0
  248. package/dist/src/integrations/anthropic/client.js.map +7 -0
  249. package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
  250. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  251. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  252. package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
  253. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
  254. package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
  255. package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
  256. package/dist/src/integrations/linear/auth.js.map +7 -0
  257. package/dist/src/integrations/linear/auto-sync.js.map +7 -0
  258. package/dist/src/integrations/linear/client.js +634 -0
  259. package/dist/src/integrations/linear/client.js.map +7 -0
  260. package/dist/src/integrations/linear/config.js.map +7 -0
  261. package/dist/src/integrations/linear/migration.js.map +7 -0
  262. package/dist/src/integrations/linear/oauth-server.js.map +7 -0
  263. package/dist/src/integrations/linear/rest-client.js.map +7 -0
  264. package/dist/src/integrations/linear/sync-manager.js.map +7 -0
  265. package/dist/src/integrations/linear/sync-service.js.map +7 -0
  266. package/dist/src/integrations/linear/sync.js.map +7 -0
  267. package/dist/src/integrations/linear/unified-sync.js.map +7 -0
  268. package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
  269. package/dist/src/integrations/linear/webhook-server.js.map +7 -0
  270. package/dist/src/integrations/linear/webhook.js.map +7 -0
  271. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
  272. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
  273. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
  274. package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
  275. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
  276. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  277. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
  278. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
  279. package/dist/src/integrations/mcp/index.js.map +7 -0
  280. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  281. package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
  282. package/dist/src/integrations/mcp/remote-server.js +682 -0
  283. package/dist/src/integrations/mcp/remote-server.js.map +7 -0
  284. package/dist/src/integrations/mcp/schemas.js.map +7 -0
  285. package/dist/src/integrations/mcp/server.js +1975 -0
  286. package/dist/src/integrations/mcp/server.js.map +7 -0
  287. package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
  288. package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
  289. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
  290. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
  291. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
  292. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
  293. package/dist/src/integrations/ralph/index.js.map +7 -0
  294. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
  295. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
  296. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
  297. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
  298. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
  299. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
  300. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
  301. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
  302. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
  303. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
  304. package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
  305. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
  306. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
  307. package/dist/src/integrations/ralph/types.js +5 -0
  308. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
  309. package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
  310. package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
  311. package/dist/src/models/user.model.js.map +7 -0
  312. package/dist/src/servers/production/auth-middleware.js.map +7 -0
  313. package/dist/src/services/config-service.js.map +7 -0
  314. package/dist/src/services/context-service.js.map +7 -0
  315. package/dist/src/skills/api-discovery.js.map +7 -0
  316. package/dist/src/skills/api-skill.js.map +7 -0
  317. package/dist/src/skills/claude-skills.js.map +7 -0
  318. package/dist/src/skills/dashboard-launcher.js.map +7 -0
  319. package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
  320. package/dist/src/skills/repo-ingestion-skill.js +632 -0
  321. package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
  322. package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
  323. package/dist/src/types/task.js.map +7 -0
  324. package/dist/src/utils/env.js.map +7 -0
  325. package/dist/src/utils/formatting.js.map +7 -0
  326. package/dist/src/utils/process-cleanup.js.map +7 -0
  327. package/package.json +13 -9
  328. package/scripts/background-sync-manager.js +145 -83
  329. package/scripts/claude-sm-autostart.js +17 -12
  330. package/scripts/gepa/README.md +275 -0
  331. package/scripts/gepa/config.json +53 -0
  332. package/scripts/gepa/evals/coding-tasks.jsonl +5 -0
  333. package/scripts/gepa/evals/fixtures/buggy-loop.js +18 -0
  334. package/scripts/gepa/evals/fixtures/callback-hell.js +53 -0
  335. package/scripts/gepa/generations/gen-000/baseline.md +124 -0
  336. package/scripts/gepa/hooks/auto-optimize.js +494 -0
  337. package/scripts/gepa/hooks/eval-tracker.js +203 -0
  338. package/scripts/gepa/hooks/reflect.js +311 -0
  339. package/scripts/gepa/optimize.js +611 -0
  340. package/scripts/gepa/state.json +14 -0
  341. package/scripts/initialize.ts +16 -7
  342. package/scripts/install.sh +14 -62
  343. package/scripts/status.ts +111 -46
  344. package/scripts/test-pre-publish-quick.sh +1 -1
  345. package/dist/agents/core/agent-task-manager.js.map +0 -7
  346. package/dist/agents/testing-agent.js +0 -614
  347. package/dist/agents/testing-agent.js.map +0 -7
  348. package/dist/agents/verifiers/base-verifier.js.map +0 -7
  349. package/dist/agents/verifiers/formatter-verifier.js.map +0 -7
  350. package/dist/agents/verifiers/llm-judge.js.map +0 -7
  351. package/dist/cli/auto-detect.js.map +0 -7
  352. package/dist/cli/browser-test.js +0 -33
  353. package/dist/cli/browser-test.js.map +0 -7
  354. package/dist/cli/claude-sm-danger.js.map +0 -7
  355. package/dist/cli/claude-sm.js +0 -1156
  356. package/dist/cli/claude-sm.js.map +0 -7
  357. package/dist/cli/codex-sm-danger.js.map +0 -7
  358. package/dist/cli/codex-sm.js.map +0 -7
  359. package/dist/cli/commands/api.js.map +0 -7
  360. package/dist/cli/commands/auto-background.js.map +0 -7
  361. package/dist/cli/commands/cleanup-processes.js.map +0 -7
  362. package/dist/cli/commands/clear.js.map +0 -7
  363. package/dist/cli/commands/config.js.map +0 -7
  364. package/dist/cli/commands/context-rehydrate.js.map +0 -7
  365. package/dist/cli/commands/context.js.map +0 -7
  366. package/dist/cli/commands/daemon.js.map +0 -7
  367. package/dist/cli/commands/dashboard.js.map +0 -7
  368. package/dist/cli/commands/db.js.map +0 -7
  369. package/dist/cli/commands/decision.js.map +0 -7
  370. package/dist/cli/commands/discovery.js.map +0 -7
  371. package/dist/cli/commands/handoff.js.map +0 -7
  372. package/dist/cli/commands/hooks.js.map +0 -7
  373. package/dist/cli/commands/linear-unified.js +0 -353
  374. package/dist/cli/commands/linear-unified.js.map +0 -7
  375. package/dist/cli/commands/linear.js.map +0 -7
  376. package/dist/cli/commands/log.js.map +0 -7
  377. package/dist/cli/commands/login.js.map +0 -7
  378. package/dist/cli/commands/migrate.js.map +0 -7
  379. package/dist/cli/commands/model.js.map +0 -7
  380. package/dist/cli/commands/monitor.js +0 -313
  381. package/dist/cli/commands/monitor.js.map +0 -7
  382. package/dist/cli/commands/onboard.js.map +0 -7
  383. package/dist/cli/commands/projects.js.map +0 -7
  384. package/dist/cli/commands/quality.js +0 -413
  385. package/dist/cli/commands/quality.js.map +0 -7
  386. package/dist/cli/commands/ralph.js.map +0 -7
  387. package/dist/cli/commands/retrieval.js.map +0 -7
  388. package/dist/cli/commands/search.js +0 -156
  389. package/dist/cli/commands/search.js.map +0 -7
  390. package/dist/cli/commands/service.js.map +0 -7
  391. package/dist/cli/commands/session.js.map +0 -7
  392. package/dist/cli/commands/settings.js.map +0 -7
  393. package/dist/cli/commands/setup.js.map +0 -7
  394. package/dist/cli/commands/shell.js.map +0 -7
  395. package/dist/cli/commands/signup.js.map +0 -7
  396. package/dist/cli/commands/skills.js.map +0 -7
  397. package/dist/cli/commands/sms-notify.js.map +0 -7
  398. package/dist/cli/commands/storage-tier.js.map +0 -7
  399. package/dist/cli/commands/storage.js +0 -360
  400. package/dist/cli/commands/storage.js.map +0 -7
  401. package/dist/cli/commands/sweep.js.map +0 -7
  402. package/dist/cli/commands/tasks.js.map +0 -7
  403. package/dist/cli/commands/test.js +0 -286
  404. package/dist/cli/commands/test.js.map +0 -7
  405. package/dist/cli/commands/workflow.js +0 -142
  406. package/dist/cli/commands/workflow.js.map +0 -7
  407. package/dist/cli/commands/worktree.js.map +0 -7
  408. package/dist/cli/index.js +0 -594
  409. package/dist/cli/index.js.map +0 -7
  410. package/dist/cli/opencode-sm.js.map +0 -7
  411. package/dist/cli/utils/viewer.js.map +0 -7
  412. package/dist/core/analytics/team-analytics.js +0 -378
  413. package/dist/core/analytics/team-analytics.js.map +0 -7
  414. package/dist/core/config/config-manager.js.map +0 -7
  415. package/dist/core/config/feature-flags.js.map +0 -7
  416. package/dist/core/config/storage-config.js.map +0 -7
  417. package/dist/core/config/types.js.map +0 -7
  418. package/dist/core/context/auto-context.js.map +0 -7
  419. package/dist/core/context/dual-stack-manager.js.map +0 -7
  420. package/dist/core/context/enhanced-rehydration.js.map +0 -7
  421. package/dist/core/context/frame-database.js.map +0 -7
  422. package/dist/core/context/frame-digest.js.map +0 -7
  423. package/dist/core/context/frame-handoff-manager.js.map +0 -7
  424. package/dist/core/context/frame-lifecycle-hooks.js.map +0 -7
  425. package/dist/core/context/frame-manager.js +0 -1069
  426. package/dist/core/context/frame-manager.js.map +0 -7
  427. package/dist/core/context/frame-recovery.js.map +0 -7
  428. package/dist/core/context/frame-stack.js.map +0 -7
  429. package/dist/core/context/incremental-gc.js +0 -290
  430. package/dist/core/context/incremental-gc.js.map +0 -7
  431. package/dist/core/context/index.js.map +0 -7
  432. package/dist/core/context/model-aware-compaction.js +0 -623
  433. package/dist/core/context/model-aware-compaction.js.map +0 -7
  434. package/dist/core/context/permission-manager.js.map +0 -7
  435. package/dist/core/context/recursive-context-manager.js.map +0 -7
  436. package/dist/core/context/refactored-frame-manager.js.map +0 -7
  437. package/dist/core/context/shared-context-layer.js.map +0 -7
  438. package/dist/core/context/stack-merge-resolver.js.map +0 -7
  439. package/dist/core/context/validation.js.map +0 -7
  440. package/dist/core/database/batch-operations.js.map +0 -7
  441. package/dist/core/database/connection-pool.js.map +0 -7
  442. package/dist/core/database/database-adapter.js.map +0 -7
  443. package/dist/core/database/migration-manager.js.map +0 -7
  444. package/dist/core/database/paradedb-adapter.js +0 -990
  445. package/dist/core/database/paradedb-adapter.js.map +0 -7
  446. package/dist/core/database/query-cache.js.map +0 -7
  447. package/dist/core/database/query-router.js.map +0 -7
  448. package/dist/core/database/sqlite-adapter.js +0 -728
  449. package/dist/core/database/sqlite-adapter.js.map +0 -7
  450. package/dist/core/digest/enhanced-hybrid-digest.js.map +0 -7
  451. package/dist/core/digest/frame-digest-integration.js.map +0 -7
  452. package/dist/core/digest/hybrid-digest-generator.js.map +0 -7
  453. package/dist/core/digest/index.js.map +0 -7
  454. package/dist/core/digest/types.js.map +0 -7
  455. package/dist/core/errors/index.js +0 -512
  456. package/dist/core/errors/index.js.map +0 -7
  457. package/dist/core/errors/recovery.js.map +0 -7
  458. package/dist/core/execution/parallel-executor.js.map +0 -7
  459. package/dist/core/frame/workflow-templates.js.map +0 -7
  460. package/dist/core/merge/conflict-detector.js.map +0 -7
  461. package/dist/core/merge/index.js.map +0 -7
  462. package/dist/core/merge/resolution-engine.js.map +0 -7
  463. package/dist/core/merge/stack-diff.js.map +0 -7
  464. package/dist/core/models/fallback-monitor.js.map +0 -7
  465. package/dist/core/models/model-router.js.map +0 -7
  466. package/dist/core/monitoring/error-handler.js.map +0 -7
  467. package/dist/core/monitoring/logger.js +0 -150
  468. package/dist/core/monitoring/logger.js.map +0 -7
  469. package/dist/core/monitoring/metrics.js.map +0 -7
  470. package/dist/core/monitoring/progress-tracker.js.map +0 -7
  471. package/dist/core/monitoring/session-monitor.js.map +0 -7
  472. package/dist/core/performance/context-cache.js.map +0 -7
  473. package/dist/core/performance/index.js.map +0 -7
  474. package/dist/core/performance/lazy-context-loader.js.map +0 -7
  475. package/dist/core/performance/monitor.js.map +0 -7
  476. package/dist/core/performance/optimized-frame-context.js.map +0 -7
  477. package/dist/core/performance/performance-benchmark.js.map +0 -7
  478. package/dist/core/performance/performance-profiler.js.map +0 -7
  479. package/dist/core/performance/streaming-jsonl-parser.js.map +0 -7
  480. package/dist/core/persistence/postgres-adapter.js.map +0 -7
  481. package/dist/core/projects/project-isolation.js.map +0 -7
  482. package/dist/core/projects/project-manager.js.map +0 -7
  483. package/dist/core/query/query-parser.js.map +0 -7
  484. package/dist/core/query/query-templates.js.map +0 -7
  485. package/dist/core/retrieval/context-retriever.js.map +0 -7
  486. package/dist/core/retrieval/graph-retrieval.js +0 -662
  487. package/dist/core/retrieval/graph-retrieval.js.map +0 -7
  488. package/dist/core/retrieval/hierarchical-retrieval.js +0 -656
  489. package/dist/core/retrieval/hierarchical-retrieval.js.map +0 -7
  490. package/dist/core/retrieval/index.js.map +0 -7
  491. package/dist/core/retrieval/llm-context-retrieval.js.map +0 -7
  492. package/dist/core/retrieval/llm-provider.js.map +0 -7
  493. package/dist/core/retrieval/retrieval-audit.js.map +0 -7
  494. package/dist/core/retrieval/retrieval-benchmarks.js +0 -521
  495. package/dist/core/retrieval/retrieval-benchmarks.js.map +0 -7
  496. package/dist/core/retrieval/summary-generator.js.map +0 -7
  497. package/dist/core/retrieval/types.js.map +0 -7
  498. package/dist/core/session/clear-survival.js.map +0 -7
  499. package/dist/core/session/enhanced-handoff.js.map +0 -7
  500. package/dist/core/session/handoff-generator.js.map +0 -7
  501. package/dist/core/session/index.js.map +0 -7
  502. package/dist/core/session/session-manager.js.map +0 -7
  503. package/dist/core/skills/index.js.map +0 -7
  504. package/dist/core/skills/skill-storage.js.map +0 -7
  505. package/dist/core/skills/types.js.map +0 -7
  506. package/dist/core/storage/chromadb-adapter.js +0 -354
  507. package/dist/core/storage/chromadb-adapter.js.map +0 -7
  508. package/dist/core/storage/infinite-storage.js.map +0 -7
  509. package/dist/core/storage/railway-optimized-storage.js +0 -591
  510. package/dist/core/storage/railway-optimized-storage.js.map +0 -7
  511. package/dist/core/storage/remote-storage.js.map +0 -7
  512. package/dist/core/storage/two-tier-storage.js.map +0 -7
  513. package/dist/core/trace/cli-trace-wrapper.js.map +0 -7
  514. package/dist/core/trace/db-trace-wrapper.js.map +0 -7
  515. package/dist/core/trace/debug-trace.js.map +0 -7
  516. package/dist/core/trace/index.js.map +0 -7
  517. package/dist/core/trace/linear-api-wrapper.js.map +0 -7
  518. package/dist/core/trace/trace-demo.js +0 -154
  519. package/dist/core/trace/trace-demo.js.map +0 -7
  520. package/dist/core/trace/trace-detector.demo.js +0 -142
  521. package/dist/core/trace/trace-detector.demo.js.map +0 -7
  522. package/dist/core/trace/trace-detector.js.map +0 -7
  523. package/dist/core/trace/trace-store.js.map +0 -7
  524. package/dist/core/trace/types.js.map +0 -7
  525. package/dist/core/utils/async-mutex.js.map +0 -7
  526. package/dist/core/utils/compression.js.map +0 -7
  527. package/dist/core/utils/update-checker.js.map +0 -7
  528. package/dist/core/worktree/worktree-manager.js.map +0 -7
  529. package/dist/daemon/daemon-config.js.map +0 -7
  530. package/dist/daemon/services/context-service.js.map +0 -7
  531. package/dist/daemon/services/linear-service.js.map +0 -7
  532. package/dist/daemon/session-daemon.js.map +0 -7
  533. package/dist/daemon/unified-daemon.js.map +0 -7
  534. package/dist/features/analytics/api/analytics-api.js.map +0 -7
  535. package/dist/features/analytics/core/analytics-service.js.map +0 -7
  536. package/dist/features/analytics/index.js.map +0 -7
  537. package/dist/features/analytics/queries/metrics-queries.js.map +0 -7
  538. package/dist/features/browser/browser-mcp.js.map +0 -7
  539. package/dist/features/sweep/index.js.map +0 -7
  540. package/dist/features/sweep/prediction-client.js.map +0 -7
  541. package/dist/features/sweep/prompt-builder.js.map +0 -7
  542. package/dist/features/sweep/pty-wrapper.js.map +0 -7
  543. package/dist/features/sweep/state-watcher.js.map +0 -7
  544. package/dist/features/sweep/status-bar.js.map +0 -7
  545. package/dist/features/sweep/sweep-server-manager.js.map +0 -7
  546. package/dist/features/sweep/tab-interceptor.js.map +0 -7
  547. package/dist/features/sweep/types.js.map +0 -7
  548. package/dist/features/tasks/linear-task-manager.js.map +0 -7
  549. package/dist/features/tasks/task-aware-context.js.map +0 -7
  550. package/dist/features/tui/simple-monitor.js.map +0 -7
  551. package/dist/features/tui/swarm-monitor.js.map +0 -7
  552. package/dist/features/web/client/stores/task-store.js.map +0 -7
  553. package/dist/features/web/server/index.js.map +0 -7
  554. package/dist/hooks/auto-background.js.map +0 -7
  555. package/dist/hooks/claude-code-whatsapp-hook.js.map +0 -7
  556. package/dist/hooks/config.js.map +0 -7
  557. package/dist/hooks/daemon.js.map +0 -7
  558. package/dist/hooks/events.js.map +0 -7
  559. package/dist/hooks/index.js.map +0 -7
  560. package/dist/hooks/linear-task-picker.js.map +0 -7
  561. package/dist/hooks/schemas.js.map +0 -7
  562. package/dist/hooks/secure-fs.js.map +0 -7
  563. package/dist/hooks/security-logger.js.map +0 -7
  564. package/dist/hooks/session-summary.js.map +0 -7
  565. package/dist/hooks/sms-action-runner.js.map +0 -7
  566. package/dist/hooks/sms-notify.js.map +0 -7
  567. package/dist/hooks/sms-watcher.js.map +0 -7
  568. package/dist/hooks/sms-webhook.js.map +0 -7
  569. package/dist/hooks/whatsapp-commands.js.map +0 -7
  570. package/dist/hooks/whatsapp-scheduler.js.map +0 -7
  571. package/dist/hooks/whatsapp-sync.js.map +0 -7
  572. package/dist/index.js.map +0 -7
  573. package/dist/integrations/anthropic/client.js.map +0 -7
  574. package/dist/integrations/claude-code/agent-bridge.js.map +0 -7
  575. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  576. package/dist/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  577. package/dist/integrations/claude-code/post-task-hooks.js.map +0 -7
  578. package/dist/integrations/claude-code/subagent-client-stub.js.map +0 -7
  579. package/dist/integrations/claude-code/subagent-client.js.map +0 -7
  580. package/dist/integrations/claude-code/task-coordinator.js.map +0 -7
  581. package/dist/integrations/linear/auth.js.map +0 -7
  582. package/dist/integrations/linear/auto-sync.js.map +0 -7
  583. package/dist/integrations/linear/client.js +0 -630
  584. package/dist/integrations/linear/client.js.map +0 -7
  585. package/dist/integrations/linear/config.js.map +0 -7
  586. package/dist/integrations/linear/migration.js.map +0 -7
  587. package/dist/integrations/linear/oauth-server.js.map +0 -7
  588. package/dist/integrations/linear/rest-client.js.map +0 -7
  589. package/dist/integrations/linear/sync-manager.js.map +0 -7
  590. package/dist/integrations/linear/sync-service.js.map +0 -7
  591. package/dist/integrations/linear/sync.js.map +0 -7
  592. package/dist/integrations/linear/unified-sync.js.map +0 -7
  593. package/dist/integrations/linear/webhook-handler.js.map +0 -7
  594. package/dist/integrations/linear/webhook-server.js.map +0 -7
  595. package/dist/integrations/linear/webhook.js.map +0 -7
  596. package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  597. package/dist/integrations/mcp/handlers/context-handlers.js.map +0 -7
  598. package/dist/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  599. package/dist/integrations/mcp/handlers/index.js.map +0 -7
  600. package/dist/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  601. package/dist/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  602. package/dist/integrations/mcp/handlers/task-handlers.js.map +0 -7
  603. package/dist/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  604. package/dist/integrations/mcp/index.js.map +0 -7
  605. package/dist/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  606. package/dist/integrations/mcp/refactored-server.js.map +0 -7
  607. package/dist/integrations/mcp/remote-server.js +0 -691
  608. package/dist/integrations/mcp/remote-server.js.map +0 -7
  609. package/dist/integrations/mcp/schemas.js.map +0 -7
  610. package/dist/integrations/mcp/server.js +0 -1960
  611. package/dist/integrations/mcp/server.js.map +0 -7
  612. package/dist/integrations/mcp/tool-definitions-code.js.map +0 -7
  613. package/dist/integrations/mcp/tool-definitions.js.map +0 -7
  614. package/dist/integrations/mcp/trace-test.js +0 -48
  615. package/dist/integrations/mcp/trace-test.js.map +0 -7
  616. package/dist/integrations/pg-aiguide/embedding-provider.js +0 -189
  617. package/dist/integrations/pg-aiguide/embedding-provider.js.map +0 -7
  618. package/dist/integrations/pg-aiguide/semantic-search.js +0 -187
  619. package/dist/integrations/pg-aiguide/semantic-search.js.map +0 -7
  620. package/dist/integrations/pg-aiguide/timescale-analytics.js +0 -224
  621. package/dist/integrations/pg-aiguide/timescale-analytics.js.map +0 -7
  622. package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  623. package/dist/integrations/ralph/context/context-budget-manager.js.map +0 -7
  624. package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  625. package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  626. package/dist/integrations/ralph/index.js.map +0 -7
  627. package/dist/integrations/ralph/learning/pattern-learner.js.map +0 -7
  628. package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  629. package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  630. package/dist/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  631. package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  632. package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  633. package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  634. package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  635. package/dist/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  636. package/dist/integrations/ralph/ralph-integration-demo.js +0 -182
  637. package/dist/integrations/ralph/ralph-integration-demo.js.map +0 -7
  638. package/dist/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  639. package/dist/integrations/ralph/state/state-reconciler.js.map +0 -7
  640. package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  641. package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  642. package/dist/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  643. package/dist/mcp/stackmemory-mcp-server.js.map +0 -7
  644. package/dist/middleware/exponential-rate-limiter.js.map +0 -7
  645. package/dist/models/user.model.js.map +0 -7
  646. package/dist/servers/production/auth-middleware.js.map +0 -7
  647. package/dist/servers/railway/config.js +0 -55
  648. package/dist/servers/railway/config.js.map +0 -7
  649. package/dist/servers/railway/index-enhanced.js +0 -160
  650. package/dist/servers/railway/index-enhanced.js.map +0 -7
  651. package/dist/servers/railway/index.js +0 -1349
  652. package/dist/servers/railway/index.js.map +0 -7
  653. package/dist/servers/railway/simple.js +0 -64
  654. package/dist/servers/railway/simple.js.map +0 -7
  655. package/dist/servers/railway/storage-test.js +0 -459
  656. package/dist/servers/railway/storage-test.js.map +0 -7
  657. package/dist/services/config-service.js.map +0 -7
  658. package/dist/services/context-service.js.map +0 -7
  659. package/dist/skills/api-discovery.js.map +0 -7
  660. package/dist/skills/api-skill.js.map +0 -7
  661. package/dist/skills/claude-skills.js.map +0 -7
  662. package/dist/skills/dashboard-launcher.js.map +0 -7
  663. package/dist/skills/recursive-agent-orchestrator.js.map +0 -7
  664. package/dist/skills/repo-ingestion-skill.js +0 -609
  665. package/dist/skills/repo-ingestion-skill.js.map +0 -7
  666. package/dist/skills/security-secrets-scanner.js +0 -284
  667. package/dist/skills/security-secrets-scanner.js.map +0 -7
  668. package/dist/skills/unified-rlm-orchestrator.js.map +0 -7
  669. package/dist/utils/env.js.map +0 -7
  670. package/dist/utils/formatting.js.map +0 -7
  671. package/dist/utils/process-cleanup.js.map +0 -7
  672. package/dist/validation/schemas.js +0 -222
  673. package/dist/validation/schemas.js.map +0 -7
  674. /package/dist/{agents → src/agents}/core/agent-task-manager.js +0 -0
  675. /package/dist/{agents → src/agents}/verifiers/base-verifier.js +0 -0
  676. /package/dist/{agents → src/agents}/verifiers/formatter-verifier.js +0 -0
  677. /package/dist/{agents → src/agents}/verifiers/llm-judge.js +0 -0
  678. /package/dist/{cli → src/cli}/auto-detect.js +0 -0
  679. /package/dist/{cli → src/cli}/claude-sm-danger.js +0 -0
  680. /package/dist/{cli → src/cli}/codex-sm-danger.js +0 -0
  681. /package/dist/{cli → src/cli}/codex-sm.js +0 -0
  682. /package/dist/{cli → src/cli}/commands/api.js +0 -0
  683. /package/dist/{cli → src/cli}/commands/auto-background.js +0 -0
  684. /package/dist/{cli → src/cli}/commands/cleanup-processes.js +0 -0
  685. /package/dist/{cli → src/cli}/commands/clear.js +0 -0
  686. /package/dist/{cli → src/cli}/commands/config.js +0 -0
  687. /package/dist/{cli → src/cli}/commands/context-rehydrate.js +0 -0
  688. /package/dist/{cli → src/cli}/commands/context.js +0 -0
  689. /package/dist/{cli → src/cli}/commands/daemon.js +0 -0
  690. /package/dist/{cli → src/cli}/commands/dashboard.js +0 -0
  691. /package/dist/{cli → src/cli}/commands/db.js +0 -0
  692. /package/dist/{cli → src/cli}/commands/decision.js +0 -0
  693. /package/dist/{cli → src/cli}/commands/discovery.js +0 -0
  694. /package/dist/{cli → src/cli}/commands/handoff.js +0 -0
  695. /package/dist/{cli → src/cli}/commands/hooks.js +0 -0
  696. /package/dist/{cli → src/cli}/commands/linear.js +0 -0
  697. /package/dist/{cli → src/cli}/commands/log.js +0 -0
  698. /package/dist/{cli → src/cli}/commands/login.js +0 -0
  699. /package/dist/{cli → src/cli}/commands/migrate.js +0 -0
  700. /package/dist/{cli → src/cli}/commands/model.js +0 -0
  701. /package/dist/{cli → src/cli}/commands/onboard.js +0 -0
  702. /package/dist/{cli → src/cli}/commands/projects.js +0 -0
  703. /package/dist/{cli → src/cli}/commands/ralph.js +0 -0
  704. /package/dist/{cli → src/cli}/commands/retrieval.js +0 -0
  705. /package/dist/{cli → src/cli}/commands/service.js +0 -0
  706. /package/dist/{cli → src/cli}/commands/session.js +0 -0
  707. /package/dist/{cli → src/cli}/commands/settings.js +0 -0
  708. /package/dist/{cli → src/cli}/commands/setup.js +0 -0
  709. /package/dist/{cli → src/cli}/commands/shell.js +0 -0
  710. /package/dist/{cli → src/cli}/commands/signup.js +0 -0
  711. /package/dist/{cli → src/cli}/commands/skills.js +0 -0
  712. /package/dist/{cli → src/cli}/commands/sms-notify.js +0 -0
  713. /package/dist/{cli → src/cli}/commands/storage-tier.js +0 -0
  714. /package/dist/{cli → src/cli}/commands/sweep.js +0 -0
  715. /package/dist/{cli → src/cli}/commands/tasks.js +0 -0
  716. /package/dist/{cli → src/cli}/commands/worktree.js +0 -0
  717. /package/dist/{cli → src/cli}/opencode-sm.js +0 -0
  718. /package/dist/{cli → src/cli}/utils/viewer.js +0 -0
  719. /package/dist/{core → src/core}/config/config-manager.js +0 -0
  720. /package/dist/{core → src/core}/config/feature-flags.js +0 -0
  721. /package/dist/{core → src/core}/config/storage-config.js +0 -0
  722. /package/dist/{core → src/core}/config/types.js +0 -0
  723. /package/dist/{core → src/core}/context/auto-context.js +0 -0
  724. /package/dist/{core → src/core}/context/dual-stack-manager.js +0 -0
  725. /package/dist/{core → src/core}/context/enhanced-rehydration.js +0 -0
  726. /package/dist/{core → src/core}/context/frame-database.js +0 -0
  727. /package/dist/{core → src/core}/context/frame-digest.js +0 -0
  728. /package/dist/{core → src/core}/context/frame-handoff-manager.js +0 -0
  729. /package/dist/{core → src/core}/context/frame-lifecycle-hooks.js +0 -0
  730. /package/dist/{core → src/core}/context/frame-recovery.js +0 -0
  731. /package/dist/{core → src/core}/context/frame-stack.js +0 -0
  732. /package/dist/{core → src/core}/context/frame-types.js +0 -0
  733. /package/dist/{core → src/core}/context/frame-types.js.map +0 -0
  734. /package/dist/{core → src/core}/context/index.js +0 -0
  735. /package/dist/{core → src/core}/context/permission-manager.js +0 -0
  736. /package/dist/{core → src/core}/context/recursive-context-manager.js +0 -0
  737. /package/dist/{core → src/core}/context/refactored-frame-manager.js +0 -0
  738. /package/dist/{core → src/core}/context/shared-context-layer.js +0 -0
  739. /package/dist/{core → src/core}/context/stack-merge-resolver.js +0 -0
  740. /package/dist/{core → src/core}/context/validation.js +0 -0
  741. /package/dist/{core → src/core}/database/batch-operations.js +0 -0
  742. /package/dist/{core → src/core}/database/connection-pool.js +0 -0
  743. /package/dist/{core → src/core}/database/database-adapter.js +0 -0
  744. /package/dist/{core → src/core}/database/migration-manager.js +0 -0
  745. /package/dist/{core → src/core}/database/query-cache.js +0 -0
  746. /package/dist/{core → src/core}/database/query-router.js +0 -0
  747. /package/dist/{core → src/core}/digest/enhanced-hybrid-digest.js +0 -0
  748. /package/dist/{core → src/core}/digest/frame-digest-integration.js +0 -0
  749. /package/dist/{core → src/core}/digest/hybrid-digest-generator.js +0 -0
  750. /package/dist/{core → src/core}/digest/index.js +0 -0
  751. /package/dist/{core → src/core}/digest/types.js +0 -0
  752. /package/dist/{core → src/core}/errors/recovery.js +0 -0
  753. /package/dist/{core → src/core}/execution/parallel-executor.js +0 -0
  754. /package/dist/{core/merge → src/core/extensions}/types.js +0 -0
  755. /package/dist/{core/merge → src/core/extensions}/types.js.map +0 -0
  756. /package/dist/{core → src/core}/frame/workflow-templates.js +0 -0
  757. /package/dist/{core → src/core}/merge/conflict-detector.js +0 -0
  758. /package/dist/{core → src/core}/merge/index.js +0 -0
  759. /package/dist/{core → src/core}/merge/resolution-engine.js +0 -0
  760. /package/dist/{core → src/core}/merge/stack-diff.js +0 -0
  761. /package/dist/{core → src/core/merge}/types.js +0 -0
  762. /package/dist/{core → src/core/merge}/types.js.map +0 -0
  763. /package/dist/{core → src/core}/models/fallback-monitor.js +0 -0
  764. /package/dist/{core → src/core}/models/model-router.js +0 -0
  765. /package/dist/{core → src/core}/monitoring/error-handler.js +0 -0
  766. /package/dist/{core → src/core}/monitoring/metrics.js +0 -0
  767. /package/dist/{core → src/core}/monitoring/progress-tracker.js +0 -0
  768. /package/dist/{core → src/core}/monitoring/session-monitor.js +0 -0
  769. /package/dist/{core → src/core}/performance/context-cache.js +0 -0
  770. /package/dist/{core → src/core}/performance/index.js +0 -0
  771. /package/dist/{core → src/core}/performance/lazy-context-loader.js +0 -0
  772. /package/dist/{core → src/core}/performance/monitor.js +0 -0
  773. /package/dist/{core → src/core}/performance/optimized-frame-context.js +0 -0
  774. /package/dist/{core → src/core}/performance/performance-benchmark.js +0 -0
  775. /package/dist/{core → src/core}/performance/performance-profiler.js +0 -0
  776. /package/dist/{core → src/core}/performance/streaming-jsonl-parser.js +0 -0
  777. /package/dist/{core → src/core}/persistence/postgres-adapter.js +0 -0
  778. /package/dist/{core → src/core}/projects/project-isolation.js +0 -0
  779. /package/dist/{core → src/core}/projects/project-manager.js +0 -0
  780. /package/dist/{core → src/core}/query/query-parser.js +0 -0
  781. /package/dist/{core → src/core}/query/query-templates.js +0 -0
  782. /package/dist/{core → src/core}/retrieval/context-retriever.js +0 -0
  783. /package/dist/{core → src/core}/retrieval/index.js +0 -0
  784. /package/dist/{core → src/core}/retrieval/llm-context-retrieval.js +0 -0
  785. /package/dist/{core → src/core}/retrieval/llm-provider.js +0 -0
  786. /package/dist/{core → src/core}/retrieval/retrieval-audit.js +0 -0
  787. /package/dist/{core → src/core}/retrieval/summary-generator.js +0 -0
  788. /package/dist/{core → src/core}/retrieval/types.js +0 -0
  789. /package/dist/{core → src/core}/session/clear-survival.js +0 -0
  790. /package/dist/{core → src/core}/session/enhanced-handoff.js +0 -0
  791. /package/dist/{core → src/core}/session/handoff-generator.js +0 -0
  792. /package/dist/{core → src/core}/session/index.js +0 -0
  793. /package/dist/{core → src/core}/session/session-manager.js +0 -0
  794. /package/dist/{core → src/core}/skills/index.js +0 -0
  795. /package/dist/{core → src/core}/skills/skill-storage.js +0 -0
  796. /package/dist/{core → src/core}/skills/types.js +0 -0
  797. /package/dist/{core → src/core}/storage/infinite-storage.js +0 -0
  798. /package/dist/{core → src/core}/storage/remote-storage.js +0 -0
  799. /package/dist/{core → src/core}/storage/two-tier-storage.js +0 -0
  800. /package/dist/{core → src/core}/trace/cli-trace-wrapper.js +0 -0
  801. /package/dist/{core → src/core}/trace/db-trace-wrapper.js +0 -0
  802. /package/dist/{core → src/core}/trace/debug-trace.js +0 -0
  803. /package/dist/{core → src/core}/trace/index.js +0 -0
  804. /package/dist/{core → src/core}/trace/linear-api-wrapper.js +0 -0
  805. /package/dist/{core → src/core}/trace/trace-detector.js +0 -0
  806. /package/dist/{core → src/core}/trace/trace-store.js +0 -0
  807. /package/dist/{core → src/core}/trace/types.js +0 -0
  808. /package/dist/{integrations/linear → src/core}/types.js +0 -0
  809. /package/dist/{integrations/linear → src/core}/types.js.map +0 -0
  810. /package/dist/{core → src/core}/utils/async-mutex.js +0 -0
  811. /package/dist/{core → src/core}/utils/compression.js +0 -0
  812. /package/dist/{core → src/core}/utils/update-checker.js +0 -0
  813. /package/dist/{core → src/core}/worktree/worktree-manager.js +0 -0
  814. /package/dist/{daemon → src/daemon}/daemon-config.js +0 -0
  815. /package/dist/{daemon → src/daemon}/services/context-service.js +0 -0
  816. /package/dist/{daemon → src/daemon}/services/linear-service.js +0 -0
  817. /package/dist/{daemon → src/daemon}/session-daemon.js +0 -0
  818. /package/dist/{daemon → src/daemon}/unified-daemon.js +0 -0
  819. /package/dist/{features → src/features}/analytics/api/analytics-api.js +0 -0
  820. /package/dist/{features → src/features}/analytics/core/analytics-service.js +0 -0
  821. /package/dist/{features → src/features}/analytics/index.js +0 -0
  822. /package/dist/{features → src/features}/analytics/queries/metrics-queries.js +0 -0
  823. /package/dist/{features → src/features}/analytics/types/metrics.js +0 -0
  824. /package/dist/{features → src/features}/analytics/types/metrics.js.map +0 -0
  825. /package/dist/{features → src/features}/browser/browser-mcp.js +0 -0
  826. /package/dist/{features → src/features}/sweep/index.js +0 -0
  827. /package/dist/{features → src/features}/sweep/prediction-client.js +0 -0
  828. /package/dist/{features → src/features}/sweep/prompt-builder.js +0 -0
  829. /package/dist/{features → src/features}/sweep/pty-wrapper.js +0 -0
  830. /package/dist/{features → src/features}/sweep/state-watcher.js +0 -0
  831. /package/dist/{features → src/features}/sweep/status-bar.js +0 -0
  832. /package/dist/{features → src/features}/sweep/sweep-server-manager.js +0 -0
  833. /package/dist/{features → src/features}/sweep/tab-interceptor.js +0 -0
  834. /package/dist/{features → src/features}/sweep/types.js +0 -0
  835. /package/dist/{features → src/features}/tasks/linear-task-manager.js +0 -0
  836. /package/dist/{features → src/features}/tasks/task-aware-context.js +0 -0
  837. /package/dist/{features → src/features}/tui/simple-monitor.js +0 -0
  838. /package/dist/{features → src/features}/tui/swarm-monitor.js +0 -0
  839. /package/dist/{features → src/features}/web/client/stores/task-store.js +0 -0
  840. /package/dist/{features → src/features}/web/server/index.js +0 -0
  841. /package/dist/{hooks → src/hooks}/auto-background.js +0 -0
  842. /package/dist/{hooks → src/hooks}/claude-code-whatsapp-hook.js +0 -0
  843. /package/dist/{hooks → src/hooks}/config.js +0 -0
  844. /package/dist/{hooks → src/hooks}/daemon.js +0 -0
  845. /package/dist/{hooks → src/hooks}/events.js +0 -0
  846. /package/dist/{hooks → src/hooks}/index.js +0 -0
  847. /package/dist/{hooks → src/hooks}/linear-task-picker.js +0 -0
  848. /package/dist/{hooks → src/hooks}/schemas.js +0 -0
  849. /package/dist/{hooks → src/hooks}/secure-fs.js +0 -0
  850. /package/dist/{hooks → src/hooks}/security-logger.js +0 -0
  851. /package/dist/{hooks → src/hooks}/session-summary.js +0 -0
  852. /package/dist/{hooks → src/hooks}/sms-action-runner.js +0 -0
  853. /package/dist/{hooks → src/hooks}/sms-notify.js +0 -0
  854. /package/dist/{hooks → src/hooks}/sms-watcher.js +0 -0
  855. /package/dist/{hooks → src/hooks}/sms-webhook.js +0 -0
  856. /package/dist/{hooks → src/hooks}/whatsapp-commands.js +0 -0
  857. /package/dist/{hooks → src/hooks}/whatsapp-scheduler.js +0 -0
  858. /package/dist/{hooks → src/hooks}/whatsapp-sync.js +0 -0
  859. /package/dist/{index.js → src/index.js} +0 -0
  860. /package/dist/{integrations → src/integrations}/anthropic/client.js +0 -0
  861. /package/dist/{integrations → src/integrations}/claude-code/agent-bridge.js +0 -0
  862. /package/dist/{integrations → src/integrations}/claude-code/enhanced-pre-clear-hooks.js +0 -0
  863. /package/dist/{integrations → src/integrations}/claude-code/lifecycle-hooks.js +0 -0
  864. /package/dist/{integrations → src/integrations}/claude-code/post-task-hooks.js +0 -0
  865. /package/dist/{integrations → src/integrations}/claude-code/subagent-client-stub.js +0 -0
  866. /package/dist/{integrations → src/integrations}/claude-code/subagent-client.js +0 -0
  867. /package/dist/{integrations → src/integrations}/claude-code/task-coordinator.js +0 -0
  868. /package/dist/{integrations → src/integrations}/linear/auth.js +0 -0
  869. /package/dist/{integrations → src/integrations}/linear/auto-sync.js +0 -0
  870. /package/dist/{integrations → src/integrations}/linear/config.js +0 -0
  871. /package/dist/{integrations → src/integrations}/linear/migration.js +0 -0
  872. /package/dist/{integrations → src/integrations}/linear/oauth-server.js +0 -0
  873. /package/dist/{integrations → src/integrations}/linear/rest-client.js +0 -0
  874. /package/dist/{integrations → src/integrations}/linear/sync-manager.js +0 -0
  875. /package/dist/{integrations → src/integrations}/linear/sync-service.js +0 -0
  876. /package/dist/{integrations → src/integrations}/linear/sync.js +0 -0
  877. /package/dist/{integrations/ralph → src/integrations/linear}/types.js +0 -0
  878. /package/dist/{integrations/ralph → src/integrations/linear}/types.js.map +0 -0
  879. /package/dist/{integrations → src/integrations}/linear/unified-sync.js +0 -0
  880. /package/dist/{integrations → src/integrations}/linear/webhook-handler.js +0 -0
  881. /package/dist/{integrations → src/integrations}/linear/webhook-server.js +0 -0
  882. /package/dist/{integrations → src/integrations}/linear/webhook.js +0 -0
  883. /package/dist/{integrations → src/integrations}/mcp/handlers/code-execution-handlers.js +0 -0
  884. /package/dist/{integrations → src/integrations}/mcp/handlers/context-handlers.js +0 -0
  885. /package/dist/{integrations → src/integrations}/mcp/handlers/discovery-handlers.js +0 -0
  886. /package/dist/{integrations → src/integrations}/mcp/handlers/index.js +0 -0
  887. /package/dist/{integrations → src/integrations}/mcp/handlers/linear-handlers.js +0 -0
  888. /package/dist/{integrations → src/integrations}/mcp/handlers/skill-handlers.js +0 -0
  889. /package/dist/{integrations → src/integrations}/mcp/handlers/task-handlers.js +0 -0
  890. /package/dist/{integrations → src/integrations}/mcp/handlers/trace-handlers.js +0 -0
  891. /package/dist/{integrations → src/integrations}/mcp/index.js +0 -0
  892. /package/dist/{integrations → src/integrations}/mcp/middleware/tool-scoring.js +0 -0
  893. /package/dist/{integrations → src/integrations}/mcp/refactored-server.js +0 -0
  894. /package/dist/{integrations → src/integrations}/mcp/schemas.js +0 -0
  895. /package/dist/{integrations → src/integrations}/mcp/tool-definitions-code.js +0 -0
  896. /package/dist/{integrations → src/integrations}/mcp/tool-definitions.js +0 -0
  897. /package/dist/{integrations → src/integrations}/ralph/bridge/ralph-stackmemory-bridge.js +0 -0
  898. /package/dist/{integrations → src/integrations}/ralph/context/context-budget-manager.js +0 -0
  899. /package/dist/{integrations → src/integrations}/ralph/context/stackmemory-context-loader.js +0 -0
  900. /package/dist/{integrations → src/integrations}/ralph/coordination/enhanced-coordination.js +0 -0
  901. /package/dist/{integrations → src/integrations}/ralph/index.js +0 -0
  902. /package/dist/{integrations → src/integrations}/ralph/learning/pattern-learner.js +0 -0
  903. /package/dist/{integrations → src/integrations}/ralph/lifecycle/iteration-lifecycle.js +0 -0
  904. /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-dashboard.js +0 -0
  905. /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-registry.js +0 -0
  906. /package/dist/{integrations → src/integrations}/ralph/orchestration/multi-loop-orchestrator.js +0 -0
  907. /package/dist/{integrations → src/integrations}/ralph/patterns/compounding-engineering-pattern.js +0 -0
  908. /package/dist/{integrations → src/integrations}/ralph/patterns/extended-coherence-sessions.js +0 -0
  909. /package/dist/{integrations → src/integrations}/ralph/patterns/oracle-worker-pattern.js +0 -0
  910. /package/dist/{integrations → src/integrations}/ralph/performance/performance-optimizer.js +0 -0
  911. /package/dist/{integrations → src/integrations}/ralph/recovery/crash-recovery.js +0 -0
  912. /package/dist/{integrations → src/integrations}/ralph/state/state-reconciler.js +0 -0
  913. /package/dist/{integrations → src/integrations}/ralph/swarm/git-workflow-manager.js +0 -0
  914. /package/dist/{integrations → src/integrations}/ralph/swarm/swarm-coordinator.js +0 -0
  915. /package/dist/{types/task.js.map → src/integrations/ralph/types.js.map} +0 -0
  916. /package/dist/{integrations → src/integrations}/ralph/visualization/ralph-debugger.js +0 -0
  917. /package/dist/{mcp → src/mcp}/stackmemory-mcp-server.js +0 -0
  918. /package/dist/{middleware → src/middleware}/exponential-rate-limiter.js +0 -0
  919. /package/dist/{models → src/models}/user.model.js +0 -0
  920. /package/dist/{servers → src/servers}/production/auth-middleware.js +0 -0
  921. /package/dist/{services → src/services}/config-service.js +0 -0
  922. /package/dist/{services → src/services}/context-service.js +0 -0
  923. /package/dist/{skills → src/skills}/api-discovery.js +0 -0
  924. /package/dist/{skills → src/skills}/api-skill.js +0 -0
  925. /package/dist/{skills → src/skills}/claude-skills.js +0 -0
  926. /package/dist/{skills → src/skills}/dashboard-launcher.js +0 -0
  927. /package/dist/{skills → src/skills}/recursive-agent-orchestrator.js +0 -0
  928. /package/dist/{skills → src/skills}/unified-rlm-orchestrator.js +0 -0
  929. /package/dist/{types → src/types}/task.js +0 -0
  930. /package/dist/{utils → src/utils}/env.js +0 -0
  931. /package/dist/{utils → src/utils}/formatting.js +0 -0
  932. /package/dist/{utils → src/utils}/process-cleanup.js +0 -0
@@ -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';\nimport { DatabaseError, ErrorCode, wrapError } from '../errors/index.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 DatabaseError(\n 'Source and target adapters are required',\n ErrorCode.DB_MIGRATION_FAILED,\n { reason: 'missing_adapters' }\n );\n }\n\n if (\n config.batchSize &&\n (config.batchSize < 1 || config.batchSize > 10000)\n ) {\n throw new DatabaseError(\n 'Batch size must be between 1 and 10000',\n ErrorCode.DB_MIGRATION_FAILED,\n { batchSize: config.batchSize }\n );\n }\n\n if (\n config.retryAttempts &&\n (config.retryAttempts < 0 || config.retryAttempts > 10)\n ) {\n throw new DatabaseError(\n 'Retry attempts must be between 0 and 10',\n ErrorCode.DB_MIGRATION_FAILED,\n { retryAttempts: config.retryAttempts }\n );\n }\n\n if (\n config.retryDelayMs &&\n (config.retryDelayMs < 0 || config.retryDelayMs > 30000)\n ) {\n throw new DatabaseError(\n 'Retry delay must be between 0 and 30000ms',\n ErrorCode.DB_MIGRATION_FAILED,\n { retryDelayMs: config.retryDelayMs }\n );\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: unknown) {\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 DatabaseError(\n 'Migration already in progress',\n ErrorCode.DB_MIGRATION_FAILED,\n { reason: 'already_running' }\n );\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: unknown) {\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: unknown) {\n logger.error('Rollback failed:', this.sanitizeError(rollbackError));\n }\n }\n\n // Create user-safe error message\n const userError = new DatabaseError(\n 'Migration failed. Check logs for details.',\n ErrorCode.DB_MIGRATION_FAILED,\n { phase: this.progress.phase },\n error instanceof Error ? error : undefined\n );\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 DatabaseError(\n 'Source adapter is not responding',\n ErrorCode.DB_CONNECTION_FAILED,\n { adapter: 'source' }\n );\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 DatabaseError(\n 'Target adapter is not responding',\n ErrorCode.DB_CONNECTION_FAILED,\n { adapter: 'target' }\n );\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: unknown) {\n logger.error('Failed to initialize target schema:', error);\n throw new DatabaseError(\n 'Target schema initialization failed',\n ErrorCode.DB_SCHEMA_ERROR,\n { operation: 'initializeSchema' },\n error instanceof Error ? error : undefined\n );\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 DatabaseError(\n 'Migration aborted by user',\n ErrorCode.DB_MIGRATION_FAILED,\n { reason: 'user_abort' }\n );\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: unknown) {\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 wrapError(\n error,\n `Batch migration failed for table ${plan.table}`,\n ErrorCode.DB_MIGRATION_FAILED,\n { table: plan.table, offset }\n );\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 DatabaseError(\n `Invalid table name: ${table}`,\n ErrorCode.DB_QUERY_FAILED,\n { table, allowedTables }\n );\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 // TODO: Use these options when adapter methods support pagination\n void safeLimit;\n void safeOffset;\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 DatabaseError(\n `Unsupported table: ${table}`,\n ErrorCode.DB_QUERY_FAILED,\n { table }\n );\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 DatabaseError(\n `Invalid table name: ${table}`,\n ErrorCode.DB_INSERT_FAILED,\n { table }\n );\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 DatabaseError(\n `Invalid row data for table ${table}`,\n ErrorCode.DB_INSERT_FAILED,\n { table, rowType: typeof row }\n );\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 DatabaseError(\n `Unknown table: ${table}`,\n ErrorCode.DB_INSERT_FAILED,\n { table }\n );\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 DatabaseError(\n `Missing required field ${field} in frame row`,\n ErrorCode.DB_CONSTRAINT_VIOLATION,\n { table: 'frames', missingField: field }\n );\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 DatabaseError(\n `Missing required field ${field} in event row`,\n ErrorCode.DB_CONSTRAINT_VIOLATION,\n { table: 'events', missingField: field }\n );\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 DatabaseError(\n `Missing required field ${field} in anchor row`,\n ErrorCode.DB_CONSTRAINT_VIOLATION,\n { table: 'anchors', missingField: field }\n );\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: unknown) {\n logger.warn(\n `Retry ${attempt}/${this.config.retryAttempts} failed:`,\n error\n );\n\n if (attempt === this.config.retryAttempts) {\n throw new DatabaseError(\n `Failed after ${this.config.retryAttempts} retries`,\n ErrorCode.DB_MIGRATION_FAILED,\n { table, offset, attempts: this.config.retryAttempts },\n error instanceof Error ? error : undefined\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: unknown) {\n this.addError(tablePlan.table, `Verification failed: ${error}`);\n }\n }\n\n if (this.progress.errors.length > 0) {\n throw new DatabaseError(\n `Data integrity verification failed with ${this.progress.errors.length} errors`,\n ErrorCode.DB_MIGRATION_FAILED,\n {\n errorCount: this.progress.errors.length,\n errors: this.progress.errors,\n }\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: unknown) {\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 DatabaseError(\n 'No migration in progress',\n ErrorCode.DB_MIGRATION_FAILED,\n { reason: 'not_running' }\n );\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 DatabaseError(\n 'No migration in progress',\n ErrorCode.DB_MIGRATION_FAILED,\n { reason: 'not_running' }\n );\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 DatabaseError(\n 'No migration in progress',\n ErrorCode.DB_MIGRATION_FAILED,\n { reason: 'not_running' }\n );\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
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/core/database/query-cache.ts"],
4
+ "sourcesContent": ["/**\n * Query Result Cache\n * LRU cache for frequently accessed database query results\n */\n\nimport { logger } from '../monitoring/logger.js';\n\nexport interface CacheOptions {\n maxSize?: number;\n ttlMs?: number;\n enableMetrics?: boolean;\n}\n\nexport interface CacheEntry<T> {\n value: T;\n createdAt: number;\n accessCount: number;\n lastAccessed: number;\n}\n\nexport interface CacheMetrics {\n hits: number;\n misses: number;\n evictions: number;\n totalQueries: number;\n hitRate: number;\n size: number;\n maxSize: number;\n}\n\nexport class LRUQueryCache<T = any> {\n private cache = new Map<string, CacheEntry<T>>();\n private maxSize: number;\n private ttlMs: number;\n private enableMetrics: boolean;\n\n // Metrics\n private metrics: Omit<CacheMetrics, 'hitRate' | 'size' | 'maxSize'> = {\n hits: 0,\n misses: 0,\n evictions: 0,\n totalQueries: 0,\n };\n\n constructor(options: CacheOptions = {}) {\n this.maxSize = options.maxSize ?? 1000;\n this.ttlMs = options.ttlMs ?? 300000; // 5 minutes default\n this.enableMetrics = options.enableMetrics ?? true;\n\n logger.info('Query cache initialized', {\n maxSize: this.maxSize,\n ttlMs: this.ttlMs,\n enableMetrics: this.enableMetrics,\n });\n }\n\n /**\n * Get a value from cache\n */\n get(key: string): T | undefined {\n if (this.enableMetrics) {\n this.metrics.totalQueries++;\n }\n\n const entry = this.cache.get(key);\n\n if (!entry) {\n if (this.enableMetrics) {\n this.metrics.misses++;\n }\n return undefined;\n }\n\n // Check TTL\n const now = Date.now();\n if (now - entry.createdAt > this.ttlMs) {\n this.cache.delete(key);\n if (this.enableMetrics) {\n this.metrics.misses++;\n this.metrics.evictions++;\n }\n logger.debug('Cache entry expired', { key, age: now - entry.createdAt });\n return undefined;\n }\n\n // Update access stats and move to end (most recently used)\n entry.accessCount++;\n entry.lastAccessed = now;\n this.cache.delete(key);\n this.cache.set(key, entry);\n\n if (this.enableMetrics) {\n this.metrics.hits++;\n }\n\n logger.debug('Cache hit', { key, accessCount: entry.accessCount });\n return entry.value;\n }\n\n /**\n * Set a value in cache\n */\n set(key: string, value: T): void {\n const now = Date.now();\n\n // Remove existing entry if present\n if (this.cache.has(key)) {\n this.cache.delete(key);\n }\n\n // Evict least recently used entries if at capacity\n while (this.cache.size >= this.maxSize) {\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== undefined) {\n this.cache.delete(firstKey);\n if (this.enableMetrics) {\n this.metrics.evictions++;\n }\n logger.debug('Evicted LRU entry', { key: firstKey });\n } else {\n break;\n }\n }\n\n // Add new entry\n const entry: CacheEntry<T> = {\n value,\n createdAt: now,\n accessCount: 0,\n lastAccessed: now,\n };\n\n this.cache.set(key, entry);\n logger.debug('Cache set', { key, size: this.cache.size });\n }\n\n /**\n * Delete a specific key\n */\n delete(key: string): boolean {\n const deleted = this.cache.delete(key);\n if (deleted) {\n logger.debug('Cache delete', { key });\n }\n return deleted;\n }\n\n /**\n * Clear all cached entries\n */\n clear(): void {\n const size = this.cache.size;\n this.cache.clear();\n logger.info('Cache cleared', { previousSize: size });\n }\n\n /**\n * Invalidate entries matching a pattern\n */\n invalidatePattern(pattern: RegExp): number {\n let count = 0;\n for (const key of this.cache.keys()) {\n if (pattern.test(key)) {\n this.cache.delete(key);\n count++;\n }\n }\n logger.info('Pattern invalidation', {\n pattern: pattern.source,\n invalidated: count,\n });\n return count;\n }\n\n /**\n * Get cache metrics\n */\n getMetrics(): CacheMetrics {\n return {\n ...this.metrics,\n hitRate:\n this.metrics.totalQueries > 0\n ? this.metrics.hits / this.metrics.totalQueries\n : 0,\n size: this.cache.size,\n maxSize: this.maxSize,\n };\n }\n\n /**\n * Get cache contents for debugging\n */\n debug(): Array<{ key: string; entry: CacheEntry<T> }> {\n return Array.from(this.cache.entries()).map(([key, entry]) => ({\n key,\n entry,\n }));\n }\n\n /**\n * Cleanup expired entries\n */\n cleanup(): number {\n const now = Date.now();\n let removed = 0;\n\n for (const [key, entry] of this.cache.entries()) {\n if (now - entry.createdAt > this.ttlMs) {\n this.cache.delete(key);\n removed++;\n if (this.enableMetrics) {\n this.metrics.evictions++;\n }\n }\n }\n\n if (removed > 0) {\n logger.info('Cache cleanup completed', {\n removed,\n remaining: this.cache.size,\n });\n }\n\n return removed;\n }\n}\n\n/**\n * Query cache specifically designed for StackMemory operations\n */\nexport class StackMemoryQueryCache {\n private frameCache = new LRUQueryCache<any>({ maxSize: 500, ttlMs: 300000 }); // 5 min\n private eventCache = new LRUQueryCache<any>({ maxSize: 1000, ttlMs: 180000 }); // 3 min\n private anchorCache = new LRUQueryCache<any>({ maxSize: 200, ttlMs: 600000 }); // 10 min\n private digestCache = new LRUQueryCache<any>({ maxSize: 100, ttlMs: 900000 }); // 15 min\n\n /**\n * Cache frame data\n */\n cacheFrame(frameId: string, data: any): void {\n this.frameCache.set(`frame:${frameId}`, data);\n }\n\n getFrame(frameId: string): any {\n return this.frameCache.get(`frame:${frameId}`);\n }\n\n /**\n * Cache frame context assemblies (expensive operations)\n */\n cacheFrameContext(frameId: string, context: any): void {\n this.frameCache.set(`context:${frameId}`, context);\n }\n\n getFrameContext(frameId: string): any {\n return this.frameCache.get(`context:${frameId}`);\n }\n\n /**\n * Cache events for a frame\n */\n cacheFrameEvents(frameId: string, events: any[]): void {\n this.eventCache.set(`events:${frameId}`, events);\n }\n\n getFrameEvents(frameId: string): any[] {\n return this.eventCache.get(`events:${frameId}`);\n }\n\n /**\n * Cache anchors\n */\n cacheAnchors(frameId: string, anchors: any[]): void {\n this.anchorCache.set(`anchors:${frameId}`, anchors);\n }\n\n getAnchors(frameId: string): any[] {\n return this.anchorCache.get(`anchors:${frameId}`);\n }\n\n /**\n * Cache digest data\n */\n cacheDigest(frameId: string, digest: any): void {\n this.digestCache.set(`digest:${frameId}`, digest);\n }\n\n getDigest(frameId: string): any {\n return this.digestCache.get(`digest:${frameId}`);\n }\n\n /**\n * Invalidate caches for a specific frame\n */\n invalidateFrame(frameId: string): void {\n this.frameCache.delete(`frame:${frameId}`);\n this.frameCache.delete(`context:${frameId}`);\n this.eventCache.delete(`events:${frameId}`);\n this.anchorCache.delete(`anchors:${frameId}`);\n this.digestCache.delete(`digest:${frameId}`);\n\n logger.info('Invalidated frame caches', { frameId });\n }\n\n /**\n * Invalidate all caches for a project\n */\n invalidateProject(projectId: string): void {\n const pattern = new RegExp(`^(frame|context|events|anchors|digest):.+`);\n\n let total = 0;\n total += this.frameCache.invalidatePattern(pattern);\n total += this.eventCache.invalidatePattern(pattern);\n total += this.anchorCache.invalidatePattern(pattern);\n total += this.digestCache.invalidatePattern(pattern);\n\n logger.info('Invalidated project caches', {\n projectId,\n totalInvalidated: total,\n });\n }\n\n /**\n * Get comprehensive cache metrics\n */\n getMetrics() {\n return {\n frame: this.frameCache.getMetrics(),\n event: this.eventCache.getMetrics(),\n anchor: this.anchorCache.getMetrics(),\n digest: this.digestCache.getMetrics(),\n };\n }\n\n /**\n * Cleanup all caches\n */\n cleanup(): void {\n this.frameCache.cleanup();\n this.eventCache.cleanup();\n this.anchorCache.cleanup();\n this.digestCache.cleanup();\n }\n\n /**\n * Clear all caches\n */\n clear(): void {\n this.frameCache.clear();\n this.eventCache.clear();\n this.anchorCache.clear();\n this.digestCache.clear();\n\n logger.info('All StackMemory caches cleared');\n }\n}\n\n// Global cache instance\nlet globalCache: StackMemoryQueryCache | null = null;\n\n/**\n * Get or create global query cache\n */\nexport function getQueryCache(): StackMemoryQueryCache {\n if (!globalCache) {\n globalCache = new StackMemoryQueryCache();\n }\n return globalCache;\n}\n\n/**\n * Create a cache key from query parameters\n */\nexport function createCacheKey(queryName: string, params: any[]): string {\n const paramsStr = params\n .map((p: any) => (typeof p === 'object' ? JSON.stringify(p) : String(p)))\n .join(':');\n\n return `${queryName}:${paramsStr}`;\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/core/database/query-router.ts"],
4
+ "sourcesContent": ["/**\n * Query Router for Tiered Storage\n * Routes database queries to appropriate storage tier based on data age, query type, and performance requirements\n */\n\nimport { DatabaseAdapter } from './database-adapter.js';\nimport type { Frame } from '../context/index.js';\nimport { logger } from '../monitoring/logger.js';\nimport { DatabaseError, ErrorCode } from '../errors/index.js';\nimport { EventEmitter } from 'events';\n\nexport interface StorageTier {\n name: string;\n adapter: DatabaseAdapter;\n priority: number;\n config: TierConfig;\n}\n\nexport interface TierConfig {\n // Data age thresholds\n maxAge?: number; // Data older than this goes to next tier (ms)\n minAge?: number; // Data newer than this stays in this tier (ms)\n\n // Query type preferences\n preferredOperations: string[]; // ['read', 'write', 'search', 'analytics']\n supportedFeatures: string[]; // ['full_text', 'vector', 'aggregation']\n\n // Performance characteristics\n maxLatency?: number; // Max acceptable latency for this tier (ms)\n maxThroughput?: number; // Max queries per second this tier can handle\n\n // Capacity limits\n maxFrames?: number; // Max frames before promoting to next tier\n maxSizeMB?: number; // Max storage size in MB\n\n // Routing rules\n routingRules: RoutingRule[];\n}\n\nexport interface RoutingRule {\n condition: string; // 'age' | 'size' | 'query_type' | 'load' | 'feature'\n operator: string; // '>', '<', '=', '!=', 'in', 'not_in'\n value: any; // Comparison value\n weight: number; // Rule weight (0-1)\n}\n\nexport interface QueryContext {\n queryType: 'read' | 'write' | 'search' | 'analytics' | 'bulk';\n frames?: Frame[];\n frameIds?: string[];\n requiredFeatures?: string[];\n timeRange?: { start: Date; end: Date };\n priority?: 'low' | 'medium' | 'high' | 'critical';\n timeout?: number;\n cacheStrategy?: 'none' | 'read' | 'write' | 'read_write';\n}\n\nexport interface RoutingDecision {\n primaryTier: StorageTier;\n fallbackTiers: StorageTier[];\n rationale: string;\n confidence: number; // 0-1 confidence in decision\n estimatedLatency: number; // Estimated query latency (ms)\n cacheRecommendation?: string;\n}\n\nexport interface QueryMetrics {\n totalQueries: number;\n queriesByTier: Map<string, number>;\n queriesByType: Map<string, number>;\n averageLatency: number;\n latencyByTier: Map<string, number>;\n errorsByTier: Map<string, number>;\n cacheHitRate: number;\n routingDecisions: number;\n}\n\nexport class QueryRouter extends EventEmitter {\n private tiers: Map<string, StorageTier> = new Map();\n private metrics: QueryMetrics;\n private decisionCache: Map<string, RoutingDecision> = new Map();\n private readonly cacheExpiration = 60000; // 1 minute\n private readonly maxCacheSize = 1000;\n\n constructor() {\n super();\n this.metrics = {\n totalQueries: 0,\n queriesByTier: new Map(),\n queriesByType: new Map(),\n averageLatency: 0,\n latencyByTier: new Map(),\n errorsByTier: new Map(),\n cacheHitRate: 0,\n routingDecisions: 0,\n };\n }\n\n /**\n * Register a storage tier with the router\n */\n registerTier(tier: StorageTier): void {\n this.tiers.set(tier.name, tier);\n logger.info(\n `Registered storage tier: ${tier.name} (priority: ${tier.priority})`\n );\n this.emit('tierRegistered', tier);\n }\n\n /**\n * Remove a storage tier from the router\n */\n unregisterTier(tierName: string): void {\n const tier = this.tiers.get(tierName);\n if (tier) {\n this.tiers.delete(tierName);\n logger.info(`Unregistered storage tier: ${tierName}`);\n this.emit('tierUnregistered', tier);\n }\n }\n\n /**\n * Route a query to the most appropriate storage tier\n */\n async route<T>(\n operation: string,\n context: QueryContext,\n executor: (adapter: DatabaseAdapter) => Promise<T>\n ): Promise<T> {\n const startTime = Date.now();\n this.metrics.totalQueries++;\n this.metrics.queriesByType.set(\n context.queryType,\n (this.metrics.queriesByType.get(context.queryType) || 0) + 1\n );\n\n try {\n // Get routing decision\n const decision = await this.makeRoutingDecision(operation, context);\n\n // Try primary tier first\n try {\n const result = await this.executeOnTier(decision.primaryTier, executor);\n this.updateMetrics(decision.primaryTier.name, startTime, true);\n return result;\n } catch (error: unknown) {\n logger.warn(\n `Query failed on primary tier ${decision.primaryTier.name}:`,\n error\n );\n this.updateMetrics(decision.primaryTier.name, startTime, false);\n\n // Try fallback tiers\n for (const fallbackTier of decision.fallbackTiers) {\n try {\n logger.info(`Attempting fallback to tier: ${fallbackTier.name}`);\n const result = await this.executeOnTier(fallbackTier, executor);\n this.updateMetrics(fallbackTier.name, startTime, true);\n return result;\n } catch (fallbackError: unknown) {\n logger.warn(\n `Query failed on fallback tier ${fallbackTier.name}:`,\n fallbackError\n );\n this.updateMetrics(fallbackTier.name, startTime, false);\n }\n }\n\n // If all tiers failed, throw the original error\n throw error;\n }\n } catch (error: unknown) {\n logger.error('Query routing failed:', error);\n this.emit('routingError', { operation, context, error });\n throw error;\n }\n }\n\n /**\n * Make routing decision based on query context\n */\n private async makeRoutingDecision(\n operation: string,\n context: QueryContext\n ): Promise<RoutingDecision> {\n // Check cache first\n const cacheKey = this.generateCacheKey(operation, context);\n const cached = this.decisionCache.get(cacheKey);\n if (cached && Date.now() - cached.estimatedLatency < this.cacheExpiration) {\n this.metrics.cacheHitRate =\n (this.metrics.cacheHitRate * this.metrics.routingDecisions + 1) /\n (this.metrics.routingDecisions + 1);\n return cached;\n }\n\n this.metrics.routingDecisions++;\n\n // Evaluate each tier\n const evaluations: Array<{\n tier: StorageTier;\n score: number;\n rationale: string;\n }> = [];\n\n for (const tier of this.tiers.values()) {\n const score = await this.evaluateTier(tier, operation, context);\n const rationale = this.generateRationale(tier, operation, context, score);\n evaluations.push({ tier, score, rationale });\n }\n\n // Sort by score (highest first)\n evaluations.sort((a, b) => b.score - a.score);\n\n if (evaluations.length === 0) {\n throw new DatabaseError(\n 'No storage tiers available for routing',\n ErrorCode.DB_CONNECTION_FAILED,\n { query: context.query, tiersConfigured: this.tiers.length }\n );\n }\n\n const primaryEval = evaluations[0];\n const fallbackTiers = evaluations\n .slice(1)\n .map((evaluation) => evaluation.tier);\n\n const decision: RoutingDecision = {\n primaryTier: primaryEval.tier,\n fallbackTiers,\n rationale: primaryEval.rationale,\n confidence: primaryEval.score,\n estimatedLatency: this.estimateLatency(\n primaryEval.tier,\n operation,\n context\n ),\n cacheRecommendation: this.recommendCacheStrategy(\n primaryEval.tier,\n context\n ),\n };\n\n // Cache decision\n this.cacheDecision(cacheKey, decision);\n\n logger.debug(\n `Routing decision: ${decision.primaryTier.name} (confidence: ${decision.confidence.toFixed(2)})`\n );\n this.emit('routingDecision', { operation, context, decision });\n\n return decision;\n }\n\n /**\n * Evaluate how well a tier fits the query requirements\n */\n private async evaluateTier(\n tier: StorageTier,\n operation: string,\n context: QueryContext\n ): Promise<number> {\n let score = 0;\n let maxScore = 0;\n\n // Evaluate each routing rule\n for (const rule of tier.config.routingRules) {\n maxScore += rule.weight;\n\n if (this.evaluateRule(rule, operation, context, tier)) {\n score += rule.weight;\n }\n }\n\n // Check operation preference\n if (tier.config.preferredOperations.includes(context.queryType)) {\n score += 0.2;\n maxScore += 0.2;\n }\n\n // Check feature support\n if (context.requiredFeatures) {\n const supportedFeatures = context.requiredFeatures.filter((feature) =>\n tier.config.supportedFeatures.includes(feature)\n );\n if (supportedFeatures.length === context.requiredFeatures.length) {\n score += 0.3;\n }\n maxScore += 0.3;\n }\n\n // Check current load\n const currentLoad = await this.getCurrentLoad(tier);\n if (\n tier.config.maxThroughput &&\n currentLoad < tier.config.maxThroughput * 0.8\n ) {\n score += 0.1;\n }\n maxScore += 0.1;\n\n // Check capacity\n if (await this.isWithinCapacity(tier)) {\n score += 0.1;\n }\n maxScore += 0.1;\n\n return maxScore > 0 ? score / maxScore : 0;\n }\n\n /**\n * Evaluate a single routing rule\n */\n private evaluateRule(\n rule: RoutingRule,\n _operation: string,\n context: QueryContext,\n _tier: StorageTier\n ): boolean {\n let actualValue: any;\n\n switch (rule.condition) {\n case 'age':\n // Check data age if frames are provided\n if (context.frames && context.frames.length > 0) {\n const avgAge =\n context.frames.reduce(\n (sum, frame) => sum + (Date.now() - frame.created_at),\n 0\n ) / context.frames.length;\n actualValue = avgAge;\n } else if (context.timeRange) {\n actualValue = Date.now() - context.timeRange.end.getTime();\n } else {\n return false;\n }\n break;\n\n case 'query_type':\n actualValue = context.queryType;\n break;\n\n case 'feature':\n actualValue = context.requiredFeatures || [];\n break;\n\n case 'priority':\n actualValue = context.priority || 'medium';\n break;\n\n case 'size':\n actualValue = context.frames ? context.frames.length : 0;\n break;\n\n default:\n return false;\n }\n\n return this.compareValues(actualValue, rule.operator, rule.value);\n }\n\n /**\n * Compare values based on operator\n */\n private compareValues(actual: any, operator: string, expected: any): boolean {\n switch (operator) {\n case '>':\n return actual > expected;\n case '<':\n return actual < expected;\n case '=':\n case '==':\n return actual === expected;\n case '!=':\n return actual !== expected;\n case 'in':\n return Array.isArray(expected) && expected.includes(actual);\n case 'not_in':\n return Array.isArray(expected) && !expected.includes(actual);\n case 'contains':\n return (\n Array.isArray(actual) &&\n actual.some((item) => expected.includes(item))\n );\n default:\n return false;\n }\n }\n\n /**\n * Execute query on specific tier\n */\n private async executeOnTier<T>(\n tier: StorageTier,\n executor: (adapter: DatabaseAdapter) => Promise<T>\n ): Promise<T> {\n const startTime = Date.now();\n\n try {\n const result = await executor(tier.adapter);\n const duration = Date.now() - startTime;\n\n logger.debug(`Query executed on tier ${tier.name} in ${duration}ms`);\n this.emit('queryExecuted', {\n tierName: tier.name,\n duration,\n success: true,\n });\n\n return result;\n } catch (error: unknown) {\n const duration = Date.now() - startTime;\n\n logger.error(\n `Query failed on tier ${tier.name} after ${duration}ms:`,\n error\n );\n this.emit('queryExecuted', {\n tierName: tier.name,\n duration,\n success: false,\n error,\n });\n\n throw error;\n }\n }\n\n /**\n * Generate cache key for routing decisions\n */\n private generateCacheKey(operation: string, context: QueryContext): string {\n const keyParts = [\n operation,\n context.queryType,\n context.priority || 'medium',\n (context.requiredFeatures || []).sort().join(','),\n context.timeRange\n ? `${context.timeRange.start.getTime()}-${context.timeRange.end.getTime()}`\n : '',\n ];\n\n return keyParts.join('|');\n }\n\n /**\n * Cache routing decision\n */\n private cacheDecision(key: string, decision: RoutingDecision): void {\n // Implement LRU eviction if cache is full\n if (this.decisionCache.size >= this.maxCacheSize) {\n const firstKey = this.decisionCache.keys().next().value;\n this.decisionCache.delete(firstKey);\n }\n\n this.decisionCache.set(key, decision);\n }\n\n /**\n * Estimate query latency for a tier\n */\n private estimateLatency(\n tier: StorageTier,\n operation: string,\n context: QueryContext\n ): number {\n const baseLatency =\n this.metrics.latencyByTier.get(tier.name) ||\n tier.config.maxLatency ||\n 100;\n\n // Adjust based on operation type\n let multiplier = 1;\n switch (context.queryType) {\n case 'search':\n multiplier = 1.5;\n break;\n case 'analytics':\n multiplier = 2.0;\n break;\n case 'bulk':\n multiplier = 3.0;\n break;\n default:\n multiplier = 1.0;\n }\n\n return baseLatency * multiplier;\n }\n\n /**\n * Recommend cache strategy for the context\n */\n private recommendCacheStrategy(\n tier: StorageTier,\n context: QueryContext\n ): string {\n if (context.cacheStrategy && context.cacheStrategy !== 'none') {\n return context.cacheStrategy;\n }\n\n // Default recommendations based on query type and tier\n if (tier.name === 'hot' || tier.name === 'memory') {\n return 'read_write';\n } else if (context.queryType === 'read') {\n return 'read';\n }\n\n return 'none';\n }\n\n /**\n * Generate human-readable rationale for routing decision\n */\n private generateRationale(\n tier: StorageTier,\n operation: string,\n context: QueryContext,\n score: number\n ): string {\n const reasons = [];\n\n if (tier.config.preferredOperations.includes(context.queryType)) {\n reasons.push(`optimized for ${context.queryType} operations`);\n }\n\n if (\n context.requiredFeatures?.every((feature) =>\n tier.config.supportedFeatures.includes(feature)\n )\n ) {\n reasons.push(\n `supports all required features (${context.requiredFeatures.join(', ')})`\n );\n }\n\n if (score > 0.8) {\n reasons.push('high confidence match');\n } else if (score > 0.6) {\n reasons.push('good match');\n } else if (score > 0.4) {\n reasons.push('acceptable match');\n }\n\n return reasons.length > 0 ? reasons.join(', ') : 'default tier selection';\n }\n\n /**\n * Get current load for a tier\n */\n private async getCurrentLoad(tier: StorageTier): Promise<number> {\n // This would integrate with actual monitoring\n // For now, return a placeholder based on recent queries\n return this.metrics.queriesByTier.get(tier.name) || 0;\n }\n\n /**\n * Check if tier is within capacity limits\n */\n private async isWithinCapacity(tier: StorageTier): Promise<boolean> {\n try {\n const stats = await tier.adapter.getStats();\n\n if (tier.config.maxFrames && stats.totalFrames >= tier.config.maxFrames) {\n return false;\n }\n\n if (\n tier.config.maxSizeMB &&\n stats.diskUsage >= tier.config.maxSizeMB * 1024 * 1024\n ) {\n return false;\n }\n\n return true;\n } catch (error: unknown) {\n logger.warn(`Failed to check capacity for tier ${tier.name}:`, error);\n return true; // Assume capacity is OK if we can't check\n }\n }\n\n /**\n * Update routing metrics\n */\n private updateMetrics(\n tierName: string,\n startTime: number,\n success: boolean\n ): void {\n const duration = Date.now() - startTime;\n\n // Update tier metrics\n this.metrics.queriesByTier.set(\n tierName,\n (this.metrics.queriesByTier.get(tierName) || 0) + 1\n );\n\n if (success) {\n // Update latency\n const currentAvg = this.metrics.latencyByTier.get(tierName) || 0;\n const count = this.metrics.queriesByTier.get(tierName) || 1;\n const newAvg = (currentAvg * (count - 1) + duration) / count;\n this.metrics.latencyByTier.set(tierName, newAvg);\n\n // Update overall average\n this.metrics.averageLatency =\n (this.metrics.averageLatency * (this.metrics.totalQueries - 1) +\n duration) /\n this.metrics.totalQueries;\n } else {\n // Update error count\n this.metrics.errorsByTier.set(\n tierName,\n (this.metrics.errorsByTier.get(tierName) || 0) + 1\n );\n }\n }\n\n /**\n * Get current routing metrics\n */\n getMetrics(): QueryMetrics {\n // Update cache hit rate\n const cacheRequests = this.metrics.routingDecisions;\n const cacheHits = cacheRequests - this.decisionCache.size; // Approximation\n this.metrics.cacheHitRate =\n cacheRequests > 0 ? cacheHits / cacheRequests : 0;\n\n return { ...this.metrics };\n }\n\n /**\n * Get registered tiers\n */\n getTiers(): StorageTier[] {\n return Array.from(this.tiers.values()).sort(\n (a, b) => b.priority - a.priority\n );\n }\n\n /**\n * Clear routing decision cache\n */\n clearCache(): void {\n this.decisionCache.clear();\n logger.info('Routing decision cache cleared');\n }\n\n /**\n * Get tier by name\n */\n getTier(name: string): StorageTier | undefined {\n return this.tiers.get(name);\n }\n}\n"],
5
+ "mappings": ";;;;AAOA,SAAS,cAAc;AACvB,SAAS,eAAe,iBAAiB;AACzC,SAAS,oBAAoB;AAoEtB,MAAM,oBAAoB,aAAa;AAAA,EACpC,QAAkC,oBAAI,IAAI;AAAA,EAC1C;AAAA,EACA,gBAA8C,oBAAI,IAAI;AAAA,EAC7C,kBAAkB;AAAA;AAAA,EAClB,eAAe;AAAA,EAEhC,cAAc;AACZ,UAAM;AACN,SAAK,UAAU;AAAA,MACb,cAAc;AAAA,MACd,eAAe,oBAAI,IAAI;AAAA,MACvB,eAAe,oBAAI,IAAI;AAAA,MACvB,gBAAgB;AAAA,MAChB,eAAe,oBAAI,IAAI;AAAA,MACvB,cAAc,oBAAI,IAAI;AAAA,MACtB,cAAc;AAAA,MACd,kBAAkB;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,aAAa,MAAyB;AACpC,SAAK,MAAM,IAAI,KAAK,MAAM,IAAI;AAC9B,WAAO;AAAA,MACL,4BAA4B,KAAK,IAAI,eAAe,KAAK,QAAQ;AAAA,IACnE;AACA,SAAK,KAAK,kBAAkB,IAAI;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,UAAwB;AACrC,UAAM,OAAO,KAAK,MAAM,IAAI,QAAQ;AACpC,QAAI,MAAM;AACR,WAAK,MAAM,OAAO,QAAQ;AAC1B,aAAO,KAAK,8BAA8B,QAAQ,EAAE;AACpD,WAAK,KAAK,oBAAoB,IAAI;AAAA,IACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,MACJ,WACA,SACA,UACY;AACZ,UAAM,YAAY,KAAK,IAAI;AAC3B,SAAK,QAAQ;AACb,SAAK,QAAQ,cAAc;AAAA,MACzB,QAAQ;AAAA,OACP,KAAK,QAAQ,cAAc,IAAI,QAAQ,SAAS,KAAK,KAAK;AAAA,IAC7D;AAEA,QAAI;AAEF,YAAM,WAAW,MAAM,KAAK,oBAAoB,WAAW,OAAO;AAGlE,UAAI;AACF,cAAM,SAAS,MAAM,KAAK,cAAc,SAAS,aAAa,QAAQ;AACtE,aAAK,cAAc,SAAS,YAAY,MAAM,WAAW,IAAI;AAC7D,eAAO;AAAA,MACT,SAAS,OAAgB;AACvB,eAAO;AAAA,UACL,gCAAgC,SAAS,YAAY,IAAI;AAAA,UACzD;AAAA,QACF;AACA,aAAK,cAAc,SAAS,YAAY,MAAM,WAAW,KAAK;AAG9D,mBAAW,gBAAgB,SAAS,eAAe;AACjD,cAAI;AACF,mBAAO,KAAK,gCAAgC,aAAa,IAAI,EAAE;AAC/D,kBAAM,SAAS,MAAM,KAAK,cAAc,cAAc,QAAQ;AAC9D,iBAAK,cAAc,aAAa,MAAM,WAAW,IAAI;AACrD,mBAAO;AAAA,UACT,SAAS,eAAwB;AAC/B,mBAAO;AAAA,cACL,iCAAiC,aAAa,IAAI;AAAA,cAClD;AAAA,YACF;AACA,iBAAK,cAAc,aAAa,MAAM,WAAW,KAAK;AAAA,UACxD;AAAA,QACF;AAGA,cAAM;AAAA,MACR;AAAA,IACF,SAAS,OAAgB;AACvB,aAAO,MAAM,yBAAyB,KAAK;AAC3C,WAAK,KAAK,gBAAgB,EAAE,WAAW,SAAS,MAAM,CAAC;AACvD,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,oBACZ,WACA,SAC0B;AAE1B,UAAM,WAAW,KAAK,iBAAiB,WAAW,OAAO;AACzD,UAAM,SAAS,KAAK,cAAc,IAAI,QAAQ;AAC9C,QAAI,UAAU,KAAK,IAAI,IAAI,OAAO,mBAAmB,KAAK,iBAAiB;AACzE,WAAK,QAAQ,gBACV,KAAK,QAAQ,eAAe,KAAK,QAAQ,mBAAmB,MAC5D,KAAK,QAAQ,mBAAmB;AACnC,aAAO;AAAA,IACT;AAEA,SAAK,QAAQ;AAGb,UAAM,cAID,CAAC;AAEN,eAAW,QAAQ,KAAK,MAAM,OAAO,GAAG;AACtC,YAAM,QAAQ,MAAM,KAAK,aAAa,MAAM,WAAW,OAAO;AAC9D,YAAM,YAAY,KAAK,kBAAkB,MAAM,WAAW,SAAS,KAAK;AACxE,kBAAY,KAAK,EAAE,MAAM,OAAO,UAAU,CAAC;AAAA,IAC7C;AAGA,gBAAY,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAE5C,QAAI,YAAY,WAAW,GAAG;AAC5B,YAAM,IAAI;AAAA,QACR;AAAA,QACA,UAAU;AAAA,QACV,EAAE,OAAO,QAAQ,OAAO,iBAAiB,KAAK,MAAM,OAAO;AAAA,MAC7D;AAAA,IACF;AAEA,UAAM,cAAc,YAAY,CAAC;AACjC,UAAM,gBAAgB,YACnB,MAAM,CAAC,EACP,IAAI,CAAC,eAAe,WAAW,IAAI;AAEtC,UAAM,WAA4B;AAAA,MAChC,aAAa,YAAY;AAAA,MACzB;AAAA,MACA,WAAW,YAAY;AAAA,MACvB,YAAY,YAAY;AAAA,MACxB,kBAAkB,KAAK;AAAA,QACrB,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,MACF;AAAA,MACA,qBAAqB,KAAK;AAAA,QACxB,YAAY;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAGA,SAAK,cAAc,UAAU,QAAQ;AAErC,WAAO;AAAA,MACL,qBAAqB,SAAS,YAAY,IAAI,iBAAiB,SAAS,WAAW,QAAQ,CAAC,CAAC;AAAA,IAC/F;AACA,SAAK,KAAK,mBAAmB,EAAE,WAAW,SAAS,SAAS,CAAC;AAE7D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,aACZ,MACA,WACA,SACiB;AACjB,QAAI,QAAQ;AACZ,QAAI,WAAW;AAGf,eAAW,QAAQ,KAAK,OAAO,cAAc;AAC3C,kBAAY,KAAK;AAEjB,UAAI,KAAK,aAAa,MAAM,WAAW,SAAS,IAAI,GAAG;AACrD,iBAAS,KAAK;AAAA,MAChB;AAAA,IACF;AAGA,QAAI,KAAK,OAAO,oBAAoB,SAAS,QAAQ,SAAS,GAAG;AAC/D,eAAS;AACT,kBAAY;AAAA,IACd;AAGA,QAAI,QAAQ,kBAAkB;AAC5B,YAAM,oBAAoB,QAAQ,iBAAiB;AAAA,QAAO,CAAC,YACzD,KAAK,OAAO,kBAAkB,SAAS,OAAO;AAAA,MAChD;AACA,UAAI,kBAAkB,WAAW,QAAQ,iBAAiB,QAAQ;AAChE,iBAAS;AAAA,MACX;AACA,kBAAY;AAAA,IACd;AAGA,UAAM,cAAc,MAAM,KAAK,eAAe,IAAI;AAClD,QACE,KAAK,OAAO,iBACZ,cAAc,KAAK,OAAO,gBAAgB,KAC1C;AACA,eAAS;AAAA,IACX;AACA,gBAAY;AAGZ,QAAI,MAAM,KAAK,iBAAiB,IAAI,GAAG;AACrC,eAAS;AAAA,IACX;AACA,gBAAY;AAEZ,WAAO,WAAW,IAAI,QAAQ,WAAW;AAAA,EAC3C;AAAA;AAAA;AAAA;AAAA,EAKQ,aACN,MACA,YACA,SACA,OACS;AACT,QAAI;AAEJ,YAAQ,KAAK,WAAW;AAAA,MACtB,KAAK;AAEH,YAAI,QAAQ,UAAU,QAAQ,OAAO,SAAS,GAAG;AAC/C,gBAAM,SACJ,QAAQ,OAAO;AAAA,YACb,CAAC,KAAK,UAAU,OAAO,KAAK,IAAI,IAAI,MAAM;AAAA,YAC1C;AAAA,UACF,IAAI,QAAQ,OAAO;AACrB,wBAAc;AAAA,QAChB,WAAW,QAAQ,WAAW;AAC5B,wBAAc,KAAK,IAAI,IAAI,QAAQ,UAAU,IAAI,QAAQ;AAAA,QAC3D,OAAO;AACL,iBAAO;AAAA,QACT;AACA;AAAA,MAEF,KAAK;AACH,sBAAc,QAAQ;AACtB;AAAA,MAEF,KAAK;AACH,sBAAc,QAAQ,oBAAoB,CAAC;AAC3C;AAAA,MAEF,KAAK;AACH,sBAAc,QAAQ,YAAY;AAClC;AAAA,MAEF,KAAK;AACH,sBAAc,QAAQ,SAAS,QAAQ,OAAO,SAAS;AACvD;AAAA,MAEF;AACE,eAAO;AAAA,IACX;AAEA,WAAO,KAAK,cAAc,aAAa,KAAK,UAAU,KAAK,KAAK;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc,QAAa,UAAkB,UAAwB;AAC3E,YAAQ,UAAU;AAAA,MAChB,KAAK;AACH,eAAO,SAAS;AAAA,MAClB,KAAK;AACH,eAAO,SAAS;AAAA,MAClB,KAAK;AAAA,MACL,KAAK;AACH,eAAO,WAAW;AAAA,MACpB,KAAK;AACH,eAAO,WAAW;AAAA,MACpB,KAAK;AACH,eAAO,MAAM,QAAQ,QAAQ,KAAK,SAAS,SAAS,MAAM;AAAA,MAC5D,KAAK;AACH,eAAO,MAAM,QAAQ,QAAQ,KAAK,CAAC,SAAS,SAAS,MAAM;AAAA,MAC7D,KAAK;AACH,eACE,MAAM,QAAQ,MAAM,KACpB,OAAO,KAAK,CAAC,SAAS,SAAS,SAAS,IAAI,CAAC;AAAA,MAEjD;AACE,eAAO;AAAA,IACX;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,cACZ,MACA,UACY;AACZ,UAAM,YAAY,KAAK,IAAI;AAE3B,QAAI;AACF,YAAM,SAAS,MAAM,SAAS,KAAK,OAAO;AAC1C,YAAM,WAAW,KAAK,IAAI,IAAI;AAE9B,aAAO,MAAM,0BAA0B,KAAK,IAAI,OAAO,QAAQ,IAAI;AACnE,WAAK,KAAK,iBAAiB;AAAA,QACzB,UAAU,KAAK;AAAA,QACf;AAAA,QACA,SAAS;AAAA,MACX,CAAC;AAED,aAAO;AAAA,IACT,SAAS,OAAgB;AACvB,YAAM,WAAW,KAAK,IAAI,IAAI;AAE9B,aAAO;AAAA,QACL,wBAAwB,KAAK,IAAI,UAAU,QAAQ;AAAA,QACnD;AAAA,MACF;AACA,WAAK,KAAK,iBAAiB;AAAA,QACzB,UAAU,KAAK;AAAA,QACf;AAAA,QACA,SAAS;AAAA,QACT;AAAA,MACF,CAAC;AAED,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,iBAAiB,WAAmB,SAA+B;AACzE,UAAM,WAAW;AAAA,MACf;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ,YAAY;AAAA,OACnB,QAAQ,oBAAoB,CAAC,GAAG,KAAK,EAAE,KAAK,GAAG;AAAA,MAChD,QAAQ,YACJ,GAAG,QAAQ,UAAU,MAAM,QAAQ,CAAC,IAAI,QAAQ,UAAU,IAAI,QAAQ,CAAC,KACvE;AAAA,IACN;AAEA,WAAO,SAAS,KAAK,GAAG;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA,EAKQ,cAAc,KAAa,UAAiC;AAElE,QAAI,KAAK,cAAc,QAAQ,KAAK,cAAc;AAChD,YAAM,WAAW,KAAK,cAAc,KAAK,EAAE,KAAK,EAAE;AAClD,WAAK,cAAc,OAAO,QAAQ;AAAA,IACpC;AAEA,SAAK,cAAc,IAAI,KAAK,QAAQ;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAKQ,gBACN,MACA,WACA,SACQ;AACR,UAAM,cACJ,KAAK,QAAQ,cAAc,IAAI,KAAK,IAAI,KACxC,KAAK,OAAO,cACZ;AAGF,QAAI,aAAa;AACjB,YAAQ,QAAQ,WAAW;AAAA,MACzB,KAAK;AACH,qBAAa;AACb;AAAA,MACF,KAAK;AACH,qBAAa;AACb;AAAA,MACF,KAAK;AACH,qBAAa;AACb;AAAA,MACF;AACE,qBAAa;AAAA,IACjB;AAEA,WAAO,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKQ,uBACN,MACA,SACQ;AACR,QAAI,QAAQ,iBAAiB,QAAQ,kBAAkB,QAAQ;AAC7D,aAAO,QAAQ;AAAA,IACjB;AAGA,QAAI,KAAK,SAAS,SAAS,KAAK,SAAS,UAAU;AACjD,aAAO;AAAA,IACT,WAAW,QAAQ,cAAc,QAAQ;AACvC,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,kBACN,MACA,WACA,SACA,OACQ;AACR,UAAM,UAAU,CAAC;AAEjB,QAAI,KAAK,OAAO,oBAAoB,SAAS,QAAQ,SAAS,GAAG;AAC/D,cAAQ,KAAK,iBAAiB,QAAQ,SAAS,aAAa;AAAA,IAC9D;AAEA,QACE,QAAQ,kBAAkB;AAAA,MAAM,CAAC,YAC/B,KAAK,OAAO,kBAAkB,SAAS,OAAO;AAAA,IAChD,GACA;AACA,cAAQ;AAAA,QACN,mCAAmC,QAAQ,iBAAiB,KAAK,IAAI,CAAC;AAAA,MACxE;AAAA,IACF;AAEA,QAAI,QAAQ,KAAK;AACf,cAAQ,KAAK,uBAAuB;AAAA,IACtC,WAAW,QAAQ,KAAK;AACtB,cAAQ,KAAK,YAAY;AAAA,IAC3B,WAAW,QAAQ,KAAK;AACtB,cAAQ,KAAK,kBAAkB;AAAA,IACjC;AAEA,WAAO,QAAQ,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI;AAAA,EACnD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,eAAe,MAAoC;AAG/D,WAAO,KAAK,QAAQ,cAAc,IAAI,KAAK,IAAI,KAAK;AAAA,EACtD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAc,iBAAiB,MAAqC;AAClE,QAAI;AACF,YAAM,QAAQ,MAAM,KAAK,QAAQ,SAAS;AAE1C,UAAI,KAAK,OAAO,aAAa,MAAM,eAAe,KAAK,OAAO,WAAW;AACvE,eAAO;AAAA,MACT;AAEA,UACE,KAAK,OAAO,aACZ,MAAM,aAAa,KAAK,OAAO,YAAY,OAAO,MAClD;AACA,eAAO;AAAA,MACT;AAEA,aAAO;AAAA,IACT,SAAS,OAAgB;AACvB,aAAO,KAAK,qCAAqC,KAAK,IAAI,KAAK,KAAK;AACpE,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,cACN,UACA,WACA,SACM;AACN,UAAM,WAAW,KAAK,IAAI,IAAI;AAG9B,SAAK,QAAQ,cAAc;AAAA,MACzB;AAAA,OACC,KAAK,QAAQ,cAAc,IAAI,QAAQ,KAAK,KAAK;AAAA,IACpD;AAEA,QAAI,SAAS;AAEX,YAAM,aAAa,KAAK,QAAQ,cAAc,IAAI,QAAQ,KAAK;AAC/D,YAAM,QAAQ,KAAK,QAAQ,cAAc,IAAI,QAAQ,KAAK;AAC1D,YAAM,UAAU,cAAc,QAAQ,KAAK,YAAY;AACvD,WAAK,QAAQ,cAAc,IAAI,UAAU,MAAM;AAG/C,WAAK,QAAQ,kBACV,KAAK,QAAQ,kBAAkB,KAAK,QAAQ,eAAe,KAC1D,YACF,KAAK,QAAQ;AAAA,IACjB,OAAO;AAEL,WAAK,QAAQ,aAAa;AAAA,QACxB;AAAA,SACC,KAAK,QAAQ,aAAa,IAAI,QAAQ,KAAK,KAAK;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,aAA2B;AAEzB,UAAM,gBAAgB,KAAK,QAAQ;AACnC,UAAM,YAAY,gBAAgB,KAAK,cAAc;AACrD,SAAK,QAAQ,eACX,gBAAgB,IAAI,YAAY,gBAAgB;AAElD,WAAO,EAAE,GAAG,KAAK,QAAQ;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA,EAKA,WAA0B;AACxB,WAAO,MAAM,KAAK,KAAK,MAAM,OAAO,CAAC,EAAE;AAAA,MACrC,CAAC,GAAG,MAAM,EAAE,WAAW,EAAE;AAAA,IAC3B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,aAAmB;AACjB,SAAK,cAAc,MAAM;AACzB,WAAO,KAAK,gCAAgC;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,QAAQ,MAAuC;AAC7C,WAAO,KAAK,MAAM,IAAI,IAAI;AAAA,EAC5B;AACF;",
6
+ "names": []
7
+ }