@stackmemoryai/stackmemory 0.8.1 → 1.0.1

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 (792) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +81 -273
  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 +9 -1
  10. package/dist/src/cli/codex-sm-danger.js +0 -1
  11. package/dist/src/cli/codex-sm.js +9 -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 +9 -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 +8 -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/graphiti-hooks.js +104 -0
  200. package/dist/src/hooks/index.js +0 -1
  201. package/dist/src/hooks/linear-task-picker.js +0 -1
  202. package/dist/src/hooks/schemas.js +0 -1
  203. package/dist/src/hooks/secure-fs.js +0 -1
  204. package/dist/src/hooks/security-logger.js +0 -1
  205. package/dist/src/hooks/session-summary.js +0 -1
  206. package/dist/src/index.js +0 -1
  207. package/dist/src/integrations/anthropic/client.js +0 -1
  208. package/dist/src/integrations/claude-code/agent-bridge.js +0 -1
  209. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +0 -1
  210. package/dist/src/integrations/claude-code/lifecycle-hooks.js +0 -1
  211. package/dist/src/integrations/claude-code/post-task-hooks.js +0 -1
  212. package/dist/src/integrations/claude-code/subagent-client-stub.js +0 -1
  213. package/dist/src/integrations/claude-code/subagent-client.js +0 -1
  214. package/dist/src/integrations/claude-code/task-coordinator.js +0 -1
  215. package/dist/src/integrations/diffmem/client.js +0 -1
  216. package/dist/src/integrations/diffmem/config.js +0 -1
  217. package/dist/src/integrations/diffmem/index.js +0 -1
  218. package/dist/src/integrations/diffmem/types.js +0 -1
  219. package/dist/src/integrations/graphiti/client.js +103 -0
  220. package/dist/src/integrations/graphiti/config.js +17 -0
  221. package/dist/src/integrations/graphiti/types.js +4 -0
  222. package/dist/src/integrations/linear/auth.js +0 -1
  223. package/dist/src/integrations/linear/auto-sync.js +0 -1
  224. package/dist/src/integrations/linear/client.js +0 -1
  225. package/dist/src/integrations/linear/config.js +0 -1
  226. package/dist/src/integrations/linear/migration.js +0 -1
  227. package/dist/src/integrations/linear/oauth-server.js +0 -1
  228. package/dist/src/integrations/linear/rest-client.js +0 -1
  229. package/dist/src/integrations/linear/sync-manager.js +0 -1
  230. package/dist/src/integrations/linear/sync-service.js +0 -1
  231. package/dist/src/integrations/linear/sync.js +0 -1
  232. package/dist/src/integrations/linear/types.js +0 -1
  233. package/dist/src/integrations/linear/unified-sync.js +0 -1
  234. package/dist/src/integrations/linear/webhook-handler.js +0 -1
  235. package/dist/src/integrations/linear/webhook-server.js +0 -1
  236. package/dist/src/integrations/linear/webhook.js +0 -1
  237. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +0 -1
  238. package/dist/src/integrations/mcp/handlers/context-handlers.js +43 -30
  239. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js +0 -1
  240. package/dist/src/integrations/mcp/handlers/discovery-handlers.js +0 -1
  241. package/dist/src/integrations/mcp/handlers/index.js +1 -3
  242. package/dist/src/integrations/mcp/handlers/linear-handlers.js +24 -61
  243. package/dist/src/integrations/mcp/handlers/skill-handlers.js +0 -1
  244. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -1
  245. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -1
  246. package/dist/src/integrations/mcp/index.js +0 -1
  247. package/dist/src/integrations/mcp/middleware/tool-scoring.js +3 -2
  248. package/dist/src/integrations/mcp/pending-utils.js +0 -1
  249. package/dist/src/integrations/mcp/refactored-server.js +0 -1
  250. package/dist/src/integrations/mcp/remote-server.js +0 -1
  251. package/dist/src/integrations/mcp/schemas.js +0 -1
  252. package/dist/src/integrations/mcp/server.js +20 -24
  253. package/dist/src/integrations/mcp/tool-definitions-code.js +0 -1
  254. package/dist/src/integrations/mcp/tool-definitions.js +0 -1
  255. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -1
  256. package/dist/src/integrations/ralph/context/context-budget-manager.js +0 -1
  257. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +0 -1
  258. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +0 -1
  259. package/dist/src/integrations/ralph/index.js +0 -1
  260. package/dist/src/integrations/ralph/learning/pattern-learner.js +0 -1
  261. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +5 -5
  262. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +0 -1
  263. package/dist/src/integrations/ralph/monitoring/swarm-registry.js +0 -1
  264. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -1
  265. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -1
  266. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +0 -1
  267. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +0 -1
  268. package/dist/src/integrations/ralph/performance/performance-optimizer.js +0 -1
  269. package/dist/src/integrations/ralph/recovery/crash-recovery.js +0 -1
  270. package/dist/src/integrations/ralph/state/state-reconciler.js +25 -9
  271. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +0 -1
  272. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +0 -1
  273. package/dist/src/integrations/ralph/types.js +0 -1
  274. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +0 -1
  275. package/dist/src/mcp/stackmemory-mcp-server.js +0 -1
  276. package/dist/src/middleware/exponential-rate-limiter.js +0 -1
  277. package/dist/src/models/user.model.js +0 -1
  278. package/dist/src/orchestrators/multimodal/constants.js +0 -1
  279. package/dist/src/orchestrators/multimodal/harness.js +0 -1
  280. package/dist/src/orchestrators/multimodal/providers.js +0 -1
  281. package/dist/src/orchestrators/multimodal/types.js +0 -1
  282. package/dist/src/orchestrators/multimodal/utils.js +0 -1
  283. package/dist/src/servers/production/auth-middleware.js +0 -1
  284. package/dist/src/services/config-service.js +0 -1
  285. package/dist/src/services/context-service.js +0 -1
  286. package/dist/src/skills/api-discovery.js +0 -1
  287. package/dist/src/skills/api-skill.js +0 -1
  288. package/dist/src/skills/claude-skills.js +0 -1
  289. package/dist/src/skills/dashboard-launcher.js +0 -1
  290. package/dist/src/skills/linear-task-runner.js +0 -1
  291. package/dist/src/skills/recursive-agent-orchestrator.js +0 -1
  292. package/dist/src/skills/repo-ingestion-skill.js +0 -1
  293. package/dist/src/skills/spec-generator-skill.js +0 -1
  294. package/dist/src/skills/unified-rlm-orchestrator.js +0 -1
  295. package/dist/src/types/task.js +0 -1
  296. package/dist/src/utils/env.js +0 -1
  297. package/dist/src/utils/formatting.js +0 -1
  298. package/dist/src/utils/process-cleanup.js +0 -1
  299. package/package.json +32 -7
  300. package/dist/scripts/benchmark-performance.js +0 -48
  301. package/dist/scripts/benchmark-performance.js.map +0 -7
  302. package/dist/scripts/check-redis.js +0 -42
  303. package/dist/scripts/check-redis.js.map +0 -7
  304. package/dist/scripts/initialize.js +0 -183
  305. package/dist/scripts/initialize.js.map +0 -7
  306. package/dist/scripts/list-linear-tasks.js +0 -124
  307. package/dist/scripts/list-linear-tasks.js.map +0 -7
  308. package/dist/scripts/measure-handoff-impact.js +0 -340
  309. package/dist/scripts/measure-handoff-impact.js.map +0 -7
  310. package/dist/scripts/query-chromadb.js +0 -160
  311. package/dist/scripts/query-chromadb.js.map +0 -7
  312. package/dist/scripts/show-linear-summary.js +0 -119
  313. package/dist/scripts/show-linear-summary.js.map +0 -7
  314. package/dist/scripts/simple-swarm-demo.js +0 -90
  315. package/dist/scripts/simple-swarm-demo.js.map +0 -7
  316. package/dist/scripts/status.js +0 -155
  317. package/dist/scripts/status.js.map +0 -7
  318. package/dist/scripts/test-chromadb-sync.js +0 -192
  319. package/dist/scripts/test-chromadb-sync.js.map +0 -7
  320. package/dist/scripts/test-ralph-iteration-fix.js +0 -86
  321. package/dist/scripts/test-ralph-iteration-fix.js.map +0 -7
  322. package/dist/scripts/test-ralph-iterations.js +0 -121
  323. package/dist/scripts/test-ralph-iterations.js.map +0 -7
  324. package/dist/scripts/test-redis-storage.js +0 -389
  325. package/dist/scripts/test-redis-storage.js.map +0 -7
  326. package/dist/scripts/test-simple-ralph-state-sync.js +0 -115
  327. package/dist/scripts/test-simple-ralph-state-sync.js.map +0 -7
  328. package/dist/scripts/test-swarm-fixes.js +0 -125
  329. package/dist/scripts/test-swarm-fixes.js.map +0 -7
  330. package/dist/scripts/test-swarm-tui.js +0 -23
  331. package/dist/scripts/test-swarm-tui.js.map +0 -7
  332. package/dist/scripts/test-tui-shortcuts.js +0 -52
  333. package/dist/scripts/test-tui-shortcuts.js.map +0 -7
  334. package/dist/scripts/validate-tui-shortcuts.js +0 -60
  335. package/dist/scripts/validate-tui-shortcuts.js.map +0 -7
  336. package/dist/src/agents/core/agent-task-manager.js.map +0 -7
  337. package/dist/src/agents/verifiers/base-verifier.js.map +0 -7
  338. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -7
  339. package/dist/src/agents/verifiers/llm-judge.js.map +0 -7
  340. package/dist/src/cli/auto-detect.js.map +0 -7
  341. package/dist/src/cli/claude-sm-danger.js.map +0 -7
  342. package/dist/src/cli/claude-sm.js.map +0 -7
  343. package/dist/src/cli/codex-sm-danger.js.map +0 -7
  344. package/dist/src/cli/codex-sm.js.map +0 -7
  345. package/dist/src/cli/commands/api.js.map +0 -7
  346. package/dist/src/cli/commands/auto-background.js.map +0 -7
  347. package/dist/src/cli/commands/cleanup-processes.js.map +0 -7
  348. package/dist/src/cli/commands/clear.js.map +0 -7
  349. package/dist/src/cli/commands/config.js.map +0 -7
  350. package/dist/src/cli/commands/context-rehydrate.js.map +0 -7
  351. package/dist/src/cli/commands/context.js.map +0 -7
  352. package/dist/src/cli/commands/daemon.js.map +0 -7
  353. package/dist/src/cli/commands/dashboard.js.map +0 -7
  354. package/dist/src/cli/commands/db.js.map +0 -7
  355. package/dist/src/cli/commands/decision.js.map +0 -7
  356. package/dist/src/cli/commands/discovery.js.map +0 -7
  357. package/dist/src/cli/commands/handoff.js.map +0 -7
  358. package/dist/src/cli/commands/hooks.js.map +0 -7
  359. package/dist/src/cli/commands/linear.js.map +0 -7
  360. package/dist/src/cli/commands/log.js.map +0 -7
  361. package/dist/src/cli/commands/login.js.map +0 -7
  362. package/dist/src/cli/commands/migrate.js.map +0 -7
  363. package/dist/src/cli/commands/model.js.map +0 -7
  364. package/dist/src/cli/commands/onboard.js.map +0 -7
  365. package/dist/src/cli/commands/ping.js.map +0 -7
  366. package/dist/src/cli/commands/projects.js.map +0 -7
  367. package/dist/src/cli/commands/ralph.js.map +0 -7
  368. package/dist/src/cli/commands/retrieval.js.map +0 -7
  369. package/dist/src/cli/commands/search.js.map +0 -7
  370. package/dist/src/cli/commands/service.js.map +0 -7
  371. package/dist/src/cli/commands/session.js.map +0 -7
  372. package/dist/src/cli/commands/settings.js +0 -306
  373. package/dist/src/cli/commands/settings.js.map +0 -7
  374. package/dist/src/cli/commands/setup.js.map +0 -7
  375. package/dist/src/cli/commands/shell.js.map +0 -7
  376. package/dist/src/cli/commands/signup.js.map +0 -7
  377. package/dist/src/cli/commands/skills.js.map +0 -7
  378. package/dist/src/cli/commands/sms-notify.js +0 -795
  379. package/dist/src/cli/commands/sms-notify.js.map +0 -7
  380. package/dist/src/cli/commands/storage-tier.js.map +0 -7
  381. package/dist/src/cli/commands/sweep.js.map +0 -7
  382. package/dist/src/cli/commands/tasks.js.map +0 -7
  383. package/dist/src/cli/commands/worktree.js.map +0 -7
  384. package/dist/src/cli/index.js.map +0 -7
  385. package/dist/src/cli/opencode-sm.js.map +0 -7
  386. package/dist/src/cli/utils/viewer.js.map +0 -7
  387. package/dist/src/core/config/config-manager.js.map +0 -7
  388. package/dist/src/core/config/feature-flags.js.map +0 -7
  389. package/dist/src/core/config/storage-config.js.map +0 -7
  390. package/dist/src/core/config/types.js.map +0 -7
  391. package/dist/src/core/context/auto-context.js.map +0 -7
  392. package/dist/src/core/context/dual-stack-manager.js.map +0 -7
  393. package/dist/src/core/context/enhanced-rehydration.js.map +0 -7
  394. package/dist/src/core/context/frame-database.js.map +0 -7
  395. package/dist/src/core/context/frame-digest.js.map +0 -7
  396. package/dist/src/core/context/frame-handoff-manager.js.map +0 -7
  397. package/dist/src/core/context/frame-lifecycle-hooks.js.map +0 -7
  398. package/dist/src/core/context/frame-recovery.js.map +0 -7
  399. package/dist/src/core/context/frame-stack.js.map +0 -7
  400. package/dist/src/core/context/frame-types.js.map +0 -7
  401. package/dist/src/core/context/index.js.map +0 -7
  402. package/dist/src/core/context/permission-manager.js.map +0 -7
  403. package/dist/src/core/context/recursive-context-manager.js.map +0 -7
  404. package/dist/src/core/context/refactored-frame-manager.js.map +0 -7
  405. package/dist/src/core/context/shared-context-layer.js.map +0 -7
  406. package/dist/src/core/context/stack-merge-resolver.js.map +0 -7
  407. package/dist/src/core/context/validation.js.map +0 -7
  408. package/dist/src/core/database/batch-operations.js.map +0 -7
  409. package/dist/src/core/database/connection-pool.js.map +0 -7
  410. package/dist/src/core/database/database-adapter.js.map +0 -7
  411. package/dist/src/core/database/embedding-provider-factory.js.map +0 -7
  412. package/dist/src/core/database/embedding-provider.js.map +0 -7
  413. package/dist/src/core/database/migration-manager.js.map +0 -7
  414. package/dist/src/core/database/ollama-embedding-provider.js.map +0 -7
  415. package/dist/src/core/database/openai-embedding-provider.js.map +0 -7
  416. package/dist/src/core/database/query-cache.js.map +0 -7
  417. package/dist/src/core/database/query-router.js.map +0 -7
  418. package/dist/src/core/database/sqlite-adapter.js.map +0 -7
  419. package/dist/src/core/database/transformers-embedding-provider.js.map +0 -7
  420. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -7
  421. package/dist/src/core/digest/frame-digest-integration.js.map +0 -7
  422. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -7
  423. package/dist/src/core/digest/index.js.map +0 -7
  424. package/dist/src/core/digest/types.js.map +0 -7
  425. package/dist/src/core/errors/error-utils.js.map +0 -7
  426. package/dist/src/core/errors/index.js.map +0 -7
  427. package/dist/src/core/errors/recovery.js.map +0 -7
  428. package/dist/src/core/execution/parallel-executor.js.map +0 -7
  429. package/dist/src/core/extensions/custom-tools.js.map +0 -7
  430. package/dist/src/core/extensions/index.js.map +0 -7
  431. package/dist/src/core/extensions/loader.js.map +0 -7
  432. package/dist/src/core/extensions/plugin-system.js.map +0 -7
  433. package/dist/src/core/extensions/provider-adapter.js.map +0 -7
  434. package/dist/src/core/extensions/sandbox-runtime.js.map +0 -7
  435. package/dist/src/core/extensions/types.js.map +0 -7
  436. package/dist/src/core/frame/workflow-templates.js.map +0 -7
  437. package/dist/src/core/merge/conflict-detector.js.map +0 -7
  438. package/dist/src/core/merge/index.js.map +0 -7
  439. package/dist/src/core/merge/resolution-engine.js.map +0 -7
  440. package/dist/src/core/merge/stack-diff.js.map +0 -7
  441. package/dist/src/core/merge/types.js.map +0 -7
  442. package/dist/src/core/merge/unified-merge-resolver.js.map +0 -7
  443. package/dist/src/core/models/fallback-monitor.js.map +0 -7
  444. package/dist/src/core/models/model-router.js.map +0 -7
  445. package/dist/src/core/monitoring/error-handler.js.map +0 -7
  446. package/dist/src/core/monitoring/logger.js.map +0 -7
  447. package/dist/src/core/monitoring/metrics.js.map +0 -7
  448. package/dist/src/core/monitoring/progress-tracker.js.map +0 -7
  449. package/dist/src/core/monitoring/session-monitor.js.map +0 -7
  450. package/dist/src/core/performance/context-cache.js.map +0 -7
  451. package/dist/src/core/performance/index.js.map +0 -7
  452. package/dist/src/core/performance/lazy-context-loader.js.map +0 -7
  453. package/dist/src/core/performance/monitor.js.map +0 -7
  454. package/dist/src/core/performance/optimized-frame-context.js.map +0 -7
  455. package/dist/src/core/performance/performance-benchmark.js.map +0 -7
  456. package/dist/src/core/performance/performance-profiler.js.map +0 -7
  457. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -7
  458. package/dist/src/core/persistence/postgres-adapter.js.map +0 -7
  459. package/dist/src/core/projects/project-isolation.js.map +0 -7
  460. package/dist/src/core/projects/project-manager.js.map +0 -7
  461. package/dist/src/core/query/query-parser.js.map +0 -7
  462. package/dist/src/core/query/query-templates.js.map +0 -7
  463. package/dist/src/core/retrieval/context-retriever.js.map +0 -7
  464. package/dist/src/core/retrieval/index.js.map +0 -7
  465. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -7
  466. package/dist/src/core/retrieval/llm-provider.js.map +0 -7
  467. package/dist/src/core/retrieval/privacy-filter.js.map +0 -7
  468. package/dist/src/core/retrieval/retrieval-audit.js.map +0 -7
  469. package/dist/src/core/retrieval/summary-generator.js.map +0 -7
  470. package/dist/src/core/retrieval/types.js.map +0 -7
  471. package/dist/src/core/retrieval/unified-context-assembler.js.map +0 -7
  472. package/dist/src/core/security/index.js.map +0 -7
  473. package/dist/src/core/security/input-sanitizer.js.map +0 -7
  474. package/dist/src/core/session/clear-survival.js.map +0 -7
  475. package/dist/src/core/session/enhanced-handoff.js.map +0 -7
  476. package/dist/src/core/session/handoff-generator.js.map +0 -7
  477. package/dist/src/core/session/index.js.map +0 -7
  478. package/dist/src/core/session/session-manager.js.map +0 -7
  479. package/dist/src/core/skills/index.js.map +0 -7
  480. package/dist/src/core/skills/skill-storage.js.map +0 -7
  481. package/dist/src/core/skills/types.js.map +0 -7
  482. package/dist/src/core/storage/chromadb-adapter.js.map +0 -7
  483. package/dist/src/core/storage/infinite-storage.js.map +0 -7
  484. package/dist/src/core/storage/project-registry.js.map +0 -7
  485. package/dist/src/core/storage/remote-storage.js.map +0 -7
  486. package/dist/src/core/storage/storage-tier-manager.js.map +0 -7
  487. package/dist/src/core/storage/two-tier-storage.js.map +0 -7
  488. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -7
  489. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -7
  490. package/dist/src/core/trace/debug-trace.js.map +0 -7
  491. package/dist/src/core/trace/index.js.map +0 -7
  492. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -7
  493. package/dist/src/core/trace/trace-detector.js.map +0 -7
  494. package/dist/src/core/trace/trace-store.js.map +0 -7
  495. package/dist/src/core/trace/types.js.map +0 -7
  496. package/dist/src/core/types.js.map +0 -7
  497. package/dist/src/core/utils/async-mutex.js.map +0 -7
  498. package/dist/src/core/utils/compression.js.map +0 -7
  499. package/dist/src/core/utils/update-checker.js.map +0 -7
  500. package/dist/src/core/worktree/worktree-manager.js.map +0 -7
  501. package/dist/src/daemon/daemon-config.js.map +0 -7
  502. package/dist/src/daemon/services/context-service.js.map +0 -7
  503. package/dist/src/daemon/services/linear-service.js.map +0 -7
  504. package/dist/src/daemon/services/maintenance-service.js.map +0 -7
  505. package/dist/src/daemon/services/memory-service.js.map +0 -7
  506. package/dist/src/daemon/session-daemon.js.map +0 -7
  507. package/dist/src/daemon/unified-daemon.js.map +0 -7
  508. package/dist/src/features/analytics/api/analytics-api.js.map +0 -7
  509. package/dist/src/features/analytics/core/analytics-service.js.map +0 -7
  510. package/dist/src/features/analytics/index.js.map +0 -7
  511. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -7
  512. package/dist/src/features/analytics/types/metrics.js.map +0 -7
  513. package/dist/src/features/browser/browser-mcp.js.map +0 -7
  514. package/dist/src/features/sweep/index.js.map +0 -7
  515. package/dist/src/features/sweep/prediction-client.js.map +0 -7
  516. package/dist/src/features/sweep/prompt-builder.js.map +0 -7
  517. package/dist/src/features/sweep/pty-wrapper.js.map +0 -7
  518. package/dist/src/features/sweep/state-watcher.js.map +0 -7
  519. package/dist/src/features/sweep/status-bar.js.map +0 -7
  520. package/dist/src/features/sweep/sweep-server-manager.js.map +0 -7
  521. package/dist/src/features/sweep/tab-interceptor.js.map +0 -7
  522. package/dist/src/features/sweep/types.js.map +0 -7
  523. package/dist/src/features/tasks/linear-task-manager.js.map +0 -7
  524. package/dist/src/features/tasks/task-aware-context.js.map +0 -7
  525. package/dist/src/features/tui/simple-monitor.js.map +0 -7
  526. package/dist/src/features/tui/swarm-monitor.js.map +0 -7
  527. package/dist/src/features/web/client/stores/task-store.js.map +0 -7
  528. package/dist/src/features/web/server/index.js.map +0 -7
  529. package/dist/src/features/workers/tmux-manager.js.map +0 -7
  530. package/dist/src/features/workers/worker-registry.js.map +0 -7
  531. package/dist/src/hooks/auto-background.js.map +0 -7
  532. package/dist/src/hooks/claude-code-whatsapp-hook.js +0 -197
  533. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +0 -7
  534. package/dist/src/hooks/config.js.map +0 -7
  535. package/dist/src/hooks/daemon.js.map +0 -7
  536. package/dist/src/hooks/diffmem-hooks.js.map +0 -7
  537. package/dist/src/hooks/events.js.map +0 -7
  538. package/dist/src/hooks/index.js.map +0 -7
  539. package/dist/src/hooks/linear-task-picker.js.map +0 -7
  540. package/dist/src/hooks/schemas.js.map +0 -7
  541. package/dist/src/hooks/secure-fs.js.map +0 -7
  542. package/dist/src/hooks/security-logger.js.map +0 -7
  543. package/dist/src/hooks/session-summary.js.map +0 -7
  544. package/dist/src/hooks/sms-action-runner.js +0 -371
  545. package/dist/src/hooks/sms-action-runner.js.map +0 -7
  546. package/dist/src/hooks/sms-notify.js +0 -506
  547. package/dist/src/hooks/sms-notify.js.map +0 -7
  548. package/dist/src/hooks/sms-watcher.js +0 -93
  549. package/dist/src/hooks/sms-watcher.js.map +0 -7
  550. package/dist/src/hooks/sms-webhook.js +0 -555
  551. package/dist/src/hooks/sms-webhook.js.map +0 -7
  552. package/dist/src/hooks/whatsapp-commands.js +0 -479
  553. package/dist/src/hooks/whatsapp-commands.js.map +0 -7
  554. package/dist/src/hooks/whatsapp-scheduler.js +0 -317
  555. package/dist/src/hooks/whatsapp-scheduler.js.map +0 -7
  556. package/dist/src/hooks/whatsapp-sync.js +0 -409
  557. package/dist/src/hooks/whatsapp-sync.js.map +0 -7
  558. package/dist/src/index.js.map +0 -7
  559. package/dist/src/integrations/anthropic/client.js.map +0 -7
  560. package/dist/src/integrations/claude-code/agent-bridge.js.map +0 -7
  561. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  562. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  563. package/dist/src/integrations/claude-code/post-task-hooks.js.map +0 -7
  564. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +0 -7
  565. package/dist/src/integrations/claude-code/subagent-client.js.map +0 -7
  566. package/dist/src/integrations/claude-code/task-coordinator.js.map +0 -7
  567. package/dist/src/integrations/diffmem/client.js.map +0 -7
  568. package/dist/src/integrations/diffmem/config.js.map +0 -7
  569. package/dist/src/integrations/diffmem/index.js.map +0 -7
  570. package/dist/src/integrations/diffmem/types.js.map +0 -7
  571. package/dist/src/integrations/linear/auth.js.map +0 -7
  572. package/dist/src/integrations/linear/auto-sync.js.map +0 -7
  573. package/dist/src/integrations/linear/client.js.map +0 -7
  574. package/dist/src/integrations/linear/config.js.map +0 -7
  575. package/dist/src/integrations/linear/migration.js.map +0 -7
  576. package/dist/src/integrations/linear/oauth-server.js.map +0 -7
  577. package/dist/src/integrations/linear/rest-client.js.map +0 -7
  578. package/dist/src/integrations/linear/sync-manager.js.map +0 -7
  579. package/dist/src/integrations/linear/sync-service.js.map +0 -7
  580. package/dist/src/integrations/linear/sync.js.map +0 -7
  581. package/dist/src/integrations/linear/types.js.map +0 -7
  582. package/dist/src/integrations/linear/unified-sync.js.map +0 -7
  583. package/dist/src/integrations/linear/webhook-handler.js.map +0 -7
  584. package/dist/src/integrations/linear/webhook-server.js.map +0 -7
  585. package/dist/src/integrations/linear/webhook.js.map +0 -7
  586. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  587. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -7
  588. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js.map +0 -7
  589. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  590. package/dist/src/integrations/mcp/handlers/index.js.map +0 -7
  591. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  592. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  593. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -7
  594. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  595. package/dist/src/integrations/mcp/index.js.map +0 -7
  596. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  597. package/dist/src/integrations/mcp/pending-utils.js.map +0 -7
  598. package/dist/src/integrations/mcp/refactored-server.js.map +0 -7
  599. package/dist/src/integrations/mcp/remote-server.js.map +0 -7
  600. package/dist/src/integrations/mcp/schemas.js.map +0 -7
  601. package/dist/src/integrations/mcp/server.js.map +0 -7
  602. package/dist/src/integrations/mcp/tool-definitions-code.js.map +0 -7
  603. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -7
  604. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  605. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +0 -7
  606. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  607. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  608. package/dist/src/integrations/ralph/index.js.map +0 -7
  609. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +0 -7
  610. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  611. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  612. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  613. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  614. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  615. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  616. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  617. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  618. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  619. package/dist/src/integrations/ralph/state/state-reconciler.js.map +0 -7
  620. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  621. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  622. package/dist/src/integrations/ralph/types.js.map +0 -7
  623. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  624. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -7
  625. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -7
  626. package/dist/src/models/user.model.js.map +0 -7
  627. package/dist/src/orchestrators/multimodal/constants.js.map +0 -7
  628. package/dist/src/orchestrators/multimodal/harness.js.map +0 -7
  629. package/dist/src/orchestrators/multimodal/providers.js.map +0 -7
  630. package/dist/src/orchestrators/multimodal/types.js.map +0 -7
  631. package/dist/src/orchestrators/multimodal/utils.js.map +0 -7
  632. package/dist/src/servers/production/auth-middleware.js.map +0 -7
  633. package/dist/src/services/config-service.js.map +0 -7
  634. package/dist/src/services/context-service.js.map +0 -7
  635. package/dist/src/skills/api-discovery.js.map +0 -7
  636. package/dist/src/skills/api-skill.js.map +0 -7
  637. package/dist/src/skills/claude-skills.js.map +0 -7
  638. package/dist/src/skills/dashboard-launcher.js.map +0 -7
  639. package/dist/src/skills/linear-task-runner.js.map +0 -7
  640. package/dist/src/skills/recursive-agent-orchestrator.js.map +0 -7
  641. package/dist/src/skills/repo-ingestion-skill.js.map +0 -7
  642. package/dist/src/skills/spec-generator-skill.js.map +0 -7
  643. package/dist/src/skills/unified-rlm-orchestrator.js.map +0 -7
  644. package/dist/src/types/task.js.map +0 -7
  645. package/dist/src/utils/env.js.map +0 -7
  646. package/dist/src/utils/formatting.js.map +0 -7
  647. package/dist/src/utils/process-cleanup.js.map +0 -7
  648. package/scripts/README-TESTING.md +0 -186
  649. package/scripts/analyze-cli-security.js +0 -288
  650. package/scripts/archive/add-phase-tasks-to-linear.js +0 -163
  651. package/scripts/archive/analyze-linear-duplicates.js +0 -214
  652. package/scripts/archive/analyze-remaining-duplicates.js +0 -230
  653. package/scripts/archive/analyze-sta-duplicates.js +0 -292
  654. package/scripts/archive/analyze-sta-graphql.js +0 -399
  655. package/scripts/archive/cancel-duplicate-tasks.ts +0 -246
  656. package/scripts/archive/check-all-duplicates.ts +0 -419
  657. package/scripts/archive/clean-duplicate-tasks.js +0 -114
  658. package/scripts/archive/cleanup-duplicate-tasks.ts +0 -286
  659. package/scripts/archive/create-phase-tasks.js +0 -387
  660. package/scripts/archive/delete-linear-duplicates.js +0 -182
  661. package/scripts/archive/delete-remaining-duplicates.js +0 -158
  662. package/scripts/archive/delete-sta-duplicates.js +0 -201
  663. package/scripts/archive/delete-sta-oauth.js +0 -201
  664. package/scripts/archive/export-sta-tasks.js +0 -62
  665. package/scripts/archive/install-auto-sync.js +0 -266
  666. package/scripts/archive/install-chromadb-hooks.sh +0 -133
  667. package/scripts/archive/install-enhanced-clear-hooks.sh +0 -431
  668. package/scripts/archive/install-post-task-hooks.sh +0 -289
  669. package/scripts/archive/install-stackmemory-hooks.sh +0 -420
  670. package/scripts/archive/merge-linear-duplicates-safe.ts +0 -362
  671. package/scripts/archive/merge-linear-duplicates.ts +0 -182
  672. package/scripts/archive/remove-sta-tasks.js +0 -70
  673. package/scripts/archive/setup-background-sync.sh +0 -168
  674. package/scripts/archive/setup-claude-auto-triggers.sh +0 -181
  675. package/scripts/archive/setup-claude-autostart.sh +0 -305
  676. package/scripts/archive/setup-git-hooks.sh +0 -25
  677. package/scripts/archive/setup-linear-oauth.sh +0 -46
  678. package/scripts/archive/setup-mcp.sh +0 -113
  679. package/scripts/archive/setup-railway-deployment.sh +0 -81
  680. package/scripts/auto-handoff.sh +0 -262
  681. package/scripts/background-sync-manager.js +0 -478
  682. package/scripts/benchmark-performance.ts +0 -57
  683. package/scripts/check-redis.ts +0 -48
  684. package/scripts/chromadb-auto-loader.sh +0 -128
  685. package/scripts/chromadb-context-loader.js +0 -479
  686. package/scripts/claude-chromadb-hook.js +0 -460
  687. package/scripts/claude-linear-skill.js +0 -455
  688. package/scripts/claude-pre-commit.sh +0 -302
  689. package/scripts/claude-sm-autostart.js +0 -579
  690. package/scripts/claude-with-chromadb.sh +0 -69
  691. package/scripts/clean-linear-backlog.js +0 -273
  692. package/scripts/cleanup-old-sessions.sh +0 -57
  693. package/scripts/create-cleanup-issues.js +0 -302
  694. package/scripts/create-sandbox.sh +0 -269
  695. package/scripts/debug-linear-update.js +0 -174
  696. package/scripts/delete-linear-tasks.js +0 -167
  697. package/scripts/demos/browser-test.ts +0 -39
  698. package/scripts/demos/ralph-integration-demo.ts +0 -245
  699. package/scripts/demos/trace-demo.ts +0 -200
  700. package/scripts/demos/trace-detector.demo.ts +0 -171
  701. package/scripts/demos/trace-test.ts +0 -79
  702. package/scripts/deploy-ralph-swarm.sh +0 -365
  703. package/scripts/deploy.sh +0 -89
  704. package/scripts/deployment/test-deployment.js +0 -194
  705. package/scripts/detect-and-rehydrate.js +0 -162
  706. package/scripts/detect-and-rehydrate.mjs +0 -165
  707. package/scripts/development/create-demo-tasks.js +0 -143
  708. package/scripts/development/debug-frame-test.js +0 -16
  709. package/scripts/development/demo-auto-sync.js +0 -128
  710. package/scripts/development/fix-all-imports.js +0 -213
  711. package/scripts/development/fix-imports.js +0 -229
  712. package/scripts/development/fix-lint-loop.cjs +0 -103
  713. package/scripts/development/fix-project-id.ts +0 -161
  714. package/scripts/development/fix-strict-mode-issues.ts +0 -291
  715. package/scripts/development/reorganize-structure.sh +0 -228
  716. package/scripts/development/test-persistence-direct.js +0 -148
  717. package/scripts/development/test-persistence.js +0 -114
  718. package/scripts/development/test-tasks.js +0 -93
  719. package/scripts/development/update-imports.js +0 -212
  720. package/scripts/fetch-linear-status.js +0 -125
  721. package/scripts/initialize.ts +0 -220
  722. package/scripts/linear-auto-sync.js +0 -262
  723. package/scripts/linear-auto-sync.sh +0 -161
  724. package/scripts/linear-sync-daemon.js +0 -150
  725. package/scripts/linear-task-review.js +0 -237
  726. package/scripts/list-linear-tasks.ts +0 -178
  727. package/scripts/mcp-proxy.js +0 -66
  728. package/scripts/measure-handoff-impact.mjs +0 -395
  729. package/scripts/measure-handoff-impact.ts +0 -450
  730. package/scripts/publish-local.js +0 -74
  731. package/scripts/query-chromadb.ts +0 -201
  732. package/scripts/ralph-integration-test.js +0 -274
  733. package/scripts/reconcile-local-tasks.js +0 -170
  734. package/scripts/recreate-frames-db.js +0 -89
  735. package/scripts/show-linear-summary.ts +0 -172
  736. package/scripts/simple-swarm-demo.ts +0 -114
  737. package/scripts/stackmemory-auto-handoff.sh +0 -231
  738. package/scripts/start-linear-sync-daemon.sh +0 -141
  739. package/scripts/start-temporal-paradox.sh +0 -214
  740. package/scripts/status.ts +0 -224
  741. package/scripts/stop-notify-webhook.sh +0 -19
  742. package/scripts/swarm-monitor.js +0 -509
  743. package/scripts/sync-and-clean-tasks.js +0 -258
  744. package/scripts/sync-linear-graphql.js +0 -303
  745. package/scripts/sync-linear-tasks.js +0 -186
  746. package/scripts/test-auto-triggers.sh +0 -57
  747. package/scripts/test-browser-mcp.js +0 -74
  748. package/scripts/test-chromadb-full.js +0 -115
  749. package/scripts/test-chromadb-hooks.sh +0 -28
  750. package/scripts/test-chromadb-sync.ts +0 -245
  751. package/scripts/test-claude-config.sh +0 -123
  752. package/scripts/test-cli-security.js +0 -293
  753. package/scripts/test-code-execution.js +0 -143
  754. package/scripts/test-hooks-persistence.sh +0 -220
  755. package/scripts/test-installation-scenarios.sh +0 -359
  756. package/scripts/test-installation.sh +0 -224
  757. package/scripts/test-mcp.js +0 -163
  758. package/scripts/test-parallel-swarms.js +0 -443
  759. package/scripts/test-pre-publish-quick.sh +0 -69
  760. package/scripts/test-quality-gates.sh +0 -263
  761. package/scripts/test-ralph-iteration-fix.ts +0 -118
  762. package/scripts/test-ralph-iterations.ts +0 -164
  763. package/scripts/test-redis-storage.ts +0 -490
  764. package/scripts/test-rlm-basic.sh +0 -122
  765. package/scripts/test-rlm-comprehensive.sh +0 -260
  766. package/scripts/test-rlm-e2e.sh +0 -268
  767. package/scripts/test-rlm-simple.js +0 -90
  768. package/scripts/test-rlm.js +0 -110
  769. package/scripts/test-session-handoff.sh +0 -165
  770. package/scripts/test-setup-e2e.sh +0 -154
  771. package/scripts/test-shell-integration.sh +0 -275
  772. package/scripts/test-simple-ralph-state-sync.ts +0 -178
  773. package/scripts/test-swarm-fixes.ts +0 -161
  774. package/scripts/test-swarm-git-workflow.js +0 -338
  775. package/scripts/test-swarm-tui.ts +0 -34
  776. package/scripts/test-tui-shortcuts.ts +0 -66
  777. package/scripts/testing/ab-test-runner.ts +0 -510
  778. package/scripts/testing/collect-metrics.ts +0 -457
  779. package/scripts/testing/quick-effectiveness-demo.js +0 -187
  780. package/scripts/testing/ralph-cli-test.js +0 -88
  781. package/scripts/testing/ralph-integration-validation.js +0 -727
  782. package/scripts/testing/ralph-swarm-test-scenarios.js +0 -613
  783. package/scripts/testing/real-performance-test.js +0 -422
  784. package/scripts/testing/results/real-performance-results.json +0 -90
  785. package/scripts/testing/run-effectiveness-tests.sh +0 -176
  786. package/scripts/testing/simple-effectiveness-test.js +0 -310
  787. package/scripts/testing/test-tier-migration.js +0 -100
  788. package/scripts/update-linear-status.js +0 -268
  789. package/scripts/update-linear-tasks-fixed.js +0 -284
  790. package/scripts/validate-claude-config.sh +0 -155
  791. package/scripts/validate-swarm-implementation.js +0 -467
  792. package/scripts/validate-tui-shortcuts.ts +0 -83
@@ -1,409 +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 {
9
- sendNotification,
10
- loadSMSConfig,
11
- saveSMSConfig
12
- } from "./sms-notify.js";
13
- import { writeFileSecure, ensureSecureDir } from "./secure-fs.js";
14
- import { SyncOptionsSchema, parseConfigSafe } from "./schemas.js";
15
- import {
16
- frameLifecycleHooks
17
- } from "../core/context/frame-lifecycle-hooks.js";
18
- const SYNC_CONFIG_PATH = join(homedir(), ".stackmemory", "whatsapp-sync.json");
19
- const DEFAULT_SYNC_OPTIONS = {
20
- autoSyncOnClose: false,
21
- minFrameDuration: 30,
22
- // Skip frames shorter than 30 seconds
23
- includeDecisions: true,
24
- includeFiles: true,
25
- includeTests: true,
26
- maxDigestLength: 400
27
- };
28
- function loadSyncOptions() {
29
- try {
30
- if (existsSync(SYNC_CONFIG_PATH)) {
31
- const data = JSON.parse(readFileSync(SYNC_CONFIG_PATH, "utf8"));
32
- return parseConfigSafe(
33
- SyncOptionsSchema,
34
- { ...DEFAULT_SYNC_OPTIONS, ...data },
35
- DEFAULT_SYNC_OPTIONS,
36
- "whatsapp-sync"
37
- );
38
- }
39
- } catch {
40
- }
41
- return { ...DEFAULT_SYNC_OPTIONS };
42
- }
43
- function saveSyncOptions(options) {
44
- try {
45
- ensureSecureDir(join(homedir(), ".stackmemory"));
46
- writeFileSecure(SYNC_CONFIG_PATH, JSON.stringify(options, null, 2));
47
- } catch {
48
- }
49
- }
50
- function formatDuration(seconds) {
51
- if (seconds < 60) {
52
- return `${seconds}s`;
53
- } else if (seconds < 3600) {
54
- const mins = Math.floor(seconds / 60);
55
- const secs = seconds % 60;
56
- return secs > 0 ? `${mins}m${secs}s` : `${mins}m`;
57
- } else {
58
- const hours = Math.floor(seconds / 3600);
59
- const mins = Math.floor(seconds % 3600 / 60);
60
- return mins > 0 ? `${hours}h${mins}m` : `${hours}h`;
61
- }
62
- }
63
- function truncate(text, maxLen) {
64
- if (text.length <= maxLen) return text;
65
- return text.slice(0, maxLen - 3) + "...";
66
- }
67
- function getStatusSymbol(status) {
68
- switch (status) {
69
- case "success":
70
- return "OK";
71
- case "failure":
72
- return "FAIL";
73
- case "partial":
74
- return "PARTIAL";
75
- case "ongoing":
76
- return "ACTIVE";
77
- default:
78
- return "?";
79
- }
80
- }
81
- function generateMobileDigest(data, options = DEFAULT_SYNC_OPTIONS) {
82
- const parts = [];
83
- const maxLen = options.maxDigestLength;
84
- const header = `FRAME: ${truncate(data.name, 30)} [${data.type}] - ${formatDuration(data.durationSeconds)} ${getStatusSymbol(data.status)}`;
85
- parts.push(header);
86
- const activityParts = [];
87
- if (options.includeFiles && data.filesModified.length > 0) {
88
- activityParts.push(`FILES: ${data.filesModified.length}`);
89
- }
90
- if (data.toolCallCount > 0) {
91
- activityParts.push(`TOOLS: ${data.toolCallCount}`);
92
- }
93
- if (options.includeTests && data.testsRun.length > 0) {
94
- const passed = data.testsRun.filter((t) => t.status === "passed").length;
95
- const failed = data.testsRun.filter((t) => t.status === "failed").length;
96
- if (failed > 0) {
97
- activityParts.push(`TESTS: ${passed}ok/${failed}fail`);
98
- } else {
99
- activityParts.push(`TESTS: ${passed} pass`);
100
- }
101
- }
102
- if (activityParts.length > 0) {
103
- parts.push(activityParts.join(" | "));
104
- }
105
- if (options.includeFiles && data.filesModified.length > 0) {
106
- const fileList = data.filesModified.slice(0, 3).map((f) => {
107
- const basename = f.path.split("/").pop() || f.path;
108
- const op = f.operation.charAt(0).toUpperCase();
109
- return `${op}:${truncate(basename, 20)}`;
110
- }).join(", ");
111
- const more = data.filesModified.length > 3 ? ` +${data.filesModified.length - 3}` : "";
112
- parts.push(` ${fileList}${more}`);
113
- }
114
- if (options.includeDecisions && data.decisions.length > 0) {
115
- parts.push("");
116
- parts.push("DECISIONS:");
117
- data.decisions.slice(0, 3).forEach((d) => {
118
- parts.push(` ${truncate(d, 60)}`);
119
- });
120
- if (data.decisions.length > 3) {
121
- parts.push(` +${data.decisions.length - 3} more`);
122
- }
123
- }
124
- if (data.risks.length > 0) {
125
- parts.push("");
126
- parts.push("RISKS:");
127
- data.risks.slice(0, 2).forEach((r) => {
128
- parts.push(` ${truncate(r, 50)}`);
129
- });
130
- }
131
- const unresolvedErrors = data.errors.filter((e) => !e.resolved);
132
- if (unresolvedErrors.length > 0) {
133
- parts.push("");
134
- parts.push(`ERRORS: ${unresolvedErrors.length} unresolved`);
135
- unresolvedErrors.slice(0, 2).forEach((e) => {
136
- parts.push(` ${truncate(e.message, 50)}`);
137
- });
138
- }
139
- parts.push("");
140
- if (data.status === "success") {
141
- parts.push("NEXT: commit & test");
142
- } else if (data.status === "failure") {
143
- parts.push("NEXT: fix errors");
144
- } else if (data.status === "partial") {
145
- parts.push("NEXT: review & continue");
146
- } else {
147
- parts.push("NEXT: check status");
148
- }
149
- let result = parts.join("\n");
150
- if (result.length > maxLen) {
151
- const essentialParts = [header];
152
- if (activityParts.length > 0) {
153
- essentialParts.push(activityParts.join(" | "));
154
- }
155
- if (options.includeDecisions && data.decisions.length > 0) {
156
- essentialParts.push("");
157
- essentialParts.push(`DECISIONS: ${data.decisions.length}`);
158
- essentialParts.push(` ${truncate(data.decisions[0], 50)}`);
159
- }
160
- if (unresolvedErrors.length > 0) {
161
- essentialParts.push("");
162
- essentialParts.push(`ERRORS: ${unresolvedErrors.length} unresolved`);
163
- }
164
- essentialParts.push("");
165
- essentialParts.push(
166
- data.status === "success" ? "NEXT: commit" : "NEXT: review"
167
- );
168
- result = essentialParts.join("\n");
169
- }
170
- return result.slice(0, maxLen);
171
- }
172
- async function getFrameDigestData(frameId) {
173
- try {
174
- const digestPath = join(
175
- homedir(),
176
- ".stackmemory",
177
- "latest-frame-digest.json"
178
- );
179
- if (existsSync(digestPath)) {
180
- const data = JSON.parse(readFileSync(digestPath, "utf8"));
181
- if (frameId && data.frameId !== frameId) {
182
- return null;
183
- }
184
- return data;
185
- }
186
- return null;
187
- } catch {
188
- return null;
189
- }
190
- }
191
- function storeFrameDigest(data) {
192
- try {
193
- ensureSecureDir(join(homedir(), ".stackmemory"));
194
- const digestPath = join(
195
- homedir(),
196
- ".stackmemory",
197
- "latest-frame-digest.json"
198
- );
199
- writeFileSecure(digestPath, JSON.stringify(data, null, 2));
200
- } catch {
201
- }
202
- }
203
- async function syncContext() {
204
- const options = loadSyncOptions();
205
- const data = await getFrameDigestData();
206
- if (!data) {
207
- return {
208
- success: false,
209
- error: "No context data available. Run a task first."
210
- };
211
- }
212
- return syncFrameData(data, options);
213
- }
214
- async function syncFrame(frameId) {
215
- const options = loadSyncOptions();
216
- const data = await getFrameDigestData(frameId);
217
- if (!data) {
218
- return {
219
- success: false,
220
- error: `Frame not found: ${frameId}`
221
- };
222
- }
223
- return syncFrameData(data, options);
224
- }
225
- async function syncFrameData(data, options) {
226
- const config = loadSMSConfig();
227
- if (!config.enabled) {
228
- return { success: false, error: "Notifications disabled" };
229
- }
230
- if (data.durationSeconds < options.minFrameDuration) {
231
- return {
232
- success: false,
233
- error: `Frame too short (${data.durationSeconds}s < ${options.minFrameDuration}s min)`
234
- };
235
- }
236
- const digest = generateMobileDigest(data, options);
237
- const payload = {
238
- type: "custom",
239
- title: "Context Sync",
240
- message: digest,
241
- prompt: {
242
- type: "options",
243
- options: [
244
- { key: "1", label: "Commit", action: "git add -A && git commit" },
245
- { key: "2", label: "Status", action: "stackmemory status" },
246
- { key: "3", label: "Continue", action: 'echo "Continuing..."' }
247
- ],
248
- question: "Action?"
249
- }
250
- };
251
- const result = await sendNotification(payload);
252
- return {
253
- success: result.success,
254
- messageId: result.promptId,
255
- channel: result.channel,
256
- error: result.error,
257
- digestLength: digest.length
258
- };
259
- }
260
- function enableAutoSync(options) {
261
- const current = loadSyncOptions();
262
- const updated = {
263
- ...current,
264
- ...options,
265
- autoSyncOnClose: true
266
- };
267
- saveSyncOptions(updated);
268
- const smsConfig = loadSMSConfig();
269
- if (!smsConfig.notifyOn.custom) {
270
- smsConfig.notifyOn.custom = true;
271
- saveSMSConfig(smsConfig);
272
- }
273
- }
274
- function disableAutoSync() {
275
- const current = loadSyncOptions();
276
- current.autoSyncOnClose = false;
277
- saveSyncOptions(current);
278
- }
279
- function isAutoSyncEnabled() {
280
- const options = loadSyncOptions();
281
- return options.autoSyncOnClose;
282
- }
283
- async function onFrameClosed(frameData) {
284
- if (!isAutoSyncEnabled()) {
285
- return null;
286
- }
287
- storeFrameDigest(frameData);
288
- const options = loadSyncOptions();
289
- return syncFrameData(frameData, options);
290
- }
291
- async function handleFrameCloseHook(data) {
292
- const digestData = createFrameDigestData(
293
- data.frame,
294
- data.events,
295
- data.anchors
296
- );
297
- await onFrameClosed(digestData);
298
- }
299
- let hookUnregister = null;
300
- function registerWhatsAppSyncHook() {
301
- if (hookUnregister) {
302
- return hookUnregister;
303
- }
304
- hookUnregister = frameLifecycleHooks.onFrameClosed(
305
- "whatsapp-sync",
306
- handleFrameCloseHook,
307
- -10
308
- // Low priority - run after other hooks
309
- );
310
- return () => {
311
- if (hookUnregister) {
312
- hookUnregister();
313
- hookUnregister = null;
314
- }
315
- };
316
- }
317
- function isHookRegistered() {
318
- return hookUnregister !== null;
319
- }
320
- function createFrameDigestData(frame, events, anchors) {
321
- const now = Math.floor(Date.now() / 1e3);
322
- const duration = (frame.closed_at || now) - frame.created_at;
323
- const filesModified = [];
324
- const filesSeen = /* @__PURE__ */ new Set();
325
- events.filter((e) => e.event_type === "tool_call").forEach((e) => {
326
- const path = e.payload["path"];
327
- if (path && !filesSeen.has(path)) {
328
- filesSeen.add(path);
329
- const toolName = e.payload["tool_name"] || "";
330
- let operation = "modify";
331
- if (toolName.includes("Write") || toolName.includes("Create")) {
332
- operation = "create";
333
- } else if (toolName.includes("Read")) {
334
- operation = "read";
335
- } else if (toolName.includes("Delete")) {
336
- operation = "delete";
337
- }
338
- filesModified.push({ path, operation });
339
- }
340
- });
341
- const testsRun = [];
342
- events.filter(
343
- (e) => e.event_type === "tool_result" && String(e.payload["output"] || "").includes("test")
344
- ).forEach((e) => {
345
- const output = String(e.payload["output"] || "");
346
- const passMatch = output.match(/(\d+) pass/i);
347
- const failMatch = output.match(/(\d+) fail/i);
348
- if (passMatch) {
349
- testsRun.push({ name: "Tests", status: "passed" });
350
- }
351
- if (failMatch && parseInt(failMatch[1]) > 0) {
352
- testsRun.push({ name: "Tests", status: "failed" });
353
- }
354
- });
355
- const decisions = anchors.filter((a) => a.type === "DECISION").map((a) => a.text);
356
- const risks = anchors.filter((a) => a.type === "RISK").map((a) => a.text);
357
- const errors = [];
358
- events.filter((e) => e.payload["error"] || e.payload["status"] === "error").forEach((e) => {
359
- const errorMsg = e.payload["error"] || e.payload["message"] || "Unknown error";
360
- errors.push({
361
- type: e.payload["type"] || "error",
362
- message: errorMsg,
363
- resolved: false
364
- });
365
- });
366
- let status = "ongoing";
367
- if (frame.closed_at) {
368
- if (errors.filter((e) => !e.resolved).length > 0) {
369
- status = "failure";
370
- } else if (testsRun.some((t) => t.status === "failed") || filesModified.length === 0) {
371
- status = "partial";
372
- } else {
373
- status = "success";
374
- }
375
- }
376
- const toolCallCount = events.filter(
377
- (e) => e.event_type === "tool_call"
378
- ).length;
379
- return {
380
- frameId: frame.frame_id,
381
- name: frame.name,
382
- type: frame.type,
383
- status,
384
- durationSeconds: duration,
385
- filesModified: filesModified.filter((f) => f.operation !== "read"),
386
- testsRun,
387
- decisions,
388
- risks,
389
- toolCallCount,
390
- errors
391
- };
392
- }
393
- export {
394
- createFrameDigestData,
395
- disableAutoSync,
396
- enableAutoSync,
397
- generateMobileDigest,
398
- getFrameDigestData,
399
- isAutoSyncEnabled,
400
- isHookRegistered,
401
- loadSyncOptions,
402
- onFrameClosed,
403
- registerWhatsAppSyncHook,
404
- saveSyncOptions,
405
- storeFrameDigest,
406
- syncContext,
407
- syncFrame
408
- };
409
- //# sourceMappingURL=whatsapp-sync.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/hooks/whatsapp-sync.ts"],
4
- "sourcesContent": ["/**\n * WhatsApp Context Sync Engine\n * Push frame digests and context updates to WhatsApp\n *\n * Uses the frame lifecycle hooks system to receive frame close events.\n * Call `registerWhatsAppSyncHook()` to enable automatic sync on frame close.\n */\n\nimport { existsSync, readFileSync } from 'fs';\nimport { join } from 'path';\nimport { homedir } from 'os';\nimport {\n sendNotification,\n loadSMSConfig,\n saveSMSConfig,\n type NotificationPayload,\n} from './sms-notify.js';\nimport { writeFileSecure, ensureSecureDir } from './secure-fs.js';\nimport { SyncOptionsSchema, parseConfigSafe } from './schemas.js';\nimport {\n frameLifecycleHooks,\n type FrameCloseData,\n} from '../core/context/frame-lifecycle-hooks.js';\n\nexport interface SyncOptions {\n autoSyncOnClose: boolean;\n minFrameDuration: number; // seconds, skip short frames\n includeDecisions: boolean;\n includeFiles: boolean;\n includeTests: boolean;\n maxDigestLength: number; // chars, default 400\n}\n\nexport interface SyncResult {\n success: boolean;\n messageId?: string;\n channel?: 'whatsapp' | 'sms';\n error?: string;\n digestLength?: number;\n}\n\nexport interface FrameDigestData {\n frameId: string;\n name: string;\n type: string;\n status: 'success' | 'failure' | 'partial' | 'ongoing';\n durationSeconds: number;\n filesModified: Array<{ path: string; operation: string }>;\n testsRun: Array<{ name: string; status: string }>;\n decisions: string[];\n risks: string[];\n toolCallCount: number;\n errors: Array<{ type: string; message: string; resolved: boolean }>;\n}\n\nconst SYNC_CONFIG_PATH = join(homedir(), '.stackmemory', 'whatsapp-sync.json');\n\nconst DEFAULT_SYNC_OPTIONS: SyncOptions = {\n autoSyncOnClose: false,\n minFrameDuration: 30, // Skip frames shorter than 30 seconds\n includeDecisions: true,\n includeFiles: true,\n includeTests: true,\n maxDigestLength: 400,\n};\n\n/**\n * Load sync options from config file\n */\nexport function loadSyncOptions(): SyncOptions {\n try {\n if (existsSync(SYNC_CONFIG_PATH)) {\n const data = JSON.parse(readFileSync(SYNC_CONFIG_PATH, 'utf8'));\n return parseConfigSafe(\n SyncOptionsSchema,\n { ...DEFAULT_SYNC_OPTIONS, ...data },\n DEFAULT_SYNC_OPTIONS,\n 'whatsapp-sync'\n );\n }\n } catch {\n // Use defaults\n }\n return { ...DEFAULT_SYNC_OPTIONS };\n}\n\n/**\n * Save sync options to config file\n */\nexport function saveSyncOptions(options: SyncOptions): void {\n try {\n ensureSecureDir(join(homedir(), '.stackmemory'));\n writeFileSecure(SYNC_CONFIG_PATH, JSON.stringify(options, null, 2));\n } catch {\n // Silently fail\n }\n}\n\n/**\n * Format duration for mobile display\n */\nfunction formatDuration(seconds: number): string {\n if (seconds < 60) {\n return `${seconds}s`;\n } else if (seconds < 3600) {\n const mins = Math.floor(seconds / 60);\n const secs = seconds % 60;\n return secs > 0 ? `${mins}m${secs}s` : `${mins}m`;\n } else {\n const hours = Math.floor(seconds / 3600);\n const mins = Math.floor((seconds % 3600) / 60);\n return mins > 0 ? `${hours}h${mins}m` : `${hours}h`;\n }\n}\n\n/**\n * Truncate text to max length with ellipsis\n */\nfunction truncate(text: string, maxLen: number): string {\n if (text.length <= maxLen) return text;\n return text.slice(0, maxLen - 3) + '...';\n}\n\n/**\n * Get status symbol for mobile display\n */\nfunction getStatusSymbol(status: string): string {\n switch (status) {\n case 'success':\n return 'OK';\n case 'failure':\n return 'FAIL';\n case 'partial':\n return 'PARTIAL';\n case 'ongoing':\n return 'ACTIVE';\n default:\n return '?';\n }\n}\n\n/**\n * Generate WhatsApp-friendly digest (300-400 chars max)\n * Optimized for mobile readability\n */\nexport function generateMobileDigest(\n data: FrameDigestData,\n options: SyncOptions = DEFAULT_SYNC_OPTIONS\n): string {\n const parts: string[] = [];\n const maxLen = options.maxDigestLength;\n\n // Header: FRAME: Name [type] - duration status\n const header = `FRAME: ${truncate(data.name, 30)} [${data.type}] - ${formatDuration(data.durationSeconds)} ${getStatusSymbol(data.status)}`;\n parts.push(header);\n\n // Activity summary line\n const activityParts: string[] = [];\n\n if (options.includeFiles && data.filesModified.length > 0) {\n activityParts.push(`FILES: ${data.filesModified.length}`);\n }\n\n if (data.toolCallCount > 0) {\n activityParts.push(`TOOLS: ${data.toolCallCount}`);\n }\n\n if (options.includeTests && data.testsRun.length > 0) {\n const passed = data.testsRun.filter((t) => t.status === 'passed').length;\n const failed = data.testsRun.filter((t) => t.status === 'failed').length;\n if (failed > 0) {\n activityParts.push(`TESTS: ${passed}ok/${failed}fail`);\n } else {\n activityParts.push(`TESTS: ${passed} pass`);\n }\n }\n\n if (activityParts.length > 0) {\n parts.push(activityParts.join(' | '));\n }\n\n // Files modified (compact)\n if (options.includeFiles && data.filesModified.length > 0) {\n const fileList = data.filesModified\n .slice(0, 3)\n .map((f) => {\n const basename = f.path.split('/').pop() || f.path;\n const op = f.operation.charAt(0).toUpperCase();\n return `${op}:${truncate(basename, 20)}`;\n })\n .join(', ');\n const more =\n data.filesModified.length > 3 ? ` +${data.filesModified.length - 3}` : '';\n parts.push(` ${fileList}${more}`);\n }\n\n // Decisions (high value)\n if (options.includeDecisions && data.decisions.length > 0) {\n parts.push('');\n parts.push('DECISIONS:');\n data.decisions.slice(0, 3).forEach((d) => {\n parts.push(` ${truncate(d, 60)}`);\n });\n if (data.decisions.length > 3) {\n parts.push(` +${data.decisions.length - 3} more`);\n }\n }\n\n // Risks (important to surface)\n if (data.risks.length > 0) {\n parts.push('');\n parts.push('RISKS:');\n data.risks.slice(0, 2).forEach((r) => {\n parts.push(` ${truncate(r, 50)}`);\n });\n }\n\n // Errors (unresolved only)\n const unresolvedErrors = data.errors.filter((e) => !e.resolved);\n if (unresolvedErrors.length > 0) {\n parts.push('');\n parts.push(`ERRORS: ${unresolvedErrors.length} unresolved`);\n unresolvedErrors.slice(0, 2).forEach((e) => {\n parts.push(` ${truncate(e.message, 50)}`);\n });\n }\n\n // Next action suggestion\n parts.push('');\n if (data.status === 'success') {\n parts.push('NEXT: commit & test');\n } else if (data.status === 'failure') {\n parts.push('NEXT: fix errors');\n } else if (data.status === 'partial') {\n parts.push('NEXT: review & continue');\n } else {\n parts.push('NEXT: check status');\n }\n\n // Join and truncate final result\n let result = parts.join('\\n');\n\n // If too long, trim aggressively\n if (result.length > maxLen) {\n // Remove less important sections\n const essentialParts = [header];\n\n if (activityParts.length > 0) {\n essentialParts.push(activityParts.join(' | '));\n }\n\n if (options.includeDecisions && data.decisions.length > 0) {\n essentialParts.push('');\n essentialParts.push(`DECISIONS: ${data.decisions.length}`);\n essentialParts.push(` ${truncate(data.decisions[0], 50)}`);\n }\n\n if (unresolvedErrors.length > 0) {\n essentialParts.push('');\n essentialParts.push(`ERRORS: ${unresolvedErrors.length} unresolved`);\n }\n\n essentialParts.push('');\n essentialParts.push(\n data.status === 'success' ? 'NEXT: commit' : 'NEXT: review'\n );\n\n result = essentialParts.join('\\n');\n }\n\n return result.slice(0, maxLen);\n}\n\n/**\n * Get frame digest data from stackmemory database\n * Returns null if frame not found or context unavailable\n */\nexport async function getFrameDigestData(\n frameId?: string\n): Promise<FrameDigestData | null> {\n try {\n // Try to load from recent frame digests\n const digestPath = join(\n homedir(),\n '.stackmemory',\n 'latest-frame-digest.json'\n );\n\n if (existsSync(digestPath)) {\n const data = JSON.parse(readFileSync(digestPath, 'utf8'));\n\n // If frameId specified, check if it matches\n if (frameId && data.frameId !== frameId) {\n return null;\n }\n\n return data as FrameDigestData;\n }\n\n return null;\n } catch {\n return null;\n }\n}\n\n/**\n * Store frame digest for sync\n */\nexport function storeFrameDigest(data: FrameDigestData): void {\n try {\n ensureSecureDir(join(homedir(), '.stackmemory'));\n const digestPath = join(\n homedir(),\n '.stackmemory',\n 'latest-frame-digest.json'\n );\n writeFileSecure(digestPath, JSON.stringify(data, null, 2));\n } catch {\n // Silently fail\n }\n}\n\n/**\n * Push current context to WhatsApp\n */\nexport async function syncContext(): Promise<SyncResult> {\n const options = loadSyncOptions();\n const data = await getFrameDigestData();\n\n if (!data) {\n return {\n success: false,\n error: 'No context data available. Run a task first.',\n };\n }\n\n return syncFrameData(data, options);\n}\n\n/**\n * Sync specific frame by ID\n */\nexport async function syncFrame(frameId: string): Promise<SyncResult> {\n const options = loadSyncOptions();\n const data = await getFrameDigestData(frameId);\n\n if (!data) {\n return {\n success: false,\n error: `Frame not found: ${frameId}`,\n };\n }\n\n return syncFrameData(data, options);\n}\n\n/**\n * Sync frame data to WhatsApp\n */\nasync function syncFrameData(\n data: FrameDigestData,\n options: SyncOptions\n): Promise<SyncResult> {\n const config = loadSMSConfig();\n\n if (!config.enabled) {\n return { success: false, error: 'Notifications disabled' };\n }\n\n // Check minimum duration\n if (data.durationSeconds < options.minFrameDuration) {\n return {\n success: false,\n error: `Frame too short (${data.durationSeconds}s < ${options.minFrameDuration}s min)`,\n };\n }\n\n // Generate mobile digest\n const digest = generateMobileDigest(data, options);\n\n // Send notification\n const payload: NotificationPayload = {\n type: 'custom',\n title: 'Context Sync',\n message: digest,\n prompt: {\n type: 'options',\n options: [\n { key: '1', label: 'Commit', action: 'git add -A && git commit' },\n { key: '2', label: 'Status', action: 'stackmemory status' },\n { key: '3', label: 'Continue', action: 'echo \"Continuing...\"' },\n ],\n question: 'Action?',\n },\n };\n\n const result = await sendNotification(payload);\n\n return {\n success: result.success,\n messageId: result.promptId,\n channel: result.channel,\n error: result.error,\n digestLength: digest.length,\n };\n}\n\n/**\n * Enable auto-sync on frame close\n */\nexport function enableAutoSync(options?: Partial<SyncOptions>): void {\n const current = loadSyncOptions();\n const updated: SyncOptions = {\n ...current,\n ...options,\n autoSyncOnClose: true,\n };\n saveSyncOptions(updated);\n\n // Update SMS config to enable context_sync notifications\n const smsConfig = loadSMSConfig();\n if (!smsConfig.notifyOn.custom) {\n smsConfig.notifyOn.custom = true;\n saveSMSConfig(smsConfig);\n }\n}\n\n/**\n * Disable auto-sync\n */\nexport function disableAutoSync(): void {\n const current = loadSyncOptions();\n current.autoSyncOnClose = false;\n saveSyncOptions(current);\n}\n\n/**\n * Check if auto-sync is enabled\n */\nexport function isAutoSyncEnabled(): boolean {\n const options = loadSyncOptions();\n return options.autoSyncOnClose;\n}\n\n/**\n * Callback for frame manager to trigger auto-sync\n * Call this when a frame closes\n */\nexport async function onFrameClosed(\n frameData: FrameDigestData\n): Promise<SyncResult | null> {\n if (!isAutoSyncEnabled()) {\n return null;\n }\n\n // Store for potential manual sync later\n storeFrameDigest(frameData);\n\n // Auto-sync\n const options = loadSyncOptions();\n return syncFrameData(frameData, options);\n}\n\n/**\n * Internal hook handler that receives FrameCloseData from lifecycle hooks\n */\nasync function handleFrameCloseHook(data: FrameCloseData): Promise<void> {\n const digestData = createFrameDigestData(\n data.frame,\n data.events,\n data.anchors\n );\n await onFrameClosed(digestData);\n}\n\n// Track if hook is registered to avoid duplicates\nlet hookUnregister: (() => void) | null = null;\n\n/**\n * Register WhatsApp sync as a frame lifecycle hook\n * This enables automatic sync when frames are closed\n * Call this during app initialization to enable the integration\n *\n * @returns Unregister function to disable the hook\n */\nexport function registerWhatsAppSyncHook(): () => void {\n // Avoid duplicate registration\n if (hookUnregister) {\n return hookUnregister;\n }\n\n hookUnregister = frameLifecycleHooks.onFrameClosed(\n 'whatsapp-sync',\n handleFrameCloseHook,\n -10 // Low priority - run after other hooks\n );\n\n return () => {\n if (hookUnregister) {\n hookUnregister();\n hookUnregister = null;\n }\n };\n}\n\n/**\n * Check if the WhatsApp sync hook is currently registered\n */\nexport function isHookRegistered(): boolean {\n return hookUnregister !== null;\n}\n\n/**\n * Create frame digest data from raw frame info\n * Helper for integration with frame-manager\n */\nexport function createFrameDigestData(\n frame: {\n frame_id: string;\n name: string;\n type: string;\n created_at: number;\n closed_at?: number;\n },\n events: Array<{\n event_type: string;\n payload: Record<string, unknown>;\n }>,\n anchors: Array<{\n type: string;\n text: string;\n }>\n): FrameDigestData {\n const now = Math.floor(Date.now() / 1000);\n const duration = (frame.closed_at || now) - frame.created_at;\n\n // Extract files from tool_call events\n const filesModified: Array<{ path: string; operation: string }> = [];\n const filesSeen = new Set<string>();\n\n events\n .filter((e) => e.event_type === 'tool_call')\n .forEach((e) => {\n const path = e.payload['path'] as string | undefined;\n if (path && !filesSeen.has(path)) {\n filesSeen.add(path);\n const toolName = (e.payload['tool_name'] as string) || '';\n let operation = 'modify';\n if (toolName.includes('Write') || toolName.includes('Create')) {\n operation = 'create';\n } else if (toolName.includes('Read')) {\n operation = 'read';\n } else if (toolName.includes('Delete')) {\n operation = 'delete';\n }\n filesModified.push({ path, operation });\n }\n });\n\n // Extract tests\n const testsRun: Array<{ name: string; status: string }> = [];\n events\n .filter(\n (e) =>\n e.event_type === 'tool_result' &&\n String(e.payload['output'] || '').includes('test')\n )\n .forEach((e) => {\n const output = String(e.payload['output'] || '');\n // Simple test result extraction\n const passMatch = output.match(/(\\d+) pass/i);\n const failMatch = output.match(/(\\d+) fail/i);\n if (passMatch) {\n testsRun.push({ name: 'Tests', status: 'passed' });\n }\n if (failMatch && parseInt(failMatch[1]) > 0) {\n testsRun.push({ name: 'Tests', status: 'failed' });\n }\n });\n\n // Extract decisions and risks from anchors\n const decisions = anchors\n .filter((a) => a.type === 'DECISION')\n .map((a) => a.text);\n\n const risks = anchors.filter((a) => a.type === 'RISK').map((a) => a.text);\n\n // Extract errors\n const errors: Array<{ type: string; message: string; resolved: boolean }> =\n [];\n events\n .filter((e) => e.payload['error'] || e.payload['status'] === 'error')\n .forEach((e) => {\n const errorMsg =\n (e.payload['error'] as string) ||\n (e.payload['message'] as string) ||\n 'Unknown error';\n errors.push({\n type: (e.payload['type'] as string) || 'error',\n message: errorMsg,\n resolved: false,\n });\n });\n\n // Determine status\n let status: 'success' | 'failure' | 'partial' | 'ongoing' = 'ongoing';\n if (frame.closed_at) {\n if (errors.filter((e) => !e.resolved).length > 0) {\n status = 'failure';\n } else if (\n testsRun.some((t) => t.status === 'failed') ||\n filesModified.length === 0\n ) {\n status = 'partial';\n } else {\n status = 'success';\n }\n }\n\n // Count tool calls\n const toolCallCount = events.filter(\n (e) => e.event_type === 'tool_call'\n ).length;\n\n return {\n frameId: frame.frame_id,\n name: frame.name,\n type: frame.type,\n status,\n durationSeconds: duration,\n filesModified: filesModified.filter((f) => f.operation !== 'read'),\n testsRun,\n decisions,\n risks,\n toolCallCount,\n errors,\n };\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["/**\n * StackMemory - Lossless memory runtime for AI coding tools\n * Main entry point for the StackMemory package\n */\n\nexport {\n FrameManager,\n type FrameType,\n type FrameState,\n} from './core/context/index.js';\nexport { logger, Logger, LogLevel } from './core/monitoring/logger.js';\nexport {\n StackMemoryError,\n ErrorCode,\n ErrorHandler,\n} from './core/monitoring/error-handler.js';\nexport { default as LocalStackMemoryMCP } from './integrations/mcp/server.js';\n\n// Re-export key types\nexport interface StackMemoryConfig {\n projectRoot?: string;\n dbPath?: string;\n logLevel?: 'ERROR' | 'WARN' | 'INFO' | 'DEBUG';\n}\n\nexport interface ContextItem {\n id: string;\n type: string;\n content: string;\n importance: number;\n timestamp: number;\n}\n"],
5
- "mappings": ";;;;AAKA;AAAA,EACE;AAAA,OAGK;AACP,SAAS,QAAQ,QAAQ,gBAAgB;AACzC;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAoB,WAAXA,gBAAsC;",
6
- "names": ["default"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/anthropic/client.ts"],
4
- "sourcesContent": ["/**\n * Anthropic API Client for Claude Integration\n * \n * Manages API calls to Claude with retry logic, rate limiting,\n * and response streaming\n */\n\nimport { logger } from '../../core/monitoring/logger.js';\n\nexport interface CompletionRequest {\n model: string;\n systemPrompt: string;\n prompt: string;\n maxTokens: number;\n temperature: number;\n stream?: boolean;\n}\n\nexport interface CompletionResponse {\n content: string;\n stopReason: string;\n model: string;\n usage: {\n inputTokens: number;\n outputTokens: number;\n };\n}\n\nexport interface AnthropicClientConfig {\n apiKey?: string;\n baseURL?: string;\n maxRetries?: number;\n timeout?: number;\n}\n\n/**\n * Anthropic API Client\n * \n * NOTE: This is a mock implementation. In production, you would:\n * 1. Install @anthropic-ai/sdk: npm install @anthropic-ai/sdk\n * 2. Use the actual SDK methods\n * 3. Handle real API responses\n */\nexport class AnthropicClient {\n private apiKey: string;\n private baseURL: string;\n private maxRetries: number;\n private timeout: number;\n \n // Rate limiting\n private requestCount: number = 0;\n private lastResetTime: number = Date.now();\n private rateLimitPerMinute: number = 60;\n \n constructor(config?: AnthropicClientConfig) {\n this.apiKey = config?.apiKey || process.env['ANTHROPIC_API_KEY'] || '';\n this.baseURL = config?.baseURL || 'https://api.anthropic.com';\n this.maxRetries = config?.maxRetries || 3;\n this.timeout = config?.timeout || 60000;\n \n if (!this.apiKey) {\n logger.warn('Anthropic API key not configured. Using mock mode.');\n }\n \n logger.info('Anthropic client initialized', {\n baseURL: this.baseURL,\n maxRetries: this.maxRetries,\n timeout: this.timeout,\n mockMode: !this.apiKey,\n });\n }\n \n /**\n * Send completion request to Claude\n */\n async complete(request: CompletionRequest): Promise<string> {\n // Rate limiting check\n await this.checkRateLimit();\n \n logger.debug('Sending completion request', {\n model: request.model,\n promptLength: request.prompt.length,\n maxTokens: request.maxTokens,\n });\n \n // Mock implementation for development\n if (!this.apiKey) {\n return this.mockComplete(request);\n }\n \n // Real implementation would use Anthropic SDK\n try {\n const response = await this.sendRequest(request);\n return response.content;\n } catch (error) {\n logger.error('Anthropic API error', { error });\n throw error;\n }\n }\n \n /**\n * Send request with retry logic\n */\n private async sendRequest(\n request: CompletionRequest,\n attempt: number = 1\n ): Promise<CompletionResponse> {\n try {\n // In production, use actual Anthropic SDK:\n /*\n import Anthropic from '@anthropic-ai/sdk';\n \n const anthropic = new Anthropic({\n apiKey: this.apiKey,\n });\n \n const response = await anthropic.messages.create({\n model: request.model,\n system: request.systemPrompt,\n messages: [{ role: 'user', content: request.prompt }],\n max_tokens: request.maxTokens,\n temperature: request.temperature,\n });\n \n return {\n content: response.content[0].text,\n stopReason: response.stop_reason,\n model: response.model,\n usage: {\n inputTokens: response.usage.input_tokens,\n outputTokens: response.usage.output_tokens,\n },\n };\n */\n \n // Mock response for now\n return this.createMockResponse(request);\n \n } catch (error: any) {\n if (attempt < this.maxRetries) {\n const delay = Math.pow(2, attempt) * 1000;\n logger.warn(`Retrying after ${delay}ms (attempt ${attempt}/${this.maxRetries})`);\n await this.delay(delay);\n return this.sendRequest(request, attempt + 1);\n }\n throw error;\n }\n }\n \n /**\n * Mock completion for development/testing\n */\n private async mockComplete(request: CompletionRequest): Promise<string> {\n // Simulate API delay\n await this.delay(500 + Math.random() * 1500);\n \n // Generate mock response based on agent type\n if (request.systemPrompt.includes('Planning Agent')) {\n return this.mockPlanningResponse(request.prompt);\n } else if (request.systemPrompt.includes('Code Agent')) {\n return this.mockCodeResponse(request.prompt);\n } else if (request.systemPrompt.includes('Testing Agent')) {\n return this.mockTestingResponse(request.prompt);\n } else if (request.systemPrompt.includes('Review Agent')) {\n return this.mockReviewResponse(request.prompt);\n } else {\n return `Mock response for: ${request.prompt.slice(0, 100)}...`;\n }\n }\n \n /**\n * Mock response generators\n */\n \n private mockPlanningResponse(prompt: string): string {\n return JSON.stringify({\n plan: {\n type: 'sequential',\n tasks: [\n {\n id: 'task-1',\n description: 'Analyze requirements',\n agent: 'context',\n dependencies: [],\n },\n {\n id: 'task-2',\n type: 'parallel',\n description: 'Implementation phase',\n children: [\n {\n id: 'task-2a',\n description: 'Write core logic',\n agent: 'code',\n dependencies: ['task-1'],\n },\n {\n id: 'task-2b',\n description: 'Write tests',\n agent: 'testing',\n dependencies: ['task-1'],\n },\n ],\n },\n {\n id: 'task-3',\n description: 'Review and improve',\n agent: 'review',\n dependencies: ['task-2'],\n },\n ],\n },\n }, null, 2);\n }\n \n private mockCodeResponse(prompt: string): string {\n return `\n// Mock implementation\nexport function processTask(input: string): string {\n // TODO: Implement actual logic\n console.log('Processing:', input);\n return \\`Processed: \\${input}\\`;\n}\n\nexport function validateInput(input: unknown): boolean {\n return typeof input === 'string' && input.length > 0;\n}\n `.trim();\n }\n \n private mockTestingResponse(prompt: string): string {\n return `\nimport { describe, test, expect } from 'vitest';\nimport { processTask, validateInput } from './implementation';\n\ndescribe('processTask', () => {\n test('should process valid input', () => {\n const result = processTask('test input');\n expect(result).toBe('Processed: test input');\n });\n \n test('should handle empty input', () => {\n const result = processTask('');\n expect(result).toBe('Processed: ');\n });\n});\n\ndescribe('validateInput', () => {\n test('should validate string input', () => {\n expect(validateInput('valid')).toBe(true);\n expect(validateInput('')).toBe(false);\n expect(validateInput(123)).toBe(false);\n expect(validateInput(null)).toBe(false);\n });\n});\n `.trim();\n }\n \n private mockReviewResponse(prompt: string): string {\n return JSON.stringify({\n quality: 0.75,\n issues: [\n 'Missing error handling in processTask function',\n 'No input validation before processing',\n 'Tests could cover more edge cases',\n ],\n suggestions: [\n 'Add try-catch block in processTask',\n 'Validate input length and type',\n 'Add tests for special characters and long inputs',\n 'Consider adding performance tests',\n ],\n improvements: [\n {\n file: 'implementation.ts',\n line: 3,\n suggestion: 'Add input validation',\n priority: 'high',\n },\n {\n file: 'tests.ts',\n line: 15,\n suggestion: 'Add edge case tests',\n priority: 'medium',\n },\n ],\n }, null, 2);\n }\n \n /**\n * Create mock response object\n */\n private createMockResponse(request: CompletionRequest): CompletionResponse {\n const content = this.mockComplete(request).toString();\n \n return {\n content,\n stopReason: 'stop_sequence',\n model: request.model,\n usage: {\n inputTokens: Math.ceil(request.prompt.length / 4),\n outputTokens: Math.ceil(content.length / 4),\n },\n };\n }\n \n /**\n * Check rate limiting\n */\n private async checkRateLimit(): Promise<void> {\n const now = Date.now();\n const timeSinceReset = now - this.lastResetTime;\n \n if (timeSinceReset >= 60000) {\n this.requestCount = 0;\n this.lastResetTime = now;\n }\n \n if (this.requestCount >= this.rateLimitPerMinute) {\n const waitTime = 60000 - timeSinceReset;\n logger.warn(`Rate limit reached, waiting ${waitTime}ms`);\n await this.delay(waitTime);\n this.requestCount = 0;\n this.lastResetTime = Date.now();\n }\n \n this.requestCount++;\n }\n \n /**\n * Stream completion response\n */\n async *streamComplete(request: CompletionRequest): AsyncGenerator<string> {\n // Mock streaming implementation\n const response = await this.complete(request);\n const words = response.split(' ');\n \n for (const word of words) {\n yield word + ' ';\n await this.delay(50); // Simulate streaming delay\n }\n }\n \n /**\n * Utility delay function\n */\n private delay(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n \n /**\n * Get API usage statistics\n */\n getUsageStats() {\n return {\n requestCount: this.requestCount,\n rateLimitRemaining: this.rateLimitPerMinute - this.requestCount,\n resetTime: new Date(this.lastResetTime + 60000).toISOString(),\n };\n }\n}"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/claude-code/agent-bridge.ts"],
4
- "sourcesContent": ["/**\n * Claude Code Agent Bridge\n *\n * Integrates StackMemory's Oracle/Worker pattern with Claude Code's specialized agents.\n * Enables seamless use of Claude's built-in agents as Oracle strategists and Worker executors.\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { logger } from '../../core/monitoring/logger.js';\nimport {\n OracleWorkerCoordinator,\n ModelConfig,\n} from '../ralph/patterns/oracle-worker-pattern.js';\nimport { ClaudeCodeTaskCoordinator } from './task-coordinator.js';\n\n// Claude Code agent types and their capabilities\nexport interface ClaudeCodeAgent {\n name: string;\n type: 'oracle' | 'worker' | 'reviewer';\n description: string;\n capabilities: string[];\n costMultiplier: number; // Relative cost compared to base model\n complexity: 'low' | 'medium' | 'high' | 'very_high';\n specializations: string[];\n}\n\n// Available Claude Code agents mapped to Oracle/Worker roles\nexport const CLAUDE_CODE_AGENTS: Record<string, ClaudeCodeAgent> = {\n // Oracle-level agents (strategic, high-level)\n 'staff-architect': {\n name: 'staff-architect',\n type: 'oracle',\n description:\n 'Strategic technical leadership, architectural guidance, and engineering direction',\n capabilities: [\n 'system_design',\n 'architectural_planning',\n 'technical_strategy',\n 'scalability_analysis',\n 'technology_selection',\n 'team_organization',\n ],\n costMultiplier: 1.0, // Oracle pricing\n complexity: 'very_high',\n specializations: ['architecture', 'strategy', 'leadership'],\n },\n\n 'product-manager': {\n name: 'product-manager',\n type: 'oracle',\n description: 'Strategic planning, roadmap development, and market analysis',\n capabilities: [\n 'product_strategy',\n 'roadmap_planning',\n 'market_analysis',\n 'feature_prioritization',\n 'stakeholder_alignment',\n 'business_requirements',\n ],\n costMultiplier: 1.0,\n complexity: 'high',\n specializations: ['strategy', 'planning', 'business'],\n },\n\n // Worker-level agents (execution, focused tasks)\n 'general-purpose': {\n name: 'general-purpose',\n type: 'worker',\n description:\n 'General-purpose agent for researching, coding, and multi-step tasks',\n capabilities: [\n 'code_implementation',\n 'research',\n 'debugging',\n 'file_operations',\n 'testing',\n 'documentation',\n ],\n costMultiplier: 0.2, // Worker pricing\n complexity: 'medium',\n specializations: ['development', 'research', 'general'],\n },\n\n 'code-reviewer': {\n name: 'code-reviewer',\n type: 'reviewer',\n description:\n 'Reviews code against standards, checks for issues and best practices',\n capabilities: [\n 'code_review',\n 'quality_assessment',\n 'security_analysis',\n 'performance_review',\n 'best_practices_enforcement',\n 'typescript_validation',\n ],\n costMultiplier: 0.3, // Slightly more expensive worker\n complexity: 'medium',\n specializations: ['quality', 'security', 'standards'],\n },\n\n debugger: {\n name: 'debugger',\n type: 'worker',\n description:\n 'Specialized debugging for errors, test failures, and unexpected behavior',\n capabilities: [\n 'error_analysis',\n 'debugging',\n 'log_analysis',\n 'performance_debugging',\n 'test_failure_analysis',\n 'root_cause_analysis',\n ],\n costMultiplier: 0.25,\n complexity: 'medium',\n specializations: ['debugging', 'analysis', 'troubleshooting'],\n },\n\n 'qa-workflow-validator': {\n name: 'qa-workflow-validator',\n type: 'worker',\n description:\n 'Comprehensive QA testing, workflow validation, and UI testing',\n capabilities: [\n 'workflow_validation',\n 'test_execution',\n 'ui_testing',\n 'integration_testing',\n 'log_analysis',\n 'quality_assurance',\n ],\n costMultiplier: 0.3,\n complexity: 'medium',\n specializations: ['testing', 'validation', 'quality'],\n },\n\n 'merge-coordinator': {\n name: 'merge-coordinator',\n type: 'worker',\n description: 'Coordinates merge requests and handles code integration',\n capabilities: [\n 'merge_coordination',\n 'conflict_resolution',\n 'code_integration',\n 'branch_management',\n 'review_coordination',\n 'git_workflow',\n ],\n costMultiplier: 0.2,\n complexity: 'low',\n specializations: ['git', 'coordination', 'integration'],\n },\n\n 'github-workflow': {\n name: 'github-workflow',\n type: 'worker',\n description: 'Git workflow management for commits, branches, and PRs',\n capabilities: [\n 'git_operations',\n 'branch_management',\n 'commit_management',\n 'pr_creation',\n 'workflow_automation',\n 'repository_management',\n ],\n costMultiplier: 0.15,\n complexity: 'low',\n specializations: ['git', 'automation', 'workflow'],\n },\n};\n\n/**\n * Claude Code Agent Bridge\n * Integrates Claude Code agents with Oracle/Worker pattern\n */\nexport class ClaudeCodeAgentBridge extends OracleWorkerCoordinator {\n private claudeAgents: Map<string, ClaudeCodeAgent> = new Map();\n private activeAgentSessions: Map<string, any> = new Map();\n private taskCoordinator: ClaudeCodeTaskCoordinator;\n\n constructor() {\n // Create configurations before super call\n const oracleConfigs = ClaudeCodeAgentBridge.createOracleConfigs();\n const workerConfigs = ClaudeCodeAgentBridge.createWorkerConfigs();\n const reviewerConfigs = ClaudeCodeAgentBridge.createReviewerConfigs();\n\n super({\n oracle: oracleConfigs[0],\n workers: workerConfigs,\n reviewers: reviewerConfigs,\n maxWorkers: 8, // Allow more workers for Claude Code agents\n coordinationInterval: 30000,\n costBudget: 15.0, // Higher budget for Claude Code integration\n });\n\n // Initialize after super call\n\n // Initialize task coordinator\n this.taskCoordinator = new ClaudeCodeTaskCoordinator();\n\n // Load Claude Code agents\n this.loadClaudeCodeAgents();\n\n logger.info('Claude Code Agent Bridge initialized', {\n oracleAgents: oracleConfigs.length,\n workerAgents: workerConfigs.length,\n reviewerAgents: reviewerConfigs.length,\n });\n }\n\n /**\n * Launch Oracle/Worker swarm using Claude Code agents\n */\n async launchClaudeCodeSwarm(\n projectDescription: string,\n options: {\n oracleAgent?: string;\n workerAgents?: string[];\n reviewerAgents?: string[];\n budget?: number;\n complexity?: 'low' | 'medium' | 'high' | 'very_high';\n } = {}\n ): Promise<string> {\n const {\n oracleAgent = 'staff-architect',\n workerAgents = ['general-purpose', 'code-reviewer'],\n reviewerAgents = ['code-reviewer'],\n budget = 10.0,\n complexity = 'medium',\n } = options;\n\n logger.info('Launching Claude Code swarm', {\n project: projectDescription.substring(0, 100),\n oracleAgent,\n workerAgents,\n budget,\n });\n\n // Validate agents exist\n this.validateAgentSelection(oracleAgent, workerAgents, reviewerAgents);\n\n // Create specialized task decomposition using Claude Code capabilities\n const swarmId = uuidv4();\n\n try {\n // Phase 1: Oracle Planning with Claude Code staff-architect\n const oracleTaskId = await this.createClaudeOracleTask(\n oracleAgent,\n projectDescription,\n complexity\n );\n\n const decomposition = await this.executeClaudeOracleTask(\n oracleTaskId,\n oracleAgent\n );\n\n // Phase 2: Worker Assignment with Claude Code agents\n const workerTasks = await this.allocateTasksToClaudeWorkers(\n decomposition,\n workerAgents\n );\n\n // Phase 3: Parallel Worker Execution\n const workerPromises = workerTasks.map((task) =>\n this.executeClaudeWorkerTask(task)\n );\n\n // Phase 4: Review with Claude Code reviewers\n const reviewPromises = reviewerAgents.map((reviewer) =>\n this.executeClaudeReviewTask(reviewer, decomposition, workerTasks)\n );\n\n // Execute all phases\n const [workerResults, reviewResults] = await Promise.all([\n Promise.allSettled(workerPromises),\n Promise.allSettled(reviewPromises),\n ]);\n\n // Phase 5: Integration and Final Review\n await this.integrateClaudeResults(swarmId, workerResults, reviewResults);\n\n this.logClaudeCodeCostAnalysis();\n return swarmId;\n } catch (error: unknown) {\n logger.error('Claude Code swarm failed', error as Error);\n throw error;\n }\n }\n\n /**\n * Load Claude Code agents into the bridge\n */\n private loadClaudeCodeAgents(): void {\n for (const [agentName, agentConfig] of Object.entries(CLAUDE_CODE_AGENTS)) {\n this.claudeAgents.set(agentName, agentConfig);\n }\n\n logger.info('Claude Code agents loaded', {\n totalAgents: this.claudeAgents.size,\n oracles: Array.from(this.claudeAgents.values()).filter(\n (a) => a.type === 'oracle'\n ).length,\n workers: Array.from(this.claudeAgents.values()).filter(\n (a) => a.type === 'worker'\n ).length,\n reviewers: Array.from(this.claudeAgents.values()).filter(\n (a) => a.type === 'reviewer'\n ).length,\n });\n }\n\n /**\n * Create Oracle model configurations from Claude Code agents\n */\n private static createOracleConfigs(): ModelConfig[] {\n return Object.values(CLAUDE_CODE_AGENTS)\n .filter((agent) => agent.type === 'oracle')\n .map((agent) => ({\n tier: 'oracle' as const,\n provider: 'claude',\n model: `claude-code-${agent.name}`,\n costPerToken: 0.015 * agent.costMultiplier, // Base Oracle cost with multiplier\n capabilities: agent.capabilities,\n }));\n }\n\n /**\n * Create Worker model configurations from Claude Code agents\n */\n private static createWorkerConfigs(): ModelConfig[] {\n return Object.values(CLAUDE_CODE_AGENTS)\n .filter((agent) => agent.type === 'worker')\n .map((agent) => ({\n tier: 'worker' as const,\n provider: 'claude',\n model: `claude-code-${agent.name}`,\n costPerToken: 0.00025 * agent.costMultiplier, // Base worker cost with multiplier\n capabilities: agent.capabilities,\n }));\n }\n\n /**\n * Create Reviewer model configurations from Claude Code agents\n */\n private static createReviewerConfigs(): ModelConfig[] {\n return Object.values(CLAUDE_CODE_AGENTS)\n .filter((agent) => agent.type === 'reviewer')\n .map((agent) => ({\n tier: 'reviewer' as const,\n provider: 'claude',\n model: `claude-code-${agent.name}`,\n costPerToken: 0.003 * agent.costMultiplier, // Base reviewer cost with multiplier\n capabilities: agent.capabilities,\n }));\n }\n\n /**\n * Validate that selected agents exist and are appropriate\n */\n private validateAgentSelection(\n oracleAgent: string,\n workerAgents: string[],\n reviewerAgents: string[]\n ): void {\n // Validate Oracle agent\n const oracle = this.claudeAgents.get(oracleAgent);\n if (!oracle) {\n throw new Error(`Oracle agent '${oracleAgent}' not found`);\n }\n if (oracle.type !== 'oracle') {\n throw new Error(`Agent '${oracleAgent}' is not an Oracle-level agent`);\n }\n\n // Validate Worker agents\n for (const workerAgent of workerAgents) {\n const worker = this.claudeAgents.get(workerAgent);\n if (!worker) {\n throw new Error(`Worker agent '${workerAgent}' not found`);\n }\n if (worker.type !== 'worker') {\n throw new Error(`Agent '${workerAgent}' is not a Worker-level agent`);\n }\n }\n\n // Validate Reviewer agents\n for (const reviewerAgent of reviewerAgents) {\n const reviewer = this.claudeAgents.get(reviewerAgent);\n if (!reviewer) {\n throw new Error(`Reviewer agent '${reviewerAgent}' not found`);\n }\n if (reviewer.type !== 'reviewer') {\n throw new Error(\n `Agent '${reviewerAgent}' is not a Reviewer-level agent`\n );\n }\n }\n }\n\n /**\n * Create Oracle task with Claude Code agent capabilities\n */\n private async createClaudeOracleTask(\n agentName: string,\n projectDescription: string,\n complexity: string\n ): Promise<string> {\n const taskId = uuidv4();\n const agent = this.claudeAgents.get(agentName)!;\n\n logger.info('Creating Claude Oracle task', {\n taskId,\n agent: agentName,\n complexity,\n });\n\n // Store task configuration for execution\n this.activeAgentSessions.set(taskId, {\n agentName,\n agentType: 'oracle',\n projectDescription,\n complexity,\n capabilities: agent.capabilities,\n });\n\n return taskId;\n }\n\n /**\n * Execute Oracle task using Claude Code agent\n */\n private async executeClaudeOracleTask(\n taskId: string,\n agentName: string\n ): Promise<any> {\n const session = this.activeAgentSessions.get(taskId);\n if (!session) {\n throw new Error(`Oracle task session ${taskId} not found`);\n }\n\n logger.info('Executing Claude Oracle task', {\n taskId,\n agent: agentName,\n });\n\n // Build Oracle prompt optimized for Claude Code agent\n const oraclePrompt = this.buildClaudeOraclePrompt(session);\n\n // Execute with Claude Code agent (integration point)\n const result = await this.invokeClaudeCodeAgent(agentName, oraclePrompt, {\n type: 'oracle',\n maxTokens: 4000,\n temperature: 0.7,\n });\n\n // Parse and validate the decomposition\n const decomposition = this.parseClaudeTaskDecomposition(result);\n\n return decomposition;\n }\n\n /**\n * Build Oracle prompt optimized for Claude Code capabilities\n */\n private buildClaudeOraclePrompt(session: any): string {\n const agent = this.claudeAgents.get(session.agentName)!;\n\n return `\n# CLAUDE CODE ORACLE: ${agent.name.toUpperCase()}\n\n## Your Role & Capabilities\nYou are a **${agent.description}** acting as the Oracle in an Oracle/Worker pattern.\n\n**Your Specialized Capabilities:**\n${agent.capabilities.map((cap) => `- ${cap.replace(/_/g, ' ')}`).join('\\n')}\n\n**Your Specializations:**\n${agent.specializations.map((spec) => `- ${spec}`).join('\\n')}\n\n## Project Context\n${session.projectDescription}\n\n**Complexity Level:** ${session.complexity}\n\n## Oracle Responsibilities\nAs the Oracle, you provide strategic oversight while specialized Claude Code workers handle execution:\n\n1. **Strategic Decomposition**: Break down the project into tasks optimized for Claude Code agents\n2. **Agent Selection**: Recommend which Claude Code agents should handle each task\n3. **Quality Standards**: Define acceptance criteria that leverage Claude Code capabilities\n4. **Coordination Plan**: Plan how agents should collaborate and integrate work\n\n## Available Claude Code Workers\n${this.getAvailableWorkersDescription()}\n\n## Output Required\nProvide a detailed strategic plan in JSON format:\n\n\\`\\`\\`json\n{\n \"project_analysis\": {\n \"complexity_assessment\": \"low|medium|high|very_high\",\n \"key_challenges\": [\"challenge 1\", \"challenge 2\"],\n \"success_criteria\": [\"criterion 1\", \"criterion 2\"]\n },\n \"task_decomposition\": [\n {\n \"id\": \"task-1\",\n \"title\": \"Task name\",\n \"description\": \"Detailed description\",\n \"recommended_agent\": \"agent-name\",\n \"agent_rationale\": \"Why this agent is optimal\",\n \"complexity\": \"low|medium|high\",\n \"estimated_effort\": \"1-5 scale\",\n \"dependencies\": [\"task-id\"],\n \"acceptance_criteria\": [\"criterion 1\", \"criterion 2\"],\n \"claude_code_integration\": {\n \"tools_needed\": [\"tool1\", \"tool2\"],\n \"validation_method\": \"how to verify completion\"\n }\n }\n ],\n \"coordination_strategy\": {\n \"integration_points\": [\"when agents should sync\"],\n \"quality_gates\": [\"checkpoints for review\"],\n \"risk_mitigation\": [\"potential issues and solutions\"],\n \"success_metrics\": [\"how to measure overall success\"]\n }\n}\n\\`\\`\\`\n\nFocus on strategic thinking that maximizes Claude Code's specialized capabilities.\n `;\n }\n\n /**\n * Get description of available Claude Code workers\n */\n private getAvailableWorkersDescription(): string {\n const workers = Array.from(this.claudeAgents.values()).filter(\n (agent) => agent.type === 'worker' || agent.type === 'reviewer'\n );\n\n return workers\n .map(\n (worker) =>\n `**${worker.name}**: ${worker.description}\\n Capabilities: ${worker.capabilities.join(', ')}`\n )\n .join('\\n\\n');\n }\n\n /**\n * Allocate tasks to Claude Code worker agents\n */\n private async allocateTasksToClaudeWorkers(\n decomposition: any,\n workerAgents: string[]\n ): Promise<any[]> {\n const allocatedTasks = [];\n\n for (const task of decomposition.task_decomposition || []) {\n // Use Oracle's recommendation if available, otherwise select optimal worker\n const recommendedAgent = task.recommended_agent;\n const selectedAgent = workerAgents.includes(recommendedAgent)\n ? recommendedAgent\n : this.selectOptimalClaudeWorker(task, workerAgents);\n\n const claudeAgent = this.claudeAgents.get(selectedAgent)!;\n\n allocatedTasks.push({\n ...task,\n assignedAgent: selectedAgent,\n agentCapabilities: claudeAgent.capabilities,\n agentType: claudeAgent.type,\n });\n\n logger.debug('Task allocated to Claude Code agent', {\n taskId: task.id,\n agent: selectedAgent,\n rationale:\n task.agent_rationale || 'Auto-selected based on capabilities',\n });\n }\n\n return allocatedTasks;\n }\n\n /**\n * Select optimal Claude Code worker for a task\n */\n private selectOptimalClaudeWorker(\n task: any,\n availableWorkers: string[]\n ): string {\n let bestAgent = availableWorkers[0];\n let bestScore = 0;\n\n for (const workerName of availableWorkers) {\n const worker = this.claudeAgents.get(workerName)!;\n let score = 0;\n\n // Score based on capability overlap\n const taskKeywords = (task.description || '').toLowerCase().split(' ');\n for (const capability of worker.capabilities) {\n const capabilityKeywords = capability.replace(/_/g, ' ').toLowerCase();\n if (\n taskKeywords.some((keyword) => capabilityKeywords.includes(keyword))\n ) {\n score += 2;\n }\n }\n\n // Score based on specialization match\n for (const specialization of worker.specializations) {\n if (taskKeywords.some((keyword) => keyword.includes(specialization))) {\n score += 3;\n }\n }\n\n // Prefer lower cost for similar capabilities\n score -= worker.costMultiplier;\n\n if (score > bestScore) {\n bestScore = score;\n bestAgent = workerName;\n }\n }\n\n return bestAgent;\n }\n\n /**\n * Execute worker task using Claude Code agent\n */\n private async executeClaudeWorkerTask(task: any): Promise<any> {\n const agentName = task.assignedAgent;\n const agent = this.claudeAgents.get(agentName)!;\n\n logger.info('Executing Claude Code worker task', {\n taskId: task.id,\n agent: agentName,\n });\n\n // Build worker prompt optimized for the specific Claude Code agent\n const workerPrompt = this.buildClaudeWorkerPrompt(task, agent);\n\n // Execute with Claude Code agent\n const result = await this.invokeClaudeCodeAgent(agentName, workerPrompt, {\n type: 'worker',\n maxTokens: 2000,\n temperature: 0.3,\n });\n\n return {\n taskId: task.id,\n agentName,\n result,\n success: true,\n };\n }\n\n /**\n * Execute review task using Claude Code reviewer\n */\n private async executeClaudeReviewTask(\n reviewerName: string,\n decomposition: any,\n workerTasks: any[]\n ): Promise<any> {\n const agent = this.claudeAgents.get(reviewerName)!;\n\n logger.info('Executing Claude Code review task', {\n reviewer: reviewerName,\n tasksToReview: workerTasks.length,\n });\n\n // Build review prompt\n const reviewPrompt = this.buildClaudeReviewPrompt(\n agent,\n decomposition,\n workerTasks\n );\n\n // Execute review\n const result = await this.invokeClaudeCodeAgent(\n reviewerName,\n reviewPrompt,\n {\n type: 'reviewer',\n maxTokens: 3000,\n temperature: 0.2,\n }\n );\n\n return {\n reviewerId: reviewerName,\n result,\n success: true,\n };\n }\n\n /**\n * Build worker prompt for Claude Code agent\n */\n private buildClaudeWorkerPrompt(task: any, agent: ClaudeCodeAgent): string {\n return `\n# CLAUDE CODE WORKER: ${agent.name.toUpperCase()}\n\n## Your Specialized Role\nYou are a **${agent.description}** executing a focused task as part of a larger project.\n\n**Your Capabilities:**\n${agent.capabilities.map((cap) => `- ${cap.replace(/_/g, ' ')}`).join('\\n')}\n\n## Your Task\n**${task.title}**\n\n${task.description}\n\n## Success Criteria\n${(task.acceptance_criteria || []).map((c: string) => `- ${c}`).join('\\n')}\n\n## Integration Requirements\n${\n task.claude_code_integration\n ? `\n**Tools Needed:** ${task.claude_code_integration.tools_needed?.join(', ') || 'Standard tools'}\n**Validation Method:** ${task.claude_code_integration.validation_method || 'Standard validation'}\n`\n : ''\n}\n\n## Worker Guidelines\n- **Focus** on this specific task only\n- **Execute** using your specialized capabilities\n- **Communicate** progress clearly\n- **Deliver** according to the acceptance criteria\n- **Coordinate** with other agents through shared context\n\nExecute your specialized task now, leveraging your Claude Code capabilities.\n `;\n }\n\n /**\n * Build review prompt for Claude Code reviewer\n */\n private buildClaudeReviewPrompt(\n agent: ClaudeCodeAgent,\n decomposition: any,\n workerTasks: any[]\n ): string {\n return `\n# CLAUDE CODE REVIEWER: ${agent.name.toUpperCase()}\n\n## Your Review Role\nYou are a **${agent.description}** conducting comprehensive review of completed work.\n\n**Your Review Capabilities:**\n${agent.capabilities.map((cap) => `- ${cap.replace(/_/g, ' ')}`).join('\\n')}\n\n## Project Context\n${JSON.stringify(decomposition.project_analysis || {}, null, 2)}\n\n## Completed Tasks to Review\n${workerTasks\n .map(\n (task, i) => `\n### Task ${i + 1}: ${task.title}\n- **Agent:** ${task.agentName}\n- **Status:** ${task.success ? 'Completed' : 'Failed'}\n- **Acceptance Criteria:** ${(task.acceptance_criteria || []).join(', ')}\n`\n )\n .join('\\n')}\n\n## Review Requirements\n1. **Quality Assessment**: Evaluate if each task meets its acceptance criteria\n2. **Integration Check**: Verify tasks work together cohesively\n3. **Standards Compliance**: Ensure code/work follows best practices\n4. **Risk Analysis**: Identify potential issues or improvements needed\n5. **Final Recommendation**: Approve, request changes, or flag for re-work\n\n## Output Format\nProvide structured review in JSON:\n\n\\`\\`\\`json\n{\n \"overall_assessment\": \"pass|conditional_pass|fail\",\n \"task_reviews\": [\n {\n \"task_id\": \"task-id\",\n \"status\": \"approved|changes_requested|rejected\",\n \"issues\": [\"issue 1\", \"issue 2\"],\n \"recommendations\": [\"recommendation 1\"]\n }\n ],\n \"integration_review\": {\n \"cohesion_score\": \"1-10\",\n \"integration_issues\": [\"issue 1\"],\n \"recommended_improvements\": [\"improvement 1\"]\n },\n \"final_recommendation\": \"deploy|fix_and_redeploy|major_rework_needed\"\n}\n\\`\\`\\`\n\nConduct thorough review using your specialized Claude Code capabilities.\n `;\n }\n\n /**\n * Invoke Claude Code agent (integration point)\n */\n private async invokeClaudeCodeAgent(\n agentName: string,\n prompt: string,\n options: { type: string; maxTokens: number; temperature: number }\n ): Promise<string> {\n const agent = this.claudeAgents.get(agentName)!;\n\n // Use task coordinator for execution\n return await this.taskCoordinator.executeTask(agentName, agent, prompt, {\n maxRetries: options.type === 'oracle' ? 1 : 2, // Oracle tasks are more expensive, fewer retries\n timeout: options.type === 'oracle' ? 600000 : 300000, // Oracle gets more time\n priority: options.type === 'oracle' ? 'high' : 'medium',\n });\n }\n\n /**\n * Generate mock response (to be replaced with real Claude Code integration)\n */\n private generateMockResponse(agentName: string, type: string): string {\n const agent = this.claudeAgents.get(agentName)!;\n\n if (type === 'oracle') {\n return JSON.stringify(\n {\n project_analysis: {\n complexity_assessment: 'medium',\n key_challenges: [\n 'Integration complexity',\n 'Performance requirements',\n ],\n success_criteria: ['All tests pass', 'Performance benchmarks met'],\n },\n task_decomposition: [\n {\n id: 'task-1',\n title: 'Core Implementation',\n description: 'Implement main functionality',\n recommended_agent: 'general-purpose',\n agent_rationale: 'Best suited for general development tasks',\n complexity: 'medium',\n estimated_effort: '3',\n dependencies: [],\n acceptance_criteria: ['Feature works correctly', 'Tests pass'],\n claude_code_integration: {\n tools_needed: ['Write', 'Edit', 'Bash'],\n validation_method: 'Run tests and verify functionality',\n },\n },\n ],\n coordination_strategy: {\n integration_points: ['After core implementation'],\n quality_gates: ['Code review', 'Testing'],\n risk_mitigation: ['Regular checkpoints', 'Incremental delivery'],\n },\n },\n null,\n 2\n );\n }\n\n return `Claude Code agent ${agentName} completed ${type} task successfully using capabilities: ${agent.capabilities.join(', ')}`;\n }\n\n /**\n * Parse task decomposition from Claude Code response\n */\n private parseClaudeTaskDecomposition(response: string): any {\n try {\n return JSON.parse(response);\n } catch {\n // Fallback parsing if not valid JSON\n return {\n task_decomposition: [\n {\n id: 'task-1',\n title: 'Implementation Task',\n description: response.substring(0, 200),\n complexity: 'medium',\n acceptance_criteria: ['Task completed successfully'],\n },\n ],\n };\n }\n }\n\n /**\n * Integrate results from Claude Code agents\n */\n private async integrateClaudeResults(\n swarmId: string,\n workerResults: PromiseSettledResult<any>[],\n reviewResults: PromiseSettledResult<any>[]\n ): Promise<void> {\n const successfulWorkers = workerResults.filter(\n (r) => r.status === 'fulfilled'\n ).length;\n const successfulReviews = reviewResults.filter(\n (r) => r.status === 'fulfilled'\n ).length;\n\n logger.info('Claude Code swarm integration completed', {\n swarmId,\n totalWorkerTasks: workerResults.length,\n successfulWorkers,\n totalReviews: reviewResults.length,\n successfulReviews,\n successRate: ((successfulWorkers / workerResults.length) * 100).toFixed(\n 1\n ),\n });\n }\n\n /**\n * Log cost analysis for Claude Code agents\n */\n private logClaudeCodeCostAnalysis(): void {\n // Calculate costs based on Claude Code agent usage\n const totalSessions = this.activeAgentSessions.size;\n\n logger.info('Claude Code Agent Cost Analysis', {\n totalSessions,\n estimatedSavings: '60-80% vs all-Oracle approach',\n agentEfficiency: 'Specialized agents for optimal task matching',\n qualityMaintenance:\n 'High-quality output through specialized capabilities',\n });\n }\n\n /**\n * Get available Claude Code agents by type\n */\n getAvailableAgents(): {\n oracles: string[];\n workers: string[];\n reviewers: string[];\n } {\n const agents = Array.from(this.claudeAgents.values());\n\n return {\n oracles: agents.filter((a) => a.type === 'oracle').map((a) => a.name),\n workers: agents.filter((a) => a.type === 'worker').map((a) => a.name),\n reviewers: agents.filter((a) => a.type === 'reviewer').map((a) => a.name),\n };\n }\n}\n\nexport default ClaudeCodeAgentBridge;\n"],
5
- "mappings": "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",
6
- "names": []
7
- }