poly-weaver 0.2.5

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 (365) hide show
  1. package/README.md +388 -0
  2. package/dist/agents/implementors/adapter.d.ts +18 -0
  3. package/dist/agents/implementors/adapter.d.ts.map +1 -0
  4. package/dist/agents/implementors/adapter.js +36 -0
  5. package/dist/agents/implementors/adapter.js.map +1 -0
  6. package/dist/agents/implementors/dsl.d.ts +11 -0
  7. package/dist/agents/implementors/dsl.d.ts.map +1 -0
  8. package/dist/agents/implementors/dsl.js +9 -0
  9. package/dist/agents/implementors/dsl.js.map +1 -0
  10. package/dist/agents/implementors/handler.d.ts +10 -0
  11. package/dist/agents/implementors/handler.d.ts.map +1 -0
  12. package/dist/agents/implementors/handler.js +55 -0
  13. package/dist/agents/implementors/handler.js.map +1 -0
  14. package/dist/agents/implementors/index.d.ts +10 -0
  15. package/dist/agents/implementors/index.d.ts.map +1 -0
  16. package/dist/agents/implementors/index.js +21 -0
  17. package/dist/agents/implementors/index.js.map +1 -0
  18. package/dist/agents/implementors/prompts.d.ts +20 -0
  19. package/dist/agents/implementors/prompts.d.ts.map +1 -0
  20. package/dist/agents/implementors/prompts.js +72 -0
  21. package/dist/agents/implementors/prompts.js.map +1 -0
  22. package/dist/agents/implementors/types.d.ts +24 -0
  23. package/dist/agents/implementors/types.d.ts.map +1 -0
  24. package/dist/agents/implementors/types.js +2 -0
  25. package/dist/agents/implementors/types.js.map +1 -0
  26. package/dist/agents/index.d.ts +12 -0
  27. package/dist/agents/index.d.ts.map +1 -0
  28. package/dist/agents/index.js +25 -0
  29. package/dist/agents/index.js.map +1 -0
  30. package/dist/agents/planners/adapter.d.ts +22 -0
  31. package/dist/agents/planners/adapter.d.ts.map +1 -0
  32. package/dist/agents/planners/adapter.js +67 -0
  33. package/dist/agents/planners/adapter.js.map +1 -0
  34. package/dist/agents/planners/dsl.d.ts +13 -0
  35. package/dist/agents/planners/dsl.d.ts.map +1 -0
  36. package/dist/agents/planners/dsl.js +9 -0
  37. package/dist/agents/planners/dsl.js.map +1 -0
  38. package/dist/agents/planners/handler.d.ts +9 -0
  39. package/dist/agents/planners/handler.d.ts.map +1 -0
  40. package/dist/agents/planners/handler.js +86 -0
  41. package/dist/agents/planners/handler.js.map +1 -0
  42. package/dist/agents/planners/index.d.ts +10 -0
  43. package/dist/agents/planners/index.d.ts.map +1 -0
  44. package/dist/agents/planners/index.js +21 -0
  45. package/dist/agents/planners/index.js.map +1 -0
  46. package/dist/agents/planners/prompts.d.ts +30 -0
  47. package/dist/agents/planners/prompts.d.ts.map +1 -0
  48. package/dist/agents/planners/prompts.js +153 -0
  49. package/dist/agents/planners/prompts.js.map +1 -0
  50. package/dist/agents/planners/types.d.ts +37 -0
  51. package/dist/agents/planners/types.d.ts.map +1 -0
  52. package/dist/agents/planners/types.js +2 -0
  53. package/dist/agents/planners/types.js.map +1 -0
  54. package/dist/agents/registry.d.ts +29 -0
  55. package/dist/agents/registry.d.ts.map +1 -0
  56. package/dist/agents/registry.js +44 -0
  57. package/dist/agents/registry.js.map +1 -0
  58. package/dist/agents/reviewers/adapter.d.ts +10 -0
  59. package/dist/agents/reviewers/adapter.d.ts.map +1 -0
  60. package/dist/agents/reviewers/adapter.js +35 -0
  61. package/dist/agents/reviewers/adapter.js.map +1 -0
  62. package/dist/agents/reviewers/dsl.d.ts +12 -0
  63. package/dist/agents/reviewers/dsl.d.ts.map +1 -0
  64. package/dist/agents/reviewers/dsl.js +9 -0
  65. package/dist/agents/reviewers/dsl.js.map +1 -0
  66. package/dist/agents/reviewers/handler.d.ts +8 -0
  67. package/dist/agents/reviewers/handler.d.ts.map +1 -0
  68. package/dist/agents/reviewers/handler.js +48 -0
  69. package/dist/agents/reviewers/handler.js.map +1 -0
  70. package/dist/agents/reviewers/index.d.ts +10 -0
  71. package/dist/agents/reviewers/index.d.ts.map +1 -0
  72. package/dist/agents/reviewers/index.js +33 -0
  73. package/dist/agents/reviewers/index.js.map +1 -0
  74. package/dist/agents/reviewers/prompts.d.ts +25 -0
  75. package/dist/agents/reviewers/prompts.d.ts.map +1 -0
  76. package/dist/agents/reviewers/prompts.js +143 -0
  77. package/dist/agents/reviewers/prompts.js.map +1 -0
  78. package/dist/agents/reviewers/types.d.ts +35 -0
  79. package/dist/agents/reviewers/types.d.ts.map +1 -0
  80. package/dist/agents/reviewers/types.js +10 -0
  81. package/dist/agents/reviewers/types.js.map +1 -0
  82. package/dist/agents/runner.d.ts +62 -0
  83. package/dist/agents/runner.d.ts.map +1 -0
  84. package/dist/agents/runner.js +136 -0
  85. package/dist/agents/runner.js.map +1 -0
  86. package/dist/agents/simplifiers/adapter.d.ts +12 -0
  87. package/dist/agents/simplifiers/adapter.d.ts.map +1 -0
  88. package/dist/agents/simplifiers/adapter.js +27 -0
  89. package/dist/agents/simplifiers/adapter.js.map +1 -0
  90. package/dist/agents/simplifiers/dsl.d.ts +11 -0
  91. package/dist/agents/simplifiers/dsl.d.ts.map +1 -0
  92. package/dist/agents/simplifiers/dsl.js +9 -0
  93. package/dist/agents/simplifiers/dsl.js.map +1 -0
  94. package/dist/agents/simplifiers/handler.d.ts +9 -0
  95. package/dist/agents/simplifiers/handler.d.ts.map +1 -0
  96. package/dist/agents/simplifiers/handler.js +39 -0
  97. package/dist/agents/simplifiers/handler.js.map +1 -0
  98. package/dist/agents/simplifiers/index.d.ts +10 -0
  99. package/dist/agents/simplifiers/index.d.ts.map +1 -0
  100. package/dist/agents/simplifiers/index.js +20 -0
  101. package/dist/agents/simplifiers/index.js.map +1 -0
  102. package/dist/agents/simplifiers/prompts.d.ts +11 -0
  103. package/dist/agents/simplifiers/prompts.d.ts.map +1 -0
  104. package/dist/agents/simplifiers/prompts.js +24 -0
  105. package/dist/agents/simplifiers/prompts.js.map +1 -0
  106. package/dist/agents/simplifiers/types.d.ts +15 -0
  107. package/dist/agents/simplifiers/types.d.ts.map +1 -0
  108. package/dist/agents/simplifiers/types.js +2 -0
  109. package/dist/agents/simplifiers/types.js.map +1 -0
  110. package/dist/agents/whip-hint.d.ts +23 -0
  111. package/dist/agents/whip-hint.d.ts.map +1 -0
  112. package/dist/agents/whip-hint.js +41 -0
  113. package/dist/agents/whip-hint.js.map +1 -0
  114. package/dist/ansi.d.ts +39 -0
  115. package/dist/ansi.d.ts.map +1 -0
  116. package/dist/ansi.js +158 -0
  117. package/dist/ansi.js.map +1 -0
  118. package/dist/cli.d.ts +3 -0
  119. package/dist/cli.d.ts.map +1 -0
  120. package/dist/cli.js +309 -0
  121. package/dist/cli.js.map +1 -0
  122. package/dist/config.d.ts +41 -0
  123. package/dist/config.d.ts.map +1 -0
  124. package/dist/config.js +55 -0
  125. package/dist/config.js.map +1 -0
  126. package/dist/dsl.d.ts +25 -0
  127. package/dist/dsl.d.ts.map +1 -0
  128. package/dist/dsl.js +16 -0
  129. package/dist/dsl.js.map +1 -0
  130. package/dist/flow/artifacts.d.ts +13 -0
  131. package/dist/flow/artifacts.d.ts.map +1 -0
  132. package/dist/flow/artifacts.js +27 -0
  133. package/dist/flow/artifacts.js.map +1 -0
  134. package/dist/flow/built-in/default.d.ts +15 -0
  135. package/dist/flow/built-in/default.d.ts.map +1 -0
  136. package/dist/flow/built-in/default.js +123 -0
  137. package/dist/flow/built-in/default.js.map +1 -0
  138. package/dist/flow/built-in/default.ts +152 -0
  139. package/dist/flow/built-in/why-so-serious.d.ts +15 -0
  140. package/dist/flow/built-in/why-so-serious.d.ts.map +1 -0
  141. package/dist/flow/built-in/why-so-serious.js +147 -0
  142. package/dist/flow/built-in/why-so-serious.js.map +1 -0
  143. package/dist/flow/custom/AUTHORING.md +558 -0
  144. package/dist/flow/custom/index.d.ts +3 -0
  145. package/dist/flow/custom/index.d.ts.map +1 -0
  146. package/dist/flow/custom/index.js +2 -0
  147. package/dist/flow/custom/index.js.map +1 -0
  148. package/dist/flow/custom/load.d.ts +19 -0
  149. package/dist/flow/custom/load.d.ts.map +1 -0
  150. package/dist/flow/custom/load.js +117 -0
  151. package/dist/flow/custom/load.js.map +1 -0
  152. package/dist/flow/diagram.d.ts +37 -0
  153. package/dist/flow/diagram.d.ts.map +1 -0
  154. package/dist/flow/diagram.js +596 -0
  155. package/dist/flow/diagram.js.map +1 -0
  156. package/dist/flow/dsl.d.ts +65 -0
  157. package/dist/flow/dsl.d.ts.map +1 -0
  158. package/dist/flow/dsl.js +210 -0
  159. package/dist/flow/dsl.js.map +1 -0
  160. package/dist/flow/executor.d.ts +22 -0
  161. package/dist/flow/executor.d.ts.map +1 -0
  162. package/dist/flow/executor.js +185 -0
  163. package/dist/flow/executor.js.map +1 -0
  164. package/dist/flow/index.d.ts +16 -0
  165. package/dist/flow/index.d.ts.map +1 -0
  166. package/dist/flow/index.js +12 -0
  167. package/dist/flow/index.js.map +1 -0
  168. package/dist/flow/inspect.d.ts +21 -0
  169. package/dist/flow/inspect.d.ts.map +1 -0
  170. package/dist/flow/inspect.js +54 -0
  171. package/dist/flow/inspect.js.map +1 -0
  172. package/dist/flow/neighbors.d.ts +10 -0
  173. package/dist/flow/neighbors.d.ts.map +1 -0
  174. package/dist/flow/neighbors.js +48 -0
  175. package/dist/flow/neighbors.js.map +1 -0
  176. package/dist/flow/params.d.ts +21 -0
  177. package/dist/flow/params.d.ts.map +1 -0
  178. package/dist/flow/params.js +44 -0
  179. package/dist/flow/params.js.map +1 -0
  180. package/dist/flow/types.d.ts +159 -0
  181. package/dist/flow/types.d.ts.map +1 -0
  182. package/dist/flow/types.js +33 -0
  183. package/dist/flow/types.js.map +1 -0
  184. package/dist/flow-editor/index.d.ts +9 -0
  185. package/dist/flow-editor/index.d.ts.map +1 -0
  186. package/dist/flow-editor/index.js +6 -0
  187. package/dist/flow-editor/index.js.map +1 -0
  188. package/dist/flow-editor/llm.d.ts +33 -0
  189. package/dist/flow-editor/llm.d.ts.map +1 -0
  190. package/dist/flow-editor/llm.js +137 -0
  191. package/dist/flow-editor/llm.js.map +1 -0
  192. package/dist/flow-editor/names.d.ts +5 -0
  193. package/dist/flow-editor/names.d.ts.map +1 -0
  194. package/dist/flow-editor/names.js +21 -0
  195. package/dist/flow-editor/names.js.map +1 -0
  196. package/dist/flow-editor/save.d.ts +59 -0
  197. package/dist/flow-editor/save.d.ts.map +1 -0
  198. package/dist/flow-editor/save.js +143 -0
  199. package/dist/flow-editor/save.js.map +1 -0
  200. package/dist/flow-editor/tui.d.ts +56 -0
  201. package/dist/flow-editor/tui.d.ts.map +1 -0
  202. package/dist/flow-editor/tui.js +628 -0
  203. package/dist/flow-editor/tui.js.map +1 -0
  204. package/dist/flow-editor/validate.d.ts +39 -0
  205. package/dist/flow-editor/validate.d.ts.map +1 -0
  206. package/dist/flow-editor/validate.js +192 -0
  207. package/dist/flow-editor/validate.js.map +1 -0
  208. package/dist/git-info.d.ts +6 -0
  209. package/dist/git-info.d.ts.map +1 -0
  210. package/dist/git-info.js +26 -0
  211. package/dist/git-info.js.map +1 -0
  212. package/dist/orchestrator.d.ts +55 -0
  213. package/dist/orchestrator.d.ts.map +1 -0
  214. package/dist/orchestrator.js +240 -0
  215. package/dist/orchestrator.js.map +1 -0
  216. package/dist/preflight.d.ts +30 -0
  217. package/dist/preflight.d.ts.map +1 -0
  218. package/dist/preflight.js +107 -0
  219. package/dist/preflight.js.map +1 -0
  220. package/dist/preview-panel.d.ts +87 -0
  221. package/dist/preview-panel.d.ts.map +1 -0
  222. package/dist/preview-panel.js +418 -0
  223. package/dist/preview-panel.js.map +1 -0
  224. package/dist/prompts.d.ts +34 -0
  225. package/dist/prompts.d.ts.map +1 -0
  226. package/dist/prompts.js +67 -0
  227. package/dist/prompts.js.map +1 -0
  228. package/dist/providers/base-completion.d.ts +56 -0
  229. package/dist/providers/base-completion.d.ts.map +1 -0
  230. package/dist/providers/base-completion.js +111 -0
  231. package/dist/providers/base-completion.js.map +1 -0
  232. package/dist/providers/claude/completion.d.ts +28 -0
  233. package/dist/providers/claude/completion.d.ts.map +1 -0
  234. package/dist/providers/claude/completion.js +103 -0
  235. package/dist/providers/claude/completion.js.map +1 -0
  236. package/dist/providers/claude/index.d.ts +2 -0
  237. package/dist/providers/claude/index.d.ts.map +1 -0
  238. package/dist/providers/claude/index.js +2 -0
  239. package/dist/providers/claude/index.js.map +1 -0
  240. package/dist/providers/claude/session.d.ts +55 -0
  241. package/dist/providers/claude/session.d.ts.map +1 -0
  242. package/dist/providers/claude/session.js +172 -0
  243. package/dist/providers/claude/session.js.map +1 -0
  244. package/dist/providers/claude/strategy.d.ts +14 -0
  245. package/dist/providers/claude/strategy.d.ts.map +1 -0
  246. package/dist/providers/claude/strategy.js +38 -0
  247. package/dist/providers/claude/strategy.js.map +1 -0
  248. package/dist/providers/codex/completion.d.ts +21 -0
  249. package/dist/providers/codex/completion.d.ts.map +1 -0
  250. package/dist/providers/codex/completion.js +63 -0
  251. package/dist/providers/codex/completion.js.map +1 -0
  252. package/dist/providers/codex/index.d.ts +2 -0
  253. package/dist/providers/codex/index.d.ts.map +1 -0
  254. package/dist/providers/codex/index.js +2 -0
  255. package/dist/providers/codex/index.js.map +1 -0
  256. package/dist/providers/codex/session.d.ts +46 -0
  257. package/dist/providers/codex/session.d.ts.map +1 -0
  258. package/dist/providers/codex/session.js +151 -0
  259. package/dist/providers/codex/session.js.map +1 -0
  260. package/dist/providers/codex/strategy.d.ts +14 -0
  261. package/dist/providers/codex/strategy.d.ts.map +1 -0
  262. package/dist/providers/codex/strategy.js +41 -0
  263. package/dist/providers/codex/strategy.js.map +1 -0
  264. package/dist/providers/copilot/completion.d.ts +22 -0
  265. package/dist/providers/copilot/completion.d.ts.map +1 -0
  266. package/dist/providers/copilot/completion.js +65 -0
  267. package/dist/providers/copilot/completion.js.map +1 -0
  268. package/dist/providers/copilot/index.d.ts +2 -0
  269. package/dist/providers/copilot/index.d.ts.map +1 -0
  270. package/dist/providers/copilot/index.js +2 -0
  271. package/dist/providers/copilot/index.js.map +1 -0
  272. package/dist/providers/copilot/session.d.ts +39 -0
  273. package/dist/providers/copilot/session.d.ts.map +1 -0
  274. package/dist/providers/copilot/session.js +185 -0
  275. package/dist/providers/copilot/session.js.map +1 -0
  276. package/dist/providers/copilot/strategy.d.ts +14 -0
  277. package/dist/providers/copilot/strategy.d.ts.map +1 -0
  278. package/dist/providers/copilot/strategy.js +48 -0
  279. package/dist/providers/copilot/strategy.js.map +1 -0
  280. package/dist/providers/index.d.ts +8 -0
  281. package/dist/providers/index.d.ts.map +1 -0
  282. package/dist/providers/index.js +6 -0
  283. package/dist/providers/index.js.map +1 -0
  284. package/dist/providers/invoke.d.ts +14 -0
  285. package/dist/providers/invoke.d.ts.map +1 -0
  286. package/dist/providers/invoke.js +55 -0
  287. package/dist/providers/invoke.js.map +1 -0
  288. package/dist/providers/path-utils.d.ts +7 -0
  289. package/dist/providers/path-utils.d.ts.map +1 -0
  290. package/dist/providers/path-utils.js +9 -0
  291. package/dist/providers/path-utils.js.map +1 -0
  292. package/dist/providers/prompt-file.d.ts +8 -0
  293. package/dist/providers/prompt-file.d.ts.map +1 -0
  294. package/dist/providers/prompt-file.js +17 -0
  295. package/dist/providers/prompt-file.js.map +1 -0
  296. package/dist/providers/registry.d.ts +17 -0
  297. package/dist/providers/registry.d.ts.map +1 -0
  298. package/dist/providers/registry.js +49 -0
  299. package/dist/providers/registry.js.map +1 -0
  300. package/dist/providers/types.d.ts +145 -0
  301. package/dist/providers/types.d.ts.map +1 -0
  302. package/dist/providers/types.js +5 -0
  303. package/dist/providers/types.js.map +1 -0
  304. package/dist/providers/version.d.ts +11 -0
  305. package/dist/providers/version.d.ts.map +1 -0
  306. package/dist/providers/version.js +31 -0
  307. package/dist/providers/version.js.map +1 -0
  308. package/dist/pty/exit.d.ts +12 -0
  309. package/dist/pty/exit.d.ts.map +1 -0
  310. package/dist/pty/exit.js +43 -0
  311. package/dist/pty/exit.js.map +1 -0
  312. package/dist/pty/spawn.d.ts +20 -0
  313. package/dist/pty/spawn.d.ts.map +1 -0
  314. package/dist/pty/spawn.js +163 -0
  315. package/dist/pty/spawn.js.map +1 -0
  316. package/dist/pty/types.d.ts +44 -0
  317. package/dist/pty/types.d.ts.map +1 -0
  318. package/dist/pty/types.js +2 -0
  319. package/dist/pty/types.js.map +1 -0
  320. package/dist/session/dir.d.ts +19 -0
  321. package/dist/session/dir.d.ts.map +1 -0
  322. package/dist/session/dir.js +31 -0
  323. package/dist/session/dir.js.map +1 -0
  324. package/dist/session/locator.d.ts +28 -0
  325. package/dist/session/locator.d.ts.map +1 -0
  326. package/dist/session/locator.js +88 -0
  327. package/dist/session/locator.js.map +1 -0
  328. package/dist/session/reader.d.ts +12 -0
  329. package/dist/session/reader.d.ts.map +1 -0
  330. package/dist/session/reader.js +94 -0
  331. package/dist/session/reader.js.map +1 -0
  332. package/dist/startup-tui.d.ts +75 -0
  333. package/dist/startup-tui.d.ts.map +1 -0
  334. package/dist/startup-tui.js +504 -0
  335. package/dist/startup-tui.js.map +1 -0
  336. package/dist/status-bar.d.ts +29 -0
  337. package/dist/status-bar.d.ts.map +1 -0
  338. package/dist/status-bar.js +135 -0
  339. package/dist/status-bar.js.map +1 -0
  340. package/dist/terminal-input.d.ts +51 -0
  341. package/dist/terminal-input.d.ts.map +1 -0
  342. package/dist/terminal-input.js +212 -0
  343. package/dist/terminal-input.js.map +1 -0
  344. package/dist/user/dsl.d.ts +13 -0
  345. package/dist/user/dsl.d.ts.map +1 -0
  346. package/dist/user/dsl.js +19 -0
  347. package/dist/user/dsl.js.map +1 -0
  348. package/dist/user/handler.d.ts +16 -0
  349. package/dist/user/handler.d.ts.map +1 -0
  350. package/dist/user/handler.js +49 -0
  351. package/dist/user/handler.js.map +1 -0
  352. package/dist/user/index.d.ts +5 -0
  353. package/dist/user/index.d.ts.map +1 -0
  354. package/dist/user/index.js +4 -0
  355. package/dist/user/index.js.map +1 -0
  356. package/dist/user/prompt.d.ts +86 -0
  357. package/dist/user/prompt.d.ts.map +1 -0
  358. package/dist/user/prompt.js +320 -0
  359. package/dist/user/prompt.js.map +1 -0
  360. package/dist/version.d.ts +2 -0
  361. package/dist/version.d.ts.map +1 -0
  362. package/dist/version.js +4 -0
  363. package/dist/version.js.map +1 -0
  364. package/package.json +50 -0
  365. package/schemas/review-verdict.json +41 -0
@@ -0,0 +1,143 @@
1
+ import { getVerdictSchema } from "../../prompts.js";
2
+ function reviewerSchemaAndRules(schema, verdictFile, approvalTarget = "plan") {
3
+ const readyLabel = approvalTarget === "plan"
4
+ ? "the plan is ready to implement as-is"
5
+ : "the implementation is ready as-is";
6
+ return [
7
+ "After your analysis, write your verdict as JSON matching this schema to the file:",
8
+ `${verdictFile}`,
9
+ "",
10
+ "Schema:",
11
+ "```json",
12
+ schema,
13
+ "```",
14
+ "",
15
+ "Rules:",
16
+ `- Set "approved" to true only if ${readyLabel}.`,
17
+ '- When "approved" is false, the "issues" array must be non-empty.',
18
+ '- Each issue must have a "category", "description", and "severity" (critical/major/minor).',
19
+ '- Provide a brief "summary" of your review.',
20
+ ];
21
+ }
22
+ /**
23
+ * Build the reviewer prompt with the JSON schema embedded.
24
+ */
25
+ export async function buildReviewerPrompt(taskFile, planFile, outputVerdictFile) {
26
+ const schema = await getVerdictSchema();
27
+ return [
28
+ `Read the original task from: ${taskFile}`,
29
+ `Read the proposed plan from: ${planFile}`,
30
+ "",
31
+ "Review this plan against the original task. Evaluate:",
32
+ "- Correctness: Does the plan correctly address the task?",
33
+ "- Completeness: Are all aspects of the task covered?",
34
+ "- Clarity: Is the plan clear and actionable?",
35
+ "- Risk: Are there unaddressed risks or edge cases?",
36
+ "",
37
+ ...reviewerSchemaAndRules(schema, outputVerdictFile),
38
+ ].join("\n");
39
+ }
40
+ /**
41
+ * Build a lighter reviewer prompt for resumed sessions.
42
+ * The model already has the task and previous plan in context,
43
+ * so only reference the revised plan.
44
+ */
45
+ export async function buildResumeReviewerPrompt(_taskFile, planFile, outputVerdictFile) {
46
+ const schema = await getVerdictSchema();
47
+ return [
48
+ `Read the revised plan from: ${planFile}`,
49
+ "",
50
+ "Re-evaluate this revised plan.",
51
+ "",
52
+ ...reviewerSchemaAndRules(schema, outputVerdictFile),
53
+ ].join("\n");
54
+ }
55
+ /**
56
+ * Build a lighter implementation reviewer prompt for resumed sessions.
57
+ * The model already has the approved plan in context,
58
+ * so only ask it to re-check the implementation.
59
+ */
60
+ export async function buildResumeImplementationReviewerPrompt(_taskFile, planFile, outputVerdictFile) {
61
+ const schema = await getVerdictSchema();
62
+ return [
63
+ `The implementation has been revised. Re-check the codebase against the plan: ${planFile}`,
64
+ "",
65
+ ...reviewerSchemaAndRules(schema, outputVerdictFile, "implementation"),
66
+ ].join("\n");
67
+ }
68
+ /**
69
+ * Build the implementation reviewer prompt with the JSON schema embedded.
70
+ */
71
+ export async function buildImplementationReviewerPrompt(_taskFile, planFile, outputVerdictFile) {
72
+ const schema = await getVerdictSchema();
73
+ return [
74
+ `Read the approved implementation plan from: ${planFile}`,
75
+ "",
76
+ "Review whether the current codebase correctly implements the approved plan.",
77
+ "Evaluate:",
78
+ "- Correctness: Do the code changes satisfy the task requirements?",
79
+ "- Completeness: Are all planned items implemented?",
80
+ "- Quality: Is the implementation maintainable and coherent?",
81
+ "- Risk: Are there defects, regressions, or missing safeguards?",
82
+ "",
83
+ ...reviewerSchemaAndRules(schema, outputVerdictFile, "implementation"),
84
+ ].join("\n");
85
+ }
86
+ // ─── Minimal (opinionless) reviewer prompts ──────────────────────────────
87
+ function minimalReviewerSchemaAndRules(verdictFile, approvalTarget = "plan") {
88
+ const readyLabel = approvalTarget === "plan"
89
+ ? "the plan is ready to implement as-is"
90
+ : "the implementation is ready as-is";
91
+ return [
92
+ "After your review, write your verdict as JSON to the file:",
93
+ `${verdictFile}`,
94
+ "",
95
+ "Required JSON format:",
96
+ "```json",
97
+ "{",
98
+ ' "approved": true | false,',
99
+ ' "issues": [{ "description": "..." }, ...],',
100
+ ' "summary": "your review summary"',
101
+ "}",
102
+ "```",
103
+ "",
104
+ `Set "approved" to true only if ${readyLabel}.`,
105
+ 'When not approved, include at least one issue describing what needs to change.',
106
+ ];
107
+ }
108
+ export async function buildMinimalReviewerPrompt(taskFile, planFile, outputVerdictFile) {
109
+ return [
110
+ `Read the original task from: ${taskFile}`,
111
+ `Read the proposed plan from: ${planFile}`,
112
+ "",
113
+ "Review this plan against the original task.",
114
+ "",
115
+ ...minimalReviewerSchemaAndRules(outputVerdictFile),
116
+ ].join("\n");
117
+ }
118
+ export async function buildMinimalResumeReviewerPrompt(_taskFile, planFile, outputVerdictFile) {
119
+ return [
120
+ `Read the revised plan from: ${planFile}`,
121
+ "",
122
+ "Re-evaluate this revised plan.",
123
+ "",
124
+ ...minimalReviewerSchemaAndRules(outputVerdictFile),
125
+ ].join("\n");
126
+ }
127
+ export async function buildMinimalImplementationReviewerPrompt(_taskFile, planFile, outputVerdictFile) {
128
+ return [
129
+ `Read the approved implementation plan from: ${planFile}`,
130
+ "",
131
+ "Review whether the current codebase correctly implements the approved plan.",
132
+ "",
133
+ ...minimalReviewerSchemaAndRules(outputVerdictFile, "implementation"),
134
+ ].join("\n");
135
+ }
136
+ export async function buildMinimalResumeImplementationReviewerPrompt(_taskFile, planFile, outputVerdictFile) {
137
+ return [
138
+ `The implementation has been revised. Re-check the codebase against the plan: ${planFile}`,
139
+ "",
140
+ ...minimalReviewerSchemaAndRules(outputVerdictFile, "implementation"),
141
+ ].join("\n");
142
+ }
143
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../src/agents/reviewers/prompts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export interface ReviewerDriver {
2
+ readonly name: string;
3
+ /** Spawn a PTY process, run the review, detect completion, send exit, return result. */
4
+ run(taskFile: string, planFile: string, opts: ReviewerRunOpts): Promise<ReviewResult>;
5
+ /** Get the session ID for resume/correlation. */
6
+ getSessionId(): string | undefined;
7
+ }
8
+ import type { StepMeta } from "../../flow/types.js";
9
+ export type ReviewerRunOpts = {
10
+ outputVerdictFile: string;
11
+ resumeSessionId?: string;
12
+ producers?: Record<string, StepMeta>;
13
+ consumers?: Record<string, StepMeta[]>;
14
+ variant?: string;
15
+ };
16
+ export type ReviewPromptBuilder = (taskFile: string, planFile: string, outputVerdictFile: string) => Promise<string>;
17
+ /**
18
+ * Select the appropriate prompt builder based on whether this is a resume.
19
+ */
20
+ export declare function selectReviewerPromptBuilder(promptBuilder: ReviewPromptBuilder, resumePromptBuilder: ReviewPromptBuilder | undefined, resumeSessionId: string | undefined): ReviewPromptBuilder;
21
+ export type ReviewResult = {
22
+ raw: string;
23
+ agentUsed: string;
24
+ sessionId?: string;
25
+ };
26
+ export type ReviewVerdict = {
27
+ approved: boolean;
28
+ issues: Array<{
29
+ description: string;
30
+ category?: string;
31
+ severity?: string;
32
+ }>;
33
+ summary: string;
34
+ };
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agents/reviewers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB,wFAAwF;IACxF,GAAG,CACD,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,eAAe,GACpB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB,iDAAiD;IACjD,YAAY,IAAI,MAAM,GAAG,SAAS,CAAC;CACpC;AAED,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,MAAM,eAAe,GAAG;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,CAChC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,MAAM,KACtB,OAAO,CAAC,MAAM,CAAC,CAAC;AAErB;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,aAAa,EAAE,mBAAmB,EAClC,mBAAmB,EAAE,mBAAmB,GAAG,SAAS,EACpD,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,mBAAmB,CAKrB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QACZ,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Select the appropriate prompt builder based on whether this is a resume.
3
+ */
4
+ export function selectReviewerPromptBuilder(promptBuilder, resumePromptBuilder, resumeSessionId) {
5
+ if (resumeSessionId && resumePromptBuilder) {
6
+ return resumePromptBuilder;
7
+ }
8
+ return promptBuilder;
9
+ }
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agents/reviewers/types.ts"],"names":[],"mappings":"AA8BA;;GAEG;AACH,MAAM,UAAU,2BAA2B,CACzC,aAAkC,EAClC,mBAAoD,EACpD,eAAmC;IAEnC,IAAI,eAAe,IAAI,mBAAmB,EAAE,CAAC;QAC3C,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { ProviderStrategy } from "../providers/types.js";
2
+ export interface RunRequest {
3
+ /** The full prompt text to send to the agent. */
4
+ prompt: string;
5
+ /** Working directory for PTY spawn. */
6
+ workdir: string;
7
+ /** Optional session ID for resume. */
8
+ resumeSessionId?: string;
9
+ /** Known session file path (for resume — avoids re-discovery). */
10
+ sessionFilePath?: string;
11
+ /** Extra permission flags (e.g., ["--permission-mode", "plan"]). */
12
+ permissionFlags?: string[];
13
+ /** Optional prefix for fresh-session prompt (e.g., "/plan "). */
14
+ promptPrefix?: string;
15
+ }
16
+ export interface RunResult {
17
+ /** The agent's response text (from completion detector). */
18
+ responseText: string;
19
+ /** The session ID (for resume/correlation). */
20
+ sessionId: string;
21
+ /** Path to the session file (for subsequent resume). */
22
+ sessionFilePath: string;
23
+ /** Line offset into the session file where this turn's data starts. */
24
+ lineOffset: number;
25
+ }
26
+ /**
27
+ * Abstract base for role-specific adapters.
28
+ *
29
+ * Owns the fields and lifecycle shared by all adapters: name, runner,
30
+ * session state tracking, and the `runAgent()` helper that updates
31
+ * sessionId/sessionFilePath after each run.
32
+ */
33
+ export declare abstract class BaseAdapter {
34
+ protected readonly strategy: ProviderStrategy;
35
+ protected readonly workdir: string;
36
+ readonly name: string;
37
+ protected readonly runner: AgentRunner;
38
+ protected sessionId: string | undefined;
39
+ protected sessionFilePath: string | undefined;
40
+ constructor(strategy: ProviderStrategy, workdir: string, yolo?: boolean);
41
+ getSessionId(): string | undefined;
42
+ protected applyWhipHint(hint: string | undefined, rawPrompt: string): string;
43
+ protected applyPlanModePrompt(rawPrompt: string): string;
44
+ protected runAgent(request: RunRequest): Promise<RunResult>;
45
+ }
46
+ /**
47
+ * Shared lifecycle engine for AI agent PTY sessions.
48
+ *
49
+ * Owns the entire spawn → detect → exit lifecycle and is parameterized
50
+ * by a ProviderStrategy for CLI-specific behavior.
51
+ *
52
+ * Includes resume-retry: if resumeSessionId is set and the run fails,
53
+ * automatically retries with a fresh session.
54
+ */
55
+ export declare class AgentRunner {
56
+ private readonly strategy;
57
+ private readonly yolo;
58
+ constructor(strategy: ProviderStrategy, yolo?: boolean);
59
+ run(request: RunRequest): Promise<RunResult>;
60
+ private runInternal;
61
+ }
62
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAM9D,MAAM,WAAW,UAAU;IACzB,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,sCAAsC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,SAAS;IACxB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,eAAe,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,8BAAsB,WAAW;IAO7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB;IAC7C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM;IAPpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IACvC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,SAAS,CAAC,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;gBAGzB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EAClC,IAAI,CAAC,EAAE,OAAO;IAMhB,YAAY,IAAI,MAAM,GAAG,SAAS;IAIlC,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI5E,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;cAKxC,QAAQ,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;CAMlE;AAED;;;;;;;;GAQG;AACH,qBAAa,WAAW;IAIpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAH3B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAU;gBAGZ,QAAQ,EAAE,gBAAgB,EAC3C,IAAI,CAAC,EAAE,OAAO;IAKV,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;YAkBpC,WAAW;CA8E1B"}
@@ -0,0 +1,136 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { spawnPty } from "../pty/spawn.js";
3
+ import { sendExit } from "../pty/exit.js";
4
+ import { readSessionFile } from "../session/reader.js";
5
+ import { waitForFile } from "../session/locator.js";
6
+ /**
7
+ * Abstract base for role-specific adapters.
8
+ *
9
+ * Owns the fields and lifecycle shared by all adapters: name, runner,
10
+ * session state tracking, and the `runAgent()` helper that updates
11
+ * sessionId/sessionFilePath after each run.
12
+ */
13
+ export class BaseAdapter {
14
+ strategy;
15
+ workdir;
16
+ name;
17
+ runner;
18
+ sessionId;
19
+ sessionFilePath;
20
+ constructor(strategy, workdir, yolo) {
21
+ this.strategy = strategy;
22
+ this.workdir = workdir;
23
+ this.name = strategy.displayName;
24
+ this.runner = new AgentRunner(strategy, yolo);
25
+ }
26
+ getSessionId() {
27
+ return this.sessionId;
28
+ }
29
+ applyWhipHint(hint, rawPrompt) {
30
+ return hint ? rawPrompt + "\n\n" + hint : rawPrompt;
31
+ }
32
+ applyPlanModePrompt(rawPrompt) {
33
+ const { promptPrefix, promptSuffix } = this.strategy.planMode;
34
+ return (promptPrefix ?? "") + rawPrompt + (promptSuffix ?? "");
35
+ }
36
+ async runAgent(request) {
37
+ const result = await this.runner.run(request);
38
+ this.sessionId = result.sessionId;
39
+ this.sessionFilePath = result.sessionFilePath;
40
+ return result;
41
+ }
42
+ }
43
+ /**
44
+ * Shared lifecycle engine for AI agent PTY sessions.
45
+ *
46
+ * Owns the entire spawn → detect → exit lifecycle and is parameterized
47
+ * by a ProviderStrategy for CLI-specific behavior.
48
+ *
49
+ * Includes resume-retry: if resumeSessionId is set and the run fails,
50
+ * automatically retries with a fresh session.
51
+ */
52
+ export class AgentRunner {
53
+ strategy;
54
+ yolo;
55
+ constructor(strategy, yolo) {
56
+ this.strategy = strategy;
57
+ this.yolo = yolo ?? true;
58
+ }
59
+ async run(request) {
60
+ if (request.resumeSessionId) {
61
+ try {
62
+ return await this.runInternal(request);
63
+ }
64
+ catch (err) {
65
+ console.warn(`[poly-weaver] ${this.strategy.name} resume failed, falling back to fresh session: ${err instanceof Error ? err.message : err}`);
66
+ return await this.runInternal({
67
+ ...request,
68
+ resumeSessionId: undefined,
69
+ sessionFilePath: undefined,
70
+ });
71
+ }
72
+ }
73
+ return await this.runInternal(request);
74
+ }
75
+ async runInternal(request) {
76
+ const { prompt, workdir, resumeSessionId, sessionFilePath: knownSessionFile, permissionFlags, promptPrefix, } = request;
77
+ // Pre-assign session ID when supported (skips snapshot/discovery)
78
+ let preAssignedSessionId;
79
+ let predictedFile;
80
+ if (!resumeSessionId && this.strategy.session.predictSessionFile) {
81
+ preAssignedSessionId = randomUUID();
82
+ predictedFile = this.strategy.session.predictSessionFile(workdir, preAssignedSessionId);
83
+ }
84
+ // 1. Build CLI args
85
+ const args = await this.strategy.buildArgs(prompt, {
86
+ resumeSessionId,
87
+ sessionId: preAssignedSessionId,
88
+ permissionFlags,
89
+ promptPrefix,
90
+ yolo: this.yolo,
91
+ });
92
+ // 2. Snapshot sessions (skip if resuming with a known file or predicted)
93
+ const snapshot = (resumeSessionId && knownSessionFile) || predictedFile
94
+ ? { skipped: true }
95
+ : await this.strategy.session.snapshot(workdir);
96
+ // 3. Spawn PTY
97
+ const handle = spawnPty({
98
+ command: this.strategy.command,
99
+ args,
100
+ cwd: workdir,
101
+ });
102
+ // Allow user keystrokes (e.g. tool confirmations) to reach the agent
103
+ handle.openGate();
104
+ // 4. Wire up completion detector
105
+ const detector = this.strategy.createDetector();
106
+ handle.onData((data) => detector.onPtyData(data));
107
+ try {
108
+ // 5. Find or reuse session file; compute line offset
109
+ let sessionFile;
110
+ let lineOffset = 0;
111
+ if (resumeSessionId && knownSessionFile) {
112
+ sessionFile = knownSessionFile;
113
+ lineOffset = (await readSessionFile(sessionFile)).length;
114
+ }
115
+ else if (predictedFile) {
116
+ sessionFile = await waitForFile(predictedFile);
117
+ }
118
+ else {
119
+ sessionFile = await this.strategy.session.findSessionFile(snapshot, workdir);
120
+ }
121
+ const sessionId = await this.strategy.session.extractSessionId(sessionFile);
122
+ // 6. Wait for completion
123
+ const responseText = await detector.start(sessionFile, lineOffset);
124
+ // 7. Send exit signal
125
+ await sendExit(handle, this.strategy.exitSignal);
126
+ detector.dispose();
127
+ return { responseText, sessionId, sessionFilePath: sessionFile, lineOffset };
128
+ }
129
+ catch (err) {
130
+ detector.dispose();
131
+ handle.kill();
132
+ throw err;
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agents/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SimplifierDriver, SimplifierResult, SimplifierPromptFn } from "./types.js";
2
+ import type { ProviderStrategy } from "../../providers/types.js";
3
+ import { BaseAdapter } from "../runner.js";
4
+ export declare class SimplifierAdapter extends BaseAdapter implements SimplifierDriver {
5
+ private readonly promptFn;
6
+ constructor(strategy: ProviderStrategy, workdir: string, promptFn: SimplifierPromptFn, yolo?: boolean);
7
+ run(opts: {
8
+ outputPlanFile: string;
9
+ resumeSessionId?: string;
10
+ }): Promise<SimplifierResult>;
11
+ }
12
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,qBAAa,iBAAkB,SAAQ,WAAY,YAAW,gBAAgB;IAI1E,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFzB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,EAAE,MAAM,EACE,QAAQ,EAAE,kBAAkB,EAC7C,IAAI,CAAC,EAAE,OAAO;IAKV,GAAG,CAAC,IAAI,EAAE;QACd,cAAc,EAAE,MAAM,CAAC;QACvB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAoB9B"}
@@ -0,0 +1,27 @@
1
+ import { BaseAdapter } from "../runner.js";
2
+ export class SimplifierAdapter extends BaseAdapter {
3
+ promptFn;
4
+ constructor(strategy, workdir, promptFn, yolo) {
5
+ super(strategy, workdir, yolo);
6
+ this.promptFn = promptFn;
7
+ }
8
+ async run(opts) {
9
+ const { planMode } = this.strategy;
10
+ const rawPrompt = this.promptFn(opts.outputPlanFile);
11
+ const prompt = this.applyPlanModePrompt(rawPrompt);
12
+ const result = await this.runAgent({
13
+ prompt,
14
+ workdir: this.workdir,
15
+ resumeSessionId: opts.resumeSessionId,
16
+ sessionFilePath: this.sessionFilePath,
17
+ permissionFlags: planMode.permissionFlags,
18
+ promptPrefix: planMode.argPrefix,
19
+ });
20
+ return {
21
+ sessionId: result.sessionId,
22
+ rawText: result.responseText,
23
+ agentUsed: this.name,
24
+ };
25
+ }
26
+ }
27
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,OAAO,iBAAkB,SAAQ,WAAW;IAI7B;IAHnB,YACE,QAA0B,EAC1B,OAAe,EACE,QAA4B,EAC7C,IAAc;QAEd,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAHd,aAAQ,GAAR,QAAQ,CAAoB;IAI/C,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAGT;QACC,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC;YACjC,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,QAAQ,CAAC,eAAe;YACzC,YAAY,EAAE,QAAQ,CAAC,SAAS;SACjC,CAAC,CAAC;QAEH,OAAO;YACL,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,YAAY;YAC5B,SAAS,EAAE,IAAI,CAAC,IAAI;SACrB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import { type WhenCondition, type PhaseLabelSpec } from "../../flow/dsl.js";
2
+ import type { AgentStep } from "../../flow/types.js";
3
+ export declare function simplify(opts: {
4
+ driver: string;
5
+ writes: Record<string, string>;
6
+ id?: string;
7
+ feedbackToTask?: boolean;
8
+ when?: WhenCondition;
9
+ phaseLabel?: PhaseLabelSpec;
10
+ }): AgentStep;
11
+ //# sourceMappingURL=dsl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsl.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/dsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,wBAAgB,QAAQ,CAAC,IAAI,EAAE;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B,GAAG,SAAS,CAMZ"}
@@ -0,0 +1,9 @@
1
+ import { agentStep } from "../../flow/dsl.js";
2
+ export function simplify(opts) {
3
+ return agentStep("simplifier", {
4
+ feedbackToTask: false,
5
+ idPrefix: "simplify",
6
+ phaseLabel: "✨ Simplifying...",
7
+ }, { ...opts, reads: {} });
8
+ }
9
+ //# sourceMappingURL=dsl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsl.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/dsl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAA2C,MAAM,mBAAmB,CAAC;AAGvF,MAAM,UAAU,QAAQ,CAAC,IAOxB;IACC,OAAO,SAAS,CAAC,YAAY,EAAE;QAC7B,cAAc,EAAE,KAAK;QACrB,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,kBAAkB;KAC/B,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { SimplifierDriver } from "./types.js";
2
+ import type { BaseStep, StepContext, StepSignal, RetryFn, RoleHandler } from "../../flow/types.js";
3
+ export declare class SimplifierRoleHandler implements RoleHandler {
4
+ private driver;
5
+ private planVersion;
6
+ constructor(driver: SimplifierDriver);
7
+ execute(step: BaseStep, ctx: StepContext, retry: RetryFn): Promise<StepSignal>;
8
+ }
9
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKnD,OAAO,KAAK,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,OAAO,EACP,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAM7B,qBAAa,qBAAsB,YAAW,WAAW;IAG3C,OAAO,CAAC,MAAM;IAF1B,OAAO,CAAC,WAAW,CAAK;gBAEJ,MAAM,EAAE,gBAAgB;IAEtC,OAAO,CACX,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,UAAU,CAAC;CAgCvB"}
@@ -0,0 +1,39 @@
1
+ import { join } from "node:path";
2
+ import { readPlanFromContract, removeFileIfExists, } from "../../orchestrator.js";
3
+ function planFileForVersion(root, version) {
4
+ return join(root, `simplify-v${version}.md`);
5
+ }
6
+ export class SimplifierRoleHandler {
7
+ driver;
8
+ planVersion = 0;
9
+ constructor(driver) {
10
+ this.driver = driver;
11
+ }
12
+ async execute(step, ctx, retry) {
13
+ this.planVersion++;
14
+ const outputPlanFile = planFileForVersion(ctx.sessionDir, this.planVersion);
15
+ const resumeSessionId = ctx.sessionIds.get(step.id);
16
+ const { result, planText } = await retry("simplifier", async (attempt) => {
17
+ if (attempt > 1)
18
+ await removeFileIfExists(outputPlanFile);
19
+ const result = await this.driver.run({
20
+ outputPlanFile,
21
+ resumeSessionId: attempt === 1 ? resumeSessionId : undefined,
22
+ });
23
+ const planText = await readPlanFromContract(outputPlanFile);
24
+ return { result, planText };
25
+ });
26
+ // Store plan artifact
27
+ ctx.artifacts.set(step.writes.plan, {
28
+ file: outputPlanFile,
29
+ text: planText,
30
+ meta: { version: this.planVersion },
31
+ });
32
+ // Track session for resume
33
+ if (result.sessionId) {
34
+ ctx.sessionIds.set(step.id, result.sessionId);
35
+ }
36
+ return { kind: "continue" };
37
+ }
38
+ }
39
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAS/B,SAAS,kBAAkB,CAAC,IAAY,EAAE,OAAe;IACvD,OAAO,IAAI,CAAC,IAAI,EAAE,aAAa,OAAO,KAAK,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,OAAO,qBAAqB;IAGZ;IAFZ,WAAW,GAAG,CAAC,CAAC;IAExB,YAAoB,MAAwB;QAAxB,WAAM,GAAN,MAAM,CAAkB;IAAG,CAAC;IAEhD,KAAK,CAAC,OAAO,CACX,IAAc,EACd,GAAgB,EAChB,KAAc;QAEd,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,MAAM,cAAc,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAE5E,MAAM,eAAe,GAAG,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEpD,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACvE,IAAI,OAAO,GAAG,CAAC;gBAAE,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAE1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;gBACnC,cAAc;gBACd,eAAe,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;aAC7D,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,cAAc,CAAC,CAAC;YAC5D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,sBAAsB;QACtB,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;YAClC,IAAI,EAAE,cAAc;YACpB,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QAEH,2BAA2B;QAC3B,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QAED,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;CACF"}
@@ -0,0 +1,10 @@
1
+ import type { ProviderStrategy } from "../../providers/types.js";
2
+ import type { SimplifierDriver } from "./types.js";
3
+ import type { DriverName } from "../../flow/types.js";
4
+ export { simplify } from "./dsl.js";
5
+ export { SimplifierRoleHandler } from "./handler.js";
6
+ export type { SimplifierDriver, SimplifierPromptFn } from "./types.js";
7
+ export type SimplifierFactory = (workdir: string) => SimplifierDriver;
8
+ export declare const registerProvider: (name: DriverName, strategy: ProviderStrategy) => void;
9
+ export declare const registerFactory: (name: string, factory: SimplifierFactory) => void, availableDrivers: () => string[];
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEvE,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,gBAAgB,CAAC;AActE,eAAO,MAAM,gBAAgB,EAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAC/G,eAAO,MAAQ,eAAe,sDAAE,gBAAgB,gBAAQ,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { SimplifierAdapter } from "./adapter.js";
2
+ import { SimplifierRoleHandler } from "./handler.js";
3
+ import { createRoleModule } from "../registry.js";
4
+ import { claudeSimplifierPrompt, defaultSimplifierPrompt } from "./prompts.js";
5
+ export { simplify } from "./dsl.js";
6
+ export { SimplifierRoleHandler } from "./handler.js";
7
+ const mod = createRoleModule({
8
+ roleName: "simplifier",
9
+ fromFactory: (factory, workdir) => factory(workdir),
10
+ fromProvider: (strategy, workdir, opts) => {
11
+ const promptFn = strategy.name === "claude"
12
+ ? claudeSimplifierPrompt
13
+ : defaultSimplifierPrompt;
14
+ return new SimplifierAdapter(strategy, workdir, promptFn, opts?.yolo);
15
+ },
16
+ toHandler: (driver) => new SimplifierRoleHandler(driver),
17
+ });
18
+ export const registerProvider = mod.registerProvider;
19
+ export const { registerFactory, availableDrivers } = mod;
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/simplifiers/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAKrD,MAAM,GAAG,GAAG,gBAAgB,CAAsC;IAChE,QAAQ,EAAE,YAAY;IACtB,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;IACnD,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QACxC,MAAM,QAAQ,GAAuB,QAAQ,CAAC,IAAI,KAAK,QAAQ;YAC7D,CAAC,CAAC,sBAAsB;YACxB,CAAC,CAAC,uBAAuB,CAAC;QAC5B,OAAO,IAAI,iBAAiB,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,SAAS,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,qBAAqB,CAAC,MAAM,CAAC;CACzD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,gBAA0E,CAAC;AAC/G,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,GAAG,GAAG,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Claude: invoke built-in /simplify skill.
3
+ * /simplify = "Review changed code for reuse, quality, and efficiency, then fix any issues found."
4
+ */
5
+ export declare function claudeSimplifierPrompt(outputPlanFile: string): string;
6
+ /**
7
+ * Codex & Copilot: explicit textual equivalent of Claude's /simplify skill.
8
+ * These providers have no built-in simplify command, so we spell out the task.
9
+ */
10
+ export declare function defaultSimplifierPrompt(outputPlanFile: string): string;
11
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/agents/simplifiers/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAMrE;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAOtE"}