@xano/sdk 1.0.5 → 1.0.7

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 (277) hide show
  1. package/CHANGELOG.md +35 -5
  2. package/README.md +56 -20
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/{agent-file-refresh-KVLR7M5Y.js → agent-file-refresh-DGGSRPJ4.js} +15 -14
  5. package/dist/agent-skill-command-37DFYS7Q.js +414 -0
  6. package/dist/{answer-shape-XGR2DGWY.js → answer-shape-RBFDCNZ7.js} +5 -5
  7. package/dist/{backend-dir-IE4RMUFH.js → backend-dir-KDD43X7K.js} +16 -15
  8. package/dist/{backend-slot-6HBWG5FN.js → backend-slot-TBOVZXDE.js} +4 -4
  9. package/dist/bin.js +63 -61
  10. package/dist/{branch-T2APKPVG.js → branch-7PIKNUD7.js} +12 -11
  11. package/dist/{branch-commands-HXXTCSOO.js → branch-commands-EGY7ZEZE.js} +32 -32
  12. package/dist/bundle.js +9 -39
  13. package/dist/{capture-HBXFXZEW.js → capture-GW5KNKMB.js} +3 -3
  14. package/dist/{chunk-3BJYQGAZ.js → chunk-26LHXLD3.js} +2 -2
  15. package/dist/{chunk-N6BWB35H.js → chunk-2ACWDSAQ.js} +3 -3
  16. package/dist/{chunk-XIABDKFQ.js → chunk-2SD4LA22.js} +2 -2
  17. package/dist/{chunk-K6PRKPFX.js → chunk-2XWVZRL6.js} +7 -7
  18. package/dist/{chunk-ES5A66IH.js → chunk-2YER2J47.js} +13 -13
  19. package/dist/{chunk-G57RYMKB.js → chunk-3FRGNBOC.js} +2 -2
  20. package/dist/{chunk-BMCZQZMI.js → chunk-46PATL23.js} +13 -9
  21. package/dist/{chunk-MYLPOVX6.js → chunk-47XT6WQL.js} +8 -8
  22. package/dist/{chunk-AWQ7BQTQ.js → chunk-4GPIOIAC.js} +6 -1
  23. package/dist/{chunk-7GX445AE.js → chunk-4XHAT7C5.js} +2 -2
  24. package/dist/{chunk-QOLOQ35F.js → chunk-567KK6XF.js} +8 -8
  25. package/dist/{chunk-57HMNJGB.js → chunk-5GIOCDUM.js} +893 -922
  26. package/dist/{chunk-OKNE3TWU.js → chunk-5KJBWIDZ.js} +83 -5
  27. package/dist/{chunk-SRX6B544.js → chunk-5QMJOE2K.js} +5 -5
  28. package/dist/{chunk-AGD7F7YI.js → chunk-5SCPRXFB.js} +4 -4
  29. package/dist/{chunk-SNGFEESM.js → chunk-5ZG7V2VW.js} +3 -3
  30. package/dist/{chunk-XJU6UAFV.js → chunk-7FIMUFBP.js} +2 -2
  31. package/dist/{chunk-AESE434J.js → chunk-7M6JP3FS.js} +2 -2
  32. package/dist/{chunk-K6CB5TKM.js → chunk-7REDHC4N.js} +2 -2
  33. package/dist/chunk-7VR4IO5B.js +44 -0
  34. package/dist/{chunk-57B56I4B.js → chunk-7XXWKTCE.js} +65 -41
  35. package/dist/{chunk-PL7AIAWS.js → chunk-A4R5CAY4.js} +4 -111
  36. package/dist/{chunk-QZTJ2556.js → chunk-AKERAUNH.js} +4 -4
  37. package/dist/{chunk-JZWUAEMO.js → chunk-ARWMVNDJ.js} +6 -3
  38. package/dist/{chunk-WYS6XVZ3.js → chunk-AVS4WPPY.js} +2 -2
  39. package/dist/{chunk-KUU7T4ZE.js → chunk-B2URJBC4.js} +18 -18
  40. package/dist/chunk-B3P25SDP.js +78 -0
  41. package/dist/chunk-BRANWM4U.js +853 -0
  42. package/dist/{chunk-BBPAXOU6.js → chunk-BSVQEKHO.js} +6 -6
  43. package/dist/{chunk-3WHWOKU4.js → chunk-BZ6WTG3E.js} +4 -4
  44. package/dist/{chunk-XNZURZ7T.js → chunk-CH23ONYG.js} +77 -6
  45. package/dist/{chunk-SQPIECXD.js → chunk-CJDPSCMX.js} +45 -5
  46. package/dist/{chunk-M7GJ6YUF.js → chunk-CNZASQPL.js} +16 -2
  47. package/dist/{chunk-44CWK6YC.js → chunk-CPN6WSBH.js} +4 -4
  48. package/dist/{chunk-L3BDO2BI.js → chunk-CT3J5JRZ.js} +7 -7
  49. package/dist/{chunk-3HOGFGKG.js → chunk-D3KEPRRN.js} +2 -2
  50. package/dist/{chunk-OGUMHW2X.js → chunk-D5OZRJ3T.js} +7 -7
  51. package/dist/{chunk-S5KQIFKJ.js → chunk-DG3APBUJ.js} +208 -112
  52. package/dist/chunk-DIWF7L33.js +995 -0
  53. package/dist/{chunk-WRBKLYSJ.js → chunk-DNBP4GJN.js} +4 -3
  54. package/dist/{chunk-LZDA6SVD.js → chunk-DXZTL7NA.js} +141 -91
  55. package/dist/{chunk-XMDDBEEM.js → chunk-E763QI3G.js} +2 -2
  56. package/dist/{chunk-3VX7VAQT.js → chunk-EF4MHLEW.js} +26 -9
  57. package/dist/{chunk-AGSCOISO.js → chunk-ELPQTDW6.js} +108 -100
  58. package/dist/{chunk-Q22BMRPF.js → chunk-EPFDY5JU.js} +2 -2
  59. package/dist/{chunk-7DBM6XHR.js → chunk-EU32BC5B.js} +8 -8
  60. package/dist/{chunk-Y76ERHLK.js → chunk-FDTET7FZ.js} +6 -6
  61. package/dist/{chunk-Z3SNX45M.js → chunk-FENA7K7C.js} +3 -3
  62. package/dist/{chunk-WOGJB2F6.js → chunk-FNLTFOUD.js} +4 -9
  63. package/dist/{chunk-FV55SRQU.js → chunk-FQ53GTII.js} +9 -9
  64. package/dist/{chunk-DEVGLLNZ.js → chunk-GHMLRFRX.js} +8 -8
  65. package/dist/{chunk-GMVW6ZZK.js → chunk-H2K4GFUS.js} +4 -4
  66. package/dist/{chunk-NUU76247.js → chunk-HTQWAQRW.js} +3 -3
  67. package/dist/{chunk-ROY4YAEQ.js → chunk-HU7F56VF.js} +22 -2
  68. package/dist/{chunk-RXCT3OCU.js → chunk-HZ6ADG3O.js} +47 -8
  69. package/dist/{chunk-Z2BRSQ6M.js → chunk-I6XRUU6U.js} +91 -64
  70. package/dist/chunk-IPNN2KRW.js +257 -0
  71. package/dist/{chunk-SF2B7MZK.js → chunk-IYXL5NYU.js} +259 -31
  72. package/dist/chunk-JI3BLXWQ.js +107 -0
  73. package/dist/{chunk-4DJTQ6W4.js → chunk-JIKGT7DO.js} +2 -1
  74. package/dist/{chunk-OVV2HXJ6.js → chunk-JOOKM7AH.js} +2 -2
  75. package/dist/{chunk-65SW2BA5.js → chunk-JOWY6HFL.js} +3 -3
  76. package/dist/{chunk-I5VEROXW.js → chunk-JX6N73H3.js} +2 -2
  77. package/dist/{chunk-5D6DGF3W.js → chunk-L472YIGG.js} +8 -8
  78. package/dist/{chunk-HLQH3AXB.js → chunk-L6HZ67P6.js} +2 -2
  79. package/dist/{chunk-TM5LRSBB.js → chunk-LBJA7IEM.js} +370 -45
  80. package/dist/chunk-LCOCRJ4K.js +116 -0
  81. package/dist/{chunk-DGWHAVRG.js → chunk-LJM5CIY4.js} +16 -1
  82. package/dist/{chunk-5RLAF6RL.js → chunk-M2C54ZBC.js} +4 -4
  83. package/dist/{chunk-U6DR6464.js → chunk-M3NEK3LT.js} +4 -4
  84. package/dist/{chunk-5XVBT6CQ.js → chunk-MBL7CXJ7.js} +2 -2
  85. package/dist/{chunk-5YBNXNKU.js → chunk-MFWF2NZJ.js} +12 -5
  86. package/dist/{chunk-TEBS7FE6.js → chunk-MYZRMSPM.js} +2 -2
  87. package/dist/{chunk-YSLMMR2U.js → chunk-N3YFCFCO.js} +14 -14
  88. package/dist/{chunk-OJPZEUPH.js → chunk-NDJAKSE7.js} +11 -8
  89. package/dist/{chunk-PIPIA7K7.js → chunk-NV37YGOV.js} +7 -7
  90. package/dist/{chunk-ZHGWR45B.js → chunk-O56DQKPL.js} +9 -9
  91. package/dist/{chunk-4QBGE3EO.js → chunk-ORGNLQN6.js} +6 -6
  92. package/dist/{chunk-NNB7VUCH.js → chunk-PEIBGH2V.js} +55 -31
  93. package/dist/{chunk-UJ6ZZJDD.js → chunk-PEX4QZVI.js} +2 -2
  94. package/dist/{chunk-LLS2WO2K.js → chunk-PV25BDCH.js} +5 -5
  95. package/dist/{chunk-F3557PVM.js → chunk-PY722CHR.js} +2 -2
  96. package/dist/{chunk-4GDEEY2U.js → chunk-QGIZLFAS.js} +4 -4
  97. package/dist/{chunk-YI76TURL.js → chunk-QRQ54LUI.js} +16 -14
  98. package/dist/{chunk-JQOX6HW4.js → chunk-RBU2YX22.js} +3 -3
  99. package/dist/{chunk-4NEBBKOP.js → chunk-RRMH7WMY.js} +7 -7
  100. package/dist/{chunk-HOOOOJJP.js → chunk-S46ODQRA.js} +2 -2
  101. package/dist/{chunk-37FBPMNE.js → chunk-S56YBYMN.js} +5 -2
  102. package/dist/{chunk-4QFBEKXI.js → chunk-SDGV76HF.js} +2 -2
  103. package/dist/{chunk-CV54PASI.js → chunk-SGK3PTTM.js} +312 -132
  104. package/dist/{chunk-S5TEJIGP.js → chunk-SKEG3V2V.js} +2 -2
  105. package/dist/{chunk-VZ22VUAS.js → chunk-SLGJIWCY.js} +3 -3
  106. package/dist/{chunk-JSEVKRVJ.js → chunk-T4LJ5UR2.js} +29 -7
  107. package/dist/{chunk-JXKO6JT7.js → chunk-TWVUYS63.js} +24 -24
  108. package/dist/{chunk-UIEFE6FU.js → chunk-U5M7T6CI.js} +7 -7
  109. package/dist/{chunk-Z4VN347O.js → chunk-UYFUIHH3.js} +2 -2
  110. package/dist/{chunk-Y6NO3DLQ.js → chunk-V7MBRUK6.js} +3 -3
  111. package/dist/chunk-VAGSKUWC.js +67 -0
  112. package/dist/{chunk-A4NNCI4O.js → chunk-VIJ5D3RC.js} +3 -3
  113. package/dist/{chunk-3IYVHVM6.js → chunk-VJFMUJWZ.js} +4 -4
  114. package/dist/{chunk-V4IBHDIY.js → chunk-VNDR2T35.js} +7 -7
  115. package/dist/chunk-WAVNUTMT.js +9 -0
  116. package/dist/{chunk-KQLACS4Q.js → chunk-WNCW2RNB.js} +4 -4
  117. package/dist/chunk-WUEPP5HD.js +111 -0
  118. package/dist/{chunk-IV446ZLJ.js → chunk-Y453TW6J.js} +2 -2
  119. package/dist/{local-engine-command-73NHWD6V.js → chunk-YCUDOF6Q.js} +22 -76
  120. package/dist/{chunk-CJ76PSJT.js → chunk-YH2JVJAO.js} +12 -12
  121. package/dist/{chunk-GPI3OWRE.js → chunk-YHB34BN6.js} +2 -1
  122. package/dist/{chunk-AMBEITWL.js → chunk-ZGLNHA7T.js} +7 -7
  123. package/dist/{chunk-NGAODDLX.js → chunk-ZJOAWRED.js} +8 -8
  124. package/dist/{chunk-TUEFTRC2.js → chunk-ZXRDD3Q2.js} +50 -27
  125. package/dist/cli.d.ts +40 -11
  126. package/dist/cli.js +60 -56
  127. package/dist/{codegen-command-L2OO6OTE.js → codegen-command-T7TC7PQO.js} +79 -72
  128. package/dist/codegen.d.ts +2 -2
  129. package/dist/codegen.js +2 -2
  130. package/dist/{commands-2E4JB3DB.js → commands-JDENTDJS.js} +3 -3
  131. package/dist/{completion-LPJIH5VQ.js → completion-YFD5OVJW.js} +9 -5
  132. package/dist/{config-QDCRKEWD.js → config-YJFUTRJW.js} +8 -8
  133. package/dist/{deploy-command-HJZNYCUY.js → deploy-command-OEVEE6UG.js} +65 -63
  134. package/dist/deploy-source-HYVZEYXV.js +83 -0
  135. package/dist/{dev-env-sync-GZ4QQJGV.js → dev-env-sync-EFDCJ6KU.js} +63 -61
  136. package/dist/{diagnostics-LSMGB4TY.js → diagnostics-OMN5Y2AH.js} +2 -2
  137. package/dist/{display-name-hint-AHCNH6TF.js → display-name-hint-SW3GB3V7.js} +14 -13
  138. package/dist/{emit-DqG6qddr.d.ts → emit-Dov_92kn.d.ts} +66 -20
  139. package/dist/env-example-refresh-WNSOH534.js +134 -0
  140. package/dist/{env-pull-command-Z4RLVEGJ.js → env-pull-command-UYEXMQ3P.js} +53 -52
  141. package/dist/{env-target-ZHQUS5BO.js → env-target-JBSLBKNX.js} +15 -14
  142. package/dist/{env-var-command-FKQ4VVQ6.js → env-var-command-BJNRAXNV.js} +51 -49
  143. package/dist/{ephemeral-L4KUOGEU.js → ephemeral-CEOGMIEA.js} +11 -10
  144. package/dist/{ephemeral-command-GRPFI3TD.js → ephemeral-command-IPSGBCS5.js} +70 -69
  145. package/dist/{ephemeral-state-VLYU2BXR.js → ephemeral-state-MTBASPRS.js} +13 -12
  146. package/dist/{generate-command-XNODJFDQ.js → generate-command-XQXODBS6.js} +96 -86
  147. package/dist/{gitignore-VWRSZX5F.js → gitignore-RUVCIZO4.js} +21 -20
  148. package/dist/{guards-OPSGB6LG.js → guards-KYEOCVHN.js} +6 -6
  149. package/dist/{impersonate-command-AEKIZHHK.js → impersonate-command-MA27O7S5.js} +46 -44
  150. package/dist/{import-PHSSFFLA.js → import-XKRFHABE.js} +5 -5
  151. package/dist/index.d.ts +14 -20
  152. package/dist/index.js +13 -13
  153. package/dist/init-command-6RDTCMAB.js +143 -0
  154. package/dist/{init-modules-SGSX7XEY.js → init-modules-DHTBOCQT.js} +10 -9
  155. package/dist/{init-web-6HX3YLQP.js → init-web-ELBXSXDL.js} +3 -3
  156. package/dist/internal.d.ts +5 -5
  157. package/dist/internal.js +47 -20
  158. package/dist/{io-TAF4WXYQ.js → io-PGTCBSIQ.js} +6 -4
  159. package/dist/{keep-data-merge-GUGF7MVZ.js → keep-data-merge-TDJOIAVT.js} +33 -34
  160. package/dist/{lambda-config-reconcile-65U6I4KU.js → lambda-config-reconcile-47X5C2E4.js} +6 -5
  161. package/dist/{landed-QA6PRTV2.js → landed-F7PCHGCK.js} +3 -3
  162. package/dist/{landing-record-FCAWLCZU.js → landing-record-TPPYFQAS.js} +26 -25
  163. package/dist/{live-diff-IM4W3ELT.js → live-diff-5E2BQWQ7.js} +9 -8
  164. package/dist/local-engine-choice-S6VHPJRU.js +81 -0
  165. package/dist/local-engine-command-4EZCGZ6M.js +85 -0
  166. package/dist/{local-engine-config-W3KB7RWM.js → local-engine-config-2EBL3QKA.js} +3 -2
  167. package/dist/{local-engine-deploy-Y4OAWL7K.js → local-engine-deploy-FOPNWU7X.js} +18 -16
  168. package/dist/local-engine-lookup-GM3E3NPP.js +43 -0
  169. package/dist/local-engine-mcp-bridge-QKZHUGW3.js +423 -0
  170. package/dist/local-engine-mcp-command-BFQVLXZC.js +181 -0
  171. package/dist/{local-engine-process-6YPJHKYM.js → local-engine-process-XUQPQENQ.js} +12 -9
  172. package/dist/{local-engine-state-OCW5YDD7.js → local-engine-state-JQPKGB65.js} +4 -3
  173. package/dist/{local-engine-update-check-X7TZGRFL.js → local-engine-update-check-S7UF6ZF5.js} +7 -6
  174. package/dist/{lock-WXXC3QHL.js → lock-HDCHD2ON.js} +4 -2
  175. package/dist/{lock-commands-PKDBNRSD.js → lock-commands-HJ6Y5QVS.js} +66 -64
  176. package/dist/{login-command-V4U4FA5G.js → login-command-JO55NZAS.js} +34 -33
  177. package/dist/{logout-command-TV3P545Z.js → logout-command-MPRIRSJA.js} +18 -17
  178. package/dist/{loop-VKHGQ6MP.js → loop-SUB6C2LK.js} +8 -9
  179. package/dist/{marketplace-command-LEFOAEAV.js → marketplace-command-BM6G257N.js} +90 -54
  180. package/dist/{marketplace-resolve-ME7O7JBJ.js → marketplace-resolve-AWH3RG57.js} +7 -6
  181. package/dist/{meta-client-TEEECA5W.js → meta-client-AOSWODQQ.js} +16 -15
  182. package/dist/{module-manifest-7YLGIRCY.js → module-manifest-GXI46PEF.js} +7 -4
  183. package/dist/node.d.ts +5 -5
  184. package/dist/node.js +68 -67
  185. package/dist/operation-outcome-4UKPXTNC.js +53 -0
  186. package/dist/{output-target-5FWX3NGZ.js → output-target-RAZ4KN5J.js} +22 -21
  187. package/dist/{package-manager-PRAHUSCN.js → package-manager-K762W7XT.js} +2 -2
  188. package/dist/{plan-disclosure-QGL5UYQR.js → plan-disclosure-JR52DWXN.js} +21 -21
  189. package/dist/{plugin-contributions-GNFTWDEB.js → plugin-contributions-E6XHLQWK.js} +6 -6
  190. package/dist/{plugin-prompt-VEQGMZ4T.js → plugin-prompt-IODX5EU6.js} +5 -5
  191. package/dist/{plugin-questions-BGRL23GO.js → plugin-questions-AAAJ7POP.js} +4 -4
  192. package/dist/plugin.d.ts +254 -10
  193. package/dist/{preflight-command-VKJKXRRI.js → preflight-command-7GKJBWOQ.js} +71 -70
  194. package/dist/{profile-command-P7A3BH26.js → profile-command-CM6J7E2M.js} +35 -34
  195. package/dist/{profile-pointer-HG7IXE4I.js → profile-pointer-KTYXL6FU.js} +5 -4
  196. package/dist/{project-dependency-Z4CKOCJI.js → project-dependency-OQ5575QQ.js} +11 -8
  197. package/dist/{project-sdk-JWZWGXXR.js → project-sdk-2ESHHZVL.js} +4 -4
  198. package/dist/promote-command-BDRPG6UU.js +147 -0
  199. package/dist/{prompt-SURZOUUW.js → prompt-MQPGU4ZI.js} +4 -4
  200. package/dist/{publish-command-HGAB3H4A.js → publish-command-IEMYZ7LF.js} +69 -67
  201. package/dist/pull-command-S5E2ABZ4.js +169 -0
  202. package/dist/{pull-superseded-TOT5S4QU.js → pull-superseded-E34BZVLH.js} +4 -4
  203. package/dist/{raw-where-EoWl5fqY.d.ts → raw-where-ZMLND6AG.d.ts} +20 -3
  204. package/dist/release-command-7F5TBKO2.js +151 -0
  205. package/dist/{release-ns-command-WOQE2BDQ.js → release-ns-command-EK2ZQ4CC.js} +101 -100
  206. package/dist/{retry-command-JRGMZZAC.js → retry-command-GL5HCMVB.js} +10 -9
  207. package/dist/{routes-manifest-URFMAWJE.js → routes-manifest-YR4ZIMLM.js} +15 -7
  208. package/dist/routes-manifest-file-LCIKPDAG.js +41 -0
  209. package/dist/scaffold.js +4 -4
  210. package/dist/secrets-IV4N5HYI.js +20 -0
  211. package/dist/{secrets-file-YWZWVJ52.js → secrets-file-LXREYU3M.js} +21 -20
  212. package/dist/{secrets-fill-command-HIHK3VH2.js → secrets-fill-command-QHZS3KWM.js} +64 -62
  213. package/dist/{seed-24DTEY5S.js → seed-FRKMDN2Z.js} +9 -9
  214. package/dist/{source-resolve-OWD3MIEO.js → source-resolve-BBHYTOXI.js} +26 -24
  215. package/dist/{static-host-UIR2OLPQ.js → static-host-7LC7OZR4.js} +5 -5
  216. package/dist/{status-command-JKTHH5QE.js → status-command-TY253MJT.js} +54 -52
  217. package/dist/{store-zxw2go0f.d.ts → store-Boba9OOh.d.ts} +2 -2
  218. package/dist/{store-5YAQS6KU.js → store-VJ3OS6VO.js} +8 -7
  219. package/dist/sync-baseline-DOV5AGIO.js +36 -0
  220. package/dist/{sync-contributions-RBB6JVOL.js → sync-contributions-63542VE4.js} +20 -12
  221. package/dist/sync-record-RGHK7EAL.js +43 -0
  222. package/dist/{table-MQFVYA4K.js → table-OAYGFGEN.js} +8 -8
  223. package/dist/{tables-command-5Q4BSUNO.js → tables-command-PZIVDAH3.js} +45 -43
  224. package/dist/{tenant-Q3LPVSSM.js → tenant-Y3II4VY3.js} +12 -11
  225. package/dist/{tenant-command-BFVU2PEX.js → tenant-command-G6XON7CF.js} +113 -107
  226. package/dist/{test-command-F4VUU4QR.js → test-command-3FZOX7O3.js} +44 -42
  227. package/dist/{tests-5ZSDFVIJ.js → tests-KF6N6BZ7.js} +6 -6
  228. package/dist/{token-TERSTNU4.js → token-DJJUW5HY.js} +14 -13
  229. package/dist/toolchain-hooks-7PWCFLSU.js +46 -0
  230. package/dist/{toolchain-modules-FD5ANV2U.js → toolchain-modules-OTNSKK52.js} +8 -5
  231. package/dist/toolchain-peers-KQ7TQ2AR.js +28 -0
  232. package/dist/tracked-backend-AJCGTO5Y.js +82 -0
  233. package/dist/{update-check-O4C2LCZH.js → update-check-4E5L6GAW.js} +61 -59
  234. package/dist/{upgrade-command-NVFWLMTA.js → upgrade-command-BXMSQN4C.js} +68 -64
  235. package/dist/{whoami-command-YKNTISIV.js → whoami-command-NLCCIEUM.js} +17 -16
  236. package/dist/{workspace-GGVGE2S5.js → workspace-PNMJOXE4.js} +5 -5
  237. package/dist/{workspace-binding-OS4ZOX4S.js → workspace-binding-J5GWDFRI.js} +16 -15
  238. package/dist/{workspace-command-GTUNVN7K.js → workspace-command-MHIIY352.js} +125 -93
  239. package/dist/{workspace-env-467C5KHM.js → workspace-env-LLRWCHSA.js} +17 -16
  240. package/dist/{workspace-export-3XTVGQVM.js → workspace-export-BIKAYHWJ.js} +5 -5
  241. package/dist/{writable-7SSWUQJ3.js → writable-UOTO4WWC.js} +4 -4
  242. package/dist/{xano-6RS5XQZE.js → xano-LCI7VWPS.js} +8 -8
  243. package/dist/{xanosdk-import-E3WSIYUE.js → xanosdk-import-S7A3CVBN.js} +8 -8
  244. package/dist/{xanosdk-project-KH5TZ2KI.js → xanosdk-project-J4VCFRHP.js} +18 -17
  245. package/guides/README.md +2 -2
  246. package/guides/cli.md +73 -4
  247. package/guides/codegen.md +23 -5
  248. package/guides/codes.md +8 -2
  249. package/guides/coverage.md +5 -0
  250. package/guides/deploying.md +80 -0
  251. package/guides/marketplace.md +21 -0
  252. package/guides/module-contract.md +80 -4
  253. package/guides/scaffold.md +61 -10
  254. package/guides/typed-frontend.md +37 -0
  255. package/llms/client.md +11 -1
  256. package/llms/filters.md +4 -0
  257. package/llms/kinds-core.md +1 -1
  258. package/llms/statements-data.md +3 -2
  259. package/llms/toolchain.md +12 -0
  260. package/llms-full.txt +34 -7
  261. package/llms.txt +3 -3
  262. package/manifest.json +63 -5
  263. package/package.json +5 -2
  264. package/skills/xano-backend/SKILL.md +119 -0
  265. package/dist/chunk-F6IKWAIU.js +0 -664
  266. package/dist/chunk-M6ZFSTIZ.js +0 -630
  267. package/dist/chunk-MEIJDRHU.js +0 -243
  268. package/dist/deploy-source-5COWTBOC.js +0 -81
  269. package/dist/env-example-refresh-DWQIOQYR.js +0 -127
  270. package/dist/init-command-TI3HCKXZ.js +0 -126
  271. package/dist/local-engine-choice-FPJAZSSD.js +0 -79
  272. package/dist/operation-outcome-GNDD35WL.js +0 -51
  273. package/dist/promote-command-KHTIK44I.js +0 -141
  274. package/dist/pull-command-EUEWBRXZ.js +0 -162
  275. package/dist/release-command-WOVQAMUY.js +0 -147
  276. package/dist/toolchain-hooks-QVUZ6HZ4.js +0 -96
  277. package/dist/tracked-backend-B4HTME4S.js +0 -80
@@ -201,8 +201,9 @@ function removeArgs(manager, pkg) {
201
201
  return [manager === "npm" ? "uninstall" : "remove", pkg];
202
202
  }
203
203
  function addArgs(manager, spec, dev = false) {
204
- if (manager === "npm") return ["install", spec, ...dev ? ["--save-dev"] : []];
205
- return ["add", spec, ...dev ? [manager === "pnpm" ? "--save-dev" : "--dev"] : []];
204
+ const specs = typeof spec === "string" ? [spec] : [...spec];
205
+ if (manager === "npm") return ["install", ...specs, ...dev ? ["--save-dev"] : []];
206
+ return ["add", ...specs, ...dev ? [manager === "pnpm" ? "--save-dev" : "--dev"] : []];
206
207
  }
207
208
 
208
209
  export {
@@ -221,4 +222,4 @@ export {
221
222
  removeArgs,
222
223
  addArgs
223
224
  };
224
- //# sourceMappingURL=chunk-WRBKLYSJ.js.map
225
+ //# sourceMappingURL=chunk-DNBP4GJN.js.map
@@ -1,23 +1,41 @@
1
1
  import {
2
+ backendShellFiles,
3
+ deployNextCommand,
4
+ ephemeralNextStep,
2
5
  loginNextStep,
3
6
  planProfilePin,
4
7
  projectCli,
5
8
  projectShellFiles,
9
+ refuseFrontendOnlyFlags,
6
10
  reportWorkflowPlacement,
11
+ resolveFrameworkValue,
7
12
  resolveFrontendPreset,
13
+ resolveInitFrontend,
8
14
  resolveThemeChoice,
15
+ runFiles,
9
16
  sanitizeAppName,
17
+ settleClashes,
10
18
  templateVarsFor
11
- } from "./chunk-CV54PASI.js";
19
+ } from "./chunk-SGK3PTTM.js";
20
+ import {
21
+ renderManifestFile,
22
+ reportModuleFailures
23
+ } from "./chunk-B3P25SDP.js";
12
24
  import {
13
25
  ROUTES_MANIFEST_BASENAME,
14
26
  RouteManifestError,
15
- planRouteManifest,
16
- renderPlannedManifest
17
- } from "./chunk-TM5LRSBB.js";
27
+ planRouteManifest
28
+ } from "./chunk-LBJA7IEM.js";
29
+ import {
30
+ syncDigests
31
+ } from "./chunk-JI3BLXWQ.js";
32
+ import {
33
+ archiveSeedContent,
34
+ fetchSourceArchive
35
+ } from "./chunk-NV37YGOV.js";
18
36
  import {
19
37
  confirm
20
- } from "./chunk-AESE434J.js";
38
+ } from "./chunk-7M6JP3FS.js";
21
39
  import {
22
40
  CODEGEN_MODULE,
23
41
  DecodeContext,
@@ -53,25 +71,25 @@ import {
53
71
  spread,
54
72
  untypedKey,
55
73
  withDeclineContext
56
- } from "./chunk-WOGJB2F6.js";
74
+ } from "./chunk-FNLTFOUD.js";
57
75
  import {
58
- archiveSeedContent,
59
- fetchSourceArchive
60
- } from "./chunk-PIPIA7K7.js";
76
+ recordSync,
77
+ syncBranchLabel
78
+ } from "./chunk-VAGSKUWC.js";
61
79
  import {
62
80
  assertBranchReadSupported,
63
81
  exportWorkspaceBundle
64
- } from "./chunk-XIABDKFQ.js";
82
+ } from "./chunk-2SD4LA22.js";
65
83
  import {
66
84
  decodeWorkspaceArchive
67
85
  } from "./chunk-3DRXWLJ5.js";
68
86
  import {
69
87
  listBranches,
70
88
  requireBranch
71
- } from "./chunk-5RLAF6RL.js";
89
+ } from "./chunk-M2C54ZBC.js";
72
90
  import {
73
91
  detectInstallMode
74
- } from "./chunk-DEVGLLNZ.js";
92
+ } from "./chunk-GHMLRFRX.js";
75
93
  import {
76
94
  UNSUPPORTED_SECTIONS,
77
95
  decodedCounts,
@@ -82,48 +100,54 @@ import {
82
100
  sectionOmission,
83
101
  subtractDefaults,
84
102
  workspaceKeyOmission
85
- } from "./chunk-MEIJDRHU.js";
103
+ } from "./chunk-IYXL5NYU.js";
86
104
  import {
87
105
  ensureWorkspaceEnvGitignored,
88
106
  requireSecretPathGitignored
89
- } from "./chunk-3WHWOKU4.js";
107
+ } from "./chunk-BZ6WTG3E.js";
90
108
  import {
91
109
  loadDefault,
92
110
  readVersion,
93
111
  resolveKnowledge
94
- } from "./chunk-S5KQIFKJ.js";
112
+ } from "./chunk-DG3APBUJ.js";
95
113
  import {
96
114
  WORKSPACE_ENV_BASENAME,
97
115
  WORKSPACE_ENV_EXAMPLE_BASENAME,
98
116
  renderWorkspaceEnvExample,
99
117
  renderWorkspaceEnvFile,
100
118
  valueProblem
101
- } from "./chunk-LLS2WO2K.js";
119
+ } from "./chunk-PV25BDCH.js";
102
120
  import {
103
121
  memoCredential,
104
122
  refuseProfileForLocal
105
- } from "./chunk-KUU7T4ZE.js";
123
+ } from "./chunk-B2URJBC4.js";
106
124
  import {
107
125
  getAccessToken
108
- } from "./chunk-CJ76PSJT.js";
126
+ } from "./chunk-YH2JVJAO.js";
109
127
  import {
110
128
  getEngineRecord
111
- } from "./chunk-Q22BMRPF.js";
129
+ } from "./chunk-EPFDY5JU.js";
130
+ import {
131
+ readLockFile,
132
+ writeLockFile
133
+ } from "./chunk-CJDPSCMX.js";
112
134
  import {
113
135
  requireBackendSlot
114
- } from "./chunk-F3557PVM.js";
136
+ } from "./chunk-PY722CHR.js";
115
137
  import {
116
138
  SECRETS_FILE_VERSION,
117
139
  workspaceSecretsPathIn,
118
140
  writeSecretsFile
119
- } from "./chunk-AMBEITWL.js";
141
+ } from "./chunk-ZGLNHA7T.js";
120
142
  import {
121
143
  yesRerun
122
- } from "./chunk-Z4VN347O.js";
144
+ } from "./chunk-UYFUIHH3.js";
123
145
  import {
124
146
  contextFlags
125
- } from "./chunk-G57RYMKB.js";
147
+ } from "./chunk-3FRGNBOC.js";
126
148
  import {
149
+ CODEGEN_MARKER,
150
+ MERGED_IN_EXISTING,
127
151
  PRESERVED_ON_REFRESH,
128
152
  SHELL_FILES_IN_BACKEND,
129
153
  XANO_DIR,
@@ -137,37 +161,38 @@ import {
137
161
  plannedAgentsMd,
138
162
  readDecodeRecord,
139
163
  scaffoldProject
140
- } from "./chunk-F6IKWAIU.js";
164
+ } from "./chunk-DIWF7L33.js";
141
165
  import {
142
166
  shellWord
143
167
  } from "./chunk-FWD7AL6N.js";
144
168
  import {
145
169
  seedRowsByTableGuid
146
- } from "./chunk-Y76ERHLK.js";
170
+ } from "./chunk-FDTET7FZ.js";
147
171
  import {
148
- readLockFile,
149
- writeLockFile
150
- } from "./chunk-SQPIECXD.js";
172
+ detectPackageManager,
173
+ installCommandFor
174
+ } from "./chunk-DNBP4GJN.js";
151
175
  import {
152
176
  readInstalledManifest
153
- } from "./chunk-M7GJ6YUF.js";
177
+ } from "./chunk-CNZASQPL.js";
154
178
  import {
155
179
  atomicWrite
156
180
  } from "./chunk-LLNZGEFK.js";
157
181
  import {
158
182
  TEST_EXPECT_TYPES,
159
183
  respond
160
- } from "./chunk-S5TEJIGP.js";
184
+ } from "./chunk-SKEG3V2V.js";
161
185
  import {
162
186
  codegen_entry_exports,
163
187
  raw
164
- } from "./chunk-XMDDBEEM.js";
188
+ } from "./chunk-E763QI3G.js";
165
189
  import {
190
+ BACKEND_TSCONFIG_PATH,
166
191
  codegenLanding,
167
192
  describeOrigin,
168
193
  renderCodegenMarker,
169
194
  renderCodegenReadme
170
- } from "./chunk-57HMNJGB.js";
195
+ } from "./chunk-5GIOCDUM.js";
171
196
  import {
172
197
  SUPERSEDED_STATEMENTS,
173
198
  supersededBy
@@ -188,7 +213,7 @@ import {
188
213
  terminalText,
189
214
  warn,
190
215
  writeJson
191
- } from "./chunk-XNZURZ7T.js";
216
+ } from "./chunk-CH23ONYG.js";
192
217
  import {
193
218
  TOOL_ANNOTATION_WIRE,
194
219
  agentTrigger,
@@ -202,11 +227,11 @@ import {
202
227
  s,
203
228
  tableTrigger,
204
229
  workspaceTrigger
205
- } from "./chunk-FV55SRQU.js";
230
+ } from "./chunk-FQ53GTII.js";
206
231
  import {
207
232
  parsePathParams,
208
233
  unboundPathParams
209
- } from "./chunk-3IYVHVM6.js";
234
+ } from "./chunk-VJFMUJWZ.js";
210
235
  import {
211
236
  DEFAULT_DOCUMENTATION,
212
237
  DEFAULT_PREFERENCES,
@@ -214,10 +239,10 @@ import {
214
239
  } from "./chunk-6JAEMMZ7.js";
215
240
  import {
216
241
  MCP_OAUTH_ENV_REF
217
- } from "./chunk-SRX6B544.js";
242
+ } from "./chunk-5QMJOE2K.js";
218
243
  import {
219
244
  PAYLOAD_ARRAY_KEYS
220
- } from "./chunk-XJU6UAFV.js";
245
+ } from "./chunk-7FIMUFBP.js";
221
246
  import {
222
247
  CORS_UNMATCHABLE,
223
248
  DECODE_ONLY_STATEMENTS,
@@ -241,7 +266,7 @@ import {
241
266
  searchConstrainsRows,
242
267
  specLabel,
243
268
  unmatchableOrigins
244
- } from "./chunk-JSEVKRVJ.js";
269
+ } from "./chunk-T4LJ5UR2.js";
245
270
  import {
246
271
  WORKSPACE_HISTORY_TYPES
247
272
  } from "./chunk-ETAZIGNT.js";
@@ -256,7 +281,7 @@ import {
256
281
  isRuntimeConditionOp,
257
282
  isSearchOp,
258
283
  unusableColumns
259
- } from "./chunk-VZ22VUAS.js";
284
+ } from "./chunk-SLGJIWCY.js";
260
285
  import {
261
286
  AUTHOR_KIND_NAME
262
287
  } from "./chunk-VTMTIBKP.js";
@@ -271,7 +296,7 @@ import {
271
296
  DiagnosticBag,
272
297
  allowableWarnings,
273
298
  setDiagnosticSink
274
- } from "./chunk-GPI3OWRE.js";
299
+ } from "./chunk-YHB34BN6.js";
275
300
  import {
276
301
  CANONICAL_PAYLOAD_KEYS,
277
302
  adoptFromBundle,
@@ -281,7 +306,7 @@ import {
281
306
  mergeObserved,
282
307
  sdkKindName,
283
308
  withObjects
284
- } from "./chunk-OKNE3TWU.js";
309
+ } from "./chunk-5KJBWIDZ.js";
285
310
  import {
286
311
  shellQuote
287
312
  } from "./chunk-5ZSO4T2G.js";
@@ -305,14 +330,14 @@ import {
305
330
  normalize,
306
331
  retiredInputSuccessor,
307
332
  retiredInputs
308
- } from "./chunk-3HOGFGKG.js";
333
+ } from "./chunk-D3KEPRRN.js";
309
334
  import {
310
335
  STATEMENT_SURFACES,
311
336
  sPathOf
312
337
  } from "./chunk-Q7DGTQ5G.js";
313
338
  import {
314
339
  impliedInputs
315
- } from "./chunk-7GX445AE.js";
340
+ } from "./chunk-4XHAT7C5.js";
316
341
  import {
317
342
  LAMBDA_STATEMENTS,
318
343
  collectLambdaBodyProblems,
@@ -325,7 +350,7 @@ import {
325
350
  } from "./chunk-4BW2SG2N.js";
326
351
  import {
327
352
  INPUT_CONTEXT
328
- } from "./chunk-4DJTQ6W4.js";
353
+ } from "./chunk-JIKGT7DO.js";
329
354
  import {
330
355
  isVarName
331
356
  } from "./chunk-4MIV244X.js";
@@ -2360,14 +2385,7 @@ var dbIncrement = (a) => {
2360
2385
  };
2361
2386
  var dbTransaction = (a) => {
2362
2387
  const body = a.decodeStack(getPath2(a.stored.context, "run"));
2363
- const entries = [["body", arr(body.exprs)]];
2364
- const runtime = { body: body.statements };
2365
- const as = a.stored.as;
2366
- if (typeof as === "string" && as !== "") {
2367
- entries.push(["as", lit(as)]);
2368
- runtime.as = as;
2369
- }
2370
- return prove(a.ctx, a.stored, "db.transaction", [runtime], [obj(entries)]);
2388
+ return prove(a.ctx, a.stored, "db.transaction", [{ body: body.statements }], [obj([["body", arr(body.exprs)]])]);
2371
2389
  };
2372
2390
  function decodeWhere(a, stored, site) {
2373
2391
  const condition = decodeCondition(a.ctx, stored, { sqlWhere: true });
@@ -3706,9 +3724,10 @@ function documentationEntry(a, scope, defaulted) {
3706
3724
  }
3707
3725
  if (token !== "") {
3708
3726
  const gated = block.require_token === true;
3727
+ const sidecar = `\`${a.ctx.secretsFile}\``;
3709
3728
  a.ctx.problem(
3710
3729
  "expected-omission",
3711
- gated ? `${documentationScopeLabel(scope)} gates its documentation with a token, which is a SECRET and is not carried into the generated tree. ` + (a.ctx.writesSecrets ? `The source declares the gate and the value is written to \`${a.ctx.secretsFile}\` \u2014 gitignored, and read back by every command that builds a bundle, so a deploy restores the gate with no further step. Until it is supplied, \`deploy\` refuses rather than clearing the live token.` : `The source declares the gate; the value was NOT written anywhere (--no-secrets). Supply it at deploy time with \`--doc-token\` or \`--secrets-file\` \u2014 until then \`deploy\` refuses rather than clearing the live token.`) : `${documentationScopeLabel(scope)} stores a documentation token with \`require_token: false\` \u2014 the documentation is not gated. The token is a SECRET and is not carried into the generated tree; ` + (a.ctx.writesSecrets ? `it is written to \`${a.ctx.secretsFile}\` (gitignored) so a deploy carries it across.` : `it was NOT written anywhere (--no-secrets). A deploy does not need it.`)
3730
+ gated ? `${documentationScopeLabel(scope)} gates its documentation with a token, which is a SECRET and is not carried into the generated tree. The source declares the gate. A decode writes the value to ${sidecar} (gitignored), and every command that builds a bundle reads it back, so a deploy restores the gate with no further step. A decode run with \`--no-secrets\` does not write it: supply it at deploy time with \`--doc-token\` or \`--secrets-file\`. Until the value is supplied, \`deploy\` refuses rather than clearing the live token.` : `${documentationScopeLabel(scope)} stores a documentation token with \`require_token: false\` \u2014 the documentation is not gated. The token is a SECRET and is not carried into the generated tree. A decode writes it to ${sidecar} (gitignored) so a deploy carries it across; a decode run with \`--no-secrets\` does not. A deploy does not need it.`
3712
3731
  );
3713
3732
  }
3714
3733
  return cells.length === 0 ? null : ["documentation", obj(cells)];
@@ -5945,7 +5964,6 @@ var KNOWN_PAYLOAD_KEYS = /* @__PURE__ */ new Set([
5945
5964
  function decodeBundle(bundle, opts = {}) {
5946
5965
  const ctx = new DecodeContext();
5947
5966
  if (opts.secretsFile !== void 0) ctx.secretsFile = opts.secretsFile;
5948
- if (opts.writesSecrets !== void 0) ctx.writesSecrets = opts.writesSecrets;
5949
5967
  let raw2 = bundle.payload ?? {};
5950
5968
  if (opts.workspaceName !== void 0) {
5951
5969
  ctx.fallbackWorkspaceName = opts.workspaceName;
@@ -6276,13 +6294,16 @@ async function fetchBundle(args, source) {
6276
6294
  const credential = memoCredential(() => (credentialRead = true, getAccessToken(args)));
6277
6295
  if (source.kind === "workspace") {
6278
6296
  const auth = await credential();
6297
+ const bundle2 = await fetchWorkspaceBundle(auth, args.branch);
6298
+ const branch = await syncBranchLabel(auth, args.branch);
6279
6299
  return {
6280
- bundle: await fetchWorkspaceBundle(auth, args.branch),
6300
+ bundle: bundle2,
6281
6301
  origin: { source: "workspace", origin: String(auth.workspaceId), ...args.branch === void 0 ? {} : { branch: args.branch.trim() } },
6282
- credentialRead
6302
+ credentialRead,
6303
+ ...branch === void 0 ? {} : { syncTarget: { instance: auth.instance, workspaceId: auth.workspaceId, branch } }
6283
6304
  };
6284
6305
  }
6285
- const { projectDirFrom } = await import("./xanosdk-project-KH5TZ2KI.js");
6306
+ const { projectDirFrom } = await import("./xanosdk-project-J4VCFRHP.js");
6286
6307
  const cwd = projectDirFrom(process.cwd()) ?? process.cwd();
6287
6308
  const raw2 = "name" in source && source.name !== void 0 ? `${source.kind}:${source.name}` : source.kind;
6288
6309
  step(`Reading ${raw2}`);
@@ -6361,7 +6382,7 @@ function refuseDuplicateSourceGuids(project) {
6361
6382
  Nothing was written. These records come from the archive, not from anything you authored, so renaming an object or pinning a new guid here would repoint references rather than fix it \u2014 the repeat has to be resolved in the workspace this was exported from.`
6362
6383
  );
6363
6384
  }
6364
- function placeGeneratedFiles(project, backendDir = XANO_DIR, displayDir = backendDir || XANO_DIR, routes) {
6385
+ function placeGeneratedFiles(project, backendDir = XANO_DIR, displayDir = backendDir || XANO_DIR, routes, modules) {
6365
6386
  const out = [
6366
6387
  // Generated from the names the source declares, and therefore placed HERE
6367
6388
  // rather than at either call site: `init --from` and `pull` must not be able
@@ -6379,19 +6400,23 @@ function placeGeneratedFiles(project, backendDir = XANO_DIR, displayDir = backen
6379
6400
  const path = file.path === GENERATED_README ? `${backendDir}/${GENERATED_README}` : `${backendDir}/${file.path}`;
6380
6401
  out.push({ path, content: file.contents });
6381
6402
  }
6382
- const manifest = routeManifestFor(project.source, routes?.entry ?? `${displayDir}/index.ts`, routes?.deferred);
6403
+ const manifest = routeManifestFor(project.source, routes?.entry ?? `${displayDir}/index.ts`, routes?.deferred, modules);
6383
6404
  if (manifest !== void 0) out.push({ path: `${backendDir}/${ROUTES_MANIFEST_BASENAME}`, content: manifest });
6384
6405
  return out;
6385
6406
  }
6386
- function routeManifestFor(payload, entry, deferred) {
6407
+ function routeManifestFor(payload, entry, deferred, modules) {
6387
6408
  try {
6388
- return renderPlannedManifest(planRouteManifest(payload), entry);
6409
+ const file = renderManifestFile(planRouteManifest(payload), modules, entry === void 0 ? {} : { entry });
6410
+ if (file === void 0) return void 0;
6411
+ reportModuleFailures(file.failed, ROUTES_MANIFEST_BASENAME);
6412
+ return file.source;
6389
6413
  } catch (err) {
6390
6414
  if (!(err instanceof RouteManifestError)) throw err;
6391
- const line = `${ROUTES_MANIFEST_BASENAME} was not written: ${err.message}`;
6415
+ const kept = modules?.previous;
6416
+ const line = kept === void 0 ? `${ROUTES_MANIFEST_BASENAME} was not written: ${err.message}` : `${ROUTES_MANIFEST_BASENAME} was not refreshed and was kept as it was: ${err.message}`;
6392
6417
  if (deferred === void 0) warn(line, "routes.not-written");
6393
6418
  else deferred.push(line);
6394
- return void 0;
6419
+ return kept;
6395
6420
  }
6396
6421
  }
6397
6422
  function envExampleNames(env) {
@@ -6646,29 +6671,47 @@ async function runInitFromCommand(args, source) {
6646
6671
  const pathArg = args.positionals[0] ?? ".";
6647
6672
  assertBranchMatchesSource(args, source);
6648
6673
  const target = resolve(pathArg);
6649
- if (decideOverwrite(target, { force: args.force, regenerable: true }) === "refuse") {
6650
- throw new UsageError(
6651
- `Target directory ${target} is not empty. Re-run with --force to scaffold into it anyway, or pick an empty directory.`,
6652
- { hintFor: { command: "init" } }
6674
+ const isRefresh = isNonEmptyDir(target) && existsSync(join(target, CODEGEN_MARKER));
6675
+ const existing = isNonEmptyDir(target) && !isRefresh;
6676
+ const refreshedBackend = isRefresh && !existsSync(join(target, "frontend")) && existsSync(join(target, BACKEND_TSCONFIG_PATH)) ? existsSync(join(target, XANO_DIR, ".gitattributes")) ? "existing" : "new" : void 0;
6677
+ if (refreshedBackend !== void 0) {
6678
+ if (args.framework !== void 0 && resolveFrameworkValue(args.framework) !== null) {
6679
+ throw new UsageError(
6680
+ `\`--framework ${args.framework}\` writes a new frontend, and ${target} is a project with no frontend: re-running init refreshes its backend only. Drop --framework, or run init in an empty directory for a full app.`,
6681
+ { helpFor: { command: "init" } }
6682
+ );
6683
+ }
6684
+ refuseFrontendOnlyFlags(args, `${target} has no frontend, so re-running init refreshes its backend only`);
6685
+ }
6686
+ let overrideScripts = [];
6687
+ if (existing) {
6688
+ await resolveInitFrontend(args, target, "existing");
6689
+ const settled = await settleClashes(
6690
+ target,
6691
+ backendShellFiles(templateVarsFor(sanitizeAppName(args.name ?? basename(target)), target), { kind: "existing", dir: target }),
6692
+ args
6653
6693
  );
6694
+ if (settled === "cancelled") return;
6695
+ overrideScripts = settled;
6654
6696
  }
6655
- const { bundle, origin, credentialRead, seed } = source.kind === "file" ? {
6697
+ const { bundle, origin, credentialRead, seed, syncTarget } = source.kind === "file" ? {
6656
6698
  bundle: readBundleFile(source.path),
6657
6699
  origin: { source: "file", origin: source.path },
6658
6700
  credentialRead: void 0,
6659
- seed: void 0
6701
+ seed: void 0,
6702
+ syncTarget: void 0
6660
6703
  } : await fetchBundle(args, source);
6661
6704
  const mode = reportMode(args.report);
6662
6705
  const out = resolve(pathArg);
6663
6706
  const appName = sanitizeAppName(args.name ?? basename(out));
6664
6707
  const vars = templateVarsFor(appName, out);
6665
- const preset = await resolveFrontendPreset(args.framework);
6708
+ const preset = existing || refreshedBackend !== void 0 ? null : await resolveFrontendPreset(args.framework);
6709
+ if (preset === null && !existing && refreshedBackend === void 0) refuseFrontendOnlyFlags(args, "`--framework none` writes none");
6666
6710
  const choice = await resolveThemeChoice(args);
6667
6711
  const installMode = detectInstallMode();
6668
6712
  const ws = bundle.payload?.workspace;
6669
6713
  const unnamed = typeof ws?.name !== "string" || ws.name.trim() === "";
6670
6714
  const project = decodeBundle(bundle, {
6671
- writesSecrets: args.noSecrets !== true,
6672
6715
  ...unnamed ? { workspaceName: appName } : {}
6673
6716
  });
6674
6717
  refuseDuplicateSourceGuids(project);
@@ -6678,16 +6721,9 @@ async function runInitFromCommand(args, source) {
6678
6721
  entry: shellWord(isAbsolute(cwdEntry) || cwdEntry.startsWith(".") ? cwdEntry : `./${cwdEntry}`),
6679
6722
  deferred: routesDeferred
6680
6723
  });
6724
+ const readme2 = renderCodegenReadme(vars, origin, Object.keys(project.env), preset);
6681
6725
  const files = [
6682
- ...projectShellFiles(
6683
- vars,
6684
- preset,
6685
- {
6686
- readme: renderCodegenReadme(vars, origin, Object.keys(project.env), preset),
6687
- landing: codegenLanding(vars, origin)
6688
- },
6689
- choice
6690
- ),
6726
+ ...existing || refreshedBackend === "existing" ? backendShellFiles(vars, { kind: "existing", dir: out }) : preset === null ? backendShellFiles(vars, { kind: "new", readme: readme2 }) : projectShellFiles(vars, preset, { readme: readme2, landing: codegenLanding(vars, origin) }, choice),
6691
6727
  ...generated,
6692
6728
  {
6693
6729
  path: `${XANO_DIR}/${CODEGEN_MARKER_BASENAME}`,
@@ -6713,11 +6749,12 @@ async function runInitFromCommand(args, source) {
6713
6749
  });
6714
6750
  const replace = await planXanoReplace(
6715
6751
  out,
6716
- files,
6752
+ // An existing project's merged files are not overwrites: only the backend's own are listed.
6753
+ existing ? files.filter((f) => !MERGED_IN_EXISTING.has(f.path)) : files,
6717
6754
  bundle.payload,
6718
6755
  args,
6719
6756
  describeOrigin(origin),
6720
- agentsMd
6757
+ existing ? void 0 : agentsMd
6721
6758
  );
6722
6759
  if (replace === "cancelled") {
6723
6760
  info("Cancelled. Nothing was written.");
@@ -6737,13 +6774,16 @@ async function runInitFromCommand(args, source) {
6737
6774
  sdkVersion: readVersion(),
6738
6775
  frontend: preset,
6739
6776
  theme: choice,
6740
- ...replace.removals === void 0 ? {} : { xanoRemovals: replace.removals }
6777
+ ...replace.removals === void 0 ? {} : { xanoRemovals: replace.removals },
6778
+ // An existing project's clashes were settled before the read, and its
6779
+ // manifest is merged into with the project winning.
6780
+ ...existing ? { overwrite: "full", mergePackageJson: "project", overrideScripts } : {}
6741
6781
  });
6742
6782
  reportXanoReplace(replace);
6743
6783
  for (const line of routesDeferred) warn(line, "routes.not-written");
6744
6784
  if (seed !== void 0) reportSeedRows(seed.rows, seed.label, seed.provenance, XANO_DIR, contextFlags(args));
6745
6785
  if (replace.lock !== void 0) {
6746
- const { reconciledLock } = await import("./pull-command-EUEWBRXZ.js");
6786
+ const { reconciledLock } = await import("./pull-command-S5E2ABZ4.js");
6747
6787
  writeLockFile(
6748
6788
  replace.lock.path,
6749
6789
  reconciledLock(replace.lock.model, replace.lock.reconciliation, bundle.payload)
@@ -6794,6 +6834,9 @@ async function runInitFromCommand(args, source) {
6794
6834
  }
6795
6835
  }
6796
6836
  if (lock !== null && !hadLock) success(`Wrote ${displayPath(lock)}`);
6837
+ if (lock !== null && syncTarget !== void 0 && verified !== false) {
6838
+ recordSync({ lockPath: lock, target: syncTarget, digests: syncDigests({ held: [bundle] }), by: "init", complete: true });
6839
+ }
6797
6840
  if (verified === false) {
6798
6841
  rewriteReadmeWithReport(project, out);
6799
6842
  const cliVersion = readVersion();
@@ -6803,10 +6846,17 @@ async function runInitFromCommand(args, source) {
6803
6846
  summarize(args, project, verified, out, origin, scaffold.install, mode, {
6804
6847
  dir: out,
6805
6848
  name: appName,
6806
- framework: preset.id,
6807
- theme: choice.theme.id,
6808
- dark: choice.dark,
6849
+ mode: existing || isRefresh ? "existing" : "new",
6850
+ framework: preset?.id ?? "none",
6851
+ theme: preset === null ? null : choice.theme.id,
6852
+ dark: preset === null ? null : choice.dark,
6809
6853
  install: scaffold.install,
6854
+ files: runFiles(scaffold.written, lock === null ? [] : [relative(out, lock).split(sep).join("/")]),
6855
+ next: deployNextCommand(
6856
+ out === process.cwd() ? null : pathArg,
6857
+ scaffold.install === "installed" || existsSync(join(out, "node_modules", "@xano", "sdk")) ? null : installCommandFor(out),
6858
+ detectPackageManager(out)
6859
+ ),
6810
6860
  pinnedProfile,
6811
6861
  lock,
6812
6862
  // What `pull --json` reports for the same refresh: the files kept because
@@ -6844,7 +6894,7 @@ async function planXanoReplace(out, files, payload, args, label, agentsMd) {
6844
6894
  if (shell.length > 0 && !await confirmShellOverwrite(out, shell, args, label)) return "cancelled";
6845
6895
  return { removals: void 0, removedEdited: [], rewrittenEdited: [], kept: [] };
6846
6896
  }
6847
- const { backendDirCleanliness, noneOfTheIdentities, pulledIdentities, reconcileLock } = await import("./pull-command-EUEWBRXZ.js");
6897
+ const { backendDirCleanliness, noneOfTheIdentities, pulledIdentities, reconcileLock } = await import("./pull-command-S5E2ABZ4.js");
6848
6898
  const prefix = `${XANO_DIR}/`;
6849
6899
  const incoming = new Map(
6850
6900
  files.filter((f) => f.path.startsWith(prefix)).map((f) => [f.path.slice(prefix.length), f.content])
@@ -6892,7 +6942,7 @@ async function planXanoReplace(out, files, payload, args, label, agentsMd) {
6892
6942
  list(lock.reconciliation.dropped.map((key) => displayLockKey(key)), "")
6893
6943
  );
6894
6944
  }
6895
- const { keptDuplicates, replacedRegistrations, reportSuperseded } = await import("./pull-superseded-TOT5S4QU.js");
6945
+ const { keptDuplicates, replacedRegistrations, reportSuperseded } = await import("./pull-superseded-E34BZVLH.js");
6896
6946
  const shown = relative(process.cwd(), xanoDir).split(sep).join("/") || XANO_DIR;
6897
6947
  reportSuperseded(
6898
6948
  keptDuplicates(xanoDir, incoming, kept, shown),
@@ -7114,7 +7164,7 @@ function summarize(args, project, verified, out, origin, install, mode, scaffold
7114
7164
  `) + // An unverified tree: the check the warning above asks for is a step.
7115
7165
  (verified === null ? ` npm run xano:check # confirm the tree compiles and the lock agrees
7116
7166
  ` : ``) + ` npm run xano:deploy # run it on the Xano Engine, on this machine
7117
- ` + loginNextStep(pin, out) + ` npm run xano:deploy:ephemeral # build the frontend, then deploy \u2192 live ephemeral URL`;
7167
+ ` + loginNextStep(pin, out) + ephemeralNextStep(scaffolded.framework !== "none");
7118
7168
  detail(`Next steps:
7119
7169
  ` + steps.replace(/^ {2}/gm, " "));
7120
7170
  for (const line of [
@@ -7197,4 +7247,4 @@ export {
7197
7247
  seedRowsListed,
7198
7248
  seedRowsLanding
7199
7249
  };
7200
- //# sourceMappingURL=chunk-LZDA6SVD.js.map
7250
+ //# sourceMappingURL=chunk-DXZTL7NA.js.map
@@ -9,7 +9,7 @@ import {
9
9
  } from "./chunk-A2AOUBJS.js";
10
10
  import {
11
11
  RAW_FIELD
12
- } from "./chunk-4DJTQ6W4.js";
12
+ } from "./chunk-JIKGT7DO.js";
13
13
  import {
14
14
  describeEntry
15
15
  } from "./chunk-4MIV244X.js";
@@ -139,4 +139,4 @@ export {
139
139
  rawField,
140
140
  codegen_entry_exports
141
141
  };
142
- //# sourceMappingURL=chunk-XMDDBEEM.js.map
142
+ //# sourceMappingURL=chunk-E763QI3G.js.map
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-FWD7AL6N.js";
9
9
  import {
10
10
  isLocalSpecifier
11
- } from "./chunk-MYLPOVX6.js";
11
+ } from "./chunk-47XT6WQL.js";
12
12
  import {
13
13
  trackLocalWrite
14
14
  } from "./chunk-4KHEMC32.js";
@@ -18,38 +18,39 @@ import {
18
18
  npmLockListsMember,
19
19
  removeArgs,
20
20
  yarnPlugAndPlayRoot
21
- } from "./chunk-WRBKLYSJ.js";
21
+ } from "./chunk-DNBP4GJN.js";
22
22
  import {
23
23
  localPackageName,
24
24
  localPathOf,
25
25
  packageNameOf,
26
26
  readInstalledManifestState
27
- } from "./chunk-M7GJ6YUF.js";
27
+ } from "./chunk-CNZASQPL.js";
28
28
  import {
29
29
  UsageError
30
- } from "./chunk-XNZURZ7T.js";
30
+ } from "./chunk-CH23ONYG.js";
31
31
 
32
32
  // src/emit/project-dependency.ts
33
33
  import { existsSync, readFileSync } from "fs";
34
34
  import { isAbsolute, join, relative, resolve, sep } from "path";
35
35
 
36
36
  // src/emit/npm-install.ts
37
- async function installWithPeerRetry(specifier, cwd, opts = {}) {
37
+ async function installWithPeerRetry(spec, cwd, opts = {}) {
38
+ const specs = typeof spec === "string" ? [spec] : spec;
38
39
  const scope = opts.scope ?? [];
39
40
  if (opts.manager !== void 0 && opts.manager !== "npm") {
40
- const only = await runNpmQuiet([...addArgs(opts.manager, specifier), ...scope], cwd, { manager: opts.manager, ...opts.timeoutMs !== void 0 ? { timeoutMs: opts.timeoutMs } : {} });
41
+ const only = await runNpmQuiet([...addArgs(opts.manager, specs), ...scope], cwd, { manager: opts.manager, ...opts.timeoutMs !== void 0 ? { timeoutMs: opts.timeoutMs } : {} });
41
42
  return { ...only, peerConflict: null, retried: false };
42
43
  }
43
44
  const budget = opts.timeoutMs ?? NPM_RUN_TIMEOUT_MS;
44
45
  const deadline = Date.now() + budget;
45
- const first = await runNpmQuiet(["install", specifier, ...scope], cwd, { timeoutMs: budget });
46
+ const first = await runNpmQuiet(["install", ...specs, ...scope], cwd, { timeoutMs: budget });
46
47
  if (first.status === 0 || !isPeerConflict(first.output)) {
47
48
  return { ...first, peerConflict: null, retried: false };
48
49
  }
49
50
  const remaining = deadline - Date.now();
50
51
  if (remaining <= 0) return { ...first, peerConflict: first.output, retried: false };
51
52
  opts.onRetry?.();
52
- const second = await runNpmQuiet(["install", specifier, ...scope, "--legacy-peer-deps"], cwd, {
53
+ const second = await runNpmQuiet(["install", ...specs, ...scope, "--legacy-peer-deps"], cwd, {
53
54
  timeoutMs: remaining
54
55
  });
55
56
  return { ...second, peerConflict: first.output, retried: true };
@@ -114,6 +115,21 @@ async function addDependency(dir, specifier, opts = {}) {
114
115
  return { ...result, site, installSpec, ...recorded === void 0 ? {} : { recorded }, ...landed === void 0 ? {} : { landed } };
115
116
  });
116
117
  }
118
+ async function addDependencies(dir, specifiers, opts = {}) {
119
+ const names = specifiers.map(packageNameOf);
120
+ const check = interruptedCheck(names.join(", "), installSite(dir), opts.rerun);
121
+ return trackLocalWrite({ what: `the install of ${names.join(", ")}`, check }, async () => {
122
+ const { site, link } = await prepareInstallSite(dir);
123
+ if (link !== null && link.status !== 0) return { ...link, peerConflict: null, retried: false, site, unrecorded: names };
124
+ const result = await installWithPeerRetry(specifiers, site.cwd, {
125
+ ...opts.onRetry === void 0 ? {} : { onRetry: opts.onRetry },
126
+ scope: site.scope,
127
+ ...site.manager !== "npm" ? { manager: site.manager } : {}
128
+ });
129
+ const after = dependenciesOf(dir);
130
+ return { ...result, site, unrecorded: result.status === 0 ? names.filter((n) => !after.has(n)) : names };
131
+ });
132
+ }
117
133
  async function removeDependency(dir, pkg, rerun) {
118
134
  return trackLocalWrite({ what: `the removal of ${pkg}`, check: interruptedCheck(pkg, installSite(dir), rerun) }, async () => {
119
135
  const { site, link } = await prepareInstallSite(dir);
@@ -149,7 +165,8 @@ export {
149
165
  dependenciesOf,
150
166
  prepareInstallSite,
151
167
  addDependency,
168
+ addDependencies,
152
169
  removeDependency,
153
170
  recordedDependency
154
171
  };
155
- //# sourceMappingURL=chunk-3VX7VAQT.js.map
172
+ //# sourceMappingURL=chunk-EF4MHLEW.js.map