@hypercli/gen 0.1.1

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 (306) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +24 -0
  3. package/dist/actions/communication.d.ts +201 -0
  4. package/dist/actions/communication.d.ts.map +1 -0
  5. package/dist/actions/communication.js +515 -0
  6. package/dist/actions/communication.js.map +1 -0
  7. package/dist/actions/decorator.d.ts +22 -0
  8. package/dist/actions/decorator.d.ts.map +1 -0
  9. package/dist/actions/decorator.js +110 -0
  10. package/dist/actions/decorator.js.map +1 -0
  11. package/dist/actions/executor.d.ts +85 -0
  12. package/dist/actions/executor.d.ts.map +1 -0
  13. package/dist/actions/executor.js +289 -0
  14. package/dist/actions/executor.js.map +1 -0
  15. package/dist/actions/index.d.ts +14 -0
  16. package/dist/actions/index.d.ts.map +1 -0
  17. package/dist/actions/index.js +15 -0
  18. package/dist/actions/index.js.map +1 -0
  19. package/dist/actions/parameter-resolver.d.ts +54 -0
  20. package/dist/actions/parameter-resolver.d.ts.map +1 -0
  21. package/dist/actions/parameter-resolver.js +300 -0
  22. package/dist/actions/parameter-resolver.js.map +1 -0
  23. package/dist/actions/registry.d.ts +78 -0
  24. package/dist/actions/registry.d.ts.map +1 -0
  25. package/dist/actions/registry.js +221 -0
  26. package/dist/actions/registry.js.map +1 -0
  27. package/dist/actions/types.d.ts +109 -0
  28. package/dist/actions/types.d.ts.map +1 -0
  29. package/dist/actions/types.js +31 -0
  30. package/dist/actions/types.js.map +1 -0
  31. package/dist/actions/utils.d.ts +42 -0
  32. package/dist/actions/utils.d.ts.map +1 -0
  33. package/dist/actions/utils.js +144 -0
  34. package/dist/actions/utils.js.map +1 -0
  35. package/dist/ai/ai-collector.d.ts +52 -0
  36. package/dist/ai/ai-collector.d.ts.map +1 -0
  37. package/dist/ai/ai-collector.js +64 -0
  38. package/dist/ai/ai-collector.js.map +1 -0
  39. package/dist/ai/ai-config.d.ts +230 -0
  40. package/dist/ai/ai-config.d.ts.map +1 -0
  41. package/dist/ai/ai-config.js +8 -0
  42. package/dist/ai/ai-config.js.map +1 -0
  43. package/dist/ai/ai-service.d.ts +66 -0
  44. package/dist/ai/ai-service.d.ts.map +1 -0
  45. package/dist/ai/ai-service.js +198 -0
  46. package/dist/ai/ai-service.js.map +1 -0
  47. package/dist/ai/ai-variable-resolver.d.ts +59 -0
  48. package/dist/ai/ai-variable-resolver.d.ts.map +1 -0
  49. package/dist/ai/ai-variable-resolver.js +219 -0
  50. package/dist/ai/ai-variable-resolver.js.map +1 -0
  51. package/dist/ai/context-collector.d.ts +30 -0
  52. package/dist/ai/context-collector.d.ts.map +1 -0
  53. package/dist/ai/context-collector.js +158 -0
  54. package/dist/ai/context-collector.js.map +1 -0
  55. package/dist/ai/cost-tracker.d.ts +41 -0
  56. package/dist/ai/cost-tracker.d.ts.map +1 -0
  57. package/dist/ai/cost-tracker.js +131 -0
  58. package/dist/ai/cost-tracker.js.map +1 -0
  59. package/dist/ai/env.d.ts +36 -0
  60. package/dist/ai/env.d.ts.map +1 -0
  61. package/dist/ai/env.js +100 -0
  62. package/dist/ai/env.js.map +1 -0
  63. package/dist/ai/index.d.ts +17 -0
  64. package/dist/ai/index.d.ts.map +1 -0
  65. package/dist/ai/index.js +25 -0
  66. package/dist/ai/index.js.map +1 -0
  67. package/dist/ai/model-router.d.ts +32 -0
  68. package/dist/ai/model-router.d.ts.map +1 -0
  69. package/dist/ai/model-router.js +113 -0
  70. package/dist/ai/model-router.js.map +1 -0
  71. package/dist/ai/output-validator.d.ts +24 -0
  72. package/dist/ai/output-validator.d.ts.map +1 -0
  73. package/dist/ai/output-validator.js +279 -0
  74. package/dist/ai/output-validator.js.map +1 -0
  75. package/dist/ai/prompt-assembler.d.ts +30 -0
  76. package/dist/ai/prompt-assembler.d.ts.map +1 -0
  77. package/dist/ai/prompt-assembler.js +93 -0
  78. package/dist/ai/prompt-assembler.js.map +1 -0
  79. package/dist/ai/prompt-pipeline.d.ts +63 -0
  80. package/dist/ai/prompt-pipeline.d.ts.map +1 -0
  81. package/dist/ai/prompt-pipeline.js +119 -0
  82. package/dist/ai/prompt-pipeline.js.map +1 -0
  83. package/dist/ai/prompt-template.jig +88 -0
  84. package/dist/ai/transports/api-transport.d.ts +12 -0
  85. package/dist/ai/transports/api-transport.d.ts.map +1 -0
  86. package/dist/ai/transports/api-transport.js +86 -0
  87. package/dist/ai/transports/api-transport.js.map +1 -0
  88. package/dist/ai/transports/command-transport.d.ts +20 -0
  89. package/dist/ai/transports/command-transport.d.ts.map +1 -0
  90. package/dist/ai/transports/command-transport.js +203 -0
  91. package/dist/ai/transports/command-transport.js.map +1 -0
  92. package/dist/ai/transports/index.d.ts +11 -0
  93. package/dist/ai/transports/index.d.ts.map +1 -0
  94. package/dist/ai/transports/index.js +10 -0
  95. package/dist/ai/transports/index.js.map +1 -0
  96. package/dist/ai/transports/resolve-transport.d.ts +15 -0
  97. package/dist/ai/transports/resolve-transport.d.ts.map +1 -0
  98. package/dist/ai/transports/resolve-transport.js +96 -0
  99. package/dist/ai/transports/resolve-transport.js.map +1 -0
  100. package/dist/ai/transports/stdout-transport.d.ts +14 -0
  101. package/dist/ai/transports/stdout-transport.d.ts.map +1 -0
  102. package/dist/ai/transports/stdout-transport.js +27 -0
  103. package/dist/ai/transports/stdout-transport.js.map +1 -0
  104. package/dist/ai/transports/types.d.ts +77 -0
  105. package/dist/ai/transports/types.d.ts.map +1 -0
  106. package/dist/ai/transports/types.js +8 -0
  107. package/dist/ai/transports/types.js.map +1 -0
  108. package/dist/commands/cookbook/info.d.ts +22 -0
  109. package/dist/commands/cookbook/info.d.ts.map +1 -0
  110. package/dist/commands/cookbook/info.js +217 -0
  111. package/dist/commands/cookbook/info.js.map +1 -0
  112. package/dist/commands/cookbook/list.d.ts +20 -0
  113. package/dist/commands/cookbook/list.d.ts.map +1 -0
  114. package/dist/commands/cookbook/list.js +133 -0
  115. package/dist/commands/cookbook/list.js.map +1 -0
  116. package/dist/commands/gen.d.ts +65 -0
  117. package/dist/commands/gen.d.ts.map +1 -0
  118. package/dist/commands/gen.js +478 -0
  119. package/dist/commands/gen.js.map +1 -0
  120. package/dist/commands/recipe/info.d.ts +18 -0
  121. package/dist/commands/recipe/info.d.ts.map +1 -0
  122. package/dist/commands/recipe/info.js +89 -0
  123. package/dist/commands/recipe/info.js.map +1 -0
  124. package/dist/commands/recipe/list.d.ts +29 -0
  125. package/dist/commands/recipe/list.d.ts.map +1 -0
  126. package/dist/commands/recipe/list.js +215 -0
  127. package/dist/commands/recipe/list.js.map +1 -0
  128. package/dist/commands/recipe/run.d.ts +44 -0
  129. package/dist/commands/recipe/run.d.ts.map +1 -0
  130. package/dist/commands/recipe/run.js +239 -0
  131. package/dist/commands/recipe/run.js.map +1 -0
  132. package/dist/commands/recipe/validate.d.ts +19 -0
  133. package/dist/commands/recipe/validate.d.ts.map +1 -0
  134. package/dist/commands/recipe/validate.js +66 -0
  135. package/dist/commands/recipe/validate.js.map +1 -0
  136. package/dist/discovery/generator-discovery.d.ts +130 -0
  137. package/dist/discovery/generator-discovery.d.ts.map +1 -0
  138. package/dist/discovery/generator-discovery.js +674 -0
  139. package/dist/discovery/generator-discovery.js.map +1 -0
  140. package/dist/discovery/index.d.ts +8 -0
  141. package/dist/discovery/index.d.ts.map +1 -0
  142. package/dist/discovery/index.js +7 -0
  143. package/dist/discovery/index.js.map +1 -0
  144. package/dist/hooks/command-not-found.d.ts +18 -0
  145. package/dist/hooks/command-not-found.d.ts.map +1 -0
  146. package/dist/hooks/command-not-found.js +182 -0
  147. package/dist/hooks/command-not-found.js.map +1 -0
  148. package/dist/hooks/suggest.d.ts +13 -0
  149. package/dist/hooks/suggest.d.ts.map +1 -0
  150. package/dist/hooks/suggest.js +28 -0
  151. package/dist/hooks/suggest.js.map +1 -0
  152. package/dist/index.d.ts +2 -0
  153. package/dist/index.d.ts.map +1 -0
  154. package/dist/index.js +3 -0
  155. package/dist/index.js.map +1 -0
  156. package/dist/lib/base-command.d.ts +26 -0
  157. package/dist/lib/base-command.d.ts.map +1 -0
  158. package/dist/lib/base-command.js +24 -0
  159. package/dist/lib/base-command.js.map +1 -0
  160. package/dist/lib/flags.d.ts +33 -0
  161. package/dist/lib/flags.d.ts.map +1 -0
  162. package/dist/lib/flags.js +64 -0
  163. package/dist/lib/flags.js.map +1 -0
  164. package/dist/ops/add.d.ts +4 -0
  165. package/dist/ops/add.d.ts.map +1 -0
  166. package/dist/ops/add.js +85 -0
  167. package/dist/ops/add.js.map +1 -0
  168. package/dist/ops/inject.d.ts +4 -0
  169. package/dist/ops/inject.d.ts.map +1 -0
  170. package/dist/ops/inject.js +28 -0
  171. package/dist/ops/inject.js.map +1 -0
  172. package/dist/ops/injector.d.ts +4 -0
  173. package/dist/ops/injector.d.ts.map +1 -0
  174. package/dist/ops/injector.js +68 -0
  175. package/dist/ops/injector.js.map +1 -0
  176. package/dist/ops/result.d.ts +3 -0
  177. package/dist/ops/result.d.ts.map +1 -0
  178. package/dist/ops/result.js +8 -0
  179. package/dist/ops/result.js.map +1 -0
  180. package/dist/prompts/interactive-prompts.d.ts +152 -0
  181. package/dist/prompts/interactive-prompts.d.ts.map +1 -0
  182. package/dist/prompts/interactive-prompts.js +574 -0
  183. package/dist/prompts/interactive-prompts.js.map +1 -0
  184. package/dist/recipe-engine/group-executor.d.ts +97 -0
  185. package/dist/recipe-engine/group-executor.d.ts.map +1 -0
  186. package/dist/recipe-engine/group-executor.js +293 -0
  187. package/dist/recipe-engine/group-executor.js.map +1 -0
  188. package/dist/recipe-engine/index.d.ts +112 -0
  189. package/dist/recipe-engine/index.d.ts.map +1 -0
  190. package/dist/recipe-engine/index.js +223 -0
  191. package/dist/recipe-engine/index.js.map +1 -0
  192. package/dist/recipe-engine/output-evaluator.d.ts +28 -0
  193. package/dist/recipe-engine/output-evaluator.d.ts.map +1 -0
  194. package/dist/recipe-engine/output-evaluator.js +78 -0
  195. package/dist/recipe-engine/output-evaluator.js.map +1 -0
  196. package/dist/recipe-engine/recipe-engine.d.ts +227 -0
  197. package/dist/recipe-engine/recipe-engine.d.ts.map +1 -0
  198. package/dist/recipe-engine/recipe-engine.js +1036 -0
  199. package/dist/recipe-engine/recipe-engine.js.map +1 -0
  200. package/dist/recipe-engine/step-executor.d.ts +172 -0
  201. package/dist/recipe-engine/step-executor.d.ts.map +1 -0
  202. package/dist/recipe-engine/step-executor.js +802 -0
  203. package/dist/recipe-engine/step-executor.js.map +1 -0
  204. package/dist/recipe-engine/tools/action-tool.d.ts +103 -0
  205. package/dist/recipe-engine/tools/action-tool.d.ts.map +1 -0
  206. package/dist/recipe-engine/tools/action-tool.js +473 -0
  207. package/dist/recipe-engine/tools/action-tool.js.map +1 -0
  208. package/dist/recipe-engine/tools/ai-tool.d.ts +26 -0
  209. package/dist/recipe-engine/tools/ai-tool.d.ts.map +1 -0
  210. package/dist/recipe-engine/tools/ai-tool.js +233 -0
  211. package/dist/recipe-engine/tools/ai-tool.js.map +1 -0
  212. package/dist/recipe-engine/tools/base.d.ts +214 -0
  213. package/dist/recipe-engine/tools/base.d.ts.map +1 -0
  214. package/dist/recipe-engine/tools/base.js +397 -0
  215. package/dist/recipe-engine/tools/base.js.map +1 -0
  216. package/dist/recipe-engine/tools/codemod-tool.d.ts +130 -0
  217. package/dist/recipe-engine/tools/codemod-tool.d.ts.map +1 -0
  218. package/dist/recipe-engine/tools/codemod-tool.js +786 -0
  219. package/dist/recipe-engine/tools/codemod-tool.js.map +1 -0
  220. package/dist/recipe-engine/tools/ensure-dirs-tool.d.ts +21 -0
  221. package/dist/recipe-engine/tools/ensure-dirs-tool.d.ts.map +1 -0
  222. package/dist/recipe-engine/tools/ensure-dirs-tool.js +130 -0
  223. package/dist/recipe-engine/tools/ensure-dirs-tool.js.map +1 -0
  224. package/dist/recipe-engine/tools/index.d.ts +126 -0
  225. package/dist/recipe-engine/tools/index.d.ts.map +1 -0
  226. package/dist/recipe-engine/tools/index.js +290 -0
  227. package/dist/recipe-engine/tools/index.js.map +1 -0
  228. package/dist/recipe-engine/tools/install-tool.d.ts +20 -0
  229. package/dist/recipe-engine/tools/install-tool.d.ts.map +1 -0
  230. package/dist/recipe-engine/tools/install-tool.js +194 -0
  231. package/dist/recipe-engine/tools/install-tool.js.map +1 -0
  232. package/dist/recipe-engine/tools/parallel-tool.d.ts +21 -0
  233. package/dist/recipe-engine/tools/parallel-tool.d.ts.map +1 -0
  234. package/dist/recipe-engine/tools/parallel-tool.js +134 -0
  235. package/dist/recipe-engine/tools/parallel-tool.js.map +1 -0
  236. package/dist/recipe-engine/tools/patch-tool.d.ts +21 -0
  237. package/dist/recipe-engine/tools/patch-tool.d.ts.map +1 -0
  238. package/dist/recipe-engine/tools/patch-tool.js +248 -0
  239. package/dist/recipe-engine/tools/patch-tool.js.map +1 -0
  240. package/dist/recipe-engine/tools/prompt-tool.d.ts +25 -0
  241. package/dist/recipe-engine/tools/prompt-tool.d.ts.map +1 -0
  242. package/dist/recipe-engine/tools/prompt-tool.js +162 -0
  243. package/dist/recipe-engine/tools/prompt-tool.js.map +1 -0
  244. package/dist/recipe-engine/tools/query-tool.d.ts +21 -0
  245. package/dist/recipe-engine/tools/query-tool.d.ts.map +1 -0
  246. package/dist/recipe-engine/tools/query-tool.js +249 -0
  247. package/dist/recipe-engine/tools/query-tool.js.map +1 -0
  248. package/dist/recipe-engine/tools/recipe-tool.d.ts +103 -0
  249. package/dist/recipe-engine/tools/recipe-tool.d.ts.map +1 -0
  250. package/dist/recipe-engine/tools/recipe-tool.js +617 -0
  251. package/dist/recipe-engine/tools/recipe-tool.js.map +1 -0
  252. package/dist/recipe-engine/tools/registry.d.ts +151 -0
  253. package/dist/recipe-engine/tools/registry.d.ts.map +1 -0
  254. package/dist/recipe-engine/tools/registry.js +244 -0
  255. package/dist/recipe-engine/tools/registry.js.map +1 -0
  256. package/dist/recipe-engine/tools/sequence-tool.d.ts +22 -0
  257. package/dist/recipe-engine/tools/sequence-tool.d.ts.map +1 -0
  258. package/dist/recipe-engine/tools/sequence-tool.js +122 -0
  259. package/dist/recipe-engine/tools/sequence-tool.js.map +1 -0
  260. package/dist/recipe-engine/tools/shell-tool.d.ts +25 -0
  261. package/dist/recipe-engine/tools/shell-tool.d.ts.map +1 -0
  262. package/dist/recipe-engine/tools/shell-tool.js +149 -0
  263. package/dist/recipe-engine/tools/shell-tool.js.map +1 -0
  264. package/dist/recipe-engine/tools/template-tool.d.ts +88 -0
  265. package/dist/recipe-engine/tools/template-tool.d.ts.map +1 -0
  266. package/dist/recipe-engine/tools/template-tool.js +613 -0
  267. package/dist/recipe-engine/tools/template-tool.js.map +1 -0
  268. package/dist/recipe-engine/types.d.ts +963 -0
  269. package/dist/recipe-engine/types.d.ts.map +1 -0
  270. package/dist/recipe-engine/types.js +94 -0
  271. package/dist/recipe-engine/types.js.map +1 -0
  272. package/dist/template-engines/ai-tags.d.ts +26 -0
  273. package/dist/template-engines/ai-tags.d.ts.map +1 -0
  274. package/dist/template-engines/ai-tags.js +233 -0
  275. package/dist/template-engines/ai-tags.js.map +1 -0
  276. package/dist/template-engines/index.d.ts +8 -0
  277. package/dist/template-engines/index.d.ts.map +1 -0
  278. package/dist/template-engines/index.js +8 -0
  279. package/dist/template-engines/index.js.map +1 -0
  280. package/dist/template-engines/jig-engine.d.ts +47 -0
  281. package/dist/template-engines/jig-engine.d.ts.map +1 -0
  282. package/dist/template-engines/jig-engine.js +173 -0
  283. package/dist/template-engines/jig-engine.js.map +1 -0
  284. package/dist/utils/coerce-value.d.ts +7 -0
  285. package/dist/utils/coerce-value.d.ts.map +1 -0
  286. package/dist/utils/coerce-value.js +18 -0
  287. package/dist/utils/coerce-value.js.map +1 -0
  288. package/dist/utils/diff.d.ts +8 -0
  289. package/dist/utils/diff.d.ts.map +1 -0
  290. package/dist/utils/diff.js +10 -0
  291. package/dist/utils/diff.js.map +1 -0
  292. package/dist/utils/global-packages.d.ts +11 -0
  293. package/dist/utils/global-packages.d.ts.map +1 -0
  294. package/dist/utils/global-packages.js +88 -0
  295. package/dist/utils/global-packages.js.map +1 -0
  296. package/dist/utils/pager.d.ts +6 -0
  297. package/dist/utils/pager.d.ts.map +1 -0
  298. package/dist/utils/pager.js +41 -0
  299. package/dist/utils/pager.js.map +1 -0
  300. package/help/cookbook/info.md +35 -0
  301. package/help/cookbook/list.md +37 -0
  302. package/help/gen.md +26 -0
  303. package/help/recipe/run.md +52 -0
  304. package/help/recipe/validate.md +51 -0
  305. package/oclif.manifest.json +580 -0
  306. package/package.json +120 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patch-tool.js","sourceRoot":"","sources":["../../../src/recipe-engine/tools/patch-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAQ7B,OAAO,EAAE,IAAI,EAA6B,MAAM,WAAW,CAAC;AAE5D;;GAEG;AACH,SAAS,YAAY,CAAC,QAAgB;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,QAAQ,GAAG,EAAE,CAAC;QACb,KAAK,OAAO;YACX,OAAO,MAAM,CAAC;QACf,KAAK,MAAM,CAAC;QACZ,KAAK,OAAO;YACX,OAAO,MAAM,CAAC;QACf,KAAK,OAAO;YACX,OAAO,MAAM,CAAC;QACf;YACC,OAAO,SAAS,CAAC;IACnB,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,MAA2B,EAAE,MAA2B;IAC1E,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,IACC,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YACtB,MAAM,KAAK,IAAI;YACf,OAAO,MAAM,KAAK,QAAQ;YAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EACrB,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;QACtB,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,SAAS,CAAC,OAAe,EAAE,MAAc;IACvD,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YACvC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,IAAI,CAAC;gBACJ,gEAAgE;gBAChE,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAC5C,OAAO,KAAK,CAAC,OAAO,CAAwB,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACR,MAAM,IAAI,KAAK,CACd,mFAAmF,CACnF,CAAC;YACH,CAAC;QACF,CAAC;QACD;YACC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;AACF,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,aAAa,CAC3B,IAAyB,EACzB,MAAc,EACd,MAAc;IAEd,QAAQ,MAAM,EAAE,CAAC;QAChB,KAAK,MAAM;YACV,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClD,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACb,IAAI,CAAC;gBACJ,gEAAgE;gBAChE,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;gBAChD,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YAC/B,CAAC;YAAC,MAAM,CAAC;gBACR,MAAM,IAAI,KAAK,CACd,yFAAyF,CACzF,CAAC;YACH,CAAC;QACF,CAAC;QACD;YACC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;IACnD,CAAC;AACF,CAAC;AAED,MAAM,OAAO,SAAU,SAAQ,IAAe;IAC7C,YAAY,IAAI,GAAG,YAAY,EAAE,UAA+B,EAAE;QACjE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/B,CAAC;IAES,KAAK,CAAC,UAAU,CAAC,IAAe,EAAE,OAAoB;QAC/D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,WAAW,GAAa,EAAE,CAAC;QAEjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtC,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChF,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAClD,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC1B,MAAM,CAAC,IAAI,CAAC,6BAA6B,IAAI,CAAC,IAAI,iCAAiC,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,MAAM,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,oCAAoC,CAAC,CAAC;QAChF,CAAC;QAED,OAAO;YACN,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;YAC5B,MAAM;YACN,QAAQ;YACR,WAAW;YACX,sBAAsB,EAAE,GAAG;YAC3B,oBAAoB,EAAE;gBACrB,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;gBACvB,IAAI,EAAE,IAAI;gBACV,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC;aACZ;SACD,CAAC;IACH,CAAC;IAES,KAAK,CAAC,SAAS,CACxB,IAAe,EACf,OAAoB,EACpB,OAA8B;QAE9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAE3C,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;YAChC,MAAM,eAAe,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;YAErD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,IAAI,iCAAiC,CAAC,CAAC;YAC1F,CAAC;YAED,IAAI,QAAQ,GAAwB,EAAE,CAAC;YACvC,IAAI,OAAO,GAAG,KAAK,CAAC;YAEpB,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,QAAQ,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC7C,CAAC;iBAAM,IAAI,eAAe,EAAE,CAAC;gBAC5B,OAAO,GAAG,IAAI,CAAC;gBACf,iCAAiC;gBACjC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;iBAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,6BAA6B,CAAC,CAAC;YAC5E,CAAC;YAED,kCAAkC;YAClC,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;YAEnF,aAAa;YACb,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAElD,aAAa;YACb,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1C,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;gBAC/D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAyB;gBACzC,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM;gBACN,OAAO;gBACP,MAAM,EAAE,aAAa;aACrB,CAAC;YAEF,OAAO;gBACN,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,QAAQ,EAAE,OAAO;gBACjB,SAAS;gBACT,OAAO;gBACP,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;gBACjD,UAAU,EAAE,CAAC;gBACb,qBAAqB,EAAE,IAAI;gBAC3B,UAAU,EAAE,WAAW;gBACvB,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;gBAC/C,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;gBAC9C,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;aAC5C,CAAC;QACH,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO;gBACN,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,QAAQ,EAAE,OAAO;gBACjB,SAAS;gBACT,OAAO;gBACP,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE;gBACjD,UAAU,EAAE,CAAC;gBACb,qBAAqB,EAAE,IAAI;gBAC3B,KAAK,EAAE;oBACN,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,IAAI,EAAE,cAAc;oBACpB,KAAK,EAAE,KAAK;iBACZ;aACD,CAAC;QACH,CAAC;IACF,CAAC;IAEO,wBAAwB,CAAC,GAAQ,EAAE,SAA8B;QACxE,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;gBACvD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;gBAClF,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC;YAC/D,CAAC,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC7C,MAAM,MAAM,GAAwB,EAAE,CAAC;YACvC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC7D,CAAC;YACD,OAAO,MAAM,CAAC;QACf,CAAC;QACD,OAAO,GAAG,CAAC;IACZ,CAAC;CACD;AAED,MAAM,OAAO,gBAAgB;IAC5B,MAAM,CAAC,IAAI,GAAG,YAAY,EAAE,UAA+B,EAAE;QAC5D,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,WAAW;QACV,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,MAA2B;QACzC,OAAO;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,EAAE;YACV,QAAQ,EAAE,EAAE;YACZ,WAAW,EAAE,EAAE;SACf,CAAC;IACH,CAAC;CACD;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Prompt Tool Implementation for Recipe Step System
3
+ *
4
+ * This tool enables interactive user prompts within recipe execution steps.
5
+ * It integrates with the interactive prompt system to collect user input
6
+ * and store it in execution context variables.
7
+ */
8
+ import type { PromptStep, StepContext, StepExecutionOptions, StepResult } from "#recipe-engine/types";
9
+ import { Tool, type ToolValidationResult } from "./base.js";
10
+ export declare class PromptTool extends Tool<PromptStep> {
11
+ constructor(name?: string, options?: Record<string, any>);
12
+ protected onValidate(step: PromptStep, context: StepContext): Promise<ToolValidationResult>;
13
+ protected onExecute(step: PromptStep, context: StepContext, options?: StepExecutionOptions): Promise<StepResult>;
14
+ private createResult;
15
+ private mapPromptType;
16
+ private mapOptions;
17
+ private createValidator;
18
+ }
19
+ export declare class PromptToolFactory {
20
+ create(name?: string, options?: Record<string, any>): PromptTool;
21
+ getToolType(): "prompt";
22
+ validateConfig(config: Record<string, any>): ToolValidationResult;
23
+ }
24
+ export declare const promptToolFactory: PromptToolFactory;
25
+ //# sourceMappingURL=prompt-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-tool.d.ts","sourceRoot":"","sources":["../../../src/recipe-engine/tools/prompt-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAEX,UAAU,EACV,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAE5D,qBAAa,UAAW,SAAQ,IAAI,CAAC,UAAU,CAAC;gBACnC,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;cAInD,UAAU,CACzB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC;cA4BhB,SAAS,CACxB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC;IA6DtB,OAAO,CAAC,YAAY;IA2BpB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,eAAe;CAYvB;AAED,qBAAa,iBAAiB;IAC7B,MAAM,CAAC,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,UAAU;IAI3E,WAAW,IAAI,QAAQ;IAIvB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB;CAQjE;AAED,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * Prompt Tool Implementation for Recipe Step System
3
+ *
4
+ * This tool enables interactive user prompts within recipe execution steps.
5
+ * It integrates with the interactive prompt system to collect user input
6
+ * and store it in execution context variables.
7
+ */
8
+ import { performInteractivePrompting } from "#prompts/interactive-prompts";
9
+ import { Tool } from "./base.js";
10
+ export class PromptTool extends Tool {
11
+ constructor(name = "prompt-tool", options = {}) {
12
+ super("prompt", name, options);
13
+ }
14
+ async onValidate(step, context) {
15
+ const errors = [];
16
+ if (!step.variable) {
17
+ errors.push("Target variable name is required");
18
+ }
19
+ if (step.promptType === "select" || step.promptType === "multiselect") {
20
+ if (!step.options || (Array.isArray(step.options) && step.options.length === 0)) {
21
+ errors.push(`Options are required for ${step.promptType} prompt`);
22
+ }
23
+ }
24
+ return {
25
+ isValid: errors.length === 0,
26
+ errors,
27
+ warnings: [],
28
+ suggestions: [],
29
+ estimatedExecutionTime: 0, // Interactive time depends on user
30
+ resourceRequirements: {
31
+ memory: 0,
32
+ disk: 0,
33
+ network: false,
34
+ processes: 0,
35
+ },
36
+ };
37
+ }
38
+ async onExecute(step, context, options) {
39
+ const startTime = new Date();
40
+ this.debug("Executing prompt step: %s (variable: %s)", step.name, step.variable);
41
+ try {
42
+ // In non-interactive mode or dry-run, use default value if available
43
+ if (options?.dryRun || process.env.CI || process.env.INTERACTIVE === "false") {
44
+ const value = step.default;
45
+ this.debug("Using default value in non-interactive/dry-run mode: %o", value);
46
+ // Update context variables
47
+ context.variables[step.variable] = value;
48
+ return this.createResult(step, value, startTime, "completed");
49
+ }
50
+ // Convert step configuration to prompt configuration
51
+ const promptConfig = {
52
+ type: this.mapPromptType(step.promptType),
53
+ name: step.variable,
54
+ message: step.message || `Enter value for ${step.variable}`,
55
+ default: step.default,
56
+ choices: this.mapOptions(step.options),
57
+ validate: this.createValidator(step.validate),
58
+ };
59
+ // Execute prompt
60
+ // Logger in context is ActionLogger which has info/warn/error but not log
61
+ // We can adapt it or just pass undefined if logger shape doesn't match
62
+ const loggerAdapter = context.logger
63
+ ? { log: (msg) => context.logger?.info(msg) }
64
+ : undefined;
65
+ const result = await performInteractivePrompting([promptConfig], loggerAdapter);
66
+ const value = result[step.variable];
67
+ this.debug("Prompt completed, value: %o", value);
68
+ // Update context variables
69
+ context.variables[step.variable] = value;
70
+ return this.createResult(step, value, startTime, "completed");
71
+ }
72
+ catch (error) {
73
+ const endTime = new Date();
74
+ return {
75
+ status: "failed",
76
+ stepName: step.name,
77
+ toolType: "prompt",
78
+ startTime,
79
+ endTime,
80
+ duration: endTime.getTime() - startTime.getTime(),
81
+ retryCount: 0,
82
+ dependenciesSatisfied: true,
83
+ error: {
84
+ message: error.message,
85
+ code: "PROMPT_EXECUTION_ERROR",
86
+ cause: error,
87
+ },
88
+ };
89
+ }
90
+ }
91
+ createResult(step, value, startTime, status) {
92
+ const endTime = new Date();
93
+ return {
94
+ status,
95
+ stepName: step.name,
96
+ toolType: "prompt",
97
+ startTime,
98
+ endTime,
99
+ duration: endTime.getTime() - startTime.getTime(),
100
+ retryCount: 0,
101
+ dependenciesSatisfied: true,
102
+ toolResult: {
103
+ variable: step.variable,
104
+ value,
105
+ },
106
+ output: {
107
+ variable: step.variable,
108
+ value,
109
+ },
110
+ };
111
+ }
112
+ mapPromptType(type) {
113
+ switch (type) {
114
+ case "select":
115
+ return "list";
116
+ case "multiselect":
117
+ return "multiselect"; // assuming supported by prompt tool, otherwise list
118
+ case "confirm":
119
+ return "confirm";
120
+ default:
121
+ return "input";
122
+ }
123
+ }
124
+ mapOptions(options) {
125
+ if (!options)
126
+ return undefined;
127
+ if (Array.isArray(options) && typeof options[0] === "string") {
128
+ return options;
129
+ }
130
+ // Extract values if objects
131
+ return options.map((o) => o.value);
132
+ }
133
+ createValidator(validate) {
134
+ if (!validate)
135
+ return undefined;
136
+ // Support regex pattern validation
137
+ if (validate.startsWith("/") && validate.endsWith("/")) {
138
+ const pattern = validate.slice(1, -1);
139
+ const regex = new RegExp(pattern);
140
+ return (input) => regex.test(String(input)) || "Invalid format";
141
+ }
142
+ return undefined;
143
+ }
144
+ }
145
+ export class PromptToolFactory {
146
+ create(name = "prompt-tool", options = {}) {
147
+ return new PromptTool(name, options);
148
+ }
149
+ getToolType() {
150
+ return "prompt";
151
+ }
152
+ validateConfig(config) {
153
+ return {
154
+ isValid: true,
155
+ errors: [],
156
+ warnings: [],
157
+ suggestions: [],
158
+ };
159
+ }
160
+ }
161
+ export const promptToolFactory = new PromptToolFactory();
162
+ //# sourceMappingURL=prompt-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-tool.js","sourceRoot":"","sources":["../../../src/recipe-engine/tools/prompt-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Query Tool Implementation for Recipe Step System
3
+ *
4
+ * Reads structured data files (JSON, YAML, TOML, .env) and evaluates
5
+ * dot-path checks or expressions against them. Results can be exported
6
+ * to recipe variables for use in subsequent steps.
7
+ */
8
+ import type { QueryStep, StepContext, StepExecutionOptions, StepResult } from "#recipe-engine/types";
9
+ import { Tool, type ToolValidationResult } from "./base.js";
10
+ export declare class QueryTool extends Tool<QueryStep> {
11
+ constructor(name?: string, options?: Record<string, any>);
12
+ protected onValidate(step: QueryStep, context: StepContext): Promise<ToolValidationResult>;
13
+ protected onExecute(step: QueryStep, context: StepContext, options?: StepExecutionOptions): Promise<StepResult>;
14
+ }
15
+ export declare class QueryToolFactory {
16
+ create(name?: string, options?: Record<string, any>): QueryTool;
17
+ getToolType(): "query";
18
+ validateConfig(config: Record<string, any>): ToolValidationResult;
19
+ }
20
+ export declare const queryToolFactory: QueryToolFactory;
21
+ //# sourceMappingURL=query-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tool.d.ts","sourceRoot":"","sources":["../../../src/recipe-engine/tools/query-tool.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAEX,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,UAAU,EACV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAgG5D,qBAAa,SAAU,SAAQ,IAAI,CAAC,SAAS,CAAC;gBACjC,IAAI,SAAe,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;cAIlD,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC;cAkDhF,SAAS,CACxB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC;CA8FtB;AAED,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,IAAI,SAAe,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,SAAS;IAIzE,WAAW,IAAI,OAAO;IAItB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB;CAQjE;AAED,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
@@ -0,0 +1,249 @@
1
+ /**
2
+ * Query Tool Implementation for Recipe Step System
3
+ *
4
+ * Reads structured data files (JSON, YAML, TOML, .env) and evaluates
5
+ * dot-path checks or expressions against them. Results can be exported
6
+ * to recipe variables for use in subsequent steps.
7
+ */
8
+ import fs from "node:fs";
9
+ import path from "node:path";
10
+ import { Tool } from "./base.js";
11
+ /**
12
+ * Auto-detect file format from extension
13
+ */
14
+ function detectFormat(filePath) {
15
+ const ext = path.extname(filePath).toLowerCase();
16
+ switch (ext) {
17
+ case ".json":
18
+ return "json";
19
+ case ".yml":
20
+ case ".yaml":
21
+ return "yaml";
22
+ case ".toml":
23
+ return "toml";
24
+ case ".env":
25
+ return "env";
26
+ default:
27
+ return undefined;
28
+ }
29
+ }
30
+ /**
31
+ * Parse a .env file into a flat key-value record
32
+ */
33
+ function parseEnvFile(content) {
34
+ const result = {};
35
+ for (const line of content.split("\n")) {
36
+ const trimmed = line.trim();
37
+ if (!trimmed || trimmed.startsWith("#"))
38
+ continue;
39
+ const eqIndex = trimmed.indexOf("=");
40
+ if (eqIndex === -1)
41
+ continue;
42
+ const key = trimmed.slice(0, eqIndex).trim();
43
+ let value = trimmed.slice(eqIndex + 1).trim();
44
+ // Strip surrounding quotes
45
+ if ((value.startsWith('"') && value.endsWith('"')) ||
46
+ (value.startsWith("'") && value.endsWith("'"))) {
47
+ value = value.slice(1, -1);
48
+ }
49
+ result[key] = value;
50
+ }
51
+ return result;
52
+ }
53
+ /**
54
+ * Resolve a dot-path against an object.
55
+ * Supports keys with dots/special chars via bracket-like segments if needed,
56
+ * but the primary use case is simple dot-separated paths like "dependencies.drizzle-orm".
57
+ */
58
+ function resolveDotPath(data, dotPath) {
59
+ const segments = dotPath.split(".");
60
+ let current = data;
61
+ for (const segment of segments) {
62
+ if (current === null || typeof current !== "object") {
63
+ return { exists: false, value: undefined };
64
+ }
65
+ if (!(segment in current)) {
66
+ return { exists: false, value: undefined };
67
+ }
68
+ current = current[segment];
69
+ }
70
+ return { exists: true, value: current };
71
+ }
72
+ /**
73
+ * Parse file content based on format
74
+ */
75
+ async function parseFile(content, format) {
76
+ switch (format) {
77
+ case "json":
78
+ return JSON.parse(content);
79
+ case "yaml": {
80
+ const { parse } = await import("yaml");
81
+ return parse(content);
82
+ }
83
+ case "toml": {
84
+ // Use a dynamic import; TOML parsing is optional
85
+ try {
86
+ // @ts-ignore -- optional dependency, only needed for TOML files
87
+ const { parse } = await import("smol-toml");
88
+ return parse(content);
89
+ }
90
+ catch {
91
+ throw new Error('TOML parsing requires the "smol-toml" package. Install it with: bun add smol-toml');
92
+ }
93
+ }
94
+ case "env":
95
+ return parseEnvFile(content);
96
+ default:
97
+ throw new Error(`Unsupported format: ${format}`);
98
+ }
99
+ }
100
+ export class QueryTool extends Tool {
101
+ constructor(name = "query-tool", options = {}) {
102
+ super("query", name, options);
103
+ }
104
+ async onValidate(step, context) {
105
+ const errors = [];
106
+ const warnings = [];
107
+ const suggestions = [];
108
+ if (!step.file) {
109
+ errors.push("File path is required");
110
+ }
111
+ if (!step.checks && !step.expression) {
112
+ errors.push('Either "checks" or "expression" must be specified');
113
+ }
114
+ if (step.checks && step.expression) {
115
+ warnings.push('Both "checks" and "expression" are specified; both will be evaluated');
116
+ }
117
+ if (step.checks) {
118
+ for (let i = 0; i < step.checks.length; i++) {
119
+ const check = step.checks[i];
120
+ if (!check.path) {
121
+ errors.push(`Check at index ${i} must have a "path"`);
122
+ }
123
+ if (!check.export && !check.exportExists) {
124
+ warnings.push(`Check at index ${i} has no "export" or "exportExists" — result will be discarded`);
125
+ }
126
+ }
127
+ }
128
+ if (step.format && !["json", "yaml", "toml", "env"].includes(step.format)) {
129
+ errors.push(`Unsupported format: ${step.format}. Must be one of: json, yaml, toml, env`);
130
+ }
131
+ return {
132
+ isValid: errors.length === 0,
133
+ errors,
134
+ warnings,
135
+ suggestions,
136
+ estimatedExecutionTime: 100,
137
+ resourceRequirements: {
138
+ memory: 5 * 1024 * 1024,
139
+ disk: 0,
140
+ network: false,
141
+ processes: 0,
142
+ },
143
+ };
144
+ }
145
+ async onExecute(step, context, options) {
146
+ const startTime = new Date();
147
+ this.debug("Querying file: %s", step.file);
148
+ try {
149
+ const filePath = path.resolve(context.projectRoot, step.file);
150
+ const format = step.format || detectFormat(step.file);
151
+ if (!format) {
152
+ throw new Error(`Cannot detect format for "${step.file}". Specify "format" explicitly.`);
153
+ }
154
+ if (!fs.existsSync(filePath)) {
155
+ throw new Error(`File not found: ${step.file}`);
156
+ }
157
+ const content = fs.readFileSync(filePath, "utf-8");
158
+ const data = await parseFile(content, format);
159
+ const queryResult = {
160
+ file: step.file,
161
+ format,
162
+ };
163
+ const outputVars = {};
164
+ // Evaluate checks
165
+ if (step.checks) {
166
+ queryResult.checks = [];
167
+ for (const check of step.checks) {
168
+ const resolved = resolveDotPath(data, check.path);
169
+ queryResult.checks.push({
170
+ path: check.path,
171
+ exists: resolved.exists,
172
+ value: resolved.value,
173
+ });
174
+ if (check.export) {
175
+ outputVars[check.export] = resolved.value;
176
+ }
177
+ if (check.exportExists) {
178
+ outputVars[check.exportExists] =
179
+ resolved.exists && resolved.value !== null && resolved.value !== false;
180
+ }
181
+ }
182
+ }
183
+ // Evaluate expression
184
+ if (step.expression) {
185
+ try {
186
+ const func = new Function("data", `return ${step.expression}`);
187
+ queryResult.value = func(data);
188
+ queryResult.expression = step.expression;
189
+ }
190
+ catch (err) {
191
+ throw new Error(`Expression evaluation failed: ${err.message}`);
192
+ }
193
+ }
194
+ const endTime = new Date();
195
+ return {
196
+ status: "completed",
197
+ stepName: step.name,
198
+ toolType: "query",
199
+ startTime,
200
+ endTime,
201
+ duration: endTime.getTime() - startTime.getTime(),
202
+ retryCount: 0,
203
+ dependenciesSatisfied: true,
204
+ toolResult: queryResult,
205
+ output: Object.keys(outputVars).length > 0
206
+ ? outputVars
207
+ : queryResult.value !== undefined
208
+ ? { value: queryResult.value }
209
+ : undefined,
210
+ };
211
+ }
212
+ catch (error) {
213
+ const endTime = new Date();
214
+ return {
215
+ status: "failed",
216
+ stepName: step.name,
217
+ toolType: "query",
218
+ startTime,
219
+ endTime,
220
+ duration: endTime.getTime() - startTime.getTime(),
221
+ retryCount: 0,
222
+ dependenciesSatisfied: true,
223
+ error: {
224
+ message: error.message,
225
+ code: "QUERY_FAILED",
226
+ cause: error,
227
+ },
228
+ };
229
+ }
230
+ }
231
+ }
232
+ export class QueryToolFactory {
233
+ create(name = "query-tool", options = {}) {
234
+ return new QueryTool(name, options);
235
+ }
236
+ getToolType() {
237
+ return "query";
238
+ }
239
+ validateConfig(config) {
240
+ return {
241
+ isValid: true,
242
+ errors: [],
243
+ warnings: [],
244
+ suggestions: [],
245
+ };
246
+ }
247
+ }
248
+ export const queryToolFactory = new QueryToolFactory();
249
+ //# sourceMappingURL=query-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-tool.js","sourceRoot":"","sources":["../../../src/recipe-engine/tools/query-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Recipe Tool Implementation for Recipe Step System
3
+ *
4
+ * This tool handles recipe composition by loading and executing sub-recipes as
5
+ * orchestrated components. It replaces complex inheritance systems with simple
6
+ * execution-based composition, making recipe systems intuitive and powerful.
7
+ *
8
+ * Key Features:
9
+ * - Recipe discovery from multiple sources (local, npm, GitHub, URLs)
10
+ * - Variable inheritance and override patterns
11
+ * - Sub-recipe execution with proper context isolation
12
+ * - Result aggregation and error handling
13
+ * - Circular dependency detection
14
+ * - Recipe caching for performance
15
+ * - Variable mapping and transformation
16
+ */
17
+ import { type RecipeStep, type StepContext, type StepExecutionOptions, type StepResult } from "#recipe-engine/types";
18
+ import { Tool, type ToolValidationResult } from "./base.js";
19
+ /**
20
+ * Recipe Tool for processing recipe composition in the Recipe Step System
21
+ *
22
+ * This tool implements the core insight that composition is simpler than inheritance.
23
+ * Instead of complex configuration merging and template inheritance, recipes are
24
+ * executed as orchestrated steps that can call other recipes with clear variable
25
+ * passing patterns.
26
+ *
27
+ * Features:
28
+ * - Recipe source discovery (local files, npm packages)
29
+ * - Variable inheritance with clear override patterns
30
+ * - Sub-recipe execution with proper context management
31
+ * - Result aggregation from child recipes
32
+ * - Error handling and rollback for failed sub-recipes
33
+ * - Circular dependency detection with clear error messages
34
+ * - Recipe caching for performance optimization
35
+ * - Variable mapping and transformation support
36
+ */
37
+ export declare class RecipeTool extends Tool<RecipeStep> {
38
+ private recipeCache;
39
+ private executionStack;
40
+ constructor(name?: string, options?: Record<string, any>);
41
+ /**
42
+ * Initialize the recipe tool
43
+ */
44
+ protected onInitialize(): Promise<void>;
45
+ /**
46
+ * Validate recipe step configuration
47
+ */
48
+ protected onValidate(step: RecipeStep, context: StepContext): Promise<ToolValidationResult>;
49
+ /**
50
+ * Execute the recipe tool
51
+ */
52
+ protected onExecute(step: RecipeStep, context: StepContext, options?: StepExecutionOptions): Promise<StepResult>;
53
+ /**
54
+ * Tool-specific cleanup logic
55
+ */
56
+ protected onCleanup(): Promise<void>;
57
+ /**
58
+ * Resolve recipe identifier to configuration
59
+ */
60
+ private resolveRecipe;
61
+ /**
62
+ * Resolve local recipe file
63
+ */
64
+ private resolveLocalRecipe;
65
+ /**
66
+ * Resolve recipe from npm package
67
+ */
68
+ private resolveNpmRecipe;
69
+ /**
70
+ * Build sub-recipe context with variable inheritance
71
+ */
72
+ private buildSubRecipeContext;
73
+ /**
74
+ * Detect circular dependencies in recipe chain
75
+ */
76
+ private detectCircularDependencies;
77
+ /**
78
+ * Normalize steps to infer tool types from shorthands
79
+ */
80
+ private normalizeSteps;
81
+ /**
82
+ * Tool-specific cleanup logicipe configuration
83
+ */
84
+ private validateRecipeConfig;
85
+ /**
86
+ * Check if recipe identifier is a local path
87
+ */
88
+ private isLocalPath;
89
+ /**
90
+ * Check if recipe identifier is an npm package
91
+ */
92
+ private isNpmPackage;
93
+ }
94
+ /**
95
+ * Recipe Tool Factory
96
+ */
97
+ export declare class RecipeToolFactory {
98
+ create(name?: string, options?: Record<string, any>): RecipeTool;
99
+ getToolType(): "recipe";
100
+ validateConfig(config: Record<string, any>): ToolValidationResult;
101
+ }
102
+ export declare const recipeToolFactory: RecipeToolFactory;
103
+ //# sourceMappingURL=recipe-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recipe-tool.d.ts","sourceRoot":"","sources":["../../../src/recipe-engine/tools/recipe-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,EAIN,KAAK,UAAU,EAEf,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAEf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,KAAK,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAuD5D;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,UAAW,SAAQ,IAAI,CAAC,UAAU,CAAC;IAC/C,OAAO,CAAC,WAAW,CAAuC;IAC1D,OAAO,CAAC,cAAc,CAAgB;gBAE1B,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM;IAInE;;OAEG;cACsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAwBtD;;OAEG;cACa,UAAU,CACzB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC;IAkHhC;;OAEG;cACa,SAAS,CACxB,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,oBAAoB,GAC5B,OAAO,CAAC,UAAU,CAAC;IAiJtB;;OAEG;cACsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnD;;OAEG;YACW,aAAa;IA2D3B;;OAEG;YACW,kBAAkB;IA8ChC;;OAEG;YACW,gBAAgB;IA8B9B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsD7B;;OAEG;YACW,0BAA0B;IAsBxC;;OAEG;IACH,OAAO,CAAC,cAAc;IAmCtB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IA+B5B;;OAEG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACH,OAAO,CAAC,YAAY;CAMpB;AAED;;GAEG;AACH,qBAAa,iBAAiB;IAC7B,MAAM,CAAC,IAAI,SAAgB,EAAE,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,UAAU;IAI3E,WAAW,IAAI,QAAQ;IAIvB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,oBAAoB;CA6BjE;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}