@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
@@ -4,7 +4,11 @@ import * as path from "path";
4
4
  import * as yaml from "js-yaml";
5
5
  import chalk from "chalk";
6
6
  import { ConfigManager } from "../../core/config/config-manager.js";
7
- import { DEFAULT_CONFIG } from "../../core/config/types.js";
7
+ import {
8
+ DEFAULT_CONFIG,
9
+ DEFAULT_WEIGHTS,
10
+ DEFAULT_TOOL_SCORES
11
+ } from "../../core/config/types.js";
8
12
  function createConfigCommand() {
9
13
  const config = new Command("config").description(
10
14
  "Manage StackMemory configuration"
@@ -191,6 +195,153 @@ function createConfigCommand() {
191
195
  }
192
196
  console.log(` Importance: ${color(level)}`);
193
197
  });
198
+ config.command("create-profile <name>").description("Create a custom configuration profile").option(
199
+ "-d, --description <text>",
200
+ "Profile description"
201
+ ).option(
202
+ "-b, --base-weight <number>",
203
+ "Base weight (0-1)",
204
+ parseFloat
205
+ ).option(
206
+ "-i, --impact-weight <number>",
207
+ "Impact weight (0-1)",
208
+ parseFloat
209
+ ).option(
210
+ "-p, --persistence-weight <number>",
211
+ "Persistence weight (0-1)",
212
+ parseFloat
213
+ ).option(
214
+ "-r, --reference-weight <number>",
215
+ "Reference weight (0-1)",
216
+ parseFloat
217
+ ).option(
218
+ "--copy-from <profile>",
219
+ "Copy settings from existing profile"
220
+ ).action(async (name, options) => {
221
+ const manager = new ConfigManager();
222
+ const config2 = manager.getConfig();
223
+ if (config2.profiles && config2.profiles[name]) {
224
+ console.log(
225
+ chalk.yellow(`\u26A0 Profile '${name}' already exists. Use 'edit-profile' to modify it.`)
226
+ );
227
+ process.exit(1);
228
+ }
229
+ let newProfile;
230
+ if (options.copyFrom) {
231
+ const sourceProfile = config2.profiles?.[options.copyFrom];
232
+ if (!sourceProfile) {
233
+ console.log(chalk.red(`\u274C Source profile '${options.copyFrom}' not found`));
234
+ process.exit(1);
235
+ }
236
+ newProfile = { ...sourceProfile, name, description: options.description };
237
+ } else {
238
+ const weights = {
239
+ base: options.baseWeight ?? DEFAULT_WEIGHTS.base,
240
+ impact: options.impactWeight ?? DEFAULT_WEIGHTS.impact,
241
+ persistence: options.persistenceWeight ?? DEFAULT_WEIGHTS.persistence,
242
+ reference: options.referenceWeight ?? DEFAULT_WEIGHTS.reference
243
+ };
244
+ const sum = weights.base + weights.impact + weights.persistence + weights.reference;
245
+ if (Math.abs(sum - 1) > 1e-3) {
246
+ console.log(chalk.red(`\u274C Weights must sum to 1.0 (current: ${sum.toFixed(3)})`));
247
+ console.log(chalk.yellow("\nNormalizing weights to sum to 1.0..."));
248
+ const factor = 1 / sum;
249
+ weights.base *= factor;
250
+ weights.impact *= factor;
251
+ weights.persistence *= factor;
252
+ weights.reference *= factor;
253
+ }
254
+ newProfile = {
255
+ name,
256
+ description: options.description || `Custom profile created ${(/* @__PURE__ */ new Date()).toLocaleDateString()}`,
257
+ scoring: {
258
+ weights,
259
+ tool_scores: DEFAULT_TOOL_SCORES
260
+ }
261
+ };
262
+ }
263
+ if (!config2.profiles) {
264
+ config2.profiles = {};
265
+ }
266
+ config2.profiles[name] = newProfile;
267
+ manager.save();
268
+ console.log(chalk.green(`\u2705 Created profile: ${name}`));
269
+ console.log(chalk.blue("\nProfile Configuration:"));
270
+ console.log(yaml.dump(newProfile, { indent: 2 }));
271
+ console.log(
272
+ chalk.cyan(`
273
+ Activate with: stackmemory config set-profile ${name}`)
274
+ );
275
+ });
276
+ config.command("edit-profile <name>").description("Edit an existing profile").option("-s, --set-tool <tool:score>", "Set tool score (e.g., search:0.95)", (value, previous) => {
277
+ const result = previous || {};
278
+ const [tool, score] = value.split(":");
279
+ result[tool] = parseFloat(score);
280
+ return result;
281
+ }, {}).option("-w, --set-weight <type:value>", "Set weight (e.g., base:0.4)", (value, previous) => {
282
+ const result = previous || {};
283
+ const [type, weight] = value.split(":");
284
+ result[type] = parseFloat(weight);
285
+ return result;
286
+ }, {}).action(async (name, options) => {
287
+ const manager = new ConfigManager();
288
+ const config2 = manager.getConfig();
289
+ if (!config2.profiles?.[name]) {
290
+ console.log(chalk.red(`\u274C Profile '${name}' not found`));
291
+ process.exit(1);
292
+ }
293
+ const profile = config2.profiles[name];
294
+ if (Object.keys(options.setTool).length > 0) {
295
+ if (!profile.scoring) {
296
+ profile.scoring = {};
297
+ }
298
+ if (!profile.scoring.tool_scores) {
299
+ profile.scoring.tool_scores = {};
300
+ }
301
+ Object.assign(profile.scoring.tool_scores, options.setTool);
302
+ console.log(chalk.green("\u2713 Updated tool scores"));
303
+ }
304
+ if (Object.keys(options.setWeight).length > 0) {
305
+ if (!profile.scoring) {
306
+ profile.scoring = {};
307
+ }
308
+ if (!profile.scoring.weights) {
309
+ profile.scoring.weights = { ...DEFAULT_WEIGHTS };
310
+ }
311
+ Object.assign(profile.scoring.weights, options.setWeight);
312
+ const weights = profile.scoring.weights;
313
+ const sum = (weights.base || 0) + (weights.impact || 0) + (weights.persistence || 0) + (weights.reference || 0);
314
+ if (Math.abs(sum - 1) > 1e-3) {
315
+ console.log(chalk.yellow(`\u26A0 Weights sum to ${sum.toFixed(3)}, normalizing...`));
316
+ const factor = 1 / sum;
317
+ if (weights.base) weights.base *= factor;
318
+ if (weights.impact) weights.impact *= factor;
319
+ if (weights.persistence) weights.persistence *= factor;
320
+ if (weights.reference) weights.reference *= factor;
321
+ }
322
+ console.log(chalk.green("\u2713 Updated weights"));
323
+ }
324
+ manager.save();
325
+ console.log(chalk.green(`
326
+ \u2705 Profile '${name}' updated`));
327
+ console.log(chalk.blue("\nUpdated Configuration:"));
328
+ console.log(yaml.dump(profile, { indent: 2 }));
329
+ });
330
+ config.command("profile-report [profile]").description("Show profile effectiveness report").action(async (profile) => {
331
+ console.log(chalk.blue("\n\u{1F4CA} Profile Effectiveness Report"));
332
+ if (profile) {
333
+ console.log(chalk.cyan(`
334
+ Profile: ${profile}`));
335
+ console.log("Note: Run tools with this profile to generate metrics");
336
+ } else {
337
+ console.log("\nNote: Tool scoring metrics will be available after running MCP tools");
338
+ }
339
+ console.log(chalk.gray("\nMetrics tracked:"));
340
+ console.log(" \u2022 Average score per tool");
341
+ console.log(" \u2022 High-importance operations");
342
+ console.log(" \u2022 Profile usage frequency");
343
+ console.log(" \u2022 Score trends over time");
344
+ });
194
345
  return config;
195
346
  }
196
347
  export {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/commands/config.ts"],
4
- "sourcesContent": ["/**\n * Config command for StackMemory CLI\n */\n\nimport { Command } from 'commander';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as yaml from 'js-yaml';\nimport chalk from 'chalk';\nimport { ConfigManager } from '../../core/config/config-manager.js';\nimport { DEFAULT_CONFIG, PRESET_PROFILES } from '../../core/config/types.js';\n\nexport function createConfigCommand(): Command {\n const config = new Command('config').description(\n 'Manage StackMemory configuration'\n );\n\n config\n .command('validate')\n .description('Validate configuration file')\n .option(\n '-f, --file <path>',\n 'Path to config file',\n '.stackmemory/config.yaml'\n )\n .option('--fix', 'Attempt to auto-fix common issues')\n .action(async (options) => {\n console.log(chalk.blue('\uD83D\uDD0D Validating configuration...'));\n\n const configPath = path.resolve(options.file);\n const manager = new ConfigManager(configPath);\n const result = manager.validate();\n\n // Display errors\n if (result.errors.length > 0) {\n console.log(chalk.red('\\n\u2717 Errors:'));\n result.errors.forEach((error) => {\n console.log(chalk.red(` \u2022 ${error}`));\n });\n }\n\n // Display warnings\n if (result.warnings.length > 0) {\n console.log(chalk.yellow('\\n\u26A0 Warnings:'));\n result.warnings.forEach((warning) => {\n console.log(chalk.yellow(` \u2022 ${warning}`));\n });\n }\n\n // Display suggestions\n if (result.suggestions.length > 0) {\n console.log(chalk.cyan('\\n\uD83D\uDCA1 Suggestions:'));\n result.suggestions.forEach((suggestion) => {\n console.log(chalk.cyan(` \u2022 ${suggestion}`));\n });\n }\n\n // Auto-fix if requested\n if (options.fix && result.errors.length > 0) {\n console.log(chalk.blue('\\n\uD83D\uDD27 Attempting auto-fix...'));\n\n const config = manager.getConfig();\n const weights = config.scoring.weights;\n const weightSum =\n weights.base +\n weights.impact +\n weights.persistence +\n weights.reference;\n\n if (Math.abs(weightSum - 1.0) > 0.001) {\n // Normalize weights to sum to 1.0\n const factor = 1.0 / weightSum;\n manager.updateWeights({\n base: weights.base * factor,\n impact: weights.impact * factor,\n persistence: weights.persistence * factor,\n reference: weights.reference * factor,\n });\n manager.save();\n console.log(chalk.green(' \u2713 Normalized weights to sum to 1.0'));\n }\n }\n\n // Final status\n if (result.valid) {\n console.log(chalk.green('\\n\u2705 Configuration is valid'));\n process.exit(0);\n } else {\n console.log(chalk.red('\\n\u274C Configuration has errors'));\n process.exit(1);\n }\n });\n\n config\n .command('init')\n .description('Initialize configuration file with defaults')\n .option('-p, --profile <name>', 'Use a preset profile', 'default')\n .option('-f, --force', 'Overwrite existing config')\n .action(async (options) => {\n const configPath = path.join(\n process.cwd(),\n '.stackmemory',\n 'config.yaml'\n );\n\n if (fs.existsSync(configPath) && !options.force) {\n console.log(\n chalk.yellow(\n '\u26A0 Config file already exists. Use --force to overwrite.'\n )\n );\n process.exit(1);\n }\n\n const dir = path.dirname(configPath);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n\n const config = { ...DEFAULT_CONFIG };\n if (options.profile && options.profile !== 'default') {\n config.profile = options.profile;\n }\n\n const content = yaml.dump(config, {\n indent: 2,\n lineWidth: 120,\n noRefs: true,\n });\n\n fs.writeFileSync(configPath, content, 'utf-8');\n console.log(chalk.green(`\u2705 Created config file at ${configPath}`));\n\n if (options.profile !== 'default') {\n console.log(chalk.cyan(`\uD83D\uDCCB Using profile: ${options.profile}`));\n }\n });\n\n config\n .command('show')\n .description('Show current configuration')\n .option('-p, --profile <name>', 'Show specific profile')\n .action(async (options) => {\n const manager = new ConfigManager();\n const config = manager.getConfig();\n\n if (options.profile) {\n const profiles = manager.getProfiles();\n const profile = profiles[options.profile];\n\n if (!profile) {\n console.log(chalk.red(`\u274C Profile '${options.profile}' not found`));\n console.log(chalk.cyan('Available profiles:'));\n Object.keys(profiles).forEach((name) => {\n console.log(` \u2022 ${name}`);\n });\n process.exit(1);\n }\n\n console.log(chalk.blue(`\\n\uD83D\uDCCB Profile: ${profile.name}`));\n if (profile.description) {\n console.log(chalk.gray(` ${profile.description}`));\n }\n console.log('\\n' + yaml.dump(profile, { indent: 2 }));\n } else {\n console.log(chalk.blue('\\n\uD83D\uDCCB Current Configuration:'));\n if (config.profile) {\n console.log(chalk.cyan(` Active Profile: ${config.profile}`));\n }\n console.log('\\n' + yaml.dump(config, { indent: 2 }));\n }\n });\n\n config\n .command('set-profile <name>')\n .description('Set active profile')\n .action(async (name) => {\n const manager = new ConfigManager();\n\n if (manager.setProfile(name)) {\n manager.save();\n console.log(chalk.green(`\u2705 Active profile set to: ${name}`));\n } else {\n console.log(chalk.red(`\u274C Profile '${name}' not found`));\n console.log(chalk.cyan('Available profiles:'));\n Object.keys(manager.getProfiles()).forEach((profile) => {\n console.log(` \u2022 ${profile}`);\n });\n process.exit(1);\n }\n });\n\n config\n .command('list-profiles')\n .description('List available profiles')\n .action(async () => {\n const manager = new ConfigManager();\n const profiles = manager.getProfiles();\n const currentProfile = manager.getConfig().profile;\n\n console.log(chalk.blue('\\n\uD83D\uDCCB Available Profiles:'));\n Object.entries(profiles).forEach(([name, profile]) => {\n const marker = name === currentProfile ? chalk.green(' \u2713') : '';\n console.log(` \u2022 ${chalk.cyan(name)}${marker}`);\n if (profile.description) {\n console.log(chalk.gray(` ${profile.description}`));\n }\n });\n });\n\n config\n .command('test-score <tool>')\n .description('Test importance scoring for a tool')\n .option('-f, --files <number>', 'Number of files affected', parseInt)\n .option('-p, --permanent', 'Is change permanent')\n .option('-r, --references <number>', 'Reference count', parseInt)\n .action(async (tool, options) => {\n const manager = new ConfigManager();\n\n const score = manager.calculateScore(tool, {\n filesAffected: options.files,\n isPermanent: options.permanent,\n referenceCount: options.references,\n });\n\n const config = manager.getConfig();\n const baseScore = config.scoring.tool_scores[tool] || 0.5;\n\n console.log(chalk.blue('\\n\uD83D\uDCCA Score Calculation:'));\n console.log(` Tool: ${chalk.cyan(tool)}`);\n console.log(` Base Score: ${chalk.yellow(baseScore.toFixed(3))}`);\n\n if (options.files !== undefined) {\n console.log(` Files Affected: ${options.files}`);\n }\n if (options.permanent) {\n console.log(` Permanent: ${chalk.green('Yes')}`);\n }\n if (options.references !== undefined) {\n console.log(` References: ${options.references}`);\n }\n\n console.log(chalk.blue('\\n Weights:'));\n console.log(` Base: ${config.scoring.weights.base}`);\n console.log(` Impact: ${config.scoring.weights.impact}`);\n console.log(` Persistence: ${config.scoring.weights.persistence}`);\n console.log(` Reference: ${config.scoring.weights.reference}`);\n\n console.log(chalk.green(`\\n Final Score: ${score.toFixed(3)}`));\n\n // Show importance level\n let level = 'Low';\n let color = chalk.gray;\n if (score >= 0.8) {\n level = 'Critical';\n color = chalk.red;\n } else if (score >= 0.6) {\n level = 'High';\n color = chalk.yellow;\n } else if (score >= 0.4) {\n level = 'Medium';\n color = chalk.cyan;\n }\n\n console.log(` Importance: ${color(level)}`);\n });\n\n return config;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Config command for StackMemory CLI\n */\n\nimport { Command } from 'commander';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as yaml from 'js-yaml';\nimport chalk from 'chalk';\nimport { ConfigManager } from '../../core/config/config-manager.js';\nimport { \n DEFAULT_CONFIG, \n PRESET_PROFILES, \n ProfileConfig, \n ScoringWeights,\n DEFAULT_WEIGHTS,\n DEFAULT_TOOL_SCORES\n} from '../../core/config/types.js';\n\nexport function createConfigCommand(): Command {\n const config = new Command('config').description(\n 'Manage StackMemory configuration'\n );\n\n config\n .command('validate')\n .description('Validate configuration file')\n .option(\n '-f, --file <path>',\n 'Path to config file',\n '.stackmemory/config.yaml'\n )\n .option('--fix', 'Attempt to auto-fix common issues')\n .action(async (options) => {\n console.log(chalk.blue('\uD83D\uDD0D Validating configuration...'));\n\n const configPath = path.resolve(options.file);\n const manager = new ConfigManager(configPath);\n const result = manager.validate();\n\n // Display errors\n if (result.errors.length > 0) {\n console.log(chalk.red('\\n\u2717 Errors:'));\n result.errors.forEach((error) => {\n console.log(chalk.red(` \u2022 ${error}`));\n });\n }\n\n // Display warnings\n if (result.warnings.length > 0) {\n console.log(chalk.yellow('\\n\u26A0 Warnings:'));\n result.warnings.forEach((warning) => {\n console.log(chalk.yellow(` \u2022 ${warning}`));\n });\n }\n\n // Display suggestions\n if (result.suggestions.length > 0) {\n console.log(chalk.cyan('\\n\uD83D\uDCA1 Suggestions:'));\n result.suggestions.forEach((suggestion) => {\n console.log(chalk.cyan(` \u2022 ${suggestion}`));\n });\n }\n\n // Auto-fix if requested\n if (options.fix && result.errors.length > 0) {\n console.log(chalk.blue('\\n\uD83D\uDD27 Attempting auto-fix...'));\n\n const config = manager.getConfig();\n const weights = config.scoring.weights;\n const weightSum =\n weights.base +\n weights.impact +\n weights.persistence +\n weights.reference;\n\n if (Math.abs(weightSum - 1.0) > 0.001) {\n // Normalize weights to sum to 1.0\n const factor = 1.0 / weightSum;\n manager.updateWeights({\n base: weights.base * factor,\n impact: weights.impact * factor,\n persistence: weights.persistence * factor,\n reference: weights.reference * factor,\n });\n manager.save();\n console.log(chalk.green(' \u2713 Normalized weights to sum to 1.0'));\n }\n }\n\n // Final status\n if (result.valid) {\n console.log(chalk.green('\\n\u2705 Configuration is valid'));\n process.exit(0);\n } else {\n console.log(chalk.red('\\n\u274C Configuration has errors'));\n process.exit(1);\n }\n });\n\n config\n .command('init')\n .description('Initialize configuration file with defaults')\n .option('-p, --profile <name>', 'Use a preset profile', 'default')\n .option('-f, --force', 'Overwrite existing config')\n .action(async (options) => {\n const configPath = path.join(\n process.cwd(),\n '.stackmemory',\n 'config.yaml'\n );\n\n if (fs.existsSync(configPath) && !options.force) {\n console.log(\n chalk.yellow(\n '\u26A0 Config file already exists. Use --force to overwrite.'\n )\n );\n process.exit(1);\n }\n\n const dir = path.dirname(configPath);\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir, { recursive: true });\n }\n\n const config = { ...DEFAULT_CONFIG };\n if (options.profile && options.profile !== 'default') {\n config.profile = options.profile;\n }\n\n const content = yaml.dump(config, {\n indent: 2,\n lineWidth: 120,\n noRefs: true,\n });\n\n fs.writeFileSync(configPath, content, 'utf-8');\n console.log(chalk.green(`\u2705 Created config file at ${configPath}`));\n\n if (options.profile !== 'default') {\n console.log(chalk.cyan(`\uD83D\uDCCB Using profile: ${options.profile}`));\n }\n });\n\n config\n .command('show')\n .description('Show current configuration')\n .option('-p, --profile <name>', 'Show specific profile')\n .action(async (options) => {\n const manager = new ConfigManager();\n const config = manager.getConfig();\n\n if (options.profile) {\n const profiles = manager.getProfiles();\n const profile = profiles[options.profile];\n\n if (!profile) {\n console.log(chalk.red(`\u274C Profile '${options.profile}' not found`));\n console.log(chalk.cyan('Available profiles:'));\n Object.keys(profiles).forEach((name) => {\n console.log(` \u2022 ${name}`);\n });\n process.exit(1);\n }\n\n console.log(chalk.blue(`\\n\uD83D\uDCCB Profile: ${profile.name}`));\n if (profile.description) {\n console.log(chalk.gray(` ${profile.description}`));\n }\n console.log('\\n' + yaml.dump(profile, { indent: 2 }));\n } else {\n console.log(chalk.blue('\\n\uD83D\uDCCB Current Configuration:'));\n if (config.profile) {\n console.log(chalk.cyan(` Active Profile: ${config.profile}`));\n }\n console.log('\\n' + yaml.dump(config, { indent: 2 }));\n }\n });\n\n config\n .command('set-profile <name>')\n .description('Set active profile')\n .action(async (name) => {\n const manager = new ConfigManager();\n\n if (manager.setProfile(name)) {\n manager.save();\n console.log(chalk.green(`\u2705 Active profile set to: ${name}`));\n } else {\n console.log(chalk.red(`\u274C Profile '${name}' not found`));\n console.log(chalk.cyan('Available profiles:'));\n Object.keys(manager.getProfiles()).forEach((profile) => {\n console.log(` \u2022 ${profile}`);\n });\n process.exit(1);\n }\n });\n\n config\n .command('list-profiles')\n .description('List available profiles')\n .action(async () => {\n const manager = new ConfigManager();\n const profiles = manager.getProfiles();\n const currentProfile = manager.getConfig().profile;\n\n console.log(chalk.blue('\\n\uD83D\uDCCB Available Profiles:'));\n Object.entries(profiles).forEach(([name, profile]) => {\n const marker = name === currentProfile ? chalk.green(' \u2713') : '';\n console.log(` \u2022 ${chalk.cyan(name)}${marker}`);\n if (profile.description) {\n console.log(chalk.gray(` ${profile.description}`));\n }\n });\n });\n\n config\n .command('test-score <tool>')\n .description('Test importance scoring for a tool')\n .option('-f, --files <number>', 'Number of files affected', parseInt)\n .option('-p, --permanent', 'Is change permanent')\n .option('-r, --references <number>', 'Reference count', parseInt)\n .action(async (tool, options) => {\n const manager = new ConfigManager();\n\n const score = manager.calculateScore(tool, {\n filesAffected: options.files,\n isPermanent: options.permanent,\n referenceCount: options.references,\n });\n\n const config = manager.getConfig();\n const baseScore = config.scoring.tool_scores[tool] || 0.5;\n\n console.log(chalk.blue('\\n\uD83D\uDCCA Score Calculation:'));\n console.log(` Tool: ${chalk.cyan(tool)}`);\n console.log(` Base Score: ${chalk.yellow(baseScore.toFixed(3))}`);\n\n if (options.files !== undefined) {\n console.log(` Files Affected: ${options.files}`);\n }\n if (options.permanent) {\n console.log(` Permanent: ${chalk.green('Yes')}`);\n }\n if (options.references !== undefined) {\n console.log(` References: ${options.references}`);\n }\n\n console.log(chalk.blue('\\n Weights:'));\n console.log(` Base: ${config.scoring.weights.base}`);\n console.log(` Impact: ${config.scoring.weights.impact}`);\n console.log(` Persistence: ${config.scoring.weights.persistence}`);\n console.log(` Reference: ${config.scoring.weights.reference}`);\n\n console.log(chalk.green(`\\n Final Score: ${score.toFixed(3)}`));\n\n // Show importance level\n let level = 'Low';\n let color = chalk.gray;\n if (score >= 0.8) {\n level = 'Critical';\n color = chalk.red;\n } else if (score >= 0.6) {\n level = 'High';\n color = chalk.yellow;\n } else if (score >= 0.4) {\n level = 'Medium';\n color = chalk.cyan;\n }\n\n console.log(` Importance: ${color(level)}`);\n });\n\n config\n .command('create-profile <name>')\n .description('Create a custom configuration profile')\n .option(\n '-d, --description <text>',\n 'Profile description'\n )\n .option(\n '-b, --base-weight <number>',\n 'Base weight (0-1)',\n parseFloat\n )\n .option(\n '-i, --impact-weight <number>',\n 'Impact weight (0-1)',\n parseFloat\n )\n .option(\n '-p, --persistence-weight <number>',\n 'Persistence weight (0-1)',\n parseFloat\n )\n .option(\n '-r, --reference-weight <number>',\n 'Reference weight (0-1)',\n parseFloat\n )\n .option(\n '--copy-from <profile>',\n 'Copy settings from existing profile'\n )\n .action(async (name, options) => {\n const manager = new ConfigManager();\n const config = manager.getConfig();\n\n // Check if profile already exists\n if (config.profiles && config.profiles[name]) {\n console.log(\n chalk.yellow(`\u26A0 Profile '${name}' already exists. Use 'edit-profile' to modify it.`)\n );\n process.exit(1);\n }\n\n let newProfile: ProfileConfig;\n\n if (options.copyFrom) {\n // Copy from existing profile\n const sourceProfile = config.profiles?.[options.copyFrom];\n if (!sourceProfile) {\n console.log(chalk.red(`\u274C Source profile '${options.copyFrom}' not found`));\n process.exit(1);\n }\n newProfile = { ...sourceProfile, name, description: options.description };\n } else {\n // Create new profile with custom weights\n const weights: ScoringWeights = {\n base: options.baseWeight ?? DEFAULT_WEIGHTS.base,\n impact: options.impactWeight ?? DEFAULT_WEIGHTS.impact,\n persistence: options.persistenceWeight ?? DEFAULT_WEIGHTS.persistence,\n reference: options.referenceWeight ?? DEFAULT_WEIGHTS.reference,\n };\n\n // Validate weights sum to 1.0\n const sum = weights.base + weights.impact + weights.persistence + weights.reference;\n if (Math.abs(sum - 1.0) > 0.001) {\n console.log(chalk.red(`\u274C Weights must sum to 1.0 (current: ${sum.toFixed(3)})`));\n console.log(chalk.yellow('\\nNormalizing weights to sum to 1.0...'));\n \n const factor = 1.0 / sum;\n weights.base *= factor;\n weights.impact *= factor;\n weights.persistence *= factor;\n weights.reference *= factor;\n }\n\n newProfile = {\n name,\n description: options.description || `Custom profile created ${new Date().toLocaleDateString()}`,\n scoring: {\n weights,\n tool_scores: DEFAULT_TOOL_SCORES,\n },\n };\n }\n\n // Add profile to config\n if (!config.profiles) {\n config.profiles = {};\n }\n config.profiles[name] = newProfile;\n\n // Save config\n manager.save();\n\n console.log(chalk.green(`\u2705 Created profile: ${name}`));\n console.log(chalk.blue('\\nProfile Configuration:'));\n console.log(yaml.dump(newProfile, { indent: 2 }));\n console.log(\n chalk.cyan(`\\nActivate with: stackmemory config set-profile ${name}`)\n );\n });\n\n config\n .command('edit-profile <name>')\n .description('Edit an existing profile')\n .option('-s, --set-tool <tool:score>', 'Set tool score (e.g., search:0.95)', (value, previous) => {\n const result = previous || {};\n const [tool, score] = value.split(':');\n result[tool] = parseFloat(score);\n return result;\n }, {})\n .option('-w, --set-weight <type:value>', 'Set weight (e.g., base:0.4)', (value, previous) => {\n const result = previous || {};\n const [type, weight] = value.split(':');\n result[type] = parseFloat(weight);\n return result;\n }, {})\n .action(async (name, options) => {\n const manager = new ConfigManager();\n const config = manager.getConfig();\n\n if (!config.profiles?.[name]) {\n console.log(chalk.red(`\u274C Profile '${name}' not found`));\n process.exit(1);\n }\n\n const profile = config.profiles[name];\n\n // Update tool scores\n if (Object.keys(options.setTool).length > 0) {\n if (!profile.scoring) {\n profile.scoring = {};\n }\n if (!profile.scoring.tool_scores) {\n profile.scoring.tool_scores = {};\n }\n Object.assign(profile.scoring.tool_scores, options.setTool);\n console.log(chalk.green('\u2713 Updated tool scores'));\n }\n\n // Update weights\n if (Object.keys(options.setWeight).length > 0) {\n if (!profile.scoring) {\n profile.scoring = {};\n }\n if (!profile.scoring.weights) {\n profile.scoring.weights = { ...DEFAULT_WEIGHTS };\n }\n Object.assign(profile.scoring.weights, options.setWeight);\n \n // Validate weights\n const weights = profile.scoring.weights;\n const sum = (weights.base || 0) + (weights.impact || 0) + \n (weights.persistence || 0) + (weights.reference || 0);\n \n if (Math.abs(sum - 1.0) > 0.001) {\n console.log(chalk.yellow(`\u26A0 Weights sum to ${sum.toFixed(3)}, normalizing...`));\n const factor = 1.0 / sum;\n if (weights.base) weights.base *= factor;\n if (weights.impact) weights.impact *= factor;\n if (weights.persistence) weights.persistence *= factor;\n if (weights.reference) weights.reference *= factor;\n }\n \n console.log(chalk.green('\u2713 Updated weights'));\n }\n\n // Save changes\n manager.save();\n\n console.log(chalk.green(`\\n\u2705 Profile '${name}' updated`));\n console.log(chalk.blue('\\nUpdated Configuration:'));\n console.log(yaml.dump(profile, { indent: 2 }));\n });\n\n config\n .command('profile-report [profile]')\n .description('Show profile effectiveness report')\n .action(async (profile) => {\n // This would integrate with the ToolScoringMiddleware\n // For now, show a placeholder\n console.log(chalk.blue('\\n\uD83D\uDCCA Profile Effectiveness Report'));\n \n if (profile) {\n console.log(chalk.cyan(`\\nProfile: ${profile}`));\n console.log('Note: Run tools with this profile to generate metrics');\n } else {\n console.log('\\nNote: Tool scoring metrics will be available after running MCP tools');\n }\n \n console.log(chalk.gray('\\nMetrics tracked:'));\n console.log(' \u2022 Average score per tool');\n console.log(' \u2022 High-importance operations');\n console.log(' \u2022 Profile usage frequency');\n console.log(' \u2022 Score trends over time');\n });\n\n return config;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["config"]
7
7
  }
@@ -26,7 +26,9 @@ function createContextCommands() {
26
26
  if (projectRow?.value) projectId = projectRow.value;
27
27
  } catch {
28
28
  }
29
- const frameManager = new FrameManager(db, projectId);
29
+ const frameManager = new FrameManager(db, projectId, {
30
+ skipContextBridge: true
31
+ });
30
32
  const depth = frameManager.getStackDepth();
31
33
  const activePath = frameManager.getActiveFramePath();
32
34
  console.log(`
@@ -91,7 +93,9 @@ function createContextCommands() {
91
93
  if (projectRow?.value) projectId = projectRow.value;
92
94
  } catch {
93
95
  }
94
- const frameManager = new FrameManager(db, projectId);
96
+ const frameManager = new FrameManager(db, projectId, {
97
+ skipContextBridge: true
98
+ });
95
99
  const activePath = frameManager.getActiveFramePath();
96
100
  const parentId = activePath.length > 0 ? activePath[activePath.length - 1].frame_id : void 0;
97
101
  let inputs = {};
@@ -135,7 +139,9 @@ function createContextCommands() {
135
139
  if (projectRow?.value) projectId = projectRow.value;
136
140
  } catch {
137
141
  }
138
- const frameManager = new FrameManager(db, projectId);
142
+ const frameManager = new FrameManager(db, projectId, {
143
+ skipContextBridge: true
144
+ });
139
145
  const activePath = frameManager.getActiveFramePath();
140
146
  if (activePath.length === 0) {
141
147
  console.log("\u{1F4DA} Stack is already empty.");
@@ -179,7 +185,9 @@ function createContextCommands() {
179
185
  if (projectRow?.value) projectId = projectRow.value;
180
186
  } catch {
181
187
  }
182
- const frameManager = new FrameManager(db, projectId);
188
+ const frameManager = new FrameManager(db, projectId, {
189
+ skipContextBridge: true
190
+ });
183
191
  const activePath = frameManager.getActiveFramePath();
184
192
  if (activePath.length === 0) {
185
193
  console.log("\u26A0\uFE0F No active context frame. Creating one...");
@@ -232,7 +240,9 @@ function createContextCommands() {
232
240
  if (projectRow?.value) projectId = projectRow.value;
233
241
  } catch {
234
242
  }
235
- const frameManager = new FrameManager(db, projectId);
243
+ const frameManager = new FrameManager(db, projectId, {
244
+ skipContextBridge: true
245
+ });
236
246
  if (options.list || action === "list") {
237
247
  const worktreeFrames = db.prepare(
238
248
  `
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cli/commands/context.ts"],
4
- "sourcesContent": ["/**\n * Context Commands for StackMemory CLI\n * Manage context stack (show, push, pop)\n */\n\nimport { Command } from 'commander';\nimport Database from 'better-sqlite3';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\nimport { FrameManager, FrameType } from '../../core/context/frame-manager.js';\n\nexport function createContextCommands(): Command {\n const context = new Command('context')\n .alias('ctx')\n .description('Manage context stack');\n\n // Show current context\n context\n .command('show')\n .alias('status')\n .description('Show current context stack')\n .option('-v, --verbose', 'Show detailed information')\n .action(async (options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n // Get project ID - try metadata table, fallback to default\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(\n `\n SELECT value FROM metadata WHERE key = 'project_id'\n `\n )\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {\n // metadata table doesn't exist, use default\n }\n\n const frameManager = new FrameManager(db, projectId);\n\n const depth = frameManager.getStackDepth();\n const activePath = frameManager.getActiveFramePath();\n\n console.log(`\\n\uD83D\uDCDA Context Stack\\n`);\n console.log(`Project: ${projectId}`);\n console.log(`Depth: ${depth}`);\n console.log(`Active frames: ${activePath.length}\\n`);\n\n if (activePath.length === 0) {\n console.log('No active context frames.\\n');\n console.log('Use \"stackmemory context push\" to create one.');\n } else {\n const typeIcon: Record<string, string> = {\n session: '\uD83D\uDD37',\n task: '\uD83D\uDCCB',\n command: '\u26A1',\n file: '\uD83D\uDCC4',\n decision: '\uD83D\uDCA1',\n };\n\n console.log('Stack (bottom to top):');\n activePath.forEach((frame, i) => {\n const icon = typeIcon[frame.type] || '\uD83D\uDCE6';\n const indent = ' '.repeat(i);\n console.log(\n `${indent}${i === activePath.length - 1 ? '\u2514\u2500' : '\u251C\u2500'} ${icon} ${frame.name || frame.frame_id.slice(0, 10)}`\n );\n\n if (options.verbose) {\n console.log(`${indent} ID: ${frame.frame_id}`);\n console.log(`${indent} Type: ${frame.type}`);\n console.log(\n `${indent} Created: ${new Date(frame.created_at * 1000).toLocaleString()}`\n );\n }\n });\n }\n\n console.log('');\n } catch (error) {\n console.error('\u274C Failed to show context:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Push new context frame\n context\n .command('push <name>')\n .description('Push a new context frame onto the stack')\n .option(\n '-t, --type <type>',\n 'Frame type (session, task, command, file, decision)',\n 'task'\n )\n .option('-m, --metadata <json>', 'Additional metadata as JSON')\n .action(async (name, options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId);\n\n // Get current top frame as parent\n const activePath = frameManager.getActiveFramePath();\n const parentId =\n activePath.length > 0\n ? activePath[activePath.length - 1].frame_id\n : undefined;\n\n // Parse metadata if provided\n let inputs = {};\n if (options.metadata) {\n try {\n inputs = JSON.parse(options.metadata);\n } catch {\n console.log('\u26A0\uFE0F Invalid metadata JSON, ignoring');\n }\n }\n\n const frameId = frameManager.createFrame({\n type: options.type as FrameType,\n name,\n inputs,\n parentFrameId: parentId,\n });\n\n console.log(`\u2705 Pushed context frame: ${name}`);\n console.log(` ID: ${frameId.slice(0, 10)}`);\n console.log(` Type: ${options.type}`);\n console.log(` Depth: ${frameManager.getStackDepth()}`);\n } catch (error) {\n console.error('\u274C Failed to push context:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Pop context frame\n context\n .command('pop')\n .description('Pop the top context frame from the stack')\n .option('-a, --all', 'Pop all frames (clear stack)')\n .action(async (options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId);\n\n const activePath = frameManager.getActiveFramePath();\n\n if (activePath.length === 0) {\n console.log('\uD83D\uDCDA Stack is already empty.');\n return;\n }\n\n if (options.all) {\n // Close all frames from top to bottom\n for (let i = activePath.length - 1; i >= 0; i--) {\n frameManager.closeFrame(activePath[i].frame_id);\n }\n console.log(`\u2705 Cleared all ${activePath.length} context frames.`);\n } else {\n // Close just the top frame\n const topFrame = activePath[activePath.length - 1];\n frameManager.closeFrame(topFrame.frame_id);\n console.log(\n `\u2705 Popped: ${topFrame.name || topFrame.frame_id.slice(0, 10)}`\n );\n console.log(` Depth: ${frameManager.getStackDepth()}`);\n }\n } catch (error) {\n console.error('\u274C Failed to pop context:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Add event to current context\n context\n .command('add <type> <message>')\n .description(\n 'Add an event to current context (types: observation, decision, error)'\n )\n .action(async (type, message) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId);\n\n const activePath = frameManager.getActiveFramePath();\n\n if (activePath.length === 0) {\n console.log('\u26A0\uFE0F No active context frame. Creating one...');\n frameManager.createFrame({\n type: 'task',\n name: 'cli-session',\n inputs: {},\n });\n }\n\n const currentFrame = frameManager.getActiveFramePath().slice(-1)[0];\n\n const validTypes = [\n 'observation',\n 'decision',\n 'error',\n 'action',\n 'result',\n ];\n if (!validTypes.includes(type)) {\n console.log(`\u26A0\uFE0F Unknown event type \"${type}\". Using \"observation\".`);\n type = 'observation';\n }\n\n frameManager.addEvent(\n type,\n { message, content: message },\n currentFrame.frame_id\n );\n\n console.log(\n `\u2705 Added ${type}: ${message.slice(0, 50)}${message.length > 50 ? '...' : ''}`\n );\n } catch (error) {\n console.error('\u274C Failed to add event:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Worktree integration commands\n context\n .command('worktree [action]')\n .description('Manage Claude worktree contexts')\n .option('-i, --instance <id>', 'Instance ID')\n .option('-b, --branch <name>', 'Branch name')\n .option('-l, --list', 'List worktree contexts')\n .action(async (action, options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId);\n\n if (options.list || action === 'list') {\n // List all worktree contexts\n const worktreeFrames = db\n .prepare(\n `\n SELECT * FROM frames \n WHERE project_id = ? \n AND type = 'session' \n AND inputs LIKE '%worktree%'\n ORDER BY created_at DESC\n LIMIT 10\n `\n )\n .all(projectId) as any[];\n\n console.log('\\n\uD83C\uDF33 Worktree Contexts\\n');\n if (worktreeFrames.length === 0) {\n console.log('No worktree contexts found.');\n } else {\n worktreeFrames.forEach((frame) => {\n const inputs = JSON.parse(frame.inputs || '{}');\n const instanceId = inputs.instanceId || 'unknown';\n const branch = inputs.branch || 'unknown';\n const created = new Date(\n frame.created_at * 1000\n ).toLocaleString();\n console.log(`\uD83D\uDCCD ${frame.name || frame.frame_id.slice(0, 10)}`);\n console.log(` Instance: ${instanceId}`);\n console.log(` Branch: ${branch}`);\n console.log(` Created: ${created}`);\n console.log('');\n });\n }\n } else if (action === 'save') {\n // Save current worktree context\n const instanceId = options.instance || process.env.CLAUDE_INSTANCE_ID;\n const branch = options.branch || 'unknown';\n\n if (!instanceId) {\n console.log('\u26A0\uFE0F No instance ID provided or detected.');\n return;\n }\n\n const frameId = frameManager.createFrame({\n type: 'task',\n name: `worktree-${branch}`,\n inputs: {\n worktree: true,\n instanceId,\n branch,\n path: process.cwd(),\n },\n });\n\n console.log(`\u2705 Saved worktree context for ${branch}`);\n console.log(` Instance: ${instanceId}`);\n console.log(` Frame ID: ${frameId.slice(0, 10)}`);\n } else if (action === 'load') {\n // Load worktree context\n const instanceId = options.instance || process.env.CLAUDE_INSTANCE_ID;\n\n if (!instanceId) {\n console.log('\u26A0\uFE0F No instance ID provided.');\n return;\n }\n\n const worktreeFrame = db\n .prepare(\n `\n SELECT * FROM frames \n WHERE project_id = ? \n AND type = 'session' \n AND inputs LIKE ?\n ORDER BY created_at DESC\n LIMIT 1\n `\n )\n .get(projectId, `%\"instanceId\":\"${instanceId}\"%`) as any;\n\n if (worktreeFrame) {\n const inputs = JSON.parse(worktreeFrame.inputs || '{}');\n console.log(`\u2705 Loaded worktree context`);\n console.log(` Branch: ${inputs.branch}`);\n console.log(` Instance: ${inputs.instanceId}`);\n console.log(` Path: ${inputs.path}`);\n } else {\n console.log('\u26A0\uFE0F No worktree context found for this instance.');\n }\n } else {\n console.log('Usage: stackmemory context worktree [save|load|list]');\n }\n } catch (error) {\n console.error(\n '\u274C Failed to manage worktree context:',\n (error as Error).message\n );\n } finally {\n db.close();\n }\n });\n\n return context;\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["/**\n * Context Commands for StackMemory CLI\n * Manage context stack (show, push, pop)\n */\n\nimport { Command } from 'commander';\nimport Database from 'better-sqlite3';\nimport { join } from 'path';\nimport { existsSync } from 'fs';\nimport { FrameManager, FrameType } from '../../core/context/frame-manager.js';\n\nexport function createContextCommands(): Command {\n const context = new Command('context')\n .alias('ctx')\n .description('Manage context stack');\n\n // Show current context\n context\n .command('show')\n .alias('status')\n .description('Show current context stack')\n .option('-v, --verbose', 'Show detailed information')\n .action(async (options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n // Get project ID - try metadata table, fallback to default\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(\n `\n SELECT value FROM metadata WHERE key = 'project_id'\n `\n )\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {\n // metadata table doesn't exist, use default\n }\n\n const frameManager = new FrameManager(db, projectId, { \n skipContextBridge: true \n });\n\n const depth = frameManager.getStackDepth();\n const activePath = frameManager.getActiveFramePath();\n\n console.log(`\\n\uD83D\uDCDA Context Stack\\n`);\n console.log(`Project: ${projectId}`);\n console.log(`Depth: ${depth}`);\n console.log(`Active frames: ${activePath.length}\\n`);\n\n if (activePath.length === 0) {\n console.log('No active context frames.\\n');\n console.log('Use \"stackmemory context push\" to create one.');\n } else {\n const typeIcon: Record<string, string> = {\n session: '\uD83D\uDD37',\n task: '\uD83D\uDCCB',\n command: '\u26A1',\n file: '\uD83D\uDCC4',\n decision: '\uD83D\uDCA1',\n };\n\n console.log('Stack (bottom to top):');\n activePath.forEach((frame, i) => {\n const icon = typeIcon[frame.type] || '\uD83D\uDCE6';\n const indent = ' '.repeat(i);\n console.log(\n `${indent}${i === activePath.length - 1 ? '\u2514\u2500' : '\u251C\u2500'} ${icon} ${frame.name || frame.frame_id.slice(0, 10)}`\n );\n\n if (options.verbose) {\n console.log(`${indent} ID: ${frame.frame_id}`);\n console.log(`${indent} Type: ${frame.type}`);\n console.log(\n `${indent} Created: ${new Date(frame.created_at * 1000).toLocaleString()}`\n );\n }\n });\n }\n\n console.log('');\n } catch (error) {\n console.error('\u274C Failed to show context:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Push new context frame\n context\n .command('push <name>')\n .description('Push a new context frame onto the stack')\n .option(\n '-t, --type <type>',\n 'Frame type (session, task, command, file, decision)',\n 'task'\n )\n .option('-m, --metadata <json>', 'Additional metadata as JSON')\n .action(async (name, options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId, { \n skipContextBridge: true \n });\n\n // Get current top frame as parent\n const activePath = frameManager.getActiveFramePath();\n const parentId =\n activePath.length > 0\n ? activePath[activePath.length - 1].frame_id\n : undefined;\n\n // Parse metadata if provided\n let inputs = {};\n if (options.metadata) {\n try {\n inputs = JSON.parse(options.metadata);\n } catch {\n console.log('\u26A0\uFE0F Invalid metadata JSON, ignoring');\n }\n }\n\n const frameId = frameManager.createFrame({\n type: options.type as FrameType,\n name,\n inputs,\n parentFrameId: parentId,\n });\n\n console.log(`\u2705 Pushed context frame: ${name}`);\n console.log(` ID: ${frameId.slice(0, 10)}`);\n console.log(` Type: ${options.type}`);\n console.log(` Depth: ${frameManager.getStackDepth()}`);\n } catch (error) {\n console.error('\u274C Failed to push context:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Pop context frame\n context\n .command('pop')\n .description('Pop the top context frame from the stack')\n .option('-a, --all', 'Pop all frames (clear stack)')\n .action(async (options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId, { \n skipContextBridge: true \n });\n\n const activePath = frameManager.getActiveFramePath();\n\n if (activePath.length === 0) {\n console.log('\uD83D\uDCDA Stack is already empty.');\n return;\n }\n\n if (options.all) {\n // Close all frames from top to bottom\n for (let i = activePath.length - 1; i >= 0; i--) {\n frameManager.closeFrame(activePath[i].frame_id);\n }\n console.log(`\u2705 Cleared all ${activePath.length} context frames.`);\n } else {\n // Close just the top frame\n const topFrame = activePath[activePath.length - 1];\n frameManager.closeFrame(topFrame.frame_id);\n console.log(\n `\u2705 Popped: ${topFrame.name || topFrame.frame_id.slice(0, 10)}`\n );\n console.log(` Depth: ${frameManager.getStackDepth()}`);\n }\n } catch (error) {\n console.error('\u274C Failed to pop context:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Add event to current context\n context\n .command('add <type> <message>')\n .description(\n 'Add an event to current context (types: observation, decision, error)'\n )\n .action(async (type, message) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId, { \n skipContextBridge: true \n });\n\n const activePath = frameManager.getActiveFramePath();\n\n if (activePath.length === 0) {\n console.log('\u26A0\uFE0F No active context frame. Creating one...');\n frameManager.createFrame({\n type: 'task',\n name: 'cli-session',\n inputs: {},\n });\n }\n\n const currentFrame = frameManager.getActiveFramePath().slice(-1)[0];\n\n const validTypes = [\n 'observation',\n 'decision',\n 'error',\n 'action',\n 'result',\n ];\n if (!validTypes.includes(type)) {\n console.log(`\u26A0\uFE0F Unknown event type \"${type}\". Using \"observation\".`);\n type = 'observation';\n }\n\n frameManager.addEvent(\n type,\n { message, content: message },\n currentFrame.frame_id\n );\n\n console.log(\n `\u2705 Added ${type}: ${message.slice(0, 50)}${message.length > 50 ? '...' : ''}`\n );\n } catch (error) {\n console.error('\u274C Failed to add event:', (error as Error).message);\n } finally {\n db.close();\n }\n });\n\n // Worktree integration commands\n context\n .command('worktree [action]')\n .description('Manage Claude worktree contexts')\n .option('-i, --instance <id>', 'Instance ID')\n .option('-b, --branch <name>', 'Branch name')\n .option('-l, --list', 'List worktree contexts')\n .action(async (action, options) => {\n const projectRoot = process.cwd();\n const dbPath = join(projectRoot, '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n console.log(\n '\u274C StackMemory not initialized. Run \"stackmemory init\" first.'\n );\n return;\n }\n\n const db = new Database(dbPath);\n\n try {\n let projectId = 'default';\n try {\n const projectRow = db\n .prepare(`SELECT value FROM metadata WHERE key = 'project_id'`)\n .get() as any;\n if (projectRow?.value) projectId = projectRow.value;\n } catch {}\n\n const frameManager = new FrameManager(db, projectId, { \n skipContextBridge: true \n });\n\n if (options.list || action === 'list') {\n // List all worktree contexts\n const worktreeFrames = db\n .prepare(\n `\n SELECT * FROM frames \n WHERE project_id = ? \n AND type = 'session' \n AND inputs LIKE '%worktree%'\n ORDER BY created_at DESC\n LIMIT 10\n `\n )\n .all(projectId) as any[];\n\n console.log('\\n\uD83C\uDF33 Worktree Contexts\\n');\n if (worktreeFrames.length === 0) {\n console.log('No worktree contexts found.');\n } else {\n worktreeFrames.forEach((frame) => {\n const inputs = JSON.parse(frame.inputs || '{}');\n const instanceId = inputs.instanceId || 'unknown';\n const branch = inputs.branch || 'unknown';\n const created = new Date(\n frame.created_at * 1000\n ).toLocaleString();\n console.log(`\uD83D\uDCCD ${frame.name || frame.frame_id.slice(0, 10)}`);\n console.log(` Instance: ${instanceId}`);\n console.log(` Branch: ${branch}`);\n console.log(` Created: ${created}`);\n console.log('');\n });\n }\n } else if (action === 'save') {\n // Save current worktree context\n const instanceId = options.instance || process.env.CLAUDE_INSTANCE_ID;\n const branch = options.branch || 'unknown';\n\n if (!instanceId) {\n console.log('\u26A0\uFE0F No instance ID provided or detected.');\n return;\n }\n\n const frameId = frameManager.createFrame({\n type: 'task',\n name: `worktree-${branch}`,\n inputs: {\n worktree: true,\n instanceId,\n branch,\n path: process.cwd(),\n },\n });\n\n console.log(`\u2705 Saved worktree context for ${branch}`);\n console.log(` Instance: ${instanceId}`);\n console.log(` Frame ID: ${frameId.slice(0, 10)}`);\n } else if (action === 'load') {\n // Load worktree context\n const instanceId = options.instance || process.env.CLAUDE_INSTANCE_ID;\n\n if (!instanceId) {\n console.log('\u26A0\uFE0F No instance ID provided.');\n return;\n }\n\n const worktreeFrame = db\n .prepare(\n `\n SELECT * FROM frames \n WHERE project_id = ? \n AND type = 'session' \n AND inputs LIKE ?\n ORDER BY created_at DESC\n LIMIT 1\n `\n )\n .get(projectId, `%\"instanceId\":\"${instanceId}\"%`) as any;\n\n if (worktreeFrame) {\n const inputs = JSON.parse(worktreeFrame.inputs || '{}');\n console.log(`\u2705 Loaded worktree context`);\n console.log(` Branch: ${inputs.branch}`);\n console.log(` Instance: ${inputs.instanceId}`);\n console.log(` Path: ${inputs.path}`);\n } else {\n console.log('\u26A0\uFE0F No worktree context found for this instance.');\n }\n } else {\n console.log('Usage: stackmemory context worktree [save|load|list]');\n }\n } catch (error) {\n console.error(\n '\u274C Failed to manage worktree context:',\n (error as Error).message\n );\n } finally {\n db.close();\n }\n });\n\n return context;\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,178 @@
1
+ #!/usr/bin/env node
2
+ import chalk from "chalk";
3
+ import Table from "cli-table3";
4
+ import { SessionManager } from "../../core/session/session-manager.js";
5
+ import Database from "better-sqlite3";
6
+ import { join } from "path";
7
+ import { existsSync } from "fs";
8
+ const dashboardCommand = {
9
+ command: "dashboard",
10
+ describe: "Display monitoring dashboard in terminal",
11
+ builder: (yargs) => {
12
+ return yargs.option("watch", {
13
+ alias: "w",
14
+ type: "boolean",
15
+ description: "Auto-refresh dashboard",
16
+ default: false
17
+ }).option("interval", {
18
+ alias: "i",
19
+ type: "number",
20
+ description: "Refresh interval in seconds",
21
+ default: 5
22
+ });
23
+ },
24
+ handler: async (argv) => {
25
+ const projectRoot = process.cwd();
26
+ const dbPath = join(projectRoot, ".stackmemory", "context.db");
27
+ if (!existsSync(dbPath)) {
28
+ console.log('\u274C StackMemory not initialized. Run "stackmemory init" first.');
29
+ return;
30
+ }
31
+ const displayDashboard = async () => {
32
+ console.clear();
33
+ console.log(chalk.cyan.bold("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"));
34
+ console.log(chalk.cyan.bold(" \u{1F680} StackMemory Monitoring Dashboard "));
35
+ console.log(chalk.cyan.bold("\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550"));
36
+ console.log();
37
+ const sessionManager = new SessionManager({ enableMonitoring: false });
38
+ await sessionManager.initialize();
39
+ const db = new Database(dbPath);
40
+ const sessions = await sessionManager.listSessions({
41
+ state: "active",
42
+ limit: 5
43
+ });
44
+ const sessionsTable = new Table({
45
+ head: [
46
+ chalk.white("Session ID"),
47
+ chalk.white("Status"),
48
+ chalk.white("Branch"),
49
+ chalk.white("Duration"),
50
+ chalk.white("Last Active")
51
+ ],
52
+ style: { head: [], border: [] }
53
+ });
54
+ sessions.forEach((session) => {
55
+ const duration = Math.round((Date.now() - session.startedAt) / 1e3 / 60);
56
+ const lastActive = Math.round((Date.now() - session.lastActiveAt) / 1e3 / 60);
57
+ const status = session.state === "active" ? chalk.green("\u25CF Active") : session.state === "completed" ? chalk.gray("\u25CF Completed") : chalk.yellow("\u25CF Idle");
58
+ sessionsTable.push([
59
+ session.sessionId.substring(0, 8),
60
+ status,
61
+ session.branch || "main",
62
+ `${duration}m`,
63
+ `${lastActive}m ago`
64
+ ]);
65
+ });
66
+ console.log(chalk.yellow.bold("\u{1F4CA} Active Sessions"));
67
+ console.log(sessionsTable.toString());
68
+ console.log();
69
+ const frameStats = db.prepare(`
70
+ SELECT
71
+ COUNT(*) as total,
72
+ SUM(CASE WHEN state = 'active' THEN 1 ELSE 0 END) as active,
73
+ COUNT(DISTINCT run_id) as sessions
74
+ FROM frames
75
+ `).get();
76
+ const statsTable = new Table({
77
+ head: [chalk.white("Metric"), chalk.white("Value")],
78
+ style: { head: [], border: [] }
79
+ });
80
+ statsTable.push(
81
+ ["Total Frames", frameStats.total || 0],
82
+ ["Active Frames", chalk.green(frameStats.active || 0)],
83
+ ["Total Sessions", frameStats.sessions || 0]
84
+ );
85
+ console.log(chalk.yellow.bold("\u{1F4C8} Frame Statistics"));
86
+ console.log(statsTable.toString());
87
+ console.log();
88
+ const recentActivity = db.prepare(`
89
+ SELECT
90
+ name,
91
+ type,
92
+ state,
93
+ datetime(created_at, 'unixepoch') as created
94
+ FROM frames
95
+ ORDER BY created_at DESC
96
+ LIMIT 5
97
+ `).all();
98
+ if (recentActivity.length > 0) {
99
+ const activityTable = new Table({
100
+ head: [
101
+ chalk.white("Frame"),
102
+ chalk.white("Type"),
103
+ chalk.white("Status"),
104
+ chalk.white("Created")
105
+ ],
106
+ style: { head: [], border: [] }
107
+ });
108
+ recentActivity.forEach((frame) => {
109
+ const status = frame.state === "active" ? chalk.green("Active") : chalk.gray("Closed");
110
+ activityTable.push([
111
+ frame.name.substring(0, 30),
112
+ frame.type,
113
+ status,
114
+ frame.created
115
+ ]);
116
+ });
117
+ console.log(chalk.yellow.bold("\u{1F550} Recent Activity"));
118
+ console.log(activityTable.toString());
119
+ console.log();
120
+ }
121
+ const contextUsage = await estimateContextUsage(db);
122
+ const usageBar = createProgressBar(contextUsage, 100);
123
+ console.log(chalk.yellow.bold("\u{1F4BE} Context Usage"));
124
+ console.log(`${usageBar} ${contextUsage}%`);
125
+ console.log();
126
+ db.close();
127
+ if (argv.watch) {
128
+ console.log(chalk.gray(`Auto-refreshing every ${argv.interval} seconds. Press Ctrl+C to exit.`));
129
+ } else {
130
+ console.log(chalk.gray("Run with --watch to auto-refresh"));
131
+ }
132
+ };
133
+ try {
134
+ await displayDashboard();
135
+ if (argv.watch) {
136
+ const interval = setInterval(async () => {
137
+ await displayDashboard();
138
+ }, argv.interval * 1e3);
139
+ process.on("SIGINT", () => {
140
+ clearInterval(interval);
141
+ console.clear();
142
+ console.log(chalk.green("\u2705 Dashboard closed"));
143
+ process.exit(0);
144
+ });
145
+ }
146
+ } catch (error) {
147
+ console.error(chalk.red("\u274C Dashboard error:"), error.message);
148
+ process.exit(1);
149
+ }
150
+ }
151
+ };
152
+ function createProgressBar(value, max) {
153
+ const percentage = Math.min(100, Math.round(value / max * 100));
154
+ const filled = Math.round(percentage / 5);
155
+ const empty = 20 - filled;
156
+ let color = chalk.green;
157
+ if (percentage > 80) color = chalk.red;
158
+ else if (percentage > 60) color = chalk.yellow;
159
+ return color("\u2588".repeat(filled)) + chalk.gray("\u2591".repeat(empty));
160
+ }
161
+ async function estimateContextUsage(db) {
162
+ const result = db.prepare(`
163
+ SELECT
164
+ COUNT(*) as frame_count,
165
+ SUM(LENGTH(inputs)) as input_size,
166
+ SUM(LENGTH(outputs)) as output_size
167
+ FROM frames
168
+ WHERE state = 'active'
169
+ `).get();
170
+ const totalBytes = (result.input_size || 0) + (result.output_size || 0);
171
+ const estimatedTokens = totalBytes / 4;
172
+ const maxTokens = 128e3;
173
+ return Math.round(estimatedTokens / maxTokens * 100);
174
+ }
175
+ export {
176
+ dashboardCommand
177
+ };
178
+ //# sourceMappingURL=dashboard.js.map