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,10 @@
1
+ import type { FlowDefinition, StepMeta } from "./types.js";
2
+ /**
3
+ * Compute a static consumer map for whip-mode data-flow awareness.
4
+ *
5
+ * Algorithm: flatten all agent steps, for each step's `reads` entries
6
+ * add that step's StepMeta to the map keyed by store key.
7
+ * Deduplicate by step ID within each store key.
8
+ */
9
+ export declare function computeConsumerMap(flow: FlowDefinition): Map<string, StepMeta[]>;
10
+ //# sourceMappingURL=neighbors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neighbors.d.ts","sourceRoot":"","sources":["../../src/flow/neighbors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAY,QAAQ,EAAyB,MAAM,YAAY,CAAC;AAG5F;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,CA8BhF"}
@@ -0,0 +1,48 @@
1
+ import { builtinStrategies } from "../providers/registry.js";
2
+ /**
3
+ * Compute a static consumer map for whip-mode data-flow awareness.
4
+ *
5
+ * Algorithm: flatten all agent steps, for each step's `reads` entries
6
+ * add that step's StepMeta to the map keyed by store key.
7
+ * Deduplicate by step ID within each store key.
8
+ */
9
+ export function computeConsumerMap(flow) {
10
+ const result = new Map();
11
+ function resolveDisplayName(driver) {
12
+ return builtinStrategies().get(driver)?.displayName ?? driver;
13
+ }
14
+ const allAgents = flattenAgentSteps(flow.steps);
15
+ // Track which step IDs have been added per store key to deduplicate
16
+ const seen = new Map();
17
+ for (const step of allAgents) {
18
+ const meta = {
19
+ role: step.role,
20
+ driver: step.driver,
21
+ displayName: resolveDisplayName(step.driver),
22
+ variant: step.variant,
23
+ };
24
+ for (const storeKey of Object.values(step.reads)) {
25
+ if (!seen.has(storeKey))
26
+ seen.set(storeKey, new Set());
27
+ if (seen.get(storeKey).has(step.id))
28
+ continue;
29
+ seen.get(storeKey).add(step.id);
30
+ if (!result.has(storeKey))
31
+ result.set(storeKey, []);
32
+ result.get(storeKey).push(meta);
33
+ }
34
+ }
35
+ return result;
36
+ }
37
+ /** Recursively collect all agent steps in execution order. */
38
+ function flattenAgentSteps(steps) {
39
+ const out = [];
40
+ for (const step of steps) {
41
+ if (step.type === "agent")
42
+ out.push(step);
43
+ else if (step.type === "loop")
44
+ out.push(...flattenAgentSteps(step.steps));
45
+ }
46
+ return out;
47
+ }
48
+ //# sourceMappingURL=neighbors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"neighbors.js","sourceRoot":"","sources":["../../src/flow/neighbors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAoB;IACrD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAE7C,SAAS,kBAAkB,CAAC,MAAc;QACxC,OAAO,iBAAiB,EAAE,CAAC,GAAG,CAAC,MAAoB,CAAC,EAAE,WAAW,IAAI,MAAM,CAAC;IAC9E,CAAC;IAED,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChD,oEAAoE;IACpE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAa;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW,EAAE,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC;YAC5C,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACvD,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAAE,SAAS;YAC/C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YACpD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8DAA8D;AAC9D,SAAS,iBAAiB,CAAC,KAAiB;IAC1C,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACrC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;YAAE,GAAG,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { FlowParam, FlowParamValue, FlowParamValues } from "./types.js";
2
+ /**
3
+ * Convert a camelCase key to kebab-case for CLI flags.
4
+ * e.g. "maxImplIterations" → "max-impl-iterations"
5
+ */
6
+ export declare function toKebabCase(key: string): string;
7
+ /**
8
+ * Resolve flow param values from multiple sources in priority order.
9
+ * First defined value wins; param defaults are used as fallback.
10
+ *
11
+ * @param params - The flow param declarations
12
+ * @param sources - Source records in priority order (e.g. CLI > file config > user config)
13
+ * @returns Resolved values for all declared params
14
+ */
15
+ export declare function resolveFlowParams(params: readonly FlowParam[], ...sources: Array<Record<string, FlowParamValue | undefined>>): FlowParamValues;
16
+ /**
17
+ * Extract only the keys declared in the template params from a values record.
18
+ * Useful for persisting flow-param config without orthogonal options.
19
+ */
20
+ export declare function extractFlowParamConfig(params: readonly FlowParam[], values: FlowParamValues): FlowParamValues;
21
+ //# sourceMappingURL=params.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/flow/params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7E;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,CAAC,CAAC,GAC5D,eAAe,CAkBjB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,MAAM,EAAE,eAAe,GACtB,eAAe,CAQjB"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Convert a camelCase key to kebab-case for CLI flags.
3
+ * e.g. "maxImplIterations" → "max-impl-iterations"
4
+ */
5
+ export function toKebabCase(key) {
6
+ return key.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
7
+ }
8
+ /**
9
+ * Resolve flow param values from multiple sources in priority order.
10
+ * First defined value wins; param defaults are used as fallback.
11
+ *
12
+ * @param params - The flow param declarations
13
+ * @param sources - Source records in priority order (e.g. CLI > file config > user config)
14
+ * @returns Resolved values for all declared params
15
+ */
16
+ export function resolveFlowParams(params, ...sources) {
17
+ const result = {};
18
+ for (const param of params) {
19
+ let resolved;
20
+ for (const source of sources) {
21
+ const val = source[param.key];
22
+ if (val !== undefined) {
23
+ resolved = val;
24
+ break;
25
+ }
26
+ }
27
+ result[param.key] = resolved ?? param.default;
28
+ }
29
+ return result;
30
+ }
31
+ /**
32
+ * Extract only the keys declared in the template params from a values record.
33
+ * Useful for persisting flow-param config without orthogonal options.
34
+ */
35
+ export function extractFlowParamConfig(params, values) {
36
+ const result = {};
37
+ for (const param of params) {
38
+ if (values[param.key] !== undefined) {
39
+ result[param.key] = values[param.key];
40
+ }
41
+ }
42
+ return result;
43
+ }
44
+ //# sourceMappingURL=params.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/flow/params.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG,CAAC,OAAO,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AAClE,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAA4B,EAC5B,GAAG,OAA0D;IAE7D,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,QAAoC,CAAC;QAEzC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,QAAQ,GAAG,GAAG,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC;IAChD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAA4B,EAC5B,MAAuB;IAEvB,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YACpC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,159 @@
1
+ import type { StatusBar } from "../status-bar.js";
2
+ /**
3
+ * Well-known artifact name for the user's task description.
4
+ * Seeded by the orchestrator before any flow step runs;
5
+ * read by incorporateFeedback() to append clarifications.
6
+ */
7
+ export declare const TASK: "task";
8
+ /** Built-in role names that have handler modules in src/agents/. */
9
+ export type BuiltinRole = "planner" | "reviewer" | "implementor" | "simplifier";
10
+ /** Known CLI driver names. */
11
+ export type DriverName = "claude" | "codex" | "copilot";
12
+ /** A named piece of data produced by one step and consumed by another. */
13
+ export interface Artifact {
14
+ /** Path to artifact file on disk. */
15
+ file?: string;
16
+ /** Human-readable content (display, feedback-to-task). */
17
+ text?: string;
18
+ /** Parsed structured data (for predicates to inspect programmatically). */
19
+ data?: unknown;
20
+ /** Metadata (e.g. { source: "reviewer", version: 3 }). */
21
+ meta?: Record<string, unknown>;
22
+ }
23
+ export interface ArtifactStore {
24
+ get(name: string): Artifact | undefined;
25
+ set(name: string, artifact: Artifact): void;
26
+ has(name: string): boolean;
27
+ getFile(name: string): string | undefined;
28
+ getText(name: string): string | undefined;
29
+ getData<T = unknown>(name: string): T | undefined;
30
+ getMeta<T = unknown>(name: string, key: string): T | undefined;
31
+ }
32
+ /** Describes a neighboring step for whip-mode neighbor awareness. */
33
+ export type StepMeta = {
34
+ role: string;
35
+ driver: string;
36
+ displayName: string;
37
+ variant?: string;
38
+ };
39
+ export type DataFlowNeighbors = {
40
+ producers: Record<string, StepMeta>;
41
+ consumers: Record<string, StepMeta[]>;
42
+ };
43
+ /** Extract whip-mode neighbor metadata for a step (no-op when whip mode is off). */
44
+ export declare function resolveWhipNeighbors(step: {
45
+ reads: Record<string, string>;
46
+ writes: Record<string, string>;
47
+ }, ctx: StepContext): DataFlowNeighbors;
48
+ export interface StepContext {
49
+ /** Root of the session temp directory. */
50
+ readonly sessionDir: string;
51
+ /** Generic artifact store — all inter-step data lives here. */
52
+ readonly artifacts: ArtifactStore;
53
+ /** Execution state. */
54
+ sessionIds: Map<string, string>;
55
+ loopIterations: Map<string, number>;
56
+ /** Cycle-local iteration (resets on restart-loop). Used by predicates. */
57
+ loopCycle: Map<string, number>;
58
+ totalIterations: number;
59
+ nextClarificationNumber: number;
60
+ statusBar: StatusBar | undefined;
61
+ verbose: boolean;
62
+ /** Role of the last executed step (not set for skipped steps). */
63
+ previousStepRole?: BuiltinRole | "user";
64
+ /** Static consumer map keyed by store key (whip mode). */
65
+ consumerMap?: Map<string, StepMeta[]>;
66
+ /** Whether whip mode (neighbor awareness) is enabled. */
67
+ whipMode?: boolean;
68
+ }
69
+ export type FlowStep = AgentStep | UserStep | LoopStep;
70
+ /** A phase-label function that may carry a static display hint. */
71
+ export interface PhaseLabelFn {
72
+ (ctx: StepContext): string;
73
+ _displayHint?: string;
74
+ }
75
+ /** Common fields shared by all executable (non-loop) steps. */
76
+ export interface BaseStep {
77
+ id: string;
78
+ role: string;
79
+ variant?: string;
80
+ when?: (ctx: StepContext) => boolean;
81
+ whenLabel?: string;
82
+ reads: Record<string, string>;
83
+ writes: Record<string, string>;
84
+ feedbackToTask: boolean;
85
+ phaseLabel: string | PhaseLabelFn;
86
+ }
87
+ export interface AgentStep extends BaseStep {
88
+ type: "agent";
89
+ driver: string;
90
+ }
91
+ /**
92
+ * Canonical key for handler lookup.
93
+ * `"reviewer:implementation"` when variant is set, otherwise just the role.
94
+ */
95
+ export declare function handlerKey(step: BaseStep): string;
96
+ export interface UserStep extends BaseStep {
97
+ type: "user";
98
+ breakOnAccept?: boolean;
99
+ }
100
+ export interface LoopStep {
101
+ type: "loop";
102
+ id: string;
103
+ maxIterations: number;
104
+ until: (ctx: StepContext) => boolean;
105
+ untilLabel?: string;
106
+ steps: FlowStep[];
107
+ onExhausted?: UserStep;
108
+ }
109
+ export interface FlowDefinition {
110
+ name: string;
111
+ steps: FlowStep[];
112
+ }
113
+ export type StepSignal = {
114
+ kind: "continue";
115
+ } | {
116
+ kind: "restart-loop";
117
+ } | {
118
+ kind: "break-loop";
119
+ } | {
120
+ kind: "abort";
121
+ reason: string;
122
+ };
123
+ /** Retry wrapper injected into handlers by the executor. */
124
+ export type RetryFn = <T>(name: string, fn: (attempt: number) => Promise<T>) => Promise<T>;
125
+ /** Bridges the abstract artifact store and a concrete driver interface. */
126
+ export interface RoleHandler {
127
+ execute(step: BaseStep, ctx: StepContext, retry: RetryFn): Promise<StepSignal>;
128
+ }
129
+ export type RoleHandlerMap = Map<string, RoleHandler>;
130
+ interface FlowParamBase {
131
+ key: string;
132
+ label: string;
133
+ description?: string;
134
+ }
135
+ export interface DriverFlowParam extends FlowParamBase {
136
+ type: "driver";
137
+ role: BuiltinRole;
138
+ default: DriverName;
139
+ }
140
+ export interface NumberFlowParam extends FlowParamBase {
141
+ type: "number";
142
+ default: number;
143
+ min?: number;
144
+ max?: number;
145
+ }
146
+ export interface BooleanFlowParam extends FlowParamBase {
147
+ type: "boolean";
148
+ default: boolean;
149
+ }
150
+ export type FlowParam = DriverFlowParam | NumberFlowParam | BooleanFlowParam;
151
+ export type FlowParamValue = string | number | boolean;
152
+ export type FlowParamValues = Record<string, FlowParamValue>;
153
+ export interface FlowTemplate {
154
+ name: string;
155
+ params: readonly FlowParam[];
156
+ build(values: FlowParamValues): FlowDefinition;
157
+ }
158
+ export {};
159
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/flow/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ // ─── Well-Known Constants & Constrained Types ───────────────────────────
2
+ /**
3
+ * Well-known artifact name for the user's task description.
4
+ * Seeded by the orchestrator before any flow step runs;
5
+ * read by incorporateFeedback() to append clarifications.
6
+ */
7
+ export const TASK = "task";
8
+ /** Extract whip-mode neighbor metadata for a step (no-op when whip mode is off). */
9
+ export function resolveWhipNeighbors(step, ctx) {
10
+ if (!ctx.whipMode)
11
+ return { producers: {}, consumers: {} };
12
+ const producers = {};
13
+ for (const [alias, storeKey] of Object.entries(step.reads)) {
14
+ const producer = ctx.artifacts.getMeta(storeKey, "producer");
15
+ if (producer)
16
+ producers[alias] = producer;
17
+ }
18
+ const consumers = {};
19
+ for (const [alias, storeKey] of Object.entries(step.writes)) {
20
+ const stepConsumers = ctx.consumerMap?.get(storeKey);
21
+ if (stepConsumers && stepConsumers.length > 0)
22
+ consumers[alias] = stepConsumers;
23
+ }
24
+ return { producers, consumers };
25
+ }
26
+ /**
27
+ * Canonical key for handler lookup.
28
+ * `"reviewer:implementation"` when variant is set, otherwise just the role.
29
+ */
30
+ export function handlerKey(step) {
31
+ return step.variant ? `${step.role}:${step.variant}` : step.role;
32
+ }
33
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/flow/types.ts"],"names":[],"mappings":"AAEA,2EAA2E;AAE3E;;;;GAIG;AACH,MAAM,CAAC,MAAM,IAAI,GAAG,MAAe,CAAC;AAgDpC,oFAAoF;AACpF,MAAM,UAAU,oBAAoB,CAClC,IAAuE,EACvE,GAAgB;IAEhB,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAE3D,MAAM,SAAS,GAA6B,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,OAAO,CAAW,QAAQ,EAAE,UAAU,CAAC,CAAC;QACvE,IAAI,QAAQ;YAAE,SAAS,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;IAC5C,CAAC;IAED,MAAM,SAAS,GAA+B,EAAE,CAAC;IACjD,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5D,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;IAClF,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;AAClC,CAAC;AAsDD;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACnE,CAAC"}
@@ -0,0 +1,9 @@
1
+ export { showCreateFlowTui, showModifyFlowTui } from "./tui.js";
2
+ export type { FlowEditorResult } from "./tui.js";
3
+ export { validateFlowCode, patchFlowName } from "./validate.js";
4
+ export type { ValidationResult, ValidationSuccess, ValidationFailure } from "./validate.js";
5
+ export { saveFlow, loadEditableCustomFlows, checkBuiltinCollision, checkFileCollision } from "./save.js";
6
+ export type { CustomFlowEntry, CustomFlowLoadResult, SaveResult, SaveError } from "./save.js";
7
+ export { randomFlowName } from "./names.js";
8
+ export { extractCode } from "./llm.js";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flow-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACzG,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { showCreateFlowTui, showModifyFlowTui } from "./tui.js";
2
+ export { validateFlowCode, patchFlowName } from "./validate.js";
3
+ export { saveFlow, loadEditableCustomFlows, checkBuiltinCollision, checkFileCollision } from "./save.js";
4
+ export { randomFlowName } from "./names.js";
5
+ export { extractCode } from "./llm.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/flow-editor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAEhE,OAAO,EAAE,QAAQ,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAEzG,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Read the AUTHORING.md reference document as plain text.
3
+ */
4
+ export declare function loadAuthoringDoc(): string;
5
+ /**
6
+ * Read the default flow source file as plain text (for use as a starting point).
7
+ */
8
+ export declare function readDefaultFlowSource(): string;
9
+ /**
10
+ * Build a prompt for creating a new flow from scratch.
11
+ */
12
+ export declare function buildCreatePrompt(sourceCode: string, description: string, flowName: string): string;
13
+ /**
14
+ * Build a prompt for revising previously generated code.
15
+ */
16
+ export declare function buildRevisePrompt(currentCode: string, revision: string, flowName: string): string;
17
+ /**
18
+ * Build a prompt for modifying an existing custom flow.
19
+ */
20
+ export declare function buildModifyPrompt(existingCode: string, description: string, flowName: string): string;
21
+ /**
22
+ * Build a prompt for retrying after a validation error.
23
+ */
24
+ export declare function buildRetryPrompt(currentCode: string, revision: string, error: string, flowName: string): string;
25
+ /**
26
+ * Extract code from an LLM response. Handles fenced and unfenced code.
27
+ */
28
+ export declare function extractCode(response: string): string;
29
+ /**
30
+ * Generate flow code by invoking an LLM provider.
31
+ */
32
+ export declare function generateFlowCode(provider: string, prompt: string, workdir: string): Promise<string>;
33
+ //# sourceMappingURL=llm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../../src/flow-editor/llm.ts"],"names":[],"mappings":"AAYA;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAMzC;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAM9C;AAaD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,MAAM,CAeR;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,MAAM,CAkBR;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CASpD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAGjB"}
@@ -0,0 +1,137 @@
1
+ import { createRequire } from "node:module";
2
+ import { readFileSync } from "node:fs";
3
+ import { dirname, join } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { invoke } from "../providers/invoke.js";
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ const require = createRequire(import.meta.url);
8
+ let cachedAuthoringDoc;
9
+ let cachedDefaultSource;
10
+ /**
11
+ * Read the AUTHORING.md reference document as plain text.
12
+ */
13
+ export function loadAuthoringDoc() {
14
+ if (!cachedAuthoringDoc) {
15
+ const docPath = join(__dirname, "..", "flow", "custom", "AUTHORING.md");
16
+ cachedAuthoringDoc = readFileSync(require.resolve(docPath), "utf-8");
17
+ }
18
+ return cachedAuthoringDoc;
19
+ }
20
+ /**
21
+ * Read the default flow source file as plain text (for use as a starting point).
22
+ */
23
+ export function readDefaultFlowSource() {
24
+ if (!cachedDefaultSource) {
25
+ const srcPath = join(__dirname, "..", "flow", "built-in", "default.ts");
26
+ cachedDefaultSource = readFileSync(require.resolve(srcPath), "utf-8");
27
+ }
28
+ return cachedDefaultSource;
29
+ }
30
+ function buildSystemPreamble(flowName) {
31
+ return [
32
+ "You are a flow template author. Generate a complete .mjs file",
33
+ "following the FlowDSL documented below.",
34
+ "",
35
+ `IMPORTANT: The template name MUST be exactly: "${flowName}"`,
36
+ `Use this name in BOTH the template object's \`name\` field`,
37
+ `AND as the first argument to \`defineFlow("${flowName}", steps)\`.`,
38
+ ].join("\n");
39
+ }
40
+ /**
41
+ * Build a prompt for creating a new flow from scratch.
42
+ */
43
+ export function buildCreatePrompt(sourceCode, description, flowName) {
44
+ return [
45
+ buildSystemPreamble(flowName),
46
+ "",
47
+ "=== AUTHORING REFERENCE ===",
48
+ loadAuthoringDoc(),
49
+ "",
50
+ "=== STARTING FLOW SOURCE ===",
51
+ sourceCode,
52
+ "",
53
+ "=== USER REQUEST ===",
54
+ description,
55
+ "",
56
+ "Respond with ONLY the .mjs file content, wrapped in a ```javascript fence.",
57
+ ].join("\n");
58
+ }
59
+ /**
60
+ * Build a prompt for revising previously generated code.
61
+ */
62
+ export function buildRevisePrompt(currentCode, revision, flowName) {
63
+ return [
64
+ buildSystemPreamble(flowName),
65
+ "",
66
+ "=== AUTHORING REFERENCE ===",
67
+ loadAuthoringDoc(),
68
+ "",
69
+ "=== CURRENT FLOW CODE ===",
70
+ currentCode,
71
+ "",
72
+ "=== REVISION REQUEST ===",
73
+ revision,
74
+ "",
75
+ "Respond with ONLY the complete revised .mjs file content, wrapped in a ```javascript fence.",
76
+ ].join("\n");
77
+ }
78
+ /**
79
+ * Build a prompt for modifying an existing custom flow.
80
+ */
81
+ export function buildModifyPrompt(existingCode, description, flowName) {
82
+ return [
83
+ buildSystemPreamble(flowName),
84
+ "",
85
+ "=== AUTHORING REFERENCE ===",
86
+ loadAuthoringDoc(),
87
+ "",
88
+ "=== EXISTING FLOW CODE ===",
89
+ existingCode,
90
+ "",
91
+ "=== MODIFICATION REQUEST ===",
92
+ description,
93
+ "",
94
+ "Respond with ONLY the complete modified .mjs file content, wrapped in a ```javascript fence.",
95
+ ].join("\n");
96
+ }
97
+ /**
98
+ * Build a prompt for retrying after a validation error.
99
+ */
100
+ export function buildRetryPrompt(currentCode, revision, error, flowName) {
101
+ return [
102
+ buildSystemPreamble(flowName),
103
+ "",
104
+ "=== AUTHORING REFERENCE ===",
105
+ loadAuthoringDoc(),
106
+ "",
107
+ "=== CURRENT FLOW CODE (has errors) ===",
108
+ currentCode,
109
+ "",
110
+ "=== VALIDATION ERROR ===",
111
+ error,
112
+ "",
113
+ "=== USER CONTEXT ===",
114
+ revision,
115
+ "",
116
+ "Fix the validation error and respond with ONLY the complete .mjs file content, wrapped in a ```javascript fence.",
117
+ ].join("\n");
118
+ }
119
+ /**
120
+ * Extract code from an LLM response. Handles fenced and unfenced code.
121
+ */
122
+ export function extractCode(response) {
123
+ // Try to extract from ```javascript or ``` fence
124
+ const fencedMatch = response.match(/```(?:javascript|js|mjs)?\s*\n([\s\S]*?)\n```/);
125
+ if (fencedMatch)
126
+ return fencedMatch[1].trim();
127
+ // Fallback: treat entire response as code
128
+ return response.trim();
129
+ }
130
+ /**
131
+ * Generate flow code by invoking an LLM provider.
132
+ */
133
+ export async function generateFlowCode(provider, prompt, workdir) {
134
+ const response = await invoke(provider, prompt, workdir);
135
+ return extractCode(response);
136
+ }
137
+ //# sourceMappingURL=llm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llm.js","sourceRoot":"","sources":["../../src/flow-editor/llm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generate a random adjective-noun flow name (e.g. "swift-falcon").
3
+ */
4
+ export declare function randomFlowName(): string;
5
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/flow-editor/names.ts"],"names":[],"mappings":"AAcA;;GAEG;AACH,wBAAgB,cAAc,IAAI,MAAM,CAIvC"}
@@ -0,0 +1,21 @@
1
+ const ADJECTIVES = [
2
+ "swift", "bright", "calm", "bold", "keen",
3
+ "vivid", "zesty", "agile", "crisp", "deft",
4
+ "eager", "fresh", "grand", "lucid", "prime",
5
+ "sleek", "snappy", "steady", "terse", "witty",
6
+ ];
7
+ const NOUNS = [
8
+ "falcon", "river", "spark", "cedar", "ridge",
9
+ "flint", "prism", "orbit", "crest", "quill",
10
+ "forge", "grove", "haven", "nexus", "pulse",
11
+ "scope", "stone", "trail", "vault", "zenith",
12
+ ];
13
+ /**
14
+ * Generate a random adjective-noun flow name (e.g. "swift-falcon").
15
+ */
16
+ export function randomFlowName() {
17
+ const adj = ADJECTIVES[Math.floor(Math.random() * ADJECTIVES.length)];
18
+ const noun = NOUNS[Math.floor(Math.random() * NOUNS.length)];
19
+ return `${adj}-${noun}`;
20
+ }
21
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/flow-editor/names.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,GAAG;IACjB,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM;IAC1C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC3C,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO;CAC9C,CAAC;AAEF,MAAM,KAAK,GAAG;IACZ,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC5C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC3C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC7D,OAAO,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AAC1B,CAAC"}