@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/patterns/extended-coherence-sessions.ts"],
4
- "sourcesContent": ["/**\n * Extended Coherence Work Sessions Implementation\n * \n * Enables agents to work continuously for hours without performance degradation.\n * Maintains contextual awareness and high-quality output over extended periods.\n * \n * Addresses the challenge of AI agents losing coherence after short time periods.\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { RalphStackMemoryBridge } from '../bridge/ralph-stackmemory-bridge.js';\n\nexport interface CoherenceMetrics {\n sessionId: string;\n startTime: number;\n currentTime: number;\n duration: number; // in minutes\n \n // Performance indicators\n outputQuality: number; // 0-1 scale\n contextRetention: number; // 0-1 scale\n taskRelevance: number; // 0-1 scale\n progressRate: number; // tasks/hour\n \n // Coherence indicators\n repetitionRate: number; // how often agent repeats itself\n divergenceRate: number; // how often agent goes off-topic\n errorRate: number; // errors per iteration\n \n // State management\n memoryUsage: number; // MB\n contextWindowUsage: number; // percentage\n stateCheckpoints: number; // number of saves\n}\n\nexport interface CoherenceSession {\n id: string;\n agent: {\n id: string;\n role: string;\n model: string;\n };\n task: {\n description: string;\n complexity: 'low' | 'medium' | 'high' | 'very_high';\n estimatedDuration: number; // minutes\n breakpoints: string[]; // natural stopping points\n };\n \n // Session configuration\n config: {\n maxDuration: number; // minutes\n coherenceThreshold: number; // 0-1, below which to intervene\n checkpointInterval: number; // minutes\n refreshStrategy: 'none' | 'checkpoint' | 'context_refresh' | 'full_restart';\n \n // Advanced coherence features\n enableMemoryPalace: boolean; // structured memory system\n enableProgressTracking: boolean; // track incremental progress\n enableAutoRefresh: boolean; // automatic context refresh\n enableHealthMonitoring: boolean; // monitor agent health\n };\n \n // Runtime state\n state: {\n status: 'active' | 'paused' | 'degraded' | 'completed' | 'failed';\n currentPhase: string;\n completedMilestones: string[];\n lastCheckpoint: number;\n interventionCount: number;\n refreshCount: number;\n };\n \n // Historical data\n metrics: CoherenceMetrics[];\n interventions: {\n timestamp: number;\n type: 'checkpoint' | 'refresh' | 'restart' | 'guidance';\n reason: string;\n effectiveness: number; // 0-1\n }[];\n}\n\n/**\n * Extended Coherence Manager\n * Orchestrates long-running agent sessions with coherence preservation\n */\nexport class ExtendedCoherenceManager {\n private activeSessions: Map<string, CoherenceSession> = new Map();\n private baseDir: string;\n private monitoringInterval?: NodeJS.Timeout;\n private performanceHistory: Map<string, number[]> = new Map();\n \n constructor(baseDir: string = './.coherence-sessions') {\n this.baseDir = baseDir;\n }\n\n /**\n * Initialize the coherence management system\n */\n async initialize(): Promise<void> {\n await fs.mkdir(this.baseDir, { recursive: true });\n \n // Start monitoring loop\n this.monitoringInterval = setInterval(\n () => this.monitorActiveSessionsHealth(),\n 60000 // Check every minute\n );\n \n logger.info('Extended Coherence Manager initialized', {\n baseDir: this.baseDir,\n monitoringEnabled: true,\n });\n }\n\n /**\n * Start an extended coherence work session\n */\n async startCoherenceSession(\n agentConfig: { id: string; role: string; model: string },\n taskConfig: {\n description: string;\n complexity: 'low' | 'medium' | 'high' | 'very_high';\n estimatedDuration: number;\n breakpoints?: string[];\n },\n sessionConfig?: Partial<CoherenceSession['config']>\n ): Promise<string> {\n const sessionId = uuidv4();\n \n // Configure session based on task complexity\n const defaultConfig = this.generateConfigForComplexity(taskConfig.complexity);\n const config = { ...defaultConfig, ...sessionConfig };\n \n const session: CoherenceSession = {\n id: sessionId,\n agent: agentConfig,\n task: {\n ...taskConfig,\n breakpoints: taskConfig.breakpoints || this.generateBreakpoints(taskConfig),\n },\n config,\n state: {\n status: 'active',\n currentPhase: 'initialization',\n completedMilestones: [],\n lastCheckpoint: Date.now(),\n interventionCount: 0,\n refreshCount: 0,\n },\n metrics: [],\n interventions: [],\n };\n\n this.activeSessions.set(sessionId, session);\n \n // Initialize session workspace\n await this.initializeSessionWorkspace(session);\n \n // Start the actual agent work session\n await this.launchAgentSession(session);\n \n logger.info('Extended coherence session started', {\n sessionId,\n agent: agentConfig.role,\n estimatedDuration: taskConfig.estimatedDuration,\n maxDuration: config.maxDuration,\n });\n\n return sessionId;\n }\n\n /**\n * Generate configuration optimized for task complexity\n */\n private generateConfigForComplexity(\n complexity: 'low' | 'medium' | 'high' | 'very_high'\n ): CoherenceSession['config'] {\n const configs = {\n low: {\n maxDuration: 60, // 1 hour\n coherenceThreshold: 0.7,\n checkpointInterval: 15, // 15 minutes\n refreshStrategy: 'checkpoint' as const,\n enableMemoryPalace: false,\n enableProgressTracking: true,\n enableAutoRefresh: false,\n enableHealthMonitoring: true,\n },\n medium: {\n maxDuration: 180, // 3 hours\n coherenceThreshold: 0.8,\n checkpointInterval: 10, // 10 minutes\n refreshStrategy: 'context_refresh' as const,\n enableMemoryPalace: true,\n enableProgressTracking: true,\n enableAutoRefresh: true,\n enableHealthMonitoring: true,\n },\n high: {\n maxDuration: 360, // 6 hours\n coherenceThreshold: 0.85,\n checkpointInterval: 8, // 8 minutes\n refreshStrategy: 'context_refresh' as const,\n enableMemoryPalace: true,\n enableProgressTracking: true,\n enableAutoRefresh: true,\n enableHealthMonitoring: true,\n },\n very_high: {\n maxDuration: 720, // 12 hours\n coherenceThreshold: 0.9,\n checkpointInterval: 5, // 5 minutes\n refreshStrategy: 'full_restart' as const,\n enableMemoryPalace: true,\n enableProgressTracking: true,\n enableAutoRefresh: true,\n enableHealthMonitoring: true,\n },\n };\n\n return configs[complexity];\n }\n\n /**\n * Monitor active sessions for coherence degradation\n */\n private async monitorActiveSessionsHealth(): Promise<void> {\n for (const [sessionId, session] of this.activeSessions) {\n if (session.state.status === 'active') {\n await this.assessSessionCoherence(session);\n }\n }\n }\n\n /**\n * Assess session coherence and intervene if necessary\n */\n private async assessSessionCoherence(session: CoherenceSession): Promise<void> {\n const metrics = await this.calculateCoherenceMetrics(session);\n session.metrics.push(metrics);\n \n // Keep only last 10 metrics for performance\n if (session.metrics.length > 10) {\n session.metrics.shift();\n }\n\n const overallCoherence = this.calculateOverallCoherence(metrics);\n \n logger.debug('Session coherence assessment', {\n sessionId: session.id,\n coherence: overallCoherence,\n threshold: session.config.coherenceThreshold,\n duration: metrics.duration,\n });\n\n // Intervene if coherence drops below threshold\n if (overallCoherence < session.config.coherenceThreshold) {\n await this.interventeInSession(session, 'coherence_degradation', overallCoherence);\n }\n \n // Check if checkpoint is due\n const timeSinceCheckpoint = Date.now() - session.state.lastCheckpoint;\n const checkpointDue = timeSinceCheckpoint > (session.config.checkpointInterval * 60 * 1000);\n \n if (checkpointDue) {\n await this.checkpointSession(session);\n }\n }\n\n /**\n * Calculate comprehensive coherence metrics\n */\n private async calculateCoherenceMetrics(session: CoherenceSession): Promise<CoherenceMetrics> {\n const now = Date.now();\n const duration = (now - session.metrics[0]?.startTime || now) / (1000 * 60); // minutes\n \n // Load recent agent outputs for analysis\n const recentOutputs = await this.getRecentAgentOutputs(session);\n \n // Calculate various coherence indicators\n const outputQuality = this.assessOutputQuality(recentOutputs);\n const contextRetention = this.assessContextRetention(recentOutputs, session.task);\n const taskRelevance = this.assessTaskRelevance(recentOutputs, session.task);\n const repetitionRate = this.calculateRepetitionRate(recentOutputs);\n const divergenceRate = this.calculateDivergenceRate(recentOutputs, session.task);\n const errorRate = this.calculateErrorRate(recentOutputs);\n const progressRate = this.calculateProgressRate(session);\n\n return {\n sessionId: session.id,\n startTime: session.metrics[0]?.startTime || now,\n currentTime: now,\n duration,\n outputQuality,\n contextRetention,\n taskRelevance,\n progressRate,\n repetitionRate,\n divergenceRate,\n errorRate,\n memoryUsage: await this.getMemoryUsage(session),\n contextWindowUsage: await this.getContextWindowUsage(session),\n stateCheckpoints: session.interventions.filter(i => i.type === 'checkpoint').length,\n };\n }\n\n /**\n * Calculate overall coherence score\n */\n private calculateOverallCoherence(metrics: CoherenceMetrics): number {\n // Weighted average of coherence indicators\n const weights = {\n outputQuality: 0.3,\n contextRetention: 0.25,\n taskRelevance: 0.25,\n repetitionPenalty: 0.1, // penalty for repetition\n divergencePenalty: 0.1, // penalty for divergence\n };\n\n const baseScore = \n metrics.outputQuality * weights.outputQuality +\n metrics.contextRetention * weights.contextRetention +\n metrics.taskRelevance * weights.taskRelevance;\n \n const penalties = \n metrics.repetitionRate * weights.repetitionPenalty +\n metrics.divergenceRate * weights.divergencePenalty;\n\n return Math.max(0, baseScore - penalties);\n }\n\n /**\n * Intervene in a session to restore coherence\n */\n private async interventeInSession(\n session: CoherenceSession,\n reason: string,\n currentCoherence: number\n ): Promise<void> {\n logger.warn('Intervening in session due to coherence degradation', {\n sessionId: session.id,\n reason,\n currentCoherence,\n interventionCount: session.state.interventionCount,\n });\n\n const intervention = {\n timestamp: Date.now(),\n type: session.config.refreshStrategy,\n reason,\n effectiveness: 0, // will be calculated later\n };\n\n switch (session.config.refreshStrategy) {\n case 'checkpoint':\n await this.checkpointSession(session);\n break;\n \n case 'context_refresh':\n await this.refreshSessionContext(session);\n break;\n \n case 'full_restart':\n await this.restartSession(session);\n break;\n \n default:\n await this.provideGuidance(session, reason);\n intervention.type = 'guidance';\n }\n\n session.interventions.push(intervention);\n session.state.interventionCount++;\n \n // Mark session as temporarily degraded\n const previousStatus = session.state.status;\n session.state.status = 'degraded';\n \n // Schedule restoration check\n setTimeout(async () => {\n const newMetrics = await this.calculateCoherenceMetrics(session);\n const newCoherence = this.calculateOverallCoherence(newMetrics);\n \n // Calculate intervention effectiveness\n intervention.effectiveness = Math.max(0, newCoherence - currentCoherence);\n \n if (newCoherence > session.config.coherenceThreshold) {\n session.state.status = 'active';\n logger.info('Session coherence restored', {\n sessionId: session.id,\n newCoherence,\n effectiveness: intervention.effectiveness,\n });\n }\n }, 120000); // Check after 2 minutes\n }\n\n /**\n * Create a checkpoint of session state\n */\n private async checkpointSession(session: CoherenceSession): Promise<void> {\n const checkpointPath = path.join(\n this.baseDir,\n session.id,\n `checkpoint-${Date.now()}.json`\n );\n \n const checkpointData = {\n timestamp: Date.now(),\n state: session.state,\n recentMetrics: session.metrics.slice(-3),\n currentPhase: session.state.currentPhase,\n completedMilestones: session.state.completedMilestones,\n // Include recent agent context\n contextSummary: await this.generateContextSummary(session),\n };\n\n await fs.writeFile(checkpointPath, JSON.stringify(checkpointData, null, 2));\n session.state.lastCheckpoint = Date.now();\n \n logger.info('Session checkpoint created', {\n sessionId: session.id,\n checkpointPath,\n });\n }\n\n /**\n * Refresh session context to restore coherence\n */\n private async refreshSessionContext(session: CoherenceSession): Promise<void> {\n logger.info('Refreshing session context', { sessionId: session.id });\n \n // Generate context refresh prompt\n const refreshPrompt = await this.generateContextRefreshPrompt(session);\n \n // Apply refresh to the running agent\n await this.applyContextRefresh(session, refreshPrompt);\n \n session.state.refreshCount++;\n }\n\n /**\n * Restart session from last good checkpoint\n */\n private async restartSession(session: CoherenceSession): Promise<void> {\n logger.info('Restarting session from checkpoint', { sessionId: session.id });\n \n // Load last checkpoint\n const checkpoint = await this.loadLatestCheckpoint(session);\n \n if (checkpoint) {\n // Restore session state\n session.state = { ...checkpoint.state };\n \n // Restart agent with checkpoint context\n await this.restartAgentFromCheckpoint(session, checkpoint);\n } else {\n // No checkpoint available, restart from beginning\n await this.restartAgentFromBeginning(session);\n }\n }\n\n /**\n * Initialize workspace for a coherence session\n */\n private async initializeSessionWorkspace(session: CoherenceSession): Promise<void> {\n const sessionDir = path.join(this.baseDir, session.id);\n await fs.mkdir(sessionDir, { recursive: true });\n \n // Create session manifest\n const manifest = {\n sessionId: session.id,\n agent: session.agent,\n task: session.task,\n config: session.config,\n createdAt: Date.now(),\n };\n \n await fs.writeFile(\n path.join(sessionDir, 'manifest.json'),\n JSON.stringify(manifest, null, 2)\n );\n }\n\n /**\n * Launch the actual agent work session\n */\n private async launchAgentSession(session: CoherenceSession): Promise<void> {\n const sessionDir = path.join(this.baseDir, session.id);\n \n // Create enhanced Ralph bridge for extended sessions\n const ralph = new RalphStackMemoryBridge({\n baseDir: sessionDir,\n maxIterations: Math.ceil(session.config.maxDuration / 5), // ~5 min per iteration\n useStackMemory: true,\n });\n\n // Configure for extended coherence\n await ralph.initialize({\n task: this.buildExtendedCoherencePrompt(session),\n criteria: session.task.breakpoints.join('\\n'),\n });\n\n // Start the session (non-blocking)\n ralph.run().catch(error => {\n logger.error('Extended coherence session failed', {\n sessionId: session.id,\n error: error.message,\n });\n session.state.status = 'failed';\n });\n }\n\n /**\n * Build prompt optimized for extended coherence\n */\n private buildExtendedCoherencePrompt(session: CoherenceSession): string {\n return `\n# EXTENDED COHERENCE WORK SESSION\n\n## Your Mission\n${session.task.description}\n\n## Session Parameters\n- Estimated Duration: ${session.task.estimatedDuration} minutes\n- Maximum Duration: ${session.config.maxDuration} minutes \n- Coherence Threshold: ${session.config.coherenceThreshold * 100}%\n\n## Coherence Guidelines\n1. **Maintain Focus**: Stay on task throughout the entire session\n2. **Track Progress**: Document incremental progress at each step\n3. **Context Awareness**: Reference previous work and maintain consistency\n4. **Quality Control**: Regularly assess your output quality\n5. **Milestone Reporting**: Report when you reach natural breakpoints\n\n## Breakpoints & Milestones\n${session.task.breakpoints.map((bp, i) => `${i + 1}. ${bp}`).join('\\n')}\n\n## Extended Session Strategy\n- Take regular checkpoint breaks (every ${session.config.checkpointInterval} minutes)\n- Summarize your progress regularly\n- Ask for context refresh if you feel you're losing focus\n- Maintain awareness of the overall project goal\n- Break complex tasks into smaller, manageable chunks\n\n## Memory Palace (if enabled)\n${session.config.enableMemoryPalace ? `\nUse structured memory organization:\n- **Project Context**: Overall goals and requirements\n- **Current Status**: What's been completed and what's next\n- **Working Memory**: Current task details and immediate context\n- **Reference Memory**: Important patterns, decisions, and learnings\n` : ''}\n\n## Success Criteria\n- Complete the task within the allocated time\n- Maintain high output quality throughout\n- Document progress and decisions clearly\n- Stay coherent and focused for the entire session\n\nBegin your extended coherence work session now.\n `;\n }\n\n // Placeholder implementations for helper methods\n private async getRecentAgentOutputs(session: CoherenceSession): Promise<any[]> {\n // Implementation to retrieve recent agent outputs\n return [];\n }\n\n private assessOutputQuality(outputs: any[]): number {\n // Analyze output quality metrics\n return 0.8; // placeholder\n }\n\n private assessContextRetention(outputs: any[], task: any): number {\n // Measure how well agent retains context\n return 0.7; // placeholder \n }\n\n private assessTaskRelevance(outputs: any[], task: any): number {\n // Measure relevance to original task\n return 0.9; // placeholder\n }\n\n private calculateRepetitionRate(outputs: any[]): number {\n // Calculate how often agent repeats itself\n return 0.1; // placeholder\n }\n\n private calculateDivergenceRate(outputs: any[], task: any): number {\n // Calculate how often agent goes off-topic\n return 0.05; // placeholder\n }\n\n private calculateErrorRate(outputs: any[]): number {\n // Calculate errors per iteration\n return 0.02; // placeholder\n }\n\n private calculateProgressRate(session: CoherenceSession): number {\n // Calculate tasks completed per hour\n return 2.5; // placeholder\n }\n\n private async getMemoryUsage(session: CoherenceSession): Promise<number> {\n // Get current memory usage\n return 150; // MB placeholder\n }\n\n private async getContextWindowUsage(session: CoherenceSession): Promise<number> {\n // Get context window usage percentage\n return 65; // placeholder\n }\n\n private generateBreakpoints(taskConfig: any): string[] {\n // Generate natural stopping points based on task\n return [\n 'Initial analysis complete',\n 'Core implementation finished',\n 'Testing phase complete',\n 'Final review and cleanup done',\n ];\n }\n\n private async generateContextSummary(session: CoherenceSession): Promise<string> {\n return `Session ${session.id} context summary`;\n }\n\n private async generateContextRefreshPrompt(session: CoherenceSession): Promise<string> {\n return 'Context refresh prompt';\n }\n\n private async applyContextRefresh(session: CoherenceSession, prompt: string): Promise<void> {\n // Apply context refresh to running agent\n }\n\n private async loadLatestCheckpoint(session: CoherenceSession): Promise<any> {\n // Load most recent checkpoint\n return null;\n }\n\n private async restartAgentFromCheckpoint(session: CoherenceSession, checkpoint: any): Promise<void> {\n // Restart agent with checkpoint state\n }\n\n private async restartAgentFromBeginning(session: CoherenceSession): Promise<void> {\n // Restart agent from the beginning\n }\n\n private async provideGuidance(session: CoherenceSession, reason: string): Promise<void> {\n // Provide guidance to help agent refocus\n }\n\n /**\n * Get extended coherence capabilities\n */\n getCoherenceCapabilities(): {\n maxSessionDuration: number;\n activeSessionCount: number;\n averageCoherence: number;\n totalInterventions: number;\n } {\n const activeSessions = Array.from(this.activeSessions.values());\n \n return {\n maxSessionDuration: Math.max(...activeSessions.map(s => s.config.maxDuration)),\n activeSessionCount: activeSessions.filter(s => s.state.status === 'active').length,\n averageCoherence: activeSessions.reduce((sum, s) => {\n const recent = s.metrics.slice(-1)[0];\n return sum + (recent ? this.calculateOverallCoherence(recent) : 0);\n }, 0) / activeSessions.length,\n totalInterventions: activeSessions.reduce((sum, s) => sum + s.interventions.length, 0),\n };\n }\n}\n\nexport default ExtendedCoherenceManager;"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/patterns/oracle-worker-pattern.ts"],
4
- "sourcesContent": ["/**\n * Oracle/Worker Pattern Implementation for StackMemory Swarms\n * \n * Uses high-end model (Oracle) for planning, review, and coordination\n * Uses smaller models (Workers) for task execution and implementation\n * \n * Cost-effective scaling: Intelligence where needed, efficiency for execution\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { SwarmCoordinator } from '../swarm/swarm-coordinator.js';\nimport { RalphStackMemoryBridge } from '../bridge/ralph-stackmemory-bridge.js';\n\n// Model tiers based on capability and cost\nexport type ModelTier = 'oracle' | 'worker' | 'reviewer';\n\nexport interface ModelConfig {\n tier: ModelTier;\n provider: 'claude' | 'openai' | 'anthropic';\n model: string;\n costPerToken: number;\n capabilities: string[];\n}\n\nexport interface OracleWorkerConfig {\n oracle: ModelConfig;\n workers: ModelConfig[];\n reviewers: ModelConfig[];\n maxWorkers: number;\n coordinationInterval: number;\n costBudget?: number;\n}\n\nexport interface TaskDecomposition {\n id: string;\n type: 'planning' | 'implementation' | 'review' | 'coordination';\n priority: number;\n complexity: 'low' | 'medium' | 'high';\n estimatedTokens: number;\n assignedModel: ModelTier;\n dependencies: string[];\n acceptanceCriteria: string[];\n}\n\n/**\n * Oracle/Worker Pattern Coordinator\n * Implements cost-effective multi-model orchestration\n */\nexport class OracleWorkerCoordinator extends SwarmCoordinator {\n private oracle: ModelConfig;\n private workerPool: ModelConfig[];\n private reviewerPool: ModelConfig[];\n private costTracker: {\n oracleSpent: number;\n workerSpent: number;\n reviewerSpent: number;\n totalBudget: number;\n };\n \n constructor(config: OracleWorkerConfig) {\n super({\n maxAgents: config.maxWorkers + 2, // Workers + Oracle + Reviewer\n coordinationInterval: config.coordinationInterval,\n enableDynamicPlanning: true,\n pathologicalBehaviorDetection: true,\n });\n\n this.oracle = config.oracle;\n this.workerPool = config.workers;\n this.reviewerPool = config.reviewers;\n \n this.costTracker = {\n oracleSpent: 0,\n workerSpent: 0,\n reviewerSpent: 0,\n totalBudget: config.costBudget || 10.0, // $10 default\n };\n\n logger.info('Oracle/Worker coordinator initialized', {\n oracle: this.oracle.model,\n workers: this.workerPool.length,\n budget: this.costTracker.totalBudget,\n });\n }\n\n /**\n * Launch swarm with Oracle/Worker pattern\n */\n async launchOracleWorkerSwarm(\n projectDescription: string,\n taskHints?: string[]\n ): Promise<string> {\n logger.info('Launching Oracle/Worker swarm', {\n project: projectDescription.substring(0, 100),\n });\n\n // Phase 1: Oracle Planning\n const oracleTaskId = await this.createOracleTask(\n 'project_planning',\n projectDescription,\n taskHints\n );\n \n const decomposition = await this.executeOracleTask(oracleTaskId);\n \n // Phase 2: Worker Assignment\n const workerTasks = this.allocateTasksToWorkers(decomposition);\n \n // Phase 3: Parallel Worker Execution\n const workerPromises = workerTasks.map(task => \n this.executeWorkerTask(task)\n );\n \n // Phase 4: Oracle Review & Coordination\n const reviewTaskId = await this.scheduleOracleReview(decomposition);\n \n // Execute workers in parallel, oracle coordinates\n const [workerResults, reviewResult] = await Promise.all([\n Promise.allSettled(workerPromises),\n this.executeOracleTask(reviewTaskId)\n ]);\n\n // Phase 5: Final Integration\n const swarmId = await this.integrateResults(workerResults, reviewResult);\n \n this.logCostAnalysis();\n return swarmId;\n }\n\n /**\n * Create planning task for Oracle\n */\n private async createOracleTask(\n type: string,\n description: string,\n hints?: string[]\n ): Promise<string> {\n const taskId = uuidv4();\n \n const oraclePrompt = this.buildOraclePrompt(type, description, hints);\n const estimatedTokens = this.estimateTokens(oraclePrompt);\n \n logger.info('Oracle task created', {\n taskId,\n type,\n estimatedTokens,\n estimatedCost: estimatedTokens * this.oracle.costPerToken,\n });\n\n return taskId;\n }\n\n /**\n * Build specialized prompt for Oracle model\n */\n private buildOraclePrompt(\n type: string,\n description: string,\n hints?: string[]\n ): string {\n const basePrompt = `\n# ORACLE ROLE: Strategic Planning & Coordination\n\nYou are the Oracle in an Oracle/Worker pattern. Your role:\n- HIGH-LEVEL STRATEGIC thinking\n- TASK DECOMPOSITION for worker agents \n- QUALITY CONTROL and review\n- COORDINATION between workers\n- ERROR CORRECTION and replanning\n\n## Project Context\n${description}\n\n${hints ? `## Hints & Context\\n${hints.map(h => `- ${h}`).join('\\n')}` : ''}\n\n## Your Oracle Responsibilities\n1. **Decompose** this project into discrete, parallelizable tasks\n2. **Assign complexity levels** (low/medium/high) to guide worker selection\n3. **Define acceptance criteria** for each task\n4. **Identify dependencies** between tasks\n5. **Plan coordination touchpoints** for integration\n\n## Worker Constraints\n- Workers are smaller models optimized for focused execution\n- Workers excel at: implementation, testing, documentation, simple analysis\n- Workers struggle with: complex architecture, strategic decisions, cross-cutting concerns\n\n## Output Required\nProvide a detailed task decomposition in JSON format:\n\n\\`\\`\\`json\n{\n \"project_summary\": \"Brief overview\",\n \"task_decomposition\": [\n {\n \"id\": \"unique-id\",\n \"title\": \"Task name\",\n \"description\": \"Detailed description\",\n \"complexity\": \"low|medium|high\",\n \"type\": \"implementation|testing|documentation|analysis\",\n \"estimated_effort\": \"1-5 scale\",\n \"worker_requirements\": [\"specific capabilities needed\"],\n \"acceptance_criteria\": [\"criterion 1\", \"criterion 2\"],\n \"dependencies\": [\"task-id-1\", \"task-id-2\"]\n }\n ],\n \"coordination_plan\": {\n \"integration_points\": [\"When to sync between workers\"],\n \"review_checkpoints\": [\"When Oracle should review progress\"],\n \"risk_mitigation\": [\"Potential issues and solutions\"]\n }\n}\n\\`\\`\\`\n\nRemember: Your intelligence is expensive. Focus on high-value strategic thinking that workers cannot do effectively.\n `;\n\n return basePrompt;\n }\n\n /**\n * Execute Oracle task with high-end model\n */\n private async executeOracleTask(taskId: string): Promise<TaskDecomposition[]> {\n logger.info('Executing Oracle task', { taskId });\n \n // Create Ralph loop with Oracle model configuration\n const ralph = new RalphStackMemoryBridge({\n baseDir: `.oracle/${taskId}`,\n maxIterations: 3, // Oracle should be efficient\n useStackMemory: true,\n });\n\n // Execute with Oracle model (implementation would integrate with actual model APIs)\n const result = await ralph.run();\n \n // Track Oracle costs\n const tokens = this.estimateTokens(result);\n const cost = tokens * this.oracle.costPerToken;\n this.costTracker.oracleSpent += cost;\n \n logger.info('Oracle task completed', {\n taskId,\n tokensUsed: tokens,\n cost: cost.toFixed(4),\n });\n\n return this.parseTaskDecomposition(result);\n }\n\n /**\n * Allocate decomposed tasks to worker models\n */\n private allocateTasksToWorkers(\n decomposition: TaskDecomposition[]\n ): TaskDecomposition[] {\n const allocatedTasks: TaskDecomposition[] = [];\n\n for (const task of decomposition) {\n // Select optimal worker model based on task complexity\n const workerModel = this.selectWorkerForTask(task);\n \n // Create worker-specific prompt\n const workerPrompt = this.buildWorkerPrompt(task, workerModel);\n \n allocatedTasks.push({\n ...task,\n assignedModel: 'worker' as ModelTier,\n });\n\n logger.debug('Task allocated to worker', {\n taskId: task.id,\n complexity: task.complexity,\n worker: workerModel.model,\n });\n }\n\n return allocatedTasks;\n }\n\n /**\n * Select optimal worker model for task complexity\n */\n private selectWorkerForTask(task: TaskDecomposition): ModelConfig {\n // Simple allocation strategy - can be enhanced\n if (task.complexity === 'high') {\n // Use best available worker for complex tasks\n return this.workerPool[0];\n } else {\n // Use cheapest worker for simple tasks\n return this.workerPool.reduce((cheapest, current) => \n current.costPerToken < cheapest.costPerToken ? current : cheapest\n );\n }\n }\n\n /**\n * Build focused prompt for worker models\n */\n private buildWorkerPrompt(\n task: TaskDecomposition,\n worker: ModelConfig\n ): string {\n return `\n# WORKER ROLE: Focused Task Execution\n\nYou are a specialized worker in an Oracle/Worker pattern.\n\n## Your Task\n${task.type}: ${task.title}\n\n${task.description}\n\n## Success Criteria\n${task.acceptanceCriteria.map(c => `- ${c}`).join('\\n')}\n\n## Worker Guidelines\n- FOCUS on this specific task only\n- IMPLEMENT according to the specifications provided\n- ASK for clarification if requirements are unclear\n- COMMUNICATE progress through shared context\n- COMPLETE the task efficiently without over-engineering\n\n## Constraints\n- You are optimized for execution, not planning\n- Stay within your assigned scope\n- Collaborate with other workers through shared context\n- The Oracle will handle integration and review\n\nExecute your task now.\n `;\n }\n\n /**\n * Execute worker task with cost tracking\n */\n private async executeWorkerTask(task: TaskDecomposition): Promise<any> {\n logger.info('Executing worker task', { \n taskId: task.id,\n complexity: task.complexity \n });\n\n const ralph = new RalphStackMemoryBridge({\n baseDir: `.workers/${task.id}`,\n maxIterations: task.complexity === 'low' ? 3 : 7,\n useStackMemory: true,\n });\n\n const result = await ralph.run();\n \n // Track worker costs\n const workerModel = this.selectWorkerForTask(task);\n const tokens = this.estimateTokens(result);\n const cost = tokens * workerModel.costPerToken;\n this.costTracker.workerSpent += cost;\n\n logger.info('Worker task completed', {\n taskId: task.id,\n tokensUsed: tokens,\n cost: cost.toFixed(4),\n });\n\n return result;\n }\n\n /**\n * Schedule Oracle review of worker progress\n */\n private async scheduleOracleReview(\n decomposition: TaskDecomposition[]\n ): Promise<string> {\n const reviewTaskId = uuidv4();\n \n // Oracle reviews worker outputs and coordinates integration\n logger.info('Oracle review scheduled', { \n reviewTaskId,\n tasksToReview: decomposition.length \n });\n\n return reviewTaskId;\n }\n\n /**\n * Integrate worker results under Oracle coordination\n */\n private async integrateResults(\n workerResults: PromiseSettledResult<any>[],\n reviewResult: any\n ): Promise<string> {\n const swarmId = uuidv4();\n \n const successfulTasks = workerResults.filter(\n result => result.status === 'fulfilled'\n ).length;\n\n logger.info('Integration completed', {\n swarmId,\n totalTasks: workerResults.length,\n successfulTasks,\n successRate: (successfulTasks / workerResults.length * 100).toFixed(1),\n });\n\n return swarmId;\n }\n\n /**\n * Parse task decomposition from Oracle output\n */\n private parseTaskDecomposition(output: string): TaskDecomposition[] {\n // Parse JSON from Oracle output\n // Implementation would extract the JSON task decomposition\n return [];\n }\n\n /**\n * Estimate token usage for cost calculation\n */\n private estimateTokens(text: string): number {\n // Rough estimation: ~4 characters per token\n return Math.ceil(text.length / 4);\n }\n\n /**\n * Log cost analysis and efficiency metrics\n */\n private logCostAnalysis(): void {\n const total = this.costTracker.oracleSpent + \n this.costTracker.workerSpent + \n this.costTracker.reviewerSpent;\n\n const savings = this.calculateTraditionalCost() - total;\n\n logger.info('Oracle/Worker Cost Analysis', {\n oracleSpent: `$${this.costTracker.oracleSpent.toFixed(4)}`,\n workerSpent: `$${this.costTracker.workerSpent.toFixed(4)}`,\n totalSpent: `$${total.toFixed(4)}`,\n budgetUsed: `${(total / this.costTracker.totalBudget * 100).toFixed(1)}%`,\n estimatedSavings: `$${savings.toFixed(4)}`,\n efficiency: `${(this.costTracker.workerSpent / total * 100).toFixed(1)}% worker tasks`,\n });\n }\n\n /**\n * Calculate what this would cost with all-Oracle approach\n */\n private calculateTraditionalCost(): number {\n const totalSpent = this.costTracker.oracleSpent + \n this.costTracker.workerSpent + \n this.costTracker.reviewerSpent;\n \n // Estimate if everything was done with Oracle model\n const avgWorkerCost = this.workerPool[0]?.costPerToken || 0.001;\n const workerTokensAsOracle = this.costTracker.workerSpent / avgWorkerCost;\n \n return this.costTracker.oracleSpent + \n (workerTokensAsOracle * this.oracle.costPerToken);\n }\n}\n\n/**\n * Default model configurations for Oracle/Worker pattern\n */\nexport const defaultModelConfigs: Record<ModelTier, ModelConfig[]> = {\n oracle: [\n {\n tier: 'oracle',\n provider: 'claude',\n model: 'claude-3-opus-20240229',\n costPerToken: 0.015, // $15/1M input tokens\n capabilities: [\n 'strategic_planning',\n 'complex_reasoning',\n 'task_decomposition',\n 'quality_review',\n 'error_correction'\n ]\n }\n ],\n \n worker: [\n {\n tier: 'worker',\n provider: 'claude', \n model: 'claude-3-haiku-20240307',\n costPerToken: 0.00025, // $0.25/1M input tokens\n capabilities: [\n 'code_implementation',\n 'unit_testing',\n 'documentation',\n 'simple_analysis',\n 'data_processing'\n ]\n },\n {\n tier: 'worker',\n provider: 'openai',\n model: 'gpt-4o-mini',\n costPerToken: 0.00015, // $0.15/1M input tokens \n capabilities: [\n 'rapid_prototyping',\n 'script_writing',\n 'basic_testing',\n 'formatting',\n 'simple_refactoring'\n ]\n }\n ],\n\n reviewer: [\n {\n tier: 'reviewer',\n provider: 'claude',\n model: 'claude-3-sonnet-20240229', \n costPerToken: 0.003, // $3/1M input tokens\n capabilities: [\n 'code_review',\n 'quality_assessment',\n 'integration_testing',\n 'performance_analysis',\n 'security_review'\n ]\n }\n ]\n};\n\nexport default OracleWorkerCoordinator;"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/performance/performance-optimizer.ts"],
4
- "sourcesContent": ["/**\n * Performance Optimizer for Ralph-StackMemory Integration\n * Handles async saves, batching, compression, and caching for optimal performance\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport * as zlib from 'zlib';\nimport { promisify } from 'util';\nimport {\n RalphIteration,\n PerformanceMetrics,\n OptimizationStrategy,\n RalphStackMemoryConfig,\n Frame,\n} from '../types.js';\n\nconst gzip = promisify(zlib.gzip);\nconst gunzip = promisify(zlib.gunzip);\n\nexport class PerformanceOptimizer {\n private config: RalphStackMemoryConfig['performance'];\n private saveBatch: SaveOperation[] = [];\n private batchTimer?: NodeJS.Timeout;\n private cache: Map<string, CacheEntry> = new Map();\n private metrics: PerformanceMetrics = {\n iterationTime: 0,\n contextLoadTime: 0,\n stateSaveTime: 0,\n memoryUsage: 0,\n tokenCount: 0,\n cacheHitRate: 0,\n };\n private cacheHits = 0;\n private cacheMisses = 0;\n private strategies: OptimizationStrategy[] = [];\n\n constructor(config?: Partial<RalphStackMemoryConfig['performance']>) {\n this.config = {\n asyncSaves: config?.asyncSaves ?? true,\n batchSize: config?.batchSize || 10,\n compressionLevel: config?.compressionLevel || 2,\n cacheEnabled: config?.cacheEnabled ?? true,\n parallelOperations: config?.parallelOperations ?? true,\n };\n\n this.initializeStrategies();\n this.startMetricsCollection();\n }\n\n /**\n * Save frame with optimizations\n */\n async saveFrame(frame: Frame): Promise<void> {\n const startTime = Date.now();\n\n if (this.config.asyncSaves) {\n // Add to batch for async saving\n this.addToBatch({\n type: 'frame',\n data: frame,\n timestamp: Date.now(),\n });\n } else {\n // Save synchronously\n await this.saveFrameInternal(frame);\n }\n\n this.metrics.stateSaveTime += Date.now() - startTime;\n }\n\n /**\n * Save iteration with optimizations\n */\n async saveIteration(iteration: RalphIteration): Promise<void> {\n const startTime = Date.now();\n\n // Compress if enabled\n const data = this.config.compressionLevel > 0\n ? await this.compressData(iteration)\n : iteration;\n\n if (this.config.asyncSaves) {\n // Add to batch\n this.addToBatch({\n type: 'iteration',\n data,\n timestamp: Date.now(),\n });\n } else {\n // Save synchronously\n await this.saveIterationInternal(data);\n }\n\n this.metrics.stateSaveTime += Date.now() - startTime;\n }\n\n /**\n * Load frames with caching\n */\n async loadFrames(query: FrameQuery): Promise<Frame[]> {\n const startTime = Date.now();\n const cacheKey = this.generateCacheKey('frames', query);\n\n // Check cache first\n if (this.config.cacheEnabled) {\n const cached = this.getFromCache<Frame[]>(cacheKey);\n if (cached) {\n this.cacheHits++;\n this.metrics.contextLoadTime += Date.now() - startTime;\n return cached;\n }\n }\n\n this.cacheMisses++;\n\n // Load from storage\n const frames = await this.loadFramesInternal(query);\n\n // Cache the result\n if (this.config.cacheEnabled) {\n this.setCache(cacheKey, frames, 60000); // Cache for 1 minute\n }\n\n this.metrics.contextLoadTime += Date.now() - startTime;\n return frames;\n }\n\n /**\n * Batch save operations\n */\n async flushBatch(): Promise<void> {\n if (this.saveBatch.length === 0) return;\n\n const batch = [...this.saveBatch];\n this.saveBatch = [];\n\n logger.debug('Flushing batch', { size: batch.length });\n\n if (this.config.parallelOperations) {\n // Save in parallel\n await Promise.all(batch.map(op => this.executeSaveOperation(op)));\n } else {\n // Save sequentially\n for (const op of batch) {\n await this.executeSaveOperation(op);\n }\n }\n }\n\n /**\n * Compress data based on compression level\n */\n async compressData(data: any): Promise<any> {\n if (this.config.compressionLevel === 0) return data;\n\n const json = JSON.stringify(data);\n const compressionOptions: zlib.ZlibOptions = {\n level: this.config.compressionLevel * 3, // Map 1-3 to zlib levels 3-9\n };\n\n const compressed = await gzip(json, compressionOptions);\n \n return {\n compressed: true,\n data: compressed.toString('base64'),\n originalSize: json.length,\n compressedSize: compressed.length,\n };\n }\n\n /**\n * Decompress data\n */\n async decompressData(compressed: any): Promise<any> {\n if (!compressed.compressed) return compressed;\n\n const buffer = Buffer.from(compressed.data, 'base64');\n const decompressed = await gunzip(buffer);\n \n return JSON.parse(decompressed.toString());\n }\n\n /**\n * Apply optimization strategies\n */\n async optimize(operation: string, data: any): Promise<any> {\n let optimized = data;\n\n for (const strategy of this.strategies) {\n if (strategy.enabled) {\n try {\n optimized = await strategy.apply(optimized);\n } catch (error: any) {\n logger.error('Optimization strategy failed', {\n strategy: strategy.name,\n error: error.message,\n });\n }\n }\n }\n\n return optimized;\n }\n\n /**\n * Get performance metrics\n */\n getMetrics(): PerformanceMetrics {\n // Update cache hit rate\n const totalCacheAttempts = this.cacheHits + this.cacheMisses;\n this.metrics.cacheHitRate = totalCacheAttempts > 0\n ? this.cacheHits / totalCacheAttempts\n : 0;\n\n // Update memory usage\n this.metrics.memoryUsage = process.memoryUsage().heapUsed;\n\n return { ...this.metrics };\n }\n\n /**\n * Clear cache\n */\n clearCache(): void {\n const size = this.cache.size;\n this.cache.clear();\n logger.debug('Cache cleared', { entries: size });\n }\n\n /**\n * Enable/disable strategy\n */\n setStrategyEnabled(strategyName: string, enabled: boolean): void {\n const strategy = this.strategies.find(s => s.name === strategyName);\n if (strategy) {\n strategy.enabled = enabled;\n logger.debug('Strategy updated', { name: strategyName, enabled });\n }\n }\n\n /**\n * Cleanup resources\n */\n cleanup(): void {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n }\n this.clearCache();\n this.saveBatch = [];\n }\n\n /**\n * Initialize optimization strategies\n */\n private initializeStrategies(): void {\n this.strategies = [\n {\n name: 'deduplication',\n enabled: true,\n priority: 1,\n apply: async (data: any) => this.deduplicateData(data),\n metrics: () => this.getMetrics(),\n },\n {\n name: 'chunking',\n enabled: true,\n priority: 2,\n apply: async (data: any) => this.chunkLargeData(data),\n metrics: () => this.getMetrics(),\n },\n {\n name: 'lazy-loading',\n enabled: this.config.cacheEnabled,\n priority: 3,\n apply: async (data: any) => this.createLazyProxy(data),\n metrics: () => this.getMetrics(),\n },\n ];\n\n // Sort by priority\n this.strategies.sort((a, b) => a.priority - b.priority);\n }\n\n /**\n * Start metrics collection\n */\n private startMetricsCollection(): void {\n // Collect metrics every 30 seconds\n setInterval(() => {\n const metrics = this.getMetrics();\n logger.debug('Performance metrics', metrics);\n }, 30000);\n }\n\n /**\n * Add operation to batch\n */\n private addToBatch(operation: SaveOperation): void {\n this.saveBatch.push(operation);\n\n // Start batch timer if not already running\n if (!this.batchTimer) {\n this.batchTimer = setTimeout(() => {\n this.flushBatch().catch(error => {\n logger.error('Batch flush failed', { error: error.message });\n });\n this.batchTimer = undefined;\n }, 1000); // Flush after 1 second\n }\n\n // Flush immediately if batch is full\n if (this.saveBatch.length >= this.config.batchSize) {\n if (this.batchTimer) {\n clearTimeout(this.batchTimer);\n this.batchTimer = undefined;\n }\n this.flushBatch().catch(error => {\n logger.error('Batch flush failed', { error: error.message });\n });\n }\n }\n\n /**\n * Execute save operation\n */\n private async executeSaveOperation(operation: SaveOperation): Promise<void> {\n switch (operation.type) {\n case 'frame':\n await this.saveFrameInternal(operation.data);\n break;\n case 'iteration':\n await this.saveIterationInternal(operation.data);\n break;\n default:\n logger.warn('Unknown operation type', { type: operation.type });\n }\n }\n\n /**\n * Internal frame save\n */\n private async saveFrameInternal(frame: Frame): Promise<void> {\n // This would integrate with StackMemory's frame storage\n // Placeholder implementation\n logger.debug('Frame saved', { frameId: frame.frame_id });\n }\n\n /**\n * Internal iteration save\n */\n private async saveIterationInternal(iteration: any): Promise<void> {\n // This would save iteration data\n // Placeholder implementation\n logger.debug('Iteration saved', { iteration: iteration.number });\n }\n\n /**\n * Internal frame load\n */\n private async loadFramesInternal(query: FrameQuery): Promise<Frame[]> {\n // This would load frames from StackMemory\n // Placeholder implementation\n return [];\n }\n\n /**\n * Generate cache key\n */\n private generateCacheKey(type: string, params: any): string {\n return `${type}:${JSON.stringify(params)}`;\n }\n\n /**\n * Get from cache\n */\n private getFromCache<T>(key: string): T | undefined {\n const entry = this.cache.get(key);\n \n if (!entry) return undefined;\n \n // Check if expired\n if (entry.expiry && entry.expiry < Date.now()) {\n this.cache.delete(key);\n return undefined;\n }\n\n return entry.data as T;\n }\n\n /**\n * Set cache entry\n */\n private setCache(key: string, data: any, ttl?: number): void {\n const entry: CacheEntry = {\n data,\n timestamp: Date.now(),\n expiry: ttl ? Date.now() + ttl : undefined,\n };\n\n this.cache.set(key, entry);\n\n // Limit cache size\n if (this.cache.size > 100) {\n // Remove oldest entries\n const entries = Array.from(this.cache.entries());\n entries.sort((a, b) => a[1].timestamp - b[1].timestamp);\n \n for (let i = 0; i < 20; i++) {\n this.cache.delete(entries[i][0]);\n }\n }\n }\n\n /**\n * Deduplicate data\n */\n private deduplicateData(data: any): any {\n if (Array.isArray(data)) {\n const seen = new Set();\n return data.filter(item => {\n const key = JSON.stringify(item);\n if (seen.has(key)) {\n return false;\n }\n seen.add(key);\n return true;\n });\n }\n return data;\n }\n\n /**\n * Chunk large data\n */\n private chunkLargeData(data: any): any {\n const json = JSON.stringify(data);\n \n // If data is too large, create chunks\n if (json.length > 100000) {\n // This would implement chunking logic\n // For now, return as-is\n logger.debug('Large data detected', { size: json.length });\n }\n\n return data;\n }\n\n /**\n * Create lazy-loading proxy\n */\n private createLazyProxy(data: any): any {\n // This would create a proxy that loads data on demand\n // For now, return as-is\n return data;\n }\n}\n\n// Internal types\ninterface SaveOperation {\n type: 'frame' | 'iteration';\n data: any;\n timestamp: number;\n}\n\ninterface CacheEntry {\n data: any;\n timestamp: number;\n expiry?: number;\n}\n\ninterface FrameQuery {\n loopId?: string;\n sessionId?: string;\n limit?: number;\n since?: number;\n}"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,182 +0,0 @@
1
- #!/usr/bin/env node
2
- import { fileURLToPath as __fileURLToPath } from 'url';
3
- import { dirname as __pathDirname } from 'path';
4
- const __filename = __fileURLToPath(import.meta.url);
5
- const __dirname = __pathDirname(__filename);
6
- import { RalphStackMemoryBridge } from "./bridge/ralph-stackmemory-bridge.js";
7
- class RalphIntegrationDemo {
8
- bridge;
9
- constructor() {
10
- const config = {
11
- contextBudget: {
12
- maxTokens: 2e3,
13
- // Smaller budget for demo
14
- compressionEnabled: true,
15
- adaptiveBudgeting: true
16
- },
17
- performance: {
18
- asyncSaves: true,
19
- batchSize: 5,
20
- compressionLevel: 1,
21
- cacheEnabled: true
22
- },
23
- lifecycle: {
24
- checkpoints: {
25
- enabled: true,
26
- frequency: 3,
27
- // Checkpoint every 3 iterations
28
- retentionDays: 1
29
- // Short retention for demo
30
- }
31
- }
32
- };
33
- this.bridge = new RalphStackMemoryBridge({
34
- config,
35
- debug: true
36
- });
37
- }
38
- /**
39
- * Run the integration demo
40
- */
41
- async run() {
42
- console.log("\n\u{1F916} Ralph-StackMemory Integration Demo\n");
43
- try {
44
- await this.demonstrateInitialization();
45
- await this.demonstrateIterations();
46
- await this.demonstrateRecovery();
47
- await this.demonstrateMetrics();
48
- console.log("\n\u2705 Demo completed successfully!\n");
49
- } catch (error) {
50
- console.error("\n\u274C Demo failed:", error.message);
51
- throw error;
52
- } finally {
53
- await this.cleanup();
54
- }
55
- }
56
- /**
57
- * Demonstrate initialization
58
- */
59
- async demonstrateInitialization() {
60
- console.log("\u{1F4CB} Phase 1: Initialization");
61
- console.log("==========================");
62
- await this.bridge.initialize();
63
- const task = "Implement user authentication system with JWT";
64
- const criteria = [
65
- "- User registration endpoint working",
66
- "- Login endpoint returns JWT token",
67
- "- Protected routes validate JWT",
68
- "- Password hashing implemented",
69
- "- Tests pass with >80% coverage"
70
- ].join("\n");
71
- const loopState = await this.bridge.createNewLoop(task, criteria);
72
- console.log(`\u2713 Created Ralph loop: ${loopState.loopId}`);
73
- console.log(`\u2713 Task: ${task.substring(0, 50)}...`);
74
- console.log(`\u2713 Status: ${loopState.status}`);
75
- console.log(`\u2713 Iteration: ${loopState.iteration}`);
76
- console.log();
77
- }
78
- /**
79
- * Demonstrate iterations with context management
80
- */
81
- async demonstrateIterations() {
82
- console.log("\u{1F504} Phase 2: Iteration Management");
83
- console.log("=================================");
84
- const maxIterations = 5;
85
- for (let i = 0; i < maxIterations; i++) {
86
- console.log(`
87
- --- Iteration ${i + 1} ---`);
88
- console.log("\u{1F527} Running worker iteration...");
89
- const iteration = await this.bridge.runWorkerIteration();
90
- console.log(`\u2713 Analysis: ${iteration.analysis.filesCount} files, tests ${iteration.analysis.testsPass ? "pass" : "fail"}`);
91
- console.log(`\u2713 Plan: ${iteration.plan.summary}`);
92
- console.log(`\u2713 Changes: ${iteration.changes.length} modifications`);
93
- console.log(`\u2713 Validation: ${iteration.validation.testsPass ? "pass" : "fail"}`);
94
- console.log("\u{1F440} Running reviewer iteration...");
95
- const review = await this.bridge.runReviewerIteration();
96
- if (review.complete) {
97
- console.log("\u{1F389} Task completed!");
98
- break;
99
- } else {
100
- console.log(`\u{1F4DD} Feedback: ${review.feedback?.substring(0, 100)}...`);
101
- }
102
- const usage = this.bridge.getPerformanceMetrics();
103
- console.log(`\u{1F4CA} Token usage: ${usage.tokenCount} / Context load: ${usage.contextLoadTime}ms`);
104
- if ((i + 1) % 3 === 0) {
105
- console.log("\u{1F4BE} Creating checkpoint...");
106
- const checkpoint = await this.bridge.createCheckpoint();
107
- console.log(`\u2713 Checkpoint: ${checkpoint.id}`);
108
- }
109
- await new Promise((resolve) => setTimeout(resolve, 1e3));
110
- }
111
- }
112
- /**
113
- * Demonstrate crash recovery
114
- */
115
- async demonstrateRecovery() {
116
- console.log("\n\u{1F691} Phase 3: Crash Recovery");
117
- console.log("===========================");
118
- const sessionId = "demo-session-123";
119
- try {
120
- console.log("\u{1F504} Simulating session rehydration...");
121
- console.log("\u2713 Loading context from StackMemory...");
122
- console.log("\u2713 Reconciling state from git, files, and memory...");
123
- console.log("\u2713 Applying context budget constraints...");
124
- console.log("\u2713 Resuming from last iteration...");
125
- console.log("\u{1F4C8} Recovery successful!");
126
- console.log(" - Context loaded: 2.1s");
127
- console.log(" - State reconciled: 0.3s");
128
- console.log(" - Memory usage: 45MB");
129
- console.log(" - Cache hit rate: 78%");
130
- } catch (error) {
131
- console.log(`\u26A0\uFE0F Recovery simulation: ${error.message}`);
132
- }
133
- }
134
- /**
135
- * Demonstrate performance metrics
136
- */
137
- async demonstrateMetrics() {
138
- console.log("\n\u{1F4CA} Phase 4: Performance Metrics");
139
- console.log("================================");
140
- const metrics = this.bridge.getPerformanceMetrics();
141
- console.log("Performance Summary:");
142
- console.log(` Iteration Time: ${metrics.iterationTime}ms avg`);
143
- console.log(` Context Load Time: ${metrics.contextLoadTime}ms avg`);
144
- console.log(` State Save Time: ${metrics.stateSaveTime}ms avg`);
145
- console.log(` Memory Usage: ${Math.round(metrics.memoryUsage / 1024 / 1024)}MB`);
146
- console.log(` Token Count: ${metrics.tokenCount}`);
147
- console.log(` Cache Hit Rate: ${Math.round(metrics.cacheHitRate * 100)}%`);
148
- console.log("\nOptimization Features:");
149
- console.log(" \u2713 Async frame saves with batching");
150
- console.log(" \u2713 Context compression and budget management");
151
- console.log(" \u2713 State reconciliation with conflict resolution");
152
- console.log(" \u2713 Lifecycle hooks for clean integration");
153
- console.log(" \u2713 Checkpoint-based recovery");
154
- }
155
- /**
156
- * Cleanup resources
157
- */
158
- async cleanup() {
159
- console.log("\n\u{1F9F9} Cleaning up...");
160
- await this.bridge.cleanup();
161
- console.log("\u2713 Resources cleaned up");
162
- }
163
- }
164
- async function main() {
165
- const demo = new RalphIntegrationDemo();
166
- try {
167
- await demo.run();
168
- } catch (error) {
169
- console.error("Demo failed:", error.message);
170
- if (process.env.DEBUG) {
171
- console.error(error.stack);
172
- }
173
- process.exit(1);
174
- }
175
- }
176
- if (import.meta.url === `file://${process.argv[1]}`) {
177
- main().catch(console.error);
178
- }
179
- export {
180
- RalphIntegrationDemo
181
- };
182
- //# sourceMappingURL=ralph-integration-demo.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/integrations/ralph/ralph-integration-demo.ts"],
4
- "sourcesContent": ["#!/usr/bin/env node\n/**\n * Ralph-StackMemory Integration Demonstration\n * Shows how the integration works with a working example\n */\n\nimport { RalphStackMemoryBridge } from './bridge/ralph-stackmemory-bridge.js';\nimport { logger } from '../../core/monitoring/logger.js';\nimport { RalphStackMemoryConfig } from './types.js';\n\nclass RalphIntegrationDemo {\n private bridge: RalphStackMemoryBridge;\n\n constructor() {\n // Configure the bridge for demo\n const config: Partial<RalphStackMemoryConfig> = {\n contextBudget: {\n maxTokens: 2000, // Smaller budget for demo\n compressionEnabled: true,\n adaptiveBudgeting: true,\n },\n performance: {\n asyncSaves: true,\n batchSize: 5,\n compressionLevel: 1,\n cacheEnabled: true,\n },\n lifecycle: {\n checkpoints: {\n enabled: true,\n frequency: 3, // Checkpoint every 3 iterations\n retentionDays: 1, // Short retention for demo\n },\n },\n };\n\n this.bridge = new RalphStackMemoryBridge({\n config,\n debug: true,\n });\n }\n\n /**\n * Run the integration demo\n */\n async run(): Promise<void> {\n console.log('\\n\uD83E\uDD16 Ralph-StackMemory Integration Demo\\n');\n\n try {\n // Phase 1: Initialize\n await this.demonstrateInitialization();\n\n // Phase 2: Run iterations\n await this.demonstrateIterations();\n\n // Phase 3: Show recovery\n await this.demonstrateRecovery();\n\n // Phase 4: Show metrics\n await this.demonstrateMetrics();\n\n console.log('\\n\u2705 Demo completed successfully!\\n');\n } catch (error: any) {\n console.error('\\n\u274C Demo failed:', error.message);\n throw error;\n } finally {\n await this.cleanup();\n }\n }\n\n /**\n * Demonstrate initialization\n */\n private async demonstrateInitialization(): Promise<void> {\n console.log('\uD83D\uDCCB Phase 1: Initialization');\n console.log('==========================');\n\n // Initialize the bridge\n await this.bridge.initialize();\n\n // Create a new loop\n const task = 'Implement user authentication system with JWT';\n const criteria = [\n '- User registration endpoint working',\n '- Login endpoint returns JWT token',\n '- Protected routes validate JWT',\n '- Password hashing implemented',\n '- Tests pass with >80% coverage',\n ].join('\\n');\n\n const loopState = await this.bridge.createNewLoop(task, criteria);\n\n console.log(`\u2713 Created Ralph loop: ${loopState.loopId}`);\n console.log(`\u2713 Task: ${task.substring(0, 50)}...`);\n console.log(`\u2713 Status: ${loopState.status}`);\n console.log(`\u2713 Iteration: ${loopState.iteration}`);\n console.log();\n }\n\n /**\n * Demonstrate iterations with context management\n */\n private async demonstrateIterations(): Promise<void> {\n console.log('\uD83D\uDD04 Phase 2: Iteration Management');\n console.log('=================================');\n\n const maxIterations = 5;\n\n for (let i = 0; i < maxIterations; i++) {\n console.log(`\\n--- Iteration ${i + 1} ---`);\n\n // Run worker iteration\n console.log('\uD83D\uDD27 Running worker iteration...');\n const iteration = await this.bridge.runWorkerIteration();\n\n console.log(`\u2713 Analysis: ${iteration.analysis.filesCount} files, tests ${iteration.analysis.testsPass ? 'pass' : 'fail'}`);\n console.log(`\u2713 Plan: ${iteration.plan.summary}`);\n console.log(`\u2713 Changes: ${iteration.changes.length} modifications`);\n console.log(`\u2713 Validation: ${iteration.validation.testsPass ? 'pass' : 'fail'}`);\n\n // Run reviewer iteration\n console.log('\uD83D\uDC40 Running reviewer iteration...');\n const review = await this.bridge.runReviewerIteration();\n\n if (review.complete) {\n console.log('\uD83C\uDF89 Task completed!');\n break;\n } else {\n console.log(`\uD83D\uDCDD Feedback: ${review.feedback?.substring(0, 100)}...`);\n }\n\n // Show context budget usage\n const usage = this.bridge.getPerformanceMetrics();\n console.log(`\uD83D\uDCCA Token usage: ${usage.tokenCount} / Context load: ${usage.contextLoadTime}ms`);\n\n // Create checkpoint every few iterations\n if ((i + 1) % 3 === 0) {\n console.log('\uD83D\uDCBE Creating checkpoint...');\n const checkpoint = await this.bridge.createCheckpoint();\n console.log(`\u2713 Checkpoint: ${checkpoint.id}`);\n }\n\n // Small delay for demo\n await new Promise(resolve => setTimeout(resolve, 1000));\n }\n }\n\n /**\n * Demonstrate crash recovery\n */\n private async demonstrateRecovery(): Promise<void> {\n console.log('\\n\uD83D\uDE91 Phase 3: Crash Recovery');\n console.log('===========================');\n\n // Simulate getting session ID\n const sessionId = 'demo-session-123';\n\n try {\n console.log('\uD83D\uDD04 Simulating session rehydration...');\n \n // This would normally rehydrate from a real StackMemory session\n // For demo, we'll show the concept\n console.log('\u2713 Loading context from StackMemory...');\n console.log('\u2713 Reconciling state from git, files, and memory...');\n console.log('\u2713 Applying context budget constraints...');\n console.log('\u2713 Resuming from last iteration...');\n\n // Show recovery metrics\n console.log('\uD83D\uDCC8 Recovery successful!');\n console.log(' - Context loaded: 2.1s');\n console.log(' - State reconciled: 0.3s');\n console.log(' - Memory usage: 45MB');\n console.log(' - Cache hit rate: 78%');\n\n } catch (error: any) {\n console.log(`\u26A0\uFE0F Recovery simulation: ${error.message}`);\n }\n }\n\n /**\n * Demonstrate performance metrics\n */\n private async demonstrateMetrics(): Promise<void> {\n console.log('\\n\uD83D\uDCCA Phase 4: Performance Metrics');\n console.log('================================');\n\n const metrics = this.bridge.getPerformanceMetrics();\n\n console.log('Performance Summary:');\n console.log(` Iteration Time: ${metrics.iterationTime}ms avg`);\n console.log(` Context Load Time: ${metrics.contextLoadTime}ms avg`);\n console.log(` State Save Time: ${metrics.stateSaveTime}ms avg`);\n console.log(` Memory Usage: ${Math.round(metrics.memoryUsage / 1024 / 1024)}MB`);\n console.log(` Token Count: ${metrics.tokenCount}`);\n console.log(` Cache Hit Rate: ${Math.round(metrics.cacheHitRate * 100)}%`);\n\n console.log('\\nOptimization Features:');\n console.log(' \u2713 Async frame saves with batching');\n console.log(' \u2713 Context compression and budget management');\n console.log(' \u2713 State reconciliation with conflict resolution');\n console.log(' \u2713 Lifecycle hooks for clean integration');\n console.log(' \u2713 Checkpoint-based recovery');\n }\n\n /**\n * Cleanup resources\n */\n private async cleanup(): Promise<void> {\n console.log('\\n\uD83E\uDDF9 Cleaning up...');\n await this.bridge.cleanup();\n console.log('\u2713 Resources cleaned up');\n }\n}\n\n/**\n * CLI interface\n */\nasync function main() {\n const demo = new RalphIntegrationDemo();\n\n try {\n await demo.run();\n } catch (error: any) {\n console.error('Demo failed:', error.message);\n if (process.env.DEBUG) {\n console.error(error.stack);\n }\n process.exit(1);\n }\n}\n\n// Run if called directly\nif (import.meta.url === `file://${process.argv[1]}`) {\n main().catch(console.error);\n}\n\nexport { RalphIntegrationDemo };"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/recovery/crash-recovery.ts"],
4
- "sourcesContent": ["/**\n * Crash Recovery System for Ralph Swarms\n * Handles failures, provides auto-recovery, and maintains swarm resilience\n */\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { SwarmCoordinator } from '../swarm/swarm-coordinator.js';\nimport { Agent, SwarmState } from '../types.js';\n\nexport interface RecoveryCheckpoint {\n id: string;\n swarmId: string;\n timestamp: number;\n swarmState: SwarmState;\n agents: Agent[];\n tasks: any[];\n errorLog: CrashReport[];\n databaseBackup?: string;\n gitState: {\n currentBranch: string;\n uncommittedChanges: string[];\n activeBranches: string[];\n };\n}\n\nexport interface CrashReport {\n id: string;\n timestamp: number;\n agentId?: string;\n errorType:\n | 'database_failure'\n | 'git_conflict'\n | 'agent_timeout'\n | 'memory_overflow'\n | 'network_error';\n error: Error;\n context: any;\n recoveryAction: string;\n severity: 'low' | 'medium' | 'high' | 'critical';\n resolved: boolean;\n}\n\nexport interface RecoveryStrategy {\n errorType: string;\n condition: (error: Error, context: any) => boolean;\n action: (\n report: CrashReport,\n recovery: CrashRecoverySystem\n ) => Promise<boolean>;\n maxRetries: number;\n backoffMs: number;\n}\n\nexport class CrashRecoverySystem {\n private checkpoints: Map<string, RecoveryCheckpoint> = new Map();\n private crashReports: CrashReport[] = [];\n private recoveryStrategies: RecoveryStrategy[] = [];\n private swarmCoordinator: SwarmCoordinator;\n private checkpointInterval?: NodeJS.Timeout;\n private recoveryDir: string;\n\n constructor(\n swarmCoordinator: SwarmCoordinator,\n recoveryDir: string = '.swarm/recovery'\n ) {\n this.swarmCoordinator = swarmCoordinator;\n this.recoveryDir = recoveryDir;\n this.setupRecoveryStrategies();\n }\n\n /**\n * Initialize crash recovery system\n */\n async initialize(): Promise<void> {\n await this.ensureRecoveryDirectory();\n await this.loadExistingCheckpoints();\n this.startPeriodicCheckpoints();\n\n // Set up global error handlers\n process.on('unhandledRejection', (reason, promise) => {\n this.handleCrash(new Error(`Unhandled Rejection: ${reason}`), {\n type: 'unhandled_rejection',\n promise: promise.toString(),\n });\n });\n\n process.on('uncaughtException', (error) => {\n this.handleCrash(error, { type: 'uncaught_exception' });\n });\n\n logger.info('Crash recovery system initialized');\n }\n\n /**\n * Create recovery checkpoint\n */\n async createCheckpoint(\n swarmId: string,\n reason: string = 'periodic'\n ): Promise<string> {\n try {\n const swarmState = (this.swarmCoordinator as any).swarmState;\n const agents = Array.from(\n (this.swarmCoordinator as any).activeAgents.values()\n );\n\n const checkpoint: RecoveryCheckpoint = {\n id: this.generateId(),\n swarmId,\n timestamp: Date.now(),\n swarmState: { ...swarmState },\n agents: agents.map((agent) => ({ ...agent })),\n tasks: swarmState.tasks || [],\n errorLog: this.crashReports.slice(-10), // Last 10 errors\n gitState: await this.captureGitState(),\n };\n\n // Save to disk\n const checkpointPath = path.join(\n this.recoveryDir,\n `checkpoint-${checkpoint.id}.json`\n );\n await fs.writeFile(checkpointPath, JSON.stringify(checkpoint, null, 2));\n\n this.checkpoints.set(checkpoint.id, checkpoint);\n\n logger.info(\n `Created checkpoint ${checkpoint.id} for swarm ${swarmId} (${reason})`\n );\n return checkpoint.id;\n } catch (error) {\n logger.error('Failed to create checkpoint:', error as Error);\n throw error;\n }\n }\n\n /**\n * Handle crash or error\n */\n async handleCrash(error: Error, context: any = {}): Promise<void> {\n const report: CrashReport = {\n id: this.generateId(),\n timestamp: Date.now(),\n agentId: context.agentId,\n errorType: this.classifyError(error, context),\n error,\n context,\n recoveryAction: '',\n severity: this.assessSeverity(error, context),\n resolved: false,\n };\n\n this.crashReports.push(report);\n logger.error(`Crash detected [${report.id}]:`, error);\n\n // Attempt automatic recovery\n const recovered = await this.attemptRecovery(report);\n\n if (recovered) {\n report.resolved = true;\n report.recoveryAction = 'auto_recovered';\n logger.info(`Successfully recovered from crash ${report.id}`);\n } else {\n logger.error(`Failed to recover from crash ${report.id}`);\n\n if (report.severity === 'critical') {\n await this.escalateCriticalFailure(report);\n }\n }\n\n // Save crash report\n await this.saveCrashReport(report);\n }\n\n /**\n * Restore from checkpoint\n */\n async restoreFromCheckpoint(checkpointId: string): Promise<boolean> {\n try {\n const checkpoint = this.checkpoints.get(checkpointId);\n if (!checkpoint) {\n logger.error(`Checkpoint ${checkpointId} not found`);\n return false;\n }\n\n logger.info(`Restoring from checkpoint ${checkpointId}`);\n\n // Restore git state\n await this.restoreGitState(checkpoint.gitState);\n\n // Restore database if backup exists\n if (checkpoint.databaseBackup) {\n await this.restoreDatabase(checkpoint.databaseBackup);\n }\n\n // Restore swarm state\n await this.restoreSwarmState(checkpoint);\n\n logger.info(`Successfully restored from checkpoint ${checkpointId}`);\n return true;\n } catch (error) {\n logger.error(\n `Failed to restore from checkpoint ${checkpointId}:`,\n error as Error\n );\n return false;\n }\n }\n\n /**\n * Get recovery recommendations\n */\n getRecoveryRecommendations(): {\n recentCheckpoints: RecoveryCheckpoint[];\n frequentErrors: Array<{\n type: string;\n count: number;\n lastOccurrence: number;\n }>;\n recoveryActions: string[];\n systemHealth: 'good' | 'degraded' | 'critical';\n } {\n const recent = Date.now() - 3600000; // Last hour\n const recentCheckpoints = Array.from(this.checkpoints.values())\n .filter((cp) => cp.timestamp > recent)\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, 5);\n\n const errorCounts = new Map<string, number>();\n const errorTimes = new Map<string, number>();\n\n for (const report of this.crashReports.filter(\n (r) => r.timestamp > recent\n )) {\n errorCounts.set(\n report.errorType,\n (errorCounts.get(report.errorType) || 0) + 1\n );\n errorTimes.set(\n report.errorType,\n Math.max(errorTimes.get(report.errorType) || 0, report.timestamp)\n );\n }\n\n const frequentErrors = Array.from(errorCounts.entries())\n .map(([type, count]) => ({\n type,\n count,\n lastOccurrence: errorTimes.get(type) || 0,\n }))\n .sort((a, b) => b.count - a.count);\n\n const criticalErrors = this.crashReports.filter(\n (r) => r.severity === 'critical' && r.timestamp > recent && !r.resolved\n );\n\n const systemHealth =\n criticalErrors.length > 0\n ? 'critical'\n : frequentErrors.length > 3\n ? 'degraded'\n : 'good';\n\n return {\n recentCheckpoints,\n frequentErrors,\n recoveryActions: this.generateRecoveryActions(frequentErrors),\n systemHealth,\n };\n }\n\n /**\n * Auto-recovery from common failures\n */\n async attemptAutoRecovery(swarmId: string): Promise<boolean> {\n logger.info(`Attempting auto-recovery for swarm ${swarmId}`);\n\n try {\n // 1. Check for recent checkpoint\n const recentCheckpoint = this.findRecentCheckpoint(swarmId);\n if (recentCheckpoint) {\n logger.info(`Found recent checkpoint: ${recentCheckpoint.id}`);\n return await this.restoreFromCheckpoint(recentCheckpoint.id);\n }\n\n // 2. Attempt graceful restart\n await this.swarmCoordinator.forceCleanup();\n\n // 3. Clear problematic state\n await this.clearProblematicState();\n\n // 4. Restart with minimal configuration\n logger.info('Restarting swarm with minimal configuration');\n return true;\n } catch (error) {\n logger.error('Auto-recovery failed:', error as Error);\n return false;\n }\n }\n\n private async attemptRecovery(report: CrashReport): Promise<boolean> {\n // Find appropriate recovery strategy\n for (const strategy of this.recoveryStrategies) {\n if (strategy.condition(report.error, report.context)) {\n logger.info(`Applying recovery strategy: ${strategy.errorType}`);\n\n let retries = 0;\n while (retries < strategy.maxRetries) {\n try {\n const success = await strategy.action(report, this);\n if (success) {\n report.recoveryAction = strategy.errorType;\n return true;\n }\n } catch (error) {\n logger.warn(\n `Recovery attempt ${retries + 1} failed:`,\n error as Error\n );\n }\n\n retries++;\n if (retries < strategy.maxRetries) {\n await this.sleep(strategy.backoffMs * Math.pow(2, retries));\n }\n }\n }\n }\n\n return false;\n }\n\n private classifyError(error: Error, context: any): CrashReport['errorType'] {\n const message = error.message.toLowerCase();\n\n if (message.includes('database') || message.includes('sqlite')) {\n return 'database_failure';\n } else if (message.includes('git') || message.includes('branch')) {\n return 'git_conflict';\n } else if (message.includes('timeout') || context.timeout) {\n return 'agent_timeout';\n } else if (message.includes('memory') || message.includes('heap')) {\n return 'memory_overflow';\n } else if (message.includes('network') || message.includes('connect')) {\n return 'network_error';\n }\n\n return 'database_failure'; // Default\n }\n\n private assessSeverity(error: Error, context: any): CrashReport['severity'] {\n if (context.type === 'uncaught_exception') return 'critical';\n if (error.message.includes('unhandled')) return 'high';\n if (error.message.includes('database')) return 'medium';\n return 'low';\n }\n\n private setupRecoveryStrategies(): void {\n this.recoveryStrategies = [\n {\n errorType: 'database_failure',\n condition: (error) =>\n error.message.includes('database') ||\n error.message.includes('sqlite'),\n action: async (report, recovery) => {\n // Reinitialize database connection\n logger.info('Attempting database recovery');\n\n // Create new database adapter\n try {\n await recovery.clearProblematicState();\n return true;\n } catch {\n return false;\n }\n },\n maxRetries: 3,\n backoffMs: 1000,\n },\n {\n errorType: 'git_conflict',\n condition: (error) =>\n error.message.includes('git') || error.message.includes('branch'),\n action: async (report, recovery) => {\n logger.info('Attempting git conflict resolution');\n\n try {\n // Force cleanup git state\n const { execSync } = await import('child_process');\n execSync('git checkout main', { stdio: 'ignore' });\n execSync('git reset --hard HEAD', { stdio: 'ignore' });\n return true;\n } catch {\n return false;\n }\n },\n maxRetries: 2,\n backoffMs: 500,\n },\n {\n errorType: 'agent_timeout',\n condition: (error, context) =>\n error.message.includes('timeout') || context.timeout,\n action: async (report, recovery) => {\n logger.info('Attempting agent timeout recovery');\n\n // Force cleanup stuck agents\n await recovery.swarmCoordinator.forceCleanup();\n return true;\n },\n maxRetries: 1,\n backoffMs: 2000,\n },\n {\n errorType: 'memory_overflow',\n condition: (error) =>\n error.message.includes('memory') || error.message.includes('heap'),\n action: async (report, recovery) => {\n logger.info('Attempting memory recovery');\n\n // Force garbage collection\n if (global.gc) global.gc();\n\n // Cleanup old checkpoints\n await recovery.cleanupOldCheckpoints(5);\n return true;\n },\n maxRetries: 1,\n backoffMs: 5000,\n },\n ];\n }\n\n private async captureGitState(): Promise<RecoveryCheckpoint['gitState']> {\n try {\n const { execSync } = await import('child_process');\n\n const currentBranch = execSync('git branch --show-current', {\n encoding: 'utf8',\n }).trim();\n const statusOutput = execSync('git status --porcelain', {\n encoding: 'utf8',\n });\n const uncommittedChanges = statusOutput\n .trim()\n .split('\\n')\n .filter(Boolean);\n const branchesOutput = execSync('git branch', { encoding: 'utf8' });\n const activeBranches = branchesOutput\n .split('\\n')\n .map((line) => line.trim().replace(/^\\*?\\s*/, ''))\n .filter(Boolean);\n\n return {\n currentBranch,\n uncommittedChanges,\n activeBranches,\n };\n } catch (error) {\n logger.warn('Failed to capture git state:', error as Error);\n return {\n currentBranch: 'unknown',\n uncommittedChanges: [],\n activeBranches: [],\n };\n }\n }\n\n private async restoreGitState(\n gitState: RecoveryCheckpoint['gitState']\n ): Promise<void> {\n try {\n const { execSync } = await import('child_process');\n execSync(`git checkout ${gitState.currentBranch}`, { stdio: 'ignore' });\n logger.info(`Restored git branch: ${gitState.currentBranch}`);\n } catch (error) {\n logger.warn('Failed to restore git state:', error as Error);\n }\n }\n\n private async restoreDatabase(backupPath: string): Promise<void> {\n // Implementation would restore database from backup\n logger.info(`Restoring database from ${backupPath}`);\n }\n\n private async restoreSwarmState(\n checkpoint: RecoveryCheckpoint\n ): Promise<void> {\n // Implementation would restore swarm coordinator state\n logger.info(`Restoring swarm state from checkpoint ${checkpoint.id}`);\n }\n\n private findRecentCheckpoint(swarmId: string): RecoveryCheckpoint | null {\n const recent = Date.now() - 1800000; // 30 minutes\n\n return (\n Array.from(this.checkpoints.values())\n .filter((cp) => cp.swarmId === swarmId && cp.timestamp > recent)\n .sort((a, b) => b.timestamp - a.timestamp)[0] || null\n );\n }\n\n private async clearProblematicState(): Promise<void> {\n try {\n // Clear temporary files\n await this.cleanupTempFiles();\n\n // Reset any stuck locks\n // Implementation specific cleanup\n\n logger.info('Cleared problematic state');\n } catch (error) {\n logger.error('Failed to clear problematic state:', error as Error);\n }\n }\n\n private async cleanupTempFiles(): Promise<void> {\n // Cleanup implementation\n }\n\n private async cleanupOldCheckpoints(keepCount: number): Promise<void> {\n const sorted = Array.from(this.checkpoints.values()).sort(\n (a, b) => b.timestamp - a.timestamp\n );\n\n const toDelete = sorted.slice(keepCount);\n\n for (const checkpoint of toDelete) {\n try {\n const checkpointPath = path.join(\n this.recoveryDir,\n `checkpoint-${checkpoint.id}.json`\n );\n await fs.unlink(checkpointPath);\n this.checkpoints.delete(checkpoint.id);\n } catch (error) {\n logger.warn(\n `Failed to delete checkpoint ${checkpoint.id}:`,\n error as Error\n );\n }\n }\n\n logger.info(`Cleaned up ${toDelete.length} old checkpoints`);\n }\n\n private async escalateCriticalFailure(report: CrashReport): Promise<void> {\n logger.error(`CRITICAL FAILURE [${report.id}]: ${report.error.message}`);\n\n // Create emergency checkpoint\n try {\n const swarmState = (this.swarmCoordinator as any).swarmState;\n if (swarmState?.id) {\n await this.createCheckpoint(swarmState.id, 'critical_failure');\n }\n } catch {\n logger.error('Failed to create emergency checkpoint');\n }\n\n // Graceful shutdown\n await this.swarmCoordinator.forceCleanup();\n }\n\n private generateRecoveryActions(\n frequentErrors: Array<{ type: string; count: number }>\n ): string[] {\n const actions: string[] = [];\n\n for (const { type, count } of frequentErrors) {\n if (count > 3) {\n switch (type) {\n case 'database_failure':\n actions.push('Consider upgrading database configuration');\n break;\n case 'git_conflict':\n actions.push('Review git workflow and branch strategy');\n break;\n case 'agent_timeout':\n actions.push(\n 'Increase agent timeout limits or reduce task complexity'\n );\n break;\n case 'memory_overflow':\n actions.push('Monitor memory usage and consider increasing limits');\n break;\n }\n }\n }\n\n return actions;\n }\n\n private startPeriodicCheckpoints(): void {\n this.checkpointInterval = setInterval(async () => {\n const swarmState = (this.swarmCoordinator as any).swarmState;\n if (swarmState?.id && swarmState.status === 'active') {\n await this.createCheckpoint(swarmState.id, 'periodic');\n }\n }, 300000); // Every 5 minutes\n }\n\n private async ensureRecoveryDirectory(): Promise<void> {\n try {\n await fs.mkdir(this.recoveryDir, { recursive: true });\n } catch (error) {\n logger.error('Failed to create recovery directory:', error as Error);\n }\n }\n\n private async loadExistingCheckpoints(): Promise<void> {\n try {\n const files = await fs.readdir(this.recoveryDir);\n\n for (const file of files) {\n if (file.startsWith('checkpoint-') && file.endsWith('.json')) {\n try {\n const content = await fs.readFile(\n path.join(this.recoveryDir, file),\n 'utf8'\n );\n const checkpoint: RecoveryCheckpoint = JSON.parse(content);\n this.checkpoints.set(checkpoint.id, checkpoint);\n } catch (error) {\n logger.warn(`Failed to load checkpoint ${file}:`, error as Error);\n }\n }\n }\n\n logger.info(`Loaded ${this.checkpoints.size} existing checkpoints`);\n } catch (error) {\n logger.warn('Failed to load existing checkpoints:', error as Error);\n }\n }\n\n private async saveCrashReport(report: CrashReport): Promise<void> {\n try {\n const reportPath = path.join(this.recoveryDir, `crash-${report.id}.json`);\n await fs.writeFile(reportPath, JSON.stringify(report, null, 2));\n } catch (error) {\n logger.error('Failed to save crash report:', error as Error);\n }\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n private generateId(): string {\n return `recovery_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\nexport default CrashRecoverySystem;\n"],
5
- "mappings": ";;;;AAKA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,SAAS,cAAc;AAgDhB,MAAM,oBAAoB;AAAA,EACvB,cAA+C,oBAAI,IAAI;AAAA,EACvD,eAA8B,CAAC;AAAA,EAC/B,qBAAyC,CAAC;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EAER,YACE,kBACA,cAAsB,mBACtB;AACA,SAAK,mBAAmB;AACxB,SAAK,cAAc;AACnB,SAAK,wBAAwB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,aAA4B;AAChC,UAAM,KAAK,wBAAwB;AACnC,UAAM,KAAK,wBAAwB;AACnC,SAAK,yBAAyB;AAG9B,YAAQ,GAAG,sBAAsB,CAAC,QAAQ,YAAY;AACpD,WAAK,YAAY,IAAI,MAAM,wBAAwB,MAAM,EAAE,GAAG;AAAA,QAC5D,MAAM;AAAA,QACN,SAAS,QAAQ,SAAS;AAAA,MAC5B,CAAC;AAAA,IACH,CAAC;AAED,YAAQ,GAAG,qBAAqB,CAAC,UAAU;AACzC,WAAK,YAAY,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAAA,IACxD,CAAC;AAED,WAAO,KAAK,mCAAmC;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,iBACJ,SACA,SAAiB,YACA;AACjB,QAAI;AACF,YAAM,aAAc,KAAK,iBAAyB;AAClD,YAAM,SAAS,MAAM;AAAA,QAClB,KAAK,iBAAyB,aAAa,OAAO;AAAA,MACrD;AAEA,YAAM,aAAiC;AAAA,QACrC,IAAI,KAAK,WAAW;AAAA,QACpB;AAAA,QACA,WAAW,KAAK,IAAI;AAAA,QACpB,YAAY,EAAE,GAAG,WAAW;AAAA,QAC5B,QAAQ,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,MAAM,EAAE;AAAA,QAC5C,OAAO,WAAW,SAAS,CAAC;AAAA,QAC5B,UAAU,KAAK,aAAa,MAAM,GAAG;AAAA;AAAA,QACrC,UAAU,MAAM,KAAK,gBAAgB;AAAA,MACvC;AAGA,YAAM,iBAAiB,KAAK;AAAA,QAC1B,KAAK;AAAA,QACL,cAAc,WAAW,EAAE;AAAA,MAC7B;AACA,YAAM,GAAG,UAAU,gBAAgB,KAAK,UAAU,YAAY,MAAM,CAAC,CAAC;AAEtE,WAAK,YAAY,IAAI,WAAW,IAAI,UAAU;AAE9C,aAAO;AAAA,QACL,sBAAsB,WAAW,EAAE,cAAc,OAAO,KAAK,MAAM;AAAA,MACrE;AACA,aAAO,WAAW;AAAA,IACpB,SAAS,OAAO;AACd,aAAO,MAAM,gCAAgC,KAAc;AAC3D,YAAM;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAY,OAAc,UAAe,CAAC,GAAkB;AAChE,UAAM,SAAsB;AAAA,MAC1B,IAAI,KAAK,WAAW;AAAA,MACpB,WAAW,KAAK,IAAI;AAAA,MACpB,SAAS,QAAQ;AAAA,MACjB,WAAW,KAAK,cAAc,OAAO,OAAO;AAAA,MAC5C;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,UAAU,KAAK,eAAe,OAAO,OAAO;AAAA,MAC5C,UAAU;AAAA,IACZ;AAEA,SAAK,aAAa,KAAK,MAAM;AAC7B,WAAO,MAAM,mBAAmB,OAAO,EAAE,MAAM,KAAK;AAGpD,UAAM,YAAY,MAAM,KAAK,gBAAgB,MAAM;AAEnD,QAAI,WAAW;AACb,aAAO,WAAW;AAClB,aAAO,iBAAiB;AACxB,aAAO,KAAK,qCAAqC,OAAO,EAAE,EAAE;AAAA,IAC9D,OAAO;AACL,aAAO,MAAM,gCAAgC,OAAO,EAAE,EAAE;AAExD,UAAI,OAAO,aAAa,YAAY;AAClC,cAAM,KAAK,wBAAwB,MAAM;AAAA,MAC3C;AAAA,IACF;AAGA,UAAM,KAAK,gBAAgB,MAAM;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,sBAAsB,cAAwC;AAClE,QAAI;AACF,YAAM,aAAa,KAAK,YAAY,IAAI,YAAY;AACpD,UAAI,CAAC,YAAY;AACf,eAAO,MAAM,cAAc,YAAY,YAAY;AACnD,eAAO;AAAA,MACT;AAEA,aAAO,KAAK,6BAA6B,YAAY,EAAE;AAGvD,YAAM,KAAK,gBAAgB,WAAW,QAAQ;AAG9C,UAAI,WAAW,gBAAgB;AAC7B,cAAM,KAAK,gBAAgB,WAAW,cAAc;AAAA,MACtD;AAGA,YAAM,KAAK,kBAAkB,UAAU;AAEvC,aAAO,KAAK,yCAAyC,YAAY,EAAE;AACnE,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO;AAAA,QACL,qCAAqC,YAAY;AAAA,QACjD;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,6BASE;AACA,UAAM,SAAS,KAAK,IAAI,IAAI;AAC5B,UAAM,oBAAoB,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC,EAC3D,OAAO,CAAC,OAAO,GAAG,YAAY,MAAM,EACpC,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS,EACxC,MAAM,GAAG,CAAC;AAEb,UAAM,cAAc,oBAAI,IAAoB;AAC5C,UAAM,aAAa,oBAAI,IAAoB;AAE3C,eAAW,UAAU,KAAK,aAAa;AAAA,MACrC,CAAC,MAAM,EAAE,YAAY;AAAA,IACvB,GAAG;AACD,kBAAY;AAAA,QACV,OAAO;AAAA,SACN,YAAY,IAAI,OAAO,SAAS,KAAK,KAAK;AAAA,MAC7C;AACA,iBAAW;AAAA,QACT,OAAO;AAAA,QACP,KAAK,IAAI,WAAW,IAAI,OAAO,SAAS,KAAK,GAAG,OAAO,SAAS;AAAA,MAClE;AAAA,IACF;AAEA,UAAM,iBAAiB,MAAM,KAAK,YAAY,QAAQ,CAAC,EACpD,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO;AAAA,MACvB;AAAA,MACA;AAAA,MACA,gBAAgB,WAAW,IAAI,IAAI,KAAK;AAAA,IAC1C,EAAE,EACD,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK;AAEnC,UAAM,iBAAiB,KAAK,aAAa;AAAA,MACvC,CAAC,MAAM,EAAE,aAAa,cAAc,EAAE,YAAY,UAAU,CAAC,EAAE;AAAA,IACjE;AAEA,UAAM,eACJ,eAAe,SAAS,IACpB,aACA,eAAe,SAAS,IACtB,aACA;AAER,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,iBAAiB,KAAK,wBAAwB,cAAc;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,oBAAoB,SAAmC;AAC3D,WAAO,KAAK,sCAAsC,OAAO,EAAE;AAE3D,QAAI;AAEF,YAAM,mBAAmB,KAAK,qBAAqB,OAAO;AAC1D,UAAI,kBAAkB;AACpB,eAAO,KAAK,4BAA4B,iBAAiB,EAAE,EAAE;AAC7D,eAAO,MAAM,KAAK,sBAAsB,iBAAiB,EAAE;AAAA,MAC7D;AAGA,YAAM,KAAK,iBAAiB,aAAa;AAGzC,YAAM,KAAK,sBAAsB;AAGjC,aAAO,KAAK,6CAA6C;AACzD,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO,MAAM,yBAAyB,KAAc;AACpD,aAAO;AAAA,IACT;AAAA,EACF;AAAA,EAEA,MAAc,gBAAgB,QAAuC;AAEnE,eAAW,YAAY,KAAK,oBAAoB;AAC9C,UAAI,SAAS,UAAU,OAAO,OAAO,OAAO,OAAO,GAAG;AACpD,eAAO,KAAK,+BAA+B,SAAS,SAAS,EAAE;AAE/D,YAAI,UAAU;AACd,eAAO,UAAU,SAAS,YAAY;AACpC,cAAI;AACF,kBAAM,UAAU,MAAM,SAAS,OAAO,QAAQ,IAAI;AAClD,gBAAI,SAAS;AACX,qBAAO,iBAAiB,SAAS;AACjC,qBAAO;AAAA,YACT;AAAA,UACF,SAAS,OAAO;AACd,mBAAO;AAAA,cACL,oBAAoB,UAAU,CAAC;AAAA,cAC/B;AAAA,YACF;AAAA,UACF;AAEA;AACA,cAAI,UAAU,SAAS,YAAY;AACjC,kBAAM,KAAK,MAAM,SAAS,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC;AAAA,UAC5D;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,cAAc,OAAc,SAAwC;AAC1E,UAAM,UAAU,MAAM,QAAQ,YAAY;AAE1C,QAAI,QAAQ,SAAS,UAAU,KAAK,QAAQ,SAAS,QAAQ,GAAG;AAC9D,aAAO;AAAA,IACT,WAAW,QAAQ,SAAS,KAAK,KAAK,QAAQ,SAAS,QAAQ,GAAG;AAChE,aAAO;AAAA,IACT,WAAW,QAAQ,SAAS,SAAS,KAAK,QAAQ,SAAS;AACzD,aAAO;AAAA,IACT,WAAW,QAAQ,SAAS,QAAQ,KAAK,QAAQ,SAAS,MAAM,GAAG;AACjE,aAAO;AAAA,IACT,WAAW,QAAQ,SAAS,SAAS,KAAK,QAAQ,SAAS,SAAS,GAAG;AACrE,aAAO;AAAA,IACT;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,eAAe,OAAc,SAAuC;AAC1E,QAAI,QAAQ,SAAS,qBAAsB,QAAO;AAClD,QAAI,MAAM,QAAQ,SAAS,WAAW,EAAG,QAAO;AAChD,QAAI,MAAM,QAAQ,SAAS,UAAU,EAAG,QAAO;AAC/C,WAAO;AAAA,EACT;AAAA,EAEQ,0BAAgC;AACtC,SAAK,qBAAqB;AAAA,MACxB;AAAA,QACE,WAAW;AAAA,QACX,WAAW,CAAC,UACV,MAAM,QAAQ,SAAS,UAAU,KACjC,MAAM,QAAQ,SAAS,QAAQ;AAAA,QACjC,QAAQ,OAAO,QAAQ,aAAa;AAElC,iBAAO,KAAK,8BAA8B;AAG1C,cAAI;AACF,kBAAM,SAAS,sBAAsB;AACrC,mBAAO;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,WAAW,CAAC,UACV,MAAM,QAAQ,SAAS,KAAK,KAAK,MAAM,QAAQ,SAAS,QAAQ;AAAA,QAClE,QAAQ,OAAO,QAAQ,aAAa;AAClC,iBAAO,KAAK,oCAAoC;AAEhD,cAAI;AAEF,kBAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAe;AACjD,qBAAS,qBAAqB,EAAE,OAAO,SAAS,CAAC;AACjD,qBAAS,yBAAyB,EAAE,OAAO,SAAS,CAAC;AACrD,mBAAO;AAAA,UACT,QAAQ;AACN,mBAAO;AAAA,UACT;AAAA,QACF;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,WAAW,CAAC,OAAO,YACjB,MAAM,QAAQ,SAAS,SAAS,KAAK,QAAQ;AAAA,QAC/C,QAAQ,OAAO,QAAQ,aAAa;AAClC,iBAAO,KAAK,mCAAmC;AAG/C,gBAAM,SAAS,iBAAiB,aAAa;AAC7C,iBAAO;AAAA,QACT;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,WAAW,CAAC,UACV,MAAM,QAAQ,SAAS,QAAQ,KAAK,MAAM,QAAQ,SAAS,MAAM;AAAA,QACnE,QAAQ,OAAO,QAAQ,aAAa;AAClC,iBAAO,KAAK,4BAA4B;AAGxC,cAAI,OAAO,GAAI,QAAO,GAAG;AAGzB,gBAAM,SAAS,sBAAsB,CAAC;AACtC,iBAAO;AAAA,QACT;AAAA,QACA,YAAY;AAAA,QACZ,WAAW;AAAA,MACb;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,kBAA2D;AACvE,QAAI;AACF,YAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAe;AAEjD,YAAM,gBAAgB,SAAS,6BAA6B;AAAA,QAC1D,UAAU;AAAA,MACZ,CAAC,EAAE,KAAK;AACR,YAAM,eAAe,SAAS,0BAA0B;AAAA,QACtD,UAAU;AAAA,MACZ,CAAC;AACD,YAAM,qBAAqB,aACxB,KAAK,EACL,MAAM,IAAI,EACV,OAAO,OAAO;AACjB,YAAM,iBAAiB,SAAS,cAAc,EAAE,UAAU,OAAO,CAAC;AAClE,YAAM,iBAAiB,eACpB,MAAM,IAAI,EACV,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,QAAQ,WAAW,EAAE,CAAC,EAChD,OAAO,OAAO;AAEjB,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF,SAAS,OAAO;AACd,aAAO,KAAK,gCAAgC,KAAc;AAC1D,aAAO;AAAA,QACL,eAAe;AAAA,QACf,oBAAoB,CAAC;AAAA,QACrB,gBAAgB,CAAC;AAAA,MACnB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,gBACZ,UACe;AACf,QAAI;AACF,YAAM,EAAE,SAAS,IAAI,MAAM,OAAO,eAAe;AACjD,eAAS,gBAAgB,SAAS,aAAa,IAAI,EAAE,OAAO,SAAS,CAAC;AACtE,aAAO,KAAK,wBAAwB,SAAS,aAAa,EAAE;AAAA,IAC9D,SAAS,OAAO;AACd,aAAO,KAAK,gCAAgC,KAAc;AAAA,IAC5D;AAAA,EACF;AAAA,EAEA,MAAc,gBAAgB,YAAmC;AAE/D,WAAO,KAAK,2BAA2B,UAAU,EAAE;AAAA,EACrD;AAAA,EAEA,MAAc,kBACZ,YACe;AAEf,WAAO,KAAK,yCAAyC,WAAW,EAAE,EAAE;AAAA,EACtE;AAAA,EAEQ,qBAAqB,SAA4C;AACvE,UAAM,SAAS,KAAK,IAAI,IAAI;AAE5B,WACE,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC,EACjC,OAAO,CAAC,OAAO,GAAG,YAAY,WAAW,GAAG,YAAY,MAAM,EAC9D,KAAK,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,KAAK;AAAA,EAEvD;AAAA,EAEA,MAAc,wBAAuC;AACnD,QAAI;AAEF,YAAM,KAAK,iBAAiB;AAK5B,aAAO,KAAK,2BAA2B;AAAA,IACzC,SAAS,OAAO;AACd,aAAO,MAAM,sCAAsC,KAAc;AAAA,IACnE;AAAA,EACF;AAAA,EAEA,MAAc,mBAAkC;AAAA,EAEhD;AAAA,EAEA,MAAc,sBAAsB,WAAkC;AACpE,UAAM,SAAS,MAAM,KAAK,KAAK,YAAY,OAAO,CAAC,EAAE;AAAA,MACnD,CAAC,GAAG,MAAM,EAAE,YAAY,EAAE;AAAA,IAC5B;AAEA,UAAM,WAAW,OAAO,MAAM,SAAS;AAEvC,eAAW,cAAc,UAAU;AACjC,UAAI;AACF,cAAM,iBAAiB,KAAK;AAAA,UAC1B,KAAK;AAAA,UACL,cAAc,WAAW,EAAE;AAAA,QAC7B;AACA,cAAM,GAAG,OAAO,cAAc;AAC9B,aAAK,YAAY,OAAO,WAAW,EAAE;AAAA,MACvC,SAAS,OAAO;AACd,eAAO;AAAA,UACL,+BAA+B,WAAW,EAAE;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,cAAc,SAAS,MAAM,kBAAkB;AAAA,EAC7D;AAAA,EAEA,MAAc,wBAAwB,QAAoC;AACxE,WAAO,MAAM,qBAAqB,OAAO,EAAE,MAAM,OAAO,MAAM,OAAO,EAAE;AAGvE,QAAI;AACF,YAAM,aAAc,KAAK,iBAAyB;AAClD,UAAI,YAAY,IAAI;AAClB,cAAM,KAAK,iBAAiB,WAAW,IAAI,kBAAkB;AAAA,MAC/D;AAAA,IACF,QAAQ;AACN,aAAO,MAAM,uCAAuC;AAAA,IACtD;AAGA,UAAM,KAAK,iBAAiB,aAAa;AAAA,EAC3C;AAAA,EAEQ,wBACN,gBACU;AACV,UAAM,UAAoB,CAAC;AAE3B,eAAW,EAAE,MAAM,MAAM,KAAK,gBAAgB;AAC5C,UAAI,QAAQ,GAAG;AACb,gBAAQ,MAAM;AAAA,UACZ,KAAK;AACH,oBAAQ,KAAK,2CAA2C;AACxD;AAAA,UACF,KAAK;AACH,oBAAQ,KAAK,yCAAyC;AACtD;AAAA,UACF,KAAK;AACH,oBAAQ;AAAA,cACN;AAAA,YACF;AACA;AAAA,UACF,KAAK;AACH,oBAAQ,KAAK,qDAAqD;AAClE;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEQ,2BAAiC;AACvC,SAAK,qBAAqB,YAAY,YAAY;AAChD,YAAM,aAAc,KAAK,iBAAyB;AAClD,UAAI,YAAY,MAAM,WAAW,WAAW,UAAU;AACpD,cAAM,KAAK,iBAAiB,WAAW,IAAI,UAAU;AAAA,MACvD;AAAA,IACF,GAAG,GAAM;AAAA,EACX;AAAA,EAEA,MAAc,0BAAyC;AACrD,QAAI;AACF,YAAM,GAAG,MAAM,KAAK,aAAa,EAAE,WAAW,KAAK,CAAC;AAAA,IACtD,SAAS,OAAO;AACd,aAAO,MAAM,wCAAwC,KAAc;AAAA,IACrE;AAAA,EACF;AAAA,EAEA,MAAc,0BAAyC;AACrD,QAAI;AACF,YAAM,QAAQ,MAAM,GAAG,QAAQ,KAAK,WAAW;AAE/C,iBAAW,QAAQ,OAAO;AACxB,YAAI,KAAK,WAAW,aAAa,KAAK,KAAK,SAAS,OAAO,GAAG;AAC5D,cAAI;AACF,kBAAM,UAAU,MAAM,GAAG;AAAA,cACvB,KAAK,KAAK,KAAK,aAAa,IAAI;AAAA,cAChC;AAAA,YACF;AACA,kBAAM,aAAiC,KAAK,MAAM,OAAO;AACzD,iBAAK,YAAY,IAAI,WAAW,IAAI,UAAU;AAAA,UAChD,SAAS,OAAO;AACd,mBAAO,KAAK,6BAA6B,IAAI,KAAK,KAAc;AAAA,UAClE;AAAA,QACF;AAAA,MACF;AAEA,aAAO,KAAK,UAAU,KAAK,YAAY,IAAI,uBAAuB;AAAA,IACpE,SAAS,OAAO;AACd,aAAO,KAAK,wCAAwC,KAAc;AAAA,IACpE;AAAA,EACF;AAAA,EAEA,MAAc,gBAAgB,QAAoC;AAChE,QAAI;AACF,YAAM,aAAa,KAAK,KAAK,KAAK,aAAa,SAAS,OAAO,EAAE,OAAO;AACxE,YAAM,GAAG,UAAU,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,IAChE,SAAS,OAAO;AACd,aAAO,MAAM,gCAAgC,KAAc;AAAA,IAC7D;AAAA,EACF;AAAA,EAEQ,MAAM,IAA2B;AACvC,WAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AAAA,EACzD;AAAA,EAEQ,aAAqB;AAC3B,WAAO,YAAY,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,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/state/state-reconciler.ts"],
4
- "sourcesContent": ["/**\n * State Reconciler for Ralph-StackMemory Integration\n * Handles conflict resolution and state consistency across git, files, and memory\n */\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport {\n RalphLoopState,\n StateSource,\n Conflict,\n Resolution,\n ValidationResult,\n RalphStackMemoryConfig,\n} from '../types.js';\n\nexport class StateReconciler {\n private config: RalphStackMemoryConfig['stateReconciliation'];\n private readonly ralphDir = '.ralph';\n private reconciliationLog: Resolution[] = [];\n\n constructor(config?: Partial<RalphStackMemoryConfig['stateReconciliation']>) {\n this.config = {\n precedence: config?.precedence || ['git', 'files', 'memory'],\n conflictResolution: config?.conflictResolution || 'automatic',\n syncInterval: config?.syncInterval || 5000,\n validateConsistency: config?.validateConsistency ?? true,\n };\n }\n\n /**\n * Reconcile state from multiple sources\n */\n async reconcile(sources: StateSource[]): Promise<RalphLoopState> {\n logger.info('Reconciling state from sources', {\n sources: sources.map(s => ({ type: s.type, confidence: s.confidence })),\n });\n\n // Sort sources by precedence\n const sortedSources = this.sortByPrecedence(sources);\n \n // Detect conflicts\n const conflicts = this.detectConflicts(sortedSources);\n \n if (conflicts.length > 0) {\n logger.warn('State conflicts detected', {\n count: conflicts.length,\n fields: conflicts.map(c => c.field),\n });\n\n // Resolve conflicts based on configuration\n const resolutions = await this.resolveConflicts(conflicts);\n return this.applyResolutions(sortedSources[0].state as RalphLoopState, resolutions);\n }\n\n // No conflicts, merge states\n return this.mergeStates(sortedSources);\n }\n\n /**\n * Detect conflicts between state sources\n */\n detectConflicts(sources: StateSource[]): Conflict[] {\n const conflicts: Conflict[] = [];\n const fields = new Set<string>();\n\n // Collect all fields across sources\n sources.forEach(source => {\n Object.keys(source.state).forEach(field => fields.add(field));\n });\n\n // Check each field for conflicts\n for (const field of fields) {\n const values = sources\n .filter(s => s.state[field as keyof RalphLoopState] !== undefined)\n .map(s => ({\n source: s,\n value: s.state[field as keyof RalphLoopState],\n }));\n\n if (values.length > 1 && !this.valuesMatch(values.map(v => v.value))) {\n conflicts.push({\n field,\n sources: values.map(v => v.source),\n severity: this.assessConflictSeverity(field),\n suggestedResolution: this.suggestResolution(field, values.map(v => v.source)),\n });\n }\n }\n\n return conflicts;\n }\n\n /**\n * Resolve a single conflict\n */\n async resolveConflict(conflict: Conflict): Promise<Resolution> {\n const resolution = await this.resolveConflictByStrategy(conflict);\n \n this.reconciliationLog.push(resolution);\n \n logger.debug('Conflict resolved', {\n field: conflict.field,\n resolution: resolution.source,\n rationale: resolution.rationale,\n });\n\n return resolution;\n }\n\n /**\n * Validate state consistency\n */\n async validateConsistency(state: RalphLoopState): Promise<ValidationResult> {\n const errors: string[] = [];\n const warnings: string[] = [];\n\n try {\n // Validate file system state\n await this.validateFileSystemState(state, errors, warnings);\n \n // Validate git state\n this.validateGitState(state, errors, warnings);\n \n // Validate logical consistency\n this.validateLogicalConsistency(state, errors, warnings);\n\n return {\n testsPass: errors.length === 0,\n lintClean: true,\n buildSuccess: true,\n errors,\n warnings,\n };\n } catch (error: any) {\n errors.push(`Validation failed: ${error.message}`);\n return {\n testsPass: false,\n lintClean: false,\n buildSuccess: false,\n errors,\n warnings,\n };\n }\n }\n\n /**\n * Get state from git\n */\n async getGitState(): Promise<StateSource> {\n try {\n const currentCommit = execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();\n const branch = execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n const uncommittedChanges = execSync('git status --porcelain', { encoding: 'utf8' });\n \n // Check for Ralph commits\n const ralphCommits = execSync('git log --oneline --grep=\"Ralph iteration\"', {\n encoding: 'utf8',\n }).split('\\n').filter(Boolean);\n\n const lastRalphCommit = ralphCommits[0]?.split(' ')[0];\n const iteration = ralphCommits.length;\n\n return {\n type: 'git',\n state: {\n currentCommit,\n startCommit: lastRalphCommit,\n iteration,\n status: uncommittedChanges ? 'running' : 'completed',\n },\n timestamp: Date.now(),\n confidence: 0.9,\n };\n } catch (error: any) {\n logger.error('Failed to get git state', { error: error.message });\n return {\n type: 'git',\n state: {},\n timestamp: Date.now(),\n confidence: 0.1,\n };\n }\n }\n\n /**\n * Get state from file system\n */\n async getFileState(): Promise<StateSource> {\n try {\n const statePath = path.join(this.ralphDir, 'state.json');\n const iterationPath = path.join(this.ralphDir, 'iteration.txt');\n const feedbackPath = path.join(this.ralphDir, 'feedback.txt');\n const taskPath = path.join(this.ralphDir, 'task.md');\n const criteriaPath = path.join(this.ralphDir, 'completion-criteria.md');\n\n const [stateData, iteration, feedback, task, criteria] = await Promise.all([\n fs.readFile(statePath, 'utf8').catch(() => '{}'),\n fs.readFile(iterationPath, 'utf8').catch(() => '0'),\n fs.readFile(feedbackPath, 'utf8').catch(() => ''),\n fs.readFile(taskPath, 'utf8').catch(() => ''),\n fs.readFile(criteriaPath, 'utf8').catch(() => ''),\n ]);\n\n const state = JSON.parse(stateData);\n\n return {\n type: 'files',\n state: {\n ...state,\n iteration: parseInt(iteration.trim()),\n feedback: feedback.trim() || undefined,\n task: task.trim(),\n criteria: criteria.trim(),\n },\n timestamp: Date.now(),\n confidence: 0.95,\n };\n } catch (error: any) {\n logger.error('Failed to get file state', { error: error.message });\n return {\n type: 'files',\n state: {},\n timestamp: Date.now(),\n confidence: 0.1,\n };\n }\n }\n\n /**\n * Get state from memory (StackMemory)\n */\n async getMemoryState(loopId: string): Promise<StateSource> {\n try {\n // This would integrate with StackMemory's frame system\n // For now, returning a placeholder\n return {\n type: 'memory',\n state: {\n loopId,\n lastUpdateTime: Date.now(),\n },\n timestamp: Date.now(),\n confidence: 0.8,\n };\n } catch (error: any) {\n logger.error('Failed to get memory state', { error: error.message });\n return {\n type: 'memory',\n state: {},\n timestamp: Date.now(),\n confidence: 0.1,\n };\n }\n }\n\n /**\n * Sort sources by configured precedence\n */\n private sortByPrecedence(sources: StateSource[]): StateSource[] {\n return sources.sort((a, b) => {\n const aIndex = this.config.precedence.indexOf(a.type);\n const bIndex = this.config.precedence.indexOf(b.type);\n \n if (aIndex === -1 && bIndex === -1) {\n return b.confidence - a.confidence;\n }\n if (aIndex === -1) return 1;\n if (bIndex === -1) return -1;\n \n return aIndex - bIndex;\n });\n }\n\n /**\n * Check if values match\n */\n private valuesMatch(values: any[]): boolean {\n if (values.length === 0) return true;\n const first = JSON.stringify(values[0]);\n return values.every(v => JSON.stringify(v) === first);\n }\n\n /**\n * Assess conflict severity\n */\n private assessConflictSeverity(field: string): 'low' | 'medium' | 'high' {\n const highSeverityFields = ['loopId', 'task', 'criteria', 'status'];\n const mediumSeverityFields = ['iteration', 'currentCommit', 'feedback'];\n \n if (highSeverityFields.includes(field)) return 'high';\n if (mediumSeverityFields.includes(field)) return 'medium';\n return 'low';\n }\n\n /**\n * Suggest resolution based on field and sources\n */\n private suggestResolution(field: string, sources: StateSource[]): any {\n // Sort by confidence and precedence\n const sorted = this.sortByPrecedence(sources);\n const highestConfidence = sorted.reduce((max, s) => \n s.confidence > max.confidence ? s : max\n );\n \n return highestConfidence.state[field as keyof RalphLoopState];\n }\n\n /**\n * Resolve conflicts based on configured strategy\n */\n private async resolveConflicts(conflicts: Conflict[]): Promise<Resolution[]> {\n const resolutions: Resolution[] = [];\n\n for (const conflict of conflicts) {\n const resolution = await this.resolveConflictByStrategy(conflict);\n resolutions.push(resolution);\n }\n\n return resolutions;\n }\n\n /**\n * Resolve conflict based on strategy\n */\n private async resolveConflictByStrategy(conflict: Conflict): Promise<Resolution> {\n switch (this.config.conflictResolution) {\n case 'automatic':\n return this.automaticResolution(conflict);\n \n case 'manual':\n return this.manualResolution(conflict);\n \n case 'interactive':\n return this.interactiveResolution(conflict);\n \n default:\n return this.automaticResolution(conflict);\n }\n }\n\n /**\n * Automatic resolution based on precedence and confidence\n */\n private automaticResolution(conflict: Conflict): Resolution {\n const sorted = this.sortByPrecedence(conflict.sources);\n const winner = sorted[0];\n \n return {\n field: conflict.field,\n value: winner.state[conflict.field as keyof RalphLoopState],\n source: winner.type,\n rationale: `Automatic resolution: ${winner.type} has highest precedence (confidence: ${winner.confidence})`,\n };\n }\n\n /**\n * Manual resolution (uses suggested resolution)\n */\n private manualResolution(conflict: Conflict): Resolution {\n return {\n field: conflict.field,\n value: conflict.suggestedResolution,\n source: 'manual',\n rationale: 'Manual resolution: using suggested value',\n };\n }\n\n /**\n * Interactive resolution (would prompt user in real implementation)\n */\n private async interactiveResolution(conflict: Conflict): Promise<Resolution> {\n // In real implementation, this would prompt the user\n logger.info('Interactive resolution required', {\n field: conflict.field,\n options: conflict.sources.map(s => ({\n type: s.type,\n value: s.state[conflict.field as keyof RalphLoopState],\n confidence: s.confidence,\n })),\n });\n\n // For now, fallback to automatic\n return this.automaticResolution(conflict);\n }\n\n /**\n * Apply resolutions to base state\n */\n private applyResolutions(\n baseState: RalphLoopState,\n resolutions: Resolution[]\n ): RalphLoopState {\n const resolvedState = { ...baseState };\n\n for (const resolution of resolutions) {\n (resolvedState as any)[resolution.field] = resolution.value;\n }\n\n return resolvedState;\n }\n\n /**\n * Merge states without conflicts\n */\n private mergeStates(sources: StateSource[]): RalphLoopState {\n const merged: any = {};\n\n // Apply in precedence order\n for (const source of sources) {\n Object.assign(merged, source.state);\n }\n\n return merged as RalphLoopState;\n }\n\n /**\n * Validate file system state\n */\n private async validateFileSystemState(\n state: RalphLoopState,\n errors: string[],\n warnings: string[]\n ): Promise<void> {\n try {\n const ralphDirExists = await fs.stat(this.ralphDir).then(() => true).catch(() => false);\n \n if (!ralphDirExists) {\n warnings.push('Ralph directory does not exist');\n return;\n }\n\n const requiredFiles = ['task.md', 'state.json', 'iteration.txt'];\n for (const file of requiredFiles) {\n const filePath = path.join(this.ralphDir, file);\n const exists = await fs.stat(filePath).then(() => true).catch(() => false);\n \n if (!exists) {\n warnings.push(`Missing file: ${file}`);\n }\n }\n } catch (error: any) {\n errors.push(`File system validation failed: ${error.message}`);\n }\n }\n\n /**\n * Validate git state\n */\n private validateGitState(\n state: RalphLoopState,\n errors: string[],\n warnings: string[]\n ): void {\n try {\n const isGitRepo = execSync('git rev-parse --is-inside-work-tree', {\n encoding: 'utf8',\n }).trim() === 'true';\n \n if (!isGitRepo) {\n warnings.push('Not in a git repository');\n }\n\n if (state.currentCommit && state.startCommit) {\n try {\n execSync(`git rev-parse ${state.currentCommit}`, { encoding: 'utf8' });\n } catch {\n errors.push(`Invalid current commit: ${state.currentCommit}`);\n }\n\n try {\n execSync(`git rev-parse ${state.startCommit}`, { encoding: 'utf8' });\n } catch {\n warnings.push(`Invalid start commit: ${state.startCommit}`);\n }\n }\n } catch (error: any) {\n warnings.push(`Git validation failed: ${error.message}`);\n }\n }\n\n /**\n * Validate logical consistency\n */\n private validateLogicalConsistency(\n state: RalphLoopState,\n errors: string[],\n warnings: string[]\n ): void {\n // Check iteration number\n if (state.iteration < 0) {\n errors.push('Invalid iteration number: cannot be negative');\n }\n\n // Check status consistency\n if (state.status === 'completed' && !state.completionData) {\n warnings.push('Status is completed but no completion data');\n }\n\n // Check time consistency\n if (state.lastUpdateTime && state.startTime && state.lastUpdateTime < state.startTime) {\n errors.push('Last update time is before start time');\n }\n\n // Check task and criteria\n if (!state.task) {\n errors.push('No task defined');\n }\n\n if (!state.criteria) {\n warnings.push('No completion criteria defined');\n }\n }\n}"],
5
- "mappings": "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",
6
- "names": []
7
- }