@stackmemoryai/stackmemory 0.5.58 → 0.5.61

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 (932) hide show
  1. package/README.md +105 -1
  2. package/dist/scripts/benchmark-performance.js +48 -0
  3. package/dist/scripts/benchmark-performance.js.map +7 -0
  4. package/dist/scripts/check-redis.js +42 -0
  5. package/dist/scripts/check-redis.js.map +7 -0
  6. package/dist/scripts/initialize.js +116 -0
  7. package/dist/scripts/initialize.js.map +7 -0
  8. package/dist/scripts/list-linear-tasks.js +124 -0
  9. package/dist/scripts/list-linear-tasks.js.map +7 -0
  10. package/dist/scripts/measure-handoff-impact.js +340 -0
  11. package/dist/scripts/measure-handoff-impact.js.map +7 -0
  12. package/dist/scripts/query-chromadb.js +160 -0
  13. package/dist/scripts/query-chromadb.js.map +7 -0
  14. package/dist/scripts/show-linear-summary.js +119 -0
  15. package/dist/scripts/show-linear-summary.js.map +7 -0
  16. package/dist/scripts/simple-swarm-demo.js +90 -0
  17. package/dist/scripts/simple-swarm-demo.js.map +7 -0
  18. package/dist/scripts/status.js +155 -0
  19. package/dist/scripts/status.js.map +7 -0
  20. package/dist/scripts/test-chromadb-sync.js +192 -0
  21. package/dist/scripts/test-chromadb-sync.js.map +7 -0
  22. package/dist/scripts/test-ralph-iteration-fix.js +86 -0
  23. package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
  24. package/dist/scripts/test-ralph-iterations.js +121 -0
  25. package/dist/scripts/test-ralph-iterations.js.map +7 -0
  26. package/dist/scripts/test-redis-storage.js +389 -0
  27. package/dist/scripts/test-redis-storage.js.map +7 -0
  28. package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
  29. package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
  30. package/dist/scripts/test-swarm-fixes.js +125 -0
  31. package/dist/scripts/test-swarm-fixes.js.map +7 -0
  32. package/dist/scripts/test-swarm-tui.js +23 -0
  33. package/dist/scripts/test-swarm-tui.js.map +7 -0
  34. package/dist/scripts/test-tui-shortcuts.js +52 -0
  35. package/dist/scripts/test-tui-shortcuts.js.map +7 -0
  36. package/dist/scripts/validate-tui-shortcuts.js +60 -0
  37. package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
  38. package/dist/src/agents/core/agent-task-manager.js.map +7 -0
  39. package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
  40. package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
  41. package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
  42. package/dist/src/cli/auto-detect.js.map +7 -0
  43. package/dist/src/cli/claude-sm-danger.js.map +7 -0
  44. package/dist/src/cli/claude-sm.js +1236 -0
  45. package/dist/src/cli/claude-sm.js.map +7 -0
  46. package/dist/src/cli/codex-sm-danger.js.map +7 -0
  47. package/dist/src/cli/codex-sm.js.map +7 -0
  48. package/dist/src/cli/commands/api.js.map +7 -0
  49. package/dist/src/cli/commands/auto-background.js.map +7 -0
  50. package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
  51. package/dist/src/cli/commands/clear.js.map +7 -0
  52. package/dist/src/cli/commands/config.js.map +7 -0
  53. package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
  54. package/dist/src/cli/commands/context.js.map +7 -0
  55. package/dist/src/cli/commands/daemon.js.map +7 -0
  56. package/dist/src/cli/commands/dashboard.js.map +7 -0
  57. package/dist/src/cli/commands/db.js.map +7 -0
  58. package/dist/src/cli/commands/decision.js.map +7 -0
  59. package/dist/src/cli/commands/discovery.js.map +7 -0
  60. package/dist/src/cli/commands/handoff.js.map +7 -0
  61. package/dist/src/cli/commands/hooks.js.map +7 -0
  62. package/dist/src/cli/commands/linear.js.map +7 -0
  63. package/dist/src/cli/commands/log.js.map +7 -0
  64. package/dist/src/cli/commands/login.js.map +7 -0
  65. package/dist/src/cli/commands/migrate.js.map +7 -0
  66. package/dist/src/cli/commands/model.js.map +7 -0
  67. package/dist/src/cli/commands/onboard.js.map +7 -0
  68. package/dist/src/cli/commands/projects.js.map +7 -0
  69. package/dist/src/cli/commands/ralph.js.map +7 -0
  70. package/dist/src/cli/commands/retrieval.js.map +7 -0
  71. package/dist/src/cli/commands/search.js +173 -0
  72. package/dist/src/cli/commands/search.js.map +7 -0
  73. package/dist/src/cli/commands/service.js.map +7 -0
  74. package/dist/src/cli/commands/session.js.map +7 -0
  75. package/dist/src/cli/commands/settings.js.map +7 -0
  76. package/dist/src/cli/commands/setup.js.map +7 -0
  77. package/dist/src/cli/commands/shell.js.map +7 -0
  78. package/dist/src/cli/commands/signup.js.map +7 -0
  79. package/dist/src/cli/commands/skills.js.map +7 -0
  80. package/dist/src/cli/commands/sms-notify.js.map +7 -0
  81. package/dist/src/cli/commands/storage-tier.js.map +7 -0
  82. package/dist/src/cli/commands/sweep.js.map +7 -0
  83. package/dist/src/cli/commands/tasks.js.map +7 -0
  84. package/dist/src/cli/commands/worktree.js.map +7 -0
  85. package/dist/src/cli/index.js +609 -0
  86. package/dist/src/cli/index.js.map +7 -0
  87. package/dist/src/cli/opencode-sm.js.map +7 -0
  88. package/dist/src/cli/utils/viewer.js.map +7 -0
  89. package/dist/src/core/config/config-manager.js.map +7 -0
  90. package/dist/src/core/config/feature-flags.js.map +7 -0
  91. package/dist/src/core/config/storage-config.js.map +7 -0
  92. package/dist/src/core/config/types.js.map +7 -0
  93. package/dist/src/core/context/auto-context.js.map +7 -0
  94. package/dist/src/core/context/dual-stack-manager.js.map +7 -0
  95. package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
  96. package/dist/src/core/context/frame-database.js.map +7 -0
  97. package/dist/src/core/context/frame-digest.js.map +7 -0
  98. package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
  99. package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
  100. package/dist/src/core/context/frame-recovery.js.map +7 -0
  101. package/dist/src/core/context/frame-stack.js.map +7 -0
  102. package/dist/src/core/context/index.js.map +7 -0
  103. package/dist/src/core/context/permission-manager.js.map +7 -0
  104. package/dist/src/core/context/recursive-context-manager.js.map +7 -0
  105. package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
  106. package/dist/src/core/context/shared-context-layer.js.map +7 -0
  107. package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
  108. package/dist/src/core/context/validation.js.map +7 -0
  109. package/dist/src/core/database/batch-operations.js.map +7 -0
  110. package/dist/src/core/database/connection-pool.js.map +7 -0
  111. package/dist/src/core/database/database-adapter.js.map +7 -0
  112. package/dist/src/core/database/migration-manager.js.map +7 -0
  113. package/dist/src/core/database/query-cache.js.map +7 -0
  114. package/dist/src/core/database/query-router.js.map +7 -0
  115. package/dist/src/core/database/sqlite-adapter.js +738 -0
  116. package/dist/src/core/database/sqlite-adapter.js.map +7 -0
  117. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
  118. package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
  119. package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
  120. package/dist/src/core/digest/index.js.map +7 -0
  121. package/dist/src/core/digest/types.js.map +7 -0
  122. package/dist/src/core/errors/error-utils.js +208 -0
  123. package/dist/src/core/errors/error-utils.js.map +7 -0
  124. package/dist/src/core/errors/index.js +521 -0
  125. package/dist/src/core/errors/index.js.map +7 -0
  126. package/dist/src/core/errors/recovery.js.map +7 -0
  127. package/dist/src/core/execution/parallel-executor.js.map +7 -0
  128. package/dist/src/core/extensions/custom-tools.js +567 -0
  129. package/dist/src/core/extensions/custom-tools.js.map +7 -0
  130. package/dist/src/core/extensions/index.js +55 -0
  131. package/dist/src/core/extensions/index.js.map +7 -0
  132. package/dist/src/core/extensions/loader.js +709 -0
  133. package/dist/src/core/extensions/loader.js.map +7 -0
  134. package/dist/src/core/extensions/plugin-system.js +506 -0
  135. package/dist/src/core/extensions/plugin-system.js.map +7 -0
  136. package/dist/src/core/extensions/provider-adapter.js +617 -0
  137. package/dist/src/core/extensions/provider-adapter.js.map +7 -0
  138. package/dist/src/core/extensions/sandbox-runtime.js +664 -0
  139. package/dist/src/core/extensions/sandbox-runtime.js.map +7 -0
  140. package/dist/src/core/frame/workflow-templates.js.map +7 -0
  141. package/dist/src/core/merge/conflict-detector.js.map +7 -0
  142. package/dist/src/core/merge/index.js.map +7 -0
  143. package/dist/src/core/merge/resolution-engine.js.map +7 -0
  144. package/dist/src/core/merge/stack-diff.js.map +7 -0
  145. package/dist/src/core/merge/unified-merge-resolver.js +303 -0
  146. package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
  147. package/dist/src/core/models/fallback-monitor.js.map +7 -0
  148. package/dist/src/core/models/model-router.js.map +7 -0
  149. package/dist/src/core/monitoring/error-handler.js.map +7 -0
  150. package/dist/src/core/monitoring/logger.js +202 -0
  151. package/dist/src/core/monitoring/logger.js.map +7 -0
  152. package/dist/src/core/monitoring/metrics.js.map +7 -0
  153. package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
  154. package/dist/src/core/monitoring/session-monitor.js.map +7 -0
  155. package/dist/src/core/performance/context-cache.js.map +7 -0
  156. package/dist/src/core/performance/index.js.map +7 -0
  157. package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
  158. package/dist/src/core/performance/monitor.js.map +7 -0
  159. package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
  160. package/dist/src/core/performance/performance-benchmark.js.map +7 -0
  161. package/dist/src/core/performance/performance-profiler.js.map +7 -0
  162. package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
  163. package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
  164. package/dist/src/core/projects/project-isolation.js.map +7 -0
  165. package/dist/src/core/projects/project-manager.js.map +7 -0
  166. package/dist/src/core/query/query-parser.js.map +7 -0
  167. package/dist/src/core/query/query-templates.js.map +7 -0
  168. package/dist/src/core/retrieval/context-retriever.js.map +7 -0
  169. package/dist/src/core/retrieval/index.js.map +7 -0
  170. package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
  171. package/dist/src/core/retrieval/llm-provider.js.map +7 -0
  172. package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
  173. package/dist/src/core/retrieval/summary-generator.js.map +7 -0
  174. package/dist/src/core/retrieval/types.js.map +7 -0
  175. package/dist/src/core/security/index.js +35 -0
  176. package/dist/src/core/security/index.js.map +7 -0
  177. package/dist/src/core/security/input-sanitizer.js +321 -0
  178. package/dist/src/core/security/input-sanitizer.js.map +7 -0
  179. package/dist/src/core/session/clear-survival.js.map +7 -0
  180. package/dist/src/core/session/enhanced-handoff.js.map +7 -0
  181. package/dist/src/core/session/handoff-generator.js.map +7 -0
  182. package/dist/src/core/session/index.js.map +7 -0
  183. package/dist/src/core/session/session-manager.js.map +7 -0
  184. package/dist/src/core/skills/index.js.map +7 -0
  185. package/dist/src/core/skills/skill-storage.js.map +7 -0
  186. package/dist/src/core/skills/types.js.map +7 -0
  187. package/dist/src/core/storage/chromadb-adapter.js +380 -0
  188. package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
  189. package/dist/src/core/storage/infinite-storage.js.map +7 -0
  190. package/dist/src/core/storage/remote-storage.js.map +7 -0
  191. package/dist/src/core/storage/two-tier-storage.js.map +7 -0
  192. package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
  193. package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
  194. package/dist/src/core/trace/debug-trace.js.map +7 -0
  195. package/dist/src/core/trace/index.js.map +7 -0
  196. package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
  197. package/dist/src/core/trace/trace-detector.js.map +7 -0
  198. package/dist/src/core/trace/trace-store.js.map +7 -0
  199. package/dist/src/core/trace/types.js.map +7 -0
  200. package/dist/src/core/utils/async-mutex.js.map +7 -0
  201. package/dist/src/core/utils/compression.js.map +7 -0
  202. package/dist/src/core/utils/update-checker.js.map +7 -0
  203. package/dist/src/core/worktree/worktree-manager.js.map +7 -0
  204. package/dist/src/daemon/daemon-config.js.map +7 -0
  205. package/dist/src/daemon/services/context-service.js.map +7 -0
  206. package/dist/src/daemon/services/linear-service.js.map +7 -0
  207. package/dist/src/daemon/session-daemon.js.map +7 -0
  208. package/dist/src/daemon/unified-daemon.js.map +7 -0
  209. package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
  210. package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
  211. package/dist/src/features/analytics/index.js.map +7 -0
  212. package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
  213. package/dist/src/features/browser/browser-mcp.js.map +7 -0
  214. package/dist/src/features/sweep/index.js.map +7 -0
  215. package/dist/src/features/sweep/prediction-client.js.map +7 -0
  216. package/dist/src/features/sweep/prompt-builder.js.map +7 -0
  217. package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
  218. package/dist/src/features/sweep/state-watcher.js.map +7 -0
  219. package/dist/src/features/sweep/status-bar.js.map +7 -0
  220. package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
  221. package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
  222. package/dist/src/features/sweep/types.js.map +7 -0
  223. package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
  224. package/dist/src/features/tasks/task-aware-context.js.map +7 -0
  225. package/dist/src/features/tui/simple-monitor.js.map +7 -0
  226. package/dist/src/features/tui/swarm-monitor.js.map +7 -0
  227. package/dist/src/features/web/client/stores/task-store.js.map +7 -0
  228. package/dist/src/features/web/server/index.js.map +7 -0
  229. package/dist/src/hooks/auto-background.js.map +7 -0
  230. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
  231. package/dist/src/hooks/config.js.map +7 -0
  232. package/dist/src/hooks/daemon.js.map +7 -0
  233. package/dist/src/hooks/events.js.map +7 -0
  234. package/dist/src/hooks/index.js.map +7 -0
  235. package/dist/src/hooks/linear-task-picker.js.map +7 -0
  236. package/dist/src/hooks/schemas.js.map +7 -0
  237. package/dist/src/hooks/secure-fs.js.map +7 -0
  238. package/dist/src/hooks/security-logger.js.map +7 -0
  239. package/dist/src/hooks/session-summary.js.map +7 -0
  240. package/dist/src/hooks/sms-action-runner.js.map +7 -0
  241. package/dist/src/hooks/sms-notify.js.map +7 -0
  242. package/dist/src/hooks/sms-watcher.js.map +7 -0
  243. package/dist/src/hooks/sms-webhook.js.map +7 -0
  244. package/dist/src/hooks/whatsapp-commands.js.map +7 -0
  245. package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
  246. package/dist/src/hooks/whatsapp-sync.js.map +7 -0
  247. package/dist/src/index.js.map +7 -0
  248. package/dist/src/integrations/anthropic/client.js.map +7 -0
  249. package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
  250. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  251. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  252. package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
  253. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
  254. package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
  255. package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
  256. package/dist/src/integrations/linear/auth.js.map +7 -0
  257. package/dist/src/integrations/linear/auto-sync.js.map +7 -0
  258. package/dist/src/integrations/linear/client.js +634 -0
  259. package/dist/src/integrations/linear/client.js.map +7 -0
  260. package/dist/src/integrations/linear/config.js.map +7 -0
  261. package/dist/src/integrations/linear/migration.js.map +7 -0
  262. package/dist/src/integrations/linear/oauth-server.js.map +7 -0
  263. package/dist/src/integrations/linear/rest-client.js.map +7 -0
  264. package/dist/src/integrations/linear/sync-manager.js.map +7 -0
  265. package/dist/src/integrations/linear/sync-service.js.map +7 -0
  266. package/dist/src/integrations/linear/sync.js.map +7 -0
  267. package/dist/src/integrations/linear/unified-sync.js.map +7 -0
  268. package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
  269. package/dist/src/integrations/linear/webhook-server.js.map +7 -0
  270. package/dist/src/integrations/linear/webhook.js.map +7 -0
  271. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
  272. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
  273. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
  274. package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
  275. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
  276. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  277. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
  278. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
  279. package/dist/src/integrations/mcp/index.js.map +7 -0
  280. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  281. package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
  282. package/dist/src/integrations/mcp/remote-server.js +682 -0
  283. package/dist/src/integrations/mcp/remote-server.js.map +7 -0
  284. package/dist/src/integrations/mcp/schemas.js.map +7 -0
  285. package/dist/src/integrations/mcp/server.js +1975 -0
  286. package/dist/src/integrations/mcp/server.js.map +7 -0
  287. package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
  288. package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
  289. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
  290. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
  291. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
  292. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
  293. package/dist/src/integrations/ralph/index.js.map +7 -0
  294. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
  295. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
  296. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
  297. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
  298. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
  299. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
  300. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
  301. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
  302. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
  303. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
  304. package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
  305. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
  306. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
  307. package/dist/src/integrations/ralph/types.js +5 -0
  308. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
  309. package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
  310. package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
  311. package/dist/src/models/user.model.js.map +7 -0
  312. package/dist/src/servers/production/auth-middleware.js.map +7 -0
  313. package/dist/src/services/config-service.js.map +7 -0
  314. package/dist/src/services/context-service.js.map +7 -0
  315. package/dist/src/skills/api-discovery.js.map +7 -0
  316. package/dist/src/skills/api-skill.js.map +7 -0
  317. package/dist/src/skills/claude-skills.js.map +7 -0
  318. package/dist/src/skills/dashboard-launcher.js.map +7 -0
  319. package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
  320. package/dist/src/skills/repo-ingestion-skill.js +632 -0
  321. package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
  322. package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
  323. package/dist/src/types/task.js.map +7 -0
  324. package/dist/src/utils/env.js.map +7 -0
  325. package/dist/src/utils/formatting.js.map +7 -0
  326. package/dist/src/utils/process-cleanup.js.map +7 -0
  327. package/package.json +13 -9
  328. package/scripts/background-sync-manager.js +145 -83
  329. package/scripts/claude-sm-autostart.js +17 -12
  330. package/scripts/gepa/README.md +275 -0
  331. package/scripts/gepa/config.json +53 -0
  332. package/scripts/gepa/evals/coding-tasks.jsonl +5 -0
  333. package/scripts/gepa/evals/fixtures/buggy-loop.js +18 -0
  334. package/scripts/gepa/evals/fixtures/callback-hell.js +53 -0
  335. package/scripts/gepa/generations/gen-000/baseline.md +124 -0
  336. package/scripts/gepa/hooks/auto-optimize.js +494 -0
  337. package/scripts/gepa/hooks/eval-tracker.js +203 -0
  338. package/scripts/gepa/hooks/reflect.js +311 -0
  339. package/scripts/gepa/optimize.js +611 -0
  340. package/scripts/gepa/state.json +14 -0
  341. package/scripts/initialize.ts +16 -7
  342. package/scripts/install.sh +14 -62
  343. package/scripts/status.ts +111 -46
  344. package/scripts/test-pre-publish-quick.sh +1 -1
  345. package/dist/agents/core/agent-task-manager.js.map +0 -7
  346. package/dist/agents/testing-agent.js +0 -614
  347. package/dist/agents/testing-agent.js.map +0 -7
  348. package/dist/agents/verifiers/base-verifier.js.map +0 -7
  349. package/dist/agents/verifiers/formatter-verifier.js.map +0 -7
  350. package/dist/agents/verifiers/llm-judge.js.map +0 -7
  351. package/dist/cli/auto-detect.js.map +0 -7
  352. package/dist/cli/browser-test.js +0 -33
  353. package/dist/cli/browser-test.js.map +0 -7
  354. package/dist/cli/claude-sm-danger.js.map +0 -7
  355. package/dist/cli/claude-sm.js +0 -1156
  356. package/dist/cli/claude-sm.js.map +0 -7
  357. package/dist/cli/codex-sm-danger.js.map +0 -7
  358. package/dist/cli/codex-sm.js.map +0 -7
  359. package/dist/cli/commands/api.js.map +0 -7
  360. package/dist/cli/commands/auto-background.js.map +0 -7
  361. package/dist/cli/commands/cleanup-processes.js.map +0 -7
  362. package/dist/cli/commands/clear.js.map +0 -7
  363. package/dist/cli/commands/config.js.map +0 -7
  364. package/dist/cli/commands/context-rehydrate.js.map +0 -7
  365. package/dist/cli/commands/context.js.map +0 -7
  366. package/dist/cli/commands/daemon.js.map +0 -7
  367. package/dist/cli/commands/dashboard.js.map +0 -7
  368. package/dist/cli/commands/db.js.map +0 -7
  369. package/dist/cli/commands/decision.js.map +0 -7
  370. package/dist/cli/commands/discovery.js.map +0 -7
  371. package/dist/cli/commands/handoff.js.map +0 -7
  372. package/dist/cli/commands/hooks.js.map +0 -7
  373. package/dist/cli/commands/linear-unified.js +0 -353
  374. package/dist/cli/commands/linear-unified.js.map +0 -7
  375. package/dist/cli/commands/linear.js.map +0 -7
  376. package/dist/cli/commands/log.js.map +0 -7
  377. package/dist/cli/commands/login.js.map +0 -7
  378. package/dist/cli/commands/migrate.js.map +0 -7
  379. package/dist/cli/commands/model.js.map +0 -7
  380. package/dist/cli/commands/monitor.js +0 -313
  381. package/dist/cli/commands/monitor.js.map +0 -7
  382. package/dist/cli/commands/onboard.js.map +0 -7
  383. package/dist/cli/commands/projects.js.map +0 -7
  384. package/dist/cli/commands/quality.js +0 -413
  385. package/dist/cli/commands/quality.js.map +0 -7
  386. package/dist/cli/commands/ralph.js.map +0 -7
  387. package/dist/cli/commands/retrieval.js.map +0 -7
  388. package/dist/cli/commands/search.js +0 -156
  389. package/dist/cli/commands/search.js.map +0 -7
  390. package/dist/cli/commands/service.js.map +0 -7
  391. package/dist/cli/commands/session.js.map +0 -7
  392. package/dist/cli/commands/settings.js.map +0 -7
  393. package/dist/cli/commands/setup.js.map +0 -7
  394. package/dist/cli/commands/shell.js.map +0 -7
  395. package/dist/cli/commands/signup.js.map +0 -7
  396. package/dist/cli/commands/skills.js.map +0 -7
  397. package/dist/cli/commands/sms-notify.js.map +0 -7
  398. package/dist/cli/commands/storage-tier.js.map +0 -7
  399. package/dist/cli/commands/storage.js +0 -360
  400. package/dist/cli/commands/storage.js.map +0 -7
  401. package/dist/cli/commands/sweep.js.map +0 -7
  402. package/dist/cli/commands/tasks.js.map +0 -7
  403. package/dist/cli/commands/test.js +0 -286
  404. package/dist/cli/commands/test.js.map +0 -7
  405. package/dist/cli/commands/workflow.js +0 -142
  406. package/dist/cli/commands/workflow.js.map +0 -7
  407. package/dist/cli/commands/worktree.js.map +0 -7
  408. package/dist/cli/index.js +0 -594
  409. package/dist/cli/index.js.map +0 -7
  410. package/dist/cli/opencode-sm.js.map +0 -7
  411. package/dist/cli/utils/viewer.js.map +0 -7
  412. package/dist/core/analytics/team-analytics.js +0 -378
  413. package/dist/core/analytics/team-analytics.js.map +0 -7
  414. package/dist/core/config/config-manager.js.map +0 -7
  415. package/dist/core/config/feature-flags.js.map +0 -7
  416. package/dist/core/config/storage-config.js.map +0 -7
  417. package/dist/core/config/types.js.map +0 -7
  418. package/dist/core/context/auto-context.js.map +0 -7
  419. package/dist/core/context/dual-stack-manager.js.map +0 -7
  420. package/dist/core/context/enhanced-rehydration.js.map +0 -7
  421. package/dist/core/context/frame-database.js.map +0 -7
  422. package/dist/core/context/frame-digest.js.map +0 -7
  423. package/dist/core/context/frame-handoff-manager.js.map +0 -7
  424. package/dist/core/context/frame-lifecycle-hooks.js.map +0 -7
  425. package/dist/core/context/frame-manager.js +0 -1069
  426. package/dist/core/context/frame-manager.js.map +0 -7
  427. package/dist/core/context/frame-recovery.js.map +0 -7
  428. package/dist/core/context/frame-stack.js.map +0 -7
  429. package/dist/core/context/incremental-gc.js +0 -290
  430. package/dist/core/context/incremental-gc.js.map +0 -7
  431. package/dist/core/context/index.js.map +0 -7
  432. package/dist/core/context/model-aware-compaction.js +0 -623
  433. package/dist/core/context/model-aware-compaction.js.map +0 -7
  434. package/dist/core/context/permission-manager.js.map +0 -7
  435. package/dist/core/context/recursive-context-manager.js.map +0 -7
  436. package/dist/core/context/refactored-frame-manager.js.map +0 -7
  437. package/dist/core/context/shared-context-layer.js.map +0 -7
  438. package/dist/core/context/stack-merge-resolver.js.map +0 -7
  439. package/dist/core/context/validation.js.map +0 -7
  440. package/dist/core/database/batch-operations.js.map +0 -7
  441. package/dist/core/database/connection-pool.js.map +0 -7
  442. package/dist/core/database/database-adapter.js.map +0 -7
  443. package/dist/core/database/migration-manager.js.map +0 -7
  444. package/dist/core/database/paradedb-adapter.js +0 -990
  445. package/dist/core/database/paradedb-adapter.js.map +0 -7
  446. package/dist/core/database/query-cache.js.map +0 -7
  447. package/dist/core/database/query-router.js.map +0 -7
  448. package/dist/core/database/sqlite-adapter.js +0 -728
  449. package/dist/core/database/sqlite-adapter.js.map +0 -7
  450. package/dist/core/digest/enhanced-hybrid-digest.js.map +0 -7
  451. package/dist/core/digest/frame-digest-integration.js.map +0 -7
  452. package/dist/core/digest/hybrid-digest-generator.js.map +0 -7
  453. package/dist/core/digest/index.js.map +0 -7
  454. package/dist/core/digest/types.js.map +0 -7
  455. package/dist/core/errors/index.js +0 -512
  456. package/dist/core/errors/index.js.map +0 -7
  457. package/dist/core/errors/recovery.js.map +0 -7
  458. package/dist/core/execution/parallel-executor.js.map +0 -7
  459. package/dist/core/frame/workflow-templates.js.map +0 -7
  460. package/dist/core/merge/conflict-detector.js.map +0 -7
  461. package/dist/core/merge/index.js.map +0 -7
  462. package/dist/core/merge/resolution-engine.js.map +0 -7
  463. package/dist/core/merge/stack-diff.js.map +0 -7
  464. package/dist/core/models/fallback-monitor.js.map +0 -7
  465. package/dist/core/models/model-router.js.map +0 -7
  466. package/dist/core/monitoring/error-handler.js.map +0 -7
  467. package/dist/core/monitoring/logger.js +0 -150
  468. package/dist/core/monitoring/logger.js.map +0 -7
  469. package/dist/core/monitoring/metrics.js.map +0 -7
  470. package/dist/core/monitoring/progress-tracker.js.map +0 -7
  471. package/dist/core/monitoring/session-monitor.js.map +0 -7
  472. package/dist/core/performance/context-cache.js.map +0 -7
  473. package/dist/core/performance/index.js.map +0 -7
  474. package/dist/core/performance/lazy-context-loader.js.map +0 -7
  475. package/dist/core/performance/monitor.js.map +0 -7
  476. package/dist/core/performance/optimized-frame-context.js.map +0 -7
  477. package/dist/core/performance/performance-benchmark.js.map +0 -7
  478. package/dist/core/performance/performance-profiler.js.map +0 -7
  479. package/dist/core/performance/streaming-jsonl-parser.js.map +0 -7
  480. package/dist/core/persistence/postgres-adapter.js.map +0 -7
  481. package/dist/core/projects/project-isolation.js.map +0 -7
  482. package/dist/core/projects/project-manager.js.map +0 -7
  483. package/dist/core/query/query-parser.js.map +0 -7
  484. package/dist/core/query/query-templates.js.map +0 -7
  485. package/dist/core/retrieval/context-retriever.js.map +0 -7
  486. package/dist/core/retrieval/graph-retrieval.js +0 -662
  487. package/dist/core/retrieval/graph-retrieval.js.map +0 -7
  488. package/dist/core/retrieval/hierarchical-retrieval.js +0 -656
  489. package/dist/core/retrieval/hierarchical-retrieval.js.map +0 -7
  490. package/dist/core/retrieval/index.js.map +0 -7
  491. package/dist/core/retrieval/llm-context-retrieval.js.map +0 -7
  492. package/dist/core/retrieval/llm-provider.js.map +0 -7
  493. package/dist/core/retrieval/retrieval-audit.js.map +0 -7
  494. package/dist/core/retrieval/retrieval-benchmarks.js +0 -521
  495. package/dist/core/retrieval/retrieval-benchmarks.js.map +0 -7
  496. package/dist/core/retrieval/summary-generator.js.map +0 -7
  497. package/dist/core/retrieval/types.js.map +0 -7
  498. package/dist/core/session/clear-survival.js.map +0 -7
  499. package/dist/core/session/enhanced-handoff.js.map +0 -7
  500. package/dist/core/session/handoff-generator.js.map +0 -7
  501. package/dist/core/session/index.js.map +0 -7
  502. package/dist/core/session/session-manager.js.map +0 -7
  503. package/dist/core/skills/index.js.map +0 -7
  504. package/dist/core/skills/skill-storage.js.map +0 -7
  505. package/dist/core/skills/types.js.map +0 -7
  506. package/dist/core/storage/chromadb-adapter.js +0 -354
  507. package/dist/core/storage/chromadb-adapter.js.map +0 -7
  508. package/dist/core/storage/infinite-storage.js.map +0 -7
  509. package/dist/core/storage/railway-optimized-storage.js +0 -591
  510. package/dist/core/storage/railway-optimized-storage.js.map +0 -7
  511. package/dist/core/storage/remote-storage.js.map +0 -7
  512. package/dist/core/storage/two-tier-storage.js.map +0 -7
  513. package/dist/core/trace/cli-trace-wrapper.js.map +0 -7
  514. package/dist/core/trace/db-trace-wrapper.js.map +0 -7
  515. package/dist/core/trace/debug-trace.js.map +0 -7
  516. package/dist/core/trace/index.js.map +0 -7
  517. package/dist/core/trace/linear-api-wrapper.js.map +0 -7
  518. package/dist/core/trace/trace-demo.js +0 -154
  519. package/dist/core/trace/trace-demo.js.map +0 -7
  520. package/dist/core/trace/trace-detector.demo.js +0 -142
  521. package/dist/core/trace/trace-detector.demo.js.map +0 -7
  522. package/dist/core/trace/trace-detector.js.map +0 -7
  523. package/dist/core/trace/trace-store.js.map +0 -7
  524. package/dist/core/trace/types.js.map +0 -7
  525. package/dist/core/utils/async-mutex.js.map +0 -7
  526. package/dist/core/utils/compression.js.map +0 -7
  527. package/dist/core/utils/update-checker.js.map +0 -7
  528. package/dist/core/worktree/worktree-manager.js.map +0 -7
  529. package/dist/daemon/daemon-config.js.map +0 -7
  530. package/dist/daemon/services/context-service.js.map +0 -7
  531. package/dist/daemon/services/linear-service.js.map +0 -7
  532. package/dist/daemon/session-daemon.js.map +0 -7
  533. package/dist/daemon/unified-daemon.js.map +0 -7
  534. package/dist/features/analytics/api/analytics-api.js.map +0 -7
  535. package/dist/features/analytics/core/analytics-service.js.map +0 -7
  536. package/dist/features/analytics/index.js.map +0 -7
  537. package/dist/features/analytics/queries/metrics-queries.js.map +0 -7
  538. package/dist/features/browser/browser-mcp.js.map +0 -7
  539. package/dist/features/sweep/index.js.map +0 -7
  540. package/dist/features/sweep/prediction-client.js.map +0 -7
  541. package/dist/features/sweep/prompt-builder.js.map +0 -7
  542. package/dist/features/sweep/pty-wrapper.js.map +0 -7
  543. package/dist/features/sweep/state-watcher.js.map +0 -7
  544. package/dist/features/sweep/status-bar.js.map +0 -7
  545. package/dist/features/sweep/sweep-server-manager.js.map +0 -7
  546. package/dist/features/sweep/tab-interceptor.js.map +0 -7
  547. package/dist/features/sweep/types.js.map +0 -7
  548. package/dist/features/tasks/linear-task-manager.js.map +0 -7
  549. package/dist/features/tasks/task-aware-context.js.map +0 -7
  550. package/dist/features/tui/simple-monitor.js.map +0 -7
  551. package/dist/features/tui/swarm-monitor.js.map +0 -7
  552. package/dist/features/web/client/stores/task-store.js.map +0 -7
  553. package/dist/features/web/server/index.js.map +0 -7
  554. package/dist/hooks/auto-background.js.map +0 -7
  555. package/dist/hooks/claude-code-whatsapp-hook.js.map +0 -7
  556. package/dist/hooks/config.js.map +0 -7
  557. package/dist/hooks/daemon.js.map +0 -7
  558. package/dist/hooks/events.js.map +0 -7
  559. package/dist/hooks/index.js.map +0 -7
  560. package/dist/hooks/linear-task-picker.js.map +0 -7
  561. package/dist/hooks/schemas.js.map +0 -7
  562. package/dist/hooks/secure-fs.js.map +0 -7
  563. package/dist/hooks/security-logger.js.map +0 -7
  564. package/dist/hooks/session-summary.js.map +0 -7
  565. package/dist/hooks/sms-action-runner.js.map +0 -7
  566. package/dist/hooks/sms-notify.js.map +0 -7
  567. package/dist/hooks/sms-watcher.js.map +0 -7
  568. package/dist/hooks/sms-webhook.js.map +0 -7
  569. package/dist/hooks/whatsapp-commands.js.map +0 -7
  570. package/dist/hooks/whatsapp-scheduler.js.map +0 -7
  571. package/dist/hooks/whatsapp-sync.js.map +0 -7
  572. package/dist/index.js.map +0 -7
  573. package/dist/integrations/anthropic/client.js.map +0 -7
  574. package/dist/integrations/claude-code/agent-bridge.js.map +0 -7
  575. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  576. package/dist/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  577. package/dist/integrations/claude-code/post-task-hooks.js.map +0 -7
  578. package/dist/integrations/claude-code/subagent-client-stub.js.map +0 -7
  579. package/dist/integrations/claude-code/subagent-client.js.map +0 -7
  580. package/dist/integrations/claude-code/task-coordinator.js.map +0 -7
  581. package/dist/integrations/linear/auth.js.map +0 -7
  582. package/dist/integrations/linear/auto-sync.js.map +0 -7
  583. package/dist/integrations/linear/client.js +0 -630
  584. package/dist/integrations/linear/client.js.map +0 -7
  585. package/dist/integrations/linear/config.js.map +0 -7
  586. package/dist/integrations/linear/migration.js.map +0 -7
  587. package/dist/integrations/linear/oauth-server.js.map +0 -7
  588. package/dist/integrations/linear/rest-client.js.map +0 -7
  589. package/dist/integrations/linear/sync-manager.js.map +0 -7
  590. package/dist/integrations/linear/sync-service.js.map +0 -7
  591. package/dist/integrations/linear/sync.js.map +0 -7
  592. package/dist/integrations/linear/unified-sync.js.map +0 -7
  593. package/dist/integrations/linear/webhook-handler.js.map +0 -7
  594. package/dist/integrations/linear/webhook-server.js.map +0 -7
  595. package/dist/integrations/linear/webhook.js.map +0 -7
  596. package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  597. package/dist/integrations/mcp/handlers/context-handlers.js.map +0 -7
  598. package/dist/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  599. package/dist/integrations/mcp/handlers/index.js.map +0 -7
  600. package/dist/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  601. package/dist/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  602. package/dist/integrations/mcp/handlers/task-handlers.js.map +0 -7
  603. package/dist/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  604. package/dist/integrations/mcp/index.js.map +0 -7
  605. package/dist/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  606. package/dist/integrations/mcp/refactored-server.js.map +0 -7
  607. package/dist/integrations/mcp/remote-server.js +0 -691
  608. package/dist/integrations/mcp/remote-server.js.map +0 -7
  609. package/dist/integrations/mcp/schemas.js.map +0 -7
  610. package/dist/integrations/mcp/server.js +0 -1960
  611. package/dist/integrations/mcp/server.js.map +0 -7
  612. package/dist/integrations/mcp/tool-definitions-code.js.map +0 -7
  613. package/dist/integrations/mcp/tool-definitions.js.map +0 -7
  614. package/dist/integrations/mcp/trace-test.js +0 -48
  615. package/dist/integrations/mcp/trace-test.js.map +0 -7
  616. package/dist/integrations/pg-aiguide/embedding-provider.js +0 -189
  617. package/dist/integrations/pg-aiguide/embedding-provider.js.map +0 -7
  618. package/dist/integrations/pg-aiguide/semantic-search.js +0 -187
  619. package/dist/integrations/pg-aiguide/semantic-search.js.map +0 -7
  620. package/dist/integrations/pg-aiguide/timescale-analytics.js +0 -224
  621. package/dist/integrations/pg-aiguide/timescale-analytics.js.map +0 -7
  622. package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  623. package/dist/integrations/ralph/context/context-budget-manager.js.map +0 -7
  624. package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  625. package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  626. package/dist/integrations/ralph/index.js.map +0 -7
  627. package/dist/integrations/ralph/learning/pattern-learner.js.map +0 -7
  628. package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  629. package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  630. package/dist/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  631. package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  632. package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  633. package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  634. package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  635. package/dist/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  636. package/dist/integrations/ralph/ralph-integration-demo.js +0 -182
  637. package/dist/integrations/ralph/ralph-integration-demo.js.map +0 -7
  638. package/dist/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  639. package/dist/integrations/ralph/state/state-reconciler.js.map +0 -7
  640. package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  641. package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  642. package/dist/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  643. package/dist/mcp/stackmemory-mcp-server.js.map +0 -7
  644. package/dist/middleware/exponential-rate-limiter.js.map +0 -7
  645. package/dist/models/user.model.js.map +0 -7
  646. package/dist/servers/production/auth-middleware.js.map +0 -7
  647. package/dist/servers/railway/config.js +0 -55
  648. package/dist/servers/railway/config.js.map +0 -7
  649. package/dist/servers/railway/index-enhanced.js +0 -160
  650. package/dist/servers/railway/index-enhanced.js.map +0 -7
  651. package/dist/servers/railway/index.js +0 -1349
  652. package/dist/servers/railway/index.js.map +0 -7
  653. package/dist/servers/railway/simple.js +0 -64
  654. package/dist/servers/railway/simple.js.map +0 -7
  655. package/dist/servers/railway/storage-test.js +0 -459
  656. package/dist/servers/railway/storage-test.js.map +0 -7
  657. package/dist/services/config-service.js.map +0 -7
  658. package/dist/services/context-service.js.map +0 -7
  659. package/dist/skills/api-discovery.js.map +0 -7
  660. package/dist/skills/api-skill.js.map +0 -7
  661. package/dist/skills/claude-skills.js.map +0 -7
  662. package/dist/skills/dashboard-launcher.js.map +0 -7
  663. package/dist/skills/recursive-agent-orchestrator.js.map +0 -7
  664. package/dist/skills/repo-ingestion-skill.js +0 -609
  665. package/dist/skills/repo-ingestion-skill.js.map +0 -7
  666. package/dist/skills/security-secrets-scanner.js +0 -284
  667. package/dist/skills/security-secrets-scanner.js.map +0 -7
  668. package/dist/skills/unified-rlm-orchestrator.js.map +0 -7
  669. package/dist/utils/env.js.map +0 -7
  670. package/dist/utils/formatting.js.map +0 -7
  671. package/dist/utils/process-cleanup.js.map +0 -7
  672. package/dist/validation/schemas.js +0 -222
  673. package/dist/validation/schemas.js.map +0 -7
  674. /package/dist/{agents → src/agents}/core/agent-task-manager.js +0 -0
  675. /package/dist/{agents → src/agents}/verifiers/base-verifier.js +0 -0
  676. /package/dist/{agents → src/agents}/verifiers/formatter-verifier.js +0 -0
  677. /package/dist/{agents → src/agents}/verifiers/llm-judge.js +0 -0
  678. /package/dist/{cli → src/cli}/auto-detect.js +0 -0
  679. /package/dist/{cli → src/cli}/claude-sm-danger.js +0 -0
  680. /package/dist/{cli → src/cli}/codex-sm-danger.js +0 -0
  681. /package/dist/{cli → src/cli}/codex-sm.js +0 -0
  682. /package/dist/{cli → src/cli}/commands/api.js +0 -0
  683. /package/dist/{cli → src/cli}/commands/auto-background.js +0 -0
  684. /package/dist/{cli → src/cli}/commands/cleanup-processes.js +0 -0
  685. /package/dist/{cli → src/cli}/commands/clear.js +0 -0
  686. /package/dist/{cli → src/cli}/commands/config.js +0 -0
  687. /package/dist/{cli → src/cli}/commands/context-rehydrate.js +0 -0
  688. /package/dist/{cli → src/cli}/commands/context.js +0 -0
  689. /package/dist/{cli → src/cli}/commands/daemon.js +0 -0
  690. /package/dist/{cli → src/cli}/commands/dashboard.js +0 -0
  691. /package/dist/{cli → src/cli}/commands/db.js +0 -0
  692. /package/dist/{cli → src/cli}/commands/decision.js +0 -0
  693. /package/dist/{cli → src/cli}/commands/discovery.js +0 -0
  694. /package/dist/{cli → src/cli}/commands/handoff.js +0 -0
  695. /package/dist/{cli → src/cli}/commands/hooks.js +0 -0
  696. /package/dist/{cli → src/cli}/commands/linear.js +0 -0
  697. /package/dist/{cli → src/cli}/commands/log.js +0 -0
  698. /package/dist/{cli → src/cli}/commands/login.js +0 -0
  699. /package/dist/{cli → src/cli}/commands/migrate.js +0 -0
  700. /package/dist/{cli → src/cli}/commands/model.js +0 -0
  701. /package/dist/{cli → src/cli}/commands/onboard.js +0 -0
  702. /package/dist/{cli → src/cli}/commands/projects.js +0 -0
  703. /package/dist/{cli → src/cli}/commands/ralph.js +0 -0
  704. /package/dist/{cli → src/cli}/commands/retrieval.js +0 -0
  705. /package/dist/{cli → src/cli}/commands/service.js +0 -0
  706. /package/dist/{cli → src/cli}/commands/session.js +0 -0
  707. /package/dist/{cli → src/cli}/commands/settings.js +0 -0
  708. /package/dist/{cli → src/cli}/commands/setup.js +0 -0
  709. /package/dist/{cli → src/cli}/commands/shell.js +0 -0
  710. /package/dist/{cli → src/cli}/commands/signup.js +0 -0
  711. /package/dist/{cli → src/cli}/commands/skills.js +0 -0
  712. /package/dist/{cli → src/cli}/commands/sms-notify.js +0 -0
  713. /package/dist/{cli → src/cli}/commands/storage-tier.js +0 -0
  714. /package/dist/{cli → src/cli}/commands/sweep.js +0 -0
  715. /package/dist/{cli → src/cli}/commands/tasks.js +0 -0
  716. /package/dist/{cli → src/cli}/commands/worktree.js +0 -0
  717. /package/dist/{cli → src/cli}/opencode-sm.js +0 -0
  718. /package/dist/{cli → src/cli}/utils/viewer.js +0 -0
  719. /package/dist/{core → src/core}/config/config-manager.js +0 -0
  720. /package/dist/{core → src/core}/config/feature-flags.js +0 -0
  721. /package/dist/{core → src/core}/config/storage-config.js +0 -0
  722. /package/dist/{core → src/core}/config/types.js +0 -0
  723. /package/dist/{core → src/core}/context/auto-context.js +0 -0
  724. /package/dist/{core → src/core}/context/dual-stack-manager.js +0 -0
  725. /package/dist/{core → src/core}/context/enhanced-rehydration.js +0 -0
  726. /package/dist/{core → src/core}/context/frame-database.js +0 -0
  727. /package/dist/{core → src/core}/context/frame-digest.js +0 -0
  728. /package/dist/{core → src/core}/context/frame-handoff-manager.js +0 -0
  729. /package/dist/{core → src/core}/context/frame-lifecycle-hooks.js +0 -0
  730. /package/dist/{core → src/core}/context/frame-recovery.js +0 -0
  731. /package/dist/{core → src/core}/context/frame-stack.js +0 -0
  732. /package/dist/{core → src/core}/context/frame-types.js +0 -0
  733. /package/dist/{core → src/core}/context/frame-types.js.map +0 -0
  734. /package/dist/{core → src/core}/context/index.js +0 -0
  735. /package/dist/{core → src/core}/context/permission-manager.js +0 -0
  736. /package/dist/{core → src/core}/context/recursive-context-manager.js +0 -0
  737. /package/dist/{core → src/core}/context/refactored-frame-manager.js +0 -0
  738. /package/dist/{core → src/core}/context/shared-context-layer.js +0 -0
  739. /package/dist/{core → src/core}/context/stack-merge-resolver.js +0 -0
  740. /package/dist/{core → src/core}/context/validation.js +0 -0
  741. /package/dist/{core → src/core}/database/batch-operations.js +0 -0
  742. /package/dist/{core → src/core}/database/connection-pool.js +0 -0
  743. /package/dist/{core → src/core}/database/database-adapter.js +0 -0
  744. /package/dist/{core → src/core}/database/migration-manager.js +0 -0
  745. /package/dist/{core → src/core}/database/query-cache.js +0 -0
  746. /package/dist/{core → src/core}/database/query-router.js +0 -0
  747. /package/dist/{core → src/core}/digest/enhanced-hybrid-digest.js +0 -0
  748. /package/dist/{core → src/core}/digest/frame-digest-integration.js +0 -0
  749. /package/dist/{core → src/core}/digest/hybrid-digest-generator.js +0 -0
  750. /package/dist/{core → src/core}/digest/index.js +0 -0
  751. /package/dist/{core → src/core}/digest/types.js +0 -0
  752. /package/dist/{core → src/core}/errors/recovery.js +0 -0
  753. /package/dist/{core → src/core}/execution/parallel-executor.js +0 -0
  754. /package/dist/{core/merge → src/core/extensions}/types.js +0 -0
  755. /package/dist/{core/merge → src/core/extensions}/types.js.map +0 -0
  756. /package/dist/{core → src/core}/frame/workflow-templates.js +0 -0
  757. /package/dist/{core → src/core}/merge/conflict-detector.js +0 -0
  758. /package/dist/{core → src/core}/merge/index.js +0 -0
  759. /package/dist/{core → src/core}/merge/resolution-engine.js +0 -0
  760. /package/dist/{core → src/core}/merge/stack-diff.js +0 -0
  761. /package/dist/{core → src/core/merge}/types.js +0 -0
  762. /package/dist/{core → src/core/merge}/types.js.map +0 -0
  763. /package/dist/{core → src/core}/models/fallback-monitor.js +0 -0
  764. /package/dist/{core → src/core}/models/model-router.js +0 -0
  765. /package/dist/{core → src/core}/monitoring/error-handler.js +0 -0
  766. /package/dist/{core → src/core}/monitoring/metrics.js +0 -0
  767. /package/dist/{core → src/core}/monitoring/progress-tracker.js +0 -0
  768. /package/dist/{core → src/core}/monitoring/session-monitor.js +0 -0
  769. /package/dist/{core → src/core}/performance/context-cache.js +0 -0
  770. /package/dist/{core → src/core}/performance/index.js +0 -0
  771. /package/dist/{core → src/core}/performance/lazy-context-loader.js +0 -0
  772. /package/dist/{core → src/core}/performance/monitor.js +0 -0
  773. /package/dist/{core → src/core}/performance/optimized-frame-context.js +0 -0
  774. /package/dist/{core → src/core}/performance/performance-benchmark.js +0 -0
  775. /package/dist/{core → src/core}/performance/performance-profiler.js +0 -0
  776. /package/dist/{core → src/core}/performance/streaming-jsonl-parser.js +0 -0
  777. /package/dist/{core → src/core}/persistence/postgres-adapter.js +0 -0
  778. /package/dist/{core → src/core}/projects/project-isolation.js +0 -0
  779. /package/dist/{core → src/core}/projects/project-manager.js +0 -0
  780. /package/dist/{core → src/core}/query/query-parser.js +0 -0
  781. /package/dist/{core → src/core}/query/query-templates.js +0 -0
  782. /package/dist/{core → src/core}/retrieval/context-retriever.js +0 -0
  783. /package/dist/{core → src/core}/retrieval/index.js +0 -0
  784. /package/dist/{core → src/core}/retrieval/llm-context-retrieval.js +0 -0
  785. /package/dist/{core → src/core}/retrieval/llm-provider.js +0 -0
  786. /package/dist/{core → src/core}/retrieval/retrieval-audit.js +0 -0
  787. /package/dist/{core → src/core}/retrieval/summary-generator.js +0 -0
  788. /package/dist/{core → src/core}/retrieval/types.js +0 -0
  789. /package/dist/{core → src/core}/session/clear-survival.js +0 -0
  790. /package/dist/{core → src/core}/session/enhanced-handoff.js +0 -0
  791. /package/dist/{core → src/core}/session/handoff-generator.js +0 -0
  792. /package/dist/{core → src/core}/session/index.js +0 -0
  793. /package/dist/{core → src/core}/session/session-manager.js +0 -0
  794. /package/dist/{core → src/core}/skills/index.js +0 -0
  795. /package/dist/{core → src/core}/skills/skill-storage.js +0 -0
  796. /package/dist/{core → src/core}/skills/types.js +0 -0
  797. /package/dist/{core → src/core}/storage/infinite-storage.js +0 -0
  798. /package/dist/{core → src/core}/storage/remote-storage.js +0 -0
  799. /package/dist/{core → src/core}/storage/two-tier-storage.js +0 -0
  800. /package/dist/{core → src/core}/trace/cli-trace-wrapper.js +0 -0
  801. /package/dist/{core → src/core}/trace/db-trace-wrapper.js +0 -0
  802. /package/dist/{core → src/core}/trace/debug-trace.js +0 -0
  803. /package/dist/{core → src/core}/trace/index.js +0 -0
  804. /package/dist/{core → src/core}/trace/linear-api-wrapper.js +0 -0
  805. /package/dist/{core → src/core}/trace/trace-detector.js +0 -0
  806. /package/dist/{core → src/core}/trace/trace-store.js +0 -0
  807. /package/dist/{core → src/core}/trace/types.js +0 -0
  808. /package/dist/{integrations/linear → src/core}/types.js +0 -0
  809. /package/dist/{integrations/linear → src/core}/types.js.map +0 -0
  810. /package/dist/{core → src/core}/utils/async-mutex.js +0 -0
  811. /package/dist/{core → src/core}/utils/compression.js +0 -0
  812. /package/dist/{core → src/core}/utils/update-checker.js +0 -0
  813. /package/dist/{core → src/core}/worktree/worktree-manager.js +0 -0
  814. /package/dist/{daemon → src/daemon}/daemon-config.js +0 -0
  815. /package/dist/{daemon → src/daemon}/services/context-service.js +0 -0
  816. /package/dist/{daemon → src/daemon}/services/linear-service.js +0 -0
  817. /package/dist/{daemon → src/daemon}/session-daemon.js +0 -0
  818. /package/dist/{daemon → src/daemon}/unified-daemon.js +0 -0
  819. /package/dist/{features → src/features}/analytics/api/analytics-api.js +0 -0
  820. /package/dist/{features → src/features}/analytics/core/analytics-service.js +0 -0
  821. /package/dist/{features → src/features}/analytics/index.js +0 -0
  822. /package/dist/{features → src/features}/analytics/queries/metrics-queries.js +0 -0
  823. /package/dist/{features → src/features}/analytics/types/metrics.js +0 -0
  824. /package/dist/{features → src/features}/analytics/types/metrics.js.map +0 -0
  825. /package/dist/{features → src/features}/browser/browser-mcp.js +0 -0
  826. /package/dist/{features → src/features}/sweep/index.js +0 -0
  827. /package/dist/{features → src/features}/sweep/prediction-client.js +0 -0
  828. /package/dist/{features → src/features}/sweep/prompt-builder.js +0 -0
  829. /package/dist/{features → src/features}/sweep/pty-wrapper.js +0 -0
  830. /package/dist/{features → src/features}/sweep/state-watcher.js +0 -0
  831. /package/dist/{features → src/features}/sweep/status-bar.js +0 -0
  832. /package/dist/{features → src/features}/sweep/sweep-server-manager.js +0 -0
  833. /package/dist/{features → src/features}/sweep/tab-interceptor.js +0 -0
  834. /package/dist/{features → src/features}/sweep/types.js +0 -0
  835. /package/dist/{features → src/features}/tasks/linear-task-manager.js +0 -0
  836. /package/dist/{features → src/features}/tasks/task-aware-context.js +0 -0
  837. /package/dist/{features → src/features}/tui/simple-monitor.js +0 -0
  838. /package/dist/{features → src/features}/tui/swarm-monitor.js +0 -0
  839. /package/dist/{features → src/features}/web/client/stores/task-store.js +0 -0
  840. /package/dist/{features → src/features}/web/server/index.js +0 -0
  841. /package/dist/{hooks → src/hooks}/auto-background.js +0 -0
  842. /package/dist/{hooks → src/hooks}/claude-code-whatsapp-hook.js +0 -0
  843. /package/dist/{hooks → src/hooks}/config.js +0 -0
  844. /package/dist/{hooks → src/hooks}/daemon.js +0 -0
  845. /package/dist/{hooks → src/hooks}/events.js +0 -0
  846. /package/dist/{hooks → src/hooks}/index.js +0 -0
  847. /package/dist/{hooks → src/hooks}/linear-task-picker.js +0 -0
  848. /package/dist/{hooks → src/hooks}/schemas.js +0 -0
  849. /package/dist/{hooks → src/hooks}/secure-fs.js +0 -0
  850. /package/dist/{hooks → src/hooks}/security-logger.js +0 -0
  851. /package/dist/{hooks → src/hooks}/session-summary.js +0 -0
  852. /package/dist/{hooks → src/hooks}/sms-action-runner.js +0 -0
  853. /package/dist/{hooks → src/hooks}/sms-notify.js +0 -0
  854. /package/dist/{hooks → src/hooks}/sms-watcher.js +0 -0
  855. /package/dist/{hooks → src/hooks}/sms-webhook.js +0 -0
  856. /package/dist/{hooks → src/hooks}/whatsapp-commands.js +0 -0
  857. /package/dist/{hooks → src/hooks}/whatsapp-scheduler.js +0 -0
  858. /package/dist/{hooks → src/hooks}/whatsapp-sync.js +0 -0
  859. /package/dist/{index.js → src/index.js} +0 -0
  860. /package/dist/{integrations → src/integrations}/anthropic/client.js +0 -0
  861. /package/dist/{integrations → src/integrations}/claude-code/agent-bridge.js +0 -0
  862. /package/dist/{integrations → src/integrations}/claude-code/enhanced-pre-clear-hooks.js +0 -0
  863. /package/dist/{integrations → src/integrations}/claude-code/lifecycle-hooks.js +0 -0
  864. /package/dist/{integrations → src/integrations}/claude-code/post-task-hooks.js +0 -0
  865. /package/dist/{integrations → src/integrations}/claude-code/subagent-client-stub.js +0 -0
  866. /package/dist/{integrations → src/integrations}/claude-code/subagent-client.js +0 -0
  867. /package/dist/{integrations → src/integrations}/claude-code/task-coordinator.js +0 -0
  868. /package/dist/{integrations → src/integrations}/linear/auth.js +0 -0
  869. /package/dist/{integrations → src/integrations}/linear/auto-sync.js +0 -0
  870. /package/dist/{integrations → src/integrations}/linear/config.js +0 -0
  871. /package/dist/{integrations → src/integrations}/linear/migration.js +0 -0
  872. /package/dist/{integrations → src/integrations}/linear/oauth-server.js +0 -0
  873. /package/dist/{integrations → src/integrations}/linear/rest-client.js +0 -0
  874. /package/dist/{integrations → src/integrations}/linear/sync-manager.js +0 -0
  875. /package/dist/{integrations → src/integrations}/linear/sync-service.js +0 -0
  876. /package/dist/{integrations → src/integrations}/linear/sync.js +0 -0
  877. /package/dist/{integrations/ralph → src/integrations/linear}/types.js +0 -0
  878. /package/dist/{integrations/ralph → src/integrations/linear}/types.js.map +0 -0
  879. /package/dist/{integrations → src/integrations}/linear/unified-sync.js +0 -0
  880. /package/dist/{integrations → src/integrations}/linear/webhook-handler.js +0 -0
  881. /package/dist/{integrations → src/integrations}/linear/webhook-server.js +0 -0
  882. /package/dist/{integrations → src/integrations}/linear/webhook.js +0 -0
  883. /package/dist/{integrations → src/integrations}/mcp/handlers/code-execution-handlers.js +0 -0
  884. /package/dist/{integrations → src/integrations}/mcp/handlers/context-handlers.js +0 -0
  885. /package/dist/{integrations → src/integrations}/mcp/handlers/discovery-handlers.js +0 -0
  886. /package/dist/{integrations → src/integrations}/mcp/handlers/index.js +0 -0
  887. /package/dist/{integrations → src/integrations}/mcp/handlers/linear-handlers.js +0 -0
  888. /package/dist/{integrations → src/integrations}/mcp/handlers/skill-handlers.js +0 -0
  889. /package/dist/{integrations → src/integrations}/mcp/handlers/task-handlers.js +0 -0
  890. /package/dist/{integrations → src/integrations}/mcp/handlers/trace-handlers.js +0 -0
  891. /package/dist/{integrations → src/integrations}/mcp/index.js +0 -0
  892. /package/dist/{integrations → src/integrations}/mcp/middleware/tool-scoring.js +0 -0
  893. /package/dist/{integrations → src/integrations}/mcp/refactored-server.js +0 -0
  894. /package/dist/{integrations → src/integrations}/mcp/schemas.js +0 -0
  895. /package/dist/{integrations → src/integrations}/mcp/tool-definitions-code.js +0 -0
  896. /package/dist/{integrations → src/integrations}/mcp/tool-definitions.js +0 -0
  897. /package/dist/{integrations → src/integrations}/ralph/bridge/ralph-stackmemory-bridge.js +0 -0
  898. /package/dist/{integrations → src/integrations}/ralph/context/context-budget-manager.js +0 -0
  899. /package/dist/{integrations → src/integrations}/ralph/context/stackmemory-context-loader.js +0 -0
  900. /package/dist/{integrations → src/integrations}/ralph/coordination/enhanced-coordination.js +0 -0
  901. /package/dist/{integrations → src/integrations}/ralph/index.js +0 -0
  902. /package/dist/{integrations → src/integrations}/ralph/learning/pattern-learner.js +0 -0
  903. /package/dist/{integrations → src/integrations}/ralph/lifecycle/iteration-lifecycle.js +0 -0
  904. /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-dashboard.js +0 -0
  905. /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-registry.js +0 -0
  906. /package/dist/{integrations → src/integrations}/ralph/orchestration/multi-loop-orchestrator.js +0 -0
  907. /package/dist/{integrations → src/integrations}/ralph/patterns/compounding-engineering-pattern.js +0 -0
  908. /package/dist/{integrations → src/integrations}/ralph/patterns/extended-coherence-sessions.js +0 -0
  909. /package/dist/{integrations → src/integrations}/ralph/patterns/oracle-worker-pattern.js +0 -0
  910. /package/dist/{integrations → src/integrations}/ralph/performance/performance-optimizer.js +0 -0
  911. /package/dist/{integrations → src/integrations}/ralph/recovery/crash-recovery.js +0 -0
  912. /package/dist/{integrations → src/integrations}/ralph/state/state-reconciler.js +0 -0
  913. /package/dist/{integrations → src/integrations}/ralph/swarm/git-workflow-manager.js +0 -0
  914. /package/dist/{integrations → src/integrations}/ralph/swarm/swarm-coordinator.js +0 -0
  915. /package/dist/{types/task.js.map → src/integrations/ralph/types.js.map} +0 -0
  916. /package/dist/{integrations → src/integrations}/ralph/visualization/ralph-debugger.js +0 -0
  917. /package/dist/{mcp → src/mcp}/stackmemory-mcp-server.js +0 -0
  918. /package/dist/{middleware → src/middleware}/exponential-rate-limiter.js +0 -0
  919. /package/dist/{models → src/models}/user.model.js +0 -0
  920. /package/dist/{servers → src/servers}/production/auth-middleware.js +0 -0
  921. /package/dist/{services → src/services}/config-service.js +0 -0
  922. /package/dist/{services → src/services}/context-service.js +0 -0
  923. /package/dist/{skills → src/skills}/api-discovery.js +0 -0
  924. /package/dist/{skills → src/skills}/api-skill.js +0 -0
  925. /package/dist/{skills → src/skills}/claude-skills.js +0 -0
  926. /package/dist/{skills → src/skills}/dashboard-launcher.js +0 -0
  927. /package/dist/{skills → src/skills}/recursive-agent-orchestrator.js +0 -0
  928. /package/dist/{skills → src/skills}/unified-rlm-orchestrator.js +0 -0
  929. /package/dist/{types → src/types}/task.js +0 -0
  930. /package/dist/{utils → src/utils}/env.js +0 -0
  931. /package/dist/{utils → src/utils}/formatting.js +0 -0
  932. /package/dist/{utils → src/utils}/process-cleanup.js +0 -0
@@ -0,0 +1,340 @@
1
+ #!/usr/bin/env npx ts-node
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const __filename = __fileURLToPath(import.meta.url);
5
+ const __dirname = __pathDirname(__filename);
6
+ import { readFileSync, existsSync, readdirSync, statSync } from "fs";
7
+ import { join } from "path";
8
+ import { homedir } from "os";
9
+ import Database from "better-sqlite3";
10
+ function estimateTokensAccurate(text) {
11
+ const baseEstimate = text.length / 3.5;
12
+ const codeIndicators = (text.match(/[{}\[\]();=]/g) || []).length;
13
+ const codeScore = codeIndicators / text.length * 100;
14
+ if (codeScore > 5) {
15
+ return Math.ceil(baseEstimate * 1.2);
16
+ }
17
+ return Math.ceil(baseEstimate);
18
+ }
19
+ function measureHandoffs() {
20
+ const handoffPath = join(homedir(), ".stackmemory", "context.db");
21
+ const metrics = [];
22
+ if (!existsSync(handoffPath)) {
23
+ console.log("No context.db found at", handoffPath);
24
+ return metrics;
25
+ }
26
+ try {
27
+ const db = new Database(handoffPath, { readonly: true });
28
+ const tableCheck = db.prepare(
29
+ `
30
+ SELECT name FROM sqlite_master
31
+ WHERE type='table' AND name='handoff_requests'
32
+ `
33
+ ).get();
34
+ if (!tableCheck) {
35
+ console.log("No handoff_requests table found");
36
+ db.close();
37
+ return metrics;
38
+ }
39
+ const handoffs = db.prepare(
40
+ `
41
+ SELECT id, message, created_at
42
+ FROM handoff_requests
43
+ ORDER BY created_at DESC
44
+ LIMIT 10
45
+ `
46
+ ).all();
47
+ for (const h of handoffs) {
48
+ const message = h.message || "";
49
+ metrics.push({
50
+ handoffId: h.id,
51
+ handoffChars: message.length,
52
+ handoffTokens: estimateTokensAccurate(message),
53
+ createdAt: new Date(h.created_at).toISOString()
54
+ });
55
+ }
56
+ db.close();
57
+ } catch (err) {
58
+ console.log("Error reading handoffs:", err);
59
+ }
60
+ return metrics;
61
+ }
62
+ function measureLastHandoffFile() {
63
+ const handoffPath = join(process.cwd(), ".stackmemory", "last-handoff.md");
64
+ if (!existsSync(handoffPath)) {
65
+ const homeHandoff = join(homedir(), ".stackmemory", "last-handoff.md");
66
+ if (!existsSync(homeHandoff)) {
67
+ return null;
68
+ }
69
+ const content2 = readFileSync(homeHandoff, "utf-8");
70
+ return {
71
+ source: homeHandoff,
72
+ charCount: content2.length,
73
+ estimatedTokens: estimateTokensAccurate(content2),
74
+ lineCount: content2.split("\n").length
75
+ };
76
+ }
77
+ const content = readFileSync(handoffPath, "utf-8");
78
+ return {
79
+ source: handoffPath,
80
+ charCount: content.length,
81
+ estimatedTokens: estimateTokensAccurate(content),
82
+ lineCount: content.split("\n").length
83
+ };
84
+ }
85
+ function measureClaudeConversations() {
86
+ const claudeProjectsDir = join(homedir(), ".claude", "projects");
87
+ const metrics = [];
88
+ if (!existsSync(claudeProjectsDir)) {
89
+ return metrics;
90
+ }
91
+ const projectDirs = readdirSync(claudeProjectsDir);
92
+ for (const dir of projectDirs.slice(0, 5)) {
93
+ const projectPath = join(claudeProjectsDir, dir);
94
+ const stat = statSync(projectPath);
95
+ if (stat.isDirectory()) {
96
+ const files = readdirSync(projectPath).filter(
97
+ (f) => f.endsWith(".jsonl")
98
+ );
99
+ for (const file of files.slice(0, 3)) {
100
+ const filePath = join(projectPath, file);
101
+ try {
102
+ const content = readFileSync(filePath, "utf-8");
103
+ metrics.push({
104
+ source: file,
105
+ charCount: content.length,
106
+ estimatedTokens: estimateTokensAccurate(content),
107
+ lineCount: content.split("\n").length
108
+ });
109
+ } catch {
110
+ }
111
+ }
112
+ }
113
+ }
114
+ return metrics;
115
+ }
116
+ function measureFramesAndEvents() {
117
+ const dbPath = join(homedir(), ".stackmemory", "context.db");
118
+ if (!existsSync(dbPath)) {
119
+ return null;
120
+ }
121
+ try {
122
+ const db = new Database(dbPath, { readonly: true });
123
+ const frameResult = db.prepare(
124
+ `
125
+ SELECT COUNT(*) as count,
126
+ SUM(LENGTH(COALESCE(name, '') || COALESCE(json(inputs), '') || COALESCE(json(outputs), '') || COALESCE(json(digest_json), ''))) as totalChars
127
+ FROM frames
128
+ `
129
+ ).get();
130
+ const eventResult = db.prepare(
131
+ `
132
+ SELECT COUNT(*) as count,
133
+ SUM(LENGTH(COALESCE(event_type, '') || COALESCE(json(payload), ''))) as totalChars
134
+ FROM events
135
+ `
136
+ ).get();
137
+ db.close();
138
+ const frameChars = frameResult?.totalChars || 0;
139
+ const eventChars = eventResult?.totalChars || 0;
140
+ const totalChars = frameChars + eventChars;
141
+ return {
142
+ sessionId: "aggregate",
143
+ frameCount: frameResult?.count || 0,
144
+ eventCount: eventResult?.count || 0,
145
+ estimatedSessionTokens: estimateTokensAccurate(
146
+ String(totalChars).repeat(Math.floor(totalChars / 10) || 1)
147
+ )
148
+ };
149
+ } catch (err) {
150
+ console.log("Error measuring frames/events:", err);
151
+ return null;
152
+ }
153
+ }
154
+ function formatNumber(n) {
155
+ if (n >= 1e3) {
156
+ return (n / 1e3).toFixed(1) + "K";
157
+ }
158
+ return n.toString();
159
+ }
160
+ async function main() {
161
+ console.log("========================================");
162
+ console.log(" HANDOFF CONTEXT IMPACT ANALYSIS");
163
+ console.log(" (Actual Measurements)");
164
+ console.log("========================================\n");
165
+ console.log("1. LAST HANDOFF FILE");
166
+ console.log("--------------------");
167
+ const lastHandoff = measureLastHandoffFile();
168
+ if (lastHandoff) {
169
+ console.log(` Source: ${lastHandoff.source}`);
170
+ console.log(` Characters: ${formatNumber(lastHandoff.charCount)}`);
171
+ console.log(` Lines: ${lastHandoff.lineCount}`);
172
+ console.log(
173
+ ` Estimated tokens: ${formatNumber(lastHandoff.estimatedTokens)}`
174
+ );
175
+ } else {
176
+ console.log(" No handoff file found");
177
+ }
178
+ console.log("");
179
+ console.log("2. HANDOFFS FROM DATABASE");
180
+ console.log("-------------------------");
181
+ const handoffs = measureHandoffs();
182
+ if (handoffs.length > 0) {
183
+ let totalTokens = 0;
184
+ for (const h of handoffs) {
185
+ console.log(
186
+ ` ${h.handoffId.slice(0, 8)}: ${formatNumber(h.handoffTokens)} tokens (${formatNumber(h.handoffChars)} chars)`
187
+ );
188
+ totalTokens += h.handoffTokens;
189
+ }
190
+ const avgTokens = Math.round(totalTokens / handoffs.length);
191
+ console.log(` Average: ${formatNumber(avgTokens)} tokens per handoff`);
192
+ } else {
193
+ console.log(" No handoffs in database");
194
+ }
195
+ console.log("");
196
+ console.log("3. CLAUDE CONVERSATION FILES");
197
+ console.log("----------------------------");
198
+ const conversations = measureClaudeConversations();
199
+ if (conversations.length > 0) {
200
+ let totalConvTokens = 0;
201
+ let maxConvTokens = 0;
202
+ for (const c of conversations) {
203
+ console.log(
204
+ ` ${c.source}: ${formatNumber(c.estimatedTokens)} tokens (${formatNumber(c.charCount)} chars, ${c.lineCount} lines)`
205
+ );
206
+ totalConvTokens += c.estimatedTokens;
207
+ maxConvTokens = Math.max(maxConvTokens, c.estimatedTokens);
208
+ }
209
+ const avgConvTokens = Math.round(totalConvTokens / conversations.length);
210
+ console.log(
211
+ ` Average: ${formatNumber(avgConvTokens)} tokens per conversation`
212
+ );
213
+ console.log(` Max: ${formatNumber(maxConvTokens)} tokens`);
214
+ } else {
215
+ console.log(" No conversation files found");
216
+ }
217
+ console.log("");
218
+ console.log("4. STACKMEMORY DATABASE CONTENT");
219
+ console.log("-------------------------------");
220
+ const dbMetrics = measureFramesAndEvents();
221
+ if (dbMetrics) {
222
+ console.log(` Frames: ${dbMetrics.frameCount}`);
223
+ console.log(` Events: ${dbMetrics.eventCount}`);
224
+ console.log(
225
+ ` Total stored data: ~${formatNumber(dbMetrics.estimatedSessionTokens)} tokens equivalent`
226
+ );
227
+ } else {
228
+ console.log(" No database metrics available");
229
+ }
230
+ console.log("");
231
+ console.log("5. COMPRESSION ANALYSIS");
232
+ console.log("-----------------------");
233
+ const avgHandoffTokens = handoffs.length > 0 ? Math.round(
234
+ handoffs.reduce((sum, h) => sum + h.handoffTokens, 0) / handoffs.length
235
+ ) : lastHandoff?.estimatedTokens || 2e3;
236
+ const avgConversationTokens = conversations.length > 0 ? Math.round(
237
+ conversations.reduce((sum, c) => sum + c.estimatedTokens, 0) / conversations.length
238
+ ) : 8e4;
239
+ const sessionSizes = {
240
+ short: 35e3,
241
+ // 2hr session
242
+ medium: 78e3,
243
+ // 4hr session
244
+ long: 142e3,
245
+ // 8hr session
246
+ actual: avgConversationTokens
247
+ };
248
+ console.log("\n Compression Ratios (using actual handoff size):");
249
+ console.log(` Handoff size: ${formatNumber(avgHandoffTokens)} tokens
250
+ `);
251
+ for (const [label, size] of Object.entries(sessionSizes)) {
252
+ const reduction = ((size - avgHandoffTokens) / size * 100).toFixed(1);
253
+ const saved = size - avgHandoffTokens;
254
+ console.log(
255
+ ` ${label.padEnd(8)}: ${formatNumber(size)} -> ${formatNumber(avgHandoffTokens)} = ${reduction}% reduction (${formatNumber(saved)} saved)`
256
+ );
257
+ }
258
+ console.log("");
259
+ console.log("6. CONTEXT WINDOW IMPACT");
260
+ console.log("------------------------");
261
+ const contextWindow = 2e5;
262
+ const systemPrompt = 2e3;
263
+ const currentTools = 1e4;
264
+ const withoutHandoff = {
265
+ used: systemPrompt + avgConversationTokens + currentTools,
266
+ available: 0
267
+ };
268
+ withoutHandoff.available = contextWindow - withoutHandoff.used;
269
+ const withHandoff = {
270
+ used: systemPrompt + avgHandoffTokens + currentTools,
271
+ available: 0
272
+ };
273
+ withHandoff.available = contextWindow - withHandoff.used;
274
+ console.log(` Context window: ${formatNumber(contextWindow)} tokens`);
275
+ console.log(` System prompt: ${formatNumber(systemPrompt)} tokens`);
276
+ console.log(` Current tools: ${formatNumber(currentTools)} tokens
277
+ `);
278
+ console.log(" WITHOUT HANDOFF:");
279
+ console.log(
280
+ ` Conversation history: ${formatNumber(avgConversationTokens)} tokens`
281
+ );
282
+ console.log(` Total used: ${formatNumber(withoutHandoff.used)} tokens`);
283
+ console.log(
284
+ ` Available for work: ${formatNumber(withoutHandoff.available)} tokens (${(withoutHandoff.available / contextWindow * 100).toFixed(1)}%)`
285
+ );
286
+ console.log("");
287
+ console.log(" WITH HANDOFF:");
288
+ console.log(` Handoff summary: ${formatNumber(avgHandoffTokens)} tokens`);
289
+ console.log(` Total used: ${formatNumber(withHandoff.used)} tokens`);
290
+ console.log(
291
+ ` Available for work: ${formatNumber(withHandoff.available)} tokens (${(withHandoff.available / contextWindow * 100).toFixed(1)}%)`
292
+ );
293
+ console.log("");
294
+ const improvement = withHandoff.available - withoutHandoff.available;
295
+ const improvementPct = (improvement / withoutHandoff.available * 100).toFixed(1);
296
+ console.log(
297
+ ` IMPROVEMENT: +${formatNumber(improvement)} tokens (+${improvementPct}% more capacity)`
298
+ );
299
+ console.log("\n========================================");
300
+ console.log(" SUMMARY");
301
+ console.log("========================================\n");
302
+ const actualReduction = ((avgConversationTokens - avgHandoffTokens) / avgConversationTokens * 100).toFixed(1);
303
+ console.log(
304
+ ` Actual handoff size: ${formatNumber(avgHandoffTokens)} tokens`
305
+ );
306
+ console.log(
307
+ ` Actual conversation size: ${formatNumber(avgConversationTokens)} tokens`
308
+ );
309
+ console.log(` Actual compression: ${actualReduction}%`);
310
+ console.log(` Actual context freed: ${formatNumber(improvement)} tokens`);
311
+ console.log("");
312
+ console.log(" CLAIM VALIDATION:");
313
+ console.log(" -----------------");
314
+ const claimedReduction = "85-98%";
315
+ const claimedHandoff = "1K-5K tokens";
316
+ const claimedConversation = "50K-150K tokens";
317
+ console.log(` Claimed reduction: ${claimedReduction}`);
318
+ console.log(` Measured reduction: ${actualReduction}%`);
319
+ console.log(
320
+ ` Status: ${parseFloat(actualReduction) >= 85 ? "VALIDATED" : "NEEDS REVISION"}`
321
+ );
322
+ console.log("");
323
+ console.log(` Claimed handoff size: ${claimedHandoff}`);
324
+ console.log(
325
+ ` Measured handoff size: ${formatNumber(avgHandoffTokens)} tokens`
326
+ );
327
+ console.log(
328
+ ` Status: ${avgHandoffTokens >= 1e3 && avgHandoffTokens <= 5e3 ? "VALIDATED" : "NEEDS REVISION"}`
329
+ );
330
+ console.log("");
331
+ console.log(` Claimed conversation: ${claimedConversation}`);
332
+ console.log(
333
+ ` Measured conversation: ${formatNumber(avgConversationTokens)} tokens`
334
+ );
335
+ console.log(
336
+ ` Status: ${avgConversationTokens >= 5e4 && avgConversationTokens <= 15e4 ? "VALIDATED" : "NEEDS REVISION"}`
337
+ );
338
+ }
339
+ main().catch(console.error);
340
+ //# sourceMappingURL=measure-handoff-impact.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../scripts/measure-handoff-impact.ts"],
4
+ "sourcesContent": ["#!/usr/bin/env npx ts-node\n/**\n * Measure actual handoff context impact with real data\n * Validates claims about token savings\n */\n\nimport { readFileSync, existsSync, readdirSync, statSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport Database from 'better-sqlite3';\n\ninterface TokenMetrics {\n source: string;\n charCount: number;\n estimatedTokens: number;\n lineCount: number;\n}\n\ninterface HandoffMetrics {\n handoffId: string;\n handoffTokens: number;\n handoffChars: number;\n createdAt: string;\n}\n\ninterface SessionMetrics {\n sessionId: string;\n frameCount: number;\n eventCount: number;\n estimatedSessionTokens: number;\n}\n\n// Token estimation considering code vs prose\nfunction estimateTokensAccurate(text: string): number {\n const baseEstimate = text.length / 3.5;\n\n // Check if code-heavy (more tokens per char)\n const codeIndicators = (text.match(/[{}\\[\\]();=]/g) || []).length;\n const codeScore = (codeIndicators / text.length) * 100;\n\n if (codeScore > 5) {\n return Math.ceil(baseEstimate * 1.2);\n }\n return Math.ceil(baseEstimate);\n}\n\nfunction measureHandoffs(): HandoffMetrics[] {\n const handoffPath = join(homedir(), '.stackmemory', 'context.db');\n const metrics: HandoffMetrics[] = [];\n\n if (!existsSync(handoffPath)) {\n console.log('No context.db found at', handoffPath);\n return metrics;\n }\n\n try {\n const db = new Database(handoffPath, { readonly: true });\n\n // Check if handoff_requests table exists\n const tableCheck = db\n .prepare(\n `\n SELECT name FROM sqlite_master\n WHERE type='table' AND name='handoff_requests'\n `\n )\n .get();\n\n if (!tableCheck) {\n console.log('No handoff_requests table found');\n db.close();\n return metrics;\n }\n\n const handoffs = db\n .prepare(\n `\n SELECT id, message, created_at\n FROM handoff_requests\n ORDER BY created_at DESC\n LIMIT 10\n `\n )\n .all() as Array<{ id: string; message: string; created_at: number }>;\n\n for (const h of handoffs) {\n const message = h.message || '';\n metrics.push({\n handoffId: h.id,\n handoffChars: message.length,\n handoffTokens: estimateTokensAccurate(message),\n createdAt: new Date(h.created_at).toISOString(),\n });\n }\n\n db.close();\n } catch (err) {\n console.log('Error reading handoffs:', err);\n }\n\n return metrics;\n}\n\nfunction measureLastHandoffFile(): TokenMetrics | null {\n const handoffPath = join(process.cwd(), '.stackmemory', 'last-handoff.md');\n\n if (!existsSync(handoffPath)) {\n // Try home directory\n const homeHandoff = join(homedir(), '.stackmemory', 'last-handoff.md');\n if (!existsSync(homeHandoff)) {\n return null;\n }\n const content = readFileSync(homeHandoff, 'utf-8');\n return {\n source: homeHandoff,\n charCount: content.length,\n estimatedTokens: estimateTokensAccurate(content),\n lineCount: content.split('\\n').length,\n };\n }\n\n const content = readFileSync(handoffPath, 'utf-8');\n return {\n source: handoffPath,\n charCount: content.length,\n estimatedTokens: estimateTokensAccurate(content),\n lineCount: content.split('\\n').length,\n };\n}\n\nfunction measureClaudeConversations(): TokenMetrics[] {\n const claudeProjectsDir = join(homedir(), '.claude', 'projects');\n const metrics: TokenMetrics[] = [];\n\n if (!existsSync(claudeProjectsDir)) {\n return metrics;\n }\n\n // Find conversation files\n const projectDirs = readdirSync(claudeProjectsDir);\n\n for (const dir of projectDirs.slice(0, 5)) {\n const projectPath = join(claudeProjectsDir, dir);\n const stat = statSync(projectPath);\n\n if (stat.isDirectory()) {\n const files = readdirSync(projectPath).filter((f) =>\n f.endsWith('.jsonl')\n );\n\n for (const file of files.slice(0, 3)) {\n const filePath = join(projectPath, file);\n try {\n const content = readFileSync(filePath, 'utf-8');\n metrics.push({\n source: file,\n charCount: content.length,\n estimatedTokens: estimateTokensAccurate(content),\n lineCount: content.split('\\n').length,\n });\n } catch {\n // Skip unreadable files\n }\n }\n }\n }\n\n return metrics;\n}\n\nfunction measureFramesAndEvents(): SessionMetrics | null {\n const dbPath = join(homedir(), '.stackmemory', 'context.db');\n\n if (!existsSync(dbPath)) {\n return null;\n }\n\n try {\n const db = new Database(dbPath, { readonly: true });\n\n // Get frame count and content\n const frameResult = db\n .prepare(\n `\n SELECT COUNT(*) as count,\n SUM(LENGTH(COALESCE(name, '') || COALESCE(json(inputs), '') || COALESCE(json(outputs), '') || COALESCE(json(digest_json), ''))) as totalChars\n FROM frames\n `\n )\n .get() as { count: number; totalChars: number } | undefined;\n\n // Get event count and content\n const eventResult = db\n .prepare(\n `\n SELECT COUNT(*) as count,\n SUM(LENGTH(COALESCE(event_type, '') || COALESCE(json(payload), ''))) as totalChars\n FROM events\n `\n )\n .get() as { count: number; totalChars: number } | undefined;\n\n db.close();\n\n const frameChars = frameResult?.totalChars || 0;\n const eventChars = eventResult?.totalChars || 0;\n const totalChars = frameChars + eventChars;\n\n return {\n sessionId: 'aggregate',\n frameCount: frameResult?.count || 0,\n eventCount: eventResult?.count || 0,\n estimatedSessionTokens: estimateTokensAccurate(\n String(totalChars).repeat(Math.floor(totalChars / 10) || 1)\n ),\n };\n } catch (err) {\n console.log('Error measuring frames/events:', err);\n return null;\n }\n}\n\nfunction formatNumber(n: number): string {\n if (n >= 1000) {\n return (n / 1000).toFixed(1) + 'K';\n }\n return n.toString();\n}\n\nasync function main() {\n console.log('========================================');\n console.log(' HANDOFF CONTEXT IMPACT ANALYSIS');\n console.log(' (Actual Measurements)');\n console.log('========================================\\n');\n\n // 1. Measure last handoff file\n console.log('1. LAST HANDOFF FILE');\n console.log('--------------------');\n const lastHandoff = measureLastHandoffFile();\n if (lastHandoff) {\n console.log(` Source: ${lastHandoff.source}`);\n console.log(` Characters: ${formatNumber(lastHandoff.charCount)}`);\n console.log(` Lines: ${lastHandoff.lineCount}`);\n console.log(\n ` Estimated tokens: ${formatNumber(lastHandoff.estimatedTokens)}`\n );\n } else {\n console.log(' No handoff file found');\n }\n console.log('');\n\n // 2. Measure handoffs from database\n console.log('2. HANDOFFS FROM DATABASE');\n console.log('-------------------------');\n const handoffs = measureHandoffs();\n if (handoffs.length > 0) {\n let totalTokens = 0;\n for (const h of handoffs) {\n console.log(\n ` ${h.handoffId.slice(0, 8)}: ${formatNumber(h.handoffTokens)} tokens (${formatNumber(h.handoffChars)} chars)`\n );\n totalTokens += h.handoffTokens;\n }\n const avgTokens = Math.round(totalTokens / handoffs.length);\n console.log(` Average: ${formatNumber(avgTokens)} tokens per handoff`);\n } else {\n console.log(' No handoffs in database');\n }\n console.log('');\n\n // 3. Measure Claude conversation files\n console.log('3. CLAUDE CONVERSATION FILES');\n console.log('----------------------------');\n const conversations = measureClaudeConversations();\n if (conversations.length > 0) {\n let totalConvTokens = 0;\n let maxConvTokens = 0;\n for (const c of conversations) {\n console.log(\n ` ${c.source}: ${formatNumber(c.estimatedTokens)} tokens (${formatNumber(c.charCount)} chars, ${c.lineCount} lines)`\n );\n totalConvTokens += c.estimatedTokens;\n maxConvTokens = Math.max(maxConvTokens, c.estimatedTokens);\n }\n const avgConvTokens = Math.round(totalConvTokens / conversations.length);\n console.log(\n ` Average: ${formatNumber(avgConvTokens)} tokens per conversation`\n );\n console.log(` Max: ${formatNumber(maxConvTokens)} tokens`);\n } else {\n console.log(' No conversation files found');\n }\n console.log('');\n\n // 4. Measure StackMemory database\n console.log('4. STACKMEMORY DATABASE CONTENT');\n console.log('-------------------------------');\n const dbMetrics = measureFramesAndEvents();\n if (dbMetrics) {\n console.log(` Frames: ${dbMetrics.frameCount}`);\n console.log(` Events: ${dbMetrics.eventCount}`);\n console.log(\n ` Total stored data: ~${formatNumber(dbMetrics.estimatedSessionTokens)} tokens equivalent`\n );\n } else {\n console.log(' No database metrics available');\n }\n console.log('');\n\n // 5. Calculate compression ratios\n console.log('5. COMPRESSION ANALYSIS');\n console.log('-----------------------');\n\n const avgHandoffTokens =\n handoffs.length > 0\n ? Math.round(\n handoffs.reduce((sum, h) => sum + h.handoffTokens, 0) /\n handoffs.length\n )\n : lastHandoff?.estimatedTokens || 2000;\n\n const avgConversationTokens =\n conversations.length > 0\n ? Math.round(\n conversations.reduce((sum, c) => sum + c.estimatedTokens, 0) /\n conversations.length\n )\n : 80000;\n\n // Typical session sizes based on actual data\n const sessionSizes = {\n short: 35000, // 2hr session\n medium: 78000, // 4hr session\n long: 142000, // 8hr session\n actual: avgConversationTokens,\n };\n\n console.log('\\n Compression Ratios (using actual handoff size):');\n console.log(` Handoff size: ${formatNumber(avgHandoffTokens)} tokens\\n`);\n\n for (const [label, size] of Object.entries(sessionSizes)) {\n const reduction = (((size - avgHandoffTokens) / size) * 100).toFixed(1);\n const saved = size - avgHandoffTokens;\n console.log(\n ` ${label.padEnd(8)}: ${formatNumber(size)} -> ${formatNumber(avgHandoffTokens)} = ${reduction}% reduction (${formatNumber(saved)} saved)`\n );\n }\n\n console.log('');\n\n // 6. Context window impact\n console.log('6. CONTEXT WINDOW IMPACT');\n console.log('------------------------');\n const contextWindow = 200000;\n const systemPrompt = 2000;\n const currentTools = 10000;\n\n const withoutHandoff = {\n used: systemPrompt + avgConversationTokens + currentTools,\n available: 0,\n };\n withoutHandoff.available = contextWindow - withoutHandoff.used;\n\n const withHandoff = {\n used: systemPrompt + avgHandoffTokens + currentTools,\n available: 0,\n };\n withHandoff.available = contextWindow - withHandoff.used;\n\n console.log(` Context window: ${formatNumber(contextWindow)} tokens`);\n console.log(` System prompt: ${formatNumber(systemPrompt)} tokens`);\n console.log(` Current tools: ${formatNumber(currentTools)} tokens\\n`);\n\n console.log(' WITHOUT HANDOFF:');\n console.log(\n ` Conversation history: ${formatNumber(avgConversationTokens)} tokens`\n );\n console.log(` Total used: ${formatNumber(withoutHandoff.used)} tokens`);\n console.log(\n ` Available for work: ${formatNumber(withoutHandoff.available)} tokens (${((withoutHandoff.available / contextWindow) * 100).toFixed(1)}%)`\n );\n console.log('');\n\n console.log(' WITH HANDOFF:');\n console.log(` Handoff summary: ${formatNumber(avgHandoffTokens)} tokens`);\n console.log(` Total used: ${formatNumber(withHandoff.used)} tokens`);\n console.log(\n ` Available for work: ${formatNumber(withHandoff.available)} tokens (${((withHandoff.available / contextWindow) * 100).toFixed(1)}%)`\n );\n console.log('');\n\n const improvement = withHandoff.available - withoutHandoff.available;\n const improvementPct = (\n (improvement / withoutHandoff.available) *\n 100\n ).toFixed(1);\n console.log(\n ` IMPROVEMENT: +${formatNumber(improvement)} tokens (+${improvementPct}% more capacity)`\n );\n\n console.log('\\n========================================');\n console.log(' SUMMARY');\n console.log('========================================\\n');\n\n const actualReduction = (\n ((avgConversationTokens - avgHandoffTokens) / avgConversationTokens) *\n 100\n ).toFixed(1);\n\n console.log(\n ` Actual handoff size: ${formatNumber(avgHandoffTokens)} tokens`\n );\n console.log(\n ` Actual conversation size: ${formatNumber(avgConversationTokens)} tokens`\n );\n console.log(` Actual compression: ${actualReduction}%`);\n console.log(` Actual context freed: ${formatNumber(improvement)} tokens`);\n console.log('');\n\n // Validate claims from document\n console.log(' CLAIM VALIDATION:');\n console.log(' -----------------');\n const claimedReduction = '85-98%';\n const claimedHandoff = '1K-5K tokens';\n const claimedConversation = '50K-150K tokens';\n\n console.log(` Claimed reduction: ${claimedReduction}`);\n console.log(` Measured reduction: ${actualReduction}%`);\n console.log(\n ` Status: ${parseFloat(actualReduction) >= 85 ? 'VALIDATED' : 'NEEDS REVISION'}`\n );\n console.log('');\n console.log(` Claimed handoff size: ${claimedHandoff}`);\n console.log(\n ` Measured handoff size: ${formatNumber(avgHandoffTokens)} tokens`\n );\n console.log(\n ` Status: ${avgHandoffTokens >= 1000 && avgHandoffTokens <= 5000 ? 'VALIDATED' : 'NEEDS REVISION'}`\n );\n console.log('');\n console.log(` Claimed conversation: ${claimedConversation}`);\n console.log(\n ` Measured conversation: ${formatNumber(avgConversationTokens)} tokens`\n );\n console.log(\n ` Status: ${avgConversationTokens >= 50000 && avgConversationTokens <= 150000 ? 'VALIDATED' : 'NEEDS REVISION'}`\n );\n}\n\nmain().catch(console.error);\n"],
5
+ "mappings": ";;;;;AAMA,SAAS,cAAc,YAAY,aAAa,gBAAgB;AAChE,SAAS,YAAY;AACrB,SAAS,eAAe;AACxB,OAAO,cAAc;AAwBrB,SAAS,uBAAuB,MAAsB;AACpD,QAAM,eAAe,KAAK,SAAS;AAGnC,QAAM,kBAAkB,KAAK,MAAM,eAAe,KAAK,CAAC,GAAG;AAC3D,QAAM,YAAa,iBAAiB,KAAK,SAAU;AAEnD,MAAI,YAAY,GAAG;AACjB,WAAO,KAAK,KAAK,eAAe,GAAG;AAAA,EACrC;AACA,SAAO,KAAK,KAAK,YAAY;AAC/B;AAEA,SAAS,kBAAoC;AAC3C,QAAM,cAAc,KAAK,QAAQ,GAAG,gBAAgB,YAAY;AAChE,QAAM,UAA4B,CAAC;AAEnC,MAAI,CAAC,WAAW,WAAW,GAAG;AAC5B,YAAQ,IAAI,0BAA0B,WAAW;AACjD,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,KAAK,IAAI,SAAS,aAAa,EAAE,UAAU,KAAK,CAAC;AAGvD,UAAM,aAAa,GAChB;AAAA,MACC;AAAA;AAAA;AAAA;AAAA,IAIF,EACC,IAAI;AAEP,QAAI,CAAC,YAAY;AACf,cAAQ,IAAI,iCAAiC;AAC7C,SAAG,MAAM;AACT,aAAO;AAAA,IACT;AAEA,UAAM,WAAW,GACd;AAAA,MACC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMF,EACC,IAAI;AAEP,eAAW,KAAK,UAAU;AACxB,YAAM,UAAU,EAAE,WAAW;AAC7B,cAAQ,KAAK;AAAA,QACX,WAAW,EAAE;AAAA,QACb,cAAc,QAAQ;AAAA,QACtB,eAAe,uBAAuB,OAAO;AAAA,QAC7C,WAAW,IAAI,KAAK,EAAE,UAAU,EAAE,YAAY;AAAA,MAChD,CAAC;AAAA,IACH;AAEA,OAAG,MAAM;AAAA,EACX,SAAS,KAAK;AACZ,YAAQ,IAAI,2BAA2B,GAAG;AAAA,EAC5C;AAEA,SAAO;AACT;AAEA,SAAS,yBAA8C;AACrD,QAAM,cAAc,KAAK,QAAQ,IAAI,GAAG,gBAAgB,iBAAiB;AAEzE,MAAI,CAAC,WAAW,WAAW,GAAG;AAE5B,UAAM,cAAc,KAAK,QAAQ,GAAG,gBAAgB,iBAAiB;AACrE,QAAI,CAAC,WAAW,WAAW,GAAG;AAC5B,aAAO;AAAA,IACT;AACA,UAAMA,WAAU,aAAa,aAAa,OAAO;AACjD,WAAO;AAAA,MACL,QAAQ;AAAA,MACR,WAAWA,SAAQ;AAAA,MACnB,iBAAiB,uBAAuBA,QAAO;AAAA,MAC/C,WAAWA,SAAQ,MAAM,IAAI,EAAE;AAAA,IACjC;AAAA,EACF;AAEA,QAAM,UAAU,aAAa,aAAa,OAAO;AACjD,SAAO;AAAA,IACL,QAAQ;AAAA,IACR,WAAW,QAAQ;AAAA,IACnB,iBAAiB,uBAAuB,OAAO;AAAA,IAC/C,WAAW,QAAQ,MAAM,IAAI,EAAE;AAAA,EACjC;AACF;AAEA,SAAS,6BAA6C;AACpD,QAAM,oBAAoB,KAAK,QAAQ,GAAG,WAAW,UAAU;AAC/D,QAAM,UAA0B,CAAC;AAEjC,MAAI,CAAC,WAAW,iBAAiB,GAAG;AAClC,WAAO;AAAA,EACT;AAGA,QAAM,cAAc,YAAY,iBAAiB;AAEjD,aAAW,OAAO,YAAY,MAAM,GAAG,CAAC,GAAG;AACzC,UAAM,cAAc,KAAK,mBAAmB,GAAG;AAC/C,UAAM,OAAO,SAAS,WAAW;AAEjC,QAAI,KAAK,YAAY,GAAG;AACtB,YAAM,QAAQ,YAAY,WAAW,EAAE;AAAA,QAAO,CAAC,MAC7C,EAAE,SAAS,QAAQ;AAAA,MACrB;AAEA,iBAAW,QAAQ,MAAM,MAAM,GAAG,CAAC,GAAG;AACpC,cAAM,WAAW,KAAK,aAAa,IAAI;AACvC,YAAI;AACF,gBAAM,UAAU,aAAa,UAAU,OAAO;AAC9C,kBAAQ,KAAK;AAAA,YACX,QAAQ;AAAA,YACR,WAAW,QAAQ;AAAA,YACnB,iBAAiB,uBAAuB,OAAO;AAAA,YAC/C,WAAW,QAAQ,MAAM,IAAI,EAAE;AAAA,UACjC,CAAC;AAAA,QACH,QAAQ;AAAA,QAER;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;AAEA,SAAS,yBAAgD;AACvD,QAAM,SAAS,KAAK,QAAQ,GAAG,gBAAgB,YAAY;AAE3D,MAAI,CAAC,WAAW,MAAM,GAAG;AACvB,WAAO;AAAA,EACT;AAEA,MAAI;AACF,UAAM,KAAK,IAAI,SAAS,QAAQ,EAAE,UAAU,KAAK,CAAC;AAGlD,UAAM,cAAc,GACjB;AAAA,MACC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKF,EACC,IAAI;AAGP,UAAM,cAAc,GACjB;AAAA,MACC;AAAA;AAAA;AAAA;AAAA;AAAA,IAKF,EACC,IAAI;AAEP,OAAG,MAAM;AAET,UAAM,aAAa,aAAa,cAAc;AAC9C,UAAM,aAAa,aAAa,cAAc;AAC9C,UAAM,aAAa,aAAa;AAEhC,WAAO;AAAA,MACL,WAAW;AAAA,MACX,YAAY,aAAa,SAAS;AAAA,MAClC,YAAY,aAAa,SAAS;AAAA,MAClC,wBAAwB;AAAA,QACtB,OAAO,UAAU,EAAE,OAAO,KAAK,MAAM,aAAa,EAAE,KAAK,CAAC;AAAA,MAC5D;AAAA,IACF;AAAA,EACF,SAAS,KAAK;AACZ,YAAQ,IAAI,kCAAkC,GAAG;AACjD,WAAO;AAAA,EACT;AACF;AAEA,SAAS,aAAa,GAAmB;AACvC,MAAI,KAAK,KAAM;AACb,YAAQ,IAAI,KAAM,QAAQ,CAAC,IAAI;AAAA,EACjC;AACA,SAAO,EAAE,SAAS;AACpB;AAEA,eAAe,OAAO;AACpB,UAAQ,IAAI,0CAA0C;AACtD,UAAQ,IAAI,oCAAoC;AAChD,UAAQ,IAAI,0BAA0B;AACtC,UAAQ,IAAI,4CAA4C;AAGxD,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,sBAAsB;AAClC,QAAM,cAAc,uBAAuB;AAC3C,MAAI,aAAa;AACf,YAAQ,IAAI,cAAc,YAAY,MAAM,EAAE;AAC9C,YAAQ,IAAI,kBAAkB,aAAa,YAAY,SAAS,CAAC,EAAE;AACnE,YAAQ,IAAI,aAAa,YAAY,SAAS,EAAE;AAChD,YAAQ;AAAA,MACN,wBAAwB,aAAa,YAAY,eAAe,CAAC;AAAA,IACnE;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,0BAA0B;AAAA,EACxC;AACA,UAAQ,IAAI,EAAE;AAGd,UAAQ,IAAI,2BAA2B;AACvC,UAAQ,IAAI,2BAA2B;AACvC,QAAM,WAAW,gBAAgB;AACjC,MAAI,SAAS,SAAS,GAAG;AACvB,QAAI,cAAc;AAClB,eAAW,KAAK,UAAU;AACxB,cAAQ;AAAA,QACN,MAAM,EAAE,UAAU,MAAM,GAAG,CAAC,CAAC,KAAK,aAAa,EAAE,aAAa,CAAC,YAAY,aAAa,EAAE,YAAY,CAAC;AAAA,MACzG;AACA,qBAAe,EAAE;AAAA,IACnB;AACA,UAAM,YAAY,KAAK,MAAM,cAAc,SAAS,MAAM;AAC1D,YAAQ,IAAI,eAAe,aAAa,SAAS,CAAC,qBAAqB;AAAA,EACzE,OAAO;AACL,YAAQ,IAAI,4BAA4B;AAAA,EAC1C;AACA,UAAQ,IAAI,EAAE;AAGd,UAAQ,IAAI,8BAA8B;AAC1C,UAAQ,IAAI,8BAA8B;AAC1C,QAAM,gBAAgB,2BAA2B;AACjD,MAAI,cAAc,SAAS,GAAG;AAC5B,QAAI,kBAAkB;AACtB,QAAI,gBAAgB;AACpB,eAAW,KAAK,eAAe;AAC7B,cAAQ;AAAA,QACN,MAAM,EAAE,MAAM,KAAK,aAAa,EAAE,eAAe,CAAC,YAAY,aAAa,EAAE,SAAS,CAAC,WAAW,EAAE,SAAS;AAAA,MAC/G;AACA,yBAAmB,EAAE;AACrB,sBAAgB,KAAK,IAAI,eAAe,EAAE,eAAe;AAAA,IAC3D;AACA,UAAM,gBAAgB,KAAK,MAAM,kBAAkB,cAAc,MAAM;AACvE,YAAQ;AAAA,MACN,eAAe,aAAa,aAAa,CAAC;AAAA,IAC5C;AACA,YAAQ,IAAI,WAAW,aAAa,aAAa,CAAC,SAAS;AAAA,EAC7D,OAAO;AACL,YAAQ,IAAI,gCAAgC;AAAA,EAC9C;AACA,UAAQ,IAAI,EAAE;AAGd,UAAQ,IAAI,iCAAiC;AAC7C,UAAQ,IAAI,iCAAiC;AAC7C,QAAM,YAAY,uBAAuB;AACzC,MAAI,WAAW;AACb,YAAQ,IAAI,cAAc,UAAU,UAAU,EAAE;AAChD,YAAQ,IAAI,cAAc,UAAU,UAAU,EAAE;AAChD,YAAQ;AAAA,MACN,0BAA0B,aAAa,UAAU,sBAAsB,CAAC;AAAA,IAC1E;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,kCAAkC;AAAA,EAChD;AACA,UAAQ,IAAI,EAAE;AAGd,UAAQ,IAAI,yBAAyB;AACrC,UAAQ,IAAI,yBAAyB;AAErC,QAAM,mBACJ,SAAS,SAAS,IACd,KAAK;AAAA,IACH,SAAS,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,eAAe,CAAC,IAClD,SAAS;AAAA,EACb,IACA,aAAa,mBAAmB;AAEtC,QAAM,wBACJ,cAAc,SAAS,IACnB,KAAK;AAAA,IACH,cAAc,OAAO,CAAC,KAAK,MAAM,MAAM,EAAE,iBAAiB,CAAC,IACzD,cAAc;AAAA,EAClB,IACA;AAGN,QAAM,eAAe;AAAA,IACnB,OAAO;AAAA;AAAA,IACP,QAAQ;AAAA;AAAA,IACR,MAAM;AAAA;AAAA,IACN,QAAQ;AAAA,EACV;AAEA,UAAQ,IAAI,sDAAsD;AAClE,UAAQ,IAAI,oBAAoB,aAAa,gBAAgB,CAAC;AAAA,CAAW;AAEzE,aAAW,CAAC,OAAO,IAAI,KAAK,OAAO,QAAQ,YAAY,GAAG;AACxD,UAAM,cAAe,OAAO,oBAAoB,OAAQ,KAAK,QAAQ,CAAC;AACtE,UAAM,QAAQ,OAAO;AACrB,YAAQ;AAAA,MACN,MAAM,MAAM,OAAO,CAAC,CAAC,KAAK,aAAa,IAAI,CAAC,OAAO,aAAa,gBAAgB,CAAC,MAAM,SAAS,gBAAgB,aAAa,KAAK,CAAC;AAAA,IACrI;AAAA,EACF;AAEA,UAAQ,IAAI,EAAE;AAGd,UAAQ,IAAI,0BAA0B;AACtC,UAAQ,IAAI,0BAA0B;AACtC,QAAM,gBAAgB;AACtB,QAAM,eAAe;AACrB,QAAM,eAAe;AAErB,QAAM,iBAAiB;AAAA,IACrB,MAAM,eAAe,wBAAwB;AAAA,IAC7C,WAAW;AAAA,EACb;AACA,iBAAe,YAAY,gBAAgB,eAAe;AAE1D,QAAM,cAAc;AAAA,IAClB,MAAM,eAAe,mBAAmB;AAAA,IACxC,WAAW;AAAA,EACb;AACA,cAAY,YAAY,gBAAgB,YAAY;AAEpD,UAAQ,IAAI,sBAAsB,aAAa,aAAa,CAAC,SAAS;AACtE,UAAQ,IAAI,qBAAqB,aAAa,YAAY,CAAC,SAAS;AACpE,UAAQ,IAAI,qBAAqB,aAAa,YAAY,CAAC;AAAA,CAAW;AAEtE,UAAQ,IAAI,qBAAqB;AACjC,UAAQ;AAAA,IACN,8BAA8B,aAAa,qBAAqB,CAAC;AAAA,EACnE;AACA,UAAQ,IAAI,oBAAoB,aAAa,eAAe,IAAI,CAAC,SAAS;AAC1E,UAAQ;AAAA,IACN,4BAA4B,aAAa,eAAe,SAAS,CAAC,aAAc,eAAe,YAAY,gBAAiB,KAAK,QAAQ,CAAC,CAAC;AAAA,EAC7I;AACA,UAAQ,IAAI,EAAE;AAEd,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI,yBAAyB,aAAa,gBAAgB,CAAC,SAAS;AAC5E,UAAQ,IAAI,oBAAoB,aAAa,YAAY,IAAI,CAAC,SAAS;AACvE,UAAQ;AAAA,IACN,4BAA4B,aAAa,YAAY,SAAS,CAAC,aAAc,YAAY,YAAY,gBAAiB,KAAK,QAAQ,CAAC,CAAC;AAAA,EACvI;AACA,UAAQ,IAAI,EAAE;AAEd,QAAM,cAAc,YAAY,YAAY,eAAe;AAC3D,QAAM,kBACH,cAAc,eAAe,YAC9B,KACA,QAAQ,CAAC;AACX,UAAQ;AAAA,IACN,oBAAoB,aAAa,WAAW,CAAC,aAAa,cAAc;AAAA,EAC1E;AAEA,UAAQ,IAAI,4CAA4C;AACxD,UAAQ,IAAI,YAAY;AACxB,UAAQ,IAAI,4CAA4C;AAExD,QAAM,oBACF,wBAAwB,oBAAoB,wBAC9C,KACA,QAAQ,CAAC;AAEX,UAAQ;AAAA,IACN,2BAA2B,aAAa,gBAAgB,CAAC;AAAA,EAC3D;AACA,UAAQ;AAAA,IACN,gCAAgC,aAAa,qBAAqB,CAAC;AAAA,EACrE;AACA,UAAQ,IAAI,0BAA0B,eAAe,GAAG;AACxD,UAAQ,IAAI,4BAA4B,aAAa,WAAW,CAAC,SAAS;AAC1E,UAAQ,IAAI,EAAE;AAGd,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,sBAAsB;AAClC,QAAM,mBAAmB;AACzB,QAAM,iBAAiB;AACvB,QAAM,sBAAsB;AAE5B,UAAQ,IAAI,yBAAyB,gBAAgB,EAAE;AACvD,UAAQ,IAAI,0BAA0B,eAAe,GAAG;AACxD,UAAQ;AAAA,IACN,cAAc,WAAW,eAAe,KAAK,KAAK,cAAc,gBAAgB;AAAA,EAClF;AACA,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,4BAA4B,cAAc,EAAE;AACxD,UAAQ;AAAA,IACN,6BAA6B,aAAa,gBAAgB,CAAC;AAAA,EAC7D;AACA,UAAQ;AAAA,IACN,cAAc,oBAAoB,OAAQ,oBAAoB,MAAO,cAAc,gBAAgB;AAAA,EACrG;AACA,UAAQ,IAAI,EAAE;AACd,UAAQ,IAAI,4BAA4B,mBAAmB,EAAE;AAC7D,UAAQ;AAAA,IACN,6BAA6B,aAAa,qBAAqB,CAAC;AAAA,EAClE;AACA,UAAQ;AAAA,IACN,cAAc,yBAAyB,OAAS,yBAAyB,OAAS,cAAc,gBAAgB;AAAA,EAClH;AACF;AAEA,KAAK,EAAE,MAAM,QAAQ,KAAK;",
6
+ "names": ["content"]
7
+ }
@@ -0,0 +1,160 @@
1
+ #!/usr/bin/env tsx
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const __filename = __fileURLToPath(import.meta.url);
5
+ const __dirname = __pathDirname(__filename);
6
+ import { ChromaClient } from "chromadb";
7
+ import dotenv from "dotenv";
8
+ import chalk from "chalk";
9
+ dotenv.config();
10
+ async function queryChromaDB() {
11
+ const apiKey = process.env.CHROMADB_API_KEY;
12
+ const tenant = process.env.CHROMADB_TENANT;
13
+ const database = process.env.CHROMADB_DATABASE || "stackmemory";
14
+ console.log(chalk.cyan("\u{1F50D} Querying ChromaDB Contexts\n"));
15
+ const client = new ChromaClient({
16
+ ssl: true,
17
+ host: "api.trychroma.com",
18
+ port: 443,
19
+ headers: {
20
+ "X-Chroma-Token": apiKey
21
+ },
22
+ tenant,
23
+ database
24
+ });
25
+ const collections = await client.listCollections();
26
+ console.log(chalk.yellow("\u{1F4DA} Available Collections:"));
27
+ collections.forEach((col) => {
28
+ console.log(` - ${col.name}`);
29
+ });
30
+ console.log();
31
+ let collection;
32
+ try {
33
+ collection = await client.getCollection({
34
+ name: "claude_context"
35
+ });
36
+ console.log(chalk.green("\u2713 Using collection: claude_context\n"));
37
+ } catch {
38
+ collection = await client.getCollection({
39
+ name: "stackmemory_contexts"
40
+ });
41
+ console.log(chalk.green("\u2713 Using collection: stackmemory_contexts\n"));
42
+ }
43
+ console.log(chalk.yellow("\u{1F4CA} Collection Stats:"));
44
+ const count = await collection.count();
45
+ console.log(` Total documents: ${count}
46
+ `);
47
+ console.log(chalk.cyan("\u{1F4DA} All Stored Contexts:\n"));
48
+ const allDocs = await collection.get({
49
+ limit: 100
50
+ });
51
+ if (allDocs.ids.length > 0) {
52
+ for (let i = 0; i < allDocs.ids.length; i++) {
53
+ const metadata = allDocs.metadatas[i];
54
+ const document = allDocs.documents[i];
55
+ console.log(chalk.green(`${i + 1}. ${allDocs.ids[i]}`));
56
+ console.log(` Type: ${metadata.type}`);
57
+ console.log(` Timestamp: ${metadata.timestamp}`);
58
+ console.log(` User: ${metadata.user_id}`);
59
+ console.log(` Project: ${metadata.project}`);
60
+ console.log(` Content: ${document?.substring(0, 100)}...`);
61
+ console.log();
62
+ }
63
+ }
64
+ console.log(chalk.cyan('\n\u{1F50E} Search Results for "TypeScript lint error":\n'));
65
+ const searchResults = await collection.query({
66
+ queryTexts: ["TypeScript lint error fix"],
67
+ nResults: 5
68
+ });
69
+ if (searchResults.ids[0].length > 0) {
70
+ for (let i = 0; i < searchResults.ids[0].length; i++) {
71
+ const metadata = searchResults.metadatas[0][i];
72
+ const document = searchResults.documents[0][i];
73
+ const distance = searchResults.distances[0][i];
74
+ console.log(chalk.yellow(`Match ${i + 1} (distance: ${distance.toFixed(3)}):`));
75
+ console.log(` ID: ${searchResults.ids[0][i]}`);
76
+ console.log(` Type: ${metadata.type}`);
77
+ console.log(` Timestamp: ${metadata.timestamp}`);
78
+ console.log(` Content: ${document?.substring(0, 150)}...`);
79
+ console.log();
80
+ }
81
+ } else {
82
+ console.log("No results found");
83
+ }
84
+ console.log(chalk.cyan("\n\u{1F4CB} Recent Task Completions:\n"));
85
+ const taskCompletions = await collection.get({
86
+ where: {
87
+ type: "task_complete"
88
+ },
89
+ limit: 10
90
+ });
91
+ if (taskCompletions.ids.length > 0) {
92
+ for (let i = 0; i < taskCompletions.ids.length; i++) {
93
+ const metadata = taskCompletions.metadatas[i];
94
+ const document = taskCompletions.documents[i];
95
+ console.log(chalk.green(`Task ${i + 1}:`));
96
+ console.log(` ID: ${taskCompletions.ids[i]}`);
97
+ console.log(` Timestamp: ${metadata.timestamp}`);
98
+ console.log(` Task ID: ${metadata.task_id}`);
99
+ console.log(` Duration: ${metadata.duration}ms`);
100
+ console.log(` Files Changed: ${metadata.files_changed}`);
101
+ console.log(` Content: ${document?.substring(0, 100)}...`);
102
+ console.log();
103
+ }
104
+ } else {
105
+ console.log("No task completions found");
106
+ }
107
+ console.log(chalk.cyan("\n\u23F0 Periodic Checkpoints:\n"));
108
+ const periodicSaves = await collection.get({
109
+ where: {
110
+ type: "periodic_save"
111
+ },
112
+ limit: 10
113
+ });
114
+ if (periodicSaves.ids.length > 0) {
115
+ for (let i = 0; i < periodicSaves.ids.length; i++) {
116
+ const metadata = periodicSaves.metadatas[i];
117
+ const document = periodicSaves.documents[i];
118
+ console.log(chalk.blue(`Checkpoint ${i + 1}:`));
119
+ console.log(` Timestamp: ${metadata.timestamp}`);
120
+ console.log(` Interval: ${metadata.interval}`);
121
+ console.log(` Active Files: ${metadata.active_files}`);
122
+ console.log(` Git Status: ${document?.substring(0, 150)}...`);
123
+ console.log();
124
+ }
125
+ } else {
126
+ console.log("No periodic saves found");
127
+ }
128
+ console.log(chalk.cyan("\n\u{1F4A1} Decisions Made:\n"));
129
+ const decisions = await collection.get({
130
+ where: {
131
+ type: "decision_made"
132
+ },
133
+ limit: 10
134
+ });
135
+ if (decisions.ids.length > 0) {
136
+ for (let i = 0; i < decisions.ids.length; i++) {
137
+ const metadata = decisions.metadatas[i];
138
+ const document = decisions.documents[i];
139
+ console.log(chalk.magenta(`Decision ${i + 1}:`));
140
+ console.log(` Category: ${metadata.category}`);
141
+ console.log(` Alternatives: ${metadata.alternatives}`);
142
+ console.log(` Reasoning: ${metadata.reasoning}`);
143
+ console.log(` Decision: ${document?.substring(0, 200)}...`);
144
+ console.log();
145
+ }
146
+ } else {
147
+ console.log("No decisions found");
148
+ }
149
+ console.log(chalk.cyan("\n\u{1F4C8} Context Types Summary:\n"));
150
+ const types = /* @__PURE__ */ new Map();
151
+ for (let i = 0; i < allDocs.ids.length; i++) {
152
+ const type = allDocs.metadatas[i].type || "unknown";
153
+ types.set(type, (types.get(type) || 0) + 1);
154
+ }
155
+ for (const [type, count2] of types.entries()) {
156
+ console.log(` ${type}: ${count2} documents`);
157
+ }
158
+ }
159
+ queryChromaDB().catch(console.error);
160
+ //# sourceMappingURL=query-chromadb.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../scripts/query-chromadb.ts"],
4
+ "sourcesContent": ["#!/usr/bin/env tsx\n\n/**\n * Query ChromaDB for stored contexts\n */\n\nimport { ChromaClient } from 'chromadb';\nimport dotenv from 'dotenv';\nimport chalk from 'chalk';\n\n// Load environment variables\ndotenv.config();\n\nasync function queryChromaDB() {\n const apiKey = process.env.CHROMADB_API_KEY;\n const tenant = process.env.CHROMADB_TENANT;\n const database = process.env.CHROMADB_DATABASE || 'stackmemory';\n\n console.log(chalk.cyan('\uD83D\uDD0D Querying ChromaDB Contexts\\n'));\n\n // Connect to ChromaDB\n const client = new ChromaClient({\n ssl: true,\n host: 'api.trychroma.com',\n port: 443,\n headers: {\n 'X-Chroma-Token': apiKey\n },\n tenant: tenant,\n database: database\n });\n\n // List all collections first\n const collections = await client.listCollections();\n console.log(chalk.yellow('\uD83D\uDCDA Available Collections:'));\n collections.forEach(col => {\n console.log(` - ${col.name}`);\n });\n console.log();\n\n // Get collection - try claude_context first (from hooks), then stackmemory_contexts\n let collection;\n try {\n collection = await client.getCollection({\n name: 'claude_context'\n });\n console.log(chalk.green('\u2713 Using collection: claude_context\\n'));\n } catch {\n collection = await client.getCollection({\n name: 'stackmemory_contexts'\n });\n console.log(chalk.green('\u2713 Using collection: stackmemory_contexts\\n'));\n }\n\n console.log(chalk.yellow('\uD83D\uDCCA Collection Stats:'));\n const count = await collection.count();\n console.log(` Total documents: ${count}\\n`);\n\n // Query 1: Get all documents\n console.log(chalk.cyan('\uD83D\uDCDA All Stored Contexts:\\n'));\n \n const allDocs = await collection.get({\n limit: 100\n });\n\n if (allDocs.ids.length > 0) {\n for (let i = 0; i < allDocs.ids.length; i++) {\n const metadata = allDocs.metadatas[i];\n const document = allDocs.documents[i];\n \n console.log(chalk.green(`${i + 1}. ${allDocs.ids[i]}`));\n console.log(` Type: ${metadata.type}`);\n console.log(` Timestamp: ${metadata.timestamp}`);\n console.log(` User: ${metadata.user_id}`);\n console.log(` Project: ${metadata.project}`);\n console.log(` Content: ${document?.substring(0, 100)}...`);\n console.log();\n }\n }\n\n // Query 2: Search for specific content\n console.log(chalk.cyan('\\n\uD83D\uDD0E Search Results for \"TypeScript lint error\":\\n'));\n \n const searchResults = await collection.query({\n queryTexts: ['TypeScript lint error fix'],\n nResults: 5\n });\n\n if (searchResults.ids[0].length > 0) {\n for (let i = 0; i < searchResults.ids[0].length; i++) {\n const metadata = searchResults.metadatas[0][i];\n const document = searchResults.documents[0][i];\n const distance = searchResults.distances[0][i];\n \n console.log(chalk.yellow(`Match ${i + 1} (distance: ${distance.toFixed(3)}):`));\n console.log(` ID: ${searchResults.ids[0][i]}`);\n console.log(` Type: ${metadata.type}`);\n console.log(` Timestamp: ${metadata.timestamp}`);\n console.log(` Content: ${document?.substring(0, 150)}...`);\n console.log();\n }\n } else {\n console.log('No results found');\n }\n\n // Query 3: Filter by metadata\n console.log(chalk.cyan('\\n\uD83D\uDCCB Recent Task Completions:\\n'));\n \n const taskCompletions = await collection.get({\n where: {\n type: 'task_complete'\n },\n limit: 10\n });\n\n if (taskCompletions.ids.length > 0) {\n for (let i = 0; i < taskCompletions.ids.length; i++) {\n const metadata = taskCompletions.metadatas[i];\n const document = taskCompletions.documents[i];\n \n console.log(chalk.green(`Task ${i + 1}:`));\n console.log(` ID: ${taskCompletions.ids[i]}`);\n console.log(` Timestamp: ${metadata.timestamp}`);\n console.log(` Task ID: ${metadata.task_id}`);\n console.log(` Duration: ${metadata.duration}ms`);\n console.log(` Files Changed: ${metadata.files_changed}`);\n console.log(` Content: ${document?.substring(0, 100)}...`);\n console.log();\n }\n } else {\n console.log('No task completions found');\n }\n\n // Query 4: Get periodic saves\n console.log(chalk.cyan('\\n\u23F0 Periodic Checkpoints:\\n'));\n \n const periodicSaves = await collection.get({\n where: {\n type: 'periodic_save'\n },\n limit: 10\n });\n\n if (periodicSaves.ids.length > 0) {\n for (let i = 0; i < periodicSaves.ids.length; i++) {\n const metadata = periodicSaves.metadatas[i];\n const document = periodicSaves.documents[i];\n \n console.log(chalk.blue(`Checkpoint ${i + 1}:`));\n console.log(` Timestamp: ${metadata.timestamp}`);\n console.log(` Interval: ${metadata.interval}`);\n console.log(` Active Files: ${metadata.active_files}`);\n console.log(` Git Status: ${document?.substring(0, 150)}...`);\n console.log();\n }\n } else {\n console.log('No periodic saves found');\n }\n\n // Query 5: Get decisions\n console.log(chalk.cyan('\\n\uD83D\uDCA1 Decisions Made:\\n'));\n \n const decisions = await collection.get({\n where: {\n type: 'decision_made'\n },\n limit: 10\n });\n\n if (decisions.ids.length > 0) {\n for (let i = 0; i < decisions.ids.length; i++) {\n const metadata = decisions.metadatas[i];\n const document = decisions.documents[i];\n \n console.log(chalk.magenta(`Decision ${i + 1}:`));\n console.log(` Category: ${metadata.category}`);\n console.log(` Alternatives: ${metadata.alternatives}`);\n console.log(` Reasoning: ${metadata.reasoning}`);\n console.log(` Decision: ${document?.substring(0, 200)}...`);\n console.log();\n }\n } else {\n console.log('No decisions found');\n }\n\n // Query 6: Group by type\n console.log(chalk.cyan('\\n\uD83D\uDCC8 Context Types Summary:\\n'));\n \n const types = new Map();\n for (let i = 0; i < allDocs.ids.length; i++) {\n const type = allDocs.metadatas[i].type || 'unknown';\n types.set(type, (types.get(type) || 0) + 1);\n }\n\n for (const [type, count] of types.entries()) {\n console.log(` ${type}: ${count} documents`);\n }\n}\n\n// Run query\nqueryChromaDB().catch(console.error);"],
5
+ "mappings": ";;;;;AAMA,SAAS,oBAAoB;AAC7B,OAAO,YAAY;AACnB,OAAO,WAAW;AAGlB,OAAO,OAAO;AAEd,eAAe,gBAAgB;AAC7B,QAAM,SAAS,QAAQ,IAAI;AAC3B,QAAM,SAAS,QAAQ,IAAI;AAC3B,QAAM,WAAW,QAAQ,IAAI,qBAAqB;AAElD,UAAQ,IAAI,MAAM,KAAK,wCAAiC,CAAC;AAGzD,QAAM,SAAS,IAAI,aAAa;AAAA,IAC9B,KAAK;AAAA,IACL,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,MACP,kBAAkB;AAAA,IACpB;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAGD,QAAM,cAAc,MAAM,OAAO,gBAAgB;AACjD,UAAQ,IAAI,MAAM,OAAO,kCAA2B,CAAC;AACrD,cAAY,QAAQ,SAAO;AACzB,YAAQ,IAAI,QAAQ,IAAI,IAAI,EAAE;AAAA,EAChC,CAAC;AACD,UAAQ,IAAI;AAGZ,MAAI;AACJ,MAAI;AACF,iBAAa,MAAM,OAAO,cAAc;AAAA,MACtC,MAAM;AAAA,IACR,CAAC;AACD,YAAQ,IAAI,MAAM,MAAM,2CAAsC,CAAC;AAAA,EACjE,QAAQ;AACN,iBAAa,MAAM,OAAO,cAAc;AAAA,MACtC,MAAM;AAAA,IACR,CAAC;AACD,YAAQ,IAAI,MAAM,MAAM,iDAA4C,CAAC;AAAA,EACvE;AAEA,UAAQ,IAAI,MAAM,OAAO,6BAAsB,CAAC;AAChD,QAAM,QAAQ,MAAM,WAAW,MAAM;AACrC,UAAQ,IAAI,uBAAuB,KAAK;AAAA,CAAI;AAG5C,UAAQ,IAAI,MAAM,KAAK,kCAA2B,CAAC;AAEnD,QAAM,UAAU,MAAM,WAAW,IAAI;AAAA,IACnC,OAAO;AAAA,EACT,CAAC;AAED,MAAI,QAAQ,IAAI,SAAS,GAAG;AAC1B,aAAS,IAAI,GAAG,IAAI,QAAQ,IAAI,QAAQ,KAAK;AAC3C,YAAM,WAAW,QAAQ,UAAU,CAAC;AACpC,YAAM,WAAW,QAAQ,UAAU,CAAC;AAEpC,cAAQ,IAAI,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC;AACtD,cAAQ,IAAI,YAAY,SAAS,IAAI,EAAE;AACvC,cAAQ,IAAI,iBAAiB,SAAS,SAAS,EAAE;AACjD,cAAQ,IAAI,YAAY,SAAS,OAAO,EAAE;AAC1C,cAAQ,IAAI,eAAe,SAAS,OAAO,EAAE;AAC7C,cAAQ,IAAI,eAAe,UAAU,UAAU,GAAG,GAAG,CAAC,KAAK;AAC3D,cAAQ,IAAI;AAAA,IACd;AAAA,EACF;AAGA,UAAQ,IAAI,MAAM,KAAK,2DAAoD,CAAC;AAE5E,QAAM,gBAAgB,MAAM,WAAW,MAAM;AAAA,IAC3C,YAAY,CAAC,2BAA2B;AAAA,IACxC,UAAU;AAAA,EACZ,CAAC;AAED,MAAI,cAAc,IAAI,CAAC,EAAE,SAAS,GAAG;AACnC,aAAS,IAAI,GAAG,IAAI,cAAc,IAAI,CAAC,EAAE,QAAQ,KAAK;AACpD,YAAM,WAAW,cAAc,UAAU,CAAC,EAAE,CAAC;AAC7C,YAAM,WAAW,cAAc,UAAU,CAAC,EAAE,CAAC;AAC7C,YAAM,WAAW,cAAc,UAAU,CAAC,EAAE,CAAC;AAE7C,cAAQ,IAAI,MAAM,OAAO,SAAS,IAAI,CAAC,eAAe,SAAS,QAAQ,CAAC,CAAC,IAAI,CAAC;AAC9E,cAAQ,IAAI,UAAU,cAAc,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE;AAC/C,cAAQ,IAAI,YAAY,SAAS,IAAI,EAAE;AACvC,cAAQ,IAAI,iBAAiB,SAAS,SAAS,EAAE;AACjD,cAAQ,IAAI,eAAe,UAAU,UAAU,GAAG,GAAG,CAAC,KAAK;AAC3D,cAAQ,IAAI;AAAA,IACd;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,kBAAkB;AAAA,EAChC;AAGA,UAAQ,IAAI,MAAM,KAAK,wCAAiC,CAAC;AAEzD,QAAM,kBAAkB,MAAM,WAAW,IAAI;AAAA,IAC3C,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AAED,MAAI,gBAAgB,IAAI,SAAS,GAAG;AAClC,aAAS,IAAI,GAAG,IAAI,gBAAgB,IAAI,QAAQ,KAAK;AACnD,YAAM,WAAW,gBAAgB,UAAU,CAAC;AAC5C,YAAM,WAAW,gBAAgB,UAAU,CAAC;AAE5C,cAAQ,IAAI,MAAM,MAAM,QAAQ,IAAI,CAAC,GAAG,CAAC;AACzC,cAAQ,IAAI,UAAU,gBAAgB,IAAI,CAAC,CAAC,EAAE;AAC9C,cAAQ,IAAI,iBAAiB,SAAS,SAAS,EAAE;AACjD,cAAQ,IAAI,eAAe,SAAS,OAAO,EAAE;AAC7C,cAAQ,IAAI,gBAAgB,SAAS,QAAQ,IAAI;AACjD,cAAQ,IAAI,qBAAqB,SAAS,aAAa,EAAE;AACzD,cAAQ,IAAI,eAAe,UAAU,UAAU,GAAG,GAAG,CAAC,KAAK;AAC3D,cAAQ,IAAI;AAAA,IACd;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,2BAA2B;AAAA,EACzC;AAGA,UAAQ,IAAI,MAAM,KAAK,kCAA6B,CAAC;AAErD,QAAM,gBAAgB,MAAM,WAAW,IAAI;AAAA,IACzC,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AAED,MAAI,cAAc,IAAI,SAAS,GAAG;AAChC,aAAS,IAAI,GAAG,IAAI,cAAc,IAAI,QAAQ,KAAK;AACjD,YAAM,WAAW,cAAc,UAAU,CAAC;AAC1C,YAAM,WAAW,cAAc,UAAU,CAAC;AAE1C,cAAQ,IAAI,MAAM,KAAK,cAAc,IAAI,CAAC,GAAG,CAAC;AAC9C,cAAQ,IAAI,iBAAiB,SAAS,SAAS,EAAE;AACjD,cAAQ,IAAI,gBAAgB,SAAS,QAAQ,EAAE;AAC/C,cAAQ,IAAI,oBAAoB,SAAS,YAAY,EAAE;AACvD,cAAQ,IAAI,kBAAkB,UAAU,UAAU,GAAG,GAAG,CAAC,KAAK;AAC9D,cAAQ,IAAI;AAAA,IACd;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,yBAAyB;AAAA,EACvC;AAGA,UAAQ,IAAI,MAAM,KAAK,+BAAwB,CAAC;AAEhD,QAAM,YAAY,MAAM,WAAW,IAAI;AAAA,IACrC,OAAO;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,OAAO;AAAA,EACT,CAAC;AAED,MAAI,UAAU,IAAI,SAAS,GAAG;AAC5B,aAAS,IAAI,GAAG,IAAI,UAAU,IAAI,QAAQ,KAAK;AAC7C,YAAM,WAAW,UAAU,UAAU,CAAC;AACtC,YAAM,WAAW,UAAU,UAAU,CAAC;AAEtC,cAAQ,IAAI,MAAM,QAAQ,YAAY,IAAI,CAAC,GAAG,CAAC;AAC/C,cAAQ,IAAI,gBAAgB,SAAS,QAAQ,EAAE;AAC/C,cAAQ,IAAI,oBAAoB,SAAS,YAAY,EAAE;AACvD,cAAQ,IAAI,iBAAiB,SAAS,SAAS,EAAE;AACjD,cAAQ,IAAI,gBAAgB,UAAU,UAAU,GAAG,GAAG,CAAC,KAAK;AAC5D,cAAQ,IAAI;AAAA,IACd;AAAA,EACF,OAAO;AACL,YAAQ,IAAI,oBAAoB;AAAA,EAClC;AAGA,UAAQ,IAAI,MAAM,KAAK,sCAA+B,CAAC;AAEvD,QAAM,QAAQ,oBAAI,IAAI;AACtB,WAAS,IAAI,GAAG,IAAI,QAAQ,IAAI,QAAQ,KAAK;AAC3C,UAAM,OAAO,QAAQ,UAAU,CAAC,EAAE,QAAQ;AAC1C,UAAM,IAAI,OAAO,MAAM,IAAI,IAAI,KAAK,KAAK,CAAC;AAAA,EAC5C;AAEA,aAAW,CAAC,MAAMA,MAAK,KAAK,MAAM,QAAQ,GAAG;AAC3C,YAAQ,IAAI,MAAM,IAAI,KAAKA,MAAK,YAAY;AAAA,EAC9C;AACF;AAGA,cAAc,EAAE,MAAM,QAAQ,KAAK;",
6
+ "names": ["count"]
7
+ }