dedalus-cli 0.0.0-stage → 0.7.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 (684) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +296 -2
  3. package/SKILL.md +73 -0
  4. package/api.md +340 -0
  5. package/dist/cjs/bin.d.ts +3 -0
  6. package/dist/cjs/bin.d.ts.map +1 -0
  7. package/dist/cjs/bin.js +7 -0
  8. package/dist/cjs/bin.js.map +1 -0
  9. package/dist/cjs/cli/completions.d.ts +6 -0
  10. package/dist/cjs/cli/completions.d.ts.map +1 -0
  11. package/dist/cjs/cli/completions.js +11 -0
  12. package/dist/cjs/cli/completions.js.map +1 -0
  13. package/dist/cjs/cli/credentials.d.ts +169 -0
  14. package/dist/cjs/cli/credentials.d.ts.map +1 -0
  15. package/dist/cjs/cli/credentials.js +630 -0
  16. package/dist/cjs/cli/credentials.js.map +1 -0
  17. package/dist/cjs/cli/keychain.d.ts +34 -0
  18. package/dist/cjs/cli/keychain.d.ts.map +1 -0
  19. package/dist/cjs/cli/keychain.js +246 -0
  20. package/dist/cjs/cli/keychain.js.map +1 -0
  21. package/dist/cjs/cli/list.d.ts +23 -0
  22. package/dist/cjs/cli/list.d.ts.map +1 -0
  23. package/dist/cjs/cli/list.js +32 -0
  24. package/dist/cjs/cli/list.js.map +1 -0
  25. package/dist/cjs/cli/login.d.ts +137 -0
  26. package/dist/cjs/cli/login.d.ts.map +1 -0
  27. package/dist/cjs/cli/login.js +2060 -0
  28. package/dist/cjs/cli/login.js.map +1 -0
  29. package/dist/cjs/cli/runtime.d.ts +98 -0
  30. package/dist/cjs/cli/runtime.d.ts.map +1 -0
  31. package/dist/cjs/cli/runtime.js +1356 -0
  32. package/dist/cjs/cli/runtime.js.map +1 -0
  33. package/dist/cjs/cli/toon.d.ts +6 -0
  34. package/dist/cjs/cli/toon.d.ts.map +1 -0
  35. package/dist/cjs/cli/toon.js +165 -0
  36. package/dist/cjs/cli/toon.js.map +1 -0
  37. package/dist/cjs/cli/upgrade.d.ts +28 -0
  38. package/dist/cjs/cli/upgrade.d.ts.map +1 -0
  39. package/dist/cjs/cli/upgrade.js +1191 -0
  40. package/dist/cjs/cli/upgrade.js.map +1 -0
  41. package/dist/cjs/commands/index.d.ts +47 -0
  42. package/dist/cjs/commands/index.d.ts.map +1 -0
  43. package/dist/cjs/commands/index.js +1202 -0
  44. package/dist/cjs/commands/index.js.map +1 -0
  45. package/dist/cjs/custom/browser-routing.d.ts +4 -0
  46. package/dist/cjs/custom/browser-routing.d.ts.map +1 -0
  47. package/dist/cjs/custom/browser-routing.js +51 -0
  48. package/dist/cjs/custom/browser-routing.js.map +1 -0
  49. package/dist/cjs/custom/images.d.ts +6 -0
  50. package/dist/cjs/custom/images.d.ts.map +1 -0
  51. package/dist/cjs/custom/images.js +74 -0
  52. package/dist/cjs/custom/images.js.map +1 -0
  53. package/dist/cjs/custom/machines.d.ts +20 -0
  54. package/dist/cjs/custom/machines.d.ts.map +1 -0
  55. package/dist/cjs/custom/machines.js +84 -0
  56. package/dist/cjs/custom/machines.js.map +1 -0
  57. package/dist/cjs/custom/ssh-picker.d.ts +19 -0
  58. package/dist/cjs/custom/ssh-picker.d.ts.map +1 -0
  59. package/dist/cjs/custom/ssh-picker.js +157 -0
  60. package/dist/cjs/custom/ssh-picker.js.map +1 -0
  61. package/dist/cjs/custom/ssh.d.ts +18 -0
  62. package/dist/cjs/custom/ssh.d.ts.map +1 -0
  63. package/dist/cjs/custom/ssh.js +152 -0
  64. package/dist/cjs/custom/ssh.js.map +1 -0
  65. package/dist/cjs/feedback/bundle.d.ts +41 -0
  66. package/dist/cjs/feedback/bundle.d.ts.map +1 -0
  67. package/dist/cjs/feedback/bundle.js +88 -0
  68. package/dist/cjs/feedback/bundle.js.map +1 -0
  69. package/dist/cjs/feedback/command.d.ts +6 -0
  70. package/dist/cjs/feedback/command.d.ts.map +1 -0
  71. package/dist/cjs/feedback/command.js +100 -0
  72. package/dist/cjs/feedback/command.js.map +1 -0
  73. package/dist/cjs/feedback/diagnostics.d.ts +30 -0
  74. package/dist/cjs/feedback/diagnostics.d.ts.map +1 -0
  75. package/dist/cjs/feedback/diagnostics.js +278 -0
  76. package/dist/cjs/feedback/diagnostics.js.map +1 -0
  77. package/dist/cjs/index.d.ts +4 -0
  78. package/dist/cjs/index.d.ts.map +1 -0
  79. package/dist/cjs/index.js +11 -0
  80. package/dist/cjs/index.js.map +1 -0
  81. package/dist/cjs/package.json +3 -0
  82. package/dist/cjs/sdk/api-promise.d.ts +31 -0
  83. package/dist/cjs/sdk/api-promise.d.ts.map +1 -0
  84. package/dist/cjs/sdk/api-promise.js +73 -0
  85. package/dist/cjs/sdk/api-promise.js.map +1 -0
  86. package/dist/cjs/sdk/client.d.ts +267 -0
  87. package/dist/cjs/sdk/client.d.ts.map +1 -0
  88. package/dist/cjs/sdk/client.js +965 -0
  89. package/dist/cjs/sdk/client.js.map +1 -0
  90. package/dist/cjs/sdk/core/api-promise.d.ts +3 -0
  91. package/dist/cjs/sdk/core/api-promise.d.ts.map +1 -0
  92. package/dist/cjs/sdk/core/api-promise.js +8 -0
  93. package/dist/cjs/sdk/core/api-promise.js.map +1 -0
  94. package/dist/cjs/sdk/core/error.d.ts +46 -0
  95. package/dist/cjs/sdk/core/error.d.ts.map +1 -0
  96. package/dist/cjs/sdk/core/error.js +135 -0
  97. package/dist/cjs/sdk/core/error.js.map +1 -0
  98. package/dist/cjs/sdk/core/pagination.d.ts +38 -0
  99. package/dist/cjs/sdk/core/pagination.d.ts.map +1 -0
  100. package/dist/cjs/sdk/core/pagination.js +98 -0
  101. package/dist/cjs/sdk/core/pagination.js.map +1 -0
  102. package/dist/cjs/sdk/core/resource.d.ts +2 -0
  103. package/dist/cjs/sdk/core/resource.d.ts.map +1 -0
  104. package/dist/cjs/sdk/core/resource.js +7 -0
  105. package/dist/cjs/sdk/core/resource.js.map +1 -0
  106. package/dist/cjs/sdk/core/uploads.d.ts +3 -0
  107. package/dist/cjs/sdk/core/uploads.d.ts.map +1 -0
  108. package/dist/cjs/sdk/core/uploads.js +7 -0
  109. package/dist/cjs/sdk/core/uploads.js.map +1 -0
  110. package/dist/cjs/sdk/error.d.ts +3 -0
  111. package/dist/cjs/sdk/error.d.ts.map +1 -0
  112. package/dist/cjs/sdk/error.js +20 -0
  113. package/dist/cjs/sdk/error.js.map +1 -0
  114. package/dist/cjs/sdk/helpers/images.d.ts +31 -0
  115. package/dist/cjs/sdk/helpers/images.d.ts.map +1 -0
  116. package/dist/cjs/sdk/helpers/images.js +195 -0
  117. package/dist/cjs/sdk/helpers/images.js.map +1 -0
  118. package/dist/cjs/sdk/index.d.ts +7 -0
  119. package/dist/cjs/sdk/index.d.ts.map +1 -0
  120. package/dist/cjs/sdk/index.js +29 -0
  121. package/dist/cjs/sdk/index.js.map +1 -0
  122. package/dist/cjs/sdk/internal/builtin-types.d.ts +73 -0
  123. package/dist/cjs/sdk/internal/builtin-types.d.ts.map +1 -0
  124. package/dist/cjs/sdk/internal/builtin-types.js +4 -0
  125. package/dist/cjs/sdk/internal/builtin-types.js.map +1 -0
  126. package/dist/cjs/sdk/internal/detect-platform.d.ts +15 -0
  127. package/dist/cjs/sdk/internal/detect-platform.d.ts.map +1 -0
  128. package/dist/cjs/sdk/internal/detect-platform.js +185 -0
  129. package/dist/cjs/sdk/internal/detect-platform.js.map +1 -0
  130. package/dist/cjs/sdk/internal/errors.d.ts +3 -0
  131. package/dist/cjs/sdk/internal/errors.d.ts.map +1 -0
  132. package/dist/cjs/sdk/internal/errors.js +41 -0
  133. package/dist/cjs/sdk/internal/errors.js.map +1 -0
  134. package/dist/cjs/sdk/internal/headers.d.ts +43 -0
  135. package/dist/cjs/sdk/internal/headers.d.ts.map +1 -0
  136. package/dist/cjs/sdk/internal/headers.js +142 -0
  137. package/dist/cjs/sdk/internal/headers.js.map +1 -0
  138. package/dist/cjs/sdk/internal/parse.d.ts +3 -0
  139. package/dist/cjs/sdk/internal/parse.d.ts.map +1 -0
  140. package/dist/cjs/sdk/internal/parse.js +7 -0
  141. package/dist/cjs/sdk/internal/parse.js.map +1 -0
  142. package/dist/cjs/sdk/internal/qs/formats.d.ts +7 -0
  143. package/dist/cjs/sdk/internal/qs/formats.d.ts.map +1 -0
  144. package/dist/cjs/sdk/internal/qs/formats.js +13 -0
  145. package/dist/cjs/sdk/internal/qs/formats.js.map +1 -0
  146. package/dist/cjs/sdk/internal/qs/index.d.ts +10 -0
  147. package/dist/cjs/sdk/internal/qs/index.d.ts.map +1 -0
  148. package/dist/cjs/sdk/internal/qs/index.js +14 -0
  149. package/dist/cjs/sdk/internal/qs/index.js.map +1 -0
  150. package/dist/cjs/sdk/internal/qs/stringify.d.ts +3 -0
  151. package/dist/cjs/sdk/internal/qs/stringify.d.ts.map +1 -0
  152. package/dist/cjs/sdk/internal/qs/stringify.js +278 -0
  153. package/dist/cjs/sdk/internal/qs/stringify.js.map +1 -0
  154. package/dist/cjs/sdk/internal/qs/types.d.ts +57 -0
  155. package/dist/cjs/sdk/internal/qs/types.d.ts.map +1 -0
  156. package/dist/cjs/sdk/internal/qs/types.js +3 -0
  157. package/dist/cjs/sdk/internal/qs/types.js.map +1 -0
  158. package/dist/cjs/sdk/internal/qs/utils.d.ts +15 -0
  159. package/dist/cjs/sdk/internal/qs/utils.d.ts.map +1 -0
  160. package/dist/cjs/sdk/internal/qs/utils.js +230 -0
  161. package/dist/cjs/sdk/internal/qs/utils.js.map +1 -0
  162. package/dist/cjs/sdk/internal/request-options.d.ts +33 -0
  163. package/dist/cjs/sdk/internal/request-options.d.ts.map +1 -0
  164. package/dist/cjs/sdk/internal/request-options.js +15 -0
  165. package/dist/cjs/sdk/internal/request-options.js.map +1 -0
  166. package/dist/cjs/sdk/internal/shim-types.d.ts +17 -0
  167. package/dist/cjs/sdk/internal/shim-types.d.ts.map +1 -0
  168. package/dist/cjs/sdk/internal/shim-types.js +4 -0
  169. package/dist/cjs/sdk/internal/shim-types.js.map +1 -0
  170. package/dist/cjs/sdk/internal/shims.d.ts +26 -0
  171. package/dist/cjs/sdk/internal/shims.d.ts.map +1 -0
  172. package/dist/cjs/sdk/internal/shims.js +92 -0
  173. package/dist/cjs/sdk/internal/shims.js.map +1 -0
  174. package/dist/cjs/sdk/internal/to-file.d.ts +45 -0
  175. package/dist/cjs/sdk/internal/to-file.d.ts.map +1 -0
  176. package/dist/cjs/sdk/internal/to-file.js +91 -0
  177. package/dist/cjs/sdk/internal/to-file.js.map +1 -0
  178. package/dist/cjs/sdk/internal/types.d.ts +63 -0
  179. package/dist/cjs/sdk/internal/types.d.ts.map +1 -0
  180. package/dist/cjs/sdk/internal/types.js +4 -0
  181. package/dist/cjs/sdk/internal/types.js.map +1 -0
  182. package/dist/cjs/sdk/internal/uploads.d.ts +42 -0
  183. package/dist/cjs/sdk/internal/uploads.d.ts.map +1 -0
  184. package/dist/cjs/sdk/internal/uploads.js +158 -0
  185. package/dist/cjs/sdk/internal/uploads.js.map +1 -0
  186. package/dist/cjs/sdk/internal/utils/base64.d.ts +3 -0
  187. package/dist/cjs/sdk/internal/utils/base64.d.ts.map +1 -0
  188. package/dist/cjs/sdk/internal/utils/base64.js +38 -0
  189. package/dist/cjs/sdk/internal/utils/base64.js.map +1 -0
  190. package/dist/cjs/sdk/internal/utils/body.d.ts +40 -0
  191. package/dist/cjs/sdk/internal/utils/body.d.ts.map +1 -0
  192. package/dist/cjs/sdk/internal/utils/body.js +148 -0
  193. package/dist/cjs/sdk/internal/utils/body.js.map +1 -0
  194. package/dist/cjs/sdk/internal/utils/bytes.d.ts +4 -0
  195. package/dist/cjs/sdk/internal/utils/bytes.d.ts.map +1 -0
  196. package/dist/cjs/sdk/internal/utils/bytes.js +31 -0
  197. package/dist/cjs/sdk/internal/utils/bytes.js.map +1 -0
  198. package/dist/cjs/sdk/internal/utils/env.d.ts +9 -0
  199. package/dist/cjs/sdk/internal/utils/env.d.ts.map +1 -0
  200. package/dist/cjs/sdk/internal/utils/env.js +22 -0
  201. package/dist/cjs/sdk/internal/utils/env.js.map +1 -0
  202. package/dist/cjs/sdk/internal/utils/log.d.ts +52 -0
  203. package/dist/cjs/sdk/internal/utils/log.d.ts.map +1 -0
  204. package/dist/cjs/sdk/internal/utils/log.js +413 -0
  205. package/dist/cjs/sdk/internal/utils/log.js.map +1 -0
  206. package/dist/cjs/sdk/internal/utils/path.d.ts +41 -0
  207. package/dist/cjs/sdk/internal/utils/path.d.ts.map +1 -0
  208. package/dist/cjs/sdk/internal/utils/path.js +115 -0
  209. package/dist/cjs/sdk/internal/utils/path.js.map +1 -0
  210. package/dist/cjs/sdk/internal/utils/query-string.d.ts +21 -0
  211. package/dist/cjs/sdk/internal/utils/query-string.d.ts.map +1 -0
  212. package/dist/cjs/sdk/internal/utils/query-string.js +128 -0
  213. package/dist/cjs/sdk/internal/utils/query-string.js.map +1 -0
  214. package/dist/cjs/sdk/internal/utils/query.d.ts +2 -0
  215. package/dist/cjs/sdk/internal/utils/query.d.ts.map +1 -0
  216. package/dist/cjs/sdk/internal/utils/query.js +12 -0
  217. package/dist/cjs/sdk/internal/utils/query.js.map +1 -0
  218. package/dist/cjs/sdk/internal/utils/sleep.d.ts +2 -0
  219. package/dist/cjs/sdk/internal/utils/sleep.d.ts.map +1 -0
  220. package/dist/cjs/sdk/internal/utils/sleep.js +7 -0
  221. package/dist/cjs/sdk/internal/utils/sleep.js.map +1 -0
  222. package/dist/cjs/sdk/internal/utils/uuid.d.ts +5 -0
  223. package/dist/cjs/sdk/internal/utils/uuid.d.ts.map +1 -0
  224. package/dist/cjs/sdk/internal/utils/uuid.js +19 -0
  225. package/dist/cjs/sdk/internal/utils/uuid.js.map +1 -0
  226. package/dist/cjs/sdk/internal/utils/values.d.ts +18 -0
  227. package/dist/cjs/sdk/internal/utils/values.d.ts.map +1 -0
  228. package/dist/cjs/sdk/internal/utils/values.js +112 -0
  229. package/dist/cjs/sdk/internal/utils/values.js.map +1 -0
  230. package/dist/cjs/sdk/internal/utils.d.ts +8 -0
  231. package/dist/cjs/sdk/internal/utils.d.ts.map +1 -0
  232. package/dist/cjs/sdk/internal/utils.js +25 -0
  233. package/dist/cjs/sdk/internal/utils.js.map +1 -0
  234. package/dist/cjs/sdk/pagination.d.ts +3 -0
  235. package/dist/cjs/sdk/pagination.d.ts.map +1 -0
  236. package/dist/cjs/sdk/pagination.js +20 -0
  237. package/dist/cjs/sdk/pagination.js.map +1 -0
  238. package/dist/cjs/sdk/resource.d.ts +6 -0
  239. package/dist/cjs/sdk/resource.d.ts.map +1 -0
  240. package/dist/cjs/sdk/resource.js +12 -0
  241. package/dist/cjs/sdk/resource.js.map +1 -0
  242. package/dist/cjs/sdk/resources/images/images.d.ts +202 -0
  243. package/dist/cjs/sdk/resources/images/images.d.ts.map +1 -0
  244. package/dist/cjs/sdk/resources/images/images.js +139 -0
  245. package/dist/cjs/sdk/resources/images/images.js.map +1 -0
  246. package/dist/cjs/sdk/resources/images/index.d.ts +5 -0
  247. package/dist/cjs/sdk/resources/images/index.d.ts.map +1 -0
  248. package/dist/cjs/sdk/resources/images/index.js +9 -0
  249. package/dist/cjs/sdk/resources/images/index.js.map +1 -0
  250. package/dist/cjs/sdk/resources/images/uploads.d.ts +50 -0
  251. package/dist/cjs/sdk/resources/images/uploads.d.ts.map +1 -0
  252. package/dist/cjs/sdk/resources/images/uploads.js +28 -0
  253. package/dist/cjs/sdk/resources/images/uploads.js.map +1 -0
  254. package/dist/cjs/sdk/resources/images.d.ts +2 -0
  255. package/dist/cjs/sdk/resources/images.d.ts.map +1 -0
  256. package/dist/cjs/sdk/resources/images.js +19 -0
  257. package/dist/cjs/sdk/resources/images.js.map +1 -0
  258. package/dist/cjs/sdk/resources/index.d.ts +6 -0
  259. package/dist/cjs/sdk/resources/index.d.ts.map +1 -0
  260. package/dist/cjs/sdk/resources/index.js +11 -0
  261. package/dist/cjs/sdk/resources/index.js.map +1 -0
  262. package/dist/cjs/sdk/resources/machines/autoresizing.d.ts +115 -0
  263. package/dist/cjs/sdk/resources/machines/autoresizing.d.ts.map +1 -0
  264. package/dist/cjs/sdk/resources/machines/autoresizing.js +46 -0
  265. package/dist/cjs/sdk/resources/machines/autoresizing.js.map +1 -0
  266. package/dist/cjs/sdk/resources/machines/executions/executions.d.ts +341 -0
  267. package/dist/cjs/sdk/resources/machines/executions/executions.d.ts.map +1 -0
  268. package/dist/cjs/sdk/resources/machines/executions/executions.js +161 -0
  269. package/dist/cjs/sdk/resources/machines/executions/executions.js.map +1 -0
  270. package/dist/cjs/sdk/resources/machines/executions/index.d.ts +5 -0
  271. package/dist/cjs/sdk/resources/machines/executions/index.d.ts.map +1 -0
  272. package/dist/cjs/sdk/resources/machines/executions/index.js +9 -0
  273. package/dist/cjs/sdk/resources/machines/executions/index.js.map +1 -0
  274. package/dist/cjs/sdk/resources/machines/executions/logs.d.ts +103 -0
  275. package/dist/cjs/sdk/resources/machines/executions/logs.d.ts.map +1 -0
  276. package/dist/cjs/sdk/resources/machines/executions/logs.js +48 -0
  277. package/dist/cjs/sdk/resources/machines/executions/logs.js.map +1 -0
  278. package/dist/cjs/sdk/resources/machines/executions.d.ts +2 -0
  279. package/dist/cjs/sdk/resources/machines/executions.d.ts.map +1 -0
  280. package/dist/cjs/sdk/resources/machines/executions.js +19 -0
  281. package/dist/cjs/sdk/resources/machines/executions.js.map +1 -0
  282. package/dist/cjs/sdk/resources/machines/index.d.ts +9 -0
  283. package/dist/cjs/sdk/resources/machines/index.d.ts.map +1 -0
  284. package/dist/cjs/sdk/resources/machines/index.js +13 -0
  285. package/dist/cjs/sdk/resources/machines/index.js.map +1 -0
  286. package/dist/cjs/sdk/resources/machines/machines.d.ts +496 -0
  287. package/dist/cjs/sdk/resources/machines/machines.d.ts.map +1 -0
  288. package/dist/cjs/sdk/resources/machines/machines.js +220 -0
  289. package/dist/cjs/sdk/resources/machines/machines.js.map +1 -0
  290. package/dist/cjs/sdk/resources/machines/ssh.d.ts +175 -0
  291. package/dist/cjs/sdk/resources/machines/ssh.d.ts.map +1 -0
  292. package/dist/cjs/sdk/resources/machines/ssh.js +89 -0
  293. package/dist/cjs/sdk/resources/machines/ssh.js.map +1 -0
  294. package/dist/cjs/sdk/resources/machines.d.ts +2 -0
  295. package/dist/cjs/sdk/resources/machines.d.ts.map +1 -0
  296. package/dist/cjs/sdk/resources/machines.js +19 -0
  297. package/dist/cjs/sdk/resources/machines.js.map +1 -0
  298. package/dist/cjs/sdk/resources/organization/autoresizing.d.ts +86 -0
  299. package/dist/cjs/sdk/resources/organization/autoresizing.d.ts.map +1 -0
  300. package/dist/cjs/sdk/resources/organization/autoresizing.js +38 -0
  301. package/dist/cjs/sdk/resources/organization/autoresizing.js.map +1 -0
  302. package/dist/cjs/sdk/resources/organization/index.d.ts +4 -0
  303. package/dist/cjs/sdk/resources/organization/index.d.ts.map +1 -0
  304. package/dist/cjs/sdk/resources/organization/index.js +9 -0
  305. package/dist/cjs/sdk/resources/organization/index.js.map +1 -0
  306. package/dist/cjs/sdk/resources/organization/organization.d.ts +10 -0
  307. package/dist/cjs/sdk/resources/organization/organization.d.ts.map +1 -0
  308. package/dist/cjs/sdk/resources/organization/organization.js +46 -0
  309. package/dist/cjs/sdk/resources/organization/organization.js.map +1 -0
  310. package/dist/cjs/sdk/resources/organization.d.ts +2 -0
  311. package/dist/cjs/sdk/resources/organization.d.ts.map +1 -0
  312. package/dist/cjs/sdk/resources/organization.js +19 -0
  313. package/dist/cjs/sdk/resources/organization.js.map +1 -0
  314. package/dist/cjs/sdk/resources.d.ts +3 -0
  315. package/dist/cjs/sdk/resources.d.ts.map +1 -0
  316. package/dist/cjs/sdk/resources.js +9 -0
  317. package/dist/cjs/sdk/resources.js.map +1 -0
  318. package/dist/cjs/sdk/uploads.d.ts +2 -0
  319. package/dist/cjs/sdk/uploads.d.ts.map +1 -0
  320. package/dist/cjs/sdk/uploads.js +7 -0
  321. package/dist/cjs/sdk/uploads.js.map +1 -0
  322. package/dist/cjs/sdk/version.d.ts +2 -0
  323. package/dist/cjs/sdk/version.d.ts.map +1 -0
  324. package/dist/cjs/sdk/version.js +6 -0
  325. package/dist/cjs/sdk/version.js.map +1 -0
  326. package/dist/esm/bin.d.ts +3 -0
  327. package/dist/esm/bin.d.ts.map +1 -0
  328. package/dist/esm/bin.js +5 -0
  329. package/dist/esm/bin.js.map +1 -0
  330. package/dist/esm/cli/completions.d.ts +6 -0
  331. package/dist/esm/cli/completions.d.ts.map +1 -0
  332. package/dist/esm/cli/completions.js +8 -0
  333. package/dist/esm/cli/completions.js.map +1 -0
  334. package/dist/esm/cli/credentials.d.ts +169 -0
  335. package/dist/esm/cli/credentials.d.ts.map +1 -0
  336. package/dist/esm/cli/credentials.js +614 -0
  337. package/dist/esm/cli/credentials.js.map +1 -0
  338. package/dist/esm/cli/keychain.d.ts +34 -0
  339. package/dist/esm/cli/keychain.d.ts.map +1 -0
  340. package/dist/esm/cli/keychain.js +237 -0
  341. package/dist/esm/cli/keychain.js.map +1 -0
  342. package/dist/esm/cli/list.d.ts +23 -0
  343. package/dist/esm/cli/list.d.ts.map +1 -0
  344. package/dist/esm/cli/list.js +27 -0
  345. package/dist/esm/cli/list.js.map +1 -0
  346. package/dist/esm/cli/login.d.ts +137 -0
  347. package/dist/esm/cli/login.d.ts.map +1 -0
  348. package/dist/esm/cli/login.js +2053 -0
  349. package/dist/esm/cli/login.js.map +1 -0
  350. package/dist/esm/cli/runtime.d.ts +98 -0
  351. package/dist/esm/cli/runtime.d.ts.map +1 -0
  352. package/dist/esm/cli/runtime.js +1345 -0
  353. package/dist/esm/cli/runtime.js.map +1 -0
  354. package/dist/esm/cli/toon.d.ts +6 -0
  355. package/dist/esm/cli/toon.d.ts.map +1 -0
  356. package/dist/esm/cli/toon.js +161 -0
  357. package/dist/esm/cli/toon.js.map +1 -0
  358. package/dist/esm/cli/upgrade.d.ts +28 -0
  359. package/dist/esm/cli/upgrade.d.ts.map +1 -0
  360. package/dist/esm/cli/upgrade.js +1186 -0
  361. package/dist/esm/cli/upgrade.js.map +1 -0
  362. package/dist/esm/commands/index.d.ts +47 -0
  363. package/dist/esm/commands/index.d.ts.map +1 -0
  364. package/dist/esm/commands/index.js +1195 -0
  365. package/dist/esm/commands/index.js.map +1 -0
  366. package/dist/esm/custom/browser-routing.d.ts +4 -0
  367. package/dist/esm/custom/browser-routing.d.ts.map +1 -0
  368. package/dist/esm/custom/browser-routing.js +47 -0
  369. package/dist/esm/custom/browser-routing.js.map +1 -0
  370. package/dist/esm/custom/images.d.ts +6 -0
  371. package/dist/esm/custom/images.d.ts.map +1 -0
  372. package/dist/esm/custom/images.js +68 -0
  373. package/dist/esm/custom/images.js.map +1 -0
  374. package/dist/esm/custom/machines.d.ts +20 -0
  375. package/dist/esm/custom/machines.d.ts.map +1 -0
  376. package/dist/esm/custom/machines.js +76 -0
  377. package/dist/esm/custom/machines.js.map +1 -0
  378. package/dist/esm/custom/ssh-picker.d.ts +19 -0
  379. package/dist/esm/custom/ssh-picker.d.ts.map +1 -0
  380. package/dist/esm/custom/ssh-picker.js +149 -0
  381. package/dist/esm/custom/ssh-picker.js.map +1 -0
  382. package/dist/esm/custom/ssh.d.ts +18 -0
  383. package/dist/esm/custom/ssh.d.ts.map +1 -0
  384. package/dist/esm/custom/ssh.js +147 -0
  385. package/dist/esm/custom/ssh.js.map +1 -0
  386. package/dist/esm/feedback/bundle.d.ts +41 -0
  387. package/dist/esm/feedback/bundle.d.ts.map +1 -0
  388. package/dist/esm/feedback/bundle.js +83 -0
  389. package/dist/esm/feedback/bundle.js.map +1 -0
  390. package/dist/esm/feedback/command.d.ts +6 -0
  391. package/dist/esm/feedback/command.d.ts.map +1 -0
  392. package/dist/esm/feedback/command.js +92 -0
  393. package/dist/esm/feedback/command.js.map +1 -0
  394. package/dist/esm/feedback/diagnostics.d.ts +30 -0
  395. package/dist/esm/feedback/diagnostics.d.ts.map +1 -0
  396. package/dist/esm/feedback/diagnostics.js +270 -0
  397. package/dist/esm/feedback/diagnostics.js.map +1 -0
  398. package/dist/esm/index.d.ts +4 -0
  399. package/dist/esm/index.d.ts.map +1 -0
  400. package/dist/esm/index.js +7 -0
  401. package/dist/esm/index.js.map +1 -0
  402. package/dist/esm/sdk/api-promise.d.ts +31 -0
  403. package/dist/esm/sdk/api-promise.d.ts.map +1 -0
  404. package/dist/esm/sdk/api-promise.js +68 -0
  405. package/dist/esm/sdk/api-promise.js.map +1 -0
  406. package/dist/esm/sdk/client.d.ts +267 -0
  407. package/dist/esm/sdk/client.d.ts.map +1 -0
  408. package/dist/esm/sdk/client.js +928 -0
  409. package/dist/esm/sdk/client.js.map +1 -0
  410. package/dist/esm/sdk/core/api-promise.d.ts +3 -0
  411. package/dist/esm/sdk/core/api-promise.d.ts.map +1 -0
  412. package/dist/esm/sdk/core/api-promise.js +3 -0
  413. package/dist/esm/sdk/core/api-promise.js.map +1 -0
  414. package/dist/esm/sdk/core/error.d.ts +46 -0
  415. package/dist/esm/sdk/core/error.d.ts.map +1 -0
  416. package/dist/esm/sdk/core/error.js +119 -0
  417. package/dist/esm/sdk/core/error.js.map +1 -0
  418. package/dist/esm/sdk/core/pagination.d.ts +38 -0
  419. package/dist/esm/sdk/core/pagination.d.ts.map +1 -0
  420. package/dist/esm/sdk/core/pagination.js +92 -0
  421. package/dist/esm/sdk/core/pagination.js.map +1 -0
  422. package/dist/esm/sdk/core/resource.d.ts +2 -0
  423. package/dist/esm/sdk/core/resource.d.ts.map +1 -0
  424. package/dist/esm/sdk/core/resource.js +3 -0
  425. package/dist/esm/sdk/core/resource.js.map +1 -0
  426. package/dist/esm/sdk/core/uploads.d.ts +3 -0
  427. package/dist/esm/sdk/core/uploads.d.ts.map +1 -0
  428. package/dist/esm/sdk/core/uploads.js +3 -0
  429. package/dist/esm/sdk/core/uploads.js.map +1 -0
  430. package/dist/esm/sdk/error.d.ts +3 -0
  431. package/dist/esm/sdk/error.d.ts.map +1 -0
  432. package/dist/esm/sdk/error.js +4 -0
  433. package/dist/esm/sdk/error.js.map +1 -0
  434. package/dist/esm/sdk/helpers/images.d.ts +31 -0
  435. package/dist/esm/sdk/helpers/images.d.ts.map +1 -0
  436. package/dist/esm/sdk/helpers/images.js +189 -0
  437. package/dist/esm/sdk/helpers/images.js.map +1 -0
  438. package/dist/esm/sdk/index.d.ts +7 -0
  439. package/dist/esm/sdk/index.d.ts.map +1 -0
  440. package/dist/esm/sdk/index.js +8 -0
  441. package/dist/esm/sdk/index.js.map +1 -0
  442. package/dist/esm/sdk/internal/builtin-types.d.ts +73 -0
  443. package/dist/esm/sdk/internal/builtin-types.d.ts.map +1 -0
  444. package/dist/esm/sdk/internal/builtin-types.js +3 -0
  445. package/dist/esm/sdk/internal/builtin-types.js.map +1 -0
  446. package/dist/esm/sdk/internal/detect-platform.d.ts +15 -0
  447. package/dist/esm/sdk/internal/detect-platform.d.ts.map +1 -0
  448. package/dist/esm/sdk/internal/detect-platform.js +180 -0
  449. package/dist/esm/sdk/internal/detect-platform.js.map +1 -0
  450. package/dist/esm/sdk/internal/errors.d.ts +3 -0
  451. package/dist/esm/sdk/internal/errors.d.ts.map +1 -0
  452. package/dist/esm/sdk/internal/errors.js +36 -0
  453. package/dist/esm/sdk/internal/errors.js.map +1 -0
  454. package/dist/esm/sdk/internal/headers.d.ts +43 -0
  455. package/dist/esm/sdk/internal/headers.d.ts.map +1 -0
  456. package/dist/esm/sdk/internal/headers.js +133 -0
  457. package/dist/esm/sdk/internal/headers.js.map +1 -0
  458. package/dist/esm/sdk/internal/parse.d.ts +3 -0
  459. package/dist/esm/sdk/internal/parse.d.ts.map +1 -0
  460. package/dist/esm/sdk/internal/parse.js +3 -0
  461. package/dist/esm/sdk/internal/parse.js.map +1 -0
  462. package/dist/esm/sdk/internal/qs/formats.d.ts +7 -0
  463. package/dist/esm/sdk/internal/qs/formats.d.ts.map +1 -0
  464. package/dist/esm/sdk/internal/qs/formats.js +9 -0
  465. package/dist/esm/sdk/internal/qs/formats.js.map +1 -0
  466. package/dist/esm/sdk/internal/qs/index.d.ts +10 -0
  467. package/dist/esm/sdk/internal/qs/index.d.ts.map +1 -0
  468. package/dist/esm/sdk/internal/qs/index.js +10 -0
  469. package/dist/esm/sdk/internal/qs/index.js.map +1 -0
  470. package/dist/esm/sdk/internal/qs/stringify.d.ts +3 -0
  471. package/dist/esm/sdk/internal/qs/stringify.d.ts.map +1 -0
  472. package/dist/esm/sdk/internal/qs/stringify.js +275 -0
  473. package/dist/esm/sdk/internal/qs/stringify.js.map +1 -0
  474. package/dist/esm/sdk/internal/qs/types.d.ts +57 -0
  475. package/dist/esm/sdk/internal/qs/types.d.ts.map +1 -0
  476. package/dist/esm/sdk/internal/qs/types.js +2 -0
  477. package/dist/esm/sdk/internal/qs/types.js.map +1 -0
  478. package/dist/esm/sdk/internal/qs/utils.d.ts +15 -0
  479. package/dist/esm/sdk/internal/qs/utils.d.ts.map +1 -0
  480. package/dist/esm/sdk/internal/qs/utils.js +217 -0
  481. package/dist/esm/sdk/internal/qs/utils.js.map +1 -0
  482. package/dist/esm/sdk/internal/request-options.d.ts +33 -0
  483. package/dist/esm/sdk/internal/request-options.d.ts.map +1 -0
  484. package/dist/esm/sdk/internal/request-options.js +11 -0
  485. package/dist/esm/sdk/internal/request-options.js.map +1 -0
  486. package/dist/esm/sdk/internal/shim-types.d.ts +17 -0
  487. package/dist/esm/sdk/internal/shim-types.d.ts.map +1 -0
  488. package/dist/esm/sdk/internal/shim-types.js +3 -0
  489. package/dist/esm/sdk/internal/shim-types.js.map +1 -0
  490. package/dist/esm/sdk/internal/shims.d.ts +26 -0
  491. package/dist/esm/sdk/internal/shims.d.ts.map +1 -0
  492. package/dist/esm/sdk/internal/shims.js +85 -0
  493. package/dist/esm/sdk/internal/shims.js.map +1 -0
  494. package/dist/esm/sdk/internal/to-file.d.ts +45 -0
  495. package/dist/esm/sdk/internal/to-file.d.ts.map +1 -0
  496. package/dist/esm/sdk/internal/to-file.js +88 -0
  497. package/dist/esm/sdk/internal/to-file.js.map +1 -0
  498. package/dist/esm/sdk/internal/types.d.ts +63 -0
  499. package/dist/esm/sdk/internal/types.d.ts.map +1 -0
  500. package/dist/esm/sdk/internal/types.js +3 -0
  501. package/dist/esm/sdk/internal/types.js.map +1 -0
  502. package/dist/esm/sdk/internal/uploads.d.ts +42 -0
  503. package/dist/esm/sdk/internal/uploads.d.ts.map +1 -0
  504. package/dist/esm/sdk/internal/uploads.js +148 -0
  505. package/dist/esm/sdk/internal/uploads.js.map +1 -0
  506. package/dist/esm/sdk/internal/utils/base64.d.ts +3 -0
  507. package/dist/esm/sdk/internal/utils/base64.d.ts.map +1 -0
  508. package/dist/esm/sdk/internal/utils/base64.js +33 -0
  509. package/dist/esm/sdk/internal/utils/base64.js.map +1 -0
  510. package/dist/esm/sdk/internal/utils/body.d.ts +40 -0
  511. package/dist/esm/sdk/internal/utils/body.d.ts.map +1 -0
  512. package/dist/esm/sdk/internal/utils/body.js +140 -0
  513. package/dist/esm/sdk/internal/utils/body.js.map +1 -0
  514. package/dist/esm/sdk/internal/utils/bytes.d.ts +4 -0
  515. package/dist/esm/sdk/internal/utils/bytes.d.ts.map +1 -0
  516. package/dist/esm/sdk/internal/utils/bytes.js +26 -0
  517. package/dist/esm/sdk/internal/utils/bytes.js.map +1 -0
  518. package/dist/esm/sdk/internal/utils/env.d.ts +9 -0
  519. package/dist/esm/sdk/internal/utils/env.d.ts.map +1 -0
  520. package/dist/esm/sdk/internal/utils/env.js +18 -0
  521. package/dist/esm/sdk/internal/utils/env.js.map +1 -0
  522. package/dist/esm/sdk/internal/utils/log.d.ts +52 -0
  523. package/dist/esm/sdk/internal/utils/log.d.ts.map +1 -0
  524. package/dist/esm/sdk/internal/utils/log.js +405 -0
  525. package/dist/esm/sdk/internal/utils/log.js.map +1 -0
  526. package/dist/esm/sdk/internal/utils/path.d.ts +41 -0
  527. package/dist/esm/sdk/internal/utils/path.d.ts.map +1 -0
  528. package/dist/esm/sdk/internal/utils/path.js +108 -0
  529. package/dist/esm/sdk/internal/utils/path.js.map +1 -0
  530. package/dist/esm/sdk/internal/utils/query-string.d.ts +21 -0
  531. package/dist/esm/sdk/internal/utils/query-string.d.ts.map +1 -0
  532. package/dist/esm/sdk/internal/utils/query-string.js +125 -0
  533. package/dist/esm/sdk/internal/utils/query-string.js.map +1 -0
  534. package/dist/esm/sdk/internal/utils/query.d.ts +2 -0
  535. package/dist/esm/sdk/internal/utils/query.d.ts.map +1 -0
  536. package/dist/esm/sdk/internal/utils/query.js +9 -0
  537. package/dist/esm/sdk/internal/utils/query.js.map +1 -0
  538. package/dist/esm/sdk/internal/utils/sleep.d.ts +2 -0
  539. package/dist/esm/sdk/internal/utils/sleep.d.ts.map +1 -0
  540. package/dist/esm/sdk/internal/utils/sleep.js +3 -0
  541. package/dist/esm/sdk/internal/utils/sleep.js.map +1 -0
  542. package/dist/esm/sdk/internal/utils/uuid.d.ts +5 -0
  543. package/dist/esm/sdk/internal/utils/uuid.d.ts.map +1 -0
  544. package/dist/esm/sdk/internal/utils/uuid.js +15 -0
  545. package/dist/esm/sdk/internal/utils/uuid.js.map +1 -0
  546. package/dist/esm/sdk/internal/utils/values.d.ts +18 -0
  547. package/dist/esm/sdk/internal/utils/values.d.ts.map +1 -0
  548. package/dist/esm/sdk/internal/utils/values.js +94 -0
  549. package/dist/esm/sdk/internal/utils/values.js.map +1 -0
  550. package/dist/esm/sdk/internal/utils.d.ts +8 -0
  551. package/dist/esm/sdk/internal/utils.d.ts.map +1 -0
  552. package/dist/esm/sdk/internal/utils.js +9 -0
  553. package/dist/esm/sdk/internal/utils.js.map +1 -0
  554. package/dist/esm/sdk/pagination.d.ts +3 -0
  555. package/dist/esm/sdk/pagination.d.ts.map +1 -0
  556. package/dist/esm/sdk/pagination.js +4 -0
  557. package/dist/esm/sdk/pagination.js.map +1 -0
  558. package/dist/esm/sdk/resource.d.ts +6 -0
  559. package/dist/esm/sdk/resource.d.ts.map +1 -0
  560. package/dist/esm/sdk/resource.js +8 -0
  561. package/dist/esm/sdk/resource.js.map +1 -0
  562. package/dist/esm/sdk/resources/images/images.d.ts +202 -0
  563. package/dist/esm/sdk/resources/images/images.d.ts.map +1 -0
  564. package/dist/esm/sdk/resources/images/images.js +102 -0
  565. package/dist/esm/sdk/resources/images/images.js.map +1 -0
  566. package/dist/esm/sdk/resources/images/index.d.ts +5 -0
  567. package/dist/esm/sdk/resources/images/index.d.ts.map +1 -0
  568. package/dist/esm/sdk/resources/images/index.js +4 -0
  569. package/dist/esm/sdk/resources/images/index.js.map +1 -0
  570. package/dist/esm/sdk/resources/images/uploads.d.ts +50 -0
  571. package/dist/esm/sdk/resources/images/uploads.d.ts.map +1 -0
  572. package/dist/esm/sdk/resources/images/uploads.js +24 -0
  573. package/dist/esm/sdk/resources/images/uploads.js.map +1 -0
  574. package/dist/esm/sdk/resources/images.d.ts +2 -0
  575. package/dist/esm/sdk/resources/images.d.ts.map +1 -0
  576. package/dist/esm/sdk/resources/images.js +3 -0
  577. package/dist/esm/sdk/resources/images.js.map +1 -0
  578. package/dist/esm/sdk/resources/index.d.ts +6 -0
  579. package/dist/esm/sdk/resources/index.d.ts.map +1 -0
  580. package/dist/esm/sdk/resources/index.js +5 -0
  581. package/dist/esm/sdk/resources/index.js.map +1 -0
  582. package/dist/esm/sdk/resources/machines/autoresizing.d.ts +115 -0
  583. package/dist/esm/sdk/resources/machines/autoresizing.d.ts.map +1 -0
  584. package/dist/esm/sdk/resources/machines/autoresizing.js +42 -0
  585. package/dist/esm/sdk/resources/machines/autoresizing.js.map +1 -0
  586. package/dist/esm/sdk/resources/machines/executions/executions.d.ts +341 -0
  587. package/dist/esm/sdk/resources/machines/executions/executions.d.ts.map +1 -0
  588. package/dist/esm/sdk/resources/machines/executions/executions.js +124 -0
  589. package/dist/esm/sdk/resources/machines/executions/executions.js.map +1 -0
  590. package/dist/esm/sdk/resources/machines/executions/index.d.ts +5 -0
  591. package/dist/esm/sdk/resources/machines/executions/index.d.ts.map +1 -0
  592. package/dist/esm/sdk/resources/machines/executions/index.js +4 -0
  593. package/dist/esm/sdk/resources/machines/executions/index.js.map +1 -0
  594. package/dist/esm/sdk/resources/machines/executions/logs.d.ts +103 -0
  595. package/dist/esm/sdk/resources/machines/executions/logs.d.ts.map +1 -0
  596. package/dist/esm/sdk/resources/machines/executions/logs.js +44 -0
  597. package/dist/esm/sdk/resources/machines/executions/logs.js.map +1 -0
  598. package/dist/esm/sdk/resources/machines/executions.d.ts +2 -0
  599. package/dist/esm/sdk/resources/machines/executions.d.ts.map +1 -0
  600. package/dist/esm/sdk/resources/machines/executions.js +3 -0
  601. package/dist/esm/sdk/resources/machines/executions.js.map +1 -0
  602. package/dist/esm/sdk/resources/machines/index.d.ts +9 -0
  603. package/dist/esm/sdk/resources/machines/index.d.ts.map +1 -0
  604. package/dist/esm/sdk/resources/machines/index.js +6 -0
  605. package/dist/esm/sdk/resources/machines/index.js.map +1 -0
  606. package/dist/esm/sdk/resources/machines/machines.d.ts +496 -0
  607. package/dist/esm/sdk/resources/machines/machines.d.ts.map +1 -0
  608. package/dist/esm/sdk/resources/machines/machines.js +183 -0
  609. package/dist/esm/sdk/resources/machines/machines.js.map +1 -0
  610. package/dist/esm/sdk/resources/machines/ssh.d.ts +175 -0
  611. package/dist/esm/sdk/resources/machines/ssh.d.ts.map +1 -0
  612. package/dist/esm/sdk/resources/machines/ssh.js +85 -0
  613. package/dist/esm/sdk/resources/machines/ssh.js.map +1 -0
  614. package/dist/esm/sdk/resources/machines.d.ts +2 -0
  615. package/dist/esm/sdk/resources/machines.d.ts.map +1 -0
  616. package/dist/esm/sdk/resources/machines.js +3 -0
  617. package/dist/esm/sdk/resources/machines.js.map +1 -0
  618. package/dist/esm/sdk/resources/organization/autoresizing.d.ts +86 -0
  619. package/dist/esm/sdk/resources/organization/autoresizing.d.ts.map +1 -0
  620. package/dist/esm/sdk/resources/organization/autoresizing.js +34 -0
  621. package/dist/esm/sdk/resources/organization/autoresizing.js.map +1 -0
  622. package/dist/esm/sdk/resources/organization/index.d.ts +4 -0
  623. package/dist/esm/sdk/resources/organization/index.d.ts.map +1 -0
  624. package/dist/esm/sdk/resources/organization/index.js +4 -0
  625. package/dist/esm/sdk/resources/organization/index.js.map +1 -0
  626. package/dist/esm/sdk/resources/organization/organization.d.ts +10 -0
  627. package/dist/esm/sdk/resources/organization/organization.d.ts.map +1 -0
  628. package/dist/esm/sdk/resources/organization/organization.js +9 -0
  629. package/dist/esm/sdk/resources/organization/organization.js.map +1 -0
  630. package/dist/esm/sdk/resources/organization.d.ts +2 -0
  631. package/dist/esm/sdk/resources/organization.d.ts.map +1 -0
  632. package/dist/esm/sdk/resources/organization.js +3 -0
  633. package/dist/esm/sdk/resources/organization.js.map +1 -0
  634. package/dist/esm/sdk/resources.d.ts +3 -0
  635. package/dist/esm/sdk/resources.d.ts.map +1 -0
  636. package/dist/esm/sdk/resources.js +3 -0
  637. package/dist/esm/sdk/resources.js.map +1 -0
  638. package/dist/esm/sdk/uploads.d.ts +2 -0
  639. package/dist/esm/sdk/uploads.d.ts.map +1 -0
  640. package/dist/esm/sdk/uploads.js +3 -0
  641. package/dist/esm/sdk/uploads.js.map +1 -0
  642. package/dist/esm/sdk/version.d.ts +2 -0
  643. package/dist/esm/sdk/version.d.ts.map +1 -0
  644. package/dist/esm/sdk/version.js +3 -0
  645. package/dist/esm/sdk/version.js.map +1 -0
  646. package/man/dedalus-completion.1 +35 -0
  647. package/man/dedalus-images-create.1 +126 -0
  648. package/man/dedalus-images-delete.1 +102 -0
  649. package/man/dedalus-images-import.1 +34 -0
  650. package/man/dedalus-images-list.1 +105 -0
  651. package/man/dedalus-images-retrieve.1 +102 -0
  652. package/man/dedalus-images-update.1 +108 -0
  653. package/man/dedalus-images-uploads-create.1 +112 -0
  654. package/man/dedalus-login.1 +47 -0
  655. package/man/dedalus-logout.1 +28 -0
  656. package/man/dedalus-machines-autoresizing-retrieve.1 +104 -0
  657. package/man/dedalus-machines-autoresizing-update.1 +116 -0
  658. package/man/dedalus-machines-create.1 +119 -0
  659. package/man/dedalus-machines-delete.1 +107 -0
  660. package/man/dedalus-machines-executions-create.1 +120 -0
  661. package/man/dedalus-machines-executions-delete.1 +108 -0
  662. package/man/dedalus-machines-executions-events.1 +118 -0
  663. package/man/dedalus-machines-executions-list.1 +114 -0
  664. package/man/dedalus-machines-executions-logs-create-token.1 +108 -0
  665. package/man/dedalus-machines-executions-logs-retrieve.1 +108 -0
  666. package/man/dedalus-machines-executions-output.1 +108 -0
  667. package/man/dedalus-machines-executions-retrieve.1 +108 -0
  668. package/man/dedalus-machines-list.1 +108 -0
  669. package/man/dedalus-machines-reboot.1 +107 -0
  670. package/man/dedalus-machines-resize.1 +110 -0
  671. package/man/dedalus-machines-retrieve.1 +104 -0
  672. package/man/dedalus-machines-sleep.1 +104 -0
  673. package/man/dedalus-machines-ssh-create.1 +108 -0
  674. package/man/dedalus-machines-ssh-delete.1 +108 -0
  675. package/man/dedalus-machines-ssh-list.1 +114 -0
  676. package/man/dedalus-machines-ssh-retrieve.1 +108 -0
  677. package/man/dedalus-machines-update.1 +110 -0
  678. package/man/dedalus-machines-wake.1 +104 -0
  679. package/man/dedalus-organization-autoresizing-retrieve.1 +99 -0
  680. package/man/dedalus-organization-autoresizing-update.1 +111 -0
  681. package/man/dedalus-uninstall.1 +23 -0
  682. package/man/dedalus-upgrade.1 +32 -0
  683. package/man/dedalus.1 +222 -0
  684. package/package.json +88 -4
@@ -0,0 +1,630 @@
1
+ "use strict";
2
+ // File generated from our OpenAPI spec by Scalar. See README.md for details.
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.clearAll = exports.deleteProfile = exports.takeWarnings = exports.warn = exports.refreshProfile = exports.writeProfile = exports.readProfile = exports.storeDescription = exports.profileKey = exports.deleteStore = exports.writeStore = exports.readStore = exports.storePath = void 0;
5
+ const node_crypto_1 = require("node:crypto");
6
+ const node_fs_1 = require("node:fs");
7
+ const node_os_1 = require("node:os");
8
+ const node_path_1 = require("node:path");
9
+ const keychain_1 = require("./keychain");
10
+ const STORE_VERSION = 1;
11
+ const EMPTY_STORE = { version: STORE_VERSION, profiles: {} };
12
+ // A generated CLI can be invoked by two shells at once. The short synchronous critical sections
13
+ // below need a cross-process lock, not an in-memory mutex that only coordinates one invocation.
14
+ const lockPause = new Int32Array(new SharedArrayBuffer(4));
15
+ const STORE_LOCK_STALE_MS = 30_000;
16
+ // Consecutive filesystem errors while taking the lock before the attempt is abandoned. A lost race
17
+ // produces one; a path the filesystem will not answer for produces them without end.
18
+ const STORE_LOCK_MAX_ERRORS = 100;
19
+ /**
20
+ * The store file path.
21
+ *
22
+ * The environment override wins outright so a credential can be pointed at a scratch file (a test
23
+ * harness, a container with no writable home) without touching the real one.
24
+ */
25
+ const storePath = (location) => {
26
+ const override = process.env[location.storeEnv];
27
+ if (override)
28
+ return override;
29
+ return (0, node_path_1.join)(stateDirectory(), location.storeName, 'credentials.json');
30
+ };
31
+ exports.storePath = storePath;
32
+ // Per-user state, not config: the file holds tokens the CLI rewrites on its own (a refreshed access
33
+ // token) rather than settings a user edits, which is exactly what XDG_STATE_HOME is for.
34
+ const stateDirectory = () => {
35
+ if (process.platform === 'win32')
36
+ return process.env['APPDATA'] || (0, node_path_1.join)((0, node_os_1.homedir)(), 'AppData', 'Roaming');
37
+ return process.env['XDG_STATE_HOME'] || (0, node_path_1.join)((0, node_os_1.homedir)(), '.local', 'state');
38
+ };
39
+ /**
40
+ * Reads the whole store, treating anything unreadable as empty.
41
+ *
42
+ * A missing file is the normal first-run case, and a corrupt one must not wedge every command in
43
+ * the CLI: the worst outcome of ignoring it is one `login` the user has to run again, whereas
44
+ * throwing would take out commands that were never going to need a stored credential at all.
45
+ */
46
+ const readStore = (location) => {
47
+ let text;
48
+ try {
49
+ text = (0, node_fs_1.readFileSync)((0, exports.storePath)(location), 'utf8');
50
+ }
51
+ catch {
52
+ return EMPTY_STORE;
53
+ }
54
+ try {
55
+ const parsed = JSON.parse(text);
56
+ if (!parsed || typeof parsed !== 'object')
57
+ return EMPTY_STORE;
58
+ const profiles = parsed.profiles;
59
+ if (!profiles || typeof profiles !== 'object')
60
+ return EMPTY_STORE;
61
+ return { version: STORE_VERSION, profiles: profiles };
62
+ }
63
+ catch {
64
+ return EMPTY_STORE;
65
+ }
66
+ };
67
+ exports.readStore = readStore;
68
+ /**
69
+ * Replaces the store file.
70
+ *
71
+ * Written to a sibling temp file and renamed so an interrupted write cannot leave a truncated store
72
+ * behind; the rename carries the temp file's narrow permissions onto the final path.
73
+ */
74
+ const writeStore = (location, store) => {
75
+ assertLockHeld(location);
76
+ const path = (0, exports.storePath)(location);
77
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true, mode: 0o700 });
78
+ // `wx` and a random suffix together, not `writeFileSync` with a mode. That call applies the mode
79
+ // only when it creates the file and follows a symlink when it does not, so a predictable temp name
80
+ // — the pid was the only variable — let anyone who could write this directory pre-create the path
81
+ // and be handed the credentials, or leave it `0644` and read them in the window before a chmod.
82
+ // Creating it exclusively fails instead, and the descriptor is what is written, so there is no
83
+ // second lookup of the name between the check and the write.
84
+ const temp = path + '.' + (0, node_crypto_1.randomBytes)(8).toString('hex') + '.tmp';
85
+ const descriptor = (0, node_fs_1.openSync)(temp, 'wx', 0o600);
86
+ try {
87
+ (0, node_fs_1.writeFileSync)(descriptor, JSON.stringify(store, null, 2) + '\n');
88
+ }
89
+ finally {
90
+ (0, node_fs_1.closeSync)(descriptor);
91
+ }
92
+ try {
93
+ (0, node_fs_1.renameSync)(temp, path);
94
+ }
95
+ catch (error) {
96
+ // The rename is what publishes the store; a temp file left behind after it failed is a copy of
97
+ // the credentials under a name nothing will ever read again.
98
+ (0, node_fs_1.rmSync)(temp, { force: true });
99
+ throw error;
100
+ }
101
+ };
102
+ exports.writeStore = writeStore;
103
+ /** Deletes the store file entirely. */
104
+ const deleteStore = (location) => {
105
+ assertLockHeld(location);
106
+ (0, node_fs_1.rmSync)((0, exports.storePath)(location), { force: true });
107
+ };
108
+ exports.deleteStore = deleteStore;
109
+ /**
110
+ * Serializes index rewrites across CLI processes.
111
+ *
112
+ * Token acquisition happens before the lock. The lock spans the keychain operation and its index
113
+ * update together, so a concurrent logout cannot clear a newly written secret while it still sees
114
+ * the old index entry. Long-running keychain helpers renew the lock lease before each command.
115
+ */
116
+ const withStoreLock = (location, operation) => {
117
+ const path = (0, exports.storePath)(location);
118
+ const lockPath = path + '.lock';
119
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true, mode: 0o700 });
120
+ // Written into the lock file and checked back on release. A lock this process was too slow to
121
+ // renew can be reclaimed as stale by another one, and after that it is no longer this process's
122
+ // to delete: unlinking it on the way out would drop the new holder's lock and leave two processes
123
+ // rewriting the store at once, where `writeStore` replaces the file wholesale and one of the two
124
+ // profiles is simply lost.
125
+ const token = (0, node_crypto_1.randomBytes)(16).toString('hex');
126
+ let descriptor;
127
+ let consecutiveErrors = 0;
128
+ while (descriptor === undefined) {
129
+ try {
130
+ descriptor = (0, node_fs_1.openSync)(lockPath, 'wx', 0o600);
131
+ try {
132
+ (0, node_fs_1.writeFileSync)(descriptor, token);
133
+ }
134
+ catch (error) {
135
+ // An unstamped lock is worse than none: this process is about to throw, its release will
136
+ // never run, and every other CLI would wait out the full stale window on a file nobody
137
+ // holds. Take it back out first.
138
+ (0, node_fs_1.closeSync)(descriptor);
139
+ // And give the handle back, so the loop guard still reads "not acquired". Leaving it set
140
+ // would let an error the outer catch decided to swallow fall out of the loop and run the
141
+ // operation with no lock at all, then close this handle a second time on the way out.
142
+ descriptor = undefined;
143
+ (0, node_fs_1.rmSync)(lockPath, { force: true });
144
+ throw error;
145
+ }
146
+ }
147
+ catch (error) {
148
+ if (!(error && typeof error === 'object' && 'code' in error && error.code === 'EEXIST'))
149
+ throw error;
150
+ try {
151
+ const stale = (0, node_fs_1.statSync)(lockPath);
152
+ if (Date.now() - stale.mtimeMs > STORE_LOCK_STALE_MS) {
153
+ // Moved aside rather than unlinked outright, and only then removed. An unconditional
154
+ // `rmSync` deletes whatever is at the path *now*, which after a pause between the stat
155
+ // and the call is a fresh lock a waiter has just taken — two processes in the critical
156
+ // section. `renameSync` moves one specific directory entry, so re-checking the inode and
157
+ // mtime afterwards establishes that what moved is the file that was found stale; anything
158
+ // else is put straight back.
159
+ const salvage = lockPath + '.' + token;
160
+ (0, node_fs_1.renameSync)(lockPath, salvage);
161
+ const moved = (0, node_fs_1.statSync)(salvage);
162
+ if (moved.ino === stale.ino && moved.mtimeMs === stale.mtimeMs)
163
+ (0, node_fs_1.rmSync)(salvage, { force: true });
164
+ else
165
+ (0, node_fs_1.renameSync)(salvage, lockPath);
166
+ }
167
+ consecutiveErrors = 0;
168
+ }
169
+ catch {
170
+ // Either the lock was released or reclaimed between the open and the stat — the benign race,
171
+ // which the next attempt wins — or the filesystem will not answer for this path at all, which
172
+ // retrying never fixes. Only a run of them means the second, so only a run gives up.
173
+ consecutiveErrors += 1;
174
+ if (consecutiveErrors > STORE_LOCK_MAX_ERRORS) {
175
+ throw new Error('Could not take the credential store lock at ' + lockPath + '.');
176
+ }
177
+ }
178
+ // Every path waits, including the two that used to loop straight back to `openSync`. Without
179
+ // this a lock that cannot be stat'd or unlinked spins open+stat at full tilt with nothing on
180
+ // screen — usually for a token refresh the user never asked to watch.
181
+ Atomics.wait(lockPause, 0, 0, 10);
182
+ }
183
+ }
184
+ const previous = heldLock;
185
+ heldLock = { path: lockPath, token };
186
+ try {
187
+ return operation();
188
+ }
189
+ finally {
190
+ heldLock = previous;
191
+ (0, node_fs_1.closeSync)(descriptor);
192
+ try {
193
+ // Only this acquisition's own lock comes off; see `token` above.
194
+ if ((0, node_fs_1.readFileSync)(lockPath, 'utf8') === token)
195
+ (0, node_fs_1.rmSync)(lockPath, { force: true });
196
+ }
197
+ catch {
198
+ // Already gone, which is the outcome this wanted anyway.
199
+ }
200
+ }
201
+ };
202
+ /** The lock this process currently holds, for {@link assertLockHeld} to check a write against. */
203
+ let heldLock;
204
+ /**
205
+ * Refuses a store rewrite this process no longer holds the lock for.
206
+ *
207
+ * Taking the lock is not the same as still having it. A holder stopped long enough to pass
208
+ * `STORE_LOCK_STALE_MS` — a suspended laptop, a SIGSTOP, a filesystem that blocked — has its lock
209
+ * reclaimed and another process completes a whole read-modify-write; if the first then resumes and
210
+ * writes the snapshot it read beforehand, the second's profile is gone, and under the keychain
211
+ * backend its index entry was the only record of a live keyring item. `writeStore` replaces the
212
+ * file wholesale, so there is no merge to save it. Checking the stamp again here is what makes the
213
+ * window survivable: the late writer fails loudly instead of quietly winning.
214
+ */
215
+ const assertLockHeld = (location) => {
216
+ const lock = heldLock;
217
+ if (!lock || lock.path !== (0, exports.storePath)(location) + '.lock')
218
+ return;
219
+ let stamp;
220
+ try {
221
+ stamp = (0, node_fs_1.readFileSync)(lock.path, 'utf8');
222
+ }
223
+ catch {
224
+ stamp = '';
225
+ }
226
+ if (stamp !== lock.token) {
227
+ throw new Error('The credential store changed underneath this command. Nothing was written; run it again.');
228
+ }
229
+ };
230
+ /** Renews a held lock before a keychain helper can spend up to ten seconds waiting for the OS. */
231
+ const refreshStoreLock = (location) => {
232
+ const now = new Date();
233
+ try {
234
+ (0, node_fs_1.utimesSync)((0, exports.storePath)(location) + '.lock', now, now);
235
+ }
236
+ catch {
237
+ // The lock holder may already be unwinding after an interrupted filesystem operation.
238
+ }
239
+ };
240
+ /**
241
+ * The key one base URL's credentials are filed under.
242
+ *
243
+ * Keying on the URL is what keeps a sandbox token from being sent to production: a request with a
244
+ * different `--base-url` looks up a different profile and simply finds nothing.
245
+ */
246
+ const profileKey = (baseUrl) => {
247
+ const trimmed = baseUrl.replace(/\/+$/u, '');
248
+ if (!trimmed)
249
+ return 'default';
250
+ let url;
251
+ try {
252
+ url = new URL(trimmed);
253
+ }
254
+ catch {
255
+ // Not a URL this can take apart — an unusual `--base-url`, or the `default` case above. Keyed
256
+ // verbatim, which still files it consistently; it simply gets none of the normalization below.
257
+ return trimmed;
258
+ }
259
+ // Credentials never belong in the key. A `--base-url https://user:pass@host` would otherwise put
260
+ // them in the keychain account, which the Linux helper passes on its command line for any other
261
+ // process to read — the one thing this whole module is arranged to prevent.
262
+ url.username = '';
263
+ url.password = '';
264
+ // `URL` lower-cases the host and drops a port that is the scheme's default, so two spellings of
265
+ // one host cannot end up as two profiles — a `login` under one and a request under the other
266
+ // would look, to the user, like the sign-in simply had not taken.
267
+ url.hash = '';
268
+ url.search = '';
269
+ return url.toString().replace(/\/+$/u, '');
270
+ };
271
+ exports.profileKey = profileKey;
272
+ /**
273
+ * Whether this run may use the operating system's store at all.
274
+ *
275
+ * Nothing is probed here. Under `auto` the real operation decides: a keychain write that fails
276
+ * falls back to the file, and a keychain read that finds nothing falls through to it. That is both
277
+ * cheaper than a probe — which costs three subprocess spawns on every command — and more honest,
278
+ * since the thing that has to work is the operation itself, not a proxy for it.
279
+ */
280
+ const mayUseKeychain = (location) => location.backend !== 'file';
281
+ /** Human-readable name for where a credential landed, for `login` and `logout` to print. */
282
+ const storeDescription = (location, backend) => backend === 'keychain'
283
+ ? 'your ' + osStoreName() + ' (the index of signed-in hosts is at ' + (0, exports.storePath)(location) + ')'
284
+ : (0, exports.storePath)(location);
285
+ exports.storeDescription = storeDescription;
286
+ const osStoreName = () => {
287
+ if (process.platform === 'win32')
288
+ return 'Windows Credential Manager';
289
+ if (process.platform === 'darwin')
290
+ return 'macOS Keychain';
291
+ return 'system keyring';
292
+ };
293
+ /**
294
+ * One stored profile.
295
+ *
296
+ * When the secret is in the OS store the file holds only the *index* — which base URLs are signed
297
+ * in, and for each one which store has it. That split is what makes `logout --all` possible: a
298
+ * keychain offers no portable way to list what is in it, so the set of profiles has to be recorded
299
+ * somewhere, and a list of hostnames is not a secret.
300
+ *
301
+ * The index also decides where to look, rather than the OS store being tried first and the file
302
+ * second. Trying in turn cannot tell an unreachable helper from an empty one, so it would answer
303
+ * with a file copy while a different, live secret sat in the OS store.
304
+ */
305
+ const readProfile = (location, key) => readProfileResult(location, key).profile;
306
+ exports.readProfile = readProfile;
307
+ /**
308
+ * A profile read, and whether the store actually answered.
309
+ *
310
+ * `unreadable` says the marker points at the OS store and the helper never answered, so the empty
311
+ * profile beside it is the absence of an answer rather than the answer "nothing is stored". A read
312
+ * can treat the two alike — both send the user to `login` — but a write cannot: merging an update
313
+ * into an empty profile and storing the result replaces whatever was really under that key, so a
314
+ * keyring that is momentarily unreachable would cost the user every *other* credential filed there.
315
+ */
316
+ const readProfileResult = (location, key) => {
317
+ const entry = indexEntry(location, key);
318
+ if (entry.backend !== 'keychain') {
319
+ // `keychain` exists to keep secrets out of a file, so one an earlier build left there is not a
320
+ // credential this may send — an organisation that chose the setting to forbid secrets at rest
321
+ // would otherwise keep authenticating from exactly the file it banned. It is left where it is
322
+ // rather than deleted, because a read is not the place to destroy anything; the next `login`
323
+ // replaces it.
324
+ return { profile: location.backend === 'keychain' ? {} : entry, unreadable: false };
325
+ }
326
+ // Nothing falls through to the file: the index says the secret is not there. A helper that cannot
327
+ // run reads as "no credential", which sends the user to `login` rather than to a stale one — but
328
+ // it is reported alongside, so a *write* can refuse rather than overwrite what it could not see.
329
+ if (!mayUseKeychain(location)) {
330
+ // The configured backend is the file while the marker still says keychain. Replacing the entry
331
+ // is the intended migration here, not a loss, so this is not unreadable.
332
+ return { profile: {}, unreadable: false };
333
+ }
334
+ const read = (0, keychain_1.keychainRead)(location.storeName, key);
335
+ if (read.secret === undefined)
336
+ return { profile: {}, unreadable: read.unavailable };
337
+ return { profile: parseSecret(read.secret), unreadable: false };
338
+ };
339
+ /**
340
+ * A keychain item's JSON, as a profile.
341
+ *
342
+ * An item this cannot parse is treated as absent, for the same reason a corrupt file is: one
343
+ * `login` again beats taking out every command that needed no credential.
344
+ */
345
+ const parseSecret = (secret) => {
346
+ try {
347
+ const parsed = JSON.parse(secret);
348
+ if (parsed && typeof parsed === 'object')
349
+ return parsed;
350
+ }
351
+ catch {
352
+ // Absent; see above.
353
+ }
354
+ return {};
355
+ };
356
+ /** The file entry for one profile: the credential itself, or the marker saying where it really is. */
357
+ const indexEntry = (location, key) => {
358
+ const { profiles } = (0, exports.readStore)(location);
359
+ // Own-property lookup only: a store carrying a key like `constructor` would otherwise resolve to
360
+ // something off `Object.prototype` that is not a profile at all.
361
+ if (!Object.prototype.hasOwnProperty.call(profiles, key))
362
+ return {};
363
+ const profile = profiles[key];
364
+ return profile && typeof profile === 'object' ? profile : {};
365
+ };
366
+ /** Merges an update into one stored profile under the transaction lock, reporting where it landed. */
367
+ const writeProfile = (location, key, update) =>
368
+ // The keychain write and the index write are one transaction. Locking only the file rewrite leaves
369
+ // a logout able to clear a newly stored secret while still reading the index entry that predates
370
+ // it, so both go inside the same lock.
371
+ withStoreLock(location, () => writeProfileLocked(location, key, update));
372
+ exports.writeProfile = writeProfile;
373
+ /**
374
+ * Merges a refreshed token into a profile that is still signed in, and does nothing when it is not.
375
+ *
376
+ * The silent refresh runs on the request path of an ordinary command: it reads the profile, spends a
377
+ * network round trip on the exchange, and only then writes the result back. A `logout` in another
378
+ * shell fits comfortably inside that window. Writing unconditionally there would file a freshly
379
+ * issued credential under a host the user has just signed out of — and under the keychain backend
380
+ * that means planting a new secret in their keyring *after* a sign-out that reported success, with
381
+ * an index entry to match. The lock serializes the two writes; this is what makes the later one
382
+ * conditional on what the earlier one left behind.
383
+ */
384
+ const refreshProfile = (location, key, update) => {
385
+ withStoreLock(location, () => {
386
+ if (!Object.prototype.hasOwnProperty.call((0, exports.readStore)(location).profiles, key))
387
+ return;
388
+ // A refresh is preparation for a command, not the command, so a store that cannot be read is a
389
+ // reason to leave the credential where it is rather than to fail what the user asked for. The
390
+ // write below would refuse anyway; catching it here keeps that refusal off the request path.
391
+ if (readProfileResult(location, key).unreadable)
392
+ return;
393
+ writeProfileLocked(location, key, update);
394
+ });
395
+ };
396
+ exports.refreshProfile = refreshProfile;
397
+ /** The body of a profile write, for the callers above that have already taken the store lock. */
398
+ const writeProfileLocked = (location, key, update) => {
399
+ const marker = indexEntry(location, key);
400
+ // Merging only after acquiring the lock preserves credentials captured by another flow while
401
+ // this flow was waiting to save its own result.
402
+ if (marker.backend === 'keychain')
403
+ refreshStoreLock(location);
404
+ const existing = readProfileResult(location, key);
405
+ // Refused rather than merged into nothing. The write below replaces the whole profile, so going
406
+ // ahead on a read that never answered would file this one credential over however many were
407
+ // already there — silently, on a keyring hiccup no louder than a daemon restart.
408
+ if (existing.unreadable) {
409
+ throw new Error('Could not read the credentials already saved for this host from your ' +
410
+ osStoreName() +
411
+ '. Nothing was written. Try again, or run logout for this host first.');
412
+ }
413
+ const profile = mergeProfile(existing.profile, update);
414
+ if (mayUseKeychain(location)) {
415
+ refreshStoreLock(location);
416
+ if ((0, keychain_1.keychainStore)(location.storeName, key, JSON.stringify(withoutMarker(profile)))) {
417
+ try {
418
+ // The file records only that this base URL is signed in and which store has it — no secret
419
+ // — so `logout --all` can find it without one ever reaching disk.
420
+ writeIndex(location, key, { backend: 'keychain' });
421
+ }
422
+ catch (error) {
423
+ // The secret reached the OS store but nothing on disk points at it, and the index is the
424
+ // only thing `logout --all` can enumerate. Take it back out rather than leaving a
425
+ // credential in the user's keyring that this CLI can neither find nor remove — but only
426
+ // when this write is what put it there. `keychainStore` overwrites, so if the store was
427
+ // already holding this key the item here is the user's working credential, and clearing it
428
+ // would destroy the very thing the failed sign-in was meant to replace.
429
+ if (marker.backend !== 'keychain') {
430
+ refreshStoreLock(location);
431
+ (0, keychain_1.keychainClear)(location.storeName, key);
432
+ }
433
+ throw error;
434
+ }
435
+ return 'keychain';
436
+ }
437
+ if (location.backend === 'keychain') {
438
+ throw new Error((0, keychain_1.keychainSupported)()
439
+ ? 'Could not save the credential to your ' + osStoreName() + '.'
440
+ : 'This system has no credential store ' + location.storeName + ' can use.');
441
+ }
442
+ }
443
+ // Whatever this key already had in the OS store comes out before the file takes over, so the two
444
+ // cannot disagree. Only the marker decides what a later read uses, so an item left behind can no
445
+ // longer shadow this one — which is why a helper that will not answer is not worth failing the
446
+ // sign-in over. It is reported instead: wedging `login` would leave the user no way forward at
447
+ // all, since `logout` would be refusing for exactly the same reason.
448
+ if (marker.backend === 'keychain' && removeSecret(location, key) !== 'removed') {
449
+ (0, exports.warn)('Your ' + osStoreName() + ' may still hold an older credential for this host; remove it there if so.');
450
+ }
451
+ writeIndex(location, key, { ...withoutMarker(profile), backend: 'file' });
452
+ return 'file';
453
+ };
454
+ const warnings = [];
455
+ /**
456
+ * Notes something the user should know without failing what they asked for.
457
+ *
458
+ * Collected rather than printed. The same store code runs under `login` and under the silent token
459
+ * refresh that precedes an ordinary command, and writing to standard error there would interleave
460
+ * prose with the JSON document `--format-error json` puts on that same stream. Only `login` and
461
+ * `logout` drain this, so a warning reaches the one place a user is already reading sentences.
462
+ */
463
+ const warn = (message) => {
464
+ if (!warnings.includes(message))
465
+ warnings.push(message);
466
+ };
467
+ exports.warn = warn;
468
+ /** Takes the warnings collected so far, leaving none behind. */
469
+ const takeWarnings = () => warnings.splice(0, warnings.length);
470
+ exports.takeWarnings = takeWarnings;
471
+ /**
472
+ * Takes one secret out of the OS store, reporting what could be established.
473
+ *
474
+ * `keychainClear` answers `false` both for an item that is not there and for a helper that cannot
475
+ * run, so its word alone is never enough. A lookup afterwards settles the only question that
476
+ * matters: `kept` means the secret is still retrievable, and so removing the index entry would be a
477
+ * lie. Anything else means this CLI can no longer get at it, which is what being signed out is —
478
+ * `unconfirmed` says so while admitting the store may still hold something, because a helper that
479
+ * could not run cannot prove otherwise.
480
+ *
481
+ * Nothing here throws. Earlier versions failed the command when a clear did not succeed, which
482
+ * wedged `login` and `logout` together for anyone whose item had simply been removed by hand or
483
+ * whose helper had gone: both refused, and nothing the CLI offered could ever clear the entry.
484
+ */
485
+ const removeSecret = (location, key) => {
486
+ refreshStoreLock(location);
487
+ if ((0, keychain_1.keychainClear)(location.storeName, key))
488
+ return 'removed';
489
+ refreshStoreLock(location);
490
+ return (0, keychain_1.keychainLookup)(location.storeName, key) === undefined ? 'unconfirmed' : 'kept';
491
+ };
492
+ /** The profile without the index's own bookkeeping, which is not part of the secret. */
493
+ const withoutMarker = (profile) => ({
494
+ ...(profile.credentials ? { credentials: profile.credentials } : {}),
495
+ ...(profile.oauth ? { oauth: profile.oauth } : {}),
496
+ });
497
+ /**
498
+ * Removes one stored profile, reporting what became of it and what it held.
499
+ *
500
+ * A secret the OS store will not give up fails the whole removal rather than being written off.
501
+ * `readProfile` looks the OS store up by key and never through the index, so dropping the index
502
+ * entry while the secret stays behind would leave a credential that still authenticates every
503
+ * command — and that `logout --all`, which enumerates the index, could no longer even find.
504
+ *
505
+ * `held` is the removed profile's content, read before its secret goes so `logout` can revoke its
506
+ * tokens afterwards; it is empty when nothing was removed or `readHeld` is false (see
507
+ * {@link heldProfile}).
508
+ */
509
+ const deleteProfile = (location, key, readHeld) => withStoreLock(location, () => {
510
+ const entry = indexEntry(location, key);
511
+ const held = heldProfile(location, key, readHeld);
512
+ if (entry.backend === 'keychain') {
513
+ const outcome = removeSecret(location, key);
514
+ if (outcome === 'kept') {
515
+ // The one case worth refusing: the secret answered a lookup after the clear, so it is still
516
+ // there and still usable. Dropping the entry would report a sign-out over a live credential
517
+ // and lose the only record of where it is.
518
+ throw new Error('Could not remove the credential from your ' + osStoreName() + '.');
519
+ }
520
+ if (outcome === 'unconfirmed') {
521
+ (0, exports.warn)('Your ' + osStoreName() + ' may still hold a credential for this host; remove it there if so.');
522
+ }
523
+ }
524
+ const store = (0, exports.readStore)(location);
525
+ if (!Object.prototype.hasOwnProperty.call(store.profiles, key)) {
526
+ return { outcome: 'absent', held: { profile: {}, unreadable: false } };
527
+ }
528
+ const profiles = { ...store.profiles };
529
+ delete profiles[key];
530
+ (0, exports.writeStore)(location, { version: STORE_VERSION, profiles });
531
+ return { outcome: 'removed', held };
532
+ });
533
+ exports.deleteProfile = deleteProfile;
534
+ /**
535
+ * What a profile holds, read for `logout` inside the lock that is about to remove it.
536
+ *
537
+ * `logout` revokes what it removes, and once the secret is gone there is nothing left to read it
538
+ * from. Reading under the removal's own lock, rather than before taking it, means a sign-in that
539
+ * landed in between is the credential revoked — not the one it had already replaced.
540
+ *
541
+ * It reads wherever the index says the secret is, whatever the configured backend — unlike
542
+ * `readProfileResult`, which will not *send* a file-held secret under `keychain` or look in the
543
+ * OS store under `file`. Revoking is the opposite of using a credential: a token left in the file
544
+ * by an earlier build is still live at its provider, and this removal is the last chance to end it.
545
+ *
546
+ * `readHeld` is false for a CLI with no OAuth sign-in: nothing it stores can be revoked, so it
547
+ * skips the read, which under the keychain backend is one more helper spawn per profile.
548
+ */
549
+ const heldProfile = (location, key, readHeld) => {
550
+ if (!readHeld)
551
+ return { profile: {}, unreadable: false };
552
+ const entry = indexEntry(location, key);
553
+ if (entry.backend !== 'keychain')
554
+ return { profile: withoutMarker(entry), unreadable: false };
555
+ refreshStoreLock(location);
556
+ const read = (0, keychain_1.keychainRead)(location.storeName, key);
557
+ const profile = read.secret === undefined ? {} : withoutMarker(parseSecret(read.secret));
558
+ // The index says the OS store holds a secret here, so an empty answer is not "nothing to revoke":
559
+ // the helper would not answer (a helper that fails looks the same as one with no such item) or
560
+ // the item went by hand. Either way a token may still be live, and `logout` has to say so.
561
+ return { profile, unreadable: Object.keys(profile).length === 0 };
562
+ };
563
+ /**
564
+ * Forgets everything, in both places, returning what was removed so `logout --all` can revoke it.
565
+ *
566
+ * The keychain items go one by one, taken from the index, before the index itself does: deleting the
567
+ * file first would strand the secrets in the OS store with nothing left pointing at them — invisible
568
+ * to this CLI and never cleaned up.
569
+ *
570
+ * A secret the OS store would not give up is reported through `failure` rather than thrown, so the
571
+ * profiles that *were* removed still reach revocation before the command fails.
572
+ */
573
+ const clearAll = (location, readHeld) => {
574
+ const { kept, removed } = withStoreLock(location, () => {
575
+ // The keychain clears and the index rewrite share one lock with login. It can hold the lock for
576
+ // several helper calls, but that is preferable to acknowledging a logout that strands a secret.
577
+ const entries = Object.entries((0, exports.readStore)(location).profiles);
578
+ const outcomes = entries.map(([key, profile]) => [
579
+ key,
580
+ heldProfile(location, key, readHeld),
581
+ profile?.backend === 'keychain' ? removeSecret(location, key) : 'removed',
582
+ ]);
583
+ const kept = outcomes.filter(([, , outcome]) => outcome === 'kept').map(([key]) => key);
584
+ if (outcomes.some(([, , outcome]) => outcome === 'unconfirmed')) {
585
+ (0, exports.warn)('Your ' + osStoreName() + ' may still hold credentials this could not remove.');
586
+ }
587
+ const remaining = entries.filter(([key]) => kept.includes(key));
588
+ if (remaining.length === 0)
589
+ (0, exports.deleteStore)(location);
590
+ else
591
+ (0, exports.writeStore)(location, { version: STORE_VERSION, profiles: Object.fromEntries(remaining) });
592
+ const removed = outcomes
593
+ .filter(([, , outcome]) => outcome !== 'kept')
594
+ .map(([key, held]) => ({ key, held }));
595
+ return { kept, removed };
596
+ });
597
+ if (kept.length === 0)
598
+ return { removed };
599
+ // The index entry is the only record of which base URLs have a secret in the OS store, so one
600
+ // still holding a retrievable secret keeps its entry: dropping it would strand the credential
601
+ // there — still live, and invisible to this CLI for good.
602
+ return {
603
+ removed,
604
+ failure: 'Could not remove every credential from your ' +
605
+ osStoreName() +
606
+ '; ' +
607
+ String(kept.length) +
608
+ ' still there.',
609
+ };
610
+ };
611
+ exports.clearAll = clearAll;
612
+ /** Writes one profile into the on-disk store while the caller holds the credential-store lock. */
613
+ const writeIndex = (location, key, profile) => {
614
+ const store = (0, exports.readStore)(location);
615
+ (0, exports.writeStore)(location, {
616
+ version: STORE_VERSION,
617
+ profiles: { ...store.profiles, [key]: profile },
618
+ });
619
+ };
620
+ // Empty maps are dropped rather than written as `{}`: a store a user opens should show what is
621
+ // actually saved, and a token-only sign-in has no OAuth metadata to speak of.
622
+ const mergeProfile = (existing, update) => {
623
+ const credentials = { ...(existing.credentials ?? {}), ...(update.credentials ?? {}) };
624
+ const oauth = { ...(existing.oauth ?? {}), ...(update.oauth ?? {}) };
625
+ return {
626
+ ...(Object.keys(credentials).length > 0 ? { credentials } : {}),
627
+ ...(Object.keys(oauth).length > 0 ? { oauth } : {}),
628
+ };
629
+ };
630
+ //# sourceMappingURL=credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../../src/cli/credentials.ts"],"names":[],"mappings":"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"}