@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
@@ -0,0 +1,244 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Ralph-StackMemory Integration Demonstration
4
+ * Shows how the integration works with a working example
5
+ */
6
+
7
+ import { RalphStackMemoryBridge } from './bridge/ralph-stackmemory-bridge.js';
8
+ import { logger } from '../../core/monitoring/logger.js';
9
+ import { RalphStackMemoryConfig } from './types.js';
10
+
11
+ class RalphIntegrationDemo {
12
+ private bridge: RalphStackMemoryBridge;
13
+
14
+ constructor() {
15
+ // Configure the bridge for demo
16
+ const config: Partial<RalphStackMemoryConfig> = {
17
+ contextBudget: {
18
+ maxTokens: 2000, // Smaller budget for demo
19
+ compressionEnabled: true,
20
+ adaptiveBudgeting: true,
21
+ },
22
+ performance: {
23
+ asyncSaves: true,
24
+ batchSize: 5,
25
+ compressionLevel: 1,
26
+ cacheEnabled: true,
27
+ },
28
+ lifecycle: {
29
+ checkpoints: {
30
+ enabled: true,
31
+ frequency: 3, // Checkpoint every 3 iterations
32
+ retentionDays: 1, // Short retention for demo
33
+ },
34
+ },
35
+ };
36
+
37
+ this.bridge = new RalphStackMemoryBridge({
38
+ config,
39
+ debug: true,
40
+ });
41
+ }
42
+
43
+ /**
44
+ * Run the integration demo
45
+ */
46
+ async run(): Promise<void> {
47
+ console.log('\n🤖 Ralph-StackMemory Integration Demo\n');
48
+
49
+ try {
50
+ // Phase 1: Initialize
51
+ await this.demonstrateInitialization();
52
+
53
+ // Phase 2: Run iterations
54
+ await this.demonstrateIterations();
55
+
56
+ // Phase 3: Show recovery
57
+ await this.demonstrateRecovery();
58
+
59
+ // Phase 4: Show metrics
60
+ await this.demonstrateMetrics();
61
+
62
+ console.log('\n✅ Demo completed successfully!\n');
63
+ } catch (error: any) {
64
+ console.error('\n❌ Demo failed:', error.message);
65
+ throw error;
66
+ } finally {
67
+ await this.cleanup();
68
+ }
69
+ }
70
+
71
+ /**
72
+ * Demonstrate initialization
73
+ */
74
+ private async demonstrateInitialization(): Promise<void> {
75
+ console.log('📋 Phase 1: Initialization');
76
+ console.log('==========================');
77
+
78
+ // Initialize the bridge
79
+ await this.bridge.initialize();
80
+
81
+ // Create a new loop
82
+ const task = 'Implement user authentication system with JWT';
83
+ const criteria = [
84
+ '- User registration endpoint working',
85
+ '- Login endpoint returns JWT token',
86
+ '- Protected routes validate JWT',
87
+ '- Password hashing implemented',
88
+ '- Tests pass with >80% coverage',
89
+ ].join('\n');
90
+
91
+ const loopState = await this.bridge.createNewLoop(task, criteria);
92
+
93
+ console.log(`✓ Created Ralph loop: ${loopState.loopId}`);
94
+ console.log(`✓ Task: ${task.substring(0, 50)}...`);
95
+ console.log(`✓ Status: ${loopState.status}`);
96
+ console.log(`✓ Iteration: ${loopState.iteration}`);
97
+ console.log();
98
+ }
99
+
100
+ /**
101
+ * Demonstrate iterations with context management
102
+ */
103
+ private async demonstrateIterations(): Promise<void> {
104
+ console.log('🔄 Phase 2: Iteration Management');
105
+ console.log('=================================');
106
+
107
+ const maxIterations = 5;
108
+
109
+ for (let i = 0; i < maxIterations; i++) {
110
+ console.log(`\n--- Iteration ${i + 1} ---`);
111
+
112
+ // Run worker iteration
113
+ console.log('🔧 Running worker iteration...');
114
+ const iteration = await this.bridge.runWorkerIteration();
115
+
116
+ console.log(
117
+ `✓ Analysis: ${iteration.analysis.filesCount} files, tests ${iteration.analysis.testsPass ? 'pass' : 'fail'}`
118
+ );
119
+ console.log(`✓ Plan: ${iteration.plan.summary}`);
120
+ console.log(`✓ Changes: ${iteration.changes.length} modifications`);
121
+ console.log(
122
+ `✓ Validation: ${iteration.validation.testsPass ? 'pass' : 'fail'}`
123
+ );
124
+
125
+ // Run reviewer iteration
126
+ console.log('👀 Running reviewer iteration...');
127
+ const review = await this.bridge.runReviewerIteration();
128
+
129
+ if (review.complete) {
130
+ console.log('🎉 Task completed!');
131
+ break;
132
+ } else {
133
+ console.log(`📝 Feedback: ${review.feedback?.substring(0, 100)}...`);
134
+ }
135
+
136
+ // Show context budget usage
137
+ const usage = this.bridge.getPerformanceMetrics();
138
+ console.log(
139
+ `📊 Token usage: ${usage.tokenCount} / Context load: ${usage.contextLoadTime}ms`
140
+ );
141
+
142
+ // Create checkpoint every few iterations
143
+ if ((i + 1) % 3 === 0) {
144
+ console.log('💾 Creating checkpoint...');
145
+ const checkpoint = await this.bridge.createCheckpoint();
146
+ console.log(`✓ Checkpoint: ${checkpoint.id}`);
147
+ }
148
+
149
+ // Small delay for demo
150
+ await new Promise((resolve) => setTimeout(resolve, 1000));
151
+ }
152
+ }
153
+
154
+ /**
155
+ * Demonstrate crash recovery
156
+ */
157
+ private async demonstrateRecovery(): Promise<void> {
158
+ console.log('\n🚑 Phase 3: Crash Recovery');
159
+ console.log('===========================');
160
+
161
+ // Simulate getting session ID
162
+ const sessionId = 'demo-session-123';
163
+
164
+ try {
165
+ console.log('🔄 Simulating session rehydration...');
166
+
167
+ // This would normally rehydrate from a real StackMemory session
168
+ // For demo, we'll show the concept
169
+ console.log('✓ Loading context from StackMemory...');
170
+ console.log('✓ Reconciling state from git, files, and memory...');
171
+ console.log('✓ Applying context budget constraints...');
172
+ console.log('✓ Resuming from last iteration...');
173
+
174
+ // Show recovery metrics
175
+ console.log('📈 Recovery successful!');
176
+ console.log(' - Context loaded: 2.1s');
177
+ console.log(' - State reconciled: 0.3s');
178
+ console.log(' - Memory usage: 45MB');
179
+ console.log(' - Cache hit rate: 78%');
180
+ } catch (error: any) {
181
+ console.log(`⚠️ Recovery simulation: ${error.message}`);
182
+ }
183
+ }
184
+
185
+ /**
186
+ * Demonstrate performance metrics
187
+ */
188
+ private async demonstrateMetrics(): Promise<void> {
189
+ console.log('\n📊 Phase 4: Performance Metrics');
190
+ console.log('================================');
191
+
192
+ const metrics = this.bridge.getPerformanceMetrics();
193
+
194
+ console.log('Performance Summary:');
195
+ console.log(` Iteration Time: ${metrics.iterationTime}ms avg`);
196
+ console.log(` Context Load Time: ${metrics.contextLoadTime}ms avg`);
197
+ console.log(` State Save Time: ${metrics.stateSaveTime}ms avg`);
198
+ console.log(
199
+ ` Memory Usage: ${Math.round(metrics.memoryUsage / 1024 / 1024)}MB`
200
+ );
201
+ console.log(` Token Count: ${metrics.tokenCount}`);
202
+ console.log(` Cache Hit Rate: ${Math.round(metrics.cacheHitRate * 100)}%`);
203
+
204
+ console.log('\nOptimization Features:');
205
+ console.log(' ✓ Async frame saves with batching');
206
+ console.log(' ✓ Context compression and budget management');
207
+ console.log(' ✓ State reconciliation with conflict resolution');
208
+ console.log(' ✓ Lifecycle hooks for clean integration');
209
+ console.log(' ✓ Checkpoint-based recovery');
210
+ }
211
+
212
+ /**
213
+ * Cleanup resources
214
+ */
215
+ private async cleanup(): Promise<void> {
216
+ console.log('\n🧹 Cleaning up...');
217
+ await this.bridge.cleanup();
218
+ console.log('✓ Resources cleaned up');
219
+ }
220
+ }
221
+
222
+ /**
223
+ * CLI interface
224
+ */
225
+ async function main() {
226
+ const demo = new RalphIntegrationDemo();
227
+
228
+ try {
229
+ await demo.run();
230
+ } catch (error: any) {
231
+ console.error('Demo failed:', error.message);
232
+ if (process.env.DEBUG) {
233
+ console.error(error.stack);
234
+ }
235
+ process.exit(1);
236
+ }
237
+ }
238
+
239
+ // Run if called directly
240
+ if (import.meta.url === `file://${process.argv[1]}`) {
241
+ main().catch(console.error);
242
+ }
243
+
244
+ export { RalphIntegrationDemo };
@@ -0,0 +1,214 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Trace Demo - Shows how the debug tracing works
4
+ * Run with: DEBUG_TRACE=true npx tsx src/core/trace/trace-demo.ts
5
+ */
6
+
7
+ import {
8
+ trace,
9
+ Trace,
10
+ TraceClass,
11
+ enableVerboseTracing,
12
+ createTracedDatabase,
13
+ traceStep,
14
+ } from './index.js';
15
+ import { logger } from '../monitoring/logger.js';
16
+ // Type-safe environment variable access
17
+ function getEnv(key: string, defaultValue?: string): string {
18
+ const value = process.env[key];
19
+ if (value === undefined) {
20
+ if (defaultValue !== undefined) return defaultValue;
21
+ throw new Error(`Environment variable ${key} is required`);
22
+ }
23
+ return value;
24
+ }
25
+
26
+ function getOptionalEnv(key: string): string | undefined {
27
+ return process.env[key];
28
+ }
29
+
30
+ // Example class with tracing
31
+ // @TraceClass() - decorators not enabled in tsconfig
32
+ class ExampleService {
33
+ private data: Map<string, any> = new Map();
34
+
35
+ async fetchData(id: string): Promise<any> {
36
+ // Simulate API call
37
+ await this.delay(50);
38
+
39
+ if (id === 'error') {
40
+ throw new Error('Simulated API error');
41
+ }
42
+
43
+ return { id, value: Math.random() };
44
+ }
45
+
46
+ async processData(data: any): Promise<any> {
47
+ return traceStep('Data validation', async () => {
48
+ await this.delay(20);
49
+
50
+ if (!data.id) {
51
+ throw new Error('Invalid data: missing ID');
52
+ }
53
+
54
+ return traceStep('Data transformation', async () => {
55
+ await this.delay(30);
56
+ return {
57
+ ...data,
58
+ processed: true,
59
+ timestamp: Date.now(),
60
+ };
61
+ });
62
+ });
63
+ }
64
+
65
+ cacheData(key: string, value: any): void {
66
+ trace.traceSync('function', 'cacheData', { key, value }, () => {
67
+ this.data.set(key, value);
68
+ });
69
+ }
70
+
71
+ private delay(ms: number): Promise<void> {
72
+ return new Promise((resolve) => setTimeout(resolve, ms));
73
+ }
74
+ }
75
+
76
+ // Example with database operations
77
+ async function databaseExample() {
78
+ return trace.step('Database operations example', async () => {
79
+ const db = createTracedDatabase(':memory:');
80
+
81
+ // Create table
82
+ db.exec(`
83
+ CREATE TABLE users (
84
+ id INTEGER PRIMARY KEY,
85
+ name TEXT NOT NULL,
86
+ email TEXT UNIQUE,
87
+ created_at INTEGER DEFAULT (strftime('%s', 'now'))
88
+ )
89
+ `);
90
+
91
+ // Insert data
92
+ const insert = db.prepare('INSERT INTO users (name, email) VALUES (?, ?)');
93
+ insert.run('Alice', 'alice@example.com');
94
+ insert.run('Bob', 'bob@example.com');
95
+
96
+ // Query data
97
+ const select = db.prepare('SELECT * FROM users WHERE name = ?');
98
+ const user = select.get('Alice');
99
+
100
+ // Complex query (will trigger slow query warning if threshold is low)
101
+ const complex = db.prepare(`
102
+ SELECT
103
+ name,
104
+ COUNT(*) as count,
105
+ MAX(created_at) as latest
106
+ FROM users
107
+ GROUP BY name
108
+ HAVING COUNT(*) > 0
109
+ `);
110
+ const results = complex.all();
111
+
112
+ db.close();
113
+
114
+ return { user, results };
115
+ });
116
+ }
117
+
118
+ // Main demo function
119
+ async function runDemo() {
120
+ console.log('\n' + '='.repeat(80));
121
+ console.log('STACKMEMORY DEBUG TRACE DEMO');
122
+ console.log('='.repeat(80) + '\n');
123
+
124
+ // Enable verbose tracing for the demo
125
+ if (process.env['DEBUG_TRACE'] !== 'true') {
126
+ console.log('Enabling verbose tracing for this demo...\n');
127
+ enableVerboseTracing();
128
+ }
129
+
130
+ try {
131
+ // Example 1: Service operations
132
+ await trace.command('demo:service', { example: 'service' }, async () => {
133
+ const service = new ExampleService();
134
+
135
+ console.log('\n--- Example 1: Service Operations ---\n');
136
+
137
+ // Successful operation
138
+ const data = await service.fetchData('test-1');
139
+ const processed = await service.processData(data);
140
+ service.cacheData('test-1', processed);
141
+
142
+ console.log('Service operation completed\n');
143
+ });
144
+
145
+ // Example 2: Database operations
146
+ await trace.command('demo:database', { example: 'database' }, async () => {
147
+ console.log('\n--- Example 2: Database Operations ---\n');
148
+
149
+ const results = await databaseExample();
150
+
151
+ console.log('Database operations completed');
152
+ console.log(' Found user:', results.user);
153
+ console.log(' Query results:', results.results);
154
+ });
155
+
156
+ // Example 3: Error handling
157
+ await trace.command('demo:errors', { example: 'errors' }, async () => {
158
+ console.log('\n--- Example 3: Error Handling ---\n');
159
+
160
+ const service = new ExampleService();
161
+
162
+ try {
163
+ await service.fetchData('error');
164
+ } catch (error: unknown) {
165
+ console.log('Error properly traced and handled\n');
166
+ }
167
+ });
168
+
169
+ // Example 4: Performance tracking
170
+ await trace.command(
171
+ 'demo:performance',
172
+ { example: 'performance' },
173
+ async () => {
174
+ console.log('\n--- Example 4: Performance Tracking ---\n');
175
+
176
+ // Simulate slow operation
177
+ await trace.step('Slow operation', async () => {
178
+ await new Promise((resolve) => setTimeout(resolve, 150));
179
+ });
180
+
181
+ // Simulate fast operations
182
+ for (let i = 0; i < 3; i++) {
183
+ await trace.step(`Fast operation ${i + 1}`, async () => {
184
+ await new Promise((resolve) => setTimeout(resolve, 10));
185
+ });
186
+ }
187
+
188
+ console.log('Performance tracking completed\n');
189
+ }
190
+ );
191
+ } catch (error: unknown) {
192
+ console.error('Demo failed:', error);
193
+ }
194
+
195
+ // Show execution summary
196
+ console.log('\n' + trace.getExecutionSummary());
197
+
198
+ // Export traces for analysis
199
+ const traces = trace.exportTraces();
200
+ console.log(`\nTotal traces collected: ${traces.length}`);
201
+
202
+ // Show example trace entry
203
+ if (traces.length > 0) {
204
+ console.log('\nExample trace entry:');
205
+ console.log(JSON.stringify(traces[0], null, 2));
206
+ }
207
+ }
208
+
209
+ // Run the demo
210
+ if (import.meta.url === `file://${process.argv[1]}`) {
211
+ runDemo().catch(console.error);
212
+ }
213
+
214
+ export { runDemo };
@@ -0,0 +1,171 @@
1
+ /**
2
+ * Demo script to showcase Trace Detection functionality
3
+ */
4
+
5
+ import { TraceDetector } from './trace-detector.js';
6
+ import { ToolCall } from './types.js';
7
+ import { v4 as uuidv4 } from 'uuid';
8
+
9
+ // Create a new trace detector
10
+ const detector = new TraceDetector();
11
+
12
+ console.log('Trace Detection Demo\n');
13
+ console.log('='.repeat(50));
14
+
15
+ // Simulate a search-driven modification trace
16
+ console.log('\n📋 Simulating Search-Driven Modification:');
17
+ const baseTime = Date.now();
18
+
19
+ const searchDrivenTools: ToolCall[] = [
20
+ {
21
+ id: uuidv4(),
22
+ tool: 'search',
23
+ timestamp: baseTime,
24
+ arguments: { query: 'authentication bug' },
25
+ },
26
+ {
27
+ id: uuidv4(),
28
+ tool: 'grep',
29
+ timestamp: baseTime + 1000,
30
+ arguments: { pattern: 'auth.*error' },
31
+ },
32
+ {
33
+ id: uuidv4(),
34
+ tool: 'read',
35
+ timestamp: baseTime + 2000,
36
+ filesAffected: ['/src/auth/login.ts'],
37
+ },
38
+ {
39
+ id: uuidv4(),
40
+ tool: 'edit',
41
+ timestamp: baseTime + 3000,
42
+ filesAffected: ['/src/auth/login.ts'],
43
+ },
44
+ ];
45
+
46
+ searchDrivenTools.forEach((tool) => {
47
+ detector.addToolCall(tool);
48
+ console.log(` Added: ${tool.tool}`);
49
+ });
50
+
51
+ // Simulate an error recovery trace (separate due to time gap)
52
+ console.log('\nSimulating Error Recovery:');
53
+ const errorTime = baseTime + 40000; // 40 seconds later
54
+
55
+ const errorRecoveryTools: ToolCall[] = [
56
+ {
57
+ id: uuidv4(),
58
+ tool: 'bash',
59
+ timestamp: errorTime,
60
+ arguments: { command: 'npm test' },
61
+ error: 'Test failed: TypeError',
62
+ },
63
+ {
64
+ id: uuidv4(),
65
+ tool: 'edit',
66
+ timestamp: errorTime + 1000,
67
+ filesAffected: ['/src/utils/validator.ts'],
68
+ },
69
+ {
70
+ id: uuidv4(),
71
+ tool: 'bash',
72
+ timestamp: errorTime + 2000,
73
+ arguments: { command: 'npm test' },
74
+ result: 'All tests passing',
75
+ },
76
+ ];
77
+
78
+ errorRecoveryTools.forEach((tool) => {
79
+ detector.addToolCall(tool);
80
+ console.log(` Added: ${tool.tool}${tool.error ? ' (with error)' : ''}`);
81
+ });
82
+
83
+ // Simulate a feature implementation trace
84
+ console.log('\n✨ Simulating Feature Implementation:');
85
+ const featureTime = baseTime + 80000; // 80 seconds later
86
+
87
+ const featureTools: ToolCall[] = [
88
+ {
89
+ id: uuidv4(),
90
+ tool: 'write',
91
+ timestamp: featureTime,
92
+ filesAffected: ['/src/components/Dashboard.tsx'],
93
+ },
94
+ {
95
+ id: uuidv4(),
96
+ tool: 'edit',
97
+ timestamp: featureTime + 1000,
98
+ filesAffected: ['/src/components/Dashboard.tsx'],
99
+ },
100
+ {
101
+ id: uuidv4(),
102
+ tool: 'test',
103
+ timestamp: featureTime + 2000,
104
+ arguments: { file: 'Dashboard.test.tsx' },
105
+ },
106
+ ];
107
+
108
+ featureTools.forEach((tool) => {
109
+ detector.addToolCall(tool);
110
+ console.log(` Added: ${tool.tool}`);
111
+ });
112
+
113
+ // Flush any pending traces
114
+ detector.flush();
115
+
116
+ // Get statistics
117
+ console.log('\nTrace Statistics:');
118
+ console.log('='.repeat(50));
119
+ const stats = detector.getStatistics();
120
+ console.log(`Total Traces: ${stats.totalTraces}`);
121
+ console.log(`Average Score: ${stats.averageScore.toFixed(2)}`);
122
+ console.log(`Average Length: ${stats.averageLength.toFixed(1)} tools`);
123
+ console.log(`High Importance (>0.7): ${stats.highImportanceCount}`);
124
+
125
+ console.log('\nTrace Types:');
126
+ Object.entries(stats.tracesByType).forEach(([type, count]) => {
127
+ console.log(` ${type}: ${count}`);
128
+ });
129
+
130
+ // Display all traces
131
+ console.log('\nDetected Traces:');
132
+ console.log('='.repeat(50));
133
+ const traces = detector.getTraces();
134
+ traces.forEach((trace, index) => {
135
+ console.log(`\nTrace ${index + 1}:`);
136
+ console.log(` Type: ${trace.type}`);
137
+ console.log(` Score: ${trace.score.toFixed(2)}`);
138
+ console.log(` Tools: ${trace.tools.map((t) => t.tool).join(' → ')}`);
139
+ console.log(` Summary: ${trace.summary}`);
140
+ console.log(
141
+ ` Duration: ${((trace.metadata.endTime - trace.metadata.startTime) / 1000).toFixed(1)}s`
142
+ );
143
+
144
+ if (trace.metadata.filesModified.length > 0) {
145
+ console.log(` Files Modified: ${trace.metadata.filesModified.join(', ')}`);
146
+ }
147
+
148
+ if (trace.metadata.errorsEncountered.length > 0) {
149
+ console.log(` Errors: ${trace.metadata.errorsEncountered.join(', ')}`);
150
+ }
151
+
152
+ if (trace.metadata.causalChain) {
153
+ console.log(` ✓ Causal Chain Detected (error→fix→verify)`);
154
+ }
155
+ });
156
+
157
+ // Test high-importance trace filtering
158
+ console.log('\n⭐ High Importance Traces (score > 0.3):');
159
+ const highImportance = detector.getHighImportanceTraces(0.3);
160
+ highImportance.forEach((trace) => {
161
+ console.log(
162
+ ` [${trace.type}] Score: ${trace.score.toFixed(2)} - ${trace.summary}`
163
+ );
164
+ });
165
+
166
+ // Export traces as JSON
167
+ console.log('\n💾 Exporting traces to JSON...');
168
+ const exported = detector.exportTraces();
169
+ console.log(`Exported ${exported.length} characters of JSON data`);
170
+
171
+ console.log('\nDemo complete!');
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Test the trace detection integration with MCP server
3
+ */
4
+
5
+ import LocalStackMemoryMCP from './server';
6
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
+
8
+ async function testTraceIntegration() {
9
+ console.log('🧪 Testing Trace Detection in MCP Server\n');
10
+
11
+ // Mock minimal server setup
12
+ const mockServer = {
13
+ setRequestHandler: () => {},
14
+ connect: () => Promise.resolve(),
15
+ } as any;
16
+
17
+ // Access the private methods through prototype
18
+ const MCPClass = LocalStackMemoryMCP as any;
19
+ const mcp = new MCPClass();
20
+
21
+ // Simulate tool calls directly on the trace detector
22
+ console.log('📋 Simulating tool calls:');
23
+
24
+ // Simulate a search-driven trace
25
+ const baseTime = Date.now();
26
+ mcp.traceDetector.addToolCall({
27
+ id: '1',
28
+ tool: 'get_context',
29
+ timestamp: baseTime,
30
+ arguments: { query: 'authentication' },
31
+ });
32
+ console.log(' ✓ Added get_context');
33
+
34
+ mcp.traceDetector.addToolCall({
35
+ id: '2',
36
+ tool: 'add_decision',
37
+ timestamp: baseTime + 1000,
38
+ arguments: { content: 'Use JWT tokens', type: 'decision' },
39
+ });
40
+ console.log(' ✓ Added add_decision');
41
+
42
+ mcp.traceDetector.addToolCall({
43
+ id: '3',
44
+ tool: 'start_frame',
45
+ timestamp: baseTime + 2000,
46
+ arguments: { name: 'implement-auth' },
47
+ });
48
+ console.log(' ✓ Added start_frame');
49
+
50
+ // Flush traces
51
+ mcp.traceDetector.flush();
52
+
53
+ // Get statistics
54
+ const stats = await mcp.handleGetTraceStatistics({});
55
+ console.log('\n📊 Trace Statistics:');
56
+ console.log(stats.content[0].text);
57
+
58
+ // Get traces
59
+ const traces = await mcp.handleGetTraces({ limit: 10 });
60
+ console.log('\n📝 Detected Traces:');
61
+ console.log(traces.content[0].text);
62
+
63
+ console.log('\n✅ MCP Trace Integration Test Complete!');
64
+ }
65
+
66
+ // Run the test
67
+ testTraceIntegration().catch(console.error);