padrone 1.8.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. package/CHANGELOG.md +20 -1
  2. package/README.md +2 -2
  3. package/dist/codegen/code-builder.d.mts +10 -0
  4. package/dist/codegen/code-builder.d.mts.map +1 -0
  5. package/dist/codegen/code-builder.mjs +185 -0
  6. package/dist/codegen/code-builder.mjs.map +1 -0
  7. package/dist/codegen/discovery.d.mts +44 -0
  8. package/dist/codegen/discovery.d.mts.map +1 -0
  9. package/dist/codegen/discovery.mjs +179 -0
  10. package/dist/codegen/discovery.mjs.map +1 -0
  11. package/dist/codegen/file-emitter.d.mts +10 -0
  12. package/dist/codegen/file-emitter.d.mts.map +1 -0
  13. package/dist/codegen/file-emitter.mjs +58 -0
  14. package/dist/codegen/file-emitter.mjs.map +1 -0
  15. package/dist/codegen/generators/barrel-file.d.mts +10 -0
  16. package/dist/codegen/generators/barrel-file.d.mts.map +1 -0
  17. package/dist/codegen/generators/barrel-file.mjs +16 -0
  18. package/dist/codegen/generators/barrel-file.mjs.map +1 -0
  19. package/dist/codegen/generators/command-file.d.mts +25 -0
  20. package/dist/codegen/generators/command-file.d.mts.map +1 -0
  21. package/dist/codegen/generators/command-file.mjs +130 -0
  22. package/dist/codegen/generators/command-file.mjs.map +1 -0
  23. package/dist/codegen/generators/command-tree.d.mts +17 -0
  24. package/dist/codegen/generators/command-tree.d.mts.map +1 -0
  25. package/dist/codegen/generators/command-tree.mjs +72 -0
  26. package/dist/codegen/generators/command-tree.mjs.map +1 -0
  27. package/dist/codegen/index.d.mts +15 -330
  28. package/dist/codegen/index.mjs +13 -1507
  29. package/dist/codegen/parsers/bash.d.mts +19 -0
  30. package/dist/codegen/parsers/bash.d.mts.map +1 -0
  31. package/dist/codegen/parsers/bash.mjs +112 -0
  32. package/dist/codegen/parsers/bash.mjs.map +1 -0
  33. package/dist/codegen/parsers/fish.d.mts +13 -0
  34. package/dist/codegen/parsers/fish.d.mts.map +1 -0
  35. package/dist/codegen/parsers/fish.mjs +108 -0
  36. package/dist/codegen/parsers/fish.mjs.map +1 -0
  37. package/dist/codegen/parsers/help.d.mts +15 -0
  38. package/dist/codegen/parsers/help.d.mts.map +1 -0
  39. package/dist/codegen/parsers/help.mjs +271 -0
  40. package/dist/codegen/parsers/help.mjs.map +1 -0
  41. package/dist/codegen/parsers/merge.d.mts +14 -0
  42. package/dist/codegen/parsers/merge.d.mts.map +1 -0
  43. package/dist/codegen/parsers/merge.mjs +76 -0
  44. package/dist/codegen/parsers/merge.mjs.map +1 -0
  45. package/dist/codegen/parsers/zsh.d.mts +16 -0
  46. package/dist/codegen/parsers/zsh.d.mts.map +1 -0
  47. package/dist/codegen/parsers/zsh.mjs +161 -0
  48. package/dist/codegen/parsers/zsh.mjs.map +1 -0
  49. package/dist/codegen/schema-to-code.d.mts +24 -0
  50. package/dist/codegen/schema-to-code.d.mts.map +1 -0
  51. package/dist/codegen/schema-to-code.mjs +147 -0
  52. package/dist/codegen/schema-to-code.mjs.map +1 -0
  53. package/dist/codegen/template.d.mts +18 -0
  54. package/dist/codegen/template.d.mts.map +1 -0
  55. package/dist/codegen/template.mjs +37 -0
  56. package/dist/codegen/template.mjs.map +1 -0
  57. package/dist/codegen/types.d.mts +144 -0
  58. package/dist/codegen/types.d.mts.map +1 -0
  59. package/dist/completion.d.mts +2 -0
  60. package/dist/completion.mjs +2 -0
  61. package/dist/core/args.d.mts +3 -0
  62. package/dist/{args-DrCXxXeP.mjs → core/args.mjs} +49 -113
  63. package/dist/core/args.mjs.map +1 -0
  64. package/dist/core/commands.d.mts +13 -0
  65. package/dist/core/commands.d.mts.map +1 -0
  66. package/dist/{commands-DLR0rFgq.mjs → core/commands.mjs} +4 -232
  67. package/dist/core/commands.mjs.map +1 -0
  68. package/dist/core/create.d.mts +63 -0
  69. package/dist/core/create.d.mts.map +1 -0
  70. package/dist/core/create.mjs +230 -0
  71. package/dist/core/create.mjs.map +1 -0
  72. package/dist/core/default-runtime.mjs +198 -0
  73. package/dist/core/default-runtime.mjs.map +1 -0
  74. package/dist/core/errors.d.mts +107 -0
  75. package/dist/core/errors.d.mts.map +1 -0
  76. package/dist/{errors-DA4KzK1M.mjs → core/errors.mjs} +2 -2
  77. package/dist/core/errors.mjs.map +1 -0
  78. package/dist/core/exec.mjs +191 -0
  79. package/dist/core/exec.mjs.map +1 -0
  80. package/dist/core/interceptors.d.mts +33 -0
  81. package/dist/core/interceptors.d.mts.map +1 -0
  82. package/dist/core/interceptors.mjs +253 -0
  83. package/dist/core/interceptors.mjs.map +1 -0
  84. package/dist/core/parse.mjs +181 -0
  85. package/dist/core/parse.mjs.map +1 -0
  86. package/dist/core/program-methods.mjs +256 -0
  87. package/dist/core/program-methods.mjs.map +1 -0
  88. package/dist/core/results.d.mts +13 -0
  89. package/dist/core/results.d.mts.map +1 -0
  90. package/dist/core/results.mjs +150 -0
  91. package/dist/core/results.mjs.map +1 -0
  92. package/dist/core/runtime.d.mts +213 -0
  93. package/dist/core/runtime.d.mts.map +1 -0
  94. package/dist/core/runtime.mjs +10 -0
  95. package/dist/core/runtime.mjs.map +1 -0
  96. package/dist/core/validate.mjs +220 -0
  97. package/dist/core/validate.mjs.map +1 -0
  98. package/dist/docs/index.d.mts +1 -1
  99. package/dist/docs/index.d.mts.map +1 -1
  100. package/dist/docs/index.mjs +2 -2
  101. package/dist/docs/index.mjs.map +1 -1
  102. package/dist/extension/auto-output.d.mts +53 -0
  103. package/dist/extension/auto-output.d.mts.map +1 -0
  104. package/dist/extension/auto-output.mjs +116 -0
  105. package/dist/extension/auto-output.mjs.map +1 -0
  106. package/dist/extension/color.d.mts +19 -0
  107. package/dist/extension/color.d.mts.map +1 -0
  108. package/dist/extension/color.mjs +37 -0
  109. package/dist/extension/color.mjs.map +1 -0
  110. package/dist/extension/completion.d.mts +25 -0
  111. package/dist/extension/completion.d.mts.map +1 -0
  112. package/dist/extension/completion.mjs +40 -0
  113. package/dist/extension/completion.mjs.map +1 -0
  114. package/dist/extension/config.d.mts +55 -0
  115. package/dist/extension/config.d.mts.map +1 -0
  116. package/dist/extension/config.mjs +162 -0
  117. package/dist/extension/config.mjs.map +1 -0
  118. package/dist/extension/env.d.mts +42 -0
  119. package/dist/extension/env.d.mts.map +1 -0
  120. package/dist/extension/env.mjs +44 -0
  121. package/dist/extension/env.mjs.map +1 -0
  122. package/dist/extension/help.d.mts +29 -0
  123. package/dist/extension/help.d.mts.map +1 -0
  124. package/dist/extension/help.mjs +161 -0
  125. package/dist/extension/help.mjs.map +1 -0
  126. package/dist/extension/index.d.mts +18 -0
  127. package/dist/extension/ink.d.mts +31 -0
  128. package/dist/extension/ink.d.mts.map +1 -0
  129. package/dist/extension/ink.mjs +69 -0
  130. package/dist/extension/ink.mjs.map +1 -0
  131. package/dist/extension/interactive.d.mts +16 -0
  132. package/dist/extension/interactive.d.mts.map +1 -0
  133. package/dist/extension/interactive.mjs +89 -0
  134. package/dist/extension/interactive.mjs.map +1 -0
  135. package/dist/extension/logger.d.mts +67 -0
  136. package/dist/extension/logger.d.mts.map +1 -0
  137. package/dist/extension/logger.mjs +188 -0
  138. package/dist/extension/logger.mjs.map +1 -0
  139. package/dist/extension/man.d.mts +25 -0
  140. package/dist/extension/man.d.mts.map +1 -0
  141. package/dist/extension/man.mjs +41 -0
  142. package/dist/extension/man.mjs.map +1 -0
  143. package/dist/extension/mcp.d.mts +28 -0
  144. package/dist/extension/mcp.d.mts.map +1 -0
  145. package/dist/extension/mcp.mjs +44 -0
  146. package/dist/extension/mcp.mjs.map +1 -0
  147. package/dist/extension/progress-renderer.d.mts +13 -0
  148. package/dist/extension/progress-renderer.d.mts.map +1 -0
  149. package/dist/extension/progress-renderer.mjs +351 -0
  150. package/dist/extension/progress-renderer.mjs.map +1 -0
  151. package/dist/extension/progress.d.mts +76 -0
  152. package/dist/extension/progress.d.mts.map +1 -0
  153. package/dist/extension/progress.mjs +225 -0
  154. package/dist/extension/progress.mjs.map +1 -0
  155. package/dist/extension/repl.d.mts +26 -0
  156. package/dist/extension/repl.d.mts.map +1 -0
  157. package/dist/extension/repl.mjs +67 -0
  158. package/dist/extension/repl.mjs.map +1 -0
  159. package/dist/extension/serve.d.mts +27 -0
  160. package/dist/extension/serve.d.mts.map +1 -0
  161. package/dist/extension/serve.mjs +41 -0
  162. package/dist/extension/serve.mjs.map +1 -0
  163. package/dist/extension/signal.d.mts +19 -0
  164. package/dist/extension/signal.d.mts.map +1 -0
  165. package/dist/extension/signal.mjs +81 -0
  166. package/dist/extension/signal.mjs.map +1 -0
  167. package/dist/extension/stdin.d.mts +19 -0
  168. package/dist/extension/stdin.d.mts.map +1 -0
  169. package/dist/extension/stdin.mjs +52 -0
  170. package/dist/extension/stdin.mjs.map +1 -0
  171. package/dist/extension/suggestions.d.mts +6 -0
  172. package/dist/extension/suggestions.d.mts.map +1 -0
  173. package/dist/extension/suggestions.mjs +113 -0
  174. package/dist/extension/suggestions.mjs.map +1 -0
  175. package/dist/extension/timing.d.mts +27 -0
  176. package/dist/extension/timing.d.mts.map +1 -0
  177. package/dist/extension/timing.mjs +71 -0
  178. package/dist/extension/timing.mjs.map +1 -0
  179. package/dist/extension/tracing.d.mts +85 -0
  180. package/dist/extension/tracing.d.mts.map +1 -0
  181. package/dist/extension/tracing.mjs +107 -0
  182. package/dist/extension/tracing.mjs.map +1 -0
  183. package/dist/extension/update-check.d.mts +20 -0
  184. package/dist/extension/update-check.d.mts.map +1 -0
  185. package/dist/extension/update-check.mjs +62 -0
  186. package/dist/extension/update-check.mjs.map +1 -0
  187. package/dist/extension/utils.mjs +43 -0
  188. package/dist/extension/utils.mjs.map +1 -0
  189. package/dist/extension/version.d.mts +20 -0
  190. package/dist/extension/version.d.mts.map +1 -0
  191. package/dist/extension/version.mjs +51 -0
  192. package/dist/extension/version.mjs.map +1 -0
  193. package/dist/{completion-UnBKfGuk.mjs → feature/completion.mjs} +4 -3
  194. package/dist/feature/completion.mjs.map +1 -0
  195. package/dist/feature/interactive.mjs +145 -0
  196. package/dist/feature/interactive.mjs.map +1 -0
  197. package/dist/feature/mcp.d.mts +18 -0
  198. package/dist/feature/mcp.d.mts.map +1 -0
  199. package/dist/{mcp-D6PdtjIs.mjs → feature/mcp.mjs} +6 -6
  200. package/dist/feature/mcp.mjs.map +1 -0
  201. package/dist/feature/repl-loop.mjs +217 -0
  202. package/dist/feature/repl-loop.mjs.map +1 -0
  203. package/dist/feature/serve.d.mts +18 -0
  204. package/dist/feature/serve.d.mts.map +1 -0
  205. package/dist/{serve-PaCLsNoD.mjs → feature/serve.mjs} +7 -7
  206. package/dist/feature/serve.mjs.map +1 -0
  207. package/dist/feature/test.d.mts +109 -0
  208. package/dist/feature/test.d.mts.map +1 -0
  209. package/dist/feature/test.mjs +116 -0
  210. package/dist/feature/test.mjs.map +1 -0
  211. package/dist/feature/update-check.d.mts +35 -0
  212. package/dist/feature/update-check.d.mts.map +1 -0
  213. package/dist/{update-check-CZ2VqjnV.mjs → feature/update-check.mjs} +2 -2
  214. package/dist/feature/update-check.mjs.map +1 -0
  215. package/dist/feature/wrap.d.mts +58 -0
  216. package/dist/feature/wrap.d.mts.map +1 -0
  217. package/dist/feature/wrap.mjs +77 -0
  218. package/dist/feature/wrap.mjs.map +1 -0
  219. package/dist/index.d.mts +38 -901
  220. package/dist/index.mjs +25 -4337
  221. package/dist/ink.d.mts +2 -0
  222. package/dist/ink.mjs +2 -0
  223. package/dist/man.d.mts +2 -0
  224. package/dist/man.mjs +2 -0
  225. package/dist/mcp.d.mts +3 -0
  226. package/dist/mcp.mjs +2 -0
  227. package/dist/output/colorizer.d.mts +28 -0
  228. package/dist/output/colorizer.d.mts.map +1 -0
  229. package/dist/output/colorizer.mjs +94 -0
  230. package/dist/output/colorizer.mjs.map +1 -0
  231. package/dist/{formatter-CY3KrOEd.d.mts → output/formatter.d.mts} +2 -28
  232. package/dist/output/formatter.d.mts.map +1 -0
  233. package/dist/output/formatter.mjs +360 -0
  234. package/dist/output/formatter.mjs.map +1 -0
  235. package/dist/output/help.d.mts +18 -0
  236. package/dist/output/help.d.mts.map +1 -0
  237. package/dist/output/help.mjs +267 -0
  238. package/dist/output/help.mjs.map +1 -0
  239. package/dist/output/output-indicator.d.mts +27 -0
  240. package/dist/output/output-indicator.d.mts.map +1 -0
  241. package/dist/output/output-indicator.mjs +54 -0
  242. package/dist/output/output-indicator.mjs.map +1 -0
  243. package/dist/output/primitives.d.mts +33 -0
  244. package/dist/output/primitives.d.mts.map +1 -0
  245. package/dist/output/primitives.mjs +206 -0
  246. package/dist/output/primitives.mjs.map +1 -0
  247. package/dist/output/styling.d.mts +38 -0
  248. package/dist/output/styling.d.mts.map +1 -0
  249. package/dist/output/styling.mjs +146 -0
  250. package/dist/output/styling.mjs.map +1 -0
  251. package/dist/schema/zod.d.mts +6 -0
  252. package/dist/schema/zod.d.mts.map +1 -0
  253. package/dist/schema/zod.mjs +50 -0
  254. package/dist/schema/zod.mjs.map +1 -0
  255. package/dist/serve.d.mts +2 -0
  256. package/dist/serve.mjs +2 -0
  257. package/dist/test.d.mts +2 -109
  258. package/dist/test.mjs +1 -115
  259. package/dist/tracing.d.mts +2 -0
  260. package/dist/tracing.mjs +2 -0
  261. package/dist/types/args-meta.d.mts +129 -0
  262. package/dist/types/args-meta.d.mts.map +1 -0
  263. package/dist/types/builder.d.mts +212 -0
  264. package/dist/types/builder.d.mts.map +1 -0
  265. package/dist/types/command.d.mts +112 -0
  266. package/dist/types/command.d.mts.map +1 -0
  267. package/dist/types/index.d.mts +8 -0
  268. package/dist/types/interceptor.d.mts +232 -0
  269. package/dist/types/interceptor.d.mts.map +1 -0
  270. package/dist/types/preferences.d.mts +79 -0
  271. package/dist/types/preferences.d.mts.map +1 -0
  272. package/dist/types/result.d.mts +61 -0
  273. package/dist/types/result.d.mts.map +1 -0
  274. package/dist/types/schema.d.mts +24 -0
  275. package/dist/types/schema.d.mts.map +1 -0
  276. package/dist/util/dotenv.mjs +174 -0
  277. package/dist/util/dotenv.mjs.map +1 -0
  278. package/dist/util/shell-utils.mjs +80 -0
  279. package/dist/util/shell-utils.mjs.map +1 -0
  280. package/dist/util/stream.d.mts +33 -0
  281. package/dist/util/stream.d.mts.map +1 -0
  282. package/dist/{stream-DC4H8YTx.mjs → util/stream.mjs} +2 -2
  283. package/dist/util/stream.mjs.map +1 -0
  284. package/dist/util/type-helpers.d.mts +74 -0
  285. package/dist/util/type-helpers.d.mts.map +1 -0
  286. package/dist/util/type-utils.d.mts +186 -0
  287. package/dist/util/type-utils.d.mts.map +1 -0
  288. package/dist/util/utils.mjs +43 -0
  289. package/dist/util/utils.mjs.map +1 -0
  290. package/dist/zod.d.mts +1 -32
  291. package/dist/zod.mjs +1 -49
  292. package/package.json +65 -17
  293. package/src/completion.ts +2 -0
  294. package/src/core/args.ts +63 -37
  295. package/src/core/runtime.ts +11 -2
  296. package/src/extension/completion.ts +3 -0
  297. package/src/extension/index.ts +0 -12
  298. package/src/extension/ink.ts +2 -1
  299. package/src/extension/man.ts +3 -0
  300. package/src/extension/mcp.ts +3 -0
  301. package/src/extension/progress-renderer.ts +32 -8
  302. package/src/extension/progress.ts +19 -9
  303. package/src/extension/serve.ts +3 -0
  304. package/src/extension/tracing.ts +2 -0
  305. package/src/index.ts +1 -20
  306. package/src/ink.ts +2 -0
  307. package/src/man.ts +2 -0
  308. package/src/mcp.ts +3 -0
  309. package/src/serve.ts +2 -0
  310. package/src/tracing.ts +9 -0
  311. package/src/types/builder.ts +2 -2
  312. package/src/zod.ts +1 -1
  313. package/dist/args-DrCXxXeP.mjs.map +0 -1
  314. package/dist/codegen/index.d.mts.map +0 -1
  315. package/dist/codegen/index.mjs.map +0 -1
  316. package/dist/commands-DLR0rFgq.mjs.map +0 -1
  317. package/dist/completion-UnBKfGuk.mjs.map +0 -1
  318. package/dist/errors-DA4KzK1M.mjs.map +0 -1
  319. package/dist/formatter-CY3KrOEd.d.mts.map +0 -1
  320. package/dist/help-B-ZMYyn-.mjs +0 -892
  321. package/dist/help-B-ZMYyn-.mjs.map +0 -1
  322. package/dist/index-D-Dpz7l_.d.mts +0 -1427
  323. package/dist/index-D-Dpz7l_.d.mts.map +0 -1
  324. package/dist/index.d.mts.map +0 -1
  325. package/dist/index.mjs.map +0 -1
  326. package/dist/mcp-D6PdtjIs.mjs.map +0 -1
  327. package/dist/serve-PaCLsNoD.mjs.map +0 -1
  328. package/dist/stream-DC4H8YTx.mjs.map +0 -1
  329. package/dist/test.d.mts.map +0 -1
  330. package/dist/test.mjs.map +0 -1
  331. package/dist/update-check-CZ2VqjnV.mjs.map +0 -1
  332. package/dist/zod.d.mts.map +0 -1
  333. package/dist/zod.mjs.map +0 -1
package/dist/test.d.mts CHANGED
@@ -1,109 +1,2 @@
1
- import { bt as PadroneRuntime, p as AnyPadroneCommand } from "./index-D-Dpz7l_.mjs";
2
-
3
- //#region src/feature/test.d.ts
4
- /**
5
- * Result from a single command execution in test mode.
6
- * Extends the standard PadroneCommandResult with captured I/O.
7
- */
8
- type TestCliResult = {
9
- /** The matched command. */command: AnyPadroneCommand; /** Validated arguments (undefined if validation failed). */
10
- args: unknown; /** Action handler return value (undefined if validation failed or no action). */
11
- result: unknown; /** Validation issues, if any. */
12
- issues: {
13
- message: string;
14
- path?: PropertyKey[];
15
- }[] | undefined; /** All values passed to `runtime.output()`. */
16
- stdout: unknown[]; /** All strings passed to `runtime.error()`. */
17
- stderr: string[]; /** The thrown error, if the command threw (routing error, action error, etc.). */
18
- error?: unknown;
19
- };
20
- /**
21
- * Result from a REPL test session.
22
- */
23
- type TestReplResult = {
24
- /** One entry per successfully executed command (validation errors are captured in stderr, not here). */results: Omit<TestCliResult, 'stdout' | 'stderr'>[]; /** All output from the entire REPL session. */
25
- stdout: unknown[]; /** All errors from the entire REPL session. */
26
- stderr: string[];
27
- };
28
- /**
29
- * Fluent builder for setting up CLI test scenarios.
30
- */
31
- type TestCliBuilder = {
32
- /** Set the CLI input string (e.g. `'deploy --env production'`). */args(input: string): TestCliBuilder; /** Set environment variables visible to the command. */
33
- env(vars: Record<string, string | undefined>): TestCliBuilder; /** Provide mock answers for interactive prompts. Keys are field names. */
34
- prompt(answers: Record<string, unknown>): TestCliBuilder; /** Provide mock stdin data (simulates piped input). */
35
- stdin(data: string): TestCliBuilder;
36
- /**
37
- * Execute a single command via `eval()` and return the result with captured I/O.
38
- * @param input - Optional CLI input string. Overrides `.args()` if provided.
39
- */
40
- run(input?: string): Promise<TestCliResult>;
41
- /**
42
- * Run a REPL session with the given sequence of inputs.
43
- * Each string in the array is fed as one line of input.
44
- * The session ends after all inputs are consumed (EOF).
45
- */
46
- repl(inputs: string[]): Promise<TestReplResult>;
47
- };
48
- /**
49
- * Creates a fluent test builder for a Padrone program.
50
- * Captures all I/O and provides a clean interface for assertions.
51
- *
52
- * Works with any test framework (bun:test, vitest, jest, node:test, etc.).
53
- *
54
- * @example
55
- * ```ts
56
- * import { testCli } from 'padrone/test'
57
- *
58
- * const result = await testCli(myProgram)
59
- * .args('deploy --env production')
60
- * .env({ API_KEY: 'xxx' })
61
- * .run()
62
- *
63
- * expect(result.result).toBe('Deployed')
64
- * expect(result.stdout).toContain('Deploying...')
65
- * ```
66
- *
67
- * @example
68
- * ```ts
69
- * // Shorthand: pass input directly to run()
70
- * const result = await testCli(myProgram).run('deploy --env production')
71
- * ```
72
- *
73
- * @example
74
- * ```ts
75
- * // Test interactive prompts
76
- * const result = await testCli(myProgram)
77
- * .args('init')
78
- * .prompt({ name: 'myapp', template: 'react' })
79
- * .run()
80
- *
81
- * expect(result.args).toEqual({ name: 'myapp', template: 'react' })
82
- * ```
83
- *
84
- * @example
85
- * ```ts
86
- * // Test REPL sessions
87
- * const { results } = await testCli(myProgram)
88
- * .repl(['greet World', 'add --a=2 --b=3'])
89
- *
90
- * expect(results[0].result).toBe('Hello, World!')
91
- * expect(results[1].result).toBe(5)
92
- * ```
93
- */
94
- /**
95
- * Any program-like object that has `eval`, `runtime`, and `repl` methods.
96
- * Avoids strict variance issues with `AnyPadroneProgram`.
97
- */
98
- type TestableProgram = {
99
- eval: (input: string, prefs?: Record<string, unknown>) => any;
100
- runtime: (runtime: PadroneRuntime) => TestableProgram;
101
- repl: (options?: {
102
- greeting?: false;
103
- hint?: false;
104
- }) => AsyncIterable<any>;
105
- };
106
- declare function testCli(program: TestableProgram): TestCliBuilder;
107
- //#endregion
108
- export { type TestCliBuilder, type TestCliResult, type TestReplResult, testCli };
109
- //# sourceMappingURL=test.d.mts.map
1
+ import { TestCliBuilder, TestCliResult, TestReplResult, testCli } from "./feature/test.mjs";
2
+ export { type TestCliBuilder, type TestCliResult, type TestReplResult, testCli };
package/dist/test.mjs CHANGED
@@ -1,116 +1,2 @@
1
- //#region src/feature/test.ts
2
- function testCli(program) {
3
- let input;
4
- let envVars;
5
- let promptAnswers;
6
- let stdinData;
7
- const builder = {
8
- args(args) {
9
- input = args;
10
- return builder;
11
- },
12
- env(vars) {
13
- envVars = vars;
14
- return builder;
15
- },
16
- prompt(answers) {
17
- promptAnswers = answers;
18
- return builder;
19
- },
20
- stdin(data) {
21
- stdinData = data;
22
- return builder;
23
- },
24
- async run(runInput) {
25
- const stdout = [];
26
- const stderr = [];
27
- const runtime = buildRuntime(stdout, stderr, {
28
- envVars,
29
- promptAnswers,
30
- stdinData
31
- });
32
- const evalResult = await program.runtime(runtime).eval(runInput ?? input ?? "", {});
33
- if (evalResult.error) stderr.push(evalResult.error instanceof Error ? evalResult.error.message : String(evalResult.error));
34
- return toTestResult(evalResult, stdout, stderr);
35
- },
36
- async repl(inputs) {
37
- const stdout = [];
38
- const stderr = [];
39
- const runtime = buildRuntime(stdout, stderr, {
40
- envVars,
41
- promptAnswers,
42
- readLine: createMockReadLine(inputs)
43
- });
44
- const testProgram = program.runtime(runtime);
45
- const results = [];
46
- for await (const r of testProgram.repl({
47
- greeting: false,
48
- hint: false
49
- })) results.push({
50
- command: r.command,
51
- args: r.args,
52
- result: r.result,
53
- issues: r.argsResult?.issues
54
- });
55
- return {
56
- results,
57
- stdout,
58
- stderr
59
- };
60
- }
61
- };
62
- return builder;
63
- }
64
- function toTestResult(evalResult, stdout, stderr) {
65
- return {
66
- command: evalResult.command,
67
- args: evalResult.args,
68
- result: evalResult.result,
69
- error: evalResult.error,
70
- issues: evalResult.argsResult?.issues,
71
- stdout,
72
- stderr
73
- };
74
- }
75
- function buildRuntime(stdout, stderr, opts) {
76
- const runtime = {
77
- output: (...args) => stdout.push(...args),
78
- error: (text) => stderr.push(text)
79
- };
80
- if (opts.envVars) runtime.env = () => opts.envVars;
81
- if (opts.promptAnswers) {
82
- runtime.interactive = "supported";
83
- runtime.prompt = async (config) => opts.promptAnswers[config.name];
84
- }
85
- if (opts.readLine) runtime.readLine = opts.readLine;
86
- if (opts.stdinData !== void 0) runtime.stdin = {
87
- isTTY: false,
88
- async text() {
89
- return opts.stdinData;
90
- },
91
- async *lines() {
92
- const lines = opts.stdinData.split("\n");
93
- if (lines.length > 0 && lines[lines.length - 1] === "") lines.pop();
94
- for (const line of lines) yield line;
95
- }
96
- };
97
- else runtime.stdin = {
98
- isTTY: true,
99
- async text() {
100
- return "";
101
- },
102
- async *lines() {}
103
- };
104
- return runtime;
105
- }
106
- function createMockReadLine(inputs) {
107
- let index = 0;
108
- return async (_prompt) => {
109
- if (index >= inputs.length) return null;
110
- return inputs[index++] ?? null;
111
- };
112
- }
113
- //#endregion
1
+ import { testCli } from "./feature/test.mjs";
114
2
  export { testCli };
115
-
116
- //# sourceMappingURL=test.mjs.map
@@ -0,0 +1,2 @@
1
+ import { OtelSpan, OtelTracer, OtelTracerProvider, PadroneTracer, PadroneTracingConfig, WithTracing, padroneTracing } from "./extension/tracing.mjs";
2
+ export { type OtelSpan, type OtelTracer, type OtelTracerProvider, type PadroneTracer, type PadroneTracingConfig, type WithTracing, padroneTracing };
@@ -0,0 +1,2 @@
1
+ import { padroneTracing } from "./extension/tracing.mjs";
2
+ export { padroneTracing };
@@ -0,0 +1,129 @@
1
+ //#region src/types/args-meta.d.ts
2
+ type Letter = 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z';
3
+ /** A single letter character, valid as a short CLI flag (e.g. `'v'`, `'n'`, `'V'`). */
4
+ type SingleChar = Letter | Uppercase<Letter>;
5
+ interface PadroneFieldMeta {
6
+ description?: string;
7
+ /** Single-character short flags (stackable: `-abc` = `-a -b -c`). Used with single dash. */
8
+ flags?: readonly SingleChar[] | SingleChar;
9
+ /** Multi-character alternative long names. Used with double dash (e.g. `--dry-run` for `--dryRun`). */
10
+ alias?: readonly string[] | string;
11
+ /**
12
+ * Custom negative keyword(s) for boolean options. When provided, `--<keyword>` sets this option to `false`.
13
+ * Disables the default `--no-<option>` negation prefix. Set to `''` or `[]` to only disable the prefix.
14
+ * @example
15
+ * ```ts
16
+ * local: z.boolean().default(true).meta({ negative: 'remote' })
17
+ * // --remote sets local to false, --no-local is disabled
18
+ * ```
19
+ */
20
+ negative?: readonly string[] | string;
21
+ deprecated?: boolean | string;
22
+ hidden?: boolean;
23
+ examples?: readonly unknown[];
24
+ /** Group name for organizing this option under a labeled section in help output. */
25
+ group?: string;
26
+ }
27
+ type PositionalArgs<TObj> = TObj extends Record<string, any> ? { [K in keyof TObj]: NonNullable<TObj[K]> extends Array<any> ? `...${K & string}` | (K & string) : K & string }[keyof TObj] : string;
28
+ /**
29
+ * Meta configuration for arguments, including positional arguments.
30
+ * The `positional` array defines which arguments are positional and their order.
31
+ * Use '...name' prefix to indicate variadic (rest) arguments, matching JS/TS rest syntax.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * .arguments(schema, {
36
+ * positional: ['source', '...files', 'dest'], // '...files' is variadic
37
+ * })
38
+ * ```
39
+ */
40
+ /**
41
+ * Configuration for reading from stdin and mapping it to an argument field.
42
+ * Simply specify the field name — the read mode is inferred from the schema:
43
+ * - `string` field → reads all stdin as text
44
+ * - `string[]` field → reads stdin line-by-line
45
+ */
46
+ type StdinConfig<TObj = Record<string, any>> = keyof TObj & string;
47
+ interface PadroneArgsSchemaMeta<TObj = Record<string, any>> {
48
+ /**
49
+ * Array of argument names that should be treated as positional arguments.
50
+ * Order in array determines position. Use '...name' prefix for variadic args.
51
+ * @example ['source', '...files', 'dest'] - 'files' captures multiple values
52
+ */
53
+ positional?: readonly PositionalArgs<TObj>[];
54
+ /**
55
+ * Per-argument metadata.
56
+ */
57
+ fields?: { [K in keyof TObj]?: PadroneFieldMeta };
58
+ /**
59
+ * Automatically generate kebab-case aliases for camelCase option names.
60
+ * For example, `dryRun` automatically gets `--dry-run` as an alias.
61
+ * Defaults to `true`. Set to `false` to disable.
62
+ *
63
+ * @default true
64
+ * @example
65
+ * ```ts
66
+ * // Auto-aliases enabled (default): --dry-run → dryRun
67
+ * .arguments(z.object({ dryRun: z.boolean() }))
68
+ *
69
+ * // Disable auto-aliases
70
+ * .arguments(z.object({ dryRun: z.boolean() }), { autoAlias: false })
71
+ * ```
72
+ */
73
+ autoAlias?: boolean;
74
+ /**
75
+ * Read from stdin and inject the data into the specified argument field.
76
+ * Only reads when stdin is piped (not a TTY) and the field wasn't already provided via CLI flags.
77
+ *
78
+ * The read mode is inferred from the schema type of the target field:
79
+ * - `string` field → reads all stdin as a single string
80
+ * - `string[]` field → reads stdin line-by-line into an array
81
+ *
82
+ * Precedence: CLI flags > stdin > env vars > config file > schema defaults.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * // Read all stdin as text into 'data' field
87
+ * .arguments(z.object({ data: z.string() }), { stdin: 'data' })
88
+ *
89
+ * // Read stdin lines into 'lines' field (inferred from array schema)
90
+ * .arguments(z.object({ lines: z.string().array() }), { stdin: 'lines' })
91
+ * ```
92
+ */
93
+ stdin?: StdinConfig<TObj>;
94
+ /**
95
+ * Fields to interactively prompt for when their values are missing after CLI/env/config resolution.
96
+ * - `true`: prompt for all required fields that are missing.
97
+ * - `string[]`: prompt for these specific fields if missing.
98
+ *
99
+ * Interactive prompting only occurs in `cli()` when the runtime has `interactive: true`.
100
+ * Setting this makes `parse()` and `cli()` return Promises.
101
+ *
102
+ * @example
103
+ * ```ts
104
+ * .arguments(schema, {
105
+ * interactive: true, // prompt all missing required fields
106
+ * interactive: ['name', 'template'], // prompt only these fields
107
+ * })
108
+ * ```
109
+ */
110
+ interactive?: true | readonly (keyof TObj & string)[];
111
+ /**
112
+ * Optional fields offered after required interactive prompts.
113
+ * Users are shown a multi-select to choose which of these fields to configure.
114
+ * - `true`: offer all optional fields that are missing.
115
+ * - `string[]`: offer these specific fields.
116
+ *
117
+ * @example
118
+ * ```ts
119
+ * .arguments(schema, {
120
+ * interactive: ['name'],
121
+ * optionalInteractive: ['typescript', 'eslint', 'prettier'],
122
+ * })
123
+ * ```
124
+ */
125
+ optionalInteractive?: true | readonly (keyof TObj & string)[];
126
+ }
127
+ //#endregion
128
+ export { PadroneArgsSchemaMeta, PadroneFieldMeta, SingleChar, StdinConfig };
129
+ //# sourceMappingURL=args-meta.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"args-meta.d.mts","names":[],"sources":["../../src/types/args-meta.ts"],"mappings":";KAAK,MAAA;;KA6BO,UAAA,GAAa,MAAA,GAAS,SAAA,CAAU,MAAA;AAAA,UAE3B,gBAAA;EACf,WAAA;EAhCS;EAkCT,KAAA,YAAiB,UAAA,KAAe,UAAU;EALtB;EAOpB,KAAA;EAPuB;;;;;;;;;EAiBvB,QAAA;EACA,UAAA;EACA,MAAA;EACA,QAAA;EAf0C;EAiB1C,KAAA;AAAA;AAAA,KAGG,cAAA,SACH,IAAA,SAAa,MAAA,8BAEK,IAAA,GAAO,WAAA,CAAY,IAAA,CAAK,CAAA,WAAY,KAAA,cAAmB,CAAA,eAAgB,CAAA,aAAc,CAAA,kBAC3F,IAAA;;;;;;;AAPP;AACN;;;;;;;;;;;KA2BW,WAAA,QAAmB,MAAA,uBAA6B,IAAI;AAAA,UAE/C,qBAAA,QAA6B,MAAA;EAvBhC;;;;;EA6BZ,UAAA,YAAsB,cAAA,CAAe,IAAA;EA9B9B;;;EAkCP,MAAA,iBAAuB,IAAA,IAAQ,gBAAA;EAlC0C;;;;;AACzD;AAqBlB;;;;;;;;AAAgE;EA4B9D,SAAA;EA1BoC;;;;;;;;;;;;;;;;;;;EA8CpC,KAAA,GAAQ,WAAA,CAAY,IAAA;EApCG;;;;;;;;;;;AAoE0B;;;;;EAfjD,WAAA,0BAAqC,IAAA;;;;;;;;;;;;;;;EAerC,mBAAA,0BAA6C,IAAA;AAAA"}
@@ -0,0 +1,212 @@
1
+ import { PadroneProgress, PadroneRuntime } from "../core/runtime.mjs";
2
+ import { PadroneSchema } from "./schema.mjs";
3
+ import { FindDirectChild, FlattenCommands, FullCommandName, MaybePromise, OrAsync, OrAsyncMeta, PickCommandByName, PickCommandByPossibleCommands, PossibleCommands, RepathCommands, ReplaceOrAppendCommand, SafeString } from "../util/type-utils.mjs";
4
+ import { PadroneLogger } from "../extension/logger.mjs";
5
+ import { PadroneTracer } from "../extension/tracing.mjs";
6
+ import { PadroneMcpPreferences } from "../feature/mcp.mjs";
7
+ import { PadroneServePreferences } from "../feature/serve.mjs";
8
+ import { WrapConfig, WrapResult } from "../feature/wrap.mjs";
9
+ import { HelpPreferences } from "../output/help.mjs";
10
+ import { ExtractInterceptorContext, InterceptorFactory, InterceptorMeta, InterceptorRequiresCheck, InterceptorRequiresError, PadroneContextInterceptor, PadroneInterceptorFn } from "./interceptor.mjs";
11
+ import { AnyPadroneCommand, CommandTypesBase, GetArgsMeta, PadroneActionContext, PadroneCommand, PadroneCommandConfig, PadroneProgramMeta } from "./command.mjs";
12
+ import { PadroneCliPreferences, PadroneEvalPreferences, PadroneReplPreferences } from "./preferences.mjs";
13
+ import { GetArguments, MaybePromiseCommandResult, PadroneAPI, PadroneCommandResult, PadroneDrainResult, PadroneParseResult } from "./result.mjs";
14
+ import { StandardSchemaV1 } from "@standard-schema/spec";
15
+ import { Tool } from "ai";
16
+
17
+ //#region src/types/builder.d.ts
18
+ /**
19
+ * Helper type to set aliases on a command type.
20
+ * Uses intersection to override just the aliases while preserving all other type information.
21
+ */
22
+ type WithAliases<TCommand extends AnyPadroneCommand, TAliases extends string[]> = Omit<TCommand, 'aliases' | '~types'> & {
23
+ aliases?: TAliases;
24
+ '~types': Omit<TCommand['~types'], 'aliases'> & {
25
+ aliases: TAliases;
26
+ };
27
+ };
28
+ /**
29
+ * Resolves aliases for a command override: if new aliases are provided (non-empty), use them;
30
+ * otherwise, preserve the existing command's aliases.
31
+ */
32
+ type ResolvedAliases<TCommands extends [...AnyPadroneCommand[]], TNameNested extends string, TAliases extends string[]> = TAliases extends [] ? FindDirectChild<TCommands, TNameNested> extends infer E extends AnyPadroneCommand ? E['~types']['aliases'] : [] : TAliases;
33
+ /**
34
+ * When TContext is `unknown` (no `.context()` called), context param is optional.
35
+ * Otherwise it is required.
36
+ */
37
+ type ContextParam<TContext> = unknown extends TContext ? {
38
+ context?: TContext;
39
+ } : {
40
+ context: TContext;
41
+ };
42
+ /** Options for the `mount()` method. */
43
+ type MountOptions<TContext, TNewContext> = {
44
+ context: (ctx: TContext) => TNewContext;
45
+ };
46
+ /**
47
+ * Resolves the initial builder type for a `.command()` call.
48
+ * If TNameNested already exists in TCommands, the builder starts pre-populated with that command's types.
49
+ * Otherwise, a fresh builder with default types is used.
50
+ */
51
+ type InitialCommandBuilder<TProgramName extends string, TNameNested extends string, TParentPath extends string, TParentArgs extends PadroneSchema, TCommands extends [...AnyPadroneCommand[]], TParentContext> = [FindDirectChild<TCommands, TNameNested>] extends [never] ? PadroneBuilder<TProgramName, TNameNested, TParentPath, PadroneSchema<void>, void, [], TParentArgs, false, TParentContext> : FindDirectChild<TCommands, TNameNested> extends infer E extends AnyPadroneCommand ? PadroneBuilder<TProgramName, TNameNested, TParentPath, E['~types']['argsSchema'], E['~types']['result'], E['~types']['commands'], TParentArgs, E['~types']['async'], E['~types']['context'], E['~types']['contextProvided']> : PadroneBuilder<TProgramName, TNameNested, TParentPath, PadroneSchema<void>, void, [], TParentArgs, false, TParentContext>;
52
+ type AnyPadroneBuilder = InitialCommandBuilder<string, string, string, PadroneSchema, [...AnyPadroneCommand[]], unknown>;
53
+ /**
54
+ * Like InitialCommandBuilder but uses `any` for args in the fresh case.
55
+ * Used as the default for TBuilder when no builderFn is provided.
56
+ */
57
+ type DefaultCommandBuilder<TProgramName extends string, TNameNested extends string, TParentPath extends string, TParentArgs extends PadroneSchema, TCommands extends [...AnyPadroneCommand[]], TParentContext> = [FindDirectChild<TCommands, TNameNested>] extends [never] ? PadroneBuilder<TProgramName, TNameNested, TParentPath, any, void, [], TParentArgs, false, TParentContext> : FindDirectChild<TCommands, TNameNested> extends infer E extends AnyPadroneCommand ? PadroneBuilder<TProgramName, TNameNested, TParentPath, E['~types']['argsSchema'], E['~types']['result'], E['~types']['commands'], TParentArgs, E['~types']['async'], E['~types']['context'], E['~types']['contextProvided']> : PadroneBuilder<TProgramName, TNameNested, TParentPath, any, void, [], TParentArgs, false, TParentContext>;
58
+ /**
59
+ * Conditional type that returns either PadroneBuilder or PadroneProgram based on TReturn.
60
+ * Used to avoid repetition in PadroneBuilderMethods return types.
61
+ */
62
+ type BuilderOrProgram<TReturn extends 'builder' | 'program', TProgramName extends string, TName extends string, TParentName extends string, TArgs extends PadroneSchema, TRes, TCommands extends [...AnyPadroneCommand[]], TParentArgs extends PadroneSchema, TAsync extends boolean, TContext, TContextProvided = unknown> = TReturn extends 'builder' ? PadroneBuilder<TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided> : PadroneProgram<TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided>;
63
+ /**
64
+ * Base builder methods shared between PadroneBuilder and PadroneProgram.
65
+ * These methods are used for defining command structure (arguments, action, subcommands).
66
+ */
67
+ type PadroneBuilderMethods<TProgramName extends string, TName extends string, TParentName extends string, TArgs extends PadroneSchema, TRes, TCommands extends [...AnyPadroneCommand[]], TParentArgs extends PadroneSchema, TAsync extends boolean, TContext, TContextProvided, /** The return type for builder methods - either PadroneBuilder or PadroneProgram */TReturn extends 'builder' | 'program'> = {
68
+ /** Apply a build-time extension that transforms this builder/program. @category Builder */extend: <TResult extends CommandTypesBase>(extension: PadroneExtension<BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided>, TResult>) => TResult; /** Register a runtime interceptor for lifecycle phases (parse, validate, execute, etc.). @category Builder */
69
+ intercept: {
70
+ /** Context-providing interceptor — extends context type. Rejects if required context is not satisfied. */<TInterceptor extends PadroneContextInterceptor<any, StandardSchemaV1.InferOutput<TArgs>, TRes, any>>(interceptor: TInterceptor): InterceptorRequiresCheck<TInterceptor, TContext & TContextProvided> extends true ? BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided & ExtractInterceptorContext<TInterceptor>> : InterceptorRequiresError; /** Plain interceptor — no context change. Rejects if required context is not satisfied. */
71
+ <TInterceptor extends PadroneInterceptorFn<StandardSchemaV1.InferOutput<TArgs>, TRes, any>>(interceptor: TInterceptor): InterceptorRequiresCheck<TInterceptor, TContext & TContextProvided> extends true ? BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided> : InterceptorRequiresError; /** Register an interceptor with static metadata and a factory function. Context is strongly typed. */
72
+ (meta: InterceptorMeta, factory: InterceptorFactory<StandardSchemaV1.InferOutput<TArgs>, TRes, TContext & TContextProvided>): BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided>;
73
+ }; /** Set command metadata like title, description, version, hidden, deprecated, etc. @category Builder */
74
+ configure: (config: PadroneCommandConfig) => BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided>; /** Override the runtime adapter (process, IO, environment). @category Builder */
75
+ runtime: (runtime: PadroneRuntime) => BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided>; /** Mark this command as async, forcing all return types to be `Promise`-wrapped. @category Builder */
76
+ async: () => BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, true, TContext, TContextProvided>;
77
+ /**
78
+ * Declare or transform the user-defined context type for this command.
79
+ *
80
+ * - Without a callback: narrows the context type (type-only, no runtime transform).
81
+ * - With a callback: transforms the parent/current context into a new type. Chainable — multiple calls compose.
82
+ *
83
+ * Interceptor-provided context (`TContextProvided`) is preserved across `.context()` calls.
84
+ * @category Builder
85
+ */
86
+ context: {
87
+ <TNewContext>(): BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TNewContext, TContextProvided>;
88
+ <TNewContext>(transform: (ctx: TContext) => TNewContext): BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TNewContext, TContextProvided>;
89
+ }; /** Define the argument/option schema for this command. Accepts a Standard Schema or a function that extends the parent schema. @category Builder */
90
+ arguments: <TNewArgs extends PadroneSchema = PadroneSchema<void>, TMeta extends GetArgsMeta<TNewArgs> = GetArgsMeta<TNewArgs>>(schema?: TNewArgs | ((parentSchema: TParentArgs) => TNewArgs), meta?: TMeta) => BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TNewArgs, TRes, TCommands, TParentArgs, OrAsyncMeta<OrAsync<TAsync, TNewArgs>, TMeta>, TContext, TContextProvided>; /** Set the handler function that runs when this command is executed. @category Builder */
91
+ action: <TNewRes>(handler?: (args: StandardSchemaV1.InferOutput<TArgs>, ctx: PadroneActionContext<TContext & TContextProvided>, base: (args: StandardSchemaV1.InferOutput<TArgs>, ctx: PadroneActionContext<TContext & TContextProvided>) => TRes) => TNewRes) => BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TNewRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided>; /** Wrap an external CLI tool, delegating execution to a shell command. @category Builder */
92
+ wrap: <TWrapArgs extends PadroneSchema = TArgs>(config: WrapConfig<TArgs, TWrapArgs>) => BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, Promise<WrapResult>, TCommands, TParentArgs, TAsync, TContext, TContextProvided>; /** Add or override a subcommand. Pass a builder function to define its schema, action, and nested commands. @category Builder */
93
+ command: {
94
+ <TNameNested extends string, TAliases extends string[] = [], TBuilder extends CommandTypesBase = DefaultCommandBuilder<TProgramName, TNameNested, FullCommandName<TName, TParentName>, TArgs, TCommands, TContext & TContextProvided>>(name: TNameNested | readonly [TNameNested, ...TAliases], builderFn?: (builder: InitialCommandBuilder<TProgramName, TNameNested, FullCommandName<TName, TParentName>, TArgs, TCommands, TContext & TContextProvided>) => TBuilder): BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands extends [] ? [WithAliases<TBuilder['~types']['command'], TAliases>] : AnyPadroneCommand[] extends TCommands ? [WithAliases<TBuilder['~types']['command'], TAliases>] : ReplaceOrAppendCommand<TCommands, TNameNested, WithAliases<TBuilder['~types']['command'], ResolvedAliases<TCommands, TNameNested, TAliases>>>, TParentArgs, TAsync, TContext, TContextProvided>;
95
+ <TNameNested extends string, TAliases extends string[] = [], TBuilder extends CommandTypesBase = CommandTypesBase, TReq = unknown>(name: TNameNested | readonly [TNameNested, ...TAliases], builderFn: ((builder: any) => TBuilder) & {
96
+ '~contextRequires': (ctx: TReq) => void;
97
+ }): TContext & TContextProvided extends TReq ? BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands extends [] ? [WithAliases<TBuilder['~types']['command'], TAliases>] : AnyPadroneCommand[] extends TCommands ? [WithAliases<TBuilder['~types']['command'], TAliases>] : ReplaceOrAppendCommand<TCommands, TNameNested, WithAliases<TBuilder['~types']['command'], ResolvedAliases<TCommands, TNameNested, TAliases>>>, TParentArgs, TAsync, TContext, TContextProvided> : DefineCommandRequiresError;
98
+ <TNameNested extends string, TAliases extends string[] = [], TBuilder extends CommandTypesBase = CommandTypesBase>(name: TNameNested | readonly [TNameNested, ...TAliases], builderFn?: (builder: any) => TBuilder): BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands extends [] ? [WithAliases<TBuilder['~types']['command'], TAliases>] : AnyPadroneCommand[] extends TCommands ? [WithAliases<TBuilder['~types']['command'], TAliases>] : ReplaceOrAppendCommand<TCommands, TNameNested, WithAliases<TBuilder['~types']['command'], ResolvedAliases<TCommands, TNameNested, TAliases>>>, TParentArgs, TAsync, TContext, TContextProvided>;
99
+ }; /** Mount an existing program as a subcommand, optionally transforming the context. @category Builder */
100
+ mount: {
101
+ <TNameNested extends string, TAliases extends string[] = [], TProgram extends CommandTypesBase = CommandTypesBase>(name: TNameNested | readonly [TNameNested, ...TAliases], program: TProgram): BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands extends [] ? [WithAliases<PadroneCommand<TNameNested, FullCommandName<TName, TParentName>, TProgram['~types']['command']['~types']['argsSchema'], TProgram['~types']['command']['~types']['result'], RepathCommands<TProgram['~types']['command']['~types']['commands'], FullCommandName<TNameNested, FullCommandName<TName, TParentName>>>, [], TProgram['~types']['command']['~types']['async'], TContext & TContextProvided>, TAliases>] : AnyPadroneCommand[] extends TCommands ? [WithAliases<PadroneCommand<TNameNested, FullCommandName<TName, TParentName>, TProgram['~types']['command']['~types']['argsSchema'], TProgram['~types']['command']['~types']['result'], RepathCommands<TProgram['~types']['command']['~types']['commands'], FullCommandName<TNameNested, FullCommandName<TName, TParentName>>>, [], TProgram['~types']['command']['~types']['async'], TContext & TContextProvided>, TAliases>] : ReplaceOrAppendCommand<TCommands, TNameNested, WithAliases<PadroneCommand<TNameNested, FullCommandName<TName, TParentName>, TProgram['~types']['command']['~types']['argsSchema'], TProgram['~types']['command']['~types']['result'], RepathCommands<TProgram['~types']['command']['~types']['commands'], FullCommandName<TNameNested, FullCommandName<TName, TParentName>>>, [], TProgram['~types']['command']['~types']['async'], TContext & TContextProvided>, ResolvedAliases<TCommands, TNameNested, TAliases>>>, TParentArgs, TAsync, TContext, TContextProvided>;
102
+ <TNameNested extends string, TAliases extends string[] = [], TProgram extends CommandTypesBase = CommandTypesBase, TNewContext = unknown>(name: TNameNested | readonly [TNameNested, ...TAliases], program: TProgram, options: MountOptions<TContext & TContextProvided, TNewContext>): BuilderOrProgram<TReturn, TProgramName, TName, TParentName, TArgs, TRes, TCommands extends [] ? [WithAliases<PadroneCommand<TNameNested, FullCommandName<TName, TParentName>, TProgram['~types']['command']['~types']['argsSchema'], TProgram['~types']['command']['~types']['result'], RepathCommands<TProgram['~types']['command']['~types']['commands'], FullCommandName<TNameNested, FullCommandName<TName, TParentName>>>, [], TProgram['~types']['command']['~types']['async'], TNewContext>, TAliases>] : AnyPadroneCommand[] extends TCommands ? [WithAliases<PadroneCommand<TNameNested, FullCommandName<TName, TParentName>, TProgram['~types']['command']['~types']['argsSchema'], TProgram['~types']['command']['~types']['result'], RepathCommands<TProgram['~types']['command']['~types']['commands'], FullCommandName<TNameNested, FullCommandName<TName, TParentName>>>, [], TProgram['~types']['command']['~types']['async'], TNewContext>, TAliases>] : ReplaceOrAppendCommand<TCommands, TNameNested, WithAliases<PadroneCommand<TNameNested, FullCommandName<TName, TParentName>, TProgram['~types']['command']['~types']['argsSchema'], TProgram['~types']['command']['~types']['result'], RepathCommands<TProgram['~types']['command']['~types']['commands'], FullCommandName<TNameNested, FullCommandName<TName, TParentName>>>, [], TProgram['~types']['command']['~types']['async'], TNewContext>, ResolvedAliases<TCommands, TNameNested, TAliases>>>, TParentArgs, TAsync, TContext, TContextProvided>;
103
+ }; /** @deprecated Internal use only */
104
+ '~types': {
105
+ programName: TProgramName;
106
+ name: TName;
107
+ parentName: TParentName;
108
+ path: FullCommandName<TName, TParentName>;
109
+ aliases: [];
110
+ argsSchema: TArgs;
111
+ result: TRes;
112
+ commands: TCommands;
113
+ async: TAsync;
114
+ context: TContext;
115
+ contextProvided: TContextProvided;
116
+ command: PadroneCommand<TName, TParentName, TArgs, TRes, TCommands, [], TAsync, TContext, TContextProvided>;
117
+ };
118
+ };
119
+ type PadroneBuilder<TProgramName extends string = '', TName extends string = string, TParentName extends string = '', TArgs extends PadroneSchema = PadroneSchema<DefaultArgs>, TRes = void, TCommands extends [...AnyPadroneCommand[]] = [], TParentArgs extends PadroneSchema = PadroneSchema<void>, TAsync extends boolean = false, TContext = unknown, TContextProvided = unknown> = PadroneBuilderMethods<TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided, 'builder'>;
120
+ type PadroneProgram<TProgramName extends string = '', TName extends string = string, TParentName extends string = '', TArgs extends PadroneSchema = PadroneSchema<DefaultArgs>, TRes = void, TCommands extends [...AnyPadroneCommand[]] = [], TParentArgs extends PadroneSchema = PadroneSchema<void>, TAsync extends boolean = false, TContext = unknown, TContextProvided = unknown> = PadroneBuilderMethods<TProgramName, TName, TParentName, TArgs, TRes, TCommands, TParentArgs, TAsync, TContext, TContextProvided, 'program'> & {
121
+ /** Execute a command by name with pre-validated args (skips parsing and validation). @category Execution */run: <const TCommand extends PossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], true, true>>(name: TCommand | SafeString, args: NoInfer<GetArguments<'in', PickCommandByName<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TCommand>>>, prefs?: ContextParam<TContext>) => PadroneCommandResult<PickCommandByName<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TCommand>>; /** Parse and execute a string input through the full interceptor pipeline. @category Execution */
122
+ eval: <const TCommand extends PossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], true, true>>(input: TCommand | SafeString, prefs?: PadroneEvalPreferences & ContextParam<TContext>) => MaybePromiseCommandResult<PickCommandByPossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TCommand>, PickCommandByPossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TCommand>['~types']['async']>; /** Parse and execute from `process.argv` through the full interceptor pipeline. @category Execution */
123
+ cli: (prefs?: PadroneCliPreferences & ContextParam<TContext>) => MaybePromiseCommandResult<FlattenCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>]>, TAsync>; /** Parse and validate input without executing the action. @category Execution */
124
+ parse: <const TCommand extends PossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], true, false>>(input?: TCommand | SafeString) => MaybePromise<PadroneParseResult<PickCommandByPossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TCommand>>, PickCommandByPossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TCommand>['~types']['async']>; /** Serialize args back into a CLI string. @category Utility */
125
+ stringify: <const TCommand extends PossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], false, true>>(command?: TCommand | SafeString, args?: GetArguments<'out', PickCommandByPossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TCommand>>) => string; /** Look up a command definition by name. @category Utility */
126
+ find: <const TFind extends PossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], false, true>>(command: TFind | SafeString) => PickCommandByPossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], TFind> | undefined; /** Get a structured API representation of all commands. @category Utility */
127
+ api: () => PadroneAPI<PadroneCommand<'', '', TArgs, TRes, TCommands>>; /** Start an interactive REPL session. @category Execution */
128
+ repl: (options?: PadroneReplPreferences<PossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>]>>) => AsyncIterable<PadroneCommandResult<FlattenCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>]>>> & {
129
+ drain: () => Promise<PadroneDrainResult<PadroneCommandResult<FlattenCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>]>>[]>>;
130
+ }; /** Export as an AI SDK tool. @category Utility */
131
+ tool: () => Tool<{
132
+ command: string;
133
+ }>; /** Generate help text for a command. @category Utility */
134
+ help: <const TCommand extends PossibleCommands<[PadroneCommand<'', '', TArgs, TRes, TCommands>], false, true>>(command?: TCommand, prefs?: HelpPreferences) => string; /** Generate shell completion script. @category Utility */
135
+ completion: (shell?: 'bash' | 'zsh' | 'fish' | 'powershell') => Promise<string>; /** Start a Model Context Protocol server. @category Server */
136
+ mcp: (prefs?: PadroneMcpPreferences) => Promise<void>; /** Start a REST HTTP server with OpenAPI docs. @category Server */
137
+ serve: (prefs?: PadroneServePreferences) => Promise<void>; /** Read-only metadata about the program (name, version, description, commands, etc.). @category Utility */
138
+ info: PadroneProgramMeta<TProgramName>;
139
+ };
140
+ type AnyPadroneProgram = PadroneProgram<string, string, string, any, any, [...AnyPadroneCommand[]]>;
141
+ /**
142
+ * A build-time extension that transforms a builder/program.
143
+ * Extensions can add commands, arguments, interceptors, configure settings, etc.
144
+ *
145
+ * Use with `.extend(extension)`:
146
+ * ```ts
147
+ * const withAuth = (b) => b.arguments(authSchema).command('login', ...)
148
+ * program.extend(withAuth)
149
+ * ```
150
+ */
151
+ type PadroneExtension<TIn extends CommandTypesBase = CommandTypesBase, TOut extends CommandTypesBase = TIn> = (builder: TIn) => TOut;
152
+ /**
153
+ * Default context type for commands defined with `defineCommand()`.
154
+ * Includes optional context properties provided by common extensions (logger, tracing, progress).
155
+ *
156
+ * Override globally via module augmentation to add your application's context:
157
+ * ```ts
158
+ * declare module 'padrone' {
159
+ * interface DefineCommandContext {
160
+ * db: Database;
161
+ * }
162
+ * }
163
+ * ```
164
+ */
165
+ interface DefineCommandContext {
166
+ logger?: PadroneLogger;
167
+ tracing?: PadroneTracer;
168
+ progress?: PadroneProgress;
169
+ }
170
+ /** Error brand returned by `.command()` when a `defineCommand.requires()` context requirement is not satisfied. */
171
+ type DefineCommandRequiresError = {
172
+ readonly '~error': 'Required context not satisfied. Ensure required interceptors are registered on the program.';
173
+ };
174
+ /**
175
+ * Type for a command builder callback used with `.command()`.
176
+ * Use this when defining commands in separate files where full return type inference isn't needed.
177
+ *
178
+ * For full type preservation at the parent, use `defineCommand()` instead.
179
+ *
180
+ * @example
181
+ * ```ts
182
+ * // my-command.ts
183
+ * export const myCommand: DefineCommand = (c) =>
184
+ * c.arguments(z.object({ name: z.string() }))
185
+ * .action((args) => console.log(args.name));
186
+ *
187
+ * // cli.ts
188
+ * createPadrone('test').command('my-command', myCommand)
189
+ * ```
190
+ */
191
+ type DefineCommand<TContext = unknown, TParentArgs extends PadroneSchema = PadroneSchema> = (builder: PadroneBuilder<string, string, string, PadroneSchema<void>, void, [], TParentArgs, false, TContext, DefineCommandContext>) => CommandTypesBase;
192
+ /**
193
+ * Builder returned by `defineCommand()` (no-arg form).
194
+ * Call `.requires<T>()` to declare context dependencies, then `.command()` to provide the builder callback.
195
+ *
196
+ * @example
197
+ * ```ts
198
+ * const adminCommand = defineCommand()
199
+ * .requires<{ adminDb: AdminDB }>()
200
+ * .define((c) => c.action((_args, ctx) => ctx.context.adminDb.query(...)));
201
+ * ```
202
+ */
203
+ type DefineCommandBuilder<TContextProvided = DefineCommandContext, TBrand = unknown> = {
204
+ /** Declare context types this command requires. Purely type-level — no runtime effect. */requires: <TRequires>() => DefineCommandBuilder<DefineCommandContext & TRequires, {
205
+ '~contextRequires': (ctx: TRequires) => void;
206
+ }>; /** Provide the command builder callback. */
207
+ define: <TContext = unknown, TOut extends CommandTypesBase = CommandTypesBase>(fn: (builder: PadroneBuilder<string, string, string, PadroneSchema<void>, void, [], any, false, TContext, TContextProvided>) => TOut) => typeof fn & TBrand;
208
+ };
209
+ type DefaultArgs = Record<string, unknown> | void;
210
+ //#endregion
211
+ export { AnyPadroneBuilder, AnyPadroneProgram, DefineCommand, DefineCommandBuilder, DefineCommandContext, DefineCommandRequiresError, PadroneBuilder, PadroneBuilderMethods, PadroneExtension, PadroneProgram };
212
+ //# sourceMappingURL=builder.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.mts","names":[],"sources":["../../src/types/builder.ts"],"mappings":"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"}