@xano/sdk 1.0.3 → 1.0.5

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 (240) hide show
  1. package/CHANGELOG.md +30 -4
  2. package/README.md +232 -334
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/{agent-file-refresh-MQKCS7QZ.js → agent-file-refresh-KVLR7M5Y.js} +13 -13
  5. package/dist/{answer-shape-LVV2SVBK.js → answer-shape-XGR2DGWY.js} +5 -5
  6. package/dist/{backend-dir-DGAQL4K5.js → backend-dir-IE4RMUFH.js} +12 -12
  7. package/dist/{backend-slot-NSCTWCUX.js → backend-slot-6HBWG5FN.js} +3 -3
  8. package/dist/bin.js +52 -52
  9. package/dist/{branch-ONWPJ4V6.js → branch-T2APKPVG.js} +9 -9
  10. package/dist/{branch-commands-R4PPN3Z7.js → branch-commands-HXXTCSOO.js} +26 -26
  11. package/dist/{capture-3JNUA6C2.js → capture-HBXFXZEW.js} +4 -4
  12. package/dist/{chunk-A6QTTJUI.js → chunk-3BJYQGAZ.js} +2 -2
  13. package/dist/{chunk-5W7DOMIU.js → chunk-3IYVHVM6.js} +2 -2
  14. package/dist/{chunk-ANHOEBTJ.js → chunk-3VX7VAQT.js} +4 -4
  15. package/dist/{chunk-FWXSTFN2.js → chunk-3WHWOKU4.js} +4 -4
  16. package/dist/{chunk-LXNQWHZM.js → chunk-44CWK6YC.js} +3 -3
  17. package/dist/{chunk-KCAL4QYP.js → chunk-4GDEEY2U.js} +4 -4
  18. package/dist/{chunk-KTGRGWZW.js → chunk-4NEBBKOP.js} +7 -7
  19. package/dist/{chunk-UKUIUS3E.js → chunk-4QBGE3EO.js} +5 -5
  20. package/dist/{chunk-IVKRT476.js → chunk-4QFBEKXI.js} +2 -2
  21. package/dist/{chunk-OOXWYAA4.js → chunk-57A5ZKPO.js} +1 -1
  22. package/dist/{chunk-A4KBHTMK.js → chunk-57B56I4B.js} +29 -29
  23. package/dist/{chunk-OPHB5ORL.js → chunk-57HMNJGB.js} +120 -76
  24. package/dist/{chunk-JTM5D7CT.js → chunk-5D6DGF3W.js} +8 -8
  25. package/dist/{chunk-E65QIWOO.js → chunk-5RLAF6RL.js} +4 -4
  26. package/dist/{chunk-MEE5RZ6G.js → chunk-5XVBT6CQ.js} +2 -2
  27. package/dist/{chunk-RX3EMQGN.js → chunk-5YBNXNKU.js} +2 -2
  28. package/dist/{chunk-NA3PXMEF.js → chunk-64WWE3EF.js} +1 -1
  29. package/dist/{chunk-2LVTBPW2.js → chunk-65SW2BA5.js} +3 -3
  30. package/dist/{chunk-D3XOH7E7.js → chunk-7DBM6XHR.js} +8 -8
  31. package/dist/{chunk-DIG3NITC.js → chunk-A4NNCI4O.js} +3 -3
  32. package/dist/{chunk-4APOHK7Y.js → chunk-AESE434J.js} +2 -2
  33. package/dist/{chunk-ERJNHEFV.js → chunk-AGD7F7YI.js} +3 -3
  34. package/dist/{chunk-K3LE5B5E.js → chunk-AGSCOISO.js} +139 -139
  35. package/dist/{chunk-NPXM6ZQY.js → chunk-AMBEITWL.js} +4 -4
  36. package/dist/{chunk-5T2CTWTB.js → chunk-BBPAXOU6.js} +5 -5
  37. package/dist/{chunk-WGA25EV5.js → chunk-BMCZQZMI.js} +4 -4
  38. package/dist/{chunk-CJPLBFFY.js → chunk-CJ76PSJT.js} +9 -9
  39. package/dist/{chunk-6NYLVUSZ.js → chunk-CV54PASI.js} +53 -50
  40. package/dist/{chunk-XCPF7BEJ.js → chunk-DEVGLLNZ.js} +5 -5
  41. package/dist/{chunk-JTUKLCXS.js → chunk-DXUICABI.js} +1 -1
  42. package/dist/{chunk-LAKHO2B7.js → chunk-ES5A66IH.js} +8 -8
  43. package/dist/{chunk-UDE5C2XN.js → chunk-F3557PVM.js} +3 -3
  44. package/dist/{chunk-HHFPIJGL.js → chunk-F6IKWAIU.js} +21 -17
  45. package/dist/{chunk-II747OWE.js → chunk-FV55SRQU.js} +7 -7
  46. package/dist/{chunk-SEUCZZCP.js → chunk-G57RYMKB.js} +3 -3
  47. package/dist/{chunk-MNVDVR3M.js → chunk-GMVW6ZZK.js} +4 -4
  48. package/dist/{chunk-MN2PB6WB.js → chunk-HLQH3AXB.js} +3 -3
  49. package/dist/{chunk-HSEQYBDO.js → chunk-HOOOOJJP.js} +3 -3
  50. package/dist/{chunk-IXUPUFCG.js → chunk-I5VEROXW.js} +2 -2
  51. package/dist/{chunk-UI4OPTYR.js → chunk-IV446ZLJ.js} +2 -2
  52. package/dist/{chunk-CYB7UQA2.js → chunk-JQOX6HW4.js} +5 -5
  53. package/dist/{chunk-OPG4DYX2.js → chunk-JSEVKRVJ.js} +3 -3
  54. package/dist/{chunk-46TUUNM3.js → chunk-JXKO6JT7.js} +36 -36
  55. package/dist/{chunk-FPBGAT5D.js → chunk-JZWUAEMO.js} +3 -3
  56. package/dist/{chunk-6R7S775T.js → chunk-K6CB5TKM.js} +2 -2
  57. package/dist/{chunk-OO63ZU46.js → chunk-K6PRKPFX.js} +8 -8
  58. package/dist/{chunk-W5ONYLOP.js → chunk-KQLACS4Q.js} +4 -4
  59. package/dist/{chunk-SEATQLFB.js → chunk-KUU7T4ZE.js} +31 -31
  60. package/dist/{chunk-KXYW3DRR.js → chunk-L3BDO2BI.js} +9 -9
  61. package/dist/{chunk-IRQCV3OT.js → chunk-LLS2WO2K.js} +4 -4
  62. package/dist/{chunk-7KLAMYMS.js → chunk-LZDA6SVD.js} +46 -45
  63. package/dist/{chunk-UCQ2VUTG.js → chunk-M6ZFSTIZ.js} +2 -2
  64. package/dist/{chunk-DYG5D3FD.js → chunk-M7GJ6YUF.js} +2 -2
  65. package/dist/{chunk-XXZZGXW2.js → chunk-MEIJDRHU.js} +2 -2
  66. package/dist/{chunk-QXTKSOFI.js → chunk-MF4W6FHU.js} +1 -1
  67. package/dist/{chunk-FSYVOCS7.js → chunk-MYLPOVX6.js} +12 -13
  68. package/dist/{chunk-ZH5R7NKN.js → chunk-N6BWB35H.js} +3 -3
  69. package/dist/{chunk-PWIXETG7.js → chunk-NGAODDLX.js} +5 -5
  70. package/dist/{chunk-Z5UCPWGU.js → chunk-NNB7VUCH.js} +23 -23
  71. package/dist/{chunk-QEZL5MPJ.js → chunk-NUU76247.js} +3 -3
  72. package/dist/{chunk-2CGPQ7IM.js → chunk-OGUMHW2X.js} +6 -6
  73. package/dist/{chunk-I2BGYNHD.js → chunk-OJPZEUPH.js} +7 -7
  74. package/dist/{chunk-OOGXZL7Z.js → chunk-OKNE3TWU.js} +2 -2
  75. package/dist/{chunk-KUTFFHUM.js → chunk-OVV2HXJ6.js} +2 -2
  76. package/dist/{chunk-7KGASMCE.js → chunk-PIPIA7K7.js} +8 -8
  77. package/dist/{chunk-AM4FKL4J.js → chunk-PL7AIAWS.js} +12 -12
  78. package/dist/{chunk-WL2DSNJV.js → chunk-Q22BMRPF.js} +2 -2
  79. package/dist/{chunk-AMTJ4G32.js → chunk-QOLOQ35F.js} +6 -6
  80. package/dist/{chunk-BUECLQXK.js → chunk-QZTJ2556.js} +4 -4
  81. package/dist/{chunk-O7QOWS6M.js → chunk-RXCT3OCU.js} +12 -12
  82. package/dist/{chunk-F5KILDDO.js → chunk-S5KQIFKJ.js} +122 -98
  83. package/dist/{chunk-CBYQ2ZN3.js → chunk-S5TEJIGP.js} +2 -2
  84. package/dist/{chunk-HMLGM2MW.js → chunk-SF2B7MZK.js} +3 -3
  85. package/dist/{chunk-FURLOAUM.js → chunk-SNGFEESM.js} +3 -3
  86. package/dist/{chunk-VD32O6KZ.js → chunk-SQPIECXD.js} +3 -3
  87. package/dist/{chunk-5YL5OC2G.js → chunk-SRX6B544.js} +5 -5
  88. package/dist/{chunk-CFSFBKHP.js → chunk-TEBS7FE6.js} +2 -2
  89. package/dist/{chunk-TTVAHCWP.js → chunk-TM5LRSBB.js} +2 -2
  90. package/dist/{chunk-ZZEIC5PT.js → chunk-TUEFTRC2.js} +5 -5
  91. package/dist/{chunk-EWCDPFW5.js → chunk-U6DR6464.js} +4 -4
  92. package/dist/{chunk-7TXBKK5G.js → chunk-UIEFE6FU.js} +7 -7
  93. package/dist/{chunk-3H3EPMFY.js → chunk-UJ6ZZJDD.js} +2 -2
  94. package/dist/{chunk-YTPGQV5C.js → chunk-V4IBHDIY.js} +11 -11
  95. package/dist/{chunk-XNCP4KYO.js → chunk-VQPDATQT.js} +1 -1
  96. package/dist/{chunk-4PQHO74B.js → chunk-VZ22VUAS.js} +2 -2
  97. package/dist/{chunk-BUJRS7XB.js → chunk-WYS6XVZ3.js} +2 -2
  98. package/dist/{chunk-QV3GXQRE.js → chunk-XIABDKFQ.js} +2 -2
  99. package/dist/{chunk-EESV6NU2.js → chunk-XJU6UAFV.js} +2 -2
  100. package/dist/{chunk-SBR2WZXG.js → chunk-XNZURZ7T.js} +59 -52
  101. package/dist/{chunk-WFG67AYS.js → chunk-Y6NO3DLQ.js} +3 -3
  102. package/dist/{chunk-37AHZ7JX.js → chunk-Y76ERHLK.js} +5 -5
  103. package/dist/{chunk-HHW5AWVD.js → chunk-YI76TURL.js} +30 -30
  104. package/dist/{chunk-ZVYN4FXD.js → chunk-YSLMMR2U.js} +14 -14
  105. package/dist/{chunk-ZTUNCVAR.js → chunk-Z2BRSQ6M.js} +49 -49
  106. package/dist/{chunk-D64XUF5Q.js → chunk-Z3SNX45M.js} +16 -16
  107. package/dist/{chunk-FMOEVAGT.js → chunk-Z4VN347O.js} +3 -3
  108. package/dist/{chunk-UWY3R4TS.js → chunk-ZHGWR45B.js} +22 -22
  109. package/dist/cli.d.ts +20 -18
  110. package/dist/cli.js +50 -50
  111. package/dist/{codegen-command-SW2AP7KR.js → codegen-command-L2OO6OTE.js} +63 -63
  112. package/dist/{commands-CVFYC4GK.js → commands-2E4JB3DB.js} +2 -2
  113. package/dist/{completion-AUEQC4XJ.js → completion-LPJIH5VQ.js} +11 -11
  114. package/dist/{config-JU6OQC77.js → config-QDCRKEWD.js} +4 -4
  115. package/dist/{deploy-command-RD6W7PXN.js → deploy-command-HJZNYCUY.js} +57 -57
  116. package/dist/{deploy-source-ULSWF2V7.js → deploy-source-5COWTBOC.js} +34 -34
  117. package/dist/{dev-env-sync-E2GFIVC5.js → dev-env-sync-GZ4QQJGV.js} +51 -51
  118. package/dist/{display-name-hint-DMORHANO.js → display-name-hint-AHCNH6TF.js} +11 -11
  119. package/dist/{emit-hOFbgzde.d.ts → emit-DqG6qddr.d.ts} +2 -2
  120. package/dist/env-example-refresh-DWQIOQYR.js +127 -0
  121. package/dist/{env-pull-command-QYQEOUE3.js → env-pull-command-Z4RLVEGJ.js} +46 -46
  122. package/dist/{env-target-KUWQYHZ7.js → env-target-ZHQUS5BO.js} +13 -13
  123. package/dist/{env-var-command-2ZAVIPNY.js → env-var-command-FKQ4VVQ6.js} +47 -47
  124. package/dist/{ephemeral-BMFY55BQ.js → ephemeral-L4KUOGEU.js} +9 -9
  125. package/dist/{ephemeral-command-UKHBT3OW.js → ephemeral-command-GRPFI3TD.js} +47 -47
  126. package/dist/{ephemeral-state-6TY4JIPA.js → ephemeral-state-VLYU2BXR.js} +11 -11
  127. package/dist/{generate-command-YN3HZWHG.js → generate-command-XNODJFDQ.js} +68 -68
  128. package/dist/{gitignore-AU5X5F3I.js → gitignore-VWRSZX5F.js} +16 -16
  129. package/dist/{guards-EJU2ONAX.js → guards-OPSGB6LG.js} +5 -5
  130. package/dist/{hosted-file-PSHJB3HX.js → hosted-file-S7YUQAH6.js} +2 -2
  131. package/dist/{impersonate-command-ZKE77GFT.js → impersonate-command-AEKIZHHK.js} +40 -40
  132. package/dist/{import-TBTOTU52.js → import-PHSSFFLA.js} +5 -5
  133. package/dist/index.d.ts +4 -4
  134. package/dist/index.js +10 -10
  135. package/dist/{init-command-NPXBMJNG.js → init-command-TI3HCKXZ.js} +55 -55
  136. package/dist/{init-modules-5TSTLGH5.js → init-modules-SGSX7XEY.js} +9 -9
  137. package/dist/{init-web-Y2PBNJTQ.js → init-web-6HX3YLQP.js} +2 -2
  138. package/dist/internal.d.ts +4 -4
  139. package/dist/internal.js +24 -25
  140. package/dist/{io-ZUKAGFVE.js → io-TAF4WXYQ.js} +5 -5
  141. package/dist/{keep-data-merge-TDSELE5U.js → keep-data-merge-GUGF7MVZ.js} +28 -28
  142. package/dist/{lambda-config-reconcile-OUZ4OYAB.js → lambda-config-reconcile-65U6I4KU.js} +3 -3
  143. package/dist/{landed-6VO7CX5P.js → landed-QA6PRTV2.js} +4 -4
  144. package/dist/{landing-record-W7VQ4KV4.js → landing-record-FCAWLCZU.js} +22 -22
  145. package/dist/{live-diff-2S7E3SBZ.js → live-diff-IM4W3ELT.js} +5 -5
  146. package/dist/local-engine-choice-FPJAZSSD.js +79 -0
  147. package/dist/{local-engine-command-5MTGZIZ4.js → local-engine-command-73NHWD6V.js} +92 -92
  148. package/dist/{local-engine-config-5U3SC434.js → local-engine-config-W3KB7RWM.js} +2 -2
  149. package/dist/{local-engine-deploy-TXAOYRGF.js → local-engine-deploy-Y4OAWL7K.js} +16 -16
  150. package/dist/{local-engine-process-6VZ7JJBP.js → local-engine-process-6YPJHKYM.js} +11 -11
  151. package/dist/{local-engine-state-TJWPWCC4.js → local-engine-state-OCW5YDD7.js} +3 -3
  152. package/dist/{local-engine-update-check-R5SPDVEJ.js → local-engine-update-check-X7TZGRFL.js} +7 -7
  153. package/dist/{lock-TS465GVY.js → lock-WXXC3QHL.js} +3 -3
  154. package/dist/{lock-commands-OBXAUSZX.js → lock-commands-PKDBNRSD.js} +55 -55
  155. package/dist/{login-command-CB3O3UDZ.js → login-command-V4U4FA5G.js} +27 -27
  156. package/dist/{logout-command-J5CP5HZZ.js → logout-command-TV3P545Z.js} +16 -16
  157. package/dist/{loop-UFHKSOQ4.js → loop-VKHGQ6MP.js} +6 -6
  158. package/dist/{marketplace-command-A5S25ZHF.js → marketplace-command-LEFOAEAV.js} +31 -31
  159. package/dist/{marketplace-resolve-GRXMK5YD.js → marketplace-resolve-ME7O7JBJ.js} +7 -7
  160. package/dist/{meta-client-FB73643X.js → meta-client-TEEECA5W.js} +14 -14
  161. package/dist/{module-manifest-GIKFNXPE.js → module-manifest-7YLGIRCY.js} +3 -3
  162. package/dist/node.d.ts +4 -4
  163. package/dist/node.js +56 -56
  164. package/dist/operation-outcome-GNDD35WL.js +51 -0
  165. package/dist/{output-target-6HNPK6KC.js → output-target-5FWX3NGZ.js} +17 -17
  166. package/dist/{plan-disclosure-BHYG7TZ7.js → plan-disclosure-QGL5UYQR.js} +16 -16
  167. package/dist/{plugin-contributions-X4V22PJQ.js → plugin-contributions-GNFTWDEB.js} +4 -4
  168. package/dist/{plugin-prompt-DKNQHW6Y.js → plugin-prompt-VEQGMZ4T.js} +4 -4
  169. package/dist/{plugin-questions-CQRVOWFK.js → plugin-questions-BGRL23GO.js} +3 -3
  170. package/dist/{preflight-command-NZ75PSRL.js → preflight-command-VKJKXRRI.js} +63 -63
  171. package/dist/{profile-command-KIRI4GA4.js → profile-command-P7A3BH26.js} +29 -29
  172. package/dist/{profile-pointer-UOO7JNFG.js → profile-pointer-HG7IXE4I.js} +4 -4
  173. package/dist/{profile-select-74TRDEPD.js → profile-select-45G5VPJK.js} +2 -2
  174. package/dist/{project-dependency-JGCJZ26H.js → project-dependency-Z4CKOCJI.js} +8 -8
  175. package/dist/{project-sdk-FOR4IOXL.js → project-sdk-JWZWGXXR.js} +3 -3
  176. package/dist/promote-command-KHTIK44I.js +141 -0
  177. package/dist/{prompt-5GUQTCSP.js → prompt-SURZOUUW.js} +3 -3
  178. package/dist/{publish-command-74HMEZ7E.js → publish-command-HGAB3H4A.js} +131 -60
  179. package/dist/{pull-command-VO5RRGZ5.js → pull-command-EUEWBRXZ.js} +66 -66
  180. package/dist/{pull-superseded-GGURV5J3.js → pull-superseded-TOT5S4QU.js} +3 -3
  181. package/dist/{release-command-ZHM5FA4M.js → release-command-WOVQAMUY.js} +64 -64
  182. package/dist/{release-ns-command-2TL26YOM.js → release-ns-command-WOQE2BDQ.js} +87 -87
  183. package/dist/{retry-command-Y5YJGOH3.js → retry-command-JRGMZZAC.js} +8 -8
  184. package/dist/{routes-manifest-3BNZIVST.js → routes-manifest-URFMAWJE.js} +5 -5
  185. package/dist/scaffold.js +2 -2
  186. package/dist/{secrets-file-NBBR6DYS.js → secrets-file-YWZWVJ52.js} +16 -16
  187. package/dist/{secrets-fill-command-X3HQ4JYN.js → secrets-fill-command-HIHK3VH2.js} +54 -54
  188. package/dist/{seed-GJHJSEUE.js → seed-24DTEY5S.js} +7 -7
  189. package/dist/{source-resolve-NTI3JFO6.js → source-resolve-OWD3MIEO.js} +23 -23
  190. package/dist/{static-host-WM24RG25.js → static-host-UIR2OLPQ.js} +9 -9
  191. package/dist/{status-command-RVMOLYPR.js → status-command-JKTHH5QE.js} +53 -53
  192. package/dist/{store-MR7IKXKK.js → store-5YAQS6KU.js} +6 -6
  193. package/dist/{store-CfgPaVPO.d.ts → store-zxw2go0f.d.ts} +3 -3
  194. package/dist/sveltekit.d.ts +5 -5
  195. package/dist/sveltekit.js +1 -1
  196. package/dist/{sync-contributions-KGCVRH2J.js → sync-contributions-RBB6JVOL.js} +9 -9
  197. package/dist/{table-ZBDPKMNH.js → table-MQFVYA4K.js} +8 -8
  198. package/dist/{tables-command-GAOXJPMA.js → tables-command-5Q4BSUNO.js} +39 -39
  199. package/dist/{tenant-GKXMOYLK.js → tenant-Q3LPVSSM.js} +10 -10
  200. package/dist/{tenant-command-FAJ7WZTH.js → tenant-command-BFVU2PEX.js} +84 -84
  201. package/dist/{test-command-53FRDZ32.js → test-command-F4VUU4QR.js} +40 -40
  202. package/dist/{tests-C55M5EQS.js → tests-5ZSDFVIJ.js} +6 -6
  203. package/dist/{token-44CKLYWD.js → token-TERSTNU4.js} +12 -12
  204. package/dist/{toolchain-hooks-BGZBDFAT.js → toolchain-hooks-QVUZ6HZ4.js} +2 -2
  205. package/dist/{toolchain-modules-MPPH633S.js → toolchain-modules-FD5ANV2U.js} +5 -5
  206. package/dist/tracked-backend-B4HTME4S.js +80 -0
  207. package/dist/{update-check-Q4HJHHL5.js → update-check-O4C2LCZH.js} +53 -53
  208. package/dist/{upgrade-command-C63HIBVH.js → upgrade-command-NVFWLMTA.js} +56 -56
  209. package/dist/{whoami-command-WC5EKB4W.js → whoami-command-YKNTISIV.js} +15 -15
  210. package/dist/{workspace-EJVWTIWX.js → workspace-GGVGE2S5.js} +5 -5
  211. package/dist/{workspace-binding-BRPPUSWG.js → workspace-binding-OS4ZOX4S.js} +14 -14
  212. package/dist/{workspace-command-Y6STVPYO.js → workspace-command-GTUNVN7K.js} +77 -77
  213. package/dist/{workspace-env-SIINWNMP.js → workspace-env-467C5KHM.js} +13 -13
  214. package/dist/{workspace-export-AIGM6LC7.js → workspace-export-3XTVGQVM.js} +5 -5
  215. package/dist/{writable-FYJBTJOU.js → writable-7SSWUQJ3.js} +3 -3
  216. package/dist/{xano-BSHYVFSE.js → xano-6RS5XQZE.js} +7 -7
  217. package/dist/{xanosdk-import-UKEO7R7O.js → xanosdk-import-E3WSIYUE.js} +9 -9
  218. package/dist/{xanosdk-project-MQTZKITV.js → xanosdk-project-KH5TZ2KI.js} +14 -14
  219. package/guides/README.md +1 -0
  220. package/guides/authoring.md +3 -5
  221. package/guides/bundle.md +45 -0
  222. package/guides/cli.md +32 -30
  223. package/guides/codegen.md +5 -4
  224. package/guides/codes.md +9 -9
  225. package/guides/deploying.md +63 -58
  226. package/guides/environment.md +14 -14
  227. package/guides/marketplace.md +7 -4
  228. package/guides/project-structure.md +14 -0
  229. package/llms/client.md +3 -4
  230. package/llms/errors.md +1 -1
  231. package/llms/tests.md +2 -2
  232. package/llms-full.txt +14 -15
  233. package/llms.txt +8 -8
  234. package/manifest.json +110 -107
  235. package/package.json +4 -4
  236. package/dist/env-example-refresh-WFKGILLY.js +0 -127
  237. package/dist/local-engine-choice-OXULXWEP.js +0 -79
  238. package/dist/operation-outcome-V4FUJI7V.js +0 -51
  239. package/dist/promote-command-IPDH5OBT.js +0 -141
  240. package/dist/tracked-backend-AJLHRGLF.js +0 -80
@@ -3,11 +3,11 @@ import {
3
3
  microserviceLine,
4
4
  readyRatio,
5
5
  waitForMicroservices
6
- } from "./chunk-EWCDPFW5.js";
6
+ } from "./chunk-U6DR6464.js";
7
7
  import {
8
8
  passwordHashesWarning,
9
9
  passwordOrigin
10
- } from "./chunk-D3XOH7E7.js";
10
+ } from "./chunk-7DBM6XHR.js";
11
11
  import {
12
12
  openBrowser
13
13
  } from "./chunk-FQOF7E2E.js";
@@ -25,13 +25,13 @@ import {
25
25
  staticRetryHint,
26
26
  unknownStaticOutcome,
27
27
  warnStaticTeardown
28
- } from "./chunk-KTGRGWZW.js";
28
+ } from "./chunk-4NEBBKOP.js";
29
29
  import {
30
30
  HostedFilesUnresolvedError,
31
31
  ImportNotSentError,
32
32
  XanoSdkImportRefusal,
33
33
  xanosdkImport
34
- } from "./chunk-AMTJ4G32.js";
34
+ } from "./chunk-QOLOQ35F.js";
35
35
  import {
36
36
  archiveHostedFiles,
37
37
  decodeWorkspaceArchive,
@@ -48,23 +48,23 @@ import {
48
48
  missingLockDir,
49
49
  refuseCompileValueFlags,
50
50
  refuseValueFlagsBesideBundle
51
- } from "./chunk-F5KILDDO.js";
51
+ } from "./chunk-S5KQIFKJ.js";
52
52
  import {
53
53
  recordDeployed
54
- } from "./chunk-HSEQYBDO.js";
54
+ } from "./chunk-HOOOOJJP.js";
55
55
  import {
56
56
  lookupEphemeral
57
- } from "./chunk-46TUUNM3.js";
57
+ } from "./chunk-JXKO6JT7.js";
58
58
  import {
59
59
  getAccessToken
60
- } from "./chunk-CJPLBFFY.js";
60
+ } from "./chunk-CJ76PSJT.js";
61
61
  import {
62
62
  otherCredentialRefusal
63
- } from "./chunk-YTPGQV5C.js";
63
+ } from "./chunk-V4IBHDIY.js";
64
64
  import {
65
65
  engineNameForProject,
66
66
  getEngineRecord
67
- } from "./chunk-WL2DSNJV.js";
67
+ } from "./chunk-Q22BMRPF.js";
68
68
  import {
69
69
  environmentKey,
70
70
  ephemeralLandedOn,
@@ -75,7 +75,7 @@ import {
75
75
  readEphemeralState,
76
76
  recordStaticUrl,
77
77
  setEnvironment
78
- } from "./chunk-UKUIUS3E.js";
78
+ } from "./chunk-4QBGE3EO.js";
79
79
  import {
80
80
  selectDeployArm
81
81
  } from "./chunk-ZYJP6BOO.js";
@@ -89,41 +89,41 @@ import {
89
89
  namedEphemeral,
90
90
  renameEphemeral,
91
91
  waitUntilReady
92
- } from "./chunk-BUECLQXK.js";
92
+ } from "./chunk-QZTJ2556.js";
93
93
  import {
94
94
  pipedYes,
95
95
  retryCommand,
96
96
  withheldNote,
97
97
  yesRerun
98
- } from "./chunk-FMOEVAGT.js";
98
+ } from "./chunk-Z4VN347O.js";
99
99
  import {
100
100
  andList
101
101
  } from "./chunk-622HUCZT.js";
102
102
  import {
103
103
  contextFlags,
104
104
  credentialFileOf
105
- } from "./chunk-SEUCZZCP.js";
105
+ } from "./chunk-G57RYMKB.js";
106
106
  import {
107
107
  describeWrite,
108
108
  noteLanded
109
109
  } from "./chunk-4KHEMC32.js";
110
110
  import {
111
111
  readLockFile
112
- } from "./chunk-VD32O6KZ.js";
112
+ } from "./chunk-SQPIECXD.js";
113
113
  import {
114
114
  storedColumnsOf,
115
115
  withStoredColumns
116
- } from "./chunk-RX3EMQGN.js";
116
+ } from "./chunk-5YBNXNKU.js";
117
117
  import {
118
118
  SENT_AFTERMATH,
119
119
  TransportError,
120
120
  certificateFailureCode,
121
121
  closeSentence,
122
122
  withoutReadAftermath
123
- } from "./chunk-MN2PB6WB.js";
123
+ } from "./chunk-HLQH3AXB.js";
124
124
  import {
125
125
  DEFAULT_PROFILE
126
- } from "./chunk-QXTKSOFI.js";
126
+ } from "./chunk-MF4W6FHU.js";
127
127
  import {
128
128
  CliError,
129
129
  EXIT_OUTCOME_UNKNOWN,
@@ -151,10 +151,10 @@ import {
151
151
  withSpinner,
152
152
  writeJson,
153
153
  writeTargetPayload
154
- } from "./chunk-SBR2WZXG.js";
154
+ } from "./chunk-XNZURZ7T.js";
155
155
  import {
156
156
  codePinnedTables
157
- } from "./chunk-OOGXZL7Z.js";
157
+ } from "./chunk-OKNE3TWU.js";
158
158
  import {
159
159
  shellQuote
160
160
  } from "./chunk-5ZSO4T2G.js";
@@ -204,7 +204,7 @@ function deriveDisplay(bundleText, cwd, source) {
204
204
  return basename(cwd) || "xanosdk-app";
205
205
  }
206
206
  async function assertNoSeedLeaks(dir, values, opts = {}) {
207
- const { assertStaticDir, findSeedLeaks, StaticDirError } = await import("./static-host-WM24RG25.js");
207
+ const { assertStaticDir, findSeedLeaks, StaticDirError } = await import("./static-host-UIR2OLPQ.js");
208
208
  try {
209
209
  assertStaticDir(dir, "--static", void 0, opts);
210
210
  } catch (err) {
@@ -266,11 +266,11 @@ async function runDeployedTests(auth, summary, args) {
266
266
  try {
267
267
  return await runTestsOrThrow(auth, summary, args, settled, notRun);
268
268
  } catch (err) {
269
- const { isSuiteUnreachable, suiteUnreachableCheck } = await import("./test-command-53FRDZ32.js");
269
+ const { isSuiteUnreachable, suiteUnreachableCheck } = await import("./test-command-F4VUU4QR.js");
270
270
  const message = err instanceof Error ? err.message : String(err);
271
271
  const reason = isSuiteUnreachable(err) ? `${message.split("\n")[0] ?? message}
272
272
  ${suiteUnreachableCheck(
273
- summary.localEngine !== void 0 ? { kind: "local-engine", env: summary.localEngine.name } : { kind: "ephemeral", env: summary.ephemeral?.name ?? null },
273
+ summary.engine !== void 0 ? { kind: "local", env: summary.engine.name } : { kind: "ephemeral", env: summary.ephemeral?.name ?? null },
274
274
  args
275
275
  )}.` : withoutReadAftermath(message);
276
276
  const again = testRunAllCommand(summary, args);
@@ -283,27 +283,27 @@ ${suiteUnreachableCheck(
283
283
  }
284
284
  }
285
285
  function testRunAllCommand(summary, args) {
286
- const on = summary.localEngine !== void 0 ? `local-engine:${shellQuote(summary.localEngine.name)}` : summary.ephemeral?.name !== void 0 ? `ephemeral:${shellQuote(summary.ephemeral.name)}` : void 0;
286
+ const on = summary.engine !== void 0 ? `local:${shellQuote(summary.engine.name)}` : summary.ephemeral?.name !== void 0 ? `ephemeral:${shellQuote(summary.ephemeral.name)}` : void 0;
287
287
  if (on === void 0) return void 0;
288
288
  const kind = args.kind !== void 0 ? ` --kind ${args.kind}` : "";
289
289
  const concurrency = args.concurrency !== void 0 ? ` --concurrency ${args.concurrency}` : "";
290
- const flags = summary.localEngine !== void 0 ? "" : contextFlags(args);
290
+ const flags = summary.engine !== void 0 ? "" : contextFlags(args);
291
291
  return `xanosdk test run-all --on ${on}${kind}${concurrency}${flags}`;
292
292
  }
293
293
  async function testSummaryOf(outcomes, notRun = []) {
294
- const { suiteCounts, testRow } = await import("./test-command-53FRDZ32.js");
294
+ const { suiteCounts, testRow } = await import("./test-command-F4VUU4QR.js");
295
295
  return { ...suiteCounts(outcomes, notRun), tests: outcomes.map(testRow) };
296
296
  }
297
297
  async function runTestsOrThrow(auth, summary, args, settled, notRun) {
298
- const { runSuite, printTally, noTestsFound, EXIT_TESTS_FAILED } = await import("./test-command-53FRDZ32.js");
299
- const { qualifiedName } = await import("./tests-C55M5EQS.js");
298
+ const { runSuite, printTally, noTestsFound, EXIT_TESTS_FAILED } = await import("./test-command-F4VUU4QR.js");
299
+ const { qualifiedName } = await import("./tests-5ZSDFVIJ.js");
300
300
  if (summary.url === void 0) {
301
301
  warn("Skipped --test: the ephemeral reported no base URL to run against.", "deploy.tests-not-run");
302
302
  return void 0;
303
303
  }
304
- const local = summary.localEngine;
304
+ const local = summary.engine;
305
305
  const name = summary.ephemeral?.name;
306
- const target = local ? { base: summary.url, workspaceId: local.workspaceId, label: `local engine "${local.name}"` } : {
306
+ const target = local ? { base: summary.url, workspaceId: local.workspaceId, label: `Xano Engine "${local.name}"` } : {
307
307
  base: summary.url,
308
308
  workspaceId: 1,
309
309
  // Named as `test run-all` names it: `ephemeral "x" ("Display")`.
@@ -339,15 +339,15 @@ async function ignoreBackendSecretFilesRead(args) {
339
339
  if (args.bundle !== void 0 || args.file === void 0) return;
340
340
  const paths = [];
341
341
  if (args.envFile === void 0) {
342
- const { defaultWorkspaceEnvPath } = await import("./workspace-env-SIINWNMP.js");
342
+ const { defaultWorkspaceEnvPath } = await import("./workspace-env-467C5KHM.js");
343
343
  paths.push(defaultWorkspaceEnvPath(args.file));
344
344
  }
345
345
  if (args.secretsFile === void 0) {
346
- const { defaultWorkspaceSecretsPath } = await import("./secrets-file-NBBR6DYS.js");
346
+ const { defaultWorkspaceSecretsPath } = await import("./secrets-file-YWZWVJ52.js");
347
347
  paths.push(defaultWorkspaceSecretsPath(args.file));
348
348
  }
349
- const { gitSaysIgnored } = await import("./store-MR7IKXKK.js");
350
- const { ensureSecretPathGitignored, refuseIfTracked, secretPathLabel } = await import("./gitignore-AU5X5F3I.js");
349
+ const { gitSaysIgnored } = await import("./store-5YAQS6KU.js");
350
+ const { ensureSecretPathGitignored, refuseIfTracked, secretPathLabel } = await import("./gitignore-VWRSZX5F.js");
351
351
  for (const path of paths) {
352
352
  if (!existsSync(path)) continue;
353
353
  if (gitSaysIgnored(path) !== false) continue;
@@ -371,7 +371,7 @@ async function ignoreBackendSecretFilesRead(args) {
371
371
  }
372
372
  function recordedLanding(dest, isEphemeral, flags = "") {
373
373
  if (dest.kind === "workspace") return `\`xanosdk promote <name>${flags}\``;
374
- if (isEphemeral) return `\`xanosdk deploy release:<name>${flags}\``;
374
+ if (isEphemeral) return `\`xanosdk deploy release:<name> --ephemeral${flags}\``;
375
375
  return `\`xanosdk tenant deploy ${shellQuote(dest.name)} <name>${flags}\``;
376
376
  }
377
377
  function storeAsReleaseHint(dest, isEphemeral, typed, flags = "", yes = false, shipsFiles = false) {
@@ -389,7 +389,7 @@ function storeAsReleaseHint(dest, isEphemeral, typed, flags = "", yes = false, s
389
389
  return `\`xanosdk release create <name> --from ephemeral:${shellQuote(dest.name)}${against}${flags}\` stores what it now runs as a release that ${landed}.`;
390
390
  }
391
391
  const source = typed.bundle !== void 0 ? ` --bundle ${shellQuote(typed.bundle)}` : typed.file !== void 0 ? ` ${shellQuote(typed.file)}` : "";
392
- return `A release is cut from a backend that ran on the instance, and a standard tenant cannot be cut from. To keep this source as one that ${landed}: \`xanosdk deploy${source}${flags}\` (to this project's ephemeral), then \`xanosdk release create <name>${against}${flags}\`, then ${land} lands it here \u2014 it REPLACES what the tenant runs with that release, so anything else merged onto it (another project's objects) is dropped.`;
392
+ return `A release is cut from a backend that ran on the instance, and a standard tenant cannot be cut from. To keep this source as one that ${landed}: \`xanosdk deploy${source} --ephemeral${flags}\` (to this project's ephemeral), then \`xanosdk release create <name>${against}${flags}\`, then ${land} lands it here \u2014 it REPLACES what the tenant runs with that release, so anything else merged onto it (another project's objects) is dropped.`;
393
393
  }
394
394
  function tenantWithoutWorkspace(tenant, named, typed, args) {
395
395
  const flags = contextFlags(args);
@@ -406,7 +406,7 @@ function tenantWithoutWorkspace(tenant, named, typed, args) {
406
406
  return new CliError(
407
407
  "SDK_USAGE",
408
408
  `${named} has no workspace yet, so there is nothing for \`deploy --to\` to merge into or preview against \u2014 a tenant on its own domain gets its workspace when its first release lands. Nothing was written.
409
- Land a release on it first: ${land("<release>")} (\`xanosdk release list${flags}\` names them). To land this source, deploy it to this project's ephemeral (\`xanosdk deploy${source}${flags}\`), cut it (\`xanosdk release create <name>${against}${seed}${flags}\`), and land that: ${land("<name>")}.
409
+ Land a release on it first: ${land("<release>")} (\`xanosdk release list${flags}\` names them). To land this source, deploy it to this project's ephemeral (\`xanosdk deploy${source} --ephemeral${flags}\`), cut it (\`xanosdk release create <name>${against}${seed}${flags}\`), and land that: ${land("<name>")}.
410
410
  After that, \`${rerun.command}\` ${args.dryRun ? "previews merging" : "merges"} onto it.${withheldNote(rerun.withheld)}`,
411
411
  { details: { reason: "tenant-has-no-workspace", tenant } }
412
412
  );
@@ -416,14 +416,14 @@ function shipsStoredFiles(bundle) {
416
416
  return Array.isArray(payload?.vault) && payload.vault.length > 0;
417
417
  }
418
418
  async function soleTrackedEphemeral() {
419
- const { readEphemeralState: readEphemeralState2 } = await import("./ephemeral-state-6TY4JIPA.js");
419
+ const { readEphemeralState: readEphemeralState2 } = await import("./ephemeral-state-VLYU2BXR.js");
420
420
  const names = new Set(Object.values(readEphemeralState2(process.cwd()).environments).map((r) => r.name));
421
421
  return names.size === 1 ? [...names][0] : void 0;
422
422
  }
423
423
  async function runDeployToDestination(args, to) {
424
- const { requireBackendSlot, parseSlot } = await import("./backend-slot-NSCTWCUX.js");
425
- const { resolveSource, describeBackend } = await import("./source-resolve-NTI3JFO6.js");
426
- const { looksLikeSource, resolveProjectEntry } = await import("./deploy-source-ULSWF2V7.js");
424
+ const { requireBackendSlot, parseSlot } = await import("./backend-slot-6HBWG5FN.js");
425
+ const { resolveSource, describeBackend } = await import("./source-resolve-OWD3MIEO.js");
426
+ const { looksLikeSource, resolveProjectEntry } = await import("./deploy-source-5COWTBOC.js");
427
427
  const dest = parseSlot(requireBackendSlot("deploy", void 0, "to"), to, to.trim() === "ephemeral" ? await soleTrackedEphemeral() : void 0);
428
428
  if (dest.kind !== "workspace" && dest.kind !== "tenant") {
429
429
  throw new Error(`Internal: \`deploy --to\` parsed ${withArticle(dest.kind)}, which its slot does not accept.`);
@@ -432,7 +432,7 @@ async function runDeployToDestination(args, to) {
432
432
  const flags = contextFlags(args);
433
433
  const release = /^release:(.*)$/.exec(args.file)?.[1];
434
434
  const releaseWord = release === void 0 || release === "" ? "<name>" : shellQuote(release);
435
- const { pipedYes: pipedYes2 } = await import("./retry-command-Y5YJGOH3.js");
435
+ const { pipedYes: pipedYes2 } = await import("./retry-command-JRGMZZAC.js");
436
436
  const yes = args.dryRun === true ? "" : pipedYes2(args);
437
437
  const tenantLanding = `\`xanosdk tenant deploy ${dest.kind === "tenant" ? shellQuote(dest.name) : "<tenant>"} ${releaseWord}${yes}${flags}\``;
438
438
  const landing = `${args.branch === void 0 ? "" : ` --branch ${shellQuote(args.branch)}`}${args.setLive === true ? " --set-live" : ""}`;
@@ -473,7 +473,7 @@ async function runDeployToDestination(args, to) {
473
473
  }
474
474
  const named = describeBackend(resolved);
475
475
  if (dest.kind === "tenant" && !isEphemeral && resolved.backend.kind === "hosted") {
476
- const { tenantHasWorkspace } = await import("./tenant-GKXMOYLK.js");
476
+ const { tenantHasWorkspace } = await import("./tenant-Q3LPVSSM.js");
477
477
  if (!await tenantHasWorkspace(resolved.backend.auth, resolved.target.base)) {
478
478
  throw tenantWithoutWorkspace(dest.name, named, typed, args);
479
479
  }
@@ -498,7 +498,7 @@ async function runDeployToDestination(args, to) {
498
498
  )
499
499
  );
500
500
  };
501
- const { runReleaseCommand } = await import("./release-command-ZHM5FA4M.js");
501
+ const { runReleaseCommand } = await import("./release-command-WOVQAMUY.js");
502
502
  return runReleaseCommand(args, {
503
503
  base: resolved.target.base,
504
504
  workspaceId: resolved.target.workspaceId,
@@ -528,10 +528,10 @@ var DESTINATION_ONLY = [
528
528
  { key: "resetData", flag: "--reset-data", why: "a refresh already replaces the rows unless `--keep-data` keeps them (`--reset` overrides that)" },
529
529
  { key: "seed", flag: "--seed", why: "a refresh already seeds when it replaces and never when `--keep-data` keeps the rows" },
530
530
  { key: "allowSharedSchemaChanges", flag: "--allow-shared-schema-changes", why: "the environment is this project's own, with no shared schema to gate" },
531
- { key: "allowBranchDeletion", flag: "--allow-branch-deletion", why: "an ephemeral or local engine has no branches to delete" },
532
- { key: "branch", flag: "--branch", why: "an ephemeral or local engine has no branch to name" },
533
- { key: "setLive", flag: "--set-live", why: "an ephemeral or local engine has no branch to make live" },
534
- { key: "backupBranch", flag: "--backup-branch", why: "an ephemeral or local engine has no branch to back up" }
531
+ { key: "allowBranchDeletion", flag: "--allow-branch-deletion", why: "an ephemeral or Xano Engine has no branches to delete" },
532
+ { key: "branch", flag: "--branch", why: "an ephemeral or Xano Engine has no branch to name" },
533
+ { key: "setLive", flag: "--set-live", why: "an ephemeral or Xano Engine has no branch to make live" },
534
+ { key: "backupBranch", flag: "--backup-branch", why: "an ephemeral or Xano Engine has no branch to back up" }
535
535
  ];
536
536
  function assertNoDestinationFlags(args) {
537
537
  const passed = DESTINATION_ONLY.filter((f) => args[f.key] !== void 0 && args[f.key] !== false);
@@ -540,7 +540,7 @@ function assertNoDestinationFlags(args) {
540
540
  const one = names.length === 1;
541
541
  const why = passed.map((f) => one ? f.why : `\`${f.flag}\`: ${f.why}`).join("; ");
542
542
  throw new UsageError(
543
- `${andList(names)} ${one ? "needs" : "need"} a destination, and this deploy names none \u2014 it refreshes this project's own ephemeral or local engine, and ${why}. Add \`--to workspace\` (or \`--to tenant:<name>\`) to reach a real destination, or drop ${one ? "the flag" : "the flags"}.` + (args.keepData ? ` \`--keep-data\` still keeps this environment's rows without them.` : "") + (args.dryRun ? ` ${previewOwnEphemeral(args)}` : ""),
543
+ `${andList(names)} ${one ? "needs" : "need"} a destination, and this deploy names none \u2014 it refreshes this project's own ephemeral or Xano Engine, and ${why}. Add \`--to workspace\` (or \`--to tenant:<name>\`) to reach a real destination, or drop ${one ? "the flag" : "the flags"}.` + (args.keepData ? ` \`--keep-data\` still keeps this environment's rows without them.` : "") + (args.dryRun ? ` ${previewOwnEphemeral(args)}` : ""),
544
544
  { hintFor: { command: "deploy" } }
545
545
  );
546
546
  }
@@ -601,13 +601,13 @@ function assertNoEphemeralFlags(args) {
601
601
  }
602
602
  }
603
603
  function resolveDeployDestination(args) {
604
- return args.localEngine ? { kind: "local-engine", downloadUrl: args.localEngineUrl } : { kind: "ephemeral" };
604
+ return args.localEngine ? { kind: "local", downloadUrl: args.localEngineUrl } : { kind: "ephemeral" };
605
605
  }
606
606
  async function assertLocalEngineUsable(args, dest) {
607
- if (dest.kind !== "local-engine") return;
607
+ if (dest.kind !== "local") return;
608
608
  if (args.to !== void 0) {
609
609
  throw new UsageError(
610
- "`--local-engine` and `--to` are two destinations, and a deploy has one. Drop whichever is not meant: `--local-engine` runs this workspace on an engine on this machine, `--to` merges it into a backend that already exists. Either one alone still works exactly as it did.",
610
+ "`--local` and `--to` are two destinations, and a deploy has one. Drop whichever is not meant: `--local` runs this workspace on an engine on this machine, `--to` merges it into a backend that already exists. Either one alone still works exactly as it did.",
611
611
  { hintFor: { command: "deploy" } }
612
612
  );
613
613
  }
@@ -618,11 +618,11 @@ async function assertLocalEngineUsable(args, dest) {
618
618
  if (ephemeralOnly.length > 0) {
619
619
  const one = ephemeralOnly.length === 1;
620
620
  throw new UsageError(
621
- `${andList(ephemeralOnly)} ${one ? "describes" : "describe"} an ephemeral, and a local engine has no display name or expiry, so ${one ? "it is" : "they are"} refused rather than quietly skipped. Drop ${one ? "it" : "them"}, or drop \`--local-engine\` to deploy to an ephemeral.`,
621
+ `${andList(ephemeralOnly)} ${one ? "describes" : "describe"} an ephemeral, and a Xano Engine has no display name or expiry, so ${one ? "it is" : "they are"} refused rather than quietly skipped. Drop ${one ? "it" : "them"}, or add \`--ephemeral\` to deploy to an ephemeral.`,
622
622
  { hintFor: { command: "deploy" } }
623
623
  );
624
624
  }
625
- const { engineSourceRefusal, MISSING_ARCHIVE, resolveEnginePlatform, SUPPORTED_PLATFORMS } = await import("./local-engine-config-5U3SC434.js");
625
+ const { engineSourceRefusal, MISSING_ARCHIVE, resolveEnginePlatform, SUPPORTED_PLATFORMS } = await import("./local-engine-config-W3KB7RWM.js");
626
626
  const sourceRefusal = engineSourceRefusal(dest.downloadUrl);
627
627
  if (sourceRefusal !== void 0) {
628
628
  const Refusal = sourceRefusal.startsWith(MISSING_ARCHIVE) ? LocalFileNotFoundError : UsageError;
@@ -630,7 +630,7 @@ async function assertLocalEngineUsable(args, dest) {
630
630
  }
631
631
  if (resolveEnginePlatform() === void 0) {
632
632
  throw new Error(
633
- `There is no local engine build for ${process.platform} ${process.arch} \u2014 it runs on ${SUPPORTED_PLATFORMS.join(", ")} and nothing else, so there is nothing for \`--local-engine\` to run here. Deploy from one of those machines, or drop the flag: \`xanosdk deploy\` reaches an ephemeral from anywhere.`
633
+ `There is no Xano Engine build for ${process.platform} ${process.arch} \u2014 it runs on ${SUPPORTED_PLATFORMS.join(", ")} and nothing else, so there is no engine to run here. Deploy from one of those machines, or add \`--ephemeral\`: \`xanosdk deploy --ephemeral\` reaches an ephemeral from anywhere.`
634
634
  );
635
635
  }
636
636
  }
@@ -638,9 +638,9 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
638
638
  const { startedAt } = ctx;
639
639
  const dir = process.cwd();
640
640
  const fetchedSource = sourceCredential !== void 0 && args.file !== void 0 ? { credential: sourceCredential, spec: args.file } : void 0;
641
- const { discoverToolchainPlugins } = await import("./toolchain-modules-MPPH633S.js");
641
+ const { discoverToolchainPlugins } = await import("./toolchain-modules-FD5ANV2U.js");
642
642
  const toolchain = await discoverToolchainPlugins(dir, { frozen: args.frozenLock === true });
643
- const { archive, shownSource, bundleObject, bundleText, content, passwordColumns, classifiedLock, commitLock, nonPublicSeedValues } = fetchedSource ? await import("./deploy-source-ULSWF2V7.js").then(async (m) => {
643
+ const { archive, shownSource, bundleObject, bundleText, content, passwordColumns, classifiedLock, commitLock, nonPublicSeedValues } = fetchedSource ? await import("./deploy-source-5COWTBOC.js").then(async (m) => {
644
644
  const f = await m.fetchSourceArchive(fetchedSource.credential, fetchedSource.spec, dir);
645
645
  const decoded = decodeWorkspaceArchive(f.archive);
646
646
  noteReleaseCarriesNoEnv(fetchedSource.spec, m.gatedApiGroups(decoded));
@@ -681,9 +681,9 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
681
681
  if (args.static !== void 0) {
682
682
  await assertNoSeedLeaks(args.static, nonPublicSeedValues, { serverRendered: true });
683
683
  }
684
- step(`Deploying ${shownSource} \u2192 local engine`);
684
+ step(`Deploying ${shownSource} \u2192 Xano Engine`);
685
685
  {
686
- const { runBundleHooks } = await import("./toolchain-hooks-BGZBDFAT.js");
686
+ const { runBundleHooks } = await import("./toolchain-hooks-QVUZ6HZ4.js");
687
687
  const { readVersion } = await import("./cli.js");
688
688
  await runBundleHooks(
689
689
  toolchain.loaded,
@@ -701,13 +701,13 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
701
701
  "; nothing was deployed"
702
702
  );
703
703
  }
704
- const { chooseLocalEngine, explainOverrideFailure, pinAfterAcquire } = await import("./local-engine-choice-OXULXWEP.js");
704
+ const { chooseLocalEngine, explainOverrideFailure, pinAfterAcquire } = await import("./local-engine-choice-FPJAZSSD.js");
705
705
  const choice = await chooseLocalEngine(dest.downloadUrl, dir, isMachineOutput(args));
706
- const { ensureProjectEngine } = await import("./local-engine-deploy-TXAOYRGF.js");
706
+ const { ensureProjectEngine } = await import("./local-engine-deploy-Y4OAWL7K.js");
707
707
  const pin = pinAfterAcquire(choice, dir);
708
708
  const flags = { keepData: args.keepData, reset: args.reset };
709
709
  const { engine, reused, previousUrl, hadRecord, priorFilled, engineVersion, replaced, sweptOrphans } = await withSpinner(
710
- "Preparing the local engine\u2026",
710
+ "Preparing the Xano Engine\u2026",
711
711
  () => ensureProjectEngine({
712
712
  dir,
713
713
  source: choice.source,
@@ -720,12 +720,12 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
720
720
  pin.announce();
721
721
  if (sweptOrphans !== void 0) {
722
722
  info(
723
- `Stopped ${sweptOrphans.length === 1 ? "a process" : `${sweptOrphans.length} processes`} a crashed local engine left running (pid ${sweptOrphans.join(", ")}).`
723
+ `Stopped ${sweptOrphans.length === 1 ? "a process" : `${sweptOrphans.length} processes`} a crashed Xano Engine left running (pid ${sweptOrphans.join(", ")}).`
724
724
  );
725
725
  }
726
726
  if (replaced !== void 0) {
727
727
  info(
728
- `Replaced local engine ${replaced.name} (${replaced.from ?? "an unrecorded version"} \u2192 ${replaced.to ?? "the resolved engine"}). It starts empty, so this deploy seeds it.`
728
+ `Replaced Xano Engine ${replaced.name} (${replaced.from ?? "an unrecorded version"} \u2192 ${replaced.to ?? "the resolved engine"}). It starts empty, so this deploy seeds it.`
729
729
  );
730
730
  }
731
731
  const arm = selectDeployArm({
@@ -737,34 +737,34 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
737
737
  });
738
738
  await refuseEnvClearedByFallbackReplace(arm);
739
739
  const target = {
740
- kind: "local-engine",
740
+ kind: "local",
741
741
  url: engine.url,
742
742
  workspaceId: engine.workspaceId
743
743
  };
744
744
  discloseWriteTarget(target);
745
- announceArm(arm, "local-engine");
745
+ announceArm(arm, "local");
746
746
  const bearer = { access_token: engine.token, instance: engine.url };
747
747
  let merged;
748
748
  let sent = false;
749
749
  const sending = () => {
750
750
  sent = true;
751
- if (reused) recordDeployed(dir, "local-engine");
751
+ if (reused) recordDeployed(dir, "local");
752
752
  };
753
753
  try {
754
754
  if (arm.arm === "merge") {
755
- const { mergeKeepingData } = await import("./keep-data-merge-TDSELE5U.js");
755
+ const { mergeKeepingData } = await import("./keep-data-merge-GUGF7MVZ.js");
756
756
  merged = await mergeKeepingData({
757
757
  auth: bearer,
758
758
  baseUrl: engine.url,
759
759
  workspaceId: engine.workspaceId,
760
- label: `local engine ${engine.name}`,
760
+ label: `Xano Engine ${engine.name}`,
761
761
  bundle: bundleText ?? JSON.stringify(bundleObject),
762
762
  content,
763
763
  files: archiveHostedFiles(archive),
764
- // No credential flags: a local engine refuses them.
765
- stateCheck: `Check what local engine ${engine.name} now holds with \`xanosdk tables local-engine:${shellQuote(engine.name)}\` before retrying.`,
766
- envSetTo: ` --to ${shellQuote(`local-engine:${engine.name}`)}`,
767
- kind: "local-engine",
764
+ // No credential flags: a Xano Engine refuses them.
765
+ stateCheck: `Check what Xano Engine ${engine.name} now holds with \`xanosdk tables local:${shellQuote(engine.name)}\` before retrying.`,
766
+ envSetTo: ` --to ${shellQuote(`local:${engine.name}`)}`,
767
+ kind: "local",
768
768
  rerun: rerunOf(args),
769
769
  // The lock waits for the import itself, not only its refusals: an
770
770
  // engine that cannot apply this merge (a 501) wrote nothing, and a lock
@@ -788,16 +788,16 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
788
788
  mode: "replace",
789
789
  dryRun: false,
790
790
  preserveGuids: true,
791
- label: `local engine ${engine.name}`
791
+ label: `Xano Engine ${engine.name}`
792
792
  })
793
793
  );
794
794
  }
795
795
  } catch (err) {
796
796
  if (err instanceof XanoSdkImportRefusal && err.retryable) {
797
- const { importInProgressError } = await import("./keep-data-merge-TDSELE5U.js");
798
- throw importInProgressError(`local engine ${engine.name}`, rerunOf(args), err);
797
+ const { importInProgressError } = await import("./keep-data-merge-GUGF7MVZ.js");
798
+ throw importInProgressError(`Xano Engine ${engine.name}`, rerunOf(args), err);
799
799
  }
800
- const { explainUnsupportedEngineImport } = await import("./local-engine-deploy-TXAOYRGF.js");
800
+ const { explainUnsupportedEngineImport } = await import("./local-engine-deploy-Y4OAWL7K.js");
801
801
  const unsupported = explainUnsupportedEngineImport(err, engineVersion, {
802
802
  latest: await latestEngineRelease(err),
803
803
  resetRerun: arm.arm === "merge" ? `${rerunOf(args).command} --reset` : void 0
@@ -806,22 +806,22 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
806
806
  const rerun = rerunOf(args);
807
807
  warn(
808
808
  "The import failed \u2014 the engine is still running, so nothing needs restarting:",
809
- "local-engine.import-failed",
809
+ "local.import-failed",
810
810
  [
811
811
  unsupported !== void 0 ? `It is serving at ${engine.url}, holding what it held \u2014 this engine cannot run this import; the error below names what can.` : `It is serving at ${engine.url}. Fix what the error below names, then run \`${rerun.command}\` again.${rerun.note}`,
812
- `Stop it with \`xanosdk local-engine stop ${engine.name}\`.`
812
+ `Stop it with \`xanosdk local stop ${engine.name}\`.`
813
813
  ]
814
814
  );
815
815
  }
816
816
  throw unsupported ?? err;
817
817
  }
818
818
  commitLock?.();
819
- const { markEngineFilled } = await import("./local-engine-state-TJWPWCC4.js");
819
+ const { markEngineFilled } = await import("./local-engine-state-OCW5YDD7.js");
820
820
  markEngineFilled(dir, engine.url);
821
821
  const urlChanged = !reused || previousUrl !== engine.url;
822
822
  if (urlChanged) {
823
- success(`Local engine ${engine.name} deployed${elapsedSuffix(startedAt)}`);
824
- info("New local engine URL:");
823
+ success(`Xano Engine ${engine.name} deployed${elapsedSuffix(startedAt)}`);
824
+ info("New Xano Engine URL:");
825
825
  link(engine.url);
826
826
  } else {
827
827
  const kept = arm.arm === "merge" ? ", keeping its data" : "";
@@ -829,8 +829,8 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
829
829
  link(engine.url);
830
830
  }
831
831
  detail(`Open the builder: ${engine.signInUrl}`);
832
- detail(`Meta API bearer (the local XANO_META_TOKEN): \`xanosdk local-engine token\``);
833
- detail(`Stop it with \`xanosdk local-engine stop ${engine.name}\``);
832
+ detail(`Meta API bearer (the local XANO_META_TOKEN): \`xanosdk local token\``);
833
+ detail(`Stop it with \`xanosdk local stop ${engine.name}\``);
834
834
  let staticSummary;
835
835
  if (args.static !== void 0) {
836
836
  staticSummary = await publishStaticToLocalEngine(args, args.static, engine, engineVersion);
@@ -840,14 +840,14 @@ async function deployToLocalEngine(args, dest, sourceCredential, ctx) {
840
840
  );
841
841
  }
842
842
  const summary = {
843
- kind: "local-engine",
843
+ kind: "local",
844
844
  destination: { ...writeTargetPayload(target), label: engine.name, url: engine.url },
845
845
  // Nothing chose a credential for this run, so there is no profile to name.
846
846
  // Null rather than omitted: the field is non-optional, and a wrapper that
847
847
  // reads it everywhere must not have to branch on the destination first.
848
848
  profile: null,
849
849
  url: engine.url,
850
- localEngine: {
850
+ engine: {
851
851
  name: engine.name,
852
852
  workspaceId: engine.workspaceId,
853
853
  logPath: engine.logPath,
@@ -881,7 +881,7 @@ async function publishStaticToLocalEngine(args, dir, engine, engineVersion) {
881
881
  const summary = await deployStaticTo(
882
882
  dir,
883
883
  { access_token: engine.token },
884
- { baseUrl: engine.url, workspaceId: engine.workspaceId, label: `local engine ${engine.name}` },
884
+ { baseUrl: engine.url, workspaceId: engine.workspaceId, label: `Xano Engine ${engine.name}` },
885
885
  buildStaticEnv(engine.url, args.staticEnv),
886
886
  Object.keys(args.staticEnv).length > 0,
887
887
  args.staticHost,
@@ -898,18 +898,18 @@ async function publishStaticToLocalEngine(args, dir, engine, engineVersion) {
898
898
  } catch (err) {
899
899
  const unknown = err instanceof Error && statesOutcomeUnknown(err.message);
900
900
  const tooOld = err.status === 501;
901
- const which = engineVersion === void 0 ? "This local engine" : `Local engine ${engineVersion}`;
902
- const message = tooOld ? `${which} cannot host a static site (HTTP 501): static hosting on a local engine came in a later release. \`xanosdk local-engine update\` moves this project to the newest one.` : unknownStaticOutcome(err instanceof Error ? err.message : String(err), unknown);
901
+ const which = engineVersion === void 0 ? "This Xano Engine" : `Xano Engine ${engineVersion}`;
902
+ const message = tooOld ? `${which} cannot host a static site (HTTP 501): static hosting on a Xano Engine came in a later release. \`xanosdk local update\` moves this project to the newest one.` : unknownStaticOutcome(err instanceof Error ? err.message : String(err), unknown);
903
903
  warn("The static-host upload failed \u2014 the backend deploy stands:", "static.upload-failed", [
904
904
  message,
905
- `Retry with \`${retry}\` (it re-imports the backend, which is quick on a local engine).`
905
+ `Retry with \`${retry}\` (it re-imports the backend, which is quick on a Xano Engine).`
906
906
  ]);
907
907
  process.exitCode = unknown ? EXIT_OUTCOME_UNKNOWN : EXIT_STATIC_FAILED;
908
908
  return { url: void 0, error: message, retry, completed: unknown ? "unknown" : "no" };
909
909
  }
910
910
  }
911
911
  async function parseDeploySource(raw) {
912
- const { requireBackendSlot, parseSlot } = await import("./backend-slot-NSCTWCUX.js");
912
+ const { requireBackendSlot, parseSlot } = await import("./backend-slot-6HBWG5FN.js");
913
913
  const source = parseSlot(requireBackendSlot("deploy", void 0, "subject"), raw);
914
914
  if (source.kind === "file") throw new Error(`Internal: "${raw}" parsed as a bundle path on the fetch arm.`);
915
915
  return source;
@@ -989,7 +989,7 @@ async function notePasswordHashesDoNotTravel(credential, raw, columns, landedOn)
989
989
  const release = raw.slice("release:".length);
990
990
  const origin = await passwordOrigin(await credential(), release);
991
991
  if (landedOn !== void 0 && origin?.name === landedOn) return void 0;
992
- const where = landedOn === void 0 ? "the local engine" : `ephemeral "${landedOn}"`;
992
+ const where = landedOn === void 0 ? "the Xano Engine" : `ephemeral "${landedOn}"`;
993
993
  warn(passwordHashesWarning(release, columns, where, "the deploy", origin?.phrase), "seed.password-hashes");
994
994
  return [...columns];
995
995
  }
@@ -1007,11 +1007,11 @@ function noteBundleFileCarriesNoRows(path, reset) {
1007
1007
  );
1008
1008
  }
1009
1009
  function refuseSameEngine(source, dir) {
1010
- if (source?.kind !== "local-engine") return;
1010
+ if (source?.kind !== "local") return;
1011
1011
  const own = getEngineRecord(dir)?.name ?? engineNameForProject(dir);
1012
1012
  if (source.name !== void 0 && source.name !== own) return;
1013
1013
  throw new UsageError(
1014
- `"${source.name === void 0 ? "local-engine" : `local-engine:${source.name}`}" is this project's own engine (${own}), which is also where \`--local-engine\` deploys \u2014 the same engine as source and destination. Nothing was downloaded or stopped. \`xanosdk deploy local-engine\` stands its export up as an ephemeral; \`xanosdk deploy local-engine:<name> --local-engine\` copies another engine into this one.`,
1014
+ `"${source.name === void 0 ? "local" : `local:${source.name}`}" is this project's own engine (${own}), which is also where \`--local\` deploys \u2014 the same engine as source and destination. Nothing was downloaded or stopped. \`xanosdk deploy local\` stands its export up as an ephemeral; \`xanosdk deploy local:<name> --local\` copies another engine into this one.`,
1015
1015
  { hintFor: { command: "deploy" } }
1016
1016
  );
1017
1017
  }
@@ -1024,8 +1024,8 @@ function refuseSameEphemeral(source, auth, dir, flags = "", keepsData = false) {
1024
1024
  if (!named) return;
1025
1025
  const typed = source.name === void 0 ? source.kind : `${source.kind}:${source.name}`;
1026
1026
  throw new UsageError(
1027
- `"${typed}" is this project's own ephemeral (${own}), which is also where \`xanosdk deploy\` lands \u2014 the same environment as source and destination. ` + (keepsData ? `Merging it into itself would land its own export back onto it, so there is nothing to change. ` : `A redeploy of it from itself would replace it with an export that carries no rows, so every table would come back empty. `) + `Nothing was fetched or changed.
1028
- ` + (keepsData ? `Redeploy the project with \`xanosdk deploy --keep-data${flags}\`, or merge another environment in with \`xanosdk deploy ephemeral:<other> --keep-data${flags}\`.` : `Redeploy the project with \`xanosdk deploy${flags}\` (add \`--keep-data\` to keep the rows), or copy another environment in with \`xanosdk deploy ephemeral:<other>${flags}\`.`),
1027
+ `"${typed}" is this project's own ephemeral (${own}), which is also where \`xanosdk deploy --ephemeral\` lands \u2014 the same environment as source and destination. ` + (keepsData ? `Merging it into itself would land its own export back onto it, so there is nothing to change. ` : `A redeploy of it from itself would replace it with an export that carries no rows, so every table would come back empty. `) + `Nothing was fetched or changed.
1028
+ ` + (keepsData ? `Redeploy the project with \`xanosdk deploy --ephemeral --keep-data${flags}\`, or merge another environment in with \`xanosdk deploy ephemeral:<other> --ephemeral --keep-data${flags}\`.` : `Redeploy the project with \`xanosdk deploy --ephemeral${flags}\` (add \`--keep-data\` to keep the rows), or copy another environment in with \`xanosdk deploy ephemeral:<other> --ephemeral${flags}\`.`),
1029
1029
  { hintFor: { command: "deploy" } }
1030
1030
  );
1031
1031
  }
@@ -1095,7 +1095,7 @@ async function runDeploy(args) {
1095
1095
  await assertLocalEngineUsable(args, destination);
1096
1096
  if (args.keepData && args.to !== void 0) {
1097
1097
  throw new UsageError(
1098
- "`--keep-data` keeps an ephemeral's or a local engine's rows across a redeploy, and `--to` already merges \u2014 it empties tables only when `--replace` or `--reset-data` asks. Drop `--keep-data`; `--to` without those keeps the destination's data as it always has.",
1098
+ "`--keep-data` keeps an ephemeral's or a Xano Engine's rows across a redeploy, and `--to` already merges \u2014 it empties tables only when `--replace` or `--reset-data` asks. Drop `--keep-data`; `--to` without those keeps the destination's data as it always has.",
1099
1099
  { hintFor: { command: "deploy" } }
1100
1100
  );
1101
1101
  }
@@ -1109,16 +1109,16 @@ async function runDeploy(args) {
1109
1109
  if (args.reset && !args.keepData) {
1110
1110
  info("`--reset` changes nothing here: it only overrides `--keep-data`, and without it a deploy already replaces the environment.");
1111
1111
  }
1112
- const { looksLikeSource, resolveProjectEntry, fetchSourceArchive, passwordSeedColumns, archiveSeedContent, gatedApiGroups } = await import("./deploy-source-ULSWF2V7.js");
1112
+ const { looksLikeSource, resolveProjectEntry, fetchSourceArchive, passwordSeedColumns, archiveSeedContent, gatedApiGroups } = await import("./deploy-source-5COWTBOC.js");
1113
1113
  const fetching = args.file !== void 0 && looksLikeSource(args.file);
1114
1114
  const sourceSpec = fetching ? await parseDeploySource(args.file) : void 0;
1115
1115
  if (sourceSpec !== void 0) refuseValueFlagsForSource(args, args.file, sourceSpec);
1116
- if (destination.kind === "local-engine") {
1116
+ if (destination.kind === "local") {
1117
1117
  refuseSameEngine(sourceSpec, process.cwd());
1118
- const { refuseProfileForLocal } = await import("./tracked-backend-AJLHRGLF.js");
1119
- refuseProfileForLocal(args.profile, sourceSpec === void 0 ? ["local-engine"] : ["local-engine", sourceSpec.kind], void 0, {});
1120
- const { refuseCredentialFlagsForLocal } = await import("./local-engine-choice-OXULXWEP.js");
1121
- refuseCredentialFlagsForLocal(args, sourceSpec === void 0 ? ["local-engine"] : ["local-engine", sourceSpec.kind]);
1118
+ const { refuseProfileForLocal } = await import("./tracked-backend-B4HTME4S.js");
1119
+ refuseProfileForLocal(args.profile, sourceSpec === void 0 ? ["local"] : ["local", sourceSpec.kind], void 0, {});
1120
+ const { refuseCredentialFlagsForLocal } = await import("./local-engine-choice-FPJAZSSD.js");
1121
+ refuseCredentialFlagsForLocal(args, sourceSpec === void 0 ? ["local"] : ["local", sourceSpec.kind]);
1122
1122
  }
1123
1123
  if (!fetching) {
1124
1124
  if (args.file === void 0 && args.bundle === void 0) {
@@ -1132,8 +1132,8 @@ async function runDeploy(args) {
1132
1132
  refuseMissingLockDir(args);
1133
1133
  }
1134
1134
  refuseMissingStaticDir(args);
1135
- if (destination.kind === "local-engine") {
1136
- const { memoCredential } = await import("./tracked-backend-AJLHRGLF.js");
1135
+ if (destination.kind === "local") {
1136
+ const { memoCredential } = await import("./tracked-backend-B4HTME4S.js");
1137
1137
  return deployToLocalEngine(
1138
1138
  args,
1139
1139
  destination,
@@ -1145,7 +1145,7 @@ async function runDeploy(args) {
1145
1145
  const auth = await getAccessToken(args);
1146
1146
  refuseSameEphemeral(sourceSpec, auth, process.cwd(), contextFlags(args), args.keepData && !args.reset);
1147
1147
  await noteRunScopeFor(auth);
1148
- const { discoverToolchainPlugins } = await import("./toolchain-modules-MPPH633S.js");
1148
+ const { discoverToolchainPlugins } = await import("./toolchain-modules-FD5ANV2U.js");
1149
1149
  const toolchain = await discoverToolchainPlugins(process.cwd(), {
1150
1150
  frozen: args.frozenLock === true
1151
1151
  });
@@ -1189,7 +1189,7 @@ async function runDeploy(args) {
1189
1189
  );
1190
1190
  }
1191
1191
  {
1192
- const { runBundleHooks } = await import("./toolchain-hooks-BGZBDFAT.js");
1192
+ const { runBundleHooks } = await import("./toolchain-hooks-QVUZ6HZ4.js");
1193
1193
  const { readVersion } = await import("./cli.js");
1194
1194
  await runBundleHooks(
1195
1195
  toolchain.loaded,
@@ -1279,9 +1279,9 @@ async function runDeploy(args) {
1279
1279
  }).finally(() => noteLanded(void 0));
1280
1280
  if (staticSummary !== void 0) summary.static = staticSummary;
1281
1281
  if (summary.ephemeral !== void 0) {
1282
- const { landingLockPath, recordLanding, recordForeignLanding } = await import("./landing-record-W7VQ4KV4.js");
1282
+ const { landingLockPath, recordLanding, recordForeignLanding } = await import("./landing-record-FCAWLCZU.js");
1283
1283
  const dest = { kind: "ephemeral", name: summary.ephemeral.name };
1284
- const { storedColumnsAfter } = await import("./live-diff-2S7E3SBZ.js");
1284
+ const { storedColumnsAfter } = await import("./live-diff-IM4W3ELT.js");
1285
1285
  const sent = JSON.parse(bundle);
1286
1286
  const stored = summary.data === "kept" ? removedOut.storedColumns : storedColumnsAfter(sent, void 0, /* @__PURE__ */ new Map(), "rebuild");
1287
1287
  if (fetching || args.bundle !== void 0) {
@@ -1296,7 +1296,7 @@ async function runDeploy(args) {
1296
1296
  ...removedOut.removedGuids !== void 0 ? { removedGuids: removedOut.removedGuids, removedBy: "merge" } : {}
1297
1297
  });
1298
1298
  } else {
1299
- const { landedIdentities } = await import("./landed-6VO7CX5P.js");
1299
+ const { landedIdentities } = await import("./landed-QA6PRTV2.js");
1300
1300
  summary.landingRecord = recordLanding({
1301
1301
  lockPath: landingLockPath(args, { ...args.file !== void 0 ? { entryFile: args.file } : {}, fromProject: false }),
1302
1302
  instance: auth.instance,
@@ -1343,7 +1343,7 @@ async function runDeploy(args) {
1343
1343
  async function syncDevEnvAfterDeploy(args, summary, cwd = process.cwd(), opts = {}) {
1344
1344
  if (args.noDevEnv || summary.url === void 0) return;
1345
1345
  if (opts.staticServing === true || summary.static !== void 0 && summary.static.error === void 0) {
1346
- const { staleDevEnv } = await import("./dev-env-sync-E2GFIVC5.js");
1346
+ const { staleDevEnv } = await import("./dev-env-sync-GZ4QQJGV.js");
1347
1347
  let stale;
1348
1348
  try {
1349
1349
  stale = staleDevEnv(cwd, summary.url);
@@ -1357,7 +1357,7 @@ async function syncDevEnvAfterDeploy(args, summary, cwd = process.cwd(), opts =
1357
1357
  }
1358
1358
  return;
1359
1359
  }
1360
- const { syncDevEnv } = await import("./dev-env-sync-E2GFIVC5.js");
1360
+ const { syncDevEnv } = await import("./dev-env-sync-GZ4QQJGV.js");
1361
1361
  try {
1362
1362
  const written = syncDevEnv(cwd, summary.url);
1363
1363
  if (written === void 0) return;
@@ -1399,7 +1399,7 @@ function announceArm(arm, kind, landedBefore = false, seeded = true) {
1399
1399
  if (arm.arm !== "replace" || arm.skipped === void 0) return;
1400
1400
  const why = {
1401
1401
  new: "Nothing to keep yet \u2014 this environment is new, so it is replaced and seeded. Later deploys with `--keep-data` keep its rows.",
1402
- // An ephemeral expires or is deleted; a local engine's rows go when its
1402
+ // An ephemeral expires or is deleted; a Xano Engine's rows go when its
1403
1403
  // process restarts. Each told its own reason.
1404
1404
  recreated: kind === "ephemeral" ? "Nothing to keep \u2014 the ephemeral recorded for this project is gone (it expired, or was deleted), so a new one is created, replaced and seeded." : "Nothing to keep \u2014 the environment recorded for this project is gone (the engine restarted), so this one is replaced and seeded.",
1405
1405
  // Two different stories behind the same missing marker, each told as it
@@ -1457,22 +1457,22 @@ function rerunOf(args) {
1457
1457
  return { command: retry.command, note: withheldNote(retry.withheld) };
1458
1458
  }
1459
1459
  async function latestEngineRelease(err) {
1460
- const { ImportHttpError } = await import("./import-TBTOTU52.js");
1460
+ const { ImportHttpError } = await import("./import-PHSSFFLA.js");
1461
1461
  if (!(err instanceof ImportHttpError) || err.status !== 501) return void 0;
1462
- const { resolveEnginePlatform } = await import("./local-engine-config-5U3SC434.js");
1462
+ const { resolveEnginePlatform } = await import("./local-engine-config-W3KB7RWM.js");
1463
1463
  const platform = resolveEnginePlatform();
1464
1464
  if (platform === void 0) return void 0;
1465
- const { latestKnownVersion } = await import("./local-engine-update-check-R5SPDVEJ.js");
1465
+ const { latestKnownVersion } = await import("./local-engine-update-check-X7TZGRFL.js");
1466
1466
  return latestKnownVersion({ platform });
1467
1467
  }
1468
1468
  async function mergeGuards(args, lock, outgoing) {
1469
1469
  const interactive = process.stdin.isTTY === true && !isMachineOutput(args);
1470
- const pinned = outgoing === void 0 ? [] : (await import("./release-command-ZHM5FA4M.js")).pinnedCanonicalGuids(outgoing.bundle, lock, outgoing.compiled);
1470
+ const pinned = outgoing === void 0 ? [] : (await import("./release-command-WOVQAMUY.js")).pinnedCanonicalGuids(outgoing.bundle, lock, outgoing.compiled);
1471
1471
  const guards = {
1472
1472
  ...pinned.length > 0 ? { pinned } : {},
1473
1473
  allowForeignDeletes: args.yes === true,
1474
1474
  ...interactive ? {
1475
- confirm: async (q) => (await import("./prompt-5GUQTCSP.js")).confirm(q, {
1475
+ confirm: async (q) => (await import("./prompt-SURZOUUW.js")).confirm(q, {
1476
1476
  flag: "--yes",
1477
1477
  refusal: { details: { deployed: false }, ...yesRerun(args, "deploy") }
1478
1478
  })
@@ -1488,7 +1488,7 @@ async function mergeGuards(args, lock, outgoing) {
1488
1488
  for (const guid of e.replaced ?? []) replaced.set(guid, key.slice("dbo:".length));
1489
1489
  }
1490
1490
  const { orphanFixUps, resolveLockPath, composedChildren } = await import("./cli.js");
1491
- const { clearReplacedCommand } = await import("./keep-data-merge-TDSELE5U.js");
1491
+ const { clearReplacedCommand } = await import("./keep-data-merge-GUGF7MVZ.js");
1492
1492
  const lockPath = resolveLockPath(args, entry);
1493
1493
  const run = (line) => (line ?? "").replace(/^(renamed|deleted)\? run: /, "");
1494
1494
  const keys = Object.keys(lock.objects);
@@ -1561,7 +1561,7 @@ function fetchedSourceOf(file) {
1561
1561
  const kind = colon < 0 ? file : file.slice(0, colon);
1562
1562
  const name = colon < 0 ? void 0 : file.slice(colon + 1).trim();
1563
1563
  if (kind === "release" || kind === "tenant") return name ? { kind, name } : void 0;
1564
- if (kind === "ephemeral" || kind === "local-engine") return name ? { kind, name } : { kind };
1564
+ if (kind === "ephemeral" || kind === "local") return name ? { kind, name } : { kind };
1565
1565
  if (kind === "workspace" && colon < 0) return { kind };
1566
1566
  return void 0;
1567
1567
  }
@@ -1581,7 +1581,7 @@ function explainDuplicateArchiveGuid(err, file, flags = "") {
1581
1581
  } else if (source.kind === "release") {
1582
1582
  why = `Release "${source.name}" was stored with two ${section} objects under guid ${guid}. ${keeps}; \`xanosdk tenant deploy\` gives every object a new identity, which is why it can land the same release. Re-cut the release from a backend that holds one ${section} per guid to deploy it here.`;
1583
1583
  } else {
1584
- const label = source.kind === "workspace" ? "The workspace" : source.name === void 0 ? `The ${source.kind}` : `${source.kind === "tenant" ? "Tenant" : source.kind === "ephemeral" ? "Ephemeral" : "Local engine"} ${source.name}`;
1584
+ const label = source.kind === "workspace" ? "The workspace" : source.name === void 0 ? `The ${source.kind}` : `${source.kind === "tenant" ? "Tenant" : source.kind === "ephemeral" ? "Ephemeral" : "Xano Engine"} ${source.name}`;
1585
1585
  const reland = source.kind === "tenant" ? `, land it there again with \`xanosdk deploy --to ${shellQuote(`tenant:${source.name}`)}${flags}\`` : source.kind === "workspace" ? `, land it there again with \`xanosdk deploy --to workspace${flags}\`` : source.kind === "ephemeral" ? `, deploy it there again from the project that tracks it` : `, land it there again`;
1586
1586
  why = `${label} holds two ${section} objects under guid ${guid}. ${keeps}, so redeploying from it fails the same way until the duplicate is fixed where it is authored: give one of them its own guid${reland}, then run this deploy again.`;
1587
1587
  }
@@ -1656,9 +1656,9 @@ function failDeploy() {
1656
1656
  }
1657
1657
  function ephemeralDisabledError(source) {
1658
1658
  return new Error(
1659
- `Ephemeral environments are not enabled on this instance, so there is nothing for \`xanosdk deploy ${source}\` to create \u2014 they are the only environment it writes to.
1659
+ `Ephemeral environments are not enabled on this instance, so there is nothing for \`xanosdk deploy ${source} --ephemeral\` to create.
1660
1660
  Ask whoever administers the instance to enable them.
1661
- Until then \`xanosdk export\` still writes the bundle, and \`xanosdk preflight\` still checks the round-trip, without needing one.`
1661
+ Until then \`xanosdk deploy ${source}\` runs it on the Xano Engine on this machine, \`xanosdk export\` still writes the bundle, and \`xanosdk preflight\` still checks the round-trip, without needing one.`
1662
1662
  );
1663
1663
  }
1664
1664
  function notReadyError(err, name, flags, created, retry) {
@@ -1666,7 +1666,7 @@ function notReadyError(err, name, flags, created, retry) {
1666
1666
  const unanswered = isUnansweredPoll(err);
1667
1667
  const failure = new Error(
1668
1668
  `${head}
1669
- ${created ? `Ephemeral "${name}" was created and is` : `Ephemeral "${name}" is`} recorded in .xano/ephemeral.json, but ${unanswered ? "whether it is ready could not be read" : "it is not ready yet"}, so nothing was imported. \`${retry?.command ?? `xanosdk deploy${flags}`}\` retries onto it; \`xanosdk ephemeral delete ${name}${flags}${offTerminalYes()}\` removes it.${withheldNote(retry?.withheld ?? [])}${unanswered ? " The poll got no answer (a server error or a network failure), so this run exits 8." : ""}`,
1669
+ ${created ? `Ephemeral "${name}" was created and is` : `Ephemeral "${name}" is`} recorded in .xano/ephemeral.json, but ${unanswered ? "whether it is ready could not be read" : "it is not ready yet"}, so nothing was imported. \`${retry?.command ?? `xanosdk deploy --ephemeral${flags}`}\` retries onto it; \`xanosdk ephemeral delete ${name}${flags}${offTerminalYes()}\` removes it.${withheldNote(retry?.withheld ?? [])}${unanswered ? " The poll got no answer (a server error or a network failure), so this run exits 8." : ""}`,
1670
1670
  { cause: err }
1671
1671
  );
1672
1672
  return unanswered ? Object.assign(failure, { exitCode: 8 }) : failure;
@@ -1703,7 +1703,7 @@ async function warnSameDisplayName(auth, parentWorkspaceId, created, recorded, f
1703
1703
  function unknownCreateOutcome(err, display, flags, retry) {
1704
1704
  if (!(err instanceof Error) || !/may or may not have taken effect/.test(err.message)) return err;
1705
1705
  const head = closeSentence(err.message.split("\n")[0]);
1706
- const again = retry?.command ?? `xanosdk deploy${flags}`;
1706
+ const again = retry?.command ?? `xanosdk deploy --ephemeral${flags}`;
1707
1707
  const message = `${head}
1708
1708
  The request was sent, so ephemeral "${display}" may or may not have been created \u2014 check with \`xanosdk ephemeral list${flags}\` before retrying. If it is listed, it exists and this project does not track it: delete it with \`xanosdk ephemeral delete <handle>${flags}${offTerminalYes()}\` and run \`${again}\`, or keep it and merge into it with \`xanosdk deploy --to tenant:<handle>${flags}\` (a retry as it is creates a second one beside it). If it is not listed, run \`${again}\` again.${withheldNote(retry?.withheld ?? [])}`;
1709
1709
  return err instanceof TransportError ? new TransportError(message, err.timeout, { cause: err.cause }) : new Error(message, { cause: err });
@@ -1727,9 +1727,9 @@ Re-run as \`${rerun}\` to answer yes without being asked.${note}`,
1727
1727
  { exitCode: 1, details: { reason: "needs-confirmation", ...details } }
1728
1728
  );
1729
1729
  }
1730
- const { confirm } = await import("./prompt-5GUQTCSP.js");
1730
+ const { confirm } = await import("./prompt-SURZOUUW.js");
1731
1731
  if (await confirm(question, { flag: "--yes", refusal: { details, rerun, note } })) return;
1732
- const { KeepDataDeclined } = await import("./keep-data-merge-TDSELE5U.js");
1732
+ const { KeepDataDeclined } = await import("./keep-data-merge-GUGF7MVZ.js");
1733
1733
  throw new KeepDataDeclined(label, "deployed");
1734
1734
  }
1735
1735
  function recordedEntry(file) {
@@ -1764,7 +1764,7 @@ async function refuseOtherProfileEphemeral(state, auth) {
1764
1764
  { hintFor: { command: "deploy" } }
1765
1765
  );
1766
1766
  if (refusal === void 0) return;
1767
- const { reachableFirst } = await import("./env-target-KUWQYHZ7.js");
1767
+ const { reachableFirst } = await import("./env-target-ZHQUS5BO.js");
1768
1768
  throw await reachableFirst(refusal, auth);
1769
1769
  }
1770
1770
  async function refuseKeepDataElsewhere(state, auth) {
@@ -1778,7 +1778,7 @@ async function refuseKeepDataElsewhere(state, auth) {
1778
1778
  { hintFor: { command: "deploy" } }
1779
1779
  );
1780
1780
  if (refusal === void 0) return;
1781
- const { reachableFirst } = await import("./env-target-KUWQYHZ7.js");
1781
+ const { reachableFirst } = await import("./env-target-ZHQUS5BO.js");
1782
1782
  throw await reachableFirst(refusal, auth);
1783
1783
  }
1784
1784
  async function reconcileRename(err, auth, name, display) {
@@ -1813,7 +1813,7 @@ If no deploy is running in this project, its guard was left behind: remove \`${s
1813
1813
  }
1814
1814
  async function deployEphemeral(auth, ctx) {
1815
1815
  const dir = process.cwd();
1816
- const { assertReadWritable } = await import("./writable-FYJBTJOU.js");
1816
+ const { assertReadWritable } = await import("./writable-7SSWUQJ3.js");
1817
1817
  assertReadWritable(ephemeralStatePath(dir));
1818
1818
  const guard = await takeCreateGuard(dir, ctx.args);
1819
1819
  try {
@@ -1832,7 +1832,7 @@ async function deployEphemeralGuarded(auth, ctx, createGuard) {
1832
1832
  };
1833
1833
  const parentWorkspaceId = auth.workspaceId;
1834
1834
  const dir = process.cwd();
1835
- const { assertReadWritable, assertWritable } = await import("./writable-FYJBTJOU.js");
1835
+ const { assertReadWritable, assertWritable } = await import("./writable-7SSWUQJ3.js");
1836
1836
  assertReadWritable(ephemeralStatePath(dir));
1837
1837
  if (ctx.lockPath !== void 0) assertWritable(ctx.lockPath, "build without a lock with `--no-lock`");
1838
1838
  const state = readEphemeralState(dir);
@@ -1890,7 +1890,7 @@ async function deployEphemeralGuarded(auth, ctx, createGuard) {
1890
1890
  }).finally(() => creating?.clear()).catch(async (err) => {
1891
1891
  if (isEphemeralDisabled(err)) throw ephemeralDisabledError(source);
1892
1892
  if (err.status === 404) {
1893
- const { refuseUnreachableWorkspace } = await import("./workspace-binding-BRPPUSWG.js");
1893
+ const { refuseUnreachableWorkspace } = await import("./workspace-binding-OS4ZOX4S.js");
1894
1894
  await refuseUnreachableWorkspace(auth);
1895
1895
  }
1896
1896
  throw unknownCreateOutcome(err, display, flags, retryCommand(args, { creates: true }));
@@ -1958,7 +1958,7 @@ ${createdButFailedNote(fresh.name, false, args, false, { untracked: true })}`);
1958
1958
  if (arm.arm === "replace") refuseStaticHostAReplaceClears(args, true);
1959
1959
  else await assertStaticHostExists(args, auth, { baseUrl, workspaceId: 1 });
1960
1960
  if (arm.arm === "replace") {
1961
- const { gateForeignReplace } = await import("./keep-data-merge-TDSELE5U.js");
1961
+ const { gateForeignReplace } = await import("./keep-data-merge-GUGF7MVZ.js");
1962
1962
  const { allowForeignDeletes, confirm } = await mergeGuards(args, void 0);
1963
1963
  await gateForeignReplace({
1964
1964
  auth,
@@ -2030,7 +2030,7 @@ ${createdButFailedNote(fresh.name, false, args, false, { untracked: true })}`);
2030
2030
  let merged;
2031
2031
  try {
2032
2032
  if (arm.arm === "merge") {
2033
- const { mergeKeepingData } = await import("./keep-data-merge-TDSELE5U.js");
2033
+ const { mergeKeepingData } = await import("./keep-data-merge-GUGF7MVZ.js");
2034
2034
  merged = await mergeKeepingData({
2035
2035
  auth,
2036
2036
  baseUrl,
@@ -2084,11 +2084,11 @@ ${createdButFailedNote(fresh.name, false, args, false, { untracked: true })}`);
2084
2084
  if (!lockCommitted) ctx.warnOrphansUncommitted?.();
2085
2085
  if (err instanceof Error && err.name === "KeepDataDeclined") throw err;
2086
2086
  if (err instanceof XanoSdkImportRefusal && err.retryable) {
2087
- const { importInProgressError } = await import("./keep-data-merge-TDSELE5U.js");
2087
+ const { importInProgressError } = await import("./keep-data-merge-GUGF7MVZ.js");
2088
2088
  const retry = retryCommand(args);
2089
2089
  throw importInProgressError(namedEphemeral(target), { command: retry.command, note: withheldNote(retry.withheld) }, err);
2090
2090
  }
2091
- const { withSignatureHint } = await import("./release-command-ZHM5FA4M.js");
2091
+ const { withSignatureHint } = await import("./release-command-WOVQAMUY.js");
2092
2092
  importFailure = withSignatureHint(err, args.bundle);
2093
2093
  }
2094
2094
  if (arm.arm === "merge" && renamedTo !== void 0) target = { ...target, display: renamedTo };
@@ -2252,7 +2252,7 @@ ${createdButFailedNote(target.name, unknown, args, landedUnresolved, { futile })
2252
2252
  };
2253
2253
  }
2254
2254
  async function deployStaticTo(dir, auth, target, env, explicit, host, skipLiveness, routing, dirLabel, opts = {}) {
2255
- const { deployStaticHost } = await import("./static-host-WM24RG25.js");
2255
+ const { deployStaticHost } = await import("./static-host-UIR2OLPQ.js");
2256
2256
  const where = target.label && target.label !== "" ? target.label : `workspace #${target.workspaceId}`;
2257
2257
  if (target.announced !== true) step(`Deploying static frontend ${dir} \u2192 ${where}${host ? ` (host: ${host})` : ""}`);
2258
2258
  const sh = await describeWrite(
@@ -2274,7 +2274,7 @@ async function deployStaticTo(dir, auth, target, env, explicit, host, skipLivene
2274
2274
  );
2275
2275
  if (sh.serverBundle === "omitted") {
2276
2276
  detail(
2277
- "Server half (.xano-ssr/) not uploaded: this host serves files only. `xanosdk deploy --local-engine --static` renders it."
2277
+ "Server half (.xano-ssr/) not uploaded: this host serves files only. `xanosdk deploy --local --static` renders it."
2278
2278
  );
2279
2279
  }
2280
2280
  if (sh.hiddenUnserved !== void 0) {
@@ -2382,4 +2382,4 @@ export {
2382
2382
  unknownCreateOutcome,
2383
2383
  deployStaticTo
2384
2384
  };
2385
- //# sourceMappingURL=chunk-K3LE5B5E.js.map
2385
+ //# sourceMappingURL=chunk-AGSCOISO.js.map