@atlasauth/cli 0.25.0 → 0.26.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 (546) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +26 -5
  3. package/dist/args.d.ts +631 -0
  4. package/dist/args.js +304 -0
  5. package/dist/args.js.map +1 -0
  6. package/dist/cli.d.ts +2 -0
  7. package/dist/cli.js +19 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/actions-gallery.d.ts +8 -0
  10. package/dist/commands/actions-gallery.js +197 -0
  11. package/dist/commands/actions-gallery.js.map +1 -0
  12. package/dist/commands/actions.d.ts +13 -0
  13. package/dist/commands/actions.js +135 -0
  14. package/dist/commands/actions.js.map +1 -0
  15. package/dist/commands/admin.d.ts +49 -0
  16. package/dist/commands/admin.js +353 -0
  17. package/dist/commands/admin.js.map +1 -0
  18. package/dist/commands/api-keys.d.ts +4 -0
  19. package/dist/commands/api-keys.js +96 -0
  20. package/dist/commands/api-keys.js.map +1 -0
  21. package/dist/commands/auth.d.ts +25 -0
  22. package/dist/commands/auth.js +102 -0
  23. package/dist/commands/auth.js.map +1 -0
  24. package/dist/commands/config.d.ts +128 -0
  25. package/dist/commands/config.js +1822 -0
  26. package/dist/commands/config.js.map +1 -0
  27. package/dist/commands/csp.d.ts +32 -0
  28. package/dist/commands/csp.js +180 -0
  29. package/dist/commands/csp.js.map +1 -0
  30. package/dist/commands/dev.d.ts +8 -0
  31. package/dist/commands/dev.js +84 -0
  32. package/dist/commands/dev.js.map +1 -0
  33. package/dist/commands/doctor-scan.d.ts +27 -0
  34. package/dist/commands/doctor-scan.js +221 -0
  35. package/dist/commands/doctor-scan.js.map +1 -0
  36. package/dist/commands/fga.d.ts +10 -0
  37. package/dist/commands/fga.js +146 -0
  38. package/dist/commands/fga.js.map +1 -0
  39. package/dist/commands/golive.d.ts +40 -0
  40. package/dist/commands/golive.js +297 -0
  41. package/dist/commands/golive.js.map +1 -0
  42. package/dist/commands/id-accounts.d.ts +13 -0
  43. package/dist/commands/id-accounts.js +195 -0
  44. package/dist/commands/id-accounts.js.map +1 -0
  45. package/dist/commands/import-better-auth.d.ts +3 -0
  46. package/dist/commands/import-better-auth.js +164 -0
  47. package/dist/commands/import-better-auth.js.map +1 -0
  48. package/dist/commands/import-jsonl.d.ts +50 -0
  49. package/dist/commands/import-jsonl.js +252 -0
  50. package/dist/commands/import-jsonl.js.map +1 -0
  51. package/dist/commands/import.d.ts +3 -0
  52. package/dist/commands/import.js +133 -0
  53. package/dist/commands/import.js.map +1 -0
  54. package/dist/commands/info.d.ts +75 -0
  55. package/dist/commands/info.js +362 -0
  56. package/dist/commands/info.js.map +1 -0
  57. package/dist/commands/init-next.d.ts +4 -0
  58. package/dist/commands/init-next.js +86 -0
  59. package/dist/commands/init-next.js.map +1 -0
  60. package/dist/commands/init.d.ts +3 -0
  61. package/dist/commands/init.js +525 -0
  62. package/dist/commands/init.js.map +1 -0
  63. package/dist/commands/integrations.d.ts +8 -0
  64. package/dist/commands/integrations.js +112 -0
  65. package/dist/commands/integrations.js.map +1 -0
  66. package/dist/commands/listen.d.ts +17 -0
  67. package/dist/commands/listen.js +223 -0
  68. package/dist/commands/listen.js.map +1 -0
  69. package/dist/commands/mcp.d.ts +38 -0
  70. package/dist/commands/mcp.js +111 -0
  71. package/dist/commands/mcp.js.map +1 -0
  72. package/dist/commands/migrate.d.ts +16 -0
  73. package/dist/commands/migrate.js +114 -0
  74. package/dist/commands/migrate.js.map +1 -0
  75. package/dist/commands/move-origin.d.ts +11 -0
  76. package/dist/commands/move-origin.js +95 -0
  77. package/dist/commands/move-origin.js.map +1 -0
  78. package/dist/commands/operator.d.ts +18 -0
  79. package/dist/commands/operator.js +238 -0
  80. package/dist/commands/operator.js.map +1 -0
  81. package/dist/commands/orgs.d.ts +4 -0
  82. package/dist/commands/orgs.js +72 -0
  83. package/dist/commands/orgs.js.map +1 -0
  84. package/dist/commands/pages.d.ts +14 -0
  85. package/dist/commands/pages.js +113 -0
  86. package/dist/commands/pages.js.map +1 -0
  87. package/dist/commands/partner-platforms.d.ts +10 -0
  88. package/dist/commands/partner-platforms.js +157 -0
  89. package/dist/commands/partner-platforms.js.map +1 -0
  90. package/dist/commands/project-commands.d.ts +38 -0
  91. package/dist/commands/project-commands.js +431 -0
  92. package/dist/commands/project-commands.js.map +1 -0
  93. package/dist/commands/referrals.d.ts +69 -0
  94. package/dist/commands/referrals.js +1056 -0
  95. package/dist/commands/referrals.js.map +1 -0
  96. package/dist/commands/resources.d.ts +44 -0
  97. package/dist/commands/resources.js +234 -0
  98. package/dist/commands/resources.js.map +1 -0
  99. package/dist/commands/sessions.d.ts +4 -0
  100. package/dist/commands/sessions.js +28 -0
  101. package/dist/commands/sessions.js.map +1 -0
  102. package/dist/commands/setup-guide.d.ts +3 -0
  103. package/dist/commands/setup-guide.js +38 -0
  104. package/dist/commands/setup-guide.js.map +1 -0
  105. package/dist/commands/shared.d.ts +38 -0
  106. package/dist/commands/shared.js +69 -0
  107. package/dist/commands/shared.js.map +1 -0
  108. package/dist/commands/status.d.ts +3 -0
  109. package/dist/commands/status.js +77 -0
  110. package/dist/commands/status.js.map +1 -0
  111. package/dist/commands/users.d.ts +4 -0
  112. package/dist/commands/users.js +111 -0
  113. package/dist/commands/users.js.map +1 -0
  114. package/dist/commands/webhooks.d.ts +34 -0
  115. package/dist/commands/webhooks.js +301 -0
  116. package/dist/commands/webhooks.js.map +1 -0
  117. package/dist/config-http.d.ts +38 -0
  118. package/dist/config-http.js +70 -0
  119. package/dist/config-http.js.map +1 -0
  120. package/dist/config.d.ts +64 -0
  121. package/dist/config.js +69 -0
  122. package/dist/config.js.map +1 -0
  123. package/dist/context.d.ts +89 -0
  124. package/dist/context.js +32 -0
  125. package/dist/context.js.map +1 -0
  126. package/dist/define-config.d.ts +9 -0
  127. package/dist/define-config.js +8 -0
  128. package/dist/define-config.js.map +1 -0
  129. package/dist/errors.d.ts +15 -0
  130. package/dist/errors.js +25 -0
  131. package/dist/errors.js.map +1 -0
  132. package/dist/help.d.ts +8 -0
  133. package/dist/help.js +926 -0
  134. package/dist/help.js.map +1 -0
  135. package/dist/import/csv.d.ts +6 -0
  136. package/dist/import/csv.js +63 -0
  137. package/dist/import/csv.js.map +1 -0
  138. package/dist/import/vendors.d.ts +57 -0
  139. package/dist/import/vendors.js +568 -0
  140. package/dist/import/vendors.js.map +1 -0
  141. package/dist/index.d.ts +33 -0
  142. package/dist/index.js +81 -0
  143. package/dist/index.js.map +1 -0
  144. package/dist/io.d.ts +21 -0
  145. package/dist/io.js +28 -0
  146. package/dist/io.js.map +1 -0
  147. package/dist/migrate/appwrite/plugin.d.ts +2 -0
  148. package/dist/migrate/appwrite/plugin.js +103 -0
  149. package/dist/migrate/appwrite/plugin.js.map +1 -0
  150. package/dist/migrate/auth0/plugin.d.ts +2 -0
  151. package/dist/migrate/auth0/plugin.js +126 -0
  152. package/dist/migrate/auth0/plugin.js.map +1 -0
  153. package/dist/migrate/authentik/plugin.d.ts +2 -0
  154. package/dist/migrate/authentik/plugin.js +135 -0
  155. package/dist/migrate/authentik/plugin.js.map +1 -0
  156. package/dist/migrate/azure-ad-b2c/plugin.d.ts +8 -0
  157. package/dist/migrate/azure-ad-b2c/plugin.js +165 -0
  158. package/dist/migrate/azure-ad-b2c/plugin.js.map +1 -0
  159. package/dist/migrate/better-auth/integration.d.ts +59 -0
  160. package/dist/migrate/better-auth/integration.js +81 -0
  161. package/dist/migrate/better-auth/integration.js.map +1 -0
  162. package/dist/migrate/better-auth/orchestrator.d.ts +43 -0
  163. package/dist/migrate/better-auth/orchestrator.js +525 -0
  164. package/dist/migrate/better-auth/orchestrator.js.map +1 -0
  165. package/dist/migrate/better-auth/output.d.ts +20 -0
  166. package/dist/migrate/better-auth/output.js +146 -0
  167. package/dist/migrate/better-auth/output.js.map +1 -0
  168. package/dist/migrate/better-auth/translate.d.ts +77 -0
  169. package/dist/migrate/better-auth/translate.js +1989 -0
  170. package/dist/migrate/better-auth/translate.js.map +1 -0
  171. package/dist/migrate/clerk/plugin.d.ts +2 -0
  172. package/dist/migrate/clerk/plugin.js +76 -0
  173. package/dist/migrate/clerk/plugin.js.map +1 -0
  174. package/dist/migrate/cognito/plugin.d.ts +5 -0
  175. package/dist/migrate/cognito/plugin.js +170 -0
  176. package/dist/migrate/cognito/plugin.js.map +1 -0
  177. package/dist/migrate/corbado/plugin.d.ts +2 -0
  178. package/dist/migrate/corbado/plugin.js +63 -0
  179. package/dist/migrate/corbado/plugin.js.map +1 -0
  180. package/dist/migrate/descope/plugin.d.ts +2 -0
  181. package/dist/migrate/descope/plugin.js +83 -0
  182. package/dist/migrate/descope/plugin.js.map +1 -0
  183. package/dist/migrate/entra-external-id/plugin.d.ts +8 -0
  184. package/dist/migrate/entra-external-id/plugin.js +12 -0
  185. package/dist/migrate/entra-external-id/plugin.js.map +1 -0
  186. package/dist/migrate/export/appwrite-config.d.ts +28 -0
  187. package/dist/migrate/export/appwrite-config.js +170 -0
  188. package/dist/migrate/export/appwrite-config.js.map +1 -0
  189. package/dist/migrate/export/appwrite.d.ts +51 -0
  190. package/dist/migrate/export/appwrite.js +288 -0
  191. package/dist/migrate/export/appwrite.js.map +1 -0
  192. package/dist/migrate/export/auth0-config.d.ts +29 -0
  193. package/dist/migrate/export/auth0-config.js +249 -0
  194. package/dist/migrate/export/auth0-config.js.map +1 -0
  195. package/dist/migrate/export/auth0.d.ts +62 -0
  196. package/dist/migrate/export/auth0.js +575 -0
  197. package/dist/migrate/export/auth0.js.map +1 -0
  198. package/dist/migrate/export/authentik-config.d.ts +45 -0
  199. package/dist/migrate/export/authentik-config.js +357 -0
  200. package/dist/migrate/export/authentik-config.js.map +1 -0
  201. package/dist/migrate/export/authentik.d.ts +110 -0
  202. package/dist/migrate/export/authentik.js +838 -0
  203. package/dist/migrate/export/authentik.js.map +1 -0
  204. package/dist/migrate/export/azure-config.d.ts +58 -0
  205. package/dist/migrate/export/azure-config.js +344 -0
  206. package/dist/migrate/export/azure-config.js.map +1 -0
  207. package/dist/migrate/export/azure.d.ts +85 -0
  208. package/dist/migrate/export/azure.js +373 -0
  209. package/dist/migrate/export/azure.js.map +1 -0
  210. package/dist/migrate/export/clerk-config.d.ts +26 -0
  211. package/dist/migrate/export/clerk-config.js +227 -0
  212. package/dist/migrate/export/clerk-config.js.map +1 -0
  213. package/dist/migrate/export/clerk.d.ts +46 -0
  214. package/dist/migrate/export/clerk.js +486 -0
  215. package/dist/migrate/export/clerk.js.map +1 -0
  216. package/dist/migrate/export/cognito-config.d.ts +25 -0
  217. package/dist/migrate/export/cognito-config.js +273 -0
  218. package/dist/migrate/export/cognito-config.js.map +1 -0
  219. package/dist/migrate/export/cognito.d.ts +103 -0
  220. package/dist/migrate/export/cognito.js +441 -0
  221. package/dist/migrate/export/cognito.js.map +1 -0
  222. package/dist/migrate/export/corbado-config.d.ts +20 -0
  223. package/dist/migrate/export/corbado-config.js +63 -0
  224. package/dist/migrate/export/corbado-config.js.map +1 -0
  225. package/dist/migrate/export/corbado.d.ts +37 -0
  226. package/dist/migrate/export/corbado.js +132 -0
  227. package/dist/migrate/export/corbado.js.map +1 -0
  228. package/dist/migrate/export/descope.d.ts +35 -0
  229. package/dist/migrate/export/descope.js +208 -0
  230. package/dist/migrate/export/descope.js.map +1 -0
  231. package/dist/migrate/export/fake-vendor.test-helper.d.ts +27 -0
  232. package/dist/migrate/export/fake-vendor.test-helper.js +41 -0
  233. package/dist/migrate/export/fake-vendor.test-helper.js.map +1 -0
  234. package/dist/migrate/export/firebase-config.d.ts +24 -0
  235. package/dist/migrate/export/firebase-config.js +215 -0
  236. package/dist/migrate/export/firebase-config.js.map +1 -0
  237. package/dist/migrate/export/firebase.d.ts +102 -0
  238. package/dist/migrate/export/firebase.js +464 -0
  239. package/dist/migrate/export/firebase.js.map +1 -0
  240. package/dist/migrate/export/frameworks/app-users.d.ts +42 -0
  241. package/dist/migrate/export/frameworks/app-users.js +161 -0
  242. package/dist/migrate/export/frameworks/app-users.js.map +1 -0
  243. package/dist/migrate/export/frameworks/authjs.d.ts +41 -0
  244. package/dist/migrate/export/frameworks/authjs.js +146 -0
  245. package/dist/migrate/export/frameworks/authjs.js.map +1 -0
  246. package/dist/migrate/export/frameworks/devise.d.ts +39 -0
  247. package/dist/migrate/export/frameworks/devise.js +218 -0
  248. package/dist/migrate/export/frameworks/devise.js.map +1 -0
  249. package/dist/migrate/export/frameworks/django.d.ts +45 -0
  250. package/dist/migrate/export/frameworks/django.js +315 -0
  251. package/dist/migrate/export/frameworks/django.js.map +1 -0
  252. package/dist/migrate/export/frameworks/lucia.d.ts +42 -0
  253. package/dist/migrate/export/frameworks/lucia.js +263 -0
  254. package/dist/migrate/export/frameworks/lucia.js.map +1 -0
  255. package/dist/migrate/export/frameworks/tables.d.ts +90 -0
  256. package/dist/migrate/export/frameworks/tables.js +325 -0
  257. package/dist/migrate/export/frameworks/tables.js.map +1 -0
  258. package/dist/migrate/export/frameworks/webauthn.d.ts +25 -0
  259. package/dist/migrate/export/frameworks/webauthn.js +130 -0
  260. package/dist/migrate/export/frameworks/webauthn.js.map +1 -0
  261. package/dist/migrate/export/frontegg-config.d.ts +29 -0
  262. package/dist/migrate/export/frontegg-config.js +238 -0
  263. package/dist/migrate/export/frontegg-config.js.map +1 -0
  264. package/dist/migrate/export/frontegg.d.ts +67 -0
  265. package/dist/migrate/export/frontegg.js +410 -0
  266. package/dist/migrate/export/frontegg.js.map +1 -0
  267. package/dist/migrate/export/fusionauth-config.d.ts +26 -0
  268. package/dist/migrate/export/fusionauth-config.js +226 -0
  269. package/dist/migrate/export/fusionauth-config.js.map +1 -0
  270. package/dist/migrate/export/fusionauth.d.ts +99 -0
  271. package/dist/migrate/export/fusionauth.js +642 -0
  272. package/dist/migrate/export/fusionauth.js.map +1 -0
  273. package/dist/migrate/export/hanko-config.d.ts +27 -0
  274. package/dist/migrate/export/hanko-config.js +265 -0
  275. package/dist/migrate/export/hanko-config.js.map +1 -0
  276. package/dist/migrate/export/hanko.d.ts +52 -0
  277. package/dist/migrate/export/hanko.js +605 -0
  278. package/dist/migrate/export/hanko.js.map +1 -0
  279. package/dist/migrate/export/keycloak-config.d.ts +19 -0
  280. package/dist/migrate/export/keycloak-config.js +219 -0
  281. package/dist/migrate/export/keycloak-config.js.map +1 -0
  282. package/dist/migrate/export/keycloak.d.ts +155 -0
  283. package/dist/migrate/export/keycloak.js +878 -0
  284. package/dist/migrate/export/keycloak.js.map +1 -0
  285. package/dist/migrate/export/kinde-descope-config.d.ts +38 -0
  286. package/dist/migrate/export/kinde-descope-config.js +172 -0
  287. package/dist/migrate/export/kinde-descope-config.js.map +1 -0
  288. package/dist/migrate/export/kinde.d.ts +57 -0
  289. package/dist/migrate/export/kinde.js +333 -0
  290. package/dist/migrate/export/kinde.js.map +1 -0
  291. package/dist/migrate/export/ldap.d.ts +53 -0
  292. package/dist/migrate/export/ldap.js +277 -0
  293. package/dist/migrate/export/ldap.js.map +1 -0
  294. package/dist/migrate/export/logto-config.d.ts +27 -0
  295. package/dist/migrate/export/logto-config.js +264 -0
  296. package/dist/migrate/export/logto-config.js.map +1 -0
  297. package/dist/migrate/export/logto.d.ts +150 -0
  298. package/dist/migrate/export/logto.js +809 -0
  299. package/dist/migrate/export/logto.js.map +1 -0
  300. package/dist/migrate/export/magic-config.d.ts +14 -0
  301. package/dist/migrate/export/magic-config.js +28 -0
  302. package/dist/migrate/export/magic-config.js.map +1 -0
  303. package/dist/migrate/export/magic.d.ts +31 -0
  304. package/dist/migrate/export/magic.js +93 -0
  305. package/dist/migrate/export/magic.js.map +1 -0
  306. package/dist/migrate/export/mini-yaml.d.ts +19 -0
  307. package/dist/migrate/export/mini-yaml.js +581 -0
  308. package/dist/migrate/export/mini-yaml.js.map +1 -0
  309. package/dist/migrate/export/nhost-config.d.ts +26 -0
  310. package/dist/migrate/export/nhost-config.js +360 -0
  311. package/dist/migrate/export/nhost-config.js.map +1 -0
  312. package/dist/migrate/export/nhost.d.ts +64 -0
  313. package/dist/migrate/export/nhost.js +304 -0
  314. package/dist/migrate/export/nhost.js.map +1 -0
  315. package/dist/migrate/export/okta-config.d.ts +30 -0
  316. package/dist/migrate/export/okta-config.js +205 -0
  317. package/dist/migrate/export/okta-config.js.map +1 -0
  318. package/dist/migrate/export/okta.d.ts +43 -0
  319. package/dist/migrate/export/okta.js +337 -0
  320. package/dist/migrate/export/okta.js.map +1 -0
  321. package/dist/migrate/export/onelogin.d.ts +22 -0
  322. package/dist/migrate/export/onelogin.js +123 -0
  323. package/dist/migrate/export/onelogin.js.map +1 -0
  324. package/dist/migrate/export/ory-config.d.ts +58 -0
  325. package/dist/migrate/export/ory-config.js +451 -0
  326. package/dist/migrate/export/ory-config.js.map +1 -0
  327. package/dist/migrate/export/ory.d.ts +81 -0
  328. package/dist/migrate/export/ory.js +555 -0
  329. package/dist/migrate/export/ory.js.map +1 -0
  330. package/dist/migrate/export/password-detect.d.ts +29 -0
  331. package/dist/migrate/export/password-detect.js +81 -0
  332. package/dist/migrate/export/password-detect.js.map +1 -0
  333. package/dist/migrate/export/pingone.d.ts +36 -0
  334. package/dist/migrate/export/pingone.js +218 -0
  335. package/dist/migrate/export/pingone.js.map +1 -0
  336. package/dist/migrate/export/plugin-kit.d.ts +25 -0
  337. package/dist/migrate/export/plugin-kit.js +82 -0
  338. package/dist/migrate/export/plugin-kit.js.map +1 -0
  339. package/dist/migrate/export/pocketbase-config.d.ts +28 -0
  340. package/dist/migrate/export/pocketbase-config.js +180 -0
  341. package/dist/migrate/export/pocketbase-config.js.map +1 -0
  342. package/dist/migrate/export/pocketbase.d.ts +52 -0
  343. package/dist/migrate/export/pocketbase.js +243 -0
  344. package/dist/migrate/export/pocketbase.js.map +1 -0
  345. package/dist/migrate/export/project-files.d.ts +15 -0
  346. package/dist/migrate/export/project-files.js +43 -0
  347. package/dist/migrate/export/project-files.js.map +1 -0
  348. package/dist/migrate/export/propelauth-config.d.ts +18 -0
  349. package/dist/migrate/export/propelauth-config.js +58 -0
  350. package/dist/migrate/export/propelauth-config.js.map +1 -0
  351. package/dist/migrate/export/propelauth-harness.test-helper.d.ts +62 -0
  352. package/dist/migrate/export/propelauth-harness.test-helper.js +109 -0
  353. package/dist/migrate/export/propelauth-harness.test-helper.js.map +1 -0
  354. package/dist/migrate/export/propelauth.d.ts +48 -0
  355. package/dist/migrate/export/propelauth.js +255 -0
  356. package/dist/migrate/export/propelauth.js.map +1 -0
  357. package/dist/migrate/export/record-set.d.ts +44 -0
  358. package/dist/migrate/export/record-set.js +98 -0
  359. package/dist/migrate/export/record-set.js.map +1 -0
  360. package/dist/migrate/export/source-lines.d.ts +17 -0
  361. package/dist/migrate/export/source-lines.js +43 -0
  362. package/dist/migrate/export/source-lines.js.map +1 -0
  363. package/dist/migrate/export/sso-metadata.d.ts +47 -0
  364. package/dist/migrate/export/sso-metadata.js +180 -0
  365. package/dist/migrate/export/sso-metadata.js.map +1 -0
  366. package/dist/migrate/export/stytch-config.d.ts +22 -0
  367. package/dist/migrate/export/stytch-config.js +102 -0
  368. package/dist/migrate/export/stytch-config.js.map +1 -0
  369. package/dist/migrate/export/stytch.d.ts +68 -0
  370. package/dist/migrate/export/stytch.js +510 -0
  371. package/dist/migrate/export/stytch.js.map +1 -0
  372. package/dist/migrate/export/supabase-config.d.ts +48 -0
  373. package/dist/migrate/export/supabase-config.js +408 -0
  374. package/dist/migrate/export/supabase-config.js.map +1 -0
  375. package/dist/migrate/export/supabase.d.ts +86 -0
  376. package/dist/migrate/export/supabase.js +524 -0
  377. package/dist/migrate/export/supabase.js.map +1 -0
  378. package/dist/migrate/export/supertokens-config.d.ts +20 -0
  379. package/dist/migrate/export/supertokens-config.js +150 -0
  380. package/dist/migrate/export/supertokens-config.js.map +1 -0
  381. package/dist/migrate/export/supertokens.d.ts +125 -0
  382. package/dist/migrate/export/supertokens.js +464 -0
  383. package/dist/migrate/export/supertokens.js.map +1 -0
  384. package/dist/migrate/export/table.d.ts +35 -0
  385. package/dist/migrate/export/table.js +248 -0
  386. package/dist/migrate/export/table.js.map +1 -0
  387. package/dist/migrate/export/translate-kit.d.ts +46 -0
  388. package/dist/migrate/export/translate-kit.js +148 -0
  389. package/dist/migrate/export/translate-kit.js.map +1 -0
  390. package/dist/migrate/export/userfront-config.d.ts +15 -0
  391. package/dist/migrate/export/userfront-config.js +49 -0
  392. package/dist/migrate/export/userfront-config.js.map +1 -0
  393. package/dist/migrate/export/userfront.d.ts +38 -0
  394. package/dist/migrate/export/userfront.js +189 -0
  395. package/dist/migrate/export/userfront.js.map +1 -0
  396. package/dist/migrate/export/vendor-http.d.ts +46 -0
  397. package/dist/migrate/export/vendor-http.js +138 -0
  398. package/dist/migrate/export/vendor-http.js.map +1 -0
  399. package/dist/migrate/export/workos-config.d.ts +23 -0
  400. package/dist/migrate/export/workos-config.js +125 -0
  401. package/dist/migrate/export/workos-config.js.map +1 -0
  402. package/dist/migrate/export/workos.d.ts +46 -0
  403. package/dist/migrate/export/workos.js +272 -0
  404. package/dist/migrate/export/workos.js.map +1 -0
  405. package/dist/migrate/export/zip.d.ts +8 -0
  406. package/dist/migrate/export/zip.js +66 -0
  407. package/dist/migrate/export/zip.js.map +1 -0
  408. package/dist/migrate/export/zitadel-config.d.ts +37 -0
  409. package/dist/migrate/export/zitadel-config.js +279 -0
  410. package/dist/migrate/export/zitadel-config.js.map +1 -0
  411. package/dist/migrate/export/zitadel.d.ts +82 -0
  412. package/dist/migrate/export/zitadel.js +447 -0
  413. package/dist/migrate/export/zitadel.js.map +1 -0
  414. package/dist/migrate/firebase/plugin.d.ts +2 -0
  415. package/dist/migrate/firebase/plugin.js +152 -0
  416. package/dist/migrate/firebase/plugin.js.map +1 -0
  417. package/dist/migrate/framework/builtins.d.ts +2 -0
  418. package/dist/migrate/framework/builtins.js +52 -0
  419. package/dist/migrate/framework/builtins.js.map +1 -0
  420. package/dist/migrate/framework/commands.d.ts +20 -0
  421. package/dist/migrate/framework/commands.js +58 -0
  422. package/dist/migrate/framework/commands.js.map +1 -0
  423. package/dist/migrate/framework/custom.d.ts +12 -0
  424. package/dist/migrate/framework/custom.js +96 -0
  425. package/dist/migrate/framework/custom.js.map +1 -0
  426. package/dist/migrate/framework/orchestrator.d.ts +113 -0
  427. package/dist/migrate/framework/orchestrator.js +532 -0
  428. package/dist/migrate/framework/orchestrator.js.map +1 -0
  429. package/dist/migrate/framework/plugin.d.ts +167 -0
  430. package/dist/migrate/framework/plugin.js +3 -0
  431. package/dist/migrate/framework/plugin.js.map +1 -0
  432. package/dist/migrate/framework/registry.d.ts +11 -0
  433. package/dist/migrate/framework/registry.js +44 -0
  434. package/dist/migrate/framework/registry.js.map +1 -0
  435. package/dist/migrate/framework/report.d.ts +17 -0
  436. package/dist/migrate/framework/report.js +103 -0
  437. package/dist/migrate/framework/report.js.map +1 -0
  438. package/dist/migrate/frameworks/plugins.d.ts +29 -0
  439. package/dist/migrate/frameworks/plugins.js +402 -0
  440. package/dist/migrate/frameworks/plugins.js.map +1 -0
  441. package/dist/migrate/frameworks/report.d.ts +92 -0
  442. package/dist/migrate/frameworks/report.js +207 -0
  443. package/dist/migrate/frameworks/report.js.map +1 -0
  444. package/dist/migrate/frameworks/translate-js.d.ts +5 -0
  445. package/dist/migrate/frameworks/translate-js.js +503 -0
  446. package/dist/migrate/frameworks/translate-js.js.map +1 -0
  447. package/dist/migrate/frameworks/translate-rails-django.d.ts +3 -0
  448. package/dist/migrate/frameworks/translate-rails-django.js +1391 -0
  449. package/dist/migrate/frameworks/translate-rails-django.js.map +1 -0
  450. package/dist/migrate/frontegg/plugin.d.ts +2 -0
  451. package/dist/migrate/frontegg/plugin.js +78 -0
  452. package/dist/migrate/frontegg/plugin.js.map +1 -0
  453. package/dist/migrate/fusionauth/plugin.d.ts +2 -0
  454. package/dist/migrate/fusionauth/plugin.js +109 -0
  455. package/dist/migrate/fusionauth/plugin.js.map +1 -0
  456. package/dist/migrate/hanko/plugin.d.ts +2 -0
  457. package/dist/migrate/hanko/plugin.js +100 -0
  458. package/dist/migrate/hanko/plugin.js.map +1 -0
  459. package/dist/migrate/keycloak/plugin.d.ts +2 -0
  460. package/dist/migrate/keycloak/plugin.js +148 -0
  461. package/dist/migrate/keycloak/plugin.js.map +1 -0
  462. package/dist/migrate/kinde/plugin.d.ts +2 -0
  463. package/dist/migrate/kinde/plugin.js +105 -0
  464. package/dist/migrate/kinde/plugin.js.map +1 -0
  465. package/dist/migrate/ldap/plugin.d.ts +2 -0
  466. package/dist/migrate/ldap/plugin.js +73 -0
  467. package/dist/migrate/ldap/plugin.js.map +1 -0
  468. package/dist/migrate/logto/plugin.d.ts +2 -0
  469. package/dist/migrate/logto/plugin.js +131 -0
  470. package/dist/migrate/logto/plugin.js.map +1 -0
  471. package/dist/migrate/magic/plugin.d.ts +2 -0
  472. package/dist/migrate/magic/plugin.js +56 -0
  473. package/dist/migrate/magic/plugin.js.map +1 -0
  474. package/dist/migrate/nhost/plugin.d.ts +2 -0
  475. package/dist/migrate/nhost/plugin.js +115 -0
  476. package/dist/migrate/nhost/plugin.js.map +1 -0
  477. package/dist/migrate/oidc/plugin.d.ts +2 -0
  478. package/dist/migrate/oidc/plugin.js +73 -0
  479. package/dist/migrate/oidc/plugin.js.map +1 -0
  480. package/dist/migrate/okta/plugin.d.ts +2 -0
  481. package/dist/migrate/okta/plugin.js +105 -0
  482. package/dist/migrate/okta/plugin.js.map +1 -0
  483. package/dist/migrate/onelogin/plugin.d.ts +2 -0
  484. package/dist/migrate/onelogin/plugin.js +61 -0
  485. package/dist/migrate/onelogin/plugin.js.map +1 -0
  486. package/dist/migrate/ory/plugin.d.ts +2 -0
  487. package/dist/migrate/ory/plugin.js +186 -0
  488. package/dist/migrate/ory/plugin.js.map +1 -0
  489. package/dist/migrate/ping-identity/plugin.d.ts +2 -0
  490. package/dist/migrate/ping-identity/plugin.js +100 -0
  491. package/dist/migrate/ping-identity/plugin.js.map +1 -0
  492. package/dist/migrate/pocketbase/plugin.d.ts +2 -0
  493. package/dist/migrate/pocketbase/plugin.js +99 -0
  494. package/dist/migrate/pocketbase/plugin.js.map +1 -0
  495. package/dist/migrate/propelauth/plugin.d.ts +2 -0
  496. package/dist/migrate/propelauth/plugin.js +65 -0
  497. package/dist/migrate/propelauth/plugin.js.map +1 -0
  498. package/dist/migrate/saml/plugin.d.ts +2 -0
  499. package/dist/migrate/saml/plugin.js +79 -0
  500. package/dist/migrate/saml/plugin.js.map +1 -0
  501. package/dist/migrate/stytch/plugin.d.ts +2 -0
  502. package/dist/migrate/stytch/plugin.js +97 -0
  503. package/dist/migrate/stytch/plugin.js.map +1 -0
  504. package/dist/migrate/supabase/plugin.d.ts +2 -0
  505. package/dist/migrate/supabase/plugin.js +149 -0
  506. package/dist/migrate/supabase/plugin.js.map +1 -0
  507. package/dist/migrate/supertokens/plugin.d.ts +2 -0
  508. package/dist/migrate/supertokens/plugin.js +114 -0
  509. package/dist/migrate/supertokens/plugin.js.map +1 -0
  510. package/dist/migrate/user-table/plugin.d.ts +2 -0
  511. package/dist/migrate/user-table/plugin.js +62 -0
  512. package/dist/migrate/user-table/plugin.js.map +1 -0
  513. package/dist/migrate/userfront/plugin.d.ts +2 -0
  514. package/dist/migrate/userfront/plugin.js +60 -0
  515. package/dist/migrate/userfront/plugin.js.map +1 -0
  516. package/dist/migrate/workos/plugin.d.ts +2 -0
  517. package/dist/migrate/workos/plugin.js +81 -0
  518. package/dist/migrate/workos/plugin.js.map +1 -0
  519. package/dist/migrate/zitadel/plugin.d.ts +2 -0
  520. package/dist/migrate/zitadel/plugin.js +114 -0
  521. package/dist/migrate/zitadel/plugin.js.map +1 -0
  522. package/dist/output.d.ts +41 -0
  523. package/dist/output.js +72 -0
  524. package/dist/output.js.map +1 -0
  525. package/dist/project.d.ts +64 -0
  526. package/dist/project.js +86 -0
  527. package/dist/project.js.map +1 -0
  528. package/dist/prompt.d.ts +15 -0
  529. package/dist/prompt.js +46 -0
  530. package/dist/prompt.js.map +1 -0
  531. package/dist/redact.d.ts +41 -0
  532. package/dist/redact.js +115 -0
  533. package/dist/redact.js.map +1 -0
  534. package/dist/run.d.ts +12 -0
  535. package/dist/run.js +169 -0
  536. package/dist/run.js.map +1 -0
  537. package/dist/secrets.d.ts +41 -0
  538. package/dist/secrets.js +142 -0
  539. package/dist/secrets.js.map +1 -0
  540. package/dist/serialize.d.ts +30 -0
  541. package/dist/serialize.js +131 -0
  542. package/dist/serialize.js.map +1 -0
  543. package/dist/version.d.ts +7 -0
  544. package/dist/version.js +21 -0
  545. package/dist/version.js.map +1 -0
  546. package/package.json +3 -3
package/dist/help.js ADDED
@@ -0,0 +1,926 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.COMMAND_HELP = exports.TOP_HELP = void 0;
4
+ const resources_1 = require("./commands/resources");
5
+ /**
6
+ * All help text lives here as plain strings — the CLI's "docs" surface. Kept
7
+ * out of the handlers so the dispatch code stays about control flow and the
8
+ * copy can be read (and kept consistent) in one place.
9
+ */
10
+ exports.TOP_HELP = `atlas — manage an Atlas instance from the terminal
11
+
12
+ Usage: atlas <command> [subcommand] [arguments] [options]
13
+
14
+ Commands:
15
+ login Authenticate and store a profile credential
16
+ (--device: operator sign-in in the browser, no key stored)
17
+ token --resource <id> A one-hour token for one instance/app from your operator sign-in
18
+ keys whoami|list|create|rotate|revoke|revoke-leaked|data|op
19
+ Scoped secret keys; new secrets go sealed into 0600 files
20
+ logout Remove a stored profile credential
21
+ whoami Show the active profile and instance
22
+ users list|get|create|merge|delete
23
+ orgs list|get|members
24
+ api-keys list|create|revoke
25
+ webhooks list|create|upsert|update|test|deliveries|redeliver|replay|rotate|reveal
26
+ listen --forward-to <url> Forward live events to your local server, signed (no tunnel)
27
+ dev [proxy] Local in-memory Atlas (emulator) / one-origin dev proxy
28
+ move-origin --from --to Move an app to a new domain in one step (--dry-run first)
29
+ workflows list|run|resume|status|templates|approvals|decide
30
+ chat list|test|links|interactions Chat approval integrations
31
+ cloud targets|setup|login <id> Cloud access portal (AWS, Google Cloud, Azure)
32
+ device-sso list|show|revoke|delete Native OS single sign-on registrations
33
+ connection-actions catalog|list|run|define|remove
34
+ triggers list|get|create|set|delete Connection triggers
35
+ agents list|lifecycle|renew|activity|reviews|review-decide ...
36
+ telemetry show|set|test OTLP export of gateway and relay calls
37
+ pdp list|remove Local decision points
38
+ billing coupons|credits ... Discount codes and account credit
39
+ audit retention|set-retention Audit log retention
40
+ federation show|resolve OpenID federation
41
+ vc deferred|approve|deny Deferred credential issuance
42
+ csp --framework next|express|nginx
43
+ Print the Content Security Policy sources Atlas needs
44
+ fga test|validate|transform <file>
45
+ fga export|import|watch|materialize <store>
46
+ Run .fga.yaml test suites, validate and convert authorization models
47
+ integrations list|get|set|remove|deliveries Identity integrations (chat, docs, consent, referrals, custom)
48
+ partner-platforms list|get|set|registration|token|deliveries|remove
49
+ This instance as a partner platform (signed consent deliveries in)
50
+ id-accounts provision|list|rotate|remove
51
+ Test and review accounts for a Sign in with Atlas app (passwords go to 0600 files)
52
+ admin id-accounts list|provision|extend|rotate|revoke
53
+ admin developer-accounts provision|revoke
54
+ Atlas staff: accounts for other platforms' integration teams
55
+ (operator sign-in with a recent second factor; passwords to 0600 files)
56
+ sessions revoke
57
+ config export|import|plan|promote
58
+ Config-as-code: round-trip the instance's config; plan = drift diff;
59
+ promote = copy one environment's config to another
60
+ plan [<file|dir>] Drift diff of a config file or directory; --check exits 2 on drift
61
+ apply [<file|dir>] Plan, confirm (--yes to skip), then apply; --check = plan only, exit 2 on drift
62
+ actions list|deploy|test|logs|gallery|show|install|installs|update|publish
63
+ pages list|push|preview|promote|pull|discard
64
+ Code-defined hosted-page templates: draft, signed preview link, promote
65
+ init Create or complete an app's setup (idempotent); secrets to 0600 files
66
+ setup-guide The setup calls in order, with the read-back for each (--json for agents)
67
+ preflight Check an instance's setup; non-zero exit on errors (for CI)
68
+ doctor Integration health: webhooks, logout, referrals, email, consent (exit 1 on a failure)
69
+ golive --origin <url> Take an instance live for an app origin, step by step; stops at the first failure
70
+ env Print deploy variables: public values + secret file paths
71
+ client rotate Rotate an OAuth client secret straight into its file
72
+ referrals connect|backfill|resync|status
73
+ Connect a referral platform, backfill, check the connection
74
+ status Atlas status, incidents that concern the instance and its
75
+ upstream status pages; non-zero exit on an outage
76
+ import --from <vendor> <file>
77
+ Move users from Auth0, Clerk, Supabase, Firebase, Cognito,
78
+ Auth.js, WorkOS or Better Auth (resumable; --dry-run first)
79
+ migrate code --from <vendor> [path]
80
+ Rewrite an app's auth code onto Atlas (Clerk, Auth.js,
81
+ Supabase, Auth0, Better Auth); a dry run with a diff unless --yes
82
+ migrate better-auth [path] Move a Better Auth app to Atlas end to end: config, users,
83
+ sessions and code, resumable (--dry-run, --resume, --yes)
84
+ migrate better-auth config [path]
85
+ Translate the app's betterAuth({...}) options into Atlas
86
+ config files plus a report (offline)
87
+ migrate <vendor> [step] [path]
88
+ Move from any vendor (config, export, import, bridge, lazy):
89
+ resumable; vendor credentials never leave this machine
90
+ info [path] Print the environment for a support ticket (versions, SDKs,
91
+ instance, API latency, preflight); secrets redacted
92
+ mcp install Add the Atlas MCP server (docs search) to Cursor, Claude Code,
93
+ Codex or VS Code
94
+
95
+ Global options:
96
+ --profile <name> Use a named profile (default: active, else "default")
97
+ --json Emit raw JSON instead of a human table
98
+ --limit <n> Page size for list commands that paginate
99
+ --starting-after <cursor> Pagination cursor (from a prior page's hint)
100
+ -h, --help Show this help, or help for a command
101
+ -v, --version Print the version
102
+
103
+ Environment overrides:
104
+ ATLAS_SECRET_KEY Secret key to use instead of the stored one
105
+ ATLAS_API_BASE API URL to use instead of the stored one
106
+ ATLAS_API_URL Same (the older name); ATLAS_API_BASE wins when both are set
107
+ ATLAS_PLATFORM_KEY Platform key (psk_) for atlas init
108
+ REFERALLI_BASE_URL Referalli base URL for atlas referrals connect
109
+ REFERALLI_API_KEY Referalli merchant key for atlas referrals connect (never stored)
110
+ (the old REFERALLY_BASE_URL / REFERALLY_API_KEY still work, with a notice)
111
+
112
+ Secrets: a command that receives a secret writes it to a 0600 file under
113
+ ~/.config/<product>/ and prints only the path. --print-secret prints it instead.
114
+
115
+ Run 'atlas <command> --help' for command-specific help.`;
116
+ /** Per-command help, keyed by the resource word. */
117
+ exports.COMMAND_HELP = {
118
+ migrate: `atlas migrate — move an app's auth onto Atlas
119
+
120
+ Usage:
121
+ atlas migrate code --from <vendor> [path] [--yes] [--json]
122
+ atlas migrate better-auth config [path] [--dir <dir>] [--format json|yaml] [--entry <file>] [--json]
123
+ atlas migrate better-auth [path] [--dry-run] [--yes] [--resume] [--force] [--json]
124
+ [--dir <dir>] [--state-file <file>] [--entry <file>] [--bundle <file>] [--run-export]
125
+ [--confirm-conflicts] [--bridge-days <n>] [--skip <step,...>]
126
+ atlas migrate <vendor> [path] [--dry-run] [--yes] [--resume] [--force] [--json]
127
+ [--set name=value ...] [--skip <step,...>] [--bridge-days <n>] [--confirm-conflicts]
128
+ atlas migrate <vendor> config|export|import|bridge|lazy [path] [--set name=value ...]
129
+ atlas migrate export <vendor> [path] (same as: atlas migrate <vendor> export)
130
+ atlas migrate custom export --file <records.ndjson|.json> [path]
131
+
132
+ migrate <vendor> is the program for every other vendor, one plugin each
133
+ (atlas migrate --help lists them). Steps, checkpointed in
134
+ atlas-migrate/<vendor>/state.json (--state-file):
135
+ preflight instance and key
136
+ config read the vendor's configuration, write Atlas config files and
137
+ <vendor>-report.md (1:1 / differs / manual, with where each came from)
138
+ export read the vendor (its API with YOUR vendor credentials, an export
139
+ file, or your database) and write atlas-migrate/<vendor>/bundle.atlas,
140
+ sealed to this instance's import key; resumable from a checkpoint
141
+ import upload, dry-run report, confirm, import (resumes a stopped import)
142
+ bridge accept the vendor's sessions for --bridge-days (default 30)
143
+ lazy verify passwords against the vendor on first sign-in (vendors whose
144
+ hashes never leave them)
145
+ code atlas migrate code --from <vendor>, after a confirmation
146
+ verify the import's counts and a checklist
147
+ Vendor settings and credentials are --set name=value (e.g. --set auth0-domain=…)
148
+ or the environment variable the plugin names; they are used here only.
149
+
150
+ Self-hosted frameworks (authjs, lucia, passport, iron-session, devise, django)
151
+ keep users in your own database, so nothing calls a vendor: config reads your
152
+ app's source, and export reads table dumps you make with your own tools
153
+ (--set dump=<dir>: one <table>.csv/.json/.ndjson per table) or, for devise and
154
+ django, the export script it writes on the first run, piped in with --file -.
155
+
156
+ migrate better-auth config reads your betterAuth({...}) setup statically (it
157
+ follows imports and resolves env vars by NAME, never their values) and writes
158
+ Atlas config-as-code files (the 'atlas config import' format) plus
159
+ better-auth-report.md: what maps 1:1, what maps with a difference, and what
160
+ needs a manual step, each with file:line. Default --dir: atlas-migrate/config.
161
+
162
+ migrate better-auth runs the whole program, checkpointing each step in
163
+ atlas-migrate/state.json (--state-file):
164
+ preflight instance and key, CLI version, the betterAuth() call
165
+ translate the config files and report (as above)
166
+ apply review the diff, confirm, push the config (env placeholders are
167
+ filled from the environment and the app's .env files)
168
+ export run the exporter in the app (prints the command; --run-export runs it)
169
+ import upload the bundle, dry-run report, confirm, import (conflicts with
170
+ existing Atlas users need --confirm-conflicts; a stopped import resumes)
171
+ bridge accept Better Auth sessions for --bridge-days (default 30): no forced logout
172
+ code atlas migrate code --from better-auth, after a confirmation
173
+ verify counts, preflight and a sign-in checklist
174
+ --dry-run walks every step without changing the instance or the code. --yes
175
+ answers every confirmation. --resume continues a stopped run. --json prints the
176
+ step summary (with --json and no --yes it stops at the first confirmation).
177
+
178
+ Code rewrite (migrate code):
179
+
180
+ Vendors:
181
+ clerk @clerk/* SDKs
182
+ authjs Auth.js / NextAuth (next-auth v4 and v5, @auth/*)
183
+ supabase Supabase Auth (supabase.auth.*, auth-helpers, auth-ui); the
184
+ Supabase client itself stays for your database
185
+ auth0 @auth0/auth0-react, @auth0/nextjs-auth0 (v3 and v4), @auth0/auth0-spa-js
186
+ better-auth better-auth (client, server, Next.js handler, cookies)
187
+ lucia lucia v2 / v3 (validateSession, cookies, invalidate…): TODO markers
188
+ naming the Atlas call for each, since no call has the same shape
189
+ passport passport + express-session (initialize, session, authenticate('jwt'),
190
+ req.isAuthenticated()); strategies and req.user are reported
191
+ iron-session getIronSession() reads of the user id -> auth()
192
+ keycloak keycloak-js, @react-keycloak, keycloak-connect, the Keycloak Auth.js provider
193
+ ory @ory/client, @ory/nextjs, @ory/elements (Kratos and Hydra)
194
+ zitadel @zitadel/react, @zitadel/node, @zitadel/next
195
+ logto @logto/react, @logto/next, @logto/node and the other Logto SDKs
196
+ supertokens supertokens-node, supertokens-web-js, supertokens-auth-react
197
+ authentik react-oidc-context / oidc-client-ts pointed at authentik, @goauthentik/api
198
+ fusionauth @fusionauth/react-sdk, @fusionauth/typescript-client and the other FusionAuth SDKs
199
+ hanko @teamhanko/hanko-elements and hanko-frontend-sdk
200
+ openid-client openid-client (Issuer.discover, authorizationUrl, callback, endSessionUrl)
201
+ jose jose used to verify OIDC ID tokens (jwtVerify + createRemoteJWKSet)
202
+ generic-oidc a hand-rolled relying party (discovery, PKCE, code exchange, JWKS) found
203
+ by its code; replaced by oidc.start / oidc.callback / oidc.logoutUrl
204
+ firebase firebase/auth (modular and v8 compat), react-firebase-hooks, FirebaseUI,
205
+ firebase-admin auth calls; Firebase itself stays for Firestore/Storage
206
+ cognito aws-amplify/auth (v6 and v5 Auth), Hub auth events, @aws-amplify/ui-react,
207
+ amazon-cognito-identity-js, aws-jwt-verify
208
+ azure-ad-b2c @azure/msal-browser, @azure/msal-react, @azure/msal-node, passport-azure-ad
209
+ entra-external-id the same MSAL rewrite, for Entra External ID tenants
210
+ appwrite the Appwrite Account API (new Account(client)), node-appwrite Users/Teams;
211
+ Databases/Storage stay
212
+ pocketbase pb.authStore and collection auth calls; collections and files stay
213
+ nhost @nhost/react / @nhost/nextjs hooks and nhost.auth.*; GraphQL/Storage stay
214
+
215
+ What it rewrites: imports, providers, hooks, server session helpers, middleware,
216
+ sign-in/out calls and env var names, onto native Atlas APIs and the drop-in
217
+ compat helpers in @atlasauth/react/compat and @atlasauth/nextjs/compat that keep the
218
+ old shapes. Everything it cannot rewrite is listed with file:line and marked in
219
+ code with TODO(atlas-migrate).
220
+
221
+ Options:
222
+ --yes Write the changes (without it: a dry run printing the diff)
223
+ --dry-run Force a dry run even with --yes
224
+ --json Machine-readable result (diffs, report, packages, env)
225
+
226
+ Safe to re-run: migrated code is left as it is. Move your users with
227
+ 'atlas migrate <vendor>' (Clerk, Auth0, Okta, Kinde, Descope, Better Auth) or
228
+ 'atlas import --from <vendor> <export-file>'.`,
229
+ info: `atlas info — the environment, for support tickets
230
+
231
+ Usage:
232
+ atlas info [path] [--json] [--product <name> | --instance <id>]
233
+
234
+ Prints the CLI, Node and OS versions; the project's framework and Atlas SDK
235
+ packages with the installed version and whether npm has a newer one; the
236
+ configured instance (key prefixes only, never a key) and whether the app's
237
+ publishable key belongs to it; API reachability and latency; and the
238
+ instance's preflight summary. Network steps time out after 5 s and are
239
+ reported, not fatal. Anything shaped like a secret is redacted.`,
240
+ import: `atlas import — move users from another auth provider, or from a JSONL file
241
+
242
+ Usage:
243
+ atlas import <users.jsonl> [--dry-run] [--since <ts>] [--on-conflict skip|update]
244
+ [--password-policy active|until_email_verified] [--json]
245
+ atlas import --from <vendor> <export-file> [--dry-run]
246
+ atlas import --from better-auth --bundle <file> [--dry-run] [--yes]
247
+ atlas import --from better-auth --import <id> [--confirm-conflicts]
248
+ atlas import --from better-auth (prints the import key and export command)
249
+
250
+ With no --from the file has one user per line: external_id and email (required),
251
+ email_verified, password_digest + algorithm, oauth_identities [{provider,
252
+ provider_user_id}], first_name, last_name, created_at, updated_at. Each row is
253
+ matched by external_id, so running it again changes nothing. --since keeps rows
254
+ updated (or else created) at or after <ts>. --on-conflict skip (the default here)
255
+ leaves existing users alone; update applies rows that changed. It reports created,
256
+ updated, skipped and unverified-with-password counts, and never an email address.
257
+
258
+ Vendors and the file each one reads:
259
+ auth0 the user export job (NDJSON/JSON); --hashes <file> merges the password export
260
+ clerk the dashboard CSV export, or users JSON from the Backend API
261
+ supabase auth.users rows as CSV or JSON (with an identities array for social links)
262
+ firebase firebase auth:export --format=json; needs --hash-config <file>
263
+ cognito aws cognito-idp list-users JSON, or the user-pool CSV
264
+ authjs the adapter's users + accounts tables as JSON
265
+ workos User Management users JSON (+ organization_memberships)
266
+ better-auth JSON of the user, account, member and organization tables
267
+
268
+ Options:
269
+ --dry-run Map and summarise only; nothing is sent
270
+ --batch-size <n> Users per request, 1-100 (default 100)
271
+ --state-file <file> Progress file (default <export-file>.atlas-import.json); re-running resumes
272
+ --hash-config <file> Firebase hash parameters: {signer_key, salt_separator, rounds, mem_cost}
273
+ --hashes <file> Password hashes keyed by email, merged onto the users
274
+ --create-orgs Create organizations that memberships name but that do not exist yet
275
+ --since <ts> Only users created at or after <ts>
276
+ --on-conflict <mode> update (the default for --from) or skip a user who already exists
277
+ --password-policy <p> active (default), or until_email_verified: an imported hash signs in
278
+ only once the address is verified
279
+ --json Machine-readable summary
280
+
281
+ Better Auth bundle (npx atlas-better-auth-export --out <file> --public-key <key>):
282
+ --bundle <file> Upload the sealed bundle, show the dry run, then apply
283
+ --import <id> Continue an uploaded import (apply it, or resume a failed one)
284
+ --confirm-conflicts Apply although the dry run found conflicts with existing users
285
+ --options <json|@file> Import options, e.g. '{"import_sessions":false}'
286
+ --yes Apply without asking
287
+
288
+ Batches are sent with upsert, so a resumed or repeated run never duplicates a
289
+ user or a membership. Exit code 2 means some rows were reported as issues.`,
290
+ mcp: `atlas mcp — connect AI coding agents to Atlas
291
+
292
+ Usage:
293
+ atlas mcp install --cursor | --claude-code | --codex | --vscode [--dir <project>] [--global]
294
+ atlas mcp gateways | upstreams <gw> | upstream-add|upstream-test|upstream-remove | packs|pack-add|pack-remove
295
+ atlas mcp pins <gw> | pin-approve <gw> <tool> | pin-remove | registry|registry-add|registry-decide|registry-remove
296
+
297
+ Adds the Atlas MCP server (npx -y @atlasauth/mcp) to the client's config so the
298
+ agent can search and read the Atlas docs. Servers already in the file are kept.
299
+
300
+ --cursor .cursor/mcp.json in the project (~/.cursor/mcp.json with --global)
301
+ --claude-code .mcp.json in the project
302
+ --codex ~/.codex/config.toml (or $CODEX_HOME/config.toml)
303
+ --vscode .vscode/mcp.json in the project
304
+ --dir <path> The project directory (default: the current directory)
305
+
306
+ No key is written. To also manage your instance from the agent, add
307
+ ATLAS_SECRET_KEY to the server's env yourself.`,
308
+ status: `atlas status — is it Atlas, a service you depend on, or you?
309
+
310
+ Usage:
311
+ atlas status [--json]
312
+
313
+ Shows Atlas's components (with their regions), the open Atlas incidents that
314
+ concern this instance (its status subscription's regions, components and
315
+ minimum impact), the subscription itself, and the state of every upstream
316
+ status page the instance declared (POST /v1/instance/status_dependencies).
317
+
318
+ Exit code 1 when Atlas reports a major outage or an open major / critical
319
+ incident concerns the instance, or an enabled upstream status page reports a
320
+ partial or major outage; 0 otherwise.`,
321
+ referrals: `atlas referrals — referral attribution
322
+
323
+ Usage:
324
+ atlas referrals connect --provider referalli --program <prg_…> --base-url <url>
325
+ [--referalli-key-file <path|-> | --referalli-key <rk_…>]
326
+ [--auto-enroll] [--destination <url>] [--tracking-token <token>] [--link-template <url>]
327
+ [--enable] [--no-sync] [--no-identity-backfill] [--allow-mode-mismatch] [--dry-run]
328
+ atlas referrals connect --oauth [--preset <id>] [--enable] (default preset: referalli)
329
+ atlas referrals connect --provider webhook --endpoint <https-url>
330
+ [--secret-file <path|->] [--program <id>] [--auto-enroll] [--enable]
331
+ atlas referrals backfill --since <YYYY-MM-DD> [--map <file.csv>]
332
+ [--metadata-path public_metadata.referral_code]
333
+ [--own-map <file.csv>] [--own-metadata-path public_metadata.my_code] [--wait]
334
+ atlas referrals resync <user_id> [--dry-run] re-report one user and apply the answer (code, link)
335
+ atlas referrals status [--json] [--referalli-key-file <path|->]
336
+ atlas referrals conformance [--protocol webhook|connection] [--base-url <url>] [--connection-id <id>] --secret-file <path|->
337
+ [--only <case ids or areas>] [--simulate]
338
+
339
+ connect --dry-run (any provider) makes no change anywhere: it lists the calls it would make to the
340
+ platform and validates the Atlas settings write with ?dry_run=true. No secret is saved or printed and
341
+ no connection test is run.
342
+
343
+ connect --provider referalli --oauth is one-click: it prints a Referalli link, you choose the
344
+ organization and program there, and Referalli hands Atlas the connection secret directly (nothing to
345
+ copy). It needs no key, --program or --base-url, and waits until the connection appears. Where the
346
+ deployment does not offer it yet, use a key as below.
347
+
348
+ conformance runs the referral protocol conformance suite (@atlasauth/referral-conformance) against
349
+ any platform (--protocol webhook: the generic Atlas referral protocol; connection: the Referalli dialect): signed calls with the answers a conforming server must give (401 for a bad signature,
350
+ an empty export for an unknown customer, nulls accepted, …). It defaults to the connected Referalli;
351
+ the secret is read from --secret-file because Atlas never shows it. --simulate also sends Atlas's own
352
+ simulated sign-up. It exits 1 on any failed case.
353
+
354
+ connect --provider referalli creates the Atlas connection on Referalli with
355
+ your merchant key (bring your own key: used for this one call, never stored or
356
+ printed), saves the connection id and secret on the instance, and runs a ping.
357
+ It requires v2 signatures on the connection from the start and registers a
358
+ Referalli webhook that sends referral changes (voided, approved, reassigned…)
359
+ back to Atlas, limited to --program (programIds), so other programs in a shared
360
+ organization never reach the instance; --no-sync skips the webhook. The instance's app origins
361
+ (allowed origins and Frontend API host) are sent with the connection, and Atlas keeps them current
362
+ when they change. With --enable, Atlas also reads the referral code of every existing user from
363
+ Referalli (10 per second at most); --no-identity-backfill skips that. It is safe to
364
+ run again: the instance's existing connection and webhook are reused and updated
365
+ in place (an unscoped webhook is re-scoped), never duplicated. The tracking token
366
+ and link template are read from Referalli (GET /v1/org, the link domain); a link
367
+ template you set before is kept. Whatever it cannot read is printed as the exact
368
+ PATCH /v1/instance/referrals body left to send. A test key (rk_test_) belongs with a
369
+ development instance and a live key with production: a mismatch is refused
370
+ unless --allow-mode-mismatch. --auto-enroll and --destination are passed to
371
+ Referalli. --enable turns referrals on when the ping passes. Prefer --referalli-key-file (or
372
+ REFERALLI_API_KEY) to --referalli-key: a key on the command line can end up in
373
+ your shell history. The old names (--provider referally, --referally-key-file,
374
+ --referally-key, REFERALLY_*) still work and print a notice.
375
+
376
+ connect --provider webhook points the instance at a platform that speaks the
377
+ Atlas referral protocol. Without --secret-file, a signing secret is generated
378
+ and written to a 0600 file for you to configure on the platform.
379
+
380
+ backfill reports users who signed up since the date, with their real sign-up
381
+ time. --map reads customerRef,code lines; --metadata-path reads a stored code.
382
+ Those are the codes users ARRIVED with. To keep each user's OWN code (the one
383
+ they share), use --own-map (customerRef,code lines) or --own-metadata-path:
384
+ Atlas stores it and sends it to the platform before the sign-up, so the
385
+ platform does not hand out a new one.
386
+
387
+ status prints the connection, its health and the referral preflight findings;
388
+ it exits 1 when one is an error. --json prints a machine-readable status object
389
+ (connection id, program, webhook endpoint id and scope, link template and tracking
390
+ token set, last sync) next to the raw settings. The webhook's program scope is read
391
+ from Referalli when a merchant key is given (--referalli-key-file or
392
+ REFERALLI_API_KEY); without one it is "unknown".
393
+
394
+ All subcommands take --instance <id> or --product <name> like preflight.`,
395
+ login: `atlas login — authenticate and store a profile credential
396
+
397
+ Usage: atlas login [--profile <name>] [--url <api-url>] [--secret-key <sk_...>]
398
+
399
+ Prompts for an API URL and a secret key, validates the key with one Backend
400
+ call, then stores it (0600) under the profile. --url / --secret-key skip the
401
+ prompts for non-interactive setup.
402
+
403
+ Operator sign-in (no key on disk):
404
+ atlas login --device [--resource <ins_…|app_…>] [--scope "<scopes>"]
405
+ Opens Atlas's sign-in (passkey, multi-factor) with a device code. Only
406
+ short-lived tokens are stored: the operator token, and with --resource a
407
+ one-hour token bound to that instance or app (scope "read" by default).
408
+ Creating apps or instances and minting keys need a multi-factor sign-in
409
+ within the last 5 minutes.
410
+
411
+ An operator token for another product that trusts Atlas operators:
412
+ atlas login --device --audience <id> [--json]
413
+ <id> is one of the audiences GET /v1/operator lists. The token carries
414
+ aud=<id>, auth_time, amr/acr and your verified email; it is printed (for
415
+ that product's own token exchange), never stored, and Atlas refuses it.`,
416
+ token: `atlas token — a one-hour token bound to one instance or app
417
+
418
+ Usage: atlas token --resource <ins_…|app_…|acct_…> [--scope "<scopes>"] [--json]
419
+
420
+ Swaps your operator sign-in (atlas login --device) for an Atlas token (RFC 8693
421
+ token exchange). "read" = every read scope.`,
422
+ keys: `atlas keys — the instance's secret keys
423
+
424
+ Usage:
425
+ atlas keys whoami What the current key is and can do
426
+ atlas keys list Every credential on the instance
427
+ atlas keys create --scopes "<scopes>" [--name n] [--owner o] [--expires-at <ISO>] [--allowed-ips <cidr,…>] [--out <file>]
428
+ atlas keys rotate <id> [--overlap <seconds>] [--out <file>]
429
+ atlas keys data status|enable|rotate|rewrap|check|shred Customer-managed data key (shred needs the instance id typed or --confirm)
430
+ atlas keys op list|rotate OpenID provider signing keys
431
+ atlas keys revoke <id>
432
+ atlas keys revoke-leaked [<secret>] Revoke a leaked Atlas credential (no login needed)
433
+
434
+ New secrets come back sealed to a key pair made on this machine and are
435
+ written to a 0600 file (default .atlas/secret-key-<id>.env); --print-secret
436
+ prints them instead.`,
437
+ logout: `atlas logout — remove a stored profile credential
438
+
439
+ Usage: atlas logout [--profile <name>]`,
440
+ whoami: `atlas whoami — show the active profile and instance
441
+
442
+ Usage: atlas whoami [--profile <name>] [--json]`,
443
+ users: `atlas users — manage users
444
+
445
+ Usage:
446
+ atlas users list [--limit <n>] [--starting-after <cursor>] [--json]
447
+ atlas users get <user-id> [--json]
448
+ atlas users create --email <address> [--first-name <n>] [--last-name <n>] [--password <p>] [--json]
449
+ atlas users clear-password <user-id> [--json]
450
+ atlas users delete <user-id> [--json]`,
451
+ 'setup-guide': `atlas setup-guide — the setup calls in order, with the read-back for each
452
+
453
+ Usage: atlas setup-guide [--json]
454
+
455
+ Prints each step, the exact call or command, and what to read to prove it worked.
456
+ Full guide: https://atlasauth.net/docs/agent-setup`,
457
+ orgs: `atlas orgs — manage organizations
458
+
459
+ Usage:
460
+ atlas orgs list [--limit <n>] [--starting-after <cursor>] [--json]
461
+ atlas orgs get <org-id> [--json]
462
+ atlas orgs members <org-id> [--json]`,
463
+ 'api-keys': `atlas api-keys — manage end-user API keys
464
+
465
+ Usage:
466
+ atlas api-keys list [--subject-type <user|organization>] [--subject-id <id>] [--json]
467
+ atlas api-keys create --subject-type <user|organization> --subject-id <id> [--name <n>]
468
+ [--product <name>] [--force] [--print-secret] [--json]
469
+ atlas api-keys revoke <api-key-id> [--json]`,
470
+ webhooks: `atlas webhooks — manage webhook endpoints
471
+
472
+ Usage:
473
+ atlas webhooks list [--json]
474
+ atlas webhooks create --url <https-url> [--events a,b] [--product <name>] [--print-secret] [--json]
475
+ atlas webhooks upsert --url <https-url> [--events a,b] one endpoint per URL; idempotent
476
+ atlas webhooks update <id> [--url <u>] [--events a,b] [--active | --inactive]
477
+ atlas webhooks test <id> [--timeout 10s] [--no-wait] [--json]
478
+ atlas webhooks deliveries <id> [--status failed] [--event-type user.created]
479
+ [--since <iso|2h|7d>] [--until <iso>] [--limit <n>] [--starting-after <id>] [--json]
480
+ atlas webhooks redeliver <id> --delivery <delivery-id>
481
+ atlas webhooks redeliver <id> --since <iso|2h|7d> [--until <iso>] [--status failed]
482
+ atlas webhooks replay <id> [--since failing_since] re-send what a disabled endpoint missed
483
+ atlas webhooks rotate <id> [--now | --overlap <seconds>]
484
+ atlas webhooks reveal <id>
485
+
486
+ create, upsert, rotate and reveal write the signing secret to a 0600 file and
487
+ print only its path (--print-secret prints it instead; --force replaces a file).
488
+ test sends a signed webhook.test event and waits for your endpoint's answer;
489
+ the exit code is 1 when it did not answer 2xx. rotate --overlap keeps the old
490
+ secret signing alongside the new one for that many seconds.`,
491
+ listen: `atlas listen — forward live events to your local server
492
+
493
+ Usage:
494
+ atlas listen --forward-to <url> [--events user.*,session.created] [--count <n>] [--timeout <dur>] [--json]
495
+ atlas listen --no-forward [--events ...] only print events
496
+
497
+ Opens a signed event stream from your instance and POSTs each event to
498
+ --forward-to with the same atlas-id, atlas-timestamp and atlas-signature headers a
499
+ real delivery carries, then prints the status your server returned. No tunnel
500
+ and no second endpoint. The signing secret belongs to this session only and is
501
+ written to a 0600 file (webhook-listen.env): point your verifier at it. --events
502
+ takes names or patterns (user.*, *.created). The session lasts up to an hour;
503
+ Ctrl-C stops it. --count n exits after n events (exit 1 if any forward failed).`,
504
+ dev: `atlas dev — a local, in-memory Atlas
505
+
506
+ Usage:
507
+ atlas dev [--port 4400] [--seed seed.json] [--app http://localhost:3000]
508
+ atlas dev proxy --app <url> --api <fapi url> [--port 4401]
509
+
510
+ The emulator serves the Frontend API, a minimal Backend API, OIDC discovery and
511
+ a mail/SMS catcher at /__emulator/mail. Every code is 424242. With --app it also
512
+ forwards everything it does not own to your app, so both share one origin.
513
+ 'dev proxy' does the same against a real instance. No account, no network.`,
514
+ 'move-origin': `atlas move-origin — move an app to a new domain
515
+
516
+ Usage: atlas move-origin --from <origin> --to <origin> [--dry-run] [--yes] [--json]
517
+
518
+ Rewrites every field that points at the old origin: allowed origins, branding
519
+ links, OAuth client redirect and logout URIs, webhook URLs, the redirect-URL
520
+ allowlist and your Sign in with Atlas apps. Shows the before and after of every
521
+ field first and asks before writing (--yes skips the question). After a real
522
+ move it sends a signed test delivery to each webhook endpoint that moved.
523
+ --dry-run prints the diff and writes nothing; running it twice changes nothing.`,
524
+ fga: `atlas fga — author and test authorization models
525
+
526
+ Usage:
527
+ atlas fga test <suite.fga.yaml> [--store <id>] [--json]
528
+ atlas fga validate <model.fga|model.json>
529
+ atlas fga transform <model.fga|model.json> [--to dsl|json]
530
+ atlas fga export|materializations <store>
531
+ atlas fga import <store> --file tuples.json [--data '{"dry_run":true}']
532
+ atlas fga watch <store> [--since <revision>]
533
+ atlas fga materialize <store> --data '{"object_type":…,"relation":…,"user_type":…}' --yes
534
+ atlas fga rebuild|unmaterialize <store> <id> --yes
535
+
536
+ A test file follows the OpenFGA format: model (DSL text) or model_file, tuples or tuple_file,
537
+ and tests, each with check, list_objects and list_users assertions. The suite runs in memory on
538
+ the Atlas engine; no stored tuples are read or written. Exit code 1 when any test fails, so it
539
+ gates CI. Prints which model relations the assertions cover.`,
540
+ csp: `atlas csp — the Content Security Policy sources Atlas needs
541
+
542
+ Usage: atlas csp [--framework next|express|nginx] [--shape redirect|panel|button]
543
+ [--instance <id> | --product <name> [--instance-env <env>]] [--origin <url>]
544
+ [--manifest <url|file>]... [--no-atlas] [--json]
545
+
546
+ Reads your instance's embed manifest (including a custom Frontend API host) and
547
+ prints the script-src, connect-src, img-src and frame-src sources for your
548
+ setup, as a next.config.ts headers() block, a helmet() config or an nginx
549
+ add_header line. Read-only. --shape redirect (hosted sign-in) needs none.
550
+ With --origin, warns when that origin is not one of the instance's allowed origins.
551
+
552
+ Any provider that publishes the open embed-manifest format ({surfaces:{name:{csp:{directive:[sources]}}}},
553
+ usually at /.well-known/atlas-embed.json) can be merged in with --manifest <url|file>
554
+ (repeatable): a consent platform, chat widget, captcha or analytics vendor. --no-atlas
555
+ skips the Atlas instance and uses only the manifests you list.`,
556
+ 'partner-platforms': `atlas partner-platforms — this instance as a partner platform of another product
557
+
558
+ Usage:
559
+ atlas partner-platforms list [--json]
560
+ atlas partner-platforms get <partner>
561
+ atlas partner-platforms set <partner> [--platform-id <id>] [--jwks-url <url>] [--signature-header <name>]
562
+ [--allowed-source <site id>]... [--disable] [--json]
563
+ atlas partner-platforms registration <partner> [--json]
564
+ atlas partner-platforms token <partner> --token-file <path|-> [--rotate] [--base-url <partner api>]
565
+ atlas partner-platforms deliveries <partner> [--limit <n>] [--json]
566
+ atlas partner-platforms remove <partner> [--json]
567
+
568
+ <partner> is a preset (cookiemunch) or your own id (then --platform-id, --jwks-url
569
+ and --signature-header are required). "registration" prints what to send the
570
+ partner; the partner registers the receiver and hands back a partner token once.
571
+ "token" stores it encrypted (from a file, stdin with -, or ATLAS_PARTNER_TOKEN);
572
+ it is never printed or shown again.`,
573
+ admin: `atlas admin — Atlas staff: Sign in with Atlas accounts for other platforms' integration teams
574
+
575
+ Usage:
576
+ atlas admin id-accounts list [--team <team>] [--kind provisioned|developer] [--limit <n>] [--json]
577
+ atlas admin id-accounts provision --email <address> --team <team> (--app <id[,id…]> | --any-app)
578
+ [--days <n> | --expires-at <ISO date|epoch ms>] [--two-factor-exempt]
579
+ [--password-file <path|->] [--unverified] [--product <name>] [--print-secret] [--json]
580
+ atlas admin id-accounts extend <account id> [--days <n> | --expires-at <ISO date|epoch ms>] [--json]
581
+ atlas admin id-accounts rotate <account id> [--password-file <path|->] [--print-secret] [--json]
582
+ atlas admin id-accounts revoke <account id> [--json]
583
+ atlas admin developer-accounts provision --email <address> --team <team>
584
+ [--account-name <name>] [--application-name <name>]
585
+ [--days <n> | --expires-at <ISO date|epoch ms>] [--password-file <path|->] [--json]
586
+ atlas admin developer-accounts revoke <account id> [--json]
587
+
588
+ Common: [--profile <name>] [--staff-account <acct_…>] [--no-step-up]
589
+
590
+ Only owners and admins of Atlas's own account can use these. The credential is your
591
+ operator sign-in ('atlas login --device'), exchanged for a one-hour token on Atlas's
592
+ account (--staff-account, or ATLAS_STAFF_ACCOUNT_ID; remembered on the profile) with
593
+ the platform:atlas_id_apps:provision scope. Every call needs a sign-in verified with a
594
+ second factor; writes need one from the last 5 minutes. When Atlas asks for that, the
595
+ CLI starts the operator sign-in again and retries once (--no-step-up: just fail).
596
+
597
+ Accounts expire (30 days by default, at most a year; never "never"). An "id-account"
598
+ signs in only to the named apps (or any customer app with --any-app), never to the
599
+ Atlas dashboard, the CLI or account settings. A developer account is a dashboard
600
+ account owning a test application. Passwords come back sealed to a key made for the
601
+ run and are written to a 0600 file (staff-account-<id>.env under ~/.config/<product>/),
602
+ never printed unless you pass --print-secret.`,
603
+ 'id-accounts': `atlas id-accounts — test and review accounts for a Sign in with Atlas app
604
+
605
+ Usage:
606
+ atlas id-accounts provision --app <app id> --email <address> --label <purpose>
607
+ [--password-file <path|->] [--two-factor-exempt]
608
+ [--expires-at <ISO date|epoch ms>] [--unverified]
609
+ [--product <name>] [--print-secret] [--json]
610
+ atlas id-accounts list --app <app id> [--json]
611
+ atlas id-accounts rotate <account id> --app <app id> [--password-file <path|->]
612
+ [--product <name>] [--print-secret] [--json]
613
+ atlas id-accounts remove <account id> --app <app id> [--json]
614
+
615
+ For directory and app-store reviewer logins, end-to-end tests in CI, demos and
616
+ partner testing. The account is a real Atlas account that works with THIS app
617
+ only (never other apps, the Atlas dashboard or account settings). Needs a
618
+ platform key scoped platform:atlas_id_apps:provision, or atlas_id_apps:<app id>:provision
619
+ for one app (ATLAS_PLATFORM_KEY, or a psk_ profile from atlas login).
620
+
621
+ Without --password-file Atlas generates a strong password. Either way the password
622
+ is returned once and written to a 0600 file (id-account-<id>.env under
623
+ ~/.config/<product>/); it is never printed unless you pass --print-secret.
624
+ --two-factor-exempt lets the account skip the second factor for this app: anyone who
625
+ holds the password can sign in, so use it only for reviewer logins. Without
626
+ --expires-at the account never expires. "remove" deletes the account and ends its
627
+ sessions and grants.`,
628
+ integrations: `atlas integrations — identity integrations (presets and custom)
629
+
630
+ Usage:
631
+ atlas integrations list [--json]
632
+ atlas integrations get <id>
633
+ atlas integrations set <id> --audience <aud> [--name <n>] [--events-url <url|none>]
634
+ [--backchannel-logout-url <url|none>] [--oauth-client-id <client_id|none>]
635
+ [--disable] [--dry-run] [--json]
636
+ atlas integrations remove <id> [--json]
637
+ atlas integrations deliveries <id> [--trace <id>] [--json]
638
+
639
+ <id> is a preset (chatly, forumulate, cookiemunch, referalli) or your own id.
640
+ --oauth-client-id names the first-party OAuth client the service signs users in
641
+ with: while no --backchannel-logout-url is set, its backchannel_logout_uri is the
642
+ integration's back-channel receiver.`,
643
+ init: `atlas init — create or complete an app's setup, idempotently
644
+
645
+ Usage:
646
+ atlas init --product <name> [--domain <domain>] [--auth-host <host>]
647
+ [--instance-env development|production] [--name <app-name>]
648
+ [--strategies password,email_code,...]
649
+ [--email managed|development|none] [--email-from <address>]
650
+ [--email-provider resend|brevo --email-key-file <path|->]
651
+ [--client-redirect <url>]... [--webhook-url <url>]
652
+ [--backchannel <url>]
653
+ [--with-dev] [--no-env-files --json]
654
+ [--yes] [--force] [--rotate-secret] [--json]
655
+ atlas init --next [--mount /atlas] [--dir <app-root>] [--force]
656
+
657
+ Needs a platform key (ATLAS_PLATFORM_KEY, or a psk_ profile from atlas login).
658
+ Finds the app by name and environment, or creates it, then sets strategies, the
659
+ email sender, the custom domain (auth.<domain> unless --auth-host; prints the
660
+ CNAME), a first-party OAuth client and a webhook. Re-running only fills what is
661
+ missing. --backchannel <url> sets the client's back-channel logout URI (your
662
+ route that ends the app session when Atlas ends one; @atlasauth/backend has
663
+ ready-made handlers).
664
+
665
+ Email always goes through YOUR provider account (Atlas lends none):
666
+ managed Atlas sets your domain up on your Resend or Brevo account and
667
+ prints the DNS records.
668
+ development development instances only: your provider without a verified
669
+ domain (Resend's onboarding@resend.dev by default), capped.
670
+ The key is read from --email-key-file (a file holding the key or KEY=value; '-'
671
+ reads stdin). It is never taken from argv and never printed.
672
+
673
+ Every secret goes to ~/.config/<product>/<env>*.env (dir 0700, files 0600) and
674
+ is never printed. An existing file is never overwritten without --force.
675
+ --rotate-secret mints a new secret key when the app exists but its file is gone.
676
+ Public values and file paths are kept in ~/.config/<product>/atlas.json.
677
+ Turns on strict request bodies unless the instance has them or opted out.
678
+
679
+ --with-dev also creates the development sibling. A new setup then keeps each
680
+ environment in its own folder (~/.config/<product>/production/atlas.env and
681
+ development/atlas.env), so a script reading a folder's *.env files never mixes
682
+ keys. An existing <env>.env stays where it is.
683
+ --no-env-files writes no secret file: each secret is handed over once in the
684
+ --json output on stdout. Without --json it is refused and names the paths it
685
+ would have written.
686
+
687
+ --next [--mount <path>] writes, with no key and no network: atlas.yaml, the
688
+ App Router mount and verify routes (src/app when that is where your app is), and
689
+ a .env.example saying which variables are build args (the publishable key only)
690
+ and which are runtime. With --product it sets up the instance as well.`,
691
+ preflight: `atlas preflight — check an instance's setup (a CI / deploy gate)
692
+
693
+ Usage: atlas preflight [--instance <id> | --product <name> [--instance-env <env>]]
694
+ [--fail-on error|warning] [--fix [--yes]] [--json]
695
+
696
+ Prints every finding (severity, code, message, fix, and the exact call when there
697
+ is one). Exits 1 when there is an error, or with --fail-on warning
698
+ also on a warning.
699
+
700
+ --fix lists the findings the server marks safe to fix, asks before each call
701
+ (--yes skips the question; needed without a terminal), applies them, runs the
702
+ checks again and prints the result.`,
703
+ doctor: `atlas doctor — integration health (a CI / deploy gate)
704
+
705
+ Usage: atlas doctor [--instance <id> | --product <name> [--instance-env <env>]]
706
+ [--only <source,...>] [--no-probe] [--origin <url>] [--json]
707
+ atlas doctor --scan-dir <path> [--scan-image <ref>] [--json]
708
+
709
+ Prints every check: setup findings, webhook receivers (with the failing hop:
710
+ dns, tls, http, challenge or auth), back-channel logout, the referral
711
+ platform, email, the consent manager and SDK versions. Exits 1 when a check
712
+ fails. --no-probe uses recorded deliveries only (no live calls).
713
+
714
+ --origin <url> adds the go-live checks for that app origin to the same report:
715
+ setup errors (preflight), login readiness (live), the path-mount verification
716
+ state on that host, and whether the consent declaration lists every cookie the
717
+ SDKs read (__session, __atlas_uat, __atlas_rt, __client).
718
+
719
+ --scan-dir <path> and --scan-image <ref> need no key. They flag secret keys and
720
+ webhook or hook secrets in Dockerfile ARG / ENV lines, compose build.args, and an
721
+ image's docker history and environment, plus folders whose *.env files hold both
722
+ a development and a production key. Prints the file and line, never the value.
723
+ Exits 1 on a finding. Only the publishable key belongs in a build arg.`,
724
+ golive: `atlas golive — take an instance live for one app origin
725
+
726
+ Usage: atlas golive --origin <https://app.example.com> [--dry-run] [--yes] [--json]
727
+ [--instance <id> | --product <name> [--instance-env <env>]]
728
+
729
+ Runs, in order, and stops at the first failure with its fix:
730
+ domains verify the custom domain for the origin's host if it is not yet
731
+ issuer the origin's discovery document serves the instance's issuer
732
+ sign_in_with_atlas turned on when the instance declares it
733
+ webhooks each inactive endpoint: test delivery, then activate if it succeeded
734
+ hooks a configured but disabled hook: test call, then enable if it succeeded
735
+ preflight no error findings
736
+ login_readiness ready for the origin (live JWKS round-trip)
737
+ integrations referrals, privacy and identity integrations the instance declares
738
+
739
+ When verifying the domain would move the issuer, golive prints both issuers and
740
+ the previousIssuers value to add to your verifiers, then stops unless --yes.
741
+
742
+ --dry-run sends every write with ?dry_run=true: the server validates it and
743
+ nothing changes. Exits 0 when every step passes, 1 on the first failure.`,
744
+ env: `atlas env — print deploy variables without secrets
745
+
746
+ Usage: atlas env [--product <name> [--instance-env <env>]] [--format dotenv|coolify|vercel|k8s] [--json]
747
+
748
+ Public values (publishable key, Frontend API, issuer, discovery and JWKS URLs,
749
+ OAuth client id) are printed as-is. Secrets are printed as references to their
750
+ 0600 files: *_FILE=<path> (dotenv), KEY=@<path> (coolify), or a vercel env add
751
+ command that pipes the value from the file (vercel). k8s prints a ConfigMap plus
752
+ kubectl create secret commands that read each file. Without --product it reads
753
+ the public values from the instance your key belongs to (no secret references).
754
+ Both ATLAS_API_BASE and ATLAS_API_URL are printed.`,
755
+ client: `atlas client — OAuth clients
756
+
757
+ Usage: atlas client rotate <client-id> [--now | --overlap <seconds>]
758
+ [--instance <id> | --product <name> [--instance-env <env>]]
759
+ [--print-secret]
760
+
761
+ Rotates the client secret and writes the new one straight to its 0600 file.
762
+ --now revokes the old secret immediately; --overlap keeps it working for that
763
+ many seconds. Prints when the old secret stops working.`,
764
+ sessions: `atlas sessions — manage sessions
765
+
766
+ Usage:
767
+ atlas sessions revoke <session-id> [--json]`,
768
+ config: `atlas config — config-as-code for an Atlas instance (the Auth0 deploy-cli peer)
769
+
770
+ Usage:
771
+ atlas config export [--dir <path>] [--format json|yaml]
772
+ atlas config import [--dir <path>] [--format json|yaml] [--dry-run] [--prune] [--force-hook]
773
+ atlas config plan [--dir <path>] [--format json|yaml] [--prune] [--check|--exit-code] [--json]
774
+ atlas config promote --from <profile> --to <profile> [--dry-run] [--prune] [--yes] [--format json|yaml]
775
+
776
+ export Read the instance's current config (instance/auth config, OAuth clients
777
+ and providers, SSO connections, resource servers, JWT templates, roles,
778
+ webhook endpoints, billing plans, redirect URLs, org settings schema,
779
+ email provider, before_user_create hook, branding,
780
+ notification and email templates, org policies) and write a deterministic
781
+ directory tree — one file per resource type, keys sorted, SECRETS OMITTED.
782
+
783
+ import Diff the directory against live config and apply creates/updates
784
+ idempotently. A resource type with no file is left untouched.
785
+ --dry-run print the plan and apply nothing
786
+ --prune also delete live resources absent from the config
787
+ --force-hook enable a before_user_create hook even if its test call fails
788
+ --dir config directory (default: ./atlas-config)
789
+ --format json (default) or yaml
790
+
791
+ plan A Terraform-style, read-only diff of the directory against the live
792
+ instance: field-by-field before -> after for updates. --check (alias
793
+ --exit-code) exits 2 when there is drift (for CI); --json for tooling.
794
+
795
+ promote Copy one environment's configuration to another (development ->
796
+ staging -> production). Each environment is a profile holding that
797
+ instance's secret key ('atlas login --profile staging'). Uses the same
798
+ plan/apply engine as import; --dry-run prints the plan only, and
799
+ applying to a live key needs --yes. Secrets never travel.
800
+
801
+ Secrets never live in config files. Inject a credential at import with a
802
+ \${ENV_VAR} placeholder in a file (e.g. a provider "client_secret": "\${GOOGLE_SECRET}"),
803
+ resolved from the environment or from --secrets-file <dotenv> (must be mode 0600).
804
+
805
+ See also 'atlas apply' and 'atlas plan' (one config file or a directory).`,
806
+ pages: `atlas pages — code-defined hosted-page templates
807
+
808
+ Usage:
809
+ atlas pages list [--json]
810
+ atlas pages push <file> --page <sign-in|sign-up|user-profile> [--promote] [--json]
811
+ atlas pages preview --page <page> [--json]
812
+ atlas pages promote --page <page> [--json]
813
+ atlas pages pull --page <page> [--draft]
814
+ atlas pages discard --page <page> --status <draft|live> [--json]
815
+
816
+ A template is a JSON file of components (heading, text, image, link, button_link,
817
+ list, divider, spacer, columns) in four regions around the sign-in card: header,
818
+ above_form, below_form and footer. There is no raw HTML, CSS or script; Atlas
819
+ validates the file and renders it. push saves a draft only; the live page does not
820
+ change until promote (or push --promote). preview prints a signed link, valid for an
821
+ hour, that shows the draft with a preview banner.`,
822
+ actions: `atlas actions — manage Actions (tenant code run in the auth pipeline)
823
+
824
+ Usage:
825
+ atlas actions list [--json]
826
+ atlas actions deploy <file> --trigger <trigger> [--name <n>] [--json]
827
+ atlas actions test <file> [--trigger <t>] [--json]
828
+ atlas actions logs <action-id> [--json]
829
+
830
+ atlas actions gallery [query] [--trigger <t>] [--json]
831
+ atlas actions show <slug> [--json]
832
+ atlas actions install <slug> [--name <n>] [--secrets-file <dotenv>] [--json]
833
+ atlas actions installs [--json]
834
+ atlas actions update <action-id> [--secrets-file <dotenv>] [--json]
835
+ atlas actions publish <template.json> [--draft] [--json]
836
+
837
+ deploy uploads the file's code verbatim as a new action (created, not yet bound).
838
+ test runs the file OFFLINE through the @atlasauth/actions harness — no network,
839
+ no real users — and exits non-zero if the action throws. logs explains where an
840
+ action's execution history is recorded (Atlas has no live log-stream endpoint).
841
+
842
+ The gallery: gallery lists first-party and community templates; install copies
843
+ one into the instance as a DISABLED, unbound action (secret values come from a
844
+ dotenv file, never argv); installs shows which actions came from the gallery
845
+ and whether a newer version exists; update moves one to the latest version.
846
+ publish reads a manifest {slug, name, author_name, summary, description,
847
+ category, tags, trigger, license, version, code_file, secrets, changelog},
848
+ creates the template or adds the version, and submits it for review.`,
849
+ };
850
+ /** Help for the table-driven resource commands, generated from their route tables. */
851
+ function resHelp(name, blurb, ops) {
852
+ const lines = Object.entries(ops).map(([sub, o]) => {
853
+ const args = (o.p.match(/\{\}/g) ?? []).map(() => '<id>').join(' ');
854
+ return ` atlas ${name} ${`${sub} ${args}`.trim().padEnd(26)} ${o.m} ${o.p.replace(/\{\}/g, '…')}${o.f?.includes('y') ? ' (--yes)' : ''}`;
855
+ });
856
+ return `atlas ${name} — ${blurb}
857
+
858
+ Usage:
859
+ ${lines.join('\n')}
860
+
861
+ A request body is JSON from --data '<json>' or --file <path>. Anything that changes or removes
862
+ data needs --yes. --json prints raw JSON. Secrets the API returns once are shown once; store them
863
+ right away.`;
864
+ }
865
+ Object.assign(exports.COMMAND_HELP, {
866
+ apply: `atlas apply — make the instance match a config file (plan, confirm, apply)
867
+
868
+ Usage:
869
+ atlas apply [<file|dir>] [--yes] [--prune] [--force-hook] [--rotate-secret] [--show-secrets] [--secrets-file <dotenv>] [--out <dir>] [--format json|yaml]
870
+ atlas apply [<file|dir>] --check
871
+
872
+ <file> One JSON or YAML document keyed by resource type, for example:
873
+ instance: { auth_config: {...}, allowed_origins: [...] }
874
+ redirect_urls: [ { url: ... } ]
875
+ oauth_clients: [ { name: ..., redirect_uris: [...] } ]
876
+ webhook_endpoints: [ { url: ..., enabled_events: [...], secret: "\${WEBHOOK_SECRET}", active: false } ]
877
+ email_provider: { transport: brevo, from_address: ..., config: { api_key: "\${BREVO_KEY}" } }
878
+ hooks: { before_user_create: { url: ..., timeout_ms, fail_closed, enabled } }
879
+ branding: { applicationName: ..., logoUrl: ... }
880
+ or a directory from 'atlas config export' (default ./atlas-config).
881
+
882
+ Shows the plan, asks before applying (--yes skips the question; needed without a
883
+ terminal), then applies creates and updates in a fixed order: email_provider, instance,
884
+ org_settings_schema, redirect_urls, oauth_clients, hooks, oauth_providers,
885
+ custom_oauth_providers, resource_servers, jwt_templates, permissions, roles,
886
+ webhook_endpoints, sso_connections, billing_plans, notification_templates,
887
+ email_templates, organization_policies, branding. Re-running is a no-op.
888
+ Without --prune the plan compares only the keys the file sets.
889
+ --check plan only; exit 2 when anything would change (CI)
890
+ --prune also delete live resources missing from the config, and compare every live key
891
+ --force-hook enable the before_user_create hook even when its test call fails (409)
892
+ --rotate-secret send again each secret Atlas cannot compare (it never returns them)
893
+ --show-secrets print secret values in the diff; refused without a terminal or when CI is set
894
+ --secrets-file dotenv file for \${VAR} placeholders; refused unless mode 0600
895
+ --out <dir> where a new client or webhook secret is saved (mode 0600;
896
+ default ~/.config/atlas). It is shown only once.
897
+ Applying stops if any \${VAR} is unresolved. A key the resource does not have is an
898
+ error, with the nearest real key. Secrets are never printed: a changed one shows as
899
+ "client_secret: <redacted> (changed)". Where Atlas cannot tell whether a secret changed
900
+ the plan says so instead of showing drift. A changed webhook secret is rotated with no
901
+ overlap: the old one stops signing at once.`,
902
+ plan: `atlas plan — read-only drift diff of a config file or directory
903
+
904
+ Usage:
905
+ atlas plan [<file|dir>] [--check|--exit-code] [--json] [--prune] [--rotate-secret] [--show-secrets] [--secrets-file <dotenv>]
906
+
907
+ The same diff as 'atlas config plan', also for a single config file (see 'atlas
908
+ apply --help'). --check exits 2 when there is drift; nothing is ever written.`,
909
+ workflows: resHelp('workflows', 'workflow runs, templates and approvals', resources_1.WORKFLOWS),
910
+ chat: resHelp('chat', 'chat approval integrations (test a bot, list user links)', resources_1.CHAT),
911
+ 'saml-idp': resHelp('saml-idp', 'SAML identity provider service providers (import-metadata takes --data with url, entity_id, mdq_base_url)', resources_1.SAML_IDP),
912
+ provisioning: resHelp('provisioning', 'outbound provisioning connectors, preview, logs and the failure inbox', resources_1.PROVISIONING),
913
+ catalog: resHelp('catalog', 'app catalog requests', resources_1.CATALOG),
914
+ cloud: resHelp('cloud', 'cloud access portal; login prints the https launch URL for a target', resources_1.CLOUD),
915
+ 'device-sso': resHelp('device-sso', 'native OS SSO device registrations', resources_1.DEVICE_SSO),
916
+ 'connection-actions': resHelp('connection-actions', 'actions on a connected provider account', resources_1.CONNECTION_ACTIONS),
917
+ triggers: resHelp('triggers', 'connection triggers', resources_1.TRIGGERS),
918
+ agents: resHelp('agents', 'agent lifecycle, activity and access reviews', resources_1.AGENTS),
919
+ telemetry: resHelp('telemetry', 'OTLP export of gateway and relay calls', resources_1.TELEMETRY),
920
+ pdp: resHelp('pdp', 'local decision points', resources_1.PDP),
921
+ billing: resHelp('billing', 'discount codes and account credit', resources_1.BILLING),
922
+ audit: resHelp('audit', 'audit log retention (shortening needs confirm_deletion in --data)', resources_1.AUDIT),
923
+ federation: resHelp('federation', 'OpenID federation', resources_1.FEDERATION),
924
+ vc: resHelp('vc', 'deferred verifiable credential issuance', resources_1.VC),
925
+ });
926
+ //# sourceMappingURL=help.js.map