terminal-pilot 0.0.45 → 0.0.47

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 (351) hide show
  1. package/dist/cli.js +175 -50
  2. package/dist/cli.js.map +4 -4
  3. package/dist/commands/close-session.js +36 -0
  4. package/dist/commands/close-session.js.map +3 -3
  5. package/dist/commands/create-session.js +36 -0
  6. package/dist/commands/create-session.js.map +3 -3
  7. package/dist/commands/daemon-runtime.js +36 -0
  8. package/dist/commands/daemon-runtime.js.map +3 -3
  9. package/dist/commands/fill.js +36 -0
  10. package/dist/commands/fill.js.map +3 -3
  11. package/dist/commands/get-session.js +36 -0
  12. package/dist/commands/get-session.js.map +3 -3
  13. package/dist/commands/index.js +36 -0
  14. package/dist/commands/index.js.map +3 -3
  15. package/dist/commands/install.js +36 -0
  16. package/dist/commands/install.js.map +3 -3
  17. package/dist/commands/installer.js +36 -0
  18. package/dist/commands/installer.js.map +3 -3
  19. package/dist/commands/list-sessions.js +36 -0
  20. package/dist/commands/list-sessions.js.map +3 -3
  21. package/dist/commands/press-key.js +36 -0
  22. package/dist/commands/press-key.js.map +3 -3
  23. package/dist/commands/read-history.js +36 -0
  24. package/dist/commands/read-history.js.map +3 -3
  25. package/dist/commands/read-screen.js +36 -0
  26. package/dist/commands/read-screen.js.map +3 -3
  27. package/dist/commands/resize.js +36 -0
  28. package/dist/commands/resize.js.map +3 -3
  29. package/dist/commands/runtime.js +36 -0
  30. package/dist/commands/runtime.js.map +3 -3
  31. package/dist/commands/screenshot.js +36 -0
  32. package/dist/commands/screenshot.js.map +3 -3
  33. package/dist/commands/send-signal.js +36 -0
  34. package/dist/commands/send-signal.js.map +3 -3
  35. package/dist/commands/type.js +36 -0
  36. package/dist/commands/type.js.map +3 -3
  37. package/dist/commands/uninstall.js +36 -0
  38. package/dist/commands/uninstall.js.map +3 -3
  39. package/dist/commands/wait-for-exit.js +36 -0
  40. package/dist/commands/wait-for-exit.js.map +3 -3
  41. package/dist/commands/wait-for.js +36 -0
  42. package/dist/commands/wait-for.js.map +3 -3
  43. package/dist/composition.json +36 -1
  44. package/dist/testing/cli-repl.js +175 -50
  45. package/dist/testing/cli-repl.js.map +4 -4
  46. package/dist/testing/qa-cli.js +175 -50
  47. package/dist/testing/qa-cli.js.map +4 -4
  48. package/node_modules/@poe-code/agent-defs/package.json +0 -2
  49. package/node_modules/@poe-code/agent-skill-config/package.json +0 -2
  50. package/node_modules/@poe-code/config-mutations/package.json +0 -7
  51. package/node_modules/@poe-code/frontmatter/package.json +0 -5
  52. package/node_modules/fast-string-truncated-width/dist/index.d.ts +4 -0
  53. package/node_modules/fast-string-truncated-width/dist/index.js +111 -0
  54. package/node_modules/fast-string-truncated-width/dist/types.d.ts +19 -0
  55. package/node_modules/fast-string-truncated-width/dist/types.js +2 -0
  56. package/node_modules/fast-string-truncated-width/dist/utils.d.ts +4 -0
  57. package/node_modules/fast-string-truncated-width/dist/utils.js +20 -0
  58. package/node_modules/fast-string-truncated-width/license +21 -0
  59. package/node_modules/fast-string-truncated-width/package.json +35 -0
  60. package/node_modules/fast-string-truncated-width/readme.md +59 -0
  61. package/node_modules/fast-string-width/dist/index.d.ts +4 -0
  62. package/node_modules/fast-string-width/dist/index.js +14 -0
  63. package/node_modules/fast-string-width/license +21 -0
  64. package/node_modules/fast-string-width/package.json +34 -0
  65. package/node_modules/fast-string-width/readme.md +42 -0
  66. package/node_modules/fast-wrap-ansi/LICENSE +23 -0
  67. package/node_modules/fast-wrap-ansi/README.md +26 -0
  68. package/node_modules/fast-wrap-ansi/lib/main.d.ts +6 -0
  69. package/node_modules/fast-wrap-ansi/lib/main.js +218 -0
  70. package/node_modules/fast-wrap-ansi/package.json +51 -0
  71. package/node_modules/jsonc-parser/CHANGELOG.md +76 -0
  72. package/node_modules/jsonc-parser/LICENSE.md +21 -0
  73. package/node_modules/jsonc-parser/README.md +364 -0
  74. package/node_modules/jsonc-parser/SECURITY.md +41 -0
  75. package/node_modules/jsonc-parser/lib/esm/impl/edit.js +185 -0
  76. package/node_modules/jsonc-parser/lib/esm/impl/format.js +261 -0
  77. package/node_modules/jsonc-parser/lib/esm/impl/parser.js +659 -0
  78. package/node_modules/jsonc-parser/lib/esm/impl/scanner.js +443 -0
  79. package/node_modules/jsonc-parser/lib/esm/impl/string-intern.js +29 -0
  80. package/node_modules/jsonc-parser/lib/esm/main.d.ts +351 -0
  81. package/node_modules/jsonc-parser/lib/esm/main.js +178 -0
  82. package/node_modules/jsonc-parser/lib/umd/impl/edit.js +201 -0
  83. package/node_modules/jsonc-parser/lib/umd/impl/format.js +275 -0
  84. package/node_modules/jsonc-parser/lib/umd/impl/parser.js +682 -0
  85. package/node_modules/jsonc-parser/lib/umd/impl/scanner.js +456 -0
  86. package/node_modules/jsonc-parser/lib/umd/impl/string-intern.js +42 -0
  87. package/node_modules/jsonc-parser/lib/umd/main.d.ts +351 -0
  88. package/node_modules/jsonc-parser/lib/umd/main.js +194 -0
  89. package/node_modules/jsonc-parser/package.json +37 -0
  90. package/node_modules/sisteransi/license +21 -0
  91. package/node_modules/sisteransi/package.json +34 -0
  92. package/node_modules/sisteransi/readme.md +113 -0
  93. package/node_modules/sisteransi/src/index.js +58 -0
  94. package/node_modules/sisteransi/src/sisteransi.d.ts +35 -0
  95. package/node_modules/smol-toml/LICENSE +24 -0
  96. package/node_modules/smol-toml/README.md +239 -0
  97. package/node_modules/smol-toml/dist/date.d.ts +41 -0
  98. package/node_modules/smol-toml/dist/date.js +127 -0
  99. package/node_modules/smol-toml/dist/error.d.ts +38 -0
  100. package/node_modules/smol-toml/dist/error.js +63 -0
  101. package/node_modules/smol-toml/dist/extract.d.ts +30 -0
  102. package/node_modules/smol-toml/dist/extract.js +100 -0
  103. package/node_modules/smol-toml/dist/index.cjs +897 -0
  104. package/node_modules/smol-toml/dist/index.d.ts +43 -0
  105. package/node_modules/smol-toml/dist/index.js +33 -0
  106. package/node_modules/smol-toml/dist/parse.d.ts +37 -0
  107. package/node_modules/smol-toml/dist/parse.js +148 -0
  108. package/node_modules/smol-toml/dist/primitive.d.ts +31 -0
  109. package/node_modules/smol-toml/dist/primitive.js +179 -0
  110. package/node_modules/smol-toml/dist/stringify.d.ts +31 -0
  111. package/node_modules/smol-toml/dist/stringify.js +167 -0
  112. package/node_modules/smol-toml/dist/struct.d.ts +32 -0
  113. package/node_modules/smol-toml/dist/struct.js +184 -0
  114. package/node_modules/smol-toml/dist/util.d.ts +42 -0
  115. package/node_modules/smol-toml/dist/util.js +111 -0
  116. package/node_modules/smol-toml/package.json +54 -0
  117. package/node_modules/toolcraft-design/package.json +0 -7
  118. package/node_modules/yaml/LICENSE +13 -0
  119. package/node_modules/yaml/README.md +172 -0
  120. package/node_modules/yaml/bin.mjs +11 -0
  121. package/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  122. package/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  123. package/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  124. package/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  125. package/node_modules/yaml/browser/dist/compose/composer.js +219 -0
  126. package/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  127. package/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  128. package/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  129. package/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  130. package/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  131. package/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +225 -0
  132. package/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  133. package/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  134. package/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  135. package/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  136. package/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  137. package/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  138. package/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  139. package/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  140. package/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  141. package/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  142. package/node_modules/yaml/browser/dist/errors.js +57 -0
  143. package/node_modules/yaml/browser/dist/index.js +17 -0
  144. package/node_modules/yaml/browser/dist/log.js +11 -0
  145. package/node_modules/yaml/browser/dist/nodes/Alias.js +116 -0
  146. package/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  147. package/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  148. package/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  149. package/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  150. package/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  151. package/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  152. package/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  153. package/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  154. package/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  155. package/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  156. package/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  157. package/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  158. package/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  159. package/node_modules/yaml/browser/dist/parse/lexer.js +721 -0
  160. package/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  161. package/node_modules/yaml/browser/dist/parse/parser.js +975 -0
  162. package/node_modules/yaml/browser/dist/public-api.js +102 -0
  163. package/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  164. package/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  165. package/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  166. package/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  167. package/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  168. package/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  169. package/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  170. package/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  171. package/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  172. package/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  173. package/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  174. package/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  175. package/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  176. package/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  177. package/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  178. package/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +67 -0
  179. package/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  180. package/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  181. package/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  182. package/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  183. package/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  184. package/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  185. package/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  186. package/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  187. package/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  188. package/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  189. package/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +25 -0
  190. package/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  191. package/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  192. package/node_modules/yaml/browser/dist/util.js +11 -0
  193. package/node_modules/yaml/browser/dist/visit.js +233 -0
  194. package/node_modules/yaml/browser/index.js +5 -0
  195. package/node_modules/yaml/browser/package.json +3 -0
  196. package/node_modules/yaml/dist/cli.d.ts +8 -0
  197. package/node_modules/yaml/dist/cli.mjs +201 -0
  198. package/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  199. package/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  200. package/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  201. package/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  202. package/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  203. package/node_modules/yaml/dist/compose/compose-node.js +112 -0
  204. package/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  205. package/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  206. package/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  207. package/node_modules/yaml/dist/compose/composer.js +224 -0
  208. package/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  209. package/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  210. package/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  211. package/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  212. package/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  213. package/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  214. package/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  215. package/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  216. package/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  217. package/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  218. package/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  219. package/node_modules/yaml/dist/compose/resolve-flow-scalar.js +227 -0
  220. package/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  221. package/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  222. package/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  223. package/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  224. package/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  225. package/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  226. package/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  227. package/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  228. package/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  229. package/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  230. package/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  231. package/node_modules/yaml/dist/doc/Document.js +337 -0
  232. package/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  233. package/node_modules/yaml/dist/doc/anchors.js +76 -0
  234. package/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  235. package/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  236. package/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  237. package/node_modules/yaml/dist/doc/createNode.js +90 -0
  238. package/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  239. package/node_modules/yaml/dist/doc/directives.js +178 -0
  240. package/node_modules/yaml/dist/errors.d.ts +21 -0
  241. package/node_modules/yaml/dist/errors.js +62 -0
  242. package/node_modules/yaml/dist/index.d.ts +25 -0
  243. package/node_modules/yaml/dist/index.js +50 -0
  244. package/node_modules/yaml/dist/log.d.ts +3 -0
  245. package/node_modules/yaml/dist/log.js +19 -0
  246. package/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  247. package/node_modules/yaml/dist/nodes/Alias.js +118 -0
  248. package/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  249. package/node_modules/yaml/dist/nodes/Collection.js +151 -0
  250. package/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  251. package/node_modules/yaml/dist/nodes/Node.js +40 -0
  252. package/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  253. package/node_modules/yaml/dist/nodes/Pair.js +39 -0
  254. package/node_modules/yaml/dist/nodes/Scalar.d.ts +47 -0
  255. package/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  256. package/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  257. package/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  258. package/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  259. package/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  260. package/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  261. package/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  262. package/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  263. package/node_modules/yaml/dist/nodes/identity.js +53 -0
  264. package/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  265. package/node_modules/yaml/dist/nodes/toJS.js +39 -0
  266. package/node_modules/yaml/dist/options.d.ts +350 -0
  267. package/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  268. package/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  269. package/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  270. package/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  271. package/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  272. package/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  273. package/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  274. package/node_modules/yaml/dist/parse/cst.js +112 -0
  275. package/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  276. package/node_modules/yaml/dist/parse/lexer.js +723 -0
  277. package/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  278. package/node_modules/yaml/dist/parse/line-counter.js +41 -0
  279. package/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  280. package/node_modules/yaml/dist/parse/parser.js +980 -0
  281. package/node_modules/yaml/dist/public-api.d.ts +44 -0
  282. package/node_modules/yaml/dist/public-api.js +107 -0
  283. package/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  284. package/node_modules/yaml/dist/schema/Schema.js +39 -0
  285. package/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  286. package/node_modules/yaml/dist/schema/common/map.js +19 -0
  287. package/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  288. package/node_modules/yaml/dist/schema/common/null.js +17 -0
  289. package/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  290. package/node_modules/yaml/dist/schema/common/seq.js +19 -0
  291. package/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  292. package/node_modules/yaml/dist/schema/common/string.js +16 -0
  293. package/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  294. package/node_modules/yaml/dist/schema/core/bool.js +21 -0
  295. package/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  296. package/node_modules/yaml/dist/schema/core/float.js +47 -0
  297. package/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  298. package/node_modules/yaml/dist/schema/core/int.js +42 -0
  299. package/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  300. package/node_modules/yaml/dist/schema/core/schema.js +25 -0
  301. package/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  302. package/node_modules/yaml/dist/schema/json/schema.js +64 -0
  303. package/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  304. package/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  305. package/node_modules/yaml/dist/schema/tags.js +99 -0
  306. package/node_modules/yaml/dist/schema/types.d.ts +92 -0
  307. package/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  308. package/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  309. package/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  310. package/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  311. package/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  312. package/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  313. package/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  314. package/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  315. package/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  316. package/node_modules/yaml/dist/schema/yaml-1.1/merge.js +71 -0
  317. package/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  318. package/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  319. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  320. package/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  321. package/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  322. package/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  323. package/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  324. package/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  325. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  326. package/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  327. package/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  328. package/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  329. package/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  330. package/node_modules/yaml/dist/stringify/stringify.js +132 -0
  331. package/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  332. package/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  333. package/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  334. package/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  335. package/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  336. package/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  337. package/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  338. package/node_modules/yaml/dist/stringify/stringifyNumber.js +27 -0
  339. package/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  340. package/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  341. package/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  342. package/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  343. package/node_modules/yaml/dist/test-events.d.ts +4 -0
  344. package/node_modules/yaml/dist/test-events.js +134 -0
  345. package/node_modules/yaml/dist/util.d.ts +16 -0
  346. package/node_modules/yaml/dist/util.js +28 -0
  347. package/node_modules/yaml/dist/visit.d.ts +102 -0
  348. package/node_modules/yaml/dist/visit.js +236 -0
  349. package/node_modules/yaml/package.json +97 -0
  350. package/node_modules/yaml/util.js +2 -0
  351. package/package.json +12 -6
@@ -21,15 +21,50 @@
21
21
  "version": "0.0.1",
22
22
  "license": "MIT"
23
23
  },
24
+ {
25
+ "name": "fast-string-truncated-width",
26
+ "version": "3.0.3",
27
+ "license": "MIT"
28
+ },
29
+ {
30
+ "name": "fast-string-width",
31
+ "version": "3.0.2",
32
+ "license": "MIT"
33
+ },
34
+ {
35
+ "name": "fast-wrap-ansi",
36
+ "version": "0.2.2",
37
+ "license": "MIT"
38
+ },
39
+ {
40
+ "name": "jsonc-parser",
41
+ "version": "3.3.1",
42
+ "license": "MIT"
43
+ },
44
+ {
45
+ "name": "sisteransi",
46
+ "version": "1.0.5",
47
+ "license": "MIT"
48
+ },
49
+ {
50
+ "name": "smol-toml",
51
+ "version": "1.6.1",
52
+ "license": "BSD-3-Clause"
53
+ },
24
54
  {
25
55
  "name": "terminal-pilot",
26
- "version": "0.0.45",
56
+ "version": "0.0.47",
27
57
  "license": "MIT"
28
58
  },
29
59
  {
30
60
  "name": "toolcraft-design",
31
61
  "version": "0.0.2",
32
62
  "license": "MIT"
63
+ },
64
+ {
65
+ "name": "yaml",
66
+ "version": "2.9.0",
67
+ "license": "ISC"
33
68
  }
34
69
  ]
35
70
  }
@@ -631,6 +631,42 @@ function formatReceivedDiscriminator(value) {
631
631
  return receivedValue(value);
632
632
  }
633
633
 
634
+ // ../toolcraft-schema/src/json-schema/compiler.ts
635
+ var draftTypes = ["null", "boolean", "object", "array", "number", "integer", "string"];
636
+ var draftTypeSet = new Set(draftTypes);
637
+ var metaSchemaKeywordProperties = {
638
+ type: {
639
+ anyOf: [
640
+ { enum: draftTypes },
641
+ { type: "array", items: { enum: draftTypes }, minItems: 1, uniqueItems: true }
642
+ ]
643
+ },
644
+ minLength: { type: "integer", minimum: 0 },
645
+ maxLength: { type: "integer", minimum: 0 },
646
+ minItems: { type: "integer", minimum: 0 },
647
+ maxItems: { type: "integer", minimum: 0 },
648
+ minProperties: { type: "integer", minimum: 0 },
649
+ maxProperties: { type: "integer", minimum: 0 }
650
+ };
651
+ var builtInRegistry = {
652
+ "https://json-schema.org/draft/2020-12/schema": {
653
+ $id: "https://json-schema.org/draft/2020-12/schema",
654
+ type: ["object", "boolean"],
655
+ properties: {
656
+ ...metaSchemaKeywordProperties,
657
+ $defs: { type: "object", additionalProperties: { $ref: "#" } }
658
+ }
659
+ },
660
+ "http://json-schema.org/draft-07/schema": {
661
+ $id: "http://json-schema.org/draft-07/schema#",
662
+ type: ["object", "boolean"],
663
+ properties: {
664
+ ...metaSchemaKeywordProperties,
665
+ definitions: { type: "object", additionalProperties: { $ref: "#" } }
666
+ }
667
+ }
668
+ };
669
+
634
670
  // ../toolcraft-schema/src/index.ts
635
671
  function assertValidEnumValues(values) {
636
672
  if (values.length === 0) {
@@ -3544,7 +3580,7 @@ function damerauLevenshtein(left, right) {
3544
3580
  // ../toolcraft/src/stream.ts
3545
3581
  function validationMessage(schema, value) {
3546
3582
  const result = validate(schema, value);
3547
- return result.ok ? void 0 : result.issues.map((issue) => issue.message).join("; ");
3583
+ return result.ok ? void 0 : result.issues.map((issue2) => issue2.message).join("; ");
3548
3584
  }
3549
3585
  function createManagedStream(options) {
3550
3586
  const controller = new AbortController();
@@ -4777,6 +4813,41 @@ async function writeErrorReport(context) {
4777
4813
  };
4778
4814
  }
4779
4815
 
4816
+ // ../toolcraft/src/human-in-loop/wiring.ts
4817
+ var WIRING_HINT = 'pass { humanInLoop: createHumanInLoop({ provider, ... }) } from "toolcraft/human-in-loop"';
4818
+ function assertHumanInLoopWired(root, humanInLoop) {
4819
+ if (humanInLoop !== void 0) {
4820
+ return;
4821
+ }
4822
+ const commandPath = findHumanInLoopCommandPath(root, []);
4823
+ if (commandPath !== void 0) {
4824
+ throw new UserError(
4825
+ `command '${commandPath}' declares humanInLoop but no runtime is wired \u2014 ${WIRING_HINT}`
4826
+ );
4827
+ }
4828
+ }
4829
+ function mergeApprovalsRoot(root, options) {
4830
+ if (options.approvals !== true) {
4831
+ return root;
4832
+ }
4833
+ if (options.humanInLoop === void 0) {
4834
+ throw new UserError(`approvals: true requires a wired humanInLoop runtime \u2014 ${WIRING_HINT}`);
4835
+ }
4836
+ return options.humanInLoop.mergeApprovalsGroup(root);
4837
+ }
4838
+ function findHumanInLoopCommandPath(node, path17) {
4839
+ if (node.kind === "command") {
4840
+ return node.humanInLoop ? path17.join(".") || node.name : void 0;
4841
+ }
4842
+ for (const child of node.children) {
4843
+ const found = findHumanInLoopCommandPath(child, [...path17, child.name]);
4844
+ if (found !== void 0) {
4845
+ return found;
4846
+ }
4847
+ }
4848
+ return void 0;
4849
+ }
4850
+
4780
4851
  // ../toolcraft/src/number-schema.ts
4781
4852
  function isValidNumberSchemaValue(value, schema) {
4782
4853
  return typeof value === "number" && Number.isFinite(value) && (schema.jsonType !== "integer" || Number.isInteger(value)) && (schema.minimum === void 0 || value >= schema.minimum) && (schema.maximum === void 0 || value <= schema.maximum);
@@ -4911,11 +4982,11 @@ function isPlainObject3(value) {
4911
4982
 
4912
4983
  // ../toolcraft/src/renderer.ts
4913
4984
  import YAML from "yaml";
4914
- function isObject(value) {
4985
+ function isObject2(value) {
4915
4986
  return value !== null && typeof value === "object" && !Array.isArray(value);
4916
4987
  }
4917
4988
  function isMcpCallToolResult(value) {
4918
- if (!isObject(value)) {
4989
+ if (!isObject2(value)) {
4919
4990
  return false;
4920
4991
  }
4921
4992
  const hasContent = Array.isArray(value.content);
@@ -4928,11 +4999,11 @@ function isMcpCallToolResult(value) {
4928
4999
  );
4929
5000
  }
4930
5001
  function isMcpTextContent(value) {
4931
- return isObject(value) && value.type === "text" && typeof value.text === "string";
5002
+ return isObject2(value) && value.type === "text" && typeof value.text === "string";
4932
5003
  }
4933
5004
  function extractMcpPayload(envelope) {
4934
5005
  const structuredContent = envelope.structuredContent;
4935
- if (isObject(structuredContent) && "result" in structuredContent) {
5006
+ if (isObject2(structuredContent) && "result" in structuredContent) {
4936
5007
  return structuredContent.result;
4937
5008
  }
4938
5009
  if (structuredContent !== void 0) {
@@ -4954,10 +5025,10 @@ function unwrapMcpEnvelope(result) {
4954
5025
  };
4955
5026
  }
4956
5027
  function isArrayOfObjects(value) {
4957
- return Array.isArray(value) && value.every((entry) => isObject(entry));
5028
+ return Array.isArray(value) && value.every((entry) => isObject2(entry));
4958
5029
  }
4959
5030
  function isNonEmptyArrayOfObjects(value) {
4960
- return Array.isArray(value) && value.length > 0 && value.every((entry) => isObject(entry));
5031
+ return Array.isArray(value) && value.length > 0 && value.every((entry) => isObject2(entry));
4961
5032
  }
4962
5033
  function stringifyValue(value) {
4963
5034
  if (value === void 0) {
@@ -5004,7 +5075,7 @@ function detailRows(result, depth = 0) {
5004
5075
  const rows = [];
5005
5076
  for (const [key, value] of Object.entries(result)) {
5006
5077
  const label = `${" ".repeat(depth)}${humanizeKey(key)}`;
5007
- if (isObject(value)) {
5078
+ if (isObject2(value)) {
5008
5079
  if (Object.keys(value).length === 0) {
5009
5080
  rows.push({ label, value: "{}" });
5010
5081
  continue;
@@ -5037,7 +5108,7 @@ function displayScalar(value) {
5037
5108
  if (typeof value === "boolean") {
5038
5109
  return value ? "Yes" : "No";
5039
5110
  }
5040
- if (Array.isArray(value) && value.every((entry) => !isObject(entry) && !Array.isArray(entry))) {
5111
+ if (Array.isArray(value) && value.every((entry) => !isObject2(entry) && !Array.isArray(entry))) {
5041
5112
  return value.map((entry) => displayScalar(entry)).join(", ") || "\u2014";
5042
5113
  }
5043
5114
  return stringifyValue(value) || "\u2014";
@@ -5058,10 +5129,10 @@ function displayRowValue(value) {
5058
5129
  return isUrl(value) ? compactUrl(value) : displayScalar(value);
5059
5130
  }
5060
5131
  function directScalarRows(result) {
5061
- return Object.entries(result).filter(([, value]) => !isObject(value) && !Array.isArray(value)).map(([key, value]) => ({ label: humanizeKey(key), value: displayRowValue(value) }));
5132
+ return Object.entries(result).filter(([, value]) => !isObject2(value) && !Array.isArray(value)).map(([key, value]) => ({ label: humanizeKey(key), value: displayRowValue(value) }));
5062
5133
  }
5063
5134
  function directObjectSections(result) {
5064
- return Object.entries(result).filter(([, value]) => isObject(value)).map(([key, value]) => ({ title: humanizeKey(key), rows: detailRows(value) })).filter((section) => section.rows.length > 0);
5135
+ return Object.entries(result).filter(([, value]) => isObject2(value)).map(([key, value]) => ({ title: humanizeKey(key), rows: detailRows(value) })).filter((section) => section.rows.length > 0);
5065
5136
  }
5066
5137
  function directArrayObjectSections(result) {
5067
5138
  return Object.entries(result).flatMap(([key, value]) => {
@@ -5168,7 +5239,7 @@ function autoRender(command, result, output, primitives) {
5168
5239
  if (output === "rich" && Array.isArray(result) && result.every((value) => typeof value === "string")) {
5169
5240
  return result.join("\n");
5170
5241
  }
5171
- if (isObject(result)) {
5242
+ if (isObject2(result)) {
5172
5243
  if (output === "md") {
5173
5244
  return renderObjectMarkdown(result);
5174
5245
  }
@@ -5425,8 +5496,6 @@ function validateServices(services) {
5425
5496
  configureTheme({ brand: "blue", label: "Toolcraft" });
5426
5497
  var NULL_OPTION_VALUE = /* @__PURE__ */ Symbol("toolcraft.cli.null");
5427
5498
  var optionalModulePaths = {
5428
- approvals: "./human-in-loop/approvals-commands.js",
5429
- humanInLoop: "./human-in-loop/gate.js",
5430
5499
  mcpProxy: "./mcp-proxy.js"
5431
5500
  };
5432
5501
  function importOptionalModule(specifier) {
@@ -6065,14 +6134,37 @@ function createOption(field, globalLongOptionFlags) {
6065
6134
  return [option];
6066
6135
  }
6067
6136
  function resolveCLIControls(controls) {
6137
+ const outputFormats = typeof controls?.output === "object" ? controls.output.formats ?? {} : {};
6138
+ validateOutputFormats(outputFormats);
6068
6139
  return {
6069
6140
  debug: controls?.debug === true,
6070
6141
  logLevel: controls?.logLevel === true,
6071
- output: controls?.output === true,
6142
+ output: controls?.output === true || typeof controls?.output === "object",
6143
+ outputFormats,
6072
6144
  verbose: controls?.verbose === true,
6073
6145
  yes: controls?.yes === true
6074
6146
  };
6075
6147
  }
6148
+ var BUILT_IN_OUTPUT_FORMATS = ["rich", "md", "markdown", "json"];
6149
+ function outputFormatNames(controls) {
6150
+ return [...BUILT_IN_OUTPUT_FORMATS, ...Object.keys(controls.outputFormats)];
6151
+ }
6152
+ function validateOutputFormats(formats) {
6153
+ for (const [name, renderer] of Object.entries(formats)) {
6154
+ const hasWhitespace = name.split("").some((character) => character.trim() === "");
6155
+ if (name.length === 0 || name.trim() !== name || hasWhitespace) {
6156
+ throw new ToolcraftBugError(
6157
+ `Custom output format names must be non-empty and contain no whitespace: ${JSON.stringify(name)}.`
6158
+ );
6159
+ }
6160
+ if (BUILT_IN_OUTPUT_FORMATS.includes(name)) {
6161
+ throw new ToolcraftBugError(`Custom output format "${name}" conflicts with a built-in format.`);
6162
+ }
6163
+ if (typeof renderer !== "function") {
6164
+ throw new ToolcraftBugError(`Custom output format "${name}" must define a renderer function.`);
6165
+ }
6166
+ }
6167
+ }
6076
6168
  function getGlobalLongOptionFlags(presetsEnabled, versionEnabled, controls) {
6077
6169
  const flags = [];
6078
6170
  if (presetsEnabled) {
@@ -6557,7 +6649,7 @@ function formatGlobalOptionsLine(ctx) {
6557
6649
  flags.push("--yes");
6558
6650
  }
6559
6651
  if (ctx.controls.output) {
6560
- flags.push("--output <format>");
6652
+ flags.push(`--output <${outputFormatNames(ctx.controls).join("|")}>`);
6561
6653
  }
6562
6654
  if (ctx.controls.verbose) {
6563
6655
  flags.push("-v, --verbose");
@@ -7002,17 +7094,21 @@ function addGlobalOptions(command, presetsEnabled, controls) {
7002
7094
  options.push(new Option("--yes", "Accept defaults and skip prompts."));
7003
7095
  }
7004
7096
  if (controls.output) {
7097
+ const choices2 = outputFormatNames(controls);
7005
7098
  options.push(
7006
- new Option("--output <format>", "Output format.").argParser((value) => {
7099
+ new Option("--output <format>", "Output format.").choices(choices2).argParser((value) => {
7007
7100
  if (value === "rich" || value === "md" || value === "json") {
7008
7101
  return value;
7009
7102
  }
7010
7103
  if (value === "markdown") {
7011
7104
  return "md";
7012
7105
  }
7106
+ if (Object.hasOwn(controls.outputFormats, value)) {
7107
+ return value;
7108
+ }
7013
7109
  throw new InvalidArgumentError(
7014
- formatInvalidEnumMessage("--output", value, ["rich", "md", "markdown", "json"], {
7015
- candidates: ["rich", "markdown", "json"],
7110
+ formatInvalidEnumMessage("--output", value, choices2, {
7111
+ candidates: ["rich", "markdown", "json", ...Object.keys(controls.outputFormats)],
7016
7112
  threshold: 3
7017
7113
  })
7018
7114
  );
@@ -7202,11 +7298,11 @@ function resolveOutput(resolvedFlags) {
7202
7298
  return "json";
7203
7299
  }
7204
7300
  if (resolvedFlags.output !== void 0) {
7205
- return resolvedFlags.output;
7301
+ return resolvedFlags.output === "markdown" ? "md" : resolvedFlags.output;
7206
7302
  }
7207
7303
  return "rich";
7208
7304
  }
7209
- function resolveOutputFromArgv(argv) {
7305
+ function resolveOutputFromArgv(argv, formats = {}) {
7210
7306
  for (let index = 0; index < argv.length; index += 1) {
7211
7307
  const token = argv[index] ?? "";
7212
7308
  if (token === "--json") {
@@ -7223,6 +7319,9 @@ function resolveOutputFromArgv(argv) {
7223
7319
  if (value === "markdown") {
7224
7320
  return "md";
7225
7321
  }
7322
+ if (value !== void 0 && Object.hasOwn(formats, value)) {
7323
+ return value;
7324
+ }
7226
7325
  continue;
7227
7326
  }
7228
7327
  if (token.startsWith("--output=")) {
@@ -7233,17 +7332,21 @@ function resolveOutputFromArgv(argv) {
7233
7332
  if (value === "markdown") {
7234
7333
  return "md";
7235
7334
  }
7335
+ if (Object.hasOwn(formats, value)) {
7336
+ return value;
7337
+ }
7236
7338
  }
7237
7339
  }
7238
7340
  return "rich";
7239
7341
  }
7240
- var DESIGN_SYSTEM_OUTPUT_BY_MODE = {
7241
- rich: "terminal",
7242
- md: "markdown",
7243
- json: "json"
7244
- };
7245
7342
  function toDesignSystemOutput(output) {
7246
- return DESIGN_SYSTEM_OUTPUT_BY_MODE[output];
7343
+ if (output === "md") {
7344
+ return "markdown";
7345
+ }
7346
+ if (output === "json") {
7347
+ return "json";
7348
+ }
7349
+ return "terminal";
7247
7350
  }
7248
7351
  async function withOutputFormat2(output, fn) {
7249
7352
  const previous = process.env.OUTPUT_FORMAT;
@@ -8386,9 +8489,9 @@ async function resolveParams(fields, dynamicFields, variants, positionalValues,
8386
8489
  const validation = validate(field.schema, value);
8387
8490
  if (!validation.ok) {
8388
8491
  errors.push(
8389
- ...validation.issues.map((issue) => ({
8492
+ ...validation.issues.map((issue2) => ({
8390
8493
  path: field.displayPath,
8391
- message: issue.message
8494
+ message: issue2.message
8392
8495
  }))
8393
8496
  );
8394
8497
  continue;
@@ -8460,17 +8563,18 @@ function getResolvedFlags(command) {
8460
8563
  const flags = command.optsWithGlobals();
8461
8564
  return flags;
8462
8565
  }
8463
- async function executeCommand(state, services, requirementOptions, runtimeFetch, runtimeOptions, runtimeEnv, runtimeFs, outputEmitter, promptStreams, diagnosticsOptions, onErrorReportContext) {
8566
+ async function executeCommand(state, services, requirementOptions, runtimeFetch, humanInLoop, runtimeEnv, runtimeFs, outputEmitter, outputFormats, promptStreams, diagnosticsOptions, onErrorReportContext) {
8464
8567
  const logger2 = createLogger(outputEmitter);
8568
+ const optionValues = state.actionCommand.optsWithGlobals();
8569
+ const resolvedFlags = optionValues;
8570
+ const output = resolveOutput(resolvedFlags);
8465
8571
  const primitives = {
8466
8572
  logger: logger2,
8467
8573
  renderTable,
8468
8574
  getTheme,
8469
- note
8575
+ note,
8576
+ outputFormat: output
8470
8577
  };
8471
- const optionValues = state.actionCommand.optsWithGlobals();
8472
- const resolvedFlags = optionValues;
8473
- const output = resolveOutput(resolvedFlags);
8474
8578
  const diagnostics = createRuntimeLogger({
8475
8579
  level: resolvedFlags.logLevel ?? (diagnosticsOptions.verboseControlEnabled && resolvedFlags.verbose ? "trace" : diagnosticsOptions.logLevel),
8476
8580
  logger: diagnosticsOptions.logger ?? writeCLIDiagnosticEvent
@@ -8483,7 +8587,7 @@ async function executeCommand(state, services, requirementOptions, runtimeFetch,
8483
8587
  const missingParameterContext = !resolvedFlags.yes && output === "rich" && stdinTTY && stdoutTTY ? {
8484
8588
  commandPath: state.commandPath,
8485
8589
  params: {},
8486
- output,
8590
+ output: "rich",
8487
8591
  stdinTTY,
8488
8592
  stdoutTTY
8489
8593
  } : void 0;
@@ -8570,12 +8674,15 @@ async function executeCommand(state, services, requirementOptions, runtimeFetch,
8570
8674
  outputEmitter(line);
8571
8675
  }
8572
8676
  } else {
8573
- renderResult(
8677
+ renderCLIResult(
8574
8678
  state.command,
8679
+ state.commandPath,
8575
8680
  event,
8576
8681
  output,
8577
8682
  primitives,
8578
- outputEmitter === void 0 ? void 0 : (chunk) => outputEmitter(chunk.endsWith("\n") ? chunk.slice(0, -1) : chunk)
8683
+ outputFormats,
8684
+ outputEmitter === void 0 ? void 0 : (chunk) => outputEmitter(chunk.endsWith("\n") ? chunk.slice(0, -1) : chunk),
8685
+ outputEmitter
8579
8686
  );
8580
8687
  }
8581
8688
  }
@@ -8607,9 +8714,7 @@ async function executeCommand(state, services, requirementOptions, runtimeFetch,
8607
8714
  throw new UserError("Operation cancelled.");
8608
8715
  }
8609
8716
  }
8610
- const result = state.command.humanInLoop ? await (await importOptionalModule(
8611
- optionalModulePaths.humanInLoop
8612
- )).invokeWithHumanInLoop(state.command, context, runtimeOptions, state.commandPath) : await state.command.handler(context);
8717
+ const result = state.command.humanInLoop && humanInLoop !== void 0 ? await humanInLoop.invoke(state.command, context, state.commandPath) : await state.command.handler(context);
8613
8718
  if (output === "rich" && runtime.isFixture) {
8614
8719
  writeRichHeader(`${state.command.name} (fixture)`);
8615
8720
  }
@@ -8617,12 +8722,15 @@ async function executeCommand(state, services, requirementOptions, runtimeFetch,
8617
8722
  renderHumanInLoopPending(result);
8618
8723
  return;
8619
8724
  }
8620
- const renderStatus = renderResult(
8725
+ const renderStatus = renderCLIResult(
8621
8726
  state.command,
8727
+ state.commandPath,
8622
8728
  result,
8623
8729
  output,
8624
8730
  primitives,
8625
- outputEmitter === void 0 ? void 0 : (chunk) => outputEmitter(chunk.endsWith("\n") ? chunk.slice(0, -1) : chunk)
8731
+ outputFormats,
8732
+ outputEmitter === void 0 ? void 0 : (chunk) => outputEmitter(chunk.endsWith("\n") ? chunk.slice(0, -1) : chunk),
8733
+ outputEmitter
8626
8734
  );
8627
8735
  if (renderStatus.mcpError) {
8628
8736
  process.exitCode = 1;
@@ -8638,6 +8746,23 @@ async function executeCommand(state, services, requirementOptions, runtimeFetch,
8638
8746
  throw error3;
8639
8747
  }
8640
8748
  }
8749
+ function renderCLIResult(command, commandPath, result, output, primitives, outputFormats, write2, emitExact) {
8750
+ const customRenderer = outputFormats[output];
8751
+ if (customRenderer === void 0) {
8752
+ return renderResult(command, result, output, primitives, write2);
8753
+ }
8754
+ const payload = customRenderer({ command, commandPath, primitives, result });
8755
+ if (payload !== void 0 && payload.length > 0) {
8756
+ if (emitExact !== void 0) {
8757
+ emitExact(payload);
8758
+ } else if (write2 === void 0) {
8759
+ process.stdout.write(payload);
8760
+ } else {
8761
+ write2(payload);
8762
+ }
8763
+ }
8764
+ return { mcpError: false };
8765
+ }
8641
8766
  function isStringRecord(value) {
8642
8767
  return isPlainObject4(value) && Object.values(value).every((entry) => typeof entry === "string");
8643
8768
  }
@@ -9175,20 +9300,19 @@ async function runCLI(roots, options = {}) {
9175
9300
  let errorReportContext;
9176
9301
  try {
9177
9302
  const normalizedRoot = normalizeRoots(roots, argv);
9178
- const root = options.approvals === true ? (await importOptionalModule(
9179
- optionalModulePaths.approvals
9180
- )).mergeApprovalsGroup(normalizedRoot) : normalizedRoot;
9303
+ const root = mergeApprovalsRoot(normalizedRoot, options);
9304
+ assertHumanInLoopWired(root, options.humanInLoop);
9181
9305
  if (hasMcpProxyConfig(root)) {
9182
9306
  await (await importOptionalModule(optionalModulePaths.mcpProxy)).resolveMcpProxies(root, { projectRoot: options.projectRoot });
9183
9307
  }
9184
9308
  const casing = options.casing ?? "kebab";
9185
9309
  const services = options.services ?? {};
9186
- const runtimeOptions = options.humanInLoop ?? {};
9310
+ const humanInLoop = options.humanInLoop;
9187
9311
  const runtimeFetch = options.fetch ?? globalThis.fetch;
9188
9312
  version = options.version ?? findEntrypointPackageMetadata(argv[1])?.version;
9189
9313
  const servicesWithBuiltIns = {
9190
9314
  ...services,
9191
- runtimeOptions,
9315
+ humanInLoop,
9192
9316
  root
9193
9317
  };
9194
9318
  const requirementOptions = {
@@ -9234,10 +9358,11 @@ async function runCLI(roots, options = {}) {
9234
9358
  servicesWithBuiltIns,
9235
9359
  requirementOptions,
9236
9360
  runtimeFetch,
9237
- runtimeOptions,
9361
+ humanInLoop,
9238
9362
  options.env,
9239
9363
  options.fs,
9240
9364
  options.outputEmitter,
9365
+ controls.outputFormats,
9241
9366
  {
9242
9367
  input: options.promptInput,
9243
9368
  output: options.promptOutput
@@ -9311,7 +9436,7 @@ async function runCLI(roots, options = {}) {
9311
9436
  }
9312
9437
  await handleRunError(error3, {
9313
9438
  debugStackMode: resolvedFlags !== void 0 ? resolveDebugStackMode(resolvedFlags.debug) : getDebugStackModeFromArgv(argv),
9314
- output: resolvedFlags !== void 0 ? resolveOutput(resolvedFlags) : resolveOutputFromArgv(argv),
9439
+ output: resolvedFlags !== void 0 ? resolveOutput(resolvedFlags) : resolveOutputFromArgv(argv, controls.outputFormats),
9315
9440
  verbose: resolvedFlags ? Boolean(resolvedFlags.verbose) : argv.includes("--verbose"),
9316
9441
  program,
9317
9442
  argv,
@@ -14648,7 +14773,7 @@ function sleep2(ms) {
14648
14773
  // src/cli.ts
14649
14774
  configureTheme({ brand: "green", label: "Terminal Pilot" });
14650
14775
  function getBundledPackageVersion() {
14651
- return true ? "0.0.45" : void 0;
14776
+ return true ? "0.0.47" : void 0;
14652
14777
  }
14653
14778
  function normalizeArgv(argv) {
14654
14779
  if (argv.includes("--json") && !argv.some((argument) => argument === "--output" || argument.startsWith("--output="))) {