@stackmemoryai/stackmemory 0.8.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (788) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +15 -3
  3. package/dist/src/agents/core/agent-task-manager.js +0 -1
  4. package/dist/src/agents/verifiers/base-verifier.js +0 -1
  5. package/dist/src/agents/verifiers/formatter-verifier.js +0 -1
  6. package/dist/src/agents/verifiers/llm-judge.js +0 -1
  7. package/dist/src/cli/auto-detect.js +0 -1
  8. package/dist/src/cli/claude-sm-danger.js +0 -1
  9. package/dist/src/cli/claude-sm.js +0 -1
  10. package/dist/src/cli/codex-sm-danger.js +0 -1
  11. package/dist/src/cli/codex-sm.js +0 -1
  12. package/dist/src/cli/commands/api.js +0 -1
  13. package/dist/src/cli/commands/auto-background.js +0 -1
  14. package/dist/src/cli/commands/cleanup-processes.js +0 -1
  15. package/dist/src/cli/commands/clear.js +0 -1
  16. package/dist/src/cli/commands/config.js +0 -1
  17. package/dist/src/cli/commands/context-rehydrate.js +0 -1
  18. package/dist/src/cli/commands/context.js +0 -1
  19. package/dist/src/cli/commands/daemon.js +0 -1
  20. package/dist/src/cli/commands/dashboard.js +4 -5
  21. package/dist/src/cli/commands/db.js +0 -1
  22. package/dist/src/cli/commands/decision.js +0 -1
  23. package/dist/src/cli/commands/discovery.js +0 -1
  24. package/dist/src/cli/commands/handoff.js +0 -1
  25. package/dist/src/cli/commands/hooks.js +0 -1
  26. package/dist/src/cli/commands/linear.js +0 -1
  27. package/dist/src/cli/commands/log.js +0 -1
  28. package/dist/src/cli/commands/login.js +0 -1
  29. package/dist/src/cli/commands/migrate.js +0 -1
  30. package/dist/src/cli/commands/model.js +0 -1
  31. package/dist/src/cli/commands/onboard.js +0 -1
  32. package/dist/src/cli/commands/ping.js +0 -1
  33. package/dist/src/cli/commands/projects.js +0 -1
  34. package/dist/src/cli/commands/ralph.js +0 -1
  35. package/dist/src/cli/commands/retrieval.js +0 -1
  36. package/dist/src/cli/commands/search.js +0 -1
  37. package/dist/src/cli/commands/service.js +0 -1
  38. package/dist/src/cli/commands/session.js +0 -1
  39. package/dist/src/cli/commands/setup.js +0 -4
  40. package/dist/src/cli/commands/shell.js +0 -1
  41. package/dist/src/cli/commands/signup.js +0 -1
  42. package/dist/src/cli/commands/skills.js +4 -3
  43. package/dist/src/cli/commands/storage-tier.js +0 -1
  44. package/dist/src/cli/commands/sweep.js +0 -1
  45. package/dist/src/cli/commands/tasks.js +0 -1
  46. package/dist/src/cli/commands/worktree.js +10 -5
  47. package/dist/src/cli/index.js +8 -5
  48. package/dist/src/cli/opencode-sm.js +0 -1
  49. package/dist/src/cli/utils/viewer.js +0 -1
  50. package/dist/src/core/config/config-manager.js +0 -1
  51. package/dist/src/core/config/feature-flags.js +0 -1
  52. package/dist/src/core/config/storage-config.js +0 -1
  53. package/dist/src/core/config/types.js +0 -1
  54. package/dist/src/core/context/auto-context.js +0 -1
  55. package/dist/src/core/context/dual-stack-manager.js +0 -1
  56. package/dist/src/core/context/enhanced-rehydration.js +0 -2
  57. package/dist/src/core/context/frame-database.js +60 -6
  58. package/dist/src/core/context/frame-digest.js +0 -1
  59. package/dist/src/core/context/frame-handoff-manager.js +0 -1
  60. package/dist/src/core/context/frame-lifecycle-hooks.js +0 -1
  61. package/dist/src/core/context/frame-recovery.js +0 -1
  62. package/dist/src/core/context/frame-stack.js +0 -1
  63. package/dist/src/core/context/frame-types.js +0 -1
  64. package/dist/src/core/context/index.js +0 -1
  65. package/dist/src/core/context/permission-manager.js +0 -1
  66. package/dist/src/core/context/recursive-context-manager.js +3 -2
  67. package/dist/src/core/context/refactored-frame-manager.js +0 -1
  68. package/dist/src/core/context/shared-context-layer.js +0 -1
  69. package/dist/src/core/context/stack-merge-resolver.js +0 -1
  70. package/dist/src/core/context/validation.js +0 -1
  71. package/dist/src/core/database/batch-operations.js +0 -1
  72. package/dist/src/core/database/connection-pool.js +0 -1
  73. package/dist/src/core/database/database-adapter.js +0 -1
  74. package/dist/src/core/database/embedding-provider-factory.js +0 -1
  75. package/dist/src/core/database/embedding-provider.js +0 -1
  76. package/dist/src/core/database/migration-manager.js +0 -1
  77. package/dist/src/core/database/ollama-embedding-provider.js +0 -1
  78. package/dist/src/core/database/openai-embedding-provider.js +0 -1
  79. package/dist/src/core/database/query-cache.js +0 -1
  80. package/dist/src/core/database/query-router.js +0 -1
  81. package/dist/src/core/database/sqlite-adapter.js +18 -108
  82. package/dist/src/core/database/transformers-embedding-provider.js +0 -1
  83. package/dist/src/core/digest/enhanced-hybrid-digest.js +0 -1
  84. package/dist/src/core/digest/frame-digest-integration.js +0 -1
  85. package/dist/src/core/digest/hybrid-digest-generator.js +0 -1
  86. package/dist/src/core/digest/index.js +0 -1
  87. package/dist/src/core/digest/types.js +0 -1
  88. package/dist/src/core/errors/error-utils.js +0 -1
  89. package/dist/src/core/errors/index.js +0 -1
  90. package/dist/src/core/errors/recovery.js +0 -1
  91. package/dist/src/core/execution/parallel-executor.js +0 -1
  92. package/dist/src/core/extensions/custom-tools.js +0 -1
  93. package/dist/src/core/extensions/index.js +0 -1
  94. package/dist/src/core/extensions/loader.js +0 -1
  95. package/dist/src/core/extensions/plugin-system.js +0 -1
  96. package/dist/src/core/extensions/provider-adapter.js +0 -1
  97. package/dist/src/core/extensions/sandbox-runtime.js +0 -1
  98. package/dist/src/core/extensions/types.js +0 -1
  99. package/dist/src/core/frame/workflow-templates.js +0 -1
  100. package/dist/src/core/merge/conflict-detector.js +0 -1
  101. package/dist/src/core/merge/index.js +0 -1
  102. package/dist/src/core/merge/resolution-engine.js +0 -1
  103. package/dist/src/core/merge/stack-diff.js +0 -1
  104. package/dist/src/core/merge/types.js +0 -1
  105. package/dist/src/core/merge/unified-merge-resolver.js +0 -1
  106. package/dist/src/core/models/fallback-monitor.js +0 -1
  107. package/dist/src/core/models/model-router.js +0 -1
  108. package/dist/src/core/monitoring/error-handler.js +0 -1
  109. package/dist/src/core/monitoring/logger.js +0 -1
  110. package/dist/src/core/monitoring/metrics.js +0 -1
  111. package/dist/src/core/monitoring/progress-tracker.js +0 -1
  112. package/dist/src/core/monitoring/session-monitor.js +0 -1
  113. package/dist/src/core/performance/context-cache.js +0 -1
  114. package/dist/src/core/performance/index.js +0 -1
  115. package/dist/src/core/performance/lazy-context-loader.js +3 -8
  116. package/dist/src/core/performance/monitor.js +0 -1
  117. package/dist/src/core/performance/optimized-frame-context.js +0 -1
  118. package/dist/src/core/performance/performance-benchmark.js +0 -1
  119. package/dist/src/core/performance/performance-profiler.js +0 -1
  120. package/dist/src/core/performance/streaming-jsonl-parser.js +0 -1
  121. package/dist/src/core/persistence/postgres-adapter.js +0 -1
  122. package/dist/src/core/projects/project-isolation.js +0 -1
  123. package/dist/src/core/projects/project-manager.js +0 -1
  124. package/dist/src/core/query/query-parser.js +0 -1
  125. package/dist/src/core/query/query-templates.js +0 -1
  126. package/dist/src/core/retrieval/context-retriever.js +0 -1
  127. package/dist/src/core/retrieval/index.js +0 -1
  128. package/dist/src/core/retrieval/llm-context-retrieval.js +0 -1
  129. package/dist/src/core/retrieval/llm-provider.js +0 -1
  130. package/dist/src/core/retrieval/privacy-filter.js +0 -1
  131. package/dist/src/core/retrieval/retrieval-audit.js +0 -1
  132. package/dist/src/core/retrieval/summary-generator.js +15 -6
  133. package/dist/src/core/retrieval/types.js +0 -1
  134. package/dist/src/core/retrieval/unified-context-assembler.js +0 -1
  135. package/dist/src/core/security/index.js +0 -1
  136. package/dist/src/core/security/input-sanitizer.js +0 -1
  137. package/dist/src/core/session/clear-survival.js +0 -1
  138. package/dist/src/core/session/enhanced-handoff.js +0 -1
  139. package/dist/src/core/session/handoff-generator.js +0 -1
  140. package/dist/src/core/session/index.js +0 -1
  141. package/dist/src/core/session/session-manager.js +0 -1
  142. package/dist/src/core/skills/index.js +0 -1
  143. package/dist/src/core/skills/skill-storage.js +0 -1
  144. package/dist/src/core/skills/types.js +0 -1
  145. package/dist/src/core/storage/chromadb-adapter.js +0 -1
  146. package/dist/src/core/storage/infinite-storage.js +0 -1
  147. package/dist/src/core/storage/project-registry.js +0 -1
  148. package/dist/src/core/storage/remote-storage.js +4 -2
  149. package/dist/src/core/storage/storage-tier-manager.js +0 -1
  150. package/dist/src/core/storage/two-tier-storage.js +0 -1
  151. package/dist/src/core/trace/cli-trace-wrapper.js +0 -1
  152. package/dist/src/core/trace/db-trace-wrapper.js +0 -1
  153. package/dist/src/core/trace/debug-trace.js +0 -1
  154. package/dist/src/core/trace/index.js +0 -1
  155. package/dist/src/core/trace/linear-api-wrapper.js +0 -1
  156. package/dist/src/core/trace/trace-detector.js +0 -1
  157. package/dist/src/core/trace/trace-store.js +4 -5
  158. package/dist/src/core/trace/types.js +0 -1
  159. package/dist/src/core/types.js +0 -1
  160. package/dist/src/core/utils/async-mutex.js +0 -1
  161. package/dist/src/core/utils/compression.js +0 -1
  162. package/dist/src/core/utils/update-checker.js +0 -1
  163. package/dist/src/core/worktree/worktree-manager.js +0 -1
  164. package/dist/src/daemon/daemon-config.js +0 -1
  165. package/dist/src/daemon/services/context-service.js +0 -1
  166. package/dist/src/daemon/services/linear-service.js +0 -1
  167. package/dist/src/daemon/services/maintenance-service.js +0 -1
  168. package/dist/src/daemon/services/memory-service.js +0 -1
  169. package/dist/src/daemon/session-daemon.js +0 -1
  170. package/dist/src/daemon/unified-daemon.js +0 -1
  171. package/dist/src/features/analytics/api/analytics-api.js +0 -1
  172. package/dist/src/features/analytics/core/analytics-service.js +1 -2
  173. package/dist/src/features/analytics/index.js +0 -1
  174. package/dist/src/features/analytics/queries/metrics-queries.js +8 -9
  175. package/dist/src/features/analytics/types/metrics.js +0 -1
  176. package/dist/src/features/browser/browser-mcp.js +0 -1
  177. package/dist/src/features/sweep/index.js +0 -1
  178. package/dist/src/features/sweep/prediction-client.js +0 -1
  179. package/dist/src/features/sweep/prompt-builder.js +0 -1
  180. package/dist/src/features/sweep/pty-wrapper.js +0 -1
  181. package/dist/src/features/sweep/state-watcher.js +0 -1
  182. package/dist/src/features/sweep/status-bar.js +0 -1
  183. package/dist/src/features/sweep/sweep-server-manager.js +0 -1
  184. package/dist/src/features/sweep/tab-interceptor.js +0 -1
  185. package/dist/src/features/sweep/types.js +0 -1
  186. package/dist/src/features/tasks/linear-task-manager.js +0 -1
  187. package/dist/src/features/tasks/task-aware-context.js +0 -1
  188. package/dist/src/features/tui/simple-monitor.js +0 -1
  189. package/dist/src/features/tui/swarm-monitor.js +0 -1
  190. package/dist/src/features/web/client/stores/task-store.js +0 -1
  191. package/dist/src/features/web/server/index.js +0 -1
  192. package/dist/src/features/workers/tmux-manager.js +0 -1
  193. package/dist/src/features/workers/worker-registry.js +0 -1
  194. package/dist/src/hooks/auto-background.js +0 -1
  195. package/dist/src/hooks/config.js +0 -1
  196. package/dist/src/hooks/daemon.js +0 -1
  197. package/dist/src/hooks/diffmem-hooks.js +0 -1
  198. package/dist/src/hooks/events.js +0 -1
  199. package/dist/src/hooks/index.js +0 -1
  200. package/dist/src/hooks/linear-task-picker.js +0 -1
  201. package/dist/src/hooks/schemas.js +0 -1
  202. package/dist/src/hooks/secure-fs.js +0 -1
  203. package/dist/src/hooks/security-logger.js +0 -1
  204. package/dist/src/hooks/session-summary.js +0 -1
  205. package/dist/src/index.js +0 -1
  206. package/dist/src/integrations/anthropic/client.js +0 -1
  207. package/dist/src/integrations/claude-code/agent-bridge.js +0 -1
  208. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js +0 -1
  209. package/dist/src/integrations/claude-code/lifecycle-hooks.js +0 -1
  210. package/dist/src/integrations/claude-code/post-task-hooks.js +0 -1
  211. package/dist/src/integrations/claude-code/subagent-client-stub.js +0 -1
  212. package/dist/src/integrations/claude-code/subagent-client.js +0 -1
  213. package/dist/src/integrations/claude-code/task-coordinator.js +0 -1
  214. package/dist/src/integrations/diffmem/client.js +0 -1
  215. package/dist/src/integrations/diffmem/config.js +0 -1
  216. package/dist/src/integrations/diffmem/index.js +0 -1
  217. package/dist/src/integrations/diffmem/types.js +0 -1
  218. package/dist/src/integrations/linear/auth.js +0 -1
  219. package/dist/src/integrations/linear/auto-sync.js +0 -1
  220. package/dist/src/integrations/linear/client.js +0 -1
  221. package/dist/src/integrations/linear/config.js +0 -1
  222. package/dist/src/integrations/linear/migration.js +0 -1
  223. package/dist/src/integrations/linear/oauth-server.js +0 -1
  224. package/dist/src/integrations/linear/rest-client.js +0 -1
  225. package/dist/src/integrations/linear/sync-manager.js +0 -1
  226. package/dist/src/integrations/linear/sync-service.js +0 -1
  227. package/dist/src/integrations/linear/sync.js +0 -1
  228. package/dist/src/integrations/linear/types.js +0 -1
  229. package/dist/src/integrations/linear/unified-sync.js +0 -1
  230. package/dist/src/integrations/linear/webhook-handler.js +0 -1
  231. package/dist/src/integrations/linear/webhook-server.js +0 -1
  232. package/dist/src/integrations/linear/webhook.js +0 -1
  233. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js +0 -1
  234. package/dist/src/integrations/mcp/handlers/context-handlers.js +43 -30
  235. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js +0 -1
  236. package/dist/src/integrations/mcp/handlers/discovery-handlers.js +0 -1
  237. package/dist/src/integrations/mcp/handlers/index.js +1 -3
  238. package/dist/src/integrations/mcp/handlers/linear-handlers.js +24 -61
  239. package/dist/src/integrations/mcp/handlers/skill-handlers.js +0 -1
  240. package/dist/src/integrations/mcp/handlers/task-handlers.js +0 -1
  241. package/dist/src/integrations/mcp/handlers/trace-handlers.js +0 -1
  242. package/dist/src/integrations/mcp/index.js +0 -1
  243. package/dist/src/integrations/mcp/middleware/tool-scoring.js +3 -2
  244. package/dist/src/integrations/mcp/pending-utils.js +0 -1
  245. package/dist/src/integrations/mcp/refactored-server.js +0 -1
  246. package/dist/src/integrations/mcp/remote-server.js +0 -1
  247. package/dist/src/integrations/mcp/schemas.js +0 -1
  248. package/dist/src/integrations/mcp/server.js +20 -24
  249. package/dist/src/integrations/mcp/tool-definitions-code.js +0 -1
  250. package/dist/src/integrations/mcp/tool-definitions.js +0 -1
  251. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js +0 -1
  252. package/dist/src/integrations/ralph/context/context-budget-manager.js +0 -1
  253. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js +0 -1
  254. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js +0 -1
  255. package/dist/src/integrations/ralph/index.js +0 -1
  256. package/dist/src/integrations/ralph/learning/pattern-learner.js +0 -1
  257. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js +5 -5
  258. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js +0 -1
  259. package/dist/src/integrations/ralph/monitoring/swarm-registry.js +0 -1
  260. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js +0 -1
  261. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js +0 -1
  262. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js +0 -1
  263. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js +0 -1
  264. package/dist/src/integrations/ralph/performance/performance-optimizer.js +0 -1
  265. package/dist/src/integrations/ralph/recovery/crash-recovery.js +0 -1
  266. package/dist/src/integrations/ralph/state/state-reconciler.js +25 -9
  267. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js +0 -1
  268. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js +0 -1
  269. package/dist/src/integrations/ralph/types.js +0 -1
  270. package/dist/src/integrations/ralph/visualization/ralph-debugger.js +0 -1
  271. package/dist/src/mcp/stackmemory-mcp-server.js +0 -1
  272. package/dist/src/middleware/exponential-rate-limiter.js +0 -1
  273. package/dist/src/models/user.model.js +0 -1
  274. package/dist/src/orchestrators/multimodal/constants.js +0 -1
  275. package/dist/src/orchestrators/multimodal/harness.js +0 -1
  276. package/dist/src/orchestrators/multimodal/providers.js +0 -1
  277. package/dist/src/orchestrators/multimodal/types.js +0 -1
  278. package/dist/src/orchestrators/multimodal/utils.js +0 -1
  279. package/dist/src/servers/production/auth-middleware.js +0 -1
  280. package/dist/src/services/config-service.js +0 -1
  281. package/dist/src/services/context-service.js +0 -1
  282. package/dist/src/skills/api-discovery.js +0 -1
  283. package/dist/src/skills/api-skill.js +0 -1
  284. package/dist/src/skills/claude-skills.js +0 -1
  285. package/dist/src/skills/dashboard-launcher.js +0 -1
  286. package/dist/src/skills/linear-task-runner.js +0 -1
  287. package/dist/src/skills/recursive-agent-orchestrator.js +0 -1
  288. package/dist/src/skills/repo-ingestion-skill.js +0 -1
  289. package/dist/src/skills/spec-generator-skill.js +0 -1
  290. package/dist/src/skills/unified-rlm-orchestrator.js +0 -1
  291. package/dist/src/types/task.js +0 -1
  292. package/dist/src/utils/env.js +0 -1
  293. package/dist/src/utils/formatting.js +0 -1
  294. package/dist/src/utils/process-cleanup.js +0 -1
  295. package/package.json +32 -7
  296. package/dist/scripts/benchmark-performance.js +0 -48
  297. package/dist/scripts/benchmark-performance.js.map +0 -7
  298. package/dist/scripts/check-redis.js +0 -42
  299. package/dist/scripts/check-redis.js.map +0 -7
  300. package/dist/scripts/initialize.js +0 -183
  301. package/dist/scripts/initialize.js.map +0 -7
  302. package/dist/scripts/list-linear-tasks.js +0 -124
  303. package/dist/scripts/list-linear-tasks.js.map +0 -7
  304. package/dist/scripts/measure-handoff-impact.js +0 -340
  305. package/dist/scripts/measure-handoff-impact.js.map +0 -7
  306. package/dist/scripts/query-chromadb.js +0 -160
  307. package/dist/scripts/query-chromadb.js.map +0 -7
  308. package/dist/scripts/show-linear-summary.js +0 -119
  309. package/dist/scripts/show-linear-summary.js.map +0 -7
  310. package/dist/scripts/simple-swarm-demo.js +0 -90
  311. package/dist/scripts/simple-swarm-demo.js.map +0 -7
  312. package/dist/scripts/status.js +0 -155
  313. package/dist/scripts/status.js.map +0 -7
  314. package/dist/scripts/test-chromadb-sync.js +0 -192
  315. package/dist/scripts/test-chromadb-sync.js.map +0 -7
  316. package/dist/scripts/test-ralph-iteration-fix.js +0 -86
  317. package/dist/scripts/test-ralph-iteration-fix.js.map +0 -7
  318. package/dist/scripts/test-ralph-iterations.js +0 -121
  319. package/dist/scripts/test-ralph-iterations.js.map +0 -7
  320. package/dist/scripts/test-redis-storage.js +0 -389
  321. package/dist/scripts/test-redis-storage.js.map +0 -7
  322. package/dist/scripts/test-simple-ralph-state-sync.js +0 -115
  323. package/dist/scripts/test-simple-ralph-state-sync.js.map +0 -7
  324. package/dist/scripts/test-swarm-fixes.js +0 -125
  325. package/dist/scripts/test-swarm-fixes.js.map +0 -7
  326. package/dist/scripts/test-swarm-tui.js +0 -23
  327. package/dist/scripts/test-swarm-tui.js.map +0 -7
  328. package/dist/scripts/test-tui-shortcuts.js +0 -52
  329. package/dist/scripts/test-tui-shortcuts.js.map +0 -7
  330. package/dist/scripts/validate-tui-shortcuts.js +0 -60
  331. package/dist/scripts/validate-tui-shortcuts.js.map +0 -7
  332. package/dist/src/agents/core/agent-task-manager.js.map +0 -7
  333. package/dist/src/agents/verifiers/base-verifier.js.map +0 -7
  334. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -7
  335. package/dist/src/agents/verifiers/llm-judge.js.map +0 -7
  336. package/dist/src/cli/auto-detect.js.map +0 -7
  337. package/dist/src/cli/claude-sm-danger.js.map +0 -7
  338. package/dist/src/cli/claude-sm.js.map +0 -7
  339. package/dist/src/cli/codex-sm-danger.js.map +0 -7
  340. package/dist/src/cli/codex-sm.js.map +0 -7
  341. package/dist/src/cli/commands/api.js.map +0 -7
  342. package/dist/src/cli/commands/auto-background.js.map +0 -7
  343. package/dist/src/cli/commands/cleanup-processes.js.map +0 -7
  344. package/dist/src/cli/commands/clear.js.map +0 -7
  345. package/dist/src/cli/commands/config.js.map +0 -7
  346. package/dist/src/cli/commands/context-rehydrate.js.map +0 -7
  347. package/dist/src/cli/commands/context.js.map +0 -7
  348. package/dist/src/cli/commands/daemon.js.map +0 -7
  349. package/dist/src/cli/commands/dashboard.js.map +0 -7
  350. package/dist/src/cli/commands/db.js.map +0 -7
  351. package/dist/src/cli/commands/decision.js.map +0 -7
  352. package/dist/src/cli/commands/discovery.js.map +0 -7
  353. package/dist/src/cli/commands/handoff.js.map +0 -7
  354. package/dist/src/cli/commands/hooks.js.map +0 -7
  355. package/dist/src/cli/commands/linear.js.map +0 -7
  356. package/dist/src/cli/commands/log.js.map +0 -7
  357. package/dist/src/cli/commands/login.js.map +0 -7
  358. package/dist/src/cli/commands/migrate.js.map +0 -7
  359. package/dist/src/cli/commands/model.js.map +0 -7
  360. package/dist/src/cli/commands/onboard.js.map +0 -7
  361. package/dist/src/cli/commands/ping.js.map +0 -7
  362. package/dist/src/cli/commands/projects.js.map +0 -7
  363. package/dist/src/cli/commands/ralph.js.map +0 -7
  364. package/dist/src/cli/commands/retrieval.js.map +0 -7
  365. package/dist/src/cli/commands/search.js.map +0 -7
  366. package/dist/src/cli/commands/service.js.map +0 -7
  367. package/dist/src/cli/commands/session.js.map +0 -7
  368. package/dist/src/cli/commands/settings.js +0 -306
  369. package/dist/src/cli/commands/settings.js.map +0 -7
  370. package/dist/src/cli/commands/setup.js.map +0 -7
  371. package/dist/src/cli/commands/shell.js.map +0 -7
  372. package/dist/src/cli/commands/signup.js.map +0 -7
  373. package/dist/src/cli/commands/skills.js.map +0 -7
  374. package/dist/src/cli/commands/sms-notify.js +0 -795
  375. package/dist/src/cli/commands/sms-notify.js.map +0 -7
  376. package/dist/src/cli/commands/storage-tier.js.map +0 -7
  377. package/dist/src/cli/commands/sweep.js.map +0 -7
  378. package/dist/src/cli/commands/tasks.js.map +0 -7
  379. package/dist/src/cli/commands/worktree.js.map +0 -7
  380. package/dist/src/cli/index.js.map +0 -7
  381. package/dist/src/cli/opencode-sm.js.map +0 -7
  382. package/dist/src/cli/utils/viewer.js.map +0 -7
  383. package/dist/src/core/config/config-manager.js.map +0 -7
  384. package/dist/src/core/config/feature-flags.js.map +0 -7
  385. package/dist/src/core/config/storage-config.js.map +0 -7
  386. package/dist/src/core/config/types.js.map +0 -7
  387. package/dist/src/core/context/auto-context.js.map +0 -7
  388. package/dist/src/core/context/dual-stack-manager.js.map +0 -7
  389. package/dist/src/core/context/enhanced-rehydration.js.map +0 -7
  390. package/dist/src/core/context/frame-database.js.map +0 -7
  391. package/dist/src/core/context/frame-digest.js.map +0 -7
  392. package/dist/src/core/context/frame-handoff-manager.js.map +0 -7
  393. package/dist/src/core/context/frame-lifecycle-hooks.js.map +0 -7
  394. package/dist/src/core/context/frame-recovery.js.map +0 -7
  395. package/dist/src/core/context/frame-stack.js.map +0 -7
  396. package/dist/src/core/context/frame-types.js.map +0 -7
  397. package/dist/src/core/context/index.js.map +0 -7
  398. package/dist/src/core/context/permission-manager.js.map +0 -7
  399. package/dist/src/core/context/recursive-context-manager.js.map +0 -7
  400. package/dist/src/core/context/refactored-frame-manager.js.map +0 -7
  401. package/dist/src/core/context/shared-context-layer.js.map +0 -7
  402. package/dist/src/core/context/stack-merge-resolver.js.map +0 -7
  403. package/dist/src/core/context/validation.js.map +0 -7
  404. package/dist/src/core/database/batch-operations.js.map +0 -7
  405. package/dist/src/core/database/connection-pool.js.map +0 -7
  406. package/dist/src/core/database/database-adapter.js.map +0 -7
  407. package/dist/src/core/database/embedding-provider-factory.js.map +0 -7
  408. package/dist/src/core/database/embedding-provider.js.map +0 -7
  409. package/dist/src/core/database/migration-manager.js.map +0 -7
  410. package/dist/src/core/database/ollama-embedding-provider.js.map +0 -7
  411. package/dist/src/core/database/openai-embedding-provider.js.map +0 -7
  412. package/dist/src/core/database/query-cache.js.map +0 -7
  413. package/dist/src/core/database/query-router.js.map +0 -7
  414. package/dist/src/core/database/sqlite-adapter.js.map +0 -7
  415. package/dist/src/core/database/transformers-embedding-provider.js.map +0 -7
  416. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -7
  417. package/dist/src/core/digest/frame-digest-integration.js.map +0 -7
  418. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -7
  419. package/dist/src/core/digest/index.js.map +0 -7
  420. package/dist/src/core/digest/types.js.map +0 -7
  421. package/dist/src/core/errors/error-utils.js.map +0 -7
  422. package/dist/src/core/errors/index.js.map +0 -7
  423. package/dist/src/core/errors/recovery.js.map +0 -7
  424. package/dist/src/core/execution/parallel-executor.js.map +0 -7
  425. package/dist/src/core/extensions/custom-tools.js.map +0 -7
  426. package/dist/src/core/extensions/index.js.map +0 -7
  427. package/dist/src/core/extensions/loader.js.map +0 -7
  428. package/dist/src/core/extensions/plugin-system.js.map +0 -7
  429. package/dist/src/core/extensions/provider-adapter.js.map +0 -7
  430. package/dist/src/core/extensions/sandbox-runtime.js.map +0 -7
  431. package/dist/src/core/extensions/types.js.map +0 -7
  432. package/dist/src/core/frame/workflow-templates.js.map +0 -7
  433. package/dist/src/core/merge/conflict-detector.js.map +0 -7
  434. package/dist/src/core/merge/index.js.map +0 -7
  435. package/dist/src/core/merge/resolution-engine.js.map +0 -7
  436. package/dist/src/core/merge/stack-diff.js.map +0 -7
  437. package/dist/src/core/merge/types.js.map +0 -7
  438. package/dist/src/core/merge/unified-merge-resolver.js.map +0 -7
  439. package/dist/src/core/models/fallback-monitor.js.map +0 -7
  440. package/dist/src/core/models/model-router.js.map +0 -7
  441. package/dist/src/core/monitoring/error-handler.js.map +0 -7
  442. package/dist/src/core/monitoring/logger.js.map +0 -7
  443. package/dist/src/core/monitoring/metrics.js.map +0 -7
  444. package/dist/src/core/monitoring/progress-tracker.js.map +0 -7
  445. package/dist/src/core/monitoring/session-monitor.js.map +0 -7
  446. package/dist/src/core/performance/context-cache.js.map +0 -7
  447. package/dist/src/core/performance/index.js.map +0 -7
  448. package/dist/src/core/performance/lazy-context-loader.js.map +0 -7
  449. package/dist/src/core/performance/monitor.js.map +0 -7
  450. package/dist/src/core/performance/optimized-frame-context.js.map +0 -7
  451. package/dist/src/core/performance/performance-benchmark.js.map +0 -7
  452. package/dist/src/core/performance/performance-profiler.js.map +0 -7
  453. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -7
  454. package/dist/src/core/persistence/postgres-adapter.js.map +0 -7
  455. package/dist/src/core/projects/project-isolation.js.map +0 -7
  456. package/dist/src/core/projects/project-manager.js.map +0 -7
  457. package/dist/src/core/query/query-parser.js.map +0 -7
  458. package/dist/src/core/query/query-templates.js.map +0 -7
  459. package/dist/src/core/retrieval/context-retriever.js.map +0 -7
  460. package/dist/src/core/retrieval/index.js.map +0 -7
  461. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -7
  462. package/dist/src/core/retrieval/llm-provider.js.map +0 -7
  463. package/dist/src/core/retrieval/privacy-filter.js.map +0 -7
  464. package/dist/src/core/retrieval/retrieval-audit.js.map +0 -7
  465. package/dist/src/core/retrieval/summary-generator.js.map +0 -7
  466. package/dist/src/core/retrieval/types.js.map +0 -7
  467. package/dist/src/core/retrieval/unified-context-assembler.js.map +0 -7
  468. package/dist/src/core/security/index.js.map +0 -7
  469. package/dist/src/core/security/input-sanitizer.js.map +0 -7
  470. package/dist/src/core/session/clear-survival.js.map +0 -7
  471. package/dist/src/core/session/enhanced-handoff.js.map +0 -7
  472. package/dist/src/core/session/handoff-generator.js.map +0 -7
  473. package/dist/src/core/session/index.js.map +0 -7
  474. package/dist/src/core/session/session-manager.js.map +0 -7
  475. package/dist/src/core/skills/index.js.map +0 -7
  476. package/dist/src/core/skills/skill-storage.js.map +0 -7
  477. package/dist/src/core/skills/types.js.map +0 -7
  478. package/dist/src/core/storage/chromadb-adapter.js.map +0 -7
  479. package/dist/src/core/storage/infinite-storage.js.map +0 -7
  480. package/dist/src/core/storage/project-registry.js.map +0 -7
  481. package/dist/src/core/storage/remote-storage.js.map +0 -7
  482. package/dist/src/core/storage/storage-tier-manager.js.map +0 -7
  483. package/dist/src/core/storage/two-tier-storage.js.map +0 -7
  484. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -7
  485. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -7
  486. package/dist/src/core/trace/debug-trace.js.map +0 -7
  487. package/dist/src/core/trace/index.js.map +0 -7
  488. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -7
  489. package/dist/src/core/trace/trace-detector.js.map +0 -7
  490. package/dist/src/core/trace/trace-store.js.map +0 -7
  491. package/dist/src/core/trace/types.js.map +0 -7
  492. package/dist/src/core/types.js.map +0 -7
  493. package/dist/src/core/utils/async-mutex.js.map +0 -7
  494. package/dist/src/core/utils/compression.js.map +0 -7
  495. package/dist/src/core/utils/update-checker.js.map +0 -7
  496. package/dist/src/core/worktree/worktree-manager.js.map +0 -7
  497. package/dist/src/daemon/daemon-config.js.map +0 -7
  498. package/dist/src/daemon/services/context-service.js.map +0 -7
  499. package/dist/src/daemon/services/linear-service.js.map +0 -7
  500. package/dist/src/daemon/services/maintenance-service.js.map +0 -7
  501. package/dist/src/daemon/services/memory-service.js.map +0 -7
  502. package/dist/src/daemon/session-daemon.js.map +0 -7
  503. package/dist/src/daemon/unified-daemon.js.map +0 -7
  504. package/dist/src/features/analytics/api/analytics-api.js.map +0 -7
  505. package/dist/src/features/analytics/core/analytics-service.js.map +0 -7
  506. package/dist/src/features/analytics/index.js.map +0 -7
  507. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -7
  508. package/dist/src/features/analytics/types/metrics.js.map +0 -7
  509. package/dist/src/features/browser/browser-mcp.js.map +0 -7
  510. package/dist/src/features/sweep/index.js.map +0 -7
  511. package/dist/src/features/sweep/prediction-client.js.map +0 -7
  512. package/dist/src/features/sweep/prompt-builder.js.map +0 -7
  513. package/dist/src/features/sweep/pty-wrapper.js.map +0 -7
  514. package/dist/src/features/sweep/state-watcher.js.map +0 -7
  515. package/dist/src/features/sweep/status-bar.js.map +0 -7
  516. package/dist/src/features/sweep/sweep-server-manager.js.map +0 -7
  517. package/dist/src/features/sweep/tab-interceptor.js.map +0 -7
  518. package/dist/src/features/sweep/types.js.map +0 -7
  519. package/dist/src/features/tasks/linear-task-manager.js.map +0 -7
  520. package/dist/src/features/tasks/task-aware-context.js.map +0 -7
  521. package/dist/src/features/tui/simple-monitor.js.map +0 -7
  522. package/dist/src/features/tui/swarm-monitor.js.map +0 -7
  523. package/dist/src/features/web/client/stores/task-store.js.map +0 -7
  524. package/dist/src/features/web/server/index.js.map +0 -7
  525. package/dist/src/features/workers/tmux-manager.js.map +0 -7
  526. package/dist/src/features/workers/worker-registry.js.map +0 -7
  527. package/dist/src/hooks/auto-background.js.map +0 -7
  528. package/dist/src/hooks/claude-code-whatsapp-hook.js +0 -197
  529. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +0 -7
  530. package/dist/src/hooks/config.js.map +0 -7
  531. package/dist/src/hooks/daemon.js.map +0 -7
  532. package/dist/src/hooks/diffmem-hooks.js.map +0 -7
  533. package/dist/src/hooks/events.js.map +0 -7
  534. package/dist/src/hooks/index.js.map +0 -7
  535. package/dist/src/hooks/linear-task-picker.js.map +0 -7
  536. package/dist/src/hooks/schemas.js.map +0 -7
  537. package/dist/src/hooks/secure-fs.js.map +0 -7
  538. package/dist/src/hooks/security-logger.js.map +0 -7
  539. package/dist/src/hooks/session-summary.js.map +0 -7
  540. package/dist/src/hooks/sms-action-runner.js +0 -371
  541. package/dist/src/hooks/sms-action-runner.js.map +0 -7
  542. package/dist/src/hooks/sms-notify.js +0 -506
  543. package/dist/src/hooks/sms-notify.js.map +0 -7
  544. package/dist/src/hooks/sms-watcher.js +0 -93
  545. package/dist/src/hooks/sms-watcher.js.map +0 -7
  546. package/dist/src/hooks/sms-webhook.js +0 -555
  547. package/dist/src/hooks/sms-webhook.js.map +0 -7
  548. package/dist/src/hooks/whatsapp-commands.js +0 -479
  549. package/dist/src/hooks/whatsapp-commands.js.map +0 -7
  550. package/dist/src/hooks/whatsapp-scheduler.js +0 -317
  551. package/dist/src/hooks/whatsapp-scheduler.js.map +0 -7
  552. package/dist/src/hooks/whatsapp-sync.js +0 -409
  553. package/dist/src/hooks/whatsapp-sync.js.map +0 -7
  554. package/dist/src/index.js.map +0 -7
  555. package/dist/src/integrations/anthropic/client.js.map +0 -7
  556. package/dist/src/integrations/claude-code/agent-bridge.js.map +0 -7
  557. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  558. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  559. package/dist/src/integrations/claude-code/post-task-hooks.js.map +0 -7
  560. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +0 -7
  561. package/dist/src/integrations/claude-code/subagent-client.js.map +0 -7
  562. package/dist/src/integrations/claude-code/task-coordinator.js.map +0 -7
  563. package/dist/src/integrations/diffmem/client.js.map +0 -7
  564. package/dist/src/integrations/diffmem/config.js.map +0 -7
  565. package/dist/src/integrations/diffmem/index.js.map +0 -7
  566. package/dist/src/integrations/diffmem/types.js.map +0 -7
  567. package/dist/src/integrations/linear/auth.js.map +0 -7
  568. package/dist/src/integrations/linear/auto-sync.js.map +0 -7
  569. package/dist/src/integrations/linear/client.js.map +0 -7
  570. package/dist/src/integrations/linear/config.js.map +0 -7
  571. package/dist/src/integrations/linear/migration.js.map +0 -7
  572. package/dist/src/integrations/linear/oauth-server.js.map +0 -7
  573. package/dist/src/integrations/linear/rest-client.js.map +0 -7
  574. package/dist/src/integrations/linear/sync-manager.js.map +0 -7
  575. package/dist/src/integrations/linear/sync-service.js.map +0 -7
  576. package/dist/src/integrations/linear/sync.js.map +0 -7
  577. package/dist/src/integrations/linear/types.js.map +0 -7
  578. package/dist/src/integrations/linear/unified-sync.js.map +0 -7
  579. package/dist/src/integrations/linear/webhook-handler.js.map +0 -7
  580. package/dist/src/integrations/linear/webhook-server.js.map +0 -7
  581. package/dist/src/integrations/linear/webhook.js.map +0 -7
  582. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  583. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -7
  584. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js.map +0 -7
  585. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  586. package/dist/src/integrations/mcp/handlers/index.js.map +0 -7
  587. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  588. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  589. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -7
  590. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  591. package/dist/src/integrations/mcp/index.js.map +0 -7
  592. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  593. package/dist/src/integrations/mcp/pending-utils.js.map +0 -7
  594. package/dist/src/integrations/mcp/refactored-server.js.map +0 -7
  595. package/dist/src/integrations/mcp/remote-server.js.map +0 -7
  596. package/dist/src/integrations/mcp/schemas.js.map +0 -7
  597. package/dist/src/integrations/mcp/server.js.map +0 -7
  598. package/dist/src/integrations/mcp/tool-definitions-code.js.map +0 -7
  599. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -7
  600. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  601. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +0 -7
  602. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  603. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  604. package/dist/src/integrations/ralph/index.js.map +0 -7
  605. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +0 -7
  606. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  607. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  608. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  609. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  610. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  611. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  612. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  613. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  614. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  615. package/dist/src/integrations/ralph/state/state-reconciler.js.map +0 -7
  616. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  617. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  618. package/dist/src/integrations/ralph/types.js.map +0 -7
  619. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  620. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -7
  621. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -7
  622. package/dist/src/models/user.model.js.map +0 -7
  623. package/dist/src/orchestrators/multimodal/constants.js.map +0 -7
  624. package/dist/src/orchestrators/multimodal/harness.js.map +0 -7
  625. package/dist/src/orchestrators/multimodal/providers.js.map +0 -7
  626. package/dist/src/orchestrators/multimodal/types.js.map +0 -7
  627. package/dist/src/orchestrators/multimodal/utils.js.map +0 -7
  628. package/dist/src/servers/production/auth-middleware.js.map +0 -7
  629. package/dist/src/services/config-service.js.map +0 -7
  630. package/dist/src/services/context-service.js.map +0 -7
  631. package/dist/src/skills/api-discovery.js.map +0 -7
  632. package/dist/src/skills/api-skill.js.map +0 -7
  633. package/dist/src/skills/claude-skills.js.map +0 -7
  634. package/dist/src/skills/dashboard-launcher.js.map +0 -7
  635. package/dist/src/skills/linear-task-runner.js.map +0 -7
  636. package/dist/src/skills/recursive-agent-orchestrator.js.map +0 -7
  637. package/dist/src/skills/repo-ingestion-skill.js.map +0 -7
  638. package/dist/src/skills/spec-generator-skill.js.map +0 -7
  639. package/dist/src/skills/unified-rlm-orchestrator.js.map +0 -7
  640. package/dist/src/types/task.js.map +0 -7
  641. package/dist/src/utils/env.js.map +0 -7
  642. package/dist/src/utils/formatting.js.map +0 -7
  643. package/dist/src/utils/process-cleanup.js.map +0 -7
  644. package/scripts/README-TESTING.md +0 -186
  645. package/scripts/analyze-cli-security.js +0 -288
  646. package/scripts/archive/add-phase-tasks-to-linear.js +0 -163
  647. package/scripts/archive/analyze-linear-duplicates.js +0 -214
  648. package/scripts/archive/analyze-remaining-duplicates.js +0 -230
  649. package/scripts/archive/analyze-sta-duplicates.js +0 -292
  650. package/scripts/archive/analyze-sta-graphql.js +0 -399
  651. package/scripts/archive/cancel-duplicate-tasks.ts +0 -246
  652. package/scripts/archive/check-all-duplicates.ts +0 -419
  653. package/scripts/archive/clean-duplicate-tasks.js +0 -114
  654. package/scripts/archive/cleanup-duplicate-tasks.ts +0 -286
  655. package/scripts/archive/create-phase-tasks.js +0 -387
  656. package/scripts/archive/delete-linear-duplicates.js +0 -182
  657. package/scripts/archive/delete-remaining-duplicates.js +0 -158
  658. package/scripts/archive/delete-sta-duplicates.js +0 -201
  659. package/scripts/archive/delete-sta-oauth.js +0 -201
  660. package/scripts/archive/export-sta-tasks.js +0 -62
  661. package/scripts/archive/install-auto-sync.js +0 -266
  662. package/scripts/archive/install-chromadb-hooks.sh +0 -133
  663. package/scripts/archive/install-enhanced-clear-hooks.sh +0 -431
  664. package/scripts/archive/install-post-task-hooks.sh +0 -289
  665. package/scripts/archive/install-stackmemory-hooks.sh +0 -420
  666. package/scripts/archive/merge-linear-duplicates-safe.ts +0 -362
  667. package/scripts/archive/merge-linear-duplicates.ts +0 -182
  668. package/scripts/archive/remove-sta-tasks.js +0 -70
  669. package/scripts/archive/setup-background-sync.sh +0 -168
  670. package/scripts/archive/setup-claude-auto-triggers.sh +0 -181
  671. package/scripts/archive/setup-claude-autostart.sh +0 -305
  672. package/scripts/archive/setup-git-hooks.sh +0 -25
  673. package/scripts/archive/setup-linear-oauth.sh +0 -46
  674. package/scripts/archive/setup-mcp.sh +0 -113
  675. package/scripts/archive/setup-railway-deployment.sh +0 -81
  676. package/scripts/auto-handoff.sh +0 -262
  677. package/scripts/background-sync-manager.js +0 -478
  678. package/scripts/benchmark-performance.ts +0 -57
  679. package/scripts/check-redis.ts +0 -48
  680. package/scripts/chromadb-auto-loader.sh +0 -128
  681. package/scripts/chromadb-context-loader.js +0 -479
  682. package/scripts/claude-chromadb-hook.js +0 -460
  683. package/scripts/claude-linear-skill.js +0 -455
  684. package/scripts/claude-pre-commit.sh +0 -302
  685. package/scripts/claude-sm-autostart.js +0 -579
  686. package/scripts/claude-with-chromadb.sh +0 -69
  687. package/scripts/clean-linear-backlog.js +0 -273
  688. package/scripts/cleanup-old-sessions.sh +0 -57
  689. package/scripts/create-cleanup-issues.js +0 -302
  690. package/scripts/create-sandbox.sh +0 -269
  691. package/scripts/debug-linear-update.js +0 -174
  692. package/scripts/delete-linear-tasks.js +0 -167
  693. package/scripts/demos/browser-test.ts +0 -39
  694. package/scripts/demos/ralph-integration-demo.ts +0 -245
  695. package/scripts/demos/trace-demo.ts +0 -200
  696. package/scripts/demos/trace-detector.demo.ts +0 -171
  697. package/scripts/demos/trace-test.ts +0 -79
  698. package/scripts/deploy-ralph-swarm.sh +0 -365
  699. package/scripts/deploy.sh +0 -89
  700. package/scripts/deployment/test-deployment.js +0 -194
  701. package/scripts/detect-and-rehydrate.js +0 -162
  702. package/scripts/detect-and-rehydrate.mjs +0 -165
  703. package/scripts/development/create-demo-tasks.js +0 -143
  704. package/scripts/development/debug-frame-test.js +0 -16
  705. package/scripts/development/demo-auto-sync.js +0 -128
  706. package/scripts/development/fix-all-imports.js +0 -213
  707. package/scripts/development/fix-imports.js +0 -229
  708. package/scripts/development/fix-lint-loop.cjs +0 -103
  709. package/scripts/development/fix-project-id.ts +0 -161
  710. package/scripts/development/fix-strict-mode-issues.ts +0 -291
  711. package/scripts/development/reorganize-structure.sh +0 -228
  712. package/scripts/development/test-persistence-direct.js +0 -148
  713. package/scripts/development/test-persistence.js +0 -114
  714. package/scripts/development/test-tasks.js +0 -93
  715. package/scripts/development/update-imports.js +0 -212
  716. package/scripts/fetch-linear-status.js +0 -125
  717. package/scripts/initialize.ts +0 -220
  718. package/scripts/linear-auto-sync.js +0 -262
  719. package/scripts/linear-auto-sync.sh +0 -161
  720. package/scripts/linear-sync-daemon.js +0 -150
  721. package/scripts/linear-task-review.js +0 -237
  722. package/scripts/list-linear-tasks.ts +0 -178
  723. package/scripts/mcp-proxy.js +0 -66
  724. package/scripts/measure-handoff-impact.mjs +0 -395
  725. package/scripts/measure-handoff-impact.ts +0 -450
  726. package/scripts/publish-local.js +0 -74
  727. package/scripts/query-chromadb.ts +0 -201
  728. package/scripts/ralph-integration-test.js +0 -274
  729. package/scripts/reconcile-local-tasks.js +0 -170
  730. package/scripts/recreate-frames-db.js +0 -89
  731. package/scripts/show-linear-summary.ts +0 -172
  732. package/scripts/simple-swarm-demo.ts +0 -114
  733. package/scripts/stackmemory-auto-handoff.sh +0 -231
  734. package/scripts/start-linear-sync-daemon.sh +0 -141
  735. package/scripts/start-temporal-paradox.sh +0 -214
  736. package/scripts/status.ts +0 -224
  737. package/scripts/stop-notify-webhook.sh +0 -19
  738. package/scripts/swarm-monitor.js +0 -509
  739. package/scripts/sync-and-clean-tasks.js +0 -258
  740. package/scripts/sync-linear-graphql.js +0 -303
  741. package/scripts/sync-linear-tasks.js +0 -186
  742. package/scripts/test-auto-triggers.sh +0 -57
  743. package/scripts/test-browser-mcp.js +0 -74
  744. package/scripts/test-chromadb-full.js +0 -115
  745. package/scripts/test-chromadb-hooks.sh +0 -28
  746. package/scripts/test-chromadb-sync.ts +0 -245
  747. package/scripts/test-claude-config.sh +0 -123
  748. package/scripts/test-cli-security.js +0 -293
  749. package/scripts/test-code-execution.js +0 -143
  750. package/scripts/test-hooks-persistence.sh +0 -220
  751. package/scripts/test-installation-scenarios.sh +0 -359
  752. package/scripts/test-installation.sh +0 -224
  753. package/scripts/test-mcp.js +0 -163
  754. package/scripts/test-parallel-swarms.js +0 -443
  755. package/scripts/test-pre-publish-quick.sh +0 -69
  756. package/scripts/test-quality-gates.sh +0 -263
  757. package/scripts/test-ralph-iteration-fix.ts +0 -118
  758. package/scripts/test-ralph-iterations.ts +0 -164
  759. package/scripts/test-redis-storage.ts +0 -490
  760. package/scripts/test-rlm-basic.sh +0 -122
  761. package/scripts/test-rlm-comprehensive.sh +0 -260
  762. package/scripts/test-rlm-e2e.sh +0 -268
  763. package/scripts/test-rlm-simple.js +0 -90
  764. package/scripts/test-rlm.js +0 -110
  765. package/scripts/test-session-handoff.sh +0 -165
  766. package/scripts/test-setup-e2e.sh +0 -154
  767. package/scripts/test-shell-integration.sh +0 -275
  768. package/scripts/test-simple-ralph-state-sync.ts +0 -178
  769. package/scripts/test-swarm-fixes.ts +0 -161
  770. package/scripts/test-swarm-git-workflow.js +0 -338
  771. package/scripts/test-swarm-tui.ts +0 -34
  772. package/scripts/test-tui-shortcuts.ts +0 -66
  773. package/scripts/testing/ab-test-runner.ts +0 -510
  774. package/scripts/testing/collect-metrics.ts +0 -457
  775. package/scripts/testing/quick-effectiveness-demo.js +0 -187
  776. package/scripts/testing/ralph-cli-test.js +0 -88
  777. package/scripts/testing/ralph-integration-validation.js +0 -727
  778. package/scripts/testing/ralph-swarm-test-scenarios.js +0 -613
  779. package/scripts/testing/real-performance-test.js +0 -422
  780. package/scripts/testing/results/real-performance-results.json +0 -90
  781. package/scripts/testing/run-effectiveness-tests.sh +0 -176
  782. package/scripts/testing/simple-effectiveness-test.js +0 -310
  783. package/scripts/testing/test-tier-migration.js +0 -100
  784. package/scripts/update-linear-status.js +0 -268
  785. package/scripts/update-linear-tasks-fixed.js +0 -284
  786. package/scripts/validate-claude-config.sh +0 -155
  787. package/scripts/validate-swarm-implementation.js +0 -467
  788. package/scripts/validate-tui-shortcuts.ts +0 -83
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/mcp/tool-definitions.ts"],
4
- "sourcesContent": ["/**\n * MCP Tool Definitions\n * Centralized tool schema definitions for the MCP server\n */\n\nexport interface MCPToolDefinition {\n name: string;\n description: string;\n inputSchema: {\n type: 'object';\n properties: Record<string, any>;\n required?: string[];\n };\n}\n\nexport class MCPToolDefinitions {\n /**\n * Get all tool definitions\n */\n getAllToolDefinitions(): MCPToolDefinition[] {\n return [\n ...this.getContextTools(),\n ...this.getTaskTools(),\n ...this.getLinearTools(),\n ...this.getTraceTools(),\n ...this.getDiscoveryTools(),\n ];\n }\n\n /**\n * Context management tools\n */\n private getContextTools(): MCPToolDefinition[] {\n return [\n {\n name: 'get_context',\n description: 'Get current project context and active frame information',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'What you want to know about the current context',\n },\n limit: {\n type: 'number',\n description: 'Max number of contexts to return',\n default: 5,\n },\n },\n },\n },\n {\n name: 'add_decision',\n description: 'Record a decision, constraint, or important information',\n inputSchema: {\n type: 'object',\n properties: {\n content: {\n type: 'string',\n description: 'The decision or information to record',\n },\n type: {\n type: 'string',\n enum: ['decision', 'constraint', 'learning'],\n description: 'Type of information being recorded',\n },\n },\n required: ['content', 'type'],\n },\n },\n {\n name: 'start_frame',\n description: 'Start a new frame (task/subtask) on the call stack',\n inputSchema: {\n type: 'object',\n properties: {\n name: {\n type: 'string',\n description: 'Frame name/goal',\n },\n type: {\n type: 'string',\n enum: [\n 'task',\n 'subtask',\n 'tool_scope',\n 'review',\n 'write',\n 'debug',\n ],\n default: 'task',\n description: 'Type of frame',\n },\n constraints: {\n type: 'array',\n items: { type: 'string' },\n description: 'List of constraints for this frame',\n },\n definitions: {\n type: 'object',\n description: 'Key definitions and context',\n },\n },\n required: ['name'],\n },\n },\n {\n name: 'close_frame',\n description: 'Close current or specified frame with optional summary',\n inputSchema: {\n type: 'object',\n properties: {\n frameId: {\n type: 'string',\n description: 'Frame ID to close (defaults to current)',\n },\n summary: {\n type: 'string',\n description: 'Summary of what was accomplished',\n },\n },\n },\n },\n {\n name: 'add_anchor',\n description:\n 'Add an important fact or decision anchor to current frame',\n inputSchema: {\n type: 'object',\n properties: {\n type: {\n type: 'string',\n enum: [\n 'FACT',\n 'DECISION',\n 'CONSTRAINT',\n 'INTERFACE_CONTRACT',\n 'TODO',\n 'RISK',\n ],\n description: 'Type of anchor',\n },\n text: {\n type: 'string',\n description: 'The anchor content',\n },\n priority: {\n type: 'number',\n minimum: 1,\n maximum: 10,\n default: 5,\n description: 'Priority level (1-10, higher = more important)',\n },\n },\n required: ['type', 'text'],\n },\n },\n {\n name: 'get_hot_stack',\n description: 'Get current hot stack of active frames',\n inputSchema: {\n type: 'object',\n properties: {\n max_events: {\n type: 'number',\n default: 10,\n description: 'Maximum events per frame to include',\n },\n },\n },\n },\n ];\n }\n\n /**\n * Task management tools\n */\n private getTaskTools(): MCPToolDefinition[] {\n return [\n {\n name: 'create_task',\n description: 'Create a new task',\n inputSchema: {\n type: 'object',\n properties: {\n title: {\n type: 'string',\n description: 'Task title',\n },\n description: {\n type: 'string',\n description: 'Task description',\n },\n priority: {\n type: 'string',\n enum: ['low', 'medium', 'high', 'critical'],\n default: 'medium',\n description: 'Task priority',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Task tags',\n },\n parent_id: {\n type: 'string',\n description: 'Parent task ID for subtasks',\n },\n },\n required: ['title'],\n },\n },\n {\n name: 'update_task_status',\n description: 'Update task status and progress',\n inputSchema: {\n type: 'object',\n properties: {\n task_id: {\n type: 'string',\n description: 'Task ID',\n },\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'in-progress',\n 'blocked',\n 'completed',\n 'cancelled',\n ],\n description: 'New status',\n },\n progress: {\n type: 'number',\n minimum: 0,\n maximum: 100,\n description: 'Progress percentage',\n },\n },\n required: ['task_id', 'status'],\n },\n },\n {\n name: 'get_active_tasks',\n description: 'Get active tasks with optional filtering',\n inputSchema: {\n type: 'object',\n properties: {\n status: {\n type: 'string',\n enum: [\n 'pending',\n 'in-progress',\n 'blocked',\n 'completed',\n 'cancelled',\n ],\n description: 'Filter by status',\n },\n priority: {\n type: 'string',\n enum: ['low', 'medium', 'high', 'critical'],\n description: 'Filter by priority',\n },\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum tasks to return',\n },\n include_completed: {\n type: 'boolean',\n default: false,\n description: 'Include completed tasks',\n },\n tags: {\n type: 'array',\n items: { type: 'string' },\n description: 'Filter by tags',\n },\n search: {\n type: 'string',\n description: 'Search in title and description',\n },\n },\n },\n },\n {\n name: 'get_task_metrics',\n description: 'Get task analytics and metrics',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n {\n name: 'add_task_dependency',\n description: 'Add dependency between tasks',\n inputSchema: {\n type: 'object',\n properties: {\n task_id: {\n type: 'string',\n description: 'Task that depends on another',\n },\n depends_on: {\n type: 'string',\n description: 'Task that must be completed first',\n },\n dependency_type: {\n type: 'string',\n enum: ['blocks', 'related', 'subtask'],\n default: 'blocks',\n description: 'Type of dependency',\n },\n },\n required: ['task_id', 'depends_on'],\n },\n },\n ];\n }\n\n /**\n * Linear integration tools\n */\n private getLinearTools(): MCPToolDefinition[] {\n return [\n {\n name: 'linear_sync',\n description: 'Sync tasks with Linear issues',\n inputSchema: {\n type: 'object',\n properties: {\n direction: {\n type: 'string',\n enum: ['both', 'from_linear', 'to_linear'],\n default: 'both',\n description: 'Sync direction',\n },\n force: {\n type: 'boolean',\n default: false,\n description: 'Force sync even if no changes',\n },\n },\n },\n },\n {\n name: 'linear_update_task',\n description: 'Update Linear issue directly',\n inputSchema: {\n type: 'object',\n properties: {\n linear_id: {\n type: 'string',\n description: 'Linear issue ID',\n },\n status: {\n type: 'string',\n description: 'New status',\n },\n assignee_id: {\n type: 'string',\n description: 'Assignee user ID',\n },\n priority: {\n type: 'number',\n minimum: 0,\n maximum: 4,\n description:\n 'Priority (0=None, 1=Low, 2=Medium, 3=High, 4=Urgent)',\n },\n labels: {\n type: 'array',\n items: { type: 'string' },\n description: 'Label names to add',\n },\n },\n required: ['linear_id'],\n },\n },\n {\n name: 'linear_get_tasks',\n description: 'Get issues from Linear',\n inputSchema: {\n type: 'object',\n properties: {\n team_id: {\n type: 'string',\n description: 'Filter by team ID',\n },\n assignee_id: {\n type: 'string',\n description: 'Filter by assignee ID',\n },\n state: {\n type: 'string',\n enum: ['active', 'closed', 'all'],\n default: 'active',\n description: 'Issue state filter',\n },\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum issues to return',\n },\n search: {\n type: 'string',\n description: 'Search query',\n },\n },\n },\n },\n {\n name: 'linear_status',\n description: 'Get Linear integration status',\n inputSchema: {\n type: 'object',\n properties: {},\n },\n },\n ];\n }\n\n /**\n * Trace and debugging tools\n */\n private getTraceTools(): MCPToolDefinition[] {\n return [\n {\n name: 'get_traces',\n description: 'Get execution traces with optional filtering',\n inputSchema: {\n type: 'object',\n properties: {\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum traces to return',\n },\n pattern: {\n type: 'string',\n description: 'Filter by pattern name',\n },\n start_time: {\n type: 'string',\n format: 'date-time',\n description: 'Filter by start time',\n },\n end_time: {\n type: 'string',\n format: 'date-time',\n description: 'Filter by end time',\n },\n include_context: {\n type: 'boolean',\n default: false,\n description: 'Include full trace context',\n },\n },\n },\n },\n {\n name: 'analyze_traces',\n description: 'Analyze trace patterns for insights',\n inputSchema: {\n type: 'object',\n properties: {\n trace_id: {\n type: 'string',\n description: 'Specific trace to analyze',\n },\n analysis_type: {\n type: 'string',\n enum: ['performance', 'patterns', 'errors'],\n default: 'performance',\n description: 'Type of analysis to perform',\n },\n include_recommendations: {\n type: 'boolean',\n default: true,\n description: 'Include optimization recommendations',\n },\n },\n },\n },\n {\n name: 'start_browser_debug',\n description: 'Start browser debugging session',\n inputSchema: {\n type: 'object',\n properties: {\n url: {\n type: 'string',\n description: 'URL to navigate to',\n },\n headless: {\n type: 'boolean',\n default: false,\n description: 'Run browser in headless mode',\n },\n width: {\n type: 'number',\n default: 1280,\n description: 'Browser width',\n },\n height: {\n type: 'number',\n default: 720,\n description: 'Browser height',\n },\n capture_screenshots: {\n type: 'boolean',\n default: true,\n description: 'Enable screenshot capture',\n },\n },\n required: ['url'],\n },\n },\n {\n name: 'take_screenshot',\n description: 'Take screenshot in browser session',\n inputSchema: {\n type: 'object',\n properties: {\n session_id: {\n type: 'string',\n description: 'Browser session ID',\n },\n selector: {\n type: 'string',\n description: 'CSS selector to screenshot',\n },\n full_page: {\n type: 'boolean',\n default: false,\n description: 'Capture full page',\n },\n },\n required: ['session_id'],\n },\n },\n {\n name: 'execute_script',\n description: 'Execute JavaScript in browser session',\n inputSchema: {\n type: 'object',\n properties: {\n session_id: {\n type: 'string',\n description: 'Browser session ID',\n },\n script: {\n type: 'string',\n description: 'JavaScript code to execute',\n },\n args: {\n type: 'array',\n description: 'Arguments to pass to script',\n },\n },\n required: ['session_id', 'script'],\n },\n },\n {\n name: 'stop_browser_debug',\n description: 'Stop browser debugging session',\n inputSchema: {\n type: 'object',\n properties: {\n session_id: {\n type: 'string',\n description: 'Browser session ID to stop',\n },\n },\n required: ['session_id'],\n },\n },\n ];\n }\n\n /**\n * Discovery and exploration tools\n */\n private getDiscoveryTools(): MCPToolDefinition[] {\n return [\n {\n name: 'sm_discover',\n description:\n 'Discover relevant files based on current context. Extracts keywords from active frames and searches codebase for related files.',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'Optional query to focus the discovery',\n },\n depth: {\n type: 'string',\n enum: ['shallow', 'medium', 'deep'],\n default: 'medium',\n description:\n 'Search depth - shallow for quick results, deep for thorough exploration',\n },\n includePatterns: {\n type: 'array',\n items: { type: 'string' },\n description: 'File patterns to include (e.g., [\"*.ts\", \"*.md\"])',\n },\n excludePatterns: {\n type: 'array',\n items: { type: 'string' },\n description:\n 'Patterns to exclude (e.g., [\"node_modules\", \"dist\"])',\n },\n maxFiles: {\n type: 'number',\n default: 20,\n description: 'Maximum files to return',\n },\n },\n },\n },\n {\n name: 'sm_related_files',\n description:\n 'Find files related to a specific file or concept. Useful for understanding dependencies and connections.',\n inputSchema: {\n type: 'object',\n properties: {\n file: {\n type: 'string',\n description: 'File path to find related files for',\n },\n concept: {\n type: 'string',\n description: 'Concept or term to find related files for',\n },\n maxFiles: {\n type: 'number',\n default: 10,\n description: 'Maximum files to return',\n },\n },\n },\n },\n {\n name: 'sm_session_summary',\n description:\n 'Get a summary of the current session including active tasks, recent files, and decisions made.',\n inputSchema: {\n type: 'object',\n properties: {\n includeFiles: {\n type: 'boolean',\n default: true,\n description: 'Include list of recently accessed files',\n },\n includeDecisions: {\n type: 'boolean',\n default: true,\n description: 'Include recent decisions and constraints',\n },\n },\n },\n },\n {\n name: 'sm_search',\n description:\n 'Search across StackMemory context - frames, events, decisions, and tasks.',\n inputSchema: {\n type: 'object',\n properties: {\n query: {\n type: 'string',\n description: 'Search query',\n },\n scope: {\n type: 'string',\n enum: ['all', 'frames', 'events', 'decisions', 'tasks'],\n default: 'all',\n description: 'Scope of search',\n },\n limit: {\n type: 'number',\n default: 20,\n description: 'Maximum results to return',\n },\n },\n required: ['query'],\n },\n },\n ];\n }\n\n /**\n * Get tool definition by name\n */\n getToolDefinition(name: string): MCPToolDefinition | undefined {\n return this.getAllToolDefinitions().find((tool: any) => tool.name === name);\n }\n\n /**\n * Get tool names by category\n */\n getToolsByCategory(\n category: 'context' | 'task' | 'linear' | 'trace' | 'discovery'\n ): MCPToolDefinition[] {\n switch (category) {\n case 'context':\n return this.getContextTools();\n case 'task':\n return this.getTaskTools();\n case 'linear':\n return this.getLinearTools();\n case 'trace':\n return this.getTraceTools();\n case 'discovery':\n return this.getDiscoveryTools();\n default:\n return [];\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/integrations/ralph/bridge/ralph-stackmemory-bridge.ts"],
4
- "sourcesContent": ["/**\n * Ralph-StackMemory Bridge\n * Main integration point connecting Ralph Wiggum loops with StackMemory persistence\n */\n\nimport { v4 as uuidv4 } from 'uuid';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { execSync } from 'child_process';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { FrameManager } from '../../../core/context/index.js';\nimport { SessionManager } from '../../../core/session/session-manager.js';\nimport { SQLiteAdapter } from '../../../core/database/sqlite-adapter.js';\nimport { createTransformersProvider } from '../../../core/database/transformers-embedding-provider.js';\nimport { ContextBudgetManager } from '../context/context-budget-manager.js';\nimport { StateReconciler } from '../state/state-reconciler.js';\nimport {\n IterationLifecycle,\n LifecycleHooks,\n} from '../lifecycle/iteration-lifecycle.js';\nimport { PerformanceOptimizer } from '../performance/performance-optimizer.js';\nimport {\n RalphLoopState,\n RalphIteration,\n BridgeState,\n BridgeOptions,\n RalphStackMemoryConfig,\n IterationContext,\n Frame,\n FrameType,\n RecoveryState,\n Checkpoint,\n StateSource,\n} from '../types.js';\n\nexport class RalphStackMemoryBridge {\n private state: BridgeState;\n private config: RalphStackMemoryConfig;\n private frameManager?: FrameManager;\n private sessionManager: SessionManager;\n private recoveryState?: RecoveryState;\n private readonly ralphDir = '.ralph';\n private readonly requiresDatabase: boolean;\n\n constructor(options?: BridgeOptions & { useStackMemory?: boolean }) {\n // Initialize configuration\n this.config = this.mergeConfig(options?.config);\n\n // Check if database/StackMemory features are required\n this.requiresDatabase = options?.useStackMemory !== false;\n\n // Initialize managers\n this.state = {\n initialized: false,\n contextManager: new ContextBudgetManager(this.config.contextBudget),\n stateReconciler: new StateReconciler(this.config.stateReconciliation),\n performanceOptimizer: new PerformanceOptimizer(this.config.performance),\n };\n\n this.sessionManager = SessionManager.getInstance();\n\n // Setup lifecycle hooks\n this.setupLifecycleHooks(options);\n\n logger.info('Ralph-StackMemory Bridge initialized', {\n config: {\n maxTokens: this.config.contextBudget.maxTokens,\n asyncSaves: this.config.performance.asyncSaves,\n checkpoints: this.config.lifecycle.checkpoints.enabled,\n },\n });\n }\n\n /**\n * Initialize bridge with session\n */\n async initialize(options?: {\n sessionId?: string;\n loopId?: string;\n task?: string;\n criteria?: string;\n }): Promise<void> {\n logger.info('Initializing bridge', options);\n\n try {\n // Initialize session manager\n await this.sessionManager.initialize();\n\n // Get or create session\n const session = await this.sessionManager.getOrCreateSession({\n sessionId: options?.sessionId,\n });\n\n this.state.currentSession = session;\n\n // Initialize frame manager with database\n const dbAdapter = await this.getDatabaseAdapter();\n await dbAdapter.connect();\n const db = (dbAdapter as any).db; // Get the actual Database instance\n const projectId = path.basename(this.ralphDir);\n this.frameManager = new FrameManager(db, projectId, {\n skipContextBridge: true,\n });\n // Initialize frame manager with session database if required\n if (this.requiresDatabase) {\n if (session.database && session.projectId) {\n this.frameManager = new FrameManager(\n session.database,\n session.projectId,\n {\n skipContextBridge: true,\n }\n );\n } else {\n throw new Error(\n 'Session database not available for FrameManager initialization. ' +\n 'If StackMemory features are not needed, set useStackMemory: false in options'\n );\n }\n } else {\n // Database not required, skip frame manager initialization\n logger.info(\n 'Running without StackMemory database (useStackMemory: false)'\n );\n }\n\n // Check for existing loop or create new\n if (options?.loopId) {\n await this.resumeLoop(options.loopId);\n } else if (options?.task && options?.criteria) {\n await this.createNewLoop(options.task, options.criteria);\n } else {\n // Try to recover from crash\n await this.attemptRecovery();\n }\n\n this.state.initialized = true;\n logger.info('Bridge initialized successfully');\n } catch (error: any) {\n logger.error('Bridge initialization failed', { error: error.message });\n throw error;\n }\n }\n\n /**\n * Create new Ralph loop with StackMemory integration\n */\n async createNewLoop(task: string, criteria: string): Promise<RalphLoopState> {\n logger.info('Creating new Ralph loop', { task: task.substring(0, 100) });\n\n const loopId = uuidv4();\n const startTime = Date.now();\n\n // Create Ralph loop state\n const loopState: RalphLoopState = {\n loopId,\n task,\n criteria,\n iteration: 0,\n status: 'initialized',\n startTime,\n lastUpdateTime: startTime,\n startCommit: await this.getCurrentGitCommit(),\n };\n\n // Initialize Ralph directory structure\n await this.initializeRalphDirectory(loopState);\n\n // Create root frame in StackMemory\n const rootFrame = await this.createRootFrame(loopState);\n\n // Save initial state\n await this.saveLoopState(loopState);\n\n this.state.activeLoop = loopState;\n\n logger.info('Ralph loop created', {\n loopId,\n frameId: rootFrame.frame_id,\n });\n\n return loopState;\n }\n\n /**\n * Resume existing loop\n */\n async resumeLoop(loopId: string): Promise<RalphLoopState> {\n logger.info('Resuming loop', { loopId });\n\n // Get state from all sources\n const sources = await this.gatherStateSources(loopId);\n\n // Reconcile state\n const reconciledState =\n await this.state.stateReconciler!.reconcile(sources);\n\n // Validate consistency\n if (this.config.stateReconciliation.validateConsistency) {\n const validation =\n await this.state.stateReconciler!.validateConsistency(reconciledState);\n\n if (validation.errors.length > 0) {\n logger.error('State validation failed', { errors: validation.errors });\n throw new Error(`Invalid state: ${validation.errors.join(', ')}`);\n }\n }\n\n this.state.activeLoop = reconciledState;\n\n // Load context from StackMemory\n const context = await this.loadIterationContext(reconciledState);\n\n logger.info('Loop resumed', {\n loopId,\n iteration: reconciledState.iteration,\n status: reconciledState.status,\n });\n\n return reconciledState;\n }\n\n /**\n * Run worker iteration\n */\n async runWorkerIteration(): Promise<RalphIteration> {\n if (!this.state.activeLoop) {\n throw new Error('No active loop');\n }\n\n const iterationNumber = this.state.activeLoop.iteration + 1;\n logger.info('Starting worker iteration', { iteration: iterationNumber });\n\n // Load and prepare context\n let context = await this.loadIterationContext(this.state.activeLoop);\n\n // Apply context budget management\n context = this.state.contextManager!.allocateBudget(context);\n\n if (this.config.contextBudget.compressionEnabled) {\n context = this.state.contextManager!.compressContext(context);\n }\n\n // Start iteration with lifecycle\n const lifecycle = this.getLifecycle();\n context = await lifecycle.startIteration(iterationNumber, context);\n\n // Execute iteration work\n const iteration = await this.executeWorkerIteration(context);\n\n // Save iteration results\n await this.saveIterationResults(iteration);\n\n // Complete iteration with lifecycle\n await lifecycle.completeIteration(iteration);\n\n // Update loop state\n this.state.activeLoop.iteration = iterationNumber;\n this.state.activeLoop.lastUpdateTime = Date.now();\n await this.saveLoopState(this.state.activeLoop);\n\n logger.info('Worker iteration completed', {\n iteration: iterationNumber,\n changes: iteration.changes.length,\n success: iteration.validation.testsPass,\n });\n\n return iteration;\n }\n\n /**\n * Run reviewer iteration\n */\n async runReviewerIteration(): Promise<{\n complete: boolean;\n feedback?: string;\n }> {\n if (!this.state.activeLoop) {\n throw new Error('No active loop');\n }\n\n logger.info('Starting reviewer iteration', {\n iteration: this.state.activeLoop.iteration,\n });\n\n // Evaluate against criteria\n const evaluation = await this.evaluateCompletion();\n\n if (evaluation.complete) {\n // Mark as complete\n this.state.activeLoop.status = 'completed';\n this.state.activeLoop.completionData = evaluation;\n await this.saveLoopState(this.state.activeLoop);\n\n // Handle completion\n const lifecycle = this.getLifecycle();\n await lifecycle.handleCompletion(this.state.activeLoop);\n\n logger.info('Task completed successfully');\n return { complete: true };\n }\n\n // Generate feedback for next iteration\n const feedback = this.generateFeedback(evaluation);\n this.state.activeLoop.feedback = feedback;\n\n await this.saveLoopState(this.state.activeLoop);\n\n logger.info('Reviewer iteration completed', {\n complete: false,\n feedbackLength: feedback.length,\n });\n\n return { complete: false, feedback };\n }\n\n /**\n * Rehydrate session from StackMemory\n */\n async rehydrateSession(sessionId: string): Promise<IterationContext> {\n logger.info('Rehydrating session', { sessionId });\n\n // Get session from StackMemory\n const session = await this.sessionManager.getSession(sessionId);\n\n if (!session) {\n throw new Error(`Session not found: ${sessionId}`);\n }\n\n // Load frames from session\n const frames = await this.loadSessionFrames(sessionId);\n\n // Extract Ralph loop information\n const ralphFrames = frames.filter(\n (f) => f.type === 'task' && f.name.startsWith('ralph-')\n );\n\n if (ralphFrames.length === 0) {\n throw new Error('No Ralph loops found in session');\n }\n\n // Get most recent Ralph loop\n const latestLoop = ralphFrames[ralphFrames.length - 1];\n\n // Reconstruct loop state\n const loopState = await this.reconstructLoopState(latestLoop);\n\n // Build context from frames\n const context = await this.buildContextFromFrames(frames, loopState);\n\n this.state.activeLoop = loopState;\n\n logger.info('Session rehydrated', {\n loopId: loopState.loopId,\n iteration: loopState.iteration,\n frameCount: frames.length,\n });\n\n return context;\n }\n\n /**\n * Create checkpoint\n */\n async createCheckpoint(): Promise<Checkpoint> {\n if (!this.state.activeLoop) {\n throw new Error('No active loop');\n }\n\n const lifecycle = this.getLifecycle();\n\n // Create dummy iteration for checkpoint\n const iteration: RalphIteration = {\n number: this.state.activeLoop.iteration,\n timestamp: Date.now(),\n analysis: {\n filesCount: 0,\n testsPass: true,\n testsFail: 0,\n lastChange: await this.getCurrentGitCommit(),\n },\n plan: {\n summary: 'Checkpoint',\n steps: [],\n priority: 'low',\n },\n changes: [],\n validation: {\n testsPass: true,\n lintClean: true,\n buildSuccess: true,\n errors: [],\n warnings: [],\n },\n };\n\n const checkpoint = await lifecycle.createCheckpoint(iteration);\n\n logger.info('Checkpoint created', {\n id: checkpoint.id,\n iteration: checkpoint.iteration,\n });\n\n return checkpoint;\n }\n\n /**\n * Restore from checkpoint\n */\n async restoreFromCheckpoint(checkpointId: string): Promise<void> {\n const lifecycle = this.getLifecycle();\n await lifecycle.restoreFromCheckpoint(checkpointId);\n\n // Reload loop state\n const sources = await this.gatherStateSources(\n this.state.activeLoop?.loopId || ''\n );\n const reconciledState =\n await this.state.stateReconciler!.reconcile(sources);\n\n this.state.activeLoop = reconciledState;\n\n logger.info('Restored from checkpoint', {\n checkpointId,\n iteration: reconciledState.iteration,\n });\n }\n\n /**\n * Get performance metrics\n */\n getPerformanceMetrics() {\n return this.state.performanceOptimizer!.getMetrics();\n }\n\n /**\n * Start a new Ralph loop\n */\n async startLoop(options: {\n task: string;\n criteria: string;\n }): Promise<string> {\n const state = await this.createNewLoop(options.task, options.criteria);\n return state.loopId;\n }\n\n /**\n * Stop the active loop\n */\n async stopLoop(): Promise<void> {\n if (!this.state.activeLoop) {\n logger.warn('No active loop to stop');\n return;\n }\n\n this.state.activeLoop.status = 'completed';\n this.state.activeLoop.lastUpdateTime = Date.now();\n await this.saveLoopState(this.state.activeLoop);\n\n // Handle completion lifecycle\n const lifecycle = this.getLifecycle();\n await lifecycle.handleCompletion(this.state.activeLoop);\n\n logger.info('Ralph loop stopped', { loopId: this.state.activeLoop.loopId });\n this.state.activeLoop = undefined;\n }\n\n /**\n * Cleanup resources\n */\n async cleanup(): Promise<void> {\n logger.info('Cleaning up bridge resources');\n\n // Flush any pending saves\n await this.state.performanceOptimizer!.flushBatch();\n\n // Clean up lifecycle\n this.getLifecycle().cleanup();\n\n // Clean up optimizer\n this.state.performanceOptimizer!.cleanup();\n\n logger.info('Bridge cleanup completed');\n }\n\n /**\n * Merge configuration with defaults\n */\n private mergeConfig(\n config?: Partial<RalphStackMemoryConfig>\n ): RalphStackMemoryConfig {\n return {\n contextBudget: {\n maxTokens: 4000,\n priorityWeights: {\n task: 0.3,\n recentWork: 0.25,\n feedback: 0.2,\n gitHistory: 0.15,\n dependencies: 0.1,\n },\n compressionEnabled: true,\n adaptiveBudgeting: true,\n ...config?.contextBudget,\n },\n stateReconciliation: {\n precedence: ['git', 'files', 'memory'],\n conflictResolution: 'automatic',\n syncInterval: 5000,\n validateConsistency: true,\n ...config?.stateReconciliation,\n },\n lifecycle: {\n hooks: {\n preIteration: true,\n postIteration: true,\n onStateChange: true,\n onError: true,\n onComplete: true,\n },\n checkpoints: {\n enabled: true,\n frequency: 5,\n retentionDays: 7,\n },\n ...config?.lifecycle,\n },\n performance: {\n asyncSaves: true,\n batchSize: 10,\n compressionLevel: 2,\n cacheEnabled: true,\n parallelOperations: true,\n ...config?.performance,\n },\n };\n }\n\n /**\n * Setup lifecycle hooks\n */\n private setupLifecycleHooks(options?: BridgeOptions): void {\n const hooks: LifecycleHooks = {\n preIteration: async (context) => {\n logger.debug('Pre-iteration hook', {\n iteration: context.task.currentIteration,\n });\n return context;\n },\n postIteration: async (iteration) => {\n // Save to StackMemory\n await this.saveIterationFrame(iteration);\n },\n onStateChange: async (oldState, newState) => {\n // Update StackMemory with state change\n await this.updateStateFrame(oldState, newState);\n },\n onError: async (error, context) => {\n logger.error('Iteration error', { error: error.message, context });\n // Save error frame\n await this.saveErrorFrame(error, context);\n },\n onComplete: async (state) => {\n // Close root frame\n await this.closeRootFrame(state);\n },\n };\n\n const lifecycle = new IterationLifecycle(this.config.lifecycle, hooks);\n (this.state as any).lifecycle = lifecycle;\n }\n\n /**\n * Get lifecycle instance\n */\n private getLifecycle(): IterationLifecycle {\n return (this.state as any).lifecycle;\n }\n\n /**\n * Initialize Ralph directory structure\n */\n private async initializeRalphDirectory(state: RalphLoopState): Promise<void> {\n await fs.mkdir(this.ralphDir, { recursive: true });\n await fs.mkdir(path.join(this.ralphDir, 'history'), { recursive: true });\n\n // Write initial files\n await fs.writeFile(path.join(this.ralphDir, 'task.md'), state.task);\n await fs.writeFile(\n path.join(this.ralphDir, 'completion-criteria.md'),\n state.criteria\n );\n await fs.writeFile(path.join(this.ralphDir, 'iteration.txt'), '0');\n await fs.writeFile(path.join(this.ralphDir, 'feedback.txt'), '');\n await fs.writeFile(\n path.join(this.ralphDir, 'state.json'),\n JSON.stringify(state, null, 2)\n );\n }\n\n /**\n * Create root frame for Ralph loop\n */\n private async createRootFrame(state: RalphLoopState): Promise<Frame> {\n if (!this.requiresDatabase) {\n // Return a mock frame when database is not required\n return {\n frame_id: `mock-${state.loopId}`,\n type: 'task' as FrameType,\n name: `ralph-${state.loopId}`,\n inputs: {\n task: state.task,\n criteria: state.criteria,\n loopId: state.loopId,\n },\n created_at: Date.now(),\n } as Frame;\n }\n\n if (!this.frameManager) {\n throw new Error('Frame manager not initialized');\n }\n\n const frame: Partial<Frame> = {\n type: 'task' as FrameType,\n name: `ralph-${state.loopId}`,\n inputs: {\n task: state.task,\n criteria: state.criteria,\n loopId: state.loopId,\n },\n digest_json: {\n type: 'ralph_loop',\n status: 'started',\n },\n };\n\n return await this.frameManager.createFrame({\n name: frame.name,\n type: frame.type,\n content: frame.content || '',\n metadata: frame.metadata,\n });\n }\n\n /**\n * Load iteration context from StackMemory\n */\n private async loadIterationContext(\n state: RalphLoopState\n ): Promise<IterationContext> {\n const frames = await this.loadRelevantFrames(state.loopId);\n\n return {\n task: {\n description: state.task,\n criteria: state.criteria.split('\\n').filter(Boolean),\n currentIteration: state.iteration,\n feedback: state.feedback,\n priority: 'medium',\n },\n history: {\n recentIterations: await this.loadRecentIterations(state.loopId),\n gitCommits: await this.loadGitCommits(),\n changedFiles: await this.loadChangedFiles(),\n testResults: [],\n },\n environment: {\n projectPath: process.cwd(),\n branch: await this.getCurrentBranch(),\n dependencies: {},\n configuration: {},\n },\n memory: {\n relevantFrames: frames,\n decisions: [],\n patterns: [],\n blockers: [],\n },\n tokenCount: 0,\n };\n }\n\n /**\n * Execute worker iteration\n */\n private async executeWorkerIteration(\n context: IterationContext\n ): Promise<RalphIteration> {\n const iterationNumber = context.task.currentIteration + 1;\n\n try {\n // Analyze current codebase state\n const analysis = await this.analyzeCodebaseState();\n\n // Generate iteration plan based on context and analysis\n const plan = await this.generateIterationPlan(context, analysis);\n\n // Execute the planned changes\n const changes = await this.executeIterationChanges(plan, context);\n\n // Validate the changes\n const validation = await this.validateIterationResults(changes);\n\n logger.info('Iteration execution completed', {\n iteration: iterationNumber,\n changesCount: changes.length,\n testsPass: validation.testsPass,\n });\n\n return {\n number: iterationNumber,\n timestamp: Date.now(),\n analysis,\n plan,\n changes,\n validation,\n };\n } catch (error: unknown) {\n logger.error('Iteration execution failed', error as Error);\n\n // Return a minimal iteration with error state\n return {\n number: iterationNumber,\n timestamp: Date.now(),\n analysis: {\n filesCount: 0,\n testsPass: false,\n testsFail: 1,\n lastChange: `Error: ${(error as Error).message}`,\n },\n plan: {\n summary: 'Iteration failed due to error',\n steps: ['Investigate error', 'Fix underlying issue'],\n priority: 'high',\n },\n changes: [],\n validation: {\n testsPass: false,\n lintClean: false,\n buildSuccess: false,\n errors: [(error as Error).message],\n warnings: [],\n },\n };\n }\n }\n\n /**\n * Analyze current codebase state\n */\n private async analyzeCodebaseState(): Promise<any> {\n try {\n const stats = {\n filesCount: 0,\n testsPass: true,\n testsFail: 0,\n lastChange: 'No recent changes',\n };\n\n // Count files in the project (excluding node_modules, .git, etc.)\n try {\n const { execSync } = await import('child_process');\n const output = execSync(\n 'find . -type f -name \"*.ts\" -o -name \"*.js\" -o -name \"*.json\" | grep -v node_modules | grep -v .git | wc -l',\n { encoding: 'utf8', cwd: process.cwd() }\n );\n stats.filesCount = parseInt(output.trim()) || 0;\n } catch {\n stats.filesCount = 0;\n }\n\n // Check git status for recent changes\n try {\n const { execSync } = await import('child_process');\n const gitLog = execSync('git log -1 --oneline', {\n encoding: 'utf8',\n cwd: process.cwd(),\n });\n stats.lastChange = gitLog.trim() || 'No git history';\n } catch {\n stats.lastChange = 'No git repository';\n }\n\n // Run basic tests if available\n try {\n const { existsSync } = await import('fs');\n if (existsSync('package.json')) {\n const packageJson = JSON.parse(\n await fs.readFile('package.json', 'utf8')\n );\n if (packageJson.scripts?.test) {\n const { execSync } = await import('child_process');\n execSync('npm test', { stdio: 'pipe', timeout: 30000 });\n stats.testsPass = true;\n stats.testsFail = 0;\n }\n }\n } catch {\n stats.testsPass = false;\n stats.testsFail = 1;\n }\n\n return stats;\n } catch (error: unknown) {\n return {\n filesCount: 0,\n testsPass: false,\n testsFail: 1,\n lastChange: `Analysis failed: ${(error as Error).message}`,\n };\n }\n }\n\n /**\n * Generate iteration plan based on context and analysis\n */\n private async generateIterationPlan(\n context: IterationContext,\n analysis: any\n ): Promise<any> {\n // Extract task information\n const task = context.task.task || 'Complete assigned work';\n const criteria = context.task.criteria || 'Meet completion criteria';\n\n // Generate basic plan based on analysis\n const steps = [];\n\n if (!analysis.testsPass) {\n steps.push('Fix failing tests');\n }\n\n if (analysis.filesCount === 0) {\n steps.push('Initialize project structure');\n }\n\n // Add task-specific steps\n if (task.toLowerCase().includes('implement')) {\n steps.push('Implement required functionality');\n steps.push('Add appropriate tests');\n } else if (task.toLowerCase().includes('fix')) {\n steps.push('Identify root cause');\n steps.push('Implement fix');\n steps.push('Verify fix works');\n } else {\n steps.push('Analyze requirements');\n steps.push('Plan implementation approach');\n steps.push('Execute planned work');\n }\n\n steps.push('Validate changes');\n\n return {\n summary: `Iteration plan for: ${task}`,\n steps,\n priority: analysis.testsPass ? 'medium' : 'high',\n };\n }\n\n /**\n * Execute planned changes\n */\n private async executeIterationChanges(\n plan: any,\n context: IterationContext\n ): Promise<any[]> {\n const changes = [];\n\n // This would integrate with actual Ralph implementation\n // For now, we'll simulate basic changes based on the plan\n\n for (let i = 0; i < plan.steps.length; i++) {\n const step = plan.steps[i];\n\n changes.push({\n type: 'step_execution',\n description: step,\n timestamp: Date.now(),\n files_affected: [],\n success: true,\n });\n\n // Small delay to simulate work\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n logger.debug('Executed iteration changes', {\n stepsCount: plan.steps.length,\n changesCount: changes.length,\n });\n\n return changes;\n }\n\n /**\n * Validate iteration results\n */\n private async validateIterationResults(changes: any[]): Promise<any> {\n const validation = {\n testsPass: true,\n lintClean: true,\n buildSuccess: true,\n errors: [],\n warnings: [],\n };\n\n // Run validation checks if available\n try {\n const { existsSync } = await import('fs');\n\n // Check if linting is available\n if (existsSync('package.json')) {\n const packageJson = JSON.parse(\n await fs.readFile('package.json', 'utf8')\n );\n\n if (packageJson.scripts?.lint) {\n try {\n const { execSync } = await import('child_process');\n execSync('npm run lint', { stdio: 'pipe', timeout: 30000 });\n validation.lintClean = true;\n } catch (error: any) {\n validation.lintClean = false;\n validation.warnings.push('Lint warnings detected');\n }\n }\n\n if (packageJson.scripts?.build) {\n try {\n const { execSync } = await import('child_process');\n execSync('npm run build', { stdio: 'pipe', timeout: 60000 });\n validation.buildSuccess = true;\n } catch (error: any) {\n validation.buildSuccess = false;\n validation.errors.push('Build failed');\n }\n }\n }\n } catch (error: unknown) {\n validation.errors.push(`Validation error: ${(error as Error).message}`);\n }\n\n return validation;\n }\n\n /**\n * Save iteration results\n */\n private async saveIterationResults(iteration: RalphIteration): Promise<void> {\n // Save with performance optimization\n await this.state.performanceOptimizer!.saveIteration(iteration);\n\n // Save iteration artifacts to Ralph directory\n const iterDir = path.join(\n this.ralphDir,\n 'history',\n `iteration-${String(iteration.number).padStart(3, '0')}`\n );\n\n await fs.mkdir(iterDir, { recursive: true });\n await fs.writeFile(\n path.join(iterDir, 'artifacts.json'),\n JSON.stringify(iteration, null, 2)\n );\n }\n\n /**\n * Save iteration frame to StackMemory\n */\n private async saveIterationFrame(iteration: RalphIteration): Promise<void> {\n if (!this.requiresDatabase || !this.frameManager || !this.state.activeLoop)\n return;\n\n const frame: Partial<Frame> = {\n type: 'subtask' as FrameType,\n name: `iteration-${iteration.number}`,\n inputs: {\n iterationNumber: iteration.number,\n loopId: this.state.activeLoop.loopId,\n },\n outputs: {\n changes: iteration.changes.length,\n success: iteration.validation.testsPass,\n },\n digest_json: iteration,\n };\n\n await this.state.performanceOptimizer!.saveFrame(frame as Frame);\n }\n\n /**\n * Get database adapter for FrameManager\n */\n private async getDatabaseAdapter(): Promise<SQLiteAdapter> {\n const dbPath = path.join(this.ralphDir, 'stackmemory.db');\n const projectId = path.basename(this.ralphDir);\n const embeddingProvider = (await createTransformersProvider()) ?? undefined;\n return new SQLiteAdapter(projectId, { dbPath, embeddingProvider });\n }\n\n /**\n * Additional helper methods\n */\n private async getCurrentGitCommit(): Promise<string> {\n try {\n // execSync already imported at top\n return execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();\n } catch {\n return '';\n }\n }\n\n private async getCurrentBranch(): Promise<string> {\n try {\n // execSync already imported at top\n return execSync('git branch --show-current', { encoding: 'utf8' }).trim();\n } catch {\n return 'main';\n }\n }\n\n private async saveLoopState(state: RalphLoopState): Promise<void> {\n // Save state.json\n await fs.writeFile(\n path.join(this.ralphDir, 'state.json'),\n JSON.stringify(state, null, 2)\n );\n\n // Synchronize iteration.txt with current iteration\n await fs.writeFile(\n path.join(this.ralphDir, 'iteration.txt'),\n state.iteration.toString()\n );\n\n logger.debug('Saved loop state', {\n iteration: state.iteration,\n status: state.status,\n });\n }\n\n private async gatherStateSources(loopId: string): Promise<StateSource[]> {\n const sources: StateSource[] = [];\n\n // Get git state\n sources.push(await this.state.stateReconciler!.getGitState());\n\n // Get file state\n sources.push(await this.state.stateReconciler!.getFileState());\n\n // Get memory state\n sources.push(await this.state.stateReconciler!.getMemoryState(loopId));\n\n return sources;\n }\n\n private async attemptRecovery(): Promise<void> {\n logger.info('Attempting crash recovery');\n\n try {\n // Check for incomplete loops in file system\n const stateFile = path.join(this.ralphDir, 'state.json');\n const exists = await fs\n .stat(stateFile)\n .then(() => true)\n .catch(() => false);\n\n if (exists) {\n const stateData = await fs.readFile(stateFile, 'utf8');\n const state = JSON.parse(stateData) as RalphLoopState;\n\n if (state.status !== 'completed') {\n logger.info('Found incomplete loop', { loopId: state.loopId });\n await this.resumeLoop(state.loopId);\n }\n }\n } catch (error: any) {\n logger.error('Recovery failed', { error: error.message });\n }\n }\n\n private async evaluateCompletion(): Promise<any> {\n // This would evaluate completion criteria\n // Placeholder implementation\n return {\n complete: false,\n criteria: {},\n unmet: ['criteria1', 'criteria2'],\n };\n }\n\n private generateFeedback(evaluation: any): string {\n if (evaluation.unmet.length === 0) {\n return 'All criteria met';\n }\n return `Still need to address:\\n${evaluation.unmet.map((c: string) => `- ${c}`).join('\\n')}`;\n }\n\n private async loadRelevantFrames(loopId: string): Promise<Frame[]> {\n // This would load frames from StackMemory\n // Placeholder implementation\n return [];\n }\n\n private async loadRecentIterations(loopId: string): Promise<any[]> {\n // Load recent iteration summaries\n return [];\n }\n\n private async loadGitCommits(): Promise<any[]> {\n // Load recent git commits\n return [];\n }\n\n private async loadChangedFiles(): Promise<string[]> {\n // Load recently changed files\n return [];\n }\n\n private async loadSessionFrames(sessionId: string): Promise<Frame[]> {\n // Load frames from session\n return [];\n }\n\n private async reconstructLoopState(frame: Frame): Promise<RalphLoopState> {\n // Reconstruct loop state from frame\n return {\n loopId: frame.inputs.loopId || '',\n task: frame.inputs.task || '',\n criteria: frame.inputs.criteria || '',\n iteration: 0,\n status: 'running',\n startTime: frame.created_at,\n lastUpdateTime: Date.now(),\n };\n }\n\n private async buildContextFromFrames(\n frames: Frame[],\n state: RalphLoopState\n ): Promise<IterationContext> {\n // Build context from frames\n return await this.loadIterationContext(state);\n }\n\n private async updateStateFrame(\n oldState: RalphLoopState,\n newState: RalphLoopState\n ): Promise<void> {\n // Update state in StackMemory\n logger.debug('State frame updated');\n }\n\n private async saveErrorFrame(error: Error, context: any): Promise<void> {\n // Save error as frame\n logger.debug('Error frame saved');\n }\n\n private async closeRootFrame(state: RalphLoopState): Promise<void> {\n // Close the root frame\n logger.debug('Root frame closed');\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["execSync"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/integrations/ralph/context/context-budget-manager.ts"],
4
- "sourcesContent": ["/**\n * Context Budget Manager for Ralph-StackMemory Integration\n * Manages token allocation and context prioritization to prevent overwhelming iterations\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport {\n IterationContext,\n TaskContext,\n HistoryContext,\n EnvironmentContext,\n MemoryContext,\n RalphStackMemoryConfig,\n TokenEstimate,\n IterationSummary,\n} from '../types.js';\n\nexport class ContextBudgetManager {\n private config: RalphStackMemoryConfig['contextBudget'];\n private tokenUsage: Map<string, number> = new Map();\n private readonly DEFAULT_MAX_TOKENS = 4000;\n private readonly TOKEN_CHAR_RATIO = 0.25; // Rough estimate: 1 token \u2248 4 chars\n\n constructor(config?: Partial<RalphStackMemoryConfig['contextBudget']>) {\n this.config = {\n maxTokens: config?.maxTokens || this.DEFAULT_MAX_TOKENS,\n priorityWeights: {\n task: config?.priorityWeights?.task || 0.3,\n recentWork: config?.priorityWeights?.recentWork || 0.25,\n feedback: config?.priorityWeights?.feedback || 0.2,\n gitHistory: config?.priorityWeights?.gitHistory || 0.15,\n dependencies: config?.priorityWeights?.dependencies || 0.1,\n },\n compressionEnabled: config?.compressionEnabled ?? true,\n adaptiveBudgeting: config?.adaptiveBudgeting ?? true,\n };\n }\n\n /**\n * Estimate tokens for a given text\n */\n estimateTokens(text: string): number {\n if (!text) return 0;\n \n // More accurate estimation based on common patterns\n const baseTokens = text.length * this.TOKEN_CHAR_RATIO;\n \n // Adjust for code content (typically more dense)\n const codeMultiplier = this.detectCodeContent(text) ? 1.2 : 1.0;\n \n // Adjust for JSON content (typically less dense)\n const jsonMultiplier = this.detectJsonContent(text) ? 0.9 : 1.0;\n \n return Math.ceil(baseTokens * codeMultiplier * jsonMultiplier);\n }\n\n /**\n * Allocate token budget across different context categories\n */\n allocateBudget(context: IterationContext): IterationContext {\n const currentTokens = this.calculateCurrentTokens(context);\n \n if (currentTokens <= this.config.maxTokens) {\n logger.debug('Context within budget', { \n used: currentTokens, \n max: this.config.maxTokens \n });\n return context;\n }\n\n logger.info('Context exceeds budget, optimizing...', {\n current: currentTokens,\n max: this.config.maxTokens,\n });\n\n // Apply adaptive budgeting if enabled\n if (this.config.adaptiveBudgeting) {\n return this.adaptiveBudgetAllocation(context, currentTokens);\n }\n\n // Apply fixed priority-based budgeting\n return this.priorityBasedAllocation(context, currentTokens);\n }\n\n /**\n * Compress context to fit within budget\n */\n compressContext(context: IterationContext): IterationContext {\n if (!this.config.compressionEnabled) {\n return context;\n }\n\n const compressed: IterationContext = {\n ...context,\n task: this.compressTaskContext(context.task),\n history: this.compressHistoryContext(context.history),\n environment: this.compressEnvironmentContext(context.environment),\n memory: this.compressMemoryContext(context.memory),\n tokenCount: 0,\n };\n\n compressed.tokenCount = this.calculateCurrentTokens(compressed);\n \n logger.debug('Context compressed', {\n original: context.tokenCount,\n compressed: compressed.tokenCount,\n reduction: `${Math.round((1 - compressed.tokenCount / context.tokenCount) * 100)}%`,\n });\n\n return compressed;\n }\n\n /**\n * Get current token usage statistics\n */\n getUsage(): { used: number; available: number; categories: Record<string, number> } {\n const categories: Record<string, number> = {};\n let totalUsed = 0;\n\n for (const [category, tokens] of this.tokenUsage) {\n categories[category] = tokens;\n totalUsed += tokens;\n }\n\n return {\n used: totalUsed,\n available: this.config.maxTokens - totalUsed,\n categories,\n };\n }\n\n /**\n * Calculate current token count for context\n */\n private calculateCurrentTokens(context: IterationContext): number {\n this.tokenUsage.clear();\n \n const taskTokens = this.estimateTokens(JSON.stringify(context.task));\n const historyTokens = this.estimateTokens(JSON.stringify(context.history));\n const envTokens = this.estimateTokens(JSON.stringify(context.environment));\n const memoryTokens = this.estimateTokens(JSON.stringify(context.memory));\n\n this.tokenUsage.set('task', taskTokens);\n this.tokenUsage.set('history', historyTokens);\n this.tokenUsage.set('environment', envTokens);\n this.tokenUsage.set('memory', memoryTokens);\n\n return taskTokens + historyTokens + envTokens + memoryTokens;\n }\n\n /**\n * Adaptive budget allocation based on iteration phase\n */\n private adaptiveBudgetAllocation(\n context: IterationContext,\n currentTokens: number\n ): IterationContext {\n const reductionRatio = this.config.maxTokens / currentTokens;\n \n // Determine phase based on iteration number\n const phase = this.determinePhase(context.task.currentIteration);\n \n // Adjust weights based on phase\n const adjustedWeights = this.getPhaseAdjustedWeights(phase);\n \n return this.applyWeightedReduction(context, reductionRatio, adjustedWeights);\n }\n\n /**\n * Priority-based allocation using fixed weights\n */\n private priorityBasedAllocation(\n context: IterationContext,\n currentTokens: number\n ): IterationContext {\n const reductionRatio = this.config.maxTokens / currentTokens;\n return this.applyWeightedReduction(context, reductionRatio, this.config.priorityWeights);\n }\n\n /**\n * Apply weighted reduction to context\n */\n private applyWeightedReduction(\n context: IterationContext,\n reductionRatio: number,\n weights: Record<string, number>\n ): IterationContext {\n const reduced: IterationContext = { ...context };\n\n // Reduce history based on weight\n if (weights.recentWork < 1.0) {\n const keepCount = Math.ceil(\n context.history.recentIterations.length * reductionRatio * weights.recentWork\n );\n reduced.history = {\n ...context.history,\n recentIterations: context.history.recentIterations.slice(-keepCount),\n };\n }\n\n // Reduce git history based on weight\n if (weights.gitHistory < 1.0) {\n const keepCount = Math.ceil(\n context.history.gitCommits.length * reductionRatio * weights.gitHistory\n );\n reduced.history.gitCommits = context.history.gitCommits.slice(-keepCount);\n }\n\n // Reduce memory frames based on weight\n if (weights.dependencies < 1.0) {\n const keepCount = Math.ceil(\n context.memory.relevantFrames.length * reductionRatio * weights.dependencies\n );\n reduced.memory = {\n ...context.memory,\n relevantFrames: context.memory.relevantFrames\n .sort((a, b) => (b.created_at || 0) - (a.created_at || 0))\n .slice(0, keepCount),\n };\n }\n\n reduced.tokenCount = this.calculateCurrentTokens(reduced);\n return reduced;\n }\n\n /**\n * Compress task context\n */\n private compressTaskContext(task: TaskContext): TaskContext {\n return {\n ...task,\n description: this.truncateWithEllipsis(task.description, 500),\n criteria: task.criteria.slice(0, 5), // Keep top 5 criteria\n feedback: task.feedback ? this.truncateWithEllipsis(task.feedback, 300) : undefined,\n };\n }\n\n /**\n * Compress history context\n */\n private compressHistoryContext(history: HistoryContext): HistoryContext {\n return {\n ...history,\n recentIterations: history.recentIterations\n .slice(-5) // Keep last 5 iterations\n .map(iter => ({\n ...iter,\n summary: this.truncateWithEllipsis(iter.summary, 100),\n })),\n gitCommits: history.gitCommits\n .slice(-10) // Keep last 10 commits\n .map(commit => ({\n ...commit,\n message: this.truncateWithEllipsis(commit.message, 80),\n files: commit.files.slice(0, 5), // Keep top 5 files\n })),\n changedFiles: history.changedFiles.slice(0, 20), // Keep top 20 files\n testResults: history.testResults.slice(-3), // Keep last 3 test runs\n };\n }\n\n /**\n * Compress environment context\n */\n private compressEnvironmentContext(env: EnvironmentContext): EnvironmentContext {\n return {\n ...env,\n dependencies: this.compressObject(env.dependencies, 20), // Keep top 20 deps\n configuration: this.compressObject(env.configuration, 10), // Keep top 10 config items\n };\n }\n\n /**\n * Compress memory context\n */\n private compressMemoryContext(memory: MemoryContext): MemoryContext {\n return {\n ...memory,\n relevantFrames: memory.relevantFrames.slice(0, 5), // Keep top 5 frames\n decisions: memory.decisions\n .filter(d => d.impact !== 'low') // Remove low impact decisions\n .slice(-5), // Keep last 5\n patterns: memory.patterns\n .filter(p => p.successRate > 0.7) // Keep successful patterns only\n .slice(0, 3), // Keep top 3\n blockers: memory.blockers.filter(b => !b.resolved), // Keep unresolved only\n };\n }\n\n /**\n * Determine iteration phase\n */\n private determinePhase(iteration: number): 'early' | 'middle' | 'late' {\n if (iteration <= 3) return 'early';\n if (iteration <= 10) return 'middle';\n return 'late';\n }\n\n /**\n * Get phase-adjusted weights\n */\n private getPhaseAdjustedWeights(phase: 'early' | 'middle' | 'late'): Record<string, number> {\n switch (phase) {\n case 'early':\n // Early phase: Focus on task understanding\n return {\n task: 0.4,\n recentWork: 0.1,\n feedback: 0.2,\n gitHistory: 0.2,\n dependencies: 0.1,\n };\n case 'middle':\n // Middle phase: Balance all aspects\n return this.config.priorityWeights;\n case 'late':\n // Late phase: Focus on recent work and feedback\n return {\n task: 0.2,\n recentWork: 0.35,\n feedback: 0.25,\n gitHistory: 0.15,\n dependencies: 0.05,\n };\n }\n }\n\n /**\n * Detect if text contains code\n */\n private detectCodeContent(text: string): boolean {\n const codePatterns = [\n /function\\s+\\w+\\s*\\(/,\n /class\\s+\\w+/,\n /const\\s+\\w+\\s*=/,\n /import\\s+.*from/,\n /\\{[\\s\\S]*\\}/,\n ];\n return codePatterns.some(pattern => pattern.test(text));\n }\n\n /**\n * Detect if text contains JSON\n */\n private detectJsonContent(text: string): boolean {\n try {\n JSON.parse(text);\n return true;\n } catch {\n return text.includes('\"') && text.includes(':') && text.includes('{');\n }\n }\n\n /**\n * Truncate text with ellipsis\n */\n private truncateWithEllipsis(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.substring(0, maxLength - 3) + '...';\n }\n\n /**\n * Compress object by keeping only top N entries\n */\n private compressObject(obj: Record<string, any>, maxEntries: number): Record<string, any> {\n const entries = Object.entries(obj);\n if (entries.length <= maxEntries) return obj;\n \n const compressed: Record<string, any> = {};\n entries.slice(0, maxEntries).forEach(([key, value]) => {\n compressed[key] = value;\n });\n \n return compressed;\n }\n}"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/integrations/ralph/context/stackmemory-context-loader.ts"],
4
- "sourcesContent": ["/**\n * StackMemory Context Loader for Ralph Loops\n * Provides intelligent context loading with historical pattern recognition\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { FrameManager } from '../../../core/context/index.js';\nimport { sharedContextLayer } from '../../../core/context/shared-context-layer.js';\nimport { ContextRetriever } from '../../../core/retrieval/context-retriever.js';\nimport { sessionManager } from '../../../core/session/index.js';\nimport { ContextBudgetManager } from './context-budget-manager.js';\nimport { \n RalphContextRequest, \n RalphContextResponse, \n HistoricalPattern,\n TaskSimilarity,\n ContextSource\n} from '../types.js';\n\nexport interface StackMemoryContextConfig {\n maxTokens: number;\n lookbackDays: number;\n similarityThreshold: number;\n patternDetectionEnabled: boolean;\n includeFailedAttempts: boolean;\n crossSessionSearch: boolean;\n}\n\nexport class StackMemoryContextLoader {\n private frameManager?: FrameManager;\n private contextRetriever?: ContextRetriever;\n private budgetManager: ContextBudgetManager;\n private config: StackMemoryContextConfig;\n\n constructor(config?: Partial<StackMemoryContextConfig>) {\n this.config = {\n maxTokens: 3200, // Leave room for task description\n lookbackDays: 30,\n similarityThreshold: 0.7,\n patternDetectionEnabled: true,\n includeFailedAttempts: true,\n crossSessionSearch: true,\n ...config\n };\n \n this.budgetManager = new ContextBudgetManager({\n maxTokens: this.config.maxTokens,\n priorityWeights: {\n task: 0.15,\n recentWork: 0.30,\n patterns: 0.25,\n decisions: 0.20,\n dependencies: 0.10\n }\n });\n\n logger.info('StackMemory context loader initialized', {\n maxTokens: this.config.maxTokens,\n lookbackDays: this.config.lookbackDays,\n patternDetection: this.config.patternDetectionEnabled\n });\n }\n\n async initialize(): Promise<void> {\n try {\n // Initialize StackMemory components\n await sessionManager.initialize();\n await sharedContextLayer.initialize();\n\n // Get current session\n const session = await sessionManager.getOrCreateSession({});\n \n if (session.database) {\n this.frameManager = new FrameManager(session.database, session.projectId);\n this.contextRetriever = new ContextRetriever(session.database);\n }\n\n logger.info('Context loader initialized successfully');\n } catch (error: unknown) {\n logger.error('Failed to initialize context loader', error as Error);\n throw error;\n }\n }\n\n /**\n * Load context for Ralph loop initialization\n */\n async loadInitialContext(request: RalphContextRequest): Promise<RalphContextResponse> {\n logger.info('Loading initial context for Ralph loop', {\n task: request.task.substring(0, 100),\n usePatterns: request.usePatterns,\n useSimilarTasks: request.useSimilarTasks\n });\n\n const sources: ContextSource[] = [];\n let totalTokens = 0;\n\n try {\n // 1. Find similar tasks if requested\n if (request.useSimilarTasks) {\n const similarTasks = await this.findSimilarTasks(request.task);\n if (similarTasks.length > 0) {\n const tasksContext = await this.extractTaskContext(similarTasks);\n sources.push({\n type: 'similar_tasks',\n weight: 0.3,\n content: tasksContext,\n tokens: this.budgetManager.estimateTokens(tasksContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n }\n\n // 2. Extract relevant patterns if requested\n if (request.usePatterns) {\n const patterns = await this.extractRelevantPatterns(request.task);\n if (patterns.length > 0) {\n const patternsContext = await this.formatPatterns(patterns);\n sources.push({\n type: 'historical_patterns',\n weight: 0.25,\n content: patternsContext,\n tokens: this.budgetManager.estimateTokens(patternsContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n }\n\n // 3. Load recent decisions and learnings\n const decisions = await this.loadRecentDecisions();\n if (decisions.length > 0) {\n const decisionsContext = this.formatDecisions(decisions);\n sources.push({\n type: 'recent_decisions',\n weight: 0.2,\n content: decisionsContext,\n tokens: this.budgetManager.estimateTokens(decisionsContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n\n // 4. Load project-specific context\n const projectContext = await this.loadProjectContext(request.task);\n if (projectContext) {\n sources.push({\n type: 'project_context',\n weight: 0.15,\n content: projectContext,\n tokens: this.budgetManager.estimateTokens(projectContext)\n });\n totalTokens += sources[sources.length - 1].tokens;\n }\n\n // 5. Apply budget constraints and synthesize\n const budgetedSources = this.budgetManager.allocateBudget({ sources });\n const synthesizedContext = this.synthesizeContext(budgetedSources.sources);\n\n logger.info('Context loaded successfully', {\n totalSources: sources.length,\n totalTokens,\n budgetedTokens: budgetedSources.sources.reduce((sum, s) => sum + s.tokens, 0)\n });\n\n return {\n context: synthesizedContext,\n sources: budgetedSources.sources,\n metadata: {\n totalTokens: budgetedSources.sources.reduce((sum, s) => sum + s.tokens, 0),\n sourcesCount: budgetedSources.sources.length,\n patterns: request.usePatterns ? patterns : [],\n similarTasks: request.useSimilarTasks ? similarTasks : []\n }\n };\n\n } catch (error: unknown) {\n logger.error('Failed to load context', error as Error);\n throw error;\n }\n }\n\n /**\n * Find similar tasks from StackMemory history\n */\n private async findSimilarTasks(taskDescription: string): Promise<TaskSimilarity[]> {\n if (!this.frameManager || !this.contextRetriever) {\n return [];\n }\n\n try {\n // Search for similar task frames\n const searchResults = await this.contextRetriever.search(taskDescription, {\n maxResults: 10,\n types: ['task', 'subtask'],\n timeFilter: {\n days: this.config.lookbackDays\n }\n });\n\n const similarities: TaskSimilarity[] = [];\n\n for (const result of searchResults) {\n // Calculate similarity score\n const similarity = this.calculateTaskSimilarity(taskDescription, result.content);\n \n if (similarity >= this.config.similarityThreshold) {\n similarities.push({\n frameId: result.frameId,\n task: result.content,\n similarity,\n outcome: await this.determineTaskOutcome(result.frameId),\n createdAt: result.timestamp,\n sessionId: result.sessionId || 'unknown'\n });\n }\n }\n\n // Sort by similarity and recent success\n return similarities\n .sort((a, b) => {\n // Prioritize successful outcomes and higher similarity\n const aScore = a.similarity * (a.outcome === 'success' ? 1.2 : 1.0);\n const bScore = b.similarity * (b.outcome === 'success' ? 1.2 : 1.0);\n return bScore - aScore;\n })\n .slice(0, 5); // Top 5 most relevant\n\n } catch (error: unknown) {\n logger.error('Failed to find similar tasks', error as Error);\n return [];\n }\n }\n\n /**\n * Extract relevant patterns from historical data\n */\n private async extractRelevantPatterns(taskDescription: string): Promise<HistoricalPattern[]> {\n try {\n const context = await sharedContextLayer.getSharedContext();\n if (!context) return [];\n\n const relevantPatterns: HistoricalPattern[] = [];\n\n // Filter patterns by relevance to current task\n for (const pattern of context.globalPatterns) {\n const relevance = this.calculatePatternRelevance(taskDescription, pattern.pattern);\n \n if (relevance >= 0.5) {\n relevantPatterns.push({\n pattern: pattern.pattern,\n type: pattern.type,\n frequency: pattern.frequency,\n lastSeen: pattern.lastSeen,\n relevance,\n resolution: pattern.resolution,\n examples: await this.getPatternExamples(pattern.pattern)\n });\n }\n }\n\n // Sort by relevance and frequency\n return relevantPatterns\n .sort((a, b) => (b.relevance * Math.log(b.frequency + 1)) - (a.relevance * Math.log(a.frequency + 1)))\n .slice(0, 8); // Top 8 most relevant patterns\n\n } catch (error: unknown) {\n logger.error('Failed to extract patterns', error as Error);\n return [];\n }\n }\n\n /**\n * Load recent decisions that might be relevant\n */\n private async loadRecentDecisions(): Promise<any[]> {\n try {\n const context = await sharedContextLayer.getSharedContext();\n if (!context) return [];\n\n // Get recent successful decisions\n const cutoff = Date.now() - (7 * 24 * 60 * 60 * 1000); // Last 7 days\n \n return context.decisionLog\n .filter(d => d.timestamp >= cutoff && d.outcome === 'success')\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, 5);\n\n } catch (error: unknown) {\n logger.error('Failed to load recent decisions', error as Error);\n return [];\n }\n }\n\n /**\n * Load project-specific context\n */\n private async loadProjectContext(taskDescription: string): Promise<string | null> {\n try {\n if (!this.contextRetriever) return null;\n\n // Search for project-relevant information\n const projectInfo = await this.contextRetriever.search(taskDescription, {\n maxResults: 3,\n types: ['task'],\n projectSpecific: true\n });\n\n if (projectInfo.length === 0) return null;\n\n const contextParts: string[] = [];\n \n for (const info of projectInfo) {\n contextParts.push(`Project context: ${info.content}`);\n }\n\n return contextParts.join('\\n\\n');\n\n } catch (error: unknown) {\n logger.error('Failed to load project context', error as Error);\n return null;\n }\n }\n\n /**\n * Calculate similarity between task descriptions\n */\n private calculateTaskSimilarity(task1: string, task2: string): number {\n // Simple similarity calculation - in production would use embeddings\n const words1 = new Set(task1.toLowerCase().split(/\\s+/));\n const words2 = new Set(task2.toLowerCase().split(/\\s+/));\n \n const intersection = new Set([...words1].filter(x => words2.has(x)));\n const union = new Set([...words1, ...words2]);\n \n return intersection.size / union.size;\n }\n\n /**\n * Calculate pattern relevance to current task\n */\n private calculatePatternRelevance(taskDescription: string, pattern: string): number {\n // Simple keyword matching - in production would use semantic analysis\n const taskWords = taskDescription.toLowerCase().split(/\\s+/);\n const patternWords = pattern.toLowerCase().split(/\\s+/);\n \n let matches = 0;\n for (const word of taskWords) {\n if (patternWords.some(p => p.includes(word) || word.includes(p))) {\n matches++;\n }\n }\n \n return matches / taskWords.length;\n }\n\n /**\n * Extract context from similar tasks\n */\n private async extractTaskContext(similarities: TaskSimilarity[]): Promise<string> {\n const contextParts: string[] = [];\n \n contextParts.push('Similar tasks from history:');\n \n for (const sim of similarities) {\n contextParts.push(`\nTask: ${sim.task}\nOutcome: ${sim.outcome}\nSimilarity: ${Math.round(sim.similarity * 100)}%\n${sim.outcome === 'success' ? '\u2705 Successfully completed' : '\u274C Had issues'}\n `.trim());\n }\n \n return contextParts.join('\\n\\n');\n }\n\n /**\n * Format patterns for context inclusion\n */\n private async formatPatterns(patterns: HistoricalPattern[]): Promise<string> {\n const contextParts: string[] = [];\n \n contextParts.push('Relevant patterns from experience:');\n \n for (const pattern of patterns) {\n contextParts.push(`\nPattern: ${pattern.pattern}\nType: ${pattern.type}\nFrequency: ${pattern.frequency} occurrences\n${pattern.resolution ? `Resolution: ${pattern.resolution}` : ''}\nRelevance: ${Math.round(pattern.relevance * 100)}%\n `.trim());\n }\n \n return contextParts.join('\\n\\n');\n }\n\n /**\n * Format decisions for context inclusion\n */\n private formatDecisions(decisions: any[]): string {\n const contextParts: string[] = [];\n \n contextParts.push('Recent successful decisions:');\n \n for (const decision of decisions) {\n contextParts.push(`\nDecision: ${decision.decision}\nReasoning: ${decision.reasoning}\nDate: ${new Date(decision.timestamp).toLocaleDateString()}\n `.trim());\n }\n \n return contextParts.join('\\n\\n');\n }\n\n /**\n * Synthesize all context sources into coherent input\n */\n private synthesizeContext(sources: ContextSource[]): string {\n if (sources.length === 0) {\n return 'No relevant historical context found.';\n }\n\n const contextParts: string[] = [];\n \n contextParts.push('Context from StackMemory:');\n \n // Sort by weight (importance)\n const sortedSources = sources.sort((a, b) => b.weight - a.weight);\n \n for (const source of sortedSources) {\n contextParts.push(`\\n--- ${source.type.replace('_', ' ').toUpperCase()} ---`);\n contextParts.push(source.content);\n }\n \n contextParts.push('\\nUse this context to inform your approach to the current task.');\n \n return contextParts.join('\\n');\n }\n\n /**\n * Determine task outcome from frame history\n */\n private async determineTaskOutcome(frameId: string): Promise<'success' | 'failure' | 'unknown'> {\n try {\n if (!this.frameManager) return 'unknown';\n \n const frame = await this.frameManager.getFrame(frameId);\n if (!frame) return 'unknown';\n \n // Simple heuristic - check if frame was properly closed\n if (frame.state === 'closed' && frame.outputs) {\n return 'success';\n }\n \n return frame.state === 'closed' ? 'failure' : 'unknown';\n \n } catch {\n return 'unknown';\n }\n }\n\n /**\n * Get examples of a specific pattern\n */\n private async getPatternExamples(pattern: string): Promise<string[]> {\n // Would search for concrete examples of this pattern\n // For now, return empty array\n return [];\n }\n}\n\n// Export default instance\nexport const stackMemoryContextLoader = new StackMemoryContextLoader();"],
5
- "mappings": "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",
6
- "names": ["similarTasks", "patterns"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/integrations/ralph/coordination/enhanced-coordination.ts"],
4
- "sourcesContent": ["/**\n * Enhanced Agent Coordination System\n * Provides advanced coordination patterns, conflict resolution, and inter-agent communication\n */\n\nimport { EventEmitter } from 'events';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { Agent, SwarmTask, CoordinationEvent } from '../types.js';\n\nexport interface CoordinationMessage {\n id: string;\n from: string; // agent ID\n to: string[] | 'broadcast'; // agent IDs or broadcast\n type:\n | 'status_update'\n | 'help_request'\n | 'resource_conflict'\n | 'task_handoff'\n | 'knowledge_share';\n content: any;\n timestamp: number;\n priority: 'low' | 'normal' | 'high' | 'urgent';\n}\n\nexport interface TaskDependency {\n taskId: string;\n dependsOn: string[];\n blockingFor: string[];\n estimatedCompletionTime: number;\n criticalPath: boolean;\n}\n\nexport interface ConflictResolution {\n id: string;\n type: 'resource' | 'task_overlap' | 'knowledge_conflict' | 'priority_dispute';\n involvedAgents: string[];\n description: string;\n resolutionStrategy:\n | 'voting'\n | 'expertise_based'\n | 'random'\n | 'manager_override';\n resolution: any;\n timestamp: number;\n status: 'pending' | 'resolved' | 'escalated';\n}\n\nexport class EnhancedCoordinationSystem extends EventEmitter {\n private agents: Map<string, Agent> = new Map();\n private messageQueue: CoordinationMessage[] = [];\n private dependencies: Map<string, TaskDependency> = new Map();\n private conflicts: Map<string, ConflictResolution> = new Map();\n private coordinationRules: CoordinationRule[] = [];\n\n constructor() {\n super();\n this.setupDefaultRules();\n }\n\n /**\n * Register an agent with the coordination system\n */\n registerAgent(agent: Agent): void {\n this.agents.set(agent.id, agent);\n logger.info(`Agent ${agent.role} registered for coordination`);\n\n // Notify other agents\n this.broadcastMessage({\n id: this.generateId(),\n from: 'system',\n to: 'broadcast',\n type: 'status_update',\n content: { type: 'agent_joined', agent: agent.role },\n timestamp: Date.now(),\n priority: 'normal',\n });\n }\n\n /**\n * Send message between agents\n */\n sendMessage(message: Omit<CoordinationMessage, 'id' | 'timestamp'>): void {\n const fullMessage: CoordinationMessage = {\n ...message,\n id: this.generateId(),\n timestamp: Date.now(),\n };\n\n this.messageQueue.push(fullMessage);\n this.routeMessage(fullMessage);\n this.emit('messageReceived', fullMessage);\n }\n\n /**\n * Broadcast message to all agents\n */\n broadcastMessage(\n message: Omit<CoordinationMessage, 'id' | 'timestamp'>\n ): void {\n this.sendMessage({\n ...message,\n to: 'broadcast',\n });\n }\n\n /**\n * Request help from other agents\n */\n requestHelp(fromAgent: string, helpType: string, context: any): void {\n const suitableAgents = this.findSuitableHelpers(helpType);\n\n this.sendMessage({\n from: fromAgent,\n to: suitableAgents,\n type: 'help_request',\n content: {\n helpType,\n context,\n requesterCapabilities: this.agents.get(fromAgent)?.capabilities || [],\n },\n priority: 'high',\n });\n }\n\n /**\n * Add task dependency\n */\n addDependency(dependency: TaskDependency): void {\n this.dependencies.set(dependency.taskId, dependency);\n this.updateCriticalPath();\n logger.info(\n `Added dependency: ${dependency.taskId} depends on ${dependency.dependsOn.join(', ')}`\n );\n }\n\n /**\n * Resolve conflicts automatically\n */\n async resolveConflict(conflictId: string): Promise<boolean> {\n const conflict = this.conflicts.get(conflictId);\n if (!conflict) return false;\n\n try {\n switch (conflict.resolutionStrategy) {\n case 'voting':\n conflict.resolution = await this.resolveByVoting(conflict);\n break;\n case 'expertise_based':\n conflict.resolution = await this.resolveByExpertise(conflict);\n break;\n case 'random':\n conflict.resolution = await this.resolveRandomly(conflict);\n break;\n case 'manager_override':\n conflict.resolution = await this.resolveByManagerOverride(conflict);\n break;\n }\n\n conflict.status = 'resolved';\n this.conflicts.set(conflictId, conflict);\n\n // Notify agents of resolution\n this.broadcastMessage({\n from: 'system',\n to: conflict.involvedAgents,\n type: 'status_update',\n content: {\n type: 'conflict_resolved',\n conflictId,\n resolution: conflict.resolution,\n },\n priority: 'high',\n });\n\n return true;\n } catch (error) {\n conflict.status = 'escalated';\n logger.error(`Failed to resolve conflict ${conflictId}:`, error as Error);\n return false;\n }\n }\n\n /**\n * Get optimal task execution order considering dependencies\n */\n getOptimalExecutionOrder(tasks: SwarmTask[]): SwarmTask[] {\n const graph = this.buildDependencyGraph(tasks);\n return this.topologicalSort(graph, tasks);\n }\n\n /**\n * Detect and report coordination patterns\n */\n analyzeCoordinationPatterns(): {\n communicationFrequency: Map<string, number>;\n helpRequestPatterns: any[];\n conflictFrequency: Map<string, number>;\n bottlenecks: string[];\n } {\n const patterns = {\n communicationFrequency: new Map<string, number>(),\n helpRequestPatterns: [],\n conflictFrequency: new Map<string, number>(),\n bottlenecks: this.identifyBottlenecks(),\n };\n\n // Analyze message patterns\n for (const message of this.messageQueue) {\n const key = `${message.from}-${message.type}`;\n patterns.communicationFrequency.set(\n key,\n (patterns.communicationFrequency.get(key) || 0) + 1\n );\n }\n\n // Analyze conflicts\n for (const conflict of this.conflicts.values()) {\n patterns.conflictFrequency.set(\n conflict.type,\n (patterns.conflictFrequency.get(conflict.type) || 0) + 1\n );\n }\n\n return patterns;\n }\n\n /**\n * Load balancing recommendations\n */\n getLoadBalancingRecommendations(): {\n overloadedAgents: string[];\n underutilizedAgents: string[];\n suggestedReassignments: Array<{\n fromAgent: string;\n toAgent: string;\n taskType: string;\n reason: string;\n }>;\n } {\n const recommendations = {\n overloadedAgents: [],\n underutilizedAgents: [],\n suggestedReassignments: [],\n };\n\n // Analyze agent workloads\n for (const agent of this.agents.values()) {\n const workload = this.calculateAgentWorkload(agent);\n\n if (workload > 0.8) {\n recommendations.overloadedAgents.push(agent.id);\n } else if (workload < 0.3) {\n recommendations.underutilizedAgents.push(agent.id);\n }\n }\n\n // Generate reassignment suggestions\n for (const overloaded of recommendations.overloadedAgents) {\n for (const underutilized of recommendations.underutilizedAgents) {\n const compatibility = this.checkAgentCompatibility(\n overloaded,\n underutilized\n );\n if (compatibility.score > 0.7) {\n recommendations.suggestedReassignments.push({\n fromAgent: overloaded,\n toAgent: underutilized,\n taskType: compatibility.bestTaskType,\n reason: `Load balancing: ${compatibility.reason}`,\n });\n }\n }\n }\n\n return recommendations;\n }\n\n private routeMessage(message: CoordinationMessage): void {\n if (message.to === 'broadcast') {\n // Route to all agents except sender\n for (const agentId of this.agents.keys()) {\n if (agentId !== message.from) {\n this.deliverMessage(agentId, message);\n }\n }\n } else {\n // Route to specific agents\n for (const agentId of message.to as string[]) {\n this.deliverMessage(agentId, message);\n }\n }\n\n // Apply coordination rules\n this.applyCoordinationRules(message);\n }\n\n private deliverMessage(agentId: string, message: CoordinationMessage): void {\n const agent = this.agents.get(agentId);\n if (agent) {\n // Store message for agent (in real implementation, would integrate with agent's message handler)\n logger.debug(`Message delivered to ${agent.role}: ${message.type}`);\n }\n }\n\n private findSuitableHelpers(helpType: string): string[] {\n const helpers: string[] = [];\n\n for (const agent of this.agents.values()) {\n if (this.canProvideHelp(agent, helpType)) {\n helpers.push(agent.id);\n }\n }\n\n return helpers;\n }\n\n private canProvideHelp(agent: Agent, helpType: string): boolean {\n // Check if agent has relevant capabilities\n const capabilities = agent.capabilities || [];\n\n switch (helpType) {\n case 'code_review':\n return (\n capabilities.includes('code_review') || agent.role === 'reviewer'\n );\n case 'debugging':\n return capabilities.includes('debugging') || agent.role === 'developer';\n case 'testing':\n return capabilities.includes('testing') || agent.role === 'tester';\n case 'optimization':\n return (\n capabilities.includes('optimization') || agent.role === 'optimizer'\n );\n default:\n return false;\n }\n }\n\n private async resolveByVoting(conflict: ConflictResolution): Promise<any> {\n // Simulate voting resolution\n const votes = new Map();\n for (const agentId of conflict.involvedAgents) {\n const agent = this.agents.get(agentId);\n if (agent) {\n // In real implementation, would request vote from agent\n votes.set(agentId, Math.random() > 0.5 ? 'option_a' : 'option_b');\n }\n }\n\n // Count votes\n const results = new Map();\n for (const vote of votes.values()) {\n results.set(vote, (results.get(vote) || 0) + 1);\n }\n\n // Return winning option\n return Array.from(results.entries()).reduce((a, b) =>\n a[1] > b[1] ? a : b\n )[0];\n }\n\n private async resolveByExpertise(conflict: ConflictResolution): Promise<any> {\n // Find most expert agent for the conflict type\n let bestAgent = null;\n let bestExpertise = 0;\n\n for (const agentId of conflict.involvedAgents) {\n const agent = this.agents.get(agentId);\n if (agent) {\n const expertise = this.calculateExpertise(agent, conflict.type);\n if (expertise > bestExpertise) {\n bestExpertise = expertise;\n bestAgent = agent;\n }\n }\n }\n\n return {\n resolutionSource: bestAgent?.id,\n method: 'expertise_based',\n expertiseScore: bestExpertise,\n };\n }\n\n private async resolveRandomly(conflict: ConflictResolution): Promise<any> {\n const options = ['option_a', 'option_b', 'compromise'];\n return options[Math.floor(Math.random() * options.length)];\n }\n\n private async resolveByManagerOverride(\n conflict: ConflictResolution\n ): Promise<any> {\n // Find coordinator or architect agent\n const manager = Array.from(this.agents.values()).find(\n (agent) => agent.role === 'coordinator' || agent.role === 'architect'\n );\n\n return {\n resolutionSource: manager?.id || 'system',\n method: 'manager_override',\n };\n }\n\n private calculateExpertise(agent: Agent, conflictType: string): number {\n // Calculate agent expertise for specific conflict type\n const capabilities = agent.capabilities || [];\n const performance = agent.performance;\n\n let expertise = 0;\n\n // Base expertise from capabilities\n switch (conflictType) {\n case 'resource':\n expertise += capabilities.includes('resource_optimization') ? 0.5 : 0;\n break;\n case 'task_overlap':\n expertise += capabilities.includes('coordination') ? 0.5 : 0;\n break;\n }\n\n // Add performance-based expertise\n if (performance) {\n expertise += performance.successRate * 0.3;\n expertise += Math.min(performance.tasksCompleted / 10, 0.2);\n }\n\n return Math.min(expertise, 1.0);\n }\n\n private buildDependencyGraph(tasks: SwarmTask[]): Map<string, string[]> {\n const graph = new Map<string, string[]>();\n\n for (const task of tasks) {\n const deps = this.dependencies.get(task.id);\n graph.set(task.id, deps?.dependsOn || []);\n }\n\n return graph;\n }\n\n private topologicalSort(\n graph: Map<string, string[]>,\n tasks: SwarmTask[]\n ): SwarmTask[] {\n const result: SwarmTask[] = [];\n const visited = new Set<string>();\n const visiting = new Set<string>();\n\n const visit = (taskId: string) => {\n if (visited.has(taskId)) return;\n if (visiting.has(taskId)) {\n logger.warn(`Circular dependency detected involving task: ${taskId}`);\n return;\n }\n\n visiting.add(taskId);\n const deps = graph.get(taskId) || [];\n\n for (const dep of deps) {\n visit(dep);\n }\n\n visiting.delete(taskId);\n visited.add(taskId);\n\n const task = tasks.find((t) => t.id === taskId);\n if (task) result.push(task);\n };\n\n for (const task of tasks) {\n visit(task.id);\n }\n\n return result;\n }\n\n private updateCriticalPath(): void {\n // Identify critical path through dependencies\n // Implementation would use network analysis algorithms\n logger.debug('Critical path updated');\n }\n\n private identifyBottlenecks(): string[] {\n const bottlenecks: string[] = [];\n\n // Find tasks with many dependencies\n for (const [taskId, dep] of this.dependencies) {\n if (dep.blockingFor.length > 2) {\n bottlenecks.push(taskId);\n }\n }\n\n return bottlenecks;\n }\n\n private calculateAgentWorkload(agent: Agent): number {\n // Calculate workload based on current tasks, message frequency, etc.\n let workload = 0;\n\n if (agent.status === 'active') workload += 0.5;\n if (agent.currentTask) workload += 0.3;\n\n // Add message handling workload\n const recentMessages = this.messageQueue.filter(\n (m) =>\n (m.from === agent.id ||\n (Array.isArray(m.to) && m.to.includes(agent.id))) &&\n Date.now() - m.timestamp < 300000 // 5 minutes\n );\n\n workload += Math.min(recentMessages.length * 0.05, 0.2);\n\n return Math.min(workload, 1.0);\n }\n\n private checkAgentCompatibility(\n agent1Id: string,\n agent2Id: string\n ): {\n score: number;\n bestTaskType: string;\n reason: string;\n } {\n const agent1 = this.agents.get(agent1Id);\n const agent2 = this.agents.get(agent2Id);\n\n if (!agent1 || !agent2) {\n return { score: 0, bestTaskType: '', reason: 'Agent not found' };\n }\n\n // Check capability overlap\n const caps1 = new Set(agent1.capabilities || []);\n const caps2 = new Set(agent2.capabilities || []);\n const overlap = new Set([...caps1].filter((x) => caps2.has(x)));\n\n const score = overlap.size / Math.max(caps1.size, caps2.size, 1);\n\n return {\n score,\n bestTaskType: Array.from(overlap)[0] || 'general',\n reason: `Capability overlap: ${overlap.size} common skills`,\n };\n }\n\n private applyCoordinationRules(message: CoordinationMessage): void {\n for (const rule of this.coordinationRules) {\n if (rule.condition(message)) {\n rule.action(message, this);\n }\n }\n }\n\n private setupDefaultRules(): void {\n this.coordinationRules = [\n {\n id: 'help_request_timeout',\n condition: (msg) => msg.type === 'help_request',\n action: (msg, system) => {\n // Auto-escalate help requests after timeout\n setTimeout(() => {\n system.broadcastMessage({\n from: 'system',\n to: 'broadcast',\n type: 'status_update',\n content: {\n type: 'help_request_timeout',\n originalRequest: msg.id,\n },\n priority: 'urgent',\n });\n }, 300000); // 5 minutes\n },\n },\n ];\n }\n\n private generateId(): string {\n return `coord_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n}\n\ninterface CoordinationRule {\n id: string;\n condition: (message: CoordinationMessage) => boolean;\n action: (\n message: CoordinationMessage,\n system: EnhancedCoordinationSystem\n ) => void;\n}\n\nexport default EnhancedCoordinationSystem;\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/integrations/ralph/index.ts"],
4
- "sourcesContent": ["/**\n * Ralph Wiggum Loop - StackMemory Integration\n * Core module for bridging Ralph's iteration-based loops with StackMemory's persistence\n */\n\nexport { RalphStackMemoryBridge } from './bridge/ralph-stackmemory-bridge.js';\nexport { ContextBudgetManager } from './context/context-budget-manager.js';\nexport { StateReconciler } from './state/state-reconciler.js';\nexport { IterationLifecycle } from './lifecycle/iteration-lifecycle.js';\nexport { PerformanceOptimizer } from './performance/performance-optimizer.js';\nexport * from './types.js';"],
5
- "mappings": ";;;;AAKA,SAAS,8BAA8B;AACvC,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,SAAS,0BAA0B;AACnC,SAAS,4BAA4B;AACrC,cAAc;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/integrations/ralph/learning/pattern-learner.ts"],
4
- "sourcesContent": ["/**\n * Pattern Learning Engine for Ralph Loops\n * Analyzes completed loops to extract reusable patterns and strategies\n */\n\nimport { logger } from '../../../core/monitoring/logger.js';\nimport { FrameManager } from '../../../core/context/index.js';\nimport { sharedContextLayer } from '../../../core/context/shared-context-layer.js';\nimport { sessionManager } from '../../../core/session/index.js';\nimport {\n LearnedPattern,\n LoopAnalysis,\n PatternType,\n SuccessMetrics,\n FailureAnalysis,\n RalphLoopState\n} from '../types.js';\n\nexport interface PatternLearningConfig {\n minLoopCountForPattern: number;\n confidenceThreshold: number;\n maxPatternsPerType: number;\n analysisDepth: 'shallow' | 'deep' | 'comprehensive';\n}\n\nexport class PatternLearner {\n private frameManager?: FrameManager;\n private config: PatternLearningConfig;\n\n constructor(config?: Partial<PatternLearningConfig>) {\n this.config = {\n minLoopCountForPattern: 3,\n confidenceThreshold: 0.7,\n maxPatternsPerType: 10,\n analysisDepth: 'deep',\n ...config\n };\n\n logger.info('Pattern learner initialized', this.config);\n }\n\n async initialize(): Promise<void> {\n try {\n await sessionManager.initialize();\n await sharedContextLayer.initialize();\n\n const session = await sessionManager.getOrCreateSession({});\n if (session.database) {\n this.frameManager = new FrameManager(session.database, session.projectId);\n }\n\n logger.info('Pattern learner initialized successfully');\n } catch (error: unknown) {\n logger.error('Failed to initialize pattern learner', error as Error);\n throw error;\n }\n }\n\n /**\n * Learn patterns from all completed Ralph loops\n */\n async learnFromCompletedLoops(): Promise<LearnedPattern[]> {\n logger.info('Starting pattern learning from completed loops');\n\n try {\n const completedLoops = await this.getCompletedRalphLoops();\n logger.info(`Found ${completedLoops.length} completed loops for analysis`);\n\n if (completedLoops.length < this.config.minLoopCountForPattern) {\n logger.info('Not enough loops for pattern extraction');\n return [];\n }\n\n const patterns: LearnedPattern[] = [];\n\n // Learn success patterns\n const successPatterns = await this.extractSuccessPatterns(completedLoops);\n patterns.push(...successPatterns);\n\n // Learn failure patterns (to avoid)\n const failurePatterns = await this.extractFailurePatterns(completedLoops);\n patterns.push(...failurePatterns);\n\n // Learn iteration patterns\n const iterationPatterns = await this.extractIterationPatterns(completedLoops);\n patterns.push(...iterationPatterns);\n\n // Learn task-specific patterns\n const taskPatterns = await this.extractTaskPatterns(completedLoops);\n patterns.push(...taskPatterns);\n\n // Save patterns to shared context\n await this.saveLearnedPatterns(patterns);\n\n logger.info(`Learned ${patterns.length} patterns from ${completedLoops.length} loops`);\n return patterns;\n\n } catch (error: unknown) {\n logger.error('Failed to learn patterns', error as Error);\n throw error;\n }\n }\n\n /**\n * Learn patterns specific to a task type\n */\n async learnForTaskType(taskType: string): Promise<LearnedPattern[]> {\n logger.info(`Learning patterns for task type: ${taskType}`);\n\n const completedLoops = await this.getCompletedRalphLoops();\n const relevantLoops = completedLoops.filter(loop => \n this.classifyTaskType(loop.task) === taskType\n );\n\n if (relevantLoops.length < this.config.minLoopCountForPattern) {\n return [];\n }\n\n return this.extractSpecializedPatterns(relevantLoops, taskType);\n }\n\n /**\n * Get all completed Ralph loops from StackMemory\n */\n private async getCompletedRalphLoops(): Promise<LoopAnalysis[]> {\n if (!this.frameManager) {\n throw new Error('Frame manager not initialized');\n }\n\n try {\n // Get all Ralph loop frames\n const ralphFrames = await this.frameManager.searchFrames({\n type: 'task',\n namePattern: 'ralph-*',\n state: 'closed'\n });\n\n const analyses: LoopAnalysis[] = [];\n\n for (const frame of ralphFrames) {\n try {\n const analysis = await this.analyzeCompletedLoop(frame);\n if (analysis) {\n analyses.push(analysis);\n }\n } catch (error: unknown) {\n logger.warn(`Failed to analyze loop ${frame.frame_id}`, error as Error);\n }\n }\n\n return analyses;\n\n } catch (error: unknown) {\n logger.error('Failed to get completed loops', error as Error);\n return [];\n }\n }\n\n /**\n * Analyze a completed loop for patterns\n */\n private async analyzeCompletedLoop(ralphFrame: any): Promise<LoopAnalysis | null> {\n if (!this.frameManager) return null;\n\n try {\n // Get loop state from frame inputs\n const loopState = ralphFrame.inputs as RalphLoopState;\n \n // Get all iteration frames for this loop\n const iterationFrames = await this.frameManager.searchFrames({\n type: 'subtask',\n namePattern: 'iteration-*',\n parentId: ralphFrame.frame_id\n });\n\n // Calculate success metrics\n const successMetrics = this.calculateSuccessMetrics(iterationFrames);\n \n // Analyze iteration patterns\n const iterationAnalysis = this.analyzeIterations(iterationFrames);\n \n // Determine outcome\n const outcome = this.determineLoopOutcome(ralphFrame, iterationFrames);\n\n return {\n loopId: loopState.loopId,\n task: loopState.task,\n criteria: loopState.criteria,\n taskType: this.classifyTaskType(loopState.task),\n iterationCount: iterationFrames.length,\n outcome,\n successMetrics,\n iterationAnalysis,\n duration: ralphFrame.updated_at - ralphFrame.created_at,\n startTime: ralphFrame.created_at,\n endTime: ralphFrame.updated_at\n };\n\n } catch (error: unknown) {\n logger.error('Failed to analyze loop', error as Error);\n return null;\n }\n }\n\n /**\n * Extract patterns from successful loops\n */\n private async extractSuccessPatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const successfulLoops = loops.filter(l => l.outcome === 'success');\n \n if (successfulLoops.length < this.config.minLoopCountForPattern) {\n return [];\n }\n\n const patterns: LearnedPattern[] = [];\n\n // Pattern: Optimal iteration count\n const avgIterations = successfulLoops.reduce((sum, l) => sum + l.iterationCount, 0) / successfulLoops.length;\n patterns.push({\n id: 'optimal-iterations',\n type: 'iteration_strategy',\n pattern: `Successful tasks typically complete in ${Math.round(avgIterations)} iterations`,\n confidence: this.calculateConfidence(successfulLoops.length),\n frequency: successfulLoops.length,\n strategy: `Target ${Math.round(avgIterations)} iterations for similar tasks`,\n examples: successfulLoops.slice(0, 3).map(l => l.task),\n metadata: {\n avgIterations,\n minIterations: Math.min(...successfulLoops.map(l => l.iterationCount)),\n maxIterations: Math.max(...successfulLoops.map(l => l.iterationCount))\n }\n });\n\n // Pattern: Task completion criteria\n const criteriaPatterns = this.extractCriteriaPatterns(successfulLoops);\n patterns.push(...criteriaPatterns);\n\n // Pattern: Common success factors\n const successFactors = this.extractSuccessFactors(successfulLoops);\n patterns.push(...successFactors);\n\n return patterns.filter(p => p.confidence >= this.config.confidenceThreshold);\n }\n\n /**\n * Extract patterns from failed loops to avoid\n */\n private async extractFailurePatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const failedLoops = loops.filter(l => l.outcome === 'failure');\n \n if (failedLoops.length < this.config.minLoopCountForPattern) {\n return [];\n }\n\n const patterns: LearnedPattern[] = [];\n\n // Pattern: Common failure points\n const commonFailures = this.analyzeFailurePoints(failedLoops);\n for (const failure of commonFailures) {\n patterns.push({\n id: `avoid-${failure.type}`,\n type: 'failure_avoidance',\n pattern: `Avoid: ${failure.pattern}`,\n confidence: this.calculateConfidence(failure.frequency),\n frequency: failure.frequency,\n strategy: failure.avoidanceStrategy,\n examples: failure.examples,\n metadata: { failureType: failure.type }\n });\n }\n\n return patterns.filter(p => p.confidence >= this.config.confidenceThreshold);\n }\n\n /**\n * Extract iteration-specific patterns\n */\n private async extractIterationPatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const patterns: LearnedPattern[] = [];\n\n // Analyze iteration sequences\n const iterationSequences = this.analyzeIterationSequences(loops);\n \n for (const sequence of iterationSequences) {\n if (sequence.frequency >= this.config.minLoopCountForPattern) {\n patterns.push({\n id: `iteration-sequence-${sequence.id}`,\n type: 'iteration_sequence',\n pattern: sequence.description,\n confidence: this.calculateConfidence(sequence.frequency),\n frequency: sequence.frequency,\n strategy: sequence.strategy,\n examples: sequence.examples,\n metadata: { sequenceType: sequence.type }\n });\n }\n }\n\n return patterns;\n }\n\n /**\n * Extract task-specific patterns\n */\n private async extractTaskPatterns(loops: LoopAnalysis[]): Promise<LearnedPattern[]> {\n const taskGroups = this.groupByTaskType(loops);\n const patterns: LearnedPattern[] = [];\n\n for (const [taskType, taskLoops] of Object.entries(taskGroups)) {\n if (taskLoops.length >= this.config.minLoopCountForPattern) {\n const taskSpecificPatterns = await this.extractSpecializedPatterns(taskLoops, taskType);\n patterns.push(...taskSpecificPatterns);\n }\n }\n\n return patterns;\n }\n\n /**\n * Extract specialized patterns for specific task types\n */\n private async extractSpecializedPatterns(loops: LoopAnalysis[], taskType: string): Promise<LearnedPattern[]> {\n const patterns: LearnedPattern[] = [];\n const successful = loops.filter(l => l.outcome === 'success');\n\n if (successful.length === 0) return patterns;\n\n // Task-specific success pattern\n patterns.push({\n id: `${taskType}-success-pattern`,\n type: 'task_specific',\n pattern: `${taskType} tasks: ${this.summarizeSuccessPattern(successful)}`,\n confidence: this.calculateConfidence(successful.length),\n frequency: successful.length,\n strategy: this.generateTaskStrategy(successful),\n examples: successful.slice(0, 2).map(l => l.task),\n metadata: { taskType, totalAttempts: loops.length }\n });\n\n return patterns;\n }\n\n /**\n * Calculate success metrics for iterations\n */\n private calculateSuccessMetrics(iterations: any[]): SuccessMetrics {\n const total = iterations.length;\n const successful = iterations.filter(i => i.outputs?.success).length;\n \n return {\n iterationCount: total,\n successRate: total > 0 ? successful / total : 0,\n averageProgress: this.calculateAverageProgress(iterations),\n timeToCompletion: total > 0 ? iterations[total - 1].updated_at - iterations[0].created_at : 0\n };\n }\n\n /**\n * Classify task type based on description\n */\n private classifyTaskType(task: string): string {\n const taskLower = task.toLowerCase();\n \n if (taskLower.includes('test') || taskLower.includes('unit')) return 'testing';\n if (taskLower.includes('fix') || taskLower.includes('bug')) return 'bugfix';\n if (taskLower.includes('refactor')) return 'refactoring';\n if (taskLower.includes('add') || taskLower.includes('implement')) return 'feature';\n if (taskLower.includes('document')) return 'documentation';\n if (taskLower.includes('optimize') || taskLower.includes('performance')) return 'optimization';\n \n return 'general';\n }\n\n /**\n * Determine loop outcome\n */\n private determineLoopOutcome(ralphFrame: any, iterations: any[]): 'success' | 'failure' | 'unknown' {\n if (ralphFrame.digest_json?.status === 'completed') return 'success';\n if (iterations.length === 0) return 'unknown';\n \n const lastIteration = iterations[iterations.length - 1];\n if (lastIteration.outputs?.success) return 'success';\n \n return 'failure';\n }\n\n /**\n * Calculate confidence based on frequency\n */\n private calculateConfidence(frequency: number): number {\n // Simple confidence calculation based on sample size\n return Math.min(0.95, Math.log(frequency + 1) / Math.log(10));\n }\n\n /**\n * Save learned patterns to shared context\n */\n private async saveLearnedPatterns(patterns: LearnedPattern[]): Promise<void> {\n try {\n const context = await sharedContextLayer.getSharedContext();\n if (!context) return;\n\n // Convert to shared context format\n const contextPatterns = patterns.map(p => ({\n pattern: p.pattern,\n type: this.mapPatternType(p.type),\n frequency: p.frequency,\n lastSeen: Date.now(),\n resolution: p.strategy\n }));\n\n // Add to global patterns\n context.globalPatterns.push(...contextPatterns);\n\n // Keep only the most relevant patterns\n context.globalPatterns.sort((a, b) => b.frequency - a.frequency);\n context.globalPatterns = context.globalPatterns.slice(0, 100);\n\n await sharedContextLayer.updateSharedContext(context);\n \n logger.info(`Saved ${patterns.length} patterns to shared context`);\n\n } catch (error: unknown) {\n logger.error('Failed to save patterns', error as Error);\n }\n }\n\n /**\n * Map pattern types to shared context types\n */\n private mapPatternType(patternType: PatternType): 'error' | 'success' | 'decision' | 'learning' {\n switch (patternType) {\n case 'failure_avoidance': return 'error';\n case 'success_strategy': return 'success';\n case 'task_specific': return 'learning';\n default: return 'learning';\n }\n }\n\n // Additional helper methods for pattern analysis\n private analyzeIterations(iterations: any[]): any {\n return {\n avgDuration: iterations.length > 0 ? \n iterations.reduce((sum, i) => sum + (i.updated_at - i.created_at), 0) / iterations.length : 0,\n progressPattern: this.extractProgressPattern(iterations),\n commonIssues: this.extractCommonIssues(iterations)\n };\n }\n\n private extractProgressPattern(iterations: any[]): string {\n // Analyze how progress typically unfolds\n const progressSteps = iterations.map((_, i) => {\n const progress = i / iterations.length;\n return Math.round(progress * 100);\n });\n \n return progressSteps.join(' \u2192 ') + '%';\n }\n\n private extractCommonIssues(iterations: any[]): string[] {\n // Extract common error patterns from iteration outputs\n return iterations\n .filter(i => i.outputs?.errors?.length > 0)\n .flatMap(i => i.outputs.errors)\n .slice(0, 3);\n }\n\n private extractCriteriaPatterns(loops: LoopAnalysis[]): LearnedPattern[] {\n // Analyze common successful completion criteria\n const criteriaWords = loops.flatMap(l => l.criteria.toLowerCase().split(/\\s+/));\n const wordCounts = criteriaWords.reduce((acc, word) => {\n acc[word] = (acc[word] || 0) + 1;\n return acc;\n }, {} as Record<string, number>);\n\n const commonCriteria = Object.entries(wordCounts)\n .filter(([_, count]) => count >= this.config.minLoopCountForPattern)\n .sort((a, b) => b[1] - a[1])\n .slice(0, 3);\n\n return commonCriteria.map(([word, count]) => ({\n id: `criteria-${word}`,\n type: 'success_strategy' as PatternType,\n pattern: `Successful tasks often include \"${word}\" in completion criteria`,\n confidence: this.calculateConfidence(count),\n frequency: count,\n strategy: `Consider including \"${word}\" in task completion criteria`,\n examples: loops.filter(l => l.criteria.toLowerCase().includes(word)).slice(0, 2).map(l => l.task),\n metadata: { criteriaWord: word }\n }));\n }\n\n private extractSuccessFactors(loops: LoopAnalysis[]): LearnedPattern[] {\n // Placeholder for success factor analysis\n return [];\n }\n\n private analyzeFailurePoints(loops: LoopAnalysis[]): FailureAnalysis[] {\n // Placeholder for failure analysis\n return [];\n }\n\n private analyzeIterationSequences(loops: LoopAnalysis[]): any[] {\n // Placeholder for iteration sequence analysis\n return [];\n }\n\n private groupByTaskType(loops: LoopAnalysis[]): Record<string, LoopAnalysis[]> {\n return loops.reduce((acc, loop) => {\n const type = loop.taskType;\n if (!acc[type]) acc[type] = [];\n acc[type].push(loop);\n return acc;\n }, {} as Record<string, LoopAnalysis[]>);\n }\n\n private summarizeSuccessPattern(loops: LoopAnalysis[]): string {\n const avgIterations = loops.reduce((sum, l) => sum + l.iterationCount, 0) / loops.length;\n return `typically complete in ${Math.round(avgIterations)} iterations with ${Math.round(loops[0]?.successMetrics?.successRate * 100 || 0)}% success rate`;\n }\n\n private generateTaskStrategy(loops: LoopAnalysis[]): string {\n const avgIterations = loops.reduce((sum, l) => sum + l.iterationCount, 0) / loops.length;\n return `Plan for approximately ${Math.round(avgIterations)} iterations and focus on iterative improvement`;\n }\n\n private calculateAverageProgress(iterations: any[]): number {\n // Simple progress calculation\n return iterations.length > 0 ? iterations.length / 10 : 0; // Assume 10 iterations is 100% progress\n }\n}\n\n// Export default instance\nexport const patternLearner = new PatternLearner();"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../../src/integrations/ralph/lifecycle/iteration-lifecycle.ts"],
4
- "sourcesContent": ["/**\n * Iteration Lifecycle Manager for Ralph-StackMemory Integration\n * Provides lifecycle hooks and event management for clean integration points\n */\n\nimport { EventEmitter } from 'events';\nimport { execSync } from 'child_process';\nimport { logger } from '../../../core/monitoring/logger.js';\nimport {\n RalphLoopState,\n RalphIteration,\n IterationEvent,\n IterationEventType,\n RalphStackMemoryConfig,\n Checkpoint,\n IterationContext,\n} from '../types.js';\n\nexport interface LifecycleHooks {\n preIteration?: (context: IterationContext) => Promise<IterationContext>;\n postIteration?: (iteration: RalphIteration) => Promise<void>;\n onStateChange?: (oldState: RalphLoopState, newState: RalphLoopState) => Promise<void>;\n onError?: (error: Error, context: any) => Promise<void>;\n onComplete?: (state: RalphLoopState) => Promise<void>;\n onCheckpoint?: (checkpoint: Checkpoint) => Promise<void>;\n}\n\nexport class IterationLifecycle extends EventEmitter {\n private config: RalphStackMemoryConfig['lifecycle'];\n private hooks: LifecycleHooks = {};\n private checkpoints: Checkpoint[] = [];\n private currentIteration?: RalphIteration;\n private iterationHistory: IterationEvent[] = [];\n private activeTimers: Map<string, NodeJS.Timeout> = new Map();\n\n constructor(\n config?: Partial<RalphStackMemoryConfig['lifecycle']>,\n hooks?: LifecycleHooks\n ) {\n super();\n \n this.config = {\n hooks: {\n preIteration: config?.hooks?.preIteration ?? true,\n postIteration: config?.hooks?.postIteration ?? true,\n onStateChange: config?.hooks?.onStateChange ?? true,\n onError: config?.hooks?.onError ?? true,\n onComplete: config?.hooks?.onComplete ?? true,\n },\n checkpoints: {\n enabled: config?.checkpoints?.enabled ?? true,\n frequency: config?.checkpoints?.frequency || 5,\n retentionDays: config?.checkpoints?.retentionDays || 7,\n },\n };\n\n if (hooks) {\n this.registerHooks(hooks);\n }\n\n this.setupEventHandlers();\n }\n\n /**\n * Register lifecycle hooks\n */\n registerHooks(hooks: LifecycleHooks): void {\n this.hooks = { ...this.hooks, ...hooks };\n \n logger.debug('Lifecycle hooks registered', {\n registered: Object.keys(hooks),\n });\n }\n\n /**\n * Start iteration with lifecycle management\n */\n async startIteration(\n iterationNumber: number,\n context: IterationContext\n ): Promise<IterationContext> {\n logger.info('Starting iteration', { iteration: iterationNumber });\n\n // Emit start event\n this.emitEvent({\n type: 'iteration.started',\n timestamp: Date.now(),\n iteration: iterationNumber,\n data: { context },\n });\n\n // Execute pre-iteration hook if configured\n let processedContext = context;\n if (this.config.hooks.preIteration && this.hooks.preIteration) {\n try {\n processedContext = await this.hooks.preIteration(context);\n logger.debug('Pre-iteration hook executed', {\n original: context.tokenCount,\n processed: processedContext.tokenCount,\n });\n } catch (error: any) {\n await this.handleError(error, { phase: 'preIteration', context });\n }\n }\n\n // Start iteration timer for metrics\n this.startTimer(`iteration-${iterationNumber}`);\n\n return processedContext;\n }\n\n /**\n * Complete iteration with lifecycle management\n */\n async completeIteration(iteration: RalphIteration): Promise<void> {\n logger.info('Completing iteration', { iteration: iteration.number });\n\n this.currentIteration = iteration;\n\n // Stop iteration timer\n const duration = this.stopTimer(`iteration-${iteration.number}`);\n\n // Execute post-iteration hook if configured\n if (this.config.hooks.postIteration && this.hooks.postIteration) {\n try {\n await this.hooks.postIteration(iteration);\n logger.debug('Post-iteration hook executed');\n } catch (error: any) {\n await this.handleError(error, { phase: 'postIteration', iteration });\n }\n }\n\n // Create checkpoint if needed\n if (this.shouldCreateCheckpoint(iteration.number)) {\n await this.createCheckpoint(iteration);\n }\n\n // Emit completion event\n this.emitEvent({\n type: 'iteration.completed',\n timestamp: Date.now(),\n iteration: iteration.number,\n data: {\n iteration,\n duration,\n success: iteration.validation.testsPass,\n },\n });\n\n // Clean old checkpoints\n await this.cleanOldCheckpoints();\n }\n\n /**\n * Handle iteration failure\n */\n async failIteration(\n iterationNumber: number,\n error: Error,\n context?: any\n ): Promise<void> {\n logger.error('Iteration failed', {\n iteration: iterationNumber,\n error: error.message,\n });\n\n // Stop iteration timer\n this.stopTimer(`iteration-${iterationNumber}`);\n\n // Execute error hook if configured\n if (this.config.hooks.onError && this.hooks.onError) {\n try {\n await this.hooks.onError(error, context);\n } catch (hookError: any) {\n logger.error('Error hook failed', { error: hookError.message });\n }\n }\n\n // Emit failure event\n this.emitEvent({\n type: 'iteration.failed',\n timestamp: Date.now(),\n iteration: iterationNumber,\n data: {\n error: error.message,\n stack: error.stack,\n context,\n },\n });\n }\n\n /**\n * Handle state change\n */\n async handleStateChange(\n oldState: RalphLoopState,\n newState: RalphLoopState\n ): Promise<void> {\n logger.debug('State change detected', {\n old: oldState.status,\n new: newState.status,\n iteration: newState.iteration,\n });\n\n // Execute state change hook if configured\n if (this.config.hooks.onStateChange && this.hooks.onStateChange) {\n try {\n await this.hooks.onStateChange(oldState, newState);\n } catch (error: any) {\n await this.handleError(error, {\n phase: 'stateChange',\n oldState,\n newState,\n });\n }\n }\n\n // Emit state change event\n this.emitEvent({\n type: 'state.changed',\n timestamp: Date.now(),\n iteration: newState.iteration,\n data: {\n oldStatus: oldState.status,\n newStatus: newState.status,\n changes: this.detectStateChanges(oldState, newState),\n },\n });\n\n // Check for completion\n if (newState.status === 'completed' && oldState.status !== 'completed') {\n await this.handleCompletion(newState);\n }\n }\n\n /**\n * Handle loop completion\n */\n async handleCompletion(state: RalphLoopState): Promise<void> {\n logger.info('Loop completed', {\n iterations: state.iteration,\n duration: state.lastUpdateTime - state.startTime,\n });\n\n // Execute completion hook if configured\n if (this.config.hooks.onComplete && this.hooks.onComplete) {\n try {\n await this.hooks.onComplete(state);\n } catch (error: any) {\n await this.handleError(error, { phase: 'completion', state });\n }\n }\n\n // Create final checkpoint\n await this.createFinalCheckpoint(state);\n\n // Clean up timers\n this.cleanupTimers();\n }\n\n /**\n * Create checkpoint\n */\n async createCheckpoint(iteration: RalphIteration): Promise<Checkpoint> {\n const checkpoint: Checkpoint = {\n id: this.generateCheckpointId(),\n iteration: iteration.number,\n timestamp: Date.now(),\n state: await this.captureCurrentState(),\n gitCommit: await this.getCurrentGitCommit(),\n verified: false,\n };\n\n // Verify checkpoint\n checkpoint.verified = await this.verifyCheckpoint(checkpoint);\n\n this.checkpoints.push(checkpoint);\n\n logger.info('Checkpoint created', {\n id: checkpoint.id,\n iteration: checkpoint.iteration,\n verified: checkpoint.verified,\n });\n\n // Execute checkpoint hook if available\n if (this.hooks.onCheckpoint) {\n try {\n await this.hooks.onCheckpoint(checkpoint);\n } catch (error: any) {\n logger.error('Checkpoint hook failed', { error: error.message });\n }\n }\n\n // Emit checkpoint event\n this.emitEvent({\n type: 'checkpoint.created',\n timestamp: Date.now(),\n iteration: iteration.number,\n data: { checkpoint },\n });\n\n return checkpoint;\n }\n\n /**\n * Get checkpoints\n */\n getCheckpoints(): Checkpoint[] {\n return [...this.checkpoints];\n }\n\n /**\n * Get last checkpoint\n */\n getLastCheckpoint(): Checkpoint | undefined {\n return this.checkpoints[this.checkpoints.length - 1];\n }\n\n /**\n * Restore from checkpoint\n */\n async restoreFromCheckpoint(checkpointId: string): Promise<void> {\n const checkpoint = this.checkpoints.find(c => c.id === checkpointId);\n \n if (!checkpoint) {\n throw new Error(`Checkpoint not found: ${checkpointId}`);\n }\n\n logger.info('Restoring from checkpoint', {\n id: checkpoint.id,\n iteration: checkpoint.iteration,\n });\n\n // Restore git state\n if (checkpoint.gitCommit) {\n await this.restoreGitState(checkpoint.gitCommit);\n }\n\n // Restore Ralph state\n await this.restoreRalphState(checkpoint.state);\n\n logger.info('Checkpoint restored successfully');\n }\n\n /**\n * Get iteration events\n */\n getEvents(filter?: {\n type?: IterationEventType;\n iteration?: number;\n since?: number;\n }): IterationEvent[] {\n let events = [...this.iterationHistory];\n\n if (filter?.type) {\n events = events.filter(e => e.type === filter.type);\n }\n\n if (filter?.iteration !== undefined) {\n events = events.filter(e => e.iteration === filter.iteration);\n }\n\n if (filter?.since) {\n events = events.filter(e => e.timestamp >= filter.since);\n }\n\n return events;\n }\n\n /**\n * Clean up resources\n */\n cleanup(): void {\n this.cleanupTimers();\n this.removeAllListeners();\n this.iterationHistory = [];\n this.checkpoints = [];\n }\n\n /**\n * Setup internal event handlers\n */\n private setupEventHandlers(): void {\n // Log all events in debug mode\n this.on('*', (event: IterationEvent) => {\n logger.debug('Lifecycle event', {\n type: event.type,\n iteration: event.iteration,\n });\n });\n }\n\n /**\n * Emit and track event\n */\n private emitEvent(event: IterationEvent): void {\n this.iterationHistory.push(event);\n this.emit(event.type, event);\n this.emit('*', event); // Wildcard for all events\n }\n\n /**\n * Should create checkpoint based on frequency\n */\n private shouldCreateCheckpoint(iteration: number): boolean {\n if (!this.config.checkpoints.enabled) {\n return false;\n }\n\n return iteration % this.config.checkpoints.frequency === 0;\n }\n\n /**\n * Generate checkpoint ID\n */\n private generateCheckpointId(): string {\n return `chk-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n }\n\n /**\n * Capture current state\n */\n private async captureCurrentState(): Promise<RalphLoopState> {\n // This would capture the full Ralph loop state\n // Placeholder implementation\n return {\n loopId: 'current',\n task: '',\n criteria: '',\n iteration: this.currentIteration?.number || 0,\n status: 'running',\n startTime: Date.now(),\n lastUpdateTime: Date.now(),\n };\n }\n\n /**\n * Get current git commit\n */\n private async getCurrentGitCommit(): Promise<string> {\n try {\n // execSync already imported at top\n return execSync('git rev-parse HEAD', { encoding: 'utf8' }).trim();\n } catch {\n return '';\n }\n }\n\n /**\n * Verify checkpoint integrity\n */\n private async verifyCheckpoint(checkpoint: Checkpoint): Promise<boolean> {\n try {\n // Verify state consistency\n if (!checkpoint.state.loopId || !checkpoint.state.task) {\n return false;\n }\n\n // Verify git commit exists\n if (checkpoint.gitCommit) {\n // execSync already imported at top\n execSync(`git rev-parse ${checkpoint.gitCommit}`, { encoding: 'utf8' });\n }\n\n return true;\n } catch {\n return false;\n }\n }\n\n /**\n * Clean old checkpoints based on retention\n */\n private async cleanOldCheckpoints(): Promise<void> {\n const cutoff = Date.now() - this.config.checkpoints.retentionDays * 24 * 60 * 60 * 1000;\n \n const before = this.checkpoints.length;\n this.checkpoints = this.checkpoints.filter(c => c.timestamp >= cutoff);\n const removed = before - this.checkpoints.length;\n\n if (removed > 0) {\n logger.debug('Cleaned old checkpoints', { removed });\n }\n }\n\n /**\n * Create final checkpoint\n */\n private async createFinalCheckpoint(state: RalphLoopState): Promise<void> {\n const checkpoint: Checkpoint = {\n id: `final-${this.generateCheckpointId()}`,\n iteration: state.iteration,\n timestamp: Date.now(),\n state,\n gitCommit: await this.getCurrentGitCommit(),\n verified: true,\n };\n\n this.checkpoints.push(checkpoint);\n \n logger.info('Final checkpoint created', {\n id: checkpoint.id,\n iterations: state.iteration,\n });\n }\n\n /**\n * Restore git state\n */\n private async restoreGitState(commit: string): Promise<void> {\n // Stash any uncommitted changes\n execSync('git stash', { encoding: 'utf8' });\n \n // Checkout the commit\n execSync(`git checkout ${commit}`, { encoding: 'utf8' });\n }\n\n /**\n * Restore Ralph state\n */\n private async restoreRalphState(state: RalphLoopState): Promise<void> {\n // This would restore the Ralph loop state files\n // Placeholder implementation\n logger.debug('Ralph state restored', { iteration: state.iteration });\n }\n\n /**\n * Detect state changes\n */\n private detectStateChanges(\n oldState: RalphLoopState,\n newState: RalphLoopState\n ): string[] {\n const changes: string[] = [];\n\n for (const key of Object.keys(newState) as (keyof RalphLoopState)[]) {\n if (JSON.stringify(oldState[key]) !== JSON.stringify(newState[key])) {\n changes.push(key);\n }\n }\n\n return changes;\n }\n\n /**\n * Handle errors\n */\n private async handleError(error: Error, context: any): Promise<void> {\n logger.error('Lifecycle error', {\n error: error.message,\n context,\n });\n\n if (this.config.hooks.onError && this.hooks.onError) {\n try {\n await this.hooks.onError(error, context);\n } catch (hookError: any) {\n logger.error('Error hook failed', { error: hookError.message });\n }\n }\n }\n\n /**\n * Start timer for metrics\n */\n private startTimer(name: string): void {\n const start = Date.now();\n this.activeTimers.set(name, setTimeout(() => {\n this.activeTimers.delete(name);\n }, 0) as any);\n (this.activeTimers.get(name) as any).startTime = start;\n }\n\n /**\n * Stop timer and get duration\n */\n private stopTimer(name: string): number {\n const timer = this.activeTimers.get(name);\n if (!timer) return 0;\n\n const duration = Date.now() - (timer as any).startTime;\n clearTimeout(timer);\n this.activeTimers.delete(name);\n\n return duration;\n }\n\n /**\n * Clean up all timers\n */\n private cleanupTimers(): void {\n for (const timer of this.activeTimers.values()) {\n clearTimeout(timer);\n }\n this.activeTimers.clear();\n }\n}"],
5
- "mappings": "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",
6
- "names": []
7
- }