@stackmemoryai/stackmemory 0.2.8 → 0.3.0

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 (608) hide show
  1. package/dist/agents/core/agent-task-manager.js +512 -0
  2. package/dist/agents/core/agent-task-manager.js.map +7 -0
  3. package/dist/agents/verifiers/base-verifier.js +129 -0
  4. package/dist/agents/verifiers/base-verifier.js.map +7 -0
  5. package/dist/agents/verifiers/formatter-verifier.js +126 -0
  6. package/dist/agents/verifiers/formatter-verifier.js.map +7 -0
  7. package/dist/agents/verifiers/llm-judge.js +248 -0
  8. package/dist/agents/verifiers/llm-judge.js.map +7 -0
  9. package/dist/cli/__tests__/index.test.js +290 -0
  10. package/dist/cli/__tests__/index.test.js.map +7 -0
  11. package/dist/cli/auto-detect.js +317 -0
  12. package/dist/cli/auto-detect.js.map +7 -0
  13. package/dist/cli/browser-test.js +29 -0
  14. package/dist/cli/browser-test.js.map +7 -0
  15. package/dist/cli/claude-sm.js +369 -0
  16. package/dist/cli/claude-sm.js.map +7 -0
  17. package/dist/cli/codex-sm.js +283 -0
  18. package/dist/cli/codex-sm.js.map +7 -0
  19. package/dist/cli/commands/agent.js +286 -0
  20. package/dist/cli/commands/agent.js.map +7 -0
  21. package/dist/cli/commands/config.js +199 -0
  22. package/dist/cli/commands/config.js.map +7 -0
  23. package/dist/cli/commands/context.js +327 -0
  24. package/dist/cli/commands/context.js.map +7 -0
  25. package/dist/cli/commands/handoff.js +191 -0
  26. package/dist/cli/commands/handoff.js.map +7 -0
  27. package/dist/cli/commands/linear-test.js +115 -0
  28. package/dist/cli/commands/linear-test.js.map +7 -0
  29. package/dist/cli/commands/linear.js +378 -0
  30. package/dist/cli/commands/linear.js.map +7 -0
  31. package/dist/cli/commands/log.js +165 -0
  32. package/dist/cli/commands/log.js.map +7 -0
  33. package/dist/cli/commands/onboard.js +349 -0
  34. package/dist/cli/commands/onboard.js.map +7 -0
  35. package/dist/cli/commands/projects.js +195 -0
  36. package/dist/cli/commands/projects.js.map +7 -0
  37. package/dist/cli/commands/search.js +152 -0
  38. package/dist/cli/commands/search.js.map +7 -0
  39. package/dist/cli/commands/session.js +179 -0
  40. package/dist/cli/commands/session.js.map +7 -0
  41. package/dist/cli/commands/tasks.js +205 -0
  42. package/dist/cli/commands/tasks.js.map +7 -0
  43. package/dist/cli/commands/webhook.js +131 -0
  44. package/dist/cli/commands/webhook.js.map +7 -0
  45. package/dist/cli/commands/worktree.js +276 -0
  46. package/dist/cli/commands/worktree.js.map +7 -0
  47. package/dist/cli/index.js +953 -0
  48. package/dist/cli/index.js.map +7 -0
  49. package/dist/cli/utils/viewer.js +92 -0
  50. package/dist/cli/utils/viewer.js.map +7 -0
  51. package/dist/core/config/__tests__/config-manager.test.js +248 -0
  52. package/dist/core/config/__tests__/config-manager.test.js.map +7 -0
  53. package/dist/core/config/config-manager.js +368 -0
  54. package/dist/core/config/config-manager.js.map +7 -0
  55. package/dist/core/config/types.js +140 -0
  56. package/dist/core/config/types.js.map +7 -0
  57. package/dist/core/context/__tests__/frame-manager.test.js +879 -0
  58. package/dist/core/context/__tests__/frame-manager.test.js.map +7 -0
  59. package/dist/core/context/auto-context.js +72 -0
  60. package/dist/core/context/auto-context.js.map +7 -0
  61. package/dist/core/context/compaction-handler.js +326 -0
  62. package/dist/core/context/compaction-handler.js.map +7 -0
  63. package/dist/core/context/frame-database.js +376 -0
  64. package/dist/core/context/frame-database.js.map +7 -0
  65. package/dist/core/context/frame-digest.js +239 -0
  66. package/dist/core/context/frame-digest.js.map +7 -0
  67. package/dist/core/context/frame-manager.js +682 -0
  68. package/dist/core/context/frame-manager.js.map +7 -0
  69. package/dist/core/context/frame-stack.js +270 -0
  70. package/dist/core/context/frame-stack.js.map +7 -0
  71. package/dist/core/context/frame-types.js +1 -0
  72. package/dist/core/context/frame-types.js.map +7 -0
  73. package/dist/core/context/index.js +33 -0
  74. package/dist/core/context/index.js.map +7 -0
  75. package/dist/core/context/model-aware-compaction.js +619 -0
  76. package/dist/core/context/model-aware-compaction.js.map +7 -0
  77. package/dist/core/context/refactored-frame-manager.js +393 -0
  78. package/dist/core/context/refactored-frame-manager.js.map +7 -0
  79. package/dist/core/database/batch-operations.js +329 -0
  80. package/dist/core/database/batch-operations.js.map +7 -0
  81. package/dist/core/database/connection-pool.js +224 -0
  82. package/dist/core/database/connection-pool.js.map +7 -0
  83. package/dist/core/database/query-cache.js +284 -0
  84. package/dist/core/database/query-cache.js.map +7 -0
  85. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +379 -0
  86. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +7 -0
  87. package/dist/core/digest/__tests__/frame-digest-integration.test.js +230 -0
  88. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +7 -0
  89. package/dist/core/digest/enhanced-hybrid-digest.js +267 -0
  90. package/dist/core/digest/enhanced-hybrid-digest.js.map +7 -0
  91. package/dist/core/digest/frame-digest-integration.js +172 -0
  92. package/dist/core/digest/frame-digest-integration.js.map +7 -0
  93. package/dist/core/digest/hybrid-digest-generator.js +549 -0
  94. package/dist/core/digest/hybrid-digest-generator.js.map +7 -0
  95. package/dist/core/digest/index.js +5 -0
  96. package/dist/core/digest/index.js.map +7 -0
  97. package/dist/core/digest/types.js +21 -0
  98. package/dist/core/digest/types.js.map +7 -0
  99. package/dist/core/errors/__tests__/error-handling.test.js +270 -0
  100. package/dist/core/errors/__tests__/error-handling.test.js.map +7 -0
  101. package/dist/core/errors/index.js +239 -0
  102. package/dist/core/errors/index.js.map +7 -0
  103. package/dist/core/errors/recovery.js +258 -0
  104. package/dist/core/errors/recovery.js.map +7 -0
  105. package/dist/core/merge/__tests__/conflict-scenarios.test.js +414 -0
  106. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +7 -0
  107. package/dist/core/merge/conflict-detector.js +424 -0
  108. package/dist/core/merge/conflict-detector.js.map +7 -0
  109. package/dist/core/merge/index.js +5 -0
  110. package/dist/core/merge/index.js.map +7 -0
  111. package/dist/core/merge/resolution-engine.js +565 -0
  112. package/dist/core/merge/resolution-engine.js.map +7 -0
  113. package/dist/core/merge/stack-diff.js +528 -0
  114. package/dist/core/merge/stack-diff.js.map +7 -0
  115. package/dist/core/merge/types.js +1 -0
  116. package/dist/core/merge/types.js.map +7 -0
  117. package/dist/core/monitoring/error-handler.js +278 -0
  118. package/dist/core/monitoring/error-handler.js.map +7 -0
  119. package/dist/core/monitoring/logger.js +115 -0
  120. package/dist/core/monitoring/logger.js.map +7 -0
  121. package/dist/core/monitoring/metrics.js +157 -0
  122. package/dist/core/monitoring/metrics.js.map +7 -0
  123. package/dist/core/monitoring/progress-tracker.js +174 -0
  124. package/dist/core/monitoring/progress-tracker.js.map +7 -0
  125. package/dist/core/performance/context-cache.js +269 -0
  126. package/dist/core/performance/context-cache.js.map +7 -0
  127. package/dist/core/performance/index.js +7 -0
  128. package/dist/core/performance/index.js.map +7 -0
  129. package/dist/core/performance/lazy-context-loader.js +319 -0
  130. package/dist/core/performance/lazy-context-loader.js.map +7 -0
  131. package/dist/core/performance/monitor.js +217 -0
  132. package/dist/core/performance/monitor.js.map +7 -0
  133. package/dist/core/performance/optimized-frame-context.js +326 -0
  134. package/dist/core/performance/optimized-frame-context.js.map +7 -0
  135. package/dist/core/performance/performance-benchmark.js +269 -0
  136. package/dist/core/performance/performance-benchmark.js.map +7 -0
  137. package/dist/core/performance/performance-profiler.js +318 -0
  138. package/dist/core/performance/performance-profiler.js.map +7 -0
  139. package/dist/core/performance/streaming-jsonl-parser.js +187 -0
  140. package/dist/core/performance/streaming-jsonl-parser.js.map +7 -0
  141. package/dist/core/persistence/postgres-adapter.js +345 -0
  142. package/dist/core/persistence/postgres-adapter.js.map +7 -0
  143. package/dist/core/projects/project-manager.js +699 -0
  144. package/dist/core/projects/project-manager.js.map +7 -0
  145. package/dist/core/query/__tests__/query-parser.test.js +301 -0
  146. package/dist/core/query/__tests__/query-parser.test.js.map +7 -0
  147. package/dist/core/query/__tests__/query-templates.test.js +210 -0
  148. package/dist/core/query/__tests__/query-templates.test.js.map +7 -0
  149. package/dist/core/query/query-parser.js +366 -0
  150. package/dist/core/query/query-parser.js.map +7 -0
  151. package/dist/core/query/query-templates.js +317 -0
  152. package/dist/core/query/query-templates.js.map +7 -0
  153. package/dist/core/retrieval/index.js +4 -0
  154. package/dist/core/retrieval/index.js.map +7 -0
  155. package/dist/core/retrieval/llm-context-retrieval.js +577 -0
  156. package/dist/core/retrieval/llm-context-retrieval.js.map +7 -0
  157. package/dist/core/retrieval/summary-generator.js +585 -0
  158. package/dist/core/retrieval/summary-generator.js.map +7 -0
  159. package/dist/core/retrieval/types.js +17 -0
  160. package/dist/core/retrieval/types.js.map +7 -0
  161. package/dist/core/session/index.js +11 -0
  162. package/dist/core/session/index.js.map +7 -0
  163. package/dist/core/session/session-manager.js +297 -0
  164. package/dist/core/session/session-manager.js.map +7 -0
  165. package/dist/core/trace/cli-trace-wrapper.js +110 -0
  166. package/dist/core/trace/cli-trace-wrapper.js.map +7 -0
  167. package/dist/core/trace/db-trace-wrapper.js +215 -0
  168. package/dist/core/trace/db-trace-wrapper.js.map +7 -0
  169. package/dist/core/trace/debug-trace.js +385 -0
  170. package/dist/core/trace/debug-trace.js.map +7 -0
  171. package/dist/core/trace/index.js +158 -0
  172. package/dist/core/trace/index.js.map +7 -0
  173. package/dist/core/trace/linear-api-wrapper.js +169 -0
  174. package/dist/core/trace/linear-api-wrapper.js.map +7 -0
  175. package/dist/core/trace/trace-demo.js +135 -0
  176. package/dist/core/trace/trace-demo.js.map +7 -0
  177. package/dist/core/trace/trace-detector.demo.js +138 -0
  178. package/dist/core/trace/trace-detector.demo.js.map +7 -0
  179. package/dist/core/trace/trace-detector.js +386 -0
  180. package/dist/core/trace/trace-detector.js.map +7 -0
  181. package/dist/core/trace/trace-detector.test.js +401 -0
  182. package/dist/core/trace/trace-detector.test.js.map +7 -0
  183. package/dist/core/trace/trace-store.js +341 -0
  184. package/dist/core/trace/trace-store.js.map +7 -0
  185. package/dist/core/trace/types.js +73 -0
  186. package/dist/core/trace/types.js.map +7 -0
  187. package/dist/core/types.js +1 -0
  188. package/dist/core/types.js.map +7 -0
  189. package/dist/core/utils/update-checker.js +214 -0
  190. package/dist/core/utils/update-checker.js.map +7 -0
  191. package/dist/core/worktree/worktree-manager.js +450 -0
  192. package/dist/core/worktree/worktree-manager.js.map +7 -0
  193. package/dist/features/analytics/api/analytics-api.js +283 -0
  194. package/dist/features/analytics/api/analytics-api.js.map +7 -0
  195. package/dist/features/analytics/core/analytics-service.js +267 -0
  196. package/dist/features/analytics/core/analytics-service.js.map +7 -0
  197. package/dist/features/analytics/index.js +14 -0
  198. package/dist/features/analytics/index.js.map +7 -0
  199. package/dist/features/analytics/queries/metrics-queries.js +273 -0
  200. package/dist/features/analytics/queries/metrics-queries.js.map +7 -0
  201. package/dist/features/analytics/types/metrics.js +1 -0
  202. package/dist/features/analytics/types/metrics.js.map +7 -0
  203. package/dist/features/browser/browser-mcp.js +488 -0
  204. package/dist/features/browser/browser-mcp.js.map +7 -0
  205. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +747 -0
  206. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +7 -0
  207. package/dist/features/tasks/pebbles-task-store.js +647 -0
  208. package/dist/features/tasks/pebbles-task-store.js.map +7 -0
  209. package/dist/features/tasks/task-aware-context.js +406 -0
  210. package/dist/features/tasks/task-aware-context.js.map +7 -0
  211. package/dist/index.js +21 -0
  212. package/dist/index.js.map +7 -0
  213. package/dist/integrations/linear/__tests__/auth.test.js +558 -0
  214. package/dist/integrations/linear/__tests__/auth.test.js.map +7 -0
  215. package/dist/integrations/linear/__tests__/sync-service.test.js +760 -0
  216. package/dist/integrations/linear/__tests__/sync-service.test.js.map +7 -0
  217. package/dist/integrations/linear/auth.js +308 -0
  218. package/dist/integrations/linear/auth.js.map +7 -0
  219. package/dist/integrations/linear/auto-sync.js +244 -0
  220. package/dist/integrations/linear/auto-sync.js.map +7 -0
  221. package/dist/integrations/linear/client.js +448 -0
  222. package/dist/integrations/linear/client.js.map +7 -0
  223. package/dist/integrations/linear/config.js +115 -0
  224. package/dist/integrations/linear/config.js.map +7 -0
  225. package/dist/integrations/linear/sync-manager.js +233 -0
  226. package/dist/integrations/linear/sync-manager.js.map +7 -0
  227. package/dist/integrations/linear/sync-service.js +214 -0
  228. package/dist/integrations/linear/sync-service.js.map +7 -0
  229. package/dist/integrations/linear/sync.js +565 -0
  230. package/dist/integrations/linear/sync.js.map +7 -0
  231. package/dist/integrations/linear/types.js +1 -0
  232. package/dist/integrations/linear/types.js.map +7 -0
  233. package/dist/integrations/linear/webhook-server.js +204 -0
  234. package/dist/integrations/linear/webhook-server.js.map +7 -0
  235. package/dist/integrations/linear/webhook.js +269 -0
  236. package/dist/integrations/linear/webhook.js.map +7 -0
  237. package/dist/integrations/mcp/__tests__/server.test.js +798 -0
  238. package/dist/integrations/mcp/__tests__/server.test.js.map +7 -0
  239. package/dist/integrations/mcp/handlers/context-handlers.js +253 -0
  240. package/dist/integrations/mcp/handlers/context-handlers.js.map +7 -0
  241. package/dist/integrations/mcp/handlers/index.js +134 -0
  242. package/dist/integrations/mcp/handlers/index.js.map +7 -0
  243. package/dist/integrations/mcp/handlers/linear-handlers.js +243 -0
  244. package/dist/integrations/mcp/handlers/linear-handlers.js.map +7 -0
  245. package/dist/integrations/mcp/handlers/task-handlers.js +235 -0
  246. package/dist/integrations/mcp/handlers/task-handlers.js.map +7 -0
  247. package/dist/integrations/mcp/handlers/trace-handlers.js +304 -0
  248. package/dist/integrations/mcp/handlers/trace-handlers.js.map +7 -0
  249. package/dist/integrations/mcp/index.js +19 -0
  250. package/dist/integrations/mcp/index.js.map +7 -0
  251. package/dist/integrations/mcp/refactored-server.js +331 -0
  252. package/dist/integrations/mcp/refactored-server.js.map +7 -0
  253. package/dist/integrations/mcp/server.js +1621 -0
  254. package/dist/integrations/mcp/server.js.map +7 -0
  255. package/dist/integrations/mcp/tool-definitions.js +562 -0
  256. package/dist/integrations/mcp/tool-definitions.js.map +7 -0
  257. package/dist/integrations/mcp/trace-test.js +44 -0
  258. package/dist/integrations/mcp/trace-test.js.map +7 -0
  259. package/dist/integrations/pg-aiguide/embedding-provider.js +174 -0
  260. package/dist/integrations/pg-aiguide/embedding-provider.js.map +7 -0
  261. package/dist/integrations/pg-aiguide/semantic-search.js +183 -0
  262. package/dist/integrations/pg-aiguide/semantic-search.js.map +7 -0
  263. package/dist/integrations/pg-aiguide/timescale-analytics.js +220 -0
  264. package/dist/integrations/pg-aiguide/timescale-analytics.js.map +7 -0
  265. package/dist/mcp/stackmemory-mcp-server.js +550 -0
  266. package/dist/mcp/stackmemory-mcp-server.js.map +7 -0
  267. package/dist/middleware/exponential-rate-limiter.js +285 -0
  268. package/dist/middleware/exponential-rate-limiter.js.map +7 -0
  269. package/dist/models/user.model.js +351 -0
  270. package/dist/models/user.model.js.map +7 -0
  271. package/dist/scripts/benchmark-performance.d.ts +7 -0
  272. package/dist/scripts/benchmark-performance.d.ts.map +1 -0
  273. package/dist/scripts/benchmark-performance.js +44 -0
  274. package/dist/scripts/benchmark-performance.js.map +1 -0
  275. package/dist/scripts/cleanup-duplicate-tasks.d.ts +12 -0
  276. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +1 -0
  277. package/dist/scripts/cleanup-duplicate-tasks.js +215 -0
  278. package/dist/scripts/cleanup-duplicate-tasks.js.map +1 -0
  279. package/dist/servers/production/auth-middleware.js +513 -0
  280. package/dist/servers/production/auth-middleware.js.map +7 -0
  281. package/dist/servers/railway/index.js +390 -0
  282. package/dist/servers/railway/index.js.map +7 -0
  283. package/dist/services/config-service.js +62 -0
  284. package/dist/services/config-service.js.map +7 -0
  285. package/dist/services/context-service.js +191 -0
  286. package/dist/services/context-service.js.map +7 -0
  287. package/dist/src/agents/core/agent-task-manager.d.ts +154 -0
  288. package/dist/src/agents/core/agent-task-manager.d.ts.map +1 -0
  289. package/dist/src/agents/core/agent-task-manager.js +504 -0
  290. package/dist/src/agents/core/agent-task-manager.js.map +1 -0
  291. package/dist/src/agents/verifiers/base-verifier.d.ts +112 -0
  292. package/dist/src/agents/verifiers/base-verifier.d.ts.map +1 -0
  293. package/dist/src/agents/verifiers/base-verifier.js +130 -0
  294. package/dist/src/agents/verifiers/base-verifier.js.map +1 -0
  295. package/dist/src/agents/verifiers/formatter-verifier.d.ts +14 -0
  296. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +1 -0
  297. package/dist/src/agents/verifiers/formatter-verifier.js +107 -0
  298. package/dist/src/agents/verifiers/formatter-verifier.js.map +1 -0
  299. package/dist/src/agents/verifiers/llm-judge.d.ts +46 -0
  300. package/dist/src/agents/verifiers/llm-judge.d.ts.map +1 -0
  301. package/dist/src/agents/verifiers/llm-judge.js +248 -0
  302. package/dist/src/agents/verifiers/llm-judge.js.map +1 -0
  303. package/dist/src/cli/claude-sm.js +55 -0
  304. package/dist/src/cli/claude-sm.js.map +1 -1
  305. package/dist/src/cli/commands/agent.d.ts +9 -0
  306. package/dist/src/cli/commands/agent.d.ts.map +1 -0
  307. package/dist/src/cli/commands/agent.js +303 -0
  308. package/dist/src/cli/commands/agent.js.map +1 -0
  309. package/dist/src/cli/commands/handoff.d.ts +6 -0
  310. package/dist/src/cli/commands/handoff.d.ts.map +1 -0
  311. package/dist/src/cli/commands/handoff.js +212 -0
  312. package/dist/src/cli/commands/handoff.js.map +1 -0
  313. package/dist/src/cli/index.d.ts.map +1 -1
  314. package/dist/src/cli/index.js +4 -0
  315. package/dist/src/cli/index.js.map +1 -1
  316. package/dist/src/core/context/compaction-handler.d.ts.map +1 -1
  317. package/dist/src/core/context/compaction-handler.js +1 -1
  318. package/dist/src/core/context/compaction-handler.js.map +1 -1
  319. package/dist/src/core/context/frame-database.d.ts +59 -0
  320. package/dist/src/core/context/frame-database.d.ts.map +1 -0
  321. package/dist/src/core/context/frame-database.js +333 -0
  322. package/dist/src/core/context/frame-database.js.map +1 -0
  323. package/dist/src/core/context/frame-digest.d.ts +59 -0
  324. package/dist/src/core/context/frame-digest.d.ts.map +1 -0
  325. package/dist/src/core/context/frame-digest.js +264 -0
  326. package/dist/src/core/context/frame-digest.js.map +1 -0
  327. package/dist/src/core/context/frame-manager.d.ts +2 -0
  328. package/dist/src/core/context/frame-manager.d.ts.map +1 -1
  329. package/dist/src/core/context/frame-manager.js +7 -0
  330. package/dist/src/core/context/frame-manager.js.map +1 -1
  331. package/dist/src/core/context/frame-stack.d.ts +85 -0
  332. package/dist/src/core/context/frame-stack.d.ts.map +1 -0
  333. package/dist/src/core/context/frame-stack.js +287 -0
  334. package/dist/src/core/context/frame-stack.js.map +1 -0
  335. package/dist/src/core/context/frame-types.d.ts +67 -0
  336. package/dist/src/core/context/frame-types.d.ts.map +1 -0
  337. package/dist/src/core/context/frame-types.js +6 -0
  338. package/dist/src/core/context/frame-types.js.map +1 -0
  339. package/dist/src/core/context/index.d.ts +11 -0
  340. package/dist/src/core/context/index.d.ts.map +1 -0
  341. package/dist/src/core/context/index.js +14 -0
  342. package/dist/src/core/context/index.js.map +1 -0
  343. package/dist/src/core/context/refactored-frame-manager.d.ts +99 -0
  344. package/dist/src/core/context/refactored-frame-manager.d.ts.map +1 -0
  345. package/dist/src/core/context/refactored-frame-manager.js +340 -0
  346. package/dist/src/core/context/refactored-frame-manager.js.map +1 -0
  347. package/dist/src/core/database/batch-operations.d.ts +118 -0
  348. package/dist/src/core/database/batch-operations.d.ts.map +1 -0
  349. package/dist/src/core/database/batch-operations.js +339 -0
  350. package/dist/src/core/database/batch-operations.js.map +1 -0
  351. package/dist/src/core/database/connection-pool.d.ts +79 -0
  352. package/dist/src/core/database/connection-pool.d.ts.map +1 -0
  353. package/dist/src/core/database/connection-pool.js +236 -0
  354. package/dist/src/core/database/connection-pool.js.map +1 -0
  355. package/dist/src/core/database/query-cache.d.ts +135 -0
  356. package/dist/src/core/database/query-cache.d.ts.map +1 -0
  357. package/dist/src/core/database/query-cache.js +294 -0
  358. package/dist/src/core/database/query-cache.js.map +1 -0
  359. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +125 -0
  360. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +1 -0
  361. package/dist/src/core/digest/enhanced-hybrid-digest.js +282 -0
  362. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +1 -0
  363. package/dist/src/core/digest/frame-digest-integration.d.ts +67 -0
  364. package/dist/src/core/digest/frame-digest-integration.d.ts.map +1 -0
  365. package/dist/src/core/digest/frame-digest-integration.js +198 -0
  366. package/dist/src/core/digest/frame-digest-integration.js.map +1 -0
  367. package/dist/src/core/digest/hybrid-digest-generator.d.ts +76 -0
  368. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +1 -0
  369. package/dist/src/core/digest/hybrid-digest-generator.js +629 -0
  370. package/dist/src/core/digest/hybrid-digest-generator.js.map +1 -0
  371. package/dist/src/core/digest/index.d.ts +9 -0
  372. package/dist/src/core/digest/index.d.ts.map +1 -0
  373. package/dist/src/core/digest/index.js +9 -0
  374. package/dist/src/core/digest/index.js.map +1 -0
  375. package/dist/src/core/digest/types.d.ts +154 -0
  376. package/dist/src/core/digest/types.d.ts.map +1 -0
  377. package/dist/src/core/digest/types.js +18 -0
  378. package/dist/src/core/digest/types.js.map +1 -0
  379. package/dist/src/core/errors/index.d.ts +13 -5
  380. package/dist/src/core/errors/index.d.ts.map +1 -1
  381. package/dist/src/core/errors/index.js +13 -5
  382. package/dist/src/core/errors/index.js.map +1 -1
  383. package/dist/src/core/merge/conflict-detector.d.ts +122 -0
  384. package/dist/src/core/merge/conflict-detector.d.ts.map +1 -0
  385. package/dist/src/core/merge/conflict-detector.js +468 -0
  386. package/dist/src/core/merge/conflict-detector.js.map +1 -0
  387. package/dist/src/core/merge/index.d.ts +9 -0
  388. package/dist/src/core/merge/index.d.ts.map +1 -0
  389. package/dist/src/core/merge/index.js +9 -0
  390. package/dist/src/core/merge/index.js.map +1 -0
  391. package/dist/src/core/merge/resolution-engine.d.ts +120 -0
  392. package/dist/src/core/merge/resolution-engine.d.ts.map +1 -0
  393. package/dist/src/core/merge/resolution-engine.js +573 -0
  394. package/dist/src/core/merge/resolution-engine.js.map +1 -0
  395. package/dist/src/core/merge/stack-diff.d.ts +97 -0
  396. package/dist/src/core/merge/stack-diff.d.ts.map +1 -0
  397. package/dist/src/core/merge/stack-diff.js +516 -0
  398. package/dist/src/core/merge/stack-diff.js.map +1 -0
  399. package/dist/src/core/merge/types.d.ts +110 -0
  400. package/dist/src/core/merge/types.d.ts.map +1 -0
  401. package/dist/src/core/merge/types.js +6 -0
  402. package/dist/src/core/merge/types.js.map +1 -0
  403. package/dist/src/core/monitoring/logger.d.ts +2 -2
  404. package/dist/src/core/monitoring/logger.d.ts.map +1 -1
  405. package/dist/src/core/monitoring/logger.js +10 -5
  406. package/dist/src/core/monitoring/logger.js.map +1 -1
  407. package/dist/src/core/monitoring/metrics.d.ts +3 -0
  408. package/dist/src/core/monitoring/metrics.d.ts.map +1 -1
  409. package/dist/src/core/monitoring/metrics.js +142 -3
  410. package/dist/src/core/monitoring/metrics.js.map +1 -1
  411. package/dist/src/core/performance/context-cache.d.ts +109 -0
  412. package/dist/src/core/performance/context-cache.d.ts.map +1 -0
  413. package/dist/src/core/performance/context-cache.js +280 -0
  414. package/dist/src/core/performance/context-cache.js.map +1 -0
  415. package/dist/src/core/performance/index.d.ts +3 -0
  416. package/dist/src/core/performance/index.d.ts.map +1 -0
  417. package/dist/src/core/performance/index.js +3 -0
  418. package/dist/src/core/performance/index.js.map +1 -0
  419. package/dist/src/core/performance/lazy-context-loader.d.ts +93 -0
  420. package/dist/src/core/performance/lazy-context-loader.d.ts.map +1 -0
  421. package/dist/src/core/performance/lazy-context-loader.js +332 -0
  422. package/dist/src/core/performance/lazy-context-loader.js.map +1 -0
  423. package/dist/src/core/performance/monitor.d.ts +48 -0
  424. package/dist/src/core/performance/monitor.d.ts.map +1 -0
  425. package/dist/src/core/performance/monitor.js +226 -0
  426. package/dist/src/core/performance/monitor.js.map +1 -0
  427. package/dist/src/core/performance/optimized-frame-context.d.ts +74 -0
  428. package/dist/src/core/performance/optimized-frame-context.d.ts.map +1 -0
  429. package/dist/src/core/performance/optimized-frame-context.js +330 -0
  430. package/dist/src/core/performance/optimized-frame-context.js.map +1 -0
  431. package/dist/src/core/performance/performance-benchmark.d.ts +50 -0
  432. package/dist/src/core/performance/performance-benchmark.d.ts.map +1 -0
  433. package/dist/src/core/performance/performance-benchmark.js +290 -0
  434. package/dist/src/core/performance/performance-benchmark.js.map +1 -0
  435. package/dist/src/core/performance/performance-profiler.d.ts +151 -0
  436. package/dist/src/core/performance/performance-profiler.d.ts.map +1 -0
  437. package/dist/src/core/performance/performance-profiler.js +346 -0
  438. package/dist/src/core/performance/performance-profiler.js.map +1 -0
  439. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +41 -0
  440. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +1 -0
  441. package/dist/src/core/performance/streaming-jsonl-parser.js +193 -0
  442. package/dist/src/core/performance/streaming-jsonl-parser.js.map +1 -0
  443. package/dist/src/core/persistence/postgres-adapter.d.ts +31 -0
  444. package/dist/src/core/persistence/postgres-adapter.d.ts.map +1 -0
  445. package/dist/src/core/persistence/postgres-adapter.js +330 -0
  446. package/dist/src/core/persistence/postgres-adapter.js.map +1 -0
  447. package/dist/src/core/query/query-parser.d.ts +5 -0
  448. package/dist/src/core/query/query-parser.d.ts.map +1 -1
  449. package/dist/src/core/query/query-parser.js +86 -18
  450. package/dist/src/core/query/query-parser.js.map +1 -1
  451. package/dist/src/core/query/query-templates.d.ts +44 -0
  452. package/dist/src/core/query/query-templates.d.ts.map +1 -0
  453. package/dist/src/core/query/query-templates.js +326 -0
  454. package/dist/src/core/query/query-templates.js.map +1 -0
  455. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +5 -3
  456. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +1 -1
  457. package/dist/src/core/retrieval/llm-context-retrieval.js +73 -21
  458. package/dist/src/core/retrieval/llm-context-retrieval.js.map +1 -1
  459. package/dist/src/core/trace/cli-trace-wrapper.d.ts +23 -0
  460. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +1 -0
  461. package/dist/src/core/trace/cli-trace-wrapper.js +141 -0
  462. package/dist/src/core/trace/cli-trace-wrapper.js.map +1 -0
  463. package/dist/src/core/trace/db-trace-wrapper.d.ts +36 -0
  464. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +1 -0
  465. package/dist/src/core/trace/db-trace-wrapper.js +252 -0
  466. package/dist/src/core/trace/db-trace-wrapper.js.map +1 -0
  467. package/dist/src/core/trace/debug-trace.d.ts +84 -0
  468. package/dist/src/core/trace/debug-trace.d.ts.map +1 -0
  469. package/dist/src/core/trace/debug-trace.js +402 -0
  470. package/dist/src/core/trace/debug-trace.js.map +1 -0
  471. package/dist/src/core/trace/error-test.d.ts +6 -0
  472. package/dist/src/core/trace/error-test.d.ts.map +1 -0
  473. package/dist/src/core/trace/error-test.js +128 -0
  474. package/dist/src/core/trace/error-test.js.map +1 -0
  475. package/dist/src/core/trace/index.d.ts +25 -0
  476. package/dist/src/core/trace/index.d.ts.map +1 -0
  477. package/dist/src/core/trace/index.js +121 -0
  478. package/dist/src/core/trace/index.js.map +1 -0
  479. package/dist/src/core/trace/linear-api-wrapper.d.ts +17 -0
  480. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +1 -0
  481. package/dist/src/core/trace/linear-api-wrapper.js +205 -0
  482. package/dist/src/core/trace/linear-api-wrapper.js.map +1 -0
  483. package/dist/src/core/trace/performance-test.d.ts +6 -0
  484. package/dist/src/core/trace/performance-test.d.ts.map +1 -0
  485. package/dist/src/core/trace/performance-test.js +111 -0
  486. package/dist/src/core/trace/performance-test.js.map +1 -0
  487. package/dist/src/core/trace/trace-demo.d.ts +8 -0
  488. package/dist/src/core/trace/trace-demo.d.ts.map +1 -0
  489. package/dist/src/core/trace/trace-demo.js +154 -0
  490. package/dist/src/core/trace/trace-demo.js.map +1 -0
  491. package/dist/src/core/trace/trace-detector.d.ts +2 -2
  492. package/dist/src/core/trace/trace-detector.d.ts.map +1 -1
  493. package/dist/src/core/trace/trace-detector.demo.js +6 -6
  494. package/dist/src/core/trace/trace-detector.demo.js.map +1 -1
  495. package/dist/src/core/trace/trace-detector.js +3 -3
  496. package/dist/src/core/trace/trace-detector.js.map +1 -1
  497. package/dist/src/core/types.d.ts +35 -0
  498. package/dist/src/core/types.d.ts.map +1 -0
  499. package/dist/src/core/types.js +2 -0
  500. package/dist/src/core/types.js.map +1 -0
  501. package/dist/src/features/tasks/pebbles-task-store.d.ts +9 -2
  502. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +1 -1
  503. package/dist/src/features/tasks/pebbles-task-store.js +97 -18
  504. package/dist/src/features/tasks/pebbles-task-store.js.map +1 -1
  505. package/dist/src/integrations/linear/auth.d.ts.map +1 -1
  506. package/dist/src/integrations/linear/auth.js.map +1 -1
  507. package/dist/src/integrations/linear/client.d.ts +15 -1
  508. package/dist/src/integrations/linear/client.d.ts.map +1 -1
  509. package/dist/src/integrations/linear/client.js +85 -3
  510. package/dist/src/integrations/linear/client.js.map +1 -1
  511. package/dist/src/integrations/linear/sync-manager.d.ts +2 -0
  512. package/dist/src/integrations/linear/sync-manager.d.ts.map +1 -1
  513. package/dist/src/integrations/linear/sync-manager.js +16 -4
  514. package/dist/src/integrations/linear/sync-manager.js.map +1 -1
  515. package/dist/src/integrations/linear/sync-service.d.ts +23 -2
  516. package/dist/src/integrations/linear/sync-service.d.ts.map +1 -1
  517. package/dist/src/integrations/linear/sync-service.js +44 -25
  518. package/dist/src/integrations/linear/sync-service.js.map +1 -1
  519. package/dist/src/integrations/linear/sync.d.ts +6 -0
  520. package/dist/src/integrations/linear/sync.d.ts.map +1 -1
  521. package/dist/src/integrations/linear/sync.js +27 -2
  522. package/dist/src/integrations/linear/sync.js.map +1 -1
  523. package/dist/src/integrations/linear/types.d.ts +16 -1
  524. package/dist/src/integrations/linear/types.d.ts.map +1 -1
  525. package/dist/src/integrations/linear/webhook-server.d.ts.map +1 -1
  526. package/dist/src/integrations/linear/webhook-server.js +10 -8
  527. package/dist/src/integrations/linear/webhook-server.js.map +1 -1
  528. package/dist/src/integrations/linear/webhook.d.ts +13 -0
  529. package/dist/src/integrations/linear/webhook.d.ts.map +1 -1
  530. package/dist/src/integrations/linear/webhook.js +101 -14
  531. package/dist/src/integrations/linear/webhook.js.map +1 -1
  532. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +39 -0
  533. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +1 -0
  534. package/dist/src/integrations/mcp/handlers/context-handlers.js +266 -0
  535. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +1 -0
  536. package/dist/src/integrations/mcp/handlers/index.d.ts +37 -0
  537. package/dist/src/integrations/mcp/handlers/index.d.ts.map +1 -0
  538. package/dist/src/integrations/mcp/handlers/index.js +134 -0
  539. package/dist/src/integrations/mcp/handlers/index.js.map +1 -0
  540. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +33 -0
  541. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +1 -0
  542. package/dist/src/integrations/mcp/handlers/linear-handlers.js +251 -0
  543. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +1 -0
  544. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +42 -0
  545. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +1 -0
  546. package/dist/src/integrations/mcp/handlers/task-handlers.js +238 -0
  547. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +1 -0
  548. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +41 -0
  549. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +1 -0
  550. package/dist/src/integrations/mcp/handlers/trace-handlers.js +298 -0
  551. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +1 -0
  552. package/dist/src/integrations/mcp/index.d.ts +13 -0
  553. package/dist/src/integrations/mcp/index.d.ts.map +1 -0
  554. package/dist/src/integrations/mcp/index.js +17 -0
  555. package/dist/src/integrations/mcp/index.js.map +1 -0
  556. package/dist/src/integrations/mcp/refactored-server.d.ts +76 -0
  557. package/dist/src/integrations/mcp/refactored-server.d.ts.map +1 -0
  558. package/dist/src/integrations/mcp/refactored-server.js +351 -0
  559. package/dist/src/integrations/mcp/refactored-server.js.map +1 -0
  560. package/dist/src/integrations/mcp/server.js +2 -2
  561. package/dist/src/integrations/mcp/server.js.map +1 -1
  562. package/dist/src/integrations/mcp/tool-definitions.d.ts +44 -0
  563. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +1 -0
  564. package/dist/src/integrations/mcp/tool-definitions.js +563 -0
  565. package/dist/src/integrations/mcp/tool-definitions.js.map +1 -0
  566. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +48 -0
  567. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +1 -0
  568. package/dist/src/integrations/pg-aiguide/embedding-provider.js +190 -0
  569. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +1 -0
  570. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +34 -0
  571. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +1 -0
  572. package/dist/src/integrations/pg-aiguide/semantic-search.js +176 -0
  573. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +1 -0
  574. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +44 -0
  575. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +1 -0
  576. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +215 -0
  577. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +1 -0
  578. package/dist/src/mcp/stackmemory-mcp-server.d.ts +9 -0
  579. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +1 -0
  580. package/dist/src/mcp/stackmemory-mcp-server.js +519 -0
  581. package/dist/src/mcp/stackmemory-mcp-server.js.map +1 -0
  582. package/dist/src/middleware/exponential-rate-limiter.d.ts +78 -0
  583. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +1 -0
  584. package/dist/src/middleware/exponential-rate-limiter.js +293 -0
  585. package/dist/src/middleware/exponential-rate-limiter.js.map +1 -0
  586. package/dist/src/models/user.model.d.ts +62 -0
  587. package/dist/src/models/user.model.d.ts.map +1 -0
  588. package/dist/src/models/user.model.js +311 -0
  589. package/dist/src/models/user.model.js.map +1 -0
  590. package/dist/src/servers/production/auth-middleware.d.ts +12 -2
  591. package/dist/src/servers/production/auth-middleware.d.ts.map +1 -1
  592. package/dist/src/servers/production/auth-middleware.js +240 -28
  593. package/dist/src/servers/production/auth-middleware.js.map +1 -1
  594. package/dist/src/servers/railway/index.js.map +1 -1
  595. package/dist/src/services/context-service.d.ts.map +1 -1
  596. package/dist/src/services/context-service.js +86 -1
  597. package/dist/src/services/context-service.js.map +1 -1
  598. package/dist/src/validation/schemas.d.ts +633 -0
  599. package/dist/src/validation/schemas.d.ts.map +1 -0
  600. package/dist/src/validation/schemas.js +347 -0
  601. package/dist/src/validation/schemas.js.map +1 -0
  602. package/dist/types/task.js +1 -0
  603. package/dist/types/task.js.map +7 -0
  604. package/dist/utils/logger.js +52 -0
  605. package/dist/utils/logger.js.map +7 -0
  606. package/dist/validation/schemas.js +218 -0
  607. package/dist/validation/schemas.js.map +7 -0
  608. package/package.json +12 -3
@@ -0,0 +1,414 @@
1
+ import { describe, it, expect, beforeEach } from "vitest";
2
+ import { v4 as uuidv4 } from "uuid";
3
+ import { ConflictDetector } from "../conflict-detector.js";
4
+ import { StackDiffVisualizer } from "../stack-diff.js";
5
+ import { ResolutionEngine } from "../resolution-engine.js";
6
+ function createMockFrame(overrides) {
7
+ return {
8
+ frame_id: uuidv4(),
9
+ run_id: "test-run",
10
+ project_id: "test-project",
11
+ depth: 1,
12
+ type: "task",
13
+ name: "Test Frame",
14
+ state: "active",
15
+ inputs: {},
16
+ outputs: {},
17
+ digest_json: {},
18
+ created_at: Date.now(),
19
+ ...overrides
20
+ };
21
+ }
22
+ function createMockEvent(overrides) {
23
+ return {
24
+ event_id: uuidv4(),
25
+ frame_id: uuidv4(),
26
+ run_id: "test-run",
27
+ seq: 1,
28
+ event_type: "tool_call",
29
+ payload: {},
30
+ ts: Date.now(),
31
+ ...overrides
32
+ };
33
+ }
34
+ function createMockStack(frames, events = []) {
35
+ return {
36
+ id: uuidv4(),
37
+ frames,
38
+ events,
39
+ createdAt: Date.now(),
40
+ lastModified: Date.now()
41
+ };
42
+ }
43
+ describe("Temporal Paradox Resolution", () => {
44
+ let detector;
45
+ let visualizer;
46
+ let resolver;
47
+ beforeEach(() => {
48
+ detector = new ConflictDetector();
49
+ visualizer = new StackDiffVisualizer();
50
+ resolver = new ResolutionEngine();
51
+ });
52
+ describe("Level 1: Conflict Detection", () => {
53
+ it("should detect parallel solution conflicts", () => {
54
+ const frame1 = createMockFrame({
55
+ frame_id: "frame-1",
56
+ name: "Fix Authentication Bug",
57
+ outputs: { solution: "Refactored entire auth system" }
58
+ });
59
+ const frame2 = createMockFrame({
60
+ frame_id: "frame-2",
61
+ name: "Fix Authentication Bug",
62
+ outputs: { solution: "Applied minimal patch" }
63
+ });
64
+ const stack1 = createMockStack([frame1]);
65
+ const stack2 = createMockStack([frame2]);
66
+ const conflicts = detector.detectConflicts(stack1, stack2);
67
+ expect(conflicts).toHaveLength(1);
68
+ expect(conflicts[0].type).toBe("parallel_solution");
69
+ expect(conflicts[0].frameId1).toBe("frame-1");
70
+ expect(conflicts[0].frameId2).toBe("frame-2");
71
+ });
72
+ it("should detect conflicting decisions", () => {
73
+ const event1 = createMockEvent({
74
+ event_id: "event-1",
75
+ frame_id: "frame-1",
76
+ event_type: "decision",
77
+ payload: {
78
+ decision: "use-react",
79
+ resource: "frontend-framework"
80
+ }
81
+ });
82
+ const event2 = createMockEvent({
83
+ event_id: "event-2",
84
+ frame_id: "frame-2",
85
+ event_type: "decision",
86
+ payload: {
87
+ decision: "use-vue",
88
+ resource: "frontend-framework"
89
+ }
90
+ });
91
+ const stack1 = createMockStack([], [event1]);
92
+ const stack2 = createMockStack([], [event2]);
93
+ const conflicts = detector.detectConflicts(stack1, stack2);
94
+ expect(conflicts).toHaveLength(1);
95
+ expect(conflicts[0].type).toBe("conflicting_decision");
96
+ });
97
+ it("should detect structural divergence", () => {
98
+ const parent = createMockFrame({ frame_id: "parent" });
99
+ const child1a = createMockFrame({
100
+ frame_id: "child-1a",
101
+ parent_frame_id: "parent",
102
+ depth: 2
103
+ });
104
+ const child2a = createMockFrame({
105
+ frame_id: "child-2a",
106
+ parent_frame_id: "parent",
107
+ depth: 2
108
+ });
109
+ const stack1 = createMockStack([parent, child1a]);
110
+ const stack2 = createMockStack([parent, child2a]);
111
+ const conflicts = detector.detectConflicts(stack1, stack2);
112
+ const structuralConflicts = conflicts.filter(
113
+ (c) => c.type === "structural_divergence"
114
+ );
115
+ expect(structuralConflicts.length).toBeGreaterThan(0);
116
+ });
117
+ it("should analyze parallel solutions effectively", () => {
118
+ const frames = [
119
+ createMockFrame({
120
+ frame_id: "solution-1",
121
+ name: "Optimize Database Query",
122
+ outputs: { approach: "Added indexes" }
123
+ }),
124
+ createMockFrame({
125
+ frame_id: "solution-2",
126
+ name: "Optimize Database Query",
127
+ outputs: { approach: "Rewrote query logic" }
128
+ })
129
+ ];
130
+ const solutions = detector.analyzeParallelSolutions(frames);
131
+ expect(solutions).toHaveLength(2);
132
+ expect(solutions[0].frameId).toBe("solution-1");
133
+ expect(solutions[1].frameId).toBe("solution-2");
134
+ });
135
+ });
136
+ describe("Level 2: Stack Diff Visualizer", () => {
137
+ it("should create visual diff tree", () => {
138
+ const baseFrame = createMockFrame({ frame_id: "base" });
139
+ const stack1 = createMockStack([
140
+ baseFrame,
141
+ createMockFrame({ parent_frame_id: "base", depth: 2 })
142
+ ]);
143
+ const stack2 = createMockStack([
144
+ baseFrame,
145
+ createMockFrame({ parent_frame_id: "base", depth: 2 })
146
+ ]);
147
+ const diffTree = visualizer.visualizeDivergence(
148
+ baseFrame,
149
+ stack1,
150
+ stack2
151
+ );
152
+ expect(diffTree.nodes).toHaveLength(3);
153
+ expect(diffTree.edges.length).toBeGreaterThan(0);
154
+ expect(diffTree.layout).toBe("tree");
155
+ });
156
+ it("should render conflict markers", () => {
157
+ const conflicts = [
158
+ {
159
+ id: "conflict-1",
160
+ type: "parallel_solution",
161
+ frameId1: "frame-1",
162
+ frameId2: "frame-2",
163
+ severity: "high",
164
+ description: "Test conflict",
165
+ detectedAt: Date.now()
166
+ }
167
+ ];
168
+ const markers = visualizer.renderConflictMarkers(conflicts);
169
+ expect(markers).toHaveLength(2);
170
+ expect(markers[0].type).toBe("conflict");
171
+ expect(markers[0].color).toBe("#ff6600");
172
+ expect(markers[0].symbol).toBe("\u26A1");
173
+ });
174
+ it("should generate merge preview", () => {
175
+ const stack1 = createMockStack([
176
+ createMockFrame({ frame_id: "frame-1" })
177
+ ]);
178
+ const stack2 = createMockStack([
179
+ createMockFrame({ frame_id: "frame-2" })
180
+ ]);
181
+ const preview = visualizer.generateMergePreview(
182
+ stack1,
183
+ stack2,
184
+ "keep_both"
185
+ );
186
+ expect(preview.mergedFrames).toHaveLength(2);
187
+ expect(preview.keptFromStack1).toContain("frame-1");
188
+ expect(preview.keptFromStack2).toContain("frame-2");
189
+ expect(preview.estimatedSuccess).toBeGreaterThan(0);
190
+ });
191
+ });
192
+ describe("Level 3: Resolution Strategies", () => {
193
+ it("should resolve with keep_both strategy", async () => {
194
+ const stack1 = createMockStack([
195
+ createMockFrame({ frame_id: "frame-1", name: "Solution A" })
196
+ ]);
197
+ const stack2 = createMockStack([
198
+ createMockFrame({ frame_id: "frame-2", name: "Solution B" })
199
+ ]);
200
+ const context = {
201
+ userId: "user-1",
202
+ userRole: "senior"
203
+ };
204
+ const result = await resolver.resolveConflicts(
205
+ stack1,
206
+ stack2,
207
+ "keep_both",
208
+ context
209
+ );
210
+ expect(result.success).toBe(true);
211
+ expect(result.resolution?.strategy.type).toBe("keep_both");
212
+ });
213
+ it("should resolve with team_vote strategy", async () => {
214
+ const stack1 = createMockStack([
215
+ createMockFrame({ frame_id: "frame-1" })
216
+ ]);
217
+ const stack2 = createMockStack([
218
+ createMockFrame({ frame_id: "frame-2" })
219
+ ]);
220
+ const votes = [
221
+ {
222
+ userId: "user-1",
223
+ choice: "frame1",
224
+ timestamp: Date.now()
225
+ },
226
+ {
227
+ userId: "user-2",
228
+ choice: "frame1",
229
+ timestamp: Date.now()
230
+ },
231
+ {
232
+ userId: "user-3",
233
+ choice: "frame2",
234
+ timestamp: Date.now()
235
+ }
236
+ ];
237
+ const context = {
238
+ userId: "user-1",
239
+ userRole: "mid",
240
+ teamVotes: votes
241
+ };
242
+ const result = await resolver.resolveConflicts(
243
+ stack1,
244
+ stack2,
245
+ "team_vote",
246
+ context
247
+ );
248
+ expect(result.success).toBe(true);
249
+ expect(result.resolution?.strategy.type).toBe("team_vote");
250
+ expect(result.resolution?.strategy.votes).toHaveLength(3);
251
+ });
252
+ it("should resolve with senior_override strategy", async () => {
253
+ const stack1 = createMockStack([
254
+ createMockFrame({ frame_id: "frame-1" })
255
+ ]);
256
+ const stack2 = createMockStack([
257
+ createMockFrame({ frame_id: "frame-2" })
258
+ ]);
259
+ const context = {
260
+ userId: "senior-dev",
261
+ userRole: "senior"
262
+ };
263
+ const result = await resolver.resolveConflicts(
264
+ stack1,
265
+ stack2,
266
+ "senior_override",
267
+ context
268
+ );
269
+ expect(result.success).toBe(true);
270
+ expect(result.resolution?.strategy.type).toBe("senior_override");
271
+ expect(result.resolution?.strategy.confidence).toBeGreaterThan(0.9);
272
+ });
273
+ it("should resolve with ai_suggest strategy", async () => {
274
+ const stack1 = createMockStack([
275
+ createMockFrame({
276
+ frame_id: "frame-1",
277
+ state: "closed",
278
+ outputs: { result: "optimized" }
279
+ })
280
+ ]);
281
+ const stack2 = createMockStack([
282
+ createMockFrame({
283
+ frame_id: "frame-2",
284
+ state: "active"
285
+ })
286
+ ]);
287
+ const context = {
288
+ userId: "user-1",
289
+ userRole: "mid",
290
+ aiConfidence: 0.92
291
+ };
292
+ const result = await resolver.resolveConflicts(
293
+ stack1,
294
+ stack2,
295
+ "ai_suggest",
296
+ context
297
+ );
298
+ expect(result.success).toBe(true);
299
+ expect(result.resolution?.strategy.type).toBe("ai_suggest");
300
+ expect(result.resolution?.resolvedBy).toBe("ai_system");
301
+ });
302
+ it("should resolve with hybrid strategy", async () => {
303
+ const stack1 = createMockStack([
304
+ createMockFrame({ frame_id: "frame-1", name: "Parallel Solution" })
305
+ ]);
306
+ const stack2 = createMockStack([
307
+ createMockFrame({ frame_id: "frame-2", name: "Parallel Solution" })
308
+ ]);
309
+ const context = {
310
+ userId: "user-1",
311
+ userRole: "lead"
312
+ };
313
+ const result = await resolver.resolveConflicts(
314
+ stack1,
315
+ stack2,
316
+ "hybrid",
317
+ context
318
+ );
319
+ expect(result.success).toBe(true);
320
+ expect(result.resolution?.strategy.type).toBe("hybrid");
321
+ expect(result.resolution?.strategy.confidence).toBeGreaterThan(0.85);
322
+ });
323
+ });
324
+ describe("Edge Cases and Error Handling", () => {
325
+ it("should handle empty stacks gracefully", () => {
326
+ const stack1 = createMockStack([]);
327
+ const stack2 = createMockStack([]);
328
+ const conflicts = detector.detectConflicts(stack1, stack2);
329
+ expect(conflicts).toHaveLength(0);
330
+ });
331
+ it("should handle identical frames", () => {
332
+ const frame = createMockFrame({ frame_id: "same-frame" });
333
+ const stack1 = createMockStack([frame]);
334
+ const stack2 = createMockStack([frame]);
335
+ const conflicts = detector.detectConflicts(stack1, stack2);
336
+ expect(conflicts).toHaveLength(0);
337
+ });
338
+ it("should detect circular dependencies", () => {
339
+ const frame1 = createMockFrame({
340
+ frame_id: "frame-1",
341
+ parent_frame_id: "frame-2"
342
+ });
343
+ const frame2 = createMockFrame({
344
+ frame_id: "frame-2",
345
+ parent_frame_id: "frame-1"
346
+ });
347
+ const stack = createMockStack([frame1, frame2]);
348
+ expect(() => {
349
+ detector.detectConflicts(stack, stack);
350
+ }).not.toThrow();
351
+ });
352
+ it("should require proper role for senior_override", async () => {
353
+ const stack1 = createMockStack([]);
354
+ const stack2 = createMockStack([]);
355
+ const context = {
356
+ userId: "junior-dev",
357
+ userRole: "junior"
358
+ // Not senior
359
+ };
360
+ await expect(
361
+ resolver.resolveConflicts(stack1, stack2, "senior_override", context)
362
+ ).rejects.toThrow("Senior override requires senior or lead role");
363
+ });
364
+ it("should require votes for team_vote strategy", async () => {
365
+ const stack1 = createMockStack([]);
366
+ const stack2 = createMockStack([]);
367
+ const context = {
368
+ userId: "user-1",
369
+ userRole: "mid"
370
+ // No teamVotes provided
371
+ };
372
+ await expect(
373
+ resolver.resolveConflicts(stack1, stack2, "team_vote", context)
374
+ ).rejects.toThrow("Team vote strategy requires votes");
375
+ });
376
+ });
377
+ describe("Performance Tests", () => {
378
+ it("should handle large frame stacks efficiently", () => {
379
+ const frames1 = Array.from(
380
+ { length: 100 },
381
+ (_, i) => createMockFrame({ frame_id: `frame-1-${i}` })
382
+ );
383
+ const frames2 = Array.from(
384
+ { length: 100 },
385
+ (_, i) => createMockFrame({ frame_id: `frame-2-${i}` })
386
+ );
387
+ const stack1 = createMockStack(frames1);
388
+ const stack2 = createMockStack(frames2);
389
+ const startTime = Date.now();
390
+ const conflicts = detector.detectConflicts(stack1, stack2);
391
+ const duration = Date.now() - startTime;
392
+ expect(duration).toBeLessThan(100);
393
+ expect(conflicts).toBeDefined();
394
+ });
395
+ it("should generate merge preview quickly", () => {
396
+ const stack1 = createMockStack(
397
+ Array.from({ length: 50 }, () => createMockFrame())
398
+ );
399
+ const stack2 = createMockStack(
400
+ Array.from({ length: 50 }, () => createMockFrame())
401
+ );
402
+ const startTime = Date.now();
403
+ const preview = visualizer.generateMergePreview(
404
+ stack1,
405
+ stack2,
406
+ "ai_suggest"
407
+ );
408
+ const duration = Date.now() - startTime;
409
+ expect(duration).toBeLessThan(50);
410
+ expect(preview.estimatedSuccess).toBeGreaterThan(0);
411
+ });
412
+ });
413
+ });
414
+ //# sourceMappingURL=conflict-scenarios.test.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/core/merge/__tests__/conflict-scenarios.test.ts"],
4
+ "sourcesContent": ["/**\n * Temporal Paradox Test Scenarios\n * STA-101: Complete test coverage for merge conflict resolution\n */\n\nimport { describe, it, expect, beforeEach } from 'vitest';\nimport { v4 as uuidv4 } from 'uuid';\nimport { ConflictDetector } from '../conflict-detector.js';\nimport { StackDiffVisualizer } from '../stack-diff.js';\nimport { ResolutionEngine, ResolutionContext } from '../resolution-engine.js';\nimport { FrameStack, MergeConflict, TeamVote } from '../types.js';\nimport { Frame, Event } from '../../context/frame-manager.js';\n\n// Test data factories\nfunction createMockFrame(overrides?: Partial<Frame>): Frame {\n return {\n frame_id: uuidv4(),\n run_id: 'test-run',\n project_id: 'test-project',\n depth: 1,\n type: 'task',\n name: 'Test Frame',\n state: 'active',\n inputs: {},\n outputs: {},\n digest_json: {},\n created_at: Date.now(),\n ...overrides,\n };\n}\n\nfunction createMockEvent(overrides?: Partial<Event>): Event {\n return {\n event_id: uuidv4(),\n frame_id: uuidv4(),\n run_id: 'test-run',\n seq: 1,\n event_type: 'tool_call',\n payload: {},\n ts: Date.now(),\n ...overrides,\n };\n}\n\nfunction createMockStack(frames: Frame[], events: Event[] = []): FrameStack {\n return {\n id: uuidv4(),\n frames,\n events,\n createdAt: Date.now(),\n lastModified: Date.now(),\n };\n}\n\ndescribe('Temporal Paradox Resolution', () => {\n let detector: ConflictDetector;\n let visualizer: StackDiffVisualizer;\n let resolver: ResolutionEngine;\n\n beforeEach(() => {\n detector = new ConflictDetector();\n visualizer = new StackDiffVisualizer();\n resolver = new ResolutionEngine();\n });\n\n describe('Level 1: Conflict Detection', () => {\n it('should detect parallel solution conflicts', () => {\n // Create two frames solving the same problem differently\n const frame1 = createMockFrame({\n frame_id: 'frame-1',\n name: 'Fix Authentication Bug',\n outputs: { solution: 'Refactored entire auth system' },\n });\n\n const frame2 = createMockFrame({\n frame_id: 'frame-2',\n name: 'Fix Authentication Bug',\n outputs: { solution: 'Applied minimal patch' },\n });\n\n const stack1 = createMockStack([frame1]);\n const stack2 = createMockStack([frame2]);\n\n const conflicts = detector.detectConflicts(stack1, stack2);\n\n expect(conflicts).toHaveLength(1);\n expect(conflicts[0].type).toBe('parallel_solution');\n expect(conflicts[0].frameId1).toBe('frame-1');\n expect(conflicts[0].frameId2).toBe('frame-2');\n });\n\n it('should detect conflicting decisions', () => {\n // Create events with conflicting decisions\n const event1 = createMockEvent({\n event_id: 'event-1',\n frame_id: 'frame-1',\n event_type: 'decision',\n payload: {\n decision: 'use-react',\n resource: 'frontend-framework',\n },\n });\n\n const event2 = createMockEvent({\n event_id: 'event-2',\n frame_id: 'frame-2',\n event_type: 'decision',\n payload: {\n decision: 'use-vue',\n resource: 'frontend-framework',\n },\n });\n\n const stack1 = createMockStack([], [event1]);\n const stack2 = createMockStack([], [event2]);\n\n const conflicts = detector.detectConflicts(stack1, stack2);\n\n expect(conflicts).toHaveLength(1);\n expect(conflicts[0].type).toBe('conflicting_decision');\n });\n\n it('should detect structural divergence', () => {\n // Create divergent frame hierarchies\n const parent = createMockFrame({ frame_id: 'parent' });\n\n const child1a = createMockFrame({\n frame_id: 'child-1a',\n parent_frame_id: 'parent',\n depth: 2,\n });\n\n const child2a = createMockFrame({\n frame_id: 'child-2a',\n parent_frame_id: 'parent',\n depth: 2,\n });\n\n const stack1 = createMockStack([parent, child1a]);\n const stack2 = createMockStack([parent, child2a]);\n\n const conflicts = detector.detectConflicts(stack1, stack2);\n\n // Should detect structural divergence\n const structuralConflicts = conflicts.filter(\n (c) => c.type === 'structural_divergence'\n );\n expect(structuralConflicts.length).toBeGreaterThan(0);\n });\n\n it('should analyze parallel solutions effectively', () => {\n const frames = [\n createMockFrame({\n frame_id: 'solution-1',\n name: 'Optimize Database Query',\n outputs: { approach: 'Added indexes' },\n }),\n createMockFrame({\n frame_id: 'solution-2',\n name: 'Optimize Database Query',\n outputs: { approach: 'Rewrote query logic' },\n }),\n ];\n\n const solutions = detector.analyzeParallelSolutions(frames);\n\n expect(solutions).toHaveLength(2);\n expect(solutions[0].frameId).toBe('solution-1');\n expect(solutions[1].frameId).toBe('solution-2');\n });\n });\n\n describe('Level 2: Stack Diff Visualizer', () => {\n it('should create visual diff tree', () => {\n const baseFrame = createMockFrame({ frame_id: 'base' });\n const stack1 = createMockStack([\n baseFrame,\n createMockFrame({ parent_frame_id: 'base', depth: 2 }),\n ]);\n const stack2 = createMockStack([\n baseFrame,\n createMockFrame({ parent_frame_id: 'base', depth: 2 }),\n ]);\n\n const diffTree = visualizer.visualizeDivergence(\n baseFrame,\n stack1,\n stack2\n );\n\n expect(diffTree.nodes).toHaveLength(3); // base + 2 children\n expect(diffTree.edges.length).toBeGreaterThan(0);\n expect(diffTree.layout).toBe('tree');\n });\n\n it('should render conflict markers', () => {\n const conflicts: MergeConflict[] = [\n {\n id: 'conflict-1',\n type: 'parallel_solution',\n frameId1: 'frame-1',\n frameId2: 'frame-2',\n severity: 'high',\n description: 'Test conflict',\n detectedAt: Date.now(),\n },\n ];\n\n const markers = visualizer.renderConflictMarkers(conflicts);\n\n expect(markers).toHaveLength(2); // One marker for each frame\n expect(markers[0].type).toBe('conflict');\n expect(markers[0].color).toBe('#ff6600'); // High severity color\n expect(markers[0].symbol).toBe('\u26A1'); // Parallel solution symbol\n });\n\n it('should generate merge preview', () => {\n const stack1 = createMockStack([\n createMockFrame({ frame_id: 'frame-1' }),\n ]);\n const stack2 = createMockStack([\n createMockFrame({ frame_id: 'frame-2' }),\n ]);\n\n const preview = visualizer.generateMergePreview(\n stack1,\n stack2,\n 'keep_both'\n );\n\n expect(preview.mergedFrames).toHaveLength(2);\n expect(preview.keptFromStack1).toContain('frame-1');\n expect(preview.keptFromStack2).toContain('frame-2');\n expect(preview.estimatedSuccess).toBeGreaterThan(0);\n });\n });\n\n describe('Level 3: Resolution Strategies', () => {\n it('should resolve with keep_both strategy', async () => {\n const stack1 = createMockStack([\n createMockFrame({ frame_id: 'frame-1', name: 'Solution A' }),\n ]);\n const stack2 = createMockStack([\n createMockFrame({ frame_id: 'frame-2', name: 'Solution B' }),\n ]);\n\n const context: ResolutionContext = {\n userId: 'user-1',\n userRole: 'senior',\n };\n\n const result = await resolver.resolveConflicts(\n stack1,\n stack2,\n 'keep_both',\n context\n );\n\n expect(result.success).toBe(true);\n expect(result.resolution?.strategy.type).toBe('keep_both');\n });\n\n it('should resolve with team_vote strategy', async () => {\n const stack1 = createMockStack([\n createMockFrame({ frame_id: 'frame-1' }),\n ]);\n const stack2 = createMockStack([\n createMockFrame({ frame_id: 'frame-2' }),\n ]);\n\n const votes: TeamVote[] = [\n {\n userId: 'user-1',\n choice: 'frame1',\n timestamp: Date.now(),\n },\n {\n userId: 'user-2',\n choice: 'frame1',\n timestamp: Date.now(),\n },\n {\n userId: 'user-3',\n choice: 'frame2',\n timestamp: Date.now(),\n },\n ];\n\n const context: ResolutionContext = {\n userId: 'user-1',\n userRole: 'mid',\n teamVotes: votes,\n };\n\n const result = await resolver.resolveConflicts(\n stack1,\n stack2,\n 'team_vote',\n context\n );\n\n expect(result.success).toBe(true);\n expect(result.resolution?.strategy.type).toBe('team_vote');\n expect(result.resolution?.strategy.votes).toHaveLength(3);\n });\n\n it('should resolve with senior_override strategy', async () => {\n const stack1 = createMockStack([\n createMockFrame({ frame_id: 'frame-1' }),\n ]);\n const stack2 = createMockStack([\n createMockFrame({ frame_id: 'frame-2' }),\n ]);\n\n const context: ResolutionContext = {\n userId: 'senior-dev',\n userRole: 'senior',\n };\n\n const result = await resolver.resolveConflicts(\n stack1,\n stack2,\n 'senior_override',\n context\n );\n\n expect(result.success).toBe(true);\n expect(result.resolution?.strategy.type).toBe('senior_override');\n expect(result.resolution?.strategy.confidence).toBeGreaterThan(0.9);\n });\n\n it('should resolve with ai_suggest strategy', async () => {\n const stack1 = createMockStack([\n createMockFrame({\n frame_id: 'frame-1',\n state: 'closed',\n outputs: { result: 'optimized' },\n }),\n ]);\n const stack2 = createMockStack([\n createMockFrame({\n frame_id: 'frame-2',\n state: 'active',\n }),\n ]);\n\n const context: ResolutionContext = {\n userId: 'user-1',\n userRole: 'mid',\n aiConfidence: 0.92,\n };\n\n const result = await resolver.resolveConflicts(\n stack1,\n stack2,\n 'ai_suggest',\n context\n );\n\n expect(result.success).toBe(true);\n expect(result.resolution?.strategy.type).toBe('ai_suggest');\n expect(result.resolution?.resolvedBy).toBe('ai_system');\n });\n\n it('should resolve with hybrid strategy', async () => {\n const stack1 = createMockStack([\n createMockFrame({ frame_id: 'frame-1', name: 'Parallel Solution' }),\n ]);\n const stack2 = createMockStack([\n createMockFrame({ frame_id: 'frame-2', name: 'Parallel Solution' }),\n ]);\n\n const context: ResolutionContext = {\n userId: 'user-1',\n userRole: 'lead',\n };\n\n const result = await resolver.resolveConflicts(\n stack1,\n stack2,\n 'hybrid',\n context\n );\n\n expect(result.success).toBe(true);\n expect(result.resolution?.strategy.type).toBe('hybrid');\n expect(result.resolution?.strategy.confidence).toBeGreaterThan(0.85);\n });\n });\n\n describe('Edge Cases and Error Handling', () => {\n it('should handle empty stacks gracefully', () => {\n const stack1 = createMockStack([]);\n const stack2 = createMockStack([]);\n\n const conflicts = detector.detectConflicts(stack1, stack2);\n\n expect(conflicts).toHaveLength(0);\n });\n\n it('should handle identical frames', () => {\n const frame = createMockFrame({ frame_id: 'same-frame' });\n const stack1 = createMockStack([frame]);\n const stack2 = createMockStack([frame]);\n\n const conflicts = detector.detectConflicts(stack1, stack2);\n\n expect(conflicts).toHaveLength(0);\n });\n\n it('should detect circular dependencies', () => {\n const frame1 = createMockFrame({\n frame_id: 'frame-1',\n parent_frame_id: 'frame-2',\n });\n const frame2 = createMockFrame({\n frame_id: 'frame-2',\n parent_frame_id: 'frame-1',\n });\n\n const stack = createMockStack([frame1, frame2]);\n\n // Should not crash on circular dependencies\n expect(() => {\n detector.detectConflicts(stack, stack);\n }).not.toThrow();\n });\n\n it('should require proper role for senior_override', async () => {\n const stack1 = createMockStack([]);\n const stack2 = createMockStack([]);\n\n const context: ResolutionContext = {\n userId: 'junior-dev',\n userRole: 'junior', // Not senior\n };\n\n await expect(\n resolver.resolveConflicts(stack1, stack2, 'senior_override', context)\n ).rejects.toThrow('Senior override requires senior or lead role');\n });\n\n it('should require votes for team_vote strategy', async () => {\n const stack1 = createMockStack([]);\n const stack2 = createMockStack([]);\n\n const context: ResolutionContext = {\n userId: 'user-1',\n userRole: 'mid',\n // No teamVotes provided\n };\n\n await expect(\n resolver.resolveConflicts(stack1, stack2, 'team_vote', context)\n ).rejects.toThrow('Team vote strategy requires votes');\n });\n });\n\n describe('Performance Tests', () => {\n it('should handle large frame stacks efficiently', () => {\n const frames1 = Array.from({ length: 100 }, (_, i) =>\n createMockFrame({ frame_id: `frame-1-${i}` })\n );\n const frames2 = Array.from({ length: 100 }, (_, i) =>\n createMockFrame({ frame_id: `frame-2-${i}` })\n );\n\n const stack1 = createMockStack(frames1);\n const stack2 = createMockStack(frames2);\n\n const startTime = Date.now();\n const conflicts = detector.detectConflicts(stack1, stack2);\n const duration = Date.now() - startTime;\n\n // Should complete within 100ms even with large stacks\n expect(duration).toBeLessThan(100);\n expect(conflicts).toBeDefined();\n });\n\n it('should generate merge preview quickly', () => {\n const stack1 = createMockStack(\n Array.from({ length: 50 }, () => createMockFrame())\n );\n const stack2 = createMockStack(\n Array.from({ length: 50 }, () => createMockFrame())\n );\n\n const startTime = Date.now();\n const preview = visualizer.generateMergePreview(\n stack1,\n stack2,\n 'ai_suggest'\n );\n const duration = Date.now() - startTime;\n\n // Should complete within 50ms\n expect(duration).toBeLessThan(50);\n expect(preview.estimatedSuccess).toBeGreaterThan(0);\n });\n });\n});\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }