@stackmemoryai/stackmemory 0.8.1 → 1.0.0

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 (788) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +15 -3
  3. package/dist/src/agents/core/agent-task-manager.js +0 -1
  4. package/dist/src/agents/verifiers/base-verifier.js +0 -1
  5. package/dist/src/agents/verifiers/formatter-verifier.js +0 -1
  6. package/dist/src/agents/verifiers/llm-judge.js +0 -1
  7. package/dist/src/cli/auto-detect.js +0 -1
  8. package/dist/src/cli/claude-sm-danger.js +0 -1
  9. package/dist/src/cli/claude-sm.js +0 -1
  10. package/dist/src/cli/codex-sm-danger.js +0 -1
  11. package/dist/src/cli/codex-sm.js +0 -1
  12. package/dist/src/cli/commands/api.js +0 -1
  13. package/dist/src/cli/commands/auto-background.js +0 -1
  14. package/dist/src/cli/commands/cleanup-processes.js +0 -1
  15. package/dist/src/cli/commands/clear.js +0 -1
  16. package/dist/src/cli/commands/config.js +0 -1
  17. package/dist/src/cli/commands/context-rehydrate.js +0 -1
  18. package/dist/src/cli/commands/context.js +0 -1
  19. package/dist/src/cli/commands/daemon.js +0 -1
  20. package/dist/src/cli/commands/dashboard.js +4 -5
  21. package/dist/src/cli/commands/db.js +0 -1
  22. package/dist/src/cli/commands/decision.js +0 -1
  23. package/dist/src/cli/commands/discovery.js +0 -1
  24. package/dist/src/cli/commands/handoff.js +0 -1
  25. package/dist/src/cli/commands/hooks.js +0 -1
  26. package/dist/src/cli/commands/linear.js +0 -1
  27. package/dist/src/cli/commands/log.js +0 -1
  28. package/dist/src/cli/commands/login.js +0 -1
  29. package/dist/src/cli/commands/migrate.js +0 -1
  30. package/dist/src/cli/commands/model.js +0 -1
  31. package/dist/src/cli/commands/onboard.js +0 -1
  32. package/dist/src/cli/commands/ping.js +0 -1
  33. package/dist/src/cli/commands/projects.js +0 -1
  34. package/dist/src/cli/commands/ralph.js +0 -1
  35. package/dist/src/cli/commands/retrieval.js +0 -1
  36. package/dist/src/cli/commands/search.js +0 -1
  37. package/dist/src/cli/commands/service.js +0 -1
  38. package/dist/src/cli/commands/session.js +0 -1
  39. package/dist/src/cli/commands/setup.js +0 -4
  40. package/dist/src/cli/commands/shell.js +0 -1
  41. package/dist/src/cli/commands/signup.js +0 -1
  42. package/dist/src/cli/commands/skills.js +4 -3
  43. package/dist/src/cli/commands/storage-tier.js +0 -1
  44. package/dist/src/cli/commands/sweep.js +0 -1
  45. package/dist/src/cli/commands/tasks.js +0 -1
  46. package/dist/src/cli/commands/worktree.js +10 -5
  47. package/dist/src/cli/index.js +8 -5
  48. package/dist/src/cli/opencode-sm.js +0 -1
  49. package/dist/src/cli/utils/viewer.js +0 -1
  50. package/dist/src/core/config/config-manager.js +0 -1
  51. package/dist/src/core/config/feature-flags.js +0 -1
  52. package/dist/src/core/config/storage-config.js +0 -1
  53. package/dist/src/core/config/types.js +0 -1
  54. package/dist/src/core/context/auto-context.js +0 -1
  55. package/dist/src/core/context/dual-stack-manager.js +0 -1
  56. package/dist/src/core/context/enhanced-rehydration.js +0 -2
  57. package/dist/src/core/context/frame-database.js +60 -6
  58. package/dist/src/core/context/frame-digest.js +0 -1
  59. package/dist/src/core/context/frame-handoff-manager.js +0 -1
  60. package/dist/src/core/context/frame-lifecycle-hooks.js +0 -1
  61. package/dist/src/core/context/frame-recovery.js +0 -1
  62. package/dist/src/core/context/frame-stack.js +0 -1
  63. package/dist/src/core/context/frame-types.js +0 -1
  64. package/dist/src/core/context/index.js +0 -1
  65. package/dist/src/core/context/permission-manager.js +0 -1
  66. package/dist/src/core/context/recursive-context-manager.js +3 -2
  67. package/dist/src/core/context/refactored-frame-manager.js +0 -1
  68. package/dist/src/core/context/shared-context-layer.js +0 -1
  69. package/dist/src/core/context/stack-merge-resolver.js +0 -1
  70. package/dist/src/core/context/validation.js +0 -1
  71. package/dist/src/core/database/batch-operations.js +0 -1
  72. package/dist/src/core/database/connection-pool.js +0 -1
  73. package/dist/src/core/database/database-adapter.js +0 -1
  74. package/dist/src/core/database/embedding-provider-factory.js +0 -1
  75. package/dist/src/core/database/embedding-provider.js +0 -1
  76. package/dist/src/core/database/migration-manager.js +0 -1
  77. package/dist/src/core/database/ollama-embedding-provider.js +0 -1
  78. package/dist/src/core/database/openai-embedding-provider.js +0 -1
  79. package/dist/src/core/database/query-cache.js +0 -1
  80. package/dist/src/core/database/query-router.js +0 -1
  81. package/dist/src/core/database/sqlite-adapter.js +18 -108
  82. package/dist/src/core/database/transformers-embedding-provider.js +0 -1
  83. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -1
  84. package/dist/src/core/digest/frame-digest-integration.js +0 -1
  85. package/dist/src/core/digest/hybrid-digest-generator.js +0 -1
  86. package/dist/src/core/digest/index.js +0 -1
  87. package/dist/src/core/digest/types.js +0 -1
  88. package/dist/src/core/errors/error-utils.js +0 -1
  89. package/dist/src/core/errors/index.js +0 -1
  90. package/dist/src/core/errors/recovery.js +0 -1
  91. package/dist/src/core/execution/parallel-executor.js +0 -1
  92. package/dist/src/core/extensions/custom-tools.js +0 -1
  93. package/dist/src/core/extensions/index.js +0 -1
  94. package/dist/src/core/extensions/loader.js +0 -1
  95. package/dist/src/core/extensions/plugin-system.js +0 -1
  96. package/dist/src/core/extensions/provider-adapter.js +0 -1
  97. package/dist/src/core/extensions/sandbox-runtime.js +0 -1
  98. package/dist/src/core/extensions/types.js +0 -1
  99. package/dist/src/core/frame/workflow-templates.js +0 -1
  100. package/dist/src/core/merge/conflict-detector.js +0 -1
  101. package/dist/src/core/merge/index.js +0 -1
  102. package/dist/src/core/merge/resolution-engine.js +0 -1
  103. package/dist/src/core/merge/stack-diff.js +0 -1
  104. package/dist/src/core/merge/types.js +0 -1
  105. package/dist/src/core/merge/unified-merge-resolver.js +0 -1
  106. package/dist/src/core/models/fallback-monitor.js +0 -1
  107. package/dist/src/core/models/model-router.js +0 -1
  108. package/dist/src/core/monitoring/error-handler.js +0 -1
  109. package/dist/src/core/monitoring/logger.js +0 -1
  110. package/dist/src/core/monitoring/metrics.js +0 -1
  111. package/dist/src/core/monitoring/progress-tracker.js +0 -1
  112. package/dist/src/core/monitoring/session-monitor.js +0 -1
  113. package/dist/src/core/performance/context-cache.js +0 -1
  114. package/dist/src/core/performance/index.js +0 -1
  115. package/dist/src/core/performance/lazy-context-loader.js +3 -8
  116. package/dist/src/core/performance/monitor.js +0 -1
  117. package/dist/src/core/performance/optimized-frame-context.js +0 -1
  118. package/dist/src/core/performance/performance-benchmark.js +0 -1
  119. package/dist/src/core/performance/performance-profiler.js +0 -1
  120. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -1
  121. package/dist/src/core/persistence/postgres-adapter.js +0 -1
  122. package/dist/src/core/projects/project-isolation.js +0 -1
  123. package/dist/src/core/projects/project-manager.js +0 -1
  124. package/dist/src/core/query/query-parser.js +0 -1
  125. package/dist/src/core/query/query-templates.js +0 -1
  126. package/dist/src/core/retrieval/context-retriever.js +0 -1
  127. package/dist/src/core/retrieval/index.js +0 -1
  128. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -1
  129. package/dist/src/core/retrieval/llm-provider.js +0 -1
  130. package/dist/src/core/retrieval/privacy-filter.js +0 -1
  131. package/dist/src/core/retrieval/retrieval-audit.js +0 -1
  132. package/dist/src/core/retrieval/summary-generator.js +15 -6
  133. package/dist/src/core/retrieval/types.js +0 -1
  134. package/dist/src/core/retrieval/unified-context-assembler.js +0 -1
  135. package/dist/src/core/security/index.js +0 -1
  136. package/dist/src/core/security/input-sanitizer.js +0 -1
  137. package/dist/src/core/session/clear-survival.js +0 -1
  138. package/dist/src/core/session/enhanced-handoff.js +0 -1
  139. package/dist/src/core/session/handoff-generator.js +0 -1
  140. package/dist/src/core/session/index.js +0 -1
  141. package/dist/src/core/session/session-manager.js +0 -1
  142. package/dist/src/core/skills/index.js +0 -1
  143. package/dist/src/core/skills/skill-storage.js +0 -1
  144. package/dist/src/core/skills/types.js +0 -1
  145. package/dist/src/core/storage/chromadb-adapter.js +0 -1
  146. package/dist/src/core/storage/infinite-storage.js +0 -1
  147. package/dist/src/core/storage/project-registry.js +0 -1
  148. package/dist/src/core/storage/remote-storage.js +4 -2
  149. package/dist/src/core/storage/storage-tier-manager.js +0 -1
  150. package/dist/src/core/storage/two-tier-storage.js +0 -1
  151. package/dist/src/core/trace/cli-trace-wrapper.js +0 -1
  152. package/dist/src/core/trace/db-trace-wrapper.js +0 -1
  153. package/dist/src/core/trace/debug-trace.js +0 -1
  154. package/dist/src/core/trace/index.js +0 -1
  155. package/dist/src/core/trace/linear-api-wrapper.js +0 -1
  156. package/dist/src/core/trace/trace-detector.js +0 -1
  157. package/dist/src/core/trace/trace-store.js +4 -5
  158. package/dist/src/core/trace/types.js +0 -1
  159. package/dist/src/core/types.js +0 -1
  160. package/dist/src/core/utils/async-mutex.js +0 -1
  161. package/dist/src/core/utils/compression.js +0 -1
  162. package/dist/src/core/utils/update-checker.js +0 -1
  163. package/dist/src/core/worktree/worktree-manager.js +0 -1
  164. package/dist/src/daemon/daemon-config.js +0 -1
  165. package/dist/src/daemon/services/context-service.js +0 -1
  166. package/dist/src/daemon/services/linear-service.js +0 -1
  167. package/dist/src/daemon/services/maintenance-service.js +0 -1
  168. package/dist/src/daemon/services/memory-service.js +0 -1
  169. package/dist/src/daemon/session-daemon.js +0 -1
  170. package/dist/src/daemon/unified-daemon.js +0 -1
  171. package/dist/src/features/analytics/api/analytics-api.js +0 -1
  172. package/dist/src/features/analytics/core/analytics-service.js +1 -2
  173. package/dist/src/features/analytics/index.js +0 -1
  174. package/dist/src/features/analytics/queries/metrics-queries.js +8 -9
  175. package/dist/src/features/analytics/types/metrics.js +0 -1
  176. package/dist/src/features/browser/browser-mcp.js +0 -1
  177. package/dist/src/features/sweep/index.js +0 -1
  178. package/dist/src/features/sweep/prediction-client.js +0 -1
  179. package/dist/src/features/sweep/prompt-builder.js +0 -1
  180. package/dist/src/features/sweep/pty-wrapper.js +0 -1
  181. package/dist/src/features/sweep/state-watcher.js +0 -1
  182. package/dist/src/features/sweep/status-bar.js +0 -1
  183. package/dist/src/features/sweep/sweep-server-manager.js +0 -1
  184. package/dist/src/features/sweep/tab-interceptor.js +0 -1
  185. package/dist/src/features/sweep/types.js +0 -1
  186. package/dist/src/features/tasks/linear-task-manager.js +0 -1
  187. package/dist/src/features/tasks/task-aware-context.js +0 -1
  188. package/dist/src/features/tui/simple-monitor.js +0 -1
  189. package/dist/src/features/tui/swarm-monitor.js +0 -1
  190. package/dist/src/features/web/client/stores/task-store.js +0 -1
  191. package/dist/src/features/web/server/index.js +0 -1
  192. package/dist/src/features/workers/tmux-manager.js +0 -1
  193. package/dist/src/features/workers/worker-registry.js +0 -1
  194. package/dist/src/hooks/auto-background.js +0 -1
  195. package/dist/src/hooks/config.js +0 -1
  196. package/dist/src/hooks/daemon.js +0 -1
  197. package/dist/src/hooks/diffmem-hooks.js +0 -1
  198. package/dist/src/hooks/events.js +0 -1
  199. package/dist/src/hooks/index.js +0 -1
  200. package/dist/src/hooks/linear-task-picker.js +0 -1
  201. package/dist/src/hooks/schemas.js +0 -1
  202. package/dist/src/hooks/secure-fs.js +0 -1
  203. package/dist/src/hooks/security-logger.js +0 -1
  204. package/dist/src/hooks/session-summary.js +0 -1
  205. package/dist/src/index.js +0 -1
  206. package/dist/src/integrations/anthropic/client.js +0 -1
  207. package/dist/src/integrations/claude-code/agent-bridge.js +0 -1
  208. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +0 -1
  209. package/dist/src/integrations/claude-code/lifecycle-hooks.js +0 -1
  210. package/dist/src/integrations/claude-code/post-task-hooks.js +0 -1
  211. package/dist/src/integrations/claude-code/subagent-client-stub.js +0 -1
  212. package/dist/src/integrations/claude-code/subagent-client.js +0 -1
  213. package/dist/src/integrations/claude-code/task-coordinator.js +0 -1
  214. package/dist/src/integrations/diffmem/client.js +0 -1
  215. package/dist/src/integrations/diffmem/config.js +0 -1
  216. package/dist/src/integrations/diffmem/index.js +0 -1
  217. package/dist/src/integrations/diffmem/types.js +0 -1
  218. package/dist/src/integrations/linear/auth.js +0 -1
  219. package/dist/src/integrations/linear/auto-sync.js +0 -1
  220. package/dist/src/integrations/linear/client.js +0 -1
  221. package/dist/src/integrations/linear/config.js +0 -1
  222. package/dist/src/integrations/linear/migration.js +0 -1
  223. package/dist/src/integrations/linear/oauth-server.js +0 -1
  224. package/dist/src/integrations/linear/rest-client.js +0 -1
  225. package/dist/src/integrations/linear/sync-manager.js +0 -1
  226. package/dist/src/integrations/linear/sync-service.js +0 -1
  227. package/dist/src/integrations/linear/sync.js +0 -1
  228. package/dist/src/integrations/linear/types.js +0 -1
  229. package/dist/src/integrations/linear/unified-sync.js +0 -1
  230. package/dist/src/integrations/linear/webhook-handler.js +0 -1
  231. package/dist/src/integrations/linear/webhook-server.js +0 -1
  232. package/dist/src/integrations/linear/webhook.js +0 -1
  233. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +0 -1
  234. package/dist/src/integrations/mcp/handlers/context-handlers.js +43 -30
  235. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js +0 -1
  236. package/dist/src/integrations/mcp/handlers/discovery-handlers.js +0 -1
  237. package/dist/src/integrations/mcp/handlers/index.js +1 -3
  238. package/dist/src/integrations/mcp/handlers/linear-handlers.js +24 -61
  239. package/dist/src/integrations/mcp/handlers/skill-handlers.js +0 -1
  240. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -1
  241. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -1
  242. package/dist/src/integrations/mcp/index.js +0 -1
  243. package/dist/src/integrations/mcp/middleware/tool-scoring.js +3 -2
  244. package/dist/src/integrations/mcp/pending-utils.js +0 -1
  245. package/dist/src/integrations/mcp/refactored-server.js +0 -1
  246. package/dist/src/integrations/mcp/remote-server.js +0 -1
  247. package/dist/src/integrations/mcp/schemas.js +0 -1
  248. package/dist/src/integrations/mcp/server.js +20 -24
  249. package/dist/src/integrations/mcp/tool-definitions-code.js +0 -1
  250. package/dist/src/integrations/mcp/tool-definitions.js +0 -1
  251. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -1
  252. package/dist/src/integrations/ralph/context/context-budget-manager.js +0 -1
  253. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +0 -1
  254. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +0 -1
  255. package/dist/src/integrations/ralph/index.js +0 -1
  256. package/dist/src/integrations/ralph/learning/pattern-learner.js +0 -1
  257. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +5 -5
  258. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +0 -1
  259. package/dist/src/integrations/ralph/monitoring/swarm-registry.js +0 -1
  260. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -1
  261. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -1
  262. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +0 -1
  263. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +0 -1
  264. package/dist/src/integrations/ralph/performance/performance-optimizer.js +0 -1
  265. package/dist/src/integrations/ralph/recovery/crash-recovery.js +0 -1
  266. package/dist/src/integrations/ralph/state/state-reconciler.js +25 -9
  267. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +0 -1
  268. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +0 -1
  269. package/dist/src/integrations/ralph/types.js +0 -1
  270. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +0 -1
  271. package/dist/src/mcp/stackmemory-mcp-server.js +0 -1
  272. package/dist/src/middleware/exponential-rate-limiter.js +0 -1
  273. package/dist/src/models/user.model.js +0 -1
  274. package/dist/src/orchestrators/multimodal/constants.js +0 -1
  275. package/dist/src/orchestrators/multimodal/harness.js +0 -1
  276. package/dist/src/orchestrators/multimodal/providers.js +0 -1
  277. package/dist/src/orchestrators/multimodal/types.js +0 -1
  278. package/dist/src/orchestrators/multimodal/utils.js +0 -1
  279. package/dist/src/servers/production/auth-middleware.js +0 -1
  280. package/dist/src/services/config-service.js +0 -1
  281. package/dist/src/services/context-service.js +0 -1
  282. package/dist/src/skills/api-discovery.js +0 -1
  283. package/dist/src/skills/api-skill.js +0 -1
  284. package/dist/src/skills/claude-skills.js +0 -1
  285. package/dist/src/skills/dashboard-launcher.js +0 -1
  286. package/dist/src/skills/linear-task-runner.js +0 -1
  287. package/dist/src/skills/recursive-agent-orchestrator.js +0 -1
  288. package/dist/src/skills/repo-ingestion-skill.js +0 -1
  289. package/dist/src/skills/spec-generator-skill.js +0 -1
  290. package/dist/src/skills/unified-rlm-orchestrator.js +0 -1
  291. package/dist/src/types/task.js +0 -1
  292. package/dist/src/utils/env.js +0 -1
  293. package/dist/src/utils/formatting.js +0 -1
  294. package/dist/src/utils/process-cleanup.js +0 -1
  295. package/package.json +32 -7
  296. package/dist/scripts/benchmark-performance.js +0 -48
  297. package/dist/scripts/benchmark-performance.js.map +0 -7
  298. package/dist/scripts/check-redis.js +0 -42
  299. package/dist/scripts/check-redis.js.map +0 -7
  300. package/dist/scripts/initialize.js +0 -183
  301. package/dist/scripts/initialize.js.map +0 -7
  302. package/dist/scripts/list-linear-tasks.js +0 -124
  303. package/dist/scripts/list-linear-tasks.js.map +0 -7
  304. package/dist/scripts/measure-handoff-impact.js +0 -340
  305. package/dist/scripts/measure-handoff-impact.js.map +0 -7
  306. package/dist/scripts/query-chromadb.js +0 -160
  307. package/dist/scripts/query-chromadb.js.map +0 -7
  308. package/dist/scripts/show-linear-summary.js +0 -119
  309. package/dist/scripts/show-linear-summary.js.map +0 -7
  310. package/dist/scripts/simple-swarm-demo.js +0 -90
  311. package/dist/scripts/simple-swarm-demo.js.map +0 -7
  312. package/dist/scripts/status.js +0 -155
  313. package/dist/scripts/status.js.map +0 -7
  314. package/dist/scripts/test-chromadb-sync.js +0 -192
  315. package/dist/scripts/test-chromadb-sync.js.map +0 -7
  316. package/dist/scripts/test-ralph-iteration-fix.js +0 -86
  317. package/dist/scripts/test-ralph-iteration-fix.js.map +0 -7
  318. package/dist/scripts/test-ralph-iterations.js +0 -121
  319. package/dist/scripts/test-ralph-iterations.js.map +0 -7
  320. package/dist/scripts/test-redis-storage.js +0 -389
  321. package/dist/scripts/test-redis-storage.js.map +0 -7
  322. package/dist/scripts/test-simple-ralph-state-sync.js +0 -115
  323. package/dist/scripts/test-simple-ralph-state-sync.js.map +0 -7
  324. package/dist/scripts/test-swarm-fixes.js +0 -125
  325. package/dist/scripts/test-swarm-fixes.js.map +0 -7
  326. package/dist/scripts/test-swarm-tui.js +0 -23
  327. package/dist/scripts/test-swarm-tui.js.map +0 -7
  328. package/dist/scripts/test-tui-shortcuts.js +0 -52
  329. package/dist/scripts/test-tui-shortcuts.js.map +0 -7
  330. package/dist/scripts/validate-tui-shortcuts.js +0 -60
  331. package/dist/scripts/validate-tui-shortcuts.js.map +0 -7
  332. package/dist/src/agents/core/agent-task-manager.js.map +0 -7
  333. package/dist/src/agents/verifiers/base-verifier.js.map +0 -7
  334. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -7
  335. package/dist/src/agents/verifiers/llm-judge.js.map +0 -7
  336. package/dist/src/cli/auto-detect.js.map +0 -7
  337. package/dist/src/cli/claude-sm-danger.js.map +0 -7
  338. package/dist/src/cli/claude-sm.js.map +0 -7
  339. package/dist/src/cli/codex-sm-danger.js.map +0 -7
  340. package/dist/src/cli/codex-sm.js.map +0 -7
  341. package/dist/src/cli/commands/api.js.map +0 -7
  342. package/dist/src/cli/commands/auto-background.js.map +0 -7
  343. package/dist/src/cli/commands/cleanup-processes.js.map +0 -7
  344. package/dist/src/cli/commands/clear.js.map +0 -7
  345. package/dist/src/cli/commands/config.js.map +0 -7
  346. package/dist/src/cli/commands/context-rehydrate.js.map +0 -7
  347. package/dist/src/cli/commands/context.js.map +0 -7
  348. package/dist/src/cli/commands/daemon.js.map +0 -7
  349. package/dist/src/cli/commands/dashboard.js.map +0 -7
  350. package/dist/src/cli/commands/db.js.map +0 -7
  351. package/dist/src/cli/commands/decision.js.map +0 -7
  352. package/dist/src/cli/commands/discovery.js.map +0 -7
  353. package/dist/src/cli/commands/handoff.js.map +0 -7
  354. package/dist/src/cli/commands/hooks.js.map +0 -7
  355. package/dist/src/cli/commands/linear.js.map +0 -7
  356. package/dist/src/cli/commands/log.js.map +0 -7
  357. package/dist/src/cli/commands/login.js.map +0 -7
  358. package/dist/src/cli/commands/migrate.js.map +0 -7
  359. package/dist/src/cli/commands/model.js.map +0 -7
  360. package/dist/src/cli/commands/onboard.js.map +0 -7
  361. package/dist/src/cli/commands/ping.js.map +0 -7
  362. package/dist/src/cli/commands/projects.js.map +0 -7
  363. package/dist/src/cli/commands/ralph.js.map +0 -7
  364. package/dist/src/cli/commands/retrieval.js.map +0 -7
  365. package/dist/src/cli/commands/search.js.map +0 -7
  366. package/dist/src/cli/commands/service.js.map +0 -7
  367. package/dist/src/cli/commands/session.js.map +0 -7
  368. package/dist/src/cli/commands/settings.js +0 -306
  369. package/dist/src/cli/commands/settings.js.map +0 -7
  370. package/dist/src/cli/commands/setup.js.map +0 -7
  371. package/dist/src/cli/commands/shell.js.map +0 -7
  372. package/dist/src/cli/commands/signup.js.map +0 -7
  373. package/dist/src/cli/commands/skills.js.map +0 -7
  374. package/dist/src/cli/commands/sms-notify.js +0 -795
  375. package/dist/src/cli/commands/sms-notify.js.map +0 -7
  376. package/dist/src/cli/commands/storage-tier.js.map +0 -7
  377. package/dist/src/cli/commands/sweep.js.map +0 -7
  378. package/dist/src/cli/commands/tasks.js.map +0 -7
  379. package/dist/src/cli/commands/worktree.js.map +0 -7
  380. package/dist/src/cli/index.js.map +0 -7
  381. package/dist/src/cli/opencode-sm.js.map +0 -7
  382. package/dist/src/cli/utils/viewer.js.map +0 -7
  383. package/dist/src/core/config/config-manager.js.map +0 -7
  384. package/dist/src/core/config/feature-flags.js.map +0 -7
  385. package/dist/src/core/config/storage-config.js.map +0 -7
  386. package/dist/src/core/config/types.js.map +0 -7
  387. package/dist/src/core/context/auto-context.js.map +0 -7
  388. package/dist/src/core/context/dual-stack-manager.js.map +0 -7
  389. package/dist/src/core/context/enhanced-rehydration.js.map +0 -7
  390. package/dist/src/core/context/frame-database.js.map +0 -7
  391. package/dist/src/core/context/frame-digest.js.map +0 -7
  392. package/dist/src/core/context/frame-handoff-manager.js.map +0 -7
  393. package/dist/src/core/context/frame-lifecycle-hooks.js.map +0 -7
  394. package/dist/src/core/context/frame-recovery.js.map +0 -7
  395. package/dist/src/core/context/frame-stack.js.map +0 -7
  396. package/dist/src/core/context/frame-types.js.map +0 -7
  397. package/dist/src/core/context/index.js.map +0 -7
  398. package/dist/src/core/context/permission-manager.js.map +0 -7
  399. package/dist/src/core/context/recursive-context-manager.js.map +0 -7
  400. package/dist/src/core/context/refactored-frame-manager.js.map +0 -7
  401. package/dist/src/core/context/shared-context-layer.js.map +0 -7
  402. package/dist/src/core/context/stack-merge-resolver.js.map +0 -7
  403. package/dist/src/core/context/validation.js.map +0 -7
  404. package/dist/src/core/database/batch-operations.js.map +0 -7
  405. package/dist/src/core/database/connection-pool.js.map +0 -7
  406. package/dist/src/core/database/database-adapter.js.map +0 -7
  407. package/dist/src/core/database/embedding-provider-factory.js.map +0 -7
  408. package/dist/src/core/database/embedding-provider.js.map +0 -7
  409. package/dist/src/core/database/migration-manager.js.map +0 -7
  410. package/dist/src/core/database/ollama-embedding-provider.js.map +0 -7
  411. package/dist/src/core/database/openai-embedding-provider.js.map +0 -7
  412. package/dist/src/core/database/query-cache.js.map +0 -7
  413. package/dist/src/core/database/query-router.js.map +0 -7
  414. package/dist/src/core/database/sqlite-adapter.js.map +0 -7
  415. package/dist/src/core/database/transformers-embedding-provider.js.map +0 -7
  416. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -7
  417. package/dist/src/core/digest/frame-digest-integration.js.map +0 -7
  418. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -7
  419. package/dist/src/core/digest/index.js.map +0 -7
  420. package/dist/src/core/digest/types.js.map +0 -7
  421. package/dist/src/core/errors/error-utils.js.map +0 -7
  422. package/dist/src/core/errors/index.js.map +0 -7
  423. package/dist/src/core/errors/recovery.js.map +0 -7
  424. package/dist/src/core/execution/parallel-executor.js.map +0 -7
  425. package/dist/src/core/extensions/custom-tools.js.map +0 -7
  426. package/dist/src/core/extensions/index.js.map +0 -7
  427. package/dist/src/core/extensions/loader.js.map +0 -7
  428. package/dist/src/core/extensions/plugin-system.js.map +0 -7
  429. package/dist/src/core/extensions/provider-adapter.js.map +0 -7
  430. package/dist/src/core/extensions/sandbox-runtime.js.map +0 -7
  431. package/dist/src/core/extensions/types.js.map +0 -7
  432. package/dist/src/core/frame/workflow-templates.js.map +0 -7
  433. package/dist/src/core/merge/conflict-detector.js.map +0 -7
  434. package/dist/src/core/merge/index.js.map +0 -7
  435. package/dist/src/core/merge/resolution-engine.js.map +0 -7
  436. package/dist/src/core/merge/stack-diff.js.map +0 -7
  437. package/dist/src/core/merge/types.js.map +0 -7
  438. package/dist/src/core/merge/unified-merge-resolver.js.map +0 -7
  439. package/dist/src/core/models/fallback-monitor.js.map +0 -7
  440. package/dist/src/core/models/model-router.js.map +0 -7
  441. package/dist/src/core/monitoring/error-handler.js.map +0 -7
  442. package/dist/src/core/monitoring/logger.js.map +0 -7
  443. package/dist/src/core/monitoring/metrics.js.map +0 -7
  444. package/dist/src/core/monitoring/progress-tracker.js.map +0 -7
  445. package/dist/src/core/monitoring/session-monitor.js.map +0 -7
  446. package/dist/src/core/performance/context-cache.js.map +0 -7
  447. package/dist/src/core/performance/index.js.map +0 -7
  448. package/dist/src/core/performance/lazy-context-loader.js.map +0 -7
  449. package/dist/src/core/performance/monitor.js.map +0 -7
  450. package/dist/src/core/performance/optimized-frame-context.js.map +0 -7
  451. package/dist/src/core/performance/performance-benchmark.js.map +0 -7
  452. package/dist/src/core/performance/performance-profiler.js.map +0 -7
  453. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -7
  454. package/dist/src/core/persistence/postgres-adapter.js.map +0 -7
  455. package/dist/src/core/projects/project-isolation.js.map +0 -7
  456. package/dist/src/core/projects/project-manager.js.map +0 -7
  457. package/dist/src/core/query/query-parser.js.map +0 -7
  458. package/dist/src/core/query/query-templates.js.map +0 -7
  459. package/dist/src/core/retrieval/context-retriever.js.map +0 -7
  460. package/dist/src/core/retrieval/index.js.map +0 -7
  461. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -7
  462. package/dist/src/core/retrieval/llm-provider.js.map +0 -7
  463. package/dist/src/core/retrieval/privacy-filter.js.map +0 -7
  464. package/dist/src/core/retrieval/retrieval-audit.js.map +0 -7
  465. package/dist/src/core/retrieval/summary-generator.js.map +0 -7
  466. package/dist/src/core/retrieval/types.js.map +0 -7
  467. package/dist/src/core/retrieval/unified-context-assembler.js.map +0 -7
  468. package/dist/src/core/security/index.js.map +0 -7
  469. package/dist/src/core/security/input-sanitizer.js.map +0 -7
  470. package/dist/src/core/session/clear-survival.js.map +0 -7
  471. package/dist/src/core/session/enhanced-handoff.js.map +0 -7
  472. package/dist/src/core/session/handoff-generator.js.map +0 -7
  473. package/dist/src/core/session/index.js.map +0 -7
  474. package/dist/src/core/session/session-manager.js.map +0 -7
  475. package/dist/src/core/skills/index.js.map +0 -7
  476. package/dist/src/core/skills/skill-storage.js.map +0 -7
  477. package/dist/src/core/skills/types.js.map +0 -7
  478. package/dist/src/core/storage/chromadb-adapter.js.map +0 -7
  479. package/dist/src/core/storage/infinite-storage.js.map +0 -7
  480. package/dist/src/core/storage/project-registry.js.map +0 -7
  481. package/dist/src/core/storage/remote-storage.js.map +0 -7
  482. package/dist/src/core/storage/storage-tier-manager.js.map +0 -7
  483. package/dist/src/core/storage/two-tier-storage.js.map +0 -7
  484. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -7
  485. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -7
  486. package/dist/src/core/trace/debug-trace.js.map +0 -7
  487. package/dist/src/core/trace/index.js.map +0 -7
  488. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -7
  489. package/dist/src/core/trace/trace-detector.js.map +0 -7
  490. package/dist/src/core/trace/trace-store.js.map +0 -7
  491. package/dist/src/core/trace/types.js.map +0 -7
  492. package/dist/src/core/types.js.map +0 -7
  493. package/dist/src/core/utils/async-mutex.js.map +0 -7
  494. package/dist/src/core/utils/compression.js.map +0 -7
  495. package/dist/src/core/utils/update-checker.js.map +0 -7
  496. package/dist/src/core/worktree/worktree-manager.js.map +0 -7
  497. package/dist/src/daemon/daemon-config.js.map +0 -7
  498. package/dist/src/daemon/services/context-service.js.map +0 -7
  499. package/dist/src/daemon/services/linear-service.js.map +0 -7
  500. package/dist/src/daemon/services/maintenance-service.js.map +0 -7
  501. package/dist/src/daemon/services/memory-service.js.map +0 -7
  502. package/dist/src/daemon/session-daemon.js.map +0 -7
  503. package/dist/src/daemon/unified-daemon.js.map +0 -7
  504. package/dist/src/features/analytics/api/analytics-api.js.map +0 -7
  505. package/dist/src/features/analytics/core/analytics-service.js.map +0 -7
  506. package/dist/src/features/analytics/index.js.map +0 -7
  507. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -7
  508. package/dist/src/features/analytics/types/metrics.js.map +0 -7
  509. package/dist/src/features/browser/browser-mcp.js.map +0 -7
  510. package/dist/src/features/sweep/index.js.map +0 -7
  511. package/dist/src/features/sweep/prediction-client.js.map +0 -7
  512. package/dist/src/features/sweep/prompt-builder.js.map +0 -7
  513. package/dist/src/features/sweep/pty-wrapper.js.map +0 -7
  514. package/dist/src/features/sweep/state-watcher.js.map +0 -7
  515. package/dist/src/features/sweep/status-bar.js.map +0 -7
  516. package/dist/src/features/sweep/sweep-server-manager.js.map +0 -7
  517. package/dist/src/features/sweep/tab-interceptor.js.map +0 -7
  518. package/dist/src/features/sweep/types.js.map +0 -7
  519. package/dist/src/features/tasks/linear-task-manager.js.map +0 -7
  520. package/dist/src/features/tasks/task-aware-context.js.map +0 -7
  521. package/dist/src/features/tui/simple-monitor.js.map +0 -7
  522. package/dist/src/features/tui/swarm-monitor.js.map +0 -7
  523. package/dist/src/features/web/client/stores/task-store.js.map +0 -7
  524. package/dist/src/features/web/server/index.js.map +0 -7
  525. package/dist/src/features/workers/tmux-manager.js.map +0 -7
  526. package/dist/src/features/workers/worker-registry.js.map +0 -7
  527. package/dist/src/hooks/auto-background.js.map +0 -7
  528. package/dist/src/hooks/claude-code-whatsapp-hook.js +0 -197
  529. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +0 -7
  530. package/dist/src/hooks/config.js.map +0 -7
  531. package/dist/src/hooks/daemon.js.map +0 -7
  532. package/dist/src/hooks/diffmem-hooks.js.map +0 -7
  533. package/dist/src/hooks/events.js.map +0 -7
  534. package/dist/src/hooks/index.js.map +0 -7
  535. package/dist/src/hooks/linear-task-picker.js.map +0 -7
  536. package/dist/src/hooks/schemas.js.map +0 -7
  537. package/dist/src/hooks/secure-fs.js.map +0 -7
  538. package/dist/src/hooks/security-logger.js.map +0 -7
  539. package/dist/src/hooks/session-summary.js.map +0 -7
  540. package/dist/src/hooks/sms-action-runner.js +0 -371
  541. package/dist/src/hooks/sms-action-runner.js.map +0 -7
  542. package/dist/src/hooks/sms-notify.js +0 -506
  543. package/dist/src/hooks/sms-notify.js.map +0 -7
  544. package/dist/src/hooks/sms-watcher.js +0 -93
  545. package/dist/src/hooks/sms-watcher.js.map +0 -7
  546. package/dist/src/hooks/sms-webhook.js +0 -555
  547. package/dist/src/hooks/sms-webhook.js.map +0 -7
  548. package/dist/src/hooks/whatsapp-commands.js +0 -479
  549. package/dist/src/hooks/whatsapp-commands.js.map +0 -7
  550. package/dist/src/hooks/whatsapp-scheduler.js +0 -317
  551. package/dist/src/hooks/whatsapp-scheduler.js.map +0 -7
  552. package/dist/src/hooks/whatsapp-sync.js +0 -409
  553. package/dist/src/hooks/whatsapp-sync.js.map +0 -7
  554. package/dist/src/index.js.map +0 -7
  555. package/dist/src/integrations/anthropic/client.js.map +0 -7
  556. package/dist/src/integrations/claude-code/agent-bridge.js.map +0 -7
  557. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  558. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  559. package/dist/src/integrations/claude-code/post-task-hooks.js.map +0 -7
  560. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +0 -7
  561. package/dist/src/integrations/claude-code/subagent-client.js.map +0 -7
  562. package/dist/src/integrations/claude-code/task-coordinator.js.map +0 -7
  563. package/dist/src/integrations/diffmem/client.js.map +0 -7
  564. package/dist/src/integrations/diffmem/config.js.map +0 -7
  565. package/dist/src/integrations/diffmem/index.js.map +0 -7
  566. package/dist/src/integrations/diffmem/types.js.map +0 -7
  567. package/dist/src/integrations/linear/auth.js.map +0 -7
  568. package/dist/src/integrations/linear/auto-sync.js.map +0 -7
  569. package/dist/src/integrations/linear/client.js.map +0 -7
  570. package/dist/src/integrations/linear/config.js.map +0 -7
  571. package/dist/src/integrations/linear/migration.js.map +0 -7
  572. package/dist/src/integrations/linear/oauth-server.js.map +0 -7
  573. package/dist/src/integrations/linear/rest-client.js.map +0 -7
  574. package/dist/src/integrations/linear/sync-manager.js.map +0 -7
  575. package/dist/src/integrations/linear/sync-service.js.map +0 -7
  576. package/dist/src/integrations/linear/sync.js.map +0 -7
  577. package/dist/src/integrations/linear/types.js.map +0 -7
  578. package/dist/src/integrations/linear/unified-sync.js.map +0 -7
  579. package/dist/src/integrations/linear/webhook-handler.js.map +0 -7
  580. package/dist/src/integrations/linear/webhook-server.js.map +0 -7
  581. package/dist/src/integrations/linear/webhook.js.map +0 -7
  582. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  583. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -7
  584. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js.map +0 -7
  585. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  586. package/dist/src/integrations/mcp/handlers/index.js.map +0 -7
  587. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  588. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  589. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -7
  590. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  591. package/dist/src/integrations/mcp/index.js.map +0 -7
  592. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  593. package/dist/src/integrations/mcp/pending-utils.js.map +0 -7
  594. package/dist/src/integrations/mcp/refactored-server.js.map +0 -7
  595. package/dist/src/integrations/mcp/remote-server.js.map +0 -7
  596. package/dist/src/integrations/mcp/schemas.js.map +0 -7
  597. package/dist/src/integrations/mcp/server.js.map +0 -7
  598. package/dist/src/integrations/mcp/tool-definitions-code.js.map +0 -7
  599. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -7
  600. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  601. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +0 -7
  602. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  603. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  604. package/dist/src/integrations/ralph/index.js.map +0 -7
  605. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +0 -7
  606. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  607. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  608. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  609. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  610. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  611. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  612. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  613. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  614. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  615. package/dist/src/integrations/ralph/state/state-reconciler.js.map +0 -7
  616. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  617. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  618. package/dist/src/integrations/ralph/types.js.map +0 -7
  619. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  620. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -7
  621. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -7
  622. package/dist/src/models/user.model.js.map +0 -7
  623. package/dist/src/orchestrators/multimodal/constants.js.map +0 -7
  624. package/dist/src/orchestrators/multimodal/harness.js.map +0 -7
  625. package/dist/src/orchestrators/multimodal/providers.js.map +0 -7
  626. package/dist/src/orchestrators/multimodal/types.js.map +0 -7
  627. package/dist/src/orchestrators/multimodal/utils.js.map +0 -7
  628. package/dist/src/servers/production/auth-middleware.js.map +0 -7
  629. package/dist/src/services/config-service.js.map +0 -7
  630. package/dist/src/services/context-service.js.map +0 -7
  631. package/dist/src/skills/api-discovery.js.map +0 -7
  632. package/dist/src/skills/api-skill.js.map +0 -7
  633. package/dist/src/skills/claude-skills.js.map +0 -7
  634. package/dist/src/skills/dashboard-launcher.js.map +0 -7
  635. package/dist/src/skills/linear-task-runner.js.map +0 -7
  636. package/dist/src/skills/recursive-agent-orchestrator.js.map +0 -7
  637. package/dist/src/skills/repo-ingestion-skill.js.map +0 -7
  638. package/dist/src/skills/spec-generator-skill.js.map +0 -7
  639. package/dist/src/skills/unified-rlm-orchestrator.js.map +0 -7
  640. package/dist/src/types/task.js.map +0 -7
  641. package/dist/src/utils/env.js.map +0 -7
  642. package/dist/src/utils/formatting.js.map +0 -7
  643. package/dist/src/utils/process-cleanup.js.map +0 -7
  644. package/scripts/README-TESTING.md +0 -186
  645. package/scripts/analyze-cli-security.js +0 -288
  646. package/scripts/archive/add-phase-tasks-to-linear.js +0 -163
  647. package/scripts/archive/analyze-linear-duplicates.js +0 -214
  648. package/scripts/archive/analyze-remaining-duplicates.js +0 -230
  649. package/scripts/archive/analyze-sta-duplicates.js +0 -292
  650. package/scripts/archive/analyze-sta-graphql.js +0 -399
  651. package/scripts/archive/cancel-duplicate-tasks.ts +0 -246
  652. package/scripts/archive/check-all-duplicates.ts +0 -419
  653. package/scripts/archive/clean-duplicate-tasks.js +0 -114
  654. package/scripts/archive/cleanup-duplicate-tasks.ts +0 -286
  655. package/scripts/archive/create-phase-tasks.js +0 -387
  656. package/scripts/archive/delete-linear-duplicates.js +0 -182
  657. package/scripts/archive/delete-remaining-duplicates.js +0 -158
  658. package/scripts/archive/delete-sta-duplicates.js +0 -201
  659. package/scripts/archive/delete-sta-oauth.js +0 -201
  660. package/scripts/archive/export-sta-tasks.js +0 -62
  661. package/scripts/archive/install-auto-sync.js +0 -266
  662. package/scripts/archive/install-chromadb-hooks.sh +0 -133
  663. package/scripts/archive/install-enhanced-clear-hooks.sh +0 -431
  664. package/scripts/archive/install-post-task-hooks.sh +0 -289
  665. package/scripts/archive/install-stackmemory-hooks.sh +0 -420
  666. package/scripts/archive/merge-linear-duplicates-safe.ts +0 -362
  667. package/scripts/archive/merge-linear-duplicates.ts +0 -182
  668. package/scripts/archive/remove-sta-tasks.js +0 -70
  669. package/scripts/archive/setup-background-sync.sh +0 -168
  670. package/scripts/archive/setup-claude-auto-triggers.sh +0 -181
  671. package/scripts/archive/setup-claude-autostart.sh +0 -305
  672. package/scripts/archive/setup-git-hooks.sh +0 -25
  673. package/scripts/archive/setup-linear-oauth.sh +0 -46
  674. package/scripts/archive/setup-mcp.sh +0 -113
  675. package/scripts/archive/setup-railway-deployment.sh +0 -81
  676. package/scripts/auto-handoff.sh +0 -262
  677. package/scripts/background-sync-manager.js +0 -478
  678. package/scripts/benchmark-performance.ts +0 -57
  679. package/scripts/check-redis.ts +0 -48
  680. package/scripts/chromadb-auto-loader.sh +0 -128
  681. package/scripts/chromadb-context-loader.js +0 -479
  682. package/scripts/claude-chromadb-hook.js +0 -460
  683. package/scripts/claude-linear-skill.js +0 -455
  684. package/scripts/claude-pre-commit.sh +0 -302
  685. package/scripts/claude-sm-autostart.js +0 -579
  686. package/scripts/claude-with-chromadb.sh +0 -69
  687. package/scripts/clean-linear-backlog.js +0 -273
  688. package/scripts/cleanup-old-sessions.sh +0 -57
  689. package/scripts/create-cleanup-issues.js +0 -302
  690. package/scripts/create-sandbox.sh +0 -269
  691. package/scripts/debug-linear-update.js +0 -174
  692. package/scripts/delete-linear-tasks.js +0 -167
  693. package/scripts/demos/browser-test.ts +0 -39
  694. package/scripts/demos/ralph-integration-demo.ts +0 -245
  695. package/scripts/demos/trace-demo.ts +0 -200
  696. package/scripts/demos/trace-detector.demo.ts +0 -171
  697. package/scripts/demos/trace-test.ts +0 -79
  698. package/scripts/deploy-ralph-swarm.sh +0 -365
  699. package/scripts/deploy.sh +0 -89
  700. package/scripts/deployment/test-deployment.js +0 -194
  701. package/scripts/detect-and-rehydrate.js +0 -162
  702. package/scripts/detect-and-rehydrate.mjs +0 -165
  703. package/scripts/development/create-demo-tasks.js +0 -143
  704. package/scripts/development/debug-frame-test.js +0 -16
  705. package/scripts/development/demo-auto-sync.js +0 -128
  706. package/scripts/development/fix-all-imports.js +0 -213
  707. package/scripts/development/fix-imports.js +0 -229
  708. package/scripts/development/fix-lint-loop.cjs +0 -103
  709. package/scripts/development/fix-project-id.ts +0 -161
  710. package/scripts/development/fix-strict-mode-issues.ts +0 -291
  711. package/scripts/development/reorganize-structure.sh +0 -228
  712. package/scripts/development/test-persistence-direct.js +0 -148
  713. package/scripts/development/test-persistence.js +0 -114
  714. package/scripts/development/test-tasks.js +0 -93
  715. package/scripts/development/update-imports.js +0 -212
  716. package/scripts/fetch-linear-status.js +0 -125
  717. package/scripts/initialize.ts +0 -220
  718. package/scripts/linear-auto-sync.js +0 -262
  719. package/scripts/linear-auto-sync.sh +0 -161
  720. package/scripts/linear-sync-daemon.js +0 -150
  721. package/scripts/linear-task-review.js +0 -237
  722. package/scripts/list-linear-tasks.ts +0 -178
  723. package/scripts/mcp-proxy.js +0 -66
  724. package/scripts/measure-handoff-impact.mjs +0 -395
  725. package/scripts/measure-handoff-impact.ts +0 -450
  726. package/scripts/publish-local.js +0 -74
  727. package/scripts/query-chromadb.ts +0 -201
  728. package/scripts/ralph-integration-test.js +0 -274
  729. package/scripts/reconcile-local-tasks.js +0 -170
  730. package/scripts/recreate-frames-db.js +0 -89
  731. package/scripts/show-linear-summary.ts +0 -172
  732. package/scripts/simple-swarm-demo.ts +0 -114
  733. package/scripts/stackmemory-auto-handoff.sh +0 -231
  734. package/scripts/start-linear-sync-daemon.sh +0 -141
  735. package/scripts/start-temporal-paradox.sh +0 -214
  736. package/scripts/status.ts +0 -224
  737. package/scripts/stop-notify-webhook.sh +0 -19
  738. package/scripts/swarm-monitor.js +0 -509
  739. package/scripts/sync-and-clean-tasks.js +0 -258
  740. package/scripts/sync-linear-graphql.js +0 -303
  741. package/scripts/sync-linear-tasks.js +0 -186
  742. package/scripts/test-auto-triggers.sh +0 -57
  743. package/scripts/test-browser-mcp.js +0 -74
  744. package/scripts/test-chromadb-full.js +0 -115
  745. package/scripts/test-chromadb-hooks.sh +0 -28
  746. package/scripts/test-chromadb-sync.ts +0 -245
  747. package/scripts/test-claude-config.sh +0 -123
  748. package/scripts/test-cli-security.js +0 -293
  749. package/scripts/test-code-execution.js +0 -143
  750. package/scripts/test-hooks-persistence.sh +0 -220
  751. package/scripts/test-installation-scenarios.sh +0 -359
  752. package/scripts/test-installation.sh +0 -224
  753. package/scripts/test-mcp.js +0 -163
  754. package/scripts/test-parallel-swarms.js +0 -443
  755. package/scripts/test-pre-publish-quick.sh +0 -69
  756. package/scripts/test-quality-gates.sh +0 -263
  757. package/scripts/test-ralph-iteration-fix.ts +0 -118
  758. package/scripts/test-ralph-iterations.ts +0 -164
  759. package/scripts/test-redis-storage.ts +0 -490
  760. package/scripts/test-rlm-basic.sh +0 -122
  761. package/scripts/test-rlm-comprehensive.sh +0 -260
  762. package/scripts/test-rlm-e2e.sh +0 -268
  763. package/scripts/test-rlm-simple.js +0 -90
  764. package/scripts/test-rlm.js +0 -110
  765. package/scripts/test-session-handoff.sh +0 -165
  766. package/scripts/test-setup-e2e.sh +0 -154
  767. package/scripts/test-shell-integration.sh +0 -275
  768. package/scripts/test-simple-ralph-state-sync.ts +0 -178
  769. package/scripts/test-swarm-fixes.ts +0 -161
  770. package/scripts/test-swarm-git-workflow.js +0 -338
  771. package/scripts/test-swarm-tui.ts +0 -34
  772. package/scripts/test-tui-shortcuts.ts +0 -66
  773. package/scripts/testing/ab-test-runner.ts +0 -510
  774. package/scripts/testing/collect-metrics.ts +0 -457
  775. package/scripts/testing/quick-effectiveness-demo.js +0 -187
  776. package/scripts/testing/ralph-cli-test.js +0 -88
  777. package/scripts/testing/ralph-integration-validation.js +0 -727
  778. package/scripts/testing/ralph-swarm-test-scenarios.js +0 -613
  779. package/scripts/testing/real-performance-test.js +0 -422
  780. package/scripts/testing/results/real-performance-results.json +0 -90
  781. package/scripts/testing/run-effectiveness-tests.sh +0 -176
  782. package/scripts/testing/simple-effectiveness-test.js +0 -310
  783. package/scripts/testing/test-tier-migration.js +0 -100
  784. package/scripts/update-linear-status.js +0 -268
  785. package/scripts/update-linear-tasks-fixed.js +0 -284
  786. package/scripts/validate-claude-config.sh +0 -155
  787. package/scripts/validate-swarm-implementation.js +0 -467
  788. package/scripts/validate-tui-shortcuts.ts +0 -83
@@ -1,479 +0,0 @@
1
- import { fileURLToPath as __fileURLToPath } from 'url';
2
- import { dirname as __pathDirname } from 'path';
3
- const __filename = __fileURLToPath(import.meta.url);
4
- const __dirname = __pathDirname(__filename);
5
- import { existsSync, readFileSync } from "fs";
6
- import { join } from "path";
7
- import { homedir } from "os";
8
- import { execFileSync } from "child_process";
9
- import { writeFileSecure, ensureSecureDir } from "./secure-fs.js";
10
- import { WhatsAppCommandsConfigSchema, parseConfigSafe } from "./schemas.js";
11
- import { executeActionSafe } from "./sms-action-runner.js";
12
- import {
13
- syncContext,
14
- getFrameDigestData,
15
- generateMobileDigest,
16
- loadSyncOptions
17
- } from "./whatsapp-sync.js";
18
- import { sendNotification } from "./sms-notify.js";
19
- const MAX_REGEX_INPUT_LENGTH = 200;
20
- const DANGEROUS_PATTERNS = [
21
- /(\+|\*|\?)\s*(\+|\*|\?)/,
22
- // Nested quantifiers like .+* or .*+
23
- /\(\?[^)]*\)\s*[+*]/,
24
- // Quantified groups with + or *
25
- /\[[^\]]*\]\s*[+*]\s*[+*]/,
26
- // Character classes with nested quantifiers
27
- /(\.\*|\.\+)\s*(\.\*|\.\+)/,
28
- // Overlapping .* or .+
29
- /\(\[[^\]]+\]\+\)\+/,
30
- // Nested + with character class
31
- /\(.*\+\).*\+/
32
- // Nested + quantifiers
33
- ];
34
- function isPatternSafe(pattern) {
35
- for (const dangerous of DANGEROUS_PATTERNS) {
36
- if (dangerous.test(pattern)) {
37
- console.warn(
38
- `[whatsapp-commands] Potentially dangerous regex pattern blocked: ${pattern}`
39
- );
40
- return false;
41
- }
42
- }
43
- const quantifierCount = (pattern.match(/[+*?]/g) || []).length;
44
- const groupCount = (pattern.match(/\(/g) || []).length;
45
- if (quantifierCount > 5 || groupCount > 3) {
46
- console.warn(
47
- `[whatsapp-commands] Complex regex pattern blocked: ${pattern} (${quantifierCount} quantifiers, ${groupCount} groups)`
48
- );
49
- return false;
50
- }
51
- return true;
52
- }
53
- function safeRegexTest(pattern, input) {
54
- if (!isPatternSafe(pattern)) {
55
- return false;
56
- }
57
- const safeInput = input.slice(0, MAX_REGEX_INPUT_LENGTH);
58
- try {
59
- const regex = new RegExp(pattern);
60
- return regex.test(safeInput);
61
- } catch {
62
- console.warn(`[whatsapp-commands] Invalid regex pattern: ${pattern}`);
63
- return false;
64
- }
65
- }
66
- const CONFIG_PATH = join(homedir(), ".stackmemory", "whatsapp-commands.json");
67
- const REMOTE_SESSIONS_PATH = join(
68
- homedir(),
69
- ".stackmemory",
70
- "remote-sessions.json"
71
- );
72
- function loadRemoteSessions() {
73
- try {
74
- if (existsSync(REMOTE_SESSIONS_PATH)) {
75
- return JSON.parse(readFileSync(REMOTE_SESSIONS_PATH, "utf8"));
76
- }
77
- } catch {
78
- }
79
- return { sessions: [] };
80
- }
81
- function saveRemoteSessions(store) {
82
- try {
83
- ensureSecureDir(join(homedir(), ".stackmemory"));
84
- writeFileSecure(REMOTE_SESSIONS_PATH, JSON.stringify(store, null, 2));
85
- } catch {
86
- }
87
- }
88
- function addRemoteSession(session) {
89
- const store = loadRemoteSessions();
90
- store.sessions = [session, ...store.sessions.slice(0, 19)];
91
- saveRemoteSessions(store);
92
- }
93
- function getRemoteSessions() {
94
- return loadRemoteSessions().sessions;
95
- }
96
- function getActiveRemoteSessions() {
97
- return loadRemoteSessions().sessions.filter((s) => s.status === "active");
98
- }
99
- const DEFAULT_COMMANDS = [
100
- {
101
- name: "help",
102
- description: "List available commands",
103
- enabled: true
104
- },
105
- {
106
- name: "status",
107
- description: "Get current task/frame status",
108
- enabled: true
109
- },
110
- {
111
- name: "sessions",
112
- description: "List active remote sessions with URLs",
113
- enabled: true
114
- },
115
- {
116
- name: "remote",
117
- description: "Launch remote Claude session (requires task prompt)",
118
- enabled: true,
119
- requiresArg: true
120
- },
121
- // Disabled by default - can be enabled in config if needed
122
- {
123
- name: "context",
124
- description: "Get latest context digest",
125
- enabled: false
126
- },
127
- {
128
- name: "sync",
129
- description: "Push current context to WhatsApp",
130
- enabled: false
131
- },
132
- {
133
- name: "tasks",
134
- description: "List active tasks",
135
- enabled: false
136
- }
137
- ];
138
- const DEFAULT_CONFIG = {
139
- enabled: true,
140
- commands: DEFAULT_COMMANDS
141
- };
142
- function loadCommandsConfig() {
143
- try {
144
- if (existsSync(CONFIG_PATH)) {
145
- const data = JSON.parse(readFileSync(CONFIG_PATH, "utf8"));
146
- return parseConfigSafe(
147
- WhatsAppCommandsConfigSchema,
148
- { ...DEFAULT_CONFIG, ...data },
149
- DEFAULT_CONFIG,
150
- "whatsapp-commands"
151
- );
152
- }
153
- } catch {
154
- }
155
- return { ...DEFAULT_CONFIG };
156
- }
157
- function saveCommandsConfig(config) {
158
- try {
159
- ensureSecureDir(join(homedir(), ".stackmemory"));
160
- writeFileSecure(CONFIG_PATH, JSON.stringify(config, null, 2));
161
- } catch {
162
- }
163
- }
164
- function isCommand(message) {
165
- const trimmed = message.trim().toLowerCase();
166
- const config = loadCommandsConfig();
167
- if (!config.enabled) return false;
168
- const words = trimmed.split(/\s+/);
169
- const firstWord = words[0];
170
- return config.commands.some(
171
- (cmd) => cmd.enabled && cmd.name.toLowerCase() === firstWord
172
- );
173
- }
174
- function parseCommand(message) {
175
- const trimmed = message.trim();
176
- const words = trimmed.split(/\s+/);
177
- if (words.length === 0) return null;
178
- const name = words[0].toLowerCase();
179
- const arg = words.slice(1).join(" ").trim() || void 0;
180
- return { name, arg };
181
- }
182
- function generateHelpText(config) {
183
- const lines = ["Available commands:"];
184
- config.commands.filter((cmd) => cmd.enabled).forEach((cmd) => {
185
- const argHint = cmd.requiresArg ? " <arg>" : "";
186
- lines.push(` ${cmd.name}${argHint} - ${cmd.description}`);
187
- });
188
- lines.push("");
189
- lines.push("Reply with command name to execute");
190
- return lines.join("\n");
191
- }
192
- async function handleContextCommand() {
193
- const data = await getFrameDigestData();
194
- if (!data) {
195
- return "No context available. Start a task first.";
196
- }
197
- const options = loadSyncOptions();
198
- return generateMobileDigest(data, options);
199
- }
200
- async function handleSyncCommand() {
201
- const result = await syncContext();
202
- if (result.success) {
203
- return `Context synced (${result.digestLength} chars)`;
204
- } else {
205
- return `Sync failed: ${result.error}`;
206
- }
207
- }
208
- async function handleStatusCommand() {
209
- try {
210
- const data = await getFrameDigestData();
211
- if (!data) {
212
- return "No active session. Start with: claude-sm";
213
- }
214
- const lines = [];
215
- lines.push(`Frame: ${data.name || data.frameId}`);
216
- lines.push(`Status: ${data.status}`);
217
- lines.push(`Files: ${data.filesModified?.length || 0} modified`);
218
- lines.push(`Tools: ${data.toolCallCount || 0} calls`);
219
- if (data.errors?.length > 0) {
220
- const unresolved = data.errors.filter((e) => !e.resolved).length;
221
- if (unresolved > 0) lines.push(`Errors: ${unresolved} unresolved`);
222
- }
223
- lines.push(`Duration: ${Math.round(data.durationSeconds / 60)}min`);
224
- return lines.join("\n");
225
- } catch {
226
- return "Status unavailable";
227
- }
228
- }
229
- async function handleTasksCommand() {
230
- try {
231
- const data = await getFrameDigestData();
232
- if (!data) {
233
- return "No active tasks";
234
- }
235
- const lines = [];
236
- if (data.decisions?.length > 0) {
237
- lines.push("Recent decisions:");
238
- data.decisions.slice(0, 3).forEach((d, i) => {
239
- lines.push(
240
- `${i + 1}. ${d.substring(0, 50)}${d.length > 50 ? "..." : ""}`
241
- );
242
- });
243
- }
244
- if (data.risks?.length > 0) {
245
- lines.push("");
246
- lines.push("Risks:");
247
- data.risks.slice(0, 2).forEach((r) => {
248
- lines.push(`- ${r.substring(0, 50)}${r.length > 50 ? "..." : ""}`);
249
- });
250
- }
251
- if (lines.length === 0) {
252
- return "No active tasks or decisions";
253
- }
254
- return lines.join("\n");
255
- } catch {
256
- return "Tasks unavailable";
257
- }
258
- }
259
- async function handleRemoteCommand(prompt) {
260
- try {
261
- const sanitizedPrompt = prompt.replace(/[`$\\]/g, "").replace(/["']/g, "'").substring(0, 500);
262
- if (!sanitizedPrompt.trim()) {
263
- return "Please provide a task prompt. Usage: remote <your task>";
264
- }
265
- console.log(
266
- `[whatsapp-commands] Launching remote session: ${sanitizedPrompt.substring(0, 50)}...`
267
- );
268
- const output = execFileSync("claude", ["--remote", sanitizedPrompt], {
269
- encoding: "utf8",
270
- timeout: 3e4,
271
- stdio: ["pipe", "pipe", "pipe"]
272
- });
273
- const urlMatch = output.match(
274
- /https:\/\/claude\.ai\/code\/session_[a-zA-Z0-9]+/
275
- );
276
- if (urlMatch) {
277
- const sessionUrl = urlMatch[0];
278
- const sessionId = sessionUrl.split("/").pop() || "unknown";
279
- addRemoteSession({
280
- id: sessionId,
281
- url: sessionUrl,
282
- prompt: sanitizedPrompt,
283
- createdAt: (/* @__PURE__ */ new Date()).toISOString(),
284
- status: "active"
285
- });
286
- return `Remote session launched!
287
-
288
- ${sessionUrl}
289
-
290
- Task: ${sanitizedPrompt.substring(0, 100)}`;
291
- }
292
- return `Session launched:
293
- ${output.substring(0, 300)}`;
294
- } catch (err) {
295
- const error = err instanceof Error ? err.message : String(err);
296
- console.error(`[whatsapp-commands] Remote launch failed: ${error}`);
297
- return `Failed to launch remote session: ${error.substring(0, 100)}`;
298
- }
299
- }
300
- function handleSessionsCommand() {
301
- const sessions = getActiveRemoteSessions();
302
- if (sessions.length === 0) {
303
- return "No active remote sessions";
304
- }
305
- const lines = ["Active remote sessions:"];
306
- sessions.slice(0, 5).forEach((s, i) => {
307
- const age = Math.round(
308
- (Date.now() - new Date(s.createdAt).getTime()) / 6e4
309
- );
310
- const ageStr = age < 60 ? `${age}m ago` : `${Math.round(age / 60)}h ago`;
311
- lines.push(`${i + 1}. ${s.prompt.substring(0, 40)}... (${ageStr})`);
312
- lines.push(` ${s.url}`);
313
- });
314
- return lines.join("\n");
315
- }
316
- async function processCommand(from, message) {
317
- const config = loadCommandsConfig();
318
- if (!config.enabled) {
319
- return { handled: false };
320
- }
321
- const parsed = parseCommand(message);
322
- if (!parsed) {
323
- return { handled: false };
324
- }
325
- const command = config.commands.find(
326
- (cmd) => cmd.enabled && cmd.name.toLowerCase() === parsed.name
327
- );
328
- if (!command) {
329
- return { handled: false };
330
- }
331
- if (command.name === "help") {
332
- const helpText = generateHelpText(config);
333
- return { handled: true, response: helpText };
334
- }
335
- if (command.name === "context") {
336
- const contextText = await handleContextCommand();
337
- return { handled: true, response: contextText };
338
- }
339
- if (command.name === "sync") {
340
- const syncText = await handleSyncCommand();
341
- return { handled: true, response: syncText };
342
- }
343
- if (command.name === "status") {
344
- const statusText = await handleStatusCommand();
345
- return { handled: true, response: statusText };
346
- }
347
- if (command.name === "tasks") {
348
- const tasksText = await handleTasksCommand();
349
- return { handled: true, response: tasksText };
350
- }
351
- if (command.name === "remote") {
352
- if (!parsed.arg) {
353
- return {
354
- handled: true,
355
- response: "Usage: remote <task prompt>\nExample: remote Fix the login bug",
356
- error: "Missing prompt"
357
- };
358
- }
359
- const remoteText = await handleRemoteCommand(parsed.arg);
360
- return { handled: true, response: remoteText };
361
- }
362
- if (command.name === "sessions") {
363
- const sessionsText = handleSessionsCommand();
364
- return { handled: true, response: sessionsText };
365
- }
366
- if (command.requiresArg && !parsed.arg) {
367
- return {
368
- handled: true,
369
- response: `${command.name} requires an argument. Usage: ${command.name} <arg>`,
370
- error: "Missing argument"
371
- };
372
- }
373
- if (command.argPattern && parsed.arg) {
374
- if (!safeRegexTest(command.argPattern, parsed.arg)) {
375
- return {
376
- handled: true,
377
- response: `Invalid argument format for ${command.name}`,
378
- error: "Invalid argument format"
379
- };
380
- }
381
- }
382
- let action = command.action;
383
- if (action && parsed.arg) {
384
- if (command.name === "approve") {
385
- action = `gh pr review ${parsed.arg} --approve`;
386
- } else if (command.name === "merge") {
387
- action = `gh pr merge ${parsed.arg} --squash`;
388
- }
389
- }
390
- if (action) {
391
- console.log(`[whatsapp-commands] Executing: ${action}`);
392
- const result = await executeActionSafe(action, message);
393
- if (result.success) {
394
- const output = result.output?.slice(0, 200) || "Done";
395
- return {
396
- handled: true,
397
- response: `${command.name}: ${output}`,
398
- action
399
- };
400
- } else {
401
- return {
402
- handled: true,
403
- response: `${command.name} failed: ${result.error?.slice(0, 100)}`,
404
- error: result.error,
405
- action
406
- };
407
- }
408
- }
409
- return {
410
- handled: true,
411
- response: `Command ${command.name} acknowledged`
412
- };
413
- }
414
- async function sendCommandResponse(response) {
415
- const result = await sendNotification({
416
- type: "custom",
417
- title: "Command Result",
418
- message: response
419
- });
420
- return { success: result.success, error: result.error };
421
- }
422
- function enableCommands() {
423
- const config = loadCommandsConfig();
424
- config.enabled = true;
425
- saveCommandsConfig(config);
426
- }
427
- function disableCommands() {
428
- const config = loadCommandsConfig();
429
- config.enabled = false;
430
- saveCommandsConfig(config);
431
- }
432
- function isCommandsEnabled() {
433
- const config = loadCommandsConfig();
434
- return config.enabled;
435
- }
436
- function addCommand(command) {
437
- const config = loadCommandsConfig();
438
- const existingIndex = config.commands.findIndex(
439
- (c) => c.name.toLowerCase() === command.name.toLowerCase()
440
- );
441
- if (existingIndex >= 0) {
442
- config.commands[existingIndex] = command;
443
- } else {
444
- config.commands.push(command);
445
- }
446
- saveCommandsConfig(config);
447
- }
448
- function removeCommand(name) {
449
- const config = loadCommandsConfig();
450
- const initialLength = config.commands.length;
451
- config.commands = config.commands.filter(
452
- (c) => c.name.toLowerCase() !== name.toLowerCase()
453
- );
454
- if (config.commands.length < initialLength) {
455
- saveCommandsConfig(config);
456
- return true;
457
- }
458
- return false;
459
- }
460
- function getAvailableCommands() {
461
- const config = loadCommandsConfig();
462
- return config.commands.filter((c) => c.enabled);
463
- }
464
- export {
465
- addCommand,
466
- disableCommands,
467
- enableCommands,
468
- getActiveRemoteSessions,
469
- getAvailableCommands,
470
- getRemoteSessions,
471
- isCommand,
472
- isCommandsEnabled,
473
- loadCommandsConfig,
474
- processCommand,
475
- removeCommand,
476
- saveCommandsConfig,
477
- sendCommandResponse
478
- };
479
- //# sourceMappingURL=whatsapp-commands.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/whatsapp-commands.ts"],
4
- "sourcesContent": ["/**\n * WhatsApp Inbound Command Processor\n * Process WhatsApp messages as commands\n */\n\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport { execFileSync } from 'child_process';\nimport { writeFileSecure, ensureSecureDir } from './secure-fs.js';\nimport { WhatsAppCommandsConfigSchema, parseConfigSafe } from './schemas.js';\nimport { executeActionSafe } from './sms-action-runner.js';\nimport {\n syncContext,\n getFrameDigestData,\n generateMobileDigest,\n loadSyncOptions,\n} from './whatsapp-sync.js';\nimport { sendNotification } from './sms-notify.js';\n\n// Max input length for regex matching to prevent catastrophic backtracking\nconst MAX_REGEX_INPUT_LENGTH = 200;\n\n// Dangerous regex patterns that can cause ReDoS (catastrophic backtracking)\n// These patterns have nested quantifiers or overlapping alternatives\nconst DANGEROUS_PATTERNS = [\n /(\\+|\\*|\\?)\\s*(\\+|\\*|\\?)/, // Nested quantifiers like .+* or .*+\n /\\(\\?[^)]*\\)\\s*[+*]/, // Quantified groups with + or *\n /\\[[^\\]]*\\]\\s*[+*]\\s*[+*]/, // Character classes with nested quantifiers\n /(\\.\\*|\\.\\+)\\s*(\\.\\*|\\.\\+)/, // Overlapping .* or .+\n /\\(\\[[^\\]]+\\]\\+\\)\\+/, // Nested + with character class\n /\\(.*\\+\\).*\\+/, // Nested + quantifiers\n];\n\n/**\n * Check if a regex pattern might be vulnerable to ReDoS\n * Returns true if the pattern appears safe, false if potentially dangerous\n */\nfunction isPatternSafe(pattern: string): boolean {\n // Check against known dangerous patterns\n for (const dangerous of DANGEROUS_PATTERNS) {\n if (dangerous.test(pattern)) {\n console.warn(\n `[whatsapp-commands] Potentially dangerous regex pattern blocked: ${pattern}`\n );\n return false;\n }\n }\n\n // Additional heuristics: limit pattern complexity\n const quantifierCount = (pattern.match(/[+*?]/g) || []).length;\n const groupCount = (pattern.match(/\\(/g) || []).length;\n\n // If too many quantifiers or groups, consider it risky\n if (quantifierCount > 5 || groupCount > 3) {\n console.warn(\n `[whatsapp-commands] Complex regex pattern blocked: ${pattern} (${quantifierCount} quantifiers, ${groupCount} groups)`\n );\n return false;\n }\n\n return true;\n}\n\n/**\n * Safely test a regex pattern against input with ReDoS protection\n * Pre-validates the pattern for dangerous constructs before testing\n * Returns false if pattern is dangerous, invalid, or doesn't match\n */\nfunction safeRegexTest(pattern: string, input: string): boolean {\n // Pre-validate pattern for ReDoS safety BEFORE running it\n if (!isPatternSafe(pattern)) {\n return false;\n }\n\n // Truncate input to prevent catastrophic backtracking\n const safeInput = input.slice(0, MAX_REGEX_INPUT_LENGTH);\n\n try {\n const regex = new RegExp(pattern);\n return regex.test(safeInput);\n } catch {\n // Invalid regex pattern\n console.warn(`[whatsapp-commands] Invalid regex pattern: ${pattern}`);\n return false;\n }\n}\n\nexport interface WhatsAppCommand {\n name: string;\n description: string;\n enabled: boolean;\n action?: string; // Safe action to execute\n requiresArg?: boolean;\n argPattern?: string; // Regex pattern for arg validation\n}\n\nexport interface CommandsConfig {\n enabled: boolean;\n commands: WhatsAppCommand[];\n}\n\nexport interface CommandResult {\n handled: boolean;\n response?: string;\n action?: string;\n error?: string;\n}\n\nconst CONFIG_PATH = join(homedir(), '.stackmemory', 'whatsapp-commands.json');\nconst REMOTE_SESSIONS_PATH = join(\n homedir(),\n '.stackmemory',\n 'remote-sessions.json'\n);\n\n/**\n * Remote session tracking\n */\nexport interface RemoteSession {\n id: string;\n url: string;\n prompt: string;\n createdAt: string;\n status: 'active' | 'completed' | 'failed';\n lastActivity?: string;\n}\n\ninterface RemoteSessionsStore {\n sessions: RemoteSession[];\n}\n\nfunction loadRemoteSessions(): RemoteSessionsStore {\n try {\n if (existsSync(REMOTE_SESSIONS_PATH)) {\n return JSON.parse(readFileSync(REMOTE_SESSIONS_PATH, 'utf8'));\n }\n } catch {\n // Use defaults\n }\n return { sessions: [] };\n}\n\nfunction saveRemoteSessions(store: RemoteSessionsStore): void {\n try {\n ensureSecureDir(join(homedir(), '.stackmemory'));\n writeFileSecure(REMOTE_SESSIONS_PATH, JSON.stringify(store, null, 2));\n } catch {\n // Silently fail\n }\n}\n\nfunction addRemoteSession(session: RemoteSession): void {\n const store = loadRemoteSessions();\n // Keep last 20 sessions\n store.sessions = [session, ...store.sessions.slice(0, 19)];\n saveRemoteSessions(store);\n}\n\nexport function getRemoteSessions(): RemoteSession[] {\n return loadRemoteSessions().sessions;\n}\n\nexport function getActiveRemoteSessions(): RemoteSession[] {\n return loadRemoteSessions().sessions.filter((s) => s.status === 'active');\n}\n\n// Default supported commands - simplified for notifications + choices\nconst DEFAULT_COMMANDS: WhatsAppCommand[] = [\n {\n name: 'help',\n description: 'List available commands',\n enabled: true,\n },\n {\n name: 'status',\n description: 'Get current task/frame status',\n enabled: true,\n },\n {\n name: 'sessions',\n description: 'List active remote sessions with URLs',\n enabled: true,\n },\n {\n name: 'remote',\n description: 'Launch remote Claude session (requires task prompt)',\n enabled: true,\n requiresArg: true,\n },\n // Disabled by default - can be enabled in config if needed\n {\n name: 'context',\n description: 'Get latest context digest',\n enabled: false,\n },\n {\n name: 'sync',\n description: 'Push current context to WhatsApp',\n enabled: false,\n },\n {\n name: 'tasks',\n description: 'List active tasks',\n enabled: false,\n },\n];\n\nconst DEFAULT_CONFIG: CommandsConfig = {\n enabled: true,\n commands: DEFAULT_COMMANDS,\n};\n\n/**\n * Load commands config\n */\nexport function loadCommandsConfig(): CommandsConfig {\n try {\n if (existsSync(CONFIG_PATH)) {\n const data = JSON.parse(readFileSync(CONFIG_PATH, 'utf8'));\n return parseConfigSafe(\n WhatsAppCommandsConfigSchema,\n { ...DEFAULT_CONFIG, ...data },\n DEFAULT_CONFIG,\n 'whatsapp-commands'\n );\n }\n } catch {\n // Use defaults\n }\n return { ...DEFAULT_CONFIG };\n}\n\n/**\n * Save commands config\n */\nexport function saveCommandsConfig(config: CommandsConfig): void {\n try {\n ensureSecureDir(join(homedir(), '.stackmemory'));\n writeFileSecure(CONFIG_PATH, JSON.stringify(config, null, 2));\n } catch {\n // Silently fail\n }\n}\n\n/**\n * Check if a message is a command\n */\nexport function isCommand(message: string): boolean {\n const trimmed = message.trim().toLowerCase();\n\n // Check if it's a single word command\n const config = loadCommandsConfig();\n if (!config.enabled) return false;\n\n const words = trimmed.split(/\\s+/);\n const firstWord = words[0];\n\n return config.commands.some(\n (cmd) => cmd.enabled && cmd.name.toLowerCase() === firstWord\n );\n}\n\n/**\n * Parse command from message\n */\nfunction parseCommand(message: string): { name: string; arg?: string } | null {\n const trimmed = message.trim();\n const words = trimmed.split(/\\s+/);\n\n if (words.length === 0) return null;\n\n const name = words[0].toLowerCase();\n const arg = words.slice(1).join(' ').trim() || undefined;\n\n return { name, arg };\n}\n\n/**\n * Generate help text for available commands\n */\nfunction generateHelpText(config: CommandsConfig): string {\n const lines: string[] = ['Available commands:'];\n\n config.commands\n .filter((cmd) => cmd.enabled)\n .forEach((cmd) => {\n const argHint = cmd.requiresArg ? ' <arg>' : '';\n lines.push(` ${cmd.name}${argHint} - ${cmd.description}`);\n });\n\n lines.push('');\n lines.push('Reply with command name to execute');\n\n return lines.join('\\n');\n}\n\n/**\n * Handle the 'context' command specially\n */\nasync function handleContextCommand(): Promise<string> {\n const data = await getFrameDigestData();\n\n if (!data) {\n return 'No context available. Start a task first.';\n }\n\n const options = loadSyncOptions();\n return generateMobileDigest(data, options);\n}\n\n/**\n * Handle the 'sync' command specially\n */\nasync function handleSyncCommand(): Promise<string> {\n const result = await syncContext();\n\n if (result.success) {\n return `Context synced (${result.digestLength} chars)`;\n } else {\n return `Sync failed: ${result.error}`;\n }\n}\n\n/**\n * Handle the 'status' command - get current frame/task status\n */\nasync function handleStatusCommand(): Promise<string> {\n try {\n const data = await getFrameDigestData();\n if (!data) {\n return 'No active session. Start with: claude-sm';\n }\n\n const lines: string[] = [];\n lines.push(`Frame: ${data.name || data.frameId}`);\n lines.push(`Status: ${data.status}`);\n lines.push(`Files: ${data.filesModified?.length || 0} modified`);\n lines.push(`Tools: ${data.toolCallCount || 0} calls`);\n if (data.errors?.length > 0) {\n const unresolved = data.errors.filter((e) => !e.resolved).length;\n if (unresolved > 0) lines.push(`Errors: ${unresolved} unresolved`);\n }\n lines.push(`Duration: ${Math.round(data.durationSeconds / 60)}min`);\n\n return lines.join('\\n');\n } catch {\n return 'Status unavailable';\n }\n}\n\n/**\n * Handle the 'tasks' command - list recent decisions/risks\n */\nasync function handleTasksCommand(): Promise<string> {\n try {\n const data = await getFrameDigestData();\n if (!data) {\n return 'No active tasks';\n }\n\n const lines: string[] = [];\n\n if (data.decisions?.length > 0) {\n lines.push('Recent decisions:');\n data.decisions.slice(0, 3).forEach((d, i) => {\n lines.push(\n `${i + 1}. ${d.substring(0, 50)}${d.length > 50 ? '...' : ''}`\n );\n });\n }\n\n if (data.risks?.length > 0) {\n lines.push('');\n lines.push('Risks:');\n data.risks.slice(0, 2).forEach((r) => {\n lines.push(`- ${r.substring(0, 50)}${r.length > 50 ? '...' : ''}`);\n });\n }\n\n if (lines.length === 0) {\n return 'No active tasks or decisions';\n }\n\n return lines.join('\\n');\n } catch {\n return 'Tasks unavailable';\n }\n}\n\n/**\n * Handle the 'remote' command - launch a remote Claude session\n */\nasync function handleRemoteCommand(prompt: string): Promise<string> {\n try {\n // Sanitize prompt - remove any shell-dangerous characters\n const sanitizedPrompt = prompt\n .replace(/[`$\\\\]/g, '')\n .replace(/[\"']/g, \"'\")\n .substring(0, 500);\n\n if (!sanitizedPrompt.trim()) {\n return 'Please provide a task prompt. Usage: remote <your task>';\n }\n\n console.log(\n `[whatsapp-commands] Launching remote session: ${sanitizedPrompt.substring(0, 50)}...`\n );\n\n // Execute claude --remote with the prompt\n const output = execFileSync('claude', ['--remote', sanitizedPrompt], {\n encoding: 'utf8',\n timeout: 30000,\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n // Parse session URL from output\n // Expected format contains: https://claude.ai/code/session_...\n const urlMatch = output.match(\n /https:\\/\\/claude\\.ai\\/code\\/session_[a-zA-Z0-9]+/\n );\n\n if (urlMatch) {\n const sessionUrl = urlMatch[0];\n const sessionId = sessionUrl.split('/').pop() || 'unknown';\n\n // Store the session\n addRemoteSession({\n id: sessionId,\n url: sessionUrl,\n prompt: sanitizedPrompt,\n createdAt: new Date().toISOString(),\n status: 'active',\n });\n\n return `Remote session launched!\\n\\n${sessionUrl}\\n\\nTask: ${sanitizedPrompt.substring(0, 100)}`;\n }\n\n // No URL found - return raw output\n return `Session launched:\\n${output.substring(0, 300)}`;\n } catch (err) {\n const error = err instanceof Error ? err.message : String(err);\n console.error(`[whatsapp-commands] Remote launch failed: ${error}`);\n return `Failed to launch remote session: ${error.substring(0, 100)}`;\n }\n}\n\n/**\n * Handle the 'sessions' command - list active remote sessions\n */\nfunction handleSessionsCommand(): string {\n const sessions = getActiveRemoteSessions();\n\n if (sessions.length === 0) {\n return 'No active remote sessions';\n }\n\n const lines: string[] = ['Active remote sessions:'];\n\n sessions.slice(0, 5).forEach((s, i) => {\n const age = Math.round(\n (Date.now() - new Date(s.createdAt).getTime()) / 60000\n );\n const ageStr = age < 60 ? `${age}m ago` : `${Math.round(age / 60)}h ago`;\n lines.push(`${i + 1}. ${s.prompt.substring(0, 40)}... (${ageStr})`);\n lines.push(` ${s.url}`);\n });\n\n return lines.join('\\n');\n}\n\n/**\n * Process an incoming WhatsApp command\n */\nexport async function processCommand(\n from: string,\n message: string\n): Promise<CommandResult> {\n const config = loadCommandsConfig();\n\n if (!config.enabled) {\n return { handled: false };\n }\n\n const parsed = parseCommand(message);\n if (!parsed) {\n return { handled: false };\n }\n\n const command = config.commands.find(\n (cmd) => cmd.enabled && cmd.name.toLowerCase() === parsed.name\n );\n\n if (!command) {\n return { handled: false };\n }\n\n // Handle special commands\n if (command.name === 'help') {\n const helpText = generateHelpText(config);\n return { handled: true, response: helpText };\n }\n\n if (command.name === 'context') {\n const contextText = await handleContextCommand();\n return { handled: true, response: contextText };\n }\n\n if (command.name === 'sync') {\n const syncText = await handleSyncCommand();\n return { handled: true, response: syncText };\n }\n\n if (command.name === 'status') {\n const statusText = await handleStatusCommand();\n return { handled: true, response: statusText };\n }\n\n if (command.name === 'tasks') {\n const tasksText = await handleTasksCommand();\n return { handled: true, response: tasksText };\n }\n\n if (command.name === 'remote') {\n if (!parsed.arg) {\n return {\n handled: true,\n response:\n 'Usage: remote <task prompt>\\nExample: remote Fix the login bug',\n error: 'Missing prompt',\n };\n }\n const remoteText = await handleRemoteCommand(parsed.arg);\n return { handled: true, response: remoteText };\n }\n\n if (command.name === 'sessions') {\n const sessionsText = handleSessionsCommand();\n return { handled: true, response: sessionsText };\n }\n\n // Check if argument is required\n if (command.requiresArg && !parsed.arg) {\n return {\n handled: true,\n response: `${command.name} requires an argument. Usage: ${command.name} <arg>`,\n error: 'Missing argument',\n };\n }\n\n // Validate argument pattern if specified (with ReDoS protection)\n if (command.argPattern && parsed.arg) {\n if (!safeRegexTest(command.argPattern, parsed.arg)) {\n return {\n handled: true,\n response: `Invalid argument format for ${command.name}`,\n error: 'Invalid argument format',\n };\n }\n }\n\n // Build the action command\n let action = command.action;\n\n if (action && parsed.arg) {\n // Special handling for PR commands\n if (command.name === 'approve') {\n action = `gh pr review ${parsed.arg} --approve`;\n } else if (command.name === 'merge') {\n action = `gh pr merge ${parsed.arg} --squash`;\n }\n }\n\n // Execute the action if defined\n if (action) {\n console.log(`[whatsapp-commands] Executing: ${action}`);\n\n const result = await executeActionSafe(action, message);\n\n if (result.success) {\n const output = result.output?.slice(0, 200) || 'Done';\n return {\n handled: true,\n response: `${command.name}: ${output}`,\n action,\n };\n } else {\n return {\n handled: true,\n response: `${command.name} failed: ${result.error?.slice(0, 100)}`,\n error: result.error,\n action,\n };\n }\n }\n\n return {\n handled: true,\n response: `Command ${command.name} acknowledged`,\n };\n}\n\n/**\n * Send command result back via WhatsApp\n */\nexport async function sendCommandResponse(\n response: string\n): Promise<{ success: boolean; error?: string }> {\n const result = await sendNotification({\n type: 'custom',\n title: 'Command Result',\n message: response,\n });\n\n return { success: result.success, error: result.error };\n}\n\n/**\n * Enable command processing\n */\nexport function enableCommands(): void {\n const config = loadCommandsConfig();\n config.enabled = true;\n saveCommandsConfig(config);\n}\n\n/**\n * Disable command processing\n */\nexport function disableCommands(): void {\n const config = loadCommandsConfig();\n config.enabled = false;\n saveCommandsConfig(config);\n}\n\n/**\n * Check if commands are enabled\n */\nexport function isCommandsEnabled(): boolean {\n const config = loadCommandsConfig();\n return config.enabled;\n}\n\n/**\n * Add a custom command\n */\nexport function addCommand(command: WhatsAppCommand): void {\n const config = loadCommandsConfig();\n\n // Check if command already exists\n const existingIndex = config.commands.findIndex(\n (c) => c.name.toLowerCase() === command.name.toLowerCase()\n );\n\n if (existingIndex >= 0) {\n config.commands[existingIndex] = command;\n } else {\n config.commands.push(command);\n }\n\n saveCommandsConfig(config);\n}\n\n/**\n * Remove a custom command\n */\nexport function removeCommand(name: string): boolean {\n const config = loadCommandsConfig();\n const initialLength = config.commands.length;\n\n config.commands = config.commands.filter(\n (c) => c.name.toLowerCase() !== name.toLowerCase()\n );\n\n if (config.commands.length < initialLength) {\n saveCommandsConfig(config);\n return true;\n }\n\n return false;\n}\n\n/**\n * Get list of available commands\n */\nexport function getAvailableCommands(): WhatsAppCommand[] {\n const config = loadCommandsConfig();\n return config.commands.filter((c) => c.enabled);\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }