@vendure/cloud 0.4.0 → 0.5.0-dev.20261016123507.ge07a06e

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 (522) hide show
  1. package/README.md +43 -10
  2. package/dist/cli/arguments.d.ts.map +1 -1
  3. package/dist/cli/arguments.js +9 -31
  4. package/dist/cli/arguments.js.map +1 -1
  5. package/dist/cli/command.d.ts.map +1 -1
  6. package/dist/cli/command.js +13 -30
  7. package/dist/cli/command.js.map +1 -1
  8. package/dist/cli/commands/access/access.d.ts +5 -0
  9. package/dist/cli/commands/access/access.d.ts.map +1 -0
  10. package/dist/cli/commands/access/access.js +73 -0
  11. package/dist/cli/commands/access/access.js.map +1 -0
  12. package/dist/cli/commands/access/index.d.ts +2 -0
  13. package/dist/cli/commands/access/index.d.ts.map +1 -0
  14. package/dist/cli/commands/access/index.js +46 -0
  15. package/dist/cli/commands/access/index.js.map +1 -0
  16. package/dist/cli/commands/deployment/arguments.d.ts.map +1 -1
  17. package/dist/cli/commands/deployment/arguments.js +1 -8
  18. package/dist/cli/commands/deployment/arguments.js.map +1 -1
  19. package/dist/cli/commands/deployment/build-logs.d.ts.map +1 -1
  20. package/dist/cli/commands/deployment/build-logs.js +12 -16
  21. package/dist/cli/commands/deployment/build-logs.js.map +1 -1
  22. package/dist/cli/commands/deployment/deploy.d.ts.map +1 -1
  23. package/dist/cli/commands/deployment/deploy.js +88 -45
  24. package/dist/cli/commands/deployment/deploy.js.map +1 -1
  25. package/dist/cli/commands/deployment/index.d.ts.map +1 -1
  26. package/dist/cli/commands/deployment/index.js +18 -30
  27. package/dist/cli/commands/deployment/index.js.map +1 -1
  28. package/dist/cli/commands/deployment/list.d.ts.map +1 -1
  29. package/dist/cli/commands/deployment/list.js +5 -5
  30. package/dist/cli/commands/deployment/list.js.map +1 -1
  31. package/dist/cli/commands/deployment/log-export.d.ts.map +1 -1
  32. package/dist/cli/commands/deployment/log-export.js +14 -27
  33. package/dist/cli/commands/deployment/log-export.js.map +1 -1
  34. package/dist/cli/commands/deployment/log-query-output.d.ts.map +1 -1
  35. package/dist/cli/commands/deployment/log-query-output.js +18 -32
  36. package/dist/cli/commands/deployment/log-query-output.js.map +1 -1
  37. package/dist/cli/commands/deployment/logs.d.ts.map +1 -1
  38. package/dist/cli/commands/deployment/logs.js +52 -72
  39. package/dist/cli/commands/deployment/logs.js.map +1 -1
  40. package/dist/cli/commands/deployment/options.d.ts.map +1 -1
  41. package/dist/cli/commands/deployment/options.js +11 -20
  42. package/dist/cli/commands/deployment/options.js.map +1 -1
  43. package/dist/cli/commands/deployment/plan-format.d.ts.map +1 -1
  44. package/dist/cli/commands/deployment/plan-format.js +2 -2
  45. package/dist/cli/commands/deployment/plan-format.js.map +1 -1
  46. package/dist/cli/commands/deployment/plan.d.ts.map +1 -1
  47. package/dist/cli/commands/deployment/plan.js +7 -8
  48. package/dist/cli/commands/deployment/plan.js.map +1 -1
  49. package/dist/cli/commands/deployment/recovery.d.ts.map +1 -1
  50. package/dist/cli/commands/deployment/recovery.js +25 -35
  51. package/dist/cli/commands/deployment/recovery.js.map +1 -1
  52. package/dist/cli/commands/deployment/rollback.d.ts.map +1 -1
  53. package/dist/cli/commands/deployment/rollback.js +58 -12
  54. package/dist/cli/commands/deployment/rollback.js.map +1 -1
  55. package/dist/cli/commands/deployment/shared.d.ts.map +1 -1
  56. package/dist/cli/commands/deployment/shared.js +4 -7
  57. package/dist/cli/commands/deployment/shared.js.map +1 -1
  58. package/dist/cli/commands/deployment/show.d.ts.map +1 -1
  59. package/dist/cli/commands/deployment/show.js +8 -9
  60. package/dist/cli/commands/deployment/show.js.map +1 -1
  61. package/dist/cli/commands/deployment/source.d.ts.map +1 -1
  62. package/dist/cli/commands/deployment/source.js +2 -2
  63. package/dist/cli/commands/deployment/source.js.map +1 -1
  64. package/dist/cli/commands/deployment/status.d.ts.map +1 -1
  65. package/dist/cli/commands/deployment/status.js +10 -11
  66. package/dist/cli/commands/deployment/status.js.map +1 -1
  67. package/dist/cli/commands/deployment/teardown.js +22 -31
  68. package/dist/cli/commands/deployment/teardown.js.map +1 -1
  69. package/dist/cli/commands/identity-context/context.d.ts.map +1 -1
  70. package/dist/cli/commands/identity-context/context.js +3 -4
  71. package/dist/cli/commands/identity-context/context.js.map +1 -1
  72. package/dist/cli/commands/identity-context/index.d.ts.map +1 -1
  73. package/dist/cli/commands/identity-context/index.js +16 -50
  74. package/dist/cli/commands/identity-context/index.js.map +1 -1
  75. package/dist/cli/commands/identity-context/keys.d.ts.map +1 -1
  76. package/dist/cli/commands/identity-context/keys.js +13 -15
  77. package/dist/cli/commands/identity-context/keys.js.map +1 -1
  78. package/dist/cli/commands/identity-context/use.js +1 -1
  79. package/dist/cli/commands/identity-context/use.js.map +1 -1
  80. package/dist/cli/commands/index.d.ts.map +1 -1
  81. package/dist/cli/commands/index.js +13 -20
  82. package/dist/cli/commands/index.js.map +1 -1
  83. package/dist/cli/commands/project-config/config/build-fields.d.ts.map +1 -1
  84. package/dist/cli/commands/project-config/config/build-fields.js +2 -3
  85. package/dist/cli/commands/project-config/config/build-fields.js.map +1 -1
  86. package/dist/cli/commands/project-config/config/build.d.ts.map +1 -1
  87. package/dist/cli/commands/project-config/config/build.js +8 -9
  88. package/dist/cli/commands/project-config/config/build.js.map +1 -1
  89. package/dist/cli/commands/project-config/config/desired-state.d.ts.map +1 -1
  90. package/dist/cli/commands/project-config/config/desired-state.js +10 -12
  91. package/dist/cli/commands/project-config/config/desired-state.js.map +1 -1
  92. package/dist/cli/commands/project-config/config/email/domain.d.ts.map +1 -1
  93. package/dist/cli/commands/project-config/config/email/domain.js +12 -9
  94. package/dist/cli/commands/project-config/config/email/domain.js.map +1 -1
  95. package/dist/cli/commands/project-config/config/email/events.d.ts.map +1 -1
  96. package/dist/cli/commands/project-config/config/email/events.js +9 -9
  97. package/dist/cli/commands/project-config/config/email/events.js.map +1 -1
  98. package/dist/cli/commands/project-config/config/email/index.d.ts.map +1 -1
  99. package/dist/cli/commands/project-config/config/email/index.js +5 -6
  100. package/dist/cli/commands/project-config/config/email/index.js.map +1 -1
  101. package/dist/cli/commands/project-config/config/email/test-sending.d.ts.map +1 -1
  102. package/dist/cli/commands/project-config/config/email/test-sending.js +6 -5
  103. package/dist/cli/commands/project-config/config/email/test-sending.js.map +1 -1
  104. package/dist/cli/commands/project-config/config/index.d.ts.map +1 -1
  105. package/dist/cli/commands/project-config/config/index.js +8 -10
  106. package/dist/cli/commands/project-config/config/index.js.map +1 -1
  107. package/dist/cli/commands/project-config/config/runtime.d.ts.map +1 -1
  108. package/dist/cli/commands/project-config/config/runtime.js +10 -21
  109. package/dist/cli/commands/project-config/config/runtime.js.map +1 -1
  110. package/dist/cli/commands/project-config/config/set.js +3 -3
  111. package/dist/cli/commands/project-config/config/set.js.map +1 -1
  112. package/dist/cli/commands/project-config/config/show.d.ts.map +1 -1
  113. package/dist/cli/commands/project-config/config/show.js +7 -7
  114. package/dist/cli/commands/project-config/config/show.js.map +1 -1
  115. package/dist/cli/commands/project-config/env/add.d.ts.map +1 -1
  116. package/dist/cli/commands/project-config/env/add.js +4 -3
  117. package/dist/cli/commands/project-config/env/add.js.map +1 -1
  118. package/dist/cli/commands/project-config/env/get.d.ts.map +1 -1
  119. package/dist/cli/commands/project-config/env/get.js +7 -2
  120. package/dist/cli/commands/project-config/env/get.js.map +1 -1
  121. package/dist/cli/commands/project-config/env/import.d.ts.map +1 -1
  122. package/dist/cli/commands/project-config/env/import.js +15 -8
  123. package/dist/cli/commands/project-config/env/import.js.map +1 -1
  124. package/dist/cli/commands/project-config/env/index.js +7 -8
  125. package/dist/cli/commands/project-config/env/index.js.map +1 -1
  126. package/dist/cli/commands/project-config/env/list.d.ts.map +1 -1
  127. package/dist/cli/commands/project-config/env/list.js +29 -8
  128. package/dist/cli/commands/project-config/env/list.js.map +1 -1
  129. package/dist/cli/commands/project-config/env/metadata-options.d.ts.map +1 -1
  130. package/dist/cli/commands/project-config/env/metadata-options.js +0 -1
  131. package/dist/cli/commands/project-config/env/metadata-options.js.map +1 -1
  132. package/dist/cli/commands/project-config/env/pull.d.ts.map +1 -1
  133. package/dist/cli/commands/project-config/env/pull.js +22 -8
  134. package/dist/cli/commands/project-config/env/pull.js.map +1 -1
  135. package/dist/cli/commands/project-config/env/read-value.d.ts.map +1 -1
  136. package/dist/cli/commands/project-config/env/read-value.js +8 -4
  137. package/dist/cli/commands/project-config/env/read-value.js.map +1 -1
  138. package/dist/cli/commands/project-config/env/rm.d.ts.map +1 -1
  139. package/dist/cli/commands/project-config/env/rm.js +4 -3
  140. package/dist/cli/commands/project-config/env/rm.js.map +1 -1
  141. package/dist/cli/commands/project-config/env/run.d.ts.map +1 -1
  142. package/dist/cli/commands/project-config/env/run.js +9 -8
  143. package/dist/cli/commands/project-config/env/run.js.map +1 -1
  144. package/dist/cli/commands/project-config/env/update.d.ts.map +1 -1
  145. package/dist/cli/commands/project-config/env/update.js +4 -3
  146. package/dist/cli/commands/project-config/env/update.js.map +1 -1
  147. package/dist/cli/commands/project-config/environment/create.d.ts.map +1 -1
  148. package/dist/cli/commands/project-config/environment/create.js +5 -6
  149. package/dist/cli/commands/project-config/environment/create.js.map +1 -1
  150. package/dist/cli/commands/project-config/environment/delete.d.ts.map +1 -1
  151. package/dist/cli/commands/project-config/environment/delete.js +6 -6
  152. package/dist/cli/commands/project-config/environment/delete.js.map +1 -1
  153. package/dist/cli/commands/project-config/environment/find.js +3 -3
  154. package/dist/cli/commands/project-config/environment/find.js.map +1 -1
  155. package/dist/cli/commands/project-config/environment/index.d.ts.map +1 -1
  156. package/dist/cli/commands/project-config/environment/index.js +8 -10
  157. package/dist/cli/commands/project-config/environment/index.js.map +1 -1
  158. package/dist/cli/commands/project-config/environment/initial-superadmin.d.ts.map +1 -1
  159. package/dist/cli/commands/project-config/environment/initial-superadmin.js +4 -5
  160. package/dist/cli/commands/project-config/environment/initial-superadmin.js.map +1 -1
  161. package/dist/cli/commands/project-config/environment/list.d.ts.map +1 -1
  162. package/dist/cli/commands/project-config/environment/list.js +5 -5
  163. package/dist/cli/commands/project-config/environment/list.js.map +1 -1
  164. package/dist/cli/commands/project-config/environment/regions.d.ts.map +1 -1
  165. package/dist/cli/commands/project-config/environment/regions.js +3 -3
  166. package/dist/cli/commands/project-config/environment/regions.js.map +1 -1
  167. package/dist/cli/commands/project-config/environment/show.d.ts.map +1 -1
  168. package/dist/cli/commands/project-config/environment/show.js +3 -4
  169. package/dist/cli/commands/project-config/environment/show.js.map +1 -1
  170. package/dist/cli/commands/project-config/environment/update.d.ts.map +1 -1
  171. package/dist/cli/commands/project-config/environment/update.js +3 -4
  172. package/dist/cli/commands/project-config/environment/update.js.map +1 -1
  173. package/dist/cli/commands/project-config/index.js +5 -5
  174. package/dist/cli/commands/project-config/index.js.map +1 -1
  175. package/dist/cli/commands/project-config/init/build-detection.d.ts.map +1 -1
  176. package/dist/cli/commands/project-config/init/build-detection.js +4 -4
  177. package/dist/cli/commands/project-config/init/build-detection.js.map +1 -1
  178. package/dist/cli/commands/project-config/init/index.d.ts.map +1 -1
  179. package/dist/cli/commands/project-config/init/index.js +4 -5
  180. package/dist/cli/commands/project-config/init/index.js.map +1 -1
  181. package/dist/cli/commands/project-config/init/init.d.ts.map +1 -1
  182. package/dist/cli/commands/project-config/init/init.js +18 -22
  183. package/dist/cli/commands/project-config/init/init.js.map +1 -1
  184. package/dist/cli/commands/project-config/options.d.ts.map +1 -1
  185. package/dist/cli/commands/project-config/options.js +9 -14
  186. package/dist/cli/commands/project-config/options.js.map +1 -1
  187. package/dist/cli/commands/project-config/project/create.d.ts.map +1 -1
  188. package/dist/cli/commands/project-config/project/create.js +3 -3
  189. package/dist/cli/commands/project-config/project/create.js.map +1 -1
  190. package/dist/cli/commands/project-config/project/delete.d.ts.map +1 -1
  191. package/dist/cli/commands/project-config/project/delete.js +4 -5
  192. package/dist/cli/commands/project-config/project/delete.js.map +1 -1
  193. package/dist/cli/commands/project-config/project/index.d.ts.map +1 -1
  194. package/dist/cli/commands/project-config/project/index.js +4 -5
  195. package/dist/cli/commands/project-config/project/index.js.map +1 -1
  196. package/dist/cli/commands/project-config/project/link.d.ts.map +1 -1
  197. package/dist/cli/commands/project-config/project/link.js +4 -4
  198. package/dist/cli/commands/project-config/project/link.js.map +1 -1
  199. package/dist/cli/commands/project-config/project/list.d.ts.map +1 -1
  200. package/dist/cli/commands/project-config/project/list.js +5 -5
  201. package/dist/cli/commands/project-config/project/list.js.map +1 -1
  202. package/dist/cli/commands/project-config/project/show.d.ts.map +1 -1
  203. package/dist/cli/commands/project-config/project/show.js +11 -14
  204. package/dist/cli/commands/project-config/project/show.js.map +1 -1
  205. package/dist/cli/commands/project-config/project/subscription-state.d.ts.map +1 -1
  206. package/dist/cli/commands/project-config/project/subscription-state.js +17 -20
  207. package/dist/cli/commands/project-config/project/subscription-state.js.map +1 -1
  208. package/dist/cli/commands/project-config/project/unlink.d.ts.map +1 -1
  209. package/dist/cli/commands/project-config/project/unlink.js +2 -3
  210. package/dist/cli/commands/project-config/project/unlink.js.map +1 -1
  211. package/dist/cli/commands/project-config/project/update.d.ts.map +1 -1
  212. package/dist/cli/commands/project-config/project/update.js +3 -4
  213. package/dist/cli/commands/project-config/project/update.js.map +1 -1
  214. package/dist/cli/commands/project-config/source/connect.d.ts.map +1 -1
  215. package/dist/cli/commands/project-config/source/connect.js +24 -26
  216. package/dist/cli/commands/project-config/source/connect.js.map +1 -1
  217. package/dist/cli/commands/project-config/source/disconnect.d.ts.map +1 -1
  218. package/dist/cli/commands/project-config/source/disconnect.js +4 -4
  219. package/dist/cli/commands/project-config/source/disconnect.js.map +1 -1
  220. package/dist/cli/commands/project-config/source/index.js +7 -7
  221. package/dist/cli/commands/project-config/source/index.js.map +1 -1
  222. package/dist/cli/commands/project-config/source/map.d.ts.map +1 -1
  223. package/dist/cli/commands/project-config/source/map.js +12 -16
  224. package/dist/cli/commands/project-config/source/map.js.map +1 -1
  225. package/dist/cli/commands/project-config/source/repos.d.ts.map +1 -1
  226. package/dist/cli/commands/project-config/source/repos.js +5 -5
  227. package/dist/cli/commands/project-config/source/repos.js.map +1 -1
  228. package/dist/cli/commands/project-config/source/status.d.ts.map +1 -1
  229. package/dist/cli/commands/project-config/source/status.js +16 -25
  230. package/dist/cli/commands/project-config/source/status.js.map +1 -1
  231. package/dist/cli/commands/runtime-data/backup.d.ts.map +1 -1
  232. package/dist/cli/commands/runtime-data/backup.js +34 -36
  233. package/dist/cli/commands/runtime-data/backup.js.map +1 -1
  234. package/dist/cli/commands/runtime-data/index.d.ts.map +1 -1
  235. package/dist/cli/commands/runtime-data/index.js +38 -39
  236. package/dist/cli/commands/runtime-data/index.js.map +1 -1
  237. package/dist/cli/commands/runtime-data/resource.d.ts +1 -0
  238. package/dist/cli/commands/runtime-data/resource.d.ts.map +1 -1
  239. package/dist/cli/commands/runtime-data/resource.js +92 -33
  240. package/dist/cli/commands/runtime-data/resource.js.map +1 -1
  241. package/dist/cli/commands/runtime-data/restore.d.ts.map +1 -1
  242. package/dist/cli/commands/runtime-data/restore.js +32 -45
  243. package/dist/cli/commands/runtime-data/restore.js.map +1 -1
  244. package/dist/cli/commands/runtime-data/seeds.d.ts.map +1 -1
  245. package/dist/cli/commands/runtime-data/seeds.js +24 -26
  246. package/dist/cli/commands/runtime-data/seeds.js.map +1 -1
  247. package/dist/cli/commands/runtime-data/tunnel.d.ts.map +1 -1
  248. package/dist/cli/commands/runtime-data/tunnel.js +33 -43
  249. package/dist/cli/commands/runtime-data/tunnel.js.map +1 -1
  250. package/dist/cli/host-arguments.d.ts.map +1 -1
  251. package/dist/cli/host-arguments.js +10 -18
  252. package/dist/cli/host-arguments.js.map +1 -1
  253. package/dist/cli/host-nodes.js +1 -1
  254. package/dist/cli/host-nodes.js.map +1 -1
  255. package/dist/cli/index.d.ts +10 -13
  256. package/dist/cli/index.d.ts.map +1 -1
  257. package/dist/cli/index.js +22 -33
  258. package/dist/cli/index.js.map +1 -1
  259. package/dist/cli/lib/api-client.d.ts +10 -5
  260. package/dist/cli/lib/api-client.d.ts.map +1 -1
  261. package/dist/cli/lib/api-client.js +23 -42
  262. package/dist/cli/lib/api-client.js.map +1 -1
  263. package/dist/cli/lib/auth.d.ts +4 -145
  264. package/dist/cli/lib/auth.d.ts.map +1 -1
  265. package/dist/cli/lib/auth.js +8 -515
  266. package/dist/cli/lib/auth.js.map +1 -1
  267. package/dist/cli/lib/cli-login.d.ts +12 -0
  268. package/dist/cli/lib/cli-login.d.ts.map +1 -0
  269. package/dist/cli/lib/cli-login.js +155 -0
  270. package/dist/cli/lib/cli-login.js.map +1 -0
  271. package/dist/cli/lib/cloud-api-url.d.ts +2 -0
  272. package/dist/cli/lib/cloud-api-url.d.ts.map +1 -0
  273. package/dist/cli/lib/cloud-api-url.js +3 -0
  274. package/dist/cli/lib/cloud-api-url.js.map +1 -0
  275. package/dist/cli/lib/commit.d.ts.map +1 -1
  276. package/dist/cli/lib/commit.js +2 -3
  277. package/dist/cli/lib/commit.js.map +1 -1
  278. package/dist/cli/lib/config-revisions.d.ts +9 -0
  279. package/dist/cli/lib/config-revisions.d.ts.map +1 -0
  280. package/dist/cli/lib/config-revisions.js +52 -0
  281. package/dist/cli/lib/config-revisions.js.map +1 -0
  282. package/dist/cli/lib/config.d.ts +0 -4
  283. package/dist/cli/lib/config.d.ts.map +1 -1
  284. package/dist/cli/lib/config.js +3 -5
  285. package/dist/cli/lib/config.js.map +1 -1
  286. package/dist/cli/lib/console-pairing.d.ts +1 -14
  287. package/dist/cli/lib/console-pairing.d.ts.map +1 -1
  288. package/dist/cli/lib/console-pairing.js +48 -60
  289. package/dist/cli/lib/console-pairing.js.map +1 -1
  290. package/dist/cli/lib/contract/backup-schedule-reasons.d.ts.map +1 -1
  291. package/dist/cli/lib/contract/backup-schedule-reasons.js +3 -7
  292. package/dist/cli/lib/contract/backup-schedule-reasons.js.map +1 -1
  293. package/dist/cli/lib/contract/build-settings.d.ts +1 -1
  294. package/dist/cli/lib/contract/build-settings.d.ts.map +1 -1
  295. package/dist/cli/lib/contract/build-settings.js +12 -18
  296. package/dist/cli/lib/contract/build-settings.js.map +1 -1
  297. package/dist/cli/lib/contract/database.d.ts.map +1 -1
  298. package/dist/cli/lib/contract/database.js +7 -13
  299. package/dist/cli/lib/contract/database.js.map +1 -1
  300. package/dist/cli/lib/contract/deployment-resource-labels.d.ts.map +1 -1
  301. package/dist/cli/lib/contract/deployment-resource-labels.js +2 -6
  302. package/dist/cli/lib/contract/deployment-resource-labels.js.map +1 -1
  303. package/dist/cli/lib/contract/deployments.d.ts +1 -0
  304. package/dist/cli/lib/contract/deployments.d.ts.map +1 -1
  305. package/dist/cli/lib/contract/deployments.js +32 -40
  306. package/dist/cli/lib/contract/deployments.js.map +1 -1
  307. package/dist/cli/lib/contract/desired-state.d.ts +3 -1
  308. package/dist/cli/lib/contract/desired-state.d.ts.map +1 -1
  309. package/dist/cli/lib/contract/desired-state.js +33 -50
  310. package/dist/cli/lib/contract/desired-state.js.map +1 -1
  311. package/dist/cli/lib/contract/env-vars.d.ts +37 -0
  312. package/dist/cli/lib/contract/env-vars.d.ts.map +1 -0
  313. package/dist/cli/lib/contract/env-vars.js +6 -0
  314. package/dist/cli/lib/contract/env-vars.js.map +1 -0
  315. package/dist/cli/lib/contract/foreign-credentials.d.ts +14 -27
  316. package/dist/cli/lib/contract/foreign-credentials.d.ts.map +1 -1
  317. package/dist/cli/lib/contract/foreign-credentials.js +19 -32
  318. package/dist/cli/lib/contract/foreign-credentials.js.map +1 -1
  319. package/dist/cli/lib/contract/logs.d.ts.map +1 -1
  320. package/dist/cli/lib/contract/logs.js +26 -34
  321. package/dist/cli/lib/contract/logs.js.map +1 -1
  322. package/dist/cli/lib/contract/managed-email.d.ts.map +1 -1
  323. package/dist/cli/lib/contract/managed-email.js +2 -3
  324. package/dist/cli/lib/contract/managed-email.js.map +1 -1
  325. package/dist/cli/lib/contract/permission-denied.d.ts +16 -0
  326. package/dist/cli/lib/contract/permission-denied.d.ts.map +1 -0
  327. package/dist/cli/lib/contract/permission-denied.js +20 -0
  328. package/dist/cli/lib/contract/permission-denied.js.map +1 -0
  329. package/dist/cli/lib/contract/project-grants.d.ts +16 -0
  330. package/dist/cli/lib/contract/project-grants.d.ts.map +1 -0
  331. package/dist/cli/lib/contract/project-grants.js +58 -0
  332. package/dist/cli/lib/contract/project-grants.js.map +1 -0
  333. package/dist/cli/lib/contract/projects.d.ts.map +1 -1
  334. package/dist/cli/lib/contract/projects.js +2 -3
  335. package/dist/cli/lib/contract/projects.js.map +1 -1
  336. package/dist/cli/lib/contract/public-error-details.d.ts.map +1 -1
  337. package/dist/cli/lib/contract/public-error-details.js +28 -43
  338. package/dist/cli/lib/contract/public-error-details.js.map +1 -1
  339. package/dist/cli/lib/contract/regions.js +2 -2
  340. package/dist/cli/lib/contract/regions.js.map +1 -1
  341. package/dist/cli/lib/contract/runtime-operations.d.ts +16 -0
  342. package/dist/cli/lib/contract/runtime-operations.d.ts.map +1 -1
  343. package/dist/cli/lib/contract/runtime-operations.js +16 -21
  344. package/dist/cli/lib/contract/runtime-operations.js.map +1 -1
  345. package/dist/cli/lib/contract/seeds.d.ts.map +1 -1
  346. package/dist/cli/lib/contract/seeds.js +12 -21
  347. package/dist/cli/lib/contract/seeds.js.map +1 -1
  348. package/dist/cli/lib/contract/source-disconnect-reasons.d.ts.map +1 -1
  349. package/dist/cli/lib/contract/source-disconnect-reasons.js +9 -17
  350. package/dist/cli/lib/contract/source-disconnect-reasons.js.map +1 -1
  351. package/dist/cli/lib/contract/source-repository.d.ts.map +1 -1
  352. package/dist/cli/lib/contract/source-repository.js +5 -9
  353. package/dist/cli/lib/contract/source-repository.js.map +1 -1
  354. package/dist/cli/lib/contract/wire-types.d.ts.map +1 -1
  355. package/dist/cli/lib/contract/wire-types.js +3 -8
  356. package/dist/cli/lib/contract/wire-types.js.map +1 -1
  357. package/dist/cli/lib/contract/wire-values.d.ts.map +1 -1
  358. package/dist/cli/lib/contract/wire-values.js +2 -3
  359. package/dist/cli/lib/contract/wire-values.js.map +1 -1
  360. package/dist/cli/lib/dotenv.d.ts +6 -0
  361. package/dist/cli/lib/dotenv.d.ts.map +1 -1
  362. package/dist/cli/lib/dotenv.js +62 -20
  363. package/dist/cli/lib/dotenv.js.map +1 -1
  364. package/dist/cli/lib/env-file.d.ts.map +1 -1
  365. package/dist/cli/lib/env-file.js +5 -11
  366. package/dist/cli/lib/env-file.js.map +1 -1
  367. package/dist/cli/lib/env-preflight.d.ts +6 -1
  368. package/dist/cli/lib/env-preflight.d.ts.map +1 -1
  369. package/dist/cli/lib/env-preflight.js +91 -63
  370. package/dist/cli/lib/env-preflight.js.map +1 -1
  371. package/dist/cli/lib/errors.d.ts +17 -49
  372. package/dist/cli/lib/errors.d.ts.map +1 -1
  373. package/dist/cli/lib/errors.js +47 -106
  374. package/dist/cli/lib/errors.js.map +1 -1
  375. package/dist/cli/lib/format.d.ts.map +1 -1
  376. package/dist/cli/lib/format.js +3 -5
  377. package/dist/cli/lib/format.js.map +1 -1
  378. package/dist/cli/lib/invocation.d.ts +4 -5
  379. package/dist/cli/lib/invocation.d.ts.map +1 -1
  380. package/dist/cli/lib/invocation.js +5 -33
  381. package/dist/cli/lib/invocation.js.map +1 -1
  382. package/dist/cli/lib/log-stream.d.ts.map +1 -1
  383. package/dist/cli/lib/log-stream.js +15 -23
  384. package/dist/cli/lib/log-stream.js.map +1 -1
  385. package/dist/cli/lib/logger.d.ts.map +1 -1
  386. package/dist/cli/lib/logger.js +7 -12
  387. package/dist/cli/lib/logger.js.map +1 -1
  388. package/dist/cli/lib/organization.d.ts.map +1 -1
  389. package/dist/cli/lib/organization.js +5 -13
  390. package/dist/cli/lib/organization.js.map +1 -1
  391. package/dist/cli/lib/project-link.d.ts.map +1 -1
  392. package/dist/cli/lib/project-link.js +2 -4
  393. package/dist/cli/lib/project-link.js.map +1 -1
  394. package/dist/cli/lib/resolve.d.ts +1 -6
  395. package/dist/cli/lib/resolve.d.ts.map +1 -1
  396. package/dist/cli/lib/resolve.js +26 -48
  397. package/dist/cli/lib/resolve.js.map +1 -1
  398. package/dist/cli/lib/source-repository-link.d.ts.map +1 -1
  399. package/dist/cli/lib/source-repository-link.js +6 -9
  400. package/dist/cli/lib/source-repository-link.js.map +1 -1
  401. package/dist/cli/lib/terminal-output.d.ts +4 -0
  402. package/dist/cli/lib/terminal-output.d.ts.map +1 -1
  403. package/dist/cli/lib/terminal-output.js +35 -18
  404. package/dist/cli/lib/terminal-output.js.map +1 -1
  405. package/dist/cli/lib/types.d.ts +3 -7
  406. package/dist/cli/lib/types.d.ts.map +1 -1
  407. package/dist/cli/lib/types.js.map +1 -1
  408. package/dist/cli/lib/utf8.d.ts +2 -0
  409. package/dist/cli/lib/utf8.d.ts.map +1 -0
  410. package/dist/cli/lib/utf8.js +12 -0
  411. package/dist/cli/lib/utf8.js.map +1 -0
  412. package/dist/cli/root-options.d.ts.map +1 -1
  413. package/dist/cli/root-options.js +11 -14
  414. package/dist/cli/root-options.js.map +1 -1
  415. package/dist/cli-plugin.d.ts.map +1 -1
  416. package/dist/cli-plugin.js +2 -6
  417. package/dist/cli-plugin.js.map +1 -1
  418. package/dist/cloud-config-module.js +2 -2
  419. package/dist/cloud-config-module.js.map +1 -1
  420. package/dist/dev/cli-host.d.ts.map +1 -1
  421. package/dist/dev/cli-host.js +16 -19
  422. package/dist/dev/cli-host.js.map +1 -1
  423. package/dist/dev/dashboard-vite-config.d.ts.map +1 -1
  424. package/dist/dev/dashboard-vite-config.js +17 -20
  425. package/dist/dev/dashboard-vite-config.js.map +1 -1
  426. package/dist/dev/dev-command.d.ts.map +1 -1
  427. package/dist/dev/dev-command.js +72 -55
  428. package/dist/dev/dev-command.js.map +1 -1
  429. package/dist/dev/dev-config.d.ts +3 -0
  430. package/dist/dev/dev-config.d.ts.map +1 -1
  431. package/dist/dev/dev-config.js +43 -13
  432. package/dist/dev/dev-config.js.map +1 -1
  433. package/dist/dev/dev-migrate.js +7 -11
  434. package/dist/dev/dev-migrate.js.map +1 -1
  435. package/dist/dev/dev-process.d.ts.map +1 -1
  436. package/dist/dev/dev-process.js +6 -10
  437. package/dist/dev/dev-process.js.map +1 -1
  438. package/dist/dev/dev-server.js +7 -9
  439. package/dist/dev/dev-server.js.map +1 -1
  440. package/dist/dev/dev-worker.js +5 -3
  441. package/dist/dev/dev-worker.js.map +1 -1
  442. package/dist/dev/local-services.d.ts.map +1 -1
  443. package/dist/dev/local-services.js +163 -106
  444. package/dist/dev/local-services.js.map +1 -1
  445. package/dist/dev/project-layout.d.ts.map +1 -1
  446. package/dist/dev/project-layout.js +12 -17
  447. package/dist/dev/project-layout.js.map +1 -1
  448. package/dist/dev/project-plugin-scope.d.ts +2 -0
  449. package/dist/dev/project-plugin-scope.d.ts.map +1 -0
  450. package/dist/dev/project-plugin-scope.js +38 -0
  451. package/dist/dev/project-plugin-scope.js.map +1 -0
  452. package/dist/entrypoint.js +2 -0
  453. package/dist/entrypoint.js.map +1 -1
  454. package/dist/index.d.ts.map +1 -1
  455. package/dist/index.js +3 -6
  456. package/dist/index.js.map +1 -1
  457. package/dist/local-asset-server.d.ts.map +1 -1
  458. package/dist/local-asset-server.js +7 -13
  459. package/dist/local-asset-server.js.map +1 -1
  460. package/dist/local-cache-plugin.d.ts.map +1 -1
  461. package/dist/local-cache-plugin.js +20 -28
  462. package/dist/local-cache-plugin.js.map +1 -1
  463. package/dist/local-cache.d.ts.map +1 -1
  464. package/dist/local-cache.js +40 -55
  465. package/dist/local-cache.js.map +1 -1
  466. package/dist/local-core.d.ts.map +1 -1
  467. package/dist/local-core.js +3 -5
  468. package/dist/local-core.js.map +1 -1
  469. package/dist/local-dashboard-plugin.d.ts.map +1 -1
  470. package/dist/local-dashboard-plugin.js +6 -11
  471. package/dist/local-dashboard-plugin.js.map +1 -1
  472. package/dist/local-database.d.ts.map +1 -1
  473. package/dist/local-database.js +20 -23
  474. package/dist/local-database.js.map +1 -1
  475. package/dist/local-durable-execution-plugin.d.ts +12 -0
  476. package/dist/local-durable-execution-plugin.d.ts.map +1 -1
  477. package/dist/local-durable-execution-plugin.js +296 -24
  478. package/dist/local-durable-execution-plugin.js.map +1 -1
  479. package/dist/local-runtime-guard.d.ts +2 -0
  480. package/dist/local-runtime-guard.d.ts.map +1 -1
  481. package/dist/local-runtime-guard.js +40 -3
  482. package/dist/local-runtime-guard.js.map +1 -1
  483. package/dist/local-runtime.d.ts.map +1 -1
  484. package/dist/local-runtime.js +51 -48
  485. package/dist/local-runtime.js.map +1 -1
  486. package/package.json +16 -9
  487. package/dist/cli/commands/identity-context/login.d.ts +0 -2
  488. package/dist/cli/commands/identity-context/login.d.ts.map +0 -1
  489. package/dist/cli/commands/identity-context/login.js +0 -158
  490. package/dist/cli/commands/identity-context/login.js.map +0 -1
  491. package/dist/cli/commands/identity-context/logout.d.ts +0 -2
  492. package/dist/cli/commands/identity-context/logout.d.ts.map +0 -1
  493. package/dist/cli/commands/identity-context/logout.js +0 -11
  494. package/dist/cli/commands/identity-context/logout.js.map +0 -1
  495. package/dist/cli/commands/identity-context/org-switch.d.ts +0 -3
  496. package/dist/cli/commands/identity-context/org-switch.d.ts.map +0 -1
  497. package/dist/cli/commands/identity-context/org-switch.js +0 -83
  498. package/dist/cli/commands/identity-context/org-switch.js.map +0 -1
  499. package/dist/cli/commands/identity-context/whoami.d.ts +0 -3
  500. package/dist/cli/commands/identity-context/whoami.d.ts.map +0 -1
  501. package/dist/cli/commands/identity-context/whoami.js +0 -101
  502. package/dist/cli/commands/identity-context/whoami.js.map +0 -1
  503. package/dist/cli/lib/console-credential.d.ts +0 -55
  504. package/dist/cli/lib/console-credential.d.ts.map +0 -1
  505. package/dist/cli/lib/console-credential.js +0 -164
  506. package/dist/cli/lib/console-credential.js.map +0 -1
  507. package/dist/cli/lib/console-origins.d.ts +0 -30
  508. package/dist/cli/lib/console-origins.d.ts.map +0 -1
  509. package/dist/cli/lib/console-origins.js +0 -87
  510. package/dist/cli/lib/console-origins.js.map +0 -1
  511. package/dist/cli/lib/console-session-lock.d.ts +0 -39
  512. package/dist/cli/lib/console-session-lock.d.ts.map +0 -1
  513. package/dist/cli/lib/console-session-lock.js +0 -235
  514. package/dist/cli/lib/console-session-lock.js.map +0 -1
  515. package/dist/cli/lib/console-session.d.ts +0 -47
  516. package/dist/cli/lib/console-session.d.ts.map +0 -1
  517. package/dist/cli/lib/console-session.js +0 -235
  518. package/dist/cli/lib/console-session.js.map +0 -1
  519. package/dist/cli/lib/file-lock.d.ts +0 -23
  520. package/dist/cli/lib/file-lock.d.ts.map +0 -1
  521. package/dist/cli/lib/file-lock.js +0 -121
  522. package/dist/cli/lib/file-lock.js.map +0 -1
@@ -1,525 +1,18 @@
1
- import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
2
- import { basename, join } from "node:path";
3
- import { AUTH_FILE, CONFIG_DIR, REFRESH_LOCK_FILE, WORKOS_AUTHENTICATE_URL, getApiUrl, } from "./config.js";
4
- import { isSharedConsoleSessionEnabled, resolveConsoleSession } from "./console-session.js";
1
+ import { getUserAccessToken } from "./cli-login.js";
5
2
  import { classifyForeignCredential } from "./contract/foreign-credentials.js";
6
- import { ForeignCredentialError, RefreshTokenRejectedError, RefreshUnavailableError, SessionRefreshError, SessionUnstorableError, } from "./errors.js";
7
- import { withFileLock } from "./file-lock.js";
8
- import { cloudInvocation } from "./invocation.js";
9
- import { logger } from "./logger.js";
10
- export const API_AUTH_CONFIG_TIMEOUT_MS = 15_000;
11
- export const WORKOS_AUTH_REQUEST_TIMEOUT_MS = 60_000;
12
- /**
13
- * Precedence: the explicit `--token`, then `VENDURE_CLOUD_TOKEN`, then the
14
- * shared Console session, then the stored Cloud login. Returns null when the
15
- * machine has no credential at all, so each caller can word its own "not logged
16
- * in" response.
17
- *
18
- * The shared session comes before the stored Cloud login because it is the one
19
- * a developer just approved, and reusing it is the point of CLO-641. It comes
20
- * after an explicit token for the same reason the stored login does: a
21
- * credential someone named on the command line is the one they meant.
22
- *
23
- * `~/.vendure-cloud/auth.json` keeps working underneath it. A machine that has
24
- * only that file resolves exactly as it did before, and so does every machine
25
- * while the shared path stays switched off.
26
- *
27
- * An explicitly supplied credential is never mixed with the stored session:
28
- * spending the session's single-use refresh token on a credential that does
29
- * not own it strands the login (CLO-164), and sending the locally selected
30
- * organization alongside a key that resolves its own would contradict it.
31
- *
32
- * Throws rather than returns null for a credential another Vendure product
33
- * issued. Someone who set `--token` to their project's environment credential
34
- * has made a specific mistake, and falling back to the stored session would
35
- * answer it with whatever that session happens to be — or with "not logged in",
36
- * which is not what went wrong. Refusing here is also what keeps the value on
37
- * the machine; the control plane refuses it again for callers that are not
38
- * this CLI.
39
- */
40
- export function resolveCredential(options) {
3
+ import { ForeignCredentialError } from "./errors.js";
4
+ // Precedence: `--token`, `VENDURE_CLOUD_TOKEN`, then the Vendure CLI login. An explicit API key
5
+ // never reads or renews the login. A credential another Vendure product issued is rejected here, so
6
+ // it never leaves the machine and never falls back to whichever account the login holds.
7
+ export async function resolveCredential(options) {
41
8
  const explicitToken = options.token ?? process.env.VENDURE_CLOUD_TOKEN;
42
9
  if (explicitToken) {
43
10
  const foreign = classifyForeignCredential(explicitToken);
44
11
  if (foreign) {
45
12
  throw new ForeignCredentialError(foreign);
46
13
  }
47
- return { kind: "apiKey", token: explicitToken };
14
+ return { kind: "apiKey", key: explicitToken };
48
15
  }
49
- if (isSharedConsoleSessionEnabled()) {
50
- const shared = resolveConsoleSession();
51
- // A session that has expired and cannot be renewed without a browser is not one to run on. It
52
- // would fail every command with "sign in again" while a working Cloud login sat unused in
53
- // `~/.vendure-cloud/auth.json`, so it is passed over as if it were not there.
54
- if (shared && (shared.refreshable || !shared.expired)) {
55
- return { kind: "consoleSession", token: shared.accessToken };
56
- }
57
- }
58
- const config = readAuthConfig();
59
- if (!config?.accessToken) {
60
- return null;
61
- }
62
- return {
63
- kind: "session",
64
- token: config.accessToken,
65
- organizationId: config.activeOrganizationId,
66
- };
67
- }
68
- export function readAuthConfig() {
69
- if (!existsSync(AUTH_FILE)) {
70
- return null;
71
- }
72
- try {
73
- const raw = readFileSync(AUTH_FILE, "utf-8");
74
- return JSON.parse(raw);
75
- }
76
- catch {
77
- return null;
78
- }
79
- }
80
- /**
81
- * Write via a temp file + rename so the config is replaced atomically.
82
- * A plain `writeFileSync` truncates in place: a crash mid-write leaves
83
- * unparseable JSON, which reads back as "not logged in" while the rotated
84
- * refresh token — already consumed at the authentication service — is gone
85
- * for good. Rename is atomic within a directory, so a reader sees either the
86
- * whole old config or the whole new one.
87
- */
88
- export function writeAuthConfig(config) {
89
- mkdirSync(CONFIG_DIR, { recursive: true });
90
- const tempFile = `${AUTH_FILE}.${process.pid}.tmp`;
91
- try {
92
- writeFileSync(tempFile, serializeAuthConfig(config), { mode: 0o600 });
93
- renameSync(tempFile, AUTH_FILE);
94
- }
95
- catch (error) {
96
- try {
97
- unlinkSync(tempFile);
98
- }
99
- catch {
100
- // The write may have failed before the temp file existed at all.
101
- }
102
- throw error;
103
- }
104
- sweepStaleTempFiles();
105
- }
106
- function serializeAuthConfig(config) {
107
- return JSON.stringify(config, null, 2);
108
- }
109
- // Long enough that no in-flight write can still be inside it: a temp file this
110
- // old belongs to a process that was killed between the write and the rename,
111
- // and it holds live tokens at 0600 until something removes it.
112
- const STALE_TEMP_FILE_MS = 60 * 60 * 1000;
113
- function sweepStaleTempFiles() {
114
- const prefix = `${basename(AUTH_FILE)}.`;
115
- const cutoff = Date.now() - STALE_TEMP_FILE_MS;
116
- let entries;
117
- try {
118
- entries = readdirSync(CONFIG_DIR);
119
- }
120
- catch (error) {
121
- // Opportunistic: a session that cannot list the directory is not a failed
122
- // write, so the caller never hears about it.
123
- logger.debug({ error }, "Could not scan for stale auth temp files");
124
- return;
125
- }
126
- for (const entry of entries) {
127
- if (!entry.startsWith(prefix) || !entry.endsWith(".tmp")) {
128
- continue;
129
- }
130
- const path = join(CONFIG_DIR, entry);
131
- try {
132
- if (statSync(path).mtimeMs > cutoff) {
133
- continue;
134
- }
135
- unlinkSync(path);
136
- }
137
- catch (error) {
138
- // Raced with its owner, or not ours to remove.
139
- logger.debug({ path, error }, "Could not remove stale auth temp file");
140
- }
141
- }
142
- }
143
- // A refresh token is single-use, so a write that fails after the exchange
144
- // leaves the consumed token as the machine's only credential (CLO-703). An
145
- // exchange cannot be undone, so each one proves storability first.
146
- //
147
- // The probe creates and renames beside `auth.json`, then removes itself. Never
148
- // `auth.json` itself, so no stored credential is read or replaced.
149
- // Mode bits are not consulted: root writes a 0500 directory, and a read-only
150
- // mount refuses a 0700 one.
151
- //
152
- // Limits. The filler is sized from the config being replaced, not from the
153
- // unknown-length pair. The probe's own unlink can refuse where the write would
154
- // not have needed one. Write access can still disappear after this returns.
155
- function assertReplacementIsStorable(configToReplace) {
156
- const probeFile = `${AUTH_FILE}.${process.pid}.probe.tmp`;
157
- const probeTarget = `${AUTH_FILE}.${process.pid}.probed.tmp`;
158
- try {
159
- mkdirSync(CONFIG_DIR, { recursive: true });
160
- // Bytes, not code units: a non-ASCII name would undersize the filler and
161
- // let a nearly full directory through.
162
- const filler = "0".repeat(Buffer.byteLength(serializeAuthConfig(configToReplace)));
163
- writeFileSync(probeFile, filler, { mode: 0o600 });
164
- renameSync(probeFile, probeTarget);
165
- unlinkSync(probeTarget);
166
- }
167
- catch (error) {
168
- removeProbeFiles(probeFile, probeTarget);
169
- logger.debug({ error }, "Cannot store a renewed session; not spending the refresh token");
170
- throw new SessionUnstorableError(CONFIG_DIR, { cause: error });
171
- }
172
- }
173
- // Whichever name the failure left behind. A directory too broken to remove them
174
- // is the failure being reported, and both names match `sweepStaleTempFiles`.
175
- function removeProbeFiles(...paths) {
176
- for (const path of paths) {
177
- try {
178
- unlinkSync(path);
179
- }
180
- catch {
181
- // Never existed, or the directory that just refused a write refuses this.
182
- }
183
- }
184
- }
185
- export function clearAuthConfig() {
186
- if (existsSync(AUTH_FILE)) {
187
- unlinkSync(AUTH_FILE);
188
- }
189
- }
190
- /**
191
- * Exchange a refresh token for a fresh access/refresh token pair via WorkOS.
192
- *
193
- * Pass `workosOrgId` to scope the new token to a specific organization:
194
- * WorkOS bakes the user's role + permissions for that org into the access
195
- * token's claims at issue time. Without it, WorkOS returns a token for the
196
- * user's current/default org. This is the mechanism that keeps the JWT's
197
- * `org_id` + `permissions` in step with the CLI's active org — see
198
- * `org switch` and the multi-org branch of `login`.
199
- *
200
- * Note: `workosOrgId` is the WorkOS organization id (`org_…`), NOT the
201
- * internal DB UUID stored in `AuthConfig.activeOrganizationId`.
202
- */
203
- export async function exchangeRefreshToken(refreshToken, workosOrgId) {
204
- const cliConfigResponse = await fetchOrUnavailable(`${getApiUrl()}/auth/cli-config`, {
205
- signal: AbortSignal.timeout(API_AUTH_CONFIG_TIMEOUT_MS),
206
- });
207
- if (!cliConfigResponse.ok) {
208
- // The control plane, not the token — never a reason to discard credentials.
209
- logger.debug({ status: cliConfigResponse.status }, "CLI config fetch failed during refresh");
210
- throw new RefreshUnavailableError();
211
- }
212
- const { workosClientId } = (await cliConfigResponse.json());
213
- const response = await fetchOrUnavailable(WORKOS_AUTHENTICATE_URL, {
214
- method: "POST",
215
- headers: { "content-type": "application/json" },
216
- signal: AbortSignal.timeout(WORKOS_AUTH_REQUEST_TIMEOUT_MS),
217
- body: JSON.stringify({
218
- grant_type: "refresh_token",
219
- client_id: workosClientId,
220
- refresh_token: refreshToken,
221
- ...(workosOrgId ? { organization_id: workosOrgId } : {}),
222
- }),
223
- });
224
- if (!response.ok) {
225
- throw await classifyRefreshFailure(response);
226
- }
227
- const result = (await response.json());
228
- return { accessToken: result.access_token, refreshToken: result.refresh_token };
229
- }
230
- async function fetchOrUnavailable(url, init) {
231
- try {
232
- return await fetch(url, init);
233
- }
234
- catch (error) {
235
- // DNS failure, connection reset, timeout abort — all transient.
236
- throw new RefreshUnavailableError({ cause: error });
237
- }
238
- }
239
- // The OAuth 2.0 (RFC 6749 §5.2) error code that means this grant will never
240
- // work again: the refresh token was revoked, has expired, or was already
241
- // consumed.
242
- const REJECTED_GRANT_ERROR_CODE = "invalid_grant";
243
- /**
244
- * Fail safe: only a recognised "this token is dead" code counts as definitive.
245
- * Rate limits, 5xx, and unrecognised codes stay transient so a bad guess costs
246
- * the user a retry rather than their whole session. The authentication service
247
- * does not document its refresh-grant error codes, so what we recognise is
248
- * deliberately narrow.
249
- */
250
- async function classifyRefreshFailure(response) {
251
- const body = await response.json().catch(() => null);
252
- const errorCode = extractErrorCode(body);
253
- logger.debug({ status: response.status, errorCode }, "Token refresh rejected");
254
- if (errorCode === REJECTED_GRANT_ERROR_CODE) {
255
- return new RefreshTokenRejectedError();
256
- }
257
- return new RefreshUnavailableError();
258
- }
259
- function extractErrorCode(body) {
260
- if (body && typeof body === "object" && "error" in body && typeof body.error === "string") {
261
- return body.error;
262
- }
263
- return undefined;
264
- }
265
- // Skew margin so a token that expires while the retried request is in flight
266
- // counts as unusable.
267
- const ACCESS_TOKEN_REUSE_SKEW_MS = 30_000;
268
- /**
269
- * Whether an access token another process stored is worth handing back instead
270
- * of running an exchange. "Different from the token that just 401'd" is not the
271
- * same as "valid": access tokens live minutes, so a long-running command can
272
- * find a pair that rotated — and then expired — while it worked. The API client
273
- * retries exactly once, so reusing a dead token spends that retry and surfaces
274
- * as a logged-out command (CLO-164).
275
- *
276
- * Fails toward the exchange: no `exp`, a non-numeric one, or a token we cannot
277
- * decode is not provably valid, and an unnecessary exchange only costs the
278
- * round trip.
279
- */
280
- function hasUsableLifetime(accessToken) {
281
- const expiresAtMs = readJwtExpiryMs(accessToken);
282
- if (expiresAtMs === null) {
283
- return false;
284
- }
285
- return expiresAtMs - Date.now() > ACCESS_TOKEN_REUSE_SKEW_MS;
286
- }
287
- // No signature verification: the issuer validates that, we only need `exp`.
288
- function readJwtExpiryMs(token) {
289
- const payloadSegment = token.split(".")[1];
290
- if (!payloadSegment) {
291
- return null;
292
- }
293
- try {
294
- const payload = JSON.parse(Buffer.from(payloadSegment, "base64url").toString("utf-8"));
295
- if (!payload || typeof payload !== "object" || !("exp" in payload)) {
296
- return null;
297
- }
298
- const { exp } = payload;
299
- if (typeof exp !== "number" || !Number.isFinite(exp)) {
300
- return null;
301
- }
302
- return exp * 1000;
303
- }
304
- catch {
305
- return null;
306
- }
307
- }
308
- let activeRefresh = null;
309
- /**
310
- * Exported so the `waitMs >= staleMs` invariant below can be asserted — it is
311
- * the load-bearing relationship in this whole mechanism and nothing else
312
- * enforces it.
313
- *
314
- * `staleMs` covers the worst case of both refresh requests timing out, so a
315
- * waiter never breaks a lock that is still doing useful work.
316
- *
317
- * `waitMs` must not be shorter. A waiter that gives up early goes down the
318
- * unlocked path *before* the holder has written its rotated pair, so the
319
- * already-rotated checks below still see the old token and spend it a second
320
- * time — the single-use double-spend this lock exists to prevent (CLO-164).
321
- * Equality is what makes "gave up" and "the holder is dead" the same condition.
322
- */
323
- export const SESSION_LOCK_OPTIONS = {
324
- staleMs: API_AUTH_CONFIG_TIMEOUT_MS + WORKOS_AUTH_REQUEST_TIMEOUT_MS + 15_000,
325
- waitMs: API_AUTH_CONFIG_TIMEOUT_MS + WORKOS_AUTH_REQUEST_TIMEOUT_MS + 15_000,
326
- // That wait budget is 90s, so silence is not an option. Straight to stderr:
327
- // `logger` writes to a file nobody is watching, and clack would assume an
328
- // interactive command context that `lib/` does not have — while stderr keeps
329
- // `--json` stdout parseable.
330
- onWait: () => {
331
- process.stderr.write(`Waiting for another ${cloudInvocation()} command to finish refreshing the session...\n`);
332
- },
333
- };
334
- /**
335
- * Serializes everything that spends the single-use refresh token or rewrites
336
- * `auth.json`, across processes. Every such call site must go through this —
337
- * guarding one of them leaves the double-spend fully reachable via the others.
338
- *
339
- * The callback receives whether the lock was actually held; see `withFileLock`.
340
- */
341
- export function withSessionLock(fn) {
342
- return withFileLock(REFRESH_LOCK_FILE, SESSION_LOCK_OPTIONS, fn);
343
- }
344
- /**
345
- * Pass the access token that got the 401. If the stored config has moved on
346
- * from it, another process (or an earlier command) already rotated the pair and
347
- * its access token is reused — refresh tokens are single-use, so spending ours
348
- * on a redundant exchange is what strands sessions. Reuse requires provable
349
- * lifetime left; see `hasUsableLifetime`.
350
- */
351
- export async function refreshAccessToken(failedAccessToken) {
352
- if (activeRefresh) {
353
- return activeRefresh;
354
- }
355
- activeRefresh = withSessionLock((held) => doRefresh(failedAccessToken, held)).finally(() => {
356
- activeRefresh = null;
357
- });
358
- return activeRefresh;
359
- }
360
- /**
361
- * Re-mint the stored session scoped to a different organization, then persist
362
- * it. The read-exchange-write runs as one locked unit and re-reads inside the
363
- * lock: a concurrent refresh may have rotated the pair since the caller last
364
- * looked, and spreading a stale snapshot over it would write back a refresh
365
- * token the authentication service has already retired. Atomic rename stops
366
- * torn files; it does nothing about lost updates.
367
- */
368
- export function rotateActiveOrganization(target) {
369
- return withSessionLock(async (held) => {
370
- const config = readAuthConfig();
371
- if (!config?.refreshToken) {
372
- throw new SessionRefreshError(`No refresh token available. Run \`${cloudInvocation()} login\` to authenticate.`);
373
- }
374
- assertReplacementIsStorable(withActiveOrganization(config, target));
375
- let pair;
376
- try {
377
- pair = await exchangeRefreshToken(config.refreshToken, target.workosOrgId);
378
- }
379
- catch (error) {
380
- if (!(error instanceof RefreshTokenRejectedError)) {
381
- throw error;
382
- }
383
- // Ran unlocked and lost the race: another process spent our refresh
384
- // token. Its replacement is on disk, so the switch can still succeed.
385
- const rotated = readRotatedConfig(config.refreshToken);
386
- if (!rotated) {
387
- discardIfRevoked(config.refreshToken, held);
388
- throw error;
389
- }
390
- // A second single-use token needs its own proof.
391
- assertReplacementIsStorable(withActiveOrganization(rotated, target));
392
- logger.debug("Refresh token was consumed by another process; retrying org switch");
393
- pair = await exchangeRefreshToken(rotated.refreshToken, target.workosOrgId);
394
- }
395
- const next = {
396
- // Re-read once more: the exchange is the slow part, and a retry above
397
- // means another process wrote in the meantime.
398
- ...withActiveOrganization(readAuthConfig() ?? config, target),
399
- accessToken: pair.accessToken,
400
- refreshToken: pair.refreshToken,
401
- };
402
- writeAuthConfig(next);
403
- return next;
404
- });
405
- }
406
- // One shape, so the probe measures what the write stores.
407
- // `target.organizations` can be longer than the list on disk.
408
- function withActiveOrganization(base, target) {
409
- return {
410
- ...base,
411
- activeOrganizationId: target.organizationId,
412
- organizations: target.organizations,
413
- };
414
- }
415
- async function doRefresh(failedAccessToken, held) {
416
- const config = readAuthConfig();
417
- if (!config?.refreshToken) {
418
- // A SessionRefreshError so the specific message survives the API client's
419
- // wrapping instead of being flattened to the generic one.
420
- throw new SessionRefreshError(`No refresh token available. Run \`${cloudInvocation()} login\` to authenticate.`);
421
- }
422
- // When the lock was held this sees whatever the process ahead of us in the
423
- // queue wrote. Unlocked it is only an optimisation, and the rejection path
424
- // below carries the recovery.
425
- //
426
- // Falling through when the stored token has no life left is safe: `config`
427
- // was just re-read, so `config.refreshToken` is the rotated one, not the
428
- // caller's stale snapshot.
429
- if (failedAccessToken &&
430
- config.accessToken &&
431
- config.accessToken !== failedAccessToken &&
432
- hasUsableLifetime(config.accessToken)) {
433
- logger.debug("Another process already refreshed the session; reusing its access token");
434
- return config.accessToken;
435
- }
436
- // Preserve the active org across a routine refresh: re-mint for the same
437
- // WorkOS org so the token's permissions stay scoped to it. An unscoped
438
- // refresh would fall back to the user's WorkOS default org — the exact
439
- // split-state this whole mechanism exists to prevent — so when an active
440
- // org is set we require its workosOrgId. A config that predates the
441
- // workosOrgId field (and so can't be scoped) is treated as stale: better
442
- // a clear "re-login" error than a silently mis-scoped token that 403s on
443
- // every permissioned call.
444
- let activeWorkosOrgId;
445
- if (config.activeOrganizationId) {
446
- const activeOrg = config.organizations.find((o) => o.id === config.activeOrganizationId);
447
- if (!activeOrg?.workosOrgId) {
448
- throw new SessionRefreshError(`Your CLI session predates organization scoping. Run \`${cloudInvocation()} login\` to re-authenticate.`);
449
- }
450
- activeWorkosOrgId = activeOrg.workosOrgId;
451
- }
452
- // After the reuse check above, which writes nothing and so must not be
453
- // refused for an unwritable directory.
454
- assertReplacementIsStorable(config);
455
- // The config the fresh pair is spread over. Replaced on the recovery path
456
- // below, where another process wrote after we read.
457
- let baseConfig = config;
458
- let pair;
459
- try {
460
- pair = await exchangeRefreshToken(config.refreshToken, activeWorkosOrgId);
461
- }
462
- catch (error) {
463
- if (!(error instanceof RefreshTokenRejectedError)) {
464
- throw error;
465
- }
466
- // Consumed, not revoked: a process that raced past the lock spent our
467
- // refresh token and stored a working pair, so the session lives on.
468
- const rotated = readRotatedConfig(config.refreshToken);
469
- if (!rotated) {
470
- discardIfRevoked(config.refreshToken, held);
471
- throw error;
472
- }
473
- if (hasUsableLifetime(rotated.accessToken)) {
474
- logger.debug("Refresh token was consumed by another process; reusing its access token");
475
- return rotated.accessToken;
476
- }
477
- // Its access token has aged out, so returning it would only burn the
478
- // command's single retry. Spend its refresh token instead — the session
479
- // lock is what keeps that second spend serialized.
480
- // A second single-use token needs its own proof.
481
- assertReplacementIsStorable(rotated);
482
- logger.debug("Refresh token was consumed by another process; retrying with its rotated token");
483
- pair = await exchangeRefreshToken(rotated.refreshToken, activeWorkosOrgId);
484
- baseConfig = readAuthConfig() ?? rotated;
485
- }
486
- writeAuthConfig({
487
- ...baseConfig,
488
- accessToken: pair.accessToken,
489
- refreshToken: pair.refreshToken,
490
- });
491
- return pair.accessToken;
492
- }
493
- function readRotatedConfig(usedRefreshToken) {
494
- const latest = readAuthConfig();
495
- if (!latest?.accessToken || latest.refreshToken === usedRefreshToken) {
496
- return null;
497
- }
498
- return latest;
499
- }
500
- /**
501
- * The only path that discards credentials, so both guards matter.
502
- *
503
- * `held` — without the lock we may have raced past a process that legitimately
504
- * spent the token, and an `invalid_grant` becomes unattributable: it means
505
- * "dead token" and "someone beat me to it" equally. Deleting on a guess is how
506
- * a recoverable race turns into a forced browser login.
507
- *
508
- * The re-read — compare-and-clear immediately before unlinking, so a pair the
509
- * winner wrote between the rejection and here survives. Not airtight (there is
510
- * no atomic compare-and-unlink), but the window shrinks to microseconds and the
511
- * `held` gate covers the case that actually produced CLO-164.
512
- */
513
- function discardIfRevoked(spentRefreshToken, held) {
514
- if (!held) {
515
- logger.debug("Refresh rejected while unlocked; keeping credentials for the next attempt");
516
- return;
517
- }
518
- const latest = readAuthConfig();
519
- if (!latest || latest.refreshToken !== spentRefreshToken) {
520
- logger.debug("Stored refresh token already moved on; keeping credentials");
521
- return;
522
- }
523
- clearAuthConfig();
16
+ return { kind: "userLogin", accessToken: await getUserAccessToken() };
524
17
  }
525
18
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/lib/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/lib/auth.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAQrD,gGAAgG;AAChG,oGAAoG;AACpG,yFAAyF;AACzF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAA0B;IAChE,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;IACvE,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,yBAAyB,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,aAAa,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,EAAE,EAAE,CAAC;AACxE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { CliLoginFailure } from "./errors.js";
2
+ export interface CliLogin {
3
+ getAccessToken(): Promise<string | undefined>;
4
+ refreshAccessToken(failedAccessToken: string): Promise<string>;
5
+ consoleApiUrl(): string;
6
+ classify(error: unknown): CliLoginFailure;
7
+ }
8
+ export declare const CORE_ERROR_FAILURES: readonly [readonly ["NotLoggedInError", "notLoggedIn"], readonly ["SessionRejectedError", "sessionRejected"], readonly ["ReauthenticationRequiredError", "reauthenticationRequired"], readonly ["SessionLockUnavailableError", "lockUnavailable"], readonly ["SessionUnstorableError", "unstorable"], readonly ["SessionRefreshUnavailableError", "refreshUnavailable"]];
9
+ export declare function loadCliLogin(): CliLogin;
10
+ export declare function getUserAccessToken(): Promise<string>;
11
+ export declare function refreshUserAccessToken(failedAccessToken: string): Promise<string>;
12
+ //# sourceMappingURL=cli-login.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-login.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/cli-login.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,eAAe,EAAE,MAAM,aAAa,CAAC;AAS7D,MAAM,WAAW,QAAQ;IACvB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAC9C,kBAAkB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/D,aAAa,IAAI,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;CAC3C;AAWD,eAAO,MAAM,mBAAmB,0WAOtB,CAAC;AAIX,wBAAgB,YAAY,IAAI,QAAQ,CAKvC;AAGD,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAc1D;AAID,wBAAsB,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOvF"}