@stackmemoryai/stackmemory 0.3.1 → 0.3.5

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 (744) hide show
  1. package/README.md +69 -288
  2. package/dist/cli/commands/chromadb.js +267 -0
  3. package/dist/cli/commands/chromadb.js.map +7 -0
  4. package/dist/cli/commands/clear.js +191 -0
  5. package/dist/cli/commands/clear.js.map +7 -0
  6. package/dist/cli/commands/config.js +152 -1
  7. package/dist/cli/commands/config.js.map +2 -2
  8. package/dist/cli/commands/context.js +15 -5
  9. package/dist/cli/commands/context.js.map +2 -2
  10. package/dist/cli/commands/dashboard.js +178 -0
  11. package/dist/cli/commands/dashboard.js.map +7 -0
  12. package/dist/cli/commands/handoff.js +125 -8
  13. package/dist/cli/commands/handoff.js.map +2 -2
  14. package/dist/cli/commands/linear-create.js +132 -0
  15. package/dist/cli/commands/linear-create.js.map +7 -0
  16. package/dist/cli/commands/linear-list.js +69 -0
  17. package/dist/cli/commands/linear-list.js.map +7 -0
  18. package/dist/cli/commands/linear-migrate.js +40 -0
  19. package/dist/cli/commands/linear-migrate.js.map +7 -0
  20. package/dist/cli/commands/linear.js +185 -36
  21. package/dist/cli/commands/linear.js.map +2 -2
  22. package/dist/cli/commands/monitor.js +309 -0
  23. package/dist/cli/commands/monitor.js.map +7 -0
  24. package/dist/cli/commands/quality.js +414 -0
  25. package/dist/cli/commands/quality.js.map +7 -0
  26. package/dist/cli/commands/skills.js +262 -0
  27. package/dist/cli/commands/skills.js.map +7 -0
  28. package/dist/cli/commands/storage.js +275 -0
  29. package/dist/cli/commands/storage.js.map +7 -0
  30. package/dist/cli/commands/tui.js +66 -0
  31. package/dist/cli/commands/tui.js.map +7 -0
  32. package/dist/cli/commands/workflow.js +134 -0
  33. package/dist/cli/commands/workflow.js.map +7 -0
  34. package/dist/cli/index.js +109 -8
  35. package/dist/cli/index.js.map +3 -3
  36. package/dist/core/analytics/team-analytics.js +374 -0
  37. package/dist/core/analytics/team-analytics.js.map +7 -0
  38. package/dist/core/context/context-bridge.js +234 -0
  39. package/dist/core/context/context-bridge.js.map +7 -0
  40. package/dist/core/context/dual-stack-manager.js +850 -0
  41. package/dist/core/context/dual-stack-manager.js.map +7 -0
  42. package/dist/core/context/frame-handoff-manager.js +774 -0
  43. package/dist/core/context/frame-handoff-manager.js.map +7 -0
  44. package/dist/core/context/frame-manager.js +142 -13
  45. package/dist/core/context/frame-manager.js.map +2 -2
  46. package/dist/core/context/permission-manager.js +181 -0
  47. package/dist/core/context/permission-manager.js.map +7 -0
  48. package/dist/core/context/shared-context-layer.js +386 -0
  49. package/dist/core/context/shared-context-layer.js.map +7 -0
  50. package/dist/core/context/stack-merge-resolver.js +600 -0
  51. package/dist/core/context/stack-merge-resolver.js.map +7 -0
  52. package/dist/core/context/validation.js +121 -0
  53. package/dist/core/context/validation.js.map +7 -0
  54. package/dist/core/database/connection-pool.js +266 -175
  55. package/dist/core/database/connection-pool.js.map +2 -2
  56. package/dist/core/database/database-adapter.js +51 -0
  57. package/dist/core/database/database-adapter.js.map +7 -0
  58. package/dist/core/database/migration-manager.js +514 -0
  59. package/dist/core/database/migration-manager.js.map +7 -0
  60. package/dist/core/database/paradedb-adapter.js +970 -0
  61. package/dist/core/database/paradedb-adapter.js.map +7 -0
  62. package/dist/core/database/query-router.js +421 -0
  63. package/dist/core/database/query-router.js.map +7 -0
  64. package/dist/core/database/sqlite-adapter.js +547 -0
  65. package/dist/core/database/sqlite-adapter.js.map +7 -0
  66. package/dist/core/errors/index.js +21 -1
  67. package/dist/core/errors/index.js.map +2 -2
  68. package/dist/core/frame/workflow-templates-stub.js +42 -0
  69. package/dist/core/frame/workflow-templates-stub.js.map +7 -0
  70. package/dist/core/frame/workflow-templates.js +276 -0
  71. package/dist/core/frame/workflow-templates.js.map +7 -0
  72. package/dist/core/merge/conflict-detector.js +5 -2
  73. package/dist/core/merge/conflict-detector.js.map +2 -2
  74. package/dist/core/merge/resolution-engine.js +3 -14
  75. package/dist/core/merge/resolution-engine.js.map +2 -2
  76. package/dist/core/merge/stack-diff.js.map +2 -2
  77. package/dist/core/monitoring/logger.js +18 -3
  78. package/dist/core/monitoring/logger.js.map +2 -2
  79. package/dist/core/monitoring/session-monitor.js +296 -0
  80. package/dist/core/monitoring/session-monitor.js.map +7 -0
  81. package/dist/core/retrieval/context-retriever.js +475 -0
  82. package/dist/core/retrieval/context-retriever.js.map +7 -0
  83. package/dist/core/retrieval/graph-retrieval.js +658 -0
  84. package/dist/core/retrieval/graph-retrieval.js.map +7 -0
  85. package/dist/core/retrieval/hierarchical-retrieval.js +652 -0
  86. package/dist/core/retrieval/hierarchical-retrieval.js.map +7 -0
  87. package/dist/core/retrieval/retrieval-benchmarks.js +517 -0
  88. package/dist/core/retrieval/retrieval-benchmarks.js.map +7 -0
  89. package/dist/core/session/clear-survival-stub.js +49 -0
  90. package/dist/core/session/clear-survival-stub.js.map +7 -0
  91. package/dist/core/session/clear-survival.js +426 -0
  92. package/dist/core/session/clear-survival.js.map +7 -0
  93. package/dist/core/session/handoff-generator.js +339 -0
  94. package/dist/core/session/handoff-generator.js.map +7 -0
  95. package/dist/core/session/session-manager.js +61 -26
  96. package/dist/core/session/session-manager.js.map +3 -3
  97. package/dist/core/skills/index.js +3 -0
  98. package/dist/core/skills/index.js.map +7 -0
  99. package/dist/core/skills/skill-storage.js +749 -0
  100. package/dist/core/skills/skill-storage.js.map +7 -0
  101. package/dist/core/skills/types.js +189 -0
  102. package/dist/core/skills/types.js.map +7 -0
  103. package/dist/core/storage/chromadb-adapter.js +346 -0
  104. package/dist/core/storage/chromadb-adapter.js.map +7 -0
  105. package/dist/core/storage/railway-optimized-storage.js +550 -0
  106. package/dist/core/storage/railway-optimized-storage.js.map +7 -0
  107. package/dist/core/storage/remote-storage.js +456 -0
  108. package/dist/core/storage/remote-storage.js.map +7 -0
  109. package/dist/core/trace/trace-detector.js +136 -5
  110. package/dist/core/trace/trace-detector.js.map +2 -2
  111. package/dist/core/trace/trace-store.js.map +2 -2
  112. package/dist/features/tui/components/analytics-panel.js +136 -0
  113. package/dist/features/tui/components/analytics-panel.js.map +7 -0
  114. package/dist/features/tui/components/frame-visualizer.js +377 -0
  115. package/dist/features/tui/components/frame-visualizer.js.map +7 -0
  116. package/dist/features/tui/components/pr-tracker.js +123 -0
  117. package/dist/features/tui/components/pr-tracker.js.map +7 -0
  118. package/dist/features/tui/components/session-monitor.js +286 -0
  119. package/dist/features/tui/components/session-monitor.js.map +7 -0
  120. package/dist/features/tui/components/subagent-fleet.js +388 -0
  121. package/dist/features/tui/components/subagent-fleet.js.map +7 -0
  122. package/dist/features/tui/components/task-board.js +475 -0
  123. package/dist/features/tui/components/task-board.js.map +7 -0
  124. package/dist/features/tui/index.js +397 -0
  125. package/dist/features/tui/index.js.map +7 -0
  126. package/dist/features/tui/services/data-service.js +654 -0
  127. package/dist/features/tui/services/data-service.js.map +7 -0
  128. package/dist/features/tui/services/websocket-client.js +149 -0
  129. package/dist/features/tui/services/websocket-client.js.map +7 -0
  130. package/dist/features/tui/terminal-compat.js +205 -0
  131. package/dist/features/tui/terminal-compat.js.map +7 -0
  132. package/dist/features/tui/types.js +1 -0
  133. package/dist/features/tui/types.js.map +7 -0
  134. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +455 -0
  135. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  136. package/dist/integrations/claude-code/lifecycle-hooks.js +250 -0
  137. package/dist/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  138. package/dist/integrations/claude-code/post-task-hooks.js +541 -0
  139. package/dist/integrations/claude-code/post-task-hooks.js.map +7 -0
  140. package/dist/integrations/linear/client.js +22 -4
  141. package/dist/integrations/linear/client.js.map +2 -2
  142. package/dist/integrations/linear/migration.js +299 -0
  143. package/dist/integrations/linear/migration.js.map +7 -0
  144. package/dist/integrations/linear/oauth-server.js +396 -0
  145. package/dist/integrations/linear/oauth-server.js.map +7 -0
  146. package/dist/integrations/linear/rest-client.js +199 -0
  147. package/dist/integrations/linear/rest-client.js.map +7 -0
  148. package/dist/integrations/linear/sync.js +14 -2
  149. package/dist/integrations/linear/sync.js.map +2 -2
  150. package/dist/integrations/linear/webhook-handler.js +200 -0
  151. package/dist/integrations/linear/webhook-handler.js.map +7 -0
  152. package/dist/integrations/mcp/handlers/skill-handlers.js +514 -0
  153. package/dist/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  154. package/dist/integrations/mcp/middleware/tool-scoring.js +352 -0
  155. package/dist/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  156. package/dist/integrations/mcp/refactored-server.js +31 -3
  157. package/dist/integrations/mcp/refactored-server.js.map +2 -2
  158. package/dist/integrations/mcp/server.js +25 -7
  159. package/dist/integrations/mcp/server.js.map +2 -2
  160. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  161. package/dist/models/user.model.js +3 -0
  162. package/dist/models/user.model.js.map +2 -2
  163. package/dist/services/context-service.js.map +2 -2
  164. package/dist/skills/claude-skills.js +666 -0
  165. package/dist/skills/claude-skills.js.map +7 -0
  166. package/dist/utils/formatting.js +58 -0
  167. package/dist/utils/formatting.js.map +7 -0
  168. package/package.json +30 -24
  169. package/dist/cli/__tests__/index.test.js +0 -290
  170. package/dist/cli/__tests__/index.test.js.map +0 -7
  171. package/dist/core/config/__tests__/config-manager.test.js +0 -248
  172. package/dist/core/config/__tests__/config-manager.test.js.map +0 -7
  173. package/dist/core/context/__tests__/frame-manager.test.js +0 -879
  174. package/dist/core/context/__tests__/frame-manager.test.js.map +0 -7
  175. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js +0 -379
  176. package/dist/core/digest/__tests__/enhanced-hybrid-digest.test.js.map +0 -7
  177. package/dist/core/digest/__tests__/frame-digest-integration.test.js +0 -230
  178. package/dist/core/digest/__tests__/frame-digest-integration.test.js.map +0 -7
  179. package/dist/core/errors/__tests__/error-handling.test.js +0 -270
  180. package/dist/core/errors/__tests__/error-handling.test.js.map +0 -7
  181. package/dist/core/merge/__tests__/conflict-scenarios.test.js +0 -414
  182. package/dist/core/merge/__tests__/conflict-scenarios.test.js.map +0 -7
  183. package/dist/core/query/__tests__/query-parser.test.js +0 -301
  184. package/dist/core/query/__tests__/query-parser.test.js.map +0 -7
  185. package/dist/core/query/__tests__/query-templates.test.js +0 -210
  186. package/dist/core/query/__tests__/query-templates.test.js.map +0 -7
  187. package/dist/core/trace/trace-detector.test.js +0 -401
  188. package/dist/core/trace/trace-detector.test.js.map +0 -7
  189. package/dist/features/tasks/__tests__/pebbles-task-store.test.js +0 -747
  190. package/dist/features/tasks/__tests__/pebbles-task-store.test.js.map +0 -7
  191. package/dist/integrations/linear/__tests__/auth.test.js +0 -558
  192. package/dist/integrations/linear/__tests__/auth.test.js.map +0 -7
  193. package/dist/integrations/linear/__tests__/sync-service.test.js +0 -760
  194. package/dist/integrations/linear/__tests__/sync-service.test.js.map +0 -7
  195. package/dist/integrations/mcp/__tests__/server.test.js +0 -798
  196. package/dist/integrations/mcp/__tests__/server.test.js.map +0 -7
  197. package/dist/scripts/benchmark-performance.d.ts +0 -7
  198. package/dist/scripts/benchmark-performance.d.ts.map +0 -1
  199. package/dist/scripts/benchmark-performance.js +0 -44
  200. package/dist/scripts/benchmark-performance.js.map +0 -1
  201. package/dist/scripts/cancel-duplicate-tasks.d.ts +0 -7
  202. package/dist/scripts/cancel-duplicate-tasks.d.ts.map +0 -1
  203. package/dist/scripts/cancel-duplicate-tasks.js +0 -172
  204. package/dist/scripts/cancel-duplicate-tasks.js.map +0 -1
  205. package/dist/scripts/cleanup-duplicate-tasks.d.ts +0 -12
  206. package/dist/scripts/cleanup-duplicate-tasks.d.ts.map +0 -1
  207. package/dist/scripts/cleanup-duplicate-tasks.js +0 -215
  208. package/dist/scripts/cleanup-duplicate-tasks.js.map +0 -1
  209. package/dist/scripts/initialize.d.ts +0 -6
  210. package/dist/scripts/initialize.d.ts.map +0 -1
  211. package/dist/scripts/initialize.js +0 -93
  212. package/dist/scripts/initialize.js.map +0 -1
  213. package/dist/scripts/list-linear-tasks.d.ts +0 -6
  214. package/dist/scripts/list-linear-tasks.d.ts.map +0 -1
  215. package/dist/scripts/list-linear-tasks.js +0 -121
  216. package/dist/scripts/list-linear-tasks.js.map +0 -1
  217. package/dist/scripts/merge-linear-duplicates-safe.d.ts +0 -7
  218. package/dist/scripts/merge-linear-duplicates-safe.d.ts.map +0 -1
  219. package/dist/scripts/merge-linear-duplicates-safe.js +0 -267
  220. package/dist/scripts/merge-linear-duplicates-safe.js.map +0 -1
  221. package/dist/scripts/show-linear-summary.d.ts +0 -6
  222. package/dist/scripts/show-linear-summary.d.ts.map +0 -1
  223. package/dist/scripts/show-linear-summary.js +0 -120
  224. package/dist/scripts/show-linear-summary.js.map +0 -1
  225. package/dist/scripts/status.d.ts +0 -6
  226. package/dist/scripts/status.d.ts.map +0 -1
  227. package/dist/scripts/status.js +0 -101
  228. package/dist/scripts/status.js.map +0 -1
  229. package/dist/src/agents/core/agent-task-manager.d.ts +0 -154
  230. package/dist/src/agents/core/agent-task-manager.d.ts.map +0 -1
  231. package/dist/src/agents/core/agent-task-manager.js +0 -504
  232. package/dist/src/agents/core/agent-task-manager.js.map +0 -1
  233. package/dist/src/agents/verifiers/base-verifier.d.ts +0 -112
  234. package/dist/src/agents/verifiers/base-verifier.d.ts.map +0 -1
  235. package/dist/src/agents/verifiers/base-verifier.js +0 -130
  236. package/dist/src/agents/verifiers/base-verifier.js.map +0 -1
  237. package/dist/src/agents/verifiers/formatter-verifier.d.ts +0 -14
  238. package/dist/src/agents/verifiers/formatter-verifier.d.ts.map +0 -1
  239. package/dist/src/agents/verifiers/formatter-verifier.js +0 -107
  240. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -1
  241. package/dist/src/agents/verifiers/llm-judge.d.ts +0 -46
  242. package/dist/src/agents/verifiers/llm-judge.d.ts.map +0 -1
  243. package/dist/src/agents/verifiers/llm-judge.js +0 -248
  244. package/dist/src/agents/verifiers/llm-judge.js.map +0 -1
  245. package/dist/src/cli/auto-detect.d.ts +0 -61
  246. package/dist/src/cli/auto-detect.d.ts.map +0 -1
  247. package/dist/src/cli/auto-detect.js +0 -350
  248. package/dist/src/cli/auto-detect.js.map +0 -1
  249. package/dist/src/cli/browser-test.d.ts +0 -6
  250. package/dist/src/cli/browser-test.d.ts.map +0 -1
  251. package/dist/src/cli/browser-test.js +0 -32
  252. package/dist/src/cli/browser-test.js.map +0 -1
  253. package/dist/src/cli/claude-sm.d.ts +0 -7
  254. package/dist/src/cli/claude-sm.d.ts.map +0 -1
  255. package/dist/src/cli/claude-sm.js +0 -412
  256. package/dist/src/cli/claude-sm.js.map +0 -1
  257. package/dist/src/cli/commands/agent.d.ts +0 -9
  258. package/dist/src/cli/commands/agent.d.ts.map +0 -1
  259. package/dist/src/cli/commands/agent.js +0 -303
  260. package/dist/src/cli/commands/agent.js.map +0 -1
  261. package/dist/src/cli/commands/config.d.ts +0 -6
  262. package/dist/src/cli/commands/config.d.ts.map +0 -1
  263. package/dist/src/cli/commands/config.js +0 -224
  264. package/dist/src/cli/commands/config.js.map +0 -1
  265. package/dist/src/cli/commands/context.d.ts +0 -7
  266. package/dist/src/cli/commands/context.d.ts.map +0 -1
  267. package/dist/src/cli/commands/context.js +0 -365
  268. package/dist/src/cli/commands/context.js.map +0 -1
  269. package/dist/src/cli/commands/handoff.d.ts +0 -6
  270. package/dist/src/cli/commands/handoff.d.ts.map +0 -1
  271. package/dist/src/cli/commands/handoff.js +0 -212
  272. package/dist/src/cli/commands/handoff.js.map +0 -1
  273. package/dist/src/cli/commands/linear-test.d.ts +0 -6
  274. package/dist/src/cli/commands/linear-test.d.ts.map +0 -1
  275. package/dist/src/cli/commands/linear-test.js +0 -123
  276. package/dist/src/cli/commands/linear-test.js.map +0 -1
  277. package/dist/src/cli/commands/linear.d.ts +0 -6
  278. package/dist/src/cli/commands/linear.d.ts.map +0 -1
  279. package/dist/src/cli/commands/linear.js +0 -393
  280. package/dist/src/cli/commands/linear.js.map +0 -1
  281. package/dist/src/cli/commands/log.d.ts +0 -7
  282. package/dist/src/cli/commands/log.d.ts.map +0 -1
  283. package/dist/src/cli/commands/log.js +0 -168
  284. package/dist/src/cli/commands/log.js.map +0 -1
  285. package/dist/src/cli/commands/onboard.d.ts +0 -8
  286. package/dist/src/cli/commands/onboard.d.ts.map +0 -1
  287. package/dist/src/cli/commands/onboard.js +0 -363
  288. package/dist/src/cli/commands/onboard.js.map +0 -1
  289. package/dist/src/cli/commands/projects.d.ts +0 -8
  290. package/dist/src/cli/commands/projects.d.ts.map +0 -1
  291. package/dist/src/cli/commands/projects.js +0 -220
  292. package/dist/src/cli/commands/projects.js.map +0 -1
  293. package/dist/src/cli/commands/search.d.ts +0 -7
  294. package/dist/src/cli/commands/search.d.ts.map +0 -1
  295. package/dist/src/cli/commands/search.js +0 -162
  296. package/dist/src/cli/commands/search.js.map +0 -1
  297. package/dist/src/cli/commands/session.d.ts +0 -7
  298. package/dist/src/cli/commands/session.d.ts.map +0 -1
  299. package/dist/src/cli/commands/session.js +0 -222
  300. package/dist/src/cli/commands/session.js.map +0 -1
  301. package/dist/src/cli/commands/tasks.d.ts +0 -7
  302. package/dist/src/cli/commands/tasks.d.ts.map +0 -1
  303. package/dist/src/cli/commands/tasks.js +0 -229
  304. package/dist/src/cli/commands/tasks.js.map +0 -1
  305. package/dist/src/cli/commands/webhook.d.ts +0 -3
  306. package/dist/src/cli/commands/webhook.d.ts.map +0 -1
  307. package/dist/src/cli/commands/webhook.js +0 -157
  308. package/dist/src/cli/commands/webhook.js.map +0 -1
  309. package/dist/src/cli/commands/worktree.d.ts +0 -8
  310. package/dist/src/cli/commands/worktree.d.ts.map +0 -1
  311. package/dist/src/cli/commands/worktree.js +0 -339
  312. package/dist/src/cli/commands/worktree.js.map +0 -1
  313. package/dist/src/cli/index.d.ts +0 -8
  314. package/dist/src/cli/index.d.ts.map +0 -1
  315. package/dist/src/cli/index.js +0 -995
  316. package/dist/src/cli/index.js.map +0 -1
  317. package/dist/src/cli/utils/viewer.d.ts +0 -3
  318. package/dist/src/cli/utils/viewer.d.ts.map +0 -1
  319. package/dist/src/cli/utils/viewer.js +0 -91
  320. package/dist/src/cli/utils/viewer.js.map +0 -1
  321. package/dist/src/core/config/config-manager.d.ts +0 -95
  322. package/dist/src/core/config/config-manager.d.ts.map +0 -1
  323. package/dist/src/core/config/config-manager.js +0 -359
  324. package/dist/src/core/config/config-manager.js.map +0 -1
  325. package/dist/src/core/config/types.d.ts +0 -72
  326. package/dist/src/core/config/types.d.ts.map +0 -1
  327. package/dist/src/core/config/types.js +0 -127
  328. package/dist/src/core/config/types.js.map +0 -1
  329. package/dist/src/core/context/auto-context.d.ts +0 -22
  330. package/dist/src/core/context/auto-context.d.ts.map +0 -1
  331. package/dist/src/core/context/auto-context.js +0 -77
  332. package/dist/src/core/context/auto-context.js.map +0 -1
  333. package/dist/src/core/context/compaction-handler.d.ts +0 -119
  334. package/dist/src/core/context/compaction-handler.d.ts.map +0 -1
  335. package/dist/src/core/context/compaction-handler.js +0 -306
  336. package/dist/src/core/context/compaction-handler.js.map +0 -1
  337. package/dist/src/core/context/frame-database.d.ts +0 -59
  338. package/dist/src/core/context/frame-database.d.ts.map +0 -1
  339. package/dist/src/core/context/frame-database.js +0 -333
  340. package/dist/src/core/context/frame-database.js.map +0 -1
  341. package/dist/src/core/context/frame-digest.d.ts +0 -59
  342. package/dist/src/core/context/frame-digest.d.ts.map +0 -1
  343. package/dist/src/core/context/frame-digest.js +0 -264
  344. package/dist/src/core/context/frame-digest.js.map +0 -1
  345. package/dist/src/core/context/frame-manager.d.ts +0 -112
  346. package/dist/src/core/context/frame-manager.d.ts.map +0 -1
  347. package/dist/src/core/context/frame-manager.js +0 -600
  348. package/dist/src/core/context/frame-manager.js.map +0 -1
  349. package/dist/src/core/context/frame-stack.d.ts +0 -85
  350. package/dist/src/core/context/frame-stack.d.ts.map +0 -1
  351. package/dist/src/core/context/frame-stack.js +0 -287
  352. package/dist/src/core/context/frame-stack.js.map +0 -1
  353. package/dist/src/core/context/frame-types.d.ts +0 -67
  354. package/dist/src/core/context/frame-types.d.ts.map +0 -1
  355. package/dist/src/core/context/frame-types.js +0 -6
  356. package/dist/src/core/context/frame-types.js.map +0 -1
  357. package/dist/src/core/context/index.d.ts +0 -11
  358. package/dist/src/core/context/index.d.ts.map +0 -1
  359. package/dist/src/core/context/index.js +0 -14
  360. package/dist/src/core/context/index.js.map +0 -1
  361. package/dist/src/core/context/model-aware-compaction.d.ts +0 -101
  362. package/dist/src/core/context/model-aware-compaction.d.ts.map +0 -1
  363. package/dist/src/core/context/model-aware-compaction.js +0 -616
  364. package/dist/src/core/context/model-aware-compaction.js.map +0 -1
  365. package/dist/src/core/context/refactored-frame-manager.d.ts +0 -99
  366. package/dist/src/core/context/refactored-frame-manager.d.ts.map +0 -1
  367. package/dist/src/core/context/refactored-frame-manager.js +0 -340
  368. package/dist/src/core/context/refactored-frame-manager.js.map +0 -1
  369. package/dist/src/core/database/batch-operations.d.ts +0 -118
  370. package/dist/src/core/database/batch-operations.d.ts.map +0 -1
  371. package/dist/src/core/database/batch-operations.js +0 -339
  372. package/dist/src/core/database/batch-operations.js.map +0 -1
  373. package/dist/src/core/database/connection-pool.d.ts +0 -79
  374. package/dist/src/core/database/connection-pool.d.ts.map +0 -1
  375. package/dist/src/core/database/connection-pool.js +0 -236
  376. package/dist/src/core/database/connection-pool.js.map +0 -1
  377. package/dist/src/core/database/query-cache.d.ts +0 -135
  378. package/dist/src/core/database/query-cache.d.ts.map +0 -1
  379. package/dist/src/core/database/query-cache.js +0 -294
  380. package/dist/src/core/database/query-cache.js.map +0 -1
  381. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts +0 -125
  382. package/dist/src/core/digest/enhanced-hybrid-digest.d.ts.map +0 -1
  383. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -282
  384. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -1
  385. package/dist/src/core/digest/frame-digest-integration.d.ts +0 -67
  386. package/dist/src/core/digest/frame-digest-integration.d.ts.map +0 -1
  387. package/dist/src/core/digest/frame-digest-integration.js +0 -198
  388. package/dist/src/core/digest/frame-digest-integration.js.map +0 -1
  389. package/dist/src/core/digest/hybrid-digest-generator.d.ts +0 -76
  390. package/dist/src/core/digest/hybrid-digest-generator.d.ts.map +0 -1
  391. package/dist/src/core/digest/hybrid-digest-generator.js +0 -629
  392. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -1
  393. package/dist/src/core/digest/index.d.ts +0 -9
  394. package/dist/src/core/digest/index.d.ts.map +0 -1
  395. package/dist/src/core/digest/index.js +0 -9
  396. package/dist/src/core/digest/index.js.map +0 -1
  397. package/dist/src/core/digest/types.d.ts +0 -154
  398. package/dist/src/core/digest/types.d.ts.map +0 -1
  399. package/dist/src/core/digest/types.js +0 -18
  400. package/dist/src/core/digest/types.js.map +0 -1
  401. package/dist/src/core/errors/index.d.ts +0 -143
  402. package/dist/src/core/errors/index.d.ts.map +0 -1
  403. package/dist/src/core/errors/index.js +0 -282
  404. package/dist/src/core/errors/index.js.map +0 -1
  405. package/dist/src/core/errors/recovery.d.ts +0 -86
  406. package/dist/src/core/errors/recovery.d.ts.map +0 -1
  407. package/dist/src/core/errors/recovery.js +0 -274
  408. package/dist/src/core/errors/recovery.js.map +0 -1
  409. package/dist/src/core/merge/conflict-detector.d.ts +0 -122
  410. package/dist/src/core/merge/conflict-detector.d.ts.map +0 -1
  411. package/dist/src/core/merge/conflict-detector.js +0 -468
  412. package/dist/src/core/merge/conflict-detector.js.map +0 -1
  413. package/dist/src/core/merge/index.d.ts +0 -9
  414. package/dist/src/core/merge/index.d.ts.map +0 -1
  415. package/dist/src/core/merge/index.js +0 -9
  416. package/dist/src/core/merge/index.js.map +0 -1
  417. package/dist/src/core/merge/resolution-engine.d.ts +0 -120
  418. package/dist/src/core/merge/resolution-engine.d.ts.map +0 -1
  419. package/dist/src/core/merge/resolution-engine.js +0 -573
  420. package/dist/src/core/merge/resolution-engine.js.map +0 -1
  421. package/dist/src/core/merge/stack-diff.d.ts +0 -97
  422. package/dist/src/core/merge/stack-diff.d.ts.map +0 -1
  423. package/dist/src/core/merge/stack-diff.js +0 -516
  424. package/dist/src/core/merge/stack-diff.js.map +0 -1
  425. package/dist/src/core/merge/types.d.ts +0 -110
  426. package/dist/src/core/merge/types.d.ts.map +0 -1
  427. package/dist/src/core/merge/types.js +0 -6
  428. package/dist/src/core/merge/types.js.map +0 -1
  429. package/dist/src/core/monitoring/error-handler.d.ts +0 -46
  430. package/dist/src/core/monitoring/error-handler.d.ts.map +0 -1
  431. package/dist/src/core/monitoring/error-handler.js +0 -212
  432. package/dist/src/core/monitoring/error-handler.js.map +0 -1
  433. package/dist/src/core/monitoring/logger.d.ts +0 -24
  434. package/dist/src/core/monitoring/logger.d.ts.map +0 -1
  435. package/dist/src/core/monitoring/logger.js +0 -126
  436. package/dist/src/core/monitoring/logger.js.map +0 -1
  437. package/dist/src/core/monitoring/metrics.d.ts +0 -10
  438. package/dist/src/core/monitoring/metrics.d.ts.map +0 -1
  439. package/dist/src/core/monitoring/metrics.js +0 -152
  440. package/dist/src/core/monitoring/metrics.js.map +0 -1
  441. package/dist/src/core/monitoring/progress-tracker.d.ts +0 -95
  442. package/dist/src/core/monitoring/progress-tracker.d.ts.map +0 -1
  443. package/dist/src/core/monitoring/progress-tracker.js +0 -178
  444. package/dist/src/core/monitoring/progress-tracker.js.map +0 -1
  445. package/dist/src/core/performance/context-cache.d.ts +0 -109
  446. package/dist/src/core/performance/context-cache.d.ts.map +0 -1
  447. package/dist/src/core/performance/context-cache.js +0 -280
  448. package/dist/src/core/performance/context-cache.js.map +0 -1
  449. package/dist/src/core/performance/index.d.ts +0 -3
  450. package/dist/src/core/performance/index.d.ts.map +0 -1
  451. package/dist/src/core/performance/index.js +0 -3
  452. package/dist/src/core/performance/index.js.map +0 -1
  453. package/dist/src/core/performance/lazy-context-loader.d.ts +0 -93
  454. package/dist/src/core/performance/lazy-context-loader.d.ts.map +0 -1
  455. package/dist/src/core/performance/lazy-context-loader.js +0 -332
  456. package/dist/src/core/performance/lazy-context-loader.js.map +0 -1
  457. package/dist/src/core/performance/monitor.d.ts +0 -48
  458. package/dist/src/core/performance/monitor.d.ts.map +0 -1
  459. package/dist/src/core/performance/monitor.js +0 -226
  460. package/dist/src/core/performance/monitor.js.map +0 -1
  461. package/dist/src/core/performance/optimized-frame-context.d.ts +0 -74
  462. package/dist/src/core/performance/optimized-frame-context.d.ts.map +0 -1
  463. package/dist/src/core/performance/optimized-frame-context.js +0 -330
  464. package/dist/src/core/performance/optimized-frame-context.js.map +0 -1
  465. package/dist/src/core/performance/performance-benchmark.d.ts +0 -50
  466. package/dist/src/core/performance/performance-benchmark.d.ts.map +0 -1
  467. package/dist/src/core/performance/performance-benchmark.js +0 -290
  468. package/dist/src/core/performance/performance-benchmark.js.map +0 -1
  469. package/dist/src/core/performance/performance-profiler.d.ts +0 -151
  470. package/dist/src/core/performance/performance-profiler.d.ts.map +0 -1
  471. package/dist/src/core/performance/performance-profiler.js +0 -346
  472. package/dist/src/core/performance/performance-profiler.js.map +0 -1
  473. package/dist/src/core/performance/streaming-jsonl-parser.d.ts +0 -41
  474. package/dist/src/core/performance/streaming-jsonl-parser.d.ts.map +0 -1
  475. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -193
  476. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -1
  477. package/dist/src/core/persistence/postgres-adapter.d.ts +0 -31
  478. package/dist/src/core/persistence/postgres-adapter.d.ts.map +0 -1
  479. package/dist/src/core/persistence/postgres-adapter.js +0 -330
  480. package/dist/src/core/persistence/postgres-adapter.js.map +0 -1
  481. package/dist/src/core/projects/project-manager.d.ts +0 -130
  482. package/dist/src/core/projects/project-manager.d.ts.map +0 -1
  483. package/dist/src/core/projects/project-manager.js +0 -709
  484. package/dist/src/core/projects/project-manager.js.map +0 -1
  485. package/dist/src/core/query/query-parser.d.ts +0 -109
  486. package/dist/src/core/query/query-parser.d.ts.map +0 -1
  487. package/dist/src/core/query/query-parser.js +0 -415
  488. package/dist/src/core/query/query-parser.js.map +0 -1
  489. package/dist/src/core/query/query-templates.d.ts +0 -44
  490. package/dist/src/core/query/query-templates.d.ts.map +0 -1
  491. package/dist/src/core/query/query-templates.js +0 -326
  492. package/dist/src/core/query/query-templates.js.map +0 -1
  493. package/dist/src/core/retrieval/index.d.ts +0 -8
  494. package/dist/src/core/retrieval/index.d.ts.map +0 -1
  495. package/dist/src/core/retrieval/index.js +0 -8
  496. package/dist/src/core/retrieval/index.js.map +0 -1
  497. package/dist/src/core/retrieval/llm-context-retrieval.d.ts +0 -73
  498. package/dist/src/core/retrieval/llm-context-retrieval.d.ts.map +0 -1
  499. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -597
  500. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -1
  501. package/dist/src/core/retrieval/summary-generator.d.ts +0 -63
  502. package/dist/src/core/retrieval/summary-generator.d.ts.map +0 -1
  503. package/dist/src/core/retrieval/summary-generator.js +0 -622
  504. package/dist/src/core/retrieval/summary-generator.js.map +0 -1
  505. package/dist/src/core/retrieval/types.d.ts +0 -257
  506. package/dist/src/core/retrieval/types.d.ts.map +0 -1
  507. package/dist/src/core/retrieval/types.js +0 -18
  508. package/dist/src/core/retrieval/types.js.map +0 -1
  509. package/dist/src/core/session/index.d.ts +0 -2
  510. package/dist/src/core/session/index.d.ts.map +0 -1
  511. package/dist/src/core/session/index.js +0 -2
  512. package/dist/src/core/session/index.js.map +0 -1
  513. package/dist/src/core/session/session-manager.d.ts +0 -69
  514. package/dist/src/core/session/session-manager.d.ts.map +0 -1
  515. package/dist/src/core/session/session-manager.js +0 -311
  516. package/dist/src/core/session/session-manager.js.map +0 -1
  517. package/dist/src/core/trace/cli-trace-wrapper.d.ts +0 -23
  518. package/dist/src/core/trace/cli-trace-wrapper.d.ts.map +0 -1
  519. package/dist/src/core/trace/cli-trace-wrapper.js +0 -141
  520. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -1
  521. package/dist/src/core/trace/db-trace-wrapper.d.ts +0 -36
  522. package/dist/src/core/trace/db-trace-wrapper.d.ts.map +0 -1
  523. package/dist/src/core/trace/db-trace-wrapper.js +0 -252
  524. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -1
  525. package/dist/src/core/trace/debug-trace.d.ts +0 -84
  526. package/dist/src/core/trace/debug-trace.d.ts.map +0 -1
  527. package/dist/src/core/trace/debug-trace.js +0 -402
  528. package/dist/src/core/trace/debug-trace.js.map +0 -1
  529. package/dist/src/core/trace/error-test.d.ts +0 -6
  530. package/dist/src/core/trace/error-test.d.ts.map +0 -1
  531. package/dist/src/core/trace/error-test.js +0 -128
  532. package/dist/src/core/trace/error-test.js.map +0 -1
  533. package/dist/src/core/trace/index.d.ts +0 -25
  534. package/dist/src/core/trace/index.d.ts.map +0 -1
  535. package/dist/src/core/trace/index.js +0 -121
  536. package/dist/src/core/trace/index.js.map +0 -1
  537. package/dist/src/core/trace/linear-api-wrapper.d.ts +0 -17
  538. package/dist/src/core/trace/linear-api-wrapper.d.ts.map +0 -1
  539. package/dist/src/core/trace/linear-api-wrapper.js +0 -205
  540. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -1
  541. package/dist/src/core/trace/performance-test.d.ts +0 -6
  542. package/dist/src/core/trace/performance-test.d.ts.map +0 -1
  543. package/dist/src/core/trace/performance-test.js +0 -111
  544. package/dist/src/core/trace/performance-test.js.map +0 -1
  545. package/dist/src/core/trace/trace-demo.d.ts +0 -8
  546. package/dist/src/core/trace/trace-demo.d.ts.map +0 -1
  547. package/dist/src/core/trace/trace-demo.js +0 -154
  548. package/dist/src/core/trace/trace-demo.js.map +0 -1
  549. package/dist/src/core/trace/trace-detector.d.ts +0 -108
  550. package/dist/src/core/trace/trace-detector.d.ts.map +0 -1
  551. package/dist/src/core/trace/trace-detector.demo.d.ts +0 -5
  552. package/dist/src/core/trace/trace-detector.demo.d.ts.map +0 -1
  553. package/dist/src/core/trace/trace-detector.demo.js +0 -145
  554. package/dist/src/core/trace/trace-detector.demo.js.map +0 -1
  555. package/dist/src/core/trace/trace-detector.js +0 -425
  556. package/dist/src/core/trace/trace-detector.js.map +0 -1
  557. package/dist/src/core/trace/trace-store.d.ts +0 -60
  558. package/dist/src/core/trace/trace-store.d.ts.map +0 -1
  559. package/dist/src/core/trace/trace-store.js +0 -323
  560. package/dist/src/core/trace/trace-store.js.map +0 -1
  561. package/dist/src/core/trace/types.d.ts +0 -81
  562. package/dist/src/core/trace/types.d.ts.map +0 -1
  563. package/dist/src/core/trace/types.js +0 -70
  564. package/dist/src/core/trace/types.js.map +0 -1
  565. package/dist/src/core/types.d.ts +0 -35
  566. package/dist/src/core/types.d.ts.map +0 -1
  567. package/dist/src/core/types.js +0 -2
  568. package/dist/src/core/types.js.map +0 -1
  569. package/dist/src/core/utils/update-checker.d.ts +0 -38
  570. package/dist/src/core/utils/update-checker.d.ts.map +0 -1
  571. package/dist/src/core/utils/update-checker.js +0 -213
  572. package/dist/src/core/utils/update-checker.js.map +0 -1
  573. package/dist/src/core/worktree/worktree-manager.d.ts +0 -110
  574. package/dist/src/core/worktree/worktree-manager.d.ts.map +0 -1
  575. package/dist/src/core/worktree/worktree-manager.js +0 -456
  576. package/dist/src/core/worktree/worktree-manager.js.map +0 -1
  577. package/dist/src/features/analytics/api/analytics-api.d.ts +0 -24
  578. package/dist/src/features/analytics/api/analytics-api.d.ts.map +0 -1
  579. package/dist/src/features/analytics/api/analytics-api.js +0 -289
  580. package/dist/src/features/analytics/api/analytics-api.js.map +0 -1
  581. package/dist/src/features/analytics/core/analytics-service.d.ts +0 -29
  582. package/dist/src/features/analytics/core/analytics-service.d.ts.map +0 -1
  583. package/dist/src/features/analytics/core/analytics-service.js +0 -275
  584. package/dist/src/features/analytics/core/analytics-service.js.map +0 -1
  585. package/dist/src/features/analytics/index.d.ts +0 -12
  586. package/dist/src/features/analytics/index.d.ts.map +0 -1
  587. package/dist/src/features/analytics/index.js +0 -11
  588. package/dist/src/features/analytics/index.js.map +0 -1
  589. package/dist/src/features/analytics/queries/metrics-queries.d.ts +0 -11
  590. package/dist/src/features/analytics/queries/metrics-queries.d.ts.map +0 -1
  591. package/dist/src/features/analytics/queries/metrics-queries.js +0 -240
  592. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -1
  593. package/dist/src/features/analytics/types/metrics.d.ts +0 -60
  594. package/dist/src/features/analytics/types/metrics.d.ts.map +0 -1
  595. package/dist/src/features/analytics/types/metrics.js +0 -2
  596. package/dist/src/features/analytics/types/metrics.js.map +0 -1
  597. package/dist/src/features/browser/browser-mcp.d.ts +0 -94
  598. package/dist/src/features/browser/browser-mcp.d.ts.map +0 -1
  599. package/dist/src/features/browser/browser-mcp.js +0 -459
  600. package/dist/src/features/browser/browser-mcp.js.map +0 -1
  601. package/dist/src/features/tasks/pebbles-task-store.d.ts +0 -128
  602. package/dist/src/features/tasks/pebbles-task-store.d.ts.map +0 -1
  603. package/dist/src/features/tasks/pebbles-task-store.js +0 -572
  604. package/dist/src/features/tasks/pebbles-task-store.js.map +0 -1
  605. package/dist/src/features/tasks/task-aware-context.d.ts +0 -103
  606. package/dist/src/features/tasks/task-aware-context.d.ts.map +0 -1
  607. package/dist/src/features/tasks/task-aware-context.js +0 -412
  608. package/dist/src/features/tasks/task-aware-context.js.map +0 -1
  609. package/dist/src/index.d.ts +0 -21
  610. package/dist/src/index.d.ts.map +0 -1
  611. package/dist/src/index.js +0 -9
  612. package/dist/src/index.js.map +0 -1
  613. package/dist/src/integrations/linear/auth.d.ts +0 -99
  614. package/dist/src/integrations/linear/auth.d.ts.map +0 -1
  615. package/dist/src/integrations/linear/auth.js +0 -319
  616. package/dist/src/integrations/linear/auth.js.map +0 -1
  617. package/dist/src/integrations/linear/auto-sync.d.ts +0 -77
  618. package/dist/src/integrations/linear/auto-sync.d.ts.map +0 -1
  619. package/dist/src/integrations/linear/auto-sync.js +0 -268
  620. package/dist/src/integrations/linear/auto-sync.js.map +0 -1
  621. package/dist/src/integrations/linear/client.d.ts +0 -127
  622. package/dist/src/integrations/linear/client.d.ts.map +0 -1
  623. package/dist/src/integrations/linear/client.js +0 -446
  624. package/dist/src/integrations/linear/client.js.map +0 -1
  625. package/dist/src/integrations/linear/config.d.ts +0 -51
  626. package/dist/src/integrations/linear/config.d.ts.map +0 -1
  627. package/dist/src/integrations/linear/config.js +0 -103
  628. package/dist/src/integrations/linear/config.js.map +0 -1
  629. package/dist/src/integrations/linear/sync-manager.d.ts +0 -78
  630. package/dist/src/integrations/linear/sync-manager.d.ts.map +0 -1
  631. package/dist/src/integrations/linear/sync-manager.js +0 -235
  632. package/dist/src/integrations/linear/sync-manager.js.map +0 -1
  633. package/dist/src/integrations/linear/sync-service.d.ts +0 -46
  634. package/dist/src/integrations/linear/sync-service.d.ts.map +0 -1
  635. package/dist/src/integrations/linear/sync-service.js +0 -217
  636. package/dist/src/integrations/linear/sync-service.js.map +0 -1
  637. package/dist/src/integrations/linear/sync.d.ts +0 -125
  638. package/dist/src/integrations/linear/sync.d.ts.map +0 -1
  639. package/dist/src/integrations/linear/sync.js +0 -563
  640. package/dist/src/integrations/linear/sync.js.map +0 -1
  641. package/dist/src/integrations/linear/types.d.ts +0 -90
  642. package/dist/src/integrations/linear/types.d.ts.map +0 -1
  643. package/dist/src/integrations/linear/types.js +0 -2
  644. package/dist/src/integrations/linear/types.js.map +0 -1
  645. package/dist/src/integrations/linear/webhook-server.d.ts +0 -32
  646. package/dist/src/integrations/linear/webhook-server.d.ts.map +0 -1
  647. package/dist/src/integrations/linear/webhook-server.js +0 -190
  648. package/dist/src/integrations/linear/webhook-server.js.map +0 -1
  649. package/dist/src/integrations/linear/webhook.d.ts +0 -108
  650. package/dist/src/integrations/linear/webhook.d.ts.map +0 -1
  651. package/dist/src/integrations/linear/webhook.js +0 -291
  652. package/dist/src/integrations/linear/webhook.js.map +0 -1
  653. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts +0 -39
  654. package/dist/src/integrations/mcp/handlers/context-handlers.d.ts.map +0 -1
  655. package/dist/src/integrations/mcp/handlers/context-handlers.js +0 -266
  656. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -1
  657. package/dist/src/integrations/mcp/handlers/index.d.ts +0 -37
  658. package/dist/src/integrations/mcp/handlers/index.d.ts.map +0 -1
  659. package/dist/src/integrations/mcp/handlers/index.js +0 -134
  660. package/dist/src/integrations/mcp/handlers/index.js.map +0 -1
  661. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts +0 -33
  662. package/dist/src/integrations/mcp/handlers/linear-handlers.d.ts.map +0 -1
  663. package/dist/src/integrations/mcp/handlers/linear-handlers.js +0 -251
  664. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -1
  665. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts +0 -42
  666. package/dist/src/integrations/mcp/handlers/task-handlers.d.ts.map +0 -1
  667. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -238
  668. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -1
  669. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts +0 -41
  670. package/dist/src/integrations/mcp/handlers/trace-handlers.d.ts.map +0 -1
  671. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -298
  672. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -1
  673. package/dist/src/integrations/mcp/index.d.ts +0 -13
  674. package/dist/src/integrations/mcp/index.d.ts.map +0 -1
  675. package/dist/src/integrations/mcp/index.js +0 -17
  676. package/dist/src/integrations/mcp/index.js.map +0 -1
  677. package/dist/src/integrations/mcp/refactored-server.d.ts +0 -76
  678. package/dist/src/integrations/mcp/refactored-server.d.ts.map +0 -1
  679. package/dist/src/integrations/mcp/refactored-server.js +0 -351
  680. package/dist/src/integrations/mcp/refactored-server.js.map +0 -1
  681. package/dist/src/integrations/mcp/server.d.ts +0 -54
  682. package/dist/src/integrations/mcp/server.d.ts.map +0 -1
  683. package/dist/src/integrations/mcp/server.js +0 -1616
  684. package/dist/src/integrations/mcp/server.js.map +0 -1
  685. package/dist/src/integrations/mcp/tool-definitions.d.ts +0 -44
  686. package/dist/src/integrations/mcp/tool-definitions.d.ts.map +0 -1
  687. package/dist/src/integrations/mcp/tool-definitions.js +0 -563
  688. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -1
  689. package/dist/src/integrations/mcp/trace-test.d.ts +0 -5
  690. package/dist/src/integrations/mcp/trace-test.d.ts.map +0 -1
  691. package/dist/src/integrations/mcp/trace-test.js +0 -54
  692. package/dist/src/integrations/mcp/trace-test.js.map +0 -1
  693. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts +0 -48
  694. package/dist/src/integrations/pg-aiguide/embedding-provider.d.ts.map +0 -1
  695. package/dist/src/integrations/pg-aiguide/embedding-provider.js +0 -190
  696. package/dist/src/integrations/pg-aiguide/embedding-provider.js.map +0 -1
  697. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts +0 -34
  698. package/dist/src/integrations/pg-aiguide/semantic-search.d.ts.map +0 -1
  699. package/dist/src/integrations/pg-aiguide/semantic-search.js +0 -176
  700. package/dist/src/integrations/pg-aiguide/semantic-search.js.map +0 -1
  701. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts +0 -44
  702. package/dist/src/integrations/pg-aiguide/timescale-analytics.d.ts.map +0 -1
  703. package/dist/src/integrations/pg-aiguide/timescale-analytics.js +0 -215
  704. package/dist/src/integrations/pg-aiguide/timescale-analytics.js.map +0 -1
  705. package/dist/src/mcp/stackmemory-mcp-server.d.ts +0 -9
  706. package/dist/src/mcp/stackmemory-mcp-server.d.ts.map +0 -1
  707. package/dist/src/mcp/stackmemory-mcp-server.js +0 -519
  708. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -1
  709. package/dist/src/middleware/exponential-rate-limiter.d.ts +0 -78
  710. package/dist/src/middleware/exponential-rate-limiter.d.ts.map +0 -1
  711. package/dist/src/middleware/exponential-rate-limiter.js +0 -293
  712. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -1
  713. package/dist/src/models/user.model.d.ts +0 -62
  714. package/dist/src/models/user.model.d.ts.map +0 -1
  715. package/dist/src/models/user.model.js +0 -311
  716. package/dist/src/models/user.model.js.map +0 -1
  717. package/dist/src/servers/production/auth-middleware.d.ts +0 -76
  718. package/dist/src/servers/production/auth-middleware.d.ts.map +0 -1
  719. package/dist/src/servers/production/auth-middleware.js +0 -558
  720. package/dist/src/servers/production/auth-middleware.js.map +0 -1
  721. package/dist/src/servers/railway/index.d.ts +0 -7
  722. package/dist/src/servers/railway/index.d.ts.map +0 -1
  723. package/dist/src/servers/railway/index.js +0 -401
  724. package/dist/src/servers/railway/index.js.map +0 -1
  725. package/dist/src/services/config-service.d.ts +0 -44
  726. package/dist/src/services/config-service.d.ts.map +0 -1
  727. package/dist/src/services/config-service.js +0 -61
  728. package/dist/src/services/config-service.js.map +0 -1
  729. package/dist/src/services/context-service.d.ts +0 -17
  730. package/dist/src/services/context-service.d.ts.map +0 -1
  731. package/dist/src/services/context-service.js +0 -173
  732. package/dist/src/services/context-service.js.map +0 -1
  733. package/dist/src/types/task.d.ts +0 -27
  734. package/dist/src/types/task.d.ts.map +0 -1
  735. package/dist/src/types/task.js +0 -2
  736. package/dist/src/types/task.js.map +0 -1
  737. package/dist/src/utils/logger.d.ts +0 -13
  738. package/dist/src/utils/logger.d.ts.map +0 -1
  739. package/dist/src/utils/logger.js +0 -52
  740. package/dist/src/utils/logger.js.map +0 -1
  741. package/dist/src/validation/schemas.d.ts +0 -633
  742. package/dist/src/validation/schemas.d.ts.map +0 -1
  743. package/dist/src/validation/schemas.js +0 -347
  744. package/dist/src/validation/schemas.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/core/errors/index.ts"],
4
- "sourcesContent": ["/**\n * Custom error classes for StackMemory\n * Provides a hierarchy of error types for better error handling and debugging\n */\n\nexport enum ErrorCode {\n // Database errors (1000-1999)\n DB_CONNECTION_FAILED = 'DB_001',\n DB_QUERY_FAILED = 'DB_002',\n DB_TRANSACTION_FAILED = 'DB_003',\n DB_MIGRATION_FAILED = 'DB_004',\n DB_CONSTRAINT_VIOLATION = 'DB_005',\n DB_SCHEMA_ERROR = 'DB_006',\n DB_INSERT_FAILED = 'DB_007',\n DB_UPDATE_FAILED = 'DB_008',\n DB_DELETE_FAILED = 'DB_009',\n\n // Frame errors (2000-2999)\n FRAME_NOT_FOUND = 'FRAME_001',\n FRAME_INVALID_STATE = 'FRAME_002',\n FRAME_PARENT_NOT_FOUND = 'FRAME_003',\n FRAME_CYCLE_DETECTED = 'FRAME_004',\n FRAME_ALREADY_CLOSED = 'FRAME_005',\n FRAME_INIT_FAILED = 'FRAME_006',\n FRAME_INVALID_INPUT = 'FRAME_007',\n FRAME_STACK_OVERFLOW = 'FRAME_008',\n\n // Task errors (3000-3999)\n TASK_NOT_FOUND = 'TASK_001',\n TASK_INVALID_STATE = 'TASK_002',\n TASK_DEPENDENCY_CONFLICT = 'TASK_003',\n TASK_CIRCULAR_DEPENDENCY = 'TASK_004',\n\n // Integration errors (4000-4999)\n LINEAR_AUTH_FAILED = 'LINEAR_001',\n LINEAR_API_ERROR = 'LINEAR_002',\n LINEAR_SYNC_FAILED = 'LINEAR_003',\n LINEAR_WEBHOOK_FAILED = 'LINEAR_004',\n\n // MCP errors (5000-5999)\n MCP_TOOL_NOT_FOUND = 'MCP_001',\n MCP_INVALID_PARAMS = 'MCP_002',\n MCP_EXECUTION_FAILED = 'MCP_003',\n MCP_RATE_LIMITED = 'MCP_004',\n\n // Project errors (6000-6999)\n PROJECT_NOT_FOUND = 'PROJECT_001',\n PROJECT_INVALID_PATH = 'PROJECT_002',\n PROJECT_GIT_ERROR = 'PROJECT_003',\n\n // Validation errors (7000-7999)\n VALIDATION_FAILED = 'VAL_001',\n INVALID_INPUT = 'VAL_002',\n MISSING_REQUIRED_FIELD = 'VAL_003',\n TYPE_MISMATCH = 'VAL_004',\n\n // System errors (8000-8999)\n INITIALIZATION_ERROR = 'SYS_001',\n NOT_FOUND = 'SYS_002',\n INTERNAL_ERROR = 'SYS_003',\n CONFIGURATION_ERROR = 'SYS_004',\n PERMISSION_DENIED = 'SYS_005',\n RESOURCE_EXHAUSTED = 'SYS_006',\n SERVICE_UNAVAILABLE = 'SYS_007',\n SYSTEM_INIT_FAILED = 'SYS_008',\n}\n\nexport interface ErrorContext {\n [key: string]: unknown;\n}\n\nexport interface StackMemoryErrorOptions {\n code: ErrorCode;\n message: string;\n context?: ErrorContext;\n cause?: Error;\n isRetryable?: boolean;\n httpStatus?: number;\n}\n\n/**\n * Base error class for all StackMemory errors\n */\nexport class StackMemoryError extends Error {\n public readonly code: ErrorCode;\n public readonly context?: ErrorContext;\n public readonly cause?: Error;\n public readonly isRetryable: boolean;\n public readonly httpStatus: number;\n public readonly timestamp: Date;\n\n constructor(options: StackMemoryErrorOptions) {\n super(options.message);\n this.name = this.constructor.name;\n this.code = options.code;\n this.context = options.context;\n this.cause = options.cause;\n this.isRetryable = options.isRetryable ?? false;\n this.httpStatus = options.httpStatus ?? 500;\n this.timestamp = new Date();\n\n // Maintains proper stack trace for where our error was thrown\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n context: this.context,\n isRetryable: this.isRetryable,\n httpStatus: this.httpStatus,\n timestamp: this.timestamp.toISOString(),\n stack: this.stack,\n cause: this.cause?.message,\n };\n }\n}\n\n/**\n * Database-related errors\n */\nexport class DatabaseError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.DB_QUERY_FAILED,\n context?: ErrorContext,\n cause?: Error\n ) {\n super({\n code,\n message,\n context,\n cause,\n isRetryable: code === ErrorCode.DB_CONNECTION_FAILED,\n httpStatus: 503,\n });\n }\n}\n\n/**\n * Frame-related errors\n */\nexport class FrameError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.FRAME_INVALID_STATE,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 400,\n });\n }\n}\n\n/**\n * Task-related errors\n */\nexport class TaskError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.TASK_INVALID_STATE,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 400,\n });\n }\n}\n\n/**\n * Integration errors (Linear, etc.)\n */\nexport class IntegrationError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.LINEAR_API_ERROR,\n context?: ErrorContext,\n cause?: Error\n ) {\n super({\n code,\n message,\n context,\n cause,\n isRetryable: true,\n httpStatus: 502,\n });\n }\n}\n\n/**\n * MCP-related errors\n */\nexport class MCPError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.MCP_EXECUTION_FAILED,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: code === ErrorCode.MCP_RATE_LIMITED,\n httpStatus: code === ErrorCode.MCP_RATE_LIMITED ? 429 : 400,\n });\n }\n}\n\n/**\n * Validation errors\n */\nexport class ValidationError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.VALIDATION_FAILED,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 400,\n });\n }\n}\n\n/**\n * Project-related errors\n */\nexport class ProjectError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.PROJECT_NOT_FOUND,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 404,\n });\n }\n}\n\n/**\n * System/Internal errors\n */\nexport class SystemError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.INTERNAL_ERROR,\n context?: ErrorContext,\n cause?: Error\n ) {\n super({\n code,\n message,\n context,\n cause,\n isRetryable: code === ErrorCode.SERVICE_UNAVAILABLE,\n httpStatus: 500,\n });\n }\n}\n\n/**\n * Helper function to determine if an error is retryable\n */\nexport function isRetryableError(error: unknown): boolean {\n if (error instanceof StackMemoryError) {\n return error.isRetryable;\n }\n // Check for common retryable error patterns\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n message.includes('econnrefused') ||\n message.includes('timeout') ||\n message.includes('enotfound') ||\n message.includes('socket hang up')\n );\n }\n return false;\n}\n\n/**\n * Helper function to safely extract error message\n */\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n if (error && typeof error === 'object' && 'message' in error) {\n return String(error.message);\n }\n return 'An unknown error occurred';\n}\n\n/**\n * Helper function to wrap unknown errors in StackMemoryError\n */\nexport function wrapError(\n error: unknown,\n defaultMessage: string,\n code: ErrorCode = ErrorCode.INTERNAL_ERROR,\n context?: ErrorContext\n): StackMemoryError {\n if (error instanceof StackMemoryError) {\n return error;\n }\n\n const cause = error instanceof Error ? error : undefined;\n const message = error instanceof Error ? error.message : defaultMessage;\n\n return new SystemError(message, code, context, cause);\n}\n\n/**\n * Type guard to check if error is a StackMemoryError\n */\nexport function isStackMemoryError(error: unknown): error is StackMemoryError {\n return error instanceof StackMemoryError;\n}\n\n/**\n * Create context-aware error handler\n */\nexport function createErrorHandler(defaultContext: ErrorContext) {\n return (error: unknown, additionalContext?: ErrorContext) => {\n const context = { ...defaultContext, ...additionalContext };\n \n if (error instanceof StackMemoryError) {\n // Create a new error with merged context since context is readonly\n return new StackMemoryError({\n code: error.code,\n message: error.message,\n context: { ...error.context, ...context },\n cause: error.cause,\n isRetryable: error.isRetryable,\n httpStatus: error.httpStatus,\n });\n }\n\n return wrapError(error, getErrorMessage(error), ErrorCode.INTERNAL_ERROR, context);\n };\n}"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Custom error classes for StackMemory\n * Provides a hierarchy of error types for better error handling and debugging\n */\n\nexport enum ErrorCode {\n // Database errors (1000-1999)\n DB_CONNECTION_FAILED = 'DB_001',\n DB_QUERY_FAILED = 'DB_002',\n DB_TRANSACTION_FAILED = 'DB_003',\n DB_MIGRATION_FAILED = 'DB_004',\n DB_CONSTRAINT_VIOLATION = 'DB_005',\n DB_SCHEMA_ERROR = 'DB_006',\n DB_INSERT_FAILED = 'DB_007',\n DB_UPDATE_FAILED = 'DB_008',\n DB_DELETE_FAILED = 'DB_009',\n\n // Frame errors (2000-2999)\n FRAME_NOT_FOUND = 'FRAME_001',\n FRAME_INVALID_STATE = 'FRAME_002',\n FRAME_PARENT_NOT_FOUND = 'FRAME_003',\n FRAME_CYCLE_DETECTED = 'FRAME_004',\n FRAME_ALREADY_CLOSED = 'FRAME_005',\n FRAME_INIT_FAILED = 'FRAME_006',\n FRAME_INVALID_INPUT = 'FRAME_007',\n FRAME_STACK_OVERFLOW = 'FRAME_008',\n\n // Task errors (3000-3999)\n TASK_NOT_FOUND = 'TASK_001',\n TASK_INVALID_STATE = 'TASK_002',\n TASK_DEPENDENCY_CONFLICT = 'TASK_003',\n TASK_CIRCULAR_DEPENDENCY = 'TASK_004',\n\n // Integration errors (4000-4999)\n LINEAR_AUTH_FAILED = 'LINEAR_001',\n LINEAR_API_ERROR = 'LINEAR_002',\n LINEAR_SYNC_FAILED = 'LINEAR_003',\n LINEAR_WEBHOOK_FAILED = 'LINEAR_004',\n\n // MCP errors (5000-5999)\n MCP_TOOL_NOT_FOUND = 'MCP_001',\n MCP_INVALID_PARAMS = 'MCP_002',\n MCP_EXECUTION_FAILED = 'MCP_003',\n MCP_RATE_LIMITED = 'MCP_004',\n\n // Project errors (6000-6999)\n PROJECT_NOT_FOUND = 'PROJECT_001',\n PROJECT_INVALID_PATH = 'PROJECT_002',\n PROJECT_GIT_ERROR = 'PROJECT_003',\n\n // Validation errors (7000-7999)\n VALIDATION_FAILED = 'VAL_001',\n INVALID_INPUT = 'VAL_002',\n MISSING_REQUIRED_FIELD = 'VAL_003',\n TYPE_MISMATCH = 'VAL_004',\n\n // System errors (8000-8999)\n INITIALIZATION_ERROR = 'SYS_001',\n NOT_FOUND = 'SYS_002',\n INTERNAL_ERROR = 'SYS_003',\n CONFIGURATION_ERROR = 'SYS_004',\n PERMISSION_DENIED = 'SYS_005',\n RESOURCE_EXHAUSTED = 'SYS_006',\n SERVICE_UNAVAILABLE = 'SYS_007',\n SYSTEM_INIT_FAILED = 'SYS_008',\n\n // Collaboration errors (9000-9999)\n STACK_CONTEXT_NOT_FOUND = 'COLLAB_001',\n HANDOFF_REQUEST_EXPIRED = 'COLLAB_002',\n MERGE_CONFLICT_UNRESOLVABLE = 'COLLAB_003',\n PERMISSION_VIOLATION = 'COLLAB_004',\n OPERATION_FAILED = 'COLLAB_005',\n OPERATION_EXPIRED = 'COLLAB_006',\n INVALID_STATE = 'COLLAB_007',\n RESOURCE_NOT_FOUND = 'COLLAB_008',\n HANDOFF_ALREADY_EXISTS = 'COLLAB_009',\n MERGE_SESSION_INVALID = 'COLLAB_010',\n STACK_SWITCH_FAILED = 'COLLAB_011',\n APPROVAL_TIMEOUT = 'COLLAB_012',\n CONFLICT_RESOLUTION_FAILED = 'COLLAB_013',\n TEAM_ACCESS_DENIED = 'COLLAB_014',\n STACK_LIMIT_EXCEEDED = 'COLLAB_015',\n}\n\nexport interface ErrorContext {\n [key: string]: unknown;\n}\n\nexport interface StackMemoryErrorOptions {\n code: ErrorCode;\n message: string;\n context?: ErrorContext;\n cause?: Error;\n isRetryable?: boolean;\n httpStatus?: number;\n}\n\n/**\n * Base error class for all StackMemory errors\n */\nexport class StackMemoryError extends Error {\n public readonly code: ErrorCode;\n public readonly context?: ErrorContext;\n public readonly cause?: Error;\n public readonly isRetryable: boolean;\n public readonly httpStatus: number;\n public readonly timestamp: Date;\n\n constructor(options: StackMemoryErrorOptions) {\n super(options.message);\n this.name = this.constructor.name;\n this.code = options.code;\n this.context = options.context;\n this.cause = options.cause;\n this.isRetryable = options.isRetryable ?? false;\n this.httpStatus = options.httpStatus ?? 500;\n this.timestamp = new Date();\n\n // Maintains proper stack trace for where our error was thrown\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n toJSON(): Record<string, unknown> {\n return {\n name: this.name,\n code: this.code,\n message: this.message,\n context: this.context,\n isRetryable: this.isRetryable,\n httpStatus: this.httpStatus,\n timestamp: this.timestamp.toISOString(),\n stack: this.stack,\n cause: this.cause?.message,\n };\n }\n}\n\n/**\n * Database-related errors\n */\nexport class DatabaseError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.DB_QUERY_FAILED,\n context?: ErrorContext,\n cause?: Error\n ) {\n super({\n code,\n message,\n context,\n cause,\n isRetryable: code === ErrorCode.DB_CONNECTION_FAILED,\n httpStatus: 503,\n });\n }\n}\n\n/**\n * Frame-related errors\n */\nexport class FrameError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.FRAME_INVALID_STATE,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 400,\n });\n }\n}\n\n/**\n * Task-related errors\n */\nexport class TaskError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.TASK_INVALID_STATE,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 400,\n });\n }\n}\n\n/**\n * Integration errors (Linear, etc.)\n */\nexport class IntegrationError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.LINEAR_API_ERROR,\n context?: ErrorContext,\n cause?: Error\n ) {\n super({\n code,\n message,\n context,\n cause,\n isRetryable: true,\n httpStatus: 502,\n });\n }\n}\n\n/**\n * MCP-related errors\n */\nexport class MCPError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.MCP_EXECUTION_FAILED,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: code === ErrorCode.MCP_RATE_LIMITED,\n httpStatus: code === ErrorCode.MCP_RATE_LIMITED ? 429 : 400,\n });\n }\n}\n\n/**\n * Validation errors\n */\nexport class ValidationError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.VALIDATION_FAILED,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 400,\n });\n }\n}\n\n/**\n * Project-related errors\n */\nexport class ProjectError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.PROJECT_NOT_FOUND,\n context?: ErrorContext\n ) {\n super({\n code,\n message,\n context,\n isRetryable: false,\n httpStatus: 404,\n });\n }\n}\n\n/**\n * System/Internal errors\n */\nexport class SystemError extends StackMemoryError {\n constructor(\n message: string,\n code: ErrorCode = ErrorCode.INTERNAL_ERROR,\n context?: ErrorContext,\n cause?: Error\n ) {\n super({\n code,\n message,\n context,\n cause,\n isRetryable: code === ErrorCode.SERVICE_UNAVAILABLE,\n httpStatus: 500,\n });\n }\n}\n\n/**\n * Helper function to determine if an error is retryable\n */\nexport function isRetryableError(error: unknown): boolean {\n if (error instanceof StackMemoryError) {\n return error.isRetryable;\n }\n // Check for common retryable error patterns\n if (error instanceof Error) {\n const message = error.message.toLowerCase();\n return (\n message.includes('econnrefused') ||\n message.includes('timeout') ||\n message.includes('enotfound') ||\n message.includes('socket hang up')\n );\n }\n return false;\n}\n\n/**\n * Helper function to safely extract error message\n */\nexport function getErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n if (error && typeof error === 'object' && 'message' in error) {\n return String(error.message);\n }\n return 'An unknown error occurred';\n}\n\n/**\n * Helper function to wrap unknown errors in StackMemoryError\n */\nexport function wrapError(\n error: unknown,\n defaultMessage: string,\n code: ErrorCode = ErrorCode.INTERNAL_ERROR,\n context?: ErrorContext\n): StackMemoryError {\n if (error instanceof StackMemoryError) {\n return error;\n }\n\n const cause = error instanceof Error ? error : undefined;\n const message = error instanceof Error ? error.message : defaultMessage;\n\n return new SystemError(message, code, context, cause);\n}\n\n/**\n * Type guard to check if error is a StackMemoryError\n */\nexport function isStackMemoryError(error: unknown): error is StackMemoryError {\n return error instanceof StackMemoryError;\n}\n\n/**\n * Create context-aware error handler\n */\nexport function createErrorHandler(defaultContext: ErrorContext) {\n return (error: unknown, additionalContext?: ErrorContext) => {\n const context = { ...defaultContext, ...additionalContext };\n\n if (error instanceof StackMemoryError) {\n // Create a new error with merged context since context is readonly\n return new StackMemoryError({\n code: error.code,\n message: error.message,\n context: { ...error.context, ...context },\n cause: error.cause,\n isRetryable: error.isRetryable,\n httpStatus: error.httpStatus,\n });\n }\n\n return wrapError(\n error,\n getErrorMessage(error),\n ErrorCode.INTERNAL_ERROR,\n context\n );\n };\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["ErrorCode"]
7
7
  }
@@ -0,0 +1,42 @@
1
+ const workflowTemplates = {
2
+ tdd: {
3
+ name: "Test-Driven Development",
4
+ description: "Write tests first, then implement",
5
+ phases: [
6
+ { name: "write-failing-tests", description: "Write tests that fail" },
7
+ { name: "implement-code", description: "Make tests pass" },
8
+ { name: "refactor", description: "Clean up code" }
9
+ ]
10
+ },
11
+ feature: {
12
+ name: "Feature Development",
13
+ description: "Develop a new feature",
14
+ phases: [
15
+ { name: "design", description: "Design the feature" },
16
+ { name: "implement", description: "Build the feature" },
17
+ { name: "test", description: "Test the feature" }
18
+ ]
19
+ },
20
+ bugfix: {
21
+ name: "Bug Fix",
22
+ description: "Fix a reported bug",
23
+ phases: [
24
+ { name: "reproduce", description: "Reproduce the bug" },
25
+ { name: "fix", description: "Fix the bug" },
26
+ { name: "verify", description: "Verify the fix" }
27
+ ]
28
+ },
29
+ refactor: {
30
+ name: "Refactoring",
31
+ description: "Improve code structure",
32
+ phases: [
33
+ { name: "analyze", description: "Analyze current code" },
34
+ { name: "refactor", description: "Refactor code" },
35
+ { name: "test", description: "Ensure no regressions" }
36
+ ]
37
+ }
38
+ };
39
+ export {
40
+ workflowTemplates
41
+ };
42
+ //# sourceMappingURL=workflow-templates-stub.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/core/frame/workflow-templates-stub.ts"],
4
+ "sourcesContent": ["/**\n * Stub workflow templates for testing\n */\n\nexport const workflowTemplates = {\n tdd: {\n name: 'Test-Driven Development',\n description: 'Write tests first, then implement',\n phases: [\n { name: 'write-failing-tests', description: 'Write tests that fail' },\n { name: 'implement-code', description: 'Make tests pass' },\n { name: 'refactor', description: 'Clean up code' }\n ]\n },\n feature: {\n name: 'Feature Development',\n description: 'Develop a new feature',\n phases: [\n { name: 'design', description: 'Design the feature' },\n { name: 'implement', description: 'Build the feature' },\n { name: 'test', description: 'Test the feature' }\n ]\n },\n bugfix: {\n name: 'Bug Fix',\n description: 'Fix a reported bug',\n phases: [\n { name: 'reproduce', description: 'Reproduce the bug' },\n { name: 'fix', description: 'Fix the bug' },\n { name: 'verify', description: 'Verify the fix' }\n ]\n },\n refactor: {\n name: 'Refactoring',\n description: 'Improve code structure',\n phases: [\n { name: 'analyze', description: 'Analyze current code' },\n { name: 'refactor', description: 'Refactor code' },\n { name: 'test', description: 'Ensure no regressions' }\n ]\n }\n};"],
5
+ "mappings": "AAIO,MAAM,oBAAoB;AAAA,EAC/B,KAAK;AAAA,IACH,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,uBAAuB,aAAa,wBAAwB;AAAA,MACpE,EAAE,MAAM,kBAAkB,aAAa,kBAAkB;AAAA,MACzD,EAAE,MAAM,YAAY,aAAa,gBAAgB;AAAA,IACnD;AAAA,EACF;AAAA,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,UAAU,aAAa,qBAAqB;AAAA,MACpD,EAAE,MAAM,aAAa,aAAa,oBAAoB;AAAA,MACtD,EAAE,MAAM,QAAQ,aAAa,mBAAmB;AAAA,IAClD;AAAA,EACF;AAAA,EACA,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,aAAa,aAAa,oBAAoB;AAAA,MACtD,EAAE,MAAM,OAAO,aAAa,cAAc;AAAA,MAC1C,EAAE,MAAM,UAAU,aAAa,iBAAiB;AAAA,IAClD;AAAA,EACF;AAAA,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,aAAa;AAAA,IACb,QAAQ;AAAA,MACN,EAAE,MAAM,WAAW,aAAa,uBAAuB;AAAA,MACvD,EAAE,MAAM,YAAY,aAAa,gBAAgB;AAAA,MACjD,EAAE,MAAM,QAAQ,aAAa,wBAAwB;AAAA,IACvD;AAAA,EACF;AACF;",
6
+ "names": []
7
+ }
@@ -0,0 +1,276 @@
1
+ class WorkflowTemplates {
2
+ frameManager;
3
+ constructor(frameManager) {
4
+ this.frameManager = frameManager;
5
+ }
6
+ /**
7
+ * TDD Workflow: Red → Green → Refactor
8
+ */
9
+ static TDD = {
10
+ name: "tdd",
11
+ description: "Test-Driven Development workflow",
12
+ phases: [
13
+ {
14
+ name: "write-failing-tests",
15
+ requiredOutputs: ["test_file", "test_count"],
16
+ validationRules: [(frame) => frame.metadata?.tests_failing === true]
17
+ },
18
+ {
19
+ name: "implement-minimal",
20
+ requiredOutputs: ["implementation_file"],
21
+ validationRules: [(frame) => frame.metadata?.tests_passing === true]
22
+ },
23
+ {
24
+ name: "refactor",
25
+ requiredOutputs: ["refactored_files"],
26
+ validationRules: [
27
+ (frame) => frame.metadata?.tests_passing === true,
28
+ (frame) => frame.metadata?.complexity_reduced === true
29
+ ],
30
+ autoTransition: true
31
+ }
32
+ ]
33
+ };
34
+ /**
35
+ * Feature Development Workflow
36
+ */
37
+ static FEATURE = {
38
+ name: "feature",
39
+ description: "Feature development workflow",
40
+ phases: [
41
+ {
42
+ name: "research",
43
+ requiredOutputs: ["requirements", "constraints", "dependencies"],
44
+ validationRules: [
45
+ (frame) => frame.metadata?.research_complete === true
46
+ ]
47
+ },
48
+ {
49
+ name: "design",
50
+ requiredOutputs: ["architecture_decision", "api_design"],
51
+ validationRules: [(frame) => frame.metadata?.design_reviewed === true]
52
+ },
53
+ {
54
+ name: "implement",
55
+ requiredOutputs: ["implementation_files", "tests"],
56
+ validationRules: [
57
+ (frame) => frame.metadata?.tests_passing === true,
58
+ (frame) => frame.metadata?.lint_passing === true
59
+ ]
60
+ },
61
+ {
62
+ name: "validate",
63
+ requiredOutputs: ["test_results", "performance_metrics"],
64
+ validationRules: [
65
+ (frame) => frame.metadata?.validation_complete === true
66
+ ],
67
+ autoTransition: true
68
+ }
69
+ ]
70
+ };
71
+ /**
72
+ * Bug Fix Workflow
73
+ */
74
+ static BUGFIX = {
75
+ name: "bugfix",
76
+ description: "Bug fixing workflow",
77
+ phases: [
78
+ {
79
+ name: "reproduce",
80
+ requiredOutputs: ["reproduction_steps", "failing_test"],
81
+ validationRules: [(frame) => frame.metadata?.bug_reproduced === true]
82
+ },
83
+ {
84
+ name: "diagnose",
85
+ requiredOutputs: ["root_cause", "affected_code"],
86
+ validationRules: [(frame) => frame.metadata?.cause_identified === true]
87
+ },
88
+ {
89
+ name: "fix",
90
+ requiredOutputs: ["fix_commits", "updated_tests"],
91
+ validationRules: [(frame) => frame.metadata?.fix_applied === true]
92
+ },
93
+ {
94
+ name: "verify",
95
+ requiredOutputs: ["verification_results", "regression_tests"],
96
+ validationRules: [
97
+ (frame) => frame.metadata?.bug_fixed === true,
98
+ (frame) => frame.metadata?.no_regressions === true
99
+ ],
100
+ autoTransition: true
101
+ }
102
+ ]
103
+ };
104
+ /**
105
+ * Refactoring Workflow
106
+ */
107
+ static REFACTOR = {
108
+ name: "refactor",
109
+ description: "Code refactoring workflow",
110
+ phases: [
111
+ {
112
+ name: "analyze",
113
+ requiredOutputs: [
114
+ "code_metrics",
115
+ "smell_detection",
116
+ "complexity_report"
117
+ ],
118
+ validationRules: [
119
+ (frame) => frame.metadata?.analysis_complete === true
120
+ ]
121
+ },
122
+ {
123
+ name: "plan",
124
+ requiredOutputs: ["refactor_plan", "risk_assessment"],
125
+ validationRules: [(frame) => frame.metadata?.plan_approved === true]
126
+ },
127
+ {
128
+ name: "refactor",
129
+ requiredOutputs: ["refactored_code", "preserved_tests"],
130
+ validationRules: [(frame) => frame.metadata?.tests_passing === true]
131
+ },
132
+ {
133
+ name: "validate",
134
+ requiredOutputs: ["before_after_metrics", "performance_comparison"],
135
+ validationRules: [
136
+ (frame) => frame.metadata?.metrics_improved === true,
137
+ (frame) => frame.metadata?.behavior_preserved === true
138
+ ],
139
+ autoTransition: true
140
+ }
141
+ ]
142
+ };
143
+ /**
144
+ * Start a workflow, creating the parent frame and first phase frame
145
+ */
146
+ async startWorkflow(template, parentFrameId) {
147
+ const workflowFrame = await this.frameManager.push(
148
+ {
149
+ type: "workflow",
150
+ description: `${template.name} workflow`,
151
+ metadata: {
152
+ workflow: template.name,
153
+ current_phase: 0,
154
+ phases: template.phases.map((p) => p.name),
155
+ started_at: (/* @__PURE__ */ new Date()).toISOString()
156
+ }
157
+ },
158
+ parentFrameId
159
+ );
160
+ await this.startPhase(workflowFrame.id, 0);
161
+ return workflowFrame;
162
+ }
163
+ /**
164
+ * Transition to next phase if current phase is complete
165
+ */
166
+ async transitionPhase(frameId) {
167
+ const frame = await this.frameManager.getFrame(frameId);
168
+ if (!frame || frame.type !== "workflow") return false;
169
+ const currentPhase = frame.metadata?.current_phase || 0;
170
+ const template = this.getTemplate(frame.metadata?.workflow);
171
+ if (!template) return false;
172
+ const phaseFrame = await this.getCurrentPhaseFrame(frameId);
173
+ if (!phaseFrame) return false;
174
+ const phase = template.phases[currentPhase];
175
+ const isComplete = await this.validatePhase(phaseFrame, phase);
176
+ if (!isComplete) {
177
+ console.log(`Phase ${phase.name} validation failed`);
178
+ return false;
179
+ }
180
+ await this.frameManager.close(phaseFrame.id, {
181
+ completed: true,
182
+ phase: phase.name
183
+ });
184
+ if (currentPhase >= template.phases.length - 1) {
185
+ await this.frameManager.close(frameId, {
186
+ workflow_complete: true,
187
+ completed_at: (/* @__PURE__ */ new Date()).toISOString()
188
+ });
189
+ return true;
190
+ }
191
+ await this.frameManager.updateMetadata(frameId, {
192
+ current_phase: currentPhase + 1
193
+ });
194
+ await this.startPhase(frameId, currentPhase + 1);
195
+ return true;
196
+ }
197
+ /**
198
+ * Start a specific phase within a workflow
199
+ */
200
+ async startPhase(workflowFrameId, phaseIndex) {
201
+ const frame = await this.frameManager.getFrame(workflowFrameId);
202
+ const template = this.getTemplate(frame?.metadata?.workflow);
203
+ if (!template || phaseIndex >= template.phases.length) {
204
+ throw new Error("Invalid phase index");
205
+ }
206
+ const phase = template.phases[phaseIndex];
207
+ return await this.frameManager.push(
208
+ {
209
+ type: "phase",
210
+ description: `Phase: ${phase.name}`,
211
+ metadata: {
212
+ phase_name: phase.name,
213
+ phase_index: phaseIndex,
214
+ required_outputs: phase.requiredOutputs,
215
+ started_at: (/* @__PURE__ */ new Date()).toISOString()
216
+ }
217
+ },
218
+ workflowFrameId
219
+ );
220
+ }
221
+ /**
222
+ * Validate a phase frame against its requirements
223
+ */
224
+ async validatePhase(frame, phase) {
225
+ if (phase.requiredOutputs) {
226
+ for (const output of phase.requiredOutputs) {
227
+ if (!frame.metadata?.[output]) {
228
+ return false;
229
+ }
230
+ }
231
+ }
232
+ if (phase.validationRules) {
233
+ for (const rule of phase.validationRules) {
234
+ if (!rule(frame)) {
235
+ return false;
236
+ }
237
+ }
238
+ }
239
+ return true;
240
+ }
241
+ /**
242
+ * Get current phase frame for a workflow
243
+ */
244
+ async getCurrentPhaseFrame(workflowFrameId) {
245
+ const children = await this.frameManager.getChildren(workflowFrameId);
246
+ return children.find((f) => f.type === "phase" && f.status === "open") || null;
247
+ }
248
+ /**
249
+ * Get template by name
250
+ */
251
+ getTemplate(name) {
252
+ if (!name) return null;
253
+ const templates = {
254
+ tdd: WorkflowTemplates.TDD,
255
+ feature: WorkflowTemplates.FEATURE,
256
+ bugfix: WorkflowTemplates.BUGFIX,
257
+ refactor: WorkflowTemplates.REFACTOR
258
+ };
259
+ return templates[name] || null;
260
+ }
261
+ /**
262
+ * List available workflow templates
263
+ */
264
+ static listTemplates() {
265
+ return [
266
+ WorkflowTemplates.TDD,
267
+ WorkflowTemplates.FEATURE,
268
+ WorkflowTemplates.BUGFIX,
269
+ WorkflowTemplates.REFACTOR
270
+ ];
271
+ }
272
+ }
273
+ export {
274
+ WorkflowTemplates
275
+ };
276
+ //# sourceMappingURL=workflow-templates.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/core/frame/workflow-templates.ts"],
4
+ "sourcesContent": ["/**\n * Workflow Templates for StackMemory\n * Inspired by Continuous-Claude's structured approach\n *\n * Each workflow auto-creates child frames for phases\n * and enforces completion gates between transitions\n */\n\nimport { Frame } from '../types';\nimport { FrameManager } from './frame-manager';\n\nexport interface WorkflowPhase {\n name: string;\n requiredOutputs?: string[];\n validationRules?: ((frame: Frame) => boolean)[];\n autoTransition?: boolean;\n}\n\nexport interface WorkflowTemplate {\n name: string;\n description: string;\n phases: WorkflowPhase[];\n metadata?: Record<string, any>;\n}\n\nexport class WorkflowTemplates {\n private frameManager: FrameManager;\n\n constructor(frameManager: FrameManager) {\n this.frameManager = frameManager;\n }\n\n /**\n * TDD Workflow: Red \u2192 Green \u2192 Refactor\n */\n static TDD: WorkflowTemplate = {\n name: 'tdd',\n description: 'Test-Driven Development workflow',\n phases: [\n {\n name: 'write-failing-tests',\n requiredOutputs: ['test_file', 'test_count'],\n validationRules: [(frame) => frame.metadata?.tests_failing === true],\n },\n {\n name: 'implement-minimal',\n requiredOutputs: ['implementation_file'],\n validationRules: [(frame) => frame.metadata?.tests_passing === true],\n },\n {\n name: 'refactor',\n requiredOutputs: ['refactored_files'],\n validationRules: [\n (frame) => frame.metadata?.tests_passing === true,\n (frame) => frame.metadata?.complexity_reduced === true,\n ],\n autoTransition: true,\n },\n ],\n };\n\n /**\n * Feature Development Workflow\n */\n static FEATURE: WorkflowTemplate = {\n name: 'feature',\n description: 'Feature development workflow',\n phases: [\n {\n name: 'research',\n requiredOutputs: ['requirements', 'constraints', 'dependencies'],\n validationRules: [\n (frame) => frame.metadata?.research_complete === true,\n ],\n },\n {\n name: 'design',\n requiredOutputs: ['architecture_decision', 'api_design'],\n validationRules: [(frame) => frame.metadata?.design_reviewed === true],\n },\n {\n name: 'implement',\n requiredOutputs: ['implementation_files', 'tests'],\n validationRules: [\n (frame) => frame.metadata?.tests_passing === true,\n (frame) => frame.metadata?.lint_passing === true,\n ],\n },\n {\n name: 'validate',\n requiredOutputs: ['test_results', 'performance_metrics'],\n validationRules: [\n (frame) => frame.metadata?.validation_complete === true,\n ],\n autoTransition: true,\n },\n ],\n };\n\n /**\n * Bug Fix Workflow\n */\n static BUGFIX: WorkflowTemplate = {\n name: 'bugfix',\n description: 'Bug fixing workflow',\n phases: [\n {\n name: 'reproduce',\n requiredOutputs: ['reproduction_steps', 'failing_test'],\n validationRules: [(frame) => frame.metadata?.bug_reproduced === true],\n },\n {\n name: 'diagnose',\n requiredOutputs: ['root_cause', 'affected_code'],\n validationRules: [(frame) => frame.metadata?.cause_identified === true],\n },\n {\n name: 'fix',\n requiredOutputs: ['fix_commits', 'updated_tests'],\n validationRules: [(frame) => frame.metadata?.fix_applied === true],\n },\n {\n name: 'verify',\n requiredOutputs: ['verification_results', 'regression_tests'],\n validationRules: [\n (frame) => frame.metadata?.bug_fixed === true,\n (frame) => frame.metadata?.no_regressions === true,\n ],\n autoTransition: true,\n },\n ],\n };\n\n /**\n * Refactoring Workflow\n */\n static REFACTOR: WorkflowTemplate = {\n name: 'refactor',\n description: 'Code refactoring workflow',\n phases: [\n {\n name: 'analyze',\n requiredOutputs: [\n 'code_metrics',\n 'smell_detection',\n 'complexity_report',\n ],\n validationRules: [\n (frame) => frame.metadata?.analysis_complete === true,\n ],\n },\n {\n name: 'plan',\n requiredOutputs: ['refactor_plan', 'risk_assessment'],\n validationRules: [(frame) => frame.metadata?.plan_approved === true],\n },\n {\n name: 'refactor',\n requiredOutputs: ['refactored_code', 'preserved_tests'],\n validationRules: [(frame) => frame.metadata?.tests_passing === true],\n },\n {\n name: 'validate',\n requiredOutputs: ['before_after_metrics', 'performance_comparison'],\n validationRules: [\n (frame) => frame.metadata?.metrics_improved === true,\n (frame) => frame.metadata?.behavior_preserved === true,\n ],\n autoTransition: true,\n },\n ],\n };\n\n /**\n * Start a workflow, creating the parent frame and first phase frame\n */\n async startWorkflow(\n template: WorkflowTemplate,\n parentFrameId?: string\n ): Promise<Frame> {\n // Create parent workflow frame\n const workflowFrame = await this.frameManager.push(\n {\n type: 'workflow',\n description: `${template.name} workflow`,\n metadata: {\n workflow: template.name,\n current_phase: 0,\n phases: template.phases.map((p) => p.name),\n started_at: new Date().toISOString(),\n },\n },\n parentFrameId\n );\n\n // Auto-create first phase frame\n await this.startPhase(workflowFrame.id, 0);\n\n return workflowFrame;\n }\n\n /**\n * Transition to next phase if current phase is complete\n */\n async transitionPhase(frameId: string): Promise<boolean> {\n const frame = await this.frameManager.getFrame(frameId);\n if (!frame || frame.type !== 'workflow') return false;\n\n const currentPhase = frame.metadata?.current_phase || 0;\n const template = this.getTemplate(frame.metadata?.workflow);\n if (!template) return false;\n\n // Validate current phase completion\n const phaseFrame = await this.getCurrentPhaseFrame(frameId);\n if (!phaseFrame) return false;\n\n const phase = template.phases[currentPhase];\n const isComplete = await this.validatePhase(phaseFrame, phase);\n\n if (!isComplete) {\n console.log(`Phase ${phase.name} validation failed`);\n return false;\n }\n\n // Close current phase frame\n await this.frameManager.close(phaseFrame.id, {\n completed: true,\n phase: phase.name,\n });\n\n // Check if workflow is complete\n if (currentPhase >= template.phases.length - 1) {\n await this.frameManager.close(frameId, {\n workflow_complete: true,\n completed_at: new Date().toISOString(),\n });\n return true;\n }\n\n // Start next phase\n await this.frameManager.updateMetadata(frameId, {\n current_phase: currentPhase + 1,\n });\n await this.startPhase(frameId, currentPhase + 1);\n\n return true;\n }\n\n /**\n * Start a specific phase within a workflow\n */\n private async startPhase(\n workflowFrameId: string,\n phaseIndex: number\n ): Promise<Frame> {\n const frame = await this.frameManager.getFrame(workflowFrameId);\n const template = this.getTemplate(frame?.metadata?.workflow);\n if (!template || phaseIndex >= template.phases.length) {\n throw new Error('Invalid phase index');\n }\n\n const phase = template.phases[phaseIndex];\n return await this.frameManager.push(\n {\n type: 'phase',\n description: `Phase: ${phase.name}`,\n metadata: {\n phase_name: phase.name,\n phase_index: phaseIndex,\n required_outputs: phase.requiredOutputs,\n started_at: new Date().toISOString(),\n },\n },\n workflowFrameId\n );\n }\n\n /**\n * Validate a phase frame against its requirements\n */\n private async validatePhase(\n frame: Frame,\n phase: WorkflowPhase\n ): Promise<boolean> {\n // Check required outputs\n if (phase.requiredOutputs) {\n for (const output of phase.requiredOutputs) {\n if (!frame.metadata?.[output]) {\n return false;\n }\n }\n }\n\n // Run validation rules\n if (phase.validationRules) {\n for (const rule of phase.validationRules) {\n if (!rule(frame)) {\n return false;\n }\n }\n }\n\n return true;\n }\n\n /**\n * Get current phase frame for a workflow\n */\n private async getCurrentPhaseFrame(\n workflowFrameId: string\n ): Promise<Frame | null> {\n const children = await this.frameManager.getChildren(workflowFrameId);\n return (\n children.find((f) => f.type === 'phase' && f.status === 'open') || null\n );\n }\n\n /**\n * Get template by name\n */\n private getTemplate(name?: string): WorkflowTemplate | null {\n if (!name) return null;\n\n const templates: Record<string, WorkflowTemplate> = {\n tdd: WorkflowTemplates.TDD,\n feature: WorkflowTemplates.FEATURE,\n bugfix: WorkflowTemplates.BUGFIX,\n refactor: WorkflowTemplates.REFACTOR,\n };\n\n return templates[name] || null;\n }\n\n /**\n * List available workflow templates\n */\n static listTemplates(): WorkflowTemplate[] {\n return [\n WorkflowTemplates.TDD,\n WorkflowTemplates.FEATURE,\n WorkflowTemplates.BUGFIX,\n WorkflowTemplates.REFACTOR,\n ];\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -286,7 +286,10 @@ class ConflictDetector {
286
286
  if (!tree.has(frame.parent_frame_id)) {
287
287
  tree.set(frame.parent_frame_id, /* @__PURE__ */ new Set());
288
288
  }
289
- tree.get(frame.parent_frame_id).add(frame.frame_id);
289
+ const parentSet = tree.get(frame.parent_frame_id);
290
+ if (parentSet) {
291
+ parentSet.add(frame.frame_id);
292
+ }
290
293
  }
291
294
  }
292
295
  return tree;
@@ -299,7 +302,7 @@ class ConflictDetector {
299
302
  for (const [node, children1] of tree1) {
300
303
  if (tree2.has(node)) {
301
304
  const children2 = tree2.get(node);
302
- if (!this.setsEqual(children1, children2)) {
305
+ if (children2 && !this.setsEqual(children1, children2)) {
303
306
  divergences.push({
304
307
  node1: node,
305
308
  node2: node,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/core/merge/conflict-detector.ts"],
4
- "sourcesContent": ["/**\n * Conflict Detection Engine\n * Detects paradoxes in parallel frame timelines\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n MergeConflict,\n FrameStack,\n ParallelSolution,\n DecisionConflict,\n} from './types.js';\nimport { Frame, Event } from '../context/frame-manager.js';\nimport { logger } from '../monitoring/logger.js';\n\nexport class ConflictDetector {\n private readonly SIMILARITY_THRESHOLD = 0.8;\n\n /**\n * Detect all types of conflicts between two frame stacks\n */\n detectConflicts(stack1: FrameStack, stack2: FrameStack): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n\n // Detect parallel solution conflicts\n const parallelConflicts = this.detectParallelSolutions(stack1, stack2);\n conflicts.push(...parallelConflicts);\n\n // Detect conflicting decisions\n const decisionConflicts = this.detectConflictingDecisions(\n stack1.events,\n stack2.events\n );\n conflicts.push(...decisionConflicts);\n\n // Detect structural divergence\n const structuralConflicts = this.detectStructuralDivergence(\n stack1.frames,\n stack2.frames\n );\n conflicts.push(...structuralConflicts);\n\n logger.info(`Detected ${conflicts.length} conflicts between stacks`, {\n stack1Id: stack1.id,\n stack2Id: stack2.id,\n conflictTypes: this.summarizeConflictTypes(conflicts),\n });\n\n return conflicts;\n }\n\n /**\n * Analyze frames to find parallel solutions to the same problem\n */\n analyzeParallelSolutions(frames: Frame[]): ParallelSolution[] {\n const solutions: ParallelSolution[] = [];\n\n // Group frames by similar purpose/name\n const groupedFrames = this.groupSimilarFrames(frames);\n\n for (const group of groupedFrames) {\n if (group.length > 1) {\n // Multiple frames solving similar problems\n group.forEach((frame) => {\n solutions.push({\n frameId: frame.frame_id,\n solution: this.extractSolution(frame),\n approach: this.analyzeApproach(frame),\n author: frame.inputs?.author || 'unknown',\n timestamp: frame.created_at,\n effectiveness: this.calculateEffectiveness(frame),\n });\n });\n }\n }\n\n return solutions;\n }\n\n /**\n * Identify conflicting decisions in event streams\n */\n identifyConflictingDecisions(events: Event[]): DecisionConflict[] {\n const conflicts: DecisionConflict[] = [];\n const decisions = this.extractDecisions(events);\n\n for (let i = 0; i < decisions.length; i++) {\n for (let j = i + 1; j < decisions.length; j++) {\n if (this.decisionsConflict(decisions[i], decisions[j])) {\n conflicts.push({\n decision1: decisions[i].payload?.decision || '',\n decision2: decisions[j].payload?.decision || '',\n impact: this.assessImpact(decisions[i], decisions[j]),\n canCoexist: this.canCoexist(decisions[i], decisions[j]),\n });\n }\n }\n }\n\n return conflicts;\n }\n\n /**\n * Detect parallel solutions between two stacks\n */\n private detectParallelSolutions(\n stack1: FrameStack,\n stack2: FrameStack\n ): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n\n // Find frames that appear to solve the same problem\n for (const frame1 of stack1.frames) {\n for (const frame2 of stack2.frames) {\n if (\n this.framesAreSimilar(frame1, frame2) &&\n !this.framesAreIdentical(frame1, frame2)\n ) {\n conflicts.push({\n id: uuidv4(),\n type: 'parallel_solution',\n frameId1: frame1.frame_id,\n frameId2: frame2.frame_id,\n severity: this.calculateParallelSeverity(frame1, frame2),\n description: `Parallel solutions detected: \"${frame1.name}\" vs \"${frame2.name}\"`,\n detectedAt: Date.now(),\n conflictingPaths: this.extractPaths(frame1, frame2),\n });\n }\n }\n }\n\n return conflicts;\n }\n\n /**\n * Detect conflicting decisions between event streams\n */\n private detectConflictingDecisions(\n events1: Event[],\n events2: Event[]\n ): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n const decisions1 = this.extractDecisions(events1);\n const decisions2 = this.extractDecisions(events2);\n\n for (const d1 of decisions1) {\n for (const d2 of decisions2) {\n if (this.decisionsConflict(d1, d2)) {\n conflicts.push({\n id: uuidv4(),\n type: 'conflicting_decision',\n frameId1: d1.frame_id,\n frameId2: d2.frame_id,\n severity: this.assessImpact(d1, d2) as\n | 'low'\n | 'medium'\n | 'high'\n | 'critical',\n description: `Conflicting decisions: \"${d1.payload?.decision}\" vs \"${d2.payload?.decision}\"`,\n detectedAt: Date.now(),\n });\n }\n }\n }\n\n return conflicts;\n }\n\n /**\n * Detect structural divergence in frame hierarchies\n */\n private detectStructuralDivergence(\n frames1: Frame[],\n frames2: Frame[]\n ): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n\n // Build frame trees\n const tree1 = this.buildFrameTree(frames1);\n const tree2 = this.buildFrameTree(frames2);\n\n // Find divergence points\n const divergences = this.findDivergences(tree1, tree2);\n\n for (const divergence of divergences) {\n conflicts.push({\n id: uuidv4(),\n type: 'structural_divergence',\n frameId1: divergence.node1,\n frameId2: divergence.node2,\n severity: this.calculateDivergenceSeverity(divergence),\n description: `Structural divergence at depth ${divergence.depth}`,\n detectedAt: Date.now(),\n });\n }\n\n return conflicts;\n }\n\n /**\n * Helper: Check if two frames are similar (solving same problem)\n */\n private framesAreSimilar(frame1: Frame, frame2: Frame): boolean {\n // Check name similarity\n const nameSimilarity = this.calculateSimilarity(frame1.name, frame2.name);\n if (nameSimilarity > this.SIMILARITY_THRESHOLD) return true;\n\n // Check type and parent\n if (\n frame1.type === frame2.type &&\n frame1.parent_frame_id === frame2.parent_frame_id\n ) {\n return true;\n }\n\n // Check inputs similarity\n const inputSimilarity = this.compareInputs(frame1.inputs, frame2.inputs);\n return inputSimilarity > this.SIMILARITY_THRESHOLD;\n }\n\n /**\n * Helper: Check if frames are identical\n */\n private framesAreIdentical(frame1: Frame, frame2: Frame): boolean {\n return frame1.frame_id === frame2.frame_id;\n }\n\n /**\n * Helper: Calculate string similarity (Levenshtein-based)\n */\n private calculateSimilarity(str1: string, str2: string): number {\n const maxLen = Math.max(str1.length, str2.length);\n if (maxLen === 0) return 1;\n\n const distance = this.levenshteinDistance(str1, str2);\n return 1 - distance / maxLen;\n }\n\n /**\n * Helper: Levenshtein distance implementation\n */\n private levenshteinDistance(str1: string, str2: string): number {\n const matrix: number[][] = [];\n\n for (let i = 0; i <= str2.length; i++) {\n matrix[i] = [i];\n }\n\n for (let j = 0; j <= str1.length; j++) {\n matrix[0][j] = j;\n }\n\n for (let i = 1; i <= str2.length; i++) {\n for (let j = 1; j <= str1.length; j++) {\n if (str2.charAt(i - 1) === str1.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1\n );\n }\n }\n }\n\n return matrix[str2.length][str1.length];\n }\n\n /**\n * Helper: Compare frame inputs\n */\n private compareInputs(\n inputs1: Record<string, any>,\n inputs2: Record<string, any>\n ): number {\n const keys1 = Object.keys(inputs1 || {});\n const keys2 = Object.keys(inputs2 || {});\n const allKeys = new Set([...keys1, ...keys2]);\n\n if (allKeys.size === 0) return 1;\n\n let matches = 0;\n for (const key of allKeys) {\n if (JSON.stringify(inputs1[key]) === JSON.stringify(inputs2[key])) {\n matches++;\n }\n }\n\n return matches / allKeys.size;\n }\n\n /**\n * Helper: Calculate severity for parallel solutions\n */\n private calculateParallelSeverity(\n frame1: Frame,\n frame2: Frame\n ): 'low' | 'medium' | 'high' | 'critical' {\n // Critical if both are completed and have different outputs\n if (frame1.state === 'closed' && frame2.state === 'closed') {\n const outputSimilarity = this.compareInputs(\n frame1.outputs,\n frame2.outputs\n );\n if (outputSimilarity < 0.5) return 'critical';\n if (outputSimilarity < 0.7) return 'high';\n }\n\n // High if different approaches to same parent task\n if (frame1.parent_frame_id === frame2.parent_frame_id) {\n return 'high';\n }\n\n return 'medium';\n }\n\n /**\n * Helper: Extract decision events\n */\n private extractDecisions(events: Event[]): Event[] {\n return events.filter(\n (e) =>\n e.event_type === 'decision' ||\n e.payload?.type === 'decision' ||\n e.payload?.decision !== undefined\n );\n }\n\n /**\n * Helper: Check if two decisions conflict\n */\n private decisionsConflict(d1: Event, d2: Event): boolean {\n // Check if decisions affect same resource/path\n const resource1 = d1.payload?.resource || d1.payload?.path;\n const resource2 = d2.payload?.resource || d2.payload?.path;\n\n if (resource1 && resource2 && resource1 === resource2) {\n // Different decisions on same resource\n return d1.payload?.decision !== d2.payload?.decision;\n }\n\n // Check for logical conflicts\n return this.hasLogicalConflict(d1.payload, d2.payload);\n }\n\n /**\n * Helper: Check for logical conflicts in payloads\n */\n private hasLogicalConflict(payload1: any, payload2: any): boolean {\n // Architecture decisions\n if (payload1?.architecture && payload2?.architecture) {\n return payload1.architecture !== payload2.architecture;\n }\n\n // Technology choices\n if (payload1?.technology && payload2?.technology) {\n return payload1.technology !== payload2.technology;\n }\n\n return false;\n }\n\n /**\n * Helper: Assess impact of conflicting decisions\n */\n private assessImpact(d1: Event, d2: Event): 'low' | 'medium' | 'high' {\n // High impact for architecture/design decisions\n if (\n d1.payload?.type === 'architecture' ||\n d2.payload?.type === 'architecture'\n ) {\n return 'high';\n }\n\n // Medium for implementation decisions\n if (\n d1.payload?.scope === 'implementation' ||\n d2.payload?.scope === 'implementation'\n ) {\n return 'medium';\n }\n\n return 'low';\n }\n\n /**\n * Helper: Check if decisions can coexist\n */\n private canCoexist(d1: Event, d2: Event): boolean {\n // Different scopes can coexist\n if (d1.payload?.scope !== d2.payload?.scope) {\n return true;\n }\n\n // Non-conflicting resources can coexist\n const resource1 = d1.payload?.resource;\n const resource2 = d2.payload?.resource;\n\n return resource1 !== resource2;\n }\n\n /**\n * Helper: Build frame tree structure\n */\n private buildFrameTree(frames: Frame[]): Map<string, Set<string>> {\n const tree = new Map<string, Set<string>>();\n\n for (const frame of frames) {\n if (frame.parent_frame_id) {\n if (!tree.has(frame.parent_frame_id)) {\n tree.set(frame.parent_frame_id, new Set());\n }\n tree.get(frame.parent_frame_id)!.add(frame.frame_id);\n }\n }\n\n return tree;\n }\n\n /**\n * Helper: Find divergence points in trees\n */\n private findDivergences(\n tree1: Map<string, Set<string>>,\n tree2: Map<string, Set<string>>\n ): Array<{ node1: string; node2: string; depth: number }> {\n const divergences: Array<{ node1: string; node2: string; depth: number }> =\n [];\n\n // Find nodes that exist in both but have different children\n for (const [node, children1] of tree1) {\n if (tree2.has(node)) {\n const children2 = tree2.get(node)!;\n if (!this.setsEqual(children1, children2)) {\n divergences.push({\n node1: node,\n node2: node,\n depth: this.calculateDepth(node, tree1),\n });\n }\n }\n }\n\n return divergences;\n }\n\n /**\n * Helper: Check if two sets are equal\n */\n private setsEqual<T>(set1: Set<T>, set2: Set<T>): boolean {\n if (set1.size !== set2.size) return false;\n for (const item of set1) {\n if (!set2.has(item)) return false;\n }\n return true;\n }\n\n /**\n * Helper: Calculate node depth in tree\n */\n private calculateDepth(node: string, tree: Map<string, Set<string>>): number {\n let depth = 0;\n let current = node;\n\n // Find parent of current node\n for (const [parent, children] of tree) {\n if (children.has(current)) {\n depth++;\n current = parent;\n }\n }\n\n return depth;\n }\n\n /**\n * Helper: Calculate divergence severity\n */\n private calculateDivergenceSeverity(\n divergence: any\n ): 'low' | 'medium' | 'high' | 'critical' {\n if (divergence.depth === 0) return 'critical'; // Root divergence\n if (divergence.depth === 1) return 'high';\n if (divergence.depth === 2) return 'medium';\n return 'low';\n }\n\n /**\n * Helper: Extract paths from frames\n */\n private extractPaths(frame1: Frame, frame2: Frame): string[] {\n const paths: string[] = [];\n\n if (frame1.inputs?.path) paths.push(frame1.inputs.path);\n if (frame2.inputs?.path) paths.push(frame2.inputs.path);\n if (frame1.outputs?.files) paths.push(...frame1.outputs.files);\n if (frame2.outputs?.files) paths.push(...frame2.outputs.files);\n\n return [...new Set(paths)];\n }\n\n /**\n * Helper: Extract solution from frame\n */\n private extractSolution(frame: Frame): string {\n return (\n frame.outputs?.solution || frame.digest_text || 'No solution description'\n );\n }\n\n /**\n * Helper: Analyze approach taken\n */\n private analyzeApproach(frame: Frame): string {\n if (frame.outputs?.approach) return frame.outputs.approach;\n if (frame.type === 'debug') return 'Debug approach';\n if (frame.type === 'review') return 'Review approach';\n return 'Standard approach';\n }\n\n /**\n * Helper: Calculate solution effectiveness\n */\n private calculateEffectiveness(frame: Frame): number {\n let score = 0.5; // Base score\n\n // Completed frames are more effective\n if (frame.state === 'closed') score += 0.2;\n\n // Frames with outputs are more effective\n if (frame.outputs && Object.keys(frame.outputs).length > 0) score += 0.1;\n\n // Frames with digests are more effective\n if (frame.digest_text) score += 0.1;\n\n // Quick completion is more effective\n if (frame.closed_at && frame.created_at) {\n const duration = frame.closed_at - frame.created_at;\n if (duration < 300000) score += 0.1; // Less than 5 minutes\n }\n\n return Math.min(score, 1);\n }\n\n /**\n * Helper: Group similar frames together\n */\n private groupSimilarFrames(frames: Frame[]): Frame[][] {\n const groups: Frame[][] = [];\n const processed = new Set<string>();\n\n for (const frame of frames) {\n if (processed.has(frame.frame_id)) continue;\n\n const group = [frame];\n processed.add(frame.frame_id);\n\n for (const other of frames) {\n if (\n !processed.has(other.frame_id) &&\n this.framesAreSimilar(frame, other)\n ) {\n group.push(other);\n processed.add(other.frame_id);\n }\n }\n\n groups.push(group);\n }\n\n return groups;\n }\n\n /**\n * Helper: Summarize conflict types\n */\n private summarizeConflictTypes(\n conflicts: MergeConflict[]\n ): Record<string, number> {\n const summary: Record<string, number> = {\n parallel_solution: 0,\n conflicting_decision: 0,\n structural_divergence: 0,\n };\n\n for (const conflict of conflicts) {\n summary[conflict.type]++;\n }\n\n return summary;\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Conflict Detection Engine\n * Detects paradoxes in parallel frame timelines\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport {\n MergeConflict,\n FrameStack,\n ParallelSolution,\n DecisionConflict,\n} from './types.js';\nimport { Frame, Event } from '../context/frame-manager.js';\nimport { logger } from '../monitoring/logger.js';\n\nexport class ConflictDetector {\n private readonly SIMILARITY_THRESHOLD = 0.8;\n\n /**\n * Detect all types of conflicts between two frame stacks\n */\n detectConflicts(stack1: FrameStack, stack2: FrameStack): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n\n // Detect parallel solution conflicts\n const parallelConflicts = this.detectParallelSolutions(stack1, stack2);\n conflicts.push(...parallelConflicts);\n\n // Detect conflicting decisions\n const decisionConflicts = this.detectConflictingDecisions(\n stack1.events,\n stack2.events\n );\n conflicts.push(...decisionConflicts);\n\n // Detect structural divergence\n const structuralConflicts = this.detectStructuralDivergence(\n stack1.frames,\n stack2.frames\n );\n conflicts.push(...structuralConflicts);\n\n logger.info(`Detected ${conflicts.length} conflicts between stacks`, {\n stack1Id: stack1.id,\n stack2Id: stack2.id,\n conflictTypes: this.summarizeConflictTypes(conflicts),\n });\n\n return conflicts;\n }\n\n /**\n * Analyze frames to find parallel solutions to the same problem\n */\n analyzeParallelSolutions(frames: Frame[]): ParallelSolution[] {\n const solutions: ParallelSolution[] = [];\n\n // Group frames by similar purpose/name\n const groupedFrames = this.groupSimilarFrames(frames);\n\n for (const group of groupedFrames) {\n if (group.length > 1) {\n // Multiple frames solving similar problems\n group.forEach((frame) => {\n solutions.push({\n frameId: frame.frame_id,\n solution: this.extractSolution(frame),\n approach: this.analyzeApproach(frame),\n author: frame.inputs?.author || 'unknown',\n timestamp: frame.created_at,\n effectiveness: this.calculateEffectiveness(frame),\n });\n });\n }\n }\n\n return solutions;\n }\n\n /**\n * Identify conflicting decisions in event streams\n */\n identifyConflictingDecisions(events: Event[]): DecisionConflict[] {\n const conflicts: DecisionConflict[] = [];\n const decisions = this.extractDecisions(events);\n\n for (let i = 0; i < decisions.length; i++) {\n for (let j = i + 1; j < decisions.length; j++) {\n if (this.decisionsConflict(decisions[i], decisions[j])) {\n conflicts.push({\n decision1: decisions[i].payload?.decision || '',\n decision2: decisions[j].payload?.decision || '',\n impact: this.assessImpact(decisions[i], decisions[j]),\n canCoexist: this.canCoexist(decisions[i], decisions[j]),\n });\n }\n }\n }\n\n return conflicts;\n }\n\n /**\n * Detect parallel solutions between two stacks\n */\n private detectParallelSolutions(\n stack1: FrameStack,\n stack2: FrameStack\n ): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n\n // Find frames that appear to solve the same problem\n for (const frame1 of stack1.frames) {\n for (const frame2 of stack2.frames) {\n if (\n this.framesAreSimilar(frame1, frame2) &&\n !this.framesAreIdentical(frame1, frame2)\n ) {\n conflicts.push({\n id: uuidv4(),\n type: 'parallel_solution',\n frameId1: frame1.frame_id,\n frameId2: frame2.frame_id,\n severity: this.calculateParallelSeverity(frame1, frame2),\n description: `Parallel solutions detected: \"${frame1.name}\" vs \"${frame2.name}\"`,\n detectedAt: Date.now(),\n conflictingPaths: this.extractPaths(frame1, frame2),\n });\n }\n }\n }\n\n return conflicts;\n }\n\n /**\n * Detect conflicting decisions between event streams\n */\n private detectConflictingDecisions(\n events1: Event[],\n events2: Event[]\n ): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n const decisions1 = this.extractDecisions(events1);\n const decisions2 = this.extractDecisions(events2);\n\n for (const d1 of decisions1) {\n for (const d2 of decisions2) {\n if (this.decisionsConflict(d1, d2)) {\n conflicts.push({\n id: uuidv4(),\n type: 'conflicting_decision',\n frameId1: d1.frame_id,\n frameId2: d2.frame_id,\n severity: this.assessImpact(d1, d2) as\n | 'low'\n | 'medium'\n | 'high'\n | 'critical',\n description: `Conflicting decisions: \"${d1.payload?.decision}\" vs \"${d2.payload?.decision}\"`,\n detectedAt: Date.now(),\n });\n }\n }\n }\n\n return conflicts;\n }\n\n /**\n * Detect structural divergence in frame hierarchies\n */\n private detectStructuralDivergence(\n frames1: Frame[],\n frames2: Frame[]\n ): MergeConflict[] {\n const conflicts: MergeConflict[] = [];\n\n // Build frame trees\n const tree1 = this.buildFrameTree(frames1);\n const tree2 = this.buildFrameTree(frames2);\n\n // Find divergence points\n const divergences = this.findDivergences(tree1, tree2);\n\n for (const divergence of divergences) {\n conflicts.push({\n id: uuidv4(),\n type: 'structural_divergence',\n frameId1: divergence.node1,\n frameId2: divergence.node2,\n severity: this.calculateDivergenceSeverity(divergence),\n description: `Structural divergence at depth ${divergence.depth}`,\n detectedAt: Date.now(),\n });\n }\n\n return conflicts;\n }\n\n /**\n * Helper: Check if two frames are similar (solving same problem)\n */\n private framesAreSimilar(frame1: Frame, frame2: Frame): boolean {\n // Check name similarity\n const nameSimilarity = this.calculateSimilarity(frame1.name, frame2.name);\n if (nameSimilarity > this.SIMILARITY_THRESHOLD) return true;\n\n // Check type and parent\n if (\n frame1.type === frame2.type &&\n frame1.parent_frame_id === frame2.parent_frame_id\n ) {\n return true;\n }\n\n // Check inputs similarity\n const inputSimilarity = this.compareInputs(frame1.inputs, frame2.inputs);\n return inputSimilarity > this.SIMILARITY_THRESHOLD;\n }\n\n /**\n * Helper: Check if frames are identical\n */\n private framesAreIdentical(frame1: Frame, frame2: Frame): boolean {\n return frame1.frame_id === frame2.frame_id;\n }\n\n /**\n * Helper: Calculate string similarity (Levenshtein-based)\n */\n private calculateSimilarity(str1: string, str2: string): number {\n const maxLen = Math.max(str1.length, str2.length);\n if (maxLen === 0) return 1;\n\n const distance = this.levenshteinDistance(str1, str2);\n return 1 - distance / maxLen;\n }\n\n /**\n * Helper: Levenshtein distance implementation\n */\n private levenshteinDistance(str1: string, str2: string): number {\n const matrix: number[][] = [];\n\n for (let i = 0; i <= str2.length; i++) {\n matrix[i] = [i];\n }\n\n for (let j = 0; j <= str1.length; j++) {\n matrix[0][j] = j;\n }\n\n for (let i = 1; i <= str2.length; i++) {\n for (let j = 1; j <= str1.length; j++) {\n if (str2.charAt(i - 1) === str1.charAt(j - 1)) {\n matrix[i][j] = matrix[i - 1][j - 1];\n } else {\n matrix[i][j] = Math.min(\n matrix[i - 1][j - 1] + 1,\n matrix[i][j - 1] + 1,\n matrix[i - 1][j] + 1\n );\n }\n }\n }\n\n return matrix[str2.length][str1.length];\n }\n\n /**\n * Helper: Compare frame inputs\n */\n private compareInputs(\n inputs1: Record<string, unknown>,\n inputs2: Record<string, unknown>\n ): number {\n const keys1 = Object.keys(inputs1 || {});\n const keys2 = Object.keys(inputs2 || {});\n const allKeys = new Set([...keys1, ...keys2]);\n\n if (allKeys.size === 0) return 1;\n\n let matches = 0;\n for (const key of allKeys) {\n if (JSON.stringify(inputs1[key]) === JSON.stringify(inputs2[key])) {\n matches++;\n }\n }\n\n return matches / allKeys.size;\n }\n\n /**\n * Helper: Calculate severity for parallel solutions\n */\n private calculateParallelSeverity(\n frame1: Frame,\n frame2: Frame\n ): 'low' | 'medium' | 'high' | 'critical' {\n // Critical if both are completed and have different outputs\n if (frame1.state === 'closed' && frame2.state === 'closed') {\n const outputSimilarity = this.compareInputs(\n frame1.outputs,\n frame2.outputs\n );\n if (outputSimilarity < 0.5) return 'critical';\n if (outputSimilarity < 0.7) return 'high';\n }\n\n // High if different approaches to same parent task\n if (frame1.parent_frame_id === frame2.parent_frame_id) {\n return 'high';\n }\n\n return 'medium';\n }\n\n /**\n * Helper: Extract decision events\n */\n private extractDecisions(events: Event[]): Event[] {\n return events.filter(\n (e) =>\n e.event_type === 'decision' ||\n e.payload?.type === 'decision' ||\n e.payload?.decision !== undefined\n );\n }\n\n /**\n * Helper: Check if two decisions conflict\n */\n private decisionsConflict(d1: Event, d2: Event): boolean {\n // Check if decisions affect same resource/path\n const resource1 = d1.payload?.resource || d1.payload?.path;\n const resource2 = d2.payload?.resource || d2.payload?.path;\n\n if (resource1 && resource2 && resource1 === resource2) {\n // Different decisions on same resource\n return d1.payload?.decision !== d2.payload?.decision;\n }\n\n // Check for logical conflicts\n return this.hasLogicalConflict(d1.payload, d2.payload);\n }\n\n /**\n * Helper: Check for logical conflicts in payloads\n */\n private hasLogicalConflict(payload1: unknown, payload2: unknown): boolean {\n // Architecture decisions\n if (payload1?.architecture && payload2?.architecture) {\n return payload1.architecture !== payload2.architecture;\n }\n\n // Technology choices\n if (payload1?.technology && payload2?.technology) {\n return payload1.technology !== payload2.technology;\n }\n\n return false;\n }\n\n /**\n * Helper: Assess impact of conflicting decisions\n */\n private assessImpact(d1: Event, d2: Event): 'low' | 'medium' | 'high' {\n // High impact for architecture/design decisions\n if (\n d1.payload?.type === 'architecture' ||\n d2.payload?.type === 'architecture'\n ) {\n return 'high';\n }\n\n // Medium for implementation decisions\n if (\n d1.payload?.scope === 'implementation' ||\n d2.payload?.scope === 'implementation'\n ) {\n return 'medium';\n }\n\n return 'low';\n }\n\n /**\n * Helper: Check if decisions can coexist\n */\n private canCoexist(d1: Event, d2: Event): boolean {\n // Different scopes can coexist\n if (d1.payload?.scope !== d2.payload?.scope) {\n return true;\n }\n\n // Non-conflicting resources can coexist\n const resource1 = d1.payload?.resource;\n const resource2 = d2.payload?.resource;\n\n return resource1 !== resource2;\n }\n\n /**\n * Helper: Build frame tree structure\n */\n private buildFrameTree(frames: Frame[]): Map<string, Set<string>> {\n const tree = new Map<string, Set<string>>();\n\n for (const frame of frames) {\n if (frame.parent_frame_id) {\n if (!tree.has(frame.parent_frame_id)) {\n tree.set(frame.parent_frame_id, new Set());\n }\n const parentSet = tree.get(frame.parent_frame_id);\n if (parentSet) {\n parentSet.add(frame.frame_id);\n }\n }\n }\n\n return tree;\n }\n\n /**\n * Helper: Find divergence points in trees\n */\n private findDivergences(\n tree1: Map<string, Set<string>>,\n tree2: Map<string, Set<string>>\n ): Array<{ node1: string; node2: string; depth: number }> {\n const divergences: Array<{ node1: string; node2: string; depth: number }> =\n [];\n\n // Find nodes that exist in both but have different children\n for (const [node, children1] of tree1) {\n if (tree2.has(node)) {\n const children2 = tree2.get(node);\n if (children2 && !this.setsEqual(children1, children2)) {\n divergences.push({\n node1: node,\n node2: node,\n depth: this.calculateDepth(node, tree1),\n });\n }\n }\n }\n\n return divergences;\n }\n\n /**\n * Helper: Check if two sets are equal\n */\n private setsEqual<T>(set1: Set<T>, set2: Set<T>): boolean {\n if (set1.size !== set2.size) return false;\n for (const item of set1) {\n if (!set2.has(item)) return false;\n }\n return true;\n }\n\n /**\n * Helper: Calculate node depth in tree\n */\n private calculateDepth(node: string, tree: Map<string, Set<string>>): number {\n let depth = 0;\n let current = node;\n\n // Find parent of current node\n for (const [parent, children] of tree) {\n if (children.has(current)) {\n depth++;\n current = parent;\n }\n }\n\n return depth;\n }\n\n /**\n * Helper: Calculate divergence severity\n */\n private calculateDivergenceSeverity(divergence: {\n depth: number;\n }): 'low' | 'medium' | 'high' | 'critical' {\n if (divergence.depth === 0) return 'critical'; // Root divergence\n if (divergence.depth === 1) return 'high';\n if (divergence.depth === 2) return 'medium';\n return 'low';\n }\n\n /**\n * Helper: Extract paths from frames\n */\n private extractPaths(frame1: Frame, frame2: Frame): string[] {\n const paths: string[] = [];\n\n if (frame1.inputs?.path) paths.push(frame1.inputs.path);\n if (frame2.inputs?.path) paths.push(frame2.inputs.path);\n if (frame1.outputs?.files) paths.push(...frame1.outputs.files);\n if (frame2.outputs?.files) paths.push(...frame2.outputs.files);\n\n return [...new Set(paths)];\n }\n\n /**\n * Helper: Extract solution from frame\n */\n private extractSolution(frame: Frame): string {\n return (\n frame.outputs?.solution || frame.digest_text || 'No solution description'\n );\n }\n\n /**\n * Helper: Analyze approach taken\n */\n private analyzeApproach(frame: Frame): string {\n if (frame.outputs?.approach) return frame.outputs.approach;\n if (frame.type === 'debug') return 'Debug approach';\n if (frame.type === 'review') return 'Review approach';\n return 'Standard approach';\n }\n\n /**\n * Helper: Calculate solution effectiveness\n */\n private calculateEffectiveness(frame: Frame): number {\n let score = 0.5; // Base score\n\n // Completed frames are more effective\n if (frame.state === 'closed') score += 0.2;\n\n // Frames with outputs are more effective\n if (frame.outputs && Object.keys(frame.outputs).length > 0) score += 0.1;\n\n // Frames with digests are more effective\n if (frame.digest_text) score += 0.1;\n\n // Quick completion is more effective\n if (frame.closed_at && frame.created_at) {\n const duration = frame.closed_at - frame.created_at;\n if (duration < 300000) score += 0.1; // Less than 5 minutes\n }\n\n return Math.min(score, 1);\n }\n\n /**\n * Helper: Group similar frames together\n */\n private groupSimilarFrames(frames: Frame[]): Frame[][] {\n const groups: Frame[][] = [];\n const processed = new Set<string>();\n\n for (const frame of frames) {\n if (processed.has(frame.frame_id)) continue;\n\n const group = [frame];\n processed.add(frame.frame_id);\n\n for (const other of frames) {\n if (\n !processed.has(other.frame_id) &&\n this.framesAreSimilar(frame, other)\n ) {\n group.push(other);\n processed.add(other.frame_id);\n }\n }\n\n groups.push(group);\n }\n\n return groups;\n }\n\n /**\n * Helper: Summarize conflict types\n */\n private summarizeConflictTypes(\n conflicts: MergeConflict[]\n ): Record<string, number> {\n const summary: Record<string, number> = {\n parallel_solution: 0,\n conflicting_decision: 0,\n structural_divergence: 0,\n };\n\n for (const conflict of conflicts) {\n summary[conflict.type]++;\n }\n\n return summary;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -119,7 +119,6 @@ class ResolutionEngine {
119
119
  votes: context.teamVotes
120
120
  };
121
121
  for (const conflict of conflicts) {
122
- const winner = this.determineVoteWinner(conflict, voteResults);
123
122
  conflict.resolution = {
124
123
  strategy,
125
124
  resolvedBy: "team_consensus",
@@ -143,11 +142,7 @@ class ResolutionEngine {
143
142
  if (context.userRole !== "senior" && context.userRole !== "lead") {
144
143
  throw new Error("Senior override requires senior or lead role");
145
144
  }
146
- const preferredStack = this.determinePreferredStack(
147
- stack1,
148
- stack2,
149
- context
150
- );
145
+ this.determinePreferredStack(stack1, stack2, context);
151
146
  const strategy = {
152
147
  type: "senior_override",
153
148
  confidence: 0.95,
@@ -408,7 +403,7 @@ class ResolutionEngine {
408
403
  /**
409
404
  * Get AI recommendation for specific conflict
410
405
  */
411
- getAIRecommendation(conflict, analysis) {
406
+ getAIRecommendation(conflict) {
412
407
  switch (conflict.type) {
413
408
  case "parallel_solution":
414
409
  return "Recommend keeping both solutions for A/B testing";
@@ -423,14 +418,8 @@ class ResolutionEngine {
423
418
  /**
424
419
  * Create rollback point before merge
425
420
  */
426
- createRollbackPoint(stack1, stack2) {
421
+ createRollbackPoint(_stack1, _stack2) {
427
422
  const rollbackId = uuidv4();
428
- const rollbackData = {
429
- id: rollbackId,
430
- timestamp: Date.now(),
431
- stack1: JSON.parse(JSON.stringify(stack1)),
432
- stack2: JSON.parse(JSON.stringify(stack2))
433
- };
434
423
  logger.info("Created rollback point", { rollbackId });
435
424
  return rollbackId;
436
425
  }