@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,374 @@
1
+ import { logger } from "../monitoring/logger.js";
2
+ class TeamAnalytics {
3
+ teamMembers = /* @__PURE__ */ new Map();
4
+ handoffHistory = [];
5
+ mergeHistory = [];
6
+ analyticsCache = /* @__PURE__ */ new Map();
7
+ /**
8
+ * Add or update team member
9
+ */
10
+ addTeamMember(member) {
11
+ this.teamMembers.set(member.userId, member);
12
+ logger.info(`Team member added: ${member.userId}`, {
13
+ role: member.role,
14
+ skills: member.skills
15
+ });
16
+ }
17
+ /**
18
+ * Record handoff activity
19
+ */
20
+ recordHandoffActivity(progress, metadata) {
21
+ this.handoffHistory.push(progress);
22
+ this.invalidateCache("handoff");
23
+ logger.debug(`Handoff activity recorded: ${progress.requestId}`, {
24
+ status: progress.status,
25
+ transferredFrames: progress.transferredFrames
26
+ });
27
+ }
28
+ /**
29
+ * Record merge activity
30
+ */
31
+ recordMergeActivity(session) {
32
+ this.mergeHistory.push(session);
33
+ this.invalidateCache("merge");
34
+ logger.debug(`Merge activity recorded: ${session.sessionId}`, {
35
+ conflicts: session.conflicts.length,
36
+ resolutions: session.resolutions.length
37
+ });
38
+ }
39
+ /**
40
+ * Generate comprehensive collaboration metrics
41
+ */
42
+ async generateCollaborationMetrics(timeRange) {
43
+ const cacheKey = `metrics-${timeRange.start.toISOString()}-${timeRange.end.toISOString()}`;
44
+ if (this.analyticsCache.has(cacheKey)) {
45
+ return this.analyticsCache.get(cacheKey);
46
+ }
47
+ const metrics = {
48
+ timeRange,
49
+ teamMetrics: await this.calculateTeamMetrics(timeRange),
50
+ handoffMetrics: await this.calculateHandoffMetrics(timeRange),
51
+ conflictMetrics: await this.calculateConflictMetrics(timeRange),
52
+ productivityMetrics: await this.calculateProductivityMetrics(timeRange)
53
+ };
54
+ this.analyticsCache.set(cacheKey, metrics);
55
+ return metrics;
56
+ }
57
+ /**
58
+ * Calculate team-level metrics
59
+ */
60
+ async calculateTeamMetrics(timeRange) {
61
+ const allMembers = Array.from(this.teamMembers.values());
62
+ const activeMembers = allMembers.filter(
63
+ (m) => m.lastActive >= timeRange.start && m.lastActive <= timeRange.end
64
+ );
65
+ const newMembers = allMembers.filter(
66
+ (m) => m.joinedAt >= timeRange.start && m.joinedAt <= timeRange.end
67
+ );
68
+ const previousPeriodStart = new Date(
69
+ timeRange.start.getTime() - (timeRange.end.getTime() - timeRange.start.getTime())
70
+ );
71
+ const previousActiveMembers = allMembers.filter(
72
+ (m) => m.lastActive >= previousPeriodStart && m.lastActive < timeRange.start
73
+ );
74
+ const retainedMembers = activeMembers.filter(
75
+ (m) => previousActiveMembers.find((pm) => pm.userId === m.userId)
76
+ );
77
+ const retentionRate = previousActiveMembers.length > 0 ? retainedMembers.length / previousActiveMembers.length : 1;
78
+ return {
79
+ totalMembers: allMembers.length,
80
+ activeMembers: activeMembers.length,
81
+ newMembers: newMembers.length,
82
+ retentionRate
83
+ };
84
+ }
85
+ /**
86
+ * Calculate handoff-specific metrics
87
+ */
88
+ async calculateHandoffMetrics(timeRange) {
89
+ const relevantHandoffs = this.handoffHistory.filter((h) => {
90
+ return true;
91
+ });
92
+ const successfulHandoffs = relevantHandoffs.filter(
93
+ (h) => h.status === "completed"
94
+ );
95
+ const rejectedHandoffs = relevantHandoffs.filter(
96
+ (h) => h.status === "failed"
97
+ );
98
+ const averageApprovalTime = this.calculateAverageTime(
99
+ successfulHandoffs,
100
+ "approval"
101
+ );
102
+ const handoffPairs = this.analyzeHandoffPairs(relevantHandoffs);
103
+ return {
104
+ totalHandoffs: relevantHandoffs.length,
105
+ successfulHandoffs: successfulHandoffs.length,
106
+ averageApprovalTime,
107
+ rejectionRate: relevantHandoffs.length > 0 ? rejectedHandoffs.length / relevantHandoffs.length : 0,
108
+ mostActiveHandoffPairs: handoffPairs
109
+ };
110
+ }
111
+ /**
112
+ * Calculate conflict resolution metrics
113
+ */
114
+ async calculateConflictMetrics(timeRange) {
115
+ const relevantMerges = this.mergeHistory.filter((m) => {
116
+ return m.startedAt >= timeRange.start && m.startedAt <= timeRange.end;
117
+ });
118
+ const totalConflicts = relevantMerges.reduce(
119
+ (sum, m) => sum + m.conflicts.length,
120
+ 0
121
+ );
122
+ const autoResolved = relevantMerges.reduce(
123
+ (sum, m) => sum + m.metadata.autoResolvedConflicts,
124
+ 0
125
+ );
126
+ const manualResolved = relevantMerges.reduce(
127
+ (sum, m) => sum + m.metadata.manualResolvedConflicts,
128
+ 0
129
+ );
130
+ const averageResolutionTime = this.calculateAverageResolutionTime(relevantMerges);
131
+ const conflictHotspots = this.analyzeConflictHotspots(relevantMerges);
132
+ return {
133
+ totalConflicts,
134
+ autoResolvedConflicts: autoResolved,
135
+ manualResolvedConflicts: manualResolved,
136
+ averageResolutionTime,
137
+ conflictHotspots
138
+ };
139
+ }
140
+ /**
141
+ * Calculate productivity metrics
142
+ */
143
+ async calculateProductivityMetrics(timeRange) {
144
+ return {
145
+ frameCreationRate: 15.5,
146
+ // frames per day
147
+ frameCompletionRate: 12.3,
148
+ // frames per day
149
+ averageFrameLifecycle: 2.5,
150
+ // days
151
+ collaborativeFramePercentage: 0.65
152
+ // 65% of frames involve collaboration
153
+ };
154
+ }
155
+ /**
156
+ * Generate actionable insights from metrics
157
+ */
158
+ async generateInsights(metrics) {
159
+ const insights = [];
160
+ if (metrics.handoffMetrics.rejectionRate > 0.3) {
161
+ insights.push({
162
+ id: `high-rejection-${Date.now()}`,
163
+ type: "risk",
164
+ severity: "high",
165
+ title: "High Handoff Rejection Rate",
166
+ description: `${Math.round(metrics.handoffMetrics.rejectionRate * 100)}% of handoffs are being rejected`,
167
+ actionItems: [
168
+ "Review handoff quality guidelines",
169
+ "Implement pre-handoff checklists",
170
+ "Provide additional training on code review standards"
171
+ ],
172
+ affectedUsers: [],
173
+ // Would identify specific users
174
+ metrics: { rejectionRate: metrics.handoffMetrics.rejectionRate },
175
+ generatedAt: /* @__PURE__ */ new Date()
176
+ });
177
+ }
178
+ if (metrics.handoffMetrics.averageApprovalTime > 24 * 60 * 60 * 1e3) {
179
+ insights.push({
180
+ id: `slow-approval-${Date.now()}`,
181
+ type: "opportunity",
182
+ severity: "medium",
183
+ title: "Slow Handoff Approval Times",
184
+ description: "Average approval time exceeds 24 hours",
185
+ actionItems: [
186
+ "Set up approval time SLAs",
187
+ "Implement automated reminders",
188
+ "Add more reviewers to distribute load"
189
+ ],
190
+ affectedUsers: [],
191
+ metrics: {
192
+ averageApprovalTime: metrics.handoffMetrics.averageApprovalTime
193
+ },
194
+ generatedAt: /* @__PURE__ */ new Date()
195
+ });
196
+ }
197
+ if (metrics.conflictMetrics.manualResolvedConflicts > metrics.conflictMetrics.autoResolvedConflicts) {
198
+ insights.push({
199
+ id: `high-conflicts-${Date.now()}`,
200
+ type: "risk",
201
+ severity: "medium",
202
+ title: "High Manual Conflict Resolution",
203
+ description: "Most conflicts require manual resolution",
204
+ actionItems: [
205
+ "Review merge policies to increase auto-resolution",
206
+ "Improve frame naming and organization conventions",
207
+ "Implement conflict prevention guidelines"
208
+ ],
209
+ affectedUsers: [],
210
+ metrics: {
211
+ manualConflicts: metrics.conflictMetrics.manualResolvedConflicts,
212
+ autoConflicts: metrics.conflictMetrics.autoResolvedConflicts
213
+ },
214
+ generatedAt: /* @__PURE__ */ new Date()
215
+ });
216
+ }
217
+ if (metrics.productivityMetrics.collaborativeFramePercentage > 0.8) {
218
+ insights.push({
219
+ id: `high-collaboration-${Date.now()}`,
220
+ type: "success",
221
+ severity: "low",
222
+ title: "Excellent Collaboration Rate",
223
+ description: `${Math.round(metrics.productivityMetrics.collaborativeFramePercentage * 100)}% of frames involve collaboration`,
224
+ actionItems: [
225
+ "Document successful collaboration patterns",
226
+ "Share best practices with other teams",
227
+ "Consider mentoring programs"
228
+ ],
229
+ affectedUsers: [],
230
+ metrics: {
231
+ collaborationRate: metrics.productivityMetrics.collaborativeFramePercentage
232
+ },
233
+ generatedAt: /* @__PURE__ */ new Date()
234
+ });
235
+ }
236
+ return insights;
237
+ }
238
+ /**
239
+ * Identify workflow patterns from team activity
240
+ */
241
+ async identifyWorkflowPatterns() {
242
+ const patterns = [];
243
+ patterns.push({
244
+ id: "feature-development",
245
+ name: "Feature Development Workflow",
246
+ description: "Individual development \u2192 Review \u2192 Merge to shared stack",
247
+ frequency: this.calculatePatternFrequency("feature-development"),
248
+ participants: this.getPatternParticipants("feature-development"),
249
+ steps: [
250
+ {
251
+ action: "Create individual frames",
252
+ averageTime: 4 * 60 * 60 * 1e3,
253
+ successRate: 0.95
254
+ },
255
+ {
256
+ action: "Request handoff",
257
+ averageTime: 5 * 60 * 1e3,
258
+ successRate: 0.9
259
+ },
260
+ {
261
+ action: "Review and approve",
262
+ averageTime: 2 * 60 * 60 * 1e3,
263
+ successRate: 0.85
264
+ },
265
+ {
266
+ action: "Merge to shared stack",
267
+ averageTime: 10 * 60 * 1e3,
268
+ successRate: 0.95
269
+ }
270
+ ],
271
+ efficiency: 0.85,
272
+ recommendations: [
273
+ "Standardize review criteria to reduce rejection rate",
274
+ "Implement automated checks before handoff request"
275
+ ]
276
+ });
277
+ patterns.push({
278
+ id: "pair-programming",
279
+ name: "Pair Programming Workflow",
280
+ description: "Direct collaboration in shared stack",
281
+ frequency: this.calculatePatternFrequency("pair-programming"),
282
+ participants: this.getPatternParticipants("pair-programming"),
283
+ steps: [
284
+ {
285
+ action: "Create shared stack",
286
+ averageTime: 2 * 60 * 1e3,
287
+ successRate: 0.99
288
+ },
289
+ {
290
+ action: "Collaborative development",
291
+ averageTime: 6 * 60 * 60 * 1e3,
292
+ successRate: 0.9
293
+ },
294
+ {
295
+ action: "Resolve conflicts in real-time",
296
+ averageTime: 15 * 60 * 1e3,
297
+ successRate: 0.95
298
+ }
299
+ ],
300
+ efficiency: 0.92,
301
+ recommendations: [
302
+ "Excellent pattern - consider promoting for complex features",
303
+ "Document best practices for real-time collaboration"
304
+ ]
305
+ });
306
+ return patterns;
307
+ }
308
+ /**
309
+ * Get team performance dashboard data
310
+ */
311
+ async getDashboardData(timeRange) {
312
+ const metrics = await this.generateCollaborationMetrics(timeRange);
313
+ const insights = await this.generateInsights(metrics);
314
+ const patterns = await this.identifyWorkflowPatterns();
315
+ const topCollaborators = this.calculateTopCollaborators(timeRange);
316
+ return {
317
+ metrics,
318
+ insights,
319
+ patterns,
320
+ topCollaborators
321
+ };
322
+ }
323
+ // Helper methods
324
+ invalidateCache(type) {
325
+ const keysToRemove = Array.from(this.analyticsCache.keys()).filter(
326
+ (key) => key.includes(type)
327
+ );
328
+ keysToRemove.forEach((key) => this.analyticsCache.delete(key));
329
+ }
330
+ calculateAverageTime(items, type) {
331
+ return 2 * 60 * 60 * 1e3;
332
+ }
333
+ analyzeHandoffPairs(handoffs) {
334
+ return [
335
+ { source: "alice", target: "bob", count: 15, successRate: 0.87 },
336
+ { source: "bob", target: "charlie", count: 12, successRate: 0.92 }
337
+ ];
338
+ }
339
+ calculateAverageResolutionTime(merges) {
340
+ const completedMerges = merges.filter((m) => m.completedAt && m.startedAt);
341
+ if (completedMerges.length === 0) return 0;
342
+ const totalTime = completedMerges.reduce(
343
+ (sum, m) => sum + (m.completedAt.getTime() - m.startedAt.getTime()),
344
+ 0
345
+ );
346
+ return totalTime / completedMerges.length;
347
+ }
348
+ analyzeConflictHotspots(merges) {
349
+ return [
350
+ { frameType: "implementation", conflictType: "content", frequency: 25 },
351
+ { frameType: "task", conflictType: "metadata", frequency: 15 },
352
+ { frameType: "test", conflictType: "sequence", frequency: 10 }
353
+ ];
354
+ }
355
+ calculatePatternFrequency(patternId) {
356
+ return Math.random() * 50;
357
+ }
358
+ getPatternParticipants(patternId) {
359
+ return Array.from(this.teamMembers.keys()).slice(0, 3);
360
+ }
361
+ calculateTopCollaborators(timeRange) {
362
+ return Array.from(this.teamMembers.entries()).map(([userId, member]) => ({
363
+ userId,
364
+ handoffsInitiated: Math.floor(Math.random() * 20),
365
+ handoffsApproved: Math.floor(Math.random() * 15),
366
+ conflictsResolved: Math.floor(Math.random() * 10),
367
+ collaborationScore: Math.random()
368
+ })).sort((a, b) => b.collaborationScore - a.collaborationScore);
369
+ }
370
+ }
371
+ export {
372
+ TeamAnalytics
373
+ };
374
+ //# sourceMappingURL=team-analytics.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/core/analytics/team-analytics.ts"],
4
+ "sourcesContent": ["/**\n * Team Analytics - Phase 3 Collaboration Insights\n * Provides analytics and insights for team collaboration patterns\n */\n\nimport type {\n StackContext,\n HandoffRequest,\n} from '../context/dual-stack-manager.js';\nimport type {\n HandoffProgress,\n HandoffMetadata,\n} from '../context/frame-handoff-manager.js';\nimport type { MergeSession } from '../context/stack-merge-resolver.js';\nimport { logger } from '../monitoring/logger.js';\n\nexport interface TeamMember {\n userId: string;\n name: string;\n role: 'developer' | 'lead' | 'architect' | 'qa' | 'designer';\n joinedAt: Date;\n lastActive: Date;\n skills: string[];\n permissions: {\n canCreateStacks: boolean;\n canApproveHandoffs: boolean;\n canMergeConflicts: boolean;\n };\n}\n\nexport interface CollaborationMetrics {\n timeRange: { start: Date; end: Date };\n teamMetrics: {\n totalMembers: number;\n activeMembers: number;\n newMembers: number;\n retentionRate: number;\n };\n handoffMetrics: {\n totalHandoffs: number;\n successfulHandoffs: number;\n averageApprovalTime: number;\n rejectionRate: number;\n mostActiveHandoffPairs: Array<{\n source: string;\n target: string;\n count: number;\n successRate: number;\n }>;\n };\n conflictMetrics: {\n totalConflicts: number;\n autoResolvedConflicts: number;\n manualResolvedConflicts: number;\n averageResolutionTime: number;\n conflictHotspots: Array<{\n frameType: string;\n conflictType: string;\n frequency: number;\n }>;\n };\n productivityMetrics: {\n frameCreationRate: number;\n frameCompletionRate: number;\n averageFrameLifecycle: number;\n collaborativeFramePercentage: number;\n };\n}\n\nexport interface TeamInsight {\n id: string;\n type: 'opportunity' | 'risk' | 'success' | 'recommendation';\n severity: 'low' | 'medium' | 'high';\n title: string;\n description: string;\n actionItems: string[];\n affectedUsers: string[];\n metrics: Record<string, number>;\n generatedAt: Date;\n}\n\nexport interface WorkflowPattern {\n id: string;\n name: string;\n description: string;\n frequency: number;\n participants: string[];\n steps: Array<{\n action: string;\n averageTime: number;\n successRate: number;\n }>;\n efficiency: number; // 0-1 score\n recommendations: string[];\n}\n\nexport class TeamAnalytics {\n private teamMembers: Map<string, TeamMember> = new Map();\n private handoffHistory: HandoffProgress[] = [];\n private mergeHistory: MergeSession[] = [];\n private analyticsCache: Map<string, any> = new Map();\n\n /**\n * Add or update team member\n */\n addTeamMember(member: TeamMember): void {\n this.teamMembers.set(member.userId, member);\n logger.info(`Team member added: ${member.userId}`, {\n role: member.role,\n skills: member.skills,\n });\n }\n\n /**\n * Record handoff activity\n */\n recordHandoffActivity(\n progress: HandoffProgress,\n metadata?: HandoffMetadata\n ): void {\n this.handoffHistory.push(progress);\n this.invalidateCache('handoff');\n\n logger.debug(`Handoff activity recorded: ${progress.requestId}`, {\n status: progress.status,\n transferredFrames: progress.transferredFrames,\n });\n }\n\n /**\n * Record merge activity\n */\n recordMergeActivity(session: MergeSession): void {\n this.mergeHistory.push(session);\n this.invalidateCache('merge');\n\n logger.debug(`Merge activity recorded: ${session.sessionId}`, {\n conflicts: session.conflicts.length,\n resolutions: session.resolutions.length,\n });\n }\n\n /**\n * Generate comprehensive collaboration metrics\n */\n async generateCollaborationMetrics(timeRange: {\n start: Date;\n end: Date;\n }): Promise<CollaborationMetrics> {\n const cacheKey = `metrics-${timeRange.start.toISOString()}-${timeRange.end.toISOString()}`;\n\n if (this.analyticsCache.has(cacheKey)) {\n return this.analyticsCache.get(cacheKey);\n }\n\n const metrics: CollaborationMetrics = {\n timeRange,\n teamMetrics: await this.calculateTeamMetrics(timeRange),\n handoffMetrics: await this.calculateHandoffMetrics(timeRange),\n conflictMetrics: await this.calculateConflictMetrics(timeRange),\n productivityMetrics: await this.calculateProductivityMetrics(timeRange),\n };\n\n this.analyticsCache.set(cacheKey, metrics);\n return metrics;\n }\n\n /**\n * Calculate team-level metrics\n */\n private async calculateTeamMetrics(timeRange: { start: Date; end: Date }) {\n const allMembers = Array.from(this.teamMembers.values());\n const activeMembers = allMembers.filter(\n (m) => m.lastActive >= timeRange.start && m.lastActive <= timeRange.end\n );\n const newMembers = allMembers.filter(\n (m) => m.joinedAt >= timeRange.start && m.joinedAt <= timeRange.end\n );\n\n // Calculate retention rate (simplified)\n const previousPeriodStart = new Date(\n timeRange.start.getTime() -\n (timeRange.end.getTime() - timeRange.start.getTime())\n );\n const previousActiveMembers = allMembers.filter(\n (m) =>\n m.lastActive >= previousPeriodStart && m.lastActive < timeRange.start\n );\n const retainedMembers = activeMembers.filter((m) =>\n previousActiveMembers.find((pm) => pm.userId === m.userId)\n );\n const retentionRate =\n previousActiveMembers.length > 0\n ? retainedMembers.length / previousActiveMembers.length\n : 1;\n\n return {\n totalMembers: allMembers.length,\n activeMembers: activeMembers.length,\n newMembers: newMembers.length,\n retentionRate,\n };\n }\n\n /**\n * Calculate handoff-specific metrics\n */\n private async calculateHandoffMetrics(timeRange: { start: Date; end: Date }) {\n const relevantHandoffs = this.handoffHistory.filter((h) => {\n // Filter by time range - would need timestamps in actual implementation\n return true; // Placeholder\n });\n\n const successfulHandoffs = relevantHandoffs.filter(\n (h) => h.status === 'completed'\n );\n const rejectedHandoffs = relevantHandoffs.filter(\n (h) => h.status === 'failed'\n );\n\n // Calculate approval time (simplified - would need proper timestamps)\n const averageApprovalTime = this.calculateAverageTime(\n successfulHandoffs,\n 'approval'\n );\n\n // Find most active handoff pairs\n const handoffPairs = this.analyzeHandoffPairs(relevantHandoffs);\n\n return {\n totalHandoffs: relevantHandoffs.length,\n successfulHandoffs: successfulHandoffs.length,\n averageApprovalTime,\n rejectionRate:\n relevantHandoffs.length > 0\n ? rejectedHandoffs.length / relevantHandoffs.length\n : 0,\n mostActiveHandoffPairs: handoffPairs,\n };\n }\n\n /**\n * Calculate conflict resolution metrics\n */\n private async calculateConflictMetrics(timeRange: {\n start: Date;\n end: Date;\n }) {\n const relevantMerges = this.mergeHistory.filter((m) => {\n return m.startedAt >= timeRange.start && m.startedAt <= timeRange.end;\n });\n\n const totalConflicts = relevantMerges.reduce(\n (sum, m) => sum + m.conflicts.length,\n 0\n );\n const autoResolved = relevantMerges.reduce(\n (sum, m) => sum + m.metadata.autoResolvedConflicts,\n 0\n );\n const manualResolved = relevantMerges.reduce(\n (sum, m) => sum + m.metadata.manualResolvedConflicts,\n 0\n );\n\n const averageResolutionTime =\n this.calculateAverageResolutionTime(relevantMerges);\n const conflictHotspots = this.analyzeConflictHotspots(relevantMerges);\n\n return {\n totalConflicts,\n autoResolvedConflicts: autoResolved,\n manualResolvedConflicts: manualResolved,\n averageResolutionTime,\n conflictHotspots,\n };\n }\n\n /**\n * Calculate productivity metrics\n */\n private async calculateProductivityMetrics(timeRange: {\n start: Date;\n end: Date;\n }) {\n // These would be calculated from frame creation/completion data\n // Placeholder implementation\n return {\n frameCreationRate: 15.5, // frames per day\n frameCompletionRate: 12.3, // frames per day\n averageFrameLifecycle: 2.5, // days\n collaborativeFramePercentage: 0.65, // 65% of frames involve collaboration\n };\n }\n\n /**\n * Generate actionable insights from metrics\n */\n async generateInsights(\n metrics: CollaborationMetrics\n ): Promise<TeamInsight[]> {\n const insights: TeamInsight[] = [];\n\n // High rejection rate insight\n if (metrics.handoffMetrics.rejectionRate > 0.3) {\n insights.push({\n id: `high-rejection-${Date.now()}`,\n type: 'risk',\n severity: 'high',\n title: 'High Handoff Rejection Rate',\n description: `${Math.round(metrics.handoffMetrics.rejectionRate * 100)}% of handoffs are being rejected`,\n actionItems: [\n 'Review handoff quality guidelines',\n 'Implement pre-handoff checklists',\n 'Provide additional training on code review standards',\n ],\n affectedUsers: [], // Would identify specific users\n metrics: { rejectionRate: metrics.handoffMetrics.rejectionRate },\n generatedAt: new Date(),\n });\n }\n\n // Slow approval times\n if (metrics.handoffMetrics.averageApprovalTime > 24 * 60 * 60 * 1000) {\n // > 24 hours\n insights.push({\n id: `slow-approval-${Date.now()}`,\n type: 'opportunity',\n severity: 'medium',\n title: 'Slow Handoff Approval Times',\n description: 'Average approval time exceeds 24 hours',\n actionItems: [\n 'Set up approval time SLAs',\n 'Implement automated reminders',\n 'Add more reviewers to distribute load',\n ],\n affectedUsers: [],\n metrics: {\n averageApprovalTime: metrics.handoffMetrics.averageApprovalTime,\n },\n generatedAt: new Date(),\n });\n }\n\n // High conflict rate\n if (\n metrics.conflictMetrics.manualResolvedConflicts >\n metrics.conflictMetrics.autoResolvedConflicts\n ) {\n insights.push({\n id: `high-conflicts-${Date.now()}`,\n type: 'risk',\n severity: 'medium',\n title: 'High Manual Conflict Resolution',\n description: 'Most conflicts require manual resolution',\n actionItems: [\n 'Review merge policies to increase auto-resolution',\n 'Improve frame naming and organization conventions',\n 'Implement conflict prevention guidelines',\n ],\n affectedUsers: [],\n metrics: {\n manualConflicts: metrics.conflictMetrics.manualResolvedConflicts,\n autoConflicts: metrics.conflictMetrics.autoResolvedConflicts,\n },\n generatedAt: new Date(),\n });\n }\n\n // High productivity teams\n if (metrics.productivityMetrics.collaborativeFramePercentage > 0.8) {\n insights.push({\n id: `high-collaboration-${Date.now()}`,\n type: 'success',\n severity: 'low',\n title: 'Excellent Collaboration Rate',\n description: `${Math.round(metrics.productivityMetrics.collaborativeFramePercentage * 100)}% of frames involve collaboration`,\n actionItems: [\n 'Document successful collaboration patterns',\n 'Share best practices with other teams',\n 'Consider mentoring programs',\n ],\n affectedUsers: [],\n metrics: {\n collaborationRate:\n metrics.productivityMetrics.collaborativeFramePercentage,\n },\n generatedAt: new Date(),\n });\n }\n\n return insights;\n }\n\n /**\n * Identify workflow patterns from team activity\n */\n async identifyWorkflowPatterns(): Promise<WorkflowPattern[]> {\n const patterns: WorkflowPattern[] = [];\n\n // Pattern 1: Standard Feature Development\n patterns.push({\n id: 'feature-development',\n name: 'Feature Development Workflow',\n description: 'Individual development \u2192 Review \u2192 Merge to shared stack',\n frequency: this.calculatePatternFrequency('feature-development'),\n participants: this.getPatternParticipants('feature-development'),\n steps: [\n {\n action: 'Create individual frames',\n averageTime: 4 * 60 * 60 * 1000,\n successRate: 0.95,\n },\n {\n action: 'Request handoff',\n averageTime: 5 * 60 * 1000,\n successRate: 0.9,\n },\n {\n action: 'Review and approve',\n averageTime: 2 * 60 * 60 * 1000,\n successRate: 0.85,\n },\n {\n action: 'Merge to shared stack',\n averageTime: 10 * 60 * 1000,\n successRate: 0.95,\n },\n ],\n efficiency: 0.85,\n recommendations: [\n 'Standardize review criteria to reduce rejection rate',\n 'Implement automated checks before handoff request',\n ],\n });\n\n // Pattern 2: Pair Programming\n patterns.push({\n id: 'pair-programming',\n name: 'Pair Programming Workflow',\n description: 'Direct collaboration in shared stack',\n frequency: this.calculatePatternFrequency('pair-programming'),\n participants: this.getPatternParticipants('pair-programming'),\n steps: [\n {\n action: 'Create shared stack',\n averageTime: 2 * 60 * 1000,\n successRate: 0.99,\n },\n {\n action: 'Collaborative development',\n averageTime: 6 * 60 * 60 * 1000,\n successRate: 0.9,\n },\n {\n action: 'Resolve conflicts in real-time',\n averageTime: 15 * 60 * 1000,\n successRate: 0.95,\n },\n ],\n efficiency: 0.92,\n recommendations: [\n 'Excellent pattern - consider promoting for complex features',\n 'Document best practices for real-time collaboration',\n ],\n });\n\n return patterns;\n }\n\n /**\n * Get team performance dashboard data\n */\n async getDashboardData(timeRange: { start: Date; end: Date }): Promise<{\n metrics: CollaborationMetrics;\n insights: TeamInsight[];\n patterns: WorkflowPattern[];\n topCollaborators: Array<{\n userId: string;\n handoffsInitiated: number;\n handoffsApproved: number;\n conflictsResolved: number;\n collaborationScore: number;\n }>;\n }> {\n const metrics = await this.generateCollaborationMetrics(timeRange);\n const insights = await this.generateInsights(metrics);\n const patterns = await this.identifyWorkflowPatterns();\n const topCollaborators = this.calculateTopCollaborators(timeRange);\n\n return {\n metrics,\n insights,\n patterns,\n topCollaborators,\n };\n }\n\n // Helper methods\n private invalidateCache(type: string): void {\n const keysToRemove = Array.from(this.analyticsCache.keys()).filter((key) =>\n key.includes(type)\n );\n keysToRemove.forEach((key) => this.analyticsCache.delete(key));\n }\n\n private calculateAverageTime(items: any[], type: string): number {\n // Simplified calculation - would use real timestamps\n return 2 * 60 * 60 * 1000; // 2 hours default\n }\n\n private analyzeHandoffPairs(handoffs: HandoffProgress[]): Array<{\n source: string;\n target: string;\n count: number;\n successRate: number;\n }> {\n // Implementation would analyze actual handoff data\n return [\n { source: 'alice', target: 'bob', count: 15, successRate: 0.87 },\n { source: 'bob', target: 'charlie', count: 12, successRate: 0.92 },\n ];\n }\n\n private calculateAverageResolutionTime(merges: MergeSession[]): number {\n const completedMerges = merges.filter((m) => m.completedAt && m.startedAt);\n if (completedMerges.length === 0) return 0;\n\n const totalTime = completedMerges.reduce(\n (sum, m) => sum + (m.completedAt!.getTime() - m.startedAt.getTime()),\n 0\n );\n\n return totalTime / completedMerges.length;\n }\n\n private analyzeConflictHotspots(merges: MergeSession[]): Array<{\n frameType: string;\n conflictType: string;\n frequency: number;\n }> {\n // Implementation would analyze actual conflict data\n return [\n { frameType: 'implementation', conflictType: 'content', frequency: 25 },\n { frameType: 'task', conflictType: 'metadata', frequency: 15 },\n { frameType: 'test', conflictType: 'sequence', frequency: 10 },\n ];\n }\n\n private calculatePatternFrequency(patternId: string): number {\n // Implementation would calculate from actual data\n return Math.random() * 50; // Placeholder\n }\n\n private getPatternParticipants(patternId: string): string[] {\n // Implementation would identify actual participants\n return Array.from(this.teamMembers.keys()).slice(0, 3);\n }\n\n private calculateTopCollaborators(timeRange: {\n start: Date;\n end: Date;\n }): Array<{\n userId: string;\n handoffsInitiated: number;\n handoffsApproved: number;\n conflictsResolved: number;\n collaborationScore: number;\n }> {\n // Implementation would calculate from actual data\n return Array.from(this.teamMembers.entries())\n .map(([userId, member]) => ({\n userId,\n handoffsInitiated: Math.floor(Math.random() * 20),\n handoffsApproved: Math.floor(Math.random() * 15),\n conflictsResolved: Math.floor(Math.random() * 10),\n collaborationScore: Math.random(),\n }))\n .sort((a, b) => b.collaborationScore - a.collaborationScore);\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,234 @@
1
+ import { sharedContextLayer } from "./shared-context-layer.js";
2
+ import { sessionManager } from "../session/session-manager.js";
3
+ import { logger } from "../monitoring/logger.js";
4
+ class ContextBridge {
5
+ static instance;
6
+ frameManager = null;
7
+ syncTimer = null;
8
+ lastSyncTime = 0;
9
+ options = {
10
+ autoSync: true,
11
+ syncInterval: 6e4,
12
+ // 1 minute
13
+ minFrameScore: 0.5,
14
+ // Include frames with score above 0.5
15
+ importantTags: ["decision", "error", "milestone", "learning"]
16
+ };
17
+ constructor() {
18
+ }
19
+ static getInstance() {
20
+ if (!ContextBridge.instance) {
21
+ ContextBridge.instance = new ContextBridge();
22
+ }
23
+ return ContextBridge.instance;
24
+ }
25
+ /**
26
+ * Initialize the bridge with a frame manager
27
+ */
28
+ async initialize(frameManager, options) {
29
+ this.frameManager = frameManager;
30
+ this.options = { ...this.options, ...options };
31
+ await this.loadSharedContext();
32
+ if (this.options.autoSync) {
33
+ this.startAutoSync();
34
+ }
35
+ logger.info("Context bridge initialized", {
36
+ autoSync: this.options.autoSync,
37
+ syncInterval: this.options.syncInterval
38
+ });
39
+ }
40
+ /**
41
+ * Load relevant shared context into current session
42
+ */
43
+ async loadSharedContext() {
44
+ try {
45
+ const session = sessionManager.getCurrentSession();
46
+ if (!session) return;
47
+ const discovery = await sharedContextLayer.autoDiscoverContext();
48
+ if (!discovery.hasSharedContext) {
49
+ logger.info("No shared context available to load");
50
+ return;
51
+ }
52
+ if (discovery.recentPatterns.length > 0) {
53
+ logger.info("Loaded recent patterns from shared context", {
54
+ patternCount: discovery.recentPatterns.length
55
+ });
56
+ }
57
+ if (discovery.lastDecisions.length > 0) {
58
+ logger.info("Loaded recent decisions from shared context", {
59
+ decisionCount: discovery.lastDecisions.length
60
+ });
61
+ }
62
+ if (discovery.suggestedFrames.length > 0) {
63
+ const metadata = {
64
+ suggestedFrames: discovery.suggestedFrames,
65
+ loadedAt: Date.now()
66
+ };
67
+ if (this.frameManager) {
68
+ await this.frameManager.addContext(
69
+ "shared-context-suggestions",
70
+ metadata
71
+ );
72
+ }
73
+ logger.info("Loaded suggested frames from shared context", {
74
+ frameCount: discovery.suggestedFrames.length
75
+ });
76
+ }
77
+ } catch (error) {
78
+ logger.error("Failed to load shared context", error);
79
+ }
80
+ }
81
+ /**
82
+ * Sync current session's important frames to shared context
83
+ */
84
+ async syncToSharedContext() {
85
+ try {
86
+ if (!this.frameManager) return;
87
+ const session = sessionManager.getCurrentSession();
88
+ if (!session) return;
89
+ const activeFrames = this.frameManager.getActiveFramePath().filter(Boolean);
90
+ const recentFrames = await this.frameManager.getRecentFrames(100);
91
+ const allFrames = [...activeFrames, ...recentFrames].filter(Boolean);
92
+ const importantFrames = this.filterImportantFrames(allFrames);
93
+ if (importantFrames.length === 0) {
94
+ logger.debug("No important frames to sync");
95
+ return;
96
+ }
97
+ await sharedContextLayer.addToSharedContext(importantFrames, {
98
+ minScore: this.options.minFrameScore,
99
+ tags: this.options.importantTags
100
+ });
101
+ this.lastSyncTime = Date.now();
102
+ logger.info("Synced frames to shared context", {
103
+ frameCount: importantFrames.length,
104
+ sessionId: session.sessionId
105
+ });
106
+ } catch (error) {
107
+ logger.error("Failed to sync to shared context", error);
108
+ }
109
+ }
110
+ /**
111
+ * Query shared context for relevant frames
112
+ */
113
+ async querySharedFrames(query) {
114
+ try {
115
+ const results = await sharedContextLayer.querySharedContext({
116
+ ...query,
117
+ minScore: this.options.minFrameScore
118
+ });
119
+ logger.info("Queried shared context", {
120
+ query,
121
+ resultCount: results.length
122
+ });
123
+ return results;
124
+ } catch (error) {
125
+ logger.error("Failed to query shared context", error);
126
+ return [];
127
+ }
128
+ }
129
+ /**
130
+ * Add a decision to shared context
131
+ */
132
+ async addDecision(decision, reasoning) {
133
+ try {
134
+ await sharedContextLayer.addDecision({
135
+ decision,
136
+ reasoning,
137
+ outcome: "pending"
138
+ });
139
+ logger.info("Added decision to shared context", { decision });
140
+ } catch (error) {
141
+ logger.error("Failed to add decision", error);
142
+ }
143
+ }
144
+ /**
145
+ * Start automatic synchronization
146
+ */
147
+ startAutoSync() {
148
+ if (this.syncTimer) {
149
+ clearInterval(this.syncTimer);
150
+ }
151
+ this.syncTimer = setInterval(() => {
152
+ this.syncToSharedContext().catch((error) => {
153
+ logger.error("Auto-sync failed", error);
154
+ });
155
+ }, this.options.syncInterval);
156
+ this.setupEventListeners();
157
+ }
158
+ /**
159
+ * Stop automatic synchronization
160
+ */
161
+ stopAutoSync() {
162
+ if (this.syncTimer) {
163
+ clearInterval(this.syncTimer);
164
+ this.syncTimer = null;
165
+ }
166
+ }
167
+ /**
168
+ * Filter frames that are important enough to share
169
+ */
170
+ filterImportantFrames(frames) {
171
+ return frames.filter((frame) => {
172
+ const hasImportantTag = this.options.importantTags.some(
173
+ (tag) => frame.metadata?.tags?.includes(tag)
174
+ );
175
+ const isImportantType = [
176
+ "task",
177
+ "milestone",
178
+ "error",
179
+ "resolution",
180
+ "decision"
181
+ ].includes(frame.type);
182
+ const markedImportant = frame.metadata?.importance === "high";
183
+ return hasImportantTag || isImportantType || markedImportant;
184
+ });
185
+ }
186
+ /**
187
+ * Setup event listeners for automatic syncing
188
+ */
189
+ setupEventListeners() {
190
+ if (!this.frameManager) return;
191
+ const originalClose = this.frameManager.closeFrame.bind(this.frameManager);
192
+ this.frameManager.closeFrame = async (frameId, metadata) => {
193
+ const result = await originalClose(frameId, metadata);
194
+ const frame = await this.frameManager.getFrame(frameId);
195
+ if (frame && this.filterImportantFrames([frame]).length > 0) {
196
+ await this.syncToSharedContext();
197
+ }
198
+ return result;
199
+ };
200
+ const originalMilestone = this.frameManager.createFrame.bind(
201
+ this.frameManager
202
+ );
203
+ this.frameManager.createFrame = async (params) => {
204
+ const result = await originalMilestone(params);
205
+ if (params.type === "milestone") {
206
+ await this.syncToSharedContext();
207
+ }
208
+ return result;
209
+ };
210
+ }
211
+ /**
212
+ * Get sync statistics
213
+ */
214
+ getSyncStats() {
215
+ return {
216
+ lastSyncTime: this.lastSyncTime,
217
+ autoSyncEnabled: this.options.autoSync,
218
+ syncInterval: this.options.syncInterval
219
+ };
220
+ }
221
+ /**
222
+ * Manual trigger for immediate sync
223
+ */
224
+ async forceSyncNow() {
225
+ logger.info("Force sync triggered");
226
+ await this.syncToSharedContext();
227
+ }
228
+ }
229
+ const contextBridge = ContextBridge.getInstance();
230
+ export {
231
+ ContextBridge,
232
+ contextBridge
233
+ };
234
+ //# sourceMappingURL=context-bridge.js.map