@seamapi/cli 0.18.1 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/README.md +55 -1
  2. package/bin/cli.js +73 -249
  3. package/bin/cli.js.map +1 -1
  4. package/lib/args/coerce.d.ts +28 -0
  5. package/lib/args/coerce.js +131 -0
  6. package/lib/args/coerce.js.map +1 -0
  7. package/lib/{util/cli-args.d.ts → args/parse.d.ts} +12 -15
  8. package/lib/{util/cli-args.js → args/parse.js} +21 -24
  9. package/lib/args/parse.js.map +1 -0
  10. package/lib/args/validate.d.ts +23 -0
  11. package/lib/args/validate.js +42 -0
  12. package/lib/args/validate.js.map +1 -0
  13. package/lib/auth/operations.d.ts +54 -0
  14. package/lib/auth/operations.js +115 -0
  15. package/lib/auth/operations.js.map +1 -0
  16. package/lib/{validate-token.js → auth/validate-token.js} +2 -2
  17. package/lib/auth/validate-token.js.map +1 -0
  18. package/lib/blueprint/cache.d.ts +16 -0
  19. package/lib/blueprint/cache.js +73 -0
  20. package/lib/blueprint/cache.js.map +1 -0
  21. package/lib/blueprint/endpoint.d.ts +14 -0
  22. package/lib/{get-response-key.js → blueprint/endpoint.js} +11 -2
  23. package/lib/blueprint/endpoint.js.map +1 -0
  24. package/lib/blueprint/index.d.ts +12 -0
  25. package/lib/blueprint/index.js +10 -0
  26. package/lib/blueprint/index.js.map +1 -0
  27. package/lib/blueprint/source-npm.d.ts +10 -0
  28. package/lib/{blueprint.js → blueprint/source-npm.js} +20 -74
  29. package/lib/blueprint/source-npm.js.map +1 -0
  30. package/lib/blueprint/source-remote.d.ts +6 -0
  31. package/lib/blueprint/source-remote.js +14 -0
  32. package/lib/blueprint/source-remote.js.map +1 -0
  33. package/lib/commands/api-command.d.ts +8 -0
  34. package/lib/commands/api-command.js +71 -0
  35. package/lib/commands/api-command.js.map +1 -0
  36. package/lib/commands/local/completion.d.ts +18 -0
  37. package/lib/commands/local/completion.js +35 -0
  38. package/lib/commands/local/completion.js.map +1 -0
  39. package/lib/commands/local/config-reveal-location.d.ts +2 -0
  40. package/lib/commands/local/config-reveal-location.js +15 -0
  41. package/lib/commands/local/config-reveal-location.js.map +1 -0
  42. package/lib/commands/local/config-set-fake-server.d.ts +3 -0
  43. package/lib/commands/local/config-set-fake-server.js +20 -0
  44. package/lib/commands/local/config-set-fake-server.js.map +1 -0
  45. package/lib/commands/local/config-use-remote-api-defs.d.ts +2 -0
  46. package/lib/commands/local/config-use-remote-api-defs.js +20 -0
  47. package/lib/commands/local/config-use-remote-api-defs.js.map +1 -0
  48. package/lib/commands/local/health.d.ts +2 -0
  49. package/lib/commands/local/health.js +18 -0
  50. package/lib/commands/local/health.js.map +1 -0
  51. package/lib/commands/local/login.d.ts +2 -0
  52. package/lib/commands/local/login.js +35 -0
  53. package/lib/commands/local/login.js.map +1 -0
  54. package/lib/commands/local/logout.d.ts +2 -0
  55. package/lib/commands/local/logout.js +17 -0
  56. package/lib/commands/local/logout.js.map +1 -0
  57. package/lib/commands/local/select-server.d.ts +2 -0
  58. package/lib/commands/local/select-server.js +27 -0
  59. package/lib/commands/local/select-server.js.map +1 -0
  60. package/lib/commands/local/select-workspace.d.ts +2 -0
  61. package/lib/commands/local/select-workspace.js +22 -0
  62. package/lib/commands/local/select-workspace.js.map +1 -0
  63. package/lib/commands/local/wizard.d.ts +9 -0
  64. package/lib/commands/local/wizard.js +28 -0
  65. package/lib/commands/local/wizard.js.map +1 -0
  66. package/lib/commands/registry.d.ts +54 -0
  67. package/lib/commands/registry.js +64 -0
  68. package/lib/commands/registry.js.map +1 -0
  69. package/lib/{command-spec.d.ts → commands/spec.d.ts} +8 -12
  70. package/lib/{command-spec.js → commands/spec.js} +27 -120
  71. package/lib/commands/spec.js.map +1 -0
  72. package/lib/config/config-store.d.ts +23 -8
  73. package/lib/config/config-store.js +16 -42
  74. package/lib/config/config-store.js.map +1 -1
  75. package/lib/config/index.d.ts +2 -1
  76. package/lib/config/index.js +2 -1
  77. package/lib/config/index.js.map +1 -1
  78. package/lib/config/memory-config-store.d.ts +21 -0
  79. package/lib/config/memory-config-store.js +48 -0
  80. package/lib/config/memory-config-store.js.map +1 -0
  81. package/lib/config/migrate.js +1 -1
  82. package/lib/config/migrate.js.map +1 -1
  83. package/lib/config/values.d.ts +12 -0
  84. package/lib/config/values.js +50 -0
  85. package/lib/config/values.js.map +1 -0
  86. package/lib/context.d.ts +37 -0
  87. package/lib/context.js +31 -0
  88. package/lib/context.js.map +1 -0
  89. package/lib/env.d.ts +5 -0
  90. package/lib/env.js +5 -0
  91. package/lib/env.js.map +1 -1
  92. package/lib/errors.d.ts +31 -0
  93. package/lib/errors.js +58 -0
  94. package/lib/errors.js.map +1 -0
  95. package/lib/http/api.d.ts +37 -0
  96. package/lib/http/api.js +20 -0
  97. package/lib/http/api.js.map +1 -0
  98. package/lib/http/client.d.ts +4 -0
  99. package/lib/{get-seam.js → http/client.js} +16 -17
  100. package/lib/http/client.js.map +1 -0
  101. package/lib/http/follow-ups.d.ts +6 -0
  102. package/lib/http/follow-ups.js +30 -0
  103. package/lib/http/follow-ups.js.map +1 -0
  104. package/lib/http/memory-seam-api.d.ts +22 -0
  105. package/lib/http/memory-seam-api.js +41 -0
  106. package/lib/http/memory-seam-api.js.map +1 -0
  107. package/lib/http/request.d.ts +19 -0
  108. package/lib/http/request.js +39 -0
  109. package/lib/http/request.js.map +1 -0
  110. package/lib/{interact-for-access-code.js → interactions/access-code.js} +4 -4
  111. package/lib/interactions/access-code.js.map +1 -0
  112. package/lib/{interact-for-acs-entrance.js → interactions/acs-entrance.js} +3 -3
  113. package/lib/interactions/acs-entrance.js.map +1 -0
  114. package/lib/{interact-for-acs-system.js → interactions/acs-system.js} +3 -3
  115. package/lib/interactions/acs-system.js.map +1 -0
  116. package/lib/{interact-for-acs-user.js → interactions/acs-user.js} +4 -4
  117. package/lib/interactions/acs-user.js.map +1 -0
  118. package/lib/{interact-for-action-attempt-poll.js → interactions/action-attempt-poll.js} +5 -5
  119. package/lib/interactions/action-attempt-poll.js.map +1 -0
  120. package/lib/{interact-for-array.js → interactions/array.js} +4 -3
  121. package/lib/interactions/array.js.map +1 -0
  122. package/lib/{interact-for-blueprint-object.d.ts → interactions/blueprint-object.d.ts} +3 -2
  123. package/lib/{interact-for-blueprint-object.js → interactions/blueprint-object.js} +49 -20
  124. package/lib/interactions/blueprint-object.js.map +1 -0
  125. package/lib/{interact-for-command-params.d.ts → interactions/command-params.d.ts} +2 -2
  126. package/lib/{interact-for-command-params.js → interactions/command-params.js} +4 -3
  127. package/lib/interactions/command-params.js.map +1 -0
  128. package/lib/interactions/command-selection.d.ts +10 -0
  129. package/lib/{interact-for-command-selection.js → interactions/command-selection.js} +9 -15
  130. package/lib/interactions/command-selection.js.map +1 -0
  131. package/lib/{interact-for-connected-account.js → interactions/connected-account.js} +3 -3
  132. package/lib/interactions/connected-account.js.map +1 -0
  133. package/lib/{interact-for-custom-metadata.js → interactions/custom-metadata.js} +4 -3
  134. package/lib/interactions/custom-metadata.js.map +1 -0
  135. package/lib/{interact-for-device.js → interactions/device.js} +3 -3
  136. package/lib/interactions/device.js.map +1 -0
  137. package/lib/interactions/index.d.ts +19 -0
  138. package/lib/interactions/index.js +20 -0
  139. package/lib/interactions/index.js.map +1 -0
  140. package/lib/{interact-for-login.js → interactions/login.js} +16 -14
  141. package/lib/interactions/login.js.map +1 -0
  142. package/lib/{interact-for-resource.js → interactions/resource.js} +3 -3
  143. package/lib/interactions/resource.js.map +1 -0
  144. package/lib/{interact-for-server-selection.js → interactions/server-selection.js} +10 -13
  145. package/lib/interactions/server-selection.js.map +1 -0
  146. package/lib/{interact-for-timestamp.js → interactions/timestamp.js} +2 -2
  147. package/lib/interactions/timestamp.js.map +1 -0
  148. package/lib/{interact-for-use-remote-api-defs.js → interactions/use-remote-api-defs.js} +5 -6
  149. package/lib/interactions/use-remote-api-defs.js.map +1 -0
  150. package/lib/{interact-for-user-identity.js → interactions/user-identity.js} +3 -3
  151. package/lib/interactions/user-identity.js.map +1 -0
  152. package/lib/{interact-for-workspace-id.js → interactions/workspace-id.js} +11 -10
  153. package/lib/interactions/workspace-id.js.map +1 -0
  154. package/lib/memory-prompt.d.ts +32 -0
  155. package/lib/memory-prompt.js +41 -0
  156. package/lib/memory-prompt.js.map +1 -0
  157. package/lib/output/get-output.d.ts +1 -1
  158. package/lib/output/get-output.js +1 -1
  159. package/lib/output/get-output.js.map +1 -1
  160. package/lib/output/{create-memory-output.d.ts → memory-output.d.ts} +1 -1
  161. package/lib/output/{create-memory-output.js → memory-output.js} +2 -2
  162. package/lib/output/memory-output.js.map +1 -0
  163. package/lib/output/{create-output.d.ts → output.d.ts} +18 -1
  164. package/lib/output/output.js +46 -0
  165. package/lib/output/output.js.map +1 -0
  166. package/lib/output/read-stdin-json.js.map +1 -0
  167. package/lib/output/resolve-output-format.d.ts +1 -1
  168. package/lib/{util → output}/with-loading.js +1 -1
  169. package/lib/output/with-loading.js.map +1 -0
  170. package/lib/prompt.d.ts +101 -0
  171. package/lib/{util/prompt.js → prompt.js} +83 -56
  172. package/lib/prompt.js.map +1 -0
  173. package/lib/{completion → render/completion}/describe.js +1 -2
  174. package/lib/render/completion/describe.js.map +1 -0
  175. package/lib/{completion → render/completion}/index.d.ts +2 -2
  176. package/lib/{completion → render/completion}/index.js +1 -2
  177. package/lib/render/completion/index.js.map +1 -0
  178. package/lib/{completion → render/completion}/render-bash.d.ts +1 -1
  179. package/lib/{completion → render/completion}/render-bash.js +1 -1
  180. package/lib/render/completion/render-bash.js.map +1 -0
  181. package/lib/{completion → render/completion}/render-fish.d.ts +1 -1
  182. package/lib/render/completion/render-fish.js.map +1 -0
  183. package/lib/{completion → render/completion}/render-zsh.d.ts +1 -1
  184. package/lib/{completion → render/completion}/render-zsh.js +1 -1
  185. package/lib/render/completion/render-zsh.js.map +1 -0
  186. package/lib/{render-help.d.ts → render/help.d.ts} +1 -1
  187. package/lib/{render-help.js → render/help.js} +2 -2
  188. package/lib/render/help.js.map +1 -0
  189. package/lib/render/text.d.ts +4 -0
  190. package/lib/render/text.js +16 -0
  191. package/lib/render/text.js.map +1 -0
  192. package/lib/version.d.ts +2 -2
  193. package/lib/version.js +2 -2
  194. package/package.json +4 -3
  195. package/src/bin/cli.ts +91 -332
  196. package/src/lib/args/coerce.ts +164 -0
  197. package/src/lib/{util/cli-args.ts → args/parse.ts} +30 -25
  198. package/src/lib/args/validate.ts +73 -0
  199. package/src/lib/auth/operations.ts +169 -0
  200. package/src/lib/{validate-token.ts → auth/validate-token.ts} +2 -2
  201. package/src/lib/blueprint/cache.ts +97 -0
  202. package/src/lib/{get-response-key.ts → blueprint/endpoint.ts} +17 -3
  203. package/src/lib/blueprint/index.ts +27 -0
  204. package/src/lib/{blueprint.ts → blueprint/source-npm.ts} +27 -99
  205. package/src/lib/blueprint/source-remote.ts +17 -0
  206. package/src/lib/commands/api-command.ts +109 -0
  207. package/src/lib/commands/local/completion.ts +51 -0
  208. package/src/lib/commands/local/config-reveal-location.ts +16 -0
  209. package/src/lib/commands/local/config-set-fake-server.ts +21 -0
  210. package/src/lib/commands/local/config-use-remote-api-defs.ts +23 -0
  211. package/src/lib/commands/local/health.ts +22 -0
  212. package/src/lib/commands/local/login.ts +42 -0
  213. package/src/lib/commands/local/logout.ts +18 -0
  214. package/src/lib/commands/local/select-server.ts +30 -0
  215. package/src/lib/commands/local/select-workspace.ts +25 -0
  216. package/src/lib/commands/local/wizard.ts +31 -0
  217. package/src/lib/commands/registry.ts +127 -0
  218. package/src/lib/{command-spec.ts → commands/spec.ts} +30 -131
  219. package/src/lib/config/config-store.ts +39 -64
  220. package/src/lib/config/index.ts +8 -1
  221. package/src/lib/config/memory-config-store.ts +62 -0
  222. package/src/lib/config/migrate.ts +1 -1
  223. package/src/lib/config/values.ts +72 -0
  224. package/src/lib/context.ts +84 -0
  225. package/src/lib/env.ts +9 -2
  226. package/src/lib/errors.ts +67 -0
  227. package/src/lib/http/api.ts +61 -0
  228. package/src/lib/{get-seam.ts → http/client.ts} +19 -18
  229. package/src/lib/http/follow-ups.ts +42 -0
  230. package/src/lib/http/memory-seam-api.ts +57 -0
  231. package/src/lib/http/request.ts +69 -0
  232. package/src/lib/{interact-for-access-code.ts → interactions/access-code.ts} +4 -3
  233. package/src/lib/{interact-for-acs-entrance.ts → interactions/acs-entrance.ts} +3 -2
  234. package/src/lib/{interact-for-acs-system.ts → interactions/acs-system.ts} +3 -2
  235. package/src/lib/{interact-for-acs-user.ts → interactions/acs-user.ts} +4 -3
  236. package/src/lib/{interact-for-action-attempt-poll.ts → interactions/action-attempt-poll.ts} +4 -4
  237. package/src/lib/{interact-for-array.ts → interactions/array.ts} +3 -3
  238. package/src/lib/{interact-for-blueprint-object.ts → interactions/blueprint-object.ts} +57 -24
  239. package/src/lib/{interact-for-command-params.ts → interactions/command-params.ts} +6 -4
  240. package/src/lib/{interact-for-command-selection.ts → interactions/command-selection.ts} +11 -23
  241. package/src/lib/{interact-for-connected-account.ts → interactions/connected-account.ts} +3 -2
  242. package/src/lib/{interact-for-custom-metadata.ts → interactions/custom-metadata.ts} +3 -7
  243. package/src/lib/{interact-for-device.ts → interactions/device.ts} +3 -2
  244. package/src/lib/interactions/index.ts +19 -0
  245. package/src/lib/{interact-for-login.ts → interactions/login.ts} +16 -13
  246. package/src/lib/{interact-for-resource.ts → interactions/resource.ts} +2 -2
  247. package/src/lib/{interact-for-server-selection.ts → interactions/server-selection.ts} +12 -17
  248. package/src/lib/{interact-for-timestamp.ts → interactions/timestamp.ts} +1 -1
  249. package/src/lib/{interact-for-use-remote-api-defs.ts → interactions/use-remote-api-defs.ts} +4 -5
  250. package/src/lib/{interact-for-user-identity.ts → interactions/user-identity.ts} +3 -2
  251. package/src/lib/{interact-for-workspace-id.ts → interactions/workspace-id.ts} +10 -17
  252. package/src/lib/memory-prompt.ts +89 -0
  253. package/src/lib/output/get-output.ts +1 -1
  254. package/src/lib/output/{create-memory-output.ts → memory-output.ts} +1 -1
  255. package/src/lib/output/{create-output.ts → output.ts} +47 -32
  256. package/src/lib/output/resolve-output-format.ts +1 -1
  257. package/src/lib/{util → output}/with-loading.ts +1 -1
  258. package/src/lib/prompt.ts +306 -0
  259. package/src/lib/{completion → render/completion}/describe.ts +1 -2
  260. package/src/lib/{completion → render/completion}/index.ts +3 -4
  261. package/src/lib/{completion → render/completion}/render-bash.ts +1 -1
  262. package/src/lib/{completion → render/completion}/render-fish.ts +2 -1
  263. package/src/lib/{completion → render/completion}/render-zsh.ts +2 -1
  264. package/src/lib/{render-help.ts → render/help.ts} +1 -1
  265. package/src/lib/render/text.ts +17 -0
  266. package/src/lib/version.ts +2 -2
  267. package/lib/blueprint.d.ts +0 -7
  268. package/lib/blueprint.js.map +0 -1
  269. package/lib/command-spec.js.map +0 -1
  270. package/lib/completion/describe.js.map +0 -1
  271. package/lib/completion/index.js.map +0 -1
  272. package/lib/completion/render-bash.js.map +0 -1
  273. package/lib/completion/render-fish.js.map +0 -1
  274. package/lib/completion/render-zsh.js.map +0 -1
  275. package/lib/get-api-blueprint.d.ts +0 -6
  276. package/lib/get-api-blueprint.js +0 -18
  277. package/lib/get-api-blueprint.js.map +0 -1
  278. package/lib/get-command-blueprint-def.d.ts +0 -2
  279. package/lib/get-command-blueprint-def.js +0 -11
  280. package/lib/get-command-blueprint-def.js.map +0 -1
  281. package/lib/get-credentials.d.ts +0 -15
  282. package/lib/get-credentials.js +0 -35
  283. package/lib/get-credentials.js.map +0 -1
  284. package/lib/get-current-workspace-id.d.ts +0 -1
  285. package/lib/get-current-workspace-id.js +0 -9
  286. package/lib/get-current-workspace-id.js.map +0 -1
  287. package/lib/get-response-key.d.ts +0 -9
  288. package/lib/get-response-key.js.map +0 -1
  289. package/lib/get-seam.d.ts +0 -3
  290. package/lib/get-seam.js.map +0 -1
  291. package/lib/get-server.d.ts +0 -6
  292. package/lib/get-server.js +0 -17
  293. package/lib/get-server.js.map +0 -1
  294. package/lib/interact-for-access-code.js.map +0 -1
  295. package/lib/interact-for-acs-entrance.js.map +0 -1
  296. package/lib/interact-for-acs-system.js.map +0 -1
  297. package/lib/interact-for-acs-user.js.map +0 -1
  298. package/lib/interact-for-action-attempt-poll.js.map +0 -1
  299. package/lib/interact-for-array.js.map +0 -1
  300. package/lib/interact-for-blueprint-object.js.map +0 -1
  301. package/lib/interact-for-command-params.js.map +0 -1
  302. package/lib/interact-for-command-selection.d.ts +0 -2
  303. package/lib/interact-for-command-selection.js.map +0 -1
  304. package/lib/interact-for-connected-account.js.map +0 -1
  305. package/lib/interact-for-custom-metadata.js.map +0 -1
  306. package/lib/interact-for-device.js.map +0 -1
  307. package/lib/interact-for-login.js.map +0 -1
  308. package/lib/interact-for-resource.js.map +0 -1
  309. package/lib/interact-for-server-selection.js.map +0 -1
  310. package/lib/interact-for-timestamp.js.map +0 -1
  311. package/lib/interact-for-use-remote-api-defs.js.map +0 -1
  312. package/lib/interact-for-user-identity.js.map +0 -1
  313. package/lib/interact-for-workspace-id.js.map +0 -1
  314. package/lib/output/create-memory-output.js.map +0 -1
  315. package/lib/output/create-output.js +0 -34
  316. package/lib/output/create-output.js.map +0 -1
  317. package/lib/render-help.js.map +0 -1
  318. package/lib/types.d.ts +0 -6
  319. package/lib/types.js +0 -2
  320. package/lib/types.js.map +0 -1
  321. package/lib/util/cli-args.js.map +0 -1
  322. package/lib/util/ellipsis.d.ts +0 -1
  323. package/lib/util/ellipsis.js +0 -6
  324. package/lib/util/ellipsis.js.map +0 -1
  325. package/lib/util/prompt.d.ts +0 -80
  326. package/lib/util/prompt.js.map +0 -1
  327. package/lib/util/read-stdin-json.js.map +0 -1
  328. package/lib/util/request-seam-api.d.ts +0 -7
  329. package/lib/util/request-seam-api.js +0 -26
  330. package/lib/util/request-seam-api.js.map +0 -1
  331. package/lib/util/with-loading.js.map +0 -1
  332. package/lib/validate-token.js.map +0 -1
  333. package/src/lib/get-api-blueprint.ts +0 -31
  334. package/src/lib/get-command-blueprint-def.ts +0 -15
  335. package/src/lib/get-credentials.ts +0 -38
  336. package/src/lib/get-current-workspace-id.ts +0 -9
  337. package/src/lib/get-server.ts +0 -20
  338. package/src/lib/types.ts +0 -7
  339. package/src/lib/util/ellipsis.ts +0 -4
  340. package/src/lib/util/prompt.ts +0 -229
  341. package/src/lib/util/request-seam-api.ts +0 -47
  342. /package/lib/{validate-token.d.ts → auth/validate-token.d.ts} +0 -0
  343. /package/lib/{interact-for-access-code.d.ts → interactions/access-code.d.ts} +0 -0
  344. /package/lib/{interact-for-acs-entrance.d.ts → interactions/acs-entrance.d.ts} +0 -0
  345. /package/lib/{interact-for-acs-system.d.ts → interactions/acs-system.d.ts} +0 -0
  346. /package/lib/{interact-for-acs-user.d.ts → interactions/acs-user.d.ts} +0 -0
  347. /package/lib/{interact-for-action-attempt-poll.d.ts → interactions/action-attempt-poll.d.ts} +0 -0
  348. /package/lib/{interact-for-array.d.ts → interactions/array.d.ts} +0 -0
  349. /package/lib/{interact-for-connected-account.d.ts → interactions/connected-account.d.ts} +0 -0
  350. /package/lib/{interact-for-custom-metadata.d.ts → interactions/custom-metadata.d.ts} +0 -0
  351. /package/lib/{interact-for-device.d.ts → interactions/device.d.ts} +0 -0
  352. /package/lib/{interact-for-login.d.ts → interactions/login.d.ts} +0 -0
  353. /package/lib/{interact-for-resource.d.ts → interactions/resource.d.ts} +0 -0
  354. /package/lib/{interact-for-server-selection.d.ts → interactions/server-selection.d.ts} +0 -0
  355. /package/lib/{interact-for-timestamp.d.ts → interactions/timestamp.d.ts} +0 -0
  356. /package/lib/{interact-for-use-remote-api-defs.d.ts → interactions/use-remote-api-defs.d.ts} +0 -0
  357. /package/lib/{interact-for-user-identity.d.ts → interactions/user-identity.d.ts} +0 -0
  358. /package/lib/{interact-for-workspace-id.d.ts → interactions/workspace-id.d.ts} +0 -0
  359. /package/lib/{util → output}/read-stdin-json.d.ts +0 -0
  360. /package/lib/{util → output}/read-stdin-json.js +0 -0
  361. /package/lib/{util → output}/with-loading.d.ts +0 -0
  362. /package/lib/{completion → render/completion}/describe.d.ts +0 -0
  363. /package/lib/{completion → render/completion}/render-fish.js +0 -0
  364. /package/src/lib/{util → output}/read-stdin-json.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-fish.js","sourceRoot":"","sources":["../../../src/lib/render/completion/render-fish.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import { type CommandSpec } from '../command-spec.js';
1
+ import { type CommandSpec } from '../../commands/spec.js';
2
2
  export declare const renderZshCompletion: (spec: CommandSpec) => string;
@@ -1,4 +1,4 @@
1
- import { flagTokens, } from '../command-spec.js';
1
+ import { flagTokens, } from '../../commands/spec.js';
2
2
  import { describeForShell } from './describe.js';
3
3
  export const renderZshCompletion = (spec) => {
4
4
  const valuelessTokens = spec.globalFlags
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-zsh.js","sourceRoot":"","sources":["../../../src/lib/render/completion/render-zsh.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { type CommandSpec } from './command-spec.js';
1
+ import { type CommandSpec } from '../commands/spec.js';
2
2
  /**
3
3
  * Render the help guide for a command path, or `null` when no command or
4
4
  * group goes by that path.
@@ -1,5 +1,5 @@
1
1
  import commandLineUsage, {} from 'command-line-usage';
2
- import { findCommand, findGroup, } from './command-spec.js';
2
+ import { findCommand, findGroup, } from '../commands/spec.js';
3
3
  /**
4
4
  * Render the help guide for a command path, or `null` when no command or
5
5
  * group goes by that path.
@@ -151,4 +151,4 @@ const describeValues = (flag) => {
151
151
  const rest = flag.values.length - maxDocumentedValues;
152
152
  return rest > 0 ? `One of: ${shown}, and ${rest} more.` : `One of: ${shown}.`;
153
153
  };
154
- //# sourceMappingURL=render-help.js.map
154
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/lib/render/help.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const ellipsis: (str: string, len: number) => string;
2
+ /** Reduce documentation markdown to a single line of prose. */
3
+ export declare const toPlainText: (markdown: string) => string;
4
+ export declare const firstSentence: (text: string) => string;
@@ -0,0 +1,16 @@
1
+ export const ellipsis = (str, len) => {
2
+ if (str.length <= len)
3
+ return str;
4
+ return str.slice(0, len - 3) + '...';
5
+ };
6
+ /** Reduce documentation markdown to a single line of prose. */
7
+ export const toPlainText = (markdown) => markdown
8
+ .replace(/\[([^\]]*)\]\([^)]*\)/g, '$1')
9
+ .replace(/[`*]/g, '')
10
+ .replace(/\s+/g, ' ')
11
+ .trim();
12
+ export const firstSentence = (text) => {
13
+ const [sentence] = text.split(/(?<=\.)\s/);
14
+ return sentence ?? text;
15
+ };
16
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/lib/render/text.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,GAAW,EAAE,EAAE;IACnD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG;QAAE,OAAO,GAAG,CAAA;IACjC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;AACtC,CAAC,CAAA;AAED,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAAgB,EAAU,EAAE,CACtD,QAAQ;KACL,OAAO,CAAC,wBAAwB,EAAE,IAAI,CAAC;KACvC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;KACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;KACpB,IAAI,EAAE,CAAA;AAEX,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,IAAY,EAAU,EAAE;IACpD,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IAC1C,OAAO,QAAQ,IAAI,IAAI,CAAA;AACzB,CAAC,CAAA"}
package/lib/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- declare const seamapiCliVersion = "0.18.1";
2
- declare const seamapiBlueprintVersion = "1.2.0";
1
+ declare const seamapiCliVersion = "0.19.0";
2
+ declare const seamapiBlueprintVersion = "1.5.0";
3
3
  export { seamapiBlueprintVersion };
4
4
  export default seamapiCliVersion;
package/lib/version.js CHANGED
@@ -1,6 +1,6 @@
1
1
  // Versions are replaced with generated values when the package is packed.
2
- const seamapiCliVersion = '0.18.1';
3
- const seamapiBlueprintVersion = '1.2.0';
2
+ const seamapiCliVersion = '0.19.0';
3
+ const seamapiBlueprintVersion = '1.5.0';
4
4
  export { seamapiBlueprintVersion };
5
5
  export default seamapiCliVersion;
6
6
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seamapi/cli",
3
- "version": "0.18.1",
3
+ "version": "0.19.0",
4
4
  "description": "A command-line interface (CLI) for interacting with the Seam API.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -93,7 +93,7 @@
93
93
  },
94
94
  "dependencies": {
95
95
  "@clack/prompts": "^1.7.0",
96
- "@seamapi/blueprint": "1.2.0",
96
+ "@seamapi/blueprint": "1.5.0",
97
97
  "@seamapi/http": "2.2.0",
98
98
  "@seamapi/wizard": "0.5.2",
99
99
  "chalk": "^6.0.0",
@@ -106,7 +106,7 @@
106
106
  "tar": "^7.5.22"
107
107
  },
108
108
  "devDependencies": {
109
- "@seamapi/types": "1.985.0",
109
+ "@seamapi/types": "^1.994.0",
110
110
  "@types/command-line-usage": "^5.0.4",
111
111
  "@types/minimist": "^1.2.5",
112
112
  "@types/node": "^24.10.9",
@@ -114,6 +114,7 @@
114
114
  "concurrently": "^10.0.4",
115
115
  "del-cli": "^7.0.0",
116
116
  "eslint": "^9.31.0",
117
+ "eslint-import-resolver-typescript": "^4.4.5",
117
118
  "eslint-plugin-import": "^2.32.0",
118
119
  "eslint-plugin-simple-import-sort": "^12.1.1",
119
120
  "eslint-plugin-unused-imports": "^4.1.4",
package/src/bin/cli.ts CHANGED
@@ -1,65 +1,43 @@
1
1
  #!/usr/bin/env node
2
- import { randomBytes } from 'node:crypto'
3
2
  import { isDeepStrictEqual as isEqual } from 'node:util'
4
3
 
5
4
  import chalk from 'chalk'
6
5
  import type { ParsedArgs } from 'minimist'
7
6
 
8
- import { findLocalCommand, getCommandSpec } from 'lib/command-spec.js'
9
- import {
10
- completionShells,
11
- isCompletionShell,
12
- renderCompletion,
13
- } from 'lib/completion/index.js'
14
- import { getConfigStore } from 'lib/config/index.js'
15
- import {
16
- assertEnvVarUnset,
17
- endpointEnvVar,
18
- EnvVarOverrideError,
19
- getEndpointFromEnv,
20
- getTokenFromEnv,
21
- getWorkspaceIdFromEnv,
22
- tokenEnvVar,
23
- workspaceIdEnvVar,
24
- } from 'lib/env.js'
25
- import { getApiBlueprint } from 'lib/get-api-blueprint.js'
26
- import { getCommandBlueprintDef } from 'lib/get-command-blueprint-def.js'
27
- import { getToken } from 'lib/get-credentials.js'
28
- import { getResponseKey } from 'lib/get-response-key.js'
29
- import { getServer } from 'lib/get-server.js'
30
- import { interactForActionAttemptPoll } from 'lib/interact-for-action-attempt-poll.js'
31
- import { interactForCommandParams } from 'lib/interact-for-command-params.js'
32
- import { interactForCommandSelection } from 'lib/interact-for-command-selection.js'
33
- import { interactForLogin } from 'lib/interact-for-login.js'
34
- import { interactForServerSelection } from 'lib/interact-for-server-selection.js'
35
- import { interactForUseRemoteApiDefs } from 'lib/interact-for-use-remote-api-defs.js'
36
- import { interactForWorkspaceId } from 'lib/interact-for-workspace-id.js'
37
- import { createOutput } from 'lib/output/create-output.js'
38
- import { getOutput, setOutput } from 'lib/output/get-output.js'
39
- import { resolveOutputFormat } from 'lib/output/resolve-output-format.js'
40
- import { renderHelp } from 'lib/render-help.js'
41
- import type { ContextHelpers } from 'lib/types.js'
42
7
  import {
43
8
  cliFlags,
44
9
  getInteractivity,
45
- type Interactivity,
46
- NonInteractiveError,
47
10
  parseCliArgs,
48
- toGivenArgName,
49
11
  toParameterName,
50
- UsageError,
51
- } from 'lib/util/cli-args.js'
12
+ } from 'lib/args/parse.js'
13
+ import { assertKnownArgs } from 'lib/args/validate.js'
14
+ import { getApiBlueprint } from 'lib/blueprint/index.js'
15
+ import { printCompletion } from 'lib/commands/local/completion.js'
16
+ import { runWizard } from 'lib/commands/local/wizard.js'
17
+ import {
18
+ acceptedParamsOf,
19
+ buildRegistry,
20
+ findLocalCommand,
21
+ } from 'lib/commands/registry.js'
22
+ import { getConfigStore } from 'lib/config/index.js'
23
+ import { type CliContext, resolveAuth } from 'lib/context.js'
24
+ import { tokenEnvVar } from 'lib/env.js'
25
+ import { reportErrorAndExit } from 'lib/errors.js'
26
+ import { createSeamApi, type SeamApi } from 'lib/http/api.js'
27
+ import { interactForCommandSelection } from 'lib/interactions/index.js'
28
+ import { getOutput, setOutput } from 'lib/output/get-output.js'
29
+ import { createOutput } from 'lib/output/output.js'
30
+ import { readStdinJson } from 'lib/output/read-stdin-json.js'
31
+ import { resolveOutputFormat } from 'lib/output/resolve-output-format.js'
32
+ import { canPrompt } from 'lib/prompt.js'
52
33
  import {
53
- canPrompt,
54
- PromptCancelledError,
55
- promptConfirm,
56
- } from 'lib/util/prompt.js'
57
- import { readStdinJson } from 'lib/util/read-stdin-json.js'
58
- import { RequestSeamApi } from 'lib/util/request-seam-api.js'
59
- import { validateToken } from 'lib/validate-token.js'
34
+ completionShells,
35
+ isCompletionShell,
36
+ } from 'lib/render/completion/index.js'
37
+ import { renderHelp } from 'lib/render/help.js'
60
38
  import seamapiCliVersion from 'lib/version.js'
61
39
 
62
- async function cli(args: ParsedArgs) {
40
+ async function cli(args: ParsedArgs, argv: string[]) {
63
41
  const config = getConfigStore()
64
42
  const output = getOutput()
65
43
 
@@ -69,7 +47,8 @@ async function cli(args: ParsedArgs) {
69
47
  if (helpFlag != null) {
70
48
  // Help comes from the cached API definitions so that it works without
71
49
  // logging in, and offline once the cache is warm.
72
- const spec = getCommandSpec(await getApiBlueprint(false, { update }))
50
+ const cachedBlueprint = await getApiBlueprint({ update })
51
+ const { spec } = buildRegistry(cachedBlueprint)
73
52
 
74
53
  // minimist reads the word after --help as its value, so 'seam --help
75
54
  // devices' asks about devices just as 'seam devices --help' does.
@@ -128,41 +107,29 @@ async function cli(args: ParsedArgs) {
128
107
  return
129
108
  }
130
109
 
131
- assertKnownArgs(argParams, ['completion', shell])
110
+ const command = findLocalCommand(['completion', shell])
111
+ assertKnownArgs(argParams, ['completion', shell], {
112
+ accepted:
113
+ command == null ? new Set() : acceptedParamsOf(command.definition),
114
+ isLocal: true,
115
+ })
132
116
 
133
- // Completions always come from the cached API definitions so that they
134
- // can be generated without logging in. They may lag the definitions
135
- // served by Seam when config use-remote-api-defs is enabled.
136
- output.text(
137
- renderCompletion(shell, await getApiBlueprint(false, { update })),
138
- )
117
+ const cachedBlueprint = await getApiBlueprint({ update })
118
+ printCompletion(shell, buildRegistry(cachedBlueprint).spec)
139
119
  return
140
120
  }
141
121
 
142
- if (
143
- args._[0] === 'config' &&
144
- args._[1] === 'set' &&
145
- args._[2] === 'fake-server'
146
- ) {
147
- assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server')
148
- assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log in')
122
+ const localCommand = findLocalCommand(args._)
149
123
 
150
- const randomstring = randomBytes(5).toString('hex')
151
- const fakeApiUrl = `https://${randomstring}.fakeseamconnect.seam.vc`
124
+ // Commands declared not to need a token bypass the login gate. A partial
125
+ // path keeps the historical rule: only login and select server may be
126
+ // reached logged out.
127
+ const requiresAuth =
128
+ localCommand != null
129
+ ? localCommand.requiresAuth
130
+ : !(args._[0] === 'login' || isEqual(args._, ['select', 'server']))
152
131
 
153
- config.set('server', fakeApiUrl)
154
- output.info(`Server URL set to ${fakeApiUrl}`)
155
-
156
- config.set(`${getServer()}.pat`, `seam_apikey1_token`)
157
- output.info(`PAT set to use fakeseamconnect with "seam_apikey1_token"`)
158
- return
159
- }
160
-
161
- if (
162
- getToken() == null &&
163
- args._[0] !== 'login' &&
164
- !isEqual(args._, ['select', 'server'])
165
- ) {
132
+ if (requiresAuth && resolveAuth(config).token == null) {
166
133
  output.error(`Not logged in. Please run "seam login" or set ${tokenEnvVar}`)
167
134
  process.exitCode = 1
168
135
  return
@@ -171,265 +138,78 @@ async function cli(args: ParsedArgs) {
171
138
  const useRemoteApiDefs =
172
139
  args['remote_api_defs'] ?? config.get('use_remote_api_defs')
173
140
 
174
- const blueprint = await getApiBlueprint(useRemoteApiDefs ?? false, {
141
+ const blueprint = await getApiBlueprint({
142
+ useRemoteDefinitions: useRemoteApiDefs ?? false,
175
143
  update,
176
144
  })
177
145
 
146
+ const registry = buildRegistry(blueprint)
147
+
178
148
  // Params piped or redirected in, e.g., `seam devices list < params.json`.
179
- // Params given as arguments take precedence over these.
180
- const commandParams: Record<string, any> = { ...(await readStdinJson()) }
149
+ const pipedParams = await readStdinJson()
150
+ const stdinParams: Record<string, any> = { ...pipedParams }
151
+
152
+ const auth = resolveAuth(config)
153
+ let seamApi: Promise<SeamApi> | null = null
181
154
 
182
- const ctx: ContextHelpers = {
155
+ const ctx: CliContext = {
156
+ config,
157
+ auth,
158
+ output,
183
159
  blueprint,
184
160
  interactivity: getInteractivity(args, { canPrompt: canPrompt() }),
161
+ api: async () => await (seamApi ??= createSeamApi(auth)),
185
162
  }
186
163
 
187
- const isNonInteractive = ctx.interactivity === 'non-interactive'
188
-
189
- Object.assign(commandParams, argParams)
190
-
191
- const selectedCommand = await interactForCommandSelection(args._, ctx)
164
+ const selectableCommands = registry.spec.commands.map(({ path }) => path)
192
165
 
193
- // Hit 'back' on a top-level command path, so we start again
194
- if (selectedCommand.slice(-1)[0] === '[Back]') {
195
- return await cli({
196
- ...args,
197
- _: [],
166
+ let commandPath = args._
167
+ while (true) {
168
+ const selectedCommand = await interactForCommandSelection(commandPath, {
169
+ commands: selectableCommands,
170
+ interactivity: ctx.interactivity,
198
171
  })
199
- }
200
-
201
- // Check the arguments before the command acts on any of them, so a mistake
202
- // is reported rather than half applied.
203
- assertKnownArgs(argParams, selectedCommand, ctx)
204
172
 
205
- if (isEqual(selectedCommand, ['login'])) {
206
- // Nothing is stored while the environment overrides it, so refuse before
207
- // storing anything rather than part way through.
208
- assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log in')
209
- if (args['server']) {
210
- assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server')
211
- }
212
- if (args['workspace_id']) {
213
- assertEnvVarUnset(
214
- workspaceIdEnvVar,
215
- getWorkspaceIdFromEnv(),
216
- 'select a workspace',
217
- )
218
- }
219
- if (args['server']) {
220
- config.set('server', args['server'])
221
- config.delete('current_workspace_id')
222
- }
223
- if (args['token']) {
224
- const token = String(args['token']).trim()
225
- await validateToken(token, args['workspace_id'])
226
- config.set(`${getServer()}.pat`, token)
227
- config.delete('current_workspace_id')
173
+ // Hit 'back' on a top-level command path, so we start again
174
+ if (selectedCommand.at(-1) === '[Back]') {
175
+ commandPath = []
176
+ continue
228
177
  }
229
- if (args['workspace_id']) {
230
- config.set(`current_workspace_id`, args['workspace_id'])
231
- }
232
- if (args['token'] || args['workspace_id'] || args['server']) {
233
- return
234
- }
235
- if (isNonInteractive) {
236
- throw new NonInteractiveError(
237
- 'Missing required parameter for login: --token',
238
- )
239
- }
240
- await interactForLogin()
241
- return
242
- } else if (isEqual(selectedCommand, ['logout'])) {
243
- assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log out')
244
- config.delete(`${getServer()}.pat`)
245
- config.delete('current_workspace_id')
246
- output.info('Logged out!')
247
- return
248
- } else if (isEqual(selectedCommand, ['config', 'reveal-location'])) {
249
- output.text(config.path)
250
- return
251
- } else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
252
- if (isNonInteractive) {
253
- throw new NonInteractiveError(
254
- 'Cannot select whether to use remote API definitions in non-interactive mode',
255
- )
256
- }
257
- await interactForUseRemoteApiDefs()
258
- return
259
- } else if (isEqual(selectedCommand, ['select', 'workspace'])) {
260
- assertEnvVarUnset(
261
- workspaceIdEnvVar,
262
- getWorkspaceIdFromEnv(),
263
- 'select a workspace',
264
- )
265
- if (isNonInteractive) {
266
- throw new NonInteractiveError(
267
- 'Cannot select a workspace in non-interactive mode: pass --workspace-id to "seam login"',
268
- )
269
- }
270
- await interactForWorkspaceId()
271
- return
272
- } else if (isEqual(selectedCommand, ['events', 'list'])) {
273
- if (!commandParams['since']) {
274
- const date = new Date()
275
- date.setMonth(date.getMonth() - 1)
276
- commandParams['since'] = date.toISOString()
277
- }
278
- } else if (isEqual(selectedCommand, ['select', 'server'])) {
279
- assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server')
280
- if (args['server']) {
281
- config.set('server', args['server'])
282
- config.delete('current_workspace_id')
283
- return
284
- }
285
- if (isNonInteractive) {
286
- throw new NonInteractiveError(
287
- 'Missing required parameter for select server: --server',
178
+
179
+ const command = registry.find(selectedCommand)
180
+ if (command == null) {
181
+ throw new Error(
182
+ `No definition for command seam ${selectedCommand.join(' ')}`,
288
183
  )
289
184
  }
290
- await interactForServerSelection()
291
- return
292
- } else if (isEqual(selectedCommand, ['health', 'get-health'])) {
293
- await RequestSeamApi({
294
- path: '/health/get_health',
295
- params: {},
296
- })
297
-
298
- return
299
- }
300
- // TODO - do this using the OpenAPI spec for the command rather than
301
- // explicitly encoding the property names
302
- if (commandParams['accepted_providers']) {
303
- commandParams['accepted_providers'] =
304
- commandParams['accepted_providers'].split(',')
305
- }
306
-
307
- const apiPath = `/${selectedCommand.join('/').replace(/-/g, '_')}`
308
185
 
309
- const params = await interactForCommandParams(
310
- { command: selectedCommand, params: commandParams },
311
- ctx,
312
- )
313
-
314
- if (params === '[Back]') {
315
- const previousCommands = [...selectedCommand]
316
- previousCommands.pop()
317
- return await cli({
318
- ...args,
319
- _: previousCommands,
186
+ // Check the arguments before the command acts on any of them, so a
187
+ // mistake is reported rather than half applied.
188
+ assertKnownArgs(argParams, selectedCommand, {
189
+ accepted: acceptedParamsOf(command.definition),
190
+ isLocal: findLocalCommand(selectedCommand) != null,
320
191
  })
321
- }
322
192
 
323
- if (apiPath.includes('/events/list') && params.between) {
324
- delete params.since
325
- }
326
-
327
- const response = await RequestSeamApi({
328
- path: apiPath,
329
- params,
330
- responseKey: getResponseKey(selectedCommand, ctx),
331
- })
332
-
333
- if (response.data?.connect_webview) {
334
- await handleConnectWebviewResponse(
335
- response.data.connect_webview,
336
- ctx.interactivity,
193
+ const result = await command.execute(
194
+ { path: selectedCommand, argParams, stdinParams, args, argv },
195
+ ctx,
337
196
  )
338
- }
339
197
 
340
- if (response.data?.action_attempt && !isNonInteractive) {
341
- await interactForActionAttemptPoll(response.data.action_attempt)
198
+ if (result.kind === 'back') {
199
+ commandPath = result.toPath
200
+ continue
201
+ }
202
+
203
+ return
342
204
  }
343
205
  }
344
206
 
345
207
  const toCommandWord = (arg: string): string =>
346
208
  arg.toLowerCase().replace(/_/g, '-')
347
209
 
348
- /**
349
- * Report any argument the command does not accept, rather than acting on it.
350
- * An unrecognized argument is a mistake: forwarded to the API it would fail
351
- * somewhere less obvious or be quietly ignored, and on a command the CLI
352
- * handles itself it would go nowhere at all.
353
- *
354
- * Only arguments are checked. Params read from stdin are passed through as
355
- * given, so a caller may send whatever the API itself accepts.
356
- *
357
- * `ctx` is only needed to look up an endpoint's parameters, so commands the
358
- * CLI declares itself can be checked before any blueprint is loaded.
359
- */
360
- const assertKnownArgs = (
361
- argParams: Record<string, any>,
362
- command: string[],
363
- ctx?: ContextHelpers,
364
- ): void => {
365
- const local = findLocalCommand(command)
366
-
367
- let accepted: Set<string>
368
- if (local != null) {
369
- accepted = new Set(
370
- local.flags.flatMap(({ long }) =>
371
- long == null ? [] : [toParameterName(long)],
372
- ),
373
- )
374
- } else if (ctx != null) {
375
- accepted = new Set(
376
- getCommandBlueprintDef(command, ctx).request.parameters.map(
377
- ({ name }) => name,
378
- ),
379
- )
380
- } else {
381
- throw new Error(`No definition for command seam ${command.join(' ')}`)
382
- }
383
-
384
- const unknown = Object.keys(argParams).filter((key) => !accepted.has(key))
385
- if (unknown.length === 0) return
386
-
387
- // Name an endpoint command by its path, as missing params are named, and a
388
- // command the CLI handles itself by the words that run it.
389
- const target =
390
- local == null
391
- ? `/${command.join('/').replace(/-/g, '_')}`
392
- : command.join(' ')
393
-
394
- throw new UsageError(
395
- `Unknown ${
396
- unknown.length === 1 ? 'parameter' : 'parameters'
397
- } for ${target}: ${unknown.map(toGivenArgName).join(' ')}`,
398
- {
399
- hint: `Run 'seam ${command.join(' ')} --help' to see what it accepts.`,
400
- },
401
- )
402
- }
403
-
404
- const handleConnectWebviewResponse = async (
405
- connectWebview: any,
406
- interactivity: Interactivity,
407
- ) => {
408
- const url = connectWebview.url
409
-
410
- if (
411
- interactivity !== 'non-interactive' &&
412
- process.env['INSIDE_WEB_BROWSER'] !== '1'
413
- ) {
414
- const action = await promptConfirm({
415
- message: 'Would you like to open the webview in your browser?',
416
- initialValue: false,
417
- })
418
-
419
- if (action) {
420
- const { default: open } = await import('open')
421
- await open(url)
422
- }
423
- }
424
- }
425
-
426
210
  const run = async (argv: string[]) => {
427
211
  if (argv[0] === 'wizard') {
428
- const { default: wizard } = await import('@seamapi/wizard')
429
- await wizard({
430
- argv: argv.slice(1),
431
- commandName: 'seam wizard',
432
- })
212
+ await runWizard(argv.slice(1))
433
213
  return
434
214
  }
435
215
 
@@ -444,30 +224,9 @@ const run = async (argv: string[]) => {
444
224
  }),
445
225
  )
446
226
 
447
- await cli(args)
227
+ await cli(args, argv)
448
228
  }
449
229
 
450
230
  run(process.argv.slice(2)).catch((e: unknown) => {
451
- const output = getOutput()
452
- process.exitCode = 1
453
-
454
- if (e instanceof UsageError) {
455
- output.error(chalk.red(e.message))
456
- if (e.hint !== '') output.error(e.hint)
457
- return
458
- }
459
-
460
- if (e instanceof NonInteractiveError || e instanceof EnvVarOverrideError) {
461
- output.error(chalk.red(e.message))
462
- return
463
- }
464
-
465
- if (e instanceof PromptCancelledError) {
466
- output.error(chalk.gray(e.message))
467
- return
468
- }
469
-
470
- const error = e instanceof Error ? e : new Error(String(e))
471
- output.error(chalk.red(`CLI Error: ${error.message}`))
472
- if (error.stack != null) output.error(chalk.gray(error.stack))
231
+ reportErrorAndExit(e, getOutput())
473
232
  })