@promptwheel/cli 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (530) hide show
  1. package/README.md +215 -0
  2. package/dist/bin/promptwheel.d.ts +17 -0
  3. package/dist/bin/promptwheel.d.ts.map +1 -0
  4. package/dist/bin/promptwheel.js +90 -0
  5. package/dist/bin/promptwheel.js.map +1 -0
  6. package/dist/commands/auto-auth.d.ts +26 -0
  7. package/dist/commands/auto-auth.d.ts.map +1 -0
  8. package/dist/commands/auto-auth.js +216 -0
  9. package/dist/commands/auto-auth.js.map +1 -0
  10. package/dist/commands/auto-ci-mode.d.ts +9 -0
  11. package/dist/commands/auto-ci-mode.d.ts.map +1 -0
  12. package/dist/commands/auto-ci-mode.js +176 -0
  13. package/dist/commands/auto-ci-mode.js.map +1 -0
  14. package/dist/commands/solo-analytics.d.ts +6 -0
  15. package/dist/commands/solo-analytics.d.ts.map +1 -0
  16. package/dist/commands/solo-analytics.js +267 -0
  17. package/dist/commands/solo-analytics.js.map +1 -0
  18. package/dist/commands/solo-auto.d.ts +6 -0
  19. package/dist/commands/solo-auto.d.ts.map +1 -0
  20. package/dist/commands/solo-auto.js +135 -0
  21. package/dist/commands/solo-auto.js.map +1 -0
  22. package/dist/commands/solo-daemon.d.ts +12 -0
  23. package/dist/commands/solo-daemon.d.ts.map +1 -0
  24. package/dist/commands/solo-daemon.js +177 -0
  25. package/dist/commands/solo-daemon.js.map +1 -0
  26. package/dist/commands/solo-exec.d.ts +6 -0
  27. package/dist/commands/solo-exec.d.ts.map +1 -0
  28. package/dist/commands/solo-exec.js +656 -0
  29. package/dist/commands/solo-exec.js.map +1 -0
  30. package/dist/commands/solo-inspect.d.ts +6 -0
  31. package/dist/commands/solo-inspect.d.ts.map +1 -0
  32. package/dist/commands/solo-inspect.js +765 -0
  33. package/dist/commands/solo-inspect.js.map +1 -0
  34. package/dist/commands/solo-lifecycle.d.ts +6 -0
  35. package/dist/commands/solo-lifecycle.d.ts.map +1 -0
  36. package/dist/commands/solo-lifecycle.js +226 -0
  37. package/dist/commands/solo-lifecycle.js.map +1 -0
  38. package/dist/commands/solo-nudge.d.ts +6 -0
  39. package/dist/commands/solo-nudge.d.ts.map +1 -0
  40. package/dist/commands/solo-nudge.js +49 -0
  41. package/dist/commands/solo-nudge.js.map +1 -0
  42. package/dist/commands/solo-qa.d.ts +6 -0
  43. package/dist/commands/solo-qa.d.ts.map +1 -0
  44. package/dist/commands/solo-qa.js +253 -0
  45. package/dist/commands/solo-qa.js.map +1 -0
  46. package/dist/commands/solo-trajectory.d.ts +6 -0
  47. package/dist/commands/solo-trajectory.d.ts.map +1 -0
  48. package/dist/commands/solo-trajectory.js +268 -0
  49. package/dist/commands/solo-trajectory.js.map +1 -0
  50. package/dist/commands/solo.d.ts +11 -0
  51. package/dist/commands/solo.d.ts.map +1 -0
  52. package/dist/commands/solo.js +52 -0
  53. package/dist/commands/solo.js.map +1 -0
  54. package/dist/index.d.ts +18 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +18 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/lib/artifacts.d.ts +136 -0
  59. package/dist/lib/artifacts.d.ts.map +1 -0
  60. package/dist/lib/artifacts.js +147 -0
  61. package/dist/lib/artifacts.js.map +1 -0
  62. package/dist/lib/codebase-index.d.ts +5 -0
  63. package/dist/lib/codebase-index.d.ts.map +1 -0
  64. package/dist/lib/codebase-index.js +5 -0
  65. package/dist/lib/codebase-index.js.map +1 -0
  66. package/dist/lib/cycle-context.d.ts +62 -0
  67. package/dist/lib/cycle-context.d.ts.map +1 -0
  68. package/dist/lib/cycle-context.js +141 -0
  69. package/dist/lib/cycle-context.js.map +1 -0
  70. package/dist/lib/daemon-fork.d.ts +39 -0
  71. package/dist/lib/daemon-fork.d.ts.map +1 -0
  72. package/dist/lib/daemon-fork.js +164 -0
  73. package/dist/lib/daemon-fork.js.map +1 -0
  74. package/dist/lib/daemon-notifier.d.ts +29 -0
  75. package/dist/lib/daemon-notifier.d.ts.map +1 -0
  76. package/dist/lib/daemon-notifier.js +147 -0
  77. package/dist/lib/daemon-notifier.js.map +1 -0
  78. package/dist/lib/daemon.d.ts +75 -0
  79. package/dist/lib/daemon.d.ts.map +1 -0
  80. package/dist/lib/daemon.js +265 -0
  81. package/dist/lib/daemon.js.map +1 -0
  82. package/dist/lib/dedup-memory.d.ts +46 -0
  83. package/dist/lib/dedup-memory.d.ts.map +1 -0
  84. package/dist/lib/dedup-memory.js +190 -0
  85. package/dist/lib/dedup-memory.js.map +1 -0
  86. package/dist/lib/dedup.d.ts +37 -0
  87. package/dist/lib/dedup.d.ts.map +1 -0
  88. package/dist/lib/dedup.js +85 -0
  89. package/dist/lib/dedup.js.map +1 -0
  90. package/dist/lib/display-adapter-log.d.ts +26 -0
  91. package/dist/lib/display-adapter-log.d.ts.map +1 -0
  92. package/dist/lib/display-adapter-log.js +63 -0
  93. package/dist/lib/display-adapter-log.js.map +1 -0
  94. package/dist/lib/display-adapter-spinner.d.ts +28 -0
  95. package/dist/lib/display-adapter-spinner.d.ts.map +1 -0
  96. package/dist/lib/display-adapter-spinner.js +93 -0
  97. package/dist/lib/display-adapter-spinner.js.map +1 -0
  98. package/dist/lib/display-adapter-tui.d.ts +32 -0
  99. package/dist/lib/display-adapter-tui.d.ts.map +1 -0
  100. package/dist/lib/display-adapter-tui.js +77 -0
  101. package/dist/lib/display-adapter-tui.js.map +1 -0
  102. package/dist/lib/display-adapter.d.ts +40 -0
  103. package/dist/lib/display-adapter.d.ts.map +1 -0
  104. package/dist/lib/display-adapter.js +9 -0
  105. package/dist/lib/display-adapter.js.map +1 -0
  106. package/dist/lib/doctor.d.ts +45 -0
  107. package/dist/lib/doctor.d.ts.map +1 -0
  108. package/dist/lib/doctor.js +382 -0
  109. package/dist/lib/doctor.js.map +1 -0
  110. package/dist/lib/exclusion-index.d.ts +50 -0
  111. package/dist/lib/exclusion-index.d.ts.map +1 -0
  112. package/dist/lib/exclusion-index.js +249 -0
  113. package/dist/lib/exclusion-index.js.map +1 -0
  114. package/dist/lib/exec.d.ts +24 -0
  115. package/dist/lib/exec.d.ts.map +1 -0
  116. package/dist/lib/exec.js +295 -0
  117. package/dist/lib/exec.js.map +1 -0
  118. package/dist/lib/execution-backends/claude.d.ts +27 -0
  119. package/dist/lib/execution-backends/claude.d.ts.map +1 -0
  120. package/dist/lib/execution-backends/claude.js +161 -0
  121. package/dist/lib/execution-backends/claude.js.map +1 -0
  122. package/dist/lib/execution-backends/codex.d.ts +28 -0
  123. package/dist/lib/execution-backends/codex.d.ts.map +1 -0
  124. package/dist/lib/execution-backends/codex.js +216 -0
  125. package/dist/lib/execution-backends/codex.js.map +1 -0
  126. package/dist/lib/execution-backends/index.d.ts +10 -0
  127. package/dist/lib/execution-backends/index.d.ts.map +1 -0
  128. package/dist/lib/execution-backends/index.js +9 -0
  129. package/dist/lib/execution-backends/index.js.map +1 -0
  130. package/dist/lib/execution-backends/kimi.d.ts +25 -0
  131. package/dist/lib/execution-backends/kimi.d.ts.map +1 -0
  132. package/dist/lib/execution-backends/kimi.js +76 -0
  133. package/dist/lib/execution-backends/kimi.js.map +1 -0
  134. package/dist/lib/execution-backends/types.d.ts +38 -0
  135. package/dist/lib/execution-backends/types.d.ts.map +1 -0
  136. package/dist/lib/execution-backends/types.js +5 -0
  137. package/dist/lib/execution-backends/types.js.map +1 -0
  138. package/dist/lib/failure-classifier.d.ts +11 -0
  139. package/dist/lib/failure-classifier.d.ts.map +1 -0
  140. package/dist/lib/failure-classifier.js +24 -0
  141. package/dist/lib/failure-classifier.js.map +1 -0
  142. package/dist/lib/file-cooldown.d.ts +9 -0
  143. package/dist/lib/file-cooldown.d.ts.map +1 -0
  144. package/dist/lib/file-cooldown.js +75 -0
  145. package/dist/lib/file-cooldown.js.map +1 -0
  146. package/dist/lib/formulas.d.ts +52 -0
  147. package/dist/lib/formulas.d.ts.map +1 -0
  148. package/dist/lib/formulas.js +123 -0
  149. package/dist/lib/formulas.js.map +1 -0
  150. package/dist/lib/git.d.ts +9 -0
  151. package/dist/lib/git.d.ts.map +1 -0
  152. package/dist/lib/git.js +60 -0
  153. package/dist/lib/git.js.map +1 -0
  154. package/dist/lib/goals.d.ts +59 -0
  155. package/dist/lib/goals.d.ts.map +1 -0
  156. package/dist/lib/goals.js +216 -0
  157. package/dist/lib/goals.js.map +1 -0
  158. package/dist/lib/guidelines.d.ts +32 -0
  159. package/dist/lib/guidelines.d.ts.map +1 -0
  160. package/dist/lib/guidelines.js +102 -0
  161. package/dist/lib/guidelines.js.map +1 -0
  162. package/dist/lib/learnings.d.ts +65 -0
  163. package/dist/lib/learnings.d.ts.map +1 -0
  164. package/dist/lib/learnings.js +193 -0
  165. package/dist/lib/learnings.js.map +1 -0
  166. package/dist/lib/logger.d.ts +17 -0
  167. package/dist/lib/logger.d.ts.map +1 -0
  168. package/dist/lib/logger.js +42 -0
  169. package/dist/lib/logger.js.map +1 -0
  170. package/dist/lib/meta-learnings.d.ts +27 -0
  171. package/dist/lib/meta-learnings.d.ts.map +1 -0
  172. package/dist/lib/meta-learnings.js +270 -0
  173. package/dist/lib/meta-learnings.js.map +1 -0
  174. package/dist/lib/metrics.d.ts +48 -0
  175. package/dist/lib/metrics.d.ts.map +1 -0
  176. package/dist/lib/metrics.js +107 -0
  177. package/dist/lib/metrics.js.map +1 -0
  178. package/dist/lib/openai-local-execution.d.ts +29 -0
  179. package/dist/lib/openai-local-execution.d.ts.map +1 -0
  180. package/dist/lib/openai-local-execution.js +282 -0
  181. package/dist/lib/openai-local-execution.js.map +1 -0
  182. package/dist/lib/project-metadata/csharp.d.ts +6 -0
  183. package/dist/lib/project-metadata/csharp.d.ts.map +1 -0
  184. package/dist/lib/project-metadata/csharp.js +19 -0
  185. package/dist/lib/project-metadata/csharp.js.map +1 -0
  186. package/dist/lib/project-metadata/elixir.d.ts +6 -0
  187. package/dist/lib/project-metadata/elixir.d.ts.map +1 -0
  188. package/dist/lib/project-metadata/elixir.js +23 -0
  189. package/dist/lib/project-metadata/elixir.js.map +1 -0
  190. package/dist/lib/project-metadata/go.d.ts +6 -0
  191. package/dist/lib/project-metadata/go.d.ts.map +1 -0
  192. package/dist/lib/project-metadata/go.js +30 -0
  193. package/dist/lib/project-metadata/go.js.map +1 -0
  194. package/dist/lib/project-metadata/index.d.ts +13 -0
  195. package/dist/lib/project-metadata/index.d.ts.map +1 -0
  196. package/dist/lib/project-metadata/index.js +111 -0
  197. package/dist/lib/project-metadata/index.js.map +1 -0
  198. package/dist/lib/project-metadata/java.d.ts +6 -0
  199. package/dist/lib/project-metadata/java.d.ts.map +1 -0
  200. package/dist/lib/project-metadata/java.js +37 -0
  201. package/dist/lib/project-metadata/java.js.map +1 -0
  202. package/dist/lib/project-metadata/node.d.ts +6 -0
  203. package/dist/lib/project-metadata/node.d.ts.map +1 -0
  204. package/dist/lib/project-metadata/node.js +135 -0
  205. package/dist/lib/project-metadata/node.js.map +1 -0
  206. package/dist/lib/project-metadata/php.d.ts +6 -0
  207. package/dist/lib/project-metadata/php.d.ts.map +1 -0
  208. package/dist/lib/project-metadata/php.js +29 -0
  209. package/dist/lib/project-metadata/php.js.map +1 -0
  210. package/dist/lib/project-metadata/python.d.ts +6 -0
  211. package/dist/lib/project-metadata/python.d.ts.map +1 -0
  212. package/dist/lib/project-metadata/python.js +79 -0
  213. package/dist/lib/project-metadata/python.js.map +1 -0
  214. package/dist/lib/project-metadata/ruby.d.ts +6 -0
  215. package/dist/lib/project-metadata/ruby.d.ts.map +1 -0
  216. package/dist/lib/project-metadata/ruby.js +38 -0
  217. package/dist/lib/project-metadata/ruby.js.map +1 -0
  218. package/dist/lib/project-metadata/rust.d.ts +6 -0
  219. package/dist/lib/project-metadata/rust.d.ts.map +1 -0
  220. package/dist/lib/project-metadata/rust.js +33 -0
  221. package/dist/lib/project-metadata/rust.js.map +1 -0
  222. package/dist/lib/project-metadata/swift.d.ts +6 -0
  223. package/dist/lib/project-metadata/swift.d.ts.map +1 -0
  224. package/dist/lib/project-metadata/swift.js +19 -0
  225. package/dist/lib/project-metadata/swift.js.map +1 -0
  226. package/dist/lib/project-metadata/types.d.ts +37 -0
  227. package/dist/lib/project-metadata/types.d.ts.map +1 -0
  228. package/dist/lib/project-metadata/types.js +5 -0
  229. package/dist/lib/project-metadata/types.js.map +1 -0
  230. package/dist/lib/proposal-review.d.ts +9 -0
  231. package/dist/lib/proposal-review.d.ts.map +1 -0
  232. package/dist/lib/proposal-review.js +9 -0
  233. package/dist/lib/proposal-review.js.map +1 -0
  234. package/dist/lib/providers/claude.d.ts +6 -0
  235. package/dist/lib/providers/claude.d.ts.map +1 -0
  236. package/dist/lib/providers/claude.js +21 -0
  237. package/dist/lib/providers/claude.js.map +1 -0
  238. package/dist/lib/providers/codex.d.ts +6 -0
  239. package/dist/lib/providers/codex.d.ts.map +1 -0
  240. package/dist/lib/providers/codex.js +26 -0
  241. package/dist/lib/providers/codex.js.map +1 -0
  242. package/dist/lib/providers/index.d.ts +22 -0
  243. package/dist/lib/providers/index.d.ts.map +1 -0
  244. package/dist/lib/providers/index.js +39 -0
  245. package/dist/lib/providers/index.js.map +1 -0
  246. package/dist/lib/providers/kimi.d.ts +6 -0
  247. package/dist/lib/providers/kimi.d.ts.map +1 -0
  248. package/dist/lib/providers/kimi.js +22 -0
  249. package/dist/lib/providers/kimi.js.map +1 -0
  250. package/dist/lib/providers/openai-local.d.ts +8 -0
  251. package/dist/lib/providers/openai-local.d.ts.map +1 -0
  252. package/dist/lib/providers/openai-local.js +30 -0
  253. package/dist/lib/providers/openai-local.js.map +1 -0
  254. package/dist/lib/providers/types.d.ts +37 -0
  255. package/dist/lib/providers/types.d.ts.map +1 -0
  256. package/dist/lib/providers/types.js +5 -0
  257. package/dist/lib/providers/types.js.map +1 -0
  258. package/dist/lib/qa-stats.d.ts +113 -0
  259. package/dist/lib/qa-stats.d.ts.map +1 -0
  260. package/dist/lib/qa-stats.js +311 -0
  261. package/dist/lib/qa-stats.js.map +1 -0
  262. package/dist/lib/retention.d.ts +125 -0
  263. package/dist/lib/retention.d.ts.map +1 -0
  264. package/dist/lib/retention.js +767 -0
  265. package/dist/lib/retention.js.map +1 -0
  266. package/dist/lib/run-history.d.ts +52 -0
  267. package/dist/lib/run-history.d.ts.map +1 -0
  268. package/dist/lib/run-history.js +116 -0
  269. package/dist/lib/run-history.js.map +1 -0
  270. package/dist/lib/run-state.d.ts +129 -0
  271. package/dist/lib/run-state.d.ts.map +1 -0
  272. package/dist/lib/run-state.js +312 -0
  273. package/dist/lib/run-state.js.map +1 -0
  274. package/dist/lib/scope.d.ts +8 -0
  275. package/dist/lib/scope.d.ts.map +1 -0
  276. package/dist/lib/scope.js +8 -0
  277. package/dist/lib/scope.js.map +1 -0
  278. package/dist/lib/scout-prompt-builder.d.ts +22 -0
  279. package/dist/lib/scout-prompt-builder.d.ts.map +1 -0
  280. package/dist/lib/scout-prompt-builder.js +97 -0
  281. package/dist/lib/scout-prompt-builder.js.map +1 -0
  282. package/dist/lib/sectors.d.ts +21 -0
  283. package/dist/lib/sectors.d.ts.map +1 -0
  284. package/dist/lib/sectors.js +96 -0
  285. package/dist/lib/sectors.js.map +1 -0
  286. package/dist/lib/selection.d.ts +35 -0
  287. package/dist/lib/selection.d.ts.map +1 -0
  288. package/dist/lib/selection.js +110 -0
  289. package/dist/lib/selection.js.map +1 -0
  290. package/dist/lib/session-report.d.ts +26 -0
  291. package/dist/lib/session-report.d.ts.map +1 -0
  292. package/dist/lib/session-report.js +143 -0
  293. package/dist/lib/session-report.js.map +1 -0
  294. package/dist/lib/solo-auto-between-cycles.d.ts +10 -0
  295. package/dist/lib/solo-auto-between-cycles.d.ts.map +1 -0
  296. package/dist/lib/solo-auto-between-cycles.js +577 -0
  297. package/dist/lib/solo-auto-between-cycles.js.map +1 -0
  298. package/dist/lib/solo-auto-execute.d.ts +22 -0
  299. package/dist/lib/solo-auto-execute.d.ts.map +1 -0
  300. package/dist/lib/solo-auto-execute.js +530 -0
  301. package/dist/lib/solo-auto-execute.js.map +1 -0
  302. package/dist/lib/solo-auto-filter.d.ts +14 -0
  303. package/dist/lib/solo-auto-filter.d.ts.map +1 -0
  304. package/dist/lib/solo-auto-filter.js +311 -0
  305. package/dist/lib/solo-auto-filter.js.map +1 -0
  306. package/dist/lib/solo-auto-finalize.d.ts +6 -0
  307. package/dist/lib/solo-auto-finalize.d.ts.map +1 -0
  308. package/dist/lib/solo-auto-finalize.js +242 -0
  309. package/dist/lib/solo-auto-finalize.js.map +1 -0
  310. package/dist/lib/solo-auto-init-qa.d.ts +23 -0
  311. package/dist/lib/solo-auto-init-qa.d.ts.map +1 -0
  312. package/dist/lib/solo-auto-init-qa.js +183 -0
  313. package/dist/lib/solo-auto-init-qa.js.map +1 -0
  314. package/dist/lib/solo-auto-planning.d.ts +40 -0
  315. package/dist/lib/solo-auto-planning.d.ts.map +1 -0
  316. package/dist/lib/solo-auto-planning.js +171 -0
  317. package/dist/lib/solo-auto-planning.js.map +1 -0
  318. package/dist/lib/solo-auto-scout.d.ts +18 -0
  319. package/dist/lib/solo-auto-scout.d.ts.map +1 -0
  320. package/dist/lib/solo-auto-scout.js +269 -0
  321. package/dist/lib/solo-auto-scout.js.map +1 -0
  322. package/dist/lib/solo-auto-state.d.ts +20 -0
  323. package/dist/lib/solo-auto-state.d.ts.map +1 -0
  324. package/dist/lib/solo-auto-state.js +859 -0
  325. package/dist/lib/solo-auto-state.js.map +1 -0
  326. package/dist/lib/solo-auto-types.d.ts +197 -0
  327. package/dist/lib/solo-auto-types.d.ts.map +1 -0
  328. package/dist/lib/solo-auto-types.js +11 -0
  329. package/dist/lib/solo-auto-types.js.map +1 -0
  330. package/dist/lib/solo-auto-utils.d.ts +23 -0
  331. package/dist/lib/solo-auto-utils.d.ts.map +1 -0
  332. package/dist/lib/solo-auto-utils.js +53 -0
  333. package/dist/lib/solo-auto-utils.js.map +1 -0
  334. package/dist/lib/solo-auto.d.ts +25 -0
  335. package/dist/lib/solo-auto.d.ts.map +1 -0
  336. package/dist/lib/solo-auto.js +345 -0
  337. package/dist/lib/solo-auto.js.map +1 -0
  338. package/dist/lib/solo-ci.d.ts +84 -0
  339. package/dist/lib/solo-ci.d.ts.map +1 -0
  340. package/dist/lib/solo-ci.js +306 -0
  341. package/dist/lib/solo-ci.js.map +1 -0
  342. package/dist/lib/solo-config.d.ts +242 -0
  343. package/dist/lib/solo-config.d.ts.map +1 -0
  344. package/dist/lib/solo-config.js +354 -0
  345. package/dist/lib/solo-config.js.map +1 -0
  346. package/dist/lib/solo-cycle-formula.d.ts +36 -0
  347. package/dist/lib/solo-cycle-formula.d.ts.map +1 -0
  348. package/dist/lib/solo-cycle-formula.js +90 -0
  349. package/dist/lib/solo-cycle-formula.js.map +1 -0
  350. package/dist/lib/solo-git.d.ts +87 -0
  351. package/dist/lib/solo-git.d.ts.map +1 -0
  352. package/dist/lib/solo-git.js +365 -0
  353. package/dist/lib/solo-git.js.map +1 -0
  354. package/dist/lib/solo-hints.d.ts +32 -0
  355. package/dist/lib/solo-hints.d.ts.map +1 -0
  356. package/dist/lib/solo-hints.js +98 -0
  357. package/dist/lib/solo-hints.js.map +1 -0
  358. package/dist/lib/solo-prompt-builder.d.ts +12 -0
  359. package/dist/lib/solo-prompt-builder.d.ts.map +1 -0
  360. package/dist/lib/solo-prompt-builder.js +53 -0
  361. package/dist/lib/solo-prompt-builder.js.map +1 -0
  362. package/dist/lib/solo-qa-retry.d.ts +43 -0
  363. package/dist/lib/solo-qa-retry.d.ts.map +1 -0
  364. package/dist/lib/solo-qa-retry.js +125 -0
  365. package/dist/lib/solo-qa-retry.js.map +1 -0
  366. package/dist/lib/solo-remote.d.ts +14 -0
  367. package/dist/lib/solo-remote.d.ts.map +1 -0
  368. package/dist/lib/solo-remote.js +48 -0
  369. package/dist/lib/solo-remote.js.map +1 -0
  370. package/dist/lib/solo-session-summary.d.ts +52 -0
  371. package/dist/lib/solo-session-summary.d.ts.map +1 -0
  372. package/dist/lib/solo-session-summary.js +188 -0
  373. package/dist/lib/solo-session-summary.js.map +1 -0
  374. package/dist/lib/solo-stdin.d.ts +33 -0
  375. package/dist/lib/solo-stdin.d.ts.map +1 -0
  376. package/dist/lib/solo-stdin.js +299 -0
  377. package/dist/lib/solo-stdin.js.map +1 -0
  378. package/dist/lib/solo-ticket-qa.d.ts +19 -0
  379. package/dist/lib/solo-ticket-qa.d.ts.map +1 -0
  380. package/dist/lib/solo-ticket-qa.js +68 -0
  381. package/dist/lib/solo-ticket-qa.js.map +1 -0
  382. package/dist/lib/solo-ticket-types.d.ts +146 -0
  383. package/dist/lib/solo-ticket-types.d.ts.map +1 -0
  384. package/dist/lib/solo-ticket-types.js +26 -0
  385. package/dist/lib/solo-ticket-types.js.map +1 -0
  386. package/dist/lib/solo-ticket.d.ts +12 -0
  387. package/dist/lib/solo-ticket.d.ts.map +1 -0
  388. package/dist/lib/solo-ticket.js +192 -0
  389. package/dist/lib/solo-ticket.js.map +1 -0
  390. package/dist/lib/solo-utils.d.ts +130 -0
  391. package/dist/lib/solo-utils.d.ts.map +1 -0
  392. package/dist/lib/solo-utils.js +277 -0
  393. package/dist/lib/solo-utils.js.map +1 -0
  394. package/dist/lib/spindle/failure-patterns.d.ts +15 -0
  395. package/dist/lib/spindle/failure-patterns.d.ts.map +1 -0
  396. package/dist/lib/spindle/failure-patterns.js +22 -0
  397. package/dist/lib/spindle/failure-patterns.js.map +1 -0
  398. package/dist/lib/spindle/format.d.ts +9 -0
  399. package/dist/lib/spindle/format.d.ts.map +1 -0
  400. package/dist/lib/spindle/format.js +37 -0
  401. package/dist/lib/spindle/format.js.map +1 -0
  402. package/dist/lib/spindle/index.d.ts +33 -0
  403. package/dist/lib/spindle/index.d.ts.map +1 -0
  404. package/dist/lib/spindle/index.js +231 -0
  405. package/dist/lib/spindle/index.js.map +1 -0
  406. package/dist/lib/spindle/oscillation.d.ts +17 -0
  407. package/dist/lib/spindle/oscillation.d.ts.map +1 -0
  408. package/dist/lib/spindle/oscillation.js +96 -0
  409. package/dist/lib/spindle/oscillation.js.map +1 -0
  410. package/dist/lib/spindle/repetition.d.ts +16 -0
  411. package/dist/lib/spindle/repetition.d.ts.map +1 -0
  412. package/dist/lib/spindle/repetition.js +52 -0
  413. package/dist/lib/spindle/repetition.js.map +1 -0
  414. package/dist/lib/spindle/similarity.d.ts +14 -0
  415. package/dist/lib/spindle/similarity.d.ts.map +1 -0
  416. package/dist/lib/spindle/similarity.js +58 -0
  417. package/dist/lib/spindle/similarity.js.map +1 -0
  418. package/dist/lib/spindle/types.d.ts +97 -0
  419. package/dist/lib/spindle/types.d.ts.map +1 -0
  420. package/dist/lib/spindle/types.js +46 -0
  421. package/dist/lib/spindle/types.js.map +1 -0
  422. package/dist/lib/spinner.d.ts +41 -0
  423. package/dist/lib/spinner.d.ts.map +1 -0
  424. package/dist/lib/spinner.js +186 -0
  425. package/dist/lib/spinner.js.map +1 -0
  426. package/dist/lib/taste-profile.d.ts +26 -0
  427. package/dist/lib/taste-profile.d.ts.map +1 -0
  428. package/dist/lib/taste-profile.js +121 -0
  429. package/dist/lib/taste-profile.js.map +1 -0
  430. package/dist/lib/ticket-steps/index.d.ts +14 -0
  431. package/dist/lib/ticket-steps/index.d.ts.map +1 -0
  432. package/dist/lib/ticket-steps/index.js +13 -0
  433. package/dist/lib/ticket-steps/index.js.map +1 -0
  434. package/dist/lib/ticket-steps/step-agent.d.ts +6 -0
  435. package/dist/lib/ticket-steps/step-agent.d.ts.map +1 -0
  436. package/dist/lib/ticket-steps/step-agent.js +122 -0
  437. package/dist/lib/ticket-steps/step-agent.js.map +1 -0
  438. package/dist/lib/ticket-steps/step-cleanup.d.ts +6 -0
  439. package/dist/lib/ticket-steps/step-cleanup.d.ts.map +1 -0
  440. package/dist/lib/ticket-steps/step-cleanup.js +11 -0
  441. package/dist/lib/ticket-steps/step-cleanup.js.map +1 -0
  442. package/dist/lib/ticket-steps/step-commit.d.ts +6 -0
  443. package/dist/lib/ticket-steps/step-commit.d.ts.map +1 -0
  444. package/dist/lib/ticket-steps/step-commit.js +31 -0
  445. package/dist/lib/ticket-steps/step-commit.js.map +1 -0
  446. package/dist/lib/ticket-steps/step-pr.d.ts +6 -0
  447. package/dist/lib/ticket-steps/step-pr.d.ts.map +1 -0
  448. package/dist/lib/ticket-steps/step-pr.js +38 -0
  449. package/dist/lib/ticket-steps/step-pr.js.map +1 -0
  450. package/dist/lib/ticket-steps/step-push.d.ts +6 -0
  451. package/dist/lib/ticket-steps/step-push.d.ts.map +1 -0
  452. package/dist/lib/ticket-steps/step-push.js +35 -0
  453. package/dist/lib/ticket-steps/step-push.js.map +1 -0
  454. package/dist/lib/ticket-steps/step-qa.d.ts +6 -0
  455. package/dist/lib/ticket-steps/step-qa.d.ts.map +1 -0
  456. package/dist/lib/ticket-steps/step-qa.js +300 -0
  457. package/dist/lib/ticket-steps/step-qa.js.map +1 -0
  458. package/dist/lib/ticket-steps/step-scope.d.ts +6 -0
  459. package/dist/lib/ticket-steps/step-scope.d.ts.map +1 -0
  460. package/dist/lib/ticket-steps/step-scope.js +121 -0
  461. package/dist/lib/ticket-steps/step-scope.js.map +1 -0
  462. package/dist/lib/ticket-steps/step-spindle.d.ts +9 -0
  463. package/dist/lib/ticket-steps/step-spindle.d.ts.map +1 -0
  464. package/dist/lib/ticket-steps/step-spindle.js +160 -0
  465. package/dist/lib/ticket-steps/step-spindle.js.map +1 -0
  466. package/dist/lib/ticket-steps/step-worktree.d.ts +6 -0
  467. package/dist/lib/ticket-steps/step-worktree.d.ts.map +1 -0
  468. package/dist/lib/ticket-steps/step-worktree.js +157 -0
  469. package/dist/lib/ticket-steps/step-worktree.js.map +1 -0
  470. package/dist/lib/ticket-steps/types.d.ts +70 -0
  471. package/dist/lib/ticket-steps/types.d.ts.map +1 -0
  472. package/dist/lib/ticket-steps/types.js +8 -0
  473. package/dist/lib/ticket-steps/types.js.map +1 -0
  474. package/dist/lib/tool-command-map.d.ts +11 -0
  475. package/dist/lib/tool-command-map.d.ts.map +1 -0
  476. package/dist/lib/tool-command-map.js +24 -0
  477. package/dist/lib/tool-command-map.js.map +1 -0
  478. package/dist/lib/trajectory-generate.d.ts +24 -0
  479. package/dist/lib/trajectory-generate.d.ts.map +1 -0
  480. package/dist/lib/trajectory-generate.js +163 -0
  481. package/dist/lib/trajectory-generate.js.map +1 -0
  482. package/dist/lib/trajectory.d.ts +20 -0
  483. package/dist/lib/trajectory.d.ts.map +1 -0
  484. package/dist/lib/trajectory.js +104 -0
  485. package/dist/lib/trajectory.js.map +1 -0
  486. package/dist/lib/trigger-config.d.ts +12 -0
  487. package/dist/lib/trigger-config.d.ts.map +1 -0
  488. package/dist/lib/trigger-config.js +37 -0
  489. package/dist/lib/trigger-config.js.map +1 -0
  490. package/dist/lib/update-check.d.ts +28 -0
  491. package/dist/lib/update-check.d.ts.map +1 -0
  492. package/dist/lib/update-check.js +178 -0
  493. package/dist/lib/update-check.js.map +1 -0
  494. package/dist/lib/wave-scheduling.d.ts +18 -0
  495. package/dist/lib/wave-scheduling.d.ts.map +1 -0
  496. package/dist/lib/wave-scheduling.js +29 -0
  497. package/dist/lib/wave-scheduling.js.map +1 -0
  498. package/dist/tui/app.d.ts +17 -0
  499. package/dist/tui/app.d.ts.map +1 -0
  500. package/dist/tui/app.js +139 -0
  501. package/dist/tui/app.js.map +1 -0
  502. package/dist/tui/index.d.ts +10 -0
  503. package/dist/tui/index.d.ts.map +1 -0
  504. package/dist/tui/index.js +9 -0
  505. package/dist/tui/index.js.map +1 -0
  506. package/dist/tui/poller.d.ts +42 -0
  507. package/dist/tui/poller.d.ts.map +1 -0
  508. package/dist/tui/poller.js +62 -0
  509. package/dist/tui/poller.js.map +1 -0
  510. package/dist/tui/screens/auto.d.ts +85 -0
  511. package/dist/tui/screens/auto.d.ts.map +1 -0
  512. package/dist/tui/screens/auto.js +440 -0
  513. package/dist/tui/screens/auto.js.map +1 -0
  514. package/dist/tui/screens/overview.d.ts +9 -0
  515. package/dist/tui/screens/overview.d.ts.map +1 -0
  516. package/dist/tui/screens/overview.js +189 -0
  517. package/dist/tui/screens/overview.js.map +1 -0
  518. package/dist/tui/state.d.ts +93 -0
  519. package/dist/tui/state.d.ts.map +1 -0
  520. package/dist/tui/state.js +169 -0
  521. package/dist/tui/state.js.map +1 -0
  522. package/dist/tui/ticket-output-buffer.d.ts +23 -0
  523. package/dist/tui/ticket-output-buffer.d.ts.map +1 -0
  524. package/dist/tui/ticket-output-buffer.js +60 -0
  525. package/dist/tui/ticket-output-buffer.js.map +1 -0
  526. package/dist/tui/types.d.ts +18 -0
  527. package/dist/tui/types.d.ts.map +1 -0
  528. package/dist/tui/types.js +5 -0
  529. package/dist/tui/types.js.map +1 -0
  530. package/package.json +70 -0
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Generic provider registry for CLI backends (Claude, Codex, Kimi, OpenAI-Local, etc.)
3
+ *
4
+ * Each provider defines metadata, auth requirements, and factory methods
5
+ * for creating scout and execution backends.
6
+ */
7
+ import { claude } from './claude.js';
8
+ import { codex } from './codex.js';
9
+ import { kimi } from './kimi.js';
10
+ import { openaiLocal } from './openai-local.js';
11
+ const providers = new Map();
12
+ providers.set('claude', claude);
13
+ providers.set('codex', codex);
14
+ providers.set('kimi', kimi);
15
+ providers.set('openai-local', openaiLocal);
16
+ /**
17
+ * Get a provider config by name.
18
+ * Throws if the provider is not registered.
19
+ */
20
+ export function getProvider(name) {
21
+ const provider = providers.get(name);
22
+ if (!provider) {
23
+ throw new Error(`Unknown provider: ${name}. Valid providers: ${getProviderNames().join(', ')}`);
24
+ }
25
+ return provider;
26
+ }
27
+ /**
28
+ * Check if a provider name is registered.
29
+ */
30
+ export function isValidProvider(name) {
31
+ return providers.has(name);
32
+ }
33
+ /**
34
+ * Get all registered provider names.
35
+ */
36
+ export function getProviderNames() {
37
+ return Array.from(providers.keys());
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;AAEpD,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChC,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AAC9B,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5B,SAAS,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAE3C;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,sBAAsB,gBAAgB,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Kimi provider config
3
+ */
4
+ import type { ProviderConfig } from './types.js';
5
+ export declare const kimi: ProviderConfig;
6
+ //# sourceMappingURL=kimi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/kimi.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,IAAI,EAAE,cAiBlB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Kimi provider config
3
+ */
4
+ export const kimi = {
5
+ displayName: 'Kimi',
6
+ defaultModel: 'kimi-k2.5',
7
+ apiKeyEnvVar: 'MOONSHOT_API_KEY',
8
+ altAuth: 'kimi /login',
9
+ guidelinesFile: 'KIMI.md',
10
+ defaultScoutTimeoutMs: 0,
11
+ defaultScoutConcurrency: 3,
12
+ defaultBatchTokenBudget: 40_000,
13
+ async createScoutBackend(opts) {
14
+ const { KimiScoutBackend } = await import('@promptwheel/core/scout');
15
+ return new KimiScoutBackend({ apiKey: opts.apiKey, model: opts.model });
16
+ },
17
+ async createExecutionBackend(opts) {
18
+ const { KimiExecutionBackend } = await import('../execution-backends/index.js');
19
+ return new KimiExecutionBackend({ apiKey: opts.apiKey, model: opts.model });
20
+ },
21
+ };
22
+ //# sourceMappingURL=kimi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kimi.js","sourceRoot":"","sources":["../../../src/lib/providers/kimi.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,IAAI,GAAmB;IAClC,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,WAAW;IACzB,YAAY,EAAE,kBAAkB;IAChC,OAAO,EAAE,aAAa;IACtB,cAAc,EAAE,SAAS;IACzB,qBAAqB,EAAE,CAAC;IACxB,uBAAuB,EAAE,CAAC;IAC1B,uBAAuB,EAAE,MAAM;IAC/B,KAAK,CAAC,kBAAkB,CAAC,IAAI;QAC3B,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACrE,OAAO,IAAI,gBAAgB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,IAAI;QAC/B,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAC;QAChF,OAAO,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC9E,CAAC;CACF,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * OpenAI-compatible local provider (Ollama, vLLM, SGLang, LM Studio)
3
+ *
4
+ * Uses raw fetch — zero new dependencies.
5
+ */
6
+ import type { ProviderConfig } from './types.js';
7
+ export declare const openaiLocal: ProviderConfig;
8
+ //# sourceMappingURL=openai-local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-local.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/openai-local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,eAAO,MAAM,WAAW,EAAE,cAsBzB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * OpenAI-compatible local provider (Ollama, vLLM, SGLang, LM Studio)
3
+ *
4
+ * Uses raw fetch — zero new dependencies.
5
+ */
6
+ const DEFAULT_BASE_URL = 'http://localhost:11434/v1';
7
+ export const openaiLocal = {
8
+ displayName: 'OpenAI-Compatible Local',
9
+ defaultModel: '', // Must be specified via --local-model
10
+ apiKeyEnvVar: null,
11
+ guidelinesFile: 'CLAUDE.md',
12
+ defaultScoutTimeoutMs: 0,
13
+ defaultScoutConcurrency: 2,
14
+ defaultBatchTokenBudget: 40_000,
15
+ async createScoutBackend(opts) {
16
+ const { OpenAILocalScoutBackend } = await import('@promptwheel/core/scout');
17
+ const baseUrl = opts.baseUrl || DEFAULT_BASE_URL;
18
+ const model = opts.model || 'llama3';
19
+ const apiKey = process.env.LOCAL_API_KEY || process.env.OPENAI_API_KEY;
20
+ return new OpenAILocalScoutBackend({ baseUrl, model, apiKey });
21
+ },
22
+ async createExecutionBackend(opts) {
23
+ const { OpenAILocalExecutionBackend } = await import('../openai-local-execution.js');
24
+ const baseUrl = opts.baseUrl || DEFAULT_BASE_URL;
25
+ const model = opts.model || 'llama3';
26
+ const apiKey = process.env.LOCAL_API_KEY || process.env.OPENAI_API_KEY;
27
+ return new OpenAILocalExecutionBackend({ baseUrl, model, apiKey, maxIterations: opts.maxIterations });
28
+ },
29
+ };
30
+ //# sourceMappingURL=openai-local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-local.js","sourceRoot":"","sources":["../../../src/lib/providers/openai-local.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,gBAAgB,GAAG,2BAA2B,CAAC;AAErD,MAAM,CAAC,MAAM,WAAW,GAAmB;IACzC,WAAW,EAAE,yBAAyB;IACtC,YAAY,EAAE,EAAE,EAAG,sCAAsC;IACzD,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,WAAW;IAC3B,qBAAqB,EAAE,CAAC;IACxB,uBAAuB,EAAE,CAAC;IAC1B,uBAAuB,EAAE,MAAM;IAC/B,KAAK,CAAC,kBAAkB,CAAC,IAAI;QAC3B,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACvE,OAAO,IAAI,uBAAuB,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IACD,KAAK,CAAC,sBAAsB,CAAC,IAAI;QAC/B,MAAM,EAAE,2BAA2B,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;QACrF,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,gBAAgB,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACvE,OAAO,IAAI,2BAA2B,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;IACxG,CAAC;CACF,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Provider configuration types
3
+ */
4
+ import type { ScoutBackend } from '@promptwheel/core/scout';
5
+ import type { ExecutionBackend } from '../execution-backends/index.js';
6
+ export interface ProviderFactoryOpts {
7
+ apiKey?: string;
8
+ model?: string;
9
+ baseUrl?: string;
10
+ }
11
+ export interface ExecutionFactoryOpts extends ProviderFactoryOpts {
12
+ unsafeBypassSandbox?: boolean;
13
+ maxIterations?: number;
14
+ }
15
+ export interface ProviderConfig {
16
+ /** Human-readable name */
17
+ displayName: string;
18
+ /** Default model for this provider */
19
+ defaultModel: string;
20
+ /** Env var for API key authentication, or null if auth is handled differently */
21
+ apiKeyEnvVar: string | null;
22
+ /** Alternative auth description (e.g., "codex login") */
23
+ altAuth?: string;
24
+ /** Primary guidelines filename (CLAUDE.md, AGENTS.md, KIMI.md, etc.) */
25
+ guidelinesFile: string;
26
+ /** Default scout timeout in ms */
27
+ defaultScoutTimeoutMs: number;
28
+ /** Default scout concurrency */
29
+ defaultScoutConcurrency: number;
30
+ /** Default batch token budget */
31
+ defaultBatchTokenBudget: number;
32
+ /** Create a scout backend instance */
33
+ createScoutBackend(opts: ProviderFactoryOpts): Promise<ScoutBackend>;
34
+ /** Create an execution backend instance */
35
+ createExecutionBackend(opts: ExecutionFactoryOpts): Promise<ExecutionBackend>;
36
+ }
37
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,cAAc,EAAE,MAAM,CAAC;IACvB,kCAAkC;IAClC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gCAAgC;IAChC,uBAAuB,EAAE,MAAM,CAAC;IAChC,iCAAiC;IACjC,uBAAuB,EAAE,MAAM,CAAC;IAChC,sCAAsC;IACtC,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACrE,2CAA2C;IAC3C,sBAAsB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC/E"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Provider configuration types
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Per-command QA statistics tracking.
3
+ *
4
+ * Persists to `.promptwheel/qa-stats.json` and provides:
5
+ * - Per-command success/failure/timeout tracking
6
+ * - Baseline result ring buffer for health monitoring
7
+ * - Auto-tuning of QA config (timeout adjustment)
8
+ * - Confidence calibration from quality signals
9
+ *
10
+ * Philosophy: failing baseline commands are never disabled — they're
11
+ * skipped during QA verification (via the pass/fail map) and surfaced
12
+ * to the scout as high-priority healing targets. Only timeout-related
13
+ * config issues cause command demotion.
14
+ */
15
+ export interface QaCommandStats {
16
+ name: string;
17
+ totalRuns: number;
18
+ successes: number;
19
+ failures: number;
20
+ timeouts: number;
21
+ preExistingSkips: number;
22
+ totalDurationMs: number;
23
+ avgDurationMs: number;
24
+ lastRunAt: number;
25
+ consecutiveFailures: number;
26
+ consecutiveTimeouts: number;
27
+ /** Ring buffer of recent baseline results (max 10) */
28
+ recentBaselineResults: boolean[];
29
+ }
30
+ export interface QaStatsStore {
31
+ commands: Record<string, QaCommandStats>;
32
+ lastUpdated: number;
33
+ /** @deprecated — no longer used. Baseline-failing commands are skipped, not disabled. */
34
+ disabledCommands: Array<{
35
+ name: string;
36
+ reason: string;
37
+ disabledAt: number;
38
+ }>;
39
+ /** Quality rate when calibrateConfidence last adjusted (hysteresis) */
40
+ lastCalibratedQualityRate: number | null;
41
+ }
42
+ /** Normalized QA config shape (matches normalizeQaConfig output) */
43
+ interface QaConfig {
44
+ commands: Array<{
45
+ name: string;
46
+ cmd: string;
47
+ cwd?: string;
48
+ timeoutMs?: number;
49
+ }>;
50
+ artifacts: {
51
+ dir: string;
52
+ maxLogBytes: number;
53
+ tailBytes: number;
54
+ };
55
+ retry: {
56
+ enabled: boolean;
57
+ maxAttempts: number;
58
+ };
59
+ }
60
+ export declare function loadQaStats(projectRoot: string): QaStatsStore;
61
+ /**
62
+ * Reset QA execution streaks for a fresh session start.
63
+ * Preserves the baseline ring buffer for health monitoring.
64
+ */
65
+ export declare function resetQaStatsForSession(projectRoot: string): void;
66
+ export declare function saveQaStats(projectRoot: string, store: QaStatsStore): void;
67
+ /**
68
+ * Record the result of a QA command execution.
69
+ */
70
+ export declare function recordQaCommandResult(projectRoot: string, name: string, result: {
71
+ passed: boolean;
72
+ durationMs: number;
73
+ timedOut: boolean;
74
+ skippedPreExisting: boolean;
75
+ }): Promise<void>;
76
+ /**
77
+ * Record a baseline check result (push to ring buffer).
78
+ */
79
+ export declare function recordBaselineResult(projectRoot: string, name: string, passed: boolean): Promise<void>;
80
+ /**
81
+ * Get the success rate for a command (0-1).
82
+ */
83
+ export declare function getCommandSuccessRate(stats: QaCommandStats): number;
84
+ /**
85
+ * Auto-tune QA config based on accumulated per-command stats.
86
+ *
87
+ * Only adjusts timeouts for slow commands and demotes commands that
88
+ * consistently time out (config issue, not healable by code changes).
89
+ *
90
+ * Baseline-failing commands are NEVER disabled — they're skipped during
91
+ * QA verification via the pass/fail map and surfaced to the scout as
92
+ * high-priority healing targets through the baseline health block.
93
+ */
94
+ export declare function autoTuneQaConfig(projectRoot: string, qaConfig: QaConfig): {
95
+ config: QaConfig;
96
+ disabled: Array<{
97
+ name: string;
98
+ reason: string;
99
+ }>;
100
+ };
101
+ /**
102
+ * Calibrate the minimum confidence threshold based on ticket-level quality
103
+ * signals from run-state (not QA command stats).
104
+ *
105
+ * Uses hysteresis to prevent oscillation: only adjusts if the quality rate
106
+ * has moved more than 15% from the rate at last calibration.
107
+ *
108
+ * Returns a delta to apply (positive = raise threshold, negative = lower).
109
+ */
110
+ export declare function calibrateConfidence(projectRoot: string, currentMin: number, originalMin: number): number;
111
+ export declare function buildBaselineHealthBlock(projectRoot: string, currentScope?: string): string;
112
+ export {};
113
+ //# sourceMappingURL=qa-stats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qa-stats.d.ts","sourceRoot":"","sources":["../../src/lib/qa-stats.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,311 @@
1
+ /**
2
+ * Per-command QA statistics tracking.
3
+ *
4
+ * Persists to `.promptwheel/qa-stats.json` and provides:
5
+ * - Per-command success/failure/timeout tracking
6
+ * - Baseline result ring buffer for health monitoring
7
+ * - Auto-tuning of QA config (timeout adjustment)
8
+ * - Confidence calibration from quality signals
9
+ *
10
+ * Philosophy: failing baseline commands are never disabled — they're
11
+ * skipped during QA verification (via the pass/fail map) and surfaced
12
+ * to the scout as high-priority healing targets. Only timeout-related
13
+ * config issues cause command demotion.
14
+ */
15
+ import * as fs from 'node:fs';
16
+ import * as path from 'node:path';
17
+ import { readRunState } from './run-state.js';
18
+ // ---------------------------------------------------------------------------
19
+ // Constants
20
+ // ---------------------------------------------------------------------------
21
+ const QA_STATS_FILE = 'qa-stats.json';
22
+ const MAX_BASELINE_RING = 10;
23
+ // ---------------------------------------------------------------------------
24
+ // Async mutex (same pattern as run-state.ts)
25
+ // ---------------------------------------------------------------------------
26
+ let _writeLock = Promise.resolve();
27
+ function withWriteLock(fn) {
28
+ const prev = _writeLock;
29
+ let release;
30
+ _writeLock = new Promise((r) => { release = r; });
31
+ return prev.then(fn).finally(() => release());
32
+ }
33
+ // ---------------------------------------------------------------------------
34
+ // File I/O
35
+ // ---------------------------------------------------------------------------
36
+ function statsPath(projectRoot) {
37
+ return path.join(projectRoot, '.promptwheel', QA_STATS_FILE);
38
+ }
39
+ export function loadQaStats(projectRoot) {
40
+ const fp = statsPath(projectRoot);
41
+ if (!fs.existsSync(fp)) {
42
+ return { commands: {}, lastUpdated: 0, disabledCommands: [], lastCalibratedQualityRate: null };
43
+ }
44
+ try {
45
+ const raw = fs.readFileSync(fp, 'utf8');
46
+ const parsed = JSON.parse(raw);
47
+ return {
48
+ commands: parsed.commands ?? {},
49
+ lastUpdated: parsed.lastUpdated ?? 0,
50
+ disabledCommands: Array.isArray(parsed.disabledCommands) ? parsed.disabledCommands : [],
51
+ lastCalibratedQualityRate: parsed.lastCalibratedQualityRate ?? null,
52
+ };
53
+ }
54
+ catch {
55
+ return { commands: {}, lastUpdated: 0, disabledCommands: [], lastCalibratedQualityRate: null };
56
+ }
57
+ }
58
+ /**
59
+ * Reset QA execution streaks for a fresh session start.
60
+ * Preserves the baseline ring buffer for health monitoring.
61
+ */
62
+ export function resetQaStatsForSession(projectRoot) {
63
+ const fp = statsPath(projectRoot);
64
+ if (!fs.existsSync(fp))
65
+ return;
66
+ const store = loadQaStats(projectRoot);
67
+ if (Object.keys(store.commands).length === 0)
68
+ return;
69
+ for (const name of Object.keys(store.commands)) {
70
+ store.commands[name].consecutiveFailures = 0;
71
+ store.commands[name].consecutiveTimeouts = 0;
72
+ }
73
+ // Clear stale disabledCommands — organic healing never disables
74
+ store.disabledCommands = [];
75
+ saveQaStats(projectRoot, store);
76
+ }
77
+ export function saveQaStats(projectRoot, store) {
78
+ const fp = statsPath(projectRoot);
79
+ const dir = path.dirname(fp);
80
+ if (!fs.existsSync(dir)) {
81
+ fs.mkdirSync(dir, { recursive: true });
82
+ }
83
+ store.lastUpdated = Date.now();
84
+ const tmp = fp + '.tmp';
85
+ fs.writeFileSync(tmp, JSON.stringify(store, null, 2) + '\n', 'utf8');
86
+ fs.renameSync(tmp, fp);
87
+ }
88
+ // ---------------------------------------------------------------------------
89
+ // Helpers
90
+ // ---------------------------------------------------------------------------
91
+ function ensureCommand(store, name) {
92
+ if (!store.commands[name]) {
93
+ store.commands[name] = {
94
+ name,
95
+ totalRuns: 0,
96
+ successes: 0,
97
+ failures: 0,
98
+ timeouts: 0,
99
+ preExistingSkips: 0,
100
+ totalDurationMs: 0,
101
+ avgDurationMs: 0,
102
+ lastRunAt: 0,
103
+ consecutiveFailures: 0,
104
+ consecutiveTimeouts: 0,
105
+ recentBaselineResults: [],
106
+ };
107
+ }
108
+ return store.commands[name];
109
+ }
110
+ // ---------------------------------------------------------------------------
111
+ // Core API
112
+ // ---------------------------------------------------------------------------
113
+ /**
114
+ * Record the result of a QA command execution.
115
+ */
116
+ export function recordQaCommandResult(projectRoot, name, result) {
117
+ return withWriteLock(() => {
118
+ const store = loadQaStats(projectRoot);
119
+ const stats = ensureCommand(store, name);
120
+ stats.totalRuns++;
121
+ stats.lastRunAt = Date.now();
122
+ if (result.skippedPreExisting) {
123
+ stats.preExistingSkips++;
124
+ // Don't count skips toward pass/fail streaks
125
+ }
126
+ else if (result.timedOut) {
127
+ stats.timeouts++;
128
+ stats.consecutiveTimeouts++;
129
+ stats.consecutiveFailures++;
130
+ }
131
+ else if (result.passed) {
132
+ stats.successes++;
133
+ stats.consecutiveFailures = 0;
134
+ stats.consecutiveTimeouts = 0;
135
+ }
136
+ else {
137
+ stats.failures++;
138
+ stats.consecutiveFailures++;
139
+ stats.consecutiveTimeouts = 0;
140
+ }
141
+ stats.totalDurationMs += result.durationMs;
142
+ stats.avgDurationMs = stats.totalRuns > 0
143
+ ? Math.round(stats.totalDurationMs / stats.totalRuns)
144
+ : 0;
145
+ saveQaStats(projectRoot, store);
146
+ });
147
+ }
148
+ /**
149
+ * Record a baseline check result (push to ring buffer).
150
+ */
151
+ export function recordBaselineResult(projectRoot, name, passed) {
152
+ return withWriteLock(() => {
153
+ const store = loadQaStats(projectRoot);
154
+ const stats = ensureCommand(store, name);
155
+ stats.recentBaselineResults.push(passed);
156
+ if (stats.recentBaselineResults.length > MAX_BASELINE_RING) {
157
+ stats.recentBaselineResults.shift();
158
+ }
159
+ saveQaStats(projectRoot, store);
160
+ });
161
+ }
162
+ /**
163
+ * Get the success rate for a command (0-1).
164
+ */
165
+ export function getCommandSuccessRate(stats) {
166
+ if (stats.totalRuns === 0)
167
+ return -1;
168
+ return stats.successes / stats.totalRuns;
169
+ }
170
+ // ---------------------------------------------------------------------------
171
+ // Auto-Tune from Stats (timeout adjustment only)
172
+ // ---------------------------------------------------------------------------
173
+ /**
174
+ * Auto-tune QA config based on accumulated per-command stats.
175
+ *
176
+ * Only adjusts timeouts for slow commands and demotes commands that
177
+ * consistently time out (config issue, not healable by code changes).
178
+ *
179
+ * Baseline-failing commands are NEVER disabled — they're skipped during
180
+ * QA verification via the pass/fail map and surfaced to the scout as
181
+ * high-priority healing targets through the baseline health block.
182
+ */
183
+ export function autoTuneQaConfig(projectRoot, qaConfig) {
184
+ const store = loadQaStats(projectRoot);
185
+ const disabled = [];
186
+ const keptCommands = [];
187
+ for (const cmd of qaConfig.commands) {
188
+ const stats = store.commands[cmd.name];
189
+ if (!stats) {
190
+ keptCommands.push(cmd);
191
+ continue;
192
+ }
193
+ // Consecutive timeout demotion (config issue — wrong command, missing deps)
194
+ if (stats.consecutiveTimeouts >= 3 && stats.totalRuns >= 5) {
195
+ const reason = `${stats.consecutiveTimeouts} consecutive timeouts (${stats.totalRuns} total runs)`;
196
+ disabled.push({ name: cmd.name, reason });
197
+ continue;
198
+ }
199
+ // Timeout adjustment for slow commands
200
+ const currentTimeout = cmd.timeoutMs ?? 120_000;
201
+ if (stats.avgDurationMs > currentTimeout * 0.8 && stats.totalRuns >= 5) {
202
+ const newTimeout = Math.round(currentTimeout * 1.5);
203
+ keptCommands.push({ ...cmd, timeoutMs: newTimeout });
204
+ }
205
+ else {
206
+ keptCommands.push(cmd);
207
+ }
208
+ }
209
+ saveQaStats(projectRoot, store);
210
+ return {
211
+ config: { ...qaConfig, commands: keptCommands },
212
+ disabled,
213
+ };
214
+ }
215
+ /** Hysteresis band: only adjust if quality rate moved >15% from last calibration */
216
+ const HYSTERESIS_BAND = 0.15;
217
+ /**
218
+ * Calibrate the minimum confidence threshold based on ticket-level quality
219
+ * signals from run-state (not QA command stats).
220
+ *
221
+ * Uses hysteresis to prevent oscillation: only adjusts if the quality rate
222
+ * has moved more than 15% from the rate at last calibration.
223
+ *
224
+ * Returns a delta to apply (positive = raise threshold, negative = lower).
225
+ */
226
+ export function calibrateConfidence(projectRoot, currentMin, originalMin) {
227
+ // Read ticket-level quality signals (scout accuracy), not QA command stats
228
+ const runState = readRunState(projectRoot);
229
+ const qs = runState.qualitySignals;
230
+ if (!qs || qs.totalTickets < 5)
231
+ return 0;
232
+ const qualityRate = qs.firstPassSuccess / qs.totalTickets;
233
+ // Hysteresis: check if rate moved enough from last calibration point
234
+ const store = loadQaStats(projectRoot);
235
+ if (store.lastCalibratedQualityRate !== null) {
236
+ const drift = Math.abs(qualityRate - store.lastCalibratedQualityRate);
237
+ if (drift < HYSTERESIS_BAND)
238
+ return 0;
239
+ }
240
+ let delta = 0;
241
+ if (qualityRate < 0.6) {
242
+ delta = 5; // Raise threshold — scout is overestimating
243
+ }
244
+ else if (qualityRate > 0.9 && qs.totalTickets >= 10) {
245
+ // Lower threshold, but never below original
246
+ const newMin = currentMin - 5;
247
+ if (newMin >= originalMin) {
248
+ delta = -5;
249
+ }
250
+ }
251
+ if (delta !== 0) {
252
+ // Persist the quality rate at which we calibrated (hysteresis anchor)
253
+ store.lastCalibratedQualityRate = qualityRate;
254
+ saveQaStats(projectRoot, store);
255
+ }
256
+ return delta;
257
+ }
258
+ // ---------------------------------------------------------------------------
259
+ // Baseline health block for scout prompt
260
+ // ---------------------------------------------------------------------------
261
+ export function buildBaselineHealthBlock(projectRoot, currentScope) {
262
+ const baselinePath = path.join(projectRoot, '.promptwheel', 'qa-baseline.json');
263
+ if (!fs.existsSync(baselinePath))
264
+ return '';
265
+ let data;
266
+ try {
267
+ data = JSON.parse(fs.readFileSync(baselinePath, 'utf8'));
268
+ }
269
+ catch {
270
+ return '';
271
+ }
272
+ if (!data.failures?.length)
273
+ return '';
274
+ const details = data.details ?? {};
275
+ const lines = [
276
+ '<baseline-health>',
277
+ '## QA Baseline Failures (High Priority)',
278
+ 'These QA commands fail BEFORE any changes (pre-existing).',
279
+ 'Propose a targeted fix for one of these failures if it touches files in your current scope.',
280
+ 'Healing these baselines is high-value work — it unblocks QA verification for all future tickets.',
281
+ '',
282
+ ];
283
+ // Scope filter: extract sector prefix (e.g., "scripts" from "scripts/**")
284
+ const scopePrefix = currentScope?.replace(/\/?\*\*?$/, '').replace(/\/$/, '') || '';
285
+ for (const name of data.failures) {
286
+ const detail = details[name];
287
+ lines.push(`### ${name}`);
288
+ if (detail?.cmd)
289
+ lines.push(`Command: \`${detail.cmd}\``);
290
+ if (detail?.output) {
291
+ let outputLines = detail.output.split('\n');
292
+ // If scoped, filter to lines mentioning files in this sector
293
+ if (scopePrefix && scopePrefix !== '.') {
294
+ const scoped = outputLines.filter((l) => l.includes(scopePrefix));
295
+ if (scoped.length > 0)
296
+ outputLines = scoped;
297
+ }
298
+ // Cap at 30 lines to avoid prompt bloat
299
+ if (outputLines.length > 30) {
300
+ outputLines = [...outputLines.slice(0, 28), `... (${outputLines.length - 28} more lines)`];
301
+ }
302
+ lines.push('```');
303
+ lines.push(...outputLines);
304
+ lines.push('```');
305
+ }
306
+ lines.push('');
307
+ }
308
+ lines.push('</baseline-health>');
309
+ return lines.join('\n');
310
+ }
311
+ //# sourceMappingURL=qa-stats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qa-stats.js","sourceRoot":"","sources":["../../src/lib/qa-stats.ts"],"names":[],"mappings":"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"}