@stackmemoryai/stackmemory 0.5.5 → 0.5.6

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 (490) hide show
  1. package/dist/agents/core/agent-task-manager.js +4 -0
  2. package/dist/agents/core/agent-task-manager.js.map +1 -1
  3. package/dist/agents/testing-agent.js +4 -0
  4. package/dist/agents/testing-agent.js.map +1 -1
  5. package/dist/agents/verifiers/base-verifier.js +4 -0
  6. package/dist/agents/verifiers/base-verifier.js.map +1 -1
  7. package/dist/agents/verifiers/formatter-verifier.js +4 -0
  8. package/dist/agents/verifiers/formatter-verifier.js.map +1 -1
  9. package/dist/agents/verifiers/llm-judge.js +4 -0
  10. package/dist/agents/verifiers/llm-judge.js.map +1 -1
  11. package/dist/cli/auto-detect.js +4 -0
  12. package/dist/cli/auto-detect.js.map +1 -1
  13. package/dist/cli/browser-test.js +4 -0
  14. package/dist/cli/browser-test.js.map +1 -1
  15. package/dist/cli/claude-sm-danger.js +4 -3
  16. package/dist/cli/claude-sm-danger.js.map +2 -2
  17. package/dist/cli/claude-sm.js +4 -0
  18. package/dist/cli/claude-sm.js.map +2 -2
  19. package/dist/cli/codex-sm.js +4 -0
  20. package/dist/cli/codex-sm.js.map +1 -1
  21. package/dist/cli/commands/api.js +4 -0
  22. package/dist/cli/commands/api.js.map +1 -1
  23. package/dist/cli/commands/cleanup-processes.js +4 -0
  24. package/dist/cli/commands/cleanup-processes.js.map +1 -1
  25. package/dist/cli/commands/clear.js +4 -0
  26. package/dist/cli/commands/clear.js.map +1 -1
  27. package/dist/cli/commands/config.js +4 -0
  28. package/dist/cli/commands/config.js.map +1 -1
  29. package/dist/cli/commands/context-rehydrate.js +4 -0
  30. package/dist/cli/commands/context-rehydrate.js.map +1 -1
  31. package/dist/cli/commands/context.js +4 -0
  32. package/dist/cli/commands/context.js.map +1 -1
  33. package/dist/cli/commands/dashboard.js +4 -0
  34. package/dist/cli/commands/dashboard.js.map +1 -1
  35. package/dist/cli/commands/db.js +4 -0
  36. package/dist/cli/commands/db.js.map +1 -1
  37. package/dist/cli/commands/decision.js +4 -0
  38. package/dist/cli/commands/decision.js.map +1 -1
  39. package/dist/cli/commands/handoff.js +4 -0
  40. package/dist/cli/commands/handoff.js.map +1 -1
  41. package/dist/cli/commands/hooks.js +4 -0
  42. package/dist/cli/commands/hooks.js.map +1 -1
  43. package/dist/cli/commands/linear-unified.js +4 -0
  44. package/dist/cli/commands/linear-unified.js.map +1 -1
  45. package/dist/cli/commands/linear.js +4 -0
  46. package/dist/cli/commands/linear.js.map +1 -1
  47. package/dist/cli/commands/log.js +4 -0
  48. package/dist/cli/commands/log.js.map +1 -1
  49. package/dist/cli/commands/login.js +4 -0
  50. package/dist/cli/commands/login.js.map +1 -1
  51. package/dist/cli/commands/migrate.js +4 -0
  52. package/dist/cli/commands/migrate.js.map +1 -1
  53. package/dist/cli/commands/monitor.js +4 -0
  54. package/dist/cli/commands/monitor.js.map +1 -1
  55. package/dist/cli/commands/onboard.js +4 -0
  56. package/dist/cli/commands/onboard.js.map +1 -1
  57. package/dist/cli/commands/projects.js +4 -0
  58. package/dist/cli/commands/projects.js.map +1 -1
  59. package/dist/cli/commands/quality.js +4 -0
  60. package/dist/cli/commands/quality.js.map +1 -1
  61. package/dist/cli/commands/ralph.js +4 -0
  62. package/dist/cli/commands/ralph.js.map +1 -1
  63. package/dist/cli/commands/search.js +4 -0
  64. package/dist/cli/commands/search.js.map +1 -1
  65. package/dist/cli/commands/service.js +4 -0
  66. package/dist/cli/commands/service.js.map +1 -1
  67. package/dist/cli/commands/session.js +4 -0
  68. package/dist/cli/commands/session.js.map +1 -1
  69. package/dist/cli/commands/shell.js +5 -4
  70. package/dist/cli/commands/shell.js.map +2 -2
  71. package/dist/cli/commands/signup.js +4 -0
  72. package/dist/cli/commands/signup.js.map +1 -1
  73. package/dist/cli/commands/skills.js +4 -0
  74. package/dist/cli/commands/skills.js.map +1 -1
  75. package/dist/cli/commands/storage-tier.js +4 -0
  76. package/dist/cli/commands/storage-tier.js.map +1 -1
  77. package/dist/cli/commands/storage.js +4 -0
  78. package/dist/cli/commands/storage.js.map +1 -1
  79. package/dist/cli/commands/sweep.js +5 -4
  80. package/dist/cli/commands/sweep.js.map +2 -2
  81. package/dist/cli/commands/tasks.js +4 -0
  82. package/dist/cli/commands/tasks.js.map +1 -1
  83. package/dist/cli/commands/test.js +4 -0
  84. package/dist/cli/commands/test.js.map +1 -1
  85. package/dist/cli/commands/workflow.js +4 -0
  86. package/dist/cli/commands/workflow.js.map +1 -1
  87. package/dist/cli/commands/worktree.js +4 -0
  88. package/dist/cli/commands/worktree.js.map +1 -1
  89. package/dist/cli/index.js +4 -0
  90. package/dist/cli/index.js.map +1 -1
  91. package/dist/cli/utils/viewer.js +4 -0
  92. package/dist/cli/utils/viewer.js.map +1 -1
  93. package/dist/core/analytics/team-analytics.js +4 -0
  94. package/dist/core/analytics/team-analytics.js.map +1 -1
  95. package/dist/core/config/config-manager.js +4 -0
  96. package/dist/core/config/config-manager.js.map +1 -1
  97. package/dist/core/config/storage-config.js +4 -0
  98. package/dist/core/config/storage-config.js.map +1 -1
  99. package/dist/core/config/types.js +4 -0
  100. package/dist/core/config/types.js.map +1 -1
  101. package/dist/core/context/auto-context.js +4 -0
  102. package/dist/core/context/auto-context.js.map +1 -1
  103. package/dist/core/context/compaction-handler.js +4 -0
  104. package/dist/core/context/compaction-handler.js.map +1 -1
  105. package/dist/core/context/context-bridge.js +4 -0
  106. package/dist/core/context/context-bridge.js.map +1 -1
  107. package/dist/core/context/dual-stack-manager.js +4 -0
  108. package/dist/core/context/dual-stack-manager.js.map +1 -1
  109. package/dist/core/context/enhanced-rehydration.js +4 -0
  110. package/dist/core/context/enhanced-rehydration.js.map +1 -1
  111. package/dist/core/context/frame-database.js +4 -0
  112. package/dist/core/context/frame-database.js.map +1 -1
  113. package/dist/core/context/frame-digest.js +4 -0
  114. package/dist/core/context/frame-digest.js.map +1 -1
  115. package/dist/core/context/frame-handoff-manager.js +4 -0
  116. package/dist/core/context/frame-handoff-manager.js.map +1 -1
  117. package/dist/core/context/frame-manager.js +4 -0
  118. package/dist/core/context/frame-manager.js.map +1 -1
  119. package/dist/core/context/frame-stack.js +4 -0
  120. package/dist/core/context/frame-stack.js.map +1 -1
  121. package/dist/core/context/frame-types.js +4 -0
  122. package/dist/core/context/incremental-gc.js +4 -0
  123. package/dist/core/context/incremental-gc.js.map +1 -1
  124. package/dist/core/context/index.js +4 -0
  125. package/dist/core/context/index.js.map +1 -1
  126. package/dist/core/context/model-aware-compaction.js +4 -0
  127. package/dist/core/context/model-aware-compaction.js.map +1 -1
  128. package/dist/core/context/permission-manager.js +4 -0
  129. package/dist/core/context/permission-manager.js.map +1 -1
  130. package/dist/core/context/recursive-context-manager.js +4 -0
  131. package/dist/core/context/recursive-context-manager.js.map +1 -1
  132. package/dist/core/context/refactored-frame-manager.js +4 -0
  133. package/dist/core/context/refactored-frame-manager.js.map +1 -1
  134. package/dist/core/context/shared-context-layer.js +4 -0
  135. package/dist/core/context/shared-context-layer.js.map +1 -1
  136. package/dist/core/context/stack-merge-resolver.js +4 -0
  137. package/dist/core/context/stack-merge-resolver.js.map +1 -1
  138. package/dist/core/context/validation.js +4 -0
  139. package/dist/core/context/validation.js.map +1 -1
  140. package/dist/core/database/batch-operations.js +4 -0
  141. package/dist/core/database/batch-operations.js.map +1 -1
  142. package/dist/core/database/connection-pool.js +4 -0
  143. package/dist/core/database/connection-pool.js.map +1 -1
  144. package/dist/core/database/database-adapter.js +4 -0
  145. package/dist/core/database/database-adapter.js.map +1 -1
  146. package/dist/core/database/migration-manager.js +4 -0
  147. package/dist/core/database/migration-manager.js.map +1 -1
  148. package/dist/core/database/paradedb-adapter.js +4 -0
  149. package/dist/core/database/paradedb-adapter.js.map +1 -1
  150. package/dist/core/database/query-cache.js +4 -0
  151. package/dist/core/database/query-cache.js.map +1 -1
  152. package/dist/core/database/query-router.js +4 -0
  153. package/dist/core/database/query-router.js.map +1 -1
  154. package/dist/core/database/sqlite-adapter.js +4 -0
  155. package/dist/core/database/sqlite-adapter.js.map +1 -1
  156. package/dist/core/digest/enhanced-hybrid-digest.js +4 -0
  157. package/dist/core/digest/enhanced-hybrid-digest.js.map +1 -1
  158. package/dist/core/digest/frame-digest-integration.js +4 -0
  159. package/dist/core/digest/frame-digest-integration.js.map +1 -1
  160. package/dist/core/digest/hybrid-digest-generator.js +4 -0
  161. package/dist/core/digest/hybrid-digest-generator.js.map +1 -1
  162. package/dist/core/digest/index.js +4 -0
  163. package/dist/core/digest/index.js.map +1 -1
  164. package/dist/core/digest/types.js +4 -0
  165. package/dist/core/digest/types.js.map +1 -1
  166. package/dist/core/errors/index.js +4 -0
  167. package/dist/core/errors/index.js.map +1 -1
  168. package/dist/core/errors/recovery.js +4 -0
  169. package/dist/core/errors/recovery.js.map +1 -1
  170. package/dist/core/execution/parallel-executor.js +4 -0
  171. package/dist/core/execution/parallel-executor.js.map +1 -1
  172. package/dist/core/frame/workflow-templates.js +4 -0
  173. package/dist/core/frame/workflow-templates.js.map +1 -1
  174. package/dist/core/merge/conflict-detector.js +4 -0
  175. package/dist/core/merge/conflict-detector.js.map +1 -1
  176. package/dist/core/merge/index.js +4 -0
  177. package/dist/core/merge/index.js.map +1 -1
  178. package/dist/core/merge/resolution-engine.js +4 -0
  179. package/dist/core/merge/resolution-engine.js.map +1 -1
  180. package/dist/core/merge/stack-diff.js +4 -0
  181. package/dist/core/merge/stack-diff.js.map +1 -1
  182. package/dist/core/merge/types.js +4 -0
  183. package/dist/core/monitoring/error-handler.js +4 -0
  184. package/dist/core/monitoring/error-handler.js.map +1 -1
  185. package/dist/core/monitoring/logger.js +4 -0
  186. package/dist/core/monitoring/logger.js.map +1 -1
  187. package/dist/core/monitoring/metrics.js +4 -0
  188. package/dist/core/monitoring/metrics.js.map +1 -1
  189. package/dist/core/monitoring/progress-tracker.js +4 -0
  190. package/dist/core/monitoring/progress-tracker.js.map +1 -1
  191. package/dist/core/monitoring/session-monitor.js +4 -0
  192. package/dist/core/monitoring/session-monitor.js.map +1 -1
  193. package/dist/core/performance/context-cache.js +4 -0
  194. package/dist/core/performance/context-cache.js.map +1 -1
  195. package/dist/core/performance/index.js +4 -0
  196. package/dist/core/performance/index.js.map +1 -1
  197. package/dist/core/performance/lazy-context-loader.js +4 -0
  198. package/dist/core/performance/lazy-context-loader.js.map +1 -1
  199. package/dist/core/performance/monitor.js +4 -0
  200. package/dist/core/performance/monitor.js.map +1 -1
  201. package/dist/core/performance/optimized-frame-context.js +4 -0
  202. package/dist/core/performance/optimized-frame-context.js.map +1 -1
  203. package/dist/core/performance/performance-benchmark.js +4 -0
  204. package/dist/core/performance/performance-benchmark.js.map +1 -1
  205. package/dist/core/performance/performance-profiler.js +4 -0
  206. package/dist/core/performance/performance-profiler.js.map +1 -1
  207. package/dist/core/performance/streaming-jsonl-parser.js +4 -0
  208. package/dist/core/performance/streaming-jsonl-parser.js.map +1 -1
  209. package/dist/core/persistence/postgres-adapter.js +4 -0
  210. package/dist/core/persistence/postgres-adapter.js.map +1 -1
  211. package/dist/core/projects/project-isolation.js +4 -0
  212. package/dist/core/projects/project-isolation.js.map +1 -1
  213. package/dist/core/projects/project-manager.js +4 -0
  214. package/dist/core/projects/project-manager.js.map +1 -1
  215. package/dist/core/query/query-parser.js +4 -0
  216. package/dist/core/query/query-parser.js.map +1 -1
  217. package/dist/core/query/query-templates.js +4 -0
  218. package/dist/core/query/query-templates.js.map +1 -1
  219. package/dist/core/retrieval/context-retriever.js +4 -0
  220. package/dist/core/retrieval/context-retriever.js.map +1 -1
  221. package/dist/core/retrieval/graph-retrieval.js +4 -0
  222. package/dist/core/retrieval/graph-retrieval.js.map +1 -1
  223. package/dist/core/retrieval/hierarchical-retrieval.js +4 -0
  224. package/dist/core/retrieval/hierarchical-retrieval.js.map +1 -1
  225. package/dist/core/retrieval/index.js +4 -0
  226. package/dist/core/retrieval/index.js.map +1 -1
  227. package/dist/core/retrieval/llm-context-retrieval.js +4 -0
  228. package/dist/core/retrieval/llm-context-retrieval.js.map +1 -1
  229. package/dist/core/retrieval/retrieval-benchmarks.js +4 -0
  230. package/dist/core/retrieval/retrieval-benchmarks.js.map +1 -1
  231. package/dist/core/retrieval/summary-generator.js +4 -0
  232. package/dist/core/retrieval/summary-generator.js.map +1 -1
  233. package/dist/core/retrieval/types.js +4 -0
  234. package/dist/core/retrieval/types.js.map +1 -1
  235. package/dist/core/session/clear-survival.js +4 -0
  236. package/dist/core/session/clear-survival.js.map +1 -1
  237. package/dist/core/session/enhanced-handoff.js +4 -0
  238. package/dist/core/session/enhanced-handoff.js.map +1 -1
  239. package/dist/core/session/handoff-generator.js +4 -0
  240. package/dist/core/session/handoff-generator.js.map +1 -1
  241. package/dist/core/session/index.js +4 -0
  242. package/dist/core/session/index.js.map +1 -1
  243. package/dist/core/session/session-manager.js +4 -0
  244. package/dist/core/session/session-manager.js.map +1 -1
  245. package/dist/core/skills/index.js +4 -0
  246. package/dist/core/skills/index.js.map +1 -1
  247. package/dist/core/skills/skill-storage.js +4 -0
  248. package/dist/core/skills/skill-storage.js.map +1 -1
  249. package/dist/core/skills/types.js +4 -0
  250. package/dist/core/skills/types.js.map +1 -1
  251. package/dist/core/storage/chromadb-adapter.js +4 -0
  252. package/dist/core/storage/chromadb-adapter.js.map +1 -1
  253. package/dist/core/storage/infinite-storage.js +4 -0
  254. package/dist/core/storage/infinite-storage.js.map +1 -1
  255. package/dist/core/storage/railway-optimized-storage.js +4 -0
  256. package/dist/core/storage/railway-optimized-storage.js.map +1 -1
  257. package/dist/core/storage/remote-storage.js +4 -0
  258. package/dist/core/storage/remote-storage.js.map +1 -1
  259. package/dist/core/storage/two-tier-storage.js +4 -0
  260. package/dist/core/storage/two-tier-storage.js.map +1 -1
  261. package/dist/core/trace/cli-trace-wrapper.js +4 -0
  262. package/dist/core/trace/cli-trace-wrapper.js.map +1 -1
  263. package/dist/core/trace/db-trace-wrapper.js +4 -0
  264. package/dist/core/trace/db-trace-wrapper.js.map +1 -1
  265. package/dist/core/trace/debug-trace.js +4 -0
  266. package/dist/core/trace/debug-trace.js.map +1 -1
  267. package/dist/core/trace/index.js +4 -0
  268. package/dist/core/trace/index.js.map +1 -1
  269. package/dist/core/trace/linear-api-wrapper.js +4 -0
  270. package/dist/core/trace/linear-api-wrapper.js.map +1 -1
  271. package/dist/core/trace/trace-demo.js +4 -0
  272. package/dist/core/trace/trace-demo.js.map +1 -1
  273. package/dist/core/trace/trace-detector.demo.js +4 -0
  274. package/dist/core/trace/trace-detector.demo.js.map +1 -1
  275. package/dist/core/trace/trace-detector.js +4 -0
  276. package/dist/core/trace/trace-detector.js.map +1 -1
  277. package/dist/core/trace/trace-store.js +4 -0
  278. package/dist/core/trace/trace-store.js.map +1 -1
  279. package/dist/core/trace/types.js +4 -0
  280. package/dist/core/trace/types.js.map +1 -1
  281. package/dist/core/types.js +4 -0
  282. package/dist/core/utils/compression.js +4 -0
  283. package/dist/core/utils/compression.js.map +1 -1
  284. package/dist/core/utils/update-checker.js +4 -0
  285. package/dist/core/utils/update-checker.js.map +1 -1
  286. package/dist/core/worktree/worktree-manager.js +4 -0
  287. package/dist/core/worktree/worktree-manager.js.map +1 -1
  288. package/dist/daemon/session-daemon.js +4 -0
  289. package/dist/daemon/session-daemon.js.map +1 -1
  290. package/dist/features/analytics/api/analytics-api.js +4 -0
  291. package/dist/features/analytics/api/analytics-api.js.map +1 -1
  292. package/dist/features/analytics/core/analytics-service.js +4 -0
  293. package/dist/features/analytics/core/analytics-service.js.map +1 -1
  294. package/dist/features/analytics/index.js +4 -0
  295. package/dist/features/analytics/index.js.map +1 -1
  296. package/dist/features/analytics/queries/metrics-queries.js +4 -0
  297. package/dist/features/analytics/queries/metrics-queries.js.map +1 -1
  298. package/dist/features/analytics/types/metrics.js +4 -0
  299. package/dist/features/browser/browser-mcp.js +4 -0
  300. package/dist/features/browser/browser-mcp.js.map +1 -1
  301. package/dist/features/tasks/linear-task-manager.js +4 -0
  302. package/dist/features/tasks/linear-task-manager.js.map +1 -1
  303. package/dist/features/tasks/task-aware-context.js +4 -0
  304. package/dist/features/tasks/task-aware-context.js.map +1 -1
  305. package/dist/features/tui/simple-monitor.js +4 -0
  306. package/dist/features/tui/simple-monitor.js.map +1 -1
  307. package/dist/features/tui/swarm-monitor.js +4 -0
  308. package/dist/features/tui/swarm-monitor.js.map +1 -1
  309. package/dist/features/web/client/stores/task-store.js +4 -0
  310. package/dist/features/web/client/stores/task-store.js.map +1 -1
  311. package/dist/features/web/server/index.js +4 -0
  312. package/dist/features/web/server/index.js.map +1 -1
  313. package/dist/hooks/config.js +4 -0
  314. package/dist/hooks/config.js.map +1 -1
  315. package/dist/hooks/daemon.js +4 -0
  316. package/dist/hooks/daemon.js.map +1 -1
  317. package/dist/hooks/events.js +4 -0
  318. package/dist/hooks/events.js.map +1 -1
  319. package/dist/hooks/index.js +4 -0
  320. package/dist/hooks/index.js.map +1 -1
  321. package/dist/index.js +4 -0
  322. package/dist/index.js.map +1 -1
  323. package/dist/integrations/anthropic/client.js +4 -0
  324. package/dist/integrations/anthropic/client.js.map +1 -1
  325. package/dist/integrations/claude-code/agent-bridge.js +4 -0
  326. package/dist/integrations/claude-code/agent-bridge.js.map +1 -1
  327. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js +4 -0
  328. package/dist/integrations/claude-code/enhanced-pre-clear-hooks.js.map +1 -1
  329. package/dist/integrations/claude-code/lifecycle-hooks.js +4 -0
  330. package/dist/integrations/claude-code/lifecycle-hooks.js.map +1 -1
  331. package/dist/integrations/claude-code/post-task-hooks.js +4 -0
  332. package/dist/integrations/claude-code/post-task-hooks.js.map +1 -1
  333. package/dist/integrations/claude-code/subagent-client-stub.js +4 -0
  334. package/dist/integrations/claude-code/subagent-client-stub.js.map +1 -1
  335. package/dist/integrations/claude-code/subagent-client.js +4 -0
  336. package/dist/integrations/claude-code/subagent-client.js.map +1 -1
  337. package/dist/integrations/claude-code/task-coordinator.js +4 -0
  338. package/dist/integrations/claude-code/task-coordinator.js.map +1 -1
  339. package/dist/integrations/linear/auth.js +4 -0
  340. package/dist/integrations/linear/auth.js.map +1 -1
  341. package/dist/integrations/linear/auto-sync.js +4 -0
  342. package/dist/integrations/linear/auto-sync.js.map +1 -1
  343. package/dist/integrations/linear/client.js +4 -0
  344. package/dist/integrations/linear/client.js.map +1 -1
  345. package/dist/integrations/linear/config.js +4 -0
  346. package/dist/integrations/linear/config.js.map +1 -1
  347. package/dist/integrations/linear/migration.js +4 -0
  348. package/dist/integrations/linear/migration.js.map +1 -1
  349. package/dist/integrations/linear/oauth-server.js +4 -0
  350. package/dist/integrations/linear/oauth-server.js.map +1 -1
  351. package/dist/integrations/linear/rest-client.js +4 -0
  352. package/dist/integrations/linear/rest-client.js.map +1 -1
  353. package/dist/integrations/linear/sync-manager.js +4 -0
  354. package/dist/integrations/linear/sync-manager.js.map +1 -1
  355. package/dist/integrations/linear/sync-service.js +4 -0
  356. package/dist/integrations/linear/sync-service.js.map +1 -1
  357. package/dist/integrations/linear/sync.js +4 -0
  358. package/dist/integrations/linear/sync.js.map +1 -1
  359. package/dist/integrations/linear/types.js +4 -0
  360. package/dist/integrations/linear/unified-sync.js +4 -0
  361. package/dist/integrations/linear/unified-sync.js.map +1 -1
  362. package/dist/integrations/linear/webhook-handler.js +4 -0
  363. package/dist/integrations/linear/webhook-handler.js.map +1 -1
  364. package/dist/integrations/linear/webhook-server.js +4 -0
  365. package/dist/integrations/linear/webhook-server.js.map +1 -1
  366. package/dist/integrations/linear/webhook.js +4 -0
  367. package/dist/integrations/linear/webhook.js.map +1 -1
  368. package/dist/integrations/mcp/handlers/code-execution-handlers.js +4 -0
  369. package/dist/integrations/mcp/handlers/code-execution-handlers.js.map +1 -1
  370. package/dist/integrations/mcp/handlers/context-handlers.js +4 -0
  371. package/dist/integrations/mcp/handlers/context-handlers.js.map +1 -1
  372. package/dist/integrations/mcp/handlers/index.js +4 -0
  373. package/dist/integrations/mcp/handlers/index.js.map +1 -1
  374. package/dist/integrations/mcp/handlers/linear-handlers.js +4 -0
  375. package/dist/integrations/mcp/handlers/linear-handlers.js.map +1 -1
  376. package/dist/integrations/mcp/handlers/skill-handlers.js +4 -0
  377. package/dist/integrations/mcp/handlers/skill-handlers.js.map +1 -1
  378. package/dist/integrations/mcp/handlers/task-handlers.js +4 -0
  379. package/dist/integrations/mcp/handlers/task-handlers.js.map +1 -1
  380. package/dist/integrations/mcp/handlers/trace-handlers.js +4 -0
  381. package/dist/integrations/mcp/handlers/trace-handlers.js.map +1 -1
  382. package/dist/integrations/mcp/index.js +4 -0
  383. package/dist/integrations/mcp/index.js.map +1 -1
  384. package/dist/integrations/mcp/middleware/tool-scoring.js +4 -0
  385. package/dist/integrations/mcp/middleware/tool-scoring.js.map +1 -1
  386. package/dist/integrations/mcp/refactored-server.js +4 -0
  387. package/dist/integrations/mcp/refactored-server.js.map +1 -1
  388. package/dist/integrations/mcp/server.js +4 -0
  389. package/dist/integrations/mcp/server.js.map +1 -1
  390. package/dist/integrations/mcp/tool-definitions-code.js +4 -0
  391. package/dist/integrations/mcp/tool-definitions-code.js.map +1 -1
  392. package/dist/integrations/mcp/tool-definitions.js +4 -0
  393. package/dist/integrations/mcp/tool-definitions.js.map +1 -1
  394. package/dist/integrations/mcp/trace-test.js +4 -0
  395. package/dist/integrations/mcp/trace-test.js.map +1 -1
  396. package/dist/integrations/pg-aiguide/embedding-provider.js +4 -0
  397. package/dist/integrations/pg-aiguide/embedding-provider.js.map +1 -1
  398. package/dist/integrations/pg-aiguide/semantic-search.js +4 -0
  399. package/dist/integrations/pg-aiguide/semantic-search.js.map +1 -1
  400. package/dist/integrations/pg-aiguide/timescale-analytics.js +4 -0
  401. package/dist/integrations/pg-aiguide/timescale-analytics.js.map +1 -1
  402. package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js +4 -0
  403. package/dist/integrations/ralph/bridge/ralph-stackmemory-bridge.js.map +1 -1
  404. package/dist/integrations/ralph/context/context-budget-manager.js +4 -0
  405. package/dist/integrations/ralph/context/context-budget-manager.js.map +1 -1
  406. package/dist/integrations/ralph/context/stackmemory-context-loader.js +4 -0
  407. package/dist/integrations/ralph/context/stackmemory-context-loader.js.map +1 -1
  408. package/dist/integrations/ralph/coordination/enhanced-coordination.js +4 -0
  409. package/dist/integrations/ralph/coordination/enhanced-coordination.js.map +1 -1
  410. package/dist/integrations/ralph/index.js +4 -0
  411. package/dist/integrations/ralph/index.js.map +1 -1
  412. package/dist/integrations/ralph/learning/pattern-learner.js +4 -0
  413. package/dist/integrations/ralph/learning/pattern-learner.js.map +1 -1
  414. package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js +4 -0
  415. package/dist/integrations/ralph/lifecycle/iteration-lifecycle.js.map +1 -1
  416. package/dist/integrations/ralph/monitoring/swarm-dashboard.js +4 -0
  417. package/dist/integrations/ralph/monitoring/swarm-dashboard.js.map +1 -1
  418. package/dist/integrations/ralph/monitoring/swarm-registry.js +4 -0
  419. package/dist/integrations/ralph/monitoring/swarm-registry.js.map +1 -1
  420. package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js +4 -0
  421. package/dist/integrations/ralph/orchestration/multi-loop-orchestrator.js.map +1 -1
  422. package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js +4 -0
  423. package/dist/integrations/ralph/patterns/compounding-engineering-pattern.js.map +1 -1
  424. package/dist/integrations/ralph/patterns/extended-coherence-sessions.js +4 -0
  425. package/dist/integrations/ralph/patterns/extended-coherence-sessions.js.map +1 -1
  426. package/dist/integrations/ralph/patterns/oracle-worker-pattern.js +4 -0
  427. package/dist/integrations/ralph/patterns/oracle-worker-pattern.js.map +1 -1
  428. package/dist/integrations/ralph/performance/performance-optimizer.js +4 -0
  429. package/dist/integrations/ralph/performance/performance-optimizer.js.map +1 -1
  430. package/dist/integrations/ralph/ralph-integration-demo.js +4 -0
  431. package/dist/integrations/ralph/ralph-integration-demo.js.map +1 -1
  432. package/dist/integrations/ralph/recovery/crash-recovery.js +4 -0
  433. package/dist/integrations/ralph/recovery/crash-recovery.js.map +1 -1
  434. package/dist/integrations/ralph/state/state-reconciler.js +4 -0
  435. package/dist/integrations/ralph/state/state-reconciler.js.map +1 -1
  436. package/dist/integrations/ralph/swarm/git-workflow-manager.js +4 -0
  437. package/dist/integrations/ralph/swarm/git-workflow-manager.js.map +1 -1
  438. package/dist/integrations/ralph/swarm/swarm-coordinator.js +4 -0
  439. package/dist/integrations/ralph/swarm/swarm-coordinator.js.map +1 -1
  440. package/dist/integrations/ralph/types.js +4 -0
  441. package/dist/integrations/ralph/visualization/ralph-debugger.js +4 -0
  442. package/dist/integrations/ralph/visualization/ralph-debugger.js.map +1 -1
  443. package/dist/mcp/stackmemory-mcp-server.js +4 -0
  444. package/dist/mcp/stackmemory-mcp-server.js.map +1 -1
  445. package/dist/middleware/exponential-rate-limiter.js +4 -0
  446. package/dist/middleware/exponential-rate-limiter.js.map +1 -1
  447. package/dist/models/user.model.js +4 -0
  448. package/dist/models/user.model.js.map +1 -1
  449. package/dist/servers/production/auth-middleware.js +4 -0
  450. package/dist/servers/production/auth-middleware.js.map +1 -1
  451. package/dist/servers/railway/config.js +4 -0
  452. package/dist/servers/railway/config.js.map +1 -1
  453. package/dist/servers/railway/index-enhanced.js +4 -0
  454. package/dist/servers/railway/index-enhanced.js.map +1 -1
  455. package/dist/servers/railway/index.js +4 -0
  456. package/dist/servers/railway/index.js.map +1 -1
  457. package/dist/servers/railway/simple.js +4 -0
  458. package/dist/servers/railway/simple.js.map +1 -1
  459. package/dist/servers/railway/storage-test.js +4 -0
  460. package/dist/servers/railway/storage-test.js.map +1 -1
  461. package/dist/services/config-service.js +4 -0
  462. package/dist/services/config-service.js.map +1 -1
  463. package/dist/services/context-service.js +4 -0
  464. package/dist/services/context-service.js.map +1 -1
  465. package/dist/skills/api-discovery.js +4 -0
  466. package/dist/skills/api-discovery.js.map +1 -1
  467. package/dist/skills/api-skill.js +4 -0
  468. package/dist/skills/api-skill.js.map +1 -1
  469. package/dist/skills/claude-skills.js +4 -0
  470. package/dist/skills/claude-skills.js.map +1 -1
  471. package/dist/skills/dashboard-launcher.js +4 -0
  472. package/dist/skills/dashboard-launcher.js.map +1 -1
  473. package/dist/skills/recursive-agent-orchestrator.js +4 -0
  474. package/dist/skills/recursive-agent-orchestrator.js.map +1 -1
  475. package/dist/skills/repo-ingestion-skill.js +4 -0
  476. package/dist/skills/repo-ingestion-skill.js.map +1 -1
  477. package/dist/skills/security-secrets-scanner.js +4 -0
  478. package/dist/skills/security-secrets-scanner.js.map +1 -1
  479. package/dist/skills/unified-rlm-orchestrator.js +4 -0
  480. package/dist/skills/unified-rlm-orchestrator.js.map +1 -1
  481. package/dist/types/task.js +4 -0
  482. package/dist/utils/env.js +4 -0
  483. package/dist/utils/env.js.map +1 -1
  484. package/dist/utils/formatting.js +4 -0
  485. package/dist/utils/formatting.js.map +1 -1
  486. package/dist/utils/process-cleanup.js +4 -0
  487. package/dist/utils/process-cleanup.js.map +1 -1
  488. package/dist/validation/schemas.js +4 -0
  489. package/dist/validation/schemas.js.map +1 -1
  490. package/package.json +1 -1
@@ -1,3 +1,7 @@
1
+ import { fileURLToPath as __fileURLToPath } from 'url';
2
+ import { dirname as __pathDirname } from 'path';
3
+ const __filename = __fileURLToPath(import.meta.url);
4
+ const __dirname = __pathDirname(__filename);
1
5
  import { logger } from "../../core/monitoring/logger.js";
2
6
  import { TaskError, ErrorCode } from "../../core/errors/index.js";
3
7
  var AgentType = /* @__PURE__ */ ((AgentType2) => {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/agents/core/agent-task-manager.ts"],
4
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/frame-manager.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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",
5
+ "mappings": "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",
6
6
  "names": ["AgentType"]
7
7
  }
@@ -1,3 +1,7 @@
1
+ import { fileURLToPath as __fileURLToPath } from 'url';
2
+ import { dirname as __pathDirname } from 'path';
3
+ const __filename = __fileURLToPath(import.meta.url);
4
+ const __dirname = __pathDirname(__filename);
1
5
  import * as ts from "typescript";
2
6
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "fs";
3
7
  import { dirname, join, basename } from "path";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/agents/testing-agent.ts"],
4
4
  "sourcesContent": ["/**\n * Testing Agent - Automated Test Generation and Execution\n * Analyzes code to generate comprehensive test suites\n */\n\nimport * as ts from 'typescript';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs';\nimport { dirname, join, basename } from 'path';\nimport { execSync } from 'child_process';\nimport { glob } from 'glob';\nimport { logger } from '../core/monitoring/logger.js';\n\ninterface TestCase {\n name: string;\n description: string;\n setup?: string;\n action: string;\n assertion: string;\n cleanup?: string;\n isAsync?: boolean;\n}\n\ninterface TestSuite {\n filePath: string;\n targetPath: string;\n describe: string;\n imports: string[];\n beforeEach?: string;\n afterEach?: string;\n tests: TestCase[];\n}\n\ninterface CoverageReport {\n filePath: string;\n lines: { total: number; covered: number; percentage: number };\n branches: { total: number; covered: number; percentage: number };\n functions: { total: number; covered: number; percentage: number };\n uncoveredLines: number[];\n}\n\ninterface TestResults {\n passed: number;\n failed: number;\n skipped: number;\n duration: number;\n failures: Array<{ test: string; error: string }>;\n}\n\ninterface MockData {\n name: string;\n type: string;\n value: unknown;\n implementation?: string;\n}\n\ninterface Fixture {\n name: string;\n data: unknown;\n setup?: string;\n teardown?: string;\n}\n\ninterface PerfReport {\n function: string;\n averageTime: number;\n minTime: number;\n maxTime: number;\n iterations: number;\n memoryUsage: number;\n}\n\nexport class TestingAgent {\n private readonly projectRoot: string;\n private readonly testDir: string;\n private readonly mockDir: string;\n private readonly fixtureDir: string;\n\n constructor(projectRoot = process.cwd()) {\n this.projectRoot = projectRoot;\n this.testDir = join(projectRoot, 'src', '__tests__');\n this.mockDir = join(projectRoot, 'src', '__mocks__');\n this.fixtureDir = join(projectRoot, 'src', '__fixtures__');\n }\n\n /**\n * Analyze code coverage from existing reports\n */\n public async analyzeCodeCoverage(\n targetPath: string\n ): Promise<CoverageReport> {\n const coveragePath = join(\n this.projectRoot,\n 'coverage',\n 'coverage-final.json'\n );\n\n if (!existsSync(coveragePath)) {\n // Run coverage first\n try {\n execSync('npm run test -- --coverage --silent', {\n cwd: this.projectRoot,\n stdio: 'pipe',\n });\n } catch (error) {\n logger.warn('Coverage generation failed', { error });\n }\n }\n\n // Parse coverage report\n if (existsSync(coveragePath)) {\n const coverage = JSON.parse(\n readFileSync(coveragePath, 'utf-8')\n ) as Record<string, unknown>;\n const fileCoverage =\n (coverage[targetPath] as Record<string, unknown>) || {};\n\n return {\n filePath: targetPath,\n lines: this.calculateCoverage(\n (fileCoverage.s as Record<string, number>) || {}\n ),\n branches: this.calculateCoverage(\n (fileCoverage.b as Record<string, number>) || {}\n ),\n functions: this.calculateCoverage(\n (fileCoverage.f as Record<string, number>) || {}\n ),\n uncoveredLines: this.findUncoveredLines(\n (fileCoverage.statementMap as Record<string, unknown>) || {},\n (fileCoverage.s as Record<string, number>) || {}\n ),\n };\n }\n\n // Default report if no coverage data\n return {\n filePath: targetPath,\n lines: { total: 0, covered: 0, percentage: 0 },\n branches: { total: 0, covered: 0, percentage: 0 },\n functions: { total: 0, covered: 0, percentage: 0 },\n uncoveredLines: [],\n };\n }\n\n /**\n * Generate unit tests for a function or module\n */\n public async generateUnitTests(targetPath: string): Promise<TestSuite> {\n const sourceCode = readFileSync(targetPath, 'utf-8');\n const sourceFile = ts.createSourceFile(\n targetPath,\n sourceCode,\n ts.ScriptTarget.Latest,\n true\n );\n\n const functions = this.extractFunctions(sourceFile);\n const classes = this.extractClasses(sourceFile);\n const tests: TestCase[] = [];\n\n // Generate tests for functions\n for (const func of functions) {\n tests.push(...this.generateFunctionTests(func));\n }\n\n // Generate tests for classes\n for (const cls of classes) {\n tests.push(...this.generateClassTests(cls));\n }\n\n // Create test suite\n const testSuite: TestSuite = {\n filePath: this.getTestPath(targetPath),\n targetPath,\n describe: this.getModuleName(targetPath),\n imports: this.generateImports(targetPath, sourceFile),\n beforeEach: this.generateBeforeEach(classes),\n afterEach: this.generateAfterEach(classes),\n tests,\n };\n\n return testSuite;\n }\n\n /**\n * Generate integration tests for a module\n */\n public async generateIntegrationTests(\n modulePath: string\n ): Promise<TestSuite> {\n const moduleFiles = glob.sync(join(modulePath, '**/*.ts'), {\n ignore: ['**/*.test.ts', '**/*.spec.ts', '**/node_modules/**'],\n });\n\n const tests: TestCase[] = [];\n const dependencies = new Set<string>();\n\n // Analyze module interactions\n for (const file of moduleFiles) {\n const sourceCode = readFileSync(file, 'utf-8');\n const sourceFile = ts.createSourceFile(\n file,\n sourceCode,\n ts.ScriptTarget.Latest,\n true\n );\n\n // Find external dependencies\n this.findDependencies(sourceFile, dependencies);\n }\n\n // Generate integration test cases\n tests.push(\n ...this.generateModuleIntegrationTests(\n modulePath,\n Array.from(dependencies)\n )\n );\n\n const testSuite: TestSuite = {\n filePath: this.getIntegrationTestPath(modulePath),\n targetPath: modulePath,\n describe: `${basename(modulePath)} Integration`,\n imports: this.generateIntegrationImports(modulePath, dependencies),\n beforeEach: this.generateIntegrationSetup(dependencies),\n afterEach: this.generateIntegrationCleanup(),\n tests,\n };\n\n return testSuite;\n }\n\n /**\n * Generate edge case tests for a function\n */\n public async generateEdgeCaseTests(\n targetPath: string,\n functionName: string\n ): Promise<TestCase[]> {\n const sourceCode = readFileSync(targetPath, 'utf-8');\n const sourceFile = ts.createSourceFile(\n targetPath,\n sourceCode,\n ts.ScriptTarget.Latest,\n true\n );\n\n const func = this.findFunction(sourceFile, functionName);\n if (!func) {\n throw new Error(`Function ${functionName} not found in ${targetPath}`);\n }\n\n return this.generateFunctionEdgeCases(func);\n }\n\n /**\n * Execute tests and return results\n */\n public async executeTests(pattern: string): Promise<TestResults> {\n try {\n const output = execSync(`npm run test -- ${pattern} --reporter=json`, {\n cwd: this.projectRoot,\n encoding: 'utf-8',\n stdio: 'pipe',\n });\n\n const results = JSON.parse(output) as Record<string, unknown>;\n return {\n passed: (results.numPassedTests as number) || 0,\n failed: (results.numFailedTests as number) || 0,\n skipped: (results.numPendingTests as number) || 0,\n duration: (results.duration as number) || 0,\n failures: this.extractFailures(results),\n };\n } catch (error: unknown) {\n // Parse error output\n return {\n passed: 0,\n failed: 1,\n skipped: 0,\n duration: 0,\n failures: [{ test: 'Test execution', error: (error as Error).message }],\n };\n }\n }\n\n /**\n * Generate mock data for testing\n */\n public generateMockData(schema: Record<string, unknown>): MockData {\n const mockType = this.inferTypeFromSchema(schema);\n const mockValue = this.generateMockValue(mockType, schema);\n\n return {\n name: (schema.name as string) || 'mockData',\n type: mockType,\n value: mockValue,\n implementation: this.generateMockImplementation(schema),\n };\n }\n\n /**\n * Create test fixtures\n */\n public createTestFixtures(componentName: string): Fixture[] {\n const fixtures: Fixture[] = [];\n\n // Generate common fixtures\n fixtures.push({\n name: `${componentName}DefaultProps`,\n data: this.generateDefaultProps(),\n setup: this.generateFixtureSetup(componentName),\n teardown: this.generateFixtureTeardown(componentName),\n });\n\n fixtures.push({\n name: `${componentName}EdgeCaseProps`,\n data: this.generateEdgeCaseProps(),\n });\n\n fixtures.push({\n name: `${componentName}TestData`,\n data: this.generateTestData(),\n });\n\n return fixtures;\n }\n\n /**\n * Benchmark performance of a function\n */\n public async benchmarkPerformance(\n targetPath: string,\n functionName: string\n ): Promise<PerfReport> {\n const benchmarkCode = this.generateBenchmarkCode(targetPath, functionName);\n const benchmarkFile = join(\n this.testDir,\n 'benchmarks',\n `${functionName}.bench.ts`\n );\n\n // Ensure directory exists\n const benchDir = dirname(benchmarkFile);\n if (!existsSync(benchDir)) {\n mkdirSync(benchDir, { recursive: true });\n }\n\n // Write benchmark file\n writeFileSync(benchmarkFile, benchmarkCode);\n\n // Run benchmark\n try {\n const output = execSync(\n `npx vitest bench ${benchmarkFile} --reporter=json`,\n {\n cwd: this.projectRoot,\n encoding: 'utf-8',\n stdio: 'pipe',\n }\n );\n\n const results = JSON.parse(output) as Record<string, unknown>;\n return this.parseBenchmarkResults(results, functionName);\n } catch (error) {\n logger.error('Benchmark failed', { error });\n return {\n function: functionName,\n averageTime: 0,\n minTime: 0,\n maxTime: 0,\n iterations: 0,\n memoryUsage: 0,\n };\n }\n }\n\n /**\n * Save generated test suite to file\n */\n public async saveTestSuite(suite: TestSuite): Promise<void> {\n const testCode = this.generateTestCode(suite);\n const testDir = dirname(suite.filePath);\n\n // Ensure directory exists\n if (!existsSync(testDir)) {\n mkdirSync(testDir, { recursive: true });\n }\n\n writeFileSync(suite.filePath, testCode);\n logger.info('Test suite saved', { path: suite.filePath });\n }\n\n // Private helper methods\n\n private extractFunctions(\n sourceFile: ts.SourceFile\n ): ts.FunctionDeclaration[] {\n const functions: ts.FunctionDeclaration[] = [];\n\n const visit = (node: ts.Node) => {\n if (ts.isFunctionDeclaration(node) && node.name) {\n functions.push(node);\n }\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return functions;\n }\n\n private extractClasses(sourceFile: ts.SourceFile): ts.ClassDeclaration[] {\n const classes: ts.ClassDeclaration[] = [];\n\n const visit = (node: ts.Node) => {\n if (ts.isClassDeclaration(node) && node.name) {\n classes.push(node);\n }\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return classes;\n }\n\n private generateFunctionTests(func: ts.FunctionDeclaration): TestCase[] {\n const tests: TestCase[] = [];\n const funcName = func.name?.getText() || 'unknown';\n\n // Happy path test\n tests.push({\n name: `should execute ${funcName} successfully with valid input`,\n description: `Test normal execution of ${funcName}`,\n action: `const result = ${funcName}();`,\n assertion: 'expect(result).toBeDefined();',\n });\n\n return tests;\n }\n\n private generateClassTests(cls: ts.ClassDeclaration): TestCase[] {\n const tests: TestCase[] = [];\n const className = cls.name?.getText() || 'UnknownClass';\n\n // Constructor test\n tests.push({\n name: `should create instance of ${className}`,\n description: `Test ${className} instantiation`,\n action: `const instance = new ${className}()`,\n assertion: `expect(instance).toBeInstanceOf(${className})`,\n });\n\n return tests;\n }\n\n private generateFunctionEdgeCases(_func: ts.FunctionDeclaration): TestCase[] {\n return [];\n }\n\n private generateTestCode(suite: TestSuite): string {\n const imports = suite.imports.join('\\n');\n const tests = suite.tests\n .map((test) => this.formatTestCase(test))\n .join('\\n\\n ');\n\n return `/**\n * Generated test suite for ${suite.targetPath}\n * Generated by TestingAgent\n */\n\n${imports}\n\ndescribe('${suite.describe}', () => {\n${suite.beforeEach ? ` beforeEach(() => {\\n ${suite.beforeEach}\\n });\\n` : ''}\n${suite.afterEach ? ` afterEach(() => {\\n ${suite.afterEach}\\n });\\n` : ''}\n ${tests}\n});\n`;\n }\n\n private formatTestCase(test: TestCase): string {\n return `it('${test.name}', () => {\n${test.setup ? ` // Arrange\\n ${test.setup}\\n` : ''}\n // Act\n ${test.action}\n\n // Assert\n ${test.assertion}\n${test.cleanup ? `\\n // Cleanup\\n ${test.cleanup}` : ''}\n })`;\n }\n\n private generateImports(\n targetPath: string,\n sourceFile: ts.SourceFile\n ): string[] {\n const imports: string[] = [\n `import { describe, it, expect, beforeEach, afterEach } from 'vitest';`,\n ];\n\n // Import the module being tested\n const relativePath = this.getRelativePath(\n this.getTestPath(targetPath),\n targetPath\n );\n const exportedNames = this.getExportedNames(sourceFile);\n if (exportedNames.length > 0) {\n imports.push(\n `import { ${exportedNames.join(', ')} } from '${relativePath}';`\n );\n }\n\n return imports;\n }\n\n private getExportedNames(sourceFile: ts.SourceFile): string[] {\n const exports: string[] = [];\n\n const visit = (node: ts.Node) => {\n if (\n ts.isFunctionDeclaration(node) &&\n node.name &&\n this.isExported(node)\n ) {\n exports.push(node.name.getText());\n }\n if (ts.isClassDeclaration(node) && node.name && this.isExported(node)) {\n exports.push(node.name.getText());\n }\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n return exports;\n }\n\n private isExported(node: ts.Node): boolean {\n return (\n node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword) ||\n false\n );\n }\n\n private getTestPath(targetPath: string): string {\n const relativePath = targetPath.replace(this.projectRoot, '');\n const pathParts = relativePath.split('/');\n const fileName = pathParts.pop();\n const testFileName = fileName?.replace('.ts', '.test.ts');\n\n return join(\n this.projectRoot,\n 'src',\n '__tests__',\n ...pathParts.slice(2),\n testFileName || ''\n );\n }\n\n private getIntegrationTestPath(modulePath: string): string {\n const moduleName = basename(modulePath);\n return join(\n this.testDir,\n 'integration',\n `${moduleName}.integration.test.ts`\n );\n }\n\n private getModuleName(targetPath: string): string {\n const fileName = basename(targetPath);\n return fileName.replace(/\\.(ts|js)$/, '');\n }\n\n private getRelativePath(from: string, to: string): string {\n const fromParts = from.split('/');\n const toParts = to.split('/');\n\n // Find common base\n let i = 0;\n while (\n i < fromParts.length &&\n i < toParts.length &&\n fromParts[i] === toParts[i]\n ) {\n i++;\n }\n\n // Generate relative path\n const upCount = fromParts.length - i - 1;\n const ups = Array(upCount).fill('..');\n const downs = toParts.slice(i);\n\n const relativePath = [...ups, ...downs].join('/');\n return relativePath.replace(/\\.ts$/, '.js');\n }\n\n private calculateCoverage(coverageData: Record<string, number>): {\n total: number;\n covered: number;\n percentage: number;\n } {\n const values = Object.values(coverageData);\n const total = values.length;\n const covered = values.filter((v) => v > 0).length;\n const percentage = total > 0 ? (covered / total) * 100 : 0;\n\n return { total, covered, percentage: Math.round(percentage) };\n }\n\n private findUncoveredLines(\n statementMap: Record<string, unknown>,\n statements: Record<string, number>\n ): number[] {\n const uncovered: number[] = [];\n\n Object.entries(statements).forEach(([key, value]) => {\n if (value === 0 && statementMap[key]) {\n const loc = (statementMap[key] as { start: { line: number } }).start;\n uncovered.push(loc.line);\n }\n });\n\n return uncovered;\n }\n\n private extractFailures(\n results: Record<string, unknown>\n ): Array<{ test: string; error: string }> {\n const failures: Array<{ test: string; error: string }> = [];\n\n if (results.testResults) {\n const testResults = results.testResults as Array<{\n assertionResults?: Array<{\n status: string;\n title: string;\n failureMessages?: string[];\n }>;\n }>;\n testResults.forEach((suite) => {\n suite.assertionResults?.forEach((test) => {\n if (test.status === 'failed') {\n failures.push({\n test: test.title,\n error: test.failureMessages?.join('\\n') || 'Unknown error',\n });\n }\n });\n });\n }\n\n return failures;\n }\n\n // Mock and fixture generation helpers\n private generateMockImplementation(schema: Record<string, unknown>): string {\n return `export const mock${(schema.name as string) || 'Data'} = {\n ${this.generateMockProperties(schema)}\n};`;\n }\n\n private generateMockProperties(schema: Record<string, unknown>): string {\n if (!schema.properties) return '';\n\n const properties = schema.properties as Record<string, { type: string }>;\n return Object.entries(properties)\n .map(([key, value]) => {\n return `${key}: ${this.generateMockValue(value.type, value)}`;\n })\n .join(',\\n ');\n }\n\n private generateMockValue(type: string, _schema: unknown): string {\n switch (type) {\n case 'string':\n return `'mock-value'`;\n case 'number':\n return `${Math.floor(Math.random() * 100)}`;\n case 'boolean':\n return 'true';\n case 'array':\n return '[]';\n case 'object':\n return '{}';\n default:\n return 'null';\n }\n }\n\n private inferTypeFromSchema(schema: unknown): string {\n if (typeof schema === 'object' && schema !== null && 'type' in schema) {\n return (schema as { type: string }).type;\n }\n if (Array.isArray(schema)) return 'array';\n if (typeof schema === 'object') return 'object';\n return typeof schema;\n }\n\n private findDependencies(\n sourceFile: ts.SourceFile,\n dependencies: Set<string>\n ): void {\n const visit = (node: ts.Node) => {\n if (ts.isImportDeclaration(node)) {\n const moduleSpecifier = node.moduleSpecifier;\n if (ts.isStringLiteral(moduleSpecifier)) {\n dependencies.add(moduleSpecifier.text);\n }\n }\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n }\n\n private generateModuleIntegrationTests(\n modulePath: string,\n _dependencies: string[]\n ): TestCase[] {\n const tests: TestCase[] = [];\n const moduleName = basename(modulePath);\n\n tests.push({\n name: `should initialize ${moduleName} module`,\n description: `Test module initialization`,\n action: `const module = await import('${modulePath}');`,\n assertion: `expect(module).toBeDefined();`,\n isAsync: true,\n });\n\n return tests;\n }\n\n private generateIntegrationImports(\n modulePath: string,\n dependencies: Set<string>\n ): string[] {\n const imports = [\n `import { describe, it, expect, beforeEach, afterEach } from 'vitest';`,\n ];\n\n // Add dependency imports\n dependencies.forEach((dep) => {\n if (!dep.startsWith('.')) {\n const importName = dep.replace(/[^a-zA-Z]/g, '');\n imports.push(`import * as ${importName} from '${dep}';`);\n }\n });\n\n return imports;\n }\n\n private generateIntegrationSetup(_dependencies: Set<string>): string {\n return 'const testContext = {};';\n }\n\n private generateIntegrationCleanup(): string {\n return '// Reset any global state';\n }\n\n private generateBeforeEach(\n classes: ts.ClassDeclaration[]\n ): string | undefined {\n if (classes.length === 0) return undefined;\n return '// Setup test environment';\n }\n\n private generateAfterEach(\n classes: ts.ClassDeclaration[]\n ): string | undefined {\n if (classes.length === 0) return undefined;\n return '// Cleanup test environment';\n }\n\n private findFunction(\n sourceFile: ts.SourceFile,\n functionName: string\n ): ts.FunctionDeclaration | undefined {\n let result: ts.FunctionDeclaration | undefined;\n\n const visit = (node: ts.Node) => {\n if (\n ts.isFunctionDeclaration(node) &&\n node.name?.getText() === functionName\n ) {\n result = node;\n }\n if (!result) {\n ts.forEachChild(node, visit);\n }\n };\n\n visit(sourceFile);\n return result;\n }\n\n private generateDefaultProps(): Record<string, unknown> {\n return {\n id: 'test-id',\n className: 'test-class',\n children: 'Test Content',\n };\n }\n\n private generateEdgeCaseProps(): Record<string, unknown> {\n return {\n id: '',\n className: null,\n children: undefined,\n };\n }\n\n private generateTestData(): Record<string, unknown> {\n return {\n items: [\n { id: 1, name: 'Item 1' },\n { id: 2, name: 'Item 2' },\n ],\n config: {\n enabled: true,\n limit: 10,\n },\n };\n }\n\n private generateFixtureSetup(componentName: string): string {\n return `// Setup ${componentName} fixture`;\n }\n\n private generateFixtureTeardown(componentName: string): string {\n return `// Teardown ${componentName} fixture`;\n }\n\n private generateBenchmarkCode(\n targetPath: string,\n functionName: string\n ): string {\n return `import { bench, describe } from 'vitest';\nimport { ${functionName} } from '${targetPath}';\n\ndescribe('${functionName} performance', () => {\n bench('${functionName} execution time', () => {\n ${functionName}();\n });\n});`;\n }\n\n private parseBenchmarkResults(\n results: Record<string, unknown>,\n functionName: string\n ): PerfReport {\n return {\n function: functionName,\n averageTime: (results.mean as number) || 0,\n minTime: (results.min as number) || 0,\n maxTime: (results.max as number) || 0,\n iterations: (results.samples as number) || 0,\n memoryUsage: (results.memory as number) || 0,\n };\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,7 @@
1
+ import { fileURLToPath as __fileURLToPath } from 'url';
2
+ import { dirname as __pathDirname } from 'path';
3
+ const __filename = __fileURLToPath(import.meta.url);
4
+ const __dirname = __pathDirname(__filename);
1
5
  import { logger } from "../../core/monitoring/logger.js";
2
6
  class BaseVerifier {
3
7
  config;
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/agents/verifiers/base-verifier.ts"],
4
4
  "sourcesContent": ["/**\n * Base Verifier Interface - Spotify-inspired verification infrastructure\n *\n * Implements the strong verification loop pattern from Spotify's approach:\n * - Component-aware activation\n * - Incremental feedback\n * - Abstract complexity from agents\n */\n\nimport { logger } from '../../core/monitoring/logger.js';\n\nexport type VerifierSeverity = 'error' | 'warning' | 'info';\nexport type VerifierType =\n | 'syntax'\n | 'semantic'\n | 'performance'\n | 'security'\n | 'style';\n\nexport interface VerifierContext {\n filePath?: string;\n language?: string;\n framework?: string;\n hasTests?: boolean;\n hasDocumentation?: boolean;\n isProduction?: boolean;\n customRules?: Record<string, any>;\n}\n\nexport interface VerifierResult {\n verifierId: string;\n verifierType: VerifierType;\n passed: boolean;\n message: string;\n severity: VerifierSeverity;\n timestamp: Date;\n details?: VerifierDetails;\n autoFix?: VerifierAutoFix;\n confidence?: number; // 0-1, for probabilistic verifiers like LLM judge\n}\n\nexport interface VerifierDetails {\n location?: {\n file?: string;\n line?: number;\n column?: number;\n };\n code?: string;\n expected?: string;\n actual?: string;\n suggestion?: string;\n relatedLinks?: string[];\n}\n\nexport interface VerifierAutoFix {\n command: string;\n description: string;\n safe: boolean; // Whether fix can be applied automatically\n confidence: number; // 0-1\n}\n\nexport interface VerifierConfig {\n id: string;\n name: string;\n type: VerifierType;\n enabled: boolean;\n stopOnError: boolean; // Spotify's stop hook pattern\n maxRetries?: number;\n timeout?: number; // milliseconds\n customConfig?: Record<string, any>;\n}\n\n/**\n * Abstract base class for all verifiers\n */\nexport abstract class BaseVerifier {\n protected config: VerifierConfig;\n protected retryCount: Map<string, number> = new Map();\n\n constructor(config: VerifierConfig) {\n this.config = config;\n }\n\n /**\n * Check if verifier should be activated for given context\n * Implements Spotify's context-aware activation\n */\n abstract shouldActivate(context: VerifierContext): boolean;\n\n /**\n * Run verification on the given input\n */\n abstract verify(\n input: string | Buffer,\n context: VerifierContext\n ): Promise<VerifierResult>;\n\n /**\n * Extract most relevant error messages (Spotify pattern)\n */\n protected extractRelevantErrors(\n output: string,\n patterns: RegExp[]\n ): string[] {\n const errors: string[] = [];\n const lines = output.split('\\n');\n\n for (const line of lines) {\n for (const pattern of patterns) {\n const match = line.match(pattern);\n if (match) {\n errors.push(match[0]);\n break;\n }\n }\n }\n\n // Limit to most relevant errors (Spotify's approach)\n return errors.slice(0, 5);\n }\n\n /**\n * Generate incremental feedback\n */\n protected generateFeedback(\n errors: string[],\n context: VerifierContext\n ): string {\n if (errors.length === 0) {\n return `${this.config.name} verification passed`;\n }\n\n const prefix = context.filePath ? `In ${context.filePath}: ` : '';\n const errorList = errors.map((e) => ` - ${e}`).join('\\n');\n\n return `${prefix}${this.config.name} found ${errors.length} issue(s):\\n${errorList}`;\n }\n\n /**\n * Retry logic for transient failures\n */\n protected async withRetry<T>(\n operation: () => Promise<T>,\n key: string\n ): Promise<T> {\n const maxRetries = this.config.maxRetries || 0;\n const currentRetries = this.retryCount.get(key) || 0;\n\n try {\n const result = await operation();\n this.retryCount.delete(key); // Clear on success\n return result;\n } catch (error: unknown) {\n if (currentRetries < maxRetries) {\n this.retryCount.set(key, currentRetries + 1);\n logger.warn(`Retrying ${this.config.name} verification`, {\n attempt: currentRetries + 1,\n maxRetries,\n error: error instanceof Error ? error.message : String(error),\n });\n\n // Exponential backoff\n await this.delay(Math.pow(2, currentRetries) * 1000);\n return this.withRetry(operation, key);\n }\n\n this.retryCount.delete(key);\n throw error;\n }\n }\n\n /**\n * Apply timeout to verification\n */\n protected async withTimeout<T>(operation: () => Promise<T>): Promise<T> {\n if (!this.config.timeout) {\n return operation();\n }\n\n return Promise.race([\n operation(),\n new Promise<T>((_, reject) =>\n setTimeout(\n () =>\n reject(\n new Error(\n `${this.config.name} timeout after ${this.config.timeout}ms`\n )\n ),\n this.config.timeout\n )\n ),\n ]);\n }\n\n /**\n * Helper to create a standard result\n */\n protected createResult(\n passed: boolean,\n message: string,\n severity: VerifierSeverity = 'info',\n details?: VerifierDetails,\n autoFix?: VerifierAutoFix\n ): VerifierResult {\n return {\n verifierId: this.config.id,\n verifierType: this.config.type,\n passed,\n message,\n severity,\n timestamp: new Date(),\n details: details || undefined,\n autoFix: autoFix || undefined,\n };\n }\n\n /**\n * Delay helper for retries\n */\n private delay(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n /**\n * Get verifier configuration\n */\n getConfig(): VerifierConfig {\n return { ...this.config };\n }\n\n /**\n * Check if verifier should stop execution on error\n */\n shouldStopOnError(): boolean {\n return this.config.stopOnError;\n }\n\n /**\n * Update verifier configuration\n */\n updateConfig(updates: Partial<VerifierConfig>): void {\n this.config = { ...this.config, ...updates };\n logger.info(`Updated ${this.config.name} configuration`, {\n updates,\n });\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,7 @@
1
+ import { fileURLToPath as __fileURLToPath } from 'url';
2
+ import { dirname as __pathDirname } from 'path';
3
+ const __filename = __fileURLToPath(import.meta.url);
4
+ const __dirname = __pathDirname(__filename);
1
5
  import { exec } from "child_process";
2
6
  import { promisify } from "util";
3
7
  import {
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/agents/verifiers/formatter-verifier.ts"],
4
4
  "sourcesContent": ["/**\n * Formatter Verifier - Code formatting verification\n * Based on Spotify's formatting verifier pattern\n */\n\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport {\n BaseVerifier,\n VerifierContext,\n VerifierResult,\n VerifierConfig,\n} from './base-verifier.js';\nimport { logger } from '../../core/monitoring/logger.js';\n\nconst execAsync = promisify(exec);\n\nexport class FormatterVerifier extends BaseVerifier {\n private formatters: Map<string, FormatterCommand> = new Map();\n\n constructor(config?: Partial<VerifierConfig>) {\n super({\n id: 'formatter',\n name: 'Code Formatter',\n type: 'style',\n enabled: true,\n stopOnError: false,\n timeout: 10000,\n ...config,\n });\n\n this.initializeFormatters();\n }\n\n private initializeFormatters() {\n // Common formatters for different languages\n this.formatters.set('typescript', {\n checkCommand: 'npx prettier --check',\n fixCommand: 'npx prettier --write',\n patterns: [/\\[error\\]/gi, /File not formatted/gi],\n });\n\n this.formatters.set('javascript', {\n checkCommand: 'npx prettier --check',\n fixCommand: 'npx prettier --write',\n patterns: [/\\[error\\]/gi, /File not formatted/gi],\n });\n\n this.formatters.set('python', {\n checkCommand: 'black --check',\n fixCommand: 'black',\n patterns: [/would reformat/gi, /File not formatted/gi],\n });\n\n this.formatters.set('rust', {\n checkCommand: 'cargo fmt -- --check',\n fixCommand: 'cargo fmt',\n patterns: [/Diff in/gi, /File not formatted/gi],\n });\n\n this.formatters.set('go', {\n checkCommand: 'gofmt -l',\n fixCommand: 'gofmt -w',\n patterns: [/.+\\.go$/gm], // gofmt lists unformatted files\n });\n }\n\n shouldActivate(context: VerifierContext): boolean {\n // Activate for supported languages with code files\n if (!context.language || !context.filePath) {\n return false;\n }\n\n return this.formatters.has(context.language.toLowerCase());\n }\n\n async verify(\n input: string | Buffer,\n context: VerifierContext\n ): Promise<VerifierResult> {\n if (!context.language || !context.filePath) {\n return this.createResult(\n false,\n 'Missing language or file path in context',\n 'error'\n );\n }\n\n const formatter = this.formatters.get(context.language.toLowerCase());\n if (!formatter) {\n return this.createResult(\n true,\n `No formatter configured for ${context.language}`,\n 'info'\n );\n }\n\n try {\n return await this.withTimeout(async () => {\n return await this.withRetry(\n () => this.runFormatter(formatter, context),\n context.filePath!\n );\n });\n } catch (error: unknown) {\n logger.error(\n 'Formatter verification failed',\n error instanceof Error ? error : undefined\n );\n return this.createResult(\n false,\n `Formatter error: ${error instanceof Error ? error.message : String(error)}`,\n 'error'\n );\n }\n }\n\n private async runFormatter(\n formatter: FormatterCommand,\n context: VerifierContext\n ): Promise<VerifierResult> {\n const command = `${formatter.checkCommand} \"${context.filePath}\"`;\n\n try {\n const { stdout, stderr } = await execAsync(command, {\n cwd: process.cwd(),\n timeout: this.config.timeout,\n });\n\n // Formatter passed\n return this.createResult(true, 'Code is properly formatted', 'info');\n } catch (error: any) {\n // Check if it's a formatting issue (exit code 1) vs actual error\n if (error.code === 1) {\n const output = error.stdout + error.stderr;\n const errors = this.extractRelevantErrors(output, formatter.patterns);\n\n return this.createResult(\n false,\n this.generateFeedback(errors, context),\n 'warning',\n {\n code: output.substring(0, 500),\n suggestion: 'Run formatter to fix issues',\n },\n {\n command: `${formatter.fixCommand} \"${context.filePath}\"`,\n description: 'Auto-format the file',\n safe: true,\n confidence: 0.95,\n }\n );\n }\n\n // Actual error running formatter\n throw error;\n }\n }\n}\n\ninterface FormatterCommand {\n checkCommand: string;\n fixCommand: string;\n patterns: RegExp[];\n}\n"],
5
- "mappings": "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",
5
+ "mappings": ";;;;AAKA,SAAS,YAAY;AACrB,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,OAIK;AACP,SAAS,cAAc;AAEvB,MAAM,YAAY,UAAU,IAAI;AAEzB,MAAM,0BAA0B,aAAa;AAAA,EAC1C,aAA4C,oBAAI,IAAI;AAAA,EAE5D,YAAY,QAAkC;AAC5C,UAAM;AAAA,MACJ,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,aAAa;AAAA,MACb,SAAS;AAAA,MACT,GAAG;AAAA,IACL,CAAC;AAED,SAAK,qBAAqB;AAAA,EAC5B;AAAA,EAEQ,uBAAuB;AAE7B,SAAK,WAAW,IAAI,cAAc;AAAA,MAChC,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU,CAAC,eAAe,sBAAsB;AAAA,IAClD,CAAC;AAED,SAAK,WAAW,IAAI,cAAc;AAAA,MAChC,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU,CAAC,eAAe,sBAAsB;AAAA,IAClD,CAAC;AAED,SAAK,WAAW,IAAI,UAAU;AAAA,MAC5B,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU,CAAC,oBAAoB,sBAAsB;AAAA,IACvD,CAAC;AAED,SAAK,WAAW,IAAI,QAAQ;AAAA,MAC1B,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU,CAAC,aAAa,sBAAsB;AAAA,IAChD,CAAC;AAED,SAAK,WAAW,IAAI,MAAM;AAAA,MACxB,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU,CAAC,WAAW;AAAA;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEA,eAAe,SAAmC;AAEhD,QAAI,CAAC,QAAQ,YAAY,CAAC,QAAQ,UAAU;AAC1C,aAAO;AAAA,IACT;AAEA,WAAO,KAAK,WAAW,IAAI,QAAQ,SAAS,YAAY,CAAC;AAAA,EAC3D;AAAA,EAEA,MAAM,OACJ,OACA,SACyB;AACzB,QAAI,CAAC,QAAQ,YAAY,CAAC,QAAQ,UAAU;AAC1C,aAAO,KAAK;AAAA,QACV;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,UAAM,YAAY,KAAK,WAAW,IAAI,QAAQ,SAAS,YAAY,CAAC;AACpE,QAAI,CAAC,WAAW;AACd,aAAO,KAAK;AAAA,QACV;AAAA,QACA,+BAA+B,QAAQ,QAAQ;AAAA,QAC/C;AAAA,MACF;AAAA,IACF;AAEA,QAAI;AACF,aAAO,MAAM,KAAK,YAAY,YAAY;AACxC,eAAO,MAAM,KAAK;AAAA,UAChB,MAAM,KAAK,aAAa,WAAW,OAAO;AAAA,UAC1C,QAAQ;AAAA,QACV;AAAA,MACF,CAAC;AAAA,IACH,SAAS,OAAgB;AACvB,aAAO;AAAA,QACL;AAAA,QACA,iBAAiB,QAAQ,QAAQ;AAAA,MACnC;AACA,aAAO,KAAK;AAAA,QACV;AAAA,QACA,oBAAoB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAAA,QAC1E;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,aACZ,WACA,SACyB;AACzB,UAAM,UAAU,GAAG,UAAU,YAAY,KAAK,QAAQ,QAAQ;AAE9D,QAAI;AACF,YAAM,EAAE,QAAQ,OAAO,IAAI,MAAM,UAAU,SAAS;AAAA,QAClD,KAAK,QAAQ,IAAI;AAAA,QACjB,SAAS,KAAK,OAAO;AAAA,MACvB,CAAC;AAGD,aAAO,KAAK,aAAa,MAAM,8BAA8B,MAAM;AAAA,IACrE,SAAS,OAAY;AAEnB,UAAI,MAAM,SAAS,GAAG;AACpB,cAAM,SAAS,MAAM,SAAS,MAAM;AACpC,cAAM,SAAS,KAAK,sBAAsB,QAAQ,UAAU,QAAQ;AAEpE,eAAO,KAAK;AAAA,UACV;AAAA,UACA,KAAK,iBAAiB,QAAQ,OAAO;AAAA,UACrC;AAAA,UACA;AAAA,YACE,MAAM,OAAO,UAAU,GAAG,GAAG;AAAA,YAC7B,YAAY;AAAA,UACd;AAAA,UACA;AAAA,YACE,SAAS,GAAG,UAAU,UAAU,KAAK,QAAQ,QAAQ;AAAA,YACrD,aAAa;AAAA,YACb,MAAM;AAAA,YACN,YAAY;AAAA,UACd;AAAA,QACF;AAAA,MACF;AAGA,YAAM;AAAA,IACR;AAAA,EACF;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,7 @@
1
+ import { fileURLToPath as __fileURLToPath } from 'url';
2
+ import { dirname as __pathDirname } from 'path';
3
+ const __filename = __fileURLToPath(import.meta.url);
4
+ const __dirname = __pathDirname(__filename);
1
5
  import {
2
6
  BaseVerifier
3
7
  } from "./base-verifier.js";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/agents/verifiers/llm-judge.ts"],
4
4
  "sourcesContent": ["/**\n * LLM Judge - Semantic validation using LLM\n * Implements Spotify's LLM judge pattern that \"vetoes about a quarter of agent sessions\"\n */\n\nimport {\n BaseVerifier,\n VerifierContext,\n VerifierResult,\n VerifierConfig,\n} from './base-verifier.js';\nimport { logger } from '../../core/monitoring/logger.js';\n\nexport interface LLMJudgeContext extends VerifierContext {\n originalPrompt: string;\n proposedChanges: string;\n acceptanceCriteria?: string[];\n previousFeedback?: string[];\n}\n\nexport interface JudgementCriteria {\n adherenceToRequirements: number; // 0-1\n codeQuality: number; // 0-1\n safety: number; // 0-1\n completeness: number; // 0-1\n semanticCorrectness: number; // 0-1\n}\n\nexport class LLMJudge extends BaseVerifier {\n // Spotify reports ~75% pass rate (25% veto rate)\n private readonly VETO_THRESHOLD = 0.7;\n private readonly CRITERIA_WEIGHTS = {\n adherenceToRequirements: 0.3,\n codeQuality: 0.2,\n safety: 0.2,\n completeness: 0.15,\n semanticCorrectness: 0.15,\n };\n\n constructor(config?: Partial<VerifierConfig>) {\n super({\n id: 'llm-judge',\n name: 'LLM Semantic Judge',\n type: 'semantic',\n enabled: true,\n stopOnError: true, // Stop on semantic failures (Spotify pattern)\n timeout: 30000,\n ...config,\n });\n }\n\n shouldActivate(context: VerifierContext): boolean {\n // Always activate for semantic validation (Spotify always includes this)\n return true;\n }\n\n async verify(\n input: string | Buffer,\n context: VerifierContext\n ): Promise<VerifierResult> {\n const llmContext = context as LLMJudgeContext;\n\n if (!llmContext.originalPrompt) {\n return this.createResult(\n false,\n 'Missing original prompt for semantic validation',\n 'error'\n );\n }\n\n try {\n return await this.withTimeout(async () => {\n const judgement = await this.performJudgement(\n input.toString(),\n llmContext\n );\n return this.createJudgementResult(judgement, llmContext);\n });\n } catch (error: unknown) {\n logger.error(\n 'LLM Judge failed',\n error instanceof Error ? error : undefined\n );\n return this.createResult(\n false,\n `Semantic validation error: ${error instanceof Error ? error.message : String(error)}`,\n 'error'\n );\n }\n }\n\n private async performJudgement(\n proposedChanges: string,\n context: LLMJudgeContext\n ): Promise<JudgementCriteria> {\n // In production, this would call an actual LLM API\n // For now, simulate judgement with realistic patterns\n\n const criteria: JudgementCriteria = {\n adherenceToRequirements: this.evaluateAdherence(proposedChanges, context),\n codeQuality: this.evaluateCodeQuality(proposedChanges),\n safety: this.evaluateSafety(proposedChanges),\n completeness: this.evaluateCompleteness(proposedChanges, context),\n semanticCorrectness: this.evaluateSemanticCorrectness(\n proposedChanges,\n context\n ),\n };\n\n // Log judgement for analysis (Spotify's trace collection)\n logger.info('LLM Judge evaluation', {\n criteria,\n overallScore: this.calculateOverallScore(criteria),\n willVeto: this.calculateOverallScore(criteria) < this.VETO_THRESHOLD,\n });\n\n return criteria;\n }\n\n private evaluateAdherence(\n proposedChanges: string,\n context: LLMJudgeContext\n ): number {\n // Simulate checking if changes match original requirements\n const hasKeywords = context.originalPrompt\n .toLowerCase()\n .split(' ')\n .filter((word) => word.length > 4)\n .some((keyword) => proposedChanges.toLowerCase().includes(keyword));\n\n // Check acceptance criteria if provided\n if (context.acceptanceCriteria) {\n const metCriteria = context.acceptanceCriteria.filter((criterion) =>\n this.checkCriterion(criterion, proposedChanges)\n ).length;\n const criteriaScore = metCriteria / context.acceptanceCriteria.length;\n return hasKeywords ? Math.min(1, criteriaScore + 0.2) : criteriaScore;\n }\n\n // Simulate realistic pass rate (~75%)\n return hasKeywords ? 0.75 + Math.random() * 0.2 : 0.4 + Math.random() * 0.3;\n }\n\n private evaluateCodeQuality(proposedChanges: string): number {\n // Simple heuristics for code quality\n const indicators = {\n hasComments:\n proposedChanges.includes('//') || proposedChanges.includes('/*'),\n hasErrorHandling:\n proposedChanges.includes('try') || proposedChanges.includes('catch'),\n hasTests:\n proposedChanges.includes('test') || proposedChanges.includes('expect'),\n properNaming: !/[a-z]{20,}|[A-Z]{10,}/.test(proposedChanges), // No extremely long names\n reasonable_length:\n proposedChanges.length > 50 && proposedChanges.length < 5000,\n };\n\n const score =\n Object.values(indicators).filter(Boolean).length /\n Object.keys(indicators).length;\n return Math.min(1, score + 0.2); // Boost slightly\n }\n\n private evaluateSafety(proposedChanges: string): number {\n // Check for dangerous patterns\n const dangerousPatterns = [\n /eval\\s*\\(/,\n /exec\\s*\\(/,\n /rm\\s+-rf/,\n /DROP\\s+TABLE/i,\n /DELETE\\s+FROM/i,\n /<script>/i,\n /document\\.write/,\n /innerHTML\\s*=/,\n ];\n\n const hasDangerousPattern = dangerousPatterns.some((pattern) =>\n pattern.test(proposedChanges)\n );\n\n return hasDangerousPattern ? 0.3 : 0.9 + Math.random() * 0.1;\n }\n\n private evaluateCompleteness(\n proposedChanges: string,\n context: LLMJudgeContext\n ): number {\n // Check if the solution seems complete\n const hasImplementation = proposedChanges.length > 100;\n const hasStructure =\n proposedChanges.includes('function') ||\n proposedChanges.includes('class') ||\n proposedChanges.includes('const') ||\n proposedChanges.includes('def');\n\n if (context.acceptanceCriteria) {\n const addressedCriteria = context.acceptanceCriteria.filter((criterion) =>\n proposedChanges\n .toLowerCase()\n .includes(criterion.toLowerCase().split(' ')[0])\n ).length;\n return addressedCriteria / context.acceptanceCriteria.length;\n }\n\n return hasImplementation && hasStructure ? 0.8 + Math.random() * 0.15 : 0.4;\n }\n\n private evaluateSemanticCorrectness(\n proposedChanges: string,\n context: LLMJudgeContext\n ): number {\n // Simulate semantic analysis\n // In production, this would use embeddings and semantic similarity\n\n // Check if previous feedback was addressed\n if (context.previousFeedback && context.previousFeedback.length > 0) {\n const addressedFeedback = context.previousFeedback.filter((feedback) => {\n const keywords = feedback\n .toLowerCase()\n .split(' ')\n .filter((w) => w.length > 4);\n return keywords.some((keyword) =>\n proposedChanges.toLowerCase().includes(keyword)\n );\n }).length;\n\n if (addressedFeedback > 0) {\n return Math.min(\n 1,\n 0.7 + (addressedFeedback / context.previousFeedback.length) * 0.3\n );\n }\n }\n\n // Default semantic score (realistic distribution)\n return 0.65 + Math.random() * 0.25;\n }\n\n private checkCriterion(criterion: string, proposedChanges: string): boolean {\n // Simple keyword matching for criteria\n const keywords = criterion\n .toLowerCase()\n .split(' ')\n .filter((word) => word.length > 3);\n const matchedKeywords = keywords.filter((keyword) =>\n proposedChanges.toLowerCase().includes(keyword)\n );\n return matchedKeywords.length >= keywords.length * 0.5;\n }\n\n private calculateOverallScore(criteria: JudgementCriteria): number {\n let score = 0;\n for (const [key, weight] of Object.entries(this.CRITERIA_WEIGHTS)) {\n score += criteria[key as keyof JudgementCriteria] * weight;\n }\n return score;\n }\n\n private createJudgementResult(\n criteria: JudgementCriteria,\n context: LLMJudgeContext\n ): VerifierResult {\n const overallScore = this.calculateOverallScore(criteria);\n const passed = overallScore >= this.VETO_THRESHOLD;\n\n // Generate detailed feedback\n const feedback = this.generateJudgementFeedback(\n criteria,\n overallScore,\n context\n );\n\n // Determine severity based on score\n const severity =\n overallScore < 0.5\n ? 'error'\n : overallScore < this.VETO_THRESHOLD\n ? 'warning'\n : 'info';\n\n return this.createResult(\n passed,\n feedback,\n severity,\n {\n expected: 'Changes that fully address the original requirements',\n actual: `Score: ${(overallScore * 100).toFixed(1)}%`,\n suggestion: this.generateSuggestions(criteria),\n },\n passed\n ? undefined\n : {\n command: 'Review and adjust approach based on feedback',\n description: 'Manual review required',\n safe: false,\n confidence: overallScore,\n }\n );\n }\n\n private generateJudgementFeedback(\n criteria: JudgementCriteria,\n overallScore: number,\n context: LLMJudgeContext\n ): string {\n if (overallScore >= this.VETO_THRESHOLD) {\n return (\n `Semantic validation PASSED (${(overallScore * 100).toFixed(1)}% confidence). ` +\n `Changes adequately address the requirements.`\n );\n }\n\n // Identify weakest areas\n const weakAreas: string[] = [];\n if (criteria.adherenceToRequirements < 0.6) {\n weakAreas.push('requirements adherence');\n }\n if (criteria.codeQuality < 0.6) {\n weakAreas.push('code quality');\n }\n if (criteria.safety < 0.7) {\n weakAreas.push('safety concerns');\n }\n if (criteria.completeness < 0.6) {\n weakAreas.push('completeness');\n }\n if (criteria.semanticCorrectness < 0.6) {\n weakAreas.push('semantic correctness');\n }\n\n return (\n `Semantic validation VETOED (${(overallScore * 100).toFixed(1)}% confidence). ` +\n `Issues found with: ${weakAreas.join(', ')}. ` +\n `Agent should course-correct based on this feedback.`\n );\n }\n\n private generateSuggestions(criteria: JudgementCriteria): string {\n const suggestions: string[] = [];\n\n if (criteria.adherenceToRequirements < 0.7) {\n suggestions.push(\n 'Review original requirements and ensure all are addressed'\n );\n }\n if (criteria.codeQuality < 0.7) {\n suggestions.push(\n 'Improve code structure, add error handling and comments'\n );\n }\n if (criteria.safety < 0.8) {\n suggestions.push(\n 'Review code for security vulnerabilities and unsafe patterns'\n );\n }\n if (criteria.completeness < 0.7) {\n suggestions.push('Ensure solution is complete and handles edge cases');\n }\n if (criteria.semanticCorrectness < 0.7) {\n suggestions.push('Verify logic correctness and alignment with intent');\n }\n\n return suggestions.length > 0\n ? suggestions.join('; ')\n : 'Continue with current approach';\n }\n\n /**\n * Get veto statistics (for monitoring)\n */\n getVetoRate(): number {\n // In production, this would track actual veto rate\n // Spotify reports ~25% veto rate\n return 0.25;\n }\n\n /**\n * Check if agent can course-correct after veto\n * Spotify: \"When vetoed, agents can course correct half the time\"\n */\n canCourseCorrect(previousAttempts: number): boolean {\n // 50% chance of successful course correction\n return previousAttempts < 2 && Math.random() > 0.5;\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,3 +1,7 @@
1
+ import { fileURLToPath as __fileURLToPath } from 'url';
2
+ import { dirname as __pathDirname } from 'path';
3
+ const __filename = __fileURLToPath(import.meta.url);
4
+ const __dirname = __pathDirname(__filename);
1
5
  import { execSync } from "child_process";
2
6
  import * as fs from "fs";
3
7
  import * as path from "path";
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli/auto-detect.ts"],
4
4
  "sourcesContent": ["/**\n * Auto-detection utilities for Claude-SM\n * Automatically detects when worktree isolation is needed\n */\n\nimport { execSync } from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nexport interface DetectionResult {\n shouldUseWorktree: boolean;\n reasons: string[];\n confidence: 'high' | 'medium' | 'low';\n suggestions: string[];\n}\n\nexport class ClaudeAutoDetect {\n private projectRoot: string;\n\n constructor(projectRoot: string = process.cwd()) {\n this.projectRoot = projectRoot;\n }\n\n /**\n * Main detection logic\n */\n public detect(): DetectionResult {\n const result: DetectionResult = {\n shouldUseWorktree: false,\n reasons: [],\n confidence: 'low',\n suggestions: [],\n };\n\n // Check various conditions\n const checks = [\n this.checkUncommittedChanges(),\n this.checkActiveInstances(),\n this.checkBranchProtection(),\n this.checkFileConflicts(),\n this.checkResourceUsage(),\n this.checkTaskComplexity(),\n ];\n\n // Aggregate results\n let score = 0;\n for (const check of checks) {\n if (check.detected) {\n score += check.weight;\n result.reasons.push(check.reason);\n if (check.suggestion) {\n result.suggestions.push(check.suggestion);\n }\n }\n }\n\n // Determine recommendation\n if (score >= 7) {\n result.shouldUseWorktree = true;\n result.confidence = 'high';\n } else if (score >= 4) {\n result.shouldUseWorktree = true;\n result.confidence = 'medium';\n } else if (score >= 2) {\n result.shouldUseWorktree = false;\n result.confidence = 'medium';\n result.suggestions.push(\n 'Consider using --worktree if making significant changes'\n );\n }\n\n return result;\n }\n\n /**\n * Check for uncommitted changes\n */\n private checkUncommittedChanges(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n try {\n const status = execSync('git status --porcelain', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n });\n\n if (status.trim().length > 0) {\n const lines = status.trim().split('\\n').length;\n return {\n detected: true,\n weight: lines > 10 ? 3 : 2,\n reason: `${lines} uncommitted changes in working directory`,\n suggestion:\n 'Commit or stash changes before proceeding, or use worktree',\n };\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check for other active Claude instances\n */\n private checkActiveInstances(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n const lockDir = path.join(this.projectRoot, '.claude-worktree-locks');\n\n if (fs.existsSync(lockDir)) {\n try {\n const locks = fs\n .readdirSync(lockDir)\n .filter((f) => f.endsWith('.lock'));\n const activeLocks = locks.filter((lockFile) => {\n const lockPath = path.join(lockDir, lockFile);\n const stats = fs.statSync(lockPath);\n const ageHours = (Date.now() - stats.mtimeMs) / (1000 * 60 * 60);\n return ageHours < 24;\n });\n\n if (activeLocks.length > 0) {\n return {\n detected: true,\n weight: activeLocks.length >= 2 ? 4 : 3,\n reason: `${activeLocks.length} other Claude instance(s) active`,\n suggestion: 'Use worktree to avoid conflicts with other instances',\n };\n }\n } catch {}\n }\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check if on protected branch\n */\n private checkBranchProtection(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n try {\n const branch = execSync('git rev-parse --abbrev-ref HEAD', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n }).trim();\n\n const protectedBranches = [\n 'main',\n 'master',\n 'production',\n 'staging',\n 'develop',\n ];\n\n if (protectedBranches.includes(branch)) {\n return {\n detected: true,\n weight: 4,\n reason: `Working on protected branch: ${branch}`,\n suggestion: 'Create a feature branch or use worktree',\n };\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check for potential file conflicts\n */\n private checkFileConflicts(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n // Check if multiple editors/IDEs are open\n const ideFiles = [\n '.vscode/settings.json',\n '.idea/workspace.xml',\n '.sublime-workspace',\n ];\n\n let openIDEs = 0;\n for (const ideFile of ideFiles) {\n const filePath = path.join(this.projectRoot, ideFile);\n if (fs.existsSync(filePath)) {\n try {\n const stats = fs.statSync(filePath);\n const ageMinutes = (Date.now() - stats.mtimeMs) / (1000 * 60);\n if (ageMinutes < 5) {\n openIDEs++;\n }\n } catch {}\n }\n }\n\n if (openIDEs > 1) {\n return {\n detected: true,\n weight: 2,\n reason: 'Multiple IDEs/editors detected',\n suggestion: 'Use worktree to avoid file lock conflicts',\n };\n }\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Check system resource usage\n */\n private checkResourceUsage(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n try {\n // Check number of git worktrees\n const worktrees = execSync('git worktree list', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n })\n .trim()\n .split('\\n').length;\n\n if (worktrees > 3) {\n return {\n detected: true,\n weight: 1,\n reason: `${worktrees} worktrees already exist`,\n suggestion: 'Consider cleaning up old worktrees',\n };\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Detect task complexity from user input or context\n */\n private checkTaskComplexity(): {\n detected: boolean;\n weight: number;\n reason: string;\n suggestion?: string;\n } {\n // Check for complex task indicators in recent commits\n try {\n const recentCommit = execSync('git log -1 --pretty=%B', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n }).toLowerCase();\n\n const complexIndicators = [\n 'refactor',\n 'breaking change',\n 'major',\n 'experiment',\n 'prototype',\n 'redesign',\n 'migration',\n ];\n\n for (const indicator of complexIndicators) {\n if (recentCommit.includes(indicator)) {\n return {\n detected: true,\n weight: 2,\n reason: 'Recent complex changes detected',\n suggestion: 'Use worktree for experimental or major changes',\n };\n }\n }\n } catch {}\n\n return { detected: false, weight: 0, reason: '' };\n }\n\n /**\n * Get current environment status\n */\n public getStatus(): {\n git: boolean;\n worktrees: number;\n instances: number;\n branch: string;\n uncommittedChanges: number;\n } {\n const status = {\n git: false,\n worktrees: 0,\n instances: 0,\n branch: 'unknown',\n uncommittedChanges: 0,\n };\n\n // Check Git\n try {\n execSync('git rev-parse --git-dir', {\n cwd: this.projectRoot,\n stdio: 'ignore',\n });\n status.git = true;\n\n // Get branch\n status.branch = execSync('git rev-parse --abbrev-ref HEAD', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n }).trim();\n\n // Count worktrees\n const worktreeList = execSync('git worktree list', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n });\n status.worktrees = worktreeList.trim().split('\\n').length;\n\n // Count changes\n const changes = execSync('git status --porcelain', {\n cwd: this.projectRoot,\n encoding: 'utf8',\n });\n status.uncommittedChanges = changes.trim()\n ? changes.trim().split('\\n').length\n : 0;\n } catch {}\n\n // Count instances\n const lockDir = path.join(this.projectRoot, '.claude-worktree-locks');\n if (fs.existsSync(lockDir)) {\n try {\n const locks = fs\n .readdirSync(lockDir)\n .filter((f) => f.endsWith('.lock'));\n status.instances = locks.filter((lockFile) => {\n const lockPath = path.join(lockDir, lockFile);\n const stats = fs.statSync(lockPath);\n const ageHours = (Date.now() - stats.mtimeMs) / (1000 * 60 * 60);\n return ageHours < 24;\n }).length;\n } catch {}\n }\n\n return status;\n }\n\n /**\n * Smart recommendation based on context\n */\n public recommend(taskDescription?: string): {\n mode: 'normal' | 'worktree' | 'sandbox' | 'chrome';\n reason: string;\n flags: string[];\n } {\n const detection = this.detect();\n const status = this.getStatus();\n\n // Analyze task description if provided\n let taskType = 'general';\n if (taskDescription) {\n const lower = taskDescription.toLowerCase();\n if (\n lower.includes('ui') ||\n lower.includes('frontend') ||\n lower.includes('component')\n ) {\n taskType = 'frontend';\n } else if (\n lower.includes('api') ||\n lower.includes('backend') ||\n lower.includes('database')\n ) {\n taskType = 'backend';\n } else if (\n lower.includes('test') ||\n lower.includes('debug') ||\n lower.includes('fix')\n ) {\n taskType = 'debugging';\n } else if (lower.includes('refactor') || lower.includes('clean')) {\n taskType = 'refactoring';\n }\n }\n\n // Determine mode and flags\n let mode: 'normal' | 'worktree' | 'sandbox' | 'chrome' = 'normal';\n const flags: string[] = [];\n let reason = '';\n\n if (detection.shouldUseWorktree) {\n mode = 'worktree';\n flags.push('--worktree');\n reason = detection.reasons[0] || 'Isolation recommended';\n }\n\n // Add task-specific flags\n switch (taskType) {\n case 'frontend':\n if (mode === 'worktree') {\n mode = 'chrome';\n flags.push('--chrome');\n reason += '; Chrome automation for UI work';\n }\n break;\n case 'backend':\n if (mode === 'worktree') {\n mode = 'sandbox';\n flags.push('--sandbox');\n reason += '; Sandboxed for API development';\n }\n break;\n case 'refactoring':\n if (mode === 'normal' && status.uncommittedChanges === 0) {\n // Refactoring on clean working directory is OK\n reason = 'Clean working directory, safe to proceed';\n }\n break;\n }\n\n return { mode, reason, flags };\n }\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,8 @@
1
1
  #!/usr/bin/env node
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const __filename = __fileURLToPath(import.meta.url);
5
+ const __dirname = __pathDirname(__filename);
2
6
  import { BrowserMCPIntegration } from "../features/browser/browser-mcp.js";
3
7
  async function testBrowserMCP() {
4
8
  console.log("Testing Browser MCP Integration...\n");
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli/browser-test.ts"],
4
4
  "sourcesContent": ["#!/usr/bin/env node\n/**\n * Test Browser MCP integration locally\n */\n\nimport { BrowserMCPIntegration } from '../features/browser/browser-mcp.js';\n\nasync function testBrowserMCP() {\n console.log('Testing Browser MCP Integration...\\n');\n\n const browser = new BrowserMCPIntegration({\n headless: false, // Show browser for testing\n defaultViewport: { width: 1280, height: 720 },\n });\n\n await browser.initialize();\n\n console.log('Browser MCP initialized successfully!');\n console.log('\\nAvailable tools:');\n console.log(' - browser_navigate');\n console.log(' - browser_screenshot');\n console.log(' - browser_click');\n console.log(' - browser_type');\n console.log(' - browser_evaluate');\n console.log(' - browser_wait');\n console.log(' - browser_get_content');\n console.log(' - browser_close');\n\n console.log('\\nBrowser MCP is ready to use with StackMemory!');\n\n // Clean up\n await browser.cleanup();\n process.exit(0);\n}\n\ntestBrowserMCP().catch((error) => {\n console.error('Browser MCP test failed:', error);\n process.exit(1);\n});\n"],
5
- "mappings": ";AAKA,SAAS,6BAA6B;AAEtC,eAAe,iBAAiB;AAC9B,UAAQ,IAAI,sCAAsC;AAElD,QAAM,UAAU,IAAI,sBAAsB;AAAA,IACxC,UAAU;AAAA;AAAA,IACV,iBAAiB,EAAE,OAAO,MAAM,QAAQ,IAAI;AAAA,EAC9C,CAAC;AAED,QAAM,QAAQ,WAAW;AAEzB,UAAQ,IAAI,uCAAuC;AACnD,UAAQ,IAAI,oBAAoB;AAChC,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,wBAAwB;AACpC,UAAQ,IAAI,mBAAmB;AAC/B,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI,yBAAyB;AACrC,UAAQ,IAAI,mBAAmB;AAE/B,UAAQ,IAAI,iDAAiD;AAG7D,QAAM,QAAQ,QAAQ;AACtB,UAAQ,KAAK,CAAC;AAChB;AAEA,eAAe,EAAE,MAAM,CAAC,UAAU;AAChC,UAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAQ,KAAK,CAAC;AAChB,CAAC;",
5
+ "mappings": ";;;;;AAKA,SAAS,6BAA6B;AAEtC,eAAe,iBAAiB;AAC9B,UAAQ,IAAI,sCAAsC;AAElD,QAAM,UAAU,IAAI,sBAAsB;AAAA,IACxC,UAAU;AAAA;AAAA,IACV,iBAAiB,EAAE,OAAO,MAAM,QAAQ,IAAI;AAAA,EAC9C,CAAC;AAED,QAAM,QAAQ,WAAW;AAEzB,UAAQ,IAAI,uCAAuC;AACnD,UAAQ,IAAI,oBAAoB;AAChC,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,wBAAwB;AACpC,UAAQ,IAAI,mBAAmB;AAC/B,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI,sBAAsB;AAClC,UAAQ,IAAI,kBAAkB;AAC9B,UAAQ,IAAI,yBAAyB;AACrC,UAAQ,IAAI,mBAAmB;AAE/B,UAAQ,IAAI,iDAAiD;AAG7D,QAAM,QAAQ,QAAQ;AACtB,UAAQ,KAAK,CAAC;AAChB;AAEA,eAAe,EAAE,MAAM,CAAC,UAAU;AAChC,UAAQ,MAAM,4BAA4B,KAAK;AAC/C,UAAQ,KAAK,CAAC;AAChB,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env node
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const __filename = __fileURLToPath(import.meta.url);
5
+ const __dirname = __pathDirname(__filename);
2
6
  import { spawn } from "child_process";
3
7
  import * as path from "path";
4
- import { fileURLToPath } from "url";
5
- const __filename = fileURLToPath(import.meta.url);
6
- const __dirname = path.dirname(__filename);
7
8
  const claudeSmPath = path.join(__dirname, "claude-sm.js");
8
9
  const args = ["--dangerously-skip-permissions", ...process.argv.slice(2)];
9
10
  const child = spawn("node", [claudeSmPath, ...args], {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/cli/claude-sm-danger.ts"],
4
- "sourcesContent": ["#!/usr/bin/env node\n\n/**\n * claude-sm-danger: Claude-SM wrapper with --dangerously-skip-permissions\n * Shorthand for: claude-sm --dangerously-skip-permissions [args]\n */\n\nimport { spawn } from 'child_process';\nimport * as path from 'path';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\n// Get the claude-sm script path\nconst claudeSmPath = path.join(__dirname, 'claude-sm.js');\n\n// Prepend the danger flag to all args\nconst args = ['--dangerously-skip-permissions', ...process.argv.slice(2)];\n\n// Spawn claude-sm with the danger flag\nconst child = spawn('node', [claudeSmPath, ...args], {\n stdio: 'inherit',\n env: process.env,\n});\n\nchild.on('exit', (code) => {\n process.exit(code || 0);\n});\n\nchild.on('error', (err) => {\n console.error('Failed to launch claude-sm:', err.message);\n process.exit(1);\n});\n"],
5
- "mappings": ";AAOA,SAAS,aAAa;AACtB,YAAY,UAAU;AACtB,SAAS,qBAAqB;AAE9B,MAAM,aAAa,cAAc,YAAY,GAAG;AAChD,MAAM,YAAY,KAAK,QAAQ,UAAU;AAGzC,MAAM,eAAe,KAAK,KAAK,WAAW,cAAc;AAGxD,MAAM,OAAO,CAAC,kCAAkC,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC;AAGxE,MAAM,QAAQ,MAAM,QAAQ,CAAC,cAAc,GAAG,IAAI,GAAG;AAAA,EACnD,OAAO;AAAA,EACP,KAAK,QAAQ;AACf,CAAC;AAED,MAAM,GAAG,QAAQ,CAAC,SAAS;AACzB,UAAQ,KAAK,QAAQ,CAAC;AACxB,CAAC;AAED,MAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,UAAQ,MAAM,+BAA+B,IAAI,OAAO;AACxD,UAAQ,KAAK,CAAC;AAChB,CAAC;",
4
+ "sourcesContent": ["#!/usr/bin/env node\n\n/**\n * claude-sm-danger: Claude-SM wrapper with --dangerously-skip-permissions\n * Shorthand for: claude-sm --dangerously-skip-permissions [args]\n */\n\nimport { spawn } from 'child_process';\nimport * as path from 'path';\n\n// __filename and __dirname are provided by esbuild banner for ESM compatibility\n\n// Get the claude-sm script path\nconst claudeSmPath = path.join(__dirname, 'claude-sm.js');\n\n// Prepend the danger flag to all args\nconst args = ['--dangerously-skip-permissions', ...process.argv.slice(2)];\n\n// Spawn claude-sm with the danger flag\nconst child = spawn('node', [claudeSmPath, ...args], {\n stdio: 'inherit',\n env: process.env,\n});\n\nchild.on('exit', (code) => {\n process.exit(code || 0);\n});\n\nchild.on('error', (err) => {\n console.error('Failed to launch claude-sm:', err.message);\n process.exit(1);\n});\n"],
5
+ "mappings": ";;;;;AAOA,SAAS,aAAa;AACtB,YAAY,UAAU;AAKtB,MAAM,eAAe,KAAK,KAAK,WAAW,cAAc;AAGxD,MAAM,OAAO,CAAC,kCAAkC,GAAG,QAAQ,KAAK,MAAM,CAAC,CAAC;AAGxE,MAAM,QAAQ,MAAM,QAAQ,CAAC,cAAc,GAAG,IAAI,GAAG;AAAA,EACnD,OAAO;AAAA,EACP,KAAK,QAAQ;AACf,CAAC;AAED,MAAM,GAAG,QAAQ,CAAC,SAAS;AACzB,UAAQ,KAAK,QAAQ,CAAC;AACxB,CAAC;AAED,MAAM,GAAG,SAAS,CAAC,QAAQ;AACzB,UAAQ,MAAM,+BAA+B,IAAI,OAAO;AACxD,UAAQ,KAAK,CAAC;AAChB,CAAC;",
6
6
  "names": []
7
7
  }
@@ -1,4 +1,8 @@
1
1
  #!/usr/bin/env node
2
+ import { fileURLToPath as __fileURLToPath } from 'url';
3
+ import { dirname as __pathDirname } from 'path';
4
+ const __filename = __fileURLToPath(import.meta.url);
5
+ const __dirname = __pathDirname(__filename);
2
6
  import { spawn, execSync, execFileSync } from "child_process";
3
7
  import * as fs from "fs";
4
8
  import * as path from "path";