@hoilab/ada-cli 0.84.2

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 (972) hide show
  1. package/CHANGELOG.md +5498 -0
  2. package/README.md +716 -0
  3. package/dist/bun/cli.d.ts +3 -0
  4. package/dist/bun/cli.d.ts.map +1 -0
  5. package/dist/bun/cli.js +11 -0
  6. package/dist/bun/cli.js.map +1 -0
  7. package/dist/bun/register-bedrock.d.ts +2 -0
  8. package/dist/bun/register-bedrock.d.ts.map +1 -0
  9. package/dist/bun/register-bedrock.js +4 -0
  10. package/dist/bun/register-bedrock.js.map +1 -0
  11. package/dist/bun/restore-sandbox-env.d.ts +17 -0
  12. package/dist/bun/restore-sandbox-env.d.ts.map +1 -0
  13. package/dist/bun/restore-sandbox-env.js +36 -0
  14. package/dist/bun/restore-sandbox-env.js.map +1 -0
  15. package/dist/cli/args.d.ts +60 -0
  16. package/dist/cli/args.d.ts.map +1 -0
  17. package/dist/cli/args.js +419 -0
  18. package/dist/cli/args.js.map +1 -0
  19. package/dist/cli/auth-check.d.ts +19 -0
  20. package/dist/cli/auth-check.d.ts.map +1 -0
  21. package/dist/cli/auth-check.js +50 -0
  22. package/dist/cli/auth-check.js.map +1 -0
  23. package/dist/cli/auth-command.d.ts +24 -0
  24. package/dist/cli/auth-command.d.ts.map +1 -0
  25. package/dist/cli/auth-command.js +103 -0
  26. package/dist/cli/auth-command.js.map +1 -0
  27. package/dist/cli/config-selector.d.ts +16 -0
  28. package/dist/cli/config-selector.d.ts.map +1 -0
  29. package/dist/cli/config-selector.js +31 -0
  30. package/dist/cli/config-selector.js.map +1 -0
  31. package/dist/cli/credential-print.d.ts +13 -0
  32. package/dist/cli/credential-print.d.ts.map +1 -0
  33. package/dist/cli/credential-print.js +76 -0
  34. package/dist/cli/credential-print.js.map +1 -0
  35. package/dist/cli/experimental/auth.d.ts +16 -0
  36. package/dist/cli/experimental/auth.d.ts.map +1 -0
  37. package/dist/cli/experimental/auth.js +13 -0
  38. package/dist/cli/experimental/auth.js.map +1 -0
  39. package/dist/cli/experimental/cli.d.ts +6 -0
  40. package/dist/cli/experimental/cli.d.ts.map +1 -0
  41. package/dist/cli/experimental/cli.js +5 -0
  42. package/dist/cli/experimental/cli.js.map +1 -0
  43. package/dist/cli/experimental/command-options.d.ts +17 -0
  44. package/dist/cli/experimental/command-options.d.ts.map +1 -0
  45. package/dist/cli/experimental/command-options.js +35 -0
  46. package/dist/cli/experimental/command-options.js.map +1 -0
  47. package/dist/cli/experimental/command.d.ts +63 -0
  48. package/dist/cli/experimental/command.d.ts.map +1 -0
  49. package/dist/cli/experimental/command.js +130 -0
  50. package/dist/cli/experimental/command.js.map +1 -0
  51. package/dist/cli/experimental/commands/client.d.ts +13 -0
  52. package/dist/cli/experimental/commands/client.d.ts.map +1 -0
  53. package/dist/cli/experimental/commands/client.js +25 -0
  54. package/dist/cli/experimental/commands/client.js.map +1 -0
  55. package/dist/cli/experimental/commands/pi.d.ts +15 -0
  56. package/dist/cli/experimental/commands/pi.d.ts.map +1 -0
  57. package/dist/cli/experimental/commands/pi.js +28 -0
  58. package/dist/cli/experimental/commands/pi.js.map +1 -0
  59. package/dist/cli/experimental/commands/server.d.ts +13 -0
  60. package/dist/cli/experimental/commands/server.d.ts.map +1 -0
  61. package/dist/cli/experimental/commands/server.js +25 -0
  62. package/dist/cli/experimental/commands/server.js.map +1 -0
  63. package/dist/cli/experimental/transport-address.d.ts +10 -0
  64. package/dist/cli/experimental/transport-address.d.ts.map +1 -0
  65. package/dist/cli/experimental/transport-address.js +38 -0
  66. package/dist/cli/experimental/transport-address.js.map +1 -0
  67. package/dist/cli/file-processor.d.ts +15 -0
  68. package/dist/cli/file-processor.d.ts.map +1 -0
  69. package/dist/cli/file-processor.js +70 -0
  70. package/dist/cli/file-processor.js.map +1 -0
  71. package/dist/cli/initial-message.d.ts +18 -0
  72. package/dist/cli/initial-message.d.ts.map +1 -0
  73. package/dist/cli/initial-message.js +22 -0
  74. package/dist/cli/initial-message.js.map +1 -0
  75. package/dist/cli/list-models.d.ts +9 -0
  76. package/dist/cli/list-models.d.ts.map +1 -0
  77. package/dist/cli/list-models.js +98 -0
  78. package/dist/cli/list-models.js.map +1 -0
  79. package/dist/cli/project-trust.d.ts +10 -0
  80. package/dist/cli/project-trust.d.ts.map +1 -0
  81. package/dist/cli/project-trust.js +48 -0
  82. package/dist/cli/project-trust.js.map +1 -0
  83. package/dist/cli/session-picker.d.ts +10 -0
  84. package/dist/cli/session-picker.d.ts.map +1 -0
  85. package/dist/cli/session-picker.js +36 -0
  86. package/dist/cli/session-picker.js.map +1 -0
  87. package/dist/cli/startup-ui.d.ts +20 -0
  88. package/dist/cli/startup-ui.d.ts.map +1 -0
  89. package/dist/cli/startup-ui.js +184 -0
  90. package/dist/cli/startup-ui.js.map +1 -0
  91. package/dist/cli.d.ts +3 -0
  92. package/dist/cli.d.ts.map +1 -0
  93. package/dist/cli.js +19 -0
  94. package/dist/cli.js.map +1 -0
  95. package/dist/client/index.d.ts +3 -0
  96. package/dist/client/index.d.ts.map +1 -0
  97. package/dist/client/index.js +3 -0
  98. package/dist/client/index.js.map +1 -0
  99. package/dist/client/remote-session.d.ts +53 -0
  100. package/dist/client/remote-session.d.ts.map +1 -0
  101. package/dist/client/remote-session.js +340 -0
  102. package/dist/client/remote-session.js.map +1 -0
  103. package/dist/client/transcript.d.ts +12 -0
  104. package/dist/client/transcript.d.ts.map +1 -0
  105. package/dist/client/transcript.js +98 -0
  106. package/dist/client/transcript.js.map +1 -0
  107. package/dist/config.d.ts +96 -0
  108. package/dist/config.d.ts.map +1 -0
  109. package/dist/config.js +455 -0
  110. package/dist/config.js.map +1 -0
  111. package/dist/core/agent-session-runtime.d.ts +119 -0
  112. package/dist/core/agent-session-runtime.d.ts.map +1 -0
  113. package/dist/core/agent-session-runtime.js +309 -0
  114. package/dist/core/agent-session-runtime.js.map +1 -0
  115. package/dist/core/agent-session-services.d.ts +86 -0
  116. package/dist/core/agent-session-services.d.ts.map +1 -0
  117. package/dist/core/agent-session-services.js +134 -0
  118. package/dist/core/agent-session-services.js.map +1 -0
  119. package/dist/core/agent-session.d.ts +649 -0
  120. package/dist/core/agent-session.d.ts.map +1 -0
  121. package/dist/core/agent-session.js +2687 -0
  122. package/dist/core/agent-session.js.map +1 -0
  123. package/dist/core/auth-guidance.d.ts +5 -0
  124. package/dist/core/auth-guidance.d.ts.map +1 -0
  125. package/dist/core/auth-guidance.js +21 -0
  126. package/dist/core/auth-guidance.js.map +1 -0
  127. package/dist/core/auth-storage.d.ts +72 -0
  128. package/dist/core/auth-storage.d.ts.map +1 -0
  129. package/dist/core/auth-storage.js +427 -0
  130. package/dist/core/auth-storage.js.map +1 -0
  131. package/dist/core/bash-executor.d.ts +32 -0
  132. package/dist/core/bash-executor.d.ts.map +1 -0
  133. package/dist/core/bash-executor.js +111 -0
  134. package/dist/core/bash-executor.js.map +1 -0
  135. package/dist/core/cache-stats.d.ts +49 -0
  136. package/dist/core/cache-stats.d.ts.map +1 -0
  137. package/dist/core/cache-stats.js +101 -0
  138. package/dist/core/cache-stats.js.map +1 -0
  139. package/dist/core/compaction/branch-summarization.d.ts +98 -0
  140. package/dist/core/compaction/branch-summarization.d.ts.map +1 -0
  141. package/dist/core/compaction/branch-summarization.js +246 -0
  142. package/dist/core/compaction/branch-summarization.js.map +1 -0
  143. package/dist/core/compaction/compaction.d.ts +137 -0
  144. package/dist/core/compaction/compaction.d.ts.map +1 -0
  145. package/dist/core/compaction/compaction.js +645 -0
  146. package/dist/core/compaction/compaction.js.map +1 -0
  147. package/dist/core/compaction/index.d.ts +7 -0
  148. package/dist/core/compaction/index.d.ts.map +1 -0
  149. package/dist/core/compaction/index.js +7 -0
  150. package/dist/core/compaction/index.js.map +1 -0
  151. package/dist/core/compaction/utils.d.ts +38 -0
  152. package/dist/core/compaction/utils.d.ts.map +1 -0
  153. package/dist/core/compaction/utils.js +142 -0
  154. package/dist/core/compaction/utils.js.map +1 -0
  155. package/dist/core/defaults.d.ts +3 -0
  156. package/dist/core/defaults.d.ts.map +1 -0
  157. package/dist/core/defaults.js +2 -0
  158. package/dist/core/defaults.js.map +1 -0
  159. package/dist/core/diagnostics.d.ts +15 -0
  160. package/dist/core/diagnostics.d.ts.map +1 -0
  161. package/dist/core/diagnostics.js +2 -0
  162. package/dist/core/diagnostics.js.map +1 -0
  163. package/dist/core/event-bus.d.ts +9 -0
  164. package/dist/core/event-bus.d.ts.map +1 -0
  165. package/dist/core/event-bus.js +25 -0
  166. package/dist/core/event-bus.js.map +1 -0
  167. package/dist/core/exec.d.ts +29 -0
  168. package/dist/core/exec.d.ts.map +1 -0
  169. package/dist/core/exec.js +75 -0
  170. package/dist/core/exec.js.map +1 -0
  171. package/dist/core/experimental.d.ts +6 -0
  172. package/dist/core/experimental.d.ts.map +1 -0
  173. package/dist/core/experimental.js +8 -0
  174. package/dist/core/experimental.js.map +1 -0
  175. package/dist/core/export-html/ansi-to-html.d.ts +22 -0
  176. package/dist/core/export-html/ansi-to-html.d.ts.map +1 -0
  177. package/dist/core/export-html/ansi-to-html.js +249 -0
  178. package/dist/core/export-html/ansi-to-html.js.map +1 -0
  179. package/dist/core/export-html/index.d.ts +37 -0
  180. package/dist/core/export-html/index.d.ts.map +1 -0
  181. package/dist/core/export-html/index.js +226 -0
  182. package/dist/core/export-html/index.js.map +1 -0
  183. package/dist/core/export-html/template.css +1066 -0
  184. package/dist/core/export-html/template.html +55 -0
  185. package/dist/core/export-html/template.js +1864 -0
  186. package/dist/core/export-html/tool-renderer.d.ts +34 -0
  187. package/dist/core/export-html/tool-renderer.d.ts.map +1 -0
  188. package/dist/core/export-html/tool-renderer.js +108 -0
  189. package/dist/core/export-html/tool-renderer.js.map +1 -0
  190. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  191. package/dist/core/export-html/vendor/marked.min.js +78 -0
  192. package/dist/core/extensions/index.d.ts +12 -0
  193. package/dist/core/extensions/index.d.ts.map +1 -0
  194. package/dist/core/extensions/index.js +9 -0
  195. package/dist/core/extensions/index.js.map +1 -0
  196. package/dist/core/extensions/loader.d.ts +23 -0
  197. package/dist/core/extensions/loader.d.ts.map +1 -0
  198. package/dist/core/extensions/loader.js +581 -0
  199. package/dist/core/extensions/loader.js.map +1 -0
  200. package/dist/core/extensions/runner.d.ts +173 -0
  201. package/dist/core/extensions/runner.d.ts.map +1 -0
  202. package/dist/core/extensions/runner.js +967 -0
  203. package/dist/core/extensions/runner.js.map +1 -0
  204. package/dist/core/extensions/types.d.ts +1299 -0
  205. package/dist/core/extensions/types.d.ts.map +1 -0
  206. package/dist/core/extensions/types.js +45 -0
  207. package/dist/core/extensions/types.js.map +1 -0
  208. package/dist/core/extensions/wrapper.d.ts +20 -0
  209. package/dist/core/extensions/wrapper.d.ts.map +1 -0
  210. package/dist/core/extensions/wrapper.js +41 -0
  211. package/dist/core/extensions/wrapper.js.map +1 -0
  212. package/dist/core/footer-data-provider.d.ts +64 -0
  213. package/dist/core/footer-data-provider.d.ts.map +1 -0
  214. package/dist/core/footer-data-provider.js +338 -0
  215. package/dist/core/footer-data-provider.js.map +1 -0
  216. package/dist/core/http-dispatcher.d.ts +22 -0
  217. package/dist/core/http-dispatcher.d.ts.map +1 -0
  218. package/dist/core/http-dispatcher.js +96 -0
  219. package/dist/core/http-dispatcher.js.map +1 -0
  220. package/dist/core/index.d.ts +13 -0
  221. package/dist/core/index.d.ts.map +1 -0
  222. package/dist/core/index.js +13 -0
  223. package/dist/core/index.js.map +1 -0
  224. package/dist/core/keybindings.d.ts +422 -0
  225. package/dist/core/keybindings.d.ts.map +1 -0
  226. package/dist/core/keybindings.js +296 -0
  227. package/dist/core/keybindings.js.map +1 -0
  228. package/dist/core/messages.d.ts +77 -0
  229. package/dist/core/messages.d.ts.map +1 -0
  230. package/dist/core/messages.js +123 -0
  231. package/dist/core/messages.js.map +1 -0
  232. package/dist/core/model-config.d.ts +571 -0
  233. package/dist/core/model-config.d.ts.map +1 -0
  234. package/dist/core/model-config.js +254 -0
  235. package/dist/core/model-config.js.map +1 -0
  236. package/dist/core/model-registry.d.ts +45 -0
  237. package/dist/core/model-registry.d.ts.map +1 -0
  238. package/dist/core/model-registry.js +107 -0
  239. package/dist/core/model-registry.js.map +1 -0
  240. package/dist/core/model-resolver.d.ts +123 -0
  241. package/dist/core/model-resolver.d.ts.map +1 -0
  242. package/dist/core/model-resolver.js +583 -0
  243. package/dist/core/model-resolver.js.map +1 -0
  244. package/dist/core/model-runtime.d.ts +100 -0
  245. package/dist/core/model-runtime.d.ts.map +1 -0
  246. package/dist/core/model-runtime.js +599 -0
  247. package/dist/core/model-runtime.js.map +1 -0
  248. package/dist/core/models-store.d.ts +22 -0
  249. package/dist/core/models-store.d.ts.map +1 -0
  250. package/dist/core/models-store.js +114 -0
  251. package/dist/core/models-store.js.map +1 -0
  252. package/dist/core/output-guard.d.ts +7 -0
  253. package/dist/core/output-guard.d.ts.map +1 -0
  254. package/dist/core/output-guard.js +89 -0
  255. package/dist/core/output-guard.js.map +1 -0
  256. package/dist/core/package-manager.d.ts +213 -0
  257. package/dist/core/package-manager.d.ts.map +1 -0
  258. package/dist/core/package-manager.js +2169 -0
  259. package/dist/core/package-manager.js.map +1 -0
  260. package/dist/core/pi-manifest.d.ts +8 -0
  261. package/dist/core/pi-manifest.d.ts.map +1 -0
  262. package/dist/core/pi-manifest.js +25 -0
  263. package/dist/core/pi-manifest.js.map +1 -0
  264. package/dist/core/project-trust.d.ts +15 -0
  265. package/dist/core/project-trust.d.ts.map +1 -0
  266. package/dist/core/project-trust.js +59 -0
  267. package/dist/core/project-trust.js.map +1 -0
  268. package/dist/core/prompt-templates.d.ts +54 -0
  269. package/dist/core/prompt-templates.d.ts.map +1 -0
  270. package/dist/core/prompt-templates.js +236 -0
  271. package/dist/core/prompt-templates.js.map +1 -0
  272. package/dist/core/provider-attribution.d.ts +4 -0
  273. package/dist/core/provider-attribution.d.ts.map +1 -0
  274. package/dist/core/provider-attribution.js +72 -0
  275. package/dist/core/provider-attribution.js.map +1 -0
  276. package/dist/core/provider-composer.d.ts +58 -0
  277. package/dist/core/provider-composer.d.ts.map +1 -0
  278. package/dist/core/provider-composer.js +396 -0
  279. package/dist/core/provider-composer.js.map +1 -0
  280. package/dist/core/radius.d.ts +2 -0
  281. package/dist/core/radius.d.ts.map +1 -0
  282. package/dist/core/radius.js +2 -0
  283. package/dist/core/radius.js.map +1 -0
  284. package/dist/core/remote-catalog-provider.d.ts +5 -0
  285. package/dist/core/remote-catalog-provider.d.ts.map +1 -0
  286. package/dist/core/remote-catalog-provider.js +121 -0
  287. package/dist/core/remote-catalog-provider.js.map +1 -0
  288. package/dist/core/resolve-config-value.d.ts +30 -0
  289. package/dist/core/resolve-config-value.d.ts.map +1 -0
  290. package/dist/core/resolve-config-value.js +247 -0
  291. package/dist/core/resolve-config-value.js.map +1 -0
  292. package/dist/core/resource-loader.d.ts +221 -0
  293. package/dist/core/resource-loader.d.ts.map +1 -0
  294. package/dist/core/resource-loader.js +874 -0
  295. package/dist/core/resource-loader.js.map +1 -0
  296. package/dist/core/runtime-credentials.d.ts +15 -0
  297. package/dist/core/runtime-credentials.d.ts.map +1 -0
  298. package/dist/core/runtime-credentials.js +39 -0
  299. package/dist/core/runtime-credentials.js.map +1 -0
  300. package/dist/core/sdk.d.ts +108 -0
  301. package/dist/core/sdk.d.ts.map +1 -0
  302. package/dist/core/sdk.js +268 -0
  303. package/dist/core/sdk.js.map +1 -0
  304. package/dist/core/session-cwd.d.ts +19 -0
  305. package/dist/core/session-cwd.d.ts.map +1 -0
  306. package/dist/core/session-cwd.js +38 -0
  307. package/dist/core/session-cwd.js.map +1 -0
  308. package/dist/core/session-manager.d.ts +356 -0
  309. package/dist/core/session-manager.d.ts.map +1 -0
  310. package/dist/core/session-manager.js +1340 -0
  311. package/dist/core/session-manager.js.map +1 -0
  312. package/dist/core/settings-manager.d.ts +315 -0
  313. package/dist/core/settings-manager.d.ts.map +1 -0
  314. package/dist/core/settings-manager.js +938 -0
  315. package/dist/core/settings-manager.js.map +1 -0
  316. package/dist/core/skills.d.ts +60 -0
  317. package/dist/core/skills.d.ts.map +1 -0
  318. package/dist/core/skills.js +387 -0
  319. package/dist/core/skills.js.map +1 -0
  320. package/dist/core/slash-commands.d.ts +15 -0
  321. package/dist/core/slash-commands.d.ts.map +1 -0
  322. package/dist/core/slash-commands.js +26 -0
  323. package/dist/core/slash-commands.js.map +1 -0
  324. package/dist/core/source-info.d.ts +18 -0
  325. package/dist/core/source-info.d.ts.map +1 -0
  326. package/dist/core/source-info.js +19 -0
  327. package/dist/core/source-info.js.map +1 -0
  328. package/dist/core/system-prompt.d.ts +28 -0
  329. package/dist/core/system-prompt.d.ts.map +1 -0
  330. package/dist/core/system-prompt.js +110 -0
  331. package/dist/core/system-prompt.js.map +1 -0
  332. package/dist/core/telemetry.d.ts +3 -0
  333. package/dist/core/telemetry.d.ts.map +1 -0
  334. package/dist/core/telemetry.js +9 -0
  335. package/dist/core/telemetry.js.map +1 -0
  336. package/dist/core/timings.d.ts +10 -0
  337. package/dist/core/timings.d.ts.map +1 -0
  338. package/dist/core/timings.js +41 -0
  339. package/dist/core/timings.js.map +1 -0
  340. package/dist/core/tools/bash.d.ts +74 -0
  341. package/dist/core/tools/bash.d.ts.map +1 -0
  342. package/dist/core/tools/bash.js +394 -0
  343. package/dist/core/tools/bash.js.map +1 -0
  344. package/dist/core/tools/edit-diff.d.ts +106 -0
  345. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  346. package/dist/core/tools/edit-diff.js +424 -0
  347. package/dist/core/tools/edit-diff.js.map +1 -0
  348. package/dist/core/tools/edit.d.ts +55 -0
  349. package/dist/core/tools/edit.d.ts.map +1 -0
  350. package/dist/core/tools/edit.js +290 -0
  351. package/dist/core/tools/edit.js.map +1 -0
  352. package/dist/core/tools/file-mutation-queue.d.ts +6 -0
  353. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -0
  354. package/dist/core/tools/file-mutation-queue.js +52 -0
  355. package/dist/core/tools/file-mutation-queue.js.map +1 -0
  356. package/dist/core/tools/find.d.ts +42 -0
  357. package/dist/core/tools/find.d.ts.map +1 -0
  358. package/dist/core/tools/find.js +302 -0
  359. package/dist/core/tools/find.js.map +1 -0
  360. package/dist/core/tools/grep.d.ts +41 -0
  361. package/dist/core/tools/grep.d.ts.map +1 -0
  362. package/dist/core/tools/grep.js +308 -0
  363. package/dist/core/tools/grep.js.map +1 -0
  364. package/dist/core/tools/index.d.ts +40 -0
  365. package/dist/core/tools/index.d.ts.map +1 -0
  366. package/dist/core/tools/index.js +112 -0
  367. package/dist/core/tools/index.js.map +1 -0
  368. package/dist/core/tools/ls.d.ts +41 -0
  369. package/dist/core/tools/ls.d.ts.map +1 -0
  370. package/dist/core/tools/ls.js +171 -0
  371. package/dist/core/tools/ls.js.map +1 -0
  372. package/dist/core/tools/output-accumulator.d.ts +52 -0
  373. package/dist/core/tools/output-accumulator.d.ts.map +1 -0
  374. package/dist/core/tools/output-accumulator.js +184 -0
  375. package/dist/core/tools/output-accumulator.js.map +1 -0
  376. package/dist/core/tools/path-utils.d.ts +10 -0
  377. package/dist/core/tools/path-utils.d.ts.map +1 -0
  378. package/dist/core/tools/path-utils.js +99 -0
  379. package/dist/core/tools/path-utils.js.map +1 -0
  380. package/dist/core/tools/read.d.ts +39 -0
  381. package/dist/core/tools/read.d.ts.map +1 -0
  382. package/dist/core/tools/read.js +282 -0
  383. package/dist/core/tools/read.js.map +1 -0
  384. package/dist/core/tools/render-utils.d.ts +24 -0
  385. package/dist/core/tools/render-utils.d.ts.map +1 -0
  386. package/dist/core/tools/render-utils.js +65 -0
  387. package/dist/core/tools/render-utils.js.map +1 -0
  388. package/dist/core/tools/tool-definition-wrapper.d.ts +14 -0
  389. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -0
  390. package/dist/core/tools/tool-definition-wrapper.js +36 -0
  391. package/dist/core/tools/tool-definition-wrapper.js.map +1 -0
  392. package/dist/core/tools/truncate.d.ts +70 -0
  393. package/dist/core/tools/truncate.d.ts.map +1 -0
  394. package/dist/core/tools/truncate.js +215 -0
  395. package/dist/core/tools/truncate.js.map +1 -0
  396. package/dist/core/tools/write.d.ts +30 -0
  397. package/dist/core/tools/write.d.ts.map +1 -0
  398. package/dist/core/tools/write.js +203 -0
  399. package/dist/core/tools/write.js.map +1 -0
  400. package/dist/core/trust-manager.d.ts +36 -0
  401. package/dist/core/trust-manager.d.ts.map +1 -0
  402. package/dist/core/trust-manager.js +202 -0
  403. package/dist/core/trust-manager.js.map +1 -0
  404. package/dist/core/usage-totals.d.ts +19 -0
  405. package/dist/core/usage-totals.d.ts.map +1 -0
  406. package/dist/core/usage-totals.js +52 -0
  407. package/dist/core/usage-totals.js.map +1 -0
  408. package/dist/extensions/index.d.ts +3 -0
  409. package/dist/extensions/index.d.ts.map +1 -0
  410. package/dist/extensions/index.js +3 -0
  411. package/dist/extensions/index.js.map +1 -0
  412. package/dist/extensions/llama/client.d.ts +61 -0
  413. package/dist/extensions/llama/client.d.ts.map +1 -0
  414. package/dist/extensions/llama/client.js +302 -0
  415. package/dist/extensions/llama/client.js.map +1 -0
  416. package/dist/extensions/llama/huggingface.d.ts +23 -0
  417. package/dist/extensions/llama/huggingface.d.ts.map +1 -0
  418. package/dist/extensions/llama/huggingface.js +141 -0
  419. package/dist/extensions/llama/huggingface.js.map +1 -0
  420. package/dist/extensions/llama/index.d.ts +3 -0
  421. package/dist/extensions/llama/index.d.ts.map +1 -0
  422. package/dist/extensions/llama/index.js +217 -0
  423. package/dist/extensions/llama/index.js.map +1 -0
  424. package/dist/extensions/llama/provider.d.ts +10 -0
  425. package/dist/extensions/llama/provider.d.ts.map +1 -0
  426. package/dist/extensions/llama/provider.js +121 -0
  427. package/dist/extensions/llama/provider.js.map +1 -0
  428. package/dist/extensions/llama/ui.d.ts +42 -0
  429. package/dist/extensions/llama/ui.d.ts.map +1 -0
  430. package/dist/extensions/llama/ui.js +416 -0
  431. package/dist/extensions/llama/ui.js.map +1 -0
  432. package/dist/index.d.ts +35 -0
  433. package/dist/index.d.ts.map +1 -0
  434. package/dist/index.js +47 -0
  435. package/dist/index.js.map +1 -0
  436. package/dist/main.d.ts +12 -0
  437. package/dist/main.d.ts.map +1 -0
  438. package/dist/main.js +796 -0
  439. package/dist/main.js.map +1 -0
  440. package/dist/migrations.d.ts +33 -0
  441. package/dist/migrations.d.ts.map +1 -0
  442. package/dist/migrations.js +281 -0
  443. package/dist/migrations.js.map +1 -0
  444. package/dist/modes/index.d.ts +10 -0
  445. package/dist/modes/index.d.ts.map +1 -0
  446. package/dist/modes/index.js +8 -0
  447. package/dist/modes/index.js.map +1 -0
  448. package/dist/modes/interactive/assets/clankolas.png +0 -0
  449. package/dist/modes/interactive/components/armin.d.ts +34 -0
  450. package/dist/modes/interactive/components/armin.d.ts.map +1 -0
  451. package/dist/modes/interactive/components/armin.js +333 -0
  452. package/dist/modes/interactive/components/armin.js.map +1 -0
  453. package/dist/modes/interactive/components/assistant-message.d.ts +25 -0
  454. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -0
  455. package/dist/modes/interactive/components/assistant-message.js +150 -0
  456. package/dist/modes/interactive/components/assistant-message.js.map +1 -0
  457. package/dist/modes/interactive/components/bash-execution.d.ts +34 -0
  458. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -0
  459. package/dist/modes/interactive/components/bash-execution.js +175 -0
  460. package/dist/modes/interactive/components/bash-execution.js.map +1 -0
  461. package/dist/modes/interactive/components/bordered-loader.d.ts +16 -0
  462. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -0
  463. package/dist/modes/interactive/components/bordered-loader.js +54 -0
  464. package/dist/modes/interactive/components/bordered-loader.js.map +1 -0
  465. package/dist/modes/interactive/components/branch-summary-message.d.ts +16 -0
  466. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -0
  467. package/dist/modes/interactive/components/branch-summary-message.js +44 -0
  468. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -0
  469. package/dist/modes/interactive/components/compaction-summary-message.d.ts +16 -0
  470. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -0
  471. package/dist/modes/interactive/components/compaction-summary-message.js +45 -0
  472. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -0
  473. package/dist/modes/interactive/components/config-selector.d.ts +102 -0
  474. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -0
  475. package/dist/modes/interactive/components/config-selector.js +761 -0
  476. package/dist/modes/interactive/components/config-selector.js.map +1 -0
  477. package/dist/modes/interactive/components/countdown-timer.d.ts +14 -0
  478. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -0
  479. package/dist/modes/interactive/components/countdown-timer.js +33 -0
  480. package/dist/modes/interactive/components/countdown-timer.js.map +1 -0
  481. package/dist/modes/interactive/components/custom-editor.d.ts +21 -0
  482. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -0
  483. package/dist/modes/interactive/components/custom-editor.js +77 -0
  484. package/dist/modes/interactive/components/custom-editor.js.map +1 -0
  485. package/dist/modes/interactive/components/custom-entry.d.ts +19 -0
  486. package/dist/modes/interactive/components/custom-entry.d.ts.map +1 -0
  487. package/dist/modes/interactive/components/custom-entry.js +52 -0
  488. package/dist/modes/interactive/components/custom-entry.js.map +1 -0
  489. package/dist/modes/interactive/components/custom-message.d.ts +22 -0
  490. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -0
  491. package/dist/modes/interactive/components/custom-message.js +87 -0
  492. package/dist/modes/interactive/components/custom-message.js.map +1 -0
  493. package/dist/modes/interactive/components/daxnuts.d.ts +23 -0
  494. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -0
  495. package/dist/modes/interactive/components/daxnuts.js +140 -0
  496. package/dist/modes/interactive/components/daxnuts.js.map +1 -0
  497. package/dist/modes/interactive/components/diff.d.ts +12 -0
  498. package/dist/modes/interactive/components/diff.d.ts.map +1 -0
  499. package/dist/modes/interactive/components/diff.js +133 -0
  500. package/dist/modes/interactive/components/diff.js.map +1 -0
  501. package/dist/modes/interactive/components/dynamic-border.d.ts +15 -0
  502. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -0
  503. package/dist/modes/interactive/components/dynamic-border.js +21 -0
  504. package/dist/modes/interactive/components/dynamic-border.js.map +1 -0
  505. package/dist/modes/interactive/components/earendil-announcement.d.ts +5 -0
  506. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -0
  507. package/dist/modes/interactive/components/earendil-announcement.js +40 -0
  508. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -0
  509. package/dist/modes/interactive/components/extension-editor.d.ts +21 -0
  510. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -0
  511. package/dist/modes/interactive/components/extension-editor.js +98 -0
  512. package/dist/modes/interactive/components/extension-editor.js.map +1 -0
  513. package/dist/modes/interactive/components/extension-input.d.ts +23 -0
  514. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -0
  515. package/dist/modes/interactive/components/extension-input.js +61 -0
  516. package/dist/modes/interactive/components/extension-input.js.map +1 -0
  517. package/dist/modes/interactive/components/extension-selector.d.ts +26 -0
  518. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -0
  519. package/dist/modes/interactive/components/extension-selector.js +83 -0
  520. package/dist/modes/interactive/components/extension-selector.js.map +1 -0
  521. package/dist/modes/interactive/components/first-time-setup.d.ts +25 -0
  522. package/dist/modes/interactive/components/first-time-setup.d.ts.map +1 -0
  523. package/dist/modes/interactive/components/first-time-setup.js +103 -0
  524. package/dist/modes/interactive/components/first-time-setup.js.map +1 -0
  525. package/dist/modes/interactive/components/footer.d.ts +32 -0
  526. package/dist/modes/interactive/components/footer.d.ts.map +1 -0
  527. package/dist/modes/interactive/components/footer.js +222 -0
  528. package/dist/modes/interactive/components/footer.js.map +1 -0
  529. package/dist/modes/interactive/components/index.d.ts +34 -0
  530. package/dist/modes/interactive/components/index.d.ts.map +1 -0
  531. package/dist/modes/interactive/components/index.js +35 -0
  532. package/dist/modes/interactive/components/index.js.map +1 -0
  533. package/dist/modes/interactive/components/keybinding-hints.d.ts +13 -0
  534. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -0
  535. package/dist/modes/interactive/components/keybinding-hints.js +36 -0
  536. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -0
  537. package/dist/modes/interactive/components/login-dialog.d.ts +52 -0
  538. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -0
  539. package/dist/modes/interactive/components/login-dialog.js +188 -0
  540. package/dist/modes/interactive/components/login-dialog.js.map +1 -0
  541. package/dist/modes/interactive/components/markdown-transform.d.ts +3 -0
  542. package/dist/modes/interactive/components/markdown-transform.d.ts.map +1 -0
  543. package/dist/modes/interactive/components/markdown-transform.js +19 -0
  544. package/dist/modes/interactive/components/markdown-transform.js.map +1 -0
  545. package/dist/modes/interactive/components/mermaid.d.ts +11 -0
  546. package/dist/modes/interactive/components/mermaid.d.ts.map +1 -0
  547. package/dist/modes/interactive/components/mermaid.js +75 -0
  548. package/dist/modes/interactive/components/mermaid.js.map +1 -0
  549. package/dist/modes/interactive/components/model-selector.d.ts +54 -0
  550. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -0
  551. package/dist/modes/interactive/components/model-selector.js +326 -0
  552. package/dist/modes/interactive/components/model-selector.js.map +1 -0
  553. package/dist/modes/interactive/components/oauth-selector.d.ts +33 -0
  554. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -0
  555. package/dist/modes/interactive/components/oauth-selector.js +163 -0
  556. package/dist/modes/interactive/components/oauth-selector.js.map +1 -0
  557. package/dist/modes/interactive/components/scoped-models-selector.d.ts +46 -0
  558. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -0
  559. package/dist/modes/interactive/components/scoped-models-selector.js +328 -0
  560. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -0
  561. package/dist/modes/interactive/components/session-selector-search.d.ts +23 -0
  562. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -0
  563. package/dist/modes/interactive/components/session-selector-search.js +155 -0
  564. package/dist/modes/interactive/components/session-selector-search.js.map +1 -0
  565. package/dist/modes/interactive/components/session-selector.d.ts +95 -0
  566. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -0
  567. package/dist/modes/interactive/components/session-selector.js +867 -0
  568. package/dist/modes/interactive/components/session-selector.js.map +1 -0
  569. package/dist/modes/interactive/components/settings-selector.d.ts +85 -0
  570. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -0
  571. package/dist/modes/interactive/components/settings-selector.js +633 -0
  572. package/dist/modes/interactive/components/settings-selector.js.map +1 -0
  573. package/dist/modes/interactive/components/show-images-selector.d.ts +10 -0
  574. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -0
  575. package/dist/modes/interactive/components/show-images-selector.js +39 -0
  576. package/dist/modes/interactive/components/show-images-selector.js.map +1 -0
  577. package/dist/modes/interactive/components/skill-invocation-message.d.ts +17 -0
  578. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -0
  579. package/dist/modes/interactive/components/skill-invocation-message.js +47 -0
  580. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -0
  581. package/dist/modes/interactive/components/status-indicator.d.ts +28 -0
  582. package/dist/modes/interactive/components/status-indicator.d.ts.map +1 -0
  583. package/dist/modes/interactive/components/status-indicator.js +60 -0
  584. package/dist/modes/interactive/components/status-indicator.js.map +1 -0
  585. package/dist/modes/interactive/components/theme-selector.d.ts +11 -0
  586. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -0
  587. package/dist/modes/interactive/components/theme-selector.js +50 -0
  588. package/dist/modes/interactive/components/theme-selector.js.map +1 -0
  589. package/dist/modes/interactive/components/thinking-selector.d.ts +11 -0
  590. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -0
  591. package/dist/modes/interactive/components/thinking-selector.js +52 -0
  592. package/dist/modes/interactive/components/thinking-selector.js.map +1 -0
  593. package/dist/modes/interactive/components/tool-execution.d.ts +63 -0
  594. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -0
  595. package/dist/modes/interactive/components/tool-execution.js +326 -0
  596. package/dist/modes/interactive/components/tool-execution.js.map +1 -0
  597. package/dist/modes/interactive/components/tree-selector.d.ts +94 -0
  598. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -0
  599. package/dist/modes/interactive/components/tree-selector.js +1245 -0
  600. package/dist/modes/interactive/components/tree-selector.js.map +1 -0
  601. package/dist/modes/interactive/components/trust-selector.d.ts +23 -0
  602. package/dist/modes/interactive/components/trust-selector.d.ts.map +1 -0
  603. package/dist/modes/interactive/components/trust-selector.js +91 -0
  604. package/dist/modes/interactive/components/trust-selector.js.map +1 -0
  605. package/dist/modes/interactive/components/user-message-selector.d.ts +30 -0
  606. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -0
  607. package/dist/modes/interactive/components/user-message-selector.js +114 -0
  608. package/dist/modes/interactive/components/user-message-selector.js.map +1 -0
  609. package/dist/modes/interactive/components/user-message.d.ts +16 -0
  610. package/dist/modes/interactive/components/user-message.d.ts.map +1 -0
  611. package/dist/modes/interactive/components/user-message.js +49 -0
  612. package/dist/modes/interactive/components/user-message.js.map +1 -0
  613. package/dist/modes/interactive/components/visual-truncate.d.ts +24 -0
  614. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -0
  615. package/dist/modes/interactive/components/visual-truncate.js +33 -0
  616. package/dist/modes/interactive/components/visual-truncate.js.map +1 -0
  617. package/dist/modes/interactive/external-editor.d.ts +12 -0
  618. package/dist/modes/interactive/external-editor.d.ts.map +1 -0
  619. package/dist/modes/interactive/external-editor.js +37 -0
  620. package/dist/modes/interactive/external-editor.js.map +1 -0
  621. package/dist/modes/interactive/interactive-mode.d.ts +435 -0
  622. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -0
  623. package/dist/modes/interactive/interactive-mode.js +5438 -0
  624. package/dist/modes/interactive/interactive-mode.js.map +1 -0
  625. package/dist/modes/interactive/model-catalog-refresh.d.ts +7 -0
  626. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  627. package/dist/modes/interactive/model-catalog-refresh.js +34 -0
  628. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  629. package/dist/modes/interactive/model-search.d.ts +12 -0
  630. package/dist/modes/interactive/model-search.d.ts.map +1 -0
  631. package/dist/modes/interactive/model-search.js +15 -0
  632. package/dist/modes/interactive/model-search.js.map +1 -0
  633. package/dist/modes/interactive/theme/dark.json +90 -0
  634. package/dist/modes/interactive/theme/light.json +89 -0
  635. package/dist/modes/interactive/theme/theme-controller.d.ts +40 -0
  636. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -0
  637. package/dist/modes/interactive/theme/theme-controller.js +125 -0
  638. package/dist/modes/interactive/theme/theme-controller.js.map +1 -0
  639. package/dist/modes/interactive/theme/theme-schema.json +352 -0
  640. package/dist/modes/interactive/theme/theme.d.ts +122 -0
  641. package/dist/modes/interactive/theme/theme.d.ts.map +1 -0
  642. package/dist/modes/interactive/theme/theme.js +1091 -0
  643. package/dist/modes/interactive/theme/theme.js.map +1 -0
  644. package/dist/modes/json-event.d.ts +31 -0
  645. package/dist/modes/json-event.d.ts.map +1 -0
  646. package/dist/modes/json-event.js +15 -0
  647. package/dist/modes/json-event.js.map +1 -0
  648. package/dist/modes/print-mode.d.ts +28 -0
  649. package/dist/modes/print-mode.d.ts.map +1 -0
  650. package/dist/modes/print-mode.js +142 -0
  651. package/dist/modes/print-mode.js.map +1 -0
  652. package/dist/modes/rpc/jsonl.d.ts +17 -0
  653. package/dist/modes/rpc/jsonl.d.ts.map +1 -0
  654. package/dist/modes/rpc/jsonl.js +49 -0
  655. package/dist/modes/rpc/jsonl.js.map +1 -0
  656. package/dist/modes/rpc/rpc-client.d.ts +247 -0
  657. package/dist/modes/rpc/rpc-client.d.ts.map +1 -0
  658. package/dist/modes/rpc/rpc-client.js +488 -0
  659. package/dist/modes/rpc/rpc-client.js.map +1 -0
  660. package/dist/modes/rpc/rpc-mode.d.ts +20 -0
  661. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -0
  662. package/dist/modes/rpc/rpc-mode.js +654 -0
  663. package/dist/modes/rpc/rpc-mode.js.map +1 -0
  664. package/dist/modes/rpc/rpc-types.d.ts +457 -0
  665. package/dist/modes/rpc/rpc-types.d.ts.map +1 -0
  666. package/dist/modes/rpc/rpc-types.js +8 -0
  667. package/dist/modes/rpc/rpc-types.js.map +1 -0
  668. package/dist/package-manager-cli.d.ts +8 -0
  669. package/dist/package-manager-cli.d.ts.map +1 -0
  670. package/dist/package-manager-cli.js +777 -0
  671. package/dist/package-manager-cli.js.map +1 -0
  672. package/dist/rpc-entry.d.ts +3 -0
  673. package/dist/rpc-entry.d.ts.map +1 -0
  674. package/dist/rpc-entry.js +11 -0
  675. package/dist/rpc-entry.js.map +1 -0
  676. package/dist/server/create-harness.d.ts +26 -0
  677. package/dist/server/create-harness.d.ts.map +1 -0
  678. package/dist/server/create-harness.js +106 -0
  679. package/dist/server/create-harness.js.map +1 -0
  680. package/dist/utils/abort.d.ts +5 -0
  681. package/dist/utils/abort.d.ts.map +1 -0
  682. package/dist/utils/abort.js +48 -0
  683. package/dist/utils/abort.js.map +1 -0
  684. package/dist/utils/ansi.d.ts +2 -0
  685. package/dist/utils/ansi.d.ts.map +1 -0
  686. package/dist/utils/ansi.js +52 -0
  687. package/dist/utils/ansi.js.map +1 -0
  688. package/dist/utils/changelog.d.ts +22 -0
  689. package/dist/utils/changelog.d.ts.map +1 -0
  690. package/dist/utils/changelog.js +165 -0
  691. package/dist/utils/changelog.js.map +1 -0
  692. package/dist/utils/child-process.d.ts +18 -0
  693. package/dist/utils/child-process.d.ts.map +1 -0
  694. package/dist/utils/child-process.js +106 -0
  695. package/dist/utils/child-process.js.map +1 -0
  696. package/dist/utils/clipboard-image.d.ts +11 -0
  697. package/dist/utils/clipboard-image.d.ts.map +1 -0
  698. package/dist/utils/clipboard-image.js +245 -0
  699. package/dist/utils/clipboard-image.js.map +1 -0
  700. package/dist/utils/clipboard-native.d.ts +11 -0
  701. package/dist/utils/clipboard-native.d.ts.map +1 -0
  702. package/dist/utils/clipboard-native.js +20 -0
  703. package/dist/utils/clipboard-native.js.map +1 -0
  704. package/dist/utils/clipboard.d.ts +4 -0
  705. package/dist/utils/clipboard.d.ts.map +1 -0
  706. package/dist/utils/clipboard.js +161 -0
  707. package/dist/utils/clipboard.js.map +1 -0
  708. package/dist/utils/deprecation.d.ts +4 -0
  709. package/dist/utils/deprecation.d.ts.map +1 -0
  710. package/dist/utils/deprecation.js +13 -0
  711. package/dist/utils/deprecation.js.map +1 -0
  712. package/dist/utils/exif-orientation.d.ts +5 -0
  713. package/dist/utils/exif-orientation.d.ts.map +1 -0
  714. package/dist/utils/exif-orientation.js +158 -0
  715. package/dist/utils/exif-orientation.js.map +1 -0
  716. package/dist/utils/frontmatter.d.ts +8 -0
  717. package/dist/utils/frontmatter.d.ts.map +1 -0
  718. package/dist/utils/frontmatter.js +26 -0
  719. package/dist/utils/frontmatter.js.map +1 -0
  720. package/dist/utils/fs-watch.d.ts +5 -0
  721. package/dist/utils/fs-watch.d.ts.map +1 -0
  722. package/dist/utils/fs-watch.js +25 -0
  723. package/dist/utils/fs-watch.js.map +1 -0
  724. package/dist/utils/git.d.ts +26 -0
  725. package/dist/utils/git.d.ts.map +1 -0
  726. package/dist/utils/git.js +195 -0
  727. package/dist/utils/git.js.map +1 -0
  728. package/dist/utils/html.d.ts +7 -0
  729. package/dist/utils/html.d.ts.map +1 -0
  730. package/dist/utils/html.js +40 -0
  731. package/dist/utils/html.js.map +1 -0
  732. package/dist/utils/image-convert.d.ts +10 -0
  733. package/dist/utils/image-convert.d.ts.map +1 -0
  734. package/dist/utils/image-convert.js +45 -0
  735. package/dist/utils/image-convert.js.map +1 -0
  736. package/dist/utils/image-process.d.ts +18 -0
  737. package/dist/utils/image-process.d.ts.map +1 -0
  738. package/dist/utils/image-process.js +83 -0
  739. package/dist/utils/image-process.js.map +1 -0
  740. package/dist/utils/image-resize-core.d.ts +30 -0
  741. package/dist/utils/image-resize-core.d.ts.map +1 -0
  742. package/dist/utils/image-resize-core.js +124 -0
  743. package/dist/utils/image-resize-core.js.map +1 -0
  744. package/dist/utils/image-resize-worker.d.ts +2 -0
  745. package/dist/utils/image-resize-worker.d.ts.map +1 -0
  746. package/dist/utils/image-resize-worker.js +31 -0
  747. package/dist/utils/image-resize-worker.js.map +1 -0
  748. package/dist/utils/image-resize.d.ts +16 -0
  749. package/dist/utils/image-resize.d.ts.map +1 -0
  750. package/dist/utils/image-resize.js +97 -0
  751. package/dist/utils/image-resize.js.map +1 -0
  752. package/dist/utils/json.d.ts +3 -0
  753. package/dist/utils/json.d.ts.map +1 -0
  754. package/dist/utils/json.js +7 -0
  755. package/dist/utils/json.js.map +1 -0
  756. package/dist/utils/management-http.d.ts +23 -0
  757. package/dist/utils/management-http.d.ts.map +1 -0
  758. package/dist/utils/management-http.js +50 -0
  759. package/dist/utils/management-http.js.map +1 -0
  760. package/dist/utils/mime.d.ts +3 -0
  761. package/dist/utils/mime.d.ts.map +1 -0
  762. package/dist/utils/mime.js +110 -0
  763. package/dist/utils/mime.js.map +1 -0
  764. package/dist/utils/open-browser.d.ts +9 -0
  765. package/dist/utils/open-browser.d.ts.map +1 -0
  766. package/dist/utils/open-browser.js +22 -0
  767. package/dist/utils/open-browser.js.map +1 -0
  768. package/dist/utils/paths.d.ts +34 -0
  769. package/dist/utils/paths.d.ts.map +1 -0
  770. package/dist/utils/paths.js +114 -0
  771. package/dist/utils/paths.js.map +1 -0
  772. package/dist/utils/photon.d.ts +21 -0
  773. package/dist/utils/photon.d.ts.map +1 -0
  774. package/dist/utils/photon.js +121 -0
  775. package/dist/utils/photon.js.map +1 -0
  776. package/dist/utils/pi-user-agent.d.ts +2 -0
  777. package/dist/utils/pi-user-agent.d.ts.map +1 -0
  778. package/dist/utils/pi-user-agent.js +5 -0
  779. package/dist/utils/pi-user-agent.js.map +1 -0
  780. package/dist/utils/shell.d.ts +31 -0
  781. package/dist/utils/shell.d.ts.map +1 -0
  782. package/dist/utils/shell.js +202 -0
  783. package/dist/utils/shell.js.map +1 -0
  784. package/dist/utils/sleep.d.ts +5 -0
  785. package/dist/utils/sleep.d.ts.map +1 -0
  786. package/dist/utils/sleep.js +17 -0
  787. package/dist/utils/sleep.js.map +1 -0
  788. package/dist/utils/syntax-highlight.d.ts +12 -0
  789. package/dist/utils/syntax-highlight.d.ts.map +1 -0
  790. package/dist/utils/syntax-highlight.js +118 -0
  791. package/dist/utils/syntax-highlight.js.map +1 -0
  792. package/dist/utils/tool-result-images.d.ts +19 -0
  793. package/dist/utils/tool-result-images.d.ts.map +1 -0
  794. package/dist/utils/tool-result-images.js +45 -0
  795. package/dist/utils/tool-result-images.js.map +1 -0
  796. package/dist/utils/tools-manager.d.ts +12 -0
  797. package/dist/utils/tools-manager.d.ts.map +1 -0
  798. package/dist/utils/tools-manager.js +321 -0
  799. package/dist/utils/tools-manager.js.map +1 -0
  800. package/dist/utils/version-check.d.ts +19 -0
  801. package/dist/utils/version-check.d.ts.map +1 -0
  802. package/dist/utils/version-check.js +79 -0
  803. package/dist/utils/version-check.js.map +1 -0
  804. package/dist/utils/windows-self-update.d.ts +3 -0
  805. package/dist/utils/windows-self-update.d.ts.map +1 -0
  806. package/dist/utils/windows-self-update.js +77 -0
  807. package/dist/utils/windows-self-update.js.map +1 -0
  808. package/docs/compaction.md +401 -0
  809. package/docs/containerization.md +111 -0
  810. package/docs/custom-provider.md +774 -0
  811. package/docs/development.md +71 -0
  812. package/docs/docs.json +156 -0
  813. package/docs/environment-variables.md +94 -0
  814. package/docs/extensions.md +2992 -0
  815. package/docs/images/doom-extension.png +0 -0
  816. package/docs/images/exy.png +0 -0
  817. package/docs/images/interactive-mode.png +0 -0
  818. package/docs/images/tree-view.png +0 -0
  819. package/docs/index.md +84 -0
  820. package/docs/json.md +93 -0
  821. package/docs/keybindings.md +236 -0
  822. package/docs/llama-cpp.md +99 -0
  823. package/docs/models.md +565 -0
  824. package/docs/packages.md +228 -0
  825. package/docs/prompt-templates.md +96 -0
  826. package/docs/providers.md +317 -0
  827. package/docs/quickstart.md +167 -0
  828. package/docs/rpc.md +1589 -0
  829. package/docs/sdk.md +1214 -0
  830. package/docs/security.md +59 -0
  831. package/docs/session-format.md +438 -0
  832. package/docs/sessions.md +145 -0
  833. package/docs/settings.md +353 -0
  834. package/docs/shell-aliases.md +13 -0
  835. package/docs/skills.md +231 -0
  836. package/docs/terminal-setup.md +163 -0
  837. package/docs/termux.md +127 -0
  838. package/docs/themes.md +320 -0
  839. package/docs/tmux.md +63 -0
  840. package/docs/tui.md +942 -0
  841. package/docs/usage.md +306 -0
  842. package/docs/windows.md +17 -0
  843. package/examples/README.md +25 -0
  844. package/examples/extensions/README.md +213 -0
  845. package/examples/extensions/auto-commit-on-exit.ts +49 -0
  846. package/examples/extensions/bash-spawn-hook.ts +30 -0
  847. package/examples/extensions/bookmark.ts +50 -0
  848. package/examples/extensions/border-status-editor.ts +150 -0
  849. package/examples/extensions/built-in-tool-renderer.ts +249 -0
  850. package/examples/extensions/claude-rules.ts +86 -0
  851. package/examples/extensions/commands.ts +72 -0
  852. package/examples/extensions/confirm-destructive.ts +59 -0
  853. package/examples/extensions/custom-compaction.ts +117 -0
  854. package/examples/extensions/custom-footer.ts +64 -0
  855. package/examples/extensions/custom-header.ts +73 -0
  856. package/examples/extensions/custom-provider-anthropic/index.ts +611 -0
  857. package/examples/extensions/custom-provider-anthropic/package-lock.json +24 -0
  858. package/examples/extensions/custom-provider-anthropic/package.json +19 -0
  859. package/examples/extensions/custom-provider-gitlab-duo/index.ts +405 -0
  860. package/examples/extensions/custom-provider-gitlab-duo/package.json +16 -0
  861. package/examples/extensions/custom-provider-gitlab-duo/test.ts +82 -0
  862. package/examples/extensions/dirty-repo-guard.ts +56 -0
  863. package/examples/extensions/doom-overlay/README.md +46 -0
  864. package/examples/extensions/doom-overlay/doom/build/doom.js +21 -0
  865. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  866. package/examples/extensions/doom-overlay/doom/build.sh +152 -0
  867. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +72 -0
  868. package/examples/extensions/doom-overlay/doom-component.ts +132 -0
  869. package/examples/extensions/doom-overlay/doom-engine.ts +173 -0
  870. package/examples/extensions/doom-overlay/doom-keys.ts +104 -0
  871. package/examples/extensions/doom-overlay/index.ts +74 -0
  872. package/examples/extensions/doom-overlay/wad-finder.ts +55 -0
  873. package/examples/extensions/dynamic-resources/SKILL.md +8 -0
  874. package/examples/extensions/dynamic-resources/dynamic.json +79 -0
  875. package/examples/extensions/dynamic-resources/dynamic.md +5 -0
  876. package/examples/extensions/dynamic-resources/index.ts +15 -0
  877. package/examples/extensions/dynamic-tools.ts +74 -0
  878. package/examples/extensions/entry-renderer.ts +41 -0
  879. package/examples/extensions/event-bus.ts +43 -0
  880. package/examples/extensions/file-trigger.ts +41 -0
  881. package/examples/extensions/git-checkpoint.ts +53 -0
  882. package/examples/extensions/git-merge-and-resolve.ts +115 -0
  883. package/examples/extensions/github-issue-autocomplete.ts +185 -0
  884. package/examples/extensions/gondolin/index.ts +531 -0
  885. package/examples/extensions/gondolin/package-lock.json +185 -0
  886. package/examples/extensions/gondolin/package.json +19 -0
  887. package/examples/extensions/handoff.ts +190 -0
  888. package/examples/extensions/hello.ts +26 -0
  889. package/examples/extensions/hidden-thinking-label.ts +53 -0
  890. package/examples/extensions/inline-bash.ts +94 -0
  891. package/examples/extensions/input-transform-streaming.ts +39 -0
  892. package/examples/extensions/input-transform.ts +43 -0
  893. package/examples/extensions/interactive-shell.ts +196 -0
  894. package/examples/extensions/kimi-deferred-tools.ts +61 -0
  895. package/examples/extensions/mac-system-theme.ts +47 -0
  896. package/examples/extensions/message-renderer.ts +59 -0
  897. package/examples/extensions/minimal-mode.ts +426 -0
  898. package/examples/extensions/modal-editor.ts +85 -0
  899. package/examples/extensions/model-status.ts +31 -0
  900. package/examples/extensions/notify.ts +55 -0
  901. package/examples/extensions/overlay-qa-tests.ts +1450 -0
  902. package/examples/extensions/overlay-test.ts +153 -0
  903. package/examples/extensions/permission-gate.ts +34 -0
  904. package/examples/extensions/pirate.ts +47 -0
  905. package/examples/extensions/plan-mode/README.md +66 -0
  906. package/examples/extensions/plan-mode/index.ts +390 -0
  907. package/examples/extensions/plan-mode/utils.ts +168 -0
  908. package/examples/extensions/preset.ts +436 -0
  909. package/examples/extensions/project-trust.ts +64 -0
  910. package/examples/extensions/prompt-customizer.ts +97 -0
  911. package/examples/extensions/protected-paths.ts +30 -0
  912. package/examples/extensions/provider-payload.ts +18 -0
  913. package/examples/extensions/qna.ts +118 -0
  914. package/examples/extensions/question.ts +286 -0
  915. package/examples/extensions/questionnaire.ts +448 -0
  916. package/examples/extensions/rainbow-editor.ts +88 -0
  917. package/examples/extensions/reload-runtime.ts +37 -0
  918. package/examples/extensions/rpc-demo.ts +118 -0
  919. package/examples/extensions/sandbox/index.ts +321 -0
  920. package/examples/extensions/sandbox/package-lock.json +92 -0
  921. package/examples/extensions/sandbox/package.json +19 -0
  922. package/examples/extensions/send-user-message.ts +97 -0
  923. package/examples/extensions/session-name.ts +27 -0
  924. package/examples/extensions/shutdown-command.ts +63 -0
  925. package/examples/extensions/snake.ts +343 -0
  926. package/examples/extensions/space-invaders.ts +560 -0
  927. package/examples/extensions/ssh.ts +220 -0
  928. package/examples/extensions/status-line.ts +32 -0
  929. package/examples/extensions/structured-output.ts +65 -0
  930. package/examples/extensions/subagent/README.md +177 -0
  931. package/examples/extensions/subagent/agents/planner.md +37 -0
  932. package/examples/extensions/subagent/agents/reviewer.md +35 -0
  933. package/examples/extensions/subagent/agents/scout.md +50 -0
  934. package/examples/extensions/subagent/agents/worker.md +24 -0
  935. package/examples/extensions/subagent/agents.ts +157 -0
  936. package/examples/extensions/subagent/index.ts +1033 -0
  937. package/examples/extensions/subagent/prompts/implement-and-review.md +10 -0
  938. package/examples/extensions/subagent/prompts/implement.md +10 -0
  939. package/examples/extensions/subagent/prompts/scout-and-plan.md +9 -0
  940. package/examples/extensions/summarize.ts +199 -0
  941. package/examples/extensions/system-prompt-header.ts +17 -0
  942. package/examples/extensions/tic-tac-toe.ts +1008 -0
  943. package/examples/extensions/timed-confirm.ts +70 -0
  944. package/examples/extensions/titlebar-spinner.ts +58 -0
  945. package/examples/extensions/todo.ts +297 -0
  946. package/examples/extensions/tool-override.ts +144 -0
  947. package/examples/extensions/tools.ts +146 -0
  948. package/examples/extensions/trigger-compact.ts +50 -0
  949. package/examples/extensions/truncated-tool.ts +195 -0
  950. package/examples/extensions/widget-placement.ts +9 -0
  951. package/examples/extensions/with-deps/index.ts +32 -0
  952. package/examples/extensions/with-deps/package-lock.json +31 -0
  953. package/examples/extensions/with-deps/package.json +22 -0
  954. package/examples/extensions/working-indicator.ts +123 -0
  955. package/examples/extensions/working-message-test.ts +25 -0
  956. package/examples/rpc-extension-ui.ts +641 -0
  957. package/examples/sdk/01-minimal.ts +26 -0
  958. package/examples/sdk/02-custom-model.ts +49 -0
  959. package/examples/sdk/03-custom-prompt.ts +75 -0
  960. package/examples/sdk/04-skills.ts +55 -0
  961. package/examples/sdk/05-tools.ts +48 -0
  962. package/examples/sdk/06-extensions.ts +99 -0
  963. package/examples/sdk/07-context-files.ts +47 -0
  964. package/examples/sdk/08-prompt-templates.ts +51 -0
  965. package/examples/sdk/09-api-keys-and-oauth.ts +34 -0
  966. package/examples/sdk/10-settings.ts +53 -0
  967. package/examples/sdk/11-sessions.ts +52 -0
  968. package/examples/sdk/12-full-control.ts +74 -0
  969. package/examples/sdk/13-session-runtime.ts +67 -0
  970. package/examples/sdk/README.md +140 -0
  971. package/npm-shrinkwrap.json +1818 -0
  972. package/package.json +109 -0
@@ -0,0 +1,17 @@
1
+ import { type Args } from "../args.ts";
2
+ import { type AuthInput } from "./auth.ts";
3
+ import { type CommandOption, type ParsedCommandInput } from "./command.ts";
4
+ import { type TransportAddress } from "./transport-address.ts";
5
+ export declare const authTokenOption: CommandOption<string>;
6
+ export declare const authTokenFileOption: CommandOption<string>;
7
+ export declare function transportOption(name: "--listen" | "--connect"): CommandOption<TransportAddress>;
8
+ export declare function parseAuth(input: ParsedCommandInput): {
9
+ auth?: AuthInput;
10
+ errors: string[];
11
+ };
12
+ export declare function parseLegacyOptions(input: ParsedCommandInput): {
13
+ options: Args;
14
+ errors: string[];
15
+ };
16
+ export declare function unsupportedLegacyOptions(command: string, input: ParsedCommandInput): string[];
17
+ //# sourceMappingURL=command-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-options.d.ts","sourceRoot":"","sources":["../../../src/cli/experimental/command-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,IAAI,EAAa,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,KAAK,SAAS,EAAkB,MAAM,WAAW,CAAC;AAC3D,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAA6B,MAAM,cAAc,CAAC;AACtG,OAAO,EAAyB,KAAK,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAEtF,eAAO,MAAM,eAAe,uBAA+B,CAAC;AAC5D,eAAO,MAAM,mBAAmB,uBAAoC,CAAC;AAErE,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,WAAW,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAO/F;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAAE,IAAI,CAAC,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAK3F;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,kBAAkB,GAAG;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAQjG;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,MAAM,EAAE,CAG7F","sourcesContent":["import { type Args, parseArgs } from \"../args.ts\";\nimport { type AuthInput, parseAuthInput } from \"./auth.ts\";\nimport { type CommandOption, type ParsedCommandInput, stringOption, valueOption } from \"./command.ts\";\nimport { parseTransportAddress, type TransportAddress } from \"./transport-address.ts\";\n\nexport const authTokenOption = stringOption(\"--auth-token\");\nexport const authTokenFileOption = stringOption(\"--auth-token-file\");\n\nexport function transportOption(name: \"--listen\" | \"--connect\"): CommandOption<TransportAddress> {\n\treturn valueOption(name, (value) => {\n\t\tconst result = parseTransportAddress(value, name);\n\t\treturn result.address\n\t\t\t? { ok: true, value: result.address }\n\t\t\t: { ok: false, error: result.error ?? `Invalid ${name} address \"${value}\"` };\n\t});\n}\n\nexport function parseAuth(input: ParsedCommandInput): { auth?: AuthInput; errors: string[] } {\n\treturn parseAuthInput({\n\t\tauthToken: input.value(authTokenOption),\n\t\tauthTokenFile: input.value(authTokenFileOption),\n\t});\n}\n\nexport function parseLegacyOptions(input: ParsedCommandInput): { options: Args; errors: string[] } {\n\tconst options = parseArgs([...input.remainingArgs]);\n\treturn {\n\t\toptions,\n\t\terrors: options.diagnostics\n\t\t\t.filter((diagnostic) => diagnostic.type === \"error\")\n\t\t\t.map((diagnostic) => diagnostic.message),\n\t};\n}\n\nexport function unsupportedLegacyOptions(command: string, input: ParsedCommandInput): string[] {\n\tif (input.remainingArgs.length === 0) return [];\n\treturn [`The experimental ${command} command does not support existing CLI options yet`];\n}\n"]}
@@ -0,0 +1,35 @@
1
+ import { parseArgs } from "../args.js";
2
+ import { parseAuthInput } from "./auth.js";
3
+ import { stringOption, valueOption } from "./command.js";
4
+ import { parseTransportAddress } from "./transport-address.js";
5
+ export const authTokenOption = stringOption("--auth-token");
6
+ export const authTokenFileOption = stringOption("--auth-token-file");
7
+ export function transportOption(name) {
8
+ return valueOption(name, (value) => {
9
+ const result = parseTransportAddress(value, name);
10
+ return result.address
11
+ ? { ok: true, value: result.address }
12
+ : { ok: false, error: result.error ?? `Invalid ${name} address "${value}"` };
13
+ });
14
+ }
15
+ export function parseAuth(input) {
16
+ return parseAuthInput({
17
+ authToken: input.value(authTokenOption),
18
+ authTokenFile: input.value(authTokenFileOption),
19
+ });
20
+ }
21
+ export function parseLegacyOptions(input) {
22
+ const options = parseArgs([...input.remainingArgs]);
23
+ return {
24
+ options,
25
+ errors: options.diagnostics
26
+ .filter((diagnostic) => diagnostic.type === "error")
27
+ .map((diagnostic) => diagnostic.message),
28
+ };
29
+ }
30
+ export function unsupportedLegacyOptions(command, input) {
31
+ if (input.remainingArgs.length === 0)
32
+ return [];
33
+ return [`The experimental ${command} command does not support existing CLI options yet`];
34
+ }
35
+ //# sourceMappingURL=command-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-options.js","sourceRoot":"","sources":["../../../src/cli/experimental/command-options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAkB,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3D,OAAO,EAA+C,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAyB,MAAM,wBAAwB,CAAC;AAEtF,MAAM,CAAC,MAAM,eAAe,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;AAC5D,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;AAErE,MAAM,UAAU,eAAe,CAAC,IAA8B,EAAmC;IAChG,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC,OAAO;YACpB,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;YACrC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,WAAW,IAAI,aAAa,KAAK,GAAG,EAAE,CAAC;IAAA,CAC9E,CAAC,CAAC;AAAA,CACH;AAED,MAAM,UAAU,SAAS,CAAC,KAAyB,EAA0C;IAC5F,OAAO,cAAc,CAAC;QACrB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC;QACvC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC;KAC/C,CAAC,CAAC;AAAA,CACH;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAyB,EAAuC;IAClG,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IACpD,OAAO;QACN,OAAO;QACP,MAAM,EAAE,OAAO,CAAC,WAAW;aACzB,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC;aACnD,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;KACzC,CAAC;AAAA,CACF;AAED,MAAM,UAAU,wBAAwB,CAAC,OAAe,EAAE,KAAyB,EAAY;IAC9F,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAChD,OAAO,CAAC,oBAAoB,OAAO,oDAAoD,CAAC,CAAC;AAAA,CACzF","sourcesContent":["import { type Args, parseArgs } from \"../args.ts\";\nimport { type AuthInput, parseAuthInput } from \"./auth.ts\";\nimport { type CommandOption, type ParsedCommandInput, stringOption, valueOption } from \"./command.ts\";\nimport { parseTransportAddress, type TransportAddress } from \"./transport-address.ts\";\n\nexport const authTokenOption = stringOption(\"--auth-token\");\nexport const authTokenFileOption = stringOption(\"--auth-token-file\");\n\nexport function transportOption(name: \"--listen\" | \"--connect\"): CommandOption<TransportAddress> {\n\treturn valueOption(name, (value) => {\n\t\tconst result = parseTransportAddress(value, name);\n\t\treturn result.address\n\t\t\t? { ok: true, value: result.address }\n\t\t\t: { ok: false, error: result.error ?? `Invalid ${name} address \"${value}\"` };\n\t});\n}\n\nexport function parseAuth(input: ParsedCommandInput): { auth?: AuthInput; errors: string[] } {\n\treturn parseAuthInput({\n\t\tauthToken: input.value(authTokenOption),\n\t\tauthTokenFile: input.value(authTokenFileOption),\n\t});\n}\n\nexport function parseLegacyOptions(input: ParsedCommandInput): { options: Args; errors: string[] } {\n\tconst options = parseArgs([...input.remainingArgs]);\n\treturn {\n\t\toptions,\n\t\terrors: options.diagnostics\n\t\t\t.filter((diagnostic) => diagnostic.type === \"error\")\n\t\t\t.map((diagnostic) => diagnostic.message),\n\t};\n}\n\nexport function unsupportedLegacyOptions(command: string, input: ParsedCommandInput): string[] {\n\tif (input.remainingArgs.length === 0) return [];\n\treturn [`The experimental ${command} command does not support existing CLI options yet`];\n}\n"]}
@@ -0,0 +1,63 @@
1
+ export interface NamedCommandInvocation {
2
+ readonly command: string;
3
+ }
4
+ export type CommandParseResult<TInvocation extends NamedCommandInvocation = NamedCommandInvocation> = {
5
+ readonly ok: true;
6
+ readonly command: TInvocation;
7
+ } | {
8
+ readonly ok: false;
9
+ readonly errors: readonly string[];
10
+ };
11
+ export type CommandExecutionResult<TInvocation extends NamedCommandInvocation = NamedCommandInvocation> = {
12
+ readonly ok: true;
13
+ readonly command: TInvocation;
14
+ } | {
15
+ readonly ok: false;
16
+ readonly errors: readonly string[];
17
+ };
18
+ export type CommandOptionParseResult<TValue> = {
19
+ readonly ok: true;
20
+ readonly value: TValue;
21
+ } | {
22
+ readonly ok: false;
23
+ readonly error: string;
24
+ };
25
+ export interface CommandOption<TValue> {
26
+ readonly name: `--${string}`;
27
+ parse(value: string): CommandOptionParseResult<TValue>;
28
+ }
29
+ export declare function valueOption<TValue>(name: `--${string}`, parse: (value: string) => CommandOptionParseResult<TValue>): CommandOption<TValue>;
30
+ export declare function stringOption(name: `--${string}`): CommandOption<string>;
31
+ export interface ParsedCommandInput {
32
+ readonly remainingArgs: readonly string[];
33
+ value<TValue>(option: CommandOption<TValue>): TValue | undefined;
34
+ values<TValue>(option: CommandOption<TValue>): readonly TValue[];
35
+ }
36
+ export type CommandBuildResult<TInvocation extends NamedCommandInvocation> = {
37
+ readonly ok: true;
38
+ readonly command: TInvocation;
39
+ } | {
40
+ readonly ok: false;
41
+ readonly errors: readonly string[];
42
+ };
43
+ type CommandBuilder<TInvocation extends NamedCommandInvocation> = (input: ParsedCommandInput) => CommandBuildResult<TInvocation>;
44
+ type CommandAction<TInvocation extends NamedCommandInvocation, TContext> = (command: TInvocation, context: TContext) => void | Promise<void>;
45
+ export declare class Command<TOwnInvocation extends NamedCommandInvocation, TContext, TInvocation extends NamedCommandInvocation = TOwnInvocation> {
46
+ readonly name: string;
47
+ private readonly options;
48
+ private readonly subcommands;
49
+ private builder?;
50
+ private commandAction?;
51
+ constructor(name: string);
52
+ option<TValue>(option: CommandOption<TValue>): this;
53
+ build(builder: CommandBuilder<TOwnInvocation>): this;
54
+ action(action: CommandAction<TOwnInvocation, TContext>): this;
55
+ command<TSubcommandOwnInvocation extends NamedCommandInvocation, TSubcommandContext, TSubcommandInvocation extends NamedCommandInvocation>(command: Command<TSubcommandOwnInvocation, TSubcommandContext, TSubcommandInvocation>): Command<TOwnInvocation, TContext & TSubcommandContext, TInvocation | TSubcommandInvocation>;
56
+ parse(argv: readonly string[]): CommandParseResult<TInvocation>;
57
+ execute(argv: readonly string[], context: TContext): Promise<CommandExecutionResult<TInvocation>>;
58
+ private select;
59
+ private parseOwn;
60
+ private parseOptions;
61
+ }
62
+ export {};
63
+ //# sourceMappingURL=command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/cli/experimental/command.ts"],"names":[],"mappings":"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","sourcesContent":["export interface NamedCommandInvocation {\n\treadonly command: string;\n}\n\nexport type CommandParseResult<TInvocation extends NamedCommandInvocation = NamedCommandInvocation> =\n\t| { readonly ok: true; readonly command: TInvocation }\n\t| { readonly ok: false; readonly errors: readonly string[] };\n\nexport type CommandExecutionResult<TInvocation extends NamedCommandInvocation = NamedCommandInvocation> =\n\t| { readonly ok: true; readonly command: TInvocation }\n\t| { readonly ok: false; readonly errors: readonly string[] };\n\nexport type CommandOptionParseResult<TValue> =\n\t| { readonly ok: true; readonly value: TValue }\n\t| { readonly ok: false; readonly error: string };\n\nexport interface CommandOption<TValue> {\n\treadonly name: `--${string}`;\n\tparse(value: string): CommandOptionParseResult<TValue>;\n}\n\nexport function valueOption<TValue>(\n\tname: `--${string}`,\n\tparse: (value: string) => CommandOptionParseResult<TValue>,\n): CommandOption<TValue> {\n\treturn { name, parse };\n}\n\nexport function stringOption(name: `--${string}`): CommandOption<string> {\n\treturn valueOption(name, (value) => ({ ok: true, value }));\n}\n\nexport interface ParsedCommandInput {\n\treadonly remainingArgs: readonly string[];\n\tvalue<TValue>(option: CommandOption<TValue>): TValue | undefined;\n\tvalues<TValue>(option: CommandOption<TValue>): readonly TValue[];\n}\n\nexport type CommandBuildResult<TInvocation extends NamedCommandInvocation> =\n\t| { readonly ok: true; readonly command: TInvocation }\n\t| { readonly ok: false; readonly errors: readonly string[] };\n\ninterface MutableParsedCommandInput {\n\treadonly values: Map<string, unknown[]>;\n\treadonly remainingArgs: string[];\n\treadonly errors: string[];\n}\n\ntype CommandBuilder<TInvocation extends NamedCommandInvocation> = (\n\tinput: ParsedCommandInput,\n) => CommandBuildResult<TInvocation>;\n\ntype CommandAction<TInvocation extends NamedCommandInvocation, TContext> = (\n\tcommand: TInvocation,\n\tcontext: TContext,\n) => void | Promise<void>;\n\ninterface RegisteredCommand {\n\tparse(argv: readonly string[]): CommandParseResult;\n\texecute(argv: readonly string[], context: unknown): Promise<CommandExecutionResult>;\n}\n\nexport class Command<\n\tTOwnInvocation extends NamedCommandInvocation,\n\tTContext,\n\tTInvocation extends NamedCommandInvocation = TOwnInvocation,\n> {\n\treadonly name: string;\n\tprivate readonly options = new Map<string, CommandOption<unknown>>();\n\tprivate readonly subcommands = new Map<string, RegisteredCommand>();\n\tprivate builder?: CommandBuilder<TOwnInvocation>;\n\tprivate commandAction?: CommandAction<TOwnInvocation, TContext>;\n\n\tconstructor(name: string) {\n\t\tthis.name = name;\n\t}\n\n\toption<TValue>(option: CommandOption<TValue>): this {\n\t\tif (this.options.has(option.name)) {\n\t\t\tthrow new Error(`Option ${option.name} is already registered for ${this.name}`);\n\t\t}\n\t\tthis.options.set(option.name, option);\n\t\treturn this;\n\t}\n\n\tbuild(builder: CommandBuilder<TOwnInvocation>): this {\n\t\tthis.builder = builder;\n\t\treturn this;\n\t}\n\n\taction(action: CommandAction<TOwnInvocation, TContext>): this {\n\t\tthis.commandAction = action;\n\t\treturn this;\n\t}\n\n\tcommand<\n\t\tTSubcommandOwnInvocation extends NamedCommandInvocation,\n\t\tTSubcommandContext,\n\t\tTSubcommandInvocation extends NamedCommandInvocation,\n\t>(\n\t\tcommand: Command<TSubcommandOwnInvocation, TSubcommandContext, TSubcommandInvocation>,\n\t): Command<TOwnInvocation, TContext & TSubcommandContext, TInvocation | TSubcommandInvocation> {\n\t\tif (this.subcommands.has(command.name)) throw new Error(`Command ${command.name} is already registered`);\n\t\tthis.subcommands.set(command.name, {\n\t\t\tparse: (argv) => command.parse(argv),\n\t\t\texecute: (argv, context) => command.execute(argv, context as TSubcommandContext),\n\t\t});\n\t\treturn this as unknown as Command<\n\t\t\tTOwnInvocation,\n\t\t\tTContext & TSubcommandContext,\n\t\t\tTInvocation | TSubcommandInvocation\n\t\t>;\n\t}\n\n\tparse(argv: readonly string[]): CommandParseResult<TInvocation> {\n\t\tconst selected = this.select(argv);\n\t\tif (selected) return selected.command.parse(selected.argv) as CommandParseResult<TInvocation>;\n\t\treturn this.parseOwn(argv) as CommandParseResult<TInvocation>;\n\t}\n\n\tasync execute(argv: readonly string[], context: TContext): Promise<CommandExecutionResult<TInvocation>> {\n\t\tconst selected = this.select(argv);\n\t\tif (selected) {\n\t\t\treturn selected.command.execute(selected.argv, context) as Promise<CommandExecutionResult<TInvocation>>;\n\t\t}\n\n\t\tconst parsed = this.parseOwn(argv);\n\t\tif (!parsed.ok) return parsed;\n\t\tif (!this.commandAction) throw new Error(`Command ${this.name} does not define an action`);\n\t\tawait this.commandAction(parsed.command, context);\n\t\treturn { ok: true, command: parsed.command as unknown as TInvocation };\n\t}\n\n\tprivate select(argv: readonly string[]): { command: RegisteredCommand; argv: readonly string[] } | undefined {\n\t\tconst candidate = argv[0];\n\t\tif (candidate === undefined) return undefined;\n\t\tconst command = this.subcommands.get(candidate);\n\t\treturn command ? { command, argv: argv.slice(1) } : undefined;\n\t}\n\n\tprivate parseOwn(argv: readonly string[]): CommandParseResult<TOwnInvocation> {\n\t\tif (!this.builder) throw new Error(`Command ${this.name} does not define a builder`);\n\t\tconst parsed = this.parseOptions(argv);\n\t\tconst input: ParsedCommandInput = {\n\t\t\tremainingArgs: parsed.remainingArgs,\n\t\t\tvalue: <TValue>(option: CommandOption<TValue>) => parsed.values.get(option.name)?.[0] as TValue | undefined,\n\t\t\tvalues: <TValue>(option: CommandOption<TValue>) => (parsed.values.get(option.name) ?? []) as readonly TValue[],\n\t\t};\n\t\tconst built = this.builder(input);\n\t\tconst errors = [...parsed.errors, ...(built.ok ? [] : built.errors)];\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\tif (!built.ok) throw new Error(`Command ${this.name} failed without an error`);\n\t\treturn { ok: true, command: built.command };\n\t}\n\n\tprivate parseOptions(argv: readonly string[]): MutableParsedCommandInput {\n\t\tconst parsed: MutableParsedCommandInput = {\n\t\t\tvalues: new Map(),\n\t\t\tremainingArgs: [],\n\t\t\terrors: [],\n\t\t};\n\t\tfor (let index = 0; index < argv.length; index++) {\n\t\t\tconst argument = argv[index]!;\n\t\t\tif (argument === \"--\") {\n\t\t\t\tparsed.remainingArgs.push(...argv.slice(index));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst equals = argument.indexOf(\"=\");\n\t\t\tconst name = equals === -1 ? argument : argument.slice(0, equals);\n\t\t\tconst option = this.options.get(name);\n\t\t\tif (!option) {\n\t\t\t\tparsed.remainingArgs.push(...argv.slice(index));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tlet value = equals === -1 ? undefined : argument.slice(equals + 1);\n\t\t\tif (value === undefined) {\n\t\t\t\tconst next = argv[index + 1];\n\t\t\t\tif (next !== undefined && !next.startsWith(\"-\")) {\n\t\t\t\t\tvalue = next;\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (value === undefined || value === \"\") {\n\t\t\t\tparsed.errors.push(`${name} requires a value`);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst values = parsed.values.get(name) ?? [];\n\t\t\tif (values.length > 0) {\n\t\t\t\tparsed.errors.push(`${name} may only be specified once`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst result = option.parse(value);\n\t\t\tif (!result.ok) {\n\t\t\t\tparsed.errors.push(result.error);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalues.push(result.value);\n\t\t\tparsed.values.set(name, values);\n\t\t}\n\t\treturn parsed;\n\t}\n}\n"]}
@@ -0,0 +1,130 @@
1
+ export function valueOption(name, parse) {
2
+ return { name, parse };
3
+ }
4
+ export function stringOption(name) {
5
+ return valueOption(name, (value) => ({ ok: true, value }));
6
+ }
7
+ export class Command {
8
+ name;
9
+ options = new Map();
10
+ subcommands = new Map();
11
+ builder;
12
+ commandAction;
13
+ constructor(name) {
14
+ this.name = name;
15
+ }
16
+ option(option) {
17
+ if (this.options.has(option.name)) {
18
+ throw new Error(`Option ${option.name} is already registered for ${this.name}`);
19
+ }
20
+ this.options.set(option.name, option);
21
+ return this;
22
+ }
23
+ build(builder) {
24
+ this.builder = builder;
25
+ return this;
26
+ }
27
+ action(action) {
28
+ this.commandAction = action;
29
+ return this;
30
+ }
31
+ command(command) {
32
+ if (this.subcommands.has(command.name))
33
+ throw new Error(`Command ${command.name} is already registered`);
34
+ this.subcommands.set(command.name, {
35
+ parse: (argv) => command.parse(argv),
36
+ execute: (argv, context) => command.execute(argv, context),
37
+ });
38
+ return this;
39
+ }
40
+ parse(argv) {
41
+ const selected = this.select(argv);
42
+ if (selected)
43
+ return selected.command.parse(selected.argv);
44
+ return this.parseOwn(argv);
45
+ }
46
+ async execute(argv, context) {
47
+ const selected = this.select(argv);
48
+ if (selected) {
49
+ return selected.command.execute(selected.argv, context);
50
+ }
51
+ const parsed = this.parseOwn(argv);
52
+ if (!parsed.ok)
53
+ return parsed;
54
+ if (!this.commandAction)
55
+ throw new Error(`Command ${this.name} does not define an action`);
56
+ await this.commandAction(parsed.command, context);
57
+ return { ok: true, command: parsed.command };
58
+ }
59
+ select(argv) {
60
+ const candidate = argv[0];
61
+ if (candidate === undefined)
62
+ return undefined;
63
+ const command = this.subcommands.get(candidate);
64
+ return command ? { command, argv: argv.slice(1) } : undefined;
65
+ }
66
+ parseOwn(argv) {
67
+ if (!this.builder)
68
+ throw new Error(`Command ${this.name} does not define a builder`);
69
+ const parsed = this.parseOptions(argv);
70
+ const input = {
71
+ remainingArgs: parsed.remainingArgs,
72
+ value: (option) => parsed.values.get(option.name)?.[0],
73
+ values: (option) => (parsed.values.get(option.name) ?? []),
74
+ };
75
+ const built = this.builder(input);
76
+ const errors = [...parsed.errors, ...(built.ok ? [] : built.errors)];
77
+ if (errors.length > 0)
78
+ return { ok: false, errors };
79
+ if (!built.ok)
80
+ throw new Error(`Command ${this.name} failed without an error`);
81
+ return { ok: true, command: built.command };
82
+ }
83
+ parseOptions(argv) {
84
+ const parsed = {
85
+ values: new Map(),
86
+ remainingArgs: [],
87
+ errors: [],
88
+ };
89
+ for (let index = 0; index < argv.length; index++) {
90
+ const argument = argv[index];
91
+ if (argument === "--") {
92
+ parsed.remainingArgs.push(...argv.slice(index));
93
+ break;
94
+ }
95
+ const equals = argument.indexOf("=");
96
+ const name = equals === -1 ? argument : argument.slice(0, equals);
97
+ const option = this.options.get(name);
98
+ if (!option) {
99
+ parsed.remainingArgs.push(...argv.slice(index));
100
+ break;
101
+ }
102
+ let value = equals === -1 ? undefined : argument.slice(equals + 1);
103
+ if (value === undefined) {
104
+ const next = argv[index + 1];
105
+ if (next !== undefined && !next.startsWith("-")) {
106
+ value = next;
107
+ index++;
108
+ }
109
+ }
110
+ if (value === undefined || value === "") {
111
+ parsed.errors.push(`${name} requires a value`);
112
+ continue;
113
+ }
114
+ const values = parsed.values.get(name) ?? [];
115
+ if (values.length > 0) {
116
+ parsed.errors.push(`${name} may only be specified once`);
117
+ continue;
118
+ }
119
+ const result = option.parse(value);
120
+ if (!result.ok) {
121
+ parsed.errors.push(result.error);
122
+ continue;
123
+ }
124
+ values.push(result.value);
125
+ parsed.values.set(name, values);
126
+ }
127
+ return parsed;
128
+ }
129
+ }
130
+ //# sourceMappingURL=command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../../src/cli/experimental/command.ts"],"names":[],"mappings":"AAqBA,MAAM,UAAU,WAAW,CAC1B,IAAmB,EACnB,KAA0D,EAClC;IACxB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAAA,CACvB;AAED,MAAM,UAAU,YAAY,CAAC,IAAmB,EAAyB;IACxE,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAAA,CAC3D;AAgCD,MAAM,OAAO,OAAO;IAKV,IAAI,CAAS;IACL,OAAO,GAAG,IAAI,GAAG,EAAkC,CAAC;IACpD,WAAW,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5D,OAAO,CAAkC;IACzC,aAAa,CAA2C;IAEhE,YAAY,IAAY,EAAE;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IAAA,CACjB;IAED,MAAM,CAAS,MAA6B,EAAQ;QACnD,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,UAAU,MAAM,CAAC,IAAI,8BAA8B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,CAAC;IAAA,CACZ;IAED,KAAK,CAAC,OAAuC,EAAQ;QACpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;IAAA,CACZ;IAED,MAAM,CAAC,MAA+C,EAAQ;QAC7D,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,OAAO,IAAI,CAAC;IAAA,CACZ;IAED,OAAO,CAKN,OAAqF,EACS;QAC9F,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,OAAO,CAAC,IAAI,wBAAwB,CAAC,CAAC;QACzG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;YAClC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;YACpC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAA6B,CAAC;SAChF,CAAC,CAAC;QACH,OAAO,IAIN,CAAC;IAAA,CACF;IAED,KAAK,CAAC,IAAuB,EAAmC;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAoC,CAAC;QAC9F,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAoC,CAAC;IAAA,CAC9D;IAED,KAAK,CAAC,OAAO,CAAC,IAAuB,EAAE,OAAiB,EAAgD;QACvG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAiD,CAAC;QACzG,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,MAAM,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;QAC3F,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAClD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAiC,EAAE,CAAC;IAAA,CACvE;IAEO,MAAM,CAAC,IAAuB,EAAuE;QAC5G,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAAA,CAC9D;IAEO,QAAQ,CAAC,IAAuB,EAAsC;QAC7E,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,4BAA4B,CAAC,CAAC;QACrF,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAuB;YACjC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,KAAK,EAAE,CAAS,MAA6B,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAuB;YAC3G,MAAM,EAAE,CAAS,MAA6B,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAsB;SAC9G,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,IAAI,0BAA0B,CAAC,CAAC;QAC/E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;IAAA,CAC5C;IAEO,YAAY,CAAC,IAAuB,EAA6B;QACxE,MAAM,MAAM,GAA8B;YACzC,MAAM,EAAE,IAAI,GAAG,EAAE;YACjB,aAAa,EAAE,EAAE;YACjB,MAAM,EAAE,EAAE;SACV,CAAC;QACF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;YAC9B,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACvB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChD,MAAM;YACP,CAAC;YAED,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACrC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAClE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACb,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBAChD,MAAM;YACP,CAAC;YAED,IAAI,KAAK,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACjD,KAAK,GAAG,IAAI,CAAC;oBACb,KAAK,EAAE,CAAC;gBACT,CAAC;YACF,CAAC;YACD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACzC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC;gBAC/C,SAAS;YACV,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC7C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;gBACzD,SAAS;YACV,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACjC,SAAS;YACV,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,MAAM,CAAC;IAAA,CACd;CACD","sourcesContent":["export interface NamedCommandInvocation {\n\treadonly command: string;\n}\n\nexport type CommandParseResult<TInvocation extends NamedCommandInvocation = NamedCommandInvocation> =\n\t| { readonly ok: true; readonly command: TInvocation }\n\t| { readonly ok: false; readonly errors: readonly string[] };\n\nexport type CommandExecutionResult<TInvocation extends NamedCommandInvocation = NamedCommandInvocation> =\n\t| { readonly ok: true; readonly command: TInvocation }\n\t| { readonly ok: false; readonly errors: readonly string[] };\n\nexport type CommandOptionParseResult<TValue> =\n\t| { readonly ok: true; readonly value: TValue }\n\t| { readonly ok: false; readonly error: string };\n\nexport interface CommandOption<TValue> {\n\treadonly name: `--${string}`;\n\tparse(value: string): CommandOptionParseResult<TValue>;\n}\n\nexport function valueOption<TValue>(\n\tname: `--${string}`,\n\tparse: (value: string) => CommandOptionParseResult<TValue>,\n): CommandOption<TValue> {\n\treturn { name, parse };\n}\n\nexport function stringOption(name: `--${string}`): CommandOption<string> {\n\treturn valueOption(name, (value) => ({ ok: true, value }));\n}\n\nexport interface ParsedCommandInput {\n\treadonly remainingArgs: readonly string[];\n\tvalue<TValue>(option: CommandOption<TValue>): TValue | undefined;\n\tvalues<TValue>(option: CommandOption<TValue>): readonly TValue[];\n}\n\nexport type CommandBuildResult<TInvocation extends NamedCommandInvocation> =\n\t| { readonly ok: true; readonly command: TInvocation }\n\t| { readonly ok: false; readonly errors: readonly string[] };\n\ninterface MutableParsedCommandInput {\n\treadonly values: Map<string, unknown[]>;\n\treadonly remainingArgs: string[];\n\treadonly errors: string[];\n}\n\ntype CommandBuilder<TInvocation extends NamedCommandInvocation> = (\n\tinput: ParsedCommandInput,\n) => CommandBuildResult<TInvocation>;\n\ntype CommandAction<TInvocation extends NamedCommandInvocation, TContext> = (\n\tcommand: TInvocation,\n\tcontext: TContext,\n) => void | Promise<void>;\n\ninterface RegisteredCommand {\n\tparse(argv: readonly string[]): CommandParseResult;\n\texecute(argv: readonly string[], context: unknown): Promise<CommandExecutionResult>;\n}\n\nexport class Command<\n\tTOwnInvocation extends NamedCommandInvocation,\n\tTContext,\n\tTInvocation extends NamedCommandInvocation = TOwnInvocation,\n> {\n\treadonly name: string;\n\tprivate readonly options = new Map<string, CommandOption<unknown>>();\n\tprivate readonly subcommands = new Map<string, RegisteredCommand>();\n\tprivate builder?: CommandBuilder<TOwnInvocation>;\n\tprivate commandAction?: CommandAction<TOwnInvocation, TContext>;\n\n\tconstructor(name: string) {\n\t\tthis.name = name;\n\t}\n\n\toption<TValue>(option: CommandOption<TValue>): this {\n\t\tif (this.options.has(option.name)) {\n\t\t\tthrow new Error(`Option ${option.name} is already registered for ${this.name}`);\n\t\t}\n\t\tthis.options.set(option.name, option);\n\t\treturn this;\n\t}\n\n\tbuild(builder: CommandBuilder<TOwnInvocation>): this {\n\t\tthis.builder = builder;\n\t\treturn this;\n\t}\n\n\taction(action: CommandAction<TOwnInvocation, TContext>): this {\n\t\tthis.commandAction = action;\n\t\treturn this;\n\t}\n\n\tcommand<\n\t\tTSubcommandOwnInvocation extends NamedCommandInvocation,\n\t\tTSubcommandContext,\n\t\tTSubcommandInvocation extends NamedCommandInvocation,\n\t>(\n\t\tcommand: Command<TSubcommandOwnInvocation, TSubcommandContext, TSubcommandInvocation>,\n\t): Command<TOwnInvocation, TContext & TSubcommandContext, TInvocation | TSubcommandInvocation> {\n\t\tif (this.subcommands.has(command.name)) throw new Error(`Command ${command.name} is already registered`);\n\t\tthis.subcommands.set(command.name, {\n\t\t\tparse: (argv) => command.parse(argv),\n\t\t\texecute: (argv, context) => command.execute(argv, context as TSubcommandContext),\n\t\t});\n\t\treturn this as unknown as Command<\n\t\t\tTOwnInvocation,\n\t\t\tTContext & TSubcommandContext,\n\t\t\tTInvocation | TSubcommandInvocation\n\t\t>;\n\t}\n\n\tparse(argv: readonly string[]): CommandParseResult<TInvocation> {\n\t\tconst selected = this.select(argv);\n\t\tif (selected) return selected.command.parse(selected.argv) as CommandParseResult<TInvocation>;\n\t\treturn this.parseOwn(argv) as CommandParseResult<TInvocation>;\n\t}\n\n\tasync execute(argv: readonly string[], context: TContext): Promise<CommandExecutionResult<TInvocation>> {\n\t\tconst selected = this.select(argv);\n\t\tif (selected) {\n\t\t\treturn selected.command.execute(selected.argv, context) as Promise<CommandExecutionResult<TInvocation>>;\n\t\t}\n\n\t\tconst parsed = this.parseOwn(argv);\n\t\tif (!parsed.ok) return parsed;\n\t\tif (!this.commandAction) throw new Error(`Command ${this.name} does not define an action`);\n\t\tawait this.commandAction(parsed.command, context);\n\t\treturn { ok: true, command: parsed.command as unknown as TInvocation };\n\t}\n\n\tprivate select(argv: readonly string[]): { command: RegisteredCommand; argv: readonly string[] } | undefined {\n\t\tconst candidate = argv[0];\n\t\tif (candidate === undefined) return undefined;\n\t\tconst command = this.subcommands.get(candidate);\n\t\treturn command ? { command, argv: argv.slice(1) } : undefined;\n\t}\n\n\tprivate parseOwn(argv: readonly string[]): CommandParseResult<TOwnInvocation> {\n\t\tif (!this.builder) throw new Error(`Command ${this.name} does not define a builder`);\n\t\tconst parsed = this.parseOptions(argv);\n\t\tconst input: ParsedCommandInput = {\n\t\t\tremainingArgs: parsed.remainingArgs,\n\t\t\tvalue: <TValue>(option: CommandOption<TValue>) => parsed.values.get(option.name)?.[0] as TValue | undefined,\n\t\t\tvalues: <TValue>(option: CommandOption<TValue>) => (parsed.values.get(option.name) ?? []) as readonly TValue[],\n\t\t};\n\t\tconst built = this.builder(input);\n\t\tconst errors = [...parsed.errors, ...(built.ok ? [] : built.errors)];\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\tif (!built.ok) throw new Error(`Command ${this.name} failed without an error`);\n\t\treturn { ok: true, command: built.command };\n\t}\n\n\tprivate parseOptions(argv: readonly string[]): MutableParsedCommandInput {\n\t\tconst parsed: MutableParsedCommandInput = {\n\t\t\tvalues: new Map(),\n\t\t\tremainingArgs: [],\n\t\t\terrors: [],\n\t\t};\n\t\tfor (let index = 0; index < argv.length; index++) {\n\t\t\tconst argument = argv[index]!;\n\t\t\tif (argument === \"--\") {\n\t\t\t\tparsed.remainingArgs.push(...argv.slice(index));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst equals = argument.indexOf(\"=\");\n\t\t\tconst name = equals === -1 ? argument : argument.slice(0, equals);\n\t\t\tconst option = this.options.get(name);\n\t\t\tif (!option) {\n\t\t\t\tparsed.remainingArgs.push(...argv.slice(index));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tlet value = equals === -1 ? undefined : argument.slice(equals + 1);\n\t\t\tif (value === undefined) {\n\t\t\t\tconst next = argv[index + 1];\n\t\t\t\tif (next !== undefined && !next.startsWith(\"-\")) {\n\t\t\t\t\tvalue = next;\n\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (value === undefined || value === \"\") {\n\t\t\t\tparsed.errors.push(`${name} requires a value`);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst values = parsed.values.get(name) ?? [];\n\t\t\tif (values.length > 0) {\n\t\t\t\tparsed.errors.push(`${name} may only be specified once`);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst result = option.parse(value);\n\t\t\tif (!result.ok) {\n\t\t\t\tparsed.errors.push(result.error);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvalues.push(result.value);\n\t\t\tparsed.values.set(name, values);\n\t\t}\n\t\treturn parsed;\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import type { AuthInput } from "../auth.ts";
2
+ import { Command } from "../command.ts";
3
+ import type { TransportAddress } from "../transport-address.ts";
4
+ export interface ClientCommand {
5
+ readonly command: "client";
6
+ readonly auth?: AuthInput;
7
+ readonly connect?: TransportAddress;
8
+ }
9
+ export interface ClientCommandContext {
10
+ runClient(command: ClientCommand): void | Promise<void>;
11
+ }
12
+ export declare const clientCommand: Command<ClientCommand, ClientCommandContext, ClientCommand>;
13
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/cli/experimental/commands/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AASxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACpC,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAID,eAAO,MAAM,aAAa,6DAmBgC,CAAC","sourcesContent":["import type { AuthInput } from \"../auth.ts\";\nimport { Command } from \"../command.ts\";\nimport {\n\tauthTokenFileOption,\n\tauthTokenOption,\n\tparseAuth,\n\tparseLegacyOptions,\n\ttransportOption,\n\tunsupportedLegacyOptions,\n} from \"../command-options.ts\";\nimport type { TransportAddress } from \"../transport-address.ts\";\n\nexport interface ClientCommand {\n\treadonly command: \"client\";\n\treadonly auth?: AuthInput;\n\treadonly connect?: TransportAddress;\n}\n\nexport interface ClientCommandContext {\n\trunClient(command: ClientCommand): void | Promise<void>;\n}\n\nconst connectOption = transportOption(\"--connect\");\n\nexport const clientCommand = new Command<ClientCommand, ClientCommandContext>(\"client\")\n\t.option(connectOption)\n\t.option(authTokenOption)\n\t.option(authTokenFileOption)\n\t.build((input) => {\n\t\tconst { auth, errors: authErrors } = parseAuth(input);\n\t\tconst connect = input.value(connectOption);\n\t\tconst { errors: optionErrors } = parseLegacyOptions(input);\n\t\tconst errors = [...authErrors, ...optionErrors, ...unsupportedLegacyOptions(\"client\", input)];\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\treturn {\n\t\t\tok: true,\n\t\t\tcommand: {\n\t\t\t\tcommand: \"client\",\n\t\t\t\t...(auth === undefined ? {} : { auth }),\n\t\t\t\t...(connect === undefined ? {} : { connect }),\n\t\t\t},\n\t\t};\n\t})\n\t.action((command, context) => context.runClient(command));\n"]}
@@ -0,0 +1,25 @@
1
+ import { Command } from "../command.js";
2
+ import { authTokenFileOption, authTokenOption, parseAuth, parseLegacyOptions, transportOption, unsupportedLegacyOptions, } from "../command-options.js";
3
+ const connectOption = transportOption("--connect");
4
+ export const clientCommand = new Command("client")
5
+ .option(connectOption)
6
+ .option(authTokenOption)
7
+ .option(authTokenFileOption)
8
+ .build((input) => {
9
+ const { auth, errors: authErrors } = parseAuth(input);
10
+ const connect = input.value(connectOption);
11
+ const { errors: optionErrors } = parseLegacyOptions(input);
12
+ const errors = [...authErrors, ...optionErrors, ...unsupportedLegacyOptions("client", input)];
13
+ if (errors.length > 0)
14
+ return { ok: false, errors };
15
+ return {
16
+ ok: true,
17
+ command: {
18
+ command: "client",
19
+ ...(auth === undefined ? {} : { auth }),
20
+ ...(connect === undefined ? {} : { connect }),
21
+ },
22
+ };
23
+ })
24
+ .action((command, context) => context.runClient(command));
25
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/cli/experimental/commands/client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACN,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,wBAAwB,GACxB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,aAAa,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;AAEnD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAsC,QAAQ,CAAC;KACrF,MAAM,CAAC,aAAa,CAAC;KACrB,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,mBAAmB,CAAC;KAC3B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC3C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,EAAE,GAAG,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpD,OAAO;QACN,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACR,OAAO,EAAE,QAAQ;YACjB,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC7C;KACD,CAAC;AAAA,CACF,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC","sourcesContent":["import type { AuthInput } from \"../auth.ts\";\nimport { Command } from \"../command.ts\";\nimport {\n\tauthTokenFileOption,\n\tauthTokenOption,\n\tparseAuth,\n\tparseLegacyOptions,\n\ttransportOption,\n\tunsupportedLegacyOptions,\n} from \"../command-options.ts\";\nimport type { TransportAddress } from \"../transport-address.ts\";\n\nexport interface ClientCommand {\n\treadonly command: \"client\";\n\treadonly auth?: AuthInput;\n\treadonly connect?: TransportAddress;\n}\n\nexport interface ClientCommandContext {\n\trunClient(command: ClientCommand): void | Promise<void>;\n}\n\nconst connectOption = transportOption(\"--connect\");\n\nexport const clientCommand = new Command<ClientCommand, ClientCommandContext>(\"client\")\n\t.option(connectOption)\n\t.option(authTokenOption)\n\t.option(authTokenFileOption)\n\t.build((input) => {\n\t\tconst { auth, errors: authErrors } = parseAuth(input);\n\t\tconst connect = input.value(connectOption);\n\t\tconst { errors: optionErrors } = parseLegacyOptions(input);\n\t\tconst errors = [...authErrors, ...optionErrors, ...unsupportedLegacyOptions(\"client\", input)];\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\treturn {\n\t\t\tok: true,\n\t\t\tcommand: {\n\t\t\t\tcommand: \"client\",\n\t\t\t\t...(auth === undefined ? {} : { auth }),\n\t\t\t\t...(connect === undefined ? {} : { connect }),\n\t\t\t},\n\t\t};\n\t})\n\t.action((command, context) => context.runClient(command));\n"]}
@@ -0,0 +1,15 @@
1
+ import type { Args } from "../../args.ts";
2
+ import type { AuthInput } from "../auth.ts";
3
+ import { Command } from "../command.ts";
4
+ import type { TransportAddress } from "../transport-address.ts";
5
+ export interface PiCommand {
6
+ readonly command: "pi";
7
+ readonly auth?: AuthInput;
8
+ readonly options: Args;
9
+ readonly listen?: readonly TransportAddress[];
10
+ }
11
+ export interface PiCommandContext {
12
+ runPi(command: PiCommand): void | Promise<void>;
13
+ }
14
+ export declare const piCommand: Command<PiCommand, PiCommandContext, PiCommand>;
15
+ //# sourceMappingURL=pi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.d.ts","sourceRoot":"","sources":["../../../../src/cli/experimental/commands/pi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAID,eAAO,MAAM,SAAS,iDAqBgC,CAAC","sourcesContent":["import type { Args } from \"../../args.ts\";\nimport type { AuthInput } from \"../auth.ts\";\nimport { Command } from \"../command.ts\";\nimport {\n\tauthTokenFileOption,\n\tauthTokenOption,\n\tparseAuth,\n\tparseLegacyOptions,\n\ttransportOption,\n} from \"../command-options.ts\";\nimport type { TransportAddress } from \"../transport-address.ts\";\n\nexport interface PiCommand {\n\treadonly command: \"pi\";\n\treadonly auth?: AuthInput;\n\treadonly options: Args;\n\treadonly listen?: readonly TransportAddress[];\n}\n\nexport interface PiCommandContext {\n\trunPi(command: PiCommand): void | Promise<void>;\n}\n\nconst listenOption = transportOption(\"--listen\");\n\nexport const piCommand = new Command<PiCommand, PiCommandContext>(\"pi\")\n\t.option(listenOption)\n\t.option(authTokenOption)\n\t.option(authTokenFileOption)\n\t.build((input) => {\n\t\tconst { auth, errors: authErrors } = parseAuth(input);\n\t\tconst listen = input.values(listenOption);\n\t\tconst { options, errors: optionErrors } = parseLegacyOptions(input);\n\t\tconst errors = [...authErrors, ...optionErrors];\n\t\tif (options.unknownFlags.has(\"connect\")) errors.push(\"--connect is only valid for client mode\");\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\treturn {\n\t\t\tok: true,\n\t\t\tcommand: {\n\t\t\t\tcommand: \"pi\",\n\t\t\t\toptions,\n\t\t\t\t...(auth === undefined ? {} : { auth }),\n\t\t\t\t...(listen.length === 0 ? {} : { listen }),\n\t\t\t},\n\t\t};\n\t})\n\t.action((command, context) => context.runPi(command));\n"]}
@@ -0,0 +1,28 @@
1
+ import { Command } from "../command.js";
2
+ import { authTokenFileOption, authTokenOption, parseAuth, parseLegacyOptions, transportOption, } from "../command-options.js";
3
+ const listenOption = transportOption("--listen");
4
+ export const piCommand = new Command("pi")
5
+ .option(listenOption)
6
+ .option(authTokenOption)
7
+ .option(authTokenFileOption)
8
+ .build((input) => {
9
+ const { auth, errors: authErrors } = parseAuth(input);
10
+ const listen = input.values(listenOption);
11
+ const { options, errors: optionErrors } = parseLegacyOptions(input);
12
+ const errors = [...authErrors, ...optionErrors];
13
+ if (options.unknownFlags.has("connect"))
14
+ errors.push("--connect is only valid for client mode");
15
+ if (errors.length > 0)
16
+ return { ok: false, errors };
17
+ return {
18
+ ok: true,
19
+ command: {
20
+ command: "pi",
21
+ options,
22
+ ...(auth === undefined ? {} : { auth }),
23
+ ...(listen.length === 0 ? {} : { listen }),
24
+ },
25
+ };
26
+ })
27
+ .action((command, context) => context.runPi(command));
28
+ //# sourceMappingURL=pi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../../src/cli/experimental/commands/pi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACN,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,eAAe,GACf,MAAM,uBAAuB,CAAC;AAc/B,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,OAAO,CAA8B,IAAI,CAAC;KACrE,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,mBAAmB,CAAC;KAC3B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IAChG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpD,OAAO;QACN,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACR,OAAO,EAAE,IAAI;YACb,OAAO;YACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;SAC1C;KACD,CAAC;AAAA,CACF,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC","sourcesContent":["import type { Args } from \"../../args.ts\";\nimport type { AuthInput } from \"../auth.ts\";\nimport { Command } from \"../command.ts\";\nimport {\n\tauthTokenFileOption,\n\tauthTokenOption,\n\tparseAuth,\n\tparseLegacyOptions,\n\ttransportOption,\n} from \"../command-options.ts\";\nimport type { TransportAddress } from \"../transport-address.ts\";\n\nexport interface PiCommand {\n\treadonly command: \"pi\";\n\treadonly auth?: AuthInput;\n\treadonly options: Args;\n\treadonly listen?: readonly TransportAddress[];\n}\n\nexport interface PiCommandContext {\n\trunPi(command: PiCommand): void | Promise<void>;\n}\n\nconst listenOption = transportOption(\"--listen\");\n\nexport const piCommand = new Command<PiCommand, PiCommandContext>(\"pi\")\n\t.option(listenOption)\n\t.option(authTokenOption)\n\t.option(authTokenFileOption)\n\t.build((input) => {\n\t\tconst { auth, errors: authErrors } = parseAuth(input);\n\t\tconst listen = input.values(listenOption);\n\t\tconst { options, errors: optionErrors } = parseLegacyOptions(input);\n\t\tconst errors = [...authErrors, ...optionErrors];\n\t\tif (options.unknownFlags.has(\"connect\")) errors.push(\"--connect is only valid for client mode\");\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\treturn {\n\t\t\tok: true,\n\t\t\tcommand: {\n\t\t\t\tcommand: \"pi\",\n\t\t\t\toptions,\n\t\t\t\t...(auth === undefined ? {} : { auth }),\n\t\t\t\t...(listen.length === 0 ? {} : { listen }),\n\t\t\t},\n\t\t};\n\t})\n\t.action((command, context) => context.runPi(command));\n"]}
@@ -0,0 +1,13 @@
1
+ import type { AuthInput } from "../auth.ts";
2
+ import { Command } from "../command.ts";
3
+ import type { TransportAddress } from "../transport-address.ts";
4
+ export interface ServerCommand {
5
+ readonly command: "server";
6
+ readonly auth?: AuthInput;
7
+ readonly listen?: readonly TransportAddress[];
8
+ }
9
+ export interface ServerCommandContext {
10
+ runServer(command: ServerCommand): void | Promise<void>;
11
+ }
12
+ export declare const serverCommand: Command<ServerCommand, ServerCommandContext, ServerCommand>;
13
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/cli/experimental/commands/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AASxC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC9C;AAED,MAAM,WAAW,oBAAoB;IACpC,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxD;AAID,eAAO,MAAM,aAAa,6DAmBgC,CAAC","sourcesContent":["import type { AuthInput } from \"../auth.ts\";\nimport { Command } from \"../command.ts\";\nimport {\n\tauthTokenFileOption,\n\tauthTokenOption,\n\tparseAuth,\n\tparseLegacyOptions,\n\ttransportOption,\n\tunsupportedLegacyOptions,\n} from \"../command-options.ts\";\nimport type { TransportAddress } from \"../transport-address.ts\";\n\nexport interface ServerCommand {\n\treadonly command: \"server\";\n\treadonly auth?: AuthInput;\n\treadonly listen?: readonly TransportAddress[];\n}\n\nexport interface ServerCommandContext {\n\trunServer(command: ServerCommand): void | Promise<void>;\n}\n\nconst listenOption = transportOption(\"--listen\");\n\nexport const serverCommand = new Command<ServerCommand, ServerCommandContext>(\"server\")\n\t.option(listenOption)\n\t.option(authTokenOption)\n\t.option(authTokenFileOption)\n\t.build((input) => {\n\t\tconst { auth, errors: authErrors } = parseAuth(input);\n\t\tconst listen = input.values(listenOption);\n\t\tconst { errors: optionErrors } = parseLegacyOptions(input);\n\t\tconst errors = [...authErrors, ...optionErrors, ...unsupportedLegacyOptions(\"server\", input)];\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\treturn {\n\t\t\tok: true,\n\t\t\tcommand: {\n\t\t\t\tcommand: \"server\",\n\t\t\t\t...(auth === undefined ? {} : { auth }),\n\t\t\t\t...(listen.length === 0 ? {} : { listen }),\n\t\t\t},\n\t\t};\n\t})\n\t.action((command, context) => context.runServer(command));\n"]}
@@ -0,0 +1,25 @@
1
+ import { Command } from "../command.js";
2
+ import { authTokenFileOption, authTokenOption, parseAuth, parseLegacyOptions, transportOption, unsupportedLegacyOptions, } from "../command-options.js";
3
+ const listenOption = transportOption("--listen");
4
+ export const serverCommand = new Command("server")
5
+ .option(listenOption)
6
+ .option(authTokenOption)
7
+ .option(authTokenFileOption)
8
+ .build((input) => {
9
+ const { auth, errors: authErrors } = parseAuth(input);
10
+ const listen = input.values(listenOption);
11
+ const { errors: optionErrors } = parseLegacyOptions(input);
12
+ const errors = [...authErrors, ...optionErrors, ...unsupportedLegacyOptions("server", input)];
13
+ if (errors.length > 0)
14
+ return { ok: false, errors };
15
+ return {
16
+ ok: true,
17
+ command: {
18
+ command: "server",
19
+ ...(auth === undefined ? {} : { auth }),
20
+ ...(listen.length === 0 ? {} : { listen }),
21
+ },
22
+ };
23
+ })
24
+ .action((command, context) => context.runServer(command));
25
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/cli/experimental/commands/server.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EACN,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,eAAe,EACf,wBAAwB,GACxB,MAAM,uBAAuB,CAAC;AAa/B,MAAM,YAAY,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAEjD,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,OAAO,CAAsC,QAAQ,CAAC;KACrF,MAAM,CAAC,YAAY,CAAC;KACpB,MAAM,CAAC,eAAe,CAAC;KACvB,MAAM,CAAC,mBAAmB,CAAC;KAC3B,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACjB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,EAAE,GAAG,YAAY,EAAE,GAAG,wBAAwB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IAC9F,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACpD,OAAO;QACN,EAAE,EAAE,IAAI;QACR,OAAO,EAAE;YACR,OAAO,EAAE,QAAQ;YACjB,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;YACvC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;SAC1C;KACD,CAAC;AAAA,CACF,CAAC;KACD,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC","sourcesContent":["import type { AuthInput } from \"../auth.ts\";\nimport { Command } from \"../command.ts\";\nimport {\n\tauthTokenFileOption,\n\tauthTokenOption,\n\tparseAuth,\n\tparseLegacyOptions,\n\ttransportOption,\n\tunsupportedLegacyOptions,\n} from \"../command-options.ts\";\nimport type { TransportAddress } from \"../transport-address.ts\";\n\nexport interface ServerCommand {\n\treadonly command: \"server\";\n\treadonly auth?: AuthInput;\n\treadonly listen?: readonly TransportAddress[];\n}\n\nexport interface ServerCommandContext {\n\trunServer(command: ServerCommand): void | Promise<void>;\n}\n\nconst listenOption = transportOption(\"--listen\");\n\nexport const serverCommand = new Command<ServerCommand, ServerCommandContext>(\"server\")\n\t.option(listenOption)\n\t.option(authTokenOption)\n\t.option(authTokenFileOption)\n\t.build((input) => {\n\t\tconst { auth, errors: authErrors } = parseAuth(input);\n\t\tconst listen = input.values(listenOption);\n\t\tconst { errors: optionErrors } = parseLegacyOptions(input);\n\t\tconst errors = [...authErrors, ...optionErrors, ...unsupportedLegacyOptions(\"server\", input)];\n\t\tif (errors.length > 0) return { ok: false, errors };\n\t\treturn {\n\t\t\tok: true,\n\t\t\tcommand: {\n\t\t\t\tcommand: \"server\",\n\t\t\t\t...(auth === undefined ? {} : { auth }),\n\t\t\t\t...(listen.length === 0 ? {} : { listen }),\n\t\t\t},\n\t\t};\n\t})\n\t.action((command, context) => context.runServer(command));\n"]}
@@ -0,0 +1,10 @@
1
+ export interface UnixTransportAddress {
2
+ readonly transport: "unix";
3
+ readonly path: string;
4
+ }
5
+ export type TransportAddress = UnixTransportAddress;
6
+ export declare function parseTransportAddress(value: string, option: "--listen" | "--connect"): {
7
+ address?: TransportAddress;
8
+ error?: string;
9
+ };
10
+ //# sourceMappingURL=transport-address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-address.d.ts","sourceRoot":"","sources":["../../../src/cli/experimental/transport-address.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GAAG,oBAAoB,CAAC;AAEpD,wBAAgB,qBAAqB,CACpC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,UAAU,GAAG,WAAW,GAC9B;IAAE,OAAO,CAAC,EAAE,gBAAgB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAmChD","sourcesContent":["import { posix } from \"node:path\";\n\nexport interface UnixTransportAddress {\n\treadonly transport: \"unix\";\n\treadonly path: string;\n}\n\nexport type TransportAddress = UnixTransportAddress;\n\nexport function parseTransportAddress(\n\tvalue: string,\n\toption: \"--listen\" | \"--connect\",\n): { address?: TransportAddress; error?: string } {\n\tlet url: URL;\n\ttry {\n\t\turl = new URL(value);\n\t} catch {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tif (url.protocol !== \"unix:\") {\n\t\treturn { error: `Unsupported ${option} transport \"${url.protocol}\"` };\n\t}\n\tif (url.hostname || url.port || url.username || url.password) {\n\t\treturn { error: \"Unix transport address must not include an authority\" };\n\t}\n\tif (\n\t\t!value.startsWith(\"unix:///\") ||\n\t\tvalue.startsWith(\"unix:////\") ||\n\t\tvalue.includes(\"?\") ||\n\t\tvalue.includes(\"#\") ||\n\t\turl.href !== value\n\t) {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tlet path: string;\n\ttry {\n\t\tpath = decodeURIComponent(url.pathname);\n\t} catch {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tif (path.includes(\"\\0\")) {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tif (!posix.isAbsolute(path)) {\n\t\treturn { error: \"Unix transport address requires an absolute path\" };\n\t}\n\treturn { address: { transport: \"unix\", path } };\n}\n"]}
@@ -0,0 +1,38 @@
1
+ import { posix } from "node:path";
2
+ export function parseTransportAddress(value, option) {
3
+ let url;
4
+ try {
5
+ url = new URL(value);
6
+ }
7
+ catch {
8
+ return { error: `Invalid ${option} address "${value}"` };
9
+ }
10
+ if (url.protocol !== "unix:") {
11
+ return { error: `Unsupported ${option} transport "${url.protocol}"` };
12
+ }
13
+ if (url.hostname || url.port || url.username || url.password) {
14
+ return { error: "Unix transport address must not include an authority" };
15
+ }
16
+ if (!value.startsWith("unix:///") ||
17
+ value.startsWith("unix:////") ||
18
+ value.includes("?") ||
19
+ value.includes("#") ||
20
+ url.href !== value) {
21
+ return { error: `Invalid ${option} address "${value}"` };
22
+ }
23
+ let path;
24
+ try {
25
+ path = decodeURIComponent(url.pathname);
26
+ }
27
+ catch {
28
+ return { error: `Invalid ${option} address "${value}"` };
29
+ }
30
+ if (path.includes("\0")) {
31
+ return { error: `Invalid ${option} address "${value}"` };
32
+ }
33
+ if (!posix.isAbsolute(path)) {
34
+ return { error: "Unix transport address requires an absolute path" };
35
+ }
36
+ return { address: { transport: "unix", path } };
37
+ }
38
+ //# sourceMappingURL=transport-address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport-address.js","sourceRoot":"","sources":["../../../src/cli/experimental/transport-address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AASlC,MAAM,UAAU,qBAAqB,CACpC,KAAa,EACb,MAAgC,EACiB;IACjD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACJ,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,WAAW,MAAM,aAAa,KAAK,GAAG,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,eAAe,MAAM,eAAe,GAAG,CAAC,QAAQ,GAAG,EAAE,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,sDAAsD,EAAE,CAAC;IAC1E,CAAC;IACD,IACC,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC;QAC7B,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC;QAC7B,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QACnB,GAAG,CAAC,IAAI,KAAK,KAAK,EACjB,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,WAAW,MAAM,aAAa,KAAK,GAAG,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACJ,IAAI,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,WAAW,MAAM,aAAa,KAAK,GAAG,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,EAAE,KAAK,EAAE,WAAW,MAAM,aAAa,KAAK,GAAG,EAAE,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;IACtE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;AAAA,CAChD","sourcesContent":["import { posix } from \"node:path\";\n\nexport interface UnixTransportAddress {\n\treadonly transport: \"unix\";\n\treadonly path: string;\n}\n\nexport type TransportAddress = UnixTransportAddress;\n\nexport function parseTransportAddress(\n\tvalue: string,\n\toption: \"--listen\" | \"--connect\",\n): { address?: TransportAddress; error?: string } {\n\tlet url: URL;\n\ttry {\n\t\turl = new URL(value);\n\t} catch {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tif (url.protocol !== \"unix:\") {\n\t\treturn { error: `Unsupported ${option} transport \"${url.protocol}\"` };\n\t}\n\tif (url.hostname || url.port || url.username || url.password) {\n\t\treturn { error: \"Unix transport address must not include an authority\" };\n\t}\n\tif (\n\t\t!value.startsWith(\"unix:///\") ||\n\t\tvalue.startsWith(\"unix:////\") ||\n\t\tvalue.includes(\"?\") ||\n\t\tvalue.includes(\"#\") ||\n\t\turl.href !== value\n\t) {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tlet path: string;\n\ttry {\n\t\tpath = decodeURIComponent(url.pathname);\n\t} catch {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tif (path.includes(\"\\0\")) {\n\t\treturn { error: `Invalid ${option} address \"${value}\"` };\n\t}\n\tif (!posix.isAbsolute(path)) {\n\t\treturn { error: \"Unix transport address requires an absolute path\" };\n\t}\n\treturn { address: { transport: \"unix\", path } };\n}\n"]}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Process @file CLI arguments into text content and image attachments
3
+ */
4
+ import type { ImageContent } from "@earendil-works/pi-ai";
5
+ export interface ProcessedFiles {
6
+ text: string;
7
+ images: ImageContent[];
8
+ }
9
+ export interface ProcessFileOptions {
10
+ /** Whether to auto-resize images to 2000x2000 max. Default: true */
11
+ autoResizeImages?: boolean;
12
+ }
13
+ /** Process @file arguments into text content and image attachments */
14
+ export declare function processFileArguments(fileArgs: string[], options?: ProcessFileOptions): Promise<ProcessedFiles>;
15
+ //# sourceMappingURL=file-processor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-processor.d.ts","sourceRoot":"","sources":["../../src/cli/file-processor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAO1D,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IAClC,oEAAoE;IACpE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,sEAAsE;AACtE,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,cAAc,CAAC,CA+DpH","sourcesContent":["/**\n * Process @file CLI arguments into text content and image attachments\n */\n\nimport { access, readFile, stat } from \"node:fs/promises\";\nimport type { ImageContent } from \"@earendil-works/pi-ai\";\nimport chalk from \"chalk\";\nimport { resolve } from \"path\";\nimport { resolveReadPath } from \"../core/tools/path-utils.ts\";\nimport { processImage } from \"../utils/image-process.ts\";\nimport { detectSupportedImageMimeTypeFromFile } from \"../utils/mime.ts\";\n\nexport interface ProcessedFiles {\n\ttext: string;\n\timages: ImageContent[];\n}\n\nexport interface ProcessFileOptions {\n\t/** Whether to auto-resize images to 2000x2000 max. Default: true */\n\tautoResizeImages?: boolean;\n}\n\n/** Process @file arguments into text content and image attachments */\nexport async function processFileArguments(fileArgs: string[], options?: ProcessFileOptions): Promise<ProcessedFiles> {\n\tconst autoResizeImages = options?.autoResizeImages ?? true;\n\tlet text = \"\";\n\tconst images: ImageContent[] = [];\n\n\tfor (const fileArg of fileArgs) {\n\t\t// Expand and resolve path (handles ~ expansion and macOS screenshot Unicode spaces)\n\t\tconst absolutePath = resolve(resolveReadPath(fileArg, process.cwd()));\n\n\t\t// Check if file exists\n\t\ttry {\n\t\t\tawait access(absolutePath);\n\t\t} catch {\n\t\t\tconsole.error(chalk.red(`Error: File not found: ${absolutePath}`));\n\t\t\tprocess.exit(1);\n\t\t}\n\n\t\t// Check if file is empty\n\t\tconst stats = await stat(absolutePath);\n\t\tif (stats.size === 0) {\n\t\t\t// Skip empty files\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst mimeType = await detectSupportedImageMimeTypeFromFile(absolutePath);\n\n\t\tif (mimeType) {\n\t\t\t// Handle image file\n\t\t\tconst content = await readFile(absolutePath);\n\t\t\tconst processed = await processImage(content, mimeType, { autoResizeImages });\n\n\t\t\tif (!processed.ok) {\n\t\t\t\ttext += `<file name=\"${absolutePath}\">${processed.message}</file>\\n`;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst attachment: ImageContent = {\n\t\t\t\ttype: \"image\",\n\t\t\t\tmimeType: processed.mimeType,\n\t\t\t\tdata: processed.data,\n\t\t\t};\n\t\t\timages.push(attachment);\n\n\t\t\t// Add text reference to image with optional processing hints\n\t\t\tif (processed.hints.length > 0) {\n\t\t\t\ttext += `<file name=\"${absolutePath}\">${processed.hints.join(\"\\n\")}</file>\\n`;\n\t\t\t} else {\n\t\t\t\ttext += `<file name=\"${absolutePath}\"></file>\\n`;\n\t\t\t}\n\t\t} else {\n\t\t\t// Handle text file\n\t\t\ttry {\n\t\t\t\tconst content = await readFile(absolutePath, \"utf-8\");\n\t\t\t\ttext += `<file name=\"${absolutePath}\">\\n${content}\\n</file>\\n`;\n\t\t\t} catch (error: unknown) {\n\t\t\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\t\t\tconsole.error(chalk.red(`Error: Could not read file ${absolutePath}: ${message}`));\n\t\t\t\tprocess.exit(1);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { text, images };\n}\n"]}