@stackmemoryai/stackmemory 0.8.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (788) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +15 -3
  3. package/dist/src/agents/core/agent-task-manager.js +0 -1
  4. package/dist/src/agents/verifiers/base-verifier.js +0 -1
  5. package/dist/src/agents/verifiers/formatter-verifier.js +0 -1
  6. package/dist/src/agents/verifiers/llm-judge.js +0 -1
  7. package/dist/src/cli/auto-detect.js +0 -1
  8. package/dist/src/cli/claude-sm-danger.js +0 -1
  9. package/dist/src/cli/claude-sm.js +0 -1
  10. package/dist/src/cli/codex-sm-danger.js +0 -1
  11. package/dist/src/cli/codex-sm.js +0 -1
  12. package/dist/src/cli/commands/api.js +0 -1
  13. package/dist/src/cli/commands/auto-background.js +0 -1
  14. package/dist/src/cli/commands/cleanup-processes.js +0 -1
  15. package/dist/src/cli/commands/clear.js +0 -1
  16. package/dist/src/cli/commands/config.js +0 -1
  17. package/dist/src/cli/commands/context-rehydrate.js +0 -1
  18. package/dist/src/cli/commands/context.js +0 -1
  19. package/dist/src/cli/commands/daemon.js +0 -1
  20. package/dist/src/cli/commands/dashboard.js +4 -5
  21. package/dist/src/cli/commands/db.js +0 -1
  22. package/dist/src/cli/commands/decision.js +0 -1
  23. package/dist/src/cli/commands/discovery.js +0 -1
  24. package/dist/src/cli/commands/handoff.js +0 -1
  25. package/dist/src/cli/commands/hooks.js +0 -1
  26. package/dist/src/cli/commands/linear.js +0 -1
  27. package/dist/src/cli/commands/log.js +0 -1
  28. package/dist/src/cli/commands/login.js +0 -1
  29. package/dist/src/cli/commands/migrate.js +0 -1
  30. package/dist/src/cli/commands/model.js +0 -1
  31. package/dist/src/cli/commands/onboard.js +0 -1
  32. package/dist/src/cli/commands/ping.js +0 -1
  33. package/dist/src/cli/commands/projects.js +0 -1
  34. package/dist/src/cli/commands/ralph.js +0 -1
  35. package/dist/src/cli/commands/retrieval.js +0 -1
  36. package/dist/src/cli/commands/search.js +0 -1
  37. package/dist/src/cli/commands/service.js +0 -1
  38. package/dist/src/cli/commands/session.js +0 -1
  39. package/dist/src/cli/commands/setup.js +0 -4
  40. package/dist/src/cli/commands/shell.js +0 -1
  41. package/dist/src/cli/commands/signup.js +0 -1
  42. package/dist/src/cli/commands/skills.js +4 -3
  43. package/dist/src/cli/commands/storage-tier.js +0 -1
  44. package/dist/src/cli/commands/sweep.js +0 -1
  45. package/dist/src/cli/commands/tasks.js +0 -1
  46. package/dist/src/cli/commands/worktree.js +10 -5
  47. package/dist/src/cli/index.js +8 -5
  48. package/dist/src/cli/opencode-sm.js +0 -1
  49. package/dist/src/cli/utils/viewer.js +0 -1
  50. package/dist/src/core/config/config-manager.js +0 -1
  51. package/dist/src/core/config/feature-flags.js +0 -1
  52. package/dist/src/core/config/storage-config.js +0 -1
  53. package/dist/src/core/config/types.js +0 -1
  54. package/dist/src/core/context/auto-context.js +0 -1
  55. package/dist/src/core/context/dual-stack-manager.js +0 -1
  56. package/dist/src/core/context/enhanced-rehydration.js +0 -2
  57. package/dist/src/core/context/frame-database.js +60 -6
  58. package/dist/src/core/context/frame-digest.js +0 -1
  59. package/dist/src/core/context/frame-handoff-manager.js +0 -1
  60. package/dist/src/core/context/frame-lifecycle-hooks.js +0 -1
  61. package/dist/src/core/context/frame-recovery.js +0 -1
  62. package/dist/src/core/context/frame-stack.js +0 -1
  63. package/dist/src/core/context/frame-types.js +0 -1
  64. package/dist/src/core/context/index.js +0 -1
  65. package/dist/src/core/context/permission-manager.js +0 -1
  66. package/dist/src/core/context/recursive-context-manager.js +3 -2
  67. package/dist/src/core/context/refactored-frame-manager.js +0 -1
  68. package/dist/src/core/context/shared-context-layer.js +0 -1
  69. package/dist/src/core/context/stack-merge-resolver.js +0 -1
  70. package/dist/src/core/context/validation.js +0 -1
  71. package/dist/src/core/database/batch-operations.js +0 -1
  72. package/dist/src/core/database/connection-pool.js +0 -1
  73. package/dist/src/core/database/database-adapter.js +0 -1
  74. package/dist/src/core/database/embedding-provider-factory.js +0 -1
  75. package/dist/src/core/database/embedding-provider.js +0 -1
  76. package/dist/src/core/database/migration-manager.js +0 -1
  77. package/dist/src/core/database/ollama-embedding-provider.js +0 -1
  78. package/dist/src/core/database/openai-embedding-provider.js +0 -1
  79. package/dist/src/core/database/query-cache.js +0 -1
  80. package/dist/src/core/database/query-router.js +0 -1
  81. package/dist/src/core/database/sqlite-adapter.js +18 -108
  82. package/dist/src/core/database/transformers-embedding-provider.js +0 -1
  83. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -1
  84. package/dist/src/core/digest/frame-digest-integration.js +0 -1
  85. package/dist/src/core/digest/hybrid-digest-generator.js +0 -1
  86. package/dist/src/core/digest/index.js +0 -1
  87. package/dist/src/core/digest/types.js +0 -1
  88. package/dist/src/core/errors/error-utils.js +0 -1
  89. package/dist/src/core/errors/index.js +0 -1
  90. package/dist/src/core/errors/recovery.js +0 -1
  91. package/dist/src/core/execution/parallel-executor.js +0 -1
  92. package/dist/src/core/extensions/custom-tools.js +0 -1
  93. package/dist/src/core/extensions/index.js +0 -1
  94. package/dist/src/core/extensions/loader.js +0 -1
  95. package/dist/src/core/extensions/plugin-system.js +0 -1
  96. package/dist/src/core/extensions/provider-adapter.js +0 -1
  97. package/dist/src/core/extensions/sandbox-runtime.js +0 -1
  98. package/dist/src/core/extensions/types.js +0 -1
  99. package/dist/src/core/frame/workflow-templates.js +0 -1
  100. package/dist/src/core/merge/conflict-detector.js +0 -1
  101. package/dist/src/core/merge/index.js +0 -1
  102. package/dist/src/core/merge/resolution-engine.js +0 -1
  103. package/dist/src/core/merge/stack-diff.js +0 -1
  104. package/dist/src/core/merge/types.js +0 -1
  105. package/dist/src/core/merge/unified-merge-resolver.js +0 -1
  106. package/dist/src/core/models/fallback-monitor.js +0 -1
  107. package/dist/src/core/models/model-router.js +0 -1
  108. package/dist/src/core/monitoring/error-handler.js +0 -1
  109. package/dist/src/core/monitoring/logger.js +0 -1
  110. package/dist/src/core/monitoring/metrics.js +0 -1
  111. package/dist/src/core/monitoring/progress-tracker.js +0 -1
  112. package/dist/src/core/monitoring/session-monitor.js +0 -1
  113. package/dist/src/core/performance/context-cache.js +0 -1
  114. package/dist/src/core/performance/index.js +0 -1
  115. package/dist/src/core/performance/lazy-context-loader.js +3 -8
  116. package/dist/src/core/performance/monitor.js +0 -1
  117. package/dist/src/core/performance/optimized-frame-context.js +0 -1
  118. package/dist/src/core/performance/performance-benchmark.js +0 -1
  119. package/dist/src/core/performance/performance-profiler.js +0 -1
  120. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -1
  121. package/dist/src/core/persistence/postgres-adapter.js +0 -1
  122. package/dist/src/core/projects/project-isolation.js +0 -1
  123. package/dist/src/core/projects/project-manager.js +0 -1
  124. package/dist/src/core/query/query-parser.js +0 -1
  125. package/dist/src/core/query/query-templates.js +0 -1
  126. package/dist/src/core/retrieval/context-retriever.js +0 -1
  127. package/dist/src/core/retrieval/index.js +0 -1
  128. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -1
  129. package/dist/src/core/retrieval/llm-provider.js +0 -1
  130. package/dist/src/core/retrieval/privacy-filter.js +0 -1
  131. package/dist/src/core/retrieval/retrieval-audit.js +0 -1
  132. package/dist/src/core/retrieval/summary-generator.js +15 -6
  133. package/dist/src/core/retrieval/types.js +0 -1
  134. package/dist/src/core/retrieval/unified-context-assembler.js +0 -1
  135. package/dist/src/core/security/index.js +0 -1
  136. package/dist/src/core/security/input-sanitizer.js +0 -1
  137. package/dist/src/core/session/clear-survival.js +0 -1
  138. package/dist/src/core/session/enhanced-handoff.js +0 -1
  139. package/dist/src/core/session/handoff-generator.js +0 -1
  140. package/dist/src/core/session/index.js +0 -1
  141. package/dist/src/core/session/session-manager.js +0 -1
  142. package/dist/src/core/skills/index.js +0 -1
  143. package/dist/src/core/skills/skill-storage.js +0 -1
  144. package/dist/src/core/skills/types.js +0 -1
  145. package/dist/src/core/storage/chromadb-adapter.js +0 -1
  146. package/dist/src/core/storage/infinite-storage.js +0 -1
  147. package/dist/src/core/storage/project-registry.js +0 -1
  148. package/dist/src/core/storage/remote-storage.js +4 -2
  149. package/dist/src/core/storage/storage-tier-manager.js +0 -1
  150. package/dist/src/core/storage/two-tier-storage.js +0 -1
  151. package/dist/src/core/trace/cli-trace-wrapper.js +0 -1
  152. package/dist/src/core/trace/db-trace-wrapper.js +0 -1
  153. package/dist/src/core/trace/debug-trace.js +0 -1
  154. package/dist/src/core/trace/index.js +0 -1
  155. package/dist/src/core/trace/linear-api-wrapper.js +0 -1
  156. package/dist/src/core/trace/trace-detector.js +0 -1
  157. package/dist/src/core/trace/trace-store.js +4 -5
  158. package/dist/src/core/trace/types.js +0 -1
  159. package/dist/src/core/types.js +0 -1
  160. package/dist/src/core/utils/async-mutex.js +0 -1
  161. package/dist/src/core/utils/compression.js +0 -1
  162. package/dist/src/core/utils/update-checker.js +0 -1
  163. package/dist/src/core/worktree/worktree-manager.js +0 -1
  164. package/dist/src/daemon/daemon-config.js +0 -1
  165. package/dist/src/daemon/services/context-service.js +0 -1
  166. package/dist/src/daemon/services/linear-service.js +0 -1
  167. package/dist/src/daemon/services/maintenance-service.js +0 -1
  168. package/dist/src/daemon/services/memory-service.js +0 -1
  169. package/dist/src/daemon/session-daemon.js +0 -1
  170. package/dist/src/daemon/unified-daemon.js +0 -1
  171. package/dist/src/features/analytics/api/analytics-api.js +0 -1
  172. package/dist/src/features/analytics/core/analytics-service.js +1 -2
  173. package/dist/src/features/analytics/index.js +0 -1
  174. package/dist/src/features/analytics/queries/metrics-queries.js +8 -9
  175. package/dist/src/features/analytics/types/metrics.js +0 -1
  176. package/dist/src/features/browser/browser-mcp.js +0 -1
  177. package/dist/src/features/sweep/index.js +0 -1
  178. package/dist/src/features/sweep/prediction-client.js +0 -1
  179. package/dist/src/features/sweep/prompt-builder.js +0 -1
  180. package/dist/src/features/sweep/pty-wrapper.js +0 -1
  181. package/dist/src/features/sweep/state-watcher.js +0 -1
  182. package/dist/src/features/sweep/status-bar.js +0 -1
  183. package/dist/src/features/sweep/sweep-server-manager.js +0 -1
  184. package/dist/src/features/sweep/tab-interceptor.js +0 -1
  185. package/dist/src/features/sweep/types.js +0 -1
  186. package/dist/src/features/tasks/linear-task-manager.js +0 -1
  187. package/dist/src/features/tasks/task-aware-context.js +0 -1
  188. package/dist/src/features/tui/simple-monitor.js +0 -1
  189. package/dist/src/features/tui/swarm-monitor.js +0 -1
  190. package/dist/src/features/web/client/stores/task-store.js +0 -1
  191. package/dist/src/features/web/server/index.js +0 -1
  192. package/dist/src/features/workers/tmux-manager.js +0 -1
  193. package/dist/src/features/workers/worker-registry.js +0 -1
  194. package/dist/src/hooks/auto-background.js +0 -1
  195. package/dist/src/hooks/config.js +0 -1
  196. package/dist/src/hooks/daemon.js +0 -1
  197. package/dist/src/hooks/diffmem-hooks.js +0 -1
  198. package/dist/src/hooks/events.js +0 -1
  199. package/dist/src/hooks/index.js +0 -1
  200. package/dist/src/hooks/linear-task-picker.js +0 -1
  201. package/dist/src/hooks/schemas.js +0 -1
  202. package/dist/src/hooks/secure-fs.js +0 -1
  203. package/dist/src/hooks/security-logger.js +0 -1
  204. package/dist/src/hooks/session-summary.js +0 -1
  205. package/dist/src/index.js +0 -1
  206. package/dist/src/integrations/anthropic/client.js +0 -1
  207. package/dist/src/integrations/claude-code/agent-bridge.js +0 -1
  208. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +0 -1
  209. package/dist/src/integrations/claude-code/lifecycle-hooks.js +0 -1
  210. package/dist/src/integrations/claude-code/post-task-hooks.js +0 -1
  211. package/dist/src/integrations/claude-code/subagent-client-stub.js +0 -1
  212. package/dist/src/integrations/claude-code/subagent-client.js +0 -1
  213. package/dist/src/integrations/claude-code/task-coordinator.js +0 -1
  214. package/dist/src/integrations/diffmem/client.js +0 -1
  215. package/dist/src/integrations/diffmem/config.js +0 -1
  216. package/dist/src/integrations/diffmem/index.js +0 -1
  217. package/dist/src/integrations/diffmem/types.js +0 -1
  218. package/dist/src/integrations/linear/auth.js +0 -1
  219. package/dist/src/integrations/linear/auto-sync.js +0 -1
  220. package/dist/src/integrations/linear/client.js +0 -1
  221. package/dist/src/integrations/linear/config.js +0 -1
  222. package/dist/src/integrations/linear/migration.js +0 -1
  223. package/dist/src/integrations/linear/oauth-server.js +0 -1
  224. package/dist/src/integrations/linear/rest-client.js +0 -1
  225. package/dist/src/integrations/linear/sync-manager.js +0 -1
  226. package/dist/src/integrations/linear/sync-service.js +0 -1
  227. package/dist/src/integrations/linear/sync.js +0 -1
  228. package/dist/src/integrations/linear/types.js +0 -1
  229. package/dist/src/integrations/linear/unified-sync.js +0 -1
  230. package/dist/src/integrations/linear/webhook-handler.js +0 -1
  231. package/dist/src/integrations/linear/webhook-server.js +0 -1
  232. package/dist/src/integrations/linear/webhook.js +0 -1
  233. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +0 -1
  234. package/dist/src/integrations/mcp/handlers/context-handlers.js +43 -30
  235. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js +0 -1
  236. package/dist/src/integrations/mcp/handlers/discovery-handlers.js +0 -1
  237. package/dist/src/integrations/mcp/handlers/index.js +1 -3
  238. package/dist/src/integrations/mcp/handlers/linear-handlers.js +24 -61
  239. package/dist/src/integrations/mcp/handlers/skill-handlers.js +0 -1
  240. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -1
  241. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -1
  242. package/dist/src/integrations/mcp/index.js +0 -1
  243. package/dist/src/integrations/mcp/middleware/tool-scoring.js +3 -2
  244. package/dist/src/integrations/mcp/pending-utils.js +0 -1
  245. package/dist/src/integrations/mcp/refactored-server.js +0 -1
  246. package/dist/src/integrations/mcp/remote-server.js +0 -1
  247. package/dist/src/integrations/mcp/schemas.js +0 -1
  248. package/dist/src/integrations/mcp/server.js +20 -24
  249. package/dist/src/integrations/mcp/tool-definitions-code.js +0 -1
  250. package/dist/src/integrations/mcp/tool-definitions.js +0 -1
  251. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -1
  252. package/dist/src/integrations/ralph/context/context-budget-manager.js +0 -1
  253. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +0 -1
  254. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +0 -1
  255. package/dist/src/integrations/ralph/index.js +0 -1
  256. package/dist/src/integrations/ralph/learning/pattern-learner.js +0 -1
  257. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +5 -5
  258. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +0 -1
  259. package/dist/src/integrations/ralph/monitoring/swarm-registry.js +0 -1
  260. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -1
  261. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -1
  262. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +0 -1
  263. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +0 -1
  264. package/dist/src/integrations/ralph/performance/performance-optimizer.js +0 -1
  265. package/dist/src/integrations/ralph/recovery/crash-recovery.js +0 -1
  266. package/dist/src/integrations/ralph/state/state-reconciler.js +25 -9
  267. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +0 -1
  268. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +0 -1
  269. package/dist/src/integrations/ralph/types.js +0 -1
  270. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +0 -1
  271. package/dist/src/mcp/stackmemory-mcp-server.js +0 -1
  272. package/dist/src/middleware/exponential-rate-limiter.js +0 -1
  273. package/dist/src/models/user.model.js +0 -1
  274. package/dist/src/orchestrators/multimodal/constants.js +0 -1
  275. package/dist/src/orchestrators/multimodal/harness.js +0 -1
  276. package/dist/src/orchestrators/multimodal/providers.js +0 -1
  277. package/dist/src/orchestrators/multimodal/types.js +0 -1
  278. package/dist/src/orchestrators/multimodal/utils.js +0 -1
  279. package/dist/src/servers/production/auth-middleware.js +0 -1
  280. package/dist/src/services/config-service.js +0 -1
  281. package/dist/src/services/context-service.js +0 -1
  282. package/dist/src/skills/api-discovery.js +0 -1
  283. package/dist/src/skills/api-skill.js +0 -1
  284. package/dist/src/skills/claude-skills.js +0 -1
  285. package/dist/src/skills/dashboard-launcher.js +0 -1
  286. package/dist/src/skills/linear-task-runner.js +0 -1
  287. package/dist/src/skills/recursive-agent-orchestrator.js +0 -1
  288. package/dist/src/skills/repo-ingestion-skill.js +0 -1
  289. package/dist/src/skills/spec-generator-skill.js +0 -1
  290. package/dist/src/skills/unified-rlm-orchestrator.js +0 -1
  291. package/dist/src/types/task.js +0 -1
  292. package/dist/src/utils/env.js +0 -1
  293. package/dist/src/utils/formatting.js +0 -1
  294. package/dist/src/utils/process-cleanup.js +0 -1
  295. package/package.json +32 -7
  296. package/dist/scripts/benchmark-performance.js +0 -48
  297. package/dist/scripts/benchmark-performance.js.map +0 -7
  298. package/dist/scripts/check-redis.js +0 -42
  299. package/dist/scripts/check-redis.js.map +0 -7
  300. package/dist/scripts/initialize.js +0 -183
  301. package/dist/scripts/initialize.js.map +0 -7
  302. package/dist/scripts/list-linear-tasks.js +0 -124
  303. package/dist/scripts/list-linear-tasks.js.map +0 -7
  304. package/dist/scripts/measure-handoff-impact.js +0 -340
  305. package/dist/scripts/measure-handoff-impact.js.map +0 -7
  306. package/dist/scripts/query-chromadb.js +0 -160
  307. package/dist/scripts/query-chromadb.js.map +0 -7
  308. package/dist/scripts/show-linear-summary.js +0 -119
  309. package/dist/scripts/show-linear-summary.js.map +0 -7
  310. package/dist/scripts/simple-swarm-demo.js +0 -90
  311. package/dist/scripts/simple-swarm-demo.js.map +0 -7
  312. package/dist/scripts/status.js +0 -155
  313. package/dist/scripts/status.js.map +0 -7
  314. package/dist/scripts/test-chromadb-sync.js +0 -192
  315. package/dist/scripts/test-chromadb-sync.js.map +0 -7
  316. package/dist/scripts/test-ralph-iteration-fix.js +0 -86
  317. package/dist/scripts/test-ralph-iteration-fix.js.map +0 -7
  318. package/dist/scripts/test-ralph-iterations.js +0 -121
  319. package/dist/scripts/test-ralph-iterations.js.map +0 -7
  320. package/dist/scripts/test-redis-storage.js +0 -389
  321. package/dist/scripts/test-redis-storage.js.map +0 -7
  322. package/dist/scripts/test-simple-ralph-state-sync.js +0 -115
  323. package/dist/scripts/test-simple-ralph-state-sync.js.map +0 -7
  324. package/dist/scripts/test-swarm-fixes.js +0 -125
  325. package/dist/scripts/test-swarm-fixes.js.map +0 -7
  326. package/dist/scripts/test-swarm-tui.js +0 -23
  327. package/dist/scripts/test-swarm-tui.js.map +0 -7
  328. package/dist/scripts/test-tui-shortcuts.js +0 -52
  329. package/dist/scripts/test-tui-shortcuts.js.map +0 -7
  330. package/dist/scripts/validate-tui-shortcuts.js +0 -60
  331. package/dist/scripts/validate-tui-shortcuts.js.map +0 -7
  332. package/dist/src/agents/core/agent-task-manager.js.map +0 -7
  333. package/dist/src/agents/verifiers/base-verifier.js.map +0 -7
  334. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -7
  335. package/dist/src/agents/verifiers/llm-judge.js.map +0 -7
  336. package/dist/src/cli/auto-detect.js.map +0 -7
  337. package/dist/src/cli/claude-sm-danger.js.map +0 -7
  338. package/dist/src/cli/claude-sm.js.map +0 -7
  339. package/dist/src/cli/codex-sm-danger.js.map +0 -7
  340. package/dist/src/cli/codex-sm.js.map +0 -7
  341. package/dist/src/cli/commands/api.js.map +0 -7
  342. package/dist/src/cli/commands/auto-background.js.map +0 -7
  343. package/dist/src/cli/commands/cleanup-processes.js.map +0 -7
  344. package/dist/src/cli/commands/clear.js.map +0 -7
  345. package/dist/src/cli/commands/config.js.map +0 -7
  346. package/dist/src/cli/commands/context-rehydrate.js.map +0 -7
  347. package/dist/src/cli/commands/context.js.map +0 -7
  348. package/dist/src/cli/commands/daemon.js.map +0 -7
  349. package/dist/src/cli/commands/dashboard.js.map +0 -7
  350. package/dist/src/cli/commands/db.js.map +0 -7
  351. package/dist/src/cli/commands/decision.js.map +0 -7
  352. package/dist/src/cli/commands/discovery.js.map +0 -7
  353. package/dist/src/cli/commands/handoff.js.map +0 -7
  354. package/dist/src/cli/commands/hooks.js.map +0 -7
  355. package/dist/src/cli/commands/linear.js.map +0 -7
  356. package/dist/src/cli/commands/log.js.map +0 -7
  357. package/dist/src/cli/commands/login.js.map +0 -7
  358. package/dist/src/cli/commands/migrate.js.map +0 -7
  359. package/dist/src/cli/commands/model.js.map +0 -7
  360. package/dist/src/cli/commands/onboard.js.map +0 -7
  361. package/dist/src/cli/commands/ping.js.map +0 -7
  362. package/dist/src/cli/commands/projects.js.map +0 -7
  363. package/dist/src/cli/commands/ralph.js.map +0 -7
  364. package/dist/src/cli/commands/retrieval.js.map +0 -7
  365. package/dist/src/cli/commands/search.js.map +0 -7
  366. package/dist/src/cli/commands/service.js.map +0 -7
  367. package/dist/src/cli/commands/session.js.map +0 -7
  368. package/dist/src/cli/commands/settings.js +0 -306
  369. package/dist/src/cli/commands/settings.js.map +0 -7
  370. package/dist/src/cli/commands/setup.js.map +0 -7
  371. package/dist/src/cli/commands/shell.js.map +0 -7
  372. package/dist/src/cli/commands/signup.js.map +0 -7
  373. package/dist/src/cli/commands/skills.js.map +0 -7
  374. package/dist/src/cli/commands/sms-notify.js +0 -795
  375. package/dist/src/cli/commands/sms-notify.js.map +0 -7
  376. package/dist/src/cli/commands/storage-tier.js.map +0 -7
  377. package/dist/src/cli/commands/sweep.js.map +0 -7
  378. package/dist/src/cli/commands/tasks.js.map +0 -7
  379. package/dist/src/cli/commands/worktree.js.map +0 -7
  380. package/dist/src/cli/index.js.map +0 -7
  381. package/dist/src/cli/opencode-sm.js.map +0 -7
  382. package/dist/src/cli/utils/viewer.js.map +0 -7
  383. package/dist/src/core/config/config-manager.js.map +0 -7
  384. package/dist/src/core/config/feature-flags.js.map +0 -7
  385. package/dist/src/core/config/storage-config.js.map +0 -7
  386. package/dist/src/core/config/types.js.map +0 -7
  387. package/dist/src/core/context/auto-context.js.map +0 -7
  388. package/dist/src/core/context/dual-stack-manager.js.map +0 -7
  389. package/dist/src/core/context/enhanced-rehydration.js.map +0 -7
  390. package/dist/src/core/context/frame-database.js.map +0 -7
  391. package/dist/src/core/context/frame-digest.js.map +0 -7
  392. package/dist/src/core/context/frame-handoff-manager.js.map +0 -7
  393. package/dist/src/core/context/frame-lifecycle-hooks.js.map +0 -7
  394. package/dist/src/core/context/frame-recovery.js.map +0 -7
  395. package/dist/src/core/context/frame-stack.js.map +0 -7
  396. package/dist/src/core/context/frame-types.js.map +0 -7
  397. package/dist/src/core/context/index.js.map +0 -7
  398. package/dist/src/core/context/permission-manager.js.map +0 -7
  399. package/dist/src/core/context/recursive-context-manager.js.map +0 -7
  400. package/dist/src/core/context/refactored-frame-manager.js.map +0 -7
  401. package/dist/src/core/context/shared-context-layer.js.map +0 -7
  402. package/dist/src/core/context/stack-merge-resolver.js.map +0 -7
  403. package/dist/src/core/context/validation.js.map +0 -7
  404. package/dist/src/core/database/batch-operations.js.map +0 -7
  405. package/dist/src/core/database/connection-pool.js.map +0 -7
  406. package/dist/src/core/database/database-adapter.js.map +0 -7
  407. package/dist/src/core/database/embedding-provider-factory.js.map +0 -7
  408. package/dist/src/core/database/embedding-provider.js.map +0 -7
  409. package/dist/src/core/database/migration-manager.js.map +0 -7
  410. package/dist/src/core/database/ollama-embedding-provider.js.map +0 -7
  411. package/dist/src/core/database/openai-embedding-provider.js.map +0 -7
  412. package/dist/src/core/database/query-cache.js.map +0 -7
  413. package/dist/src/core/database/query-router.js.map +0 -7
  414. package/dist/src/core/database/sqlite-adapter.js.map +0 -7
  415. package/dist/src/core/database/transformers-embedding-provider.js.map +0 -7
  416. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -7
  417. package/dist/src/core/digest/frame-digest-integration.js.map +0 -7
  418. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -7
  419. package/dist/src/core/digest/index.js.map +0 -7
  420. package/dist/src/core/digest/types.js.map +0 -7
  421. package/dist/src/core/errors/error-utils.js.map +0 -7
  422. package/dist/src/core/errors/index.js.map +0 -7
  423. package/dist/src/core/errors/recovery.js.map +0 -7
  424. package/dist/src/core/execution/parallel-executor.js.map +0 -7
  425. package/dist/src/core/extensions/custom-tools.js.map +0 -7
  426. package/dist/src/core/extensions/index.js.map +0 -7
  427. package/dist/src/core/extensions/loader.js.map +0 -7
  428. package/dist/src/core/extensions/plugin-system.js.map +0 -7
  429. package/dist/src/core/extensions/provider-adapter.js.map +0 -7
  430. package/dist/src/core/extensions/sandbox-runtime.js.map +0 -7
  431. package/dist/src/core/extensions/types.js.map +0 -7
  432. package/dist/src/core/frame/workflow-templates.js.map +0 -7
  433. package/dist/src/core/merge/conflict-detector.js.map +0 -7
  434. package/dist/src/core/merge/index.js.map +0 -7
  435. package/dist/src/core/merge/resolution-engine.js.map +0 -7
  436. package/dist/src/core/merge/stack-diff.js.map +0 -7
  437. package/dist/src/core/merge/types.js.map +0 -7
  438. package/dist/src/core/merge/unified-merge-resolver.js.map +0 -7
  439. package/dist/src/core/models/fallback-monitor.js.map +0 -7
  440. package/dist/src/core/models/model-router.js.map +0 -7
  441. package/dist/src/core/monitoring/error-handler.js.map +0 -7
  442. package/dist/src/core/monitoring/logger.js.map +0 -7
  443. package/dist/src/core/monitoring/metrics.js.map +0 -7
  444. package/dist/src/core/monitoring/progress-tracker.js.map +0 -7
  445. package/dist/src/core/monitoring/session-monitor.js.map +0 -7
  446. package/dist/src/core/performance/context-cache.js.map +0 -7
  447. package/dist/src/core/performance/index.js.map +0 -7
  448. package/dist/src/core/performance/lazy-context-loader.js.map +0 -7
  449. package/dist/src/core/performance/monitor.js.map +0 -7
  450. package/dist/src/core/performance/optimized-frame-context.js.map +0 -7
  451. package/dist/src/core/performance/performance-benchmark.js.map +0 -7
  452. package/dist/src/core/performance/performance-profiler.js.map +0 -7
  453. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -7
  454. package/dist/src/core/persistence/postgres-adapter.js.map +0 -7
  455. package/dist/src/core/projects/project-isolation.js.map +0 -7
  456. package/dist/src/core/projects/project-manager.js.map +0 -7
  457. package/dist/src/core/query/query-parser.js.map +0 -7
  458. package/dist/src/core/query/query-templates.js.map +0 -7
  459. package/dist/src/core/retrieval/context-retriever.js.map +0 -7
  460. package/dist/src/core/retrieval/index.js.map +0 -7
  461. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -7
  462. package/dist/src/core/retrieval/llm-provider.js.map +0 -7
  463. package/dist/src/core/retrieval/privacy-filter.js.map +0 -7
  464. package/dist/src/core/retrieval/retrieval-audit.js.map +0 -7
  465. package/dist/src/core/retrieval/summary-generator.js.map +0 -7
  466. package/dist/src/core/retrieval/types.js.map +0 -7
  467. package/dist/src/core/retrieval/unified-context-assembler.js.map +0 -7
  468. package/dist/src/core/security/index.js.map +0 -7
  469. package/dist/src/core/security/input-sanitizer.js.map +0 -7
  470. package/dist/src/core/session/clear-survival.js.map +0 -7
  471. package/dist/src/core/session/enhanced-handoff.js.map +0 -7
  472. package/dist/src/core/session/handoff-generator.js.map +0 -7
  473. package/dist/src/core/session/index.js.map +0 -7
  474. package/dist/src/core/session/session-manager.js.map +0 -7
  475. package/dist/src/core/skills/index.js.map +0 -7
  476. package/dist/src/core/skills/skill-storage.js.map +0 -7
  477. package/dist/src/core/skills/types.js.map +0 -7
  478. package/dist/src/core/storage/chromadb-adapter.js.map +0 -7
  479. package/dist/src/core/storage/infinite-storage.js.map +0 -7
  480. package/dist/src/core/storage/project-registry.js.map +0 -7
  481. package/dist/src/core/storage/remote-storage.js.map +0 -7
  482. package/dist/src/core/storage/storage-tier-manager.js.map +0 -7
  483. package/dist/src/core/storage/two-tier-storage.js.map +0 -7
  484. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -7
  485. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -7
  486. package/dist/src/core/trace/debug-trace.js.map +0 -7
  487. package/dist/src/core/trace/index.js.map +0 -7
  488. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -7
  489. package/dist/src/core/trace/trace-detector.js.map +0 -7
  490. package/dist/src/core/trace/trace-store.js.map +0 -7
  491. package/dist/src/core/trace/types.js.map +0 -7
  492. package/dist/src/core/types.js.map +0 -7
  493. package/dist/src/core/utils/async-mutex.js.map +0 -7
  494. package/dist/src/core/utils/compression.js.map +0 -7
  495. package/dist/src/core/utils/update-checker.js.map +0 -7
  496. package/dist/src/core/worktree/worktree-manager.js.map +0 -7
  497. package/dist/src/daemon/daemon-config.js.map +0 -7
  498. package/dist/src/daemon/services/context-service.js.map +0 -7
  499. package/dist/src/daemon/services/linear-service.js.map +0 -7
  500. package/dist/src/daemon/services/maintenance-service.js.map +0 -7
  501. package/dist/src/daemon/services/memory-service.js.map +0 -7
  502. package/dist/src/daemon/session-daemon.js.map +0 -7
  503. package/dist/src/daemon/unified-daemon.js.map +0 -7
  504. package/dist/src/features/analytics/api/analytics-api.js.map +0 -7
  505. package/dist/src/features/analytics/core/analytics-service.js.map +0 -7
  506. package/dist/src/features/analytics/index.js.map +0 -7
  507. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -7
  508. package/dist/src/features/analytics/types/metrics.js.map +0 -7
  509. package/dist/src/features/browser/browser-mcp.js.map +0 -7
  510. package/dist/src/features/sweep/index.js.map +0 -7
  511. package/dist/src/features/sweep/prediction-client.js.map +0 -7
  512. package/dist/src/features/sweep/prompt-builder.js.map +0 -7
  513. package/dist/src/features/sweep/pty-wrapper.js.map +0 -7
  514. package/dist/src/features/sweep/state-watcher.js.map +0 -7
  515. package/dist/src/features/sweep/status-bar.js.map +0 -7
  516. package/dist/src/features/sweep/sweep-server-manager.js.map +0 -7
  517. package/dist/src/features/sweep/tab-interceptor.js.map +0 -7
  518. package/dist/src/features/sweep/types.js.map +0 -7
  519. package/dist/src/features/tasks/linear-task-manager.js.map +0 -7
  520. package/dist/src/features/tasks/task-aware-context.js.map +0 -7
  521. package/dist/src/features/tui/simple-monitor.js.map +0 -7
  522. package/dist/src/features/tui/swarm-monitor.js.map +0 -7
  523. package/dist/src/features/web/client/stores/task-store.js.map +0 -7
  524. package/dist/src/features/web/server/index.js.map +0 -7
  525. package/dist/src/features/workers/tmux-manager.js.map +0 -7
  526. package/dist/src/features/workers/worker-registry.js.map +0 -7
  527. package/dist/src/hooks/auto-background.js.map +0 -7
  528. package/dist/src/hooks/claude-code-whatsapp-hook.js +0 -197
  529. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +0 -7
  530. package/dist/src/hooks/config.js.map +0 -7
  531. package/dist/src/hooks/daemon.js.map +0 -7
  532. package/dist/src/hooks/diffmem-hooks.js.map +0 -7
  533. package/dist/src/hooks/events.js.map +0 -7
  534. package/dist/src/hooks/index.js.map +0 -7
  535. package/dist/src/hooks/linear-task-picker.js.map +0 -7
  536. package/dist/src/hooks/schemas.js.map +0 -7
  537. package/dist/src/hooks/secure-fs.js.map +0 -7
  538. package/dist/src/hooks/security-logger.js.map +0 -7
  539. package/dist/src/hooks/session-summary.js.map +0 -7
  540. package/dist/src/hooks/sms-action-runner.js +0 -371
  541. package/dist/src/hooks/sms-action-runner.js.map +0 -7
  542. package/dist/src/hooks/sms-notify.js +0 -506
  543. package/dist/src/hooks/sms-notify.js.map +0 -7
  544. package/dist/src/hooks/sms-watcher.js +0 -93
  545. package/dist/src/hooks/sms-watcher.js.map +0 -7
  546. package/dist/src/hooks/sms-webhook.js +0 -555
  547. package/dist/src/hooks/sms-webhook.js.map +0 -7
  548. package/dist/src/hooks/whatsapp-commands.js +0 -479
  549. package/dist/src/hooks/whatsapp-commands.js.map +0 -7
  550. package/dist/src/hooks/whatsapp-scheduler.js +0 -317
  551. package/dist/src/hooks/whatsapp-scheduler.js.map +0 -7
  552. package/dist/src/hooks/whatsapp-sync.js +0 -409
  553. package/dist/src/hooks/whatsapp-sync.js.map +0 -7
  554. package/dist/src/index.js.map +0 -7
  555. package/dist/src/integrations/anthropic/client.js.map +0 -7
  556. package/dist/src/integrations/claude-code/agent-bridge.js.map +0 -7
  557. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  558. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  559. package/dist/src/integrations/claude-code/post-task-hooks.js.map +0 -7
  560. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +0 -7
  561. package/dist/src/integrations/claude-code/subagent-client.js.map +0 -7
  562. package/dist/src/integrations/claude-code/task-coordinator.js.map +0 -7
  563. package/dist/src/integrations/diffmem/client.js.map +0 -7
  564. package/dist/src/integrations/diffmem/config.js.map +0 -7
  565. package/dist/src/integrations/diffmem/index.js.map +0 -7
  566. package/dist/src/integrations/diffmem/types.js.map +0 -7
  567. package/dist/src/integrations/linear/auth.js.map +0 -7
  568. package/dist/src/integrations/linear/auto-sync.js.map +0 -7
  569. package/dist/src/integrations/linear/client.js.map +0 -7
  570. package/dist/src/integrations/linear/config.js.map +0 -7
  571. package/dist/src/integrations/linear/migration.js.map +0 -7
  572. package/dist/src/integrations/linear/oauth-server.js.map +0 -7
  573. package/dist/src/integrations/linear/rest-client.js.map +0 -7
  574. package/dist/src/integrations/linear/sync-manager.js.map +0 -7
  575. package/dist/src/integrations/linear/sync-service.js.map +0 -7
  576. package/dist/src/integrations/linear/sync.js.map +0 -7
  577. package/dist/src/integrations/linear/types.js.map +0 -7
  578. package/dist/src/integrations/linear/unified-sync.js.map +0 -7
  579. package/dist/src/integrations/linear/webhook-handler.js.map +0 -7
  580. package/dist/src/integrations/linear/webhook-server.js.map +0 -7
  581. package/dist/src/integrations/linear/webhook.js.map +0 -7
  582. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  583. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -7
  584. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js.map +0 -7
  585. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  586. package/dist/src/integrations/mcp/handlers/index.js.map +0 -7
  587. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  588. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  589. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -7
  590. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  591. package/dist/src/integrations/mcp/index.js.map +0 -7
  592. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  593. package/dist/src/integrations/mcp/pending-utils.js.map +0 -7
  594. package/dist/src/integrations/mcp/refactored-server.js.map +0 -7
  595. package/dist/src/integrations/mcp/remote-server.js.map +0 -7
  596. package/dist/src/integrations/mcp/schemas.js.map +0 -7
  597. package/dist/src/integrations/mcp/server.js.map +0 -7
  598. package/dist/src/integrations/mcp/tool-definitions-code.js.map +0 -7
  599. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -7
  600. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  601. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +0 -7
  602. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  603. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  604. package/dist/src/integrations/ralph/index.js.map +0 -7
  605. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +0 -7
  606. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  607. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  608. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  609. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  610. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  611. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  612. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  613. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  614. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  615. package/dist/src/integrations/ralph/state/state-reconciler.js.map +0 -7
  616. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  617. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  618. package/dist/src/integrations/ralph/types.js.map +0 -7
  619. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  620. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -7
  621. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -7
  622. package/dist/src/models/user.model.js.map +0 -7
  623. package/dist/src/orchestrators/multimodal/constants.js.map +0 -7
  624. package/dist/src/orchestrators/multimodal/harness.js.map +0 -7
  625. package/dist/src/orchestrators/multimodal/providers.js.map +0 -7
  626. package/dist/src/orchestrators/multimodal/types.js.map +0 -7
  627. package/dist/src/orchestrators/multimodal/utils.js.map +0 -7
  628. package/dist/src/servers/production/auth-middleware.js.map +0 -7
  629. package/dist/src/services/config-service.js.map +0 -7
  630. package/dist/src/services/context-service.js.map +0 -7
  631. package/dist/src/skills/api-discovery.js.map +0 -7
  632. package/dist/src/skills/api-skill.js.map +0 -7
  633. package/dist/src/skills/claude-skills.js.map +0 -7
  634. package/dist/src/skills/dashboard-launcher.js.map +0 -7
  635. package/dist/src/skills/linear-task-runner.js.map +0 -7
  636. package/dist/src/skills/recursive-agent-orchestrator.js.map +0 -7
  637. package/dist/src/skills/repo-ingestion-skill.js.map +0 -7
  638. package/dist/src/skills/spec-generator-skill.js.map +0 -7
  639. package/dist/src/skills/unified-rlm-orchestrator.js.map +0 -7
  640. package/dist/src/types/task.js.map +0 -7
  641. package/dist/src/utils/env.js.map +0 -7
  642. package/dist/src/utils/formatting.js.map +0 -7
  643. package/dist/src/utils/process-cleanup.js.map +0 -7
  644. package/scripts/README-TESTING.md +0 -186
  645. package/scripts/analyze-cli-security.js +0 -288
  646. package/scripts/archive/add-phase-tasks-to-linear.js +0 -163
  647. package/scripts/archive/analyze-linear-duplicates.js +0 -214
  648. package/scripts/archive/analyze-remaining-duplicates.js +0 -230
  649. package/scripts/archive/analyze-sta-duplicates.js +0 -292
  650. package/scripts/archive/analyze-sta-graphql.js +0 -399
  651. package/scripts/archive/cancel-duplicate-tasks.ts +0 -246
  652. package/scripts/archive/check-all-duplicates.ts +0 -419
  653. package/scripts/archive/clean-duplicate-tasks.js +0 -114
  654. package/scripts/archive/cleanup-duplicate-tasks.ts +0 -286
  655. package/scripts/archive/create-phase-tasks.js +0 -387
  656. package/scripts/archive/delete-linear-duplicates.js +0 -182
  657. package/scripts/archive/delete-remaining-duplicates.js +0 -158
  658. package/scripts/archive/delete-sta-duplicates.js +0 -201
  659. package/scripts/archive/delete-sta-oauth.js +0 -201
  660. package/scripts/archive/export-sta-tasks.js +0 -62
  661. package/scripts/archive/install-auto-sync.js +0 -266
  662. package/scripts/archive/install-chromadb-hooks.sh +0 -133
  663. package/scripts/archive/install-enhanced-clear-hooks.sh +0 -431
  664. package/scripts/archive/install-post-task-hooks.sh +0 -289
  665. package/scripts/archive/install-stackmemory-hooks.sh +0 -420
  666. package/scripts/archive/merge-linear-duplicates-safe.ts +0 -362
  667. package/scripts/archive/merge-linear-duplicates.ts +0 -182
  668. package/scripts/archive/remove-sta-tasks.js +0 -70
  669. package/scripts/archive/setup-background-sync.sh +0 -168
  670. package/scripts/archive/setup-claude-auto-triggers.sh +0 -181
  671. package/scripts/archive/setup-claude-autostart.sh +0 -305
  672. package/scripts/archive/setup-git-hooks.sh +0 -25
  673. package/scripts/archive/setup-linear-oauth.sh +0 -46
  674. package/scripts/archive/setup-mcp.sh +0 -113
  675. package/scripts/archive/setup-railway-deployment.sh +0 -81
  676. package/scripts/auto-handoff.sh +0 -262
  677. package/scripts/background-sync-manager.js +0 -478
  678. package/scripts/benchmark-performance.ts +0 -57
  679. package/scripts/check-redis.ts +0 -48
  680. package/scripts/chromadb-auto-loader.sh +0 -128
  681. package/scripts/chromadb-context-loader.js +0 -479
  682. package/scripts/claude-chromadb-hook.js +0 -460
  683. package/scripts/claude-linear-skill.js +0 -455
  684. package/scripts/claude-pre-commit.sh +0 -302
  685. package/scripts/claude-sm-autostart.js +0 -579
  686. package/scripts/claude-with-chromadb.sh +0 -69
  687. package/scripts/clean-linear-backlog.js +0 -273
  688. package/scripts/cleanup-old-sessions.sh +0 -57
  689. package/scripts/create-cleanup-issues.js +0 -302
  690. package/scripts/create-sandbox.sh +0 -269
  691. package/scripts/debug-linear-update.js +0 -174
  692. package/scripts/delete-linear-tasks.js +0 -167
  693. package/scripts/demos/browser-test.ts +0 -39
  694. package/scripts/demos/ralph-integration-demo.ts +0 -245
  695. package/scripts/demos/trace-demo.ts +0 -200
  696. package/scripts/demos/trace-detector.demo.ts +0 -171
  697. package/scripts/demos/trace-test.ts +0 -79
  698. package/scripts/deploy-ralph-swarm.sh +0 -365
  699. package/scripts/deploy.sh +0 -89
  700. package/scripts/deployment/test-deployment.js +0 -194
  701. package/scripts/detect-and-rehydrate.js +0 -162
  702. package/scripts/detect-and-rehydrate.mjs +0 -165
  703. package/scripts/development/create-demo-tasks.js +0 -143
  704. package/scripts/development/debug-frame-test.js +0 -16
  705. package/scripts/development/demo-auto-sync.js +0 -128
  706. package/scripts/development/fix-all-imports.js +0 -213
  707. package/scripts/development/fix-imports.js +0 -229
  708. package/scripts/development/fix-lint-loop.cjs +0 -103
  709. package/scripts/development/fix-project-id.ts +0 -161
  710. package/scripts/development/fix-strict-mode-issues.ts +0 -291
  711. package/scripts/development/reorganize-structure.sh +0 -228
  712. package/scripts/development/test-persistence-direct.js +0 -148
  713. package/scripts/development/test-persistence.js +0 -114
  714. package/scripts/development/test-tasks.js +0 -93
  715. package/scripts/development/update-imports.js +0 -212
  716. package/scripts/fetch-linear-status.js +0 -125
  717. package/scripts/initialize.ts +0 -220
  718. package/scripts/linear-auto-sync.js +0 -262
  719. package/scripts/linear-auto-sync.sh +0 -161
  720. package/scripts/linear-sync-daemon.js +0 -150
  721. package/scripts/linear-task-review.js +0 -237
  722. package/scripts/list-linear-tasks.ts +0 -178
  723. package/scripts/mcp-proxy.js +0 -66
  724. package/scripts/measure-handoff-impact.mjs +0 -395
  725. package/scripts/measure-handoff-impact.ts +0 -450
  726. package/scripts/publish-local.js +0 -74
  727. package/scripts/query-chromadb.ts +0 -201
  728. package/scripts/ralph-integration-test.js +0 -274
  729. package/scripts/reconcile-local-tasks.js +0 -170
  730. package/scripts/recreate-frames-db.js +0 -89
  731. package/scripts/show-linear-summary.ts +0 -172
  732. package/scripts/simple-swarm-demo.ts +0 -114
  733. package/scripts/stackmemory-auto-handoff.sh +0 -231
  734. package/scripts/start-linear-sync-daemon.sh +0 -141
  735. package/scripts/start-temporal-paradox.sh +0 -214
  736. package/scripts/status.ts +0 -224
  737. package/scripts/stop-notify-webhook.sh +0 -19
  738. package/scripts/swarm-monitor.js +0 -509
  739. package/scripts/sync-and-clean-tasks.js +0 -258
  740. package/scripts/sync-linear-graphql.js +0 -303
  741. package/scripts/sync-linear-tasks.js +0 -186
  742. package/scripts/test-auto-triggers.sh +0 -57
  743. package/scripts/test-browser-mcp.js +0 -74
  744. package/scripts/test-chromadb-full.js +0 -115
  745. package/scripts/test-chromadb-hooks.sh +0 -28
  746. package/scripts/test-chromadb-sync.ts +0 -245
  747. package/scripts/test-claude-config.sh +0 -123
  748. package/scripts/test-cli-security.js +0 -293
  749. package/scripts/test-code-execution.js +0 -143
  750. package/scripts/test-hooks-persistence.sh +0 -220
  751. package/scripts/test-installation-scenarios.sh +0 -359
  752. package/scripts/test-installation.sh +0 -224
  753. package/scripts/test-mcp.js +0 -163
  754. package/scripts/test-parallel-swarms.js +0 -443
  755. package/scripts/test-pre-publish-quick.sh +0 -69
  756. package/scripts/test-quality-gates.sh +0 -263
  757. package/scripts/test-ralph-iteration-fix.ts +0 -118
  758. package/scripts/test-ralph-iterations.ts +0 -164
  759. package/scripts/test-redis-storage.ts +0 -490
  760. package/scripts/test-rlm-basic.sh +0 -122
  761. package/scripts/test-rlm-comprehensive.sh +0 -260
  762. package/scripts/test-rlm-e2e.sh +0 -268
  763. package/scripts/test-rlm-simple.js +0 -90
  764. package/scripts/test-rlm.js +0 -110
  765. package/scripts/test-session-handoff.sh +0 -165
  766. package/scripts/test-setup-e2e.sh +0 -154
  767. package/scripts/test-shell-integration.sh +0 -275
  768. package/scripts/test-simple-ralph-state-sync.ts +0 -178
  769. package/scripts/test-swarm-fixes.ts +0 -161
  770. package/scripts/test-swarm-git-workflow.js +0 -338
  771. package/scripts/test-swarm-tui.ts +0 -34
  772. package/scripts/test-tui-shortcuts.ts +0 -66
  773. package/scripts/testing/ab-test-runner.ts +0 -510
  774. package/scripts/testing/collect-metrics.ts +0 -457
  775. package/scripts/testing/quick-effectiveness-demo.js +0 -187
  776. package/scripts/testing/ralph-cli-test.js +0 -88
  777. package/scripts/testing/ralph-integration-validation.js +0 -727
  778. package/scripts/testing/ralph-swarm-test-scenarios.js +0 -613
  779. package/scripts/testing/real-performance-test.js +0 -422
  780. package/scripts/testing/results/real-performance-results.json +0 -90
  781. package/scripts/testing/run-effectiveness-tests.sh +0 -176
  782. package/scripts/testing/simple-effectiveness-test.js +0 -310
  783. package/scripts/testing/test-tier-migration.js +0 -100
  784. package/scripts/update-linear-status.js +0 -268
  785. package/scripts/update-linear-tasks-fixed.js +0 -284
  786. package/scripts/validate-claude-config.sh +0 -155
  787. package/scripts/validate-swarm-implementation.js +0 -467
  788. package/scripts/validate-tui-shortcuts.ts +0 -83
@@ -1,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
- }