@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
@@ -1,284 +0,0 @@
1
- #!/usr/bin/env 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 { execFileSync } from "child_process";
7
- import fs from "fs";
8
- import { glob } from "glob";
9
- const SECRET_PATTERNS = [
10
- {
11
- pattern: /lin_api_[a-zA-Z0-9]{40}/,
12
- name: "Linear API Key",
13
- envVar: "LINEAR_API_KEY"
14
- },
15
- {
16
- pattern: /lin_oauth_[a-zA-Z0-9]{64}/,
17
- name: "Linear OAuth Token",
18
- envVar: "LINEAR_OAUTH_TOKEN"
19
- },
20
- {
21
- pattern: /sk-[a-zA-Z0-9]{48}/,
22
- name: "OpenAI API Key",
23
- envVar: "OPENAI_API_KEY"
24
- },
25
- { pattern: /npm_[a-zA-Z0-9]{36}/, name: "NPM Token", envVar: "NPM_TOKEN" },
26
- {
27
- pattern: /ghp_[a-zA-Z0-9]{36}/,
28
- name: "GitHub Token",
29
- envVar: "GITHUB_TOKEN"
30
- },
31
- {
32
- pattern: /ghs_[a-zA-Z0-9]{36}/,
33
- name: "GitHub Secret",
34
- envVar: "GITHUB_SECRET"
35
- },
36
- {
37
- pattern: /pk_live_[a-zA-Z0-9]{24,}/,
38
- name: "Stripe Live Key",
39
- envVar: "STRIPE_LIVE_KEY"
40
- },
41
- {
42
- pattern: /sk_live_[a-zA-Z0-9]{24,}/,
43
- name: "Stripe Secret Key",
44
- envVar: "STRIPE_SECRET_KEY"
45
- }
46
- ];
47
- class SecuritySecretsScanner {
48
- detectedSecrets = /* @__PURE__ */ new Map();
49
- /**
50
- * Scan files for hardcoded secrets
51
- */
52
- async scanForSecrets(patterns = [
53
- "**/*.js",
54
- "**/*.ts",
55
- "**/*.jsx",
56
- "**/*.tsx",
57
- "**/*.sh"
58
- ]) {
59
- console.log("\u{1F50D} Scanning for hardcoded secrets...\n");
60
- for (const pattern of patterns) {
61
- const files = await glob(pattern, {
62
- ignore: ["node_modules/**", "dist/**", "build/**", ".git/**"]
63
- });
64
- for (const file of files) {
65
- await this.scanFile(file);
66
- }
67
- }
68
- this.reportFindings();
69
- }
70
- /**
71
- * Scan a single file for secrets
72
- */
73
- async scanFile(filePath) {
74
- const content = fs.readFileSync(filePath, "utf-8");
75
- const lines = content.split("\n");
76
- lines.forEach((line, index) => {
77
- for (const secretPattern of SECRET_PATTERNS) {
78
- if (secretPattern.pattern.test(line)) {
79
- if (!this.detectedSecrets.has(filePath)) {
80
- this.detectedSecrets.set(filePath, /* @__PURE__ */ new Set());
81
- }
82
- const secrets = this.detectedSecrets.get(filePath);
83
- if (secrets) {
84
- secrets.add(
85
- `Line ${index + 1}: ${secretPattern.name} detected (use ${secretPattern.envVar})`
86
- );
87
- }
88
- }
89
- }
90
- });
91
- }
92
- /**
93
- * Report findings
94
- */
95
- reportFindings() {
96
- if (this.detectedSecrets.size === 0) {
97
- console.log("\u2705 No hardcoded secrets detected!\n");
98
- return;
99
- }
100
- console.log(
101
- `\u26A0\uFE0F Found hardcoded secrets in ${this.detectedSecrets.size} files:
102
- `
103
- );
104
- for (const [file, secrets] of this.detectedSecrets) {
105
- console.log(`\u{1F4C4} ${file}:`);
106
- for (const secret of secrets) {
107
- console.log(` ${secret}`);
108
- }
109
- console.log();
110
- }
111
- console.log("\u{1F4DD} How to fix:");
112
- console.log("1. Replace hardcoded values with process.env.VARIABLE_NAME");
113
- console.log(`2. Add "import 'dotenv/config'" at the top of the file`);
114
- console.log("3. Add the actual values to your .env file");
115
- console.log("4. Never commit .env files to git\n");
116
- }
117
- /**
118
- * Auto-fix secrets in files
119
- */
120
- async autoFix() {
121
- console.log("\u{1F527} Auto-fixing hardcoded secrets...\n");
122
- for (const [filePath] of this.detectedSecrets) {
123
- let content = fs.readFileSync(filePath, "utf-8");
124
- let modified = false;
125
- if ((filePath.endsWith(".js") || filePath.endsWith(".ts")) && !content.includes("dotenv/config") && !content.includes("require('dotenv')")) {
126
- if (content.startsWith("#!/")) {
127
- const firstNewline = content.indexOf("\n");
128
- content = content.slice(0, firstNewline + 1) + "\nimport 'dotenv/config';\n" + content.slice(firstNewline + 1);
129
- } else {
130
- content = "import 'dotenv/config';\n\n" + content;
131
- }
132
- modified = true;
133
- }
134
- for (const pattern of SECRET_PATTERNS) {
135
- const regex = new RegExp(
136
- `(['"\`])(${pattern.pattern.source})(['"\`])`,
137
- "g"
138
- );
139
- const replacement = `process.env.${pattern.envVar}`;
140
- if (regex.test(content)) {
141
- content = content.replace(regex, replacement);
142
- modified = true;
143
- const varPattern = new RegExp(
144
- `const\\s+(\\w+)\\s*=\\s*process\\.env\\.${pattern.envVar}`
145
- );
146
- const match = content.match(varPattern);
147
- if (match) {
148
- const varName = match[1];
149
- const checkCode = `
150
- if (!${varName}) {
151
- console.error('\u274C ${pattern.envVar} environment variable not set');
152
- console.log('Please set ${pattern.envVar} in your .env file or export it in your shell');
153
- process.exit(1);
154
- }
155
- `;
156
- const insertPos = content.indexOf(match[0]) + match[0].length;
157
- content = content.slice(0, insertPos) + checkCode + content.slice(insertPos);
158
- }
159
- }
160
- }
161
- if (modified) {
162
- fs.writeFileSync(filePath, content);
163
- console.log(`\u2705 Fixed ${filePath}`);
164
- }
165
- }
166
- console.log("\n\u{1F4CB} Next steps:");
167
- console.log("1. Review the changes");
168
- console.log("2. Add actual values to .env file");
169
- console.log("3. Test that everything still works");
170
- console.log("4. Commit the fixes\n");
171
- }
172
- /**
173
- * Check git history for secrets
174
- */
175
- async checkGitHistory() {
176
- console.log("\u{1F50D} Checking git history for secrets...\n");
177
- try {
178
- for (const pattern of SECRET_PATTERNS) {
179
- let result;
180
- try {
181
- const gitOutput = execFileSync(
182
- "git",
183
- [
184
- "log",
185
- "-p",
186
- "--all",
187
- `-G${pattern.pattern.source}`,
188
- "--format=%H %s"
189
- ],
190
- {
191
- encoding: "utf-8",
192
- stdio: "pipe"
193
- }
194
- );
195
- result = gitOutput.split("\n").slice(0, 20).join("\n").trim();
196
- } catch {
197
- continue;
198
- }
199
- if (result) {
200
- console.log(`\u26A0\uFE0F Found ${pattern.name} in git history:`);
201
- console.log(result.split("\n").slice(0, 3).join("\n"));
202
- console.log("...\n");
203
- }
204
- }
205
- console.log("\u{1F4DD} To clean git history:");
206
- console.log("1. Use BFG Repo-Cleaner: bfg --replace-text passwords.txt");
207
- console.log("2. Or interactive rebase: git rebase -i <commit>");
208
- console.log("3. Or allow via GitHub: Check push error for allow URLs\n");
209
- } catch {
210
- console.log("Could not check git history");
211
- }
212
- }
213
- /**
214
- * Generate pre-commit hook
215
- */
216
- generatePreCommitHook() {
217
- const hookContent = `#!/bin/sh
218
- # Pre-commit hook to check for hardcoded secrets
219
-
220
- echo "\u{1F50D} Checking for hardcoded secrets..."
221
-
222
- # Patterns to check
223
- patterns=(
224
- "lin_api_[a-zA-Z0-9]{40}"
225
- "lin_oauth_[a-zA-Z0-9]{64}"
226
- "sk-[a-zA-Z0-9]{48}"
227
- "npm_[a-zA-Z0-9]{36}"
228
- "ghp_[a-zA-Z0-9]{36}"
229
- "pk_live_[a-zA-Z0-9]{24,}"
230
- "sk_live_[a-zA-Z0-9]{24,}"
231
- )
232
-
233
- # Check staged files
234
- for pattern in "\${patterns[@]}"; do
235
- if git diff --staged --no-color | grep -E "$pattern"; then
236
- echo "\u274C Found hardcoded secret matching: $pattern"
237
- echo "Please use environment variables instead!"
238
- exit 1
239
- fi
240
- done
241
-
242
- echo "\u2705 No hardcoded secrets detected"
243
- exit 0
244
- `;
245
- const hookPath = ".git/hooks/pre-commit";
246
- fs.writeFileSync(hookPath, hookContent);
247
- fs.chmodSync(hookPath, "755");
248
- console.log("\u2705 Generated pre-commit hook at .git/hooks/pre-commit");
249
- console.log(
250
- "This will prevent committing hardcoded secrets in the future.\n"
251
- );
252
- }
253
- }
254
- if (import.meta.url === `file://${process.argv[1]}`) {
255
- const scanner = new SecuritySecretsScanner();
256
- const command = process.argv[2];
257
- (async () => {
258
- switch (command) {
259
- case "scan":
260
- await scanner.scanForSecrets();
261
- break;
262
- case "fix":
263
- await scanner.scanForSecrets();
264
- await scanner.autoFix();
265
- break;
266
- case "history":
267
- await scanner.checkGitHistory();
268
- break;
269
- case "hook":
270
- scanner.generatePreCommitHook();
271
- break;
272
- default:
273
- console.log("Usage: security-secrets-scanner [scan|fix|history|hook]");
274
- console.log(" scan - Scan for hardcoded secrets");
275
- console.log(" fix - Auto-fix hardcoded secrets");
276
- console.log(" history - Check git history for secrets");
277
- console.log(" hook - Generate pre-commit hook");
278
- }
279
- })();
280
- }
281
- export {
282
- SecuritySecretsScanner
283
- };
284
- //# sourceMappingURL=security-secrets-scanner.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/skills/security-secrets-scanner.ts"],
4
- "sourcesContent": ["#!/usr/bin/env node\n\n/**\n * Security Secrets Scanner Skill\n * Detects and fixes hardcoded secrets in code files\n */\n\nimport { execFileSync } from 'child_process';\nimport fs from 'fs';\nimport { glob } from 'glob';\n\ninterface SecretPattern {\n pattern: RegExp;\n name: string;\n envVar: string;\n}\n\nconst SECRET_PATTERNS: SecretPattern[] = [\n {\n pattern: /lin_api_[a-zA-Z0-9]{40}/,\n name: 'Linear API Key',\n envVar: 'LINEAR_API_KEY',\n },\n {\n pattern: /lin_oauth_[a-zA-Z0-9]{64}/,\n name: 'Linear OAuth Token',\n envVar: 'LINEAR_OAUTH_TOKEN',\n },\n {\n pattern: /sk-[a-zA-Z0-9]{48}/,\n name: 'OpenAI API Key',\n envVar: 'OPENAI_API_KEY',\n },\n { pattern: /npm_[a-zA-Z0-9]{36}/, name: 'NPM Token', envVar: 'NPM_TOKEN' },\n {\n pattern: /ghp_[a-zA-Z0-9]{36}/,\n name: 'GitHub Token',\n envVar: 'GITHUB_TOKEN',\n },\n {\n pattern: /ghs_[a-zA-Z0-9]{36}/,\n name: 'GitHub Secret',\n envVar: 'GITHUB_SECRET',\n },\n {\n pattern: /pk_live_[a-zA-Z0-9]{24,}/,\n name: 'Stripe Live Key',\n envVar: 'STRIPE_LIVE_KEY',\n },\n {\n pattern: /sk_live_[a-zA-Z0-9]{24,}/,\n name: 'Stripe Secret Key',\n envVar: 'STRIPE_SECRET_KEY',\n },\n];\n\nexport class SecuritySecretsScanner {\n private detectedSecrets: Map<string, Set<string>> = new Map();\n\n /**\n * Scan files for hardcoded secrets\n */\n async scanForSecrets(\n patterns: string[] = [\n '**/*.js',\n '**/*.ts',\n '**/*.jsx',\n '**/*.tsx',\n '**/*.sh',\n ]\n ): Promise<void> {\n console.log('\uD83D\uDD0D Scanning for hardcoded secrets...\\n');\n\n for (const pattern of patterns) {\n const files = await glob(pattern, {\n ignore: ['node_modules/**', 'dist/**', 'build/**', '.git/**'],\n });\n\n for (const file of files) {\n await this.scanFile(file);\n }\n }\n\n this.reportFindings();\n }\n\n /**\n * Scan a single file for secrets\n */\n private async scanFile(filePath: string): Promise<void> {\n const content = fs.readFileSync(filePath, 'utf-8');\n const lines = content.split('\\n');\n\n lines.forEach((line, index) => {\n for (const secretPattern of SECRET_PATTERNS) {\n if (secretPattern.pattern.test(line)) {\n if (!this.detectedSecrets.has(filePath)) {\n this.detectedSecrets.set(filePath, new Set());\n }\n const secrets = this.detectedSecrets.get(filePath);\n if (secrets) {\n secrets.add(\n `Line ${index + 1}: ${secretPattern.name} detected (use ${secretPattern.envVar})`\n );\n }\n }\n }\n });\n }\n\n /**\n * Report findings\n */\n private reportFindings(): void {\n if (this.detectedSecrets.size === 0) {\n console.log('\u2705 No hardcoded secrets detected!\\n');\n return;\n }\n\n console.log(\n `\u26A0\uFE0F Found hardcoded secrets in ${this.detectedSecrets.size} files:\\n`\n );\n\n for (const [file, secrets] of this.detectedSecrets) {\n console.log(`\uD83D\uDCC4 ${file}:`);\n for (const secret of secrets) {\n console.log(` ${secret}`);\n }\n console.log();\n }\n\n console.log('\uD83D\uDCDD How to fix:');\n console.log('1. Replace hardcoded values with process.env.VARIABLE_NAME');\n console.log('2. Add \"import \\'dotenv/config\\'\" at the top of the file');\n console.log('3. Add the actual values to your .env file');\n console.log('4. Never commit .env files to git\\n');\n }\n\n /**\n * Auto-fix secrets in files\n */\n async autoFix(): Promise<void> {\n console.log('\uD83D\uDD27 Auto-fixing hardcoded secrets...\\n');\n\n for (const [filePath] of this.detectedSecrets) {\n let content = fs.readFileSync(filePath, 'utf-8');\n let modified = false;\n\n // Add dotenv import if it's a JS/TS file and doesn't have it\n if (\n (filePath.endsWith('.js') || filePath.endsWith('.ts')) &&\n !content.includes('dotenv/config') &&\n !content.includes(\"require('dotenv')\")\n ) {\n // Add after shebang if present, otherwise at the top\n if (content.startsWith('#!/')) {\n const firstNewline = content.indexOf('\\n');\n content =\n content.slice(0, firstNewline + 1) +\n \"\\nimport 'dotenv/config';\\n\" +\n content.slice(firstNewline + 1);\n } else {\n content = \"import 'dotenv/config';\\n\\n\" + content;\n }\n modified = true;\n }\n\n // Replace secrets with environment variables\n for (const pattern of SECRET_PATTERNS) {\n const regex = new RegExp(\n `(['\"\\`])(${pattern.pattern.source})(['\"\\`])`,\n 'g'\n );\n const replacement = `process.env.${pattern.envVar}`;\n\n if (regex.test(content)) {\n content = content.replace(regex, replacement);\n modified = true;\n\n // Add error checking after the variable definition\n const varPattern = new RegExp(\n `const\\\\s+(\\\\w+)\\\\s*=\\\\s*process\\\\.env\\\\.${pattern.envVar}`\n );\n const match = content.match(varPattern);\n if (match) {\n const varName = match[1];\n const checkCode =\n `\\nif (!${varName}) {\\n` +\n ` console.error('\u274C ${pattern.envVar} environment variable not set');\\n` +\n ` console.log('Please set ${pattern.envVar} in your .env file or export it in your shell');\\n` +\n ` process.exit(1);\\n}\\n`;\n\n // Insert after the variable declaration\n const insertPos = content.indexOf(match[0]) + match[0].length;\n content =\n content.slice(0, insertPos) +\n checkCode +\n content.slice(insertPos);\n }\n }\n }\n\n if (modified) {\n fs.writeFileSync(filePath, content);\n console.log(`\u2705 Fixed ${filePath}`);\n }\n }\n\n console.log('\\n\uD83D\uDCCB Next steps:');\n console.log('1. Review the changes');\n console.log('2. Add actual values to .env file');\n console.log('3. Test that everything still works');\n console.log('4. Commit the fixes\\n');\n }\n\n /**\n * Check git history for secrets\n */\n async checkGitHistory(): Promise<void> {\n console.log('\uD83D\uDD0D Checking git history for secrets...\\n');\n\n try {\n for (const pattern of SECRET_PATTERNS) {\n // Use execFileSync to safely pass arguments\n let result: string;\n try {\n const gitOutput = execFileSync(\n 'git',\n [\n 'log',\n '-p',\n '--all',\n `-G${pattern.pattern.source}`,\n '--format=%H %s',\n ],\n {\n encoding: 'utf-8',\n stdio: 'pipe',\n }\n );\n\n // Manually limit output to first 20 lines for safety\n result = gitOutput.split('\\n').slice(0, 20).join('\\n').trim();\n } catch {\n // Git command failed, skip this pattern\n continue;\n }\n\n if (result) {\n console.log(`\u26A0\uFE0F Found ${pattern.name} in git history:`);\n console.log(result.split('\\n').slice(0, 3).join('\\n'));\n console.log('...\\n');\n }\n }\n\n console.log('\uD83D\uDCDD To clean git history:');\n console.log('1. Use BFG Repo-Cleaner: bfg --replace-text passwords.txt');\n console.log('2. Or interactive rebase: git rebase -i <commit>');\n console.log('3. Or allow via GitHub: Check push error for allow URLs\\n');\n } catch {\n console.log('Could not check git history');\n }\n }\n\n /**\n * Generate pre-commit hook\n */\n generatePreCommitHook(): void {\n const hookContent = `#!/bin/sh\n# Pre-commit hook to check for hardcoded secrets\n\necho \"\uD83D\uDD0D Checking for hardcoded secrets...\"\n\n# Patterns to check\npatterns=(\n \"lin_api_[a-zA-Z0-9]{40}\"\n \"lin_oauth_[a-zA-Z0-9]{64}\"\n \"sk-[a-zA-Z0-9]{48}\"\n \"npm_[a-zA-Z0-9]{36}\"\n \"ghp_[a-zA-Z0-9]{36}\"\n \"pk_live_[a-zA-Z0-9]{24,}\"\n \"sk_live_[a-zA-Z0-9]{24,}\"\n)\n\n# Check staged files\nfor pattern in \"\\${patterns[@]}\"; do\n if git diff --staged --no-color | grep -E \"$pattern\"; then\n echo \"\u274C Found hardcoded secret matching: $pattern\"\n echo \"Please use environment variables instead!\"\n exit 1\n fi\ndone\n\necho \"\u2705 No hardcoded secrets detected\"\nexit 0\n`;\n\n const hookPath = '.git/hooks/pre-commit';\n fs.writeFileSync(hookPath, hookContent);\n fs.chmodSync(hookPath, '755');\n\n console.log('\u2705 Generated pre-commit hook at .git/hooks/pre-commit');\n console.log(\n 'This will prevent committing hardcoded secrets in the future.\\n'\n );\n }\n}\n\n// CLI usage\n\nif (import.meta.url === `file://${process.argv[1]}`) {\n const scanner = new SecuritySecretsScanner();\n const command = process.argv[2];\n\n (async () => {\n switch (command) {\n case 'scan':\n await scanner.scanForSecrets();\n break;\n case 'fix':\n await scanner.scanForSecrets();\n await scanner.autoFix();\n break;\n case 'history':\n await scanner.checkGitHistory();\n break;\n case 'hook':\n scanner.generatePreCommitHook();\n break;\n default:\n console.log('Usage: security-secrets-scanner [scan|fix|history|hook]');\n console.log(' scan - Scan for hardcoded secrets');\n console.log(' fix - Auto-fix hardcoded secrets');\n console.log(' history - Check git history for secrets');\n console.log(' hook - Generate pre-commit hook');\n }\n })();\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/skills/unified-rlm-orchestrator.ts"],
4
- "sourcesContent": ["/**\n * Unified RLM-First Orchestrator for StackMemory\n *\n * All skills and tasks flow through RLM orchestration first,\n * ensuring consistent decomposition, parallel execution, and quality control.\n */\n\nimport {\n RecursiveAgentOrchestrator,\n type RLMOptions,\n type SubagentType,\n type ExecutionResult,\n type TaskNode,\n} from './recursive-agent-orchestrator.js';\nimport {\n ClaudeSkillsManager,\n type SkillContext,\n type SkillResult,\n} from './claude-skills.js';\nimport { logger } from '../core/monitoring/logger.js';\nimport type { DualStackManager } from '../core/context/dual-stack-manager.js';\nimport type { ContextRetriever } from '../core/retrieval/context-retriever.js';\nimport type { FrameManager } from '../core/context/index.js';\nimport type { LinearTaskManager } from '../features/tasks/linear-task-manager.js';\n\n// Skill to RLM mapping configuration\ninterface SkillToRLMConfig {\n skillName: string;\n primaryAgent: SubagentType;\n secondaryAgents?: SubagentType[];\n taskTemplate: string;\n defaultOptions?: Partial<RLMOptions>;\n preprocessor?: (\n args: string[],\n options: Record<string, unknown>\n ) => { task: string; context: Record<string, unknown> };\n postprocessor?: (result: ExecutionResult) => SkillResult;\n}\n\n/**\n * UnifiedRLMOrchestrator - Routes all skills through RLM first\n */\nexport class UnifiedRLMOrchestrator {\n private rlmOrchestrator: RecursiveAgentOrchestrator;\n private skillsManager: ClaudeSkillsManager;\n private skillMappings: Map<string, SkillToRLMConfig>;\n\n constructor(\n frameManager: FrameManager,\n dualStackManager: DualStackManager,\n contextRetriever: ContextRetriever,\n taskStore: LinearTaskManager,\n skillContext: SkillContext\n ) {\n // Initialize RLM orchestrator\n this.rlmOrchestrator = new RecursiveAgentOrchestrator(\n frameManager,\n dualStackManager,\n contextRetriever,\n taskStore\n );\n\n // Initialize skills manager (for legacy compatibility)\n this.skillsManager = new ClaudeSkillsManager(skillContext);\n\n // Initialize skill mappings\n this.skillMappings = this.initializeSkillMappings();\n\n logger.info('Unified RLM Orchestrator initialized with RLM-first routing');\n }\n\n /**\n * Initialize skill to RLM agent mappings\n */\n private initializeSkillMappings(): Map<string, SkillToRLMConfig> {\n const mappings = new Map<string, SkillToRLMConfig>();\n\n // Handoff skill -> Context + Planning agents\n mappings.set('handoff', {\n skillName: 'handoff',\n primaryAgent: 'context',\n secondaryAgents: ['planning'],\n taskTemplate:\n 'Prepare comprehensive handoff to {targetUser}: {message}. Extract relevant context, identify dependencies, and create actionable items.',\n defaultOptions: {\n maxParallel: 3,\n reviewStages: 1,\n shareContextRealtime: true,\n },\n preprocessor: (args, options) => ({\n task: `Handoff to ${args[0]}: ${args[1]}`,\n context: {\n targetUser: args[0],\n message: args[1],\n priority: options.priority || 'medium',\n frames: options.frames || [],\n },\n }),\n postprocessor: (result) => ({\n success: result.success,\n message: `Handoff ${result.success ? 'completed' : 'failed'}`,\n data: result.rootNode.result,\n }),\n });\n\n // Checkpoint skill -> Context + Code agents\n mappings.set('checkpoint', {\n skillName: 'checkpoint',\n primaryAgent: 'context',\n secondaryAgents: ['code'],\n taskTemplate:\n 'Create recovery checkpoint: {description}. Capture current state, identify risky operations, and backup critical files.',\n defaultOptions: {\n maxParallel: 2,\n reviewStages: 0,\n verboseLogging: false,\n },\n preprocessor: (args, options) => ({\n task: `${args[0]} checkpoint: ${args[1]}`,\n context: {\n operation: args[0],\n description: args[1],\n ...options,\n },\n }),\n });\n\n // Dig skill -> Context agent (deep search)\n mappings.set('dig', {\n skillName: 'dig',\n primaryAgent: 'context',\n taskTemplate:\n 'Deep archaeological search: {query}. Analyze patterns, extract decisions, and build timeline.',\n defaultOptions: {\n maxParallel: 1,\n maxTokensPerAgent: 50000,\n reviewStages: 0,\n },\n preprocessor: (args, options) => ({\n task: `Archaeological dig: ${args[0]}`,\n context: {\n query: args[0],\n depth: options.depth || '30days',\n patterns: options.patterns,\n decisions: options.decisions,\n timeline: options.timeline,\n },\n }),\n });\n\n // Lint skill -> Linting agent primarily\n mappings.set('lint', {\n skillName: 'lint',\n primaryAgent: 'linting',\n secondaryAgents: ['improve'],\n taskTemplate:\n 'Comprehensive linting of {path}: Check syntax, types, formatting, security, performance, and dead code. Provide fixes.',\n defaultOptions: {\n maxParallel: 1,\n reviewStages: 0,\n verboseLogging: true,\n },\n preprocessor: (args, options) => ({\n task: `Lint ${args[0] || 'current directory'}`,\n context: {\n path: args[0] || process.cwd(),\n fix: options.fix,\n focus: options.security\n ? 'security'\n : options.performance\n ? 'performance'\n : 'all',\n },\n }),\n postprocessor: (result) => {\n const lintingNode = this.findNodeByAgent(result.rootNode, 'linting');\n return {\n success: result.success,\n message: `Found ${result.issuesFound} issues, fixed ${result.issuesFixed}`,\n data: {\n issues: lintingNode?.result?.issues || [],\n fixes: lintingNode?.result?.fixes || [],\n stats: {\n found: result.issuesFound,\n fixed: result.issuesFixed,\n duration: result.duration,\n },\n },\n };\n },\n });\n\n // Test generation -> Testing agent\n mappings.set('test', {\n skillName: 'test',\n primaryAgent: 'testing',\n secondaryAgents: ['code', 'review'],\n taskTemplate:\n 'Generate comprehensive {testMode} tests for {target}. Ensure high coverage and meaningful assertions.',\n defaultOptions: {\n maxParallel: 3,\n testGenerationMode: 'all',\n reviewStages: 2,\n qualityThreshold: 0.9,\n },\n preprocessor: (args, options) => ({\n task: `Generate tests for ${args[0] || 'project'}`,\n context: {\n target: args[0] || process.cwd(),\n testMode: options.mode || 'all',\n coverage: options.coverage || 'high',\n },\n }),\n });\n\n // Code review -> Review + Improve agents\n mappings.set('review', {\n skillName: 'review',\n primaryAgent: 'review',\n secondaryAgents: ['improve', 'testing'],\n taskTemplate:\n 'Multi-stage code review of {target}. Analyze architecture, quality, performance, security. Suggest improvements.',\n defaultOptions: {\n maxParallel: 2,\n reviewStages: 3,\n qualityThreshold: 0.85,\n verboseLogging: true,\n },\n preprocessor: (args, options) => ({\n task: `Review code in ${args[0] || 'project'}`,\n context: {\n target: args[0] || process.cwd(),\n focus: options.focus || 'all',\n autofix: options.fix || false,\n },\n }),\n });\n\n // Refactor -> Code + Review + Improve agents\n mappings.set('refactor', {\n skillName: 'refactor',\n primaryAgent: 'code',\n secondaryAgents: ['review', 'improve', 'testing'],\n taskTemplate:\n 'Refactor {target}: Improve architecture, reduce complexity, enhance maintainability. Preserve functionality.',\n defaultOptions: {\n maxParallel: 4,\n reviewStages: 2,\n qualityThreshold: 0.9,\n testGenerationMode: 'unit',\n },\n preprocessor: (args, options) => ({\n task: `Refactor ${args[0] || 'codebase'}`,\n context: {\n target: args[0] || process.cwd(),\n scope: options.scope || 'moderate',\n preserveApi: options.preserveApi !== false,\n },\n }),\n });\n\n // Deploy/Publish -> Publish agent\n mappings.set('publish', {\n skillName: 'publish',\n primaryAgent: 'publish',\n secondaryAgents: ['testing', 'linting'],\n taskTemplate:\n 'Prepare and execute {publishType} release. Run tests, update versions, generate changelog, publish.',\n defaultOptions: {\n maxParallel: 1,\n reviewStages: 1,\n testGenerationMode: 'all',\n },\n preprocessor: (args, options) => ({\n task: `Publish ${options.type || 'npm'} release`,\n context: {\n version: args[0],\n publishType: options.type || 'npm',\n prerelease: options.prerelease || false,\n skipTests: options.skipTests || false,\n },\n }),\n });\n\n return mappings;\n }\n\n /**\n * Execute any skill through RLM orchestration first\n */\n async executeSkill(\n skillName: string,\n args: string[],\n options?: Record<string, unknown>\n ): Promise<SkillResult> {\n logger.info(`Executing skill through RLM: ${skillName}`, { args, options });\n\n // Check if skill has RLM mapping\n const mapping = this.skillMappings.get(skillName);\n\n if (mapping) {\n // Route through RLM orchestrator\n return this.executeViaRLM(mapping, args, options || {});\n }\n\n // Special case: Direct RLM execution\n if (skillName === 'rlm') {\n const task = args.join(' ') || 'Analyze and optimize current code';\n const result = await this.rlmOrchestrator.execute(\n task,\n options || {},\n options as RLMOptions\n );\n return {\n success: result.success,\n message: `RLM execution ${result.success ? 'completed' : 'failed'}`,\n data: result,\n };\n }\n\n // Fallback to legacy skill manager for unmapped skills\n logger.warn(`Skill ${skillName} not mapped to RLM, using legacy execution`);\n return this.skillsManager.executeSkill(skillName, args, options);\n }\n\n /**\n * Execute skill via RLM orchestration\n */\n private async executeViaRLM(\n mapping: SkillToRLMConfig,\n args: string[],\n options: Record<string, unknown>\n ): Promise<SkillResult> {\n try {\n // Preprocess arguments\n const { task, context } = mapping.preprocessor\n ? mapping.preprocessor(args, options)\n : {\n task: mapping.taskTemplate.replace('{args}', args.join(' ')),\n context: { args, ...options },\n };\n\n // Merge options\n const rlmOptions: RLMOptions = {\n ...mapping.defaultOptions,\n ...options,\n // Force specific agents if specified\n agents: [mapping.primaryAgent, ...(mapping.secondaryAgents || [])],\n };\n\n // Execute through RLM\n const result = await this.rlmOrchestrator.execute(\n task,\n context,\n rlmOptions\n );\n\n // Postprocess result\n if (mapping.postprocessor) {\n return mapping.postprocessor(result);\n }\n\n // Default postprocessing\n return {\n success: result.success,\n message: `${mapping.skillName} ${result.success ? 'completed' : 'failed'}`,\n data: {\n duration: result.duration,\n tokens: result.totalTokens,\n cost: result.totalCost,\n improvements: result.improvements,\n testsGenerated: result.testsGenerated,\n issuesFound: result.issuesFound,\n issuesFixed: result.issuesFixed,\n details: result.rootNode,\n },\n };\n } catch (error) {\n logger.error(`RLM execution failed for ${mapping.skillName}:`, error);\n return {\n success: false,\n message: `Failed to execute ${mapping.skillName}: ${error.message}`,\n };\n }\n }\n\n /**\n * Helper: Find node by agent type in task tree\n */\n private findNodeByAgent(\n node: TaskNode,\n agentType: SubagentType\n ): TaskNode | null {\n if (node.agent === agentType) {\n return node;\n }\n if (node.children) {\n for (const child of node.children) {\n const found = this.findNodeByAgent(child, agentType);\n if (found) return found;\n }\n }\n return null;\n }\n\n /**\n * Get available skills (all RLM-mapped + legacy)\n */\n getAvailableSkills(): string[] {\n const rlmSkills = Array.from(this.skillMappings.keys());\n const legacySkills = this.skillsManager.getAvailableSkills();\n const allSkills = new Set([...rlmSkills, ...legacySkills, 'rlm']);\n return Array.from(allSkills);\n }\n\n /**\n * Get skill help\n */\n getSkillHelp(skillName: string): string {\n const mapping = this.skillMappings.get(skillName);\n if (mapping) {\n return `\n${skillName} (RLM-Orchestrated)\nPrimary Agent: ${mapping.primaryAgent}\nSecondary Agents: ${mapping.secondaryAgents?.join(', ') || 'none'}\n\n${mapping.taskTemplate}\n\nThis skill is executed through RLM orchestration for:\n- Automatic task decomposition\n- Parallel agent execution\n- Multi-stage quality review\n- Comprehensive result aggregation\n`;\n }\n\n // Fallback to legacy help\n return this.skillsManager.getSkillHelp(skillName);\n }\n\n /**\n * Execute task with intelligent routing\n */\n async executeTask(\n task: string,\n context?: Record<string, unknown>\n ): Promise<SkillResult> {\n // Analyze task to determine best skill/agent combination\n const taskAnalysis = this.analyzeTask(task);\n\n if (taskAnalysis.suggestedSkill) {\n // Route to specific skill\n return this.executeSkill(\n taskAnalysis.suggestedSkill,\n taskAnalysis.args,\n taskAnalysis.options\n );\n }\n\n // Direct RLM execution for complex/ambiguous tasks\n const result = await this.rlmOrchestrator.execute(task, context || {}, {\n maxParallel: 5,\n reviewStages: 2,\n qualityThreshold: 0.85,\n verboseLogging: true,\n });\n\n return {\n success: result.success,\n message: `Task ${result.success ? 'completed' : 'failed'}`,\n data: result,\n };\n }\n\n /**\n * Analyze task to determine best routing\n */\n private analyzeTask(task: string): {\n suggestedSkill?: string;\n args: string[];\n options: Record<string, unknown>;\n } {\n const taskLower = task.toLowerCase();\n\n // Pattern matching for skill detection\n const patterns = [\n { pattern: /lint|format|style|quality/i, skill: 'lint' },\n { pattern: /test|coverage|unit|integration/i, skill: 'test' },\n { pattern: /review|analyze|improve/i, skill: 'review' },\n { pattern: /refactor|restructure|clean/i, skill: 'refactor' },\n { pattern: /handoff|transfer|pass/i, skill: 'handoff' },\n { pattern: /checkpoint|backup|save/i, skill: 'checkpoint' },\n { pattern: /search|find|dig|history/i, skill: 'dig' },\n { pattern: /publish|release|deploy/i, skill: 'publish' },\n ];\n\n for (const { pattern, skill } of patterns) {\n if (pattern.test(taskLower)) {\n return {\n suggestedSkill: skill,\n args: [task],\n options: {},\n };\n }\n }\n\n // No specific skill detected\n return {\n args: [task],\n options: {},\n };\n }\n}\n\n/**\n * Singleton instance for global access\n */\nlet unifiedOrchestrator: UnifiedRLMOrchestrator | null = null;\n\nexport function initializeUnifiedOrchestrator(\n frameManager: FrameManager,\n dualStackManager: DualStackManager,\n contextRetriever: ContextRetriever,\n taskStore: LinearTaskManager,\n skillContext: SkillContext\n): UnifiedRLMOrchestrator {\n if (!unifiedOrchestrator) {\n unifiedOrchestrator = new UnifiedRLMOrchestrator(\n frameManager,\n dualStackManager,\n contextRetriever,\n taskStore,\n skillContext\n );\n }\n return unifiedOrchestrator;\n}\n\nexport function getUnifiedOrchestrator(): UnifiedRLMOrchestrator | null {\n return unifiedOrchestrator;\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/env.ts"],
4
- "sourcesContent": ["/**\n * Shared environment variable utilities\n */\n\nexport function getEnv(key: string, defaultValue?: string): string {\n const value = process.env[key];\n if (!value && !defaultValue) {\n throw new Error(`Environment variable ${key} is required but not set`);\n }\n return value || defaultValue || '';\n}\n\nexport function getOptionalEnv(\n key: string,\n defaultValue?: string\n): string | undefined {\n return process.env[key] || defaultValue;\n}\n\nexport function getRequiredEnv(key: string): string {\n const value = process.env[key];\n if (!value) {\n throw new Error(`Environment variable ${key} is required but not set`);\n }\n return value;\n}\n\nexport function getBooleanEnv(\n key: string,\n defaultValue: boolean = false\n): boolean {\n const value = process.env[key];\n if (!value) return defaultValue;\n return value.toLowerCase() === 'true' || value === '1';\n}\n\nexport function getNumberEnv(key: string, defaultValue?: number): number {\n const value = process.env[key];\n if (!value) {\n if (defaultValue === undefined) {\n throw new Error(`Environment variable ${key} is required but not set`);\n }\n return defaultValue;\n }\n const num = parseInt(value, 10);\n if (isNaN(num)) {\n throw new Error(\n `Environment variable ${key} must be a number, got: ${value}`\n );\n }\n return num;\n}\n"],
5
- "mappings": ";;;;AAIO,SAAS,OAAO,KAAa,cAA+B;AACjE,QAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,MAAI,CAAC,SAAS,CAAC,cAAc;AAC3B,UAAM,IAAI,MAAM,wBAAwB,GAAG,0BAA0B;AAAA,EACvE;AACA,SAAO,SAAS,gBAAgB;AAClC;AAEO,SAAS,eACd,KACA,cACoB;AACpB,SAAO,QAAQ,IAAI,GAAG,KAAK;AAC7B;AAEO,SAAS,eAAe,KAAqB;AAClD,QAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,wBAAwB,GAAG,0BAA0B;AAAA,EACvE;AACA,SAAO;AACT;AAEO,SAAS,cACd,KACA,eAAwB,OACf;AACT,QAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,MAAI,CAAC,MAAO,QAAO;AACnB,SAAO,MAAM,YAAY,MAAM,UAAU,UAAU;AACrD;AAEO,SAAS,aAAa,KAAa,cAA+B;AACvE,QAAM,QAAQ,QAAQ,IAAI,GAAG;AAC7B,MAAI,CAAC,OAAO;AACV,QAAI,iBAAiB,QAAW;AAC9B,YAAM,IAAI,MAAM,wBAAwB,GAAG,0BAA0B;AAAA,IACvE;AACA,WAAO;AAAA,EACT;AACA,QAAM,MAAM,SAAS,OAAO,EAAE;AAC9B,MAAI,MAAM,GAAG,GAAG;AACd,UAAM,IAAI;AAAA,MACR,wBAAwB,GAAG,2BAA2B,KAAK;AAAA,IAC7D;AAAA,EACF;AACA,SAAO;AACT;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/formatting.ts"],
4
- "sourcesContent": ["/**\n * Formatting utilities for CLI output\n */\n\n/**\n * Format bytes to human-readable string\n */\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;\n}\n\n/**\n * Format duration in milliseconds to human-readable string\n */\nexport function formatDuration(ms: number): string {\n if (ms < 1000) return `${ms}ms`;\n\n const seconds = Math.floor(ms / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (days > 0) {\n return `${days}d ${hours % 24}h`;\n }\n if (hours > 0) {\n return `${hours}h ${minutes % 60}m`;\n }\n if (minutes > 0) {\n return `${minutes}m ${seconds % 60}s`;\n }\n\n return `${seconds}s`;\n}\n\n/**\n * Format relative time\n */\nexport function formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n\n const minutes = Math.floor(diff / 60000);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n\n if (days > 0) return `${days} day${days > 1 ? 's' : ''} ago`;\n if (hours > 0) return `${hours} hour${hours > 1 ? 's' : ''} ago`;\n if (minutes > 0) return `${minutes} minute${minutes > 1 ? 's' : ''} ago`;\n\n return 'just now';\n}\n\n/**\n * Truncate string with ellipsis\n */\nexport function truncate(str: string, maxLength: number): string {\n if (str.length <= maxLength) return str;\n return str.substring(0, maxLength - 3) + '...';\n}\n\n/**\n * Format percentage\n */\nexport function formatPercent(value: number, total: number): string {\n if (total === 0) return '0%';\n return `${((value / total) * 100).toFixed(1)}%`;\n}\n\n/**\n * Create a simple text progress bar\n */\nexport function createProgressBar(\n value: number,\n max: number,\n width: number = 20\n): string {\n const percent = Math.min(value / max, 1);\n const filled = Math.floor(percent * width);\n const empty = width - filled;\n\n return '\u2588'.repeat(filled) + '\u2591'.repeat(empty);\n}\n"],
5
- "mappings": ";;;;AAOO,SAAS,YAAY,OAAuB;AACjD,MAAI,UAAU,EAAG,QAAO;AAExB,QAAM,IAAI;AACV,QAAM,QAAQ,CAAC,KAAK,MAAM,MAAM,MAAM,IAAI;AAC1C,QAAM,IAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC;AAElD,SAAO,IAAI,QAAQ,KAAK,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAC3D;AAKO,SAAS,eAAe,IAAoB;AACjD,MAAI,KAAK,IAAM,QAAO,GAAG,EAAE;AAE3B,QAAM,UAAU,KAAK,MAAM,KAAK,GAAI;AACpC,QAAM,UAAU,KAAK,MAAM,UAAU,EAAE;AACvC,QAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AACrC,QAAM,OAAO,KAAK,MAAM,QAAQ,EAAE;AAElC,MAAI,OAAO,GAAG;AACZ,WAAO,GAAG,IAAI,KAAK,QAAQ,EAAE;AAAA,EAC/B;AACA,MAAI,QAAQ,GAAG;AACb,WAAO,GAAG,KAAK,KAAK,UAAU,EAAE;AAAA,EAClC;AACA,MAAI,UAAU,GAAG;AACf,WAAO,GAAG,OAAO,KAAK,UAAU,EAAE;AAAA,EACpC;AAEA,SAAO,GAAG,OAAO;AACnB;AAKO,SAAS,mBAAmB,WAA2B;AAC5D,QAAM,MAAM,KAAK,IAAI;AACrB,QAAM,OAAO,MAAM;AAEnB,QAAM,UAAU,KAAK,MAAM,OAAO,GAAK;AACvC,QAAM,QAAQ,KAAK,MAAM,UAAU,EAAE;AACrC,QAAM,OAAO,KAAK,MAAM,QAAQ,EAAE;AAElC,MAAI,OAAO,EAAG,QAAO,GAAG,IAAI,OAAO,OAAO,IAAI,MAAM,EAAE;AACtD,MAAI,QAAQ,EAAG,QAAO,GAAG,KAAK,QAAQ,QAAQ,IAAI,MAAM,EAAE;AAC1D,MAAI,UAAU,EAAG,QAAO,GAAG,OAAO,UAAU,UAAU,IAAI,MAAM,EAAE;AAElE,SAAO;AACT;AAKO,SAAS,SAAS,KAAa,WAA2B;AAC/D,MAAI,IAAI,UAAU,UAAW,QAAO;AACpC,SAAO,IAAI,UAAU,GAAG,YAAY,CAAC,IAAI;AAC3C;AAKO,SAAS,cAAc,OAAe,OAAuB;AAClE,MAAI,UAAU,EAAG,QAAO;AACxB,SAAO,IAAK,QAAQ,QAAS,KAAK,QAAQ,CAAC,CAAC;AAC9C;AAKO,SAAS,kBACd,OACA,KACA,QAAgB,IACR;AACR,QAAM,UAAU,KAAK,IAAI,QAAQ,KAAK,CAAC;AACvC,QAAM,SAAS,KAAK,MAAM,UAAU,KAAK;AACzC,QAAM,QAAQ,QAAQ;AAEtB,SAAO,SAAI,OAAO,MAAM,IAAI,SAAI,OAAO,KAAK;AAC9C;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/process-cleanup.ts"],
4
- "sourcesContent": ["/**\n * Process Cleanup Utility\n * Automatically cleans up stale stackmemory processes older than 24h\n * with no recent log activity.\n */\n\nimport { execSync } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as os from 'os';\nimport { logger } from '../core/monitoring/logger.js';\n\nexport interface StaleProcess {\n pid: number;\n command: string;\n startTime: Date;\n ageHours: number;\n logFile?: string;\n lastLogActivity?: Date;\n}\n\nexport interface CleanupResult {\n found: StaleProcess[];\n killed: number[];\n errors: Array<{ pid: number; error: string }>;\n}\n\nconst STACKMEMORY_PROCESS_PATTERNS = [\n 'stackmemory',\n 'ralph orchestrate',\n 'ralph swarm',\n 'ralph loop',\n 'hooks start',\n];\n\n/**\n * Get all running stackmemory-related processes\n */\nexport function getStackmemoryProcesses(): StaleProcess[] {\n const processes: StaleProcess[] = [];\n\n try {\n // Get process list with start time (macOS/Linux compatible)\n const psOutput = execSync(\n 'ps -eo pid,lstart,command 2>/dev/null || ps -eo pid,start,args 2>/dev/null',\n { encoding: 'utf-8', stdio: ['pipe', 'pipe', 'pipe'] }\n );\n\n const lines = psOutput.trim().split('\\n').slice(1); // Skip header\n\n for (const line of lines) {\n // Check if it's a stackmemory process\n const isStackmemory = STACKMEMORY_PROCESS_PATTERNS.some((pattern) =>\n line.toLowerCase().includes(pattern.toLowerCase())\n );\n\n if (!isStackmemory) continue;\n\n // Parse the line - format varies by OS\n // macOS: PID \"Day Mon DD HH:MM:SS YYYY\" COMMAND\n const match = line.match(\n /^\\s*(\\d+)\\s+(\\w+\\s+\\w+\\s+\\d+\\s+[\\d:]+\\s+\\d+)\\s+(.+)$/\n );\n\n if (match) {\n const pid = parseInt(match[1], 10);\n const startTimeStr = match[2];\n const command = match[3];\n\n // Skip current process\n if (pid === process.pid) continue;\n\n // Parse start time\n const startTime = new Date(startTimeStr);\n const ageMs = Date.now() - startTime.getTime();\n const ageHours = ageMs / (1000 * 60 * 60);\n\n processes.push({\n pid,\n command: command.slice(0, 100), // Truncate long commands\n startTime,\n ageHours,\n });\n }\n }\n } catch (error) {\n logger.warn('Failed to get process list:', error);\n }\n\n return processes;\n}\n\n/**\n * Check if a process has recent log activity\n */\nfunction hasRecentLogActivity(\n proc: StaleProcess,\n maxAgeHours: number\n): boolean {\n const logDir = path.join(os.homedir(), '.stackmemory', 'logs');\n\n if (!fs.existsSync(logDir)) return false;\n\n try {\n // Look for log files that might be related to this process\n const logFiles = fs.readdirSync(logDir).filter((f) => f.endsWith('.log'));\n\n for (const logFile of logFiles) {\n const logPath = path.join(logDir, logFile);\n const stats = fs.statSync(logPath);\n const logAgeHours = (Date.now() - stats.mtimeMs) / (1000 * 60 * 60);\n\n if (logAgeHours < maxAgeHours) {\n // Check if log contains this PID\n try {\n const content = fs.readFileSync(logPath, 'utf-8').slice(-10000); // Last 10KB\n if (\n content.includes(`pid:${proc.pid}`) ||\n content.includes(`PID ${proc.pid}`)\n ) {\n proc.logFile = logPath;\n proc.lastLogActivity = stats.mtime;\n return true;\n }\n } catch {\n // Ignore read errors\n }\n }\n }\n } catch (error) {\n logger.warn('Failed to check log activity:', error);\n }\n\n return false;\n}\n\n/**\n * Find stale processes older than specified hours with no recent log activity\n */\nexport function findStaleProcesses(maxAgeHours: number = 24): StaleProcess[] {\n const allProcesses = getStackmemoryProcesses();\n\n return allProcesses.filter((proc) => {\n // Must be older than threshold\n if (proc.ageHours < maxAgeHours) return false;\n\n // Check for recent log activity\n if (hasRecentLogActivity(proc, maxAgeHours)) return false;\n\n return true;\n });\n}\n\n/**\n * Kill stale processes\n */\nexport function killStaleProcesses(\n processes: StaleProcess[],\n dryRun: boolean = false\n): CleanupResult {\n const result: CleanupResult = {\n found: processes,\n killed: [],\n errors: [],\n };\n\n for (const proc of processes) {\n if (dryRun) {\n logger.info(`[DRY RUN] Would kill PID ${proc.pid}: ${proc.command}`);\n continue;\n }\n\n try {\n process.kill(proc.pid, 'SIGTERM');\n result.killed.push(proc.pid);\n logger.info(`Killed stale process ${proc.pid}: ${proc.command}`);\n } catch (error: unknown) {\n const err = error as NodeJS.ErrnoException;\n if (err.code === 'ESRCH') {\n // Process already dead\n result.killed.push(proc.pid);\n } else {\n result.errors.push({\n pid: proc.pid,\n error: err.message || 'Unknown error',\n });\n logger.warn(`Failed to kill PID ${proc.pid}:`, err.message);\n }\n }\n }\n\n return result;\n}\n\n/**\n * Main cleanup function\n */\nexport function cleanupStaleProcesses(\n options: {\n maxAgeHours?: number;\n dryRun?: boolean;\n } = {}\n): CleanupResult {\n const { maxAgeHours = 24, dryRun = false } = options;\n\n logger.info(`Looking for stale processes older than ${maxAgeHours}h...`);\n\n const staleProcesses = findStaleProcesses(maxAgeHours);\n\n if (staleProcesses.length === 0) {\n logger.info('No stale processes found');\n return { found: [], killed: [], errors: [] };\n }\n\n logger.info(`Found ${staleProcesses.length} stale process(es)`);\n\n return killStaleProcesses(staleProcesses, dryRun);\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }