@stackmemoryai/stackmemory 0.5.57 → 0.5.59

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 (611) hide show
  1. package/bin/codex-smd +6 -0
  2. package/dist/cli/codex-sm-danger.js +21 -0
  3. package/dist/cli/codex-sm-danger.js.map +7 -0
  4. package/dist/cli/commands/handoff.js +33 -3
  5. package/dist/cli/commands/handoff.js.map +2 -2
  6. package/dist/cli/commands/search.js +20 -3
  7. package/dist/cli/commands/search.js.map +2 -2
  8. package/dist/core/database/sqlite-adapter.js +13 -3
  9. package/dist/core/database/sqlite-adapter.js.map +2 -2
  10. package/dist/core/errors/error-utils.js +208 -0
  11. package/dist/core/errors/error-utils.js.map +7 -0
  12. package/dist/core/errors/index.js +13 -4
  13. package/dist/core/errors/index.js.map +2 -2
  14. package/dist/core/merge/unified-merge-resolver.js +303 -0
  15. package/dist/core/merge/unified-merge-resolver.js.map +7 -0
  16. package/dist/core/monitoring/logger.js +61 -9
  17. package/dist/core/monitoring/logger.js.map +2 -2
  18. package/dist/core/security/index.js +35 -0
  19. package/dist/core/security/index.js.map +7 -0
  20. package/dist/core/security/input-sanitizer.js +321 -0
  21. package/dist/core/security/input-sanitizer.js.map +7 -0
  22. package/dist/core/session/enhanced-handoff.js +136 -2
  23. package/dist/core/session/enhanced-handoff.js.map +3 -3
  24. package/dist/integrations/linear/client.js +5 -1
  25. package/dist/integrations/linear/client.js.map +2 -2
  26. package/dist/integrations/mcp/remote-server.js +27 -36
  27. package/dist/integrations/mcp/remote-server.js.map +2 -2
  28. package/dist/integrations/mcp/server.js +44 -29
  29. package/dist/integrations/mcp/server.js.map +3 -3
  30. package/dist/scripts/benchmark-performance.js +48 -0
  31. package/dist/scripts/benchmark-performance.js.map +7 -0
  32. package/dist/scripts/check-redis.js +42 -0
  33. package/dist/scripts/check-redis.js.map +7 -0
  34. package/dist/scripts/initialize.js +116 -0
  35. package/dist/scripts/initialize.js.map +7 -0
  36. package/dist/scripts/list-linear-tasks.js +124 -0
  37. package/dist/scripts/list-linear-tasks.js.map +7 -0
  38. package/dist/scripts/measure-handoff-impact.js +340 -0
  39. package/dist/scripts/measure-handoff-impact.js.map +7 -0
  40. package/dist/scripts/query-chromadb.js +160 -0
  41. package/dist/scripts/query-chromadb.js.map +7 -0
  42. package/dist/scripts/show-linear-summary.js +119 -0
  43. package/dist/scripts/show-linear-summary.js.map +7 -0
  44. package/dist/scripts/simple-swarm-demo.js +90 -0
  45. package/dist/scripts/simple-swarm-demo.js.map +7 -0
  46. package/dist/scripts/status.js +155 -0
  47. package/dist/scripts/status.js.map +7 -0
  48. package/dist/scripts/test-chromadb-sync.js +192 -0
  49. package/dist/scripts/test-chromadb-sync.js.map +7 -0
  50. package/dist/scripts/test-ralph-iteration-fix.js +86 -0
  51. package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
  52. package/dist/scripts/test-ralph-iterations.js +121 -0
  53. package/dist/scripts/test-ralph-iterations.js.map +7 -0
  54. package/dist/scripts/test-redis-storage.js +389 -0
  55. package/dist/scripts/test-redis-storage.js.map +7 -0
  56. package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
  57. package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
  58. package/dist/scripts/test-swarm-fixes.js +125 -0
  59. package/dist/scripts/test-swarm-fixes.js.map +7 -0
  60. package/dist/scripts/test-swarm-tui.js +23 -0
  61. package/dist/scripts/test-swarm-tui.js.map +7 -0
  62. package/dist/scripts/test-tui-shortcuts.js +52 -0
  63. package/dist/scripts/test-tui-shortcuts.js.map +7 -0
  64. package/dist/scripts/validate-tui-shortcuts.js +60 -0
  65. package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
  66. package/dist/src/agents/core/agent-task-manager.js +527 -0
  67. package/dist/src/agents/core/agent-task-manager.js.map +7 -0
  68. package/dist/src/agents/verifiers/base-verifier.js +133 -0
  69. package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
  70. package/dist/src/agents/verifiers/formatter-verifier.js +130 -0
  71. package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
  72. package/dist/src/agents/verifiers/llm-judge.js +252 -0
  73. package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
  74. package/dist/src/cli/auto-detect.js +321 -0
  75. package/dist/src/cli/auto-detect.js.map +7 -0
  76. package/dist/src/cli/claude-sm-danger.js +21 -0
  77. package/dist/src/cli/claude-sm-danger.js.map +7 -0
  78. package/dist/src/cli/claude-sm.js +1156 -0
  79. package/dist/src/cli/claude-sm.js.map +7 -0
  80. package/dist/src/cli/codex-sm-danger.js +21 -0
  81. package/dist/src/cli/codex-sm-danger.js.map +7 -0
  82. package/dist/src/cli/codex-sm.js +349 -0
  83. package/dist/src/cli/codex-sm.js.map +7 -0
  84. package/dist/src/cli/commands/api.js +232 -0
  85. package/dist/src/cli/commands/api.js.map +7 -0
  86. package/dist/src/cli/commands/auto-background.js +180 -0
  87. package/dist/src/cli/commands/auto-background.js.map +7 -0
  88. package/dist/src/cli/commands/cleanup-processes.js +68 -0
  89. package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
  90. package/dist/src/cli/commands/clear.js +202 -0
  91. package/dist/src/cli/commands/clear.js.map +7 -0
  92. package/dist/src/cli/commands/config.js +445 -0
  93. package/dist/src/cli/commands/config.js.map +7 -0
  94. package/dist/src/cli/commands/context-rehydrate.js +751 -0
  95. package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
  96. package/dist/src/cli/commands/context.js +343 -0
  97. package/dist/src/cli/commands/context.js.map +7 -0
  98. package/dist/src/cli/commands/daemon.js +392 -0
  99. package/dist/src/cli/commands/daemon.js.map +7 -0
  100. package/dist/src/cli/commands/dashboard.js +210 -0
  101. package/dist/src/cli/commands/dashboard.js.map +7 -0
  102. package/dist/src/cli/commands/db.js +147 -0
  103. package/dist/src/cli/commands/db.js.map +7 -0
  104. package/dist/src/cli/commands/decision.js +266 -0
  105. package/dist/src/cli/commands/decision.js.map +7 -0
  106. package/dist/src/cli/commands/discovery.js +279 -0
  107. package/dist/src/cli/commands/discovery.js.map +7 -0
  108. package/dist/src/cli/commands/handoff.js +624 -0
  109. package/dist/src/cli/commands/handoff.js.map +7 -0
  110. package/dist/src/cli/commands/hooks.js +298 -0
  111. package/dist/src/cli/commands/hooks.js.map +7 -0
  112. package/dist/src/cli/commands/linear.js +529 -0
  113. package/dist/src/cli/commands/linear.js.map +7 -0
  114. package/dist/src/cli/commands/log.js +169 -0
  115. package/dist/src/cli/commands/log.js.map +7 -0
  116. package/dist/src/cli/commands/login.js +172 -0
  117. package/dist/src/cli/commands/login.js.map +7 -0
  118. package/dist/src/cli/commands/migrate.js +240 -0
  119. package/dist/src/cli/commands/migrate.js.map +7 -0
  120. package/dist/src/cli/commands/model.js +533 -0
  121. package/dist/src/cli/commands/model.js.map +7 -0
  122. package/dist/src/cli/commands/onboard.js +536 -0
  123. package/dist/src/cli/commands/onboard.js.map +7 -0
  124. package/dist/src/cli/commands/projects.js +199 -0
  125. package/dist/src/cli/commands/projects.js.map +7 -0
  126. package/dist/src/cli/commands/ralph.js +909 -0
  127. package/dist/src/cli/commands/ralph.js.map +7 -0
  128. package/dist/src/cli/commands/retrieval.js +248 -0
  129. package/dist/src/cli/commands/retrieval.js.map +7 -0
  130. package/dist/src/cli/commands/search.js +173 -0
  131. package/dist/src/cli/commands/search.js.map +7 -0
  132. package/dist/src/cli/commands/service.js +749 -0
  133. package/dist/src/cli/commands/service.js.map +7 -0
  134. package/dist/src/cli/commands/session.js +200 -0
  135. package/dist/src/cli/commands/session.js.map +7 -0
  136. package/dist/src/cli/commands/settings.js +306 -0
  137. package/dist/src/cli/commands/settings.js.map +7 -0
  138. package/dist/src/cli/commands/setup.js +701 -0
  139. package/dist/src/cli/commands/setup.js.map +7 -0
  140. package/dist/src/cli/commands/shell.js +249 -0
  141. package/dist/src/cli/commands/shell.js.map +7 -0
  142. package/dist/src/cli/commands/signup.js +50 -0
  143. package/dist/src/cli/commands/signup.js.map +7 -0
  144. package/dist/src/cli/commands/skills.js +470 -0
  145. package/dist/src/cli/commands/skills.js.map +7 -0
  146. package/dist/src/cli/commands/sms-notify.js +795 -0
  147. package/dist/src/cli/commands/sms-notify.js.map +7 -0
  148. package/dist/src/cli/commands/storage-tier.js +183 -0
  149. package/dist/src/cli/commands/storage-tier.js.map +7 -0
  150. package/dist/src/cli/commands/sweep.js +249 -0
  151. package/dist/src/cli/commands/sweep.js.map +7 -0
  152. package/dist/src/cli/commands/tasks.js +213 -0
  153. package/dist/src/cli/commands/tasks.js.map +7 -0
  154. package/dist/src/cli/commands/worktree.js +319 -0
  155. package/dist/src/cli/commands/worktree.js.map +7 -0
  156. package/dist/src/cli/index.js +594 -0
  157. package/dist/src/cli/index.js.map +7 -0
  158. package/dist/src/cli/opencode-sm.js +448 -0
  159. package/dist/src/cli/opencode-sm.js.map +7 -0
  160. package/dist/src/cli/utils/viewer.js +96 -0
  161. package/dist/src/cli/utils/viewer.js.map +7 -0
  162. package/dist/src/core/config/config-manager.js +398 -0
  163. package/dist/src/core/config/config-manager.js.map +7 -0
  164. package/dist/src/core/config/feature-flags.js +76 -0
  165. package/dist/src/core/config/feature-flags.js.map +7 -0
  166. package/dist/src/core/config/storage-config.js +115 -0
  167. package/dist/src/core/config/storage-config.js.map +7 -0
  168. package/dist/src/core/config/types.js +144 -0
  169. package/dist/src/core/config/types.js.map +7 -0
  170. package/dist/src/core/context/auto-context.js +80 -0
  171. package/dist/src/core/context/auto-context.js.map +7 -0
  172. package/dist/src/core/context/dual-stack-manager.js +870 -0
  173. package/dist/src/core/context/dual-stack-manager.js.map +7 -0
  174. package/dist/src/core/context/enhanced-rehydration.js +994 -0
  175. package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
  176. package/dist/src/core/context/frame-database.js +479 -0
  177. package/dist/src/core/context/frame-database.js.map +7 -0
  178. package/dist/src/core/context/frame-digest.js +250 -0
  179. package/dist/src/core/context/frame-digest.js.map +7 -0
  180. package/dist/src/core/context/frame-handoff-manager.js +778 -0
  181. package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
  182. package/dist/src/core/context/frame-lifecycle-hooks.js +119 -0
  183. package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
  184. package/dist/src/core/context/frame-recovery.js +302 -0
  185. package/dist/src/core/context/frame-recovery.js.map +7 -0
  186. package/dist/src/core/context/frame-stack.js +314 -0
  187. package/dist/src/core/context/frame-stack.js.map +7 -0
  188. package/dist/src/core/context/frame-types.js +5 -0
  189. package/dist/src/core/context/frame-types.js.map +7 -0
  190. package/dist/src/core/context/index.js +25 -0
  191. package/dist/src/core/context/index.js.map +7 -0
  192. package/dist/src/core/context/permission-manager.js +185 -0
  193. package/dist/src/core/context/permission-manager.js.map +7 -0
  194. package/dist/src/core/context/recursive-context-manager.js +592 -0
  195. package/dist/src/core/context/recursive-context-manager.js.map +7 -0
  196. package/dist/src/core/context/refactored-frame-manager.js +754 -0
  197. package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
  198. package/dist/src/core/context/shared-context-layer.js +621 -0
  199. package/dist/src/core/context/shared-context-layer.js.map +7 -0
  200. package/dist/src/core/context/stack-merge-resolver.js +749 -0
  201. package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
  202. package/dist/src/core/context/validation.js +130 -0
  203. package/dist/src/core/context/validation.js.map +7 -0
  204. package/dist/src/core/database/batch-operations.js +384 -0
  205. package/dist/src/core/database/batch-operations.js.map +7 -0
  206. package/dist/src/core/database/connection-pool.js +330 -0
  207. package/dist/src/core/database/connection-pool.js.map +7 -0
  208. package/dist/src/core/database/database-adapter.js +60 -0
  209. package/dist/src/core/database/database-adapter.js.map +7 -0
  210. package/dist/src/core/database/migration-manager.js +614 -0
  211. package/dist/src/core/database/migration-manager.js.map +7 -0
  212. package/dist/src/core/database/query-cache.js +298 -0
  213. package/dist/src/core/database/query-cache.js.map +7 -0
  214. package/dist/src/core/database/query-router.js +430 -0
  215. package/dist/src/core/database/query-router.js.map +7 -0
  216. package/dist/src/core/database/sqlite-adapter.js +738 -0
  217. package/dist/src/core/database/sqlite-adapter.js.map +7 -0
  218. package/dist/src/core/digest/enhanced-hybrid-digest.js +277 -0
  219. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
  220. package/dist/src/core/digest/frame-digest-integration.js +176 -0
  221. package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
  222. package/dist/src/core/digest/hybrid-digest-generator.js +553 -0
  223. package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
  224. package/dist/src/core/digest/index.js +9 -0
  225. package/dist/src/core/digest/index.js.map +7 -0
  226. package/dist/src/core/digest/types.js +25 -0
  227. package/dist/src/core/digest/types.js.map +7 -0
  228. package/dist/src/core/errors/error-utils.js +208 -0
  229. package/dist/src/core/errors/error-utils.js.map +7 -0
  230. package/dist/src/core/errors/index.js +521 -0
  231. package/dist/src/core/errors/index.js.map +7 -0
  232. package/dist/src/core/errors/recovery.js +269 -0
  233. package/dist/src/core/errors/recovery.js.map +7 -0
  234. package/dist/src/core/execution/parallel-executor.js +258 -0
  235. package/dist/src/core/execution/parallel-executor.js.map +7 -0
  236. package/dist/src/core/frame/workflow-templates.js +319 -0
  237. package/dist/src/core/frame/workflow-templates.js.map +7 -0
  238. package/dist/src/core/merge/conflict-detector.js +431 -0
  239. package/dist/src/core/merge/conflict-detector.js.map +7 -0
  240. package/dist/src/core/merge/index.js +9 -0
  241. package/dist/src/core/merge/index.js.map +7 -0
  242. package/dist/src/core/merge/resolution-engine.js +558 -0
  243. package/dist/src/core/merge/resolution-engine.js.map +7 -0
  244. package/dist/src/core/merge/stack-diff.js +532 -0
  245. package/dist/src/core/merge/stack-diff.js.map +7 -0
  246. package/dist/src/core/merge/types.js +5 -0
  247. package/dist/src/core/merge/types.js.map +7 -0
  248. package/dist/src/core/merge/unified-merge-resolver.js +303 -0
  249. package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
  250. package/dist/src/core/models/fallback-monitor.js +232 -0
  251. package/dist/src/core/models/fallback-monitor.js.map +7 -0
  252. package/dist/src/core/models/model-router.js +340 -0
  253. package/dist/src/core/models/model-router.js.map +7 -0
  254. package/dist/src/core/monitoring/error-handler.js +49 -0
  255. package/dist/src/core/monitoring/error-handler.js.map +7 -0
  256. package/dist/src/core/monitoring/logger.js +202 -0
  257. package/dist/src/core/monitoring/logger.js.map +7 -0
  258. package/dist/src/core/monitoring/metrics.js +172 -0
  259. package/dist/src/core/monitoring/metrics.js.map +7 -0
  260. package/dist/src/core/monitoring/progress-tracker.js +189 -0
  261. package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
  262. package/dist/src/core/monitoring/session-monitor.js +300 -0
  263. package/dist/src/core/monitoring/session-monitor.js.map +7 -0
  264. package/dist/src/core/performance/context-cache.js +273 -0
  265. package/dist/src/core/performance/context-cache.js.map +7 -0
  266. package/dist/src/core/performance/index.js +11 -0
  267. package/dist/src/core/performance/index.js.map +7 -0
  268. package/dist/src/core/performance/lazy-context-loader.js +327 -0
  269. package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
  270. package/dist/src/core/performance/monitor.js +221 -0
  271. package/dist/src/core/performance/monitor.js.map +7 -0
  272. package/dist/src/core/performance/optimized-frame-context.js +345 -0
  273. package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
  274. package/dist/src/core/performance/performance-benchmark.js +277 -0
  275. package/dist/src/core/performance/performance-benchmark.js.map +7 -0
  276. package/dist/src/core/performance/performance-profiler.js +370 -0
  277. package/dist/src/core/performance/performance-profiler.js.map +7 -0
  278. package/dist/src/core/performance/streaming-jsonl-parser.js +195 -0
  279. package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
  280. package/dist/src/core/persistence/postgres-adapter.js +349 -0
  281. package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
  282. package/dist/src/core/projects/project-isolation.js +201 -0
  283. package/dist/src/core/projects/project-isolation.js.map +7 -0
  284. package/dist/src/core/projects/project-manager.js +697 -0
  285. package/dist/src/core/projects/project-manager.js.map +7 -0
  286. package/dist/src/core/query/query-parser.js +370 -0
  287. package/dist/src/core/query/query-parser.js.map +7 -0
  288. package/dist/src/core/query/query-templates.js +321 -0
  289. package/dist/src/core/query/query-templates.js.map +7 -0
  290. package/dist/src/core/retrieval/context-retriever.js +479 -0
  291. package/dist/src/core/retrieval/context-retriever.js.map +7 -0
  292. package/dist/src/core/retrieval/index.js +8 -0
  293. package/dist/src/core/retrieval/index.js.map +7 -0
  294. package/dist/src/core/retrieval/llm-context-retrieval.js +613 -0
  295. package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
  296. package/dist/src/core/retrieval/llm-provider.js +151 -0
  297. package/dist/src/core/retrieval/llm-provider.js.map +7 -0
  298. package/dist/src/core/retrieval/retrieval-audit.js +236 -0
  299. package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
  300. package/dist/src/core/retrieval/summary-generator.js +589 -0
  301. package/dist/src/core/retrieval/summary-generator.js.map +7 -0
  302. package/dist/src/core/retrieval/types.js +21 -0
  303. package/dist/src/core/retrieval/types.js.map +7 -0
  304. package/dist/src/core/security/index.js +35 -0
  305. package/dist/src/core/security/index.js.map +7 -0
  306. package/dist/src/core/security/input-sanitizer.js +321 -0
  307. package/dist/src/core/security/input-sanitizer.js.map +7 -0
  308. package/dist/src/core/session/clear-survival.js +465 -0
  309. package/dist/src/core/session/clear-survival.js.map +7 -0
  310. package/dist/src/core/session/enhanced-handoff.js +792 -0
  311. package/dist/src/core/session/enhanced-handoff.js.map +7 -0
  312. package/dist/src/core/session/handoff-generator.js +343 -0
  313. package/dist/src/core/session/handoff-generator.js.map +7 -0
  314. package/dist/src/core/session/index.js +15 -0
  315. package/dist/src/core/session/index.js.map +7 -0
  316. package/dist/src/core/session/session-manager.js +347 -0
  317. package/dist/src/core/session/session-manager.js.map +7 -0
  318. package/dist/src/core/skills/index.js +7 -0
  319. package/dist/src/core/skills/index.js.map +7 -0
  320. package/dist/src/core/skills/skill-storage.js +764 -0
  321. package/dist/src/core/skills/skill-storage.js.map +7 -0
  322. package/dist/src/core/skills/types.js +193 -0
  323. package/dist/src/core/skills/types.js.map +7 -0
  324. package/dist/src/core/storage/chromadb-adapter.js +354 -0
  325. package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
  326. package/dist/src/core/storage/infinite-storage.js +510 -0
  327. package/dist/src/core/storage/infinite-storage.js.map +7 -0
  328. package/dist/src/core/storage/remote-storage.js +489 -0
  329. package/dist/src/core/storage/remote-storage.js.map +7 -0
  330. package/dist/src/core/storage/two-tier-storage.js +766 -0
  331. package/dist/src/core/storage/two-tier-storage.js.map +7 -0
  332. package/dist/src/core/trace/cli-trace-wrapper.js +132 -0
  333. package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
  334. package/dist/src/core/trace/db-trace-wrapper.js +247 -0
  335. package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
  336. package/dist/src/core/trace/debug-trace.js +417 -0
  337. package/dist/src/core/trace/debug-trace.js.map +7 -0
  338. package/dist/src/core/trace/index.js +109 -0
  339. package/dist/src/core/trace/index.js.map +7 -0
  340. package/dist/src/core/trace/linear-api-wrapper.js +178 -0
  341. package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
  342. package/dist/src/core/trace/trace-detector.js +528 -0
  343. package/dist/src/core/trace/trace-detector.js.map +7 -0
  344. package/dist/src/core/trace/trace-store.js +345 -0
  345. package/dist/src/core/trace/trace-store.js.map +7 -0
  346. package/dist/src/core/trace/types.js +77 -0
  347. package/dist/src/core/trace/types.js.map +7 -0
  348. package/dist/src/core/types.js +5 -0
  349. package/dist/src/core/types.js.map +7 -0
  350. package/dist/src/core/utils/async-mutex.js +114 -0
  351. package/dist/src/core/utils/async-mutex.js.map +7 -0
  352. package/dist/src/core/utils/compression.js +83 -0
  353. package/dist/src/core/utils/compression.js.map +7 -0
  354. package/dist/src/core/utils/update-checker.js +218 -0
  355. package/dist/src/core/utils/update-checker.js.map +7 -0
  356. package/dist/src/core/worktree/worktree-manager.js +465 -0
  357. package/dist/src/core/worktree/worktree-manager.js.map +7 -0
  358. package/dist/src/daemon/daemon-config.js +149 -0
  359. package/dist/src/daemon/daemon-config.js.map +7 -0
  360. package/dist/src/daemon/services/context-service.js +122 -0
  361. package/dist/src/daemon/services/context-service.js.map +7 -0
  362. package/dist/src/daemon/services/linear-service.js +136 -0
  363. package/dist/src/daemon/services/linear-service.js.map +7 -0
  364. package/dist/src/daemon/session-daemon.js +312 -0
  365. package/dist/src/daemon/session-daemon.js.map +7 -0
  366. package/dist/src/daemon/unified-daemon.js +276 -0
  367. package/dist/src/daemon/unified-daemon.js.map +7 -0
  368. package/dist/src/features/analytics/api/analytics-api.js +287 -0
  369. package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
  370. package/dist/src/features/analytics/core/analytics-service.js +282 -0
  371. package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
  372. package/dist/src/features/analytics/index.js +18 -0
  373. package/dist/src/features/analytics/index.js.map +7 -0
  374. package/dist/src/features/analytics/queries/metrics-queries.js +277 -0
  375. package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
  376. package/dist/src/features/analytics/types/metrics.js +5 -0
  377. package/dist/src/features/analytics/types/metrics.js.map +7 -0
  378. package/dist/src/features/browser/browser-mcp.js +492 -0
  379. package/dist/src/features/browser/browser-mcp.js.map +7 -0
  380. package/dist/src/features/sweep/index.js +20 -0
  381. package/dist/src/features/sweep/index.js.map +7 -0
  382. package/dist/src/features/sweep/prediction-client.js +155 -0
  383. package/dist/src/features/sweep/prediction-client.js.map +7 -0
  384. package/dist/src/features/sweep/prompt-builder.js +85 -0
  385. package/dist/src/features/sweep/prompt-builder.js.map +7 -0
  386. package/dist/src/features/sweep/pty-wrapper.js +171 -0
  387. package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
  388. package/dist/src/features/sweep/state-watcher.js +87 -0
  389. package/dist/src/features/sweep/state-watcher.js.map +7 -0
  390. package/dist/src/features/sweep/status-bar.js +88 -0
  391. package/dist/src/features/sweep/status-bar.js.map +7 -0
  392. package/dist/src/features/sweep/sweep-server-manager.js +226 -0
  393. package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
  394. package/dist/src/features/sweep/tab-interceptor.js +38 -0
  395. package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
  396. package/dist/src/features/sweep/types.js +18 -0
  397. package/dist/src/features/sweep/types.js.map +7 -0
  398. package/dist/src/features/tasks/linear-task-manager.js +487 -0
  399. package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
  400. package/dist/src/features/tasks/task-aware-context.js +410 -0
  401. package/dist/src/features/tasks/task-aware-context.js.map +7 -0
  402. package/dist/src/features/tui/simple-monitor.js +116 -0
  403. package/dist/src/features/tui/simple-monitor.js.map +7 -0
  404. package/dist/src/features/tui/swarm-monitor.js +648 -0
  405. package/dist/src/features/tui/swarm-monitor.js.map +7 -0
  406. package/dist/src/features/web/client/stores/task-store.js +26 -0
  407. package/dist/src/features/web/client/stores/task-store.js.map +7 -0
  408. package/dist/src/features/web/server/index.js +194 -0
  409. package/dist/src/features/web/server/index.js.map +7 -0
  410. package/dist/src/hooks/auto-background.js +151 -0
  411. package/dist/src/hooks/auto-background.js.map +7 -0
  412. package/dist/src/hooks/claude-code-whatsapp-hook.js +197 -0
  413. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
  414. package/dist/src/hooks/config.js +150 -0
  415. package/dist/src/hooks/config.js.map +7 -0
  416. package/dist/src/hooks/daemon.js +364 -0
  417. package/dist/src/hooks/daemon.js.map +7 -0
  418. package/dist/src/hooks/events.js +58 -0
  419. package/dist/src/hooks/events.js.map +7 -0
  420. package/dist/src/hooks/index.js +12 -0
  421. package/dist/src/hooks/index.js.map +7 -0
  422. package/dist/src/hooks/linear-task-picker.js +186 -0
  423. package/dist/src/hooks/linear-task-picker.js.map +7 -0
  424. package/dist/src/hooks/schemas.js +197 -0
  425. package/dist/src/hooks/schemas.js.map +7 -0
  426. package/dist/src/hooks/secure-fs.js +49 -0
  427. package/dist/src/hooks/secure-fs.js.map +7 -0
  428. package/dist/src/hooks/security-logger.js +155 -0
  429. package/dist/src/hooks/security-logger.js.map +7 -0
  430. package/dist/src/hooks/session-summary.js +222 -0
  431. package/dist/src/hooks/session-summary.js.map +7 -0
  432. package/dist/src/hooks/sms-action-runner.js +371 -0
  433. package/dist/src/hooks/sms-action-runner.js.map +7 -0
  434. package/dist/src/hooks/sms-notify.js +506 -0
  435. package/dist/src/hooks/sms-notify.js.map +7 -0
  436. package/dist/src/hooks/sms-watcher.js +93 -0
  437. package/dist/src/hooks/sms-watcher.js.map +7 -0
  438. package/dist/src/hooks/sms-webhook.js +555 -0
  439. package/dist/src/hooks/sms-webhook.js.map +7 -0
  440. package/dist/src/hooks/whatsapp-commands.js +479 -0
  441. package/dist/src/hooks/whatsapp-commands.js.map +7 -0
  442. package/dist/src/hooks/whatsapp-scheduler.js +317 -0
  443. package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
  444. package/dist/src/hooks/whatsapp-sync.js +409 -0
  445. package/dist/src/hooks/whatsapp-sync.js.map +7 -0
  446. package/dist/src/index.js +25 -0
  447. package/dist/src/index.js.map +7 -0
  448. package/dist/src/integrations/anthropic/client.js +263 -0
  449. package/dist/src/integrations/anthropic/client.js.map +7 -0
  450. package/dist/src/integrations/claude-code/agent-bridge.js +768 -0
  451. package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
  452. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +459 -0
  453. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  454. package/dist/src/integrations/claude-code/lifecycle-hooks.js +254 -0
  455. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  456. package/dist/src/integrations/claude-code/post-task-hooks.js +545 -0
  457. package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
  458. package/dist/src/integrations/claude-code/subagent-client-stub.js +20 -0
  459. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
  460. package/dist/src/integrations/claude-code/subagent-client.js +511 -0
  461. package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
  462. package/dist/src/integrations/claude-code/task-coordinator.js +360 -0
  463. package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
  464. package/dist/src/integrations/linear/auth.js +337 -0
  465. package/dist/src/integrations/linear/auth.js.map +7 -0
  466. package/dist/src/integrations/linear/auto-sync.js +258 -0
  467. package/dist/src/integrations/linear/auto-sync.js.map +7 -0
  468. package/dist/src/integrations/linear/client.js +634 -0
  469. package/dist/src/integrations/linear/client.js.map +7 -0
  470. package/dist/src/integrations/linear/config.js +130 -0
  471. package/dist/src/integrations/linear/config.js.map +7 -0
  472. package/dist/src/integrations/linear/migration.js +361 -0
  473. package/dist/src/integrations/linear/migration.js.map +7 -0
  474. package/dist/src/integrations/linear/oauth-server.js +454 -0
  475. package/dist/src/integrations/linear/oauth-server.js.map +7 -0
  476. package/dist/src/integrations/linear/rest-client.js +213 -0
  477. package/dist/src/integrations/linear/rest-client.js.map +7 -0
  478. package/dist/src/integrations/linear/sync-manager.js +236 -0
  479. package/dist/src/integrations/linear/sync-manager.js.map +7 -0
  480. package/dist/src/integrations/linear/sync-service.js +231 -0
  481. package/dist/src/integrations/linear/sync-service.js.map +7 -0
  482. package/dist/src/integrations/linear/sync.js +782 -0
  483. package/dist/src/integrations/linear/sync.js.map +7 -0
  484. package/dist/src/integrations/linear/types.js +5 -0
  485. package/dist/src/integrations/linear/types.js.map +7 -0
  486. package/dist/src/integrations/linear/unified-sync.js +589 -0
  487. package/dist/src/integrations/linear/unified-sync.js.map +7 -0
  488. package/dist/src/integrations/linear/webhook-handler.js +219 -0
  489. package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
  490. package/dist/src/integrations/linear/webhook-server.js +218 -0
  491. package/dist/src/integrations/linear/webhook-server.js.map +7 -0
  492. package/dist/src/integrations/linear/webhook.js +291 -0
  493. package/dist/src/integrations/linear/webhook.js.map +7 -0
  494. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +266 -0
  495. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
  496. package/dist/src/integrations/mcp/handlers/context-handlers.js +257 -0
  497. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
  498. package/dist/src/integrations/mcp/handlers/discovery-handlers.js +497 -0
  499. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
  500. package/dist/src/integrations/mcp/handlers/index.js +166 -0
  501. package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
  502. package/dist/src/integrations/mcp/handlers/linear-handlers.js +247 -0
  503. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
  504. package/dist/src/integrations/mcp/handlers/skill-handlers.js +529 -0
  505. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  506. package/dist/src/integrations/mcp/handlers/task-handlers.js +239 -0
  507. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
  508. package/dist/src/integrations/mcp/handlers/trace-handlers.js +308 -0
  509. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
  510. package/dist/src/integrations/mcp/index.js +23 -0
  511. package/dist/src/integrations/mcp/index.js.map +7 -0
  512. package/dist/src/integrations/mcp/middleware/tool-scoring.js +356 -0
  513. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  514. package/dist/src/integrations/mcp/refactored-server.js +374 -0
  515. package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
  516. package/dist/src/integrations/mcp/remote-server.js +682 -0
  517. package/dist/src/integrations/mcp/remote-server.js.map +7 -0
  518. package/dist/src/integrations/mcp/schemas.js +147 -0
  519. package/dist/src/integrations/mcp/schemas.js.map +7 -0
  520. package/dist/src/integrations/mcp/server.js +1975 -0
  521. package/dist/src/integrations/mcp/server.js.map +7 -0
  522. package/dist/src/integrations/mcp/tool-definitions-code.js +125 -0
  523. package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
  524. package/dist/src/integrations/mcp/tool-definitions.js +702 -0
  525. package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
  526. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +860 -0
  527. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
  528. package/dist/src/integrations/ralph/context/context-budget-manager.js +301 -0
  529. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
  530. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +360 -0
  531. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
  532. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +410 -0
  533. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
  534. package/dist/src/integrations/ralph/index.js +18 -0
  535. package/dist/src/integrations/ralph/index.js.map +7 -0
  536. package/dist/src/integrations/ralph/learning/pattern-learner.js +401 -0
  537. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
  538. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +448 -0
  539. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
  540. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +294 -0
  541. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
  542. package/dist/src/integrations/ralph/monitoring/swarm-registry.js +108 -0
  543. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
  544. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +463 -0
  545. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
  546. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +400 -0
  547. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
  548. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +473 -0
  549. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
  550. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +388 -0
  551. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
  552. package/dist/src/integrations/ralph/performance/performance-optimizer.js +358 -0
  553. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
  554. package/dist/src/integrations/ralph/recovery/crash-recovery.js +462 -0
  555. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
  556. package/dist/src/integrations/ralph/state/state-reconciler.js +404 -0
  557. package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
  558. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +428 -0
  559. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
  560. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +996 -0
  561. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
  562. package/dist/src/integrations/ralph/types.js +5 -0
  563. package/dist/src/integrations/ralph/types.js.map +7 -0
  564. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +585 -0
  565. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
  566. package/dist/src/mcp/stackmemory-mcp-server.js +554 -0
  567. package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
  568. package/dist/src/middleware/exponential-rate-limiter.js +289 -0
  569. package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
  570. package/dist/src/models/user.model.js +358 -0
  571. package/dist/src/models/user.model.js.map +7 -0
  572. package/dist/src/servers/production/auth-middleware.js +528 -0
  573. package/dist/src/servers/production/auth-middleware.js.map +7 -0
  574. package/dist/src/services/config-service.js +65 -0
  575. package/dist/src/services/config-service.js.map +7 -0
  576. package/dist/src/services/context-service.js +194 -0
  577. package/dist/src/services/context-service.js.map +7 -0
  578. package/dist/src/skills/api-discovery.js +354 -0
  579. package/dist/src/skills/api-discovery.js.map +7 -0
  580. package/dist/src/skills/api-skill.js +475 -0
  581. package/dist/src/skills/api-skill.js.map +7 -0
  582. package/dist/src/skills/claude-skills.js +1061 -0
  583. package/dist/src/skills/claude-skills.js.map +7 -0
  584. package/dist/src/skills/dashboard-launcher.js +216 -0
  585. package/dist/src/skills/dashboard-launcher.js.map +7 -0
  586. package/dist/src/skills/recursive-agent-orchestrator.js +575 -0
  587. package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
  588. package/dist/src/skills/repo-ingestion-skill.js +609 -0
  589. package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
  590. package/dist/src/skills/unified-rlm-orchestrator.js +404 -0
  591. package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
  592. package/dist/src/types/task.js +5 -0
  593. package/dist/src/types/task.js.map +7 -0
  594. package/dist/src/utils/env.js +50 -0
  595. package/dist/src/utils/env.js.map +7 -0
  596. package/dist/src/utils/formatting.js +62 -0
  597. package/dist/src/utils/formatting.js.map +7 -0
  598. package/dist/src/utils/process-cleanup.js +136 -0
  599. package/dist/src/utils/process-cleanup.js.map +7 -0
  600. package/package.json +4 -3
  601. package/scripts/create-cleanup-issues.js +302 -0
  602. package/scripts/demos/browser-test.ts +39 -0
  603. package/scripts/demos/ralph-integration-demo.ts +244 -0
  604. package/scripts/demos/trace-demo.ts +214 -0
  605. package/scripts/demos/trace-detector.demo.ts +171 -0
  606. package/scripts/demos/trace-test.ts +67 -0
  607. package/scripts/initialize.ts +16 -7
  608. package/scripts/install.sh +14 -62
  609. package/scripts/status.ts +111 -46
  610. package/scripts/test-claude-config.sh +123 -0
  611. package/scripts/validate-claude-config.sh +155 -0
@@ -83,19 +83,28 @@ if (!existsSync(jsonlPath)) {
83
83
  }
84
84
 
85
85
  // 5. Create MCP config for Claude Code
86
- const mcpConfigPath = join(
87
- process.env['HOME'] || '~',
88
- '.config',
89
- 'claude',
90
- 'mcp.json'
91
- );
86
+ const isMacOS = process.platform === 'darwin';
87
+ const mcpConfigPath = isMacOS
88
+ ? join(
89
+ process.env['HOME'] || '~',
90
+ 'Library',
91
+ 'Application Support',
92
+ 'Claude',
93
+ 'claude_desktop_config.json'
94
+ )
95
+ : join(
96
+ process.env['HOME'] || '~',
97
+ '.config',
98
+ 'claude',
99
+ 'claude_desktop_config.json'
100
+ );
92
101
  console.log(chalk.blue('\n📝 MCP Configuration for Claude Code:\n'));
93
102
 
94
103
  const mcpConfig = {
95
104
  mcpServers: {
96
105
  stackmemory: {
97
106
  command: 'node',
98
- args: [join(projectRoot, 'dist', 'mcp-server.js')],
107
+ args: [join(projectRoot, 'dist', 'integrations', 'mcp', 'server.js')],
99
108
  env: {
100
109
  PROJECT_ROOT: projectRoot,
101
110
  },
@@ -43,10 +43,12 @@ mkdir -p "$INSTALL_DIR"
43
43
 
44
44
  # Copy all necessary files
45
45
  cp -r "$CURRENT_DIR/src" "$INSTALL_DIR/" 2>/dev/null || true
46
- cp -r "$CURRENT_DIR/attention-scoring" "$INSTALL_DIR/" 2>/dev/null || true
46
+ cp -r "$CURRENT_DIR/scripts" "$INSTALL_DIR/" 2>/dev/null || true
47
+ cp -r "$CURRENT_DIR/attention-scoring" "$INSTALL_DIR/" 2>/dev/null || true
47
48
  cp -r "$CURRENT_DIR/p2p-sync" "$INSTALL_DIR/" 2>/dev/null || true
48
49
  cp "$CURRENT_DIR/package.json" "$INSTALL_DIR/"
49
50
  cp "$CURRENT_DIR/tsconfig.json" "$INSTALL_DIR/"
51
+ cp "$CURRENT_DIR/esbuild.config.js" "$INSTALL_DIR/"
50
52
 
51
53
  # 2. Install dependencies
52
54
  echo -e "${GREEN}[2/5]${NC} Installing dependencies..."
@@ -90,7 +92,7 @@ for CONFIG_DIR in "$MCP_CONFIG_DIR" "$ALT_MCP_DIR"; do
90
92
 
91
93
  config.mcpServers.stackmemory = {
92
94
  command: 'node',
93
- args: ['$INSTALL_DIR/dist/src/mcp-server.js'],
95
+ args: ['$INSTALL_DIR/dist/integrations/mcp/server.js'],
94
96
  env: {
95
97
  STACKMEMORY_GLOBAL: 'true'
96
98
  }
@@ -106,7 +108,7 @@ for CONFIG_DIR in "$MCP_CONFIG_DIR" "$ALT_MCP_DIR"; do
106
108
  "mcpServers": {
107
109
  "stackmemory": {
108
110
  "command": "node",
109
- "args": ["$INSTALL_DIR/dist/src/mcp-server.js"],
111
+ "args": ["$INSTALL_DIR/dist/integrations/mcp/server.js"],
110
112
  "env": {
111
113
  "STACKMEMORY_GLOBAL": "true"
112
114
  }
@@ -124,75 +126,25 @@ echo -e "${GREEN}[5/5]${NC} Creating global command..."
124
126
  # Create bin directory if it doesn't exist
125
127
  mkdir -p "$HOME/.local/bin"
126
128
 
127
- # Create the global stackmemory command
129
+ # Create the global stackmemory command - delegates to the real CLI
128
130
  cat > "$HOME/.local/bin/stackmemory" << 'EOF'
129
131
  #!/usr/bin/env node
130
132
 
131
133
  const { spawn } = require('child_process');
132
134
  const path = require('path');
133
- const fs = require('fs');
134
135
  const os = require('os');
135
136
 
136
137
  const installDir = path.join(os.homedir(), '.stackmemory');
137
- const mcpServer = path.join(installDir, 'dist', 'src', 'mcp-server.js');
138
-
139
- // Check if we're in a git repo
140
- function isGitRepo() {
141
- try {
142
- require('child_process').execSync('git rev-parse --git-dir', { stdio: 'ignore' });
143
- return true;
144
- } catch (e) {
145
- return false;
146
- }
147
- }
138
+ const cliPath = path.join(installDir, 'dist', 'cli', 'index.js');
148
139
 
149
- // Auto-initialize if in git repo
150
- if (isGitRepo() && !fs.existsSync('.stackmemory')) {
151
- console.log('🎯 Initializing StackMemory in this repository...');
152
-
153
- fs.mkdirSync('.stackmemory', { recursive: true });
154
-
155
- const config = {
156
- projectId: path.basename(process.cwd()),
157
- userId: process.env.USER || 'default',
158
- initialized: new Date().toISOString()
159
- };
160
-
161
- fs.writeFileSync('.stackmemory/config.json', JSON.stringify(config, null, 2));
162
- fs.writeFileSync('.stackmemory/frames.jsonl', '');
163
-
164
- // Add to .gitignore
165
- if (fs.existsSync('.gitignore')) {
166
- const gitignore = fs.readFileSync('.gitignore', 'utf8');
167
- if (!gitignore.includes('.stackmemory')) {
168
- fs.appendFileSync('.gitignore', '\n# StackMemory\n.stackmemory/*.db\n.stackmemory/*.db-*\n');
169
- }
170
- }
171
-
172
- console.log('✅ StackMemory initialized!');
173
- }
140
+ // Pass all arguments to the real CLI
141
+ const args = process.argv.slice(2);
142
+ const child = spawn('node', [cliPath, ...args], {
143
+ env: { ...process.env, PROJECT_ROOT: process.cwd() },
144
+ stdio: 'inherit'
145
+ });
174
146
 
175
- // Handle commands
176
- const command = process.argv[2];
177
-
178
- switch(command) {
179
- case 'init':
180
- // Already handled above
181
- break;
182
- case 'status':
183
- require(path.join(installDir, 'dist', 'scripts', 'status.js'));
184
- break;
185
- case 'test':
186
- require(path.join(installDir, 'dist', 'test', 'test-framework.js'));
187
- break;
188
- default:
189
- // Start MCP server
190
- const child = spawn('node', [mcpServer], {
191
- env: { ...process.env, PROJECT_ROOT: process.cwd() },
192
- stdio: 'inherit'
193
- });
194
- child.on('exit', code => process.exit(code));
195
- }
147
+ child.on('exit', code => process.exit(code || 0));
196
148
  EOF
197
149
 
198
150
  chmod +x "$HOME/.local/bin/stackmemory"
package/scripts/status.ts CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import Database from 'better-sqlite3';
7
- import { existsSync } from 'fs';
7
+ import { existsSync, readFileSync } from 'fs';
8
8
  import { join } from 'path';
9
9
  import chalk from 'chalk';
10
10
 
@@ -20,7 +20,8 @@ interface ContextRow {
20
20
  }
21
21
 
22
22
  interface FrameRow {
23
- task: string;
23
+ name: string;
24
+ type: string;
24
25
  started: string;
25
26
  }
26
27
 
@@ -30,18 +31,46 @@ interface AttentionRow {
30
31
  }
31
32
 
32
33
  const projectRoot = process.cwd();
33
- const dbPath = join(projectRoot, '.stackmemory', 'context.db');
34
+ const stackDir = join(projectRoot, '.stackmemory');
35
+ const dbPath = join(stackDir, 'context.db');
36
+ const configPath = join(stackDir, 'config.json');
37
+
38
+ // Check if .stackmemory directory exists
39
+ console.log(chalk.blue.bold('\n[StackMemory Status]\n'));
34
40
 
41
+ if (!existsSync(stackDir)) {
42
+ console.log(chalk.red('[X] .stackmemory directory not found'));
43
+ console.log(chalk.gray(' Run: stackmemory init'));
44
+ process.exit(1);
45
+ }
46
+ console.log(chalk.green('[OK] .stackmemory directory exists'));
47
+
48
+ // Show config.json contents
49
+ if (existsSync(configPath)) {
50
+ try {
51
+ const config = JSON.parse(readFileSync(configPath, 'utf-8'));
52
+ console.log(chalk.green('[OK] config.json found'));
53
+ console.log(chalk.gray(` version: ${config.version || 'unknown'}`));
54
+ console.log(chalk.gray(` project: ${config.project || 'unknown'}`));
55
+ console.log(
56
+ chalk.gray(` initialized: ${config.initialized || 'unknown'}`)
57
+ );
58
+ } catch {
59
+ console.log(chalk.yellow('[!] config.json exists but failed to parse'));
60
+ }
61
+ } else {
62
+ console.log(chalk.yellow('[!] config.json not found'));
63
+ }
64
+
65
+ // Check database
35
66
  if (!existsSync(dbPath)) {
36
- console.log(chalk.red(' StackMemory not initialized in this project'));
37
- console.log(chalk.gray('Run: npm run init'));
67
+ console.log(chalk.red('[X] context.db not found'));
38
68
  process.exit(1);
39
69
  }
70
+ console.log(chalk.green('[OK] context.db exists'));
40
71
 
41
72
  const db = new Database(dbPath, { readonly: true });
42
73
 
43
- console.log(chalk.blue.bold('\n📊 StackMemory Status\n'));
44
-
45
74
  // Get statistics
46
75
  const stats = {
47
76
  contexts: db
@@ -55,43 +84,45 @@ const stats = {
55
84
  .get() as CountResult,
56
85
  };
57
86
 
58
- console.log(chalk.green('Database:') + ` ${dbPath}`);
59
- console.log(chalk.green('Contexts:') + ` ${stats.contexts.count}`);
60
- console.log(chalk.green('Frames:') + ` ${stats.frames.count}`);
61
- console.log(chalk.green('Attention logs:') + ` ${stats.attention.count}`);
87
+ console.log(chalk.cyan('\n[Database Stats]'));
88
+ console.log(` Contexts: ${stats.contexts.count}`);
89
+ console.log(` Frames: ${stats.frames.count}`);
90
+ console.log(` Attention logs: ${stats.attention.count}`);
62
91
 
63
92
  // Get top contexts by importance
64
- console.log(chalk.blue('\n🎯 Top Contexts by Importance:\n'));
65
-
66
- const topContexts = db
67
- .prepare(
68
- `
69
- SELECT type, substr(content, 1, 60) as preview, importance, access_count
70
- FROM contexts
71
- ORDER BY importance DESC, access_count DESC
72
- LIMIT 5
73
- `
74
- )
75
- .all() as ContextRow[];
93
+ if (stats.contexts.count > 0) {
94
+ console.log(chalk.cyan('\n[Top Contexts by Importance]'));
95
+
96
+ const topContexts = db
97
+ .prepare(
98
+ `
99
+ SELECT type, substr(content, 1, 60) as preview, importance, access_count
100
+ FROM contexts
101
+ ORDER BY importance DESC, access_count DESC
102
+ LIMIT 5
103
+ `
104
+ )
105
+ .all() as ContextRow[];
76
106
 
77
- topContexts.forEach((ctx, i) => {
78
- const importance = ''.repeat(Math.round(ctx.importance * 5));
79
- console.log(
80
- chalk.cyan(`${i + 1}.`) +
81
- ` [${ctx.type}] ` +
82
- chalk.gray(`(${ctx.access_count} uses)`) +
83
- ` ${importance}`
84
- );
85
- console.log(chalk.gray(` ${ctx.preview}...`));
86
- });
107
+ topContexts.forEach((ctx, i) => {
108
+ const importance = '*'.repeat(Math.round(ctx.importance * 5));
109
+ console.log(
110
+ chalk.white(` ${i + 1}.`) +
111
+ ` [${ctx.type}] ` +
112
+ chalk.gray(`(${ctx.access_count} uses)`) +
113
+ ` ${importance}`
114
+ );
115
+ console.log(chalk.gray(` ${ctx.preview}...`));
116
+ });
117
+ }
87
118
 
88
- // Get active frames
119
+ // Get active frames (using correct schema: name, type, state)
89
120
  const activeFrames = db
90
121
  .prepare(
91
122
  `
92
- SELECT task, datetime(created_at, 'unixepoch') as started
123
+ SELECT name, type, datetime(created_at, 'unixepoch') as started
93
124
  FROM frames
94
- WHERE status = 'active'
125
+ WHERE state = 'active'
95
126
  ORDER BY created_at DESC
96
127
  LIMIT 3
97
128
  `
@@ -99,10 +130,10 @@ const activeFrames = db
99
130
  .all() as FrameRow[];
100
131
 
101
132
  if (activeFrames.length > 0) {
102
- console.log(chalk.blue('\n🔄 Active Tasks:\n'));
133
+ console.log(chalk.cyan('\n[Active Frames]'));
103
134
  activeFrames.forEach((frame) => {
104
- console.log(chalk.green('') + ` ${frame.task}`);
105
- console.log(chalk.gray(` Started: ${frame.started}`));
135
+ console.log(chalk.green(' *') + ` ${frame.name} (${frame.type})`);
136
+ console.log(chalk.gray(` Started: ${frame.started}`));
106
137
  });
107
138
  }
108
139
 
@@ -110,7 +141,7 @@ if (activeFrames.length > 0) {
110
141
  const recentAttention = db
111
142
  .prepare(
112
143
  `
113
- SELECT
144
+ SELECT
114
145
  substr(query, 1, 50) as query_preview,
115
146
  COUNT(*) as count
116
147
  FROM attention_log
@@ -123,10 +154,10 @@ const recentAttention = db
123
154
  .all() as AttentionRow[];
124
155
 
125
156
  if (recentAttention.length > 0) {
126
- console.log(chalk.blue('\n👁️ Recent Query Patterns:\n'));
157
+ console.log(chalk.cyan('\n[Recent Query Patterns]'));
127
158
  recentAttention.forEach((pattern) => {
128
159
  console.log(
129
- chalk.yellow('?') + ` "${pattern.query_preview}..." (${pattern.count}x)`
160
+ chalk.yellow(' ?') + ` "${pattern.query_preview}..." (${pattern.count}x)`
130
161
  );
131
162
  });
132
163
  }
@@ -145,15 +176,49 @@ const oldContexts = db
145
176
  if (oldContexts.count > 0) {
146
177
  console.log(
147
178
  chalk.yellow(
148
- `\n⚠️ ${oldContexts.count} contexts haven't been accessed in 7+ days`
179
+ `\n[!] ${oldContexts.count} contexts haven't been accessed in 7+ days`
149
180
  )
150
181
  );
151
182
  }
152
183
 
184
+ // Check MCP configuration
185
+ console.log(chalk.cyan('\n[MCP Configuration]'));
186
+ const mcpConfigPaths = [
187
+ join(
188
+ process.env.HOME || '',
189
+ 'Library/Application Support/Claude/claude_desktop_config.json'
190
+ ),
191
+ join(process.env.HOME || '', '.config/claude/claude_desktop_config.json'),
192
+ ];
193
+
194
+ let mcpFound = false;
195
+ for (const mcpPath of mcpConfigPaths) {
196
+ if (existsSync(mcpPath)) {
197
+ try {
198
+ const mcpConfig = JSON.parse(readFileSync(mcpPath, 'utf-8'));
199
+ const hasStackMemory =
200
+ mcpConfig.mcpServers?.stackmemory ||
201
+ mcpConfig.mcpServers?.['stackmemory-mcp'];
202
+ if (hasStackMemory) {
203
+ console.log(chalk.green(' [OK] MCP server configured'));
204
+ mcpFound = true;
205
+ } else {
206
+ console.log(
207
+ chalk.yellow(' [!] MCP config exists but stackmemory not configured')
208
+ );
209
+ }
210
+ } catch {
211
+ console.log(chalk.yellow(` [!] Failed to parse ${mcpPath}`));
212
+ }
213
+ break;
214
+ }
215
+ }
216
+ if (!mcpFound) {
217
+ console.log(chalk.gray(' [--] No MCP configuration found'));
218
+ }
219
+
153
220
  console.log(
154
- chalk.gray(
155
- '\n💡 Tip: Run "npm run analyze" for detailed attention analysis\n'
156
- )
221
+ chalk.gray('\nTip: Run "npm run analyze" for detailed attention analysis\n')
157
222
  );
158
223
 
159
224
  db.close();
@@ -0,0 +1,123 @@
1
+ #!/bin/bash
2
+ # Test CLAUDE.md format effectiveness
3
+ # Compares compact vs verbose configurations
4
+
5
+ set -e
6
+
7
+ CLAUDE_DIR="$HOME/.claude"
8
+ VERBOSE_FILE="$CLAUDE_DIR/CLAUDE.md"
9
+ COMPACT_FILE="$CLAUDE_DIR/CLAUDE.compact.md"
10
+ BACKUP_FILE="$CLAUDE_DIR/CLAUDE.backup.md"
11
+ RESULTS_DIR="/tmp/claude-config-test-$(date +%Y%m%d-%H%M%S)"
12
+
13
+ mkdir -p "$RESULTS_DIR"
14
+
15
+ echo "=== CLAUDE.md A/B Test ==="
16
+ echo "Results: $RESULTS_DIR"
17
+ echo ""
18
+
19
+ # Test prompts that exercise CLAUDE.md rules
20
+ declare -a TEST_PROMPTS=(
21
+ "What's your communication style preference?"
22
+ "I want to add a feature. Should you ask clarifying questions or just start coding?"
23
+ "Write a function to hash a password"
24
+ "What should you do before editing a file?"
25
+ "How do you handle ESM imports in TypeScript?"
26
+ )
27
+
28
+ # Token counts
29
+ VERBOSE_TOKENS=$(cat "$VERBOSE_FILE" 2>/dev/null | wc -c | awk '{print int($1/3.5)}')
30
+ COMPACT_TOKENS=$(cat "$COMPACT_FILE" 2>/dev/null | wc -c | awk '{print int($1/3.5)}')
31
+
32
+ echo "Token comparison:"
33
+ echo " Verbose: ~$VERBOSE_TOKENS tokens"
34
+ echo " Compact: ~$COMPACT_TOKENS tokens"
35
+ echo " Savings: ~$((VERBOSE_TOKENS - COMPACT_TOKENS)) tokens ($(( (VERBOSE_TOKENS - COMPACT_TOKENS) * 100 / VERBOSE_TOKENS ))%)"
36
+ echo ""
37
+
38
+ # Backup current config
39
+ cp "$VERBOSE_FILE" "$BACKUP_FILE"
40
+
41
+ run_test() {
42
+ local config_name=$1
43
+ local config_file=$2
44
+ local output_dir="$RESULTS_DIR/$config_name"
45
+ mkdir -p "$output_dir"
46
+
47
+ echo "Testing with $config_name config..."
48
+
49
+ # Swap config
50
+ cp "$config_file" "$VERBOSE_FILE"
51
+
52
+ local i=0
53
+ for prompt in "${TEST_PROMPTS[@]}"; do
54
+ i=$((i + 1))
55
+ echo " Prompt $i: ${prompt:0:40}..."
56
+
57
+ # Run claude with prompt, capture output
58
+ # Using --print flag for non-interactive mode
59
+ claude --print "$prompt" > "$output_dir/prompt_$i.txt" 2>&1 || true
60
+
61
+ # Brief pause to avoid rate limiting
62
+ sleep 1
63
+ done
64
+
65
+ echo " Done. Outputs in $output_dir/"
66
+ }
67
+
68
+ # Test verbose config
69
+ if [ -f "$VERBOSE_FILE" ]; then
70
+ # Save original verbose as .verbose for testing
71
+ cp "$VERBOSE_FILE" "$CLAUDE_DIR/CLAUDE.verbose.md"
72
+ run_test "verbose" "$CLAUDE_DIR/CLAUDE.verbose.md"
73
+ fi
74
+
75
+ # Test compact config
76
+ if [ -f "$COMPACT_FILE" ]; then
77
+ run_test "compact" "$COMPACT_FILE"
78
+ fi
79
+
80
+ # Restore original config
81
+ cp "$BACKUP_FILE" "$VERBOSE_FILE"
82
+ rm -f "$BACKUP_FILE"
83
+
84
+ echo ""
85
+ echo "=== Analysis ==="
86
+
87
+ # Compare output lengths (proxy for verbosity)
88
+ echo "Output lengths (chars):"
89
+ echo " Verbose config:"
90
+ for f in "$RESULTS_DIR/verbose"/prompt_*.txt; do
91
+ [ -f "$f" ] && echo " $(basename $f): $(wc -c < "$f")"
92
+ done
93
+
94
+ echo " Compact config:"
95
+ for f in "$RESULTS_DIR/compact"/prompt_*.txt; do
96
+ [ -f "$f" ] && echo " $(basename $f): $(wc -c < "$f")"
97
+ done
98
+
99
+ # Check for key behaviors
100
+ echo ""
101
+ echo "Behavior checks:"
102
+
103
+ check_behavior() {
104
+ local name=$1
105
+ local pattern=$2
106
+ local verbose_match=$(grep -l "$pattern" "$RESULTS_DIR/verbose"/*.txt 2>/dev/null | wc -l)
107
+ local compact_match=$(grep -l "$pattern" "$RESULTS_DIR/compact"/*.txt 2>/dev/null | wc -l)
108
+ echo " $name: verbose=$verbose_match compact=$compact_match"
109
+ }
110
+
111
+ check_behavior "Concise style" "concise\|brief\|short"
112
+ check_behavior "Security mention" "security\|validate\|hash"
113
+ check_behavior "ESM/extension" "\.js\|extension\|ESM"
114
+ check_behavior "Read before edit" "read\|before\|first"
115
+
116
+ echo ""
117
+ echo "=== Summary ==="
118
+ echo "Config files preserved. Review outputs in:"
119
+ echo " $RESULTS_DIR/verbose/"
120
+ echo " $RESULTS_DIR/compact/"
121
+ echo ""
122
+ echo "To manually compare:"
123
+ echo " diff $RESULTS_DIR/verbose/prompt_1.txt $RESULTS_DIR/compact/prompt_1.txt"
@@ -0,0 +1,155 @@
1
+ #!/bin/bash
2
+ # Validate CLAUDE.md configurations - token counts and coverage
3
+ set -e
4
+
5
+ CLAUDE_DIR="$HOME/.claude"
6
+ AGENT_DOCS="$CLAUDE_DIR/agent_docs"
7
+
8
+ echo "=== CLAUDE.md Config Validation ==="
9
+ echo ""
10
+
11
+ # Token estimation function
12
+ count_tokens() {
13
+ local file=$1
14
+ if [ -f "$file" ]; then
15
+ local chars=$(wc -c < "$file")
16
+ echo $((chars / 4)) # ~4 chars per token estimate
17
+ else
18
+ echo "0"
19
+ fi
20
+ }
21
+
22
+ # 1. Token Comparison
23
+ echo "## Token Counts"
24
+ echo ""
25
+ printf "%-40s %8s %8s\n" "File" "Lines" "~Tokens"
26
+ printf "%-40s %8s %8s\n" "----" "-----" "-------"
27
+
28
+ total_verbose=0
29
+ total_compact=0
30
+
31
+ for file in "$CLAUDE_DIR"/*.md; do
32
+ [ -f "$file" ] || continue
33
+ name=$(basename "$file")
34
+ lines=$(wc -l < "$file" | tr -d ' ')
35
+ tokens=$(count_tokens "$file")
36
+ printf "%-40s %8s %8s\n" "$name" "$lines" "$tokens"
37
+
38
+ if [[ "$name" == *".compact.md" ]]; then
39
+ total_compact=$((total_compact + tokens))
40
+ else
41
+ total_verbose=$((total_verbose + tokens))
42
+ fi
43
+ done
44
+
45
+ echo ""
46
+
47
+ # 2. Agent Docs Comparison
48
+ echo "## Agent Docs"
49
+ echo ""
50
+ printf "%-40s %8s %8s\n" "File" "Lines" "~Tokens"
51
+ printf "%-40s %8s %8s\n" "----" "-----" "-------"
52
+
53
+ verbose_docs=0
54
+ compact_docs=0
55
+
56
+ for file in "$AGENT_DOCS"/*.md; do
57
+ [ -f "$file" ] || continue
58
+ name=$(basename "$file")
59
+ lines=$(wc -l < "$file" | tr -d ' ')
60
+ tokens=$(count_tokens "$file")
61
+ printf "%-40s %8s %8s\n" "$name" "$lines" "$tokens"
62
+
63
+ if [[ "$name" == *".compact.md" ]]; then
64
+ compact_docs=$((compact_docs + tokens))
65
+ else
66
+ verbose_docs=$((verbose_docs + tokens))
67
+ fi
68
+ done
69
+
70
+ echo ""
71
+
72
+ # 3. Summary
73
+ echo "## Summary"
74
+ echo ""
75
+ echo "Main configs:"
76
+ echo " Verbose total: ~$total_verbose tokens"
77
+ echo " Compact total: ~$total_compact tokens"
78
+ if [ $total_verbose -gt 0 ]; then
79
+ savings=$((100 - (total_compact * 100 / total_verbose)))
80
+ echo " Savings: ${savings}%"
81
+ fi
82
+
83
+ echo ""
84
+ echo "Agent docs:"
85
+ echo " Verbose total: ~$verbose_docs tokens"
86
+ echo " Compact total: ~$compact_docs tokens"
87
+ if [ $verbose_docs -gt 0 ]; then
88
+ savings=$((100 - (compact_docs * 100 / verbose_docs)))
89
+ echo " Savings: ${savings}%"
90
+ fi
91
+
92
+ echo ""
93
+
94
+ # 4. Reference Validation
95
+ echo "## Reference Validation"
96
+ echo ""
97
+
98
+ # Check CLAUDE.md references
99
+ if [ -f "$CLAUDE_DIR/CLAUDE.md" ]; then
100
+ echo "Checking CLAUDE.md references..."
101
+ refs=$(grep -oE '[A-Z_]+\.compact\.md' "$CLAUDE_DIR/CLAUDE.md" 2>/dev/null || true)
102
+
103
+ missing=0
104
+ for ref in $refs; do
105
+ if [ -f "$AGENT_DOCS/$ref" ]; then
106
+ echo " [OK] $ref"
107
+ else
108
+ echo " [MISSING] $ref"
109
+ missing=$((missing + 1))
110
+ fi
111
+ done
112
+
113
+ if [ $missing -eq 0 ] && [ -n "$refs" ]; then
114
+ echo " All references valid"
115
+ elif [ -z "$refs" ]; then
116
+ echo " No compact doc references found"
117
+ else
118
+ echo " WARNING: $missing missing references"
119
+ fi
120
+ else
121
+ echo " CLAUDE.md not found"
122
+ fi
123
+
124
+ echo ""
125
+
126
+ # 5. Key Rules Coverage
127
+ echo "## Key Rules Coverage"
128
+ echo ""
129
+
130
+ check_rule() {
131
+ local name=$1
132
+ local pattern=$2
133
+ local file=$3
134
+
135
+ if grep -qiE "$pattern" "$file" 2>/dev/null; then
136
+ echo " [OK] $name"
137
+ else
138
+ echo " [MISSING] $name"
139
+ fi
140
+ }
141
+
142
+ echo "CLAUDE.md rules:"
143
+ if [ -f "$CLAUDE_DIR/CLAUDE.md" ]; then
144
+ check_rule "Security/secrets" "secret|credential|api.?key" "$CLAUDE_DIR/CLAUDE.md"
145
+ check_rule "ESM imports" "\.js|ESM|extension" "$CLAUDE_DIR/CLAUDE.md"
146
+ check_rule "Validation" "lint|test|build" "$CLAUDE_DIR/CLAUDE.md"
147
+ check_rule "Git workflow" "commit|branch|push" "$CLAUDE_DIR/CLAUDE.md"
148
+ check_rule "Error handling" "error|throw|undefined" "$CLAUDE_DIR/CLAUDE.md"
149
+ check_rule "Thinking modes" "think|ultra" "$CLAUDE_DIR/CLAUDE.md"
150
+ check_rule "Coverage" "coverage|untested" "$CLAUDE_DIR/CLAUDE.md"
151
+ check_rule "Branch naming" "feature/|fix/|chore/" "$CLAUDE_DIR/CLAUDE.md"
152
+ fi
153
+
154
+ echo ""
155
+ echo "=== Validation Complete ==="