@stackmemoryai/stackmemory 0.8.0 → 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 (793) hide show
  1. package/LICENSE +64 -0
  2. package/README.md +54 -4
  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 +69 -373
  10. package/dist/src/cli/codex-sm-danger.js +0 -1
  11. package/dist/src/cli/codex-sm.js +28 -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 +22 -7
  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 +1 -6
  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 +9 -76
  48. package/dist/src/cli/opencode-sm.js +28 -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 +1 -14
  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 +11 -2
  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 -4
  200. package/dist/src/hooks/linear-task-picker.js +0 -1
  201. package/dist/src/hooks/schemas.js +0 -118
  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 +33 -8
  296. package/scripts/smoke-init-db.sh +77 -0
  297. package/dist/scripts/benchmark-performance.js +0 -48
  298. package/dist/scripts/benchmark-performance.js.map +0 -7
  299. package/dist/scripts/check-redis.js +0 -42
  300. package/dist/scripts/check-redis.js.map +0 -7
  301. package/dist/scripts/initialize.js +0 -183
  302. package/dist/scripts/initialize.js.map +0 -7
  303. package/dist/scripts/list-linear-tasks.js +0 -124
  304. package/dist/scripts/list-linear-tasks.js.map +0 -7
  305. package/dist/scripts/measure-handoff-impact.js +0 -340
  306. package/dist/scripts/measure-handoff-impact.js.map +0 -7
  307. package/dist/scripts/query-chromadb.js +0 -160
  308. package/dist/scripts/query-chromadb.js.map +0 -7
  309. package/dist/scripts/show-linear-summary.js +0 -119
  310. package/dist/scripts/show-linear-summary.js.map +0 -7
  311. package/dist/scripts/simple-swarm-demo.js +0 -90
  312. package/dist/scripts/simple-swarm-demo.js.map +0 -7
  313. package/dist/scripts/status.js +0 -155
  314. package/dist/scripts/status.js.map +0 -7
  315. package/dist/scripts/test-chromadb-sync.js +0 -192
  316. package/dist/scripts/test-chromadb-sync.js.map +0 -7
  317. package/dist/scripts/test-ralph-iteration-fix.js +0 -86
  318. package/dist/scripts/test-ralph-iteration-fix.js.map +0 -7
  319. package/dist/scripts/test-ralph-iterations.js +0 -121
  320. package/dist/scripts/test-ralph-iterations.js.map +0 -7
  321. package/dist/scripts/test-redis-storage.js +0 -389
  322. package/dist/scripts/test-redis-storage.js.map +0 -7
  323. package/dist/scripts/test-simple-ralph-state-sync.js +0 -115
  324. package/dist/scripts/test-simple-ralph-state-sync.js.map +0 -7
  325. package/dist/scripts/test-swarm-fixes.js +0 -125
  326. package/dist/scripts/test-swarm-fixes.js.map +0 -7
  327. package/dist/scripts/test-swarm-tui.js +0 -23
  328. package/dist/scripts/test-swarm-tui.js.map +0 -7
  329. package/dist/scripts/test-tui-shortcuts.js +0 -52
  330. package/dist/scripts/test-tui-shortcuts.js.map +0 -7
  331. package/dist/scripts/validate-tui-shortcuts.js +0 -60
  332. package/dist/scripts/validate-tui-shortcuts.js.map +0 -7
  333. package/dist/src/agents/core/agent-task-manager.js.map +0 -7
  334. package/dist/src/agents/verifiers/base-verifier.js.map +0 -7
  335. package/dist/src/agents/verifiers/formatter-verifier.js.map +0 -7
  336. package/dist/src/agents/verifiers/llm-judge.js.map +0 -7
  337. package/dist/src/cli/auto-detect.js.map +0 -7
  338. package/dist/src/cli/claude-sm-danger.js.map +0 -7
  339. package/dist/src/cli/claude-sm.js.map +0 -7
  340. package/dist/src/cli/codex-sm-danger.js.map +0 -7
  341. package/dist/src/cli/codex-sm.js.map +0 -7
  342. package/dist/src/cli/commands/api.js.map +0 -7
  343. package/dist/src/cli/commands/auto-background.js.map +0 -7
  344. package/dist/src/cli/commands/cleanup-processes.js.map +0 -7
  345. package/dist/src/cli/commands/clear.js.map +0 -7
  346. package/dist/src/cli/commands/config.js.map +0 -7
  347. package/dist/src/cli/commands/context-rehydrate.js.map +0 -7
  348. package/dist/src/cli/commands/context.js.map +0 -7
  349. package/dist/src/cli/commands/daemon.js.map +0 -7
  350. package/dist/src/cli/commands/dashboard.js.map +0 -7
  351. package/dist/src/cli/commands/db.js.map +0 -7
  352. package/dist/src/cli/commands/decision.js.map +0 -7
  353. package/dist/src/cli/commands/discovery.js.map +0 -7
  354. package/dist/src/cli/commands/handoff.js.map +0 -7
  355. package/dist/src/cli/commands/hooks.js.map +0 -7
  356. package/dist/src/cli/commands/linear.js.map +0 -7
  357. package/dist/src/cli/commands/log.js.map +0 -7
  358. package/dist/src/cli/commands/login.js.map +0 -7
  359. package/dist/src/cli/commands/migrate.js.map +0 -7
  360. package/dist/src/cli/commands/model.js.map +0 -7
  361. package/dist/src/cli/commands/onboard.js.map +0 -7
  362. package/dist/src/cli/commands/ping.js.map +0 -7
  363. package/dist/src/cli/commands/projects.js.map +0 -7
  364. package/dist/src/cli/commands/ralph.js.map +0 -7
  365. package/dist/src/cli/commands/retrieval.js.map +0 -7
  366. package/dist/src/cli/commands/search.js.map +0 -7
  367. package/dist/src/cli/commands/service.js.map +0 -7
  368. package/dist/src/cli/commands/session.js.map +0 -7
  369. package/dist/src/cli/commands/settings.js +0 -306
  370. package/dist/src/cli/commands/settings.js.map +0 -7
  371. package/dist/src/cli/commands/setup.js.map +0 -7
  372. package/dist/src/cli/commands/shell.js.map +0 -7
  373. package/dist/src/cli/commands/signup.js.map +0 -7
  374. package/dist/src/cli/commands/skills.js.map +0 -7
  375. package/dist/src/cli/commands/sms-notify.js +0 -795
  376. package/dist/src/cli/commands/sms-notify.js.map +0 -7
  377. package/dist/src/cli/commands/storage-tier.js.map +0 -7
  378. package/dist/src/cli/commands/sweep.js.map +0 -7
  379. package/dist/src/cli/commands/tasks.js.map +0 -7
  380. package/dist/src/cli/commands/worktree.js.map +0 -7
  381. package/dist/src/cli/index.js.map +0 -7
  382. package/dist/src/cli/opencode-sm.js.map +0 -7
  383. package/dist/src/cli/utils/viewer.js.map +0 -7
  384. package/dist/src/core/config/config-manager.js.map +0 -7
  385. package/dist/src/core/config/feature-flags.js.map +0 -7
  386. package/dist/src/core/config/storage-config.js.map +0 -7
  387. package/dist/src/core/config/types.js.map +0 -7
  388. package/dist/src/core/context/auto-context.js.map +0 -7
  389. package/dist/src/core/context/dual-stack-manager.js.map +0 -7
  390. package/dist/src/core/context/enhanced-rehydration.js.map +0 -7
  391. package/dist/src/core/context/frame-database.js.map +0 -7
  392. package/dist/src/core/context/frame-digest.js.map +0 -7
  393. package/dist/src/core/context/frame-handoff-manager.js.map +0 -7
  394. package/dist/src/core/context/frame-lifecycle-hooks.js.map +0 -7
  395. package/dist/src/core/context/frame-recovery.js.map +0 -7
  396. package/dist/src/core/context/frame-stack.js.map +0 -7
  397. package/dist/src/core/context/frame-types.js.map +0 -7
  398. package/dist/src/core/context/index.js.map +0 -7
  399. package/dist/src/core/context/permission-manager.js.map +0 -7
  400. package/dist/src/core/context/recursive-context-manager.js.map +0 -7
  401. package/dist/src/core/context/refactored-frame-manager.js.map +0 -7
  402. package/dist/src/core/context/shared-context-layer.js.map +0 -7
  403. package/dist/src/core/context/stack-merge-resolver.js.map +0 -7
  404. package/dist/src/core/context/validation.js.map +0 -7
  405. package/dist/src/core/database/batch-operations.js.map +0 -7
  406. package/dist/src/core/database/connection-pool.js.map +0 -7
  407. package/dist/src/core/database/database-adapter.js.map +0 -7
  408. package/dist/src/core/database/embedding-provider-factory.js.map +0 -7
  409. package/dist/src/core/database/embedding-provider.js.map +0 -7
  410. package/dist/src/core/database/migration-manager.js.map +0 -7
  411. package/dist/src/core/database/ollama-embedding-provider.js.map +0 -7
  412. package/dist/src/core/database/openai-embedding-provider.js.map +0 -7
  413. package/dist/src/core/database/query-cache.js.map +0 -7
  414. package/dist/src/core/database/query-router.js.map +0 -7
  415. package/dist/src/core/database/sqlite-adapter.js.map +0 -7
  416. package/dist/src/core/database/transformers-embedding-provider.js.map +0 -7
  417. package/dist/src/core/digest/enhanced-hybrid-digest.js.map +0 -7
  418. package/dist/src/core/digest/frame-digest-integration.js.map +0 -7
  419. package/dist/src/core/digest/hybrid-digest-generator.js.map +0 -7
  420. package/dist/src/core/digest/index.js.map +0 -7
  421. package/dist/src/core/digest/types.js.map +0 -7
  422. package/dist/src/core/errors/error-utils.js.map +0 -7
  423. package/dist/src/core/errors/index.js.map +0 -7
  424. package/dist/src/core/errors/recovery.js.map +0 -7
  425. package/dist/src/core/execution/parallel-executor.js.map +0 -7
  426. package/dist/src/core/extensions/custom-tools.js.map +0 -7
  427. package/dist/src/core/extensions/index.js.map +0 -7
  428. package/dist/src/core/extensions/loader.js.map +0 -7
  429. package/dist/src/core/extensions/plugin-system.js.map +0 -7
  430. package/dist/src/core/extensions/provider-adapter.js.map +0 -7
  431. package/dist/src/core/extensions/sandbox-runtime.js.map +0 -7
  432. package/dist/src/core/extensions/types.js.map +0 -7
  433. package/dist/src/core/frame/workflow-templates.js.map +0 -7
  434. package/dist/src/core/merge/conflict-detector.js.map +0 -7
  435. package/dist/src/core/merge/index.js.map +0 -7
  436. package/dist/src/core/merge/resolution-engine.js.map +0 -7
  437. package/dist/src/core/merge/stack-diff.js.map +0 -7
  438. package/dist/src/core/merge/types.js.map +0 -7
  439. package/dist/src/core/merge/unified-merge-resolver.js.map +0 -7
  440. package/dist/src/core/models/fallback-monitor.js.map +0 -7
  441. package/dist/src/core/models/model-router.js.map +0 -7
  442. package/dist/src/core/monitoring/error-handler.js.map +0 -7
  443. package/dist/src/core/monitoring/logger.js.map +0 -7
  444. package/dist/src/core/monitoring/metrics.js.map +0 -7
  445. package/dist/src/core/monitoring/progress-tracker.js.map +0 -7
  446. package/dist/src/core/monitoring/session-monitor.js.map +0 -7
  447. package/dist/src/core/performance/context-cache.js.map +0 -7
  448. package/dist/src/core/performance/index.js.map +0 -7
  449. package/dist/src/core/performance/lazy-context-loader.js.map +0 -7
  450. package/dist/src/core/performance/monitor.js.map +0 -7
  451. package/dist/src/core/performance/optimized-frame-context.js.map +0 -7
  452. package/dist/src/core/performance/performance-benchmark.js.map +0 -7
  453. package/dist/src/core/performance/performance-profiler.js.map +0 -7
  454. package/dist/src/core/performance/streaming-jsonl-parser.js.map +0 -7
  455. package/dist/src/core/persistence/postgres-adapter.js.map +0 -7
  456. package/dist/src/core/projects/project-isolation.js.map +0 -7
  457. package/dist/src/core/projects/project-manager.js.map +0 -7
  458. package/dist/src/core/query/query-parser.js.map +0 -7
  459. package/dist/src/core/query/query-templates.js.map +0 -7
  460. package/dist/src/core/retrieval/context-retriever.js.map +0 -7
  461. package/dist/src/core/retrieval/index.js.map +0 -7
  462. package/dist/src/core/retrieval/llm-context-retrieval.js.map +0 -7
  463. package/dist/src/core/retrieval/llm-provider.js.map +0 -7
  464. package/dist/src/core/retrieval/privacy-filter.js.map +0 -7
  465. package/dist/src/core/retrieval/retrieval-audit.js.map +0 -7
  466. package/dist/src/core/retrieval/summary-generator.js.map +0 -7
  467. package/dist/src/core/retrieval/types.js.map +0 -7
  468. package/dist/src/core/retrieval/unified-context-assembler.js.map +0 -7
  469. package/dist/src/core/security/index.js.map +0 -7
  470. package/dist/src/core/security/input-sanitizer.js.map +0 -7
  471. package/dist/src/core/session/clear-survival.js.map +0 -7
  472. package/dist/src/core/session/enhanced-handoff.js.map +0 -7
  473. package/dist/src/core/session/handoff-generator.js.map +0 -7
  474. package/dist/src/core/session/index.js.map +0 -7
  475. package/dist/src/core/session/session-manager.js.map +0 -7
  476. package/dist/src/core/skills/index.js.map +0 -7
  477. package/dist/src/core/skills/skill-storage.js.map +0 -7
  478. package/dist/src/core/skills/types.js.map +0 -7
  479. package/dist/src/core/storage/chromadb-adapter.js.map +0 -7
  480. package/dist/src/core/storage/infinite-storage.js.map +0 -7
  481. package/dist/src/core/storage/project-registry.js.map +0 -7
  482. package/dist/src/core/storage/remote-storage.js.map +0 -7
  483. package/dist/src/core/storage/storage-tier-manager.js.map +0 -7
  484. package/dist/src/core/storage/two-tier-storage.js.map +0 -7
  485. package/dist/src/core/trace/cli-trace-wrapper.js.map +0 -7
  486. package/dist/src/core/trace/db-trace-wrapper.js.map +0 -7
  487. package/dist/src/core/trace/debug-trace.js.map +0 -7
  488. package/dist/src/core/trace/index.js.map +0 -7
  489. package/dist/src/core/trace/linear-api-wrapper.js.map +0 -7
  490. package/dist/src/core/trace/trace-detector.js.map +0 -7
  491. package/dist/src/core/trace/trace-store.js.map +0 -7
  492. package/dist/src/core/trace/types.js.map +0 -7
  493. package/dist/src/core/types.js.map +0 -7
  494. package/dist/src/core/utils/async-mutex.js.map +0 -7
  495. package/dist/src/core/utils/compression.js.map +0 -7
  496. package/dist/src/core/utils/update-checker.js.map +0 -7
  497. package/dist/src/core/worktree/worktree-manager.js.map +0 -7
  498. package/dist/src/daemon/daemon-config.js.map +0 -7
  499. package/dist/src/daemon/services/context-service.js.map +0 -7
  500. package/dist/src/daemon/services/linear-service.js.map +0 -7
  501. package/dist/src/daemon/services/maintenance-service.js.map +0 -7
  502. package/dist/src/daemon/services/memory-service.js.map +0 -7
  503. package/dist/src/daemon/session-daemon.js.map +0 -7
  504. package/dist/src/daemon/unified-daemon.js.map +0 -7
  505. package/dist/src/features/analytics/api/analytics-api.js.map +0 -7
  506. package/dist/src/features/analytics/core/analytics-service.js.map +0 -7
  507. package/dist/src/features/analytics/index.js.map +0 -7
  508. package/dist/src/features/analytics/queries/metrics-queries.js.map +0 -7
  509. package/dist/src/features/analytics/types/metrics.js.map +0 -7
  510. package/dist/src/features/browser/browser-mcp.js.map +0 -7
  511. package/dist/src/features/sweep/index.js.map +0 -7
  512. package/dist/src/features/sweep/prediction-client.js.map +0 -7
  513. package/dist/src/features/sweep/prompt-builder.js.map +0 -7
  514. package/dist/src/features/sweep/pty-wrapper.js.map +0 -7
  515. package/dist/src/features/sweep/state-watcher.js.map +0 -7
  516. package/dist/src/features/sweep/status-bar.js.map +0 -7
  517. package/dist/src/features/sweep/sweep-server-manager.js.map +0 -7
  518. package/dist/src/features/sweep/tab-interceptor.js.map +0 -7
  519. package/dist/src/features/sweep/types.js.map +0 -7
  520. package/dist/src/features/tasks/linear-task-manager.js.map +0 -7
  521. package/dist/src/features/tasks/task-aware-context.js.map +0 -7
  522. package/dist/src/features/tui/simple-monitor.js.map +0 -7
  523. package/dist/src/features/tui/swarm-monitor.js.map +0 -7
  524. package/dist/src/features/web/client/stores/task-store.js.map +0 -7
  525. package/dist/src/features/web/server/index.js.map +0 -7
  526. package/dist/src/features/workers/tmux-manager.js.map +0 -7
  527. package/dist/src/features/workers/worker-registry.js.map +0 -7
  528. package/dist/src/hooks/auto-background.js.map +0 -7
  529. package/dist/src/hooks/claude-code-whatsapp-hook.js +0 -197
  530. package/dist/src/hooks/claude-code-whatsapp-hook.js.map +0 -7
  531. package/dist/src/hooks/config.js.map +0 -7
  532. package/dist/src/hooks/daemon.js.map +0 -7
  533. package/dist/src/hooks/diffmem-hooks.js.map +0 -7
  534. package/dist/src/hooks/events.js.map +0 -7
  535. package/dist/src/hooks/index.js.map +0 -7
  536. package/dist/src/hooks/linear-task-picker.js.map +0 -7
  537. package/dist/src/hooks/schemas.js.map +0 -7
  538. package/dist/src/hooks/secure-fs.js.map +0 -7
  539. package/dist/src/hooks/security-logger.js.map +0 -7
  540. package/dist/src/hooks/session-summary.js.map +0 -7
  541. package/dist/src/hooks/sms-action-runner.js +0 -371
  542. package/dist/src/hooks/sms-action-runner.js.map +0 -7
  543. package/dist/src/hooks/sms-notify.js +0 -506
  544. package/dist/src/hooks/sms-notify.js.map +0 -7
  545. package/dist/src/hooks/sms-watcher.js +0 -93
  546. package/dist/src/hooks/sms-watcher.js.map +0 -7
  547. package/dist/src/hooks/sms-webhook.js +0 -555
  548. package/dist/src/hooks/sms-webhook.js.map +0 -7
  549. package/dist/src/hooks/whatsapp-commands.js +0 -479
  550. package/dist/src/hooks/whatsapp-commands.js.map +0 -7
  551. package/dist/src/hooks/whatsapp-scheduler.js +0 -317
  552. package/dist/src/hooks/whatsapp-scheduler.js.map +0 -7
  553. package/dist/src/hooks/whatsapp-sync.js +0 -409
  554. package/dist/src/hooks/whatsapp-sync.js.map +0 -7
  555. package/dist/src/index.js.map +0 -7
  556. package/dist/src/integrations/anthropic/client.js.map +0 -7
  557. package/dist/src/integrations/claude-code/agent-bridge.js.map +0 -7
  558. package/dist/src/integrations/claude-code/enhanced-pre-clear-hooks.js.map +0 -7
  559. package/dist/src/integrations/claude-code/lifecycle-hooks.js.map +0 -7
  560. package/dist/src/integrations/claude-code/post-task-hooks.js.map +0 -7
  561. package/dist/src/integrations/claude-code/subagent-client-stub.js.map +0 -7
  562. package/dist/src/integrations/claude-code/subagent-client.js.map +0 -7
  563. package/dist/src/integrations/claude-code/task-coordinator.js.map +0 -7
  564. package/dist/src/integrations/diffmem/client.js.map +0 -7
  565. package/dist/src/integrations/diffmem/config.js.map +0 -7
  566. package/dist/src/integrations/diffmem/index.js.map +0 -7
  567. package/dist/src/integrations/diffmem/types.js.map +0 -7
  568. package/dist/src/integrations/linear/auth.js.map +0 -7
  569. package/dist/src/integrations/linear/auto-sync.js.map +0 -7
  570. package/dist/src/integrations/linear/client.js.map +0 -7
  571. package/dist/src/integrations/linear/config.js.map +0 -7
  572. package/dist/src/integrations/linear/migration.js.map +0 -7
  573. package/dist/src/integrations/linear/oauth-server.js.map +0 -7
  574. package/dist/src/integrations/linear/rest-client.js.map +0 -7
  575. package/dist/src/integrations/linear/sync-manager.js.map +0 -7
  576. package/dist/src/integrations/linear/sync-service.js.map +0 -7
  577. package/dist/src/integrations/linear/sync.js.map +0 -7
  578. package/dist/src/integrations/linear/types.js.map +0 -7
  579. package/dist/src/integrations/linear/unified-sync.js.map +0 -7
  580. package/dist/src/integrations/linear/webhook-handler.js.map +0 -7
  581. package/dist/src/integrations/linear/webhook-server.js.map +0 -7
  582. package/dist/src/integrations/linear/webhook.js.map +0 -7
  583. package/dist/src/integrations/mcp/handlers/code-execution-handlers.js.map +0 -7
  584. package/dist/src/integrations/mcp/handlers/context-handlers.js.map +0 -7
  585. package/dist/src/integrations/mcp/handlers/diffmem-handlers.js.map +0 -7
  586. package/dist/src/integrations/mcp/handlers/discovery-handlers.js.map +0 -7
  587. package/dist/src/integrations/mcp/handlers/index.js.map +0 -7
  588. package/dist/src/integrations/mcp/handlers/linear-handlers.js.map +0 -7
  589. package/dist/src/integrations/mcp/handlers/skill-handlers.js.map +0 -7
  590. package/dist/src/integrations/mcp/handlers/task-handlers.js.map +0 -7
  591. package/dist/src/integrations/mcp/handlers/trace-handlers.js.map +0 -7
  592. package/dist/src/integrations/mcp/index.js.map +0 -7
  593. package/dist/src/integrations/mcp/middleware/tool-scoring.js.map +0 -7
  594. package/dist/src/integrations/mcp/pending-utils.js.map +0 -7
  595. package/dist/src/integrations/mcp/refactored-server.js.map +0 -7
  596. package/dist/src/integrations/mcp/remote-server.js.map +0 -7
  597. package/dist/src/integrations/mcp/schemas.js.map +0 -7
  598. package/dist/src/integrations/mcp/server.js.map +0 -7
  599. package/dist/src/integrations/mcp/tool-definitions-code.js.map +0 -7
  600. package/dist/src/integrations/mcp/tool-definitions.js.map +0 -7
  601. package/dist/src/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +0 -7
  602. package/dist/src/integrations/ralph/context/context-budget-manager.js.map +0 -7
  603. package/dist/src/integrations/ralph/context/stackmemory-context-loader.js.map +0 -7
  604. package/dist/src/integrations/ralph/coordination/enhanced-coordination.js.map +0 -7
  605. package/dist/src/integrations/ralph/index.js.map +0 -7
  606. package/dist/src/integrations/ralph/learning/pattern-learner.js.map +0 -7
  607. package/dist/src/integrations/ralph/lifecycle/iteration-lifecycle.js.map +0 -7
  608. package/dist/src/integrations/ralph/monitoring/swarm-dashboard.js.map +0 -7
  609. package/dist/src/integrations/ralph/monitoring/swarm-registry.js.map +0 -7
  610. package/dist/src/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +0 -7
  611. package/dist/src/integrations/ralph/patterns/compounding-engineering-pattern.js.map +0 -7
  612. package/dist/src/integrations/ralph/patterns/extended-coherence-sessions.js.map +0 -7
  613. package/dist/src/integrations/ralph/patterns/oracle-worker-pattern.js.map +0 -7
  614. package/dist/src/integrations/ralph/performance/performance-optimizer.js.map +0 -7
  615. package/dist/src/integrations/ralph/recovery/crash-recovery.js.map +0 -7
  616. package/dist/src/integrations/ralph/state/state-reconciler.js.map +0 -7
  617. package/dist/src/integrations/ralph/swarm/git-workflow-manager.js.map +0 -7
  618. package/dist/src/integrations/ralph/swarm/swarm-coordinator.js.map +0 -7
  619. package/dist/src/integrations/ralph/types.js.map +0 -7
  620. package/dist/src/integrations/ralph/visualization/ralph-debugger.js.map +0 -7
  621. package/dist/src/mcp/stackmemory-mcp-server.js.map +0 -7
  622. package/dist/src/middleware/exponential-rate-limiter.js.map +0 -7
  623. package/dist/src/models/user.model.js.map +0 -7
  624. package/dist/src/orchestrators/multimodal/constants.js.map +0 -7
  625. package/dist/src/orchestrators/multimodal/harness.js.map +0 -7
  626. package/dist/src/orchestrators/multimodal/providers.js.map +0 -7
  627. package/dist/src/orchestrators/multimodal/types.js.map +0 -7
  628. package/dist/src/orchestrators/multimodal/utils.js.map +0 -7
  629. package/dist/src/servers/production/auth-middleware.js.map +0 -7
  630. package/dist/src/services/config-service.js.map +0 -7
  631. package/dist/src/services/context-service.js.map +0 -7
  632. package/dist/src/skills/api-discovery.js.map +0 -7
  633. package/dist/src/skills/api-skill.js.map +0 -7
  634. package/dist/src/skills/claude-skills.js.map +0 -7
  635. package/dist/src/skills/dashboard-launcher.js.map +0 -7
  636. package/dist/src/skills/linear-task-runner.js.map +0 -7
  637. package/dist/src/skills/recursive-agent-orchestrator.js.map +0 -7
  638. package/dist/src/skills/repo-ingestion-skill.js.map +0 -7
  639. package/dist/src/skills/spec-generator-skill.js.map +0 -7
  640. package/dist/src/skills/unified-rlm-orchestrator.js.map +0 -7
  641. package/dist/src/types/task.js.map +0 -7
  642. package/dist/src/utils/env.js.map +0 -7
  643. package/dist/src/utils/formatting.js.map +0 -7
  644. package/dist/src/utils/process-cleanup.js.map +0 -7
  645. package/scripts/README-TESTING.md +0 -186
  646. package/scripts/analyze-cli-security.js +0 -288
  647. package/scripts/archive/add-phase-tasks-to-linear.js +0 -163
  648. package/scripts/archive/analyze-linear-duplicates.js +0 -214
  649. package/scripts/archive/analyze-remaining-duplicates.js +0 -230
  650. package/scripts/archive/analyze-sta-duplicates.js +0 -292
  651. package/scripts/archive/analyze-sta-graphql.js +0 -399
  652. package/scripts/archive/cancel-duplicate-tasks.ts +0 -246
  653. package/scripts/archive/check-all-duplicates.ts +0 -419
  654. package/scripts/archive/clean-duplicate-tasks.js +0 -114
  655. package/scripts/archive/cleanup-duplicate-tasks.ts +0 -286
  656. package/scripts/archive/create-phase-tasks.js +0 -387
  657. package/scripts/archive/delete-linear-duplicates.js +0 -182
  658. package/scripts/archive/delete-remaining-duplicates.js +0 -158
  659. package/scripts/archive/delete-sta-duplicates.js +0 -201
  660. package/scripts/archive/delete-sta-oauth.js +0 -201
  661. package/scripts/archive/export-sta-tasks.js +0 -62
  662. package/scripts/archive/install-auto-sync.js +0 -266
  663. package/scripts/archive/install-chromadb-hooks.sh +0 -133
  664. package/scripts/archive/install-enhanced-clear-hooks.sh +0 -431
  665. package/scripts/archive/install-post-task-hooks.sh +0 -289
  666. package/scripts/archive/install-stackmemory-hooks.sh +0 -420
  667. package/scripts/archive/merge-linear-duplicates-safe.ts +0 -362
  668. package/scripts/archive/merge-linear-duplicates.ts +0 -182
  669. package/scripts/archive/remove-sta-tasks.js +0 -70
  670. package/scripts/archive/setup-background-sync.sh +0 -168
  671. package/scripts/archive/setup-claude-auto-triggers.sh +0 -181
  672. package/scripts/archive/setup-claude-autostart.sh +0 -305
  673. package/scripts/archive/setup-git-hooks.sh +0 -25
  674. package/scripts/archive/setup-linear-oauth.sh +0 -46
  675. package/scripts/archive/setup-mcp.sh +0 -113
  676. package/scripts/archive/setup-railway-deployment.sh +0 -81
  677. package/scripts/auto-handoff.sh +0 -262
  678. package/scripts/background-sync-manager.js +0 -478
  679. package/scripts/benchmark-performance.ts +0 -57
  680. package/scripts/check-redis.ts +0 -48
  681. package/scripts/chromadb-auto-loader.sh +0 -128
  682. package/scripts/chromadb-context-loader.js +0 -479
  683. package/scripts/claude-chromadb-hook.js +0 -460
  684. package/scripts/claude-linear-skill.js +0 -455
  685. package/scripts/claude-pre-commit.sh +0 -302
  686. package/scripts/claude-sm-autostart.js +0 -579
  687. package/scripts/claude-with-chromadb.sh +0 -69
  688. package/scripts/clean-linear-backlog.js +0 -273
  689. package/scripts/cleanup-old-sessions.sh +0 -57
  690. package/scripts/create-cleanup-issues.js +0 -302
  691. package/scripts/create-sandbox.sh +0 -269
  692. package/scripts/debug-linear-update.js +0 -174
  693. package/scripts/delete-linear-tasks.js +0 -167
  694. package/scripts/demos/browser-test.ts +0 -39
  695. package/scripts/demos/ralph-integration-demo.ts +0 -245
  696. package/scripts/demos/trace-demo.ts +0 -200
  697. package/scripts/demos/trace-detector.demo.ts +0 -171
  698. package/scripts/demos/trace-test.ts +0 -79
  699. package/scripts/deploy-ralph-swarm.sh +0 -365
  700. package/scripts/deploy.sh +0 -89
  701. package/scripts/deployment/test-deployment.js +0 -194
  702. package/scripts/detect-and-rehydrate.js +0 -162
  703. package/scripts/detect-and-rehydrate.mjs +0 -165
  704. package/scripts/development/create-demo-tasks.js +0 -143
  705. package/scripts/development/debug-frame-test.js +0 -16
  706. package/scripts/development/demo-auto-sync.js +0 -128
  707. package/scripts/development/fix-all-imports.js +0 -213
  708. package/scripts/development/fix-imports.js +0 -229
  709. package/scripts/development/fix-lint-loop.cjs +0 -103
  710. package/scripts/development/fix-project-id.ts +0 -161
  711. package/scripts/development/fix-strict-mode-issues.ts +0 -291
  712. package/scripts/development/reorganize-structure.sh +0 -228
  713. package/scripts/development/test-persistence-direct.js +0 -148
  714. package/scripts/development/test-persistence.js +0 -114
  715. package/scripts/development/test-tasks.js +0 -93
  716. package/scripts/development/update-imports.js +0 -212
  717. package/scripts/fetch-linear-status.js +0 -125
  718. package/scripts/initialize.ts +0 -220
  719. package/scripts/install-notify-hook.sh +0 -84
  720. package/scripts/linear-auto-sync.js +0 -262
  721. package/scripts/linear-auto-sync.sh +0 -161
  722. package/scripts/linear-sync-daemon.js +0 -150
  723. package/scripts/linear-task-review.js +0 -237
  724. package/scripts/list-linear-tasks.ts +0 -178
  725. package/scripts/mcp-proxy.js +0 -66
  726. package/scripts/measure-handoff-impact.mjs +0 -395
  727. package/scripts/measure-handoff-impact.ts +0 -450
  728. package/scripts/publish-local.js +0 -74
  729. package/scripts/query-chromadb.ts +0 -201
  730. package/scripts/ralph-integration-test.js +0 -274
  731. package/scripts/reconcile-local-tasks.js +0 -170
  732. package/scripts/recreate-frames-db.js +0 -89
  733. package/scripts/setup-notify-webhook.sh +0 -103
  734. package/scripts/show-linear-summary.ts +0 -172
  735. package/scripts/simple-swarm-demo.ts +0 -114
  736. package/scripts/stackmemory-auto-handoff.sh +0 -231
  737. package/scripts/start-linear-sync-daemon.sh +0 -141
  738. package/scripts/start-temporal-paradox.sh +0 -214
  739. package/scripts/status.ts +0 -224
  740. package/scripts/stop-notify-webhook.sh +0 -19
  741. package/scripts/swarm-monitor.js +0 -509
  742. package/scripts/sync-and-clean-tasks.js +0 -258
  743. package/scripts/sync-linear-graphql.js +0 -303
  744. package/scripts/sync-linear-tasks.js +0 -186
  745. package/scripts/test-auto-triggers.sh +0 -57
  746. package/scripts/test-browser-mcp.js +0 -74
  747. package/scripts/test-chromadb-full.js +0 -115
  748. package/scripts/test-chromadb-hooks.sh +0 -28
  749. package/scripts/test-chromadb-sync.ts +0 -245
  750. package/scripts/test-claude-config.sh +0 -123
  751. package/scripts/test-cli-security.js +0 -293
  752. package/scripts/test-code-execution.js +0 -143
  753. package/scripts/test-hooks-persistence.sh +0 -220
  754. package/scripts/test-installation-scenarios.sh +0 -359
  755. package/scripts/test-installation.sh +0 -224
  756. package/scripts/test-mcp.js +0 -163
  757. package/scripts/test-parallel-swarms.js +0 -443
  758. package/scripts/test-pre-publish-quick.sh +0 -77
  759. package/scripts/test-quality-gates.sh +0 -263
  760. package/scripts/test-ralph-iteration-fix.ts +0 -118
  761. package/scripts/test-ralph-iterations.ts +0 -164
  762. package/scripts/test-redis-storage.ts +0 -490
  763. package/scripts/test-rlm-basic.sh +0 -122
  764. package/scripts/test-rlm-comprehensive.sh +0 -260
  765. package/scripts/test-rlm-e2e.sh +0 -268
  766. package/scripts/test-rlm-simple.js +0 -90
  767. package/scripts/test-rlm.js +0 -110
  768. package/scripts/test-session-handoff.sh +0 -165
  769. package/scripts/test-setup-e2e.sh +0 -154
  770. package/scripts/test-shell-integration.sh +0 -275
  771. package/scripts/test-simple-ralph-state-sync.ts +0 -178
  772. package/scripts/test-swarm-fixes.ts +0 -161
  773. package/scripts/test-swarm-git-workflow.js +0 -338
  774. package/scripts/test-swarm-tui.ts +0 -34
  775. package/scripts/test-tui-shortcuts.ts +0 -66
  776. package/scripts/testing/ab-test-runner.ts +0 -510
  777. package/scripts/testing/collect-metrics.ts +0 -457
  778. package/scripts/testing/quick-effectiveness-demo.js +0 -187
  779. package/scripts/testing/ralph-cli-test.js +0 -88
  780. package/scripts/testing/ralph-integration-validation.js +0 -727
  781. package/scripts/testing/ralph-swarm-test-scenarios.js +0 -613
  782. package/scripts/testing/real-performance-test.js +0 -422
  783. package/scripts/testing/results/real-performance-results.json +0 -90
  784. package/scripts/testing/run-effectiveness-tests.sh +0 -176
  785. package/scripts/testing/simple-effectiveness-test.js +0 -310
  786. package/scripts/testing/test-tier-migration.js +0 -100
  787. package/scripts/update-linear-status.js +0 -268
  788. package/scripts/update-linear-tasks-fixed.js +0 -284
  789. package/scripts/validate-claude-config.sh +0 -155
  790. package/scripts/validate-swarm-implementation.js +0 -467
  791. package/scripts/validate-tui-shortcuts.ts +0 -83
  792. package/templates/claude-hooks/notify-review-hook.js +0 -360
  793. package/templates/claude-hooks/sms-response-handler.js +0 -174
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../scripts/test-redis-storage.ts"],
4
- "sourcesContent": ["#!/usr/bin/env tsx\n/**\n * Test script for Redis trace storage\n * Tests the 3-tier storage system with Redis hot tier\n */\n\nimport { createClient } from 'redis';\nimport Database from 'better-sqlite3';\nimport { v4 as uuidv4 } from 'uuid';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport { join } from 'path';\nimport { existsSync, mkdirSync } from 'fs';\nimport { RailwayOptimizedStorage } from '../src/core/storage/railway-optimized-storage.js';\nimport { ConfigManager } from '../src/core/config/config-manager.js';\nimport { Trace, TraceType, ToolCall } from '../src/core/trace/types.js';\n\n// Load environment variables\nimport dotenv from 'dotenv';\n// Type-safe environment variable access\nfunction getEnv(key: string, defaultValue?: string): string {\n const value = process.env[key];\n if (value === undefined) {\n if (defaultValue !== undefined) return defaultValue;\n throw new Error(`Environment variable ${key} is required`);\n }\n return value;\n}\n\nfunction getOptionalEnv(key: string): string | undefined {\n return process.env[key];\n}\n\ndotenv.config();\n\nasync function testRedisConnection() {\n const spinner = ora('Testing Redis connection...').start();\n\n try {\n const redisUrl = process.env['REDIS_URL'] || 'redis://localhost:6379';\n console.log(\n chalk.gray(\n ` Using Redis URL: ${redisUrl.replace(/:[^:@]+@/, ':****@')})`\n )\n );\n const client = createClient({ url: redisUrl });\n\n await client.connect();\n\n // Test basic operations\n const testKey = 'test:connection';\n await client.set(testKey, 'connected');\n const result = await client.get(testKey);\n await client.del(testKey);\n\n if (result === 'connected') {\n spinner.succeed(`Redis connected successfully at ${redisUrl}`);\n\n // Get Redis info\n const info = await client.info('memory');\n const memoryUsed = info.match(/used_memory_human:(\\S+)/)?.[1];\n console.log(chalk.gray(` Memory used: ${memoryUsed || 'unknown'}`));\n } else {\n spinner.fail('Redis connection test failed');\n return false;\n }\n\n await client.quit();\n return true;\n } catch (error: unknown) {\n spinner.fail(`Redis connection failed: ${error}`);\n return false;\n }\n}\n\nfunction createMockTrace(index: number): Trace {\n const now = Date.now() - index * 60 * 60 * 1000; // Offset by hours\n const tools: ToolCall[] = [\n {\n id: uuidv4(),\n tool: 'search',\n timestamp: now,\n arguments: { query: `test query ${index}` },\n filesAffected: ['src/test.ts', 'src/index.ts'],\n },\n {\n id: uuidv4(),\n tool: 'read',\n timestamp: now + 1000,\n arguments: { file: 'src/test.ts' },\n result: 'file contents',\n },\n {\n id: uuidv4(),\n tool: 'edit',\n timestamp: now + 2000,\n arguments: { file: 'src/test.ts', changes: 'some changes' },\n filesAffected: ['src/test.ts'],\n },\n {\n id: uuidv4(),\n tool: 'test',\n timestamp: now + 3000,\n arguments: { command: 'npm test' },\n result: 'tests passed',\n },\n ];\n\n const trace: Trace = {\n id: uuidv4(),\n type: TraceType.SEARCH_DRIVEN,\n tools,\n score: 0.5 + Math.random() * 0.5, // Random score 0.5-1.0\n summary: `Test trace #${index}: Search-driven modification`,\n metadata: {\n startTime: now,\n endTime: now + 4000,\n filesModified: ['src/test.ts'],\n errorsEncountered: index % 3 === 0 ? ['Test error'] : [],\n decisionsRecorded: index % 2 === 0 ? ['Use async pattern'] : [],\n causalChain: index % 3 === 0,\n },\n };\n\n return trace;\n}\n\nasync function testStorageOperations() {\n console.log(chalk.blue('\\n\uD83D\uDCE6 Testing Storage Operations'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n\n // Setup database\n const dbDir = join(process.cwd(), '.stackmemory');\n if (!existsSync(dbDir)) {\n mkdirSync(dbDir, { recursive: true });\n }\n\n const dbPath = join(dbDir, 'test-context.db');\n const db = new Database(dbPath);\n\n // Initialize trace tables\n db.exec(`\n CREATE TABLE IF NOT EXISTS traces (\n id TEXT PRIMARY KEY,\n type TEXT NOT NULL,\n score REAL NOT NULL,\n summary TEXT NOT NULL,\n start_time INTEGER NOT NULL,\n end_time INTEGER NOT NULL,\n frame_id TEXT,\n user_id TEXT,\n files_modified TEXT,\n errors_encountered TEXT,\n decisions_recorded TEXT,\n causal_chain INTEGER,\n compressed_data TEXT,\n created_at INTEGER DEFAULT (unixepoch())\n )\n `);\n\n db.exec(`\n CREATE TABLE IF NOT EXISTS tool_calls (\n id TEXT PRIMARY KEY,\n trace_id TEXT NOT NULL,\n tool TEXT NOT NULL,\n arguments TEXT,\n timestamp INTEGER NOT NULL,\n result TEXT,\n error TEXT,\n files_affected TEXT,\n duration INTEGER,\n sequence_number INTEGER NOT NULL,\n FOREIGN KEY (trace_id) REFERENCES traces(id) ON DELETE CASCADE\n )\n `);\n\n // Create storage_tiers table required by RailwayOptimizedStorage\n db.exec(`\n CREATE TABLE IF NOT EXISTS storage_tiers (\n trace_id TEXT PRIMARY KEY,\n tier TEXT NOT NULL,\n location TEXT NOT NULL,\n original_size INTEGER,\n compressed_size INTEGER,\n compression_ratio REAL,\n access_count INTEGER DEFAULT 0,\n last_accessed INTEGER DEFAULT (unixepoch()),\n created_at INTEGER DEFAULT (unixepoch()),\n migrated_at INTEGER,\n score REAL,\n migration_score REAL,\n metadata TEXT,\n FOREIGN KEY (trace_id) REFERENCES traces(id) ON DELETE CASCADE\n )\n `);\n\n // Create indexes for storage_tiers\n db.exec(`\n CREATE INDEX IF NOT EXISTS idx_storage_tier ON storage_tiers(tier);\n CREATE INDEX IF NOT EXISTS idx_storage_created ON storage_tiers(created_at);\n CREATE INDEX IF NOT EXISTS idx_storage_accessed ON storage_tiers(last_accessed);\n `);\n\n const configManager = new ConfigManager();\n\n // Initialize storage with Redis URL from environment\n const storage = new RailwayOptimizedStorage(db, configManager, {\n redis: {\n url: process.env['REDIS_URL'],\n ttlSeconds: 24 * 60 * 60, // 24 hours\n maxMemory: '100mb',\n },\n });\n\n // Test storing traces\n const traces: Trace[] = [];\n const results: { id: string; tier: string; score: number }[] = [];\n\n console.log(chalk.yellow('\\n\u270F\uFE0F Creating and storing test traces...'));\n\n for (let i = 0; i < 10; i++) {\n const trace = createMockTrace(i);\n traces.push(trace);\n\n const spinner = ora(`Storing trace #${i + 1}...`).start();\n\n try {\n // First insert the trace into the traces table\n const insertTrace = db.prepare(`\n INSERT INTO traces (\n id, type, score, summary, start_time, end_time,\n files_modified, errors_encountered, decisions_recorded, causal_chain,\n created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n insertTrace.run(\n trace.id,\n trace.type,\n trace.score,\n trace.summary,\n trace.metadata.startTime,\n trace.metadata.endTime,\n JSON.stringify(trace.metadata.filesModified || []),\n JSON.stringify(trace.metadata.errorsEncountered || []),\n JSON.stringify(trace.metadata.decisionsRecorded || []),\n trace.metadata.causalChain ? 1 : 0,\n Date.now()\n );\n\n // Insert tool calls\n const insertToolCall = db.prepare(`\n INSERT INTO tool_calls (\n id, trace_id, tool, arguments, timestamp, result, files_affected, sequence_number\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n `);\n\n trace.tools.forEach((tool, index) => {\n insertToolCall.run(\n tool.id,\n trace.id,\n tool.tool,\n JSON.stringify(tool.arguments),\n tool.timestamp,\n tool.result || null,\n JSON.stringify(tool.filesAffected || []),\n index\n );\n });\n\n // Now store in tiered storage\n const tier = await storage.storeTrace(trace);\n results.push({ id: trace.id, tier, score: trace.score });\n\n const tierIcon = tier === 'hot' ? '\uD83D\uDD25' : tier === 'warm' ? '\u2601\uFE0F' : '\u2744\uFE0F';\n spinner.succeed(\n `Trace #${i + 1} stored in ${tierIcon} ${tier} tier (score: ${trace.score.toFixed(2)})`\n );\n } catch (error: unknown) {\n spinner.fail(`Failed to store trace #${i + 1}: ${error}`);\n }\n\n // Small delay\n await new Promise((resolve) => setTimeout(resolve, 100));\n }\n\n // Test retrieval\n console.log(chalk.yellow('\\n\uD83D\uDD0D Testing trace retrieval...'));\n\n for (let i = 0; i < 3; i++) {\n const result = results[i];\n const spinner = ora(\n `Retrieving trace ${result.id.substring(0, 8)}...`\n ).start();\n\n try {\n const retrieved = await storage.retrieveTrace(result.id);\n\n if (retrieved) {\n spinner.succeed(\n `Retrieved from ${result.tier} tier: ${retrieved.summary}`\n );\n } else {\n spinner.fail('Trace not found');\n }\n } catch (error: unknown) {\n spinner.fail(`Retrieval failed: ${error}`);\n }\n }\n\n // Get storage statistics\n console.log(chalk.yellow('\\n\uD83D\uDCCA Storage Statistics:'));\n\n const stats = storage.getStorageStats();\n\n console.log(chalk.gray('\u2501'.repeat(50)));\n for (const tier of stats.byTier) {\n const icon =\n tier.tier === 'hot' ? '\uD83D\uDD25' : tier.tier === 'warm' ? '\u2601\uFE0F' : '\u2744\uFE0F';\n console.log(`${icon} ${chalk.bold(tier.tier.toUpperCase())} Tier:`);\n console.log(` Traces: ${tier.count}`);\n console.log(` Original Size: ${formatBytes(tier.total_original || 0)}`);\n console.log(` Compressed: ${formatBytes(tier.total_compressed || 0)}`);\n if (tier.avg_compression) {\n console.log(\n ` Compression: ${(tier.avg_compression * 100).toFixed(1)}%`\n );\n }\n }\n\n // Test Redis-specific operations\n console.log(chalk.yellow('\\n\uD83D\uDD25 Testing Redis Hot Tier...'));\n\n const redisClient = createClient({ url: process.env['REDIS_URL'] });\n await redisClient.connect();\n\n // Check stored traces in Redis\n const keys = await redisClient.keys('trace:*');\n console.log(` Traces in Redis: ${chalk.green(keys.length)}`);\n\n // Check sorted sets\n const byScore = await redisClient.zCard('traces:by_score');\n const byTime = await redisClient.zCard('traces:by_time');\n console.log(` Score index: ${chalk.green(byScore)} entries`);\n console.log(` Time index: ${chalk.green(byTime)} entries`);\n\n // Get top traces by score\n const topTraces = await redisClient.zRangeWithScores(\n 'traces:by_score',\n -3,\n -1\n );\n if (topTraces.length > 0) {\n console.log(chalk.yellow('\\n\uD83C\uDFC6 Top Traces by Score:'));\n for (const trace of topTraces.reverse()) {\n console.log(\n ` ${trace.value.substring(0, 8)}... - Score: ${trace.score.toFixed(3)}`\n );\n }\n }\n\n // Memory usage\n const memInfo = await redisClient.memoryUsage('trace:' + results[0]?.id);\n if (memInfo) {\n console.log(chalk.yellow('\\n\uD83D\uDCBE Memory Usage:'));\n console.log(` Sample trace memory: ${formatBytes(memInfo)}`);\n console.log(` Estimated total: ${formatBytes(memInfo * keys.length)}`);\n }\n\n await redisClient.quit();\n\n // Test migration\n console.log(chalk.yellow('\\n\uD83D\uDD04 Testing tier migration...'));\n\n const migrationResults = await storage.migrateTiers();\n console.log(\n ` Hot \u2192 Warm: ${chalk.yellow(migrationResults.hotToWarm)} traces`\n );\n console.log(\n ` Warm \u2192 Cold: ${chalk.cyan(migrationResults.warmToCold)} traces`\n );\n if (migrationResults.errors.length > 0) {\n console.log(chalk.red(` Errors: ${migrationResults.errors.length}`));\n }\n\n // Cleanup\n db.close();\n\n console.log(chalk.green('\\n\u2705 Storage tests completed successfully!'));\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return '0 B';\n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;\n}\n\nasync function main() {\n console.log(chalk.blue.bold('\\n\uD83E\uDDEA StackMemory Redis Storage Test\\n'));\n\n // Test Redis connection\n const redisConnected = await testRedisConnection();\n\n if (!redisConnected) {\n console.log(chalk.red('\\n\u274C Cannot proceed without Redis connection'));\n console.log(chalk.yellow('\\nTo fix:'));\n console.log('1. Ensure Redis is running');\n console.log('2. Check REDIS_URL in .env file');\n console.log('3. For Railway: Ensure Redis addon is provisioned');\n process.exit(1);\n }\n\n // Test storage operations\n await testStorageOperations();\n\n // Interactive test\n console.log(chalk.blue('\\n\uD83C\uDFAE Interactive Test'));\n console.log(chalk.gray('\u2501'.repeat(50)));\n console.log(\n chalk.cyan('You can now use the CLI to interact with the stored traces:')\n );\n console.log();\n console.log(\n ' ' +\n chalk.white('stackmemory storage status') +\n ' - View storage statistics'\n );\n console.log(\n ' ' +\n chalk.white('stackmemory storage migrate') +\n ' - Migrate traces between tiers'\n );\n console.log(\n ' ' +\n chalk.white('stackmemory storage retrieve <id>') +\n ' - Retrieve a specific trace'\n );\n console.log();\n console.log(chalk.gray('Trace IDs from this test:'));\n\n // Show first 3 trace IDs for testing\n const dbPath = join(process.cwd(), '.stackmemory', 'test-context.db');\n const db = new Database(dbPath);\n\n // Make sure storage_tiers table exists before querying\n db.exec(`\n CREATE TABLE IF NOT EXISTS storage_tiers (\n trace_id TEXT PRIMARY KEY,\n tier TEXT NOT NULL,\n location TEXT NOT NULL,\n original_size INTEGER,\n compressed_size INTEGER,\n compression_ratio REAL,\n access_count INTEGER DEFAULT 0,\n last_accessed INTEGER DEFAULT (unixepoch()),\n created_at INTEGER DEFAULT (unixepoch()),\n migrated_at INTEGER,\n score REAL,\n migration_score REAL,\n metadata TEXT\n )\n `);\n\n const recentTraces = db\n .prepare(\n `\n SELECT trace_id, tier FROM storage_tiers \n ORDER BY created_at DESC LIMIT 3\n `\n )\n .all() as Array<{ trace_id: string; tier: string }>;\n\n for (const trace of recentTraces) {\n const tierIcon =\n trace.tier === 'hot' ? '\uD83D\uDD25' : trace.tier === 'warm' ? '\u2601\uFE0F' : '\u2744\uFE0F';\n console.log(` ${tierIcon} ${trace.trace_id}`);\n }\n\n db.close();\n\n console.log(chalk.green('\\n\u2728 Test complete!'));\n}\n\n// Run the test\nmain().catch((error) => {\n console.error(chalk.red('Test failed:'), error);\n process.exit(1);\n});\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,115 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- import { fileURLToPath as __fileURLToPath } from 'url';
3
- import { dirname as __pathDirname } from 'path';
4
- const __filename = __fileURLToPath(import.meta.url);
5
- const __dirname = __pathDirname(__filename);
6
- import "dotenv/config";
7
- import * as fs from "fs/promises";
8
- import * as path from "path";
9
- import { existsSync } from "fs";
10
- const RALPH_DIR = "./.ralph-test";
11
- async function saveLoopState(state) {
12
- await fs.writeFile(
13
- path.join(RALPH_DIR, "state.json"),
14
- JSON.stringify(state, null, 2)
15
- );
16
- await fs.writeFile(
17
- path.join(RALPH_DIR, "iteration.txt"),
18
- state.iteration.toString()
19
- );
20
- console.log(
21
- ` Saved state: iteration=${state.iteration}, status=${state.status}`
22
- );
23
- }
24
- async function loadState() {
25
- const stateData = await fs.readFile(
26
- path.join(RALPH_DIR, "state.json"),
27
- "utf8"
28
- );
29
- const stateFile = JSON.parse(stateData);
30
- const iterationData = await fs.readFile(
31
- path.join(RALPH_DIR, "iteration.txt"),
32
- "utf8"
33
- );
34
- const iterationFile = parseInt(iterationData.trim());
35
- return { stateFile, iterationFile };
36
- }
37
- async function testStateSynchronization() {
38
- try {
39
- console.log("\u{1F9EA} Testing Ralph State Synchronization Fix...");
40
- if (existsSync(RALPH_DIR)) {
41
- await fs.rm(RALPH_DIR, { recursive: true });
42
- }
43
- await fs.mkdir(RALPH_DIR, { recursive: true });
44
- const state = {
45
- loopId: "test-loop-123",
46
- task: "Test state synchronization",
47
- criteria: "state.json and iteration.txt should match",
48
- iteration: 0,
49
- status: "initialized",
50
- startTime: Date.now(),
51
- lastUpdateTime: Date.now()
52
- };
53
- console.log("\u{1F4CA} Testing initial state save...");
54
- await saveLoopState(state);
55
- const initial = await loadState();
56
- console.log(` State file: iteration=${initial.stateFile.iteration}`);
57
- console.log(` Iteration file: ${initial.iterationFile}`);
58
- if (initial.stateFile.iteration === initial.iterationFile) {
59
- console.log(" \u2705 Initial synchronization correct");
60
- } else {
61
- throw new Error("Initial state synchronization failed");
62
- }
63
- for (let i = 1; i <= 5; i++) {
64
- console.log(`\u{1F504} Testing iteration ${i}...`);
65
- state.iteration = i;
66
- state.lastUpdateTime = Date.now();
67
- state.status = i < 5 ? "running" : "completed";
68
- await saveLoopState(state);
69
- const current = await loadState();
70
- console.log(` State file: iteration=${current.stateFile.iteration}`);
71
- console.log(` Iteration file: ${current.iterationFile}`);
72
- if (current.stateFile.iteration === current.iterationFile) {
73
- console.log(` \u2705 Iteration ${i} synchronization correct`);
74
- } else {
75
- throw new Error(
76
- `Iteration ${i} synchronization failed: state=${current.stateFile.iteration}, file=${current.iterationFile}`
77
- );
78
- }
79
- }
80
- console.log("\u{1F50D} Testing fix for old broken scenario...");
81
- const brokenState = { ...state, iteration: 10 };
82
- await fs.writeFile(
83
- path.join(RALPH_DIR, "state.json"),
84
- JSON.stringify(brokenState, null, 2)
85
- );
86
- await fs.writeFile(
87
- path.join(RALPH_DIR, "iteration.txt"),
88
- "0"
89
- // Old broken state
90
- );
91
- console.log(" Created broken state: state.json=10, iteration.txt=0");
92
- await saveLoopState(brokenState);
93
- const fixed = await loadState();
94
- if (fixed.stateFile.iteration === fixed.iterationFile && fixed.iterationFile === 10) {
95
- console.log(" \u2705 Fixed broken state successfully");
96
- } else {
97
- throw new Error("Failed to fix broken state");
98
- }
99
- await fs.rm(RALPH_DIR, { recursive: true });
100
- console.log("");
101
- console.log("\u{1F389} Ralph state synchronization test completed successfully!");
102
- console.log("");
103
- console.log("\u2705 Fixed Issues:");
104
- console.log(" - state.json and iteration.txt now stay synchronized");
105
- console.log(" - saveLoopState() updates both files atomically");
106
- console.log(" - Iteration counter properly increments in both files");
107
- console.log(" - Old broken states can be fixed by re-saving");
108
- console.log("");
109
- } catch (error) {
110
- console.error("\u274C Test failed:", error.message);
111
- process.exit(1);
112
- }
113
- }
114
- testStateSynchronization();
115
- //# sourceMappingURL=test-simple-ralph-state-sync.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../scripts/test-simple-ralph-state-sync.ts"],
4
- "sourcesContent": ["#!/usr/bin/env npx tsx\n\n/**\n * Simple test to verify Ralph state synchronization fix\n * Tests just the state saving/loading functionality\n */\n\nimport 'dotenv/config';\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport { existsSync } from 'fs';\n\nconst RALPH_DIR = './.ralph-test';\n\n/**\n * Mock RalphLoopState for testing\n */\ninterface RalphLoopState {\n loopId: string;\n task: string;\n criteria: string;\n iteration: number;\n status: string;\n startTime: number;\n lastUpdateTime: number;\n}\n\n/**\n * Save loop state (same logic as in bridge)\n */\nasync function saveLoopState(state: RalphLoopState): Promise<void> {\n // Save state.json\n await fs.writeFile(\n path.join(RALPH_DIR, 'state.json'),\n JSON.stringify(state, null, 2)\n );\n\n // Synchronize iteration.txt with current iteration\n await fs.writeFile(\n path.join(RALPH_DIR, 'iteration.txt'),\n state.iteration.toString()\n );\n\n console.log(\n ` Saved state: iteration=${state.iteration}, status=${state.status}`\n );\n}\n\n/**\n * Load state from files\n */\nasync function loadState(): Promise<{\n stateFile: RalphLoopState;\n iterationFile: number;\n}> {\n const stateData = await fs.readFile(\n path.join(RALPH_DIR, 'state.json'),\n 'utf8'\n );\n const stateFile = JSON.parse(stateData) as RalphLoopState;\n\n const iterationData = await fs.readFile(\n path.join(RALPH_DIR, 'iteration.txt'),\n 'utf8'\n );\n const iterationFile = parseInt(iterationData.trim());\n\n return { stateFile, iterationFile };\n}\n\nasync function testStateSynchronization() {\n try {\n console.log('\uD83E\uDDEA Testing Ralph State Synchronization Fix...');\n\n // Create test directory\n if (existsSync(RALPH_DIR)) {\n await fs.rm(RALPH_DIR, { recursive: true });\n }\n await fs.mkdir(RALPH_DIR, { recursive: true });\n\n // Create initial state\n const state: RalphLoopState = {\n loopId: 'test-loop-123',\n task: 'Test state synchronization',\n criteria: 'state.json and iteration.txt should match',\n iteration: 0,\n status: 'initialized',\n startTime: Date.now(),\n lastUpdateTime: Date.now(),\n };\n\n console.log('\uD83D\uDCCA Testing initial state save...');\n await saveLoopState(state);\n\n // Verify initial state\n const initial = await loadState();\n console.log(` State file: iteration=${initial.stateFile.iteration}`);\n console.log(` Iteration file: ${initial.iterationFile}`);\n\n if (initial.stateFile.iteration === initial.iterationFile) {\n console.log(' \u2705 Initial synchronization correct');\n } else {\n throw new Error('Initial state synchronization failed');\n }\n\n // Test iteration updates\n for (let i = 1; i <= 5; i++) {\n console.log(`\uD83D\uDD04 Testing iteration ${i}...`);\n\n state.iteration = i;\n state.lastUpdateTime = Date.now();\n state.status = i < 5 ? 'running' : 'completed';\n\n await saveLoopState(state);\n\n // Verify synchronization\n const current = await loadState();\n console.log(` State file: iteration=${current.stateFile.iteration}`);\n console.log(` Iteration file: ${current.iterationFile}`);\n\n if (current.stateFile.iteration === current.iterationFile) {\n console.log(` \u2705 Iteration ${i} synchronization correct`);\n } else {\n throw new Error(\n `Iteration ${i} synchronization failed: state=${current.stateFile.iteration}, file=${current.iterationFile}`\n );\n }\n }\n\n // Test the old broken scenario\n console.log('\uD83D\uDD0D Testing fix for old broken scenario...');\n\n // Simulate the old bug by manually creating mismatched files\n const brokenState = { ...state, iteration: 10 };\n await fs.writeFile(\n path.join(RALPH_DIR, 'state.json'),\n JSON.stringify(brokenState, null, 2)\n );\n await fs.writeFile(\n path.join(RALPH_DIR, 'iteration.txt'),\n '0' // Old broken state\n );\n\n console.log(' Created broken state: state.json=10, iteration.txt=0');\n\n // Fix it by saving properly\n await saveLoopState(brokenState);\n\n const fixed = await loadState();\n if (\n fixed.stateFile.iteration === fixed.iterationFile &&\n fixed.iterationFile === 10\n ) {\n console.log(' \u2705 Fixed broken state successfully');\n } else {\n throw new Error('Failed to fix broken state');\n }\n\n // Cleanup\n await fs.rm(RALPH_DIR, { recursive: true });\n\n console.log('');\n console.log('\uD83C\uDF89 Ralph state synchronization test completed successfully!');\n console.log('');\n console.log('\u2705 Fixed Issues:');\n console.log(' - state.json and iteration.txt now stay synchronized');\n console.log(' - saveLoopState() updates both files atomically');\n console.log(' - Iteration counter properly increments in both files');\n console.log(' - Old broken states can be fixed by re-saving');\n console.log('');\n } catch (error: unknown) {\n console.error('\u274C Test failed:', (error as Error).message);\n process.exit(1);\n }\n}\n\n// Run the test\ntestStateSynchronization();\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,125 +0,0 @@
1
- #!/usr/bin/env tsx
2
- import { fileURLToPath as __fileURLToPath } from 'url';
3
- import { dirname as __pathDirname } from 'path';
4
- const __filename = __fileURLToPath(import.meta.url);
5
- const __dirname = __pathDirname(__filename);
6
- import { SwarmCoordinator } from "../src/integrations/ralph/swarm/swarm-coordinator.js";
7
- import { RalphStackMemoryBridge } from "../src/integrations/ralph/bridge/ralph-stackmemory-bridge.js";
8
- import { GitWorkflowManager } from "../src/integrations/ralph/swarm/git-workflow-manager.js";
9
- import { v4 as uuidv4 } from "uuid";
10
- async function testDatabaseOptionalFix() {
11
- console.log("\n1. Testing database optional fix...");
12
- try {
13
- const bridgeWithoutDb = new RalphStackMemoryBridge({
14
- useStackMemory: false
15
- // This should prevent database error
16
- });
17
- await bridgeWithoutDb.initialize({
18
- task: "Test task without database",
19
- criteria: "Test criteria"
20
- });
21
- console.log(
22
- "\u2705 Bridge initialized successfully without database requirement"
23
- );
24
- } catch (error) {
25
- console.error(
26
- "\u274C Failed to initialize bridge without database:",
27
- error.message
28
- );
29
- return false;
30
- }
31
- return true;
32
- }
33
- async function testGitBranchConflictFix() {
34
- console.log("\n2. Testing git branch conflict fix...");
35
- const gitManager = new GitWorkflowManager({
36
- enableGitWorkflow: true,
37
- branchStrategy: "agent"
38
- });
39
- const mockAgent = {
40
- id: uuidv4(),
41
- role: "developer",
42
- status: "active",
43
- capabilities: ["coding"],
44
- workingDirectory: ".swarm/test",
45
- currentTask: null,
46
- performance: {
47
- tasksCompleted: 0,
48
- successRate: 1,
49
- averageTaskTime: 0,
50
- driftDetected: false,
51
- lastFreshStart: Date.now()
52
- },
53
- coordination: {
54
- communicationStyle: "collaborative",
55
- conflictResolution: "defer_to_expertise",
56
- collaborationPreferences: []
57
- }
58
- };
59
- const mockTask = {
60
- id: uuidv4(),
61
- type: "implementation",
62
- title: "implement-core-feature",
63
- description: "Test task",
64
- priority: 1,
65
- estimatedEffort: "medium",
66
- requiredRoles: ["developer"],
67
- dependencies: [],
68
- acceptanceCriteria: ["Test passes"]
69
- };
70
- try {
71
- await gitManager.initializeAgentWorkflow(mockAgent, mockTask);
72
- console.log("\u2705 First branch initialization successful");
73
- await gitManager.initializeAgentWorkflow(mockAgent, mockTask);
74
- console.log(
75
- "\u2705 Second branch initialization handled existing branch gracefully"
76
- );
77
- } catch (error) {
78
- console.error("\u274C Git branch conflict handling failed:", error.message);
79
- return false;
80
- }
81
- return true;
82
- }
83
- async function testStopSwarmMethod() {
84
- console.log("\n3. Testing stopSwarm method...");
85
- const coordinator = new SwarmCoordinator({
86
- maxAgents: 5,
87
- coordinationInterval: 3e4
88
- });
89
- try {
90
- if (typeof coordinator.stopSwarm !== "function") {
91
- console.error("\u274C stopSwarm method does not exist");
92
- return false;
93
- }
94
- await coordinator.stopSwarm();
95
- console.log("\u2705 stopSwarm method executed successfully");
96
- } catch (error) {
97
- console.error("\u274C stopSwarm method failed:", error.message);
98
- return false;
99
- }
100
- return true;
101
- }
102
- async function main() {
103
- console.log("Testing Swarm Orchestration Fixes");
104
- console.log("==================================");
105
- let allTestsPassed = true;
106
- const test1 = await testDatabaseOptionalFix();
107
- allTestsPassed = allTestsPassed && test1;
108
- const test2 = await testGitBranchConflictFix();
109
- allTestsPassed = allTestsPassed && test2;
110
- const test3 = await testStopSwarmMethod();
111
- allTestsPassed = allTestsPassed && test3;
112
- console.log("\n==================================");
113
- if (allTestsPassed) {
114
- console.log("\u2705 All tests passed! Fixes are working correctly.");
115
- process.exit(0);
116
- } else {
117
- console.log("\u274C Some tests failed. Please review the fixes.");
118
- process.exit(1);
119
- }
120
- }
121
- main().catch((error) => {
122
- console.error("Test script error:", error);
123
- process.exit(1);
124
- });
125
- //# sourceMappingURL=test-swarm-fixes.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../scripts/test-swarm-fixes.ts"],
4
- "sourcesContent": ["#!/usr/bin/env tsx\n/**\n * Test script to verify swarm orchestration fixes\n */\n\nimport { SwarmCoordinator } from '../src/integrations/ralph/swarm/swarm-coordinator.js';\nimport { RalphStackMemoryBridge } from '../src/integrations/ralph/bridge/ralph-stackmemory-bridge.js';\nimport { GitWorkflowManager } from '../src/integrations/ralph/swarm/git-workflow-manager.js';\nimport { Agent, SwarmTask } from '../src/integrations/ralph/types.js';\nimport { v4 as uuidv4 } from 'uuid';\n\nasync function testDatabaseOptionalFix() {\n console.log('\\n1. Testing database optional fix...');\n\n try {\n // Test 1: Create bridge WITHOUT database requirement\n const bridgeWithoutDb = new RalphStackMemoryBridge({\n useStackMemory: false, // This should prevent database error\n });\n\n await bridgeWithoutDb.initialize({\n task: 'Test task without database',\n criteria: 'Test criteria',\n });\n\n console.log(\n '\u2705 Bridge initialized successfully without database requirement'\n );\n } catch (error: any) {\n console.error(\n '\u274C Failed to initialize bridge without database:',\n error.message\n );\n return false;\n }\n\n return true;\n}\n\nasync function testGitBranchConflictFix() {\n console.log('\\n2. Testing git branch conflict fix...');\n\n const gitManager = new GitWorkflowManager({\n enableGitWorkflow: true,\n branchStrategy: 'agent',\n });\n\n const mockAgent: Agent = {\n id: uuidv4(),\n role: 'developer',\n status: 'active',\n capabilities: ['coding'],\n workingDirectory: '.swarm/test',\n currentTask: null,\n performance: {\n tasksCompleted: 0,\n successRate: 1.0,\n averageTaskTime: 0,\n driftDetected: false,\n lastFreshStart: Date.now(),\n },\n coordination: {\n communicationStyle: 'collaborative',\n conflictResolution: 'defer_to_expertise',\n collaborationPreferences: [],\n },\n };\n\n const mockTask: SwarmTask = {\n id: uuidv4(),\n type: 'implementation',\n title: 'implement-core-feature',\n description: 'Test task',\n priority: 1,\n estimatedEffort: 'medium',\n requiredRoles: ['developer'],\n dependencies: [],\n acceptanceCriteria: ['Test passes'],\n };\n\n try {\n // Initialize workflow twice with same agent/task (should handle existing branch)\n await gitManager.initializeAgentWorkflow(mockAgent, mockTask);\n console.log('\u2705 First branch initialization successful');\n\n // Try again with same task (should handle existing branch gracefully)\n await gitManager.initializeAgentWorkflow(mockAgent, mockTask);\n console.log(\n '\u2705 Second branch initialization handled existing branch gracefully'\n );\n } catch (error: any) {\n console.error('\u274C Git branch conflict handling failed:', error.message);\n return false;\n }\n\n return true;\n}\n\nasync function testStopSwarmMethod() {\n console.log('\\n3. Testing stopSwarm method...');\n\n const coordinator = new SwarmCoordinator({\n maxAgents: 5,\n coordinationInterval: 30000,\n });\n\n try {\n // Initialize coordinator (minimal setup for testing)\n // Note: We're just testing the method exists and runs without errors\n\n // Verify stopSwarm method exists\n if (typeof coordinator.stopSwarm !== 'function') {\n console.error('\u274C stopSwarm method does not exist');\n return false;\n }\n\n // Call stopSwarm (should handle empty state gracefully)\n await coordinator.stopSwarm();\n console.log('\u2705 stopSwarm method executed successfully');\n } catch (error: any) {\n console.error('\u274C stopSwarm method failed:', error.message);\n return false;\n }\n\n return true;\n}\n\nasync function main() {\n console.log('Testing Swarm Orchestration Fixes');\n console.log('==================================');\n\n let allTestsPassed = true;\n\n // Test 1: Database optional fix\n const test1 = await testDatabaseOptionalFix();\n allTestsPassed = allTestsPassed && test1;\n\n // Test 2: Git branch conflict fix\n const test2 = await testGitBranchConflictFix();\n allTestsPassed = allTestsPassed && test2;\n\n // Test 3: stopSwarm method\n const test3 = await testStopSwarmMethod();\n allTestsPassed = allTestsPassed && test3;\n\n // Summary\n console.log('\\n==================================');\n if (allTestsPassed) {\n console.log('\u2705 All tests passed! Fixes are working correctly.');\n process.exit(0);\n } else {\n console.log('\u274C Some tests failed. Please review the fixes.');\n process.exit(1);\n }\n}\n\n// Run tests\nmain().catch((error) => {\n console.error('Test script error:', error);\n process.exit(1);\n});\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,23 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- import { fileURLToPath as __fileURLToPath } from 'url';
3
- import { dirname as __pathDirname } from 'path';
4
- const __filename = __fileURLToPath(import.meta.url);
5
- const __dirname = __pathDirname(__filename);
6
- import "dotenv/config";
7
- import { SwarmTUI } from "../src/features/tui/swarm-monitor.js";
8
- import { logger } from "../src/core/monitoring/logger.js";
9
- async function testSwarmTUI() {
10
- try {
11
- console.log("\u{1F9BE} Starting Swarm TUI Test...");
12
- const tui = new SwarmTUI();
13
- await tui.initialize();
14
- tui.start();
15
- console.log("TUI should now be running. Press q to quit.");
16
- } catch (error) {
17
- logger.error("TUI test failed", error);
18
- console.error("\u274C TUI test failed:", error.message);
19
- process.exit(1);
20
- }
21
- }
22
- testSwarmTUI();
23
- //# sourceMappingURL=test-swarm-tui.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../scripts/test-swarm-tui.ts"],
4
- "sourcesContent": ["#!/usr/bin/env npx tsx\n\n/**\n * Test script for Swarm TUI monitoring\n * Launches the TUI with mock data for testing\n */\n\nimport 'dotenv/config';\nimport { SwarmTUI } from '../src/features/tui/swarm-monitor.js';\nimport { logger } from '../src/core/monitoring/logger.js';\n\nasync function testSwarmTUI() {\n try {\n console.log('\uD83E\uDDBE Starting Swarm TUI Test...');\n \n const tui = new SwarmTUI();\n \n // Initialize without swarm coordinator for testing\n await tui.initialize();\n \n // Start the TUI\n tui.start();\n \n console.log('TUI should now be running. Press q to quit.');\n \n } catch (error: unknown) {\n logger.error('TUI test failed', error as Error);\n console.error('\u274C TUI test failed:', (error as Error).message);\n process.exit(1);\n }\n}\n\n// Run the test\ntestSwarmTUI();"],
5
- "mappings": ";;;;;AAOA,OAAO;AACP,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAEvB,eAAe,eAAe;AAC5B,MAAI;AACF,YAAQ,IAAI,sCAA+B;AAE3C,UAAM,MAAM,IAAI,SAAS;AAGzB,UAAM,IAAI,WAAW;AAGrB,QAAI,MAAM;AAEV,YAAQ,IAAI,6CAA6C;AAAA,EAE3D,SAAS,OAAgB;AACvB,WAAO,MAAM,mBAAmB,KAAc;AAC9C,YAAQ,MAAM,2BAAuB,MAAgB,OAAO;AAC5D,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAGA,aAAa;",
6
- "names": []
7
- }
@@ -1,52 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- import { fileURLToPath as __fileURLToPath } from 'url';
3
- import { dirname as __pathDirname } from 'path';
4
- const __filename = __fileURLToPath(import.meta.url);
5
- const __dirname = __pathDirname(__filename);
6
- import "dotenv/config";
7
- import { SwarmTUI } from "../src/features/tui/swarm-monitor.js";
8
- import { logger } from "../src/core/monitoring/logger.js";
9
- console.log("\u{1F9EA} TUI Shortcuts Test Guide");
10
- console.log("============================");
11
- console.log("");
12
- console.log("This will launch the TUI. Test these keyboard shortcuts:");
13
- console.log("");
14
- console.log("\u{1F4CB} Test Checklist:");
15
- console.log(" [ ] q - Quit TUI (should exit cleanly)");
16
- console.log(" [ ] Esc - Alternative quit (should exit cleanly)");
17
- console.log(" [ ] Ctrl+C - Force quit (should exit cleanly)");
18
- console.log(' [ ] r - Refresh data (should show "Manual refresh triggered")');
19
- console.log(" [ ] h - Show help (should display full help in logs)");
20
- console.log(" [ ] c - Clear logs (should clear log area and show confirmation)");
21
- console.log(" [ ] d - Detect swarms (should show registry status and process info)");
22
- console.log(" [ ] s - Start swarm help (should show example commands)");
23
- console.log(" [ ] t - Stop swarm (should show appropriate message)");
24
- console.log("");
25
- console.log("\u{1F3AF} Expected Behavior:");
26
- console.log(" - All shortcuts should work without errors");
27
- console.log(" - Log messages should appear in the bottom panel");
28
- console.log(" - Help text should be comprehensive");
29
- console.log(" - Detection should show registry and external processes");
30
- console.log(" - Interface should remain responsive");
31
- console.log("");
32
- console.log("Press Enter to launch TUI...");
33
- await new Promise((resolve) => {
34
- process.stdin.once("data", resolve);
35
- });
36
- async function testTUIShortcuts() {
37
- try {
38
- console.log("\u{1F680} Launching TUI for shortcut testing...");
39
- const tui = new SwarmTUI();
40
- await tui.initialize();
41
- tui.start();
42
- console.log("\u2705 TUI launched successfully");
43
- console.log("\u{1F4DD} Test each keyboard shortcut systematically");
44
- console.log('\u{1F3C1} Use "q" to quit when testing is complete');
45
- } catch (error) {
46
- logger.error("TUI shortcuts test failed", error);
47
- console.error("\u274C TUI shortcuts test failed:", error.message);
48
- process.exit(1);
49
- }
50
- }
51
- testTUIShortcuts();
52
- //# sourceMappingURL=test-tui-shortcuts.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../scripts/test-tui-shortcuts.ts"],
4
- "sourcesContent": ["#!/usr/bin/env npx tsx\n\n/**\n * Test script for TUI keyboard shortcuts\n * Tests all interactive features and key bindings\n */\n\nimport 'dotenv/config';\nimport { SwarmTUI } from '../src/features/tui/swarm-monitor.js';\nimport { logger } from '../src/core/monitoring/logger.js';\n\nconsole.log('\uD83E\uDDEA TUI Shortcuts Test Guide');\nconsole.log('============================');\nconsole.log('');\nconsole.log('This will launch the TUI. Test these keyboard shortcuts:');\nconsole.log('');\nconsole.log('\uD83D\uDCCB Test Checklist:');\nconsole.log(' [ ] q - Quit TUI (should exit cleanly)');\nconsole.log(' [ ] Esc - Alternative quit (should exit cleanly)');\nconsole.log(' [ ] Ctrl+C - Force quit (should exit cleanly)');\nconsole.log(' [ ] r - Refresh data (should show \"Manual refresh triggered\")');\nconsole.log(' [ ] h - Show help (should display full help in logs)');\nconsole.log(' [ ] c - Clear logs (should clear log area and show confirmation)');\nconsole.log(' [ ] d - Detect swarms (should show registry status and process info)');\nconsole.log(' [ ] s - Start swarm help (should show example commands)');\nconsole.log(' [ ] t - Stop swarm (should show appropriate message)');\nconsole.log('');\nconsole.log('\uD83C\uDFAF Expected Behavior:');\nconsole.log(' - All shortcuts should work without errors');\nconsole.log(' - Log messages should appear in the bottom panel');\nconsole.log(' - Help text should be comprehensive');\nconsole.log(' - Detection should show registry and external processes');\nconsole.log(' - Interface should remain responsive');\nconsole.log('');\nconsole.log('Press Enter to launch TUI...');\n\n// Wait for user input\nawait new Promise(resolve => {\n process.stdin.once('data', resolve);\n});\n\nasync function testTUIShortcuts() {\n try {\n console.log('\uD83D\uDE80 Launching TUI for shortcut testing...');\n \n const tui = new SwarmTUI();\n \n // Initialize TUI\n await tui.initialize();\n \n // Start the TUI\n tui.start();\n \n console.log('\u2705 TUI launched successfully');\n console.log('\uD83D\uDCDD Test each keyboard shortcut systematically');\n console.log('\uD83C\uDFC1 Use \"q\" to quit when testing is complete');\n \n } catch (error: unknown) {\n logger.error('TUI shortcuts test failed', error as Error);\n console.error('\u274C TUI shortcuts test failed:', (error as Error).message);\n process.exit(1);\n }\n}\n\n// Run the test\ntestTUIShortcuts();"],
5
- "mappings": ";;;;;AAOA,OAAO;AACP,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAEvB,QAAQ,IAAI,oCAA6B;AACzC,QAAQ,IAAI,8BAA8B;AAC1C,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,0DAA0D;AACtE,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,2BAAoB;AAChC,QAAQ,IAAI,0CAA0C;AACtD,QAAQ,IAAI,oDAAoD;AAChE,QAAQ,IAAI,iDAAiD;AAC7D,QAAQ,IAAI,iEAAiE;AAC7E,QAAQ,IAAI,wDAAwD;AACpE,QAAQ,IAAI,oEAAoE;AAChF,QAAQ,IAAI,wEAAwE;AACpF,QAAQ,IAAI,2DAA2D;AACvE,QAAQ,IAAI,wDAAwD;AACpE,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,8BAAuB;AACnC,QAAQ,IAAI,8CAA8C;AAC1D,QAAQ,IAAI,oDAAoD;AAChE,QAAQ,IAAI,uCAAuC;AACnD,QAAQ,IAAI,2DAA2D;AACvE,QAAQ,IAAI,wCAAwC;AACpD,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,8BAA8B;AAG1C,MAAM,IAAI,QAAQ,aAAW;AAC3B,UAAQ,MAAM,KAAK,QAAQ,OAAO;AACpC,CAAC;AAED,eAAe,mBAAmB;AAChC,MAAI;AACF,YAAQ,IAAI,iDAA0C;AAEtD,UAAM,MAAM,IAAI,SAAS;AAGzB,UAAM,IAAI,WAAW;AAGrB,QAAI,MAAM;AAEV,YAAQ,IAAI,kCAA6B;AACzC,YAAQ,IAAI,sDAA+C;AAC3D,YAAQ,IAAI,oDAA6C;AAAA,EAE3D,SAAS,OAAgB;AACvB,WAAO,MAAM,6BAA6B,KAAc;AACxD,YAAQ,MAAM,qCAAiC,MAAgB,OAAO;AACtE,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAGA,iBAAiB;",
6
- "names": []
7
- }
@@ -1,60 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- import { fileURLToPath as __fileURLToPath } from 'url';
3
- import { dirname as __pathDirname } from 'path';
4
- const __filename = __fileURLToPath(import.meta.url);
5
- const __dirname = __pathDirname(__filename);
6
- import "dotenv/config";
7
- import { SwarmTUI } from "../src/features/tui/swarm-monitor.js";
8
- import { logger } from "../src/core/monitoring/logger.js";
9
- async function validateTUIShortcuts() {
10
- try {
11
- console.log("\u{1F9EA} Validating TUI Keyboard Shortcuts...");
12
- const tui = new SwarmTUI();
13
- await tui.initialize();
14
- const screen = tui.screen;
15
- if (!screen) {
16
- throw new Error("Screen not initialized");
17
- }
18
- const keyHandlers = screen._events.key || [];
19
- console.log("\u{1F4CB} Validation Results:");
20
- console.log(`\u2705 Screen initialized: ${screen ? "Yes" : "No"}`);
21
- console.log(`\u2705 Key handlers registered: ${keyHandlers.length > 0 ? "Yes" : "No"}`);
22
- console.log("\n\u{1F50D} Testing Help Function:");
23
- try {
24
- tui.showHelp();
25
- console.log("\u2705 Help function works");
26
- } catch (error) {
27
- console.log("\u274C Help function failed:", error.message);
28
- }
29
- console.log("\n\u{1F50D} Testing Detect Function:");
30
- try {
31
- await tui.showDetectedSwarms();
32
- console.log("\u2705 Detect function works");
33
- } catch (error) {
34
- console.log("\u274C Detect function failed:", error.message);
35
- }
36
- console.log("\n\u{1F50D} Testing Refresh Function:");
37
- try {
38
- await tui.refreshData();
39
- console.log("\u2705 Refresh function works");
40
- } catch (error) {
41
- console.log("\u274C Refresh function failed:", error.message);
42
- }
43
- console.log("\n\u{1F50D} Testing Clear Logs Function:");
44
- try {
45
- tui.clearLogs();
46
- console.log("\u2705 Clear logs function works");
47
- } catch (error) {
48
- console.log("\u274C Clear logs function failed:", error.message);
49
- }
50
- tui.cleanup();
51
- console.log("\n\u2705 All TUI shortcut validations passed!");
52
- console.log("\u{1F4A1} Run scripts/test-tui-shortcuts.ts for interactive testing");
53
- } catch (error) {
54
- logger.error("TUI shortcuts validation failed", error);
55
- console.error("\u274C Validation failed:", error.message);
56
- process.exit(1);
57
- }
58
- }
59
- validateTUIShortcuts();
60
- //# sourceMappingURL=validate-tui-shortcuts.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../scripts/validate-tui-shortcuts.ts"],
4
- "sourcesContent": ["#!/usr/bin/env npx tsx\n\n/**\n * Validation script for TUI shortcuts (non-interactive)\n * Verifies all key handlers are properly bound\n */\n\nimport 'dotenv/config';\nimport { SwarmTUI } from '../src/features/tui/swarm-monitor.js';\nimport { logger } from '../src/core/monitoring/logger.js';\n\nasync function validateTUIShortcuts() {\n try {\n console.log('\uD83E\uDDEA Validating TUI Keyboard Shortcuts...');\n \n const tui = new SwarmTUI();\n await tui.initialize();\n \n // Access the screen object to check key handlers\n const screen = (tui as any).screen;\n \n if (!screen) {\n throw new Error('Screen not initialized');\n }\n \n // Check if key handlers exist\n const keyHandlers = screen._events.key || [];\n \n console.log('\uD83D\uDCCB Validation Results:');\n console.log(`\u2705 Screen initialized: ${screen ? 'Yes' : 'No'}`);\n console.log(`\u2705 Key handlers registered: ${keyHandlers.length > 0 ? 'Yes' : 'No'}`);\n \n // Test the help functionality directly\n console.log('\\n\uD83D\uDD0D Testing Help Function:');\n try {\n (tui as any).showHelp();\n console.log('\u2705 Help function works');\n } catch (error: unknown) {\n console.log('\u274C Help function failed:', (error as Error).message);\n }\n \n // Test the detect function\n console.log('\\n\uD83D\uDD0D Testing Detect Function:');\n try {\n await (tui as any).showDetectedSwarms();\n console.log('\u2705 Detect function works');\n } catch (error: unknown) {\n console.log('\u274C Detect function failed:', (error as Error).message);\n }\n \n // Test refresh function\n console.log('\\n\uD83D\uDD0D Testing Refresh Function:');\n try {\n await (tui as any).refreshData();\n console.log('\u2705 Refresh function works');\n } catch (error: unknown) {\n console.log('\u274C Refresh function failed:', (error as Error).message);\n }\n \n // Test clear logs function\n console.log('\\n\uD83D\uDD0D Testing Clear Logs Function:');\n try {\n (tui as any).clearLogs();\n console.log('\u2705 Clear logs function works');\n } catch (error: unknown) {\n console.log('\u274C Clear logs function failed:', (error as Error).message);\n }\n \n // Cleanup\n (tui as any).cleanup();\n \n console.log('\\n\u2705 All TUI shortcut validations passed!');\n console.log('\uD83D\uDCA1 Run scripts/test-tui-shortcuts.ts for interactive testing');\n \n } catch (error: unknown) {\n logger.error('TUI shortcuts validation failed', error as Error);\n console.error('\u274C Validation failed:', (error as Error).message);\n process.exit(1);\n }\n}\n\n// Run validation\nvalidateTUIShortcuts();"],
5
- "mappings": ";;;;;AAOA,OAAO;AACP,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAEvB,eAAe,uBAAuB;AACpC,MAAI;AACF,YAAQ,IAAI,gDAAyC;AAErD,UAAM,MAAM,IAAI,SAAS;AACzB,UAAM,IAAI,WAAW;AAGrB,UAAM,SAAU,IAAY;AAE5B,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,wBAAwB;AAAA,IAC1C;AAGA,UAAM,cAAc,OAAO,QAAQ,OAAO,CAAC;AAE3C,YAAQ,IAAI,+BAAwB;AACpC,YAAQ,IAAI,8BAAyB,SAAS,QAAQ,IAAI,EAAE;AAC5D,YAAQ,IAAI,mCAA8B,YAAY,SAAS,IAAI,QAAQ,IAAI,EAAE;AAGjF,YAAQ,IAAI,oCAA6B;AACzC,QAAI;AACF,MAAC,IAAY,SAAS;AACtB,cAAQ,IAAI,4BAAuB;AAAA,IACrC,SAAS,OAAgB;AACvB,cAAQ,IAAI,gCAA4B,MAAgB,OAAO;AAAA,IACjE;AAGA,YAAQ,IAAI,sCAA+B;AAC3C,QAAI;AACF,YAAO,IAAY,mBAAmB;AACtC,cAAQ,IAAI,8BAAyB;AAAA,IACvC,SAAS,OAAgB;AACvB,cAAQ,IAAI,kCAA8B,MAAgB,OAAO;AAAA,IACnE;AAGA,YAAQ,IAAI,uCAAgC;AAC5C,QAAI;AACF,YAAO,IAAY,YAAY;AAC/B,cAAQ,IAAI,+BAA0B;AAAA,IACxC,SAAS,OAAgB;AACvB,cAAQ,IAAI,mCAA+B,MAAgB,OAAO;AAAA,IACpE;AAGA,YAAQ,IAAI,0CAAmC;AAC/C,QAAI;AACF,MAAC,IAAY,UAAU;AACvB,cAAQ,IAAI,kCAA6B;AAAA,IAC3C,SAAS,OAAgB;AACvB,cAAQ,IAAI,sCAAkC,MAAgB,OAAO;AAAA,IACvE;AAGA,IAAC,IAAY,QAAQ;AAErB,YAAQ,IAAI,+CAA0C;AACtD,YAAQ,IAAI,qEAA8D;AAAA,EAE5E,SAAS,OAAgB;AACvB,WAAO,MAAM,mCAAmC,KAAc;AAC9D,YAAQ,MAAM,6BAAyB,MAAgB,OAAO;AAC9D,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAGA,qBAAqB;",
6
- "names": []
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../../src/agents/core/agent-task-manager.ts"],
4
- "sourcesContent": ["/**\n * Agent Task Manager - Spotify-inspired task handling for StackMemory\n *\n * Integrates Spotify's background coding agent strategies:\n * - 10-turn session limits with automatic task breakdown\n * - Strong verification loops with incremental feedback\n * - Context-aware task prioritization\n * - LLM judge for semantic validation\n */\n\nimport {\n LinearTaskManager,\n PebblesTask,\n TaskStatus,\n TaskPriority,\n} from '../../features/tasks/linear-task-manager.js';\nimport { logger } from '../../core/monitoring/logger.js';\nimport { FrameManager } from '../../core/context/index.js';\nimport { TaskError, ErrorCode } from '../../core/errors/index.js';\n\nexport interface AgentTaskSession {\n id: string;\n frameId: string;\n taskId: string;\n turnCount: number;\n maxTurns: number;\n status: 'active' | 'completed' | 'failed' | 'timeout';\n startedAt: Date;\n completedAt?: Date;\n verificationResults: VerificationResult[];\n contextWindow: string[];\n feedbackLoop: FeedbackEntry[];\n}\n\nexport interface VerificationResult {\n verifierId: string;\n passed: boolean;\n message: string;\n severity: 'error' | 'warning' | 'info';\n timestamp: Date;\n autoFix?: string;\n}\n\nexport interface FeedbackEntry {\n turn: number;\n action: string;\n result: string;\n verificationPassed: boolean;\n contextAdjustment?: string;\n}\n\nexport interface TaskBreakdown {\n parentTaskId: string;\n subtasks: SubtaskDefinition[];\n dependencies: Map<string, string[]>;\n estimatedTurns: number;\n}\n\nexport interface SubtaskDefinition {\n title: string;\n description: string;\n acceptanceCriteria: string[];\n estimatedTurns: number;\n verifiers: string[];\n}\n\n/**\n * Supported agent types\n */\nexport enum AgentType {\n FORMATTER = 'formatter',\n SECURITY = 'security',\n TESTING = 'testing',\n PERFORMANCE = 'performance',\n DOCUMENTATION = 'documentation',\n REFACTORING = 'refactoring'\n}\n\n/**\n * Spotify-inspired Agent Task Manager\n */\nexport class AgentTaskManager {\n private taskStore: LinearTaskManager;\n private frameManager: FrameManager;\n private activeSessions: Map<string, AgentTaskSession> = new Map();\n private sessionTimeouts: Map<string, NodeJS.Timeout> = new Map();\n private agentRegistry: Map<AgentType, any> = new Map();\n\n // Spotify strategy constants\n private readonly MAX_TURNS_PER_SESSION = 10;\n private readonly MAX_SESSION_RETRIES = 3;\n private readonly SESSION_TIMEOUT_MS = 30 * 60 * 1000; // 30 minutes\n private readonly CONTEXT_WINDOW_SIZE = 5; // Last 5 significant events\n\n constructor(taskStore: LinearTaskManager, frameManager: FrameManager) {\n this.taskStore = taskStore;\n this.frameManager = frameManager;\n }\n\n /**\n * Start a new agent task session with Spotify's 10-turn limit\n */\n async startTaskSession(\n taskId: string,\n frameId: string\n ): Promise<AgentTaskSession> {\n const task = this.taskStore.getTask(taskId);\n if (!task) {\n throw new TaskError(\n `Task ${taskId} not found`,\n ErrorCode.TASK_NOT_FOUND,\n { taskId }\n );\n }\n\n // Check if task needs breakdown (Spotify strategy)\n if (this.needsBreakdown(task)) {\n const breakdown = await this.breakdownTask(task);\n return this.startMultiTaskSession(breakdown, frameId);\n }\n\n const sessionId = this.generateSessionId(taskId);\n const session: AgentTaskSession = {\n id: sessionId,\n frameId,\n taskId,\n turnCount: 0,\n maxTurns: this.MAX_TURNS_PER_SESSION,\n status: 'active',\n startedAt: new Date(),\n verificationResults: [],\n contextWindow: [],\n feedbackLoop: [],\n };\n\n this.activeSessions.set(sessionId, session);\n this.startSessionTimeout(sessionId);\n\n // Update task status\n this.taskStore.updateTaskStatus(\n taskId,\n 'in_progress',\n 'Agent session started'\n );\n\n logger.info('Started agent task session', {\n sessionId,\n taskId,\n taskTitle: task.title,\n maxTurns: this.MAX_TURNS_PER_SESSION,\n });\n\n return session;\n }\n\n /**\n * Execute a turn in the session with verification\n */\n async executeTurn(\n sessionId: string,\n action: string,\n context: Record<string, any>\n ): Promise<{\n success: boolean;\n feedback: string;\n shouldContinue: boolean;\n verificationResults: VerificationResult[];\n }> {\n const session = this.activeSessions.get(sessionId);\n if (!session || session.status !== 'active') {\n throw new TaskError(\n 'Invalid or inactive session',\n ErrorCode.TASK_INVALID_STATE,\n { sessionId }\n );\n }\n\n session.turnCount++;\n\n // Check turn limit (Spotify strategy)\n if (session.turnCount >= session.maxTurns) {\n return this.handleTurnLimitReached(session);\n }\n\n // Execute action with verification loop\n const verificationResults = await this.runVerificationLoop(\n action,\n context,\n session\n );\n\n // Update context window (keep last N significant events)\n this.updateContextWindow(session, action, verificationResults);\n\n // Generate feedback based on verification\n const feedback = this.generateFeedback(verificationResults);\n const success = verificationResults.every(\n (r) => r.passed || r.severity !== 'error'\n );\n\n // Record in feedback loop\n session.feedbackLoop.push({\n turn: session.turnCount,\n action,\n result: feedback,\n verificationPassed: success,\n contextAdjustment:\n this.suggestContextAdjustment(verificationResults) || undefined,\n });\n\n // Determine if should continue\n const shouldContinue = success && session.turnCount < session.maxTurns;\n\n if (!shouldContinue && success) {\n await this.completeSession(session);\n }\n\n return {\n success,\n feedback,\n shouldContinue,\n verificationResults,\n };\n }\n\n /**\n * Run Spotify-style verification loop\n */\n private async runVerificationLoop(\n action: string,\n context: Record<string, any>,\n session: AgentTaskSession\n ): Promise<VerificationResult[]> {\n const results: VerificationResult[] = [];\n\n // Get applicable verifiers based on context\n const verifiers = this.getApplicableVerifiers(context);\n\n for (const verifier of verifiers) {\n const result = await this.runVerifier(verifier, action, context);\n results.push(result);\n session.verificationResults.push(result);\n\n // Stop on critical errors (Spotify strategy)\n if (!result.passed && result.severity === 'error') {\n logger.warn('Verification failed, stopping execution', {\n verifier: result.verifierId,\n message: result.message,\n });\n break;\n }\n }\n\n return results;\n }\n\n /**\n * Get verifiers applicable to current context\n */\n private getApplicableVerifiers(context: Record<string, any>): string[] {\n const verifiers: string[] = [];\n\n // Add verifiers based on context (Spotify's context-aware approach)\n if (context['codeChange']) {\n verifiers.push('formatter', 'linter', 'type-checker');\n }\n if (context['testsPresent']) {\n verifiers.push('test-runner');\n }\n if (context['hasDocumentation']) {\n verifiers.push('doc-validator');\n }\n if (context['performanceCritical']) {\n verifiers.push('performance-analyzer');\n }\n\n // Always include semantic validator (LLM judge from Spotify)\n verifiers.push('semantic-validator');\n\n return verifiers;\n }\n\n /**\n * Run a single verifier\n */\n private async runVerifier(\n verifierId: string,\n action: string,\n context: Record<string, any>\n ): Promise<VerificationResult> {\n // This would integrate with actual verifiers\n // For now, return mock result\n const mockResults: Record<string, () => VerificationResult> = {\n formatter: () => ({\n verifierId: 'formatter',\n passed: Math.random() > 0.1,\n message: 'Code formatting check',\n severity: 'warning',\n timestamp: new Date(),\n autoFix: 'prettier --write',\n }),\n linter: () => ({\n verifierId: 'linter',\n passed: Math.random() > 0.2,\n message: 'Linting check',\n severity: 'error',\n timestamp: new Date(),\n }),\n 'test-runner': () => ({\n verifierId: 'test-runner',\n passed: Math.random() > 0.3,\n message: 'Test execution',\n severity: 'error',\n timestamp: new Date(),\n }),\n 'semantic-validator': () => ({\n verifierId: 'semantic-validator',\n passed: Math.random() > 0.25, // ~75% pass rate like Spotify\n message: 'Semantic validation against original requirements',\n severity: 'error',\n timestamp: new Date(),\n }),\n };\n\n const verifierFn =\n mockResults[verifierId] ||\n (() => ({\n verifierId,\n passed: true,\n message: 'Unknown verifier',\n severity: 'info' as const,\n timestamp: new Date(),\n }));\n\n return verifierFn();\n }\n\n /**\n * Check if task needs breakdown (Spotify strategy for complex tasks)\n */\n private needsBreakdown(task: PebblesTask): boolean {\n // Heuristics for determining if task is too complex\n const indicators = {\n hasMultipleComponents:\n (task.description?.match(/\\band\\b/gi)?.length || 0) > 2,\n longDescription: (task.description?.length || 0) > 500,\n highComplexityTags: task.tags.some((tag) =>\n ['refactor', 'migration', 'architecture', 'redesign'].includes(\n tag.toLowerCase()\n )\n ),\n hasManydependencies: task.depends_on.length > 3,\n };\n\n const complexityScore = Object.values(indicators).filter(Boolean).length;\n return complexityScore >= 2;\n }\n\n /**\n * Break down complex task into subtasks\n */\n private async breakdownTask(task: PebblesTask): Promise<TaskBreakdown> {\n // This would use LLM to intelligently break down the task\n // For now, return a simple breakdown\n const subtasks: SubtaskDefinition[] = [\n {\n title: `Analyze requirements for ${task.title}`,\n description: 'Understand and document requirements',\n acceptanceCriteria: [\n 'Requirements documented',\n 'Constraints identified',\n ],\n estimatedTurns: 2,\n verifiers: ['semantic-validator'],\n },\n {\n title: `Implement core functionality for ${task.title}`,\n description: 'Build the main implementation',\n acceptanceCriteria: ['Core logic implemented', 'Tests passing'],\n estimatedTurns: 5,\n verifiers: ['linter', 'test-runner'],\n },\n {\n title: `Verify and refine ${task.title}`,\n description: 'Final verification and improvements',\n acceptanceCriteria: ['All tests passing', 'Documentation complete'],\n estimatedTurns: 3,\n verifiers: ['formatter', 'linter', 'test-runner', 'semantic-validator'],\n },\n ];\n\n return {\n parentTaskId: task.id,\n subtasks,\n dependencies: new Map([\n [subtasks[1]!.title, [subtasks[0]!.title]],\n [subtasks[2]!.title, [subtasks[1]!.title]],\n ]),\n estimatedTurns: subtasks.reduce((sum, st) => sum + st.estimatedTurns, 0),\n };\n }\n\n /**\n * Start multi-task session for complex tasks\n */\n private async startMultiTaskSession(\n breakdown: TaskBreakdown,\n frameId: string\n ): Promise<AgentTaskSession> {\n // Create subtasks in task store\n const subtaskIds: string[] = [];\n\n for (const subtask of breakdown.subtasks) {\n const subtaskId = this.taskStore.createTask({\n title: subtask.title,\n description: subtask.description,\n frameId,\n parentId: breakdown.parentTaskId,\n tags: ['agent-subtask', ...subtask.verifiers],\n estimatedEffort: subtask.estimatedTurns * 5, // Rough conversion to minutes\n });\n subtaskIds.push(subtaskId);\n }\n\n // Add dependencies\n const titleToId = new Map(\n breakdown.subtasks.map((st, i) => [st.title, subtaskIds[i]])\n );\n\n for (const [title, deps] of breakdown.dependencies) {\n const taskId = titleToId.get(title);\n if (taskId) {\n for (const dep of deps) {\n const depId = titleToId.get(dep);\n if (depId) {\n this.taskStore.addDependency(taskId, depId);\n }\n }\n }\n }\n\n // Start session for first subtask\n return this.startTaskSession(subtaskIds[0]!, frameId);\n }\n\n /**\n * Update context window with significant events\n */\n private updateContextWindow(\n session: AgentTaskSession,\n action: string,\n verificationResults: VerificationResult[]\n ): void {\n const significantEvent = {\n turn: session.turnCount,\n action: action.substring(0, 100),\n verificationSummary: verificationResults.map((r) => ({\n verifier: r.verifierId,\n passed: r.passed,\n })),\n timestamp: new Date().toISOString(),\n };\n\n session.contextWindow.push(JSON.stringify(significantEvent));\n\n // Keep only last N events (Spotify's context window optimization)\n if (session.contextWindow.length > this.CONTEXT_WINDOW_SIZE) {\n session.contextWindow = session.contextWindow.slice(\n -this.CONTEXT_WINDOW_SIZE\n );\n }\n }\n\n /**\n * Generate feedback from verification results\n */\n private generateFeedback(results: VerificationResult[]): string {\n const failed = results.filter((r) => !r.passed);\n const warnings = results.filter(\n (r) => !r.passed && r.severity === 'warning'\n );\n const errors = results.filter((r) => !r.passed && r.severity === 'error');\n\n if (errors.length > 0) {\n const errorMessages = errors.map((e) => `- ${e.message}`).join('\\n');\n return `Verification failed with ${errors.length} error(s):\\n${errorMessages}`;\n }\n\n if (warnings.length > 0) {\n const warningMessages = warnings.map((w) => `- ${w.message}`).join('\\n');\n return `Verification passed with ${warnings.length} warning(s):\\n${warningMessages}`;\n }\n\n return 'All verifications passed successfully';\n }\n\n /**\n * Suggest context adjustment based on verification results\n */\n private suggestContextAdjustment(\n results: VerificationResult[]\n ): string | undefined {\n const failed = results.filter((r) => !r.passed && r.severity === 'error');\n\n if (failed.length === 0) {\n return undefined;\n }\n\n // Generate suggestions based on failure patterns\n const suggestions: string[] = [];\n\n if (failed.some((r) => r.verifierId === 'test-runner')) {\n suggestions.push('Focus on fixing failing tests');\n }\n if (failed.some((r) => r.verifierId === 'linter')) {\n suggestions.push('Address linting errors before proceeding');\n }\n if (failed.some((r) => r.verifierId === 'semantic-validator')) {\n suggestions.push('Review original requirements and adjust approach');\n }\n\n return suggestions.length > 0 ? suggestions.join('; ') : undefined;\n }\n\n /**\n * Handle turn limit reached\n */\n private async handleTurnLimitReached(session: AgentTaskSession): Promise<{\n success: boolean;\n feedback: string;\n shouldContinue: boolean;\n verificationResults: VerificationResult[];\n }> {\n logger.warn('Session reached turn limit', {\n sessionId: session.id,\n taskId: session.taskId,\n turnCount: session.turnCount,\n });\n\n // Check if task can be considered complete\n const task = this.taskStore.getTask(session.taskId);\n const isComplete = this.assessTaskCompletion(session);\n\n if (isComplete) {\n await this.completeSession(session);\n return {\n success: true,\n feedback: 'Task completed successfully within turn limit',\n shouldContinue: false,\n verificationResults: [],\n };\n }\n\n // Mark session as timeout\n session.status = 'timeout';\n this.taskStore.updateTaskStatus(\n session.taskId,\n 'blocked',\n 'Session timeout - manual review needed'\n );\n\n return {\n success: false,\n feedback: `Session reached ${this.MAX_TURNS_PER_SESSION} turn limit. Task requires manual review or retry.`,\n shouldContinue: false,\n verificationResults: [],\n };\n }\n\n /**\n * Assess if task is complete enough\n */\n private assessTaskCompletion(session: AgentTaskSession): boolean {\n // Check if recent verifications are passing\n const recentResults = session.verificationResults.slice(-5);\n const recentPassRate =\n recentResults.filter((r) => r.passed).length / recentResults.length;\n\n // Check if semantic validator passed recently (Spotify's LLM judge)\n const semanticPassed = recentResults.some(\n (r) => r.verifierId === 'semantic-validator' && r.passed\n );\n\n return recentPassRate >= 0.8 && semanticPassed;\n }\n\n /**\n * Complete a session\n */\n private async completeSession(session: AgentTaskSession): Promise<void> {\n session.status = 'completed';\n session.completedAt = new Date();\n\n // Update task status\n this.taskStore.updateTaskStatus(\n session.taskId,\n 'completed',\n 'Agent session completed'\n );\n\n // Clear timeout\n const timeout = this.sessionTimeouts.get(session.id);\n if (timeout) {\n clearTimeout(timeout);\n this.sessionTimeouts.delete(session.id);\n }\n\n // Generate and save session summary to frame\n const summary = this.generateSessionSummary(session);\n this.frameManager.addEvent('observation', {\n type: 'session_summary',\n frameId: session.frameId,\n summary,\n });\n\n logger.info('Session completed', {\n sessionId: session.id,\n taskId: session.taskId,\n turnCount: session.turnCount,\n duration: session.completedAt.getTime() - session.startedAt.getTime(),\n });\n }\n\n /**\n * Generate session summary for frame digest\n */\n private generateSessionSummary(\n session: AgentTaskSession\n ): Record<string, any> {\n const verificationStats = {\n total: session.verificationResults.length,\n passed: session.verificationResults.filter((r) => r.passed).length,\n failed: session.verificationResults.filter((r) => !r.passed).length,\n };\n\n return {\n sessionId: session.id,\n taskId: session.taskId,\n status: session.status,\n turnCount: session.turnCount,\n duration: session.completedAt\n ? session.completedAt.getTime() - session.startedAt.getTime()\n : 0,\n verificationStats,\n feedbackLoop: session.feedbackLoop.slice(-3), // Last 3 feedback entries\n contextWindow: session.contextWindow.slice(-2), // Last 2 context entries\n };\n }\n\n /**\n * Start timeout for session\n */\n private startSessionTimeout(sessionId: string): void {\n const timeout = setTimeout(() => {\n const session = this.activeSessions.get(sessionId);\n if (session && session.status === 'active') {\n session.status = 'timeout';\n this.taskStore.updateTaskStatus(\n session.taskId,\n 'blocked',\n 'Session timeout - no activity'\n );\n logger.warn('Session timed out due to inactivity', { sessionId });\n }\n }, this.SESSION_TIMEOUT_MS);\n\n this.sessionTimeouts.set(sessionId, timeout);\n }\n\n /**\n * Generate unique session ID\n */\n private generateSessionId(taskId: string): string {\n return `session-${taskId}-${Date.now()}`;\n }\n\n /**\n * Get active sessions summary\n */\n getActiveSessions(): Array<{\n sessionId: string;\n taskId: string;\n turnCount: number;\n status: string;\n startedAt: Date;\n }> {\n return Array.from(this.activeSessions.values()).map((session) => ({\n sessionId: session.id,\n taskId: session.taskId,\n turnCount: session.turnCount,\n status: session.status,\n startedAt: session.startedAt,\n }));\n }\n\n /**\n * Retry a failed session (Spotify's 3-retry strategy)\n */\n async retrySession(sessionId: string): Promise<AgentTaskSession | null> {\n const session = this.activeSessions.get(sessionId);\n if (!session || session.status === 'active') {\n return null;\n }\n\n // Count previous retries\n const retryCount = Array.from(this.activeSessions.values()).filter(\n (s) => s.taskId === session.taskId && s.status === 'failed'\n ).length;\n\n if (retryCount >= this.MAX_SESSION_RETRIES) {\n logger.warn('Max retries reached for task', {\n taskId: session.taskId,\n retries: retryCount,\n });\n return null;\n }\n\n // Start new session with learned context\n const newSession = await this.startTaskSession(\n session.taskId,\n session.frameId\n );\n\n // Transfer learned context from previous session\n newSession.contextWindow = session.contextWindow.slice(-3);\n newSession.feedbackLoop = [\n {\n turn: 0,\n action: 'Session retry with learned context',\n result: `Retrying after ${retryCount} previous attempts`,\n verificationPassed: true,\n contextAdjustment: session.feedbackLoop\n .filter((f) => f.contextAdjustment)\n .map((f) => f.contextAdjustment)\n .join('; '),\n },\n ];\n\n return newSession;\n }\n}\n"],
5
- "mappings": "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",
6
- "names": ["AgentType"]
7
- }