@stackmemoryai/stackmemory 0.5.58 → 0.5.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (932) hide show
  1. package/README.md +105 -1
  2. package/dist/scripts/benchmark-performance.js +48 -0
  3. package/dist/scripts/benchmark-performance.js.map +7 -0
  4. package/dist/scripts/check-redis.js +42 -0
  5. package/dist/scripts/check-redis.js.map +7 -0
  6. package/dist/scripts/initialize.js +116 -0
  7. package/dist/scripts/initialize.js.map +7 -0
  8. package/dist/scripts/list-linear-tasks.js +124 -0
  9. package/dist/scripts/list-linear-tasks.js.map +7 -0
  10. package/dist/scripts/measure-handoff-impact.js +340 -0
  11. package/dist/scripts/measure-handoff-impact.js.map +7 -0
  12. package/dist/scripts/query-chromadb.js +160 -0
  13. package/dist/scripts/query-chromadb.js.map +7 -0
  14. package/dist/scripts/show-linear-summary.js +119 -0
  15. package/dist/scripts/show-linear-summary.js.map +7 -0
  16. package/dist/scripts/simple-swarm-demo.js +90 -0
  17. package/dist/scripts/simple-swarm-demo.js.map +7 -0
  18. package/dist/scripts/status.js +155 -0
  19. package/dist/scripts/status.js.map +7 -0
  20. package/dist/scripts/test-chromadb-sync.js +192 -0
  21. package/dist/scripts/test-chromadb-sync.js.map +7 -0
  22. package/dist/scripts/test-ralph-iteration-fix.js +86 -0
  23. package/dist/scripts/test-ralph-iteration-fix.js.map +7 -0
  24. package/dist/scripts/test-ralph-iterations.js +121 -0
  25. package/dist/scripts/test-ralph-iterations.js.map +7 -0
  26. package/dist/scripts/test-redis-storage.js +389 -0
  27. package/dist/scripts/test-redis-storage.js.map +7 -0
  28. package/dist/scripts/test-simple-ralph-state-sync.js +115 -0
  29. package/dist/scripts/test-simple-ralph-state-sync.js.map +7 -0
  30. package/dist/scripts/test-swarm-fixes.js +125 -0
  31. package/dist/scripts/test-swarm-fixes.js.map +7 -0
  32. package/dist/scripts/test-swarm-tui.js +23 -0
  33. package/dist/scripts/test-swarm-tui.js.map +7 -0
  34. package/dist/scripts/test-tui-shortcuts.js +52 -0
  35. package/dist/scripts/test-tui-shortcuts.js.map +7 -0
  36. package/dist/scripts/validate-tui-shortcuts.js +60 -0
  37. package/dist/scripts/validate-tui-shortcuts.js.map +7 -0
  38. package/dist/src/agents/core/agent-task-manager.js.map +7 -0
  39. package/dist/src/agents/verifiers/base-verifier.js.map +7 -0
  40. package/dist/src/agents/verifiers/formatter-verifier.js.map +7 -0
  41. package/dist/src/agents/verifiers/llm-judge.js.map +7 -0
  42. package/dist/src/cli/auto-detect.js.map +7 -0
  43. package/dist/src/cli/claude-sm-danger.js.map +7 -0
  44. package/dist/src/cli/claude-sm.js +1236 -0
  45. package/dist/src/cli/claude-sm.js.map +7 -0
  46. package/dist/src/cli/codex-sm-danger.js.map +7 -0
  47. package/dist/src/cli/codex-sm.js.map +7 -0
  48. package/dist/src/cli/commands/api.js.map +7 -0
  49. package/dist/src/cli/commands/auto-background.js.map +7 -0
  50. package/dist/src/cli/commands/cleanup-processes.js.map +7 -0
  51. package/dist/src/cli/commands/clear.js.map +7 -0
  52. package/dist/src/cli/commands/config.js.map +7 -0
  53. package/dist/src/cli/commands/context-rehydrate.js.map +7 -0
  54. package/dist/src/cli/commands/context.js.map +7 -0
  55. package/dist/src/cli/commands/daemon.js.map +7 -0
  56. package/dist/src/cli/commands/dashboard.js.map +7 -0
  57. package/dist/src/cli/commands/db.js.map +7 -0
  58. package/dist/src/cli/commands/decision.js.map +7 -0
  59. package/dist/src/cli/commands/discovery.js.map +7 -0
  60. package/dist/src/cli/commands/handoff.js.map +7 -0
  61. package/dist/src/cli/commands/hooks.js.map +7 -0
  62. package/dist/src/cli/commands/linear.js.map +7 -0
  63. package/dist/src/cli/commands/log.js.map +7 -0
  64. package/dist/src/cli/commands/login.js.map +7 -0
  65. package/dist/src/cli/commands/migrate.js.map +7 -0
  66. package/dist/src/cli/commands/model.js.map +7 -0
  67. package/dist/src/cli/commands/onboard.js.map +7 -0
  68. package/dist/src/cli/commands/projects.js.map +7 -0
  69. package/dist/src/cli/commands/ralph.js.map +7 -0
  70. package/dist/src/cli/commands/retrieval.js.map +7 -0
  71. package/dist/src/cli/commands/search.js +173 -0
  72. package/dist/src/cli/commands/search.js.map +7 -0
  73. package/dist/src/cli/commands/service.js.map +7 -0
  74. package/dist/src/cli/commands/session.js.map +7 -0
  75. package/dist/src/cli/commands/settings.js.map +7 -0
  76. package/dist/src/cli/commands/setup.js.map +7 -0
  77. package/dist/src/cli/commands/shell.js.map +7 -0
  78. package/dist/src/cli/commands/signup.js.map +7 -0
  79. package/dist/src/cli/commands/skills.js.map +7 -0
  80. package/dist/src/cli/commands/sms-notify.js.map +7 -0
  81. package/dist/src/cli/commands/storage-tier.js.map +7 -0
  82. package/dist/src/cli/commands/sweep.js.map +7 -0
  83. package/dist/src/cli/commands/tasks.js.map +7 -0
  84. package/dist/src/cli/commands/worktree.js.map +7 -0
  85. package/dist/src/cli/index.js +609 -0
  86. package/dist/src/cli/index.js.map +7 -0
  87. package/dist/src/cli/opencode-sm.js.map +7 -0
  88. package/dist/src/cli/utils/viewer.js.map +7 -0
  89. package/dist/src/core/config/config-manager.js.map +7 -0
  90. package/dist/src/core/config/feature-flags.js.map +7 -0
  91. package/dist/src/core/config/storage-config.js.map +7 -0
  92. package/dist/src/core/config/types.js.map +7 -0
  93. package/dist/src/core/context/auto-context.js.map +7 -0
  94. package/dist/src/core/context/dual-stack-manager.js.map +7 -0
  95. package/dist/src/core/context/enhanced-rehydration.js.map +7 -0
  96. package/dist/src/core/context/frame-database.js.map +7 -0
  97. package/dist/src/core/context/frame-digest.js.map +7 -0
  98. package/dist/src/core/context/frame-handoff-manager.js.map +7 -0
  99. package/dist/src/core/context/frame-lifecycle-hooks.js.map +7 -0
  100. package/dist/src/core/context/frame-recovery.js.map +7 -0
  101. package/dist/src/core/context/frame-stack.js.map +7 -0
  102. package/dist/src/core/context/index.js.map +7 -0
  103. package/dist/src/core/context/permission-manager.js.map +7 -0
  104. package/dist/src/core/context/recursive-context-manager.js.map +7 -0
  105. package/dist/src/core/context/refactored-frame-manager.js.map +7 -0
  106. package/dist/src/core/context/shared-context-layer.js.map +7 -0
  107. package/dist/src/core/context/stack-merge-resolver.js.map +7 -0
  108. package/dist/src/core/context/validation.js.map +7 -0
  109. package/dist/src/core/database/batch-operations.js.map +7 -0
  110. package/dist/src/core/database/connection-pool.js.map +7 -0
  111. package/dist/src/core/database/database-adapter.js.map +7 -0
  112. package/dist/src/core/database/migration-manager.js.map +7 -0
  113. package/dist/src/core/database/query-cache.js.map +7 -0
  114. package/dist/src/core/database/query-router.js.map +7 -0
  115. package/dist/src/core/database/sqlite-adapter.js +738 -0
  116. package/dist/src/core/database/sqlite-adapter.js.map +7 -0
  117. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +7 -0
  118. package/dist/src/core/digest/frame-digest-integration.js.map +7 -0
  119. package/dist/src/core/digest/hybrid-digest-generator.js.map +7 -0
  120. package/dist/src/core/digest/index.js.map +7 -0
  121. package/dist/src/core/digest/types.js.map +7 -0
  122. package/dist/src/core/errors/error-utils.js +208 -0
  123. package/dist/src/core/errors/error-utils.js.map +7 -0
  124. package/dist/src/core/errors/index.js +521 -0
  125. package/dist/src/core/errors/index.js.map +7 -0
  126. package/dist/src/core/errors/recovery.js.map +7 -0
  127. package/dist/src/core/execution/parallel-executor.js.map +7 -0
  128. package/dist/src/core/extensions/custom-tools.js +567 -0
  129. package/dist/src/core/extensions/custom-tools.js.map +7 -0
  130. package/dist/src/core/extensions/index.js +55 -0
  131. package/dist/src/core/extensions/index.js.map +7 -0
  132. package/dist/src/core/extensions/loader.js +709 -0
  133. package/dist/src/core/extensions/loader.js.map +7 -0
  134. package/dist/src/core/extensions/plugin-system.js +506 -0
  135. package/dist/src/core/extensions/plugin-system.js.map +7 -0
  136. package/dist/src/core/extensions/provider-adapter.js +617 -0
  137. package/dist/src/core/extensions/provider-adapter.js.map +7 -0
  138. package/dist/src/core/extensions/sandbox-runtime.js +664 -0
  139. package/dist/src/core/extensions/sandbox-runtime.js.map +7 -0
  140. package/dist/src/core/frame/workflow-templates.js.map +7 -0
  141. package/dist/src/core/merge/conflict-detector.js.map +7 -0
  142. package/dist/src/core/merge/index.js.map +7 -0
  143. package/dist/src/core/merge/resolution-engine.js.map +7 -0
  144. package/dist/src/core/merge/stack-diff.js.map +7 -0
  145. package/dist/src/core/merge/unified-merge-resolver.js +303 -0
  146. package/dist/src/core/merge/unified-merge-resolver.js.map +7 -0
  147. package/dist/src/core/models/fallback-monitor.js.map +7 -0
  148. package/dist/src/core/models/model-router.js.map +7 -0
  149. package/dist/src/core/monitoring/error-handler.js.map +7 -0
  150. package/dist/src/core/monitoring/logger.js +202 -0
  151. package/dist/src/core/monitoring/logger.js.map +7 -0
  152. package/dist/src/core/monitoring/metrics.js.map +7 -0
  153. package/dist/src/core/monitoring/progress-tracker.js.map +7 -0
  154. package/dist/src/core/monitoring/session-monitor.js.map +7 -0
  155. package/dist/src/core/performance/context-cache.js.map +7 -0
  156. package/dist/src/core/performance/index.js.map +7 -0
  157. package/dist/src/core/performance/lazy-context-loader.js.map +7 -0
  158. package/dist/src/core/performance/monitor.js.map +7 -0
  159. package/dist/src/core/performance/optimized-frame-context.js.map +7 -0
  160. package/dist/src/core/performance/performance-benchmark.js.map +7 -0
  161. package/dist/src/core/performance/performance-profiler.js.map +7 -0
  162. package/dist/src/core/performance/streaming-jsonl-parser.js.map +7 -0
  163. package/dist/src/core/persistence/postgres-adapter.js.map +7 -0
  164. package/dist/src/core/projects/project-isolation.js.map +7 -0
  165. package/dist/src/core/projects/project-manager.js.map +7 -0
  166. package/dist/src/core/query/query-parser.js.map +7 -0
  167. package/dist/src/core/query/query-templates.js.map +7 -0
  168. package/dist/src/core/retrieval/context-retriever.js.map +7 -0
  169. package/dist/src/core/retrieval/index.js.map +7 -0
  170. package/dist/src/core/retrieval/llm-context-retrieval.js.map +7 -0
  171. package/dist/src/core/retrieval/llm-provider.js.map +7 -0
  172. package/dist/src/core/retrieval/retrieval-audit.js.map +7 -0
  173. package/dist/src/core/retrieval/summary-generator.js.map +7 -0
  174. package/dist/src/core/retrieval/types.js.map +7 -0
  175. package/dist/src/core/security/index.js +35 -0
  176. package/dist/src/core/security/index.js.map +7 -0
  177. package/dist/src/core/security/input-sanitizer.js +321 -0
  178. package/dist/src/core/security/input-sanitizer.js.map +7 -0
  179. package/dist/src/core/session/clear-survival.js.map +7 -0
  180. package/dist/src/core/session/enhanced-handoff.js.map +7 -0
  181. package/dist/src/core/session/handoff-generator.js.map +7 -0
  182. package/dist/src/core/session/index.js.map +7 -0
  183. package/dist/src/core/session/session-manager.js.map +7 -0
  184. package/dist/src/core/skills/index.js.map +7 -0
  185. package/dist/src/core/skills/skill-storage.js.map +7 -0
  186. package/dist/src/core/skills/types.js.map +7 -0
  187. package/dist/src/core/storage/chromadb-adapter.js +380 -0
  188. package/dist/src/core/storage/chromadb-adapter.js.map +7 -0
  189. package/dist/src/core/storage/infinite-storage.js.map +7 -0
  190. package/dist/src/core/storage/remote-storage.js.map +7 -0
  191. package/dist/src/core/storage/two-tier-storage.js.map +7 -0
  192. package/dist/src/core/trace/cli-trace-wrapper.js.map +7 -0
  193. package/dist/src/core/trace/db-trace-wrapper.js.map +7 -0
  194. package/dist/src/core/trace/debug-trace.js.map +7 -0
  195. package/dist/src/core/trace/index.js.map +7 -0
  196. package/dist/src/core/trace/linear-api-wrapper.js.map +7 -0
  197. package/dist/src/core/trace/trace-detector.js.map +7 -0
  198. package/dist/src/core/trace/trace-store.js.map +7 -0
  199. package/dist/src/core/trace/types.js.map +7 -0
  200. package/dist/src/core/utils/async-mutex.js.map +7 -0
  201. package/dist/src/core/utils/compression.js.map +7 -0
  202. package/dist/src/core/utils/update-checker.js.map +7 -0
  203. package/dist/src/core/worktree/worktree-manager.js.map +7 -0
  204. package/dist/src/daemon/daemon-config.js.map +7 -0
  205. package/dist/src/daemon/services/context-service.js.map +7 -0
  206. package/dist/src/daemon/services/linear-service.js.map +7 -0
  207. package/dist/src/daemon/session-daemon.js.map +7 -0
  208. package/dist/src/daemon/unified-daemon.js.map +7 -0
  209. package/dist/src/features/analytics/api/analytics-api.js.map +7 -0
  210. package/dist/src/features/analytics/core/analytics-service.js.map +7 -0
  211. package/dist/src/features/analytics/index.js.map +7 -0
  212. package/dist/src/features/analytics/queries/metrics-queries.js.map +7 -0
  213. package/dist/src/features/browser/browser-mcp.js.map +7 -0
  214. package/dist/src/features/sweep/index.js.map +7 -0
  215. package/dist/src/features/sweep/prediction-client.js.map +7 -0
  216. package/dist/src/features/sweep/prompt-builder.js.map +7 -0
  217. package/dist/src/features/sweep/pty-wrapper.js.map +7 -0
  218. package/dist/src/features/sweep/state-watcher.js.map +7 -0
  219. package/dist/src/features/sweep/status-bar.js.map +7 -0
  220. package/dist/src/features/sweep/sweep-server-manager.js.map +7 -0
  221. package/dist/src/features/sweep/tab-interceptor.js.map +7 -0
  222. package/dist/src/features/sweep/types.js.map +7 -0
  223. package/dist/src/features/tasks/linear-task-manager.js.map +7 -0
  224. package/dist/src/features/tasks/task-aware-context.js.map +7 -0
  225. package/dist/src/features/tui/simple-monitor.js.map +7 -0
  226. package/dist/src/features/tui/swarm-monitor.js.map +7 -0
  227. package/dist/src/features/web/client/stores/task-store.js.map +7 -0
  228. package/dist/src/features/web/server/index.js.map +7 -0
  229. package/dist/src/hooks/auto-background.js.map +7 -0
  230. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +7 -0
  231. package/dist/src/hooks/config.js.map +7 -0
  232. package/dist/src/hooks/daemon.js.map +7 -0
  233. package/dist/src/hooks/events.js.map +7 -0
  234. package/dist/src/hooks/index.js.map +7 -0
  235. package/dist/src/hooks/linear-task-picker.js.map +7 -0
  236. package/dist/src/hooks/schemas.js.map +7 -0
  237. package/dist/src/hooks/secure-fs.js.map +7 -0
  238. package/dist/src/hooks/security-logger.js.map +7 -0
  239. package/dist/src/hooks/session-summary.js.map +7 -0
  240. package/dist/src/hooks/sms-action-runner.js.map +7 -0
  241. package/dist/src/hooks/sms-notify.js.map +7 -0
  242. package/dist/src/hooks/sms-watcher.js.map +7 -0
  243. package/dist/src/hooks/sms-webhook.js.map +7 -0
  244. package/dist/src/hooks/whatsapp-commands.js.map +7 -0
  245. package/dist/src/hooks/whatsapp-scheduler.js.map +7 -0
  246. package/dist/src/hooks/whatsapp-sync.js.map +7 -0
  247. package/dist/src/index.js.map +7 -0
  248. package/dist/src/integrations/anthropic/client.js.map +7 -0
  249. package/dist/src/integrations/claude-code/agent-bridge.js.map +7 -0
  250. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +7 -0
  251. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +7 -0
  252. package/dist/src/integrations/claude-code/post-task-hooks.js.map +7 -0
  253. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +7 -0
  254. package/dist/src/integrations/claude-code/subagent-client.js.map +7 -0
  255. package/dist/src/integrations/claude-code/task-coordinator.js.map +7 -0
  256. package/dist/src/integrations/linear/auth.js.map +7 -0
  257. package/dist/src/integrations/linear/auto-sync.js.map +7 -0
  258. package/dist/src/integrations/linear/client.js +634 -0
  259. package/dist/src/integrations/linear/client.js.map +7 -0
  260. package/dist/src/integrations/linear/config.js.map +7 -0
  261. package/dist/src/integrations/linear/migration.js.map +7 -0
  262. package/dist/src/integrations/linear/oauth-server.js.map +7 -0
  263. package/dist/src/integrations/linear/rest-client.js.map +7 -0
  264. package/dist/src/integrations/linear/sync-manager.js.map +7 -0
  265. package/dist/src/integrations/linear/sync-service.js.map +7 -0
  266. package/dist/src/integrations/linear/sync.js.map +7 -0
  267. package/dist/src/integrations/linear/unified-sync.js.map +7 -0
  268. package/dist/src/integrations/linear/webhook-handler.js.map +7 -0
  269. package/dist/src/integrations/linear/webhook-server.js.map +7 -0
  270. package/dist/src/integrations/linear/webhook.js.map +7 -0
  271. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +7 -0
  272. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +7 -0
  273. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +7 -0
  274. package/dist/src/integrations/mcp/handlers/index.js.map +7 -0
  275. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +7 -0
  276. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +7 -0
  277. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +7 -0
  278. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +7 -0
  279. package/dist/src/integrations/mcp/index.js.map +7 -0
  280. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +7 -0
  281. package/dist/src/integrations/mcp/refactored-server.js.map +7 -0
  282. package/dist/src/integrations/mcp/remote-server.js +682 -0
  283. package/dist/src/integrations/mcp/remote-server.js.map +7 -0
  284. package/dist/src/integrations/mcp/schemas.js.map +7 -0
  285. package/dist/src/integrations/mcp/server.js +1975 -0
  286. package/dist/src/integrations/mcp/server.js.map +7 -0
  287. package/dist/src/integrations/mcp/tool-definitions-code.js.map +7 -0
  288. package/dist/src/integrations/mcp/tool-definitions.js.map +7 -0
  289. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +7 -0
  290. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +7 -0
  291. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +7 -0
  292. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +7 -0
  293. package/dist/src/integrations/ralph/index.js.map +7 -0
  294. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +7 -0
  295. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +7 -0
  296. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +7 -0
  297. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +7 -0
  298. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +7 -0
  299. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +7 -0
  300. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +7 -0
  301. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +7 -0
  302. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +7 -0
  303. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +7 -0
  304. package/dist/src/integrations/ralph/state/state-reconciler.js.map +7 -0
  305. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +7 -0
  306. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +7 -0
  307. package/dist/src/integrations/ralph/types.js +5 -0
  308. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +7 -0
  309. package/dist/src/mcp/stackmemory-mcp-server.js.map +7 -0
  310. package/dist/src/middleware/exponential-rate-limiter.js.map +7 -0
  311. package/dist/src/models/user.model.js.map +7 -0
  312. package/dist/src/servers/production/auth-middleware.js.map +7 -0
  313. package/dist/src/services/config-service.js.map +7 -0
  314. package/dist/src/services/context-service.js.map +7 -0
  315. package/dist/src/skills/api-discovery.js.map +7 -0
  316. package/dist/src/skills/api-skill.js.map +7 -0
  317. package/dist/src/skills/claude-skills.js.map +7 -0
  318. package/dist/src/skills/dashboard-launcher.js.map +7 -0
  319. package/dist/src/skills/recursive-agent-orchestrator.js.map +7 -0
  320. package/dist/src/skills/repo-ingestion-skill.js +632 -0
  321. package/dist/src/skills/repo-ingestion-skill.js.map +7 -0
  322. package/dist/src/skills/unified-rlm-orchestrator.js.map +7 -0
  323. package/dist/src/types/task.js.map +7 -0
  324. package/dist/src/utils/env.js.map +7 -0
  325. package/dist/src/utils/formatting.js.map +7 -0
  326. package/dist/src/utils/process-cleanup.js.map +7 -0
  327. package/package.json +13 -9
  328. package/scripts/background-sync-manager.js +145 -83
  329. package/scripts/claude-sm-autostart.js +17 -12
  330. package/scripts/gepa/README.md +275 -0
  331. package/scripts/gepa/config.json +53 -0
  332. package/scripts/gepa/evals/coding-tasks.jsonl +5 -0
  333. package/scripts/gepa/evals/fixtures/buggy-loop.js +18 -0
  334. package/scripts/gepa/evals/fixtures/callback-hell.js +53 -0
  335. package/scripts/gepa/generations/gen-000/baseline.md +124 -0
  336. package/scripts/gepa/hooks/auto-optimize.js +494 -0
  337. package/scripts/gepa/hooks/eval-tracker.js +203 -0
  338. package/scripts/gepa/hooks/reflect.js +311 -0
  339. package/scripts/gepa/optimize.js +611 -0
  340. package/scripts/gepa/state.json +14 -0
  341. package/scripts/initialize.ts +16 -7
  342. package/scripts/install.sh +14 -62
  343. package/scripts/status.ts +111 -46
  344. package/scripts/test-pre-publish-quick.sh +1 -1
  345. package/dist/agents/core/agent-task-manager.js.map +0 -7
  346. package/dist/agents/testing-agent.js +0 -614
  347. package/dist/agents/testing-agent.js.map +0 -7
  348. package/dist/agents/verifiers/base-verifier.js.map +0 -7
  349. package/dist/agents/verifiers/formatter-verifier.js.map +0 -7
  350. package/dist/agents/verifiers/llm-judge.js.map +0 -7
  351. package/dist/cli/auto-detect.js.map +0 -7
  352. package/dist/cli/browser-test.js +0 -33
  353. package/dist/cli/browser-test.js.map +0 -7
  354. package/dist/cli/claude-sm-danger.js.map +0 -7
  355. package/dist/cli/claude-sm.js +0 -1156
  356. package/dist/cli/claude-sm.js.map +0 -7
  357. package/dist/cli/codex-sm-danger.js.map +0 -7
  358. package/dist/cli/codex-sm.js.map +0 -7
  359. package/dist/cli/commands/api.js.map +0 -7
  360. package/dist/cli/commands/auto-background.js.map +0 -7
  361. package/dist/cli/commands/cleanup-processes.js.map +0 -7
  362. package/dist/cli/commands/clear.js.map +0 -7
  363. package/dist/cli/commands/config.js.map +0 -7
  364. package/dist/cli/commands/context-rehydrate.js.map +0 -7
  365. package/dist/cli/commands/context.js.map +0 -7
  366. package/dist/cli/commands/daemon.js.map +0 -7
  367. package/dist/cli/commands/dashboard.js.map +0 -7
  368. package/dist/cli/commands/db.js.map +0 -7
  369. package/dist/cli/commands/decision.js.map +0 -7
  370. package/dist/cli/commands/discovery.js.map +0 -7
  371. package/dist/cli/commands/handoff.js.map +0 -7
  372. package/dist/cli/commands/hooks.js.map +0 -7
  373. package/dist/cli/commands/linear-unified.js +0 -353
  374. package/dist/cli/commands/linear-unified.js.map +0 -7
  375. package/dist/cli/commands/linear.js.map +0 -7
  376. package/dist/cli/commands/log.js.map +0 -7
  377. package/dist/cli/commands/login.js.map +0 -7
  378. package/dist/cli/commands/migrate.js.map +0 -7
  379. package/dist/cli/commands/model.js.map +0 -7
  380. package/dist/cli/commands/monitor.js +0 -313
  381. package/dist/cli/commands/monitor.js.map +0 -7
  382. package/dist/cli/commands/onboard.js.map +0 -7
  383. package/dist/cli/commands/projects.js.map +0 -7
  384. package/dist/cli/commands/quality.js +0 -413
  385. package/dist/cli/commands/quality.js.map +0 -7
  386. package/dist/cli/commands/ralph.js.map +0 -7
  387. package/dist/cli/commands/retrieval.js.map +0 -7
  388. package/dist/cli/commands/search.js +0 -156
  389. package/dist/cli/commands/search.js.map +0 -7
  390. package/dist/cli/commands/service.js.map +0 -7
  391. package/dist/cli/commands/session.js.map +0 -7
  392. package/dist/cli/commands/settings.js.map +0 -7
  393. package/dist/cli/commands/setup.js.map +0 -7
  394. package/dist/cli/commands/shell.js.map +0 -7
  395. package/dist/cli/commands/signup.js.map +0 -7
  396. package/dist/cli/commands/skills.js.map +0 -7
  397. package/dist/cli/commands/sms-notify.js.map +0 -7
  398. package/dist/cli/commands/storage-tier.js.map +0 -7
  399. package/dist/cli/commands/storage.js +0 -360
  400. package/dist/cli/commands/storage.js.map +0 -7
  401. package/dist/cli/commands/sweep.js.map +0 -7
  402. package/dist/cli/commands/tasks.js.map +0 -7
  403. package/dist/cli/commands/test.js +0 -286
  404. package/dist/cli/commands/test.js.map +0 -7
  405. package/dist/cli/commands/workflow.js +0 -142
  406. package/dist/cli/commands/workflow.js.map +0 -7
  407. package/dist/cli/commands/worktree.js.map +0 -7
  408. package/dist/cli/index.js +0 -594
  409. package/dist/cli/index.js.map +0 -7
  410. package/dist/cli/opencode-sm.js.map +0 -7
  411. package/dist/cli/utils/viewer.js.map +0 -7
  412. package/dist/core/analytics/team-analytics.js +0 -378
  413. package/dist/core/analytics/team-analytics.js.map +0 -7
  414. package/dist/core/config/config-manager.js.map +0 -7
  415. package/dist/core/config/feature-flags.js.map +0 -7
  416. package/dist/core/config/storage-config.js.map +0 -7
  417. package/dist/core/config/types.js.map +0 -7
  418. package/dist/core/context/auto-context.js.map +0 -7
  419. package/dist/core/context/dual-stack-manager.js.map +0 -7
  420. package/dist/core/context/enhanced-rehydration.js.map +0 -7
  421. package/dist/core/context/frame-database.js.map +0 -7
  422. package/dist/core/context/frame-digest.js.map +0 -7
  423. package/dist/core/context/frame-handoff-manager.js.map +0 -7
  424. package/dist/core/context/frame-lifecycle-hooks.js.map +0 -7
  425. package/dist/core/context/frame-manager.js +0 -1069
  426. package/dist/core/context/frame-manager.js.map +0 -7
  427. package/dist/core/context/frame-recovery.js.map +0 -7
  428. package/dist/core/context/frame-stack.js.map +0 -7
  429. package/dist/core/context/incremental-gc.js +0 -290
  430. package/dist/core/context/incremental-gc.js.map +0 -7
  431. package/dist/core/context/index.js.map +0 -7
  432. package/dist/core/context/model-aware-compaction.js +0 -623
  433. package/dist/core/context/model-aware-compaction.js.map +0 -7
  434. package/dist/core/context/permission-manager.js.map +0 -7
  435. package/dist/core/context/recursive-context-manager.js.map +0 -7
  436. package/dist/core/context/refactored-frame-manager.js.map +0 -7
  437. package/dist/core/context/shared-context-layer.js.map +0 -7
  438. package/dist/core/context/stack-merge-resolver.js.map +0 -7
  439. package/dist/core/context/validation.js.map +0 -7
  440. package/dist/core/database/batch-operations.js.map +0 -7
  441. package/dist/core/database/connection-pool.js.map +0 -7
  442. package/dist/core/database/database-adapter.js.map +0 -7
  443. package/dist/core/database/migration-manager.js.map +0 -7
  444. package/dist/core/database/paradedb-adapter.js +0 -990
  445. package/dist/core/database/paradedb-adapter.js.map +0 -7
  446. package/dist/core/database/query-cache.js.map +0 -7
  447. package/dist/core/database/query-router.js.map +0 -7
  448. package/dist/core/database/sqlite-adapter.js +0 -728
  449. package/dist/core/database/sqlite-adapter.js.map +0 -7
  450. package/dist/core/digest/enhanced-hybrid-digest.js.map +0 -7
  451. package/dist/core/digest/frame-digest-integration.js.map +0 -7
  452. package/dist/core/digest/hybrid-digest-generator.js.map +0 -7
  453. package/dist/core/digest/index.js.map +0 -7
  454. package/dist/core/digest/types.js.map +0 -7
  455. package/dist/core/errors/index.js +0 -512
  456. package/dist/core/errors/index.js.map +0 -7
  457. package/dist/core/errors/recovery.js.map +0 -7
  458. package/dist/core/execution/parallel-executor.js.map +0 -7
  459. package/dist/core/frame/workflow-templates.js.map +0 -7
  460. package/dist/core/merge/conflict-detector.js.map +0 -7
  461. package/dist/core/merge/index.js.map +0 -7
  462. package/dist/core/merge/resolution-engine.js.map +0 -7
  463. package/dist/core/merge/stack-diff.js.map +0 -7
  464. package/dist/core/models/fallback-monitor.js.map +0 -7
  465. package/dist/core/models/model-router.js.map +0 -7
  466. package/dist/core/monitoring/error-handler.js.map +0 -7
  467. package/dist/core/monitoring/logger.js +0 -150
  468. package/dist/core/monitoring/logger.js.map +0 -7
  469. package/dist/core/monitoring/metrics.js.map +0 -7
  470. package/dist/core/monitoring/progress-tracker.js.map +0 -7
  471. package/dist/core/monitoring/session-monitor.js.map +0 -7
  472. package/dist/core/performance/context-cache.js.map +0 -7
  473. package/dist/core/performance/index.js.map +0 -7
  474. package/dist/core/performance/lazy-context-loader.js.map +0 -7
  475. package/dist/core/performance/monitor.js.map +0 -7
  476. package/dist/core/performance/optimized-frame-context.js.map +0 -7
  477. package/dist/core/performance/performance-benchmark.js.map +0 -7
  478. package/dist/core/performance/performance-profiler.js.map +0 -7
  479. package/dist/core/performance/streaming-jsonl-parser.js.map +0 -7
  480. package/dist/core/persistence/postgres-adapter.js.map +0 -7
  481. package/dist/core/projects/project-isolation.js.map +0 -7
  482. package/dist/core/projects/project-manager.js.map +0 -7
  483. package/dist/core/query/query-parser.js.map +0 -7
  484. package/dist/core/query/query-templates.js.map +0 -7
  485. package/dist/core/retrieval/context-retriever.js.map +0 -7
  486. package/dist/core/retrieval/graph-retrieval.js +0 -662
  487. package/dist/core/retrieval/graph-retrieval.js.map +0 -7
  488. package/dist/core/retrieval/hierarchical-retrieval.js +0 -656
  489. package/dist/core/retrieval/hierarchical-retrieval.js.map +0 -7
  490. package/dist/core/retrieval/index.js.map +0 -7
  491. package/dist/core/retrieval/llm-context-retrieval.js.map +0 -7
  492. package/dist/core/retrieval/llm-provider.js.map +0 -7
  493. package/dist/core/retrieval/retrieval-audit.js.map +0 -7
  494. package/dist/core/retrieval/retrieval-benchmarks.js +0 -521
  495. package/dist/core/retrieval/retrieval-benchmarks.js.map +0 -7
  496. package/dist/core/retrieval/summary-generator.js.map +0 -7
  497. package/dist/core/retrieval/types.js.map +0 -7
  498. package/dist/core/session/clear-survival.js.map +0 -7
  499. package/dist/core/session/enhanced-handoff.js.map +0 -7
  500. package/dist/core/session/handoff-generator.js.map +0 -7
  501. package/dist/core/session/index.js.map +0 -7
  502. package/dist/core/session/session-manager.js.map +0 -7
  503. package/dist/core/skills/index.js.map +0 -7
  504. package/dist/core/skills/skill-storage.js.map +0 -7
  505. package/dist/core/skills/types.js.map +0 -7
  506. package/dist/core/storage/chromadb-adapter.js +0 -354
  507. package/dist/core/storage/chromadb-adapter.js.map +0 -7
  508. package/dist/core/storage/infinite-storage.js.map +0 -7
  509. package/dist/core/storage/railway-optimized-storage.js +0 -591
  510. package/dist/core/storage/railway-optimized-storage.js.map +0 -7
  511. package/dist/core/storage/remote-storage.js.map +0 -7
  512. package/dist/core/storage/two-tier-storage.js.map +0 -7
  513. package/dist/core/trace/cli-trace-wrapper.js.map +0 -7
  514. package/dist/core/trace/db-trace-wrapper.js.map +0 -7
  515. package/dist/core/trace/debug-trace.js.map +0 -7
  516. package/dist/core/trace/index.js.map +0 -7
  517. package/dist/core/trace/linear-api-wrapper.js.map +0 -7
  518. package/dist/core/trace/trace-demo.js +0 -154
  519. package/dist/core/trace/trace-demo.js.map +0 -7
  520. package/dist/core/trace/trace-detector.demo.js +0 -142
  521. package/dist/core/trace/trace-detector.demo.js.map +0 -7
  522. package/dist/core/trace/trace-detector.js.map +0 -7
  523. package/dist/core/trace/trace-store.js.map +0 -7
  524. package/dist/core/trace/types.js.map +0 -7
  525. package/dist/core/utils/async-mutex.js.map +0 -7
  526. package/dist/core/utils/compression.js.map +0 -7
  527. package/dist/core/utils/update-checker.js.map +0 -7
  528. package/dist/core/worktree/worktree-manager.js.map +0 -7
  529. package/dist/daemon/daemon-config.js.map +0 -7
  530. package/dist/daemon/services/context-service.js.map +0 -7
  531. package/dist/daemon/services/linear-service.js.map +0 -7
  532. package/dist/daemon/session-daemon.js.map +0 -7
  533. package/dist/daemon/unified-daemon.js.map +0 -7
  534. package/dist/features/analytics/api/analytics-api.js.map +0 -7
  535. package/dist/features/analytics/core/analytics-service.js.map +0 -7
  536. package/dist/features/analytics/index.js.map +0 -7
  537. package/dist/features/analytics/queries/metrics-queries.js.map +0 -7
  538. package/dist/features/browser/browser-mcp.js.map +0 -7
  539. package/dist/features/sweep/index.js.map +0 -7
  540. package/dist/features/sweep/prediction-client.js.map +0 -7
  541. package/dist/features/sweep/prompt-builder.js.map +0 -7
  542. package/dist/features/sweep/pty-wrapper.js.map +0 -7
  543. package/dist/features/sweep/state-watcher.js.map +0 -7
  544. package/dist/features/sweep/status-bar.js.map +0 -7
  545. package/dist/features/sweep/sweep-server-manager.js.map +0 -7
  546. package/dist/features/sweep/tab-interceptor.js.map +0 -7
  547. package/dist/features/sweep/types.js.map +0 -7
  548. package/dist/features/tasks/linear-task-manager.js.map +0 -7
  549. package/dist/features/tasks/task-aware-context.js.map +0 -7
  550. package/dist/features/tui/simple-monitor.js.map +0 -7
  551. package/dist/features/tui/swarm-monitor.js.map +0 -7
  552. package/dist/features/web/client/stores/task-store.js.map +0 -7
  553. package/dist/features/web/server/index.js.map +0 -7
  554. package/dist/hooks/auto-background.js.map +0 -7
  555. package/dist/hooks/claude-code-whatsapp-hook.js.map +0 -7
  556. package/dist/hooks/config.js.map +0 -7
  557. package/dist/hooks/daemon.js.map +0 -7
  558. package/dist/hooks/events.js.map +0 -7
  559. package/dist/hooks/index.js.map +0 -7
  560. package/dist/hooks/linear-task-picker.js.map +0 -7
  561. package/dist/hooks/schemas.js.map +0 -7
  562. package/dist/hooks/secure-fs.js.map +0 -7
  563. package/dist/hooks/security-logger.js.map +0 -7
  564. package/dist/hooks/session-summary.js.map +0 -7
  565. package/dist/hooks/sms-action-runner.js.map +0 -7
  566. package/dist/hooks/sms-notify.js.map +0 -7
  567. package/dist/hooks/sms-watcher.js.map +0 -7
  568. package/dist/hooks/sms-webhook.js.map +0 -7
  569. package/dist/hooks/whatsapp-commands.js.map +0 -7
  570. package/dist/hooks/whatsapp-scheduler.js.map +0 -7
  571. package/dist/hooks/whatsapp-sync.js.map +0 -7
  572. package/dist/index.js.map +0 -7
  573. package/dist/integrations/anthropic/client.js.map +0 -7
  574. package/dist/integrations/claude-code/agent-bridge.js.map +0 -7
  575. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  576. package/dist/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  577. package/dist/integrations/claude-code/post-task-hooks.js.map +0 -7
  578. package/dist/integrations/claude-code/subagent-client-stub.js.map +0 -7
  579. package/dist/integrations/claude-code/subagent-client.js.map +0 -7
  580. package/dist/integrations/claude-code/task-coordinator.js.map +0 -7
  581. package/dist/integrations/linear/auth.js.map +0 -7
  582. package/dist/integrations/linear/auto-sync.js.map +0 -7
  583. package/dist/integrations/linear/client.js +0 -630
  584. package/dist/integrations/linear/client.js.map +0 -7
  585. package/dist/integrations/linear/config.js.map +0 -7
  586. package/dist/integrations/linear/migration.js.map +0 -7
  587. package/dist/integrations/linear/oauth-server.js.map +0 -7
  588. package/dist/integrations/linear/rest-client.js.map +0 -7
  589. package/dist/integrations/linear/sync-manager.js.map +0 -7
  590. package/dist/integrations/linear/sync-service.js.map +0 -7
  591. package/dist/integrations/linear/sync.js.map +0 -7
  592. package/dist/integrations/linear/unified-sync.js.map +0 -7
  593. package/dist/integrations/linear/webhook-handler.js.map +0 -7
  594. package/dist/integrations/linear/webhook-server.js.map +0 -7
  595. package/dist/integrations/linear/webhook.js.map +0 -7
  596. package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  597. package/dist/integrations/mcp/handlers/context-handlers.js.map +0 -7
  598. package/dist/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  599. package/dist/integrations/mcp/handlers/index.js.map +0 -7
  600. package/dist/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  601. package/dist/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  602. package/dist/integrations/mcp/handlers/task-handlers.js.map +0 -7
  603. package/dist/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  604. package/dist/integrations/mcp/index.js.map +0 -7
  605. package/dist/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  606. package/dist/integrations/mcp/refactored-server.js.map +0 -7
  607. package/dist/integrations/mcp/remote-server.js +0 -691
  608. package/dist/integrations/mcp/remote-server.js.map +0 -7
  609. package/dist/integrations/mcp/schemas.js.map +0 -7
  610. package/dist/integrations/mcp/server.js +0 -1960
  611. package/dist/integrations/mcp/server.js.map +0 -7
  612. package/dist/integrations/mcp/tool-definitions-code.js.map +0 -7
  613. package/dist/integrations/mcp/tool-definitions.js.map +0 -7
  614. package/dist/integrations/mcp/trace-test.js +0 -48
  615. package/dist/integrations/mcp/trace-test.js.map +0 -7
  616. package/dist/integrations/pg-aiguide/embedding-provider.js +0 -189
  617. package/dist/integrations/pg-aiguide/embedding-provider.js.map +0 -7
  618. package/dist/integrations/pg-aiguide/semantic-search.js +0 -187
  619. package/dist/integrations/pg-aiguide/semantic-search.js.map +0 -7
  620. package/dist/integrations/pg-aiguide/timescale-analytics.js +0 -224
  621. package/dist/integrations/pg-aiguide/timescale-analytics.js.map +0 -7
  622. package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  623. package/dist/integrations/ralph/context/context-budget-manager.js.map +0 -7
  624. package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  625. package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  626. package/dist/integrations/ralph/index.js.map +0 -7
  627. package/dist/integrations/ralph/learning/pattern-learner.js.map +0 -7
  628. package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  629. package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  630. package/dist/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  631. package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  632. package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  633. package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  634. package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  635. package/dist/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  636. package/dist/integrations/ralph/ralph-integration-demo.js +0 -182
  637. package/dist/integrations/ralph/ralph-integration-demo.js.map +0 -7
  638. package/dist/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  639. package/dist/integrations/ralph/state/state-reconciler.js.map +0 -7
  640. package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  641. package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  642. package/dist/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  643. package/dist/mcp/stackmemory-mcp-server.js.map +0 -7
  644. package/dist/middleware/exponential-rate-limiter.js.map +0 -7
  645. package/dist/models/user.model.js.map +0 -7
  646. package/dist/servers/production/auth-middleware.js.map +0 -7
  647. package/dist/servers/railway/config.js +0 -55
  648. package/dist/servers/railway/config.js.map +0 -7
  649. package/dist/servers/railway/index-enhanced.js +0 -160
  650. package/dist/servers/railway/index-enhanced.js.map +0 -7
  651. package/dist/servers/railway/index.js +0 -1349
  652. package/dist/servers/railway/index.js.map +0 -7
  653. package/dist/servers/railway/simple.js +0 -64
  654. package/dist/servers/railway/simple.js.map +0 -7
  655. package/dist/servers/railway/storage-test.js +0 -459
  656. package/dist/servers/railway/storage-test.js.map +0 -7
  657. package/dist/services/config-service.js.map +0 -7
  658. package/dist/services/context-service.js.map +0 -7
  659. package/dist/skills/api-discovery.js.map +0 -7
  660. package/dist/skills/api-skill.js.map +0 -7
  661. package/dist/skills/claude-skills.js.map +0 -7
  662. package/dist/skills/dashboard-launcher.js.map +0 -7
  663. package/dist/skills/recursive-agent-orchestrator.js.map +0 -7
  664. package/dist/skills/repo-ingestion-skill.js +0 -609
  665. package/dist/skills/repo-ingestion-skill.js.map +0 -7
  666. package/dist/skills/security-secrets-scanner.js +0 -284
  667. package/dist/skills/security-secrets-scanner.js.map +0 -7
  668. package/dist/skills/unified-rlm-orchestrator.js.map +0 -7
  669. package/dist/utils/env.js.map +0 -7
  670. package/dist/utils/formatting.js.map +0 -7
  671. package/dist/utils/process-cleanup.js.map +0 -7
  672. package/dist/validation/schemas.js +0 -222
  673. package/dist/validation/schemas.js.map +0 -7
  674. /package/dist/{agents → src/agents}/core/agent-task-manager.js +0 -0
  675. /package/dist/{agents → src/agents}/verifiers/base-verifier.js +0 -0
  676. /package/dist/{agents → src/agents}/verifiers/formatter-verifier.js +0 -0
  677. /package/dist/{agents → src/agents}/verifiers/llm-judge.js +0 -0
  678. /package/dist/{cli → src/cli}/auto-detect.js +0 -0
  679. /package/dist/{cli → src/cli}/claude-sm-danger.js +0 -0
  680. /package/dist/{cli → src/cli}/codex-sm-danger.js +0 -0
  681. /package/dist/{cli → src/cli}/codex-sm.js +0 -0
  682. /package/dist/{cli → src/cli}/commands/api.js +0 -0
  683. /package/dist/{cli → src/cli}/commands/auto-background.js +0 -0
  684. /package/dist/{cli → src/cli}/commands/cleanup-processes.js +0 -0
  685. /package/dist/{cli → src/cli}/commands/clear.js +0 -0
  686. /package/dist/{cli → src/cli}/commands/config.js +0 -0
  687. /package/dist/{cli → src/cli}/commands/context-rehydrate.js +0 -0
  688. /package/dist/{cli → src/cli}/commands/context.js +0 -0
  689. /package/dist/{cli → src/cli}/commands/daemon.js +0 -0
  690. /package/dist/{cli → src/cli}/commands/dashboard.js +0 -0
  691. /package/dist/{cli → src/cli}/commands/db.js +0 -0
  692. /package/dist/{cli → src/cli}/commands/decision.js +0 -0
  693. /package/dist/{cli → src/cli}/commands/discovery.js +0 -0
  694. /package/dist/{cli → src/cli}/commands/handoff.js +0 -0
  695. /package/dist/{cli → src/cli}/commands/hooks.js +0 -0
  696. /package/dist/{cli → src/cli}/commands/linear.js +0 -0
  697. /package/dist/{cli → src/cli}/commands/log.js +0 -0
  698. /package/dist/{cli → src/cli}/commands/login.js +0 -0
  699. /package/dist/{cli → src/cli}/commands/migrate.js +0 -0
  700. /package/dist/{cli → src/cli}/commands/model.js +0 -0
  701. /package/dist/{cli → src/cli}/commands/onboard.js +0 -0
  702. /package/dist/{cli → src/cli}/commands/projects.js +0 -0
  703. /package/dist/{cli → src/cli}/commands/ralph.js +0 -0
  704. /package/dist/{cli → src/cli}/commands/retrieval.js +0 -0
  705. /package/dist/{cli → src/cli}/commands/service.js +0 -0
  706. /package/dist/{cli → src/cli}/commands/session.js +0 -0
  707. /package/dist/{cli → src/cli}/commands/settings.js +0 -0
  708. /package/dist/{cli → src/cli}/commands/setup.js +0 -0
  709. /package/dist/{cli → src/cli}/commands/shell.js +0 -0
  710. /package/dist/{cli → src/cli}/commands/signup.js +0 -0
  711. /package/dist/{cli → src/cli}/commands/skills.js +0 -0
  712. /package/dist/{cli → src/cli}/commands/sms-notify.js +0 -0
  713. /package/dist/{cli → src/cli}/commands/storage-tier.js +0 -0
  714. /package/dist/{cli → src/cli}/commands/sweep.js +0 -0
  715. /package/dist/{cli → src/cli}/commands/tasks.js +0 -0
  716. /package/dist/{cli → src/cli}/commands/worktree.js +0 -0
  717. /package/dist/{cli → src/cli}/opencode-sm.js +0 -0
  718. /package/dist/{cli → src/cli}/utils/viewer.js +0 -0
  719. /package/dist/{core → src/core}/config/config-manager.js +0 -0
  720. /package/dist/{core → src/core}/config/feature-flags.js +0 -0
  721. /package/dist/{core → src/core}/config/storage-config.js +0 -0
  722. /package/dist/{core → src/core}/config/types.js +0 -0
  723. /package/dist/{core → src/core}/context/auto-context.js +0 -0
  724. /package/dist/{core → src/core}/context/dual-stack-manager.js +0 -0
  725. /package/dist/{core → src/core}/context/enhanced-rehydration.js +0 -0
  726. /package/dist/{core → src/core}/context/frame-database.js +0 -0
  727. /package/dist/{core → src/core}/context/frame-digest.js +0 -0
  728. /package/dist/{core → src/core}/context/frame-handoff-manager.js +0 -0
  729. /package/dist/{core → src/core}/context/frame-lifecycle-hooks.js +0 -0
  730. /package/dist/{core → src/core}/context/frame-recovery.js +0 -0
  731. /package/dist/{core → src/core}/context/frame-stack.js +0 -0
  732. /package/dist/{core → src/core}/context/frame-types.js +0 -0
  733. /package/dist/{core → src/core}/context/frame-types.js.map +0 -0
  734. /package/dist/{core → src/core}/context/index.js +0 -0
  735. /package/dist/{core → src/core}/context/permission-manager.js +0 -0
  736. /package/dist/{core → src/core}/context/recursive-context-manager.js +0 -0
  737. /package/dist/{core → src/core}/context/refactored-frame-manager.js +0 -0
  738. /package/dist/{core → src/core}/context/shared-context-layer.js +0 -0
  739. /package/dist/{core → src/core}/context/stack-merge-resolver.js +0 -0
  740. /package/dist/{core → src/core}/context/validation.js +0 -0
  741. /package/dist/{core → src/core}/database/batch-operations.js +0 -0
  742. /package/dist/{core → src/core}/database/connection-pool.js +0 -0
  743. /package/dist/{core → src/core}/database/database-adapter.js +0 -0
  744. /package/dist/{core → src/core}/database/migration-manager.js +0 -0
  745. /package/dist/{core → src/core}/database/query-cache.js +0 -0
  746. /package/dist/{core → src/core}/database/query-router.js +0 -0
  747. /package/dist/{core → src/core}/digest/enhanced-hybrid-digest.js +0 -0
  748. /package/dist/{core → src/core}/digest/frame-digest-integration.js +0 -0
  749. /package/dist/{core → src/core}/digest/hybrid-digest-generator.js +0 -0
  750. /package/dist/{core → src/core}/digest/index.js +0 -0
  751. /package/dist/{core → src/core}/digest/types.js +0 -0
  752. /package/dist/{core → src/core}/errors/recovery.js +0 -0
  753. /package/dist/{core → src/core}/execution/parallel-executor.js +0 -0
  754. /package/dist/{core/merge → src/core/extensions}/types.js +0 -0
  755. /package/dist/{core/merge → src/core/extensions}/types.js.map +0 -0
  756. /package/dist/{core → src/core}/frame/workflow-templates.js +0 -0
  757. /package/dist/{core → src/core}/merge/conflict-detector.js +0 -0
  758. /package/dist/{core → src/core}/merge/index.js +0 -0
  759. /package/dist/{core → src/core}/merge/resolution-engine.js +0 -0
  760. /package/dist/{core → src/core}/merge/stack-diff.js +0 -0
  761. /package/dist/{core → src/core/merge}/types.js +0 -0
  762. /package/dist/{core → src/core/merge}/types.js.map +0 -0
  763. /package/dist/{core → src/core}/models/fallback-monitor.js +0 -0
  764. /package/dist/{core → src/core}/models/model-router.js +0 -0
  765. /package/dist/{core → src/core}/monitoring/error-handler.js +0 -0
  766. /package/dist/{core → src/core}/monitoring/metrics.js +0 -0
  767. /package/dist/{core → src/core}/monitoring/progress-tracker.js +0 -0
  768. /package/dist/{core → src/core}/monitoring/session-monitor.js +0 -0
  769. /package/dist/{core → src/core}/performance/context-cache.js +0 -0
  770. /package/dist/{core → src/core}/performance/index.js +0 -0
  771. /package/dist/{core → src/core}/performance/lazy-context-loader.js +0 -0
  772. /package/dist/{core → src/core}/performance/monitor.js +0 -0
  773. /package/dist/{core → src/core}/performance/optimized-frame-context.js +0 -0
  774. /package/dist/{core → src/core}/performance/performance-benchmark.js +0 -0
  775. /package/dist/{core → src/core}/performance/performance-profiler.js +0 -0
  776. /package/dist/{core → src/core}/performance/streaming-jsonl-parser.js +0 -0
  777. /package/dist/{core → src/core}/persistence/postgres-adapter.js +0 -0
  778. /package/dist/{core → src/core}/projects/project-isolation.js +0 -0
  779. /package/dist/{core → src/core}/projects/project-manager.js +0 -0
  780. /package/dist/{core → src/core}/query/query-parser.js +0 -0
  781. /package/dist/{core → src/core}/query/query-templates.js +0 -0
  782. /package/dist/{core → src/core}/retrieval/context-retriever.js +0 -0
  783. /package/dist/{core → src/core}/retrieval/index.js +0 -0
  784. /package/dist/{core → src/core}/retrieval/llm-context-retrieval.js +0 -0
  785. /package/dist/{core → src/core}/retrieval/llm-provider.js +0 -0
  786. /package/dist/{core → src/core}/retrieval/retrieval-audit.js +0 -0
  787. /package/dist/{core → src/core}/retrieval/summary-generator.js +0 -0
  788. /package/dist/{core → src/core}/retrieval/types.js +0 -0
  789. /package/dist/{core → src/core}/session/clear-survival.js +0 -0
  790. /package/dist/{core → src/core}/session/enhanced-handoff.js +0 -0
  791. /package/dist/{core → src/core}/session/handoff-generator.js +0 -0
  792. /package/dist/{core → src/core}/session/index.js +0 -0
  793. /package/dist/{core → src/core}/session/session-manager.js +0 -0
  794. /package/dist/{core → src/core}/skills/index.js +0 -0
  795. /package/dist/{core → src/core}/skills/skill-storage.js +0 -0
  796. /package/dist/{core → src/core}/skills/types.js +0 -0
  797. /package/dist/{core → src/core}/storage/infinite-storage.js +0 -0
  798. /package/dist/{core → src/core}/storage/remote-storage.js +0 -0
  799. /package/dist/{core → src/core}/storage/two-tier-storage.js +0 -0
  800. /package/dist/{core → src/core}/trace/cli-trace-wrapper.js +0 -0
  801. /package/dist/{core → src/core}/trace/db-trace-wrapper.js +0 -0
  802. /package/dist/{core → src/core}/trace/debug-trace.js +0 -0
  803. /package/dist/{core → src/core}/trace/index.js +0 -0
  804. /package/dist/{core → src/core}/trace/linear-api-wrapper.js +0 -0
  805. /package/dist/{core → src/core}/trace/trace-detector.js +0 -0
  806. /package/dist/{core → src/core}/trace/trace-store.js +0 -0
  807. /package/dist/{core → src/core}/trace/types.js +0 -0
  808. /package/dist/{integrations/linear → src/core}/types.js +0 -0
  809. /package/dist/{integrations/linear → src/core}/types.js.map +0 -0
  810. /package/dist/{core → src/core}/utils/async-mutex.js +0 -0
  811. /package/dist/{core → src/core}/utils/compression.js +0 -0
  812. /package/dist/{core → src/core}/utils/update-checker.js +0 -0
  813. /package/dist/{core → src/core}/worktree/worktree-manager.js +0 -0
  814. /package/dist/{daemon → src/daemon}/daemon-config.js +0 -0
  815. /package/dist/{daemon → src/daemon}/services/context-service.js +0 -0
  816. /package/dist/{daemon → src/daemon}/services/linear-service.js +0 -0
  817. /package/dist/{daemon → src/daemon}/session-daemon.js +0 -0
  818. /package/dist/{daemon → src/daemon}/unified-daemon.js +0 -0
  819. /package/dist/{features → src/features}/analytics/api/analytics-api.js +0 -0
  820. /package/dist/{features → src/features}/analytics/core/analytics-service.js +0 -0
  821. /package/dist/{features → src/features}/analytics/index.js +0 -0
  822. /package/dist/{features → src/features}/analytics/queries/metrics-queries.js +0 -0
  823. /package/dist/{features → src/features}/analytics/types/metrics.js +0 -0
  824. /package/dist/{features → src/features}/analytics/types/metrics.js.map +0 -0
  825. /package/dist/{features → src/features}/browser/browser-mcp.js +0 -0
  826. /package/dist/{features → src/features}/sweep/index.js +0 -0
  827. /package/dist/{features → src/features}/sweep/prediction-client.js +0 -0
  828. /package/dist/{features → src/features}/sweep/prompt-builder.js +0 -0
  829. /package/dist/{features → src/features}/sweep/pty-wrapper.js +0 -0
  830. /package/dist/{features → src/features}/sweep/state-watcher.js +0 -0
  831. /package/dist/{features → src/features}/sweep/status-bar.js +0 -0
  832. /package/dist/{features → src/features}/sweep/sweep-server-manager.js +0 -0
  833. /package/dist/{features → src/features}/sweep/tab-interceptor.js +0 -0
  834. /package/dist/{features → src/features}/sweep/types.js +0 -0
  835. /package/dist/{features → src/features}/tasks/linear-task-manager.js +0 -0
  836. /package/dist/{features → src/features}/tasks/task-aware-context.js +0 -0
  837. /package/dist/{features → src/features}/tui/simple-monitor.js +0 -0
  838. /package/dist/{features → src/features}/tui/swarm-monitor.js +0 -0
  839. /package/dist/{features → src/features}/web/client/stores/task-store.js +0 -0
  840. /package/dist/{features → src/features}/web/server/index.js +0 -0
  841. /package/dist/{hooks → src/hooks}/auto-background.js +0 -0
  842. /package/dist/{hooks → src/hooks}/claude-code-whatsapp-hook.js +0 -0
  843. /package/dist/{hooks → src/hooks}/config.js +0 -0
  844. /package/dist/{hooks → src/hooks}/daemon.js +0 -0
  845. /package/dist/{hooks → src/hooks}/events.js +0 -0
  846. /package/dist/{hooks → src/hooks}/index.js +0 -0
  847. /package/dist/{hooks → src/hooks}/linear-task-picker.js +0 -0
  848. /package/dist/{hooks → src/hooks}/schemas.js +0 -0
  849. /package/dist/{hooks → src/hooks}/secure-fs.js +0 -0
  850. /package/dist/{hooks → src/hooks}/security-logger.js +0 -0
  851. /package/dist/{hooks → src/hooks}/session-summary.js +0 -0
  852. /package/dist/{hooks → src/hooks}/sms-action-runner.js +0 -0
  853. /package/dist/{hooks → src/hooks}/sms-notify.js +0 -0
  854. /package/dist/{hooks → src/hooks}/sms-watcher.js +0 -0
  855. /package/dist/{hooks → src/hooks}/sms-webhook.js +0 -0
  856. /package/dist/{hooks → src/hooks}/whatsapp-commands.js +0 -0
  857. /package/dist/{hooks → src/hooks}/whatsapp-scheduler.js +0 -0
  858. /package/dist/{hooks → src/hooks}/whatsapp-sync.js +0 -0
  859. /package/dist/{index.js → src/index.js} +0 -0
  860. /package/dist/{integrations → src/integrations}/anthropic/client.js +0 -0
  861. /package/dist/{integrations → src/integrations}/claude-code/agent-bridge.js +0 -0
  862. /package/dist/{integrations → src/integrations}/claude-code/enhanced-pre-clear-hooks.js +0 -0
  863. /package/dist/{integrations → src/integrations}/claude-code/lifecycle-hooks.js +0 -0
  864. /package/dist/{integrations → src/integrations}/claude-code/post-task-hooks.js +0 -0
  865. /package/dist/{integrations → src/integrations}/claude-code/subagent-client-stub.js +0 -0
  866. /package/dist/{integrations → src/integrations}/claude-code/subagent-client.js +0 -0
  867. /package/dist/{integrations → src/integrations}/claude-code/task-coordinator.js +0 -0
  868. /package/dist/{integrations → src/integrations}/linear/auth.js +0 -0
  869. /package/dist/{integrations → src/integrations}/linear/auto-sync.js +0 -0
  870. /package/dist/{integrations → src/integrations}/linear/config.js +0 -0
  871. /package/dist/{integrations → src/integrations}/linear/migration.js +0 -0
  872. /package/dist/{integrations → src/integrations}/linear/oauth-server.js +0 -0
  873. /package/dist/{integrations → src/integrations}/linear/rest-client.js +0 -0
  874. /package/dist/{integrations → src/integrations}/linear/sync-manager.js +0 -0
  875. /package/dist/{integrations → src/integrations}/linear/sync-service.js +0 -0
  876. /package/dist/{integrations → src/integrations}/linear/sync.js +0 -0
  877. /package/dist/{integrations/ralph → src/integrations/linear}/types.js +0 -0
  878. /package/dist/{integrations/ralph → src/integrations/linear}/types.js.map +0 -0
  879. /package/dist/{integrations → src/integrations}/linear/unified-sync.js +0 -0
  880. /package/dist/{integrations → src/integrations}/linear/webhook-handler.js +0 -0
  881. /package/dist/{integrations → src/integrations}/linear/webhook-server.js +0 -0
  882. /package/dist/{integrations → src/integrations}/linear/webhook.js +0 -0
  883. /package/dist/{integrations → src/integrations}/mcp/handlers/code-execution-handlers.js +0 -0
  884. /package/dist/{integrations → src/integrations}/mcp/handlers/context-handlers.js +0 -0
  885. /package/dist/{integrations → src/integrations}/mcp/handlers/discovery-handlers.js +0 -0
  886. /package/dist/{integrations → src/integrations}/mcp/handlers/index.js +0 -0
  887. /package/dist/{integrations → src/integrations}/mcp/handlers/linear-handlers.js +0 -0
  888. /package/dist/{integrations → src/integrations}/mcp/handlers/skill-handlers.js +0 -0
  889. /package/dist/{integrations → src/integrations}/mcp/handlers/task-handlers.js +0 -0
  890. /package/dist/{integrations → src/integrations}/mcp/handlers/trace-handlers.js +0 -0
  891. /package/dist/{integrations → src/integrations}/mcp/index.js +0 -0
  892. /package/dist/{integrations → src/integrations}/mcp/middleware/tool-scoring.js +0 -0
  893. /package/dist/{integrations → src/integrations}/mcp/refactored-server.js +0 -0
  894. /package/dist/{integrations → src/integrations}/mcp/schemas.js +0 -0
  895. /package/dist/{integrations → src/integrations}/mcp/tool-definitions-code.js +0 -0
  896. /package/dist/{integrations → src/integrations}/mcp/tool-definitions.js +0 -0
  897. /package/dist/{integrations → src/integrations}/ralph/bridge/ralph-stackmemory-bridge.js +0 -0
  898. /package/dist/{integrations → src/integrations}/ralph/context/context-budget-manager.js +0 -0
  899. /package/dist/{integrations → src/integrations}/ralph/context/stackmemory-context-loader.js +0 -0
  900. /package/dist/{integrations → src/integrations}/ralph/coordination/enhanced-coordination.js +0 -0
  901. /package/dist/{integrations → src/integrations}/ralph/index.js +0 -0
  902. /package/dist/{integrations → src/integrations}/ralph/learning/pattern-learner.js +0 -0
  903. /package/dist/{integrations → src/integrations}/ralph/lifecycle/iteration-lifecycle.js +0 -0
  904. /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-dashboard.js +0 -0
  905. /package/dist/{integrations → src/integrations}/ralph/monitoring/swarm-registry.js +0 -0
  906. /package/dist/{integrations → src/integrations}/ralph/orchestration/multi-loop-orchestrator.js +0 -0
  907. /package/dist/{integrations → src/integrations}/ralph/patterns/compounding-engineering-pattern.js +0 -0
  908. /package/dist/{integrations → src/integrations}/ralph/patterns/extended-coherence-sessions.js +0 -0
  909. /package/dist/{integrations → src/integrations}/ralph/patterns/oracle-worker-pattern.js +0 -0
  910. /package/dist/{integrations → src/integrations}/ralph/performance/performance-optimizer.js +0 -0
  911. /package/dist/{integrations → src/integrations}/ralph/recovery/crash-recovery.js +0 -0
  912. /package/dist/{integrations → src/integrations}/ralph/state/state-reconciler.js +0 -0
  913. /package/dist/{integrations → src/integrations}/ralph/swarm/git-workflow-manager.js +0 -0
  914. /package/dist/{integrations → src/integrations}/ralph/swarm/swarm-coordinator.js +0 -0
  915. /package/dist/{types/task.js.map → src/integrations/ralph/types.js.map} +0 -0
  916. /package/dist/{integrations → src/integrations}/ralph/visualization/ralph-debugger.js +0 -0
  917. /package/dist/{mcp → src/mcp}/stackmemory-mcp-server.js +0 -0
  918. /package/dist/{middleware → src/middleware}/exponential-rate-limiter.js +0 -0
  919. /package/dist/{models → src/models}/user.model.js +0 -0
  920. /package/dist/{servers → src/servers}/production/auth-middleware.js +0 -0
  921. /package/dist/{services → src/services}/config-service.js +0 -0
  922. /package/dist/{services → src/services}/context-service.js +0 -0
  923. /package/dist/{skills → src/skills}/api-discovery.js +0 -0
  924. /package/dist/{skills → src/skills}/api-skill.js +0 -0
  925. /package/dist/{skills → src/skills}/claude-skills.js +0 -0
  926. /package/dist/{skills → src/skills}/dashboard-launcher.js +0 -0
  927. /package/dist/{skills → src/skills}/recursive-agent-orchestrator.js +0 -0
  928. /package/dist/{skills → src/skills}/unified-rlm-orchestrator.js +0 -0
  929. /package/dist/{types → src/types}/task.js +0 -0
  930. /package/dist/{utils → src/utils}/env.js +0 -0
  931. /package/dist/{utils → src/utils}/formatting.js +0 -0
  932. /package/dist/{utils → src/utils}/process-cleanup.js +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/context/context-budget-manager.ts"],
4
- "sourcesContent": ["/**\n * Context Budget Manager for Ralph-StackMemory Integration\n * Manages token allocation and context prioritization to prevent overwhelming iterations\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport {\n IterationContext,\n TaskContext,\n HistoryContext,\n EnvironmentContext,\n MemoryContext,\n RalphStackMemoryConfig,\n TokenEstimate,\n IterationSummary,\n} from '../types.js';\n\nexport class ContextBudgetManager {\n private config: RalphStackMemoryConfig['contextBudget'];\n private tokenUsage: Map<string, number> = new Map();\n private readonly DEFAULT_MAX_TOKENS = 4000;\n private readonly TOKEN_CHAR_RATIO = 0.25; // Rough estimate: 1 token \u2248 4 chars\n\n constructor(config?: Partial<RalphStackMemoryConfig['contextBudget']>) {\n this.config = {\n maxTokens: config?.maxTokens || this.DEFAULT_MAX_TOKENS,\n priorityWeights: {\n task: config?.priorityWeights?.task || 0.3,\n recentWork: config?.priorityWeights?.recentWork || 0.25,\n feedback: config?.priorityWeights?.feedback || 0.2,\n gitHistory: config?.priorityWeights?.gitHistory || 0.15,\n dependencies: config?.priorityWeights?.dependencies || 0.1,\n },\n compressionEnabled: config?.compressionEnabled ?? true,\n adaptiveBudgeting: config?.adaptiveBudgeting ?? true,\n };\n }\n\n /**\n * Estimate tokens for a given text\n */\n estimateTokens(text: string): number {\n if (!text) return 0;\n \n // More accurate estimation based on common patterns\n const baseTokens = text.length * this.TOKEN_CHAR_RATIO;\n \n // Adjust for code content (typically more dense)\n const codeMultiplier = this.detectCodeContent(text) ? 1.2 : 1.0;\n \n // Adjust for JSON content (typically less dense)\n const jsonMultiplier = this.detectJsonContent(text) ? 0.9 : 1.0;\n \n return Math.ceil(baseTokens * codeMultiplier * jsonMultiplier);\n }\n\n /**\n * Allocate token budget across different context categories\n */\n allocateBudget(context: IterationContext): IterationContext {\n const currentTokens = this.calculateCurrentTokens(context);\n \n if (currentTokens <= this.config.maxTokens) {\n logger.debug('Context within budget', { \n used: currentTokens, \n max: this.config.maxTokens \n });\n return context;\n }\n\n logger.info('Context exceeds budget, optimizing...', {\n current: currentTokens,\n max: this.config.maxTokens,\n });\n\n // Apply adaptive budgeting if enabled\n if (this.config.adaptiveBudgeting) {\n return this.adaptiveBudgetAllocation(context, currentTokens);\n }\n\n // Apply fixed priority-based budgeting\n return this.priorityBasedAllocation(context, currentTokens);\n }\n\n /**\n * Compress context to fit within budget\n */\n compressContext(context: IterationContext): IterationContext {\n if (!this.config.compressionEnabled) {\n return context;\n }\n\n const compressed: IterationContext = {\n ...context,\n task: this.compressTaskContext(context.task),\n history: this.compressHistoryContext(context.history),\n environment: this.compressEnvironmentContext(context.environment),\n memory: this.compressMemoryContext(context.memory),\n tokenCount: 0,\n };\n\n compressed.tokenCount = this.calculateCurrentTokens(compressed);\n \n logger.debug('Context compressed', {\n original: context.tokenCount,\n compressed: compressed.tokenCount,\n reduction: `${Math.round((1 - compressed.tokenCount / context.tokenCount) * 100)}%`,\n });\n\n return compressed;\n }\n\n /**\n * Get current token usage statistics\n */\n getUsage(): { used: number; available: number; categories: Record<string, number> } {\n const categories: Record<string, number> = {};\n let totalUsed = 0;\n\n for (const [category, tokens] of this.tokenUsage) {\n categories[category] = tokens;\n totalUsed += tokens;\n }\n\n return {\n used: totalUsed,\n available: this.config.maxTokens - totalUsed,\n categories,\n };\n }\n\n /**\n * Calculate current token count for context\n */\n private calculateCurrentTokens(context: IterationContext): number {\n this.tokenUsage.clear();\n \n const taskTokens = this.estimateTokens(JSON.stringify(context.task));\n const historyTokens = this.estimateTokens(JSON.stringify(context.history));\n const envTokens = this.estimateTokens(JSON.stringify(context.environment));\n const memoryTokens = this.estimateTokens(JSON.stringify(context.memory));\n\n this.tokenUsage.set('task', taskTokens);\n this.tokenUsage.set('history', historyTokens);\n this.tokenUsage.set('environment', envTokens);\n this.tokenUsage.set('memory', memoryTokens);\n\n return taskTokens + historyTokens + envTokens + memoryTokens;\n }\n\n /**\n * Adaptive budget allocation based on iteration phase\n */\n private adaptiveBudgetAllocation(\n context: IterationContext,\n currentTokens: number\n ): IterationContext {\n const reductionRatio = this.config.maxTokens / currentTokens;\n \n // Determine phase based on iteration number\n const phase = this.determinePhase(context.task.currentIteration);\n \n // Adjust weights based on phase\n const adjustedWeights = this.getPhaseAdjustedWeights(phase);\n \n return this.applyWeightedReduction(context, reductionRatio, adjustedWeights);\n }\n\n /**\n * Priority-based allocation using fixed weights\n */\n private priorityBasedAllocation(\n context: IterationContext,\n currentTokens: number\n ): IterationContext {\n const reductionRatio = this.config.maxTokens / currentTokens;\n return this.applyWeightedReduction(context, reductionRatio, this.config.priorityWeights);\n }\n\n /**\n * Apply weighted reduction to context\n */\n private applyWeightedReduction(\n context: IterationContext,\n reductionRatio: number,\n weights: Record<string, number>\n ): IterationContext {\n const reduced: IterationContext = { ...context };\n\n // Reduce history based on weight\n if (weights.recentWork < 1.0) {\n const keepCount = Math.ceil(\n context.history.recentIterations.length * reductionRatio * weights.recentWork\n );\n reduced.history = {\n ...context.history,\n recentIterations: context.history.recentIterations.slice(-keepCount),\n };\n }\n\n // Reduce git history based on weight\n if (weights.gitHistory < 1.0) {\n const keepCount = Math.ceil(\n context.history.gitCommits.length * reductionRatio * weights.gitHistory\n );\n reduced.history.gitCommits = context.history.gitCommits.slice(-keepCount);\n }\n\n // Reduce memory frames based on weight\n if (weights.dependencies < 1.0) {\n const keepCount = Math.ceil(\n context.memory.relevantFrames.length * reductionRatio * weights.dependencies\n );\n reduced.memory = {\n ...context.memory,\n relevantFrames: context.memory.relevantFrames\n .sort((a, b) => (b.created_at || 0) - (a.created_at || 0))\n .slice(0, keepCount),\n };\n }\n\n reduced.tokenCount = this.calculateCurrentTokens(reduced);\n return reduced;\n }\n\n /**\n * Compress task context\n */\n private compressTaskContext(task: TaskContext): TaskContext {\n return {\n ...task,\n description: this.truncateWithEllipsis(task.description, 500),\n criteria: task.criteria.slice(0, 5), // Keep top 5 criteria\n feedback: task.feedback ? this.truncateWithEllipsis(task.feedback, 300) : undefined,\n };\n }\n\n /**\n * Compress history context\n */\n private compressHistoryContext(history: HistoryContext): HistoryContext {\n return {\n ...history,\n recentIterations: history.recentIterations\n .slice(-5) // Keep last 5 iterations\n .map(iter => ({\n ...iter,\n summary: this.truncateWithEllipsis(iter.summary, 100),\n })),\n gitCommits: history.gitCommits\n .slice(-10) // Keep last 10 commits\n .map(commit => ({\n ...commit,\n message: this.truncateWithEllipsis(commit.message, 80),\n files: commit.files.slice(0, 5), // Keep top 5 files\n })),\n changedFiles: history.changedFiles.slice(0, 20), // Keep top 20 files\n testResults: history.testResults.slice(-3), // Keep last 3 test runs\n };\n }\n\n /**\n * Compress environment context\n */\n private compressEnvironmentContext(env: EnvironmentContext): EnvironmentContext {\n return {\n ...env,\n dependencies: this.compressObject(env.dependencies, 20), // Keep top 20 deps\n configuration: this.compressObject(env.configuration, 10), // Keep top 10 config items\n };\n }\n\n /**\n * Compress memory context\n */\n private compressMemoryContext(memory: MemoryContext): MemoryContext {\n return {\n ...memory,\n relevantFrames: memory.relevantFrames.slice(0, 5), // Keep top 5 frames\n decisions: memory.decisions\n .filter(d => d.impact !== 'low') // Remove low impact decisions\n .slice(-5), // Keep last 5\n patterns: memory.patterns\n .filter(p => p.successRate > 0.7) // Keep successful patterns only\n .slice(0, 3), // Keep top 3\n blockers: memory.blockers.filter(b => !b.resolved), // Keep unresolved only\n };\n }\n\n /**\n * Determine iteration phase\n */\n private determinePhase(iteration: number): 'early' | 'middle' | 'late' {\n if (iteration <= 3) return 'early';\n if (iteration <= 10) return 'middle';\n return 'late';\n }\n\n /**\n * Get phase-adjusted weights\n */\n private getPhaseAdjustedWeights(phase: 'early' | 'middle' | 'late'): Record<string, number> {\n switch (phase) {\n case 'early':\n // Early phase: Focus on task understanding\n return {\n task: 0.4,\n recentWork: 0.1,\n feedback: 0.2,\n gitHistory: 0.2,\n dependencies: 0.1,\n };\n case 'middle':\n // Middle phase: Balance all aspects\n return this.config.priorityWeights;\n case 'late':\n // Late phase: Focus on recent work and feedback\n return {\n task: 0.2,\n recentWork: 0.35,\n feedback: 0.25,\n gitHistory: 0.15,\n dependencies: 0.05,\n };\n }\n }\n\n /**\n * Detect if text contains code\n */\n private detectCodeContent(text: string): boolean {\n const codePatterns = [\n /function\\s+\\w+\\s*\\(/,\n /class\\s+\\w+/,\n /const\\s+\\w+\\s*=/,\n /import\\s+.*from/,\n /\\{[\\s\\S]*\\}/,\n ];\n return codePatterns.some(pattern => pattern.test(text));\n }\n\n /**\n * Detect if text contains JSON\n */\n private detectJsonContent(text: string): boolean {\n try {\n JSON.parse(text);\n return true;\n } catch {\n return text.includes('\"') && text.includes(':') && text.includes('{');\n }\n }\n\n /**\n * Truncate text with ellipsis\n */\n private truncateWithEllipsis(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.substring(0, maxLength - 3) + '...';\n }\n\n /**\n * Compress object by keeping only top N entries\n */\n private compressObject(obj: Record<string, any>, maxEntries: number): Record<string, any> {\n const entries = Object.entries(obj);\n if (entries.length <= maxEntries) return obj;\n \n const compressed: Record<string, any> = {};\n entries.slice(0, maxEntries).forEach(([key, value]) => {\n compressed[key] = value;\n });\n \n return compressed;\n }\n}"],
5
- "mappings": ";;;;AAKA,SAAS,cAAc;AAYhB,MAAM,qBAAqB;AAAA,EACxB;AAAA,EACA,aAAkC,oBAAI,IAAI;AAAA,EACjC,qBAAqB;AAAA,EACrB,mBAAmB;AAAA;AAAA,EAEpC,YAAY,QAA2D;AACrE,SAAK,SAAS;AAAA,MACZ,WAAW,QAAQ,aAAa,KAAK;AAAA,MACrC,iBAAiB;AAAA,QACf,MAAM,QAAQ,iBAAiB,QAAQ;AAAA,QACvC,YAAY,QAAQ,iBAAiB,cAAc;AAAA,QACnD,UAAU,QAAQ,iBAAiB,YAAY;AAAA,QAC/C,YAAY,QAAQ,iBAAiB,cAAc;AAAA,QACnD,cAAc,QAAQ,iBAAiB,gBAAgB;AAAA,MACzD;AAAA,MACA,oBAAoB,QAAQ,sBAAsB;AAAA,MAClD,mBAAmB,QAAQ,qBAAqB;AAAA,IAClD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,MAAsB;AACnC,QAAI,CAAC,KAAM,QAAO;AAGlB,UAAM,aAAa,KAAK,SAAS,KAAK;AAGtC,UAAM,iBAAiB,KAAK,kBAAkB,IAAI,IAAI,MAAM;AAG5D,UAAM,iBAAiB,KAAK,kBAAkB,IAAI,IAAI,MAAM;AAE5D,WAAO,KAAK,KAAK,aAAa,iBAAiB,cAAc;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA,EAKA,eAAe,SAA6C;AAC1D,UAAM,gBAAgB,KAAK,uBAAuB,OAAO;AAEzD,QAAI,iBAAiB,KAAK,OAAO,WAAW;AAC1C,aAAO,MAAM,yBAAyB;AAAA,QACpC,MAAM;AAAA,QACN,KAAK,KAAK,OAAO;AAAA,MACnB,CAAC;AACD,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,yCAAyC;AAAA,MACnD,SAAS;AAAA,MACT,KAAK,KAAK,OAAO;AAAA,IACnB,CAAC;AAGD,QAAI,KAAK,OAAO,mBAAmB;AACjC,aAAO,KAAK,yBAAyB,SAAS,aAAa;AAAA,IAC7D;AAGA,WAAO,KAAK,wBAAwB,SAAS,aAAa;AAAA,EAC5D;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,SAA6C;AAC3D,QAAI,CAAC,KAAK,OAAO,oBAAoB;AACnC,aAAO;AAAA,IACT;AAEA,UAAM,aAA+B;AAAA,MACnC,GAAG;AAAA,MACH,MAAM,KAAK,oBAAoB,QAAQ,IAAI;AAAA,MAC3C,SAAS,KAAK,uBAAuB,QAAQ,OAAO;AAAA,MACpD,aAAa,KAAK,2BAA2B,QAAQ,WAAW;AAAA,MAChE,QAAQ,KAAK,sBAAsB,QAAQ,MAAM;AAAA,MACjD,YAAY;AAAA,IACd;AAEA,eAAW,aAAa,KAAK,uBAAuB,UAAU;AAE9D,WAAO,MAAM,sBAAsB;AAAA,MACjC,UAAU,QAAQ;AAAA,MAClB,YAAY,WAAW;AAAA,MACvB,WAAW,GAAG,KAAK,OAAO,IAAI,WAAW,aAAa,QAAQ,cAAc,GAAG,CAAC;AAAA,IAClF,CAAC;AAED,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,WAAoF;AAClF,UAAM,aAAqC,CAAC;AAC5C,QAAI,YAAY;AAEhB,eAAW,CAAC,UAAU,MAAM,KAAK,KAAK,YAAY;AAChD,iBAAW,QAAQ,IAAI;AACvB,mBAAa;AAAA,IACf;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,WAAW,KAAK,OAAO,YAAY;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,uBAAuB,SAAmC;AAChE,SAAK,WAAW,MAAM;AAEtB,UAAM,aAAa,KAAK,eAAe,KAAK,UAAU,QAAQ,IAAI,CAAC;AACnE,UAAM,gBAAgB,KAAK,eAAe,KAAK,UAAU,QAAQ,OAAO,CAAC;AACzE,UAAM,YAAY,KAAK,eAAe,KAAK,UAAU,QAAQ,WAAW,CAAC;AACzE,UAAM,eAAe,KAAK,eAAe,KAAK,UAAU,QAAQ,MAAM,CAAC;AAEvE,SAAK,WAAW,IAAI,QAAQ,UAAU;AACtC,SAAK,WAAW,IAAI,WAAW,aAAa;AAC5C,SAAK,WAAW,IAAI,eAAe,SAAS;AAC5C,SAAK,WAAW,IAAI,UAAU,YAAY;AAE1C,WAAO,aAAa,gBAAgB,YAAY;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKQ,yBACN,SACA,eACkB;AAClB,UAAM,iBAAiB,KAAK,OAAO,YAAY;AAG/C,UAAM,QAAQ,KAAK,eAAe,QAAQ,KAAK,gBAAgB;AAG/D,UAAM,kBAAkB,KAAK,wBAAwB,KAAK;AAE1D,WAAO,KAAK,uBAAuB,SAAS,gBAAgB,eAAe;AAAA,EAC7E;AAAA;AAAA;AAAA;AAAA,EAKQ,wBACN,SACA,eACkB;AAClB,UAAM,iBAAiB,KAAK,OAAO,YAAY;AAC/C,WAAO,KAAK,uBAAuB,SAAS,gBAAgB,KAAK,OAAO,eAAe;AAAA,EACzF;AAAA;AAAA;AAAA;AAAA,EAKQ,uBACN,SACA,gBACA,SACkB;AAClB,UAAM,UAA4B,EAAE,GAAG,QAAQ;AAG/C,QAAI,QAAQ,aAAa,GAAK;AAC5B,YAAM,YAAY,KAAK;AAAA,QACrB,QAAQ,QAAQ,iBAAiB,SAAS,iBAAiB,QAAQ;AAAA,MACrE;AACA,cAAQ,UAAU;AAAA,QAChB,GAAG,QAAQ;AAAA,QACX,kBAAkB,QAAQ,QAAQ,iBAAiB,MAAM,CAAC,SAAS;AAAA,MACrE;AAAA,IACF;AAGA,QAAI,QAAQ,aAAa,GAAK;AAC5B,YAAM,YAAY,KAAK;AAAA,QACrB,QAAQ,QAAQ,WAAW,SAAS,iBAAiB,QAAQ;AAAA,MAC/D;AACA,cAAQ,QAAQ,aAAa,QAAQ,QAAQ,WAAW,MAAM,CAAC,SAAS;AAAA,IAC1E;AAGA,QAAI,QAAQ,eAAe,GAAK;AAC9B,YAAM,YAAY,KAAK;AAAA,QACrB,QAAQ,OAAO,eAAe,SAAS,iBAAiB,QAAQ;AAAA,MAClE;AACA,cAAQ,SAAS;AAAA,QACf,GAAG,QAAQ;AAAA,QACX,gBAAgB,QAAQ,OAAO,eAC5B,KAAK,CAAC,GAAG,OAAO,EAAE,cAAc,MAAM,EAAE,cAAc,EAAE,EACxD,MAAM,GAAG,SAAS;AAAA,MACvB;AAAA,IACF;AAEA,YAAQ,aAAa,KAAK,uBAAuB,OAAO;AACxD,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,oBAAoB,MAAgC;AAC1D,WAAO;AAAA,MACL,GAAG;AAAA,MACH,aAAa,KAAK,qBAAqB,KAAK,aAAa,GAAG;AAAA,MAC5D,UAAU,KAAK,SAAS,MAAM,GAAG,CAAC;AAAA;AAAA,MAClC,UAAU,KAAK,WAAW,KAAK,qBAAqB,KAAK,UAAU,GAAG,IAAI;AAAA,IAC5E;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,uBAAuB,SAAyC;AACtE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,kBAAkB,QAAQ,iBACvB,MAAM,EAAE,EACR,IAAI,WAAS;AAAA,QACZ,GAAG;AAAA,QACH,SAAS,KAAK,qBAAqB,KAAK,SAAS,GAAG;AAAA,MACtD,EAAE;AAAA,MACJ,YAAY,QAAQ,WACjB,MAAM,GAAG,EACT,IAAI,aAAW;AAAA,QACd,GAAG;AAAA,QACH,SAAS,KAAK,qBAAqB,OAAO,SAAS,EAAE;AAAA,QACrD,OAAO,OAAO,MAAM,MAAM,GAAG,CAAC;AAAA;AAAA,MAChC,EAAE;AAAA,MACJ,cAAc,QAAQ,aAAa,MAAM,GAAG,EAAE;AAAA;AAAA,MAC9C,aAAa,QAAQ,YAAY,MAAM,EAAE;AAAA;AAAA,IAC3C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,2BAA2B,KAA6C;AAC9E,WAAO;AAAA,MACL,GAAG;AAAA,MACH,cAAc,KAAK,eAAe,IAAI,cAAc,EAAE;AAAA;AAAA,MACtD,eAAe,KAAK,eAAe,IAAI,eAAe,EAAE;AAAA;AAAA,IAC1D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,sBAAsB,QAAsC;AAClE,WAAO;AAAA,MACL,GAAG;AAAA,MACH,gBAAgB,OAAO,eAAe,MAAM,GAAG,CAAC;AAAA;AAAA,MAChD,WAAW,OAAO,UACf,OAAO,OAAK,EAAE,WAAW,KAAK,EAC9B,MAAM,EAAE;AAAA;AAAA,MACX,UAAU,OAAO,SACd,OAAO,OAAK,EAAE,cAAc,GAAG,EAC/B,MAAM,GAAG,CAAC;AAAA;AAAA,MACb,UAAU,OAAO,SAAS,OAAO,OAAK,CAAC,EAAE,QAAQ;AAAA;AAAA,IACnD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,eAAe,WAAgD;AACrE,QAAI,aAAa,EAAG,QAAO;AAC3B,QAAI,aAAa,GAAI,QAAO;AAC5B,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKQ,wBAAwB,OAA4D;AAC1F,YAAQ,OAAO;AAAA,MACb,KAAK;AAEH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,MACF,KAAK;AAEH,eAAO,KAAK,OAAO;AAAA,MACrB,KAAK;AAEH,eAAO;AAAA,UACL,MAAM;AAAA,UACN,YAAY;AAAA,UACZ,UAAU;AAAA,UACV,YAAY;AAAA,UACZ,cAAc;AAAA,QAChB;AAAA,IACJ;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,kBAAkB,MAAuB;AAC/C,UAAM,eAAe;AAAA,MACnB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,WAAO,aAAa,KAAK,aAAW,QAAQ,KAAK,IAAI,CAAC;AAAA,EACxD;AAAA;AAAA;AAAA;AAAA,EAKQ,kBAAkB,MAAuB;AAC/C,QAAI;AACF,WAAK,MAAM,IAAI;AACf,aAAO;AAAA,IACT,QAAQ;AACN,aAAO,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG,KAAK,KAAK,SAAS,GAAG;AAAA,IACtE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKQ,qBAAqB,MAAc,WAA2B;AACpE,QAAI,KAAK,UAAU,UAAW,QAAO;AACrC,WAAO,KAAK,UAAU,GAAG,YAAY,CAAC,IAAI;AAAA,EAC5C;AAAA;AAAA;AAAA;AAAA,EAKQ,eAAe,KAA0B,YAAyC;AACxF,UAAM,UAAU,OAAO,QAAQ,GAAG;AAClC,QAAI,QAAQ,UAAU,WAAY,QAAO;AAEzC,UAAM,aAAkC,CAAC;AACzC,YAAQ,MAAM,GAAG,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACrD,iBAAW,GAAG,IAAI;AAAA,IACpB,CAAC;AAED,WAAO;AAAA,EACT;AACF;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/context/stackmemory-context-loader.ts"],
4
- "sourcesContent": ["/**\n * StackMemory Context Loader for Ralph Loops\n * Provides intelligent context loading with historical pattern recognition\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { FrameManager } from '../../../core/context/index.js';\nimport { sharedContextLayer } from '../../../core/context/shared-context-layer.js';\nimport { ContextRetriever } from '../../../core/retrieval/context-retriever.js';\nimport { sessionManager } from '../../../core/session/index.js';\nimport { ContextBudgetManager } from './context-budget-manager.js';\nimport { \n RalphContextRequest, \n RalphContextResponse, \n HistoricalPattern,\n TaskSimilarity,\n ContextSource\n} from '../types.js';\n\nexport interface StackMemoryContextConfig {\n maxTokens: number;\n lookbackDays: number;\n similarityThreshold: number;\n patternDetectionEnabled: boolean;\n includeFailedAttempts: boolean;\n crossSessionSearch: boolean;\n}\n\nexport class StackMemoryContextLoader {\n private frameManager?: FrameManager;\n private contextRetriever?: ContextRetriever;\n private budgetManager: ContextBudgetManager;\n private config: StackMemoryContextConfig;\n\n constructor(config?: Partial<StackMemoryContextConfig>) {\n this.config = {\n maxTokens: 3200, // Leave room for task description\n lookbackDays: 30,\n similarityThreshold: 0.7,\n patternDetectionEnabled: true,\n includeFailedAttempts: true,\n crossSessionSearch: true,\n ...config\n };\n \n this.budgetManager = new ContextBudgetManager({\n maxTokens: this.config.maxTokens,\n priorityWeights: {\n task: 0.15,\n recentWork: 0.30,\n patterns: 0.25,\n decisions: 0.20,\n dependencies: 0.10\n }\n });\n\n logger.info('StackMemory context loader initialized', {\n maxTokens: this.config.maxTokens,\n lookbackDays: this.config.lookbackDays,\n patternDetection: this.config.patternDetectionEnabled\n });\n }\n\n async initialize(): Promise<void> {\n try {\n // Initialize StackMemory components\n await sessionManager.initialize();\n await sharedContextLayer.initialize();\n\n // Get current session\n const session = await sessionManager.getOrCreateSession({});\n \n if (session.database) {\n this.frameManager = new FrameManager(session.database, session.projectId);\n this.contextRetriever = new ContextRetriever(session.database);\n }\n\n logger.info('Context loader initialized successfully');\n } catch (error: unknown) {\n logger.error('Failed to initialize context loader', error as Error);\n throw error;\n }\n }\n\n /**\n * Load context for Ralph loop initialization\n */\n async loadInitialContext(request: RalphContextRequest): Promise<RalphContextResponse> {\n logger.info('Loading initial context for Ralph loop', {\n task: request.task.substring(0, 100),\n usePatterns: request.usePatterns,\n useSimilarTasks: request.useSimilarTasks\n });\n\n const sources: ContextSource[] = [];\n let totalTokens = 0;\n\n try {\n // 1. Find similar tasks if requested\n if (request.useSimilarTasks) {\n const similarTasks = await this.findSimilarTasks(request.task);\n if (similarTasks.length > 0) {\n const tasksContext = await this.extractTaskContext(similarTasks);\n sources.push({\n type: 'similar_tasks',\n weight: 0.3,\n content: tasksContext,\n tokens: this.budgetManager.estimateTokens(tasksContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n }\n\n // 2. Extract relevant patterns if requested\n if (request.usePatterns) {\n const patterns = await this.extractRelevantPatterns(request.task);\n if (patterns.length > 0) {\n const patternsContext = await this.formatPatterns(patterns);\n sources.push({\n type: 'historical_patterns',\n weight: 0.25,\n content: patternsContext,\n tokens: this.budgetManager.estimateTokens(patternsContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n }\n\n // 3. Load recent decisions and learnings\n const decisions = await this.loadRecentDecisions();\n if (decisions.length > 0) {\n const decisionsContext = this.formatDecisions(decisions);\n sources.push({\n type: 'recent_decisions',\n weight: 0.2,\n content: decisionsContext,\n tokens: this.budgetManager.estimateTokens(decisionsContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n\n // 4. Load project-specific context\n const projectContext = await this.loadProjectContext(request.task);\n if (projectContext) {\n sources.push({\n type: 'project_context',\n weight: 0.15,\n content: projectContext,\n tokens: this.budgetManager.estimateTokens(projectContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n\n // 5. Apply budget constraints and synthesize\n const budgetedSources = this.budgetManager.allocateBudget({ sources });\n const synthesizedContext = this.synthesizeContext(budgetedSources.sources);\n\n logger.info('Context loaded successfully', {\n totalSources: sources.length,\n totalTokens,\n budgetedTokens: budgetedSources.sources.reduce((sum, s) => sum + s.tokens, 0)\n });\n\n return {\n context: synthesizedContext,\n sources: budgetedSources.sources,\n metadata: {\n totalTokens: budgetedSources.sources.reduce((sum, s) => sum + s.tokens, 0),\n sourcesCount: budgetedSources.sources.length,\n patterns: request.usePatterns ? patterns : [],\n similarTasks: request.useSimilarTasks ? similarTasks : []\n }\n };\n\n } catch (error: unknown) {\n logger.error('Failed to load context', error as Error);\n throw error;\n }\n }\n\n /**\n * Find similar tasks from StackMemory history\n */\n private async findSimilarTasks(taskDescription: string): Promise<TaskSimilarity[]> {\n if (!this.frameManager || !this.contextRetriever) {\n return [];\n }\n\n try {\n // Search for similar task frames\n const searchResults = await this.contextRetriever.search(taskDescription, {\n maxResults: 10,\n types: ['task', 'subtask'],\n timeFilter: {\n days: this.config.lookbackDays\n }\n });\n\n const similarities: TaskSimilarity[] = [];\n\n for (const result of searchResults) {\n // Calculate similarity score\n const similarity = this.calculateTaskSimilarity(taskDescription, result.content);\n \n if (similarity >= this.config.similarityThreshold) {\n similarities.push({\n frameId: result.frameId,\n task: result.content,\n similarity,\n outcome: await this.determineTaskOutcome(result.frameId),\n createdAt: result.timestamp,\n sessionId: result.sessionId || 'unknown'\n });\n }\n }\n\n // Sort by similarity and recent success\n return similarities\n .sort((a, b) => {\n // Prioritize successful outcomes and higher similarity\n const aScore = a.similarity * (a.outcome === 'success' ? 1.2 : 1.0);\n const bScore = b.similarity * (b.outcome === 'success' ? 1.2 : 1.0);\n return bScore - aScore;\n })\n .slice(0, 5); // Top 5 most relevant\n\n } catch (error: unknown) {\n logger.error('Failed to find similar tasks', error as Error);\n return [];\n }\n }\n\n /**\n * Extract relevant patterns from historical data\n */\n private async extractRelevantPatterns(taskDescription: string): Promise<HistoricalPattern[]> {\n try {\n const context = await sharedContextLayer.getSharedContext();\n if (!context) return [];\n\n const relevantPatterns: HistoricalPattern[] = [];\n\n // Filter patterns by relevance to current task\n for (const pattern of context.globalPatterns) {\n const relevance = this.calculatePatternRelevance(taskDescription, pattern.pattern);\n \n if (relevance >= 0.5) {\n relevantPatterns.push({\n pattern: pattern.pattern,\n type: pattern.type,\n frequency: pattern.frequency,\n lastSeen: pattern.lastSeen,\n relevance,\n resolution: pattern.resolution,\n examples: await this.getPatternExamples(pattern.pattern)\n });\n }\n }\n\n // Sort by relevance and frequency\n return relevantPatterns\n .sort((a, b) => (b.relevance * Math.log(b.frequency + 1)) - (a.relevance * Math.log(a.frequency + 1)))\n .slice(0, 8); // Top 8 most relevant patterns\n\n } catch (error: unknown) {\n logger.error('Failed to extract patterns', error as Error);\n return [];\n }\n }\n\n /**\n * Load recent decisions that might be relevant\n */\n private async loadRecentDecisions(): Promise<any[]> {\n try {\n const context = await sharedContextLayer.getSharedContext();\n if (!context) return [];\n\n // Get recent successful decisions\n const cutoff = Date.now() - (7 * 24 * 60 * 60 * 1000); // Last 7 days\n \n return context.decisionLog\n .filter(d => d.timestamp >= cutoff && d.outcome === 'success')\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, 5);\n\n } catch (error: unknown) {\n logger.error('Failed to load recent decisions', error as Error);\n return [];\n }\n }\n\n /**\n * Load project-specific context\n */\n private async loadProjectContext(taskDescription: string): Promise<string | null> {\n try {\n if (!this.contextRetriever) return null;\n\n // Search for project-relevant information\n const projectInfo = await this.contextRetriever.search(taskDescription, {\n maxResults: 3,\n types: ['task'],\n projectSpecific: true\n });\n\n if (projectInfo.length === 0) return null;\n\n const contextParts: string[] = [];\n \n for (const info of projectInfo) {\n contextParts.push(`Project context: ${info.content}`);\n }\n\n return contextParts.join('\\n\\n');\n\n } catch (error: unknown) {\n logger.error('Failed to load project context', error as Error);\n return null;\n }\n }\n\n /**\n * Calculate similarity between task descriptions\n */\n private calculateTaskSimilarity(task1: string, task2: string): number {\n // Simple similarity calculation - in production would use embeddings\n const words1 = new Set(task1.toLowerCase().split(/\\s+/));\n const words2 = new Set(task2.toLowerCase().split(/\\s+/));\n \n const intersection = new Set([...words1].filter(x => words2.has(x)));\n const union = new Set([...words1, ...words2]);\n \n return intersection.size / union.size;\n }\n\n /**\n * Calculate pattern relevance to current task\n */\n private calculatePatternRelevance(taskDescription: string, pattern: string): number {\n // Simple keyword matching - in production would use semantic analysis\n const taskWords = taskDescription.toLowerCase().split(/\\s+/);\n const patternWords = pattern.toLowerCase().split(/\\s+/);\n \n let matches = 0;\n for (const word of taskWords) {\n if (patternWords.some(p => p.includes(word) || word.includes(p))) {\n matches++;\n }\n }\n \n return matches / taskWords.length;\n }\n\n /**\n * Extract context from similar tasks\n */\n private async extractTaskContext(similarities: TaskSimilarity[]): Promise<string> {\n const contextParts: string[] = [];\n \n contextParts.push('Similar tasks from history:');\n \n for (const sim of similarities) {\n contextParts.push(`\nTask: ${sim.task}\nOutcome: ${sim.outcome}\nSimilarity: ${Math.round(sim.similarity * 100)}%\n${sim.outcome === 'success' ? '\u2705 Successfully completed' : '\u274C Had issues'}\n `.trim());\n }\n \n return contextParts.join('\\n\\n');\n }\n\n /**\n * Format patterns for context inclusion\n */\n private async formatPatterns(patterns: HistoricalPattern[]): Promise<string> {\n const contextParts: string[] = [];\n \n contextParts.push('Relevant patterns from experience:');\n \n for (const pattern of patterns) {\n contextParts.push(`\nPattern: ${pattern.pattern}\nType: ${pattern.type}\nFrequency: ${pattern.frequency} occurrences\n${pattern.resolution ? `Resolution: ${pattern.resolution}` : ''}\nRelevance: ${Math.round(pattern.relevance * 100)}%\n `.trim());\n }\n \n return contextParts.join('\\n\\n');\n }\n\n /**\n * Format decisions for context inclusion\n */\n private formatDecisions(decisions: any[]): string {\n const contextParts: string[] = [];\n \n contextParts.push('Recent successful decisions:');\n \n for (const decision of decisions) {\n contextParts.push(`\nDecision: ${decision.decision}\nReasoning: ${decision.reasoning}\nDate: ${new Date(decision.timestamp).toLocaleDateString()}\n `.trim());\n }\n \n return contextParts.join('\\n\\n');\n }\n\n /**\n * Synthesize all context sources into coherent input\n */\n private synthesizeContext(sources: ContextSource[]): string {\n if (sources.length === 0) {\n return 'No relevant historical context found.';\n }\n\n const contextParts: string[] = [];\n \n contextParts.push('Context from StackMemory:');\n \n // Sort by weight (importance)\n const sortedSources = sources.sort((a, b) => b.weight - a.weight);\n \n for (const source of sortedSources) {\n contextParts.push(`\\n--- ${source.type.replace('_', ' ').toUpperCase()} ---`);\n contextParts.push(source.content);\n }\n \n contextParts.push('\\nUse this context to inform your approach to the current task.');\n \n return contextParts.join('\\n');\n }\n\n /**\n * Determine task outcome from frame history\n */\n private async determineTaskOutcome(frameId: string): Promise<'success' | 'failure' | 'unknown'> {\n try {\n if (!this.frameManager) return 'unknown';\n \n const frame = await this.frameManager.getFrame(frameId);\n if (!frame) return 'unknown';\n \n // Simple heuristic - check if frame was properly closed\n if (frame.state === 'closed' && frame.outputs) {\n return 'success';\n }\n \n return frame.state === 'closed' ? 'failure' : 'unknown';\n \n } catch {\n return 'unknown';\n }\n }\n\n /**\n * Get examples of a specific pattern\n */\n private async getPatternExamples(pattern: string): Promise<string[]> {\n // Would search for concrete examples of this pattern\n // For now, return empty array\n return [];\n }\n}\n\n// Export default instance\nexport const stackMemoryContextLoader = new StackMemoryContextLoader();"],
5
- "mappings": "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",
6
- "names": ["similarTasks", "patterns"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/coordination/enhanced-coordination.ts"],
4
- "sourcesContent": ["/**\n * Enhanced Agent Coordination System\n * Provides advanced coordination patterns, conflict resolution, and inter-agent communication\n */\n\nimport { EventEmitter } from 'events';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { Agent, SwarmTask, CoordinationEvent } from '../types.js';\n\nexport interface CoordinationMessage {\n id: string;\n from: string; // agent ID\n to: string[] | 'broadcast'; // agent IDs or broadcast\n type:\n | 'status_update'\n | 'help_request'\n | 'resource_conflict'\n | 'task_handoff'\n | 'knowledge_share';\n content: any;\n timestamp: number;\n priority: 'low' | 'normal' | 'high' | 'urgent';\n}\n\nexport interface TaskDependency {\n taskId: string;\n dependsOn: string[];\n blockingFor: string[];\n estimatedCompletionTime: number;\n criticalPath: boolean;\n}\n\nexport interface ConflictResolution {\n id: string;\n type: 'resource' | 'task_overlap' | 'knowledge_conflict' | 'priority_dispute';\n involvedAgents: string[];\n description: string;\n resolutionStrategy:\n | 'voting'\n | 'expertise_based'\n | 'random'\n | 'manager_override';\n resolution: any;\n timestamp: number;\n status: 'pending' | 'resolved' | 'escalated';\n}\n\nexport class EnhancedCoordinationSystem extends EventEmitter {\n private agents: Map<string, Agent> = new Map();\n private messageQueue: CoordinationMessage[] = [];\n private dependencies: Map<string, TaskDependency> = new Map();\n private conflicts: Map<string, ConflictResolution> = new Map();\n private coordinationRules: CoordinationRule[] = [];\n\n constructor() {\n super();\n this.setupDefaultRules();\n }\n\n /**\n * Register an agent with the coordination system\n */\n registerAgent(agent: Agent): void {\n this.agents.set(agent.id, agent);\n logger.info(`Agent ${agent.role} registered for coordination`);\n\n // Notify other agents\n this.broadcastMessage({\n id: this.generateId(),\n from: 'system',\n to: 'broadcast',\n type: 'status_update',\n content: { type: 'agent_joined', agent: agent.role },\n timestamp: Date.now(),\n priority: 'normal',\n });\n }\n\n /**\n * Send message between agents\n */\n sendMessage(message: Omit<CoordinationMessage, 'id' | 'timestamp'>): void {\n const fullMessage: CoordinationMessage = {\n ...message,\n id: this.generateId(),\n timestamp: Date.now(),\n };\n\n this.messageQueue.push(fullMessage);\n this.routeMessage(fullMessage);\n this.emit('messageReceived', fullMessage);\n }\n\n /**\n * Broadcast message to all agents\n */\n broadcastMessage(\n message: Omit<CoordinationMessage, 'id' | 'timestamp'>\n ): void {\n this.sendMessage({\n ...message,\n to: 'broadcast',\n });\n }\n\n /**\n * Request help from other agents\n */\n requestHelp(fromAgent: string, helpType: string, context: any): void {\n const suitableAgents = this.findSuitableHelpers(helpType);\n\n this.sendMessage({\n from: fromAgent,\n to: suitableAgents,\n type: 'help_request',\n content: {\n helpType,\n context,\n requesterCapabilities: this.agents.get(fromAgent)?.capabilities || [],\n },\n priority: 'high',\n });\n }\n\n /**\n * Add task dependency\n */\n addDependency(dependency: TaskDependency): void {\n this.dependencies.set(dependency.taskId, dependency);\n this.updateCriticalPath();\n logger.info(\n `Added dependency: ${dependency.taskId} depends on ${dependency.dependsOn.join(', ')}`\n );\n }\n\n /**\n * Resolve conflicts automatically\n */\n async resolveConflict(conflictId: string): Promise<boolean> {\n const conflict = this.conflicts.get(conflictId);\n if (!conflict) return false;\n\n try {\n switch (conflict.resolutionStrategy) {\n case 'voting':\n conflict.resolution = await this.resolveByVoting(conflict);\n break;\n case 'expertise_based':\n conflict.resolution = await this.resolveByExpertise(conflict);\n break;\n case 'random':\n conflict.resolution = await this.resolveRandomly(conflict);\n break;\n case 'manager_override':\n conflict.resolution = await this.resolveByManagerOverride(conflict);\n break;\n }\n\n conflict.status = 'resolved';\n this.conflicts.set(conflictId, conflict);\n\n // Notify agents of resolution\n this.broadcastMessage({\n from: 'system',\n to: conflict.involvedAgents,\n type: 'status_update',\n content: {\n type: 'conflict_resolved',\n conflictId,\n resolution: conflict.resolution,\n },\n priority: 'high',\n });\n\n return true;\n } catch (error) {\n conflict.status = 'escalated';\n logger.error(`Failed to resolve conflict ${conflictId}:`, error as Error);\n return false;\n }\n }\n\n /**\n * Get optimal task execution order considering dependencies\n */\n getOptimalExecutionOrder(tasks: SwarmTask[]): SwarmTask[] {\n const graph = this.buildDependencyGraph(tasks);\n return this.topologicalSort(graph, tasks);\n }\n\n /**\n * Detect and report coordination patterns\n */\n analyzeCoordinationPatterns(): {\n communicationFrequency: Map<string, number>;\n helpRequestPatterns: any[];\n conflictFrequency: Map<string, number>;\n bottlenecks: string[];\n } {\n const patterns = {\n communicationFrequency: new Map<string, number>(),\n helpRequestPatterns: [],\n conflictFrequency: new Map<string, number>(),\n bottlenecks: this.identifyBottlenecks(),\n };\n\n // Analyze message patterns\n for (const message of this.messageQueue) {\n const key = `${message.from}-${message.type}`;\n patterns.communicationFrequency.set(\n key,\n (patterns.communicationFrequency.get(key) || 0) + 1\n );\n }\n\n // Analyze conflicts\n for (const conflict of this.conflicts.values()) {\n patterns.conflictFrequency.set(\n conflict.type,\n (patterns.conflictFrequency.get(conflict.type) || 0) + 1\n );\n }\n\n return patterns;\n }\n\n /**\n * Load balancing recommendations\n */\n getLoadBalancingRecommendations(): {\n overloadedAgents: string[];\n underutilizedAgents: string[];\n suggestedReassignments: Array<{\n fromAgent: string;\n toAgent: string;\n taskType: string;\n reason: string;\n }>;\n } {\n const recommendations = {\n overloadedAgents: [],\n underutilizedAgents: [],\n suggestedReassignments: [],\n };\n\n // Analyze agent workloads\n for (const agent of this.agents.values()) {\n const workload = this.calculateAgentWorkload(agent);\n\n if (workload > 0.8) {\n recommendations.overloadedAgents.push(agent.id);\n } else if (workload < 0.3) {\n recommendations.underutilizedAgents.push(agent.id);\n }\n }\n\n // Generate reassignment suggestions\n for (const overloaded of recommendations.overloadedAgents) {\n for (const underutilized of recommendations.underutilizedAgents) {\n const compatibility = this.checkAgentCompatibility(\n overloaded,\n underutilized\n );\n if (compatibility.score > 0.7) {\n recommendations.suggestedReassignments.push({\n fromAgent: overloaded,\n toAgent: underutilized,\n taskType: compatibility.bestTaskType,\n reason: `Load balancing: ${compatibility.reason}`,\n });\n }\n }\n }\n\n return recommendations;\n }\n\n private routeMessage(message: CoordinationMessage): void {\n if (message.to === 'broadcast') {\n // Route to all agents except sender\n for (const agentId of this.agents.keys()) {\n if (agentId !== message.from) {\n this.deliverMessage(agentId, message);\n }\n }\n } else {\n // Route to specific agents\n for (const agentId of message.to as string[]) {\n this.deliverMessage(agentId, message);\n }\n }\n\n // Apply coordination rules\n this.applyCoordinationRules(message);\n }\n\n private deliverMessage(agentId: string, message: CoordinationMessage): void {\n const agent = this.agents.get(agentId);\n if (agent) {\n // Store message for agent (in real implementation, would integrate with agent's message handler)\n logger.debug(`Message delivered to ${agent.role}: ${message.type}`);\n }\n }\n\n private findSuitableHelpers(helpType: string): string[] {\n const helpers: string[] = [];\n\n for (const agent of this.agents.values()) {\n if (this.canProvideHelp(agent, helpType)) {\n helpers.push(agent.id);\n }\n }\n\n return helpers;\n }\n\n private canProvideHelp(agent: Agent, helpType: string): boolean {\n // Check if agent has relevant capabilities\n const capabilities = agent.capabilities || [];\n\n switch (helpType) {\n case 'code_review':\n return (\n capabilities.includes('code_review') || agent.role === 'reviewer'\n );\n case 'debugging':\n return capabilities.includes('debugging') || agent.role === 'developer';\n case 'testing':\n return capabilities.includes('testing') || agent.role === 'tester';\n case 'optimization':\n return (\n capabilities.includes('optimization') || agent.role === 'optimizer'\n );\n default:\n return false;\n }\n }\n\n private async resolveByVoting(conflict: ConflictResolution): Promise<any> {\n // Simulate voting resolution\n const votes = new Map();\n for (const agentId of conflict.involvedAgents) {\n const agent = this.agents.get(agentId);\n if (agent) {\n // In real implementation, would request vote from agent\n votes.set(agentId, Math.random() > 0.5 ? 'option_a' : 'option_b');\n }\n }\n\n // Count votes\n const results = new Map();\n for (const vote of votes.values()) {\n results.set(vote, (results.get(vote) || 0) + 1);\n }\n\n // Return winning option\n return Array.from(results.entries()).reduce((a, b) =>\n a[1] > b[1] ? a : b\n )[0];\n }\n\n private async resolveByExpertise(conflict: ConflictResolution): Promise<any> {\n // Find most expert agent for the conflict type\n let bestAgent = null;\n let bestExpertise = 0;\n\n for (const agentId of conflict.involvedAgents) {\n const agent = this.agents.get(agentId);\n if (agent) {\n const expertise = this.calculateExpertise(agent, conflict.type);\n if (expertise > bestExpertise) {\n bestExpertise = expertise;\n bestAgent = agent;\n }\n }\n }\n\n return {\n resolutionSource: bestAgent?.id,\n method: 'expertise_based',\n expertiseScore: bestExpertise,\n };\n }\n\n private async resolveRandomly(conflict: ConflictResolution): Promise<any> {\n const options = ['option_a', 'option_b', 'compromise'];\n return options[Math.floor(Math.random() * options.length)];\n }\n\n private async resolveByManagerOverride(\n conflict: ConflictResolution\n ): Promise<any> {\n // Find coordinator or architect agent\n const manager = Array.from(this.agents.values()).find(\n (agent) => agent.role === 'coordinator' || agent.role === 'architect'\n );\n\n return {\n resolutionSource: manager?.id || 'system',\n method: 'manager_override',\n };\n }\n\n private calculateExpertise(agent: Agent, conflictType: string): number {\n // Calculate agent expertise for specific conflict type\n const capabilities = agent.capabilities || [];\n const performance = agent.performance;\n\n let expertise = 0;\n\n // Base expertise from capabilities\n switch (conflictType) {\n case 'resource':\n expertise += capabilities.includes('resource_optimization') ? 0.5 : 0;\n break;\n case 'task_overlap':\n expertise += capabilities.includes('coordination') ? 0.5 : 0;\n break;\n }\n\n // Add performance-based expertise\n if (performance) {\n expertise += performance.successRate * 0.3;\n expertise += Math.min(performance.tasksCompleted / 10, 0.2);\n }\n\n return Math.min(expertise, 1.0);\n }\n\n private buildDependencyGraph(tasks: SwarmTask[]): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n\n for (const task of tasks) {\n const deps = this.dependencies.get(task.id);\n graph.set(task.id, deps?.dependsOn || []);\n }\n\n return graph;\n }\n\n private topologicalSort(\n graph: Map<string, string[]>,\n tasks: SwarmTask[]\n ): SwarmTask[] {\n const result: SwarmTask[] = [];\n const visited = new Set<string>();\n const visiting = new Set<string>();\n\n const visit = (taskId: string) => {\n if (visited.has(taskId)) return;\n if (visiting.has(taskId)) {\n logger.warn(`Circular dependency detected involving task: ${taskId}`);\n return;\n }\n\n visiting.add(taskId);\n const deps = graph.get(taskId) || [];\n\n for (const dep of deps) {\n visit(dep);\n }\n\n visiting.delete(taskId);\n visited.add(taskId);\n\n const task = tasks.find((t) => t.id === taskId);\n if (task) result.push(task);\n };\n\n for (const task of tasks) {\n visit(task.id);\n }\n\n return result;\n }\n\n private updateCriticalPath(): void {\n // Identify critical path through dependencies\n // Implementation would use network analysis algorithms\n logger.debug('Critical path updated');\n }\n\n private identifyBottlenecks(): string[] {\n const bottlenecks: string[] = [];\n\n // Find tasks with many dependencies\n for (const [taskId, dep] of this.dependencies) {\n if (dep.blockingFor.length > 2) {\n bottlenecks.push(taskId);\n }\n }\n\n return bottlenecks;\n }\n\n private calculateAgentWorkload(agent: Agent): number {\n // Calculate workload based on current tasks, message frequency, etc.\n let workload = 0;\n\n if (agent.status === 'active') workload += 0.5;\n if (agent.currentTask) workload += 0.3;\n\n // Add message handling workload\n const recentMessages = this.messageQueue.filter(\n (m) =>\n (m.from === agent.id ||\n (Array.isArray(m.to) && m.to.includes(agent.id))) &&\n Date.now() - m.timestamp < 300000 // 5 minutes\n );\n\n workload += Math.min(recentMessages.length * 0.05, 0.2);\n\n return Math.min(workload, 1.0);\n }\n\n private checkAgentCompatibility(\n agent1Id: string,\n agent2Id: string\n ): {\n score: number;\n bestTaskType: string;\n reason: string;\n } {\n const agent1 = this.agents.get(agent1Id);\n const agent2 = this.agents.get(agent2Id);\n\n if (!agent1 || !agent2) {\n return { score: 0, bestTaskType: '', reason: 'Agent not found' };\n }\n\n // Check capability overlap\n const caps1 = new Set(agent1.capabilities || []);\n const caps2 = new Set(agent2.capabilities || []);\n const overlap = new Set([...caps1].filter((x) => caps2.has(x)));\n\n const score = overlap.size / Math.max(caps1.size, caps2.size, 1);\n\n return {\n score,\n bestTaskType: Array.from(overlap)[0] || 'general',\n reason: `Capability overlap: ${overlap.size} common skills`,\n };\n }\n\n private applyCoordinationRules(message: CoordinationMessage): void {\n for (const rule of this.coordinationRules) {\n if (rule.condition(message)) {\n rule.action(message, this);\n }\n }\n }\n\n private setupDefaultRules(): void {\n this.coordinationRules = [\n {\n id: 'help_request_timeout',\n condition: (msg) => msg.type === 'help_request',\n action: (msg, system) => {\n // Auto-escalate help requests after timeout\n setTimeout(() => {\n system.broadcastMessage({\n from: 'system',\n to: 'broadcast',\n type: 'status_update',\n content: {\n type: 'help_request_timeout',\n originalRequest: msg.id,\n },\n priority: 'urgent',\n });\n }, 300000); // 5 minutes\n },\n },\n ];\n }\n\n private generateId(): string {\n return `coord_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\ninterface CoordinationRule {\n id: string;\n condition: (message: CoordinationMessage) => boolean;\n action: (\n message: CoordinationMessage,\n system: EnhancedCoordinationSystem\n ) => void;\n}\n\nexport default EnhancedCoordinationSystem;\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/integrations/ralph/index.ts"],
4
- "sourcesContent": ["/**\n * Ralph Wiggum Loop - StackMemory Integration\n * Core module for bridging Ralph's iteration-based loops with StackMemory's persistence\n */\n\nexport { RalphStackMemoryBridge } from './bridge/ralph-stackmemory-bridge.js';\nexport { ContextBudgetManager } from './context/context-budget-manager.js';\nexport { StateReconciler } from './state/state-reconciler.js';\nexport { IterationLifecycle } from './lifecycle/iteration-lifecycle.js';\nexport { PerformanceOptimizer } from './performance/performance-optimizer.js';\nexport * from './types.js';"],
5
- "mappings": ";;;;AAKA,SAAS,8BAA8B;AACvC,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AACrC,cAAc;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/learning/pattern-learner.ts"],
4
- "sourcesContent": ["/**\n * Pattern Learning Engine for Ralph Loops\n * Analyzes completed loops to extract reusable patterns and strategies\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { FrameManager } from '../../../core/context/index.js';\nimport { sharedContextLayer } from '../../../core/context/shared-context-layer.js';\nimport { sessionManager } from '../../../core/session/index.js';\nimport {\n LearnedPattern,\n LoopAnalysis,\n PatternType,\n SuccessMetrics,\n FailureAnalysis,\n RalphLoopState\n} from '../types.js';\n\nexport interface PatternLearningConfig {\n minLoopCountForPattern: number;\n confidenceThreshold: number;\n maxPatternsPerType: number;\n analysisDepth: 'shallow' | 'deep' | 'comprehensive';\n}\n\nexport class PatternLearner {\n private frameManager?: FrameManager;\n private config: PatternLearningConfig;\n\n constructor(config?: Partial<PatternLearningConfig>) {\n this.config = {\n minLoopCountForPattern: 3,\n confidenceThreshold: 0.7,\n maxPatternsPerType: 10,\n analysisDepth: 'deep',\n ...config\n };\n\n logger.info('Pattern learner initialized', this.config);\n }\n\n async initialize(): Promise<void> {\n try {\n await sessionManager.initialize();\n await sharedContextLayer.initialize();\n\n const session = await sessionManager.getOrCreateSession({});\n if (session.database) {\n this.frameManager = new FrameManager(session.database, session.projectId);\n }\n\n logger.info('Pattern learner initialized successfully');\n } catch (error: unknown) {\n logger.error('Failed to initialize pattern learner', error as Error);\n throw error;\n }\n }\n\n /**\n * Learn patterns from all completed Ralph loops\n */\n async learnFromCompletedLoops(): Promise<LearnedPattern[]> {\n logger.info('Starting pattern learning from completed loops');\n\n try {\n const completedLoops = await this.getCompletedRalphLoops();\n logger.info(`Found ${completedLoops.length} completed loops for analysis`);\n\n if (completedLoops.length < this.config.minLoopCountForPattern) {\n logger.info('Not enough loops for pattern extraction');\n return [];\n }\n\n const patterns: LearnedPattern[] = [];\n\n // Learn success patterns\n const successPatterns = await this.extractSuccessPatterns(completedLoops);\n patterns.push(...successPatterns);\n\n // Learn failure patterns (to avoid)\n const failurePatterns = await this.extractFailurePatterns(completedLoops);\n patterns.push(...failurePatterns);\n\n // Learn iteration patterns\n const iterationPatterns = await this.extractIterationPatterns(completedLoops);\n patterns.push(...iterationPatterns);\n\n // Learn task-specific patterns\n const taskPatterns = await this.extractTaskPatterns(completedLoops);\n patterns.push(...taskPatterns);\n\n // Save patterns to shared context\n await this.saveLearnedPatterns(patterns);\n\n logger.info(`Learned ${patterns.length} patterns from ${completedLoops.length} loops`);\n return patterns;\n\n } catch (error: unknown) {\n logger.error('Failed to learn patterns', error as Error);\n throw error;\n }\n }\n\n /**\n * Learn patterns specific to a task type\n */\n async learnForTaskType(taskType: string): Promise<LearnedPattern[]> {\n logger.info(`Learning patterns for task type: ${taskType}`);\n\n const completedLoops = await this.getCompletedRalphLoops();\n const relevantLoops = completedLoops.filter(loop => \n this.classifyTaskType(loop.task) === taskType\n );\n\n if (relevantLoops.length < this.config.minLoopCountForPattern) {\n return [];\n }\n\n return this.extractSpecializedPatterns(relevantLoops, taskType);\n }\n\n /**\n * Get all completed Ralph loops from StackMemory\n */\n private async getCompletedRalphLoops(): Promise<LoopAnalysis[]> {\n if (!this.frameManager) {\n throw new Error('Frame manager not initialized');\n }\n\n try {\n // Get all Ralph loop frames\n const ralphFrames = await this.frameManager.searchFrames({\n type: 'task',\n namePattern: 'ralph-*',\n state: 'closed'\n });\n\n const analyses: LoopAnalysis[] = [];\n\n for (const frame of ralphFrames) {\n try {\n const analysis = await this.analyzeCompletedLoop(frame);\n if (analysis) {\n analyses.push(analysis);\n }\n } catch (error: unknown) {\n logger.warn(`Failed to analyze loop ${frame.frame_id}`, error as Error);\n }\n }\n\n return analyses;\n\n } catch (error: unknown) {\n logger.error('Failed to get completed loops', error as Error);\n return [];\n }\n }\n\n /**\n * Analyze a completed loop for patterns\n */\n private async analyzeCompletedLoop(ralphFrame: any): Promise<LoopAnalysis | null> {\n if (!this.frameManager) return null;\n\n try {\n // Get loop state from frame inputs\n const loopState = ralphFrame.inputs as RalphLoopState;\n \n // Get all iteration frames for this loop\n const iterationFrames = await this.frameManager.searchFrames({\n type: 'subtask',\n namePattern: 'iteration-*',\n parentId: ralphFrame.frame_id\n });\n\n // Calculate success metrics\n const successMetrics = this.calculateSuccessMetrics(iterationFrames);\n \n // Analyze iteration patterns\n const iterationAnalysis = this.analyzeIterations(iterationFrames);\n \n // Determine outcome\n const outcome = this.determineLoopOutcome(ralphFrame, iterationFrames);\n\n return {\n loopId: loopState.loopId,\n task: loopState.task,\n criteria: loopState.criteria,\n taskType: this.classifyTaskType(loopState.task),\n iterationCount: iterationFrames.length,\n outcome,\n successMetrics,\n iterationAnalysis,\n duration: ralphFrame.updated_at - ralphFrame.created_at,\n startTime: ralphFrame.created_at,\n endTime: ralphFrame.updated_at\n };\n\n } catch (error: unknown) {\n logger.error('Failed to analyze loop', error as Error);\n return null;\n }\n }\n\n /**\n * Extract patterns from successful loops\n */\n private async extractSuccessPatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const successfulLoops = loops.filter(l => l.outcome === 'success');\n \n if (successfulLoops.length < this.config.minLoopCountForPattern) {\n return [];\n }\n\n const patterns: LearnedPattern[] = [];\n\n // Pattern: Optimal iteration count\n const avgIterations = successfulLoops.reduce((sum, l) => sum + l.iterationCount, 0) / successfulLoops.length;\n patterns.push({\n id: 'optimal-iterations',\n type: 'iteration_strategy',\n pattern: `Successful tasks typically complete in ${Math.round(avgIterations)} iterations`,\n confidence: this.calculateConfidence(successfulLoops.length),\n frequency: successfulLoops.length,\n strategy: `Target ${Math.round(avgIterations)} iterations for similar tasks`,\n examples: successfulLoops.slice(0, 3).map(l => l.task),\n metadata: {\n avgIterations,\n minIterations: Math.min(...successfulLoops.map(l => l.iterationCount)),\n maxIterations: Math.max(...successfulLoops.map(l => l.iterationCount))\n }\n });\n\n // Pattern: Task completion criteria\n const criteriaPatterns = this.extractCriteriaPatterns(successfulLoops);\n patterns.push(...criteriaPatterns);\n\n // Pattern: Common success factors\n const successFactors = this.extractSuccessFactors(successfulLoops);\n patterns.push(...successFactors);\n\n return patterns.filter(p => p.confidence >= this.config.confidenceThreshold);\n }\n\n /**\n * Extract patterns from failed loops to avoid\n */\n private async extractFailurePatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const failedLoops = loops.filter(l => l.outcome === 'failure');\n \n if (failedLoops.length < this.config.minLoopCountForPattern) {\n return [];\n }\n\n const patterns: LearnedPattern[] = [];\n\n // Pattern: Common failure points\n const commonFailures = this.analyzeFailurePoints(failedLoops);\n for (const failure of commonFailures) {\n patterns.push({\n id: `avoid-${failure.type}`,\n type: 'failure_avoidance',\n pattern: `Avoid: ${failure.pattern}`,\n confidence: this.calculateConfidence(failure.frequency),\n frequency: failure.frequency,\n strategy: failure.avoidanceStrategy,\n examples: failure.examples,\n metadata: { failureType: failure.type }\n });\n }\n\n return patterns.filter(p => p.confidence >= this.config.confidenceThreshold);\n }\n\n /**\n * Extract iteration-specific patterns\n */\n private async extractIterationPatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const patterns: LearnedPattern[] = [];\n\n // Analyze iteration sequences\n const iterationSequences = this.analyzeIterationSequences(loops);\n \n for (const sequence of iterationSequences) {\n if (sequence.frequency >= this.config.minLoopCountForPattern) {\n patterns.push({\n id: `iteration-sequence-${sequence.id}`,\n type: 'iteration_sequence',\n pattern: sequence.description,\n confidence: this.calculateConfidence(sequence.frequency),\n frequency: sequence.frequency,\n strategy: sequence.strategy,\n examples: sequence.examples,\n metadata: { sequenceType: sequence.type }\n });\n }\n }\n\n return patterns;\n }\n\n /**\n * Extract task-specific patterns\n */\n private async extractTaskPatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const taskGroups = this.groupByTaskType(loops);\n const patterns: LearnedPattern[] = [];\n\n for (const [taskType, taskLoops] of Object.entries(taskGroups)) {\n if (taskLoops.length >= this.config.minLoopCountForPattern) {\n const taskSpecificPatterns = await this.extractSpecializedPatterns(taskLoops, taskType);\n patterns.push(...taskSpecificPatterns);\n }\n }\n\n return patterns;\n }\n\n /**\n * Extract specialized patterns for specific task types\n */\n private async extractSpecializedPatterns(loops: LoopAnalysis[], taskType: string): Promise<LearnedPattern[]> {\n const patterns: LearnedPattern[] = [];\n const successful = loops.filter(l => l.outcome === 'success');\n\n if (successful.length === 0) return patterns;\n\n // Task-specific success pattern\n patterns.push({\n id: `${taskType}-success-pattern`,\n type: 'task_specific',\n pattern: `${taskType} tasks: ${this.summarizeSuccessPattern(successful)}`,\n confidence: this.calculateConfidence(successful.length),\n frequency: successful.length,\n strategy: this.generateTaskStrategy(successful),\n examples: successful.slice(0, 2).map(l => l.task),\n metadata: { taskType, totalAttempts: loops.length }\n });\n\n return patterns;\n }\n\n /**\n * Calculate success metrics for iterations\n */\n private calculateSuccessMetrics(iterations: any[]): SuccessMetrics {\n const total = iterations.length;\n const successful = iterations.filter(i => i.outputs?.success).length;\n \n return {\n iterationCount: total,\n successRate: total > 0 ? successful / total : 0,\n averageProgress: this.calculateAverageProgress(iterations),\n timeToCompletion: total > 0 ? iterations[total - 1].updated_at - iterations[0].created_at : 0\n };\n }\n\n /**\n * Classify task type based on description\n */\n private classifyTaskType(task: string): string {\n const taskLower = task.toLowerCase();\n \n if (taskLower.includes('test') || taskLower.includes('unit')) return 'testing';\n if (taskLower.includes('fix') || taskLower.includes('bug')) return 'bugfix';\n if (taskLower.includes('refactor')) return 'refactoring';\n if (taskLower.includes('add') || taskLower.includes('implement')) return 'feature';\n if (taskLower.includes('document')) return 'documentation';\n if (taskLower.includes('optimize') || taskLower.includes('performance')) return 'optimization';\n \n return 'general';\n }\n\n /**\n * Determine loop outcome\n */\n private determineLoopOutcome(ralphFrame: any, iterations: any[]): 'success' | 'failure' | 'unknown' {\n if (ralphFrame.digest_json?.status === 'completed') return 'success';\n if (iterations.length === 0) return 'unknown';\n \n const lastIteration = iterations[iterations.length - 1];\n if (lastIteration.outputs?.success) return 'success';\n \n return 'failure';\n }\n\n /**\n * Calculate confidence based on frequency\n */\n private calculateConfidence(frequency: number): number {\n // Simple confidence calculation based on sample size\n return Math.min(0.95, Math.log(frequency + 1) / Math.log(10));\n }\n\n /**\n * Save learned patterns to shared context\n */\n private async saveLearnedPatterns(patterns: LearnedPattern[]): Promise<void> {\n try {\n const context = await sharedContextLayer.getSharedContext();\n if (!context) return;\n\n // Convert to shared context format\n const contextPatterns = patterns.map(p => ({\n pattern: p.pattern,\n type: this.mapPatternType(p.type),\n frequency: p.frequency,\n lastSeen: Date.now(),\n resolution: p.strategy\n }));\n\n // Add to global patterns\n context.globalPatterns.push(...contextPatterns);\n\n // Keep only the most relevant patterns\n context.globalPatterns.sort((a, b) => b.frequency - a.frequency);\n context.globalPatterns = context.globalPatterns.slice(0, 100);\n\n await sharedContextLayer.updateSharedContext(context);\n \n logger.info(`Saved ${patterns.length} patterns to shared context`);\n\n } catch (error: unknown) {\n logger.error('Failed to save patterns', error as Error);\n }\n }\n\n /**\n * Map pattern types to shared context types\n */\n private mapPatternType(patternType: PatternType): 'error' | 'success' | 'decision' | 'learning' {\n switch (patternType) {\n case 'failure_avoidance': return 'error';\n case 'success_strategy': return 'success';\n case 'task_specific': return 'learning';\n default: return 'learning';\n }\n }\n\n // Additional helper methods for pattern analysis\n private analyzeIterations(iterations: any[]): any {\n return {\n avgDuration: iterations.length > 0 ? \n iterations.reduce((sum, i) => sum + (i.updated_at - i.created_at), 0) / iterations.length : 0,\n progressPattern: this.extractProgressPattern(iterations),\n commonIssues: this.extractCommonIssues(iterations)\n };\n }\n\n private extractProgressPattern(iterations: any[]): string {\n // Analyze how progress typically unfolds\n const progressSteps = iterations.map((_, i) => {\n const progress = i / iterations.length;\n return Math.round(progress * 100);\n });\n \n return progressSteps.join(' \u2192 ') + '%';\n }\n\n private extractCommonIssues(iterations: any[]): string[] {\n // Extract common error patterns from iteration outputs\n return iterations\n .filter(i => i.outputs?.errors?.length > 0)\n .flatMap(i => i.outputs.errors)\n .slice(0, 3);\n }\n\n private extractCriteriaPatterns(loops: LoopAnalysis[]): LearnedPattern[] {\n // Analyze common successful completion criteria\n const criteriaWords = loops.flatMap(l => l.criteria.toLowerCase().split(/\\s+/));\n const wordCounts = criteriaWords.reduce((acc, word) => {\n acc[word] = (acc[word] || 0) + 1;\n return acc;\n }, {} as Record<string, number>);\n\n const commonCriteria = Object.entries(wordCounts)\n .filter(([_, count]) => count >= this.config.minLoopCountForPattern)\n .sort((a, b) => b[1] - a[1])\n .slice(0, 3);\n\n return commonCriteria.map(([word, count]) => ({\n id: `criteria-${word}`,\n type: 'success_strategy' as PatternType,\n pattern: `Successful tasks often include \"${word}\" in completion criteria`,\n confidence: this.calculateConfidence(count),\n frequency: count,\n strategy: `Consider including \"${word}\" in task completion criteria`,\n examples: loops.filter(l => l.criteria.toLowerCase().includes(word)).slice(0, 2).map(l => l.task),\n metadata: { criteriaWord: word }\n }));\n }\n\n private extractSuccessFactors(loops: LoopAnalysis[]): LearnedPattern[] {\n // Placeholder for success factor analysis\n return [];\n }\n\n private analyzeFailurePoints(loops: LoopAnalysis[]): FailureAnalysis[] {\n // Placeholder for failure analysis\n return [];\n }\n\n private analyzeIterationSequences(loops: LoopAnalysis[]): any[] {\n // Placeholder for iteration sequence analysis\n return [];\n }\n\n private groupByTaskType(loops: LoopAnalysis[]): Record<string, LoopAnalysis[]> {\n return loops.reduce((acc, loop) => {\n const type = loop.taskType;\n if (!acc[type]) acc[type] = [];\n acc[type].push(loop);\n return acc;\n }, {} as Record<string, LoopAnalysis[]>);\n }\n\n private summarizeSuccessPattern(loops: LoopAnalysis[]): string {\n const avgIterations = loops.reduce((sum, l) => sum + l.iterationCount, 0) / loops.length;\n return `typically complete in ${Math.round(avgIterations)} iterations with ${Math.round(loops[0]?.successMetrics?.successRate * 100 || 0)}% success rate`;\n }\n\n private generateTaskStrategy(loops: LoopAnalysis[]): string {\n const avgIterations = loops.reduce((sum, l) => sum + l.iterationCount, 0) / loops.length;\n return `Plan for approximately ${Math.round(avgIterations)} iterations and focus on iterative improvement`;\n }\n\n private calculateAverageProgress(iterations: any[]): number {\n // Simple progress calculation\n return iterations.length > 0 ? iterations.length / 10 : 0; // Assume 10 iterations is 100% progress\n }\n}\n\n// Export default instance\nexport const patternLearner = new PatternLearner();"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/lifecycle/iteration-lifecycle.ts"],
4
- "sourcesContent": ["/**\n * Iteration Lifecycle Manager for Ralph-StackMemory Integration\n * Provides lifecycle hooks and event management for clean integration points\n */\n\nimport { EventEmitter } from 'events';\nimport { execSync } from 'child_process';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport {\n RalphLoopState,\n RalphIteration,\n IterationEvent,\n IterationEventType,\n RalphStackMemoryConfig,\n Checkpoint,\n IterationContext,\n} from '../types.js';\n\nexport interface LifecycleHooks {\n preIteration?: (context: IterationContext) => Promise<IterationContext>;\n postIteration?: (iteration: RalphIteration) => Promise<void>;\n onStateChange?: (oldState: RalphLoopState, newState: RalphLoopState) => Promise<void>;\n onError?: (error: Error, context: any) => Promise<void>;\n onComplete?: (state: RalphLoopState) => Promise<void>;\n onCheckpoint?: (checkpoint: Checkpoint) => Promise<void>;\n}\n\nexport class IterationLifecycle extends EventEmitter {\n private config: RalphStackMemoryConfig['lifecycle'];\n private hooks: LifecycleHooks = {};\n private checkpoints: Checkpoint[] = [];\n private currentIteration?: RalphIteration;\n private iterationHistory: IterationEvent[] = [];\n private activeTimers: Map<string, NodeJS.Timeout> = new Map();\n\n constructor(\n config?: Partial<RalphStackMemoryConfig['lifecycle']>,\n hooks?: LifecycleHooks\n ) {\n super();\n \n this.config = {\n hooks: {\n preIteration: config?.hooks?.preIteration ?? true,\n postIteration: config?.hooks?.postIteration ?? true,\n onStateChange: config?.hooks?.onStateChange ?? true,\n onError: config?.hooks?.onError ?? true,\n onComplete: config?.hooks?.onComplete ?? true,\n },\n checkpoints: {\n enabled: config?.checkpoints?.enabled ?? true,\n frequency: config?.checkpoints?.frequency || 5,\n retentionDays: config?.checkpoints?.retentionDays || 7,\n },\n };\n\n if (hooks) {\n this.registerHooks(hooks);\n }\n\n this.setupEventHandlers();\n }\n\n /**\n * Register lifecycle hooks\n */\n registerHooks(hooks: LifecycleHooks): void {\n this.hooks = { ...this.hooks, ...hooks };\n \n logger.debug('Lifecycle hooks registered', {\n registered: Object.keys(hooks),\n });\n }\n\n /**\n * Start iteration with lifecycle management\n */\n async startIteration(\n iterationNumber: number,\n context: IterationContext\n ): Promise<IterationContext> {\n logger.info('Starting iteration', { iteration: iterationNumber });\n\n // Emit start event\n this.emitEvent({\n type: 'iteration.started',\n timestamp: Date.now(),\n iteration: iterationNumber,\n data: { context },\n });\n\n // Execute pre-iteration hook if configured\n let processedContext = context;\n if (this.config.hooks.preIteration && this.hooks.preIteration) {\n try {\n processedContext = await this.hooks.preIteration(context);\n logger.debug('Pre-iteration hook executed', {\n original: context.tokenCount,\n processed: processedContext.tokenCount,\n });\n } catch (error: any) {\n await this.handleError(error, { phase: 'preIteration', context });\n }\n }\n\n // Start iteration timer for metrics\n this.startTimer(`iteration-${iterationNumber}`);\n\n return processedContext;\n }\n\n /**\n * Complete iteration with lifecycle management\n */\n async completeIteration(iteration: RalphIteration): Promise<void> {\n logger.info('Completing iteration', { iteration: iteration.number });\n\n this.currentIteration = iteration;\n\n // Stop iteration timer\n const duration = this.stopTimer(`iteration-${iteration.number}`);\n\n // Execute post-iteration hook if configured\n if (this.config.hooks.postIteration && this.hooks.postIteration) {\n try {\n await this.hooks.postIteration(iteration);\n logger.debug('Post-iteration hook executed');\n } catch (error: any) {\n await this.handleError(error, { phase: 'postIteration', iteration });\n }\n }\n\n // Create checkpoint if needed\n if (this.shouldCreateCheckpoint(iteration.number)) {\n await this.createCheckpoint(iteration);\n }\n\n // Emit completion event\n this.emitEvent({\n type: 'iteration.completed',\n timestamp: Date.now(),\n iteration: iteration.number,\n data: {\n iteration,\n duration,\n success: iteration.validation.testsPass,\n },\n });\n\n // Clean old checkpoints\n await this.cleanOldCheckpoints();\n }\n\n /**\n * Handle iteration failure\n */\n async failIteration(\n iterationNumber: number,\n error: Error,\n context?: any\n ): Promise<void> {\n logger.error('Iteration failed', {\n iteration: iterationNumber,\n error: error.message,\n });\n\n // Stop iteration timer\n this.stopTimer(`iteration-${iterationNumber}`);\n\n // Execute error hook if configured\n if (this.config.hooks.onError && this.hooks.onError) {\n try {\n await this.hooks.onError(error, context);\n } catch (hookError: any) {\n logger.error('Error hook failed', { error: hookError.message });\n }\n }\n\n // Emit failure event\n this.emitEvent({\n type: 'iteration.failed',\n timestamp: Date.now(),\n iteration: iterationNumber,\n data: {\n error: error.message,\n stack: error.stack,\n context,\n },\n });\n }\n\n /**\n * Handle state change\n */\n async handleStateChange(\n oldState: RalphLoopState,\n newState: RalphLoopState\n ): Promise<void> {\n logger.debug('State change detected', {\n old: oldState.status,\n new: newState.status,\n iteration: newState.iteration,\n });\n\n // Execute state change hook if configured\n if (this.config.hooks.onStateChange && this.hooks.onStateChange) {\n try {\n await this.hooks.onStateChange(oldState, newState);\n } catch (error: any) {\n await this.handleError(error, {\n phase: 'stateChange',\n oldState,\n newState,\n });\n }\n }\n\n // Emit state change event\n this.emitEvent({\n type: 'state.changed',\n timestamp: Date.now(),\n iteration: newState.iteration,\n data: {\n oldStatus: oldState.status,\n newStatus: newState.status,\n changes: this.detectStateChanges(oldState, newState),\n },\n });\n\n // Check for completion\n if (newState.status === 'completed' && oldState.status !== 'completed') {\n await this.handleCompletion(newState);\n }\n }\n\n /**\n * Handle loop completion\n */\n async handleCompletion(state: RalphLoopState): Promise<void> {\n logger.info('Loop completed', {\n iterations: state.iteration,\n duration: state.lastUpdateTime - state.startTime,\n });\n\n // Execute completion hook if configured\n if (this.config.hooks.onComplete && this.hooks.onComplete) {\n try {\n await this.hooks.onComplete(state);\n } catch (error: any) {\n await this.handleError(error, { phase: 'completion', state });\n }\n }\n\n // Create final checkpoint\n await this.createFinalCheckpoint(state);\n\n // Clean up timers\n this.cleanupTimers();\n }\n\n /**\n * Create checkpoint\n */\n async createCheckpoint(iteration: RalphIteration): Promise<Checkpoint> {\n const checkpoint: Checkpoint = {\n id: this.generateCheckpointId(),\n iteration: iteration.number,\n timestamp: Date.now(),\n state: await this.captureCurrentState(),\n gitCommit: await this.getCurrentGitCommit(),\n verified: false,\n };\n\n // Verify checkpoint\n checkpoint.verified = await this.verifyCheckpoint(checkpoint);\n\n this.checkpoints.push(checkpoint);\n\n logger.info('Checkpoint created', {\n id: checkpoint.id,\n iteration: checkpoint.iteration,\n verified: checkpoint.verified,\n });\n\n // Execute checkpoint hook if available\n if (this.hooks.onCheckpoint) {\n try {\n await this.hooks.onCheckpoint(checkpoint);\n } catch (error: any) {\n logger.error('Checkpoint hook failed', { error: error.message });\n }\n }\n\n // Emit checkpoint event\n this.emitEvent({\n type: 'checkpoint.created',\n timestamp: Date.now(),\n iteration: iteration.number,\n data: { checkpoint },\n });\n\n return checkpoint;\n }\n\n /**\n * Get checkpoints\n */\n getCheckpoints(): Checkpoint[] {\n return [...this.checkpoints];\n }\n\n /**\n * Get last checkpoint\n */\n getLastCheckpoint(): Checkpoint | undefined {\n return this.checkpoints[this.checkpoints.length - 1];\n }\n\n /**\n * Restore from checkpoint\n */\n async restoreFromCheckpoint(checkpointId: string): Promise<void> {\n const checkpoint = this.checkpoints.find(c => c.id === checkpointId);\n \n if (!checkpoint) {\n throw new Error(`Checkpoint not found: ${checkpointId}`);\n }\n\n logger.info('Restoring from checkpoint', {\n id: checkpoint.id,\n iteration: checkpoint.iteration,\n });\n\n // Restore git state\n if (checkpoint.gitCommit) {\n await this.restoreGitState(checkpoint.gitCommit);\n }\n\n // Restore Ralph state\n await this.restoreRalphState(checkpoint.state);\n\n logger.info('Checkpoint restored successfully');\n }\n\n /**\n * Get iteration events\n */\n getEvents(filter?: {\n type?: IterationEventType;\n iteration?: number;\n since?: number;\n }): IterationEvent[] {\n let events = [...this.iterationHistory];\n\n if (filter?.type) {\n events = events.filter(e => e.type === filter.type);\n }\n\n if (filter?.iteration !== undefined) {\n events = events.filter(e => e.iteration === filter.iteration);\n }\n\n if (filter?.since) {\n events = events.filter(e => e.timestamp >= filter.since);\n }\n\n return events;\n }\n\n /**\n * Clean up resources\n */\n cleanup(): void {\n this.cleanupTimers();\n this.removeAllListeners();\n this.iterationHistory = [];\n this.checkpoints = [];\n }\n\n /**\n * Setup internal event handlers\n */\n private setupEventHandlers(): void {\n // Log all events in debug mode\n this.on('*', (event: IterationEvent) => {\n logger.debug('Lifecycle event', {\n type: event.type,\n iteration: event.iteration,\n });\n });\n }\n\n /**\n * Emit and track event\n */\n private emitEvent(event: IterationEvent): void {\n this.iterationHistory.push(event);\n this.emit(event.type, event);\n this.emit('*', event); // Wildcard for all events\n }\n\n /**\n * Should create checkpoint based on frequency\n */\n private shouldCreateCheckpoint(iteration: number): boolean {\n if (!this.config.checkpoints.enabled) {\n return false;\n }\n\n return iteration % this.config.checkpoints.frequency === 0;\n }\n\n /**\n * Generate checkpoint ID\n */\n private generateCheckpointId(): string {\n return `chk-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n /**\n * Capture current state\n */\n private async captureCurrentState(): Promise<RalphLoopState> {\n // This would capture the full Ralph loop state\n // Placeholder implementation\n return {\n loopId: 'current',\n task: '',\n criteria: '',\n iteration: this.currentIteration?.number || 0,\n status: 'running',\n startTime: Date.now(),\n lastUpdateTime: Date.now(),\n };\n }\n\n /**\n * Get current git commit\n */\n private async getCurrentGitCommit(): Promise<string> {\n try {\n // execSync already imported at top\n return execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();\n } catch {\n return '';\n }\n }\n\n /**\n * Verify checkpoint integrity\n */\n private async verifyCheckpoint(checkpoint: Checkpoint): Promise<boolean> {\n try {\n // Verify state consistency\n if (!checkpoint.state.loopId || !checkpoint.state.task) {\n return false;\n }\n\n // Verify git commit exists\n if (checkpoint.gitCommit) {\n // execSync already imported at top\n execSync(`git rev-parse ${checkpoint.gitCommit}`, { encoding: 'utf8' });\n }\n\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Clean old checkpoints based on retention\n */\n private async cleanOldCheckpoints(): Promise<void> {\n const cutoff = Date.now() - this.config.checkpoints.retentionDays * 24 * 60 * 60 * 1000;\n \n const before = this.checkpoints.length;\n this.checkpoints = this.checkpoints.filter(c => c.timestamp >= cutoff);\n const removed = before - this.checkpoints.length;\n\n if (removed > 0) {\n logger.debug('Cleaned old checkpoints', { removed });\n }\n }\n\n /**\n * Create final checkpoint\n */\n private async createFinalCheckpoint(state: RalphLoopState): Promise<void> {\n const checkpoint: Checkpoint = {\n id: `final-${this.generateCheckpointId()}`,\n iteration: state.iteration,\n timestamp: Date.now(),\n state,\n gitCommit: await this.getCurrentGitCommit(),\n verified: true,\n };\n\n this.checkpoints.push(checkpoint);\n \n logger.info('Final checkpoint created', {\n id: checkpoint.id,\n iterations: state.iteration,\n });\n }\n\n /**\n * Restore git state\n */\n private async restoreGitState(commit: string): Promise<void> {\n // Stash any uncommitted changes\n execSync('git stash', { encoding: 'utf8' });\n \n // Checkout the commit\n execSync(`git checkout ${commit}`, { encoding: 'utf8' });\n }\n\n /**\n * Restore Ralph state\n */\n private async restoreRalphState(state: RalphLoopState): Promise<void> {\n // This would restore the Ralph loop state files\n // Placeholder implementation\n logger.debug('Ralph state restored', { iteration: state.iteration });\n }\n\n /**\n * Detect state changes\n */\n private detectStateChanges(\n oldState: RalphLoopState,\n newState: RalphLoopState\n ): string[] {\n const changes: string[] = [];\n\n for (const key of Object.keys(newState) as (keyof RalphLoopState)[]) {\n if (JSON.stringify(oldState[key]) !== JSON.stringify(newState[key])) {\n changes.push(key);\n }\n }\n\n return changes;\n }\n\n /**\n * Handle errors\n */\n private async handleError(error: Error, context: any): Promise<void> {\n logger.error('Lifecycle error', {\n error: error.message,\n context,\n });\n\n if (this.config.hooks.onError && this.hooks.onError) {\n try {\n await this.hooks.onError(error, context);\n } catch (hookError: any) {\n logger.error('Error hook failed', { error: hookError.message });\n }\n }\n }\n\n /**\n * Start timer for metrics\n */\n private startTimer(name: string): void {\n const start = Date.now();\n this.activeTimers.set(name, setTimeout(() => {\n this.activeTimers.delete(name);\n }, 0) as any);\n (this.activeTimers.get(name) as any).startTime = start;\n }\n\n /**\n * Stop timer and get duration\n */\n private stopTimer(name: string): number {\n const timer = this.activeTimers.get(name);\n if (!timer) return 0;\n\n const duration = Date.now() - (timer as any).startTime;\n clearTimeout(timer);\n this.activeTimers.delete(name);\n\n return duration;\n }\n\n /**\n * Clean up all timers\n */\n private cleanupTimers(): void {\n for (const timer of this.activeTimers.values()) {\n clearTimeout(timer);\n }\n this.activeTimers.clear();\n }\n}"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/monitoring/swarm-dashboard.ts"],
4
- "sourcesContent": ["/**\n * Real-time Swarm Monitoring Dashboard\n * Provides live metrics and visualization for active swarms\n */\n\nimport { EventEmitter } from 'events';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { SwarmCoordinator } from '../swarm/swarm-coordinator.js';\nimport { Agent, SwarmState } from '../types.js';\n\nexport interface SwarmMetrics {\n swarmId: string;\n status: 'active' | 'idle' | 'completed' | 'error';\n totalAgents: number;\n activeAgents: number;\n completedTasks: number;\n activeTasks: number;\n averageTaskTime: number;\n resourceUsage: {\n memoryMB: number;\n cpuPercent: number;\n diskMB: number;\n };\n performance: {\n throughput: number; // tasks per minute\n efficiency: number; // completion rate\n uptime: number; // milliseconds\n };\n agents: AgentMetrics[];\n}\n\nexport interface AgentMetrics {\n id: string;\n role: string;\n status: 'active' | 'idle' | 'error' | 'completed';\n currentTask?: string;\n tasksCompleted: number;\n averageTaskTime: number;\n successRate: number;\n lastActivity: number;\n resourceUsage: {\n memoryMB: number;\n iterations: number;\n };\n}\n\nexport interface AlertRule {\n id: string;\n type: 'performance' | 'error' | 'resource' | 'completion';\n condition: string; // e.g., \"throughput < 0.5\" or \"errorRate > 0.1\"\n threshold: number;\n message: string;\n severity: 'low' | 'medium' | 'high' | 'critical';\n}\n\nexport class SwarmDashboard extends EventEmitter {\n private metrics: Map<string, SwarmMetrics> = new Map();\n private alerts: AlertRule[] = [];\n private monitoringInterval?: NodeJS.Timeout;\n private swarmCoordinator: SwarmCoordinator;\n\n constructor(swarmCoordinator: SwarmCoordinator) {\n super();\n this.swarmCoordinator = swarmCoordinator;\n this.setupDefaultAlerts();\n }\n\n /**\n * Start real-time monitoring\n */\n startMonitoring(intervalMs: number = 5000): void {\n this.monitoringInterval = setInterval(() => {\n this.collectMetrics();\n this.checkAlerts();\n }, intervalMs);\n\n logger.info('Swarm monitoring dashboard started');\n }\n\n /**\n * Stop monitoring\n */\n stopMonitoring(): void {\n if (this.monitoringInterval) {\n clearInterval(this.monitoringInterval);\n this.monitoringInterval = undefined;\n }\n logger.info('Swarm monitoring dashboard stopped');\n }\n\n /**\n * Get current metrics for a swarm\n */\n getSwarmMetrics(swarmId: string): SwarmMetrics | undefined {\n return this.metrics.get(swarmId);\n }\n\n /**\n * Get all active swarm metrics\n */\n getAllMetrics(): SwarmMetrics[] {\n return Array.from(this.metrics.values());\n }\n\n /**\n * Add custom alert rule\n */\n addAlert(rule: AlertRule): void {\n this.alerts.push(rule);\n logger.info(`Added alert rule: ${rule.id}`);\n }\n\n /**\n * Generate real-time dashboard HTML\n */\n generateDashboardHTML(): string {\n const metrics = this.getAllMetrics();\n\n return `\n<!DOCTYPE html>\n<html>\n<head>\n <title>Ralph Swarm Dashboard</title>\n <style>\n body { font-family: Arial, sans-serif; margin: 20px; background: #f5f5f5; }\n .dashboard { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }\n .card { background: white; padding: 20px; border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1); }\n .metric { display: flex; justify-content: space-between; margin: 10px 0; }\n .status-active { color: #28a745; }\n .status-error { color: #dc3545; }\n .status-idle { color: #6c757d; }\n .alert-critical { color: #dc3545; font-weight: bold; }\n .progress { background: #e9ecef; border-radius: 4px; height: 8px; }\n .progress-bar { background: #007bff; height: 100%; border-radius: 4px; }\n </style>\n <script>\n setTimeout(() => location.reload(), 5000); // Auto-refresh\n </script>\n</head>\n<body>\n <h1>\uD83E\uDDBE Ralph Swarm Dashboard</h1>\n <div class=\"dashboard\">\n ${metrics\n .map(\n (swarm) => `\n <div class=\"card\">\n <h3>Swarm ${swarm.swarmId.substring(0, 8)}</h3>\n <div class=\"metric\">\n <span>Status:</span>\n <span class=\"status-${swarm.status}\">${swarm.status.toUpperCase()}</span>\n </div>\n <div class=\"metric\">\n <span>Agents:</span>\n <span>${swarm.activeAgents}/${swarm.totalAgents}</span>\n </div>\n <div class=\"metric\">\n <span>Tasks:</span>\n <span>${swarm.completedTasks}/${swarm.activeTasks + swarm.completedTasks}</span>\n </div>\n <div class=\"metric\">\n <span>Throughput:</span>\n <span>${swarm.performance.throughput.toFixed(2)} tasks/min</span>\n </div>\n <div class=\"metric\">\n <span>Memory:</span>\n <span>${swarm.resourceUsage.memoryMB} MB</span>\n </div>\n <div class=\"metric\">\n <span>Uptime:</span>\n <span>${Math.round(swarm.performance.uptime / 1000)}s</span>\n </div>\n <div style=\"margin-top: 15px;\">\n <h4>Agents:</h4>\n ${swarm.agents\n .map(\n (agent) => `\n <div class=\"metric\">\n <span>${agent.role}:</span>\n <span class=\"status-${agent.status}\">${agent.status}</span>\n </div>\n `\n )\n .join('')}\n </div>\n </div>\n `\n )\n .join('')}\n </div>\n \n <div class=\"card\" style=\"margin-top: 20px;\">\n <h3>\uD83D\uDEA8 Active Alerts</h3>\n <div id=\"alerts\">${this.getActiveAlerts()\n .map(\n (alert) =>\n `<div class=\"alert-${alert.severity}\">${alert.message}</div>`\n )\n .join('')}</div>\n </div>\n</body>\n</html>`;\n }\n\n /**\n * Export metrics to JSON\n */\n exportMetrics(): string {\n return JSON.stringify(\n {\n timestamp: new Date().toISOString(),\n swarms: this.getAllMetrics(),\n alerts: this.getActiveAlerts(),\n },\n null,\n 2\n );\n }\n\n private collectMetrics(): void {\n const usage = this.swarmCoordinator.getResourceUsage();\n const swarmState = (this.swarmCoordinator as any).swarmState;\n\n if (!swarmState || !swarmState.id) return;\n\n const metrics: SwarmMetrics = {\n swarmId: swarmState.id,\n status: swarmState.status,\n totalAgents: usage.activeAgents,\n activeAgents: usage.activeAgents,\n completedTasks: swarmState.completedTaskCount || 0,\n activeTasks: swarmState.activeTaskCount || 0,\n averageTaskTime: 0, // Calculate from agent metrics\n resourceUsage: {\n memoryMB: usage.memoryEstimate,\n cpuPercent: this.estimateCpuUsage(),\n diskMB: this.estimateDiskUsage(),\n },\n performance: {\n throughput: swarmState.performance?.throughput || 0,\n efficiency: swarmState.performance?.efficiency || 0,\n uptime: Date.now() - swarmState.startTime,\n },\n agents: this.collectAgentMetrics(),\n };\n\n this.metrics.set(swarmState.id, metrics);\n this.emit('metricsUpdated', metrics);\n }\n\n private collectAgentMetrics(): AgentMetrics[] {\n const agents = (this.swarmCoordinator as any).activeAgents;\n if (!agents) return [];\n\n return Array.from(agents.values()).map(\n (agent: Agent): AgentMetrics => ({\n id: agent.id,\n role: agent.role,\n status: agent.status,\n currentTask: agent.currentTask || undefined,\n tasksCompleted: agent.performance?.tasksCompleted || 0,\n averageTaskTime: agent.performance?.averageTaskTime || 0,\n successRate: agent.performance?.successRate || 1.0,\n lastActivity: agent.performance?.lastFreshStart || Date.now(),\n resourceUsage: {\n memoryMB: 50, // Estimate per agent\n iterations: agent.performance?.tasksCompleted || 0,\n },\n })\n );\n }\n\n private checkAlerts(): void {\n const metrics = this.getAllMetrics();\n\n for (const swarmMetrics of metrics) {\n for (const alert of this.alerts) {\n if (this.evaluateAlertCondition(alert, swarmMetrics)) {\n this.emit('alert', {\n ...alert,\n swarmId: swarmMetrics.swarmId,\n timestamp: Date.now(),\n value: this.getMetricValue(alert.condition, swarmMetrics),\n });\n }\n }\n }\n }\n\n private evaluateAlertCondition(\n alert: AlertRule,\n metrics: SwarmMetrics\n ): boolean {\n const value = this.getMetricValue(alert.condition, metrics);\n\n switch (alert.type) {\n case 'performance':\n return value < alert.threshold;\n case 'error':\n return 1 - metrics.performance.efficiency > alert.threshold;\n case 'resource':\n return metrics.resourceUsage.memoryMB > alert.threshold;\n case 'completion':\n return metrics.performance.uptime > alert.threshold;\n default:\n return false;\n }\n }\n\n private getMetricValue(condition: string, metrics: SwarmMetrics): number {\n // Simple metric extraction - could be enhanced with expression parser\n if (condition.includes('throughput')) return metrics.performance.throughput;\n if (condition.includes('efficiency')) return metrics.performance.efficiency;\n if (condition.includes('memory')) return metrics.resourceUsage.memoryMB;\n if (condition.includes('uptime')) return metrics.performance.uptime;\n return 0;\n }\n\n private getActiveAlerts(): any[] {\n // Return recent alerts - implementation would track alert history\n return [];\n }\n\n private estimateCpuUsage(): number {\n // Estimate CPU usage based on active agents\n const activeAgents = this.collectAgentMetrics().filter(\n (a) => a.status === 'active'\n ).length;\n return Math.min(activeAgents * 15, 100); // ~15% per active agent\n }\n\n private estimateDiskUsage(): number {\n // Estimate disk usage from working directories\n const usage = this.swarmCoordinator.getResourceUsage();\n return usage.workingDirectories.length * 10; // ~10MB per directory\n }\n\n private setupDefaultAlerts(): void {\n this.alerts = [\n {\n id: 'low-throughput',\n type: 'performance',\n condition: 'throughput < 0.5',\n threshold: 0.5,\n message: 'Low throughput detected: Less than 0.5 tasks per minute',\n severity: 'medium',\n },\n {\n id: 'high-memory',\n type: 'resource',\n condition: 'memory > 500',\n threshold: 500,\n message: 'High memory usage detected: Over 500MB',\n severity: 'high',\n },\n {\n id: 'long-running',\n type: 'completion',\n condition: 'uptime > 1800000',\n threshold: 1800000, // 30 minutes\n message: 'Long running swarm detected: Over 30 minutes',\n severity: 'low',\n },\n {\n id: 'low-efficiency',\n type: 'error',\n condition: 'errorRate > 0.3',\n threshold: 0.3,\n message: 'High error rate detected: Over 30% failure rate',\n severity: 'critical',\n },\n ];\n }\n}\n\nexport default SwarmDashboard;\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/monitoring/swarm-registry.ts"],
4
- "sourcesContent": ["/**\n * Global swarm registry for tracking active swarms\n * Allows TUI to connect to running swarms\n */\n\nimport { EventEmitter } from 'events';\nimport { SwarmCoordinator } from '../swarm/swarm-coordinator.js';\nimport { logger } from '../../../core/monitoring/logger.js';\n\nexport interface RegisteredSwarm {\n id: string;\n coordinator: SwarmCoordinator;\n startTime: number;\n status: 'active' | 'idle' | 'completed' | 'error';\n description: string;\n}\n\nexport class SwarmRegistry extends EventEmitter {\n private static instance: SwarmRegistry | null = null;\n private swarms: Map<string, RegisteredSwarm> = new Map();\n\n private constructor() {\n super();\n logger.info('SwarmRegistry initialized');\n }\n\n static getInstance(): SwarmRegistry {\n if (!SwarmRegistry.instance) {\n SwarmRegistry.instance = new SwarmRegistry();\n }\n return SwarmRegistry.instance;\n }\n\n /**\n * Register a swarm coordinator\n */\n registerSwarm(coordinator: SwarmCoordinator, description: string): string {\n const swarmId = this.generateSwarmId();\n\n const registration: RegisteredSwarm = {\n id: swarmId,\n coordinator,\n startTime: Date.now(),\n status: 'active',\n description,\n };\n\n this.swarms.set(swarmId, registration);\n this.emit('swarmRegistered', registration);\n\n logger.info(`Swarm registered: ${swarmId} - ${description}`);\n return swarmId;\n }\n\n /**\n * Unregister a swarm\n */\n unregisterSwarm(swarmId: string): void {\n const swarm = this.swarms.get(swarmId);\n if (swarm) {\n this.swarms.delete(swarmId);\n this.emit('swarmUnregistered', { id: swarmId });\n logger.info(`Swarm unregistered: ${swarmId}`);\n }\n }\n\n /**\n * Get a specific swarm by ID\n */\n getSwarm(swarmId: string): RegisteredSwarm | null {\n return this.swarms.get(swarmId) || null;\n }\n\n /**\n * List all active swarms\n */\n listActiveSwarms(): RegisteredSwarm[] {\n return Array.from(this.swarms.values()).filter(\n (swarm) => swarm.status === 'active'\n );\n }\n\n /**\n * Update swarm status\n */\n updateSwarmStatus(\n swarmId: string,\n status: 'active' | 'idle' | 'completed' | 'error'\n ): void {\n const swarm = this.swarms.get(swarmId);\n if (swarm) {\n swarm.status = status;\n this.emit('swarmStatusChanged', { id: swarmId, status });\n logger.debug(`Swarm ${swarmId} status updated: ${status}`);\n }\n }\n\n /**\n * Get swarm statistics\n */\n getStatistics(): {\n totalSwarms: number;\n activeSwarms: number;\n completedSwarms: number;\n averageUptime: number;\n } {\n const active = this.listActiveSwarms();\n const completed = Array.from(this.swarms.values()).filter(\n (s) => s.status === 'completed'\n );\n\n const totalUptime = active.reduce(\n (sum, swarm) => sum + (Date.now() - swarm.startTime),\n 0\n );\n\n return {\n totalSwarms: this.swarms.size,\n activeSwarms: active.length,\n completedSwarms: completed.length,\n averageUptime: active.length > 0 ? totalUptime / active.length : 0,\n };\n }\n\n /**\n * Cleanup all swarms and reset registry\n */\n cleanup(): void {\n this.swarms.clear();\n logger.info('SwarmRegistry cleaned up');\n }\n\n private generateSwarmId(): string {\n return `swarm_${Date.now()}_${Math.random().toString(36).substring(2, 8)}`;\n }\n}\n\nexport default SwarmRegistry;\n"],
5
- "mappings": ";;;;AAKA,SAAS,oBAAoB;AAE7B,SAAS,cAAc;AAUhB,MAAM,sBAAsB,aAAa;AAAA,EAC9C,OAAe,WAAiC;AAAA,EACxC,SAAuC,oBAAI,IAAI;AAAA,EAE/C,cAAc;AACpB,UAAM;AACN,WAAO,KAAK,2BAA2B;AAAA,EACzC;AAAA,EAEA,OAAO,cAA6B;AAClC,QAAI,CAAC,cAAc,UAAU;AAC3B,oBAAc,WAAW,IAAI,cAAc;AAAA,IAC7C;AACA,WAAO,cAAc;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,cAAc,aAA+B,aAA6B;AACxE,UAAM,UAAU,KAAK,gBAAgB;AAErC,UAAM,eAAgC;AAAA,MACpC,IAAI;AAAA,MACJ;AAAA,MACA,WAAW,KAAK,IAAI;AAAA,MACpB,QAAQ;AAAA,MACR;AAAA,IACF;AAEA,SAAK,OAAO,IAAI,SAAS,YAAY;AACrC,SAAK,KAAK,mBAAmB,YAAY;AAEzC,WAAO,KAAK,qBAAqB,OAAO,MAAM,WAAW,EAAE;AAC3D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA,EAKA,gBAAgB,SAAuB;AACrC,UAAM,QAAQ,KAAK,OAAO,IAAI,OAAO;AACrC,QAAI,OAAO;AACT,WAAK,OAAO,OAAO,OAAO;AAC1B,WAAK,KAAK,qBAAqB,EAAE,IAAI,QAAQ,CAAC;AAC9C,aAAO,KAAK,uBAAuB,OAAO,EAAE;AAAA,IAC9C;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,SAAS,SAAyC;AAChD,WAAO,KAAK,OAAO,IAAI,OAAO,KAAK;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAsC;AACpC,WAAO,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC,EAAE;AAAA,MACtC,CAAC,UAAU,MAAM,WAAW;AAAA,IAC9B;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,kBACE,SACA,QACM;AACN,UAAM,QAAQ,KAAK,OAAO,IAAI,OAAO;AACrC,QAAI,OAAO;AACT,YAAM,SAAS;AACf,WAAK,KAAK,sBAAsB,EAAE,IAAI,SAAS,OAAO,CAAC;AACvD,aAAO,MAAM,SAAS,OAAO,oBAAoB,MAAM,EAAE;AAAA,IAC3D;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,gBAKE;AACA,UAAM,SAAS,KAAK,iBAAiB;AACrC,UAAM,YAAY,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC,EAAE;AAAA,MACjD,CAAC,MAAM,EAAE,WAAW;AAAA,IACtB;AAEA,UAAM,cAAc,OAAO;AAAA,MACzB,CAAC,KAAK,UAAU,OAAO,KAAK,IAAI,IAAI,MAAM;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO;AAAA,MACL,aAAa,KAAK,OAAO;AAAA,MACzB,cAAc,OAAO;AAAA,MACrB,iBAAiB,UAAU;AAAA,MAC3B,eAAe,OAAO,SAAS,IAAI,cAAc,OAAO,SAAS;AAAA,IACnE;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,UAAgB;AACd,SAAK,OAAO,MAAM;AAClB,WAAO,KAAK,0BAA0B;AAAA,EACxC;AAAA,EAEQ,kBAA0B;AAChC,WAAO,SAAS,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,UAAU,GAAG,CAAC,CAAC;AAAA,EAC1E;AACF;AAEA,IAAO,yBAAQ;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/orchestration/multi-loop-orchestrator.ts"],
4
- "sourcesContent": ["/**\n * Multi-Loop Orchestrator for Complex Tasks\n * Manages multiple Ralph loops working together on large, complex tasks\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { FrameManager } from '../../../core/context/index.js';\nimport { sessionManager } from '../../../core/session/index.js';\nimport { RalphStackMemoryBridge } from '../bridge/ralph-stackmemory-bridge.js';\nimport {\n OrchestratedTask,\n TaskDependency,\n LoopCoordination,\n ParallelExecution,\n TaskBreakdown,\n ExecutionPlan,\n OrchestrationResult\n} from '../types.js';\n\nexport interface OrchestrationConfig {\n maxConcurrentLoops: number;\n dependencyResolutionTimeout: number;\n enableAdaptivePlanning: boolean;\n sharedContextEnabled: boolean;\n fallbackStrategy: 'sequential' | 'abort' | 'manual';\n}\n\nexport class MultiLoopOrchestrator {\n private frameManager?: FrameManager;\n private activeTasks: Map<string, OrchestratedTask> = new Map();\n private activeLoops: Map<string, RalphStackMemoryBridge> = new Map();\n private config: OrchestrationConfig;\n\n constructor(config?: Partial<OrchestrationConfig>) {\n this.config = {\n maxConcurrentLoops: 3,\n dependencyResolutionTimeout: 30000, // 30 seconds\n enableAdaptivePlanning: true,\n sharedContextEnabled: true,\n fallbackStrategy: 'sequential',\n ...config\n };\n\n logger.info('Multi-loop orchestrator initialized', this.config);\n }\n\n async initialize(): Promise<void> {\n try {\n await sessionManager.initialize();\n\n const session = await sessionManager.getOrCreateSession({});\n if (session.database) {\n this.frameManager = new FrameManager(session.database, session.projectId);\n }\n\n logger.info('Orchestrator initialized successfully');\n } catch (error: unknown) {\n logger.error('Failed to initialize orchestrator', error as Error);\n throw error;\n }\n }\n\n /**\n * Break down complex task into manageable loops\n */\n async orchestrateComplexTask(\n description: string, \n criteria: string[], \n options?: {\n maxLoops?: number;\n forceSequential?: boolean;\n customBreakdown?: TaskBreakdown[];\n }\n ): Promise<OrchestrationResult> {\n logger.info('Orchestrating complex task', {\n task: description.substring(0, 100),\n criteriaCount: criteria.length,\n maxLoops: options?.maxLoops || this.config.maxConcurrentLoops\n });\n\n const orchestrationId = uuidv4();\n\n try {\n // 1. Break down task into subtasks\n const breakdown = options?.customBreakdown || \n await this.analyzeAndBreakdownTask(description, criteria);\n\n // 2. Create execution plan\n const executionPlan = await this.createExecutionPlan(breakdown, options);\n\n // 3. Validate dependencies\n const dependencyErrors = this.validateDependencies(executionPlan);\n if (dependencyErrors.length > 0) {\n throw new Error(`Dependency errors: ${dependencyErrors.join(', ')}`);\n }\n\n // 4. Create orchestrated task\n const orchestratedTask: OrchestratedTask = {\n id: orchestrationId,\n description,\n breakdown,\n executionPlan,\n status: 'planning',\n startTime: Date.now(),\n loops: new Map(),\n sharedContext: {}\n };\n\n this.activeTasks.set(orchestrationId, orchestratedTask);\n\n // 5. Execute the plan\n const result = await this.executeOrchestration(orchestratedTask);\n\n logger.info('Complex task orchestration completed', {\n orchestrationId,\n status: result.success ? 'success' : 'failure',\n loopsExecuted: result.completedLoops.length,\n duration: Date.now() - orchestratedTask.startTime\n });\n\n return result;\n\n } catch (error: unknown) {\n logger.error('Orchestration failed', error as Error);\n throw error;\n } finally {\n this.activeTasks.delete(orchestrationId);\n }\n }\n\n /**\n * Execute coordinated parallel loops\n */\n async executeParallelLoops(\n tasks: TaskBreakdown[],\n coordination?: LoopCoordination\n ): Promise<ParallelExecution> {\n logger.info(`Executing ${tasks.length} parallel loops`);\n\n const execution: ParallelExecution = {\n id: uuidv4(),\n tasks: tasks,\n startTime: Date.now(),\n results: new Map(),\n sharedState: coordination?.sharedState || {}\n };\n\n const promises = tasks.map(task => this.executeParallelTask(task, execution));\n \n try {\n await Promise.allSettled(promises);\n\n execution.endTime = Date.now();\n execution.status = Array.from(execution.results.values()).every(r => r.success) ? 'success' : 'partial';\n\n return execution;\n\n } catch (error: unknown) {\n logger.error('Parallel execution failed', error as Error);\n execution.status = 'failed';\n execution.error = (error as Error).message;\n return execution;\n }\n }\n\n /**\n * Analyze and break down complex task\n */\n private async analyzeAndBreakdownTask(\n description: string,\n criteria: string[]\n ): Promise<TaskBreakdown[]> {\n // Intelligent task breakdown using patterns and heuristics\n const complexity = this.assessTaskComplexity(description);\n \n if (complexity.score < 5) {\n // Simple task - no breakdown needed\n return [{\n id: uuidv4(),\n title: description,\n description,\n criteria: criteria,\n priority: 1,\n estimatedIterations: 3,\n dependencies: [],\n type: 'single'\n }];\n }\n\n // Complex task - break down by patterns\n const subtasks: TaskBreakdown[] = [];\n \n // Pattern 1: Setup/Foundation tasks\n if (this.needsSetup(description)) {\n subtasks.push({\n id: uuidv4(),\n title: 'Project Setup',\n description: 'Set up project structure and dependencies',\n criteria: ['Project structure created', 'Dependencies installed'],\n priority: 1,\n estimatedIterations: 2,\n dependencies: [],\n type: 'setup'\n });\n }\n\n // Pattern 2: Core implementation\n const coreTask = this.extractCoreTask(description);\n if (coreTask) {\n subtasks.push({\n id: uuidv4(),\n title: 'Core Implementation',\n description: coreTask,\n criteria: criteria.filter(c => c.toLowerCase().includes('function') || c.toLowerCase().includes('implement')),\n priority: 2,\n estimatedIterations: 5,\n dependencies: subtasks.length > 0 ? [subtasks[0].id] : [],\n type: 'implementation'\n });\n }\n\n // Pattern 3: Testing tasks\n if (this.needsTesting(criteria)) {\n subtasks.push({\n id: uuidv4(),\n title: 'Testing Implementation',\n description: 'Create comprehensive tests',\n criteria: criteria.filter(c => c.toLowerCase().includes('test')),\n priority: 3,\n estimatedIterations: 3,\n dependencies: subtasks.length > 0 ? [subtasks[subtasks.length - 1].id] : [],\n type: 'testing'\n });\n }\n\n // Pattern 4: Documentation tasks\n if (this.needsDocumentation(criteria)) {\n subtasks.push({\n id: uuidv4(),\n title: 'Documentation',\n description: 'Create documentation and examples',\n criteria: criteria.filter(c => c.toLowerCase().includes('doc')),\n priority: 4,\n estimatedIterations: 2,\n dependencies: [],\n type: 'documentation'\n });\n }\n\n return subtasks.length > 0 ? subtasks : [{\n id: uuidv4(),\n title: description,\n description,\n criteria,\n priority: 1,\n estimatedIterations: Math.min(8, Math.max(3, complexity.score)),\n dependencies: [],\n type: 'single'\n }];\n }\n\n /**\n * Create execution plan from breakdown\n */\n private async createExecutionPlan(\n breakdown: TaskBreakdown[],\n options?: { forceSequential?: boolean }\n ): Promise<ExecutionPlan> {\n const plan: ExecutionPlan = {\n phases: [],\n totalEstimatedTime: 0,\n parallelizable: !options?.forceSequential && breakdown.length > 1\n };\n\n if (options?.forceSequential || !this.canExecuteInParallel(breakdown)) {\n // Sequential execution\n plan.phases = breakdown.map((task, index) => ({\n id: `phase-${index + 1}`,\n tasks: [task],\n dependencies: index > 0 ? [`phase-${index}`] : [],\n parallelExecution: false\n }));\n } else {\n // Group tasks by dependencies for parallel execution\n const phases = this.groupTasksByDependencies(breakdown);\n plan.phases = phases;\n }\n\n plan.totalEstimatedTime = plan.phases.reduce(\n (sum, phase) => sum + Math.max(...phase.tasks.map(t => t.estimatedIterations)) * 30000, // 30s per iteration\n 0\n );\n\n return plan;\n }\n\n /**\n * Execute the orchestration plan\n */\n private async executeOrchestration(task: OrchestratedTask): Promise<OrchestrationResult> {\n const result: OrchestrationResult = {\n orchestrationId: task.id,\n success: false,\n completedLoops: [],\n failedLoops: [],\n totalDuration: 0,\n insights: []\n };\n\n try {\n task.status = 'executing';\n\n for (const phase of task.executionPlan.phases) {\n logger.info(`Executing phase ${phase.id} with ${phase.tasks.length} tasks`);\n\n if (phase.parallelExecution && phase.tasks.length > 1) {\n // Parallel execution\n const parallelResult = await this.executeParallelLoops(phase.tasks);\n \n for (const [taskId, taskResult] of parallelResult.results) {\n if (taskResult.success) {\n result.completedLoops.push(taskResult.loopId);\n } else {\n result.failedLoops.push({ loopId: taskResult.loopId, error: taskResult.error || 'Unknown error' });\n }\n }\n } else {\n // Sequential execution\n for (const phaseTask of phase.tasks) {\n const loopResult = await this.executeTaskLoop(phaseTask, task);\n \n if (loopResult.success) {\n result.completedLoops.push(loopResult.loopId);\n \n // Share learnings with other tasks\n if (this.config.sharedContextEnabled) {\n await this.updateSharedContext(task, loopResult);\n }\n } else {\n result.failedLoops.push({ loopId: loopResult.loopId, error: loopResult.error || 'Unknown error' });\n \n // Handle failure based on strategy\n if (this.config.fallbackStrategy === 'abort') {\n throw new Error(`Task failed: ${loopResult.error}`);\n }\n }\n }\n }\n }\n\n task.status = 'completed';\n result.success = result.failedLoops.length === 0;\n result.totalDuration = Date.now() - task.startTime;\n\n // Generate insights\n result.insights = this.generateOrchestrationInsights(task, result);\n\n return result;\n\n } catch (error: unknown) {\n task.status = 'failed';\n result.success = false;\n result.error = (error as Error).message;\n return result;\n }\n }\n\n /**\n * Execute a single task as a Ralph loop\n */\n private async executeTaskLoop(\n taskBreakdown: TaskBreakdown,\n orchestratedTask: OrchestratedTask\n ): Promise<{ success: boolean; loopId: string; error?: string }> {\n try {\n // Create Ralph loop with shared context\n const bridge = new RalphStackMemoryBridge({\n baseDir: `.ralph-${taskBreakdown.id}`,\n maxIterations: taskBreakdown.estimatedIterations * 2, // Allow extra iterations\n useStackMemory: true\n });\n\n await bridge.initialize({\n task: taskBreakdown.description,\n criteria: taskBreakdown.criteria.join('\\n')\n });\n\n // Store loop reference\n this.activeLoops.set(taskBreakdown.id, bridge);\n orchestratedTask.loops.set(taskBreakdown.id, {\n bridge,\n status: 'running',\n startTime: Date.now()\n });\n\n // Run the loop\n await bridge.run();\n\n // Check result\n const loopInfo = orchestratedTask.loops.get(taskBreakdown.id);\n if (loopInfo) {\n loopInfo.status = 'completed';\n loopInfo.endTime = Date.now();\n }\n\n this.activeLoops.delete(taskBreakdown.id);\n\n return { success: true, loopId: taskBreakdown.id };\n\n } catch (error: unknown) {\n logger.error(`Task loop failed: ${taskBreakdown.title}`, error as Error);\n \n const loopInfo = orchestratedTask.loops.get(taskBreakdown.id);\n if (loopInfo) {\n loopInfo.status = 'failed';\n loopInfo.error = (error as Error).message;\n loopInfo.endTime = Date.now();\n }\n\n this.activeLoops.delete(taskBreakdown.id);\n\n return { success: false, loopId: taskBreakdown.id, error: (error as Error).message };\n }\n }\n\n /**\n * Execute a task in parallel context\n */\n private async executeParallelTask(\n task: TaskBreakdown,\n execution: ParallelExecution\n ): Promise<void> {\n try {\n const result = await this.executeTaskLoop(task, {\n id: execution.id,\n description: `Parallel task: ${task.title}`,\n breakdown: [task],\n executionPlan: { phases: [], totalEstimatedTime: 0, parallelizable: false },\n status: 'executing',\n startTime: execution.startTime,\n loops: new Map(),\n sharedContext: execution.sharedState\n });\n\n execution.results.set(task.id, result);\n\n } catch (error: unknown) {\n execution.results.set(task.id, {\n success: false,\n loopId: task.id,\n error: (error as Error).message\n });\n }\n }\n\n /**\n * Update shared context between tasks\n */\n private async updateSharedContext(\n orchestratedTask: OrchestratedTask,\n loopResult: { loopId: string }\n ): Promise<void> {\n // Extract learnings from completed loop and share with other active loops\n // This would integrate with StackMemory's shared context layer\n logger.debug('Updating shared context', { orchestrationId: orchestratedTask.id, loopId: loopResult.loopId });\n }\n\n /**\n * Generate insights from orchestration\n */\n private generateOrchestrationInsights(\n task: OrchestratedTask,\n result: OrchestrationResult\n ): string[] {\n const insights: string[] = [];\n\n // Performance insights\n const avgLoopDuration = Array.from(task.loops.values())\n .filter(l => l.endTime && l.startTime)\n .map(l => l.endTime! - l.startTime)\n .reduce((sum, duration) => sum + duration, 0) / task.loops.size;\n\n if (avgLoopDuration > 0) {\n insights.push(`Average loop duration: ${Math.round(avgLoopDuration / 1000)}s`);\n }\n\n // Success rate insights\n const successRate = result.completedLoops.length / (result.completedLoops.length + result.failedLoops.length);\n insights.push(`Success rate: ${Math.round(successRate * 100)}%`);\n\n // Complexity insights\n if (task.breakdown.length > 3) {\n insights.push('Complex task benefited from breakdown into multiple loops');\n }\n\n return insights;\n }\n\n // Helper methods for task analysis\n private assessTaskComplexity(description: string): { score: number; factors: string[] } {\n const factors: string[] = [];\n let score = 1;\n\n if (description.length > 200) { score += 2; factors.push('long description'); }\n if (description.includes('and')) { score += 1; factors.push('multiple requirements'); }\n if (description.toLowerCase().includes('test')) { score += 2; factors.push('testing required'); }\n if (description.toLowerCase().includes('document')) { score += 1; factors.push('documentation needed'); }\n if (description.toLowerCase().includes('refactor')) { score += 3; factors.push('refactoring complexity'); }\n\n return { score, factors };\n }\n\n private needsSetup(description: string): boolean {\n const setupKeywords = ['project', 'initialize', 'setup', 'scaffold', 'create structure'];\n return setupKeywords.some(keyword => description.toLowerCase().includes(keyword));\n }\n\n private needsTesting(criteria: string[]): boolean {\n return criteria.some(c => c.toLowerCase().includes('test'));\n }\n\n private needsDocumentation(criteria: string[]): boolean {\n return criteria.some(c => c.toLowerCase().includes('doc'));\n }\n\n private extractCoreTask(description: string): string | null {\n // Extract the main implementation task from description\n const sentences = description.split('.');\n return sentences.find(s => s.toLowerCase().includes('implement') || s.toLowerCase().includes('create') || s.toLowerCase().includes('add')) || null;\n }\n\n private canExecuteInParallel(breakdown: TaskBreakdown[]): boolean {\n // Check if tasks can be executed in parallel based on dependencies\n return breakdown.some(task => task.dependencies.length === 0);\n }\n\n private groupTasksByDependencies(breakdown: TaskBreakdown[]): any[] {\n // Group tasks into phases based on dependencies\n const phases: any[] = [];\n const processed = new Set<string>();\n \n while (processed.size < breakdown.length) {\n const readyTasks = breakdown.filter(task => \n !processed.has(task.id) && \n task.dependencies.every(dep => processed.has(dep))\n );\n\n if (readyTasks.length === 0) break; // Circular dependency\n\n phases.push({\n id: `phase-${phases.length + 1}`,\n tasks: readyTasks,\n dependencies: phases.length > 0 ? [`phase-${phases.length}`] : [],\n parallelExecution: readyTasks.length > 1\n });\n\n readyTasks.forEach(task => processed.add(task.id));\n }\n\n return phases;\n }\n\n private validateDependencies(plan: ExecutionPlan): string[] {\n const errors: string[] = [];\n const allTaskIds = new Set(\n plan.phases.flatMap(phase => phase.tasks.map(task => task.id))\n );\n\n for (const phase of plan.phases) {\n for (const task of phase.tasks) {\n for (const dep of task.dependencies) {\n if (!allTaskIds.has(dep)) {\n errors.push(`Task ${task.id} depends on non-existent task ${dep}`);\n }\n }\n }\n }\n\n return errors;\n }\n\n /**\n * Monitor orchestration progress\n */\n getOrchestrationStatus(orchestrationId: string): OrchestratedTask | null {\n return this.activeTasks.get(orchestrationId) || null;\n }\n\n /**\n * Stop orchestration\n */\n async stopOrchestration(orchestrationId: string): Promise<void> {\n const task = this.activeTasks.get(orchestrationId);\n if (!task) return;\n\n // Stop all active loops\n for (const [loopId, loopInfo] of task.loops) {\n if (loopInfo.status === 'running') {\n try {\n // Signal stop to the loop\n loopInfo.status = 'stopped';\n this.activeLoops.delete(loopId);\n } catch (error: unknown) {\n logger.error(`Failed to stop loop ${loopId}`, error as Error);\n }\n }\n }\n\n task.status = 'stopped';\n this.activeTasks.delete(orchestrationId);\n\n logger.info('Orchestration stopped', { orchestrationId });\n }\n}\n\n// Export default instance\nexport const multiLoopOrchestrator = new MultiLoopOrchestrator();"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/patterns/compounding-engineering-pattern.ts"],
4
- "sourcesContent": ["/**\n * Compounding Engineering Pattern Implementation\n * \n * Transforms traditional engineering's diminishing returns into cumulative learning.\n * Each feature development improves future development capabilities.\n * \n * Core Philosophy: \"Make the next feature easier to build from the feature that you just added.\"\n */\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { v4 as uuidv4 } from 'uuid';\nimport { logger } from '../../../core/monitoring/logger.js';\n\nexport interface FeatureLearning {\n id: string;\n featureName: string;\n timestamp: number;\n developmentPhase: 'planning' | 'implementation' | 'testing' | 'deployment';\n \n // What worked well\n successes: {\n strategy: string;\n impact: 'high' | 'medium' | 'low';\n reusability: 'universal' | 'domain_specific' | 'feature_specific';\n description: string;\n }[];\n \n // What didn't work\n failures: {\n issue: string;\n cause: string;\n solution: string;\n prevention: string;\n }[];\n \n // Emerging patterns\n patterns: {\n name: string;\n context: string;\n solution: string;\n examples: string[];\n }[];\n \n // Agent improvements\n agentLearnings: {\n commonMistakes: string[];\n effectivePrompts: string[];\n toolUsagePatterns: string[];\n coordinationInsights: string[];\n };\n \n // Automation opportunities\n automationOpportunities: {\n task: string;\n frequency: 'always' | 'often' | 'sometimes';\n complexity: 'trivial' | 'simple' | 'complex';\n implementation: 'hook' | 'command' | 'subagent';\n }[];\n}\n\nexport interface CompoundedKnowledge {\n totalFeatures: number;\n learningsByCategory: {\n planning: FeatureLearning[];\n implementation: FeatureLearning[];\n testing: FeatureLearning[];\n deployment: FeatureLearning[];\n };\n \n // Distilled wisdom\n bestPractices: {\n category: string;\n practice: string;\n evidence: string[];\n confidence: number;\n }[];\n \n // Generated artifacts\n automatedHooks: string[];\n specializedAgents: string[];\n customCommands: string[];\n \n // Metrics\n metrics: {\n developmentVelocityTrend: number[];\n errorRateReduction: number;\n codeReuseIncrease: number;\n onboardingTimeReduction: number;\n };\n}\n\n/**\n * Compounding Engineering Pattern Manager\n * Captures, processes, and compounds development learnings\n */\nexport class CompoundingEngineeringManager {\n private knowledgeBase: CompoundedKnowledge;\n private baseDir: string;\n private projectId: string;\n \n constructor(baseDir: string = './.compounding', projectId?: string) {\n this.baseDir = baseDir;\n this.projectId = projectId || 'default';\n this.knowledgeBase = {\n totalFeatures: 0,\n learningsByCategory: {\n planning: [],\n implementation: [],\n testing: [],\n deployment: [],\n },\n bestPractices: [],\n automatedHooks: [],\n specializedAgents: [],\n customCommands: [],\n metrics: {\n developmentVelocityTrend: [],\n errorRateReduction: 0,\n codeReuseIncrease: 0,\n onboardingTimeReduction: 0,\n },\n };\n }\n\n /**\n * Initialize the compounding system\n */\n async initialize(): Promise<void> {\n await fs.mkdir(this.baseDir, { recursive: true });\n await this.loadExistingKnowledge();\n logger.info('Compounding Engineering Manager initialized', {\n totalFeatures: this.knowledgeBase.totalFeatures,\n baseDir: this.baseDir,\n });\n }\n\n /**\n * Capture learning from a feature development session\n */\n async captureFeatureLearning(\n featureName: string,\n sessionData: any,\n agentOutputs: any[],\n userFeedback?: string\n ): Promise<string> {\n const learningId = uuidv4();\n \n logger.info('Capturing feature learning', { \n featureName, \n learningId,\n agentCount: agentOutputs.length \n });\n\n // Analyze session for learnings\n const learning = await this.extractLearningsFromSession(\n learningId,\n featureName,\n sessionData,\n agentOutputs,\n userFeedback\n );\n\n // Store the learning\n await this.storeLearning(learning);\n \n // Update compounded knowledge\n await this.updateCompoundedKnowledge(learning);\n \n // Generate new artifacts if patterns emerge\n await this.generateArtifacts();\n \n return learningId;\n }\n\n /**\n * Extract actionable learnings from development session\n */\n private async extractLearningsFromSession(\n id: string,\n featureName: string,\n sessionData: any,\n agentOutputs: any[],\n userFeedback?: string\n ): Promise<FeatureLearning> {\n // Analyze what worked well\n const successes = this.identifySuccesses(sessionData, agentOutputs);\n \n // Analyze failures and resolutions\n const failures = this.identifyFailures(sessionData, agentOutputs);\n \n // Extract emerging patterns\n const patterns = this.extractPatterns(sessionData, agentOutputs);\n \n // Analyze agent behavior\n const agentLearnings = this.analyzeAgentBehavior(agentOutputs);\n \n // Identify automation opportunities\n const automationOpportunities = this.identifyAutomationOpportunities(\n sessionData,\n agentOutputs\n );\n\n return {\n id,\n featureName,\n timestamp: Date.now(),\n developmentPhase: this.inferDevelopmentPhase(sessionData),\n successes,\n failures,\n patterns,\n agentLearnings,\n automationOpportunities,\n };\n }\n\n /**\n * Identify what worked well in the session\n */\n private identifySuccesses(\n sessionData: any,\n agentOutputs: any[]\n ): FeatureLearning['successes'] {\n const successes = [];\n\n // Analyze successful agent strategies\n for (const output of agentOutputs) {\n if (output.success && output.strategy) {\n successes.push({\n strategy: output.strategy,\n impact: this.assessImpact(output),\n reusability: this.assessReusability(output),\n description: output.description || 'Successful agent execution',\n });\n }\n }\n\n // Analyze successful patterns in code\n if (sessionData.codePatterns) {\n for (const pattern of sessionData.codePatterns) {\n if (pattern.successful) {\n successes.push({\n strategy: `Code pattern: ${pattern.name}`,\n impact: 'high',\n reusability: 'universal',\n description: pattern.description,\n });\n }\n }\n }\n\n return successes;\n }\n\n /**\n * Identify failures and their resolutions\n */\n private identifyFailures(\n sessionData: any,\n agentOutputs: any[]\n ): FeatureLearning['failures'] {\n const failures = [];\n\n // Analyze agent failures\n for (const output of agentOutputs) {\n if (output.errors && output.errors.length > 0) {\n for (const error of output.errors) {\n failures.push({\n issue: error.message || 'Agent execution failed',\n cause: error.cause || 'Unknown cause',\n solution: error.resolution || 'Manual intervention required',\n prevention: this.generatePreventionStrategy(error),\n });\n }\n }\n }\n\n // Analyze build/test failures\n if (sessionData.buildErrors) {\n for (const error of sessionData.buildErrors) {\n failures.push({\n issue: `Build error: ${error.type}`,\n cause: error.details,\n solution: error.fix,\n prevention: 'Add pre-build validation hook',\n });\n }\n }\n\n return failures;\n }\n\n /**\n * Extract reusable patterns from the session\n */\n private extractPatterns(\n sessionData: any,\n agentOutputs: any[]\n ): FeatureLearning['patterns'] {\n const patterns = [];\n\n // Agent coordination patterns\n if (agentOutputs.length > 1) {\n const coordinationPattern = this.analyzeCoordinationPattern(agentOutputs);\n if (coordinationPattern) {\n patterns.push(coordinationPattern);\n }\n }\n\n // Code structure patterns\n if (sessionData.codeStructure) {\n const structurePattern = this.analyzeCodeStructurePattern(sessionData.codeStructure);\n if (structurePattern) {\n patterns.push(structurePattern);\n }\n }\n\n return patterns;\n }\n\n /**\n * Analyze agent behavior for improvements\n */\n private analyzeAgentBehavior(agentOutputs: any[]): FeatureLearning['agentLearnings'] {\n const commonMistakes = [];\n const effectivePrompts = [];\n const toolUsagePatterns = [];\n const coordinationInsights = [];\n\n for (const output of agentOutputs) {\n // Common mistakes\n if (output.retries && output.retries.length > 0) {\n commonMistakes.push(...output.retries.map((r: any) => r.reason));\n }\n\n // Effective prompts\n if (output.success && output.promptUsed) {\n effectivePrompts.push(output.promptUsed);\n }\n\n // Tool usage\n if (output.toolsUsed) {\n toolUsagePatterns.push(...output.toolsUsed);\n }\n\n // Coordination\n if (output.coordination) {\n coordinationInsights.push(output.coordination.insight);\n }\n }\n\n return {\n commonMistakes: [...new Set(commonMistakes)],\n effectivePrompts: [...new Set(effectivePrompts)],\n toolUsagePatterns: [...new Set(toolUsagePatterns)],\n coordinationInsights: [...new Set(coordinationInsights)],\n };\n }\n\n /**\n * Identify tasks that can be automated\n */\n private identifyAutomationOpportunities(\n sessionData: any,\n agentOutputs: any[]\n ): FeatureLearning['automationOpportunities'] {\n const opportunities = [];\n\n // Repeated agent tasks\n const taskFrequency = this.analyzeTaskFrequency(agentOutputs);\n for (const [task, frequency] of Object.entries(taskFrequency)) {\n if (frequency > 2) {\n opportunities.push({\n task,\n frequency: 'often',\n complexity: 'simple',\n implementation: 'hook',\n });\n }\n }\n\n // Manual interventions\n if (sessionData.manualSteps) {\n for (const step of sessionData.manualSteps) {\n opportunities.push({\n task: step.description,\n frequency: 'sometimes',\n complexity: step.complexity || 'simple',\n implementation: 'command',\n });\n }\n }\n\n return opportunities;\n }\n\n /**\n * Update compounded knowledge with new learning\n */\n private async updateCompoundedKnowledge(learning: FeatureLearning): Promise<void> {\n // Add to appropriate category\n this.knowledgeBase.learningsByCategory[learning.developmentPhase].push(learning);\n this.knowledgeBase.totalFeatures++;\n\n // Update best practices\n await this.updateBestPractices(learning);\n \n // Update metrics\n await this.updateMetrics(learning);\n \n // Save updated knowledge\n await this.saveKnowledge();\n }\n\n /**\n * Generate artifacts (hooks, commands, agents) from accumulated learnings\n */\n private async generateArtifacts(): Promise<void> {\n // Generate hooks from automation opportunities\n await this.generateHooks();\n \n // Generate specialized agents from patterns\n await this.generateSpecializedAgents();\n \n // Generate custom commands from repeated tasks\n await this.generateCustomCommands();\n }\n\n /**\n * Generate automation hooks\n */\n private async generateHooks(): Promise<void> {\n const allOpportunities = Object.values(this.knowledgeBase.learningsByCategory)\n .flat()\n .flatMap(learning => learning.automationOpportunities)\n .filter(opp => opp.implementation === 'hook');\n\n const hookCounts = new Map<string, number>();\n for (const opp of allOpportunities) {\n hookCounts.set(opp.task, (hookCounts.get(opp.task) || 0) + 1);\n }\n\n // Generate hooks for frequently occurring tasks\n for (const [task, count] of hookCounts) {\n if (count >= 3 && !this.knowledgeBase.automatedHooks.includes(task)) {\n await this.createHook(task);\n this.knowledgeBase.automatedHooks.push(task);\n }\n }\n }\n\n /**\n * Create an automation hook\n */\n private async createHook(task: string): Promise<void> {\n const hookName = task.replace(/\\s+/g, '-').toLowerCase();\n const hookPath = path.join(this.baseDir, 'hooks', `${hookName}.ts`);\n \n await fs.mkdir(path.dirname(hookPath), { recursive: true });\n \n const hookContent = `\n/**\n * Auto-generated hook for: ${task}\n * Generated by Compounding Engineering Pattern\n */\n\nexport async function ${hookName.replace(/-/g, '')}Hook() {\n // TODO: Implement automation for: ${task}\n console.log('Executing automated hook: ${task}');\n}\n `;\n\n await fs.writeFile(hookPath, hookContent);\n logger.info('Generated automation hook', { task, hookPath });\n }\n\n /**\n * Load existing knowledge base\n */\n private async loadExistingKnowledge(): Promise<void> {\n const knowledgePath = path.join(this.baseDir, 'knowledge.json');\n \n try {\n const content = await fs.readFile(knowledgePath, 'utf-8');\n this.knowledgeBase = JSON.parse(content);\n } catch (error) {\n // No existing knowledge, start fresh\n logger.info('Starting fresh knowledge base');\n }\n }\n\n /**\n * Save knowledge base to disk\n */\n private async saveKnowledge(): Promise<void> {\n const knowledgePath = path.join(this.baseDir, 'knowledge.json');\n await fs.writeFile(\n knowledgePath,\n JSON.stringify(this.knowledgeBase, null, 2)\n );\n }\n\n /**\n * Get current compounding metrics\n */\n getCompoundingMetrics(): {\n totalFeatures: number;\n automationLevel: number;\n learningVelocity: number;\n knowledgeReuse: number;\n } {\n const totalLearnings = Object.values(this.knowledgeBase.learningsByCategory)\n .flat().length;\n \n const automationLevel = this.knowledgeBase.automatedHooks.length / \n Math.max(totalLearnings, 1);\n \n const recentLearnings = totalLearnings > 5 ? \n totalLearnings / 5 : totalLearnings;\n \n return {\n totalFeatures: this.knowledgeBase.totalFeatures,\n automationLevel,\n learningVelocity: recentLearnings,\n knowledgeReuse: this.knowledgeBase.bestPractices.length,\n };\n }\n\n // Helper methods\n private assessImpact(output: any): 'high' | 'medium' | 'low' {\n if (output.linesChanged > 100) return 'high';\n if (output.linesChanged > 20) return 'medium';\n return 'low';\n }\n\n private assessReusability(output: any): 'universal' | 'domain_specific' | 'feature_specific' {\n if (output.pattern === 'generic') return 'universal';\n if (output.domain) return 'domain_specific';\n return 'feature_specific';\n }\n\n private generatePreventionStrategy(error: any): string {\n return `Add validation for: ${error.type || 'unknown error type'}`;\n }\n\n private inferDevelopmentPhase(sessionData: any): 'planning' | 'implementation' | 'testing' | 'deployment' {\n if (sessionData.phase) return sessionData.phase;\n if (sessionData.testsRun) return 'testing';\n if (sessionData.codeGenerated) return 'implementation';\n return 'planning';\n }\n\n private analyzeCoordinationPattern(agentOutputs: any[]): any {\n return {\n name: 'Multi-agent coordination',\n context: `${agentOutputs.length} agents worked together`,\n solution: 'Successful multi-agent coordination pattern',\n examples: agentOutputs.map(a => a.role || 'unknown'),\n };\n }\n\n private analyzeCodeStructurePattern(structure: any): any {\n return {\n name: 'Code structure pattern',\n context: structure.type,\n solution: structure.pattern,\n examples: structure.examples || [],\n };\n }\n\n private analyzeTaskFrequency(agentOutputs: any[]): Record<string, number> {\n const frequency: Record<string, number> = {};\n for (const output of agentOutputs) {\n if (output.task) {\n frequency[output.task] = (frequency[output.task] || 0) + 1;\n }\n }\n return frequency;\n }\n\n private async updateBestPractices(learning: FeatureLearning): Promise<void> {\n // Extract best practices from successes\n for (const success of learning.successes) {\n if (success.impact === 'high' && success.reusability === 'universal') {\n const existing = this.knowledgeBase.bestPractices.find(\n bp => bp.practice === success.strategy\n );\n \n if (existing) {\n existing.evidence.push(learning.featureName);\n existing.confidence = Math.min(existing.confidence + 0.1, 1.0);\n } else {\n this.knowledgeBase.bestPractices.push({\n category: learning.developmentPhase,\n practice: success.strategy,\n evidence: [learning.featureName],\n confidence: 0.7,\n });\n }\n }\n }\n }\n\n private async updateMetrics(learning: FeatureLearning): Promise<void> {\n // Update development velocity trend\n const velocityScore = learning.successes.length - learning.failures.length;\n this.knowledgeBase.metrics.developmentVelocityTrend.push(velocityScore);\n \n // Keep only last 10 measurements\n if (this.knowledgeBase.metrics.developmentVelocityTrend.length > 10) {\n this.knowledgeBase.metrics.developmentVelocityTrend.shift();\n }\n }\n\n private async generateSpecializedAgents(): Promise<void> {\n // Implementation for generating specialized agents from patterns\n }\n\n private async generateCustomCommands(): Promise<void> {\n // Implementation for generating custom commands from repeated tasks\n }\n}\n\nexport default CompoundingEngineeringManager;"],
5
- "mappings": "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",
6
- "names": []
7
- }