@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
@@ -0,0 +1,774 @@
1
+ import { logger } from "../monitoring/logger.js";
2
+ import { ValidationError, DatabaseError, ErrorCode } from "../errors/index.js";
3
+ import {
4
+ validateInput,
5
+ InitiateHandoffSchema,
6
+ HandoffApprovalSchema
7
+ } from "./validation.js";
8
+ class FrameHandoffManager {
9
+ dualStackManager;
10
+ activeHandoffs = /* @__PURE__ */ new Map();
11
+ pendingApprovals = /* @__PURE__ */ new Map();
12
+ notifications = /* @__PURE__ */ new Map();
13
+ constructor(dualStackManager) {
14
+ this.dualStackManager = dualStackManager;
15
+ }
16
+ /**
17
+ * Initiate a frame handoff with rich metadata and approval workflow
18
+ */
19
+ async initiateHandoff(targetStackId, frameIds, metadata, targetUserId, message) {
20
+ const input = validateInput(InitiateHandoffSchema, {
21
+ targetStackId,
22
+ frameIds,
23
+ handoffRequest: metadata,
24
+ reviewerId: targetUserId,
25
+ description: message
26
+ });
27
+ try {
28
+ await this.dualStackManager.getPermissionManager().enforcePermission(
29
+ this.dualStackManager.getPermissionManager().createContext(
30
+ input.handoffRequest.initiatorId,
31
+ "handoff",
32
+ "handoff",
33
+ input.targetStackId
34
+ )
35
+ );
36
+ await this.validateFramesForHandoff(input.frameIds);
37
+ const requestId = await this.dualStackManager.initiateHandoff(
38
+ input.targetStackId,
39
+ input.frameIds,
40
+ input.reviewerId,
41
+ input.description
42
+ );
43
+ const progress = {
44
+ requestId,
45
+ status: "pending_review",
46
+ transferredFrames: 0,
47
+ totalFrames: input.frameIds.length,
48
+ currentStep: "Awaiting approval",
49
+ errors: []
50
+ };
51
+ this.activeHandoffs.set(requestId, progress);
52
+ await this.createHandoffNotifications(requestId, metadata, targetUserId);
53
+ await this.scheduleHandoffReminders(requestId, metadata);
54
+ logger.info(`Initiated enhanced handoff: ${requestId}`, {
55
+ frameCount: frameIds.length,
56
+ priority: metadata.businessContext?.priority,
57
+ targetUser: targetUserId
58
+ });
59
+ return requestId;
60
+ } catch (error) {
61
+ throw new DatabaseError(
62
+ "Failed to initiate handoff",
63
+ ErrorCode.OPERATION_FAILED,
64
+ { targetStackId, frameIds },
65
+ error instanceof Error ? error : void 0
66
+ );
67
+ }
68
+ }
69
+ /**
70
+ * Submit approval/rejection for handoff request
71
+ */
72
+ async submitHandoffApproval(requestId, approval) {
73
+ const input = validateInput(HandoffApprovalSchema, {
74
+ ...approval,
75
+ reviewerId: approval.reviewerId
76
+ });
77
+ const progress = this.activeHandoffs.get(requestId);
78
+ if (!progress) {
79
+ throw new ValidationError(
80
+ `Handoff request not found: ${requestId}`,
81
+ ErrorCode.HANDOFF_REQUEST_EXPIRED
82
+ );
83
+ }
84
+ const fullApproval = {
85
+ ...input,
86
+ requestId,
87
+ reviewedAt: /* @__PURE__ */ new Date()
88
+ };
89
+ const existingApprovals = this.pendingApprovals.get(requestId) || [];
90
+ existingApprovals.push(fullApproval);
91
+ this.pendingApprovals.set(requestId, existingApprovals);
92
+ if (input.decision === "approved") {
93
+ progress.status = "approved";
94
+ progress.currentStep = "Ready for transfer";
95
+ await this.executeHandoffTransfer(requestId);
96
+ } else if (input.decision === "rejected") {
97
+ progress.status = "failed";
98
+ progress.currentStep = "Rejected by reviewer";
99
+ progress.errors.push({
100
+ step: "approval",
101
+ error: input.feedback || "Request rejected",
102
+ timestamp: /* @__PURE__ */ new Date()
103
+ });
104
+ } else if (input.decision === "needs_changes") {
105
+ progress.status = "pending_review";
106
+ progress.currentStep = "Changes requested";
107
+ await this.notifyChangesRequested(requestId, approval);
108
+ }
109
+ this.activeHandoffs.set(requestId, progress);
110
+ logger.info(`Handoff approval submitted: ${requestId}`, {
111
+ decision: approval.decision,
112
+ reviewer: approval.reviewerId
113
+ });
114
+ }
115
+ /**
116
+ * Execute the actual frame transfer after approval
117
+ */
118
+ async executeHandoffTransfer(requestId) {
119
+ logger.debug("executeHandoffTransfer called", {
120
+ requestId,
121
+ availableHandoffs: Array.from(this.activeHandoffs.keys())
122
+ });
123
+ const progress = this.activeHandoffs.get(requestId);
124
+ if (!progress) {
125
+ logger.error("Handoff progress not found", {
126
+ requestId,
127
+ availableHandoffs: Array.from(this.activeHandoffs.keys())
128
+ });
129
+ throw new DatabaseError(
130
+ `Handoff progress not found: ${requestId}`,
131
+ ErrorCode.INVALID_STATE
132
+ );
133
+ }
134
+ try {
135
+ logger.debug("Setting progress status to in_transfer", { requestId });
136
+ progress.status = "in_transfer";
137
+ progress.currentStep = "Transferring frames";
138
+ progress.estimatedCompletion = new Date(Date.now() + 5 * 60 * 1e3);
139
+ logger.debug("About to call acceptHandoff", { requestId });
140
+ const result = await this.dualStackManager.acceptHandoff(requestId);
141
+ logger.debug("acceptHandoff returned", {
142
+ requestId,
143
+ success: result.success
144
+ });
145
+ if (result.success) {
146
+ progress.status = "completed";
147
+ progress.currentStep = "Transfer completed";
148
+ progress.transferredFrames = result.mergedFrames.length;
149
+ await this.notifyHandoffCompletion(requestId, result);
150
+ logger.info(`Handoff transfer completed: ${requestId}`, {
151
+ transferredFrames: progress.transferredFrames,
152
+ conflicts: result.conflictFrames.length
153
+ });
154
+ } else {
155
+ progress.status = "failed";
156
+ progress.currentStep = "Transfer failed";
157
+ result.errors.forEach((error) => {
158
+ progress.errors.push({
159
+ step: "transfer",
160
+ error: `Frame ${error.frameId}: ${error.error}`,
161
+ timestamp: /* @__PURE__ */ new Date()
162
+ });
163
+ });
164
+ throw new DatabaseError(
165
+ "Handoff transfer failed",
166
+ ErrorCode.OPERATION_FAILED,
167
+ { errors: result.errors }
168
+ );
169
+ }
170
+ } catch (error) {
171
+ progress.status = "failed";
172
+ progress.currentStep = "Transfer error";
173
+ progress.errors.push({
174
+ step: "transfer",
175
+ error: error instanceof Error ? error.message : String(error),
176
+ timestamp: /* @__PURE__ */ new Date()
177
+ });
178
+ logger.error(`Handoff transfer failed: ${requestId}`, error);
179
+ throw error;
180
+ } finally {
181
+ this.activeHandoffs.set(requestId, progress);
182
+ }
183
+ }
184
+ /**
185
+ * Get handoff progress and status
186
+ */
187
+ async getHandoffProgress(requestId) {
188
+ return this.activeHandoffs.get(requestId) || null;
189
+ }
190
+ /**
191
+ * Cancel a pending handoff request
192
+ */
193
+ async cancelHandoff(requestId, reason) {
194
+ const progress = this.activeHandoffs.get(requestId);
195
+ if (!progress) {
196
+ throw new DatabaseError(
197
+ `Handoff request not found: ${requestId}`,
198
+ ErrorCode.RESOURCE_NOT_FOUND
199
+ );
200
+ }
201
+ if (progress.status === "in_transfer") {
202
+ throw new DatabaseError(
203
+ "Cannot cancel handoff that is currently transferring",
204
+ ErrorCode.INVALID_STATE
205
+ );
206
+ }
207
+ progress.status = "cancelled";
208
+ progress.currentStep = "Cancelled by user";
209
+ progress.errors.push({
210
+ step: "cancellation",
211
+ error: reason,
212
+ timestamp: /* @__PURE__ */ new Date()
213
+ });
214
+ this.activeHandoffs.set(requestId, progress);
215
+ await this.notifyHandoffCancellation(requestId, reason);
216
+ logger.info(`Handoff cancelled: ${requestId}`, { reason });
217
+ }
218
+ /**
219
+ * Get all active handoffs for a user or team
220
+ */
221
+ async getActiveHandoffs(userId, teamId) {
222
+ const handoffs = Array.from(this.activeHandoffs.values());
223
+ if (userId || teamId) {
224
+ return handoffs.filter(
225
+ (handoff) => handoff.status === "pending_review" || handoff.status === "approved" || handoff.status === "in_transfer"
226
+ );
227
+ }
228
+ return handoffs;
229
+ }
230
+ /**
231
+ * Get notifications for a user
232
+ */
233
+ async getUserNotifications(userId) {
234
+ return this.notifications.get(userId) || [];
235
+ }
236
+ /**
237
+ * Mark notification as read
238
+ */
239
+ async markNotificationRead(notificationId, userId) {
240
+ const userNotifications = this.notifications.get(userId) || [];
241
+ const updatedNotifications = userNotifications.filter(
242
+ (n) => n.id !== notificationId
243
+ );
244
+ this.notifications.set(userId, updatedNotifications);
245
+ }
246
+ /**
247
+ * Validate frames are suitable for handoff
248
+ */
249
+ async validateFramesForHandoff(frameIds) {
250
+ const activeStack = this.dualStackManager.getActiveStack();
251
+ for (const frameId of frameIds) {
252
+ const frame = await activeStack.getFrame(frameId);
253
+ if (!frame) {
254
+ throw new DatabaseError(
255
+ `Frame not found: ${frameId}`,
256
+ ErrorCode.RESOURCE_NOT_FOUND
257
+ );
258
+ }
259
+ if (frame.state === "active") {
260
+ logger.warn(`Transferring active frame: ${frameId}`, {
261
+ frameName: frame.name
262
+ });
263
+ }
264
+ }
265
+ }
266
+ /**
267
+ * Create notifications for handoff stakeholders
268
+ */
269
+ async createHandoffNotifications(requestId, metadata, targetUserId) {
270
+ const notifications = [];
271
+ if (targetUserId) {
272
+ notifications.push({
273
+ id: `${requestId}-target`,
274
+ type: "request",
275
+ requestId,
276
+ recipientId: targetUserId,
277
+ title: "Frame Handoff Request",
278
+ message: `${metadata.initiatorId} wants to transfer ${metadata.frameContext.totalFrames} frames to you`,
279
+ actionRequired: true,
280
+ expiresAt: new Date(Date.now() + 24 * 60 * 60 * 1e3),
281
+ createdAt: /* @__PURE__ */ new Date()
282
+ });
283
+ }
284
+ if (metadata.businessContext?.stakeholders) {
285
+ for (const stakeholderId of metadata.businessContext.stakeholders) {
286
+ notifications.push({
287
+ id: `${requestId}-stakeholder-${stakeholderId}`,
288
+ type: "request",
289
+ requestId,
290
+ recipientId: stakeholderId,
291
+ title: "Frame Handoff Notification",
292
+ message: `Frame transfer initiated for ${metadata.businessContext?.milestone || "project milestone"}`,
293
+ actionRequired: false,
294
+ createdAt: /* @__PURE__ */ new Date()
295
+ });
296
+ }
297
+ }
298
+ for (const notification of notifications) {
299
+ const userNotifications = this.notifications.get(notification.recipientId) || [];
300
+ userNotifications.push(notification);
301
+ this.notifications.set(notification.recipientId, userNotifications);
302
+ }
303
+ }
304
+ /**
305
+ * Schedule reminder notifications
306
+ */
307
+ async scheduleHandoffReminders(requestId, metadata) {
308
+ if (metadata.businessContext?.priority === "high" || metadata.businessContext?.priority === "critical") {
309
+ setTimeout(
310
+ async () => {
311
+ const progress = this.activeHandoffs.get(requestId);
312
+ if (progress && progress.status === "pending_review") {
313
+ await this.sendHandoffReminder(requestId, metadata);
314
+ }
315
+ },
316
+ 4 * 60 * 60 * 1e3
317
+ );
318
+ }
319
+ }
320
+ /**
321
+ * Send handoff reminder
322
+ */
323
+ async sendHandoffReminder(requestId, metadata) {
324
+ const progress = this.activeHandoffs.get(requestId);
325
+ if (!progress || progress.status !== "pending_review") {
326
+ return;
327
+ }
328
+ const reminderNotification = {
329
+ id: `${requestId}-reminder-${Date.now()}`,
330
+ type: "reminder",
331
+ requestId,
332
+ recipientId: metadata.targetUserId || "unknown",
333
+ title: "\u23F0 Handoff Request Reminder",
334
+ message: `Reminder: ${metadata.initiatorId} is waiting for approval on ${metadata.frameContext.totalFrames} frames. Priority: ${metadata.businessContext?.priority || "medium"}`,
335
+ actionRequired: true,
336
+ expiresAt: new Date(Date.now() + 12 * 60 * 60 * 1e3),
337
+ // 12 hours
338
+ createdAt: /* @__PURE__ */ new Date()
339
+ };
340
+ if (metadata.targetUserId) {
341
+ const userNotifications = this.notifications.get(metadata.targetUserId) || [];
342
+ userNotifications.push(reminderNotification);
343
+ this.notifications.set(metadata.targetUserId, userNotifications);
344
+ logger.info(`Sent handoff reminder: ${requestId}`, {
345
+ priority: metadata.businessContext?.priority,
346
+ recipient: metadata.targetUserId
347
+ });
348
+ }
349
+ if (metadata.businessContext?.stakeholders) {
350
+ for (const stakeholderId of metadata.businessContext.stakeholders) {
351
+ const stakeholderNotification = {
352
+ ...reminderNotification,
353
+ id: `${requestId}-reminder-stakeholder-${stakeholderId}-${Date.now()}`,
354
+ recipientId: stakeholderId,
355
+ title: "\u{1F4CB} Handoff Status Update",
356
+ message: `Pending handoff approval: ${metadata.businessContext?.milestone || "development work"} requires attention`,
357
+ actionRequired: false
358
+ };
359
+ const stakeholderNotifications = this.notifications.get(stakeholderId) || [];
360
+ stakeholderNotifications.push(stakeholderNotification);
361
+ this.notifications.set(stakeholderId, stakeholderNotifications);
362
+ }
363
+ }
364
+ }
365
+ /**
366
+ * Notify when changes are requested
367
+ */
368
+ async notifyChangesRequested(requestId, approval) {
369
+ const progress = this.activeHandoffs.get(requestId);
370
+ if (!progress) return;
371
+ const changeRequestNotification = {
372
+ id: `${requestId}-changes-${Date.now()}`,
373
+ type: "request",
374
+ requestId,
375
+ recipientId: "requester",
376
+ // TODO: Get actual requester from handoff metadata
377
+ title: "\u{1F504} Changes Requested for Handoff",
378
+ message: `${approval.reviewerId} has requested changes: ${approval.feedback || "See detailed suggestions"}`,
379
+ actionRequired: true,
380
+ expiresAt: new Date(Date.now() + 48 * 60 * 60 * 1e3),
381
+ // 48 hours
382
+ createdAt: /* @__PURE__ */ new Date()
383
+ };
384
+ const notifications = this.notifications.get("requester") || [];
385
+ notifications.push(changeRequestNotification);
386
+ this.notifications.set("requester", notifications);
387
+ logger.info(`Changes requested for handoff: ${requestId}`, {
388
+ reviewer: approval.reviewerId,
389
+ feedback: approval.feedback,
390
+ suggestedChangesCount: approval.suggestedChanges?.length || 0
391
+ });
392
+ if (approval.suggestedChanges && approval.suggestedChanges.length > 0) {
393
+ logger.info(`Detailed change suggestions:`, {
394
+ requestId,
395
+ suggestions: approval.suggestedChanges.map((change) => ({
396
+ frameId: change.frameId,
397
+ suggestion: change.suggestion,
398
+ reason: change.reason
399
+ }))
400
+ });
401
+ }
402
+ }
403
+ /**
404
+ * Notify handoff completion
405
+ */
406
+ async notifyHandoffCompletion(requestId, result) {
407
+ const progress = this.activeHandoffs.get(requestId);
408
+ if (!progress) return;
409
+ const completionNotification = {
410
+ id: `${requestId}-completion-${Date.now()}`,
411
+ type: "completion",
412
+ requestId,
413
+ recipientId: "all",
414
+ // Will be distributed to all stakeholders
415
+ title: "\u2705 Handoff Completed Successfully",
416
+ message: `Frame transfer completed: ${result.mergedFrames.length} frames transferred${result.conflictFrames.length > 0 ? `, ${result.conflictFrames.length} conflicts resolved` : ""}`,
417
+ actionRequired: false,
418
+ createdAt: /* @__PURE__ */ new Date()
419
+ };
420
+ const allUsers = Array.from(this.notifications.keys());
421
+ for (const userId of allUsers) {
422
+ const userSpecificNotification = {
423
+ ...completionNotification,
424
+ id: `${requestId}-completion-${userId}-${Date.now()}`,
425
+ recipientId: userId
426
+ };
427
+ const userNotifications = this.notifications.get(userId) || [];
428
+ userNotifications.push(userSpecificNotification);
429
+ this.notifications.set(userId, userNotifications);
430
+ }
431
+ logger.info(`Handoff completed: ${requestId}`, {
432
+ mergedFrames: result.mergedFrames.length,
433
+ conflicts: result.conflictFrames.length,
434
+ notifiedUsers: allUsers.length
435
+ });
436
+ if (result.conflictFrames.length > 0) {
437
+ logger.info(`Handoff completion details:`, {
438
+ requestId,
439
+ transferredFrames: result.mergedFrames.map(
440
+ (f) => f.frameId || f.id
441
+ ),
442
+ conflictFrames: result.conflictFrames.map(
443
+ (f) => f.frameId || f.id
444
+ )
445
+ });
446
+ }
447
+ }
448
+ /**
449
+ * Notify handoff cancellation
450
+ */
451
+ async notifyHandoffCancellation(requestId, reason) {
452
+ const cancellationNotification = {
453
+ id: `${requestId}-cancellation-${Date.now()}`,
454
+ type: "request",
455
+ // Using 'request' type as it's informational
456
+ requestId,
457
+ recipientId: "all",
458
+ // Will be distributed to all stakeholders
459
+ title: "\u274C Handoff Cancelled",
460
+ message: `Handoff request has been cancelled. Reason: ${reason}`,
461
+ actionRequired: false,
462
+ createdAt: /* @__PURE__ */ new Date()
463
+ };
464
+ const allUsers = Array.from(this.notifications.keys());
465
+ for (const userId of allUsers) {
466
+ const userSpecificNotification = {
467
+ ...cancellationNotification,
468
+ id: `${requestId}-cancellation-${userId}-${Date.now()}`,
469
+ recipientId: userId
470
+ };
471
+ const userNotifications = this.notifications.get(userId) || [];
472
+ userNotifications.push(userSpecificNotification);
473
+ this.notifications.set(userId, userNotifications);
474
+ }
475
+ logger.info(`Handoff cancelled: ${requestId}`, {
476
+ reason,
477
+ notifiedUsers: allUsers.length
478
+ });
479
+ }
480
+ /**
481
+ * Get handoff analytics and metrics
482
+ */
483
+ async getHandoffMetrics(timeRange) {
484
+ const handoffs = Array.from(this.activeHandoffs.values());
485
+ const filteredHandoffs = timeRange ? handoffs.filter((h) => {
486
+ return true;
487
+ }) : handoffs;
488
+ const completedHandoffs = filteredHandoffs.filter(
489
+ (h) => h.status === "completed"
490
+ );
491
+ return {
492
+ totalHandoffs: filteredHandoffs.length,
493
+ completedHandoffs: completedHandoffs.length,
494
+ averageProcessingTime: this.calculateAverageProcessingTime(completedHandoffs),
495
+ topFrameTypes: this.analyzeFrameTypes(filteredHandoffs),
496
+ collaborationPatterns: this.analyzeCollaborationPatterns(filteredHandoffs)
497
+ };
498
+ }
499
+ calculateAverageProcessingTime(handoffs) {
500
+ if (handoffs.length === 0) return 0;
501
+ let totalProcessingTime = 0;
502
+ let validHandoffs = 0;
503
+ for (const handoff of handoffs) {
504
+ if (handoff.status === "completed" && handoff.estimatedCompletion) {
505
+ const frameComplexity = handoff.totalFrames * 0.5;
506
+ const errorPenalty = handoff.errors.length * 2;
507
+ const processingTime = Math.max(1, frameComplexity + errorPenalty);
508
+ totalProcessingTime += processingTime;
509
+ validHandoffs++;
510
+ }
511
+ }
512
+ return validHandoffs > 0 ? Math.round(totalProcessingTime / validHandoffs) : 0;
513
+ }
514
+ analyzeFrameTypes(handoffs) {
515
+ const frameTypeCount = /* @__PURE__ */ new Map();
516
+ for (const handoff of handoffs) {
517
+ const estimatedTypes = this.estimateFrameTypes(handoff);
518
+ for (const type of estimatedTypes) {
519
+ frameTypeCount.set(type, (frameTypeCount.get(type) || 0) + 1);
520
+ }
521
+ }
522
+ return Array.from(frameTypeCount.entries()).map(([type, count]) => ({ type, count })).sort((a, b) => b.count - a.count).slice(0, 10);
523
+ }
524
+ estimateFrameTypes(handoff) {
525
+ const types = [];
526
+ if (handoff.totalFrames > 10) {
527
+ types.push("bulk_transfer");
528
+ }
529
+ if (handoff.errors.length > 0) {
530
+ types.push("complex_handoff");
531
+ }
532
+ if (handoff.transferredFrames === handoff.totalFrames) {
533
+ types.push("complete_transfer");
534
+ } else {
535
+ types.push("partial_transfer");
536
+ }
537
+ types.push("development", "collaboration");
538
+ return types;
539
+ }
540
+ analyzeCollaborationPatterns(handoffs) {
541
+ const collaborationCount = /* @__PURE__ */ new Map();
542
+ for (const handoff of handoffs) {
543
+ const pattern = this.extractCollaborationPattern(handoff);
544
+ if (pattern) {
545
+ const key = `${pattern.sourceUser}->${pattern.targetUser}`;
546
+ collaborationCount.set(key, (collaborationCount.get(key) || 0) + 1);
547
+ }
548
+ }
549
+ return Array.from(collaborationCount.entries()).map(([pattern, count]) => {
550
+ const [sourceUser, targetUser] = pattern.split("->");
551
+ return { sourceUser, targetUser, count };
552
+ }).sort((a, b) => b.count - a.count).slice(0, 20);
553
+ }
554
+ extractCollaborationPattern(handoff) {
555
+ if (handoff.status === "completed") {
556
+ return {
557
+ sourceUser: "developer",
558
+ targetUser: "reviewer"
559
+ };
560
+ } else if (handoff.status === "failed") {
561
+ return {
562
+ sourceUser: "developer",
563
+ targetUser: "lead"
564
+ };
565
+ }
566
+ return null;
567
+ }
568
+ /**
569
+ * Real-time collaboration features
570
+ */
571
+ /**
572
+ * Get real-time handoff status updates
573
+ */
574
+ async getHandoffStatusStream(requestId) {
575
+ const progress = this.activeHandoffs.get(requestId);
576
+ if (!progress) {
577
+ throw new DatabaseError(
578
+ `Handoff request not found: ${requestId}`,
579
+ ErrorCode.RESOURCE_NOT_FOUND
580
+ );
581
+ }
582
+ const self = this;
583
+ return {
584
+ async *[Symbol.asyncIterator]() {
585
+ let lastStatus = progress.status;
586
+ while (lastStatus !== "completed" && lastStatus !== "failed" && lastStatus !== "cancelled") {
587
+ const currentProgress = self.activeHandoffs.get(requestId);
588
+ if (currentProgress && currentProgress.status !== lastStatus) {
589
+ lastStatus = currentProgress.status;
590
+ yield currentProgress;
591
+ }
592
+ await new Promise((resolve) => setTimeout(resolve, 1e3));
593
+ }
594
+ }
595
+ };
596
+ }
597
+ /**
598
+ * Update handoff progress in real-time
599
+ */
600
+ async updateHandoffProgress(requestId, update) {
601
+ let progress = this.activeHandoffs.get(requestId);
602
+ if (!progress && update.requestId && update.status && update.totalFrames !== void 0) {
603
+ progress = {
604
+ requestId: update.requestId,
605
+ status: update.status,
606
+ transferredFrames: 0,
607
+ totalFrames: update.totalFrames,
608
+ currentStep: "Initialized",
609
+ errors: [],
610
+ ...update
611
+ };
612
+ } else if (!progress) {
613
+ throw new DatabaseError(
614
+ `Handoff request not found: ${requestId}`,
615
+ ErrorCode.RESOURCE_NOT_FOUND
616
+ );
617
+ } else {
618
+ progress = {
619
+ ...progress,
620
+ ...update
621
+ };
622
+ }
623
+ this.activeHandoffs.set(requestId, progress);
624
+ logger.info(`Handoff progress updated: ${requestId}`, {
625
+ status: progress.status,
626
+ currentStep: progress.currentStep,
627
+ transferredFrames: progress.transferredFrames
628
+ });
629
+ await this.notifyProgressUpdate(requestId, progress);
630
+ }
631
+ /**
632
+ * Notify stakeholders of progress updates
633
+ */
634
+ async notifyProgressUpdate(requestId, progress) {
635
+ const updateNotification = {
636
+ id: `${requestId}-progress-${Date.now()}`,
637
+ type: "request",
638
+ requestId,
639
+ recipientId: "all",
640
+ title: "\u{1F4CA} Handoff Progress Update",
641
+ message: `Status: ${progress.status} | Step: ${progress.currentStep} | Progress: ${progress.transferredFrames}/${progress.totalFrames} frames`,
642
+ actionRequired: false,
643
+ createdAt: /* @__PURE__ */ new Date()
644
+ };
645
+ const allUsers = Array.from(this.notifications.keys());
646
+ for (const userId of allUsers) {
647
+ const userNotifications = this.notifications.get(userId) || [];
648
+ userNotifications.push({
649
+ ...updateNotification,
650
+ id: `${requestId}-progress-${userId}-${Date.now()}`,
651
+ recipientId: userId
652
+ });
653
+ this.notifications.set(userId, userNotifications);
654
+ }
655
+ }
656
+ /**
657
+ * Get active handoffs with real-time filtering
658
+ */
659
+ async getActiveHandoffsRealTime(filters) {
660
+ let handoffs = Array.from(this.activeHandoffs.values());
661
+ if (filters?.status) {
662
+ handoffs = handoffs.filter((h) => h.status === filters.status);
663
+ }
664
+ if (filters?.userId) {
665
+ handoffs = handoffs.filter(
666
+ (h) => h.requestId.includes(filters.userId || "")
667
+ );
668
+ }
669
+ if (filters?.priority) {
670
+ handoffs = handoffs.filter((h) => {
671
+ const estimatedPriority = this.estimateHandoffPriority(h);
672
+ return estimatedPriority === filters.priority;
673
+ });
674
+ }
675
+ return handoffs.sort((a, b) => {
676
+ const statusPriority = {
677
+ in_transfer: 4,
678
+ approved: 3,
679
+ pending_review: 2,
680
+ completed: 1,
681
+ failed: 1,
682
+ cancelled: 0
683
+ };
684
+ return (statusPriority[b.status] || 0) - (statusPriority[a.status] || 0);
685
+ });
686
+ }
687
+ estimateHandoffPriority(handoff) {
688
+ if (handoff.errors.length > 2 || handoff.totalFrames > 50)
689
+ return "critical";
690
+ if (handoff.errors.length > 0 || handoff.totalFrames > 20) return "high";
691
+ if (handoff.totalFrames > 5) return "medium";
692
+ return "low";
693
+ }
694
+ /**
695
+ * Bulk handoff operations for team collaboration
696
+ */
697
+ async bulkHandoffOperation(operation) {
698
+ const results = {
699
+ successful: [],
700
+ failed: []
701
+ };
702
+ for (const requestId of operation.requestIds) {
703
+ try {
704
+ switch (operation.action) {
705
+ case "approve":
706
+ await this.submitHandoffApproval(requestId, {
707
+ reviewerId: operation.reviewerId,
708
+ decision: "approved",
709
+ feedback: operation.feedback
710
+ });
711
+ results.successful.push(requestId);
712
+ break;
713
+ case "reject":
714
+ await this.submitHandoffApproval(requestId, {
715
+ reviewerId: operation.reviewerId,
716
+ decision: "rejected",
717
+ feedback: operation.feedback || "Bulk rejection"
718
+ });
719
+ results.successful.push(requestId);
720
+ break;
721
+ case "cancel":
722
+ await this.cancelHandoff(
723
+ requestId,
724
+ operation.feedback || "Bulk cancellation"
725
+ );
726
+ results.successful.push(requestId);
727
+ break;
728
+ }
729
+ } catch (error) {
730
+ results.failed.push({
731
+ requestId,
732
+ error: error instanceof Error ? error.message : String(error)
733
+ });
734
+ }
735
+ }
736
+ logger.info(`Bulk handoff operation completed`, {
737
+ action: operation.action,
738
+ successful: results.successful.length,
739
+ failed: results.failed.length,
740
+ reviewerId: operation.reviewerId
741
+ });
742
+ return results;
743
+ }
744
+ /**
745
+ * Enhanced notification management with cleanup
746
+ */
747
+ async cleanupExpiredNotifications(userId) {
748
+ let cleanedCount = 0;
749
+ const now = /* @__PURE__ */ new Date();
750
+ const userIds = userId ? [userId] : Array.from(this.notifications.keys());
751
+ for (const uid of userIds) {
752
+ const userNotifications = this.notifications.get(uid) || [];
753
+ const activeNotifications = userNotifications.filter((notification) => {
754
+ if (notification.expiresAt && notification.expiresAt < now) {
755
+ cleanedCount++;
756
+ return false;
757
+ }
758
+ return true;
759
+ });
760
+ this.notifications.set(uid, activeNotifications);
761
+ }
762
+ if (cleanedCount > 0) {
763
+ logger.info(`Cleaned up expired notifications`, {
764
+ count: cleanedCount,
765
+ userId: userId || "all"
766
+ });
767
+ }
768
+ return cleanedCount;
769
+ }
770
+ }
771
+ export {
772
+ FrameHandoffManager
773
+ };
774
+ //# sourceMappingURL=frame-handoff-manager.js.map