@xano/sdk 1.0.4 → 1.0.6

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 (280) hide show
  1. package/CHANGELOG.md +32 -5
  2. package/README.md +250 -342
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/agent-file-refresh-67QIX45H.js +39 -0
  5. package/dist/{answer-shape-LVV2SVBK.js → answer-shape-UCDUKPAN.js} +6 -6
  6. package/dist/{backend-dir-WZADOK3L.js → backend-dir-3LIL6SCT.js} +16 -15
  7. package/dist/{backend-slot-NSCTWCUX.js → backend-slot-JREP27UD.js} +4 -4
  8. package/dist/bin.js +59 -58
  9. package/dist/{branch-ONWPJ4V6.js → branch-2IPHOAYS.js} +10 -10
  10. package/dist/{branch-commands-ZT2MJIRS.js → branch-commands-KTKAXBAN.js} +31 -32
  11. package/dist/bundle.js +9 -39
  12. package/dist/{capture-3JNUA6C2.js → capture-GW5KNKMB.js} +4 -4
  13. package/dist/{chunk-FPBGAT5D.js → chunk-26MOFAJT.js} +3 -3
  14. package/dist/{chunk-O7QOWS6M.js → chunk-2FLIJGBZ.js} +12 -12
  15. package/dist/{chunk-QAEQGT5I.js → chunk-2WBH5HUY.js} +7 -7
  16. package/dist/{chunk-37AHZ7JX.js → chunk-3BBIDW3Y.js} +6 -6
  17. package/dist/{chunk-DGWHAVRG.js → chunk-3EDSPMXN.js} +12 -1
  18. package/dist/{chunk-2AUV6NXK.js → chunk-3II44CUJ.js} +36 -36
  19. package/dist/{chunk-7GX445AE.js → chunk-4XHAT7C5.js} +2 -2
  20. package/dist/{chunk-OOXWYAA4.js → chunk-57A5ZKPO.js} +1 -1
  21. package/dist/{chunk-OOGXZL7Z.js → chunk-5KJBWIDZ.js} +84 -6
  22. package/dist/{chunk-5YL5OC2G.js → chunk-5QMJOE2K.js} +6 -6
  23. package/dist/{chunk-3H3EPMFY.js → chunk-5TVFLG3C.js} +2 -2
  24. package/dist/{chunk-WFMVKY7I.js → chunk-5YQV35C2.js} +9 -9
  25. package/dist/{chunk-NA3PXMEF.js → chunk-64WWE3EF.js} +1 -1
  26. package/dist/{chunk-FMOEVAGT.js → chunk-6X3MY2JP.js} +3 -3
  27. package/dist/{chunk-2LVTBPW2.js → chunk-6X6BJN6Y.js} +3 -3
  28. package/dist/{chunk-DYG5D3FD.js → chunk-763M6LX3.js} +16 -2
  29. package/dist/{chunk-EESV6NU2.js → chunk-7FIMUFBP.js} +2 -2
  30. package/dist/{chunk-CFSFBKHP.js → chunk-7GAIJW62.js} +2 -2
  31. package/dist/{chunk-6R7S775T.js → chunk-7REDHC4N.js} +2 -2
  32. package/dist/chunk-7VR4IO5B.js +44 -0
  33. package/dist/chunk-A7MRZ4GF.js +78 -0
  34. package/dist/{chunk-D5ZEAF4G.js → chunk-ATJ2W7DC.js} +81 -58
  35. package/dist/{chunk-BUJRS7XB.js → chunk-AVS4WPPY.js} +2 -2
  36. package/dist/{chunk-MEE5RZ6G.js → chunk-BL3AZ3AP.js} +2 -2
  37. package/dist/chunk-BTVUYHWV.js +111 -0
  38. package/dist/{chunk-T4DUFQ2S.js → chunk-CCU5CCRX.js} +5 -5
  39. package/dist/{chunk-5T2CTWTB.js → chunk-CHINR7WD.js} +6 -6
  40. package/dist/{chunk-VD32O6KZ.js → chunk-CJDPSCMX.js} +45 -5
  41. package/dist/{chunk-3HOGFGKG.js → chunk-D3KEPRRN.js} +2 -2
  42. package/dist/{chunk-SBR2WZXG.js → chunk-D7BUMOKU.js} +60 -53
  43. package/dist/{chunk-WRBKLYSJ.js → chunk-DNBP4GJN.js} +4 -3
  44. package/dist/{chunk-JTUKLCXS.js → chunk-DXUICABI.js} +1 -1
  45. package/dist/{chunk-XMDDBEEM.js → chunk-E763QI3G.js} +2 -2
  46. package/dist/{chunk-KTGRGWZW.js → chunk-EADVVTDK.js} +7 -7
  47. package/dist/{chunk-FJWZ5OVV.js → chunk-ENMBEXOP.js} +3 -3
  48. package/dist/{chunk-OPHB5ORL.js → chunk-EQFYOOO6.js} +171 -92
  49. package/dist/{chunk-WOGJB2F6.js → chunk-FNLTFOUD.js} +4 -9
  50. package/dist/{chunk-II747OWE.js → chunk-FQ53GTII.js} +10 -10
  51. package/dist/{chunk-JP7M7OU7.js → chunk-FU3VCE5A.js} +46 -27
  52. package/dist/{chunk-OGBMUST4.js → chunk-GHQ4BVI4.js} +14 -14
  53. package/dist/{chunk-45YPFB7B.js → chunk-GLY552SI.js} +84 -57
  54. package/dist/{chunk-QV3GXQRE.js → chunk-GOLFAEUV.js} +2 -2
  55. package/dist/{chunk-L2GLOJAO.js → chunk-GW5RHGOB.js} +22 -22
  56. package/dist/{chunk-A6QTTJUI.js → chunk-GWTFI3GA.js} +2 -2
  57. package/dist/{chunk-MCTIKRMN.js → chunk-GZHLCUZ6.js} +8 -8
  58. package/dist/{chunk-664LSWE5.js → chunk-HCG7NDIL.js} +4 -4
  59. package/dist/{chunk-7PMVIHB3.js → chunk-I3H3HCPY.js} +50 -29
  60. package/dist/{chunk-LIVN53UV.js → chunk-I3VHW6XM.js} +31 -31
  61. package/dist/{chunk-C4FHQA7R.js → chunk-IF4PEGVD.js} +8 -8
  62. package/dist/{chunk-WFG67AYS.js → chunk-IMELQ2I6.js} +3 -3
  63. package/dist/{chunk-3P3HXN76.js → chunk-ITC2R2OT.js} +11 -11
  64. package/dist/{chunk-W5ONYLOP.js → chunk-IXFJORNH.js} +4 -4
  65. package/dist/{chunk-HMLGM2MW.js → chunk-IYXL5NYU.js} +260 -32
  66. package/dist/{chunk-2B22WWKL.js → chunk-JFBRXRJD.js} +59 -35
  67. package/dist/chunk-JI3BLXWQ.js +107 -0
  68. package/dist/{chunk-4DJTQ6W4.js → chunk-JIKGT7DO.js} +2 -1
  69. package/dist/{chunk-O5V3YH5P.js → chunk-JRVQ7M7W.js} +8 -8
  70. package/dist/{chunk-4APOHK7Y.js → chunk-JXVJGF3Y.js} +2 -2
  71. package/dist/chunk-KPFS3RGM.js +257 -0
  72. package/dist/{chunk-PML67X22.js → chunk-LAOMN6QQ.js} +3 -3
  73. package/dist/{chunk-TTVAHCWP.js → chunk-LBJA7IEM.js} +370 -45
  74. package/dist/{chunk-KUTFFHUM.js → chunk-LD6ARK3A.js} +2 -2
  75. package/dist/{chunk-HUSH7LRI.js → chunk-LL7SGTRC.js} +36 -33
  76. package/dist/{chunk-I2BGYNHD.js → chunk-M5CSVB23.js} +7 -7
  77. package/dist/{chunk-UCQ2VUTG.js → chunk-M6ZFSTIZ.js} +2 -2
  78. package/dist/{chunk-MNVDVR3M.js → chunk-MBDFH7XB.js} +4 -4
  79. package/dist/{chunk-QXTKSOFI.js → chunk-MF4W6FHU.js} +1 -1
  80. package/dist/{chunk-RX3EMQGN.js → chunk-MFWF2NZJ.js} +12 -5
  81. package/dist/{chunk-SEUCZZCP.js → chunk-N5I37JFB.js} +3 -3
  82. package/dist/{chunk-IJ3SXSZM.js → chunk-ND43ZOS3.js} +6 -6
  83. package/dist/chunk-NDWVJ2QZ.js +67 -0
  84. package/dist/{chunk-E65QIWOO.js → chunk-NPODGBVJ.js} +4 -4
  85. package/dist/{chunk-CYB7UQA2.js → chunk-OIKLDDYC.js} +5 -5
  86. package/dist/{chunk-MLGI2SRQ.js → chunk-PFBXSVZF.js} +4 -4
  87. package/dist/{chunk-AM4FKL4J.js → chunk-PL7AIAWS.js} +12 -12
  88. package/dist/{chunk-S7E2AHV3.js → chunk-PMMHSX4H.js} +26 -9
  89. package/dist/{chunk-WL2DSNJV.js → chunk-Q22BMRPF.js} +2 -2
  90. package/dist/{chunk-3FN2BIGB.js → chunk-QJM5XZ4K.js} +6 -6
  91. package/dist/{chunk-EWCDPFW5.js → chunk-QXYMDARD.js} +4 -4
  92. package/dist/{chunk-MLPDSGJQ.js → chunk-QZEAANWP.js} +5 -5
  93. package/dist/{chunk-ESZ2FF57.js → chunk-RIN4YY34.js} +88 -74
  94. package/dist/{chunk-37FBPMNE.js → chunk-S56YBYMN.js} +5 -2
  95. package/dist/{chunk-CBYQ2ZN3.js → chunk-SKEG3V2V.js} +2 -2
  96. package/dist/{chunk-4PQHO74B.js → chunk-SLGJIWCY.js} +4 -4
  97. package/dist/{chunk-IVKRT476.js → chunk-SPITRSOF.js} +2 -2
  98. package/dist/{chunk-BUECLQXK.js → chunk-SPKA2LV6.js} +4 -4
  99. package/dist/{chunk-HHW5AWVD.js → chunk-SSITMX7I.js} +30 -30
  100. package/dist/{chunk-OPG4DYX2.js → chunk-T4LJ5UR2.js} +29 -7
  101. package/dist/{chunk-LXNQWHZM.js → chunk-TECTL2NU.js} +4 -4
  102. package/dist/{chunk-E6H5ZEV3.js → chunk-TTEIDD5Q.js} +3 -3
  103. package/dist/{chunk-6VBTPV2Y.js → chunk-U35MTOXQ.js} +3 -3
  104. package/dist/{chunk-UKUIUS3E.js → chunk-U6MTGB46.js} +5 -5
  105. package/dist/{chunk-Y2ZLKBM6.js → chunk-UD2Z7K6W.js} +4 -4
  106. package/dist/{chunk-IXUPUFCG.js → chunk-UIVMR7UK.js} +2 -2
  107. package/dist/{chunk-UDE5C2XN.js → chunk-VDHA5SSQ.js} +3 -3
  108. package/dist/{chunk-5W7DOMIU.js → chunk-VJFMUJWZ.js} +4 -4
  109. package/dist/{chunk-XNCP4KYO.js → chunk-VQPDATQT.js} +1 -1
  110. package/dist/{chunk-KCAL4QYP.js → chunk-VW4CWVYX.js} +4 -4
  111. package/dist/chunk-WAVNUTMT.js +9 -0
  112. package/dist/{chunk-DIG3NITC.js → chunk-WBH4KJWM.js} +3 -3
  113. package/dist/{chunk-HSEQYBDO.js → chunk-WZHLMU6T.js} +3 -3
  114. package/dist/{chunk-WYEQFD6A.js → chunk-XFBGXB7X.js} +173 -105
  115. package/dist/{chunk-UI4OPTYR.js → chunk-Y453TW6J.js} +2 -2
  116. package/dist/{chunk-LUTMOHOW.js → chunk-YGLMRH5U.js} +9 -9
  117. package/dist/{chunk-GPI3OWRE.js → chunk-YHB34BN6.js} +2 -1
  118. package/dist/{chunk-5WGVIXMD.js → chunk-YKP4ZKVO.js} +14 -10
  119. package/dist/{chunk-MN2PB6WB.js → chunk-YR2I5HGE.js} +3 -3
  120. package/dist/{chunk-ZG7E72VI.js → chunk-YYC2DZMG.js} +7 -7
  121. package/dist/{chunk-D64XUF5Q.js → chunk-YYLUBYXM.js} +16 -16
  122. package/dist/{chunk-VRVKNY4A.js → chunk-Z4ZGTCCD.js} +8 -8
  123. package/dist/{chunk-44B4V2LR.js → chunk-ZDP6GDAB.js} +142 -142
  124. package/dist/{chunk-ET5DSBAC.js → chunk-ZJSTUD6D.js} +8 -8
  125. package/dist/cli.d.ts +36 -26
  126. package/dist/cli.js +57 -56
  127. package/dist/{codegen-command-HTWIW56U.js → codegen-command-R5IASBFC.js} +78 -72
  128. package/dist/codegen.d.ts +2 -2
  129. package/dist/codegen.js +2 -2
  130. package/dist/{commands-CVFYC4GK.js → commands-H7CPMMHH.js} +3 -3
  131. package/dist/{completion-AUEQC4XJ.js → completion-W5ZAI6TN.js} +12 -12
  132. package/dist/{config-JU6OQC77.js → config-MZ5KG4EP.js} +5 -5
  133. package/dist/{deploy-command-5WTFHMBT.js → deploy-command-34T2LKQ5.js} +64 -63
  134. package/dist/deploy-source-YLQ7WMYR.js +82 -0
  135. package/dist/{dev-env-sync-X636HLMK.js → dev-env-sync-TMJTNU3U.js} +58 -57
  136. package/dist/{diagnostics-LSMGB4TY.js → diagnostics-OMN5Y2AH.js} +2 -2
  137. package/dist/{display-name-hint-DMORHANO.js → display-name-hint-ZJGFNJKQ.js} +12 -12
  138. package/dist/{emit-hOFbgzde.d.ts → emit-D125xxty.d.ts} +67 -21
  139. package/dist/env-example-refresh-CQP3ZMKM.js +133 -0
  140. package/dist/{env-pull-command-WZZ7RL2E.js → env-pull-command-UTG6IC2K.js} +53 -53
  141. package/dist/{env-target-PO3MOLH5.js → env-target-FZROWYFS.js} +14 -14
  142. package/dist/{env-var-command-YKTJZFJN.js → env-var-command-VYDBQJJW.js} +51 -50
  143. package/dist/{ephemeral-BMFY55BQ.js → ephemeral-BIE6FMJV.js} +10 -10
  144. package/dist/{ephemeral-command-VDSQCOYL.js → ephemeral-command-OZ26RGXF.js} +54 -54
  145. package/dist/{ephemeral-state-6TY4JIPA.js → ephemeral-state-SNZOX2YK.js} +12 -12
  146. package/dist/{generate-command-3NTNRQRS.js → generate-command-4HR7MR36.js} +87 -79
  147. package/dist/{gitignore-FWPEDX6C.js → gitignore-EWQBXNX2.js} +20 -19
  148. package/dist/{guards-EJU2ONAX.js → guards-KYEOCVHN.js} +7 -7
  149. package/dist/{hosted-file-PSHJB3HX.js → hosted-file-S7YUQAH6.js} +2 -2
  150. package/dist/{impersonate-command-QEJA72Q2.js → impersonate-command-WC7OGKUM.js} +44 -43
  151. package/dist/{import-TBTOTU52.js → import-7Z4GCCPO.js} +6 -6
  152. package/dist/index.d.ts +14 -20
  153. package/dist/index.js +14 -14
  154. package/dist/init-command-HAO3WXH3.js +128 -0
  155. package/dist/{init-modules-HZRQFRLE.js → init-modules-NSKD4ASY.js} +12 -11
  156. package/dist/{init-web-Y2PBNJTQ.js → init-web-MKFFOQUU.js} +3 -3
  157. package/dist/internal.d.ts +5 -5
  158. package/dist/internal.js +61 -35
  159. package/dist/{io-ZUKAGFVE.js → io-PGTCBSIQ.js} +7 -5
  160. package/dist/{keep-data-merge-X5LDDCI3.js → keep-data-merge-QR2TMKEO.js} +33 -34
  161. package/dist/{lambda-config-reconcile-OUZ4OYAB.js → lambda-config-reconcile-7FJXXV6V.js} +4 -4
  162. package/dist/{landed-6VO7CX5P.js → landed-F7PCHGCK.js} +4 -4
  163. package/dist/{landing-record-QYECWLQ5.js → landing-record-MWXFIRCP.js} +26 -25
  164. package/dist/{live-diff-2S7E3SBZ.js → live-diff-5E2BQWQ7.js} +10 -9
  165. package/dist/local-engine-choice-VD5LNXJU.js +80 -0
  166. package/dist/{local-engine-command-HMTQK7MN.js → local-engine-command-RYLGMQ2O.js} +96 -95
  167. package/dist/{local-engine-config-5U3SC434.js → local-engine-config-W3KB7RWM.js} +2 -2
  168. package/dist/{local-engine-deploy-TXAOYRGF.js → local-engine-deploy-6O7NKZCA.js} +17 -17
  169. package/dist/{local-engine-process-6VZ7JJBP.js → local-engine-process-ZLLZEIRF.js} +12 -12
  170. package/dist/{local-engine-state-TJWPWCC4.js → local-engine-state-OCW5YDD7.js} +3 -3
  171. package/dist/{local-engine-update-check-R5SPDVEJ.js → local-engine-update-check-LVX4HBBI.js} +8 -8
  172. package/dist/{lock-TS465GVY.js → lock-HDCHD2ON.js} +5 -3
  173. package/dist/{lock-commands-4VT3L5W5.js → lock-commands-X2OECR4R.js} +62 -61
  174. package/dist/{login-command-O6WA4FYL.js → login-command-RLLKD565.js} +31 -30
  175. package/dist/{logout-command-6CPWGFY2.js → logout-command-XDMSXCDO.js} +17 -17
  176. package/dist/{loop-UFHKSOQ4.js → loop-SUB6C2LK.js} +9 -10
  177. package/dist/{marketplace-command-HKACSYKS.js → marketplace-command-2NHHY2X3.js} +89 -53
  178. package/dist/{marketplace-resolve-KLFYVRWS.js → marketplace-resolve-OTZYT4FG.js} +9 -8
  179. package/dist/{meta-client-73PX6UGJ.js → meta-client-TMHVBZFY.js} +15 -15
  180. package/dist/{module-manifest-GIKFNXPE.js → module-manifest-FNMW23IX.js} +7 -4
  181. package/dist/node.d.ts +5 -5
  182. package/dist/node.js +63 -63
  183. package/dist/operation-outcome-RN62735X.js +51 -0
  184. package/dist/{output-target-SZMBNYF4.js → output-target-MOLCTPBP.js} +21 -20
  185. package/dist/{package-manager-PRAHUSCN.js → package-manager-K762W7XT.js} +2 -2
  186. package/dist/{plan-disclosure-BHYG7TZ7.js → plan-disclosure-CY7AF6KP.js} +21 -22
  187. package/dist/{plugin-contributions-X4V22PJQ.js → plugin-contributions-WR26U7NT.js} +6 -6
  188. package/dist/{plugin-prompt-DKNQHW6Y.js → plugin-prompt-ZUYQQIX4.js} +5 -5
  189. package/dist/{plugin-questions-CQRVOWFK.js → plugin-questions-HAZOQ67R.js} +4 -4
  190. package/dist/plugin.d.ts +254 -10
  191. package/dist/{preflight-command-EBQ6XQF3.js → preflight-command-OHJXYND3.js} +70 -70
  192. package/dist/{profile-command-NPKBJYPM.js → profile-command-6JWT2BTL.js} +33 -32
  193. package/dist/{profile-pointer-UOO7JNFG.js → profile-pointer-PDA5XBIB.js} +5 -5
  194. package/dist/{profile-select-74TRDEPD.js → profile-select-45G5VPJK.js} +2 -2
  195. package/dist/{project-dependency-RRMTWOPC.js → project-dependency-GZWWGWEW.js} +13 -10
  196. package/dist/{project-sdk-FOR4IOXL.js → project-sdk-3W72H5QO.js} +4 -4
  197. package/dist/promote-command-UYAMUXKB.js +146 -0
  198. package/dist/{prompt-5GUQTCSP.js → prompt-U37K5RPQ.js} +4 -4
  199. package/dist/{publish-command-LGLZBOCB.js → publish-command-BUS27HGB.js} +138 -66
  200. package/dist/pull-command-ZGUNP27P.js +168 -0
  201. package/dist/{pull-superseded-GGURV5J3.js → pull-superseded-EZBGYRZF.js} +4 -4
  202. package/dist/{raw-where-EoWl5fqY.d.ts → raw-where-ZMLND6AG.d.ts} +20 -3
  203. package/dist/release-command-BQ6OHS3P.js +150 -0
  204. package/dist/{release-ns-command-EIBN3JVM.js → release-ns-command-ATGVBVIU.js} +94 -94
  205. package/dist/{retry-command-Y5YJGOH3.js → retry-command-QJ57WVW7.js} +9 -9
  206. package/dist/{routes-manifest-3BNZIVST.js → routes-manifest-YR4ZIMLM.js} +16 -8
  207. package/dist/routes-manifest-file-UALYSZLY.js +41 -0
  208. package/dist/scaffold.js +3 -3
  209. package/dist/{secrets-file-FUG7WCES.js → secrets-file-LMS7KX3E.js} +20 -19
  210. package/dist/{secrets-fill-command-QEOCUOAY.js → secrets-fill-command-QNBDGCGM.js} +61 -60
  211. package/dist/{seed-GJHJSEUE.js → seed-SZ6OS5DQ.js} +9 -9
  212. package/dist/{source-resolve-DMDZVPMM.js → source-resolve-MKLNYFWG.js} +24 -24
  213. package/dist/{static-host-WM24RG25.js → static-host-ONEHA4LI.js} +10 -10
  214. package/dist/{status-command-XUH5OGQX.js → status-command-XKIFKBGM.js} +57 -56
  215. package/dist/{store-CfgPaVPO.d.ts → store-Bg4Na6Sm.d.ts} +4 -4
  216. package/dist/{store-MR7IKXKK.js → store-X6ZH7EC3.js} +7 -7
  217. package/dist/sveltekit.d.ts +5 -5
  218. package/dist/sveltekit.js +1 -1
  219. package/dist/sync-baseline-DOV5AGIO.js +36 -0
  220. package/dist/{sync-contributions-DHP7XSTX.js → sync-contributions-HNVHDIQW.js} +21 -13
  221. package/dist/sync-record-PRXHLK4S.js +42 -0
  222. package/dist/{table-ZBDPKMNH.js → table-DC36QA4Y.js} +10 -10
  223. package/dist/{tables-command-X3JK7VSK.js → tables-command-UQLKTELN.js} +44 -43
  224. package/dist/{tenant-GKXMOYLK.js → tenant-EKNQGG5A.js} +11 -11
  225. package/dist/{tenant-command-P27EQHBU.js → tenant-command-2LWP2MPB.js} +105 -100
  226. package/dist/{test-command-A4G2FP7G.js → test-command-IU5MBBXY.js} +44 -43
  227. package/dist/{tests-C55M5EQS.js → tests-RG2Y5EQ4.js} +7 -7
  228. package/dist/{token-CMAB35GD.js → token-7AWSJLKO.js} +13 -13
  229. package/dist/toolchain-hooks-4ZMQLBPQ.js +46 -0
  230. package/dist/{toolchain-modules-3M7QDJBV.js → toolchain-modules-VU7SURVJ.js} +9 -6
  231. package/dist/toolchain-peers-CIDNEEQV.js +28 -0
  232. package/dist/tracked-backend-4BHSV7NC.js +81 -0
  233. package/dist/{update-check-LNNKIMML.js → update-check-A7FXIINW.js} +60 -59
  234. package/dist/{upgrade-command-7EUXML3P.js → upgrade-command-C5KBITFI.js} +64 -63
  235. package/dist/{whoami-command-KNWFWAX6.js → whoami-command-7WQII2H4.js} +16 -16
  236. package/dist/{workspace-TGPYOODG.js → workspace-Z46PUZNI.js} +6 -6
  237. package/dist/{workspace-binding-2TWZBHQY.js → workspace-binding-JE6YNDZJ.js} +15 -15
  238. package/dist/{workspace-command-T7Z2BDHD.js → workspace-command-FC4IMLAE.js} +119 -88
  239. package/dist/{workspace-env-VA7XN3UX.js → workspace-env-N4ZPFT6A.js} +17 -16
  240. package/dist/{workspace-export-AIGM6LC7.js → workspace-export-3A5BZTPS.js} +6 -6
  241. package/dist/{writable-FYJBTJOU.js → writable-D7KCZI5N.js} +4 -4
  242. package/dist/{xano-BSHYVFSE.js → xano-LCI7VWPS.js} +9 -9
  243. package/dist/{xanosdk-import-J6SRBZHW.js → xanosdk-import-P2A2KSXM.js} +10 -10
  244. package/dist/xanosdk-project-6AGMW2SL.js +42 -0
  245. package/guides/README.md +1 -0
  246. package/guides/authoring.md +3 -5
  247. package/guides/bundle.md +45 -0
  248. package/guides/cli.md +36 -34
  249. package/guides/codegen.md +5 -4
  250. package/guides/codes.md +16 -11
  251. package/guides/deploying.md +115 -58
  252. package/guides/environment.md +13 -13
  253. package/guides/marketplace.md +21 -0
  254. package/guides/module-contract.md +80 -4
  255. package/guides/project-structure.md +14 -0
  256. package/guides/typed-frontend.md +37 -0
  257. package/llms/client.md +14 -5
  258. package/llms/errors.md +1 -1
  259. package/llms/filters.md +4 -0
  260. package/llms/kinds-core.md +1 -1
  261. package/llms/statements-data.md +3 -2
  262. package/llms/tests.md +2 -2
  263. package/llms/toolchain.md +12 -0
  264. package/llms-full.txt +47 -21
  265. package/llms.txt +10 -10
  266. package/manifest.json +110 -107
  267. package/package.json +4 -4
  268. package/dist/agent-file-refresh-LB6KIMFY.js +0 -38
  269. package/dist/chunk-XXZZGXW2.js +0 -243
  270. package/dist/deploy-source-5CET3A5D.js +0 -81
  271. package/dist/env-example-refresh-ZO6XAV44.js +0 -127
  272. package/dist/init-command-27SFBW2F.js +0 -126
  273. package/dist/local-engine-choice-6BSPEG3E.js +0 -79
  274. package/dist/operation-outcome-2P4BVSEV.js +0 -51
  275. package/dist/promote-command-4F2NAE6P.js +0 -141
  276. package/dist/pull-command-WQFPLITW.js +0 -162
  277. package/dist/release-command-2OTNVMIL.js +0 -147
  278. package/dist/toolchain-hooks-BGZBDFAT.js +0 -96
  279. package/dist/tracked-backend-PZGUWD5J.js +0 -80
  280. package/dist/xanosdk-project-6KTCO47O.js +0 -41
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  retryCommand,
3
3
  withheldNote
4
- } from "./chunk-FMOEVAGT.js";
4
+ } from "./chunk-6X3MY2JP.js";
5
5
  import {
6
6
  contextFlags
7
- } from "./chunk-SEUCZZCP.js";
7
+ } from "./chunk-N5I37JFB.js";
8
8
  import {
9
9
  READ_AFTERMATH,
10
10
  SENT_AFTERMATH,
11
11
  closeSentence
12
- } from "./chunk-MN2PB6WB.js";
12
+ } from "./chunk-YR2I5HGE.js";
13
13
  import {
14
14
  UsageError,
15
15
  detail,
16
16
  pastePath,
17
17
  warn
18
- } from "./chunk-SBR2WZXG.js";
18
+ } from "./chunk-D7BUMOKU.js";
19
19
  import {
20
20
  shellQuote
21
21
  } from "./chunk-5ZSO4T2G.js";
22
22
 
23
23
  // src/emit/static-teardown.ts
24
24
  async function readStaticTeardown(auth, target, recorded) {
25
- const { listServingStaticHosts } = await import("./static-host-WM24RG25.js");
25
+ const { listServingStaticHosts } = await import("./static-host-ONEHA4LI.js");
26
26
  try {
27
27
  const serving = await listServingStaticHosts({ ...target, accessToken: auth.access_token });
28
28
  const urls = serving.map((s) => s.url);
@@ -130,7 +130,7 @@ function survivingRemedy(args, command) {
130
130
  async function assertStaticHostExists(args, auth, target) {
131
131
  const host = namedStaticHost(args);
132
132
  if (host === void 0) return;
133
- const { listStaticHostNames, StaticHostNotFoundError } = await import("./static-host-WM24RG25.js");
133
+ const { listStaticHostNames, StaticHostNotFoundError } = await import("./static-host-ONEHA4LI.js");
134
134
  let names;
135
135
  try {
136
136
  names = await listStaticHostNames({ ...target, accessToken: auth.access_token });
@@ -215,4 +215,4 @@ export {
215
215
  EXIT_STATIC_FAILED,
216
216
  unknownStaticOutcome
217
217
  };
218
- //# sourceMappingURL=chunk-KTGRGWZW.js.map
218
+ //# sourceMappingURL=chunk-EADVVTDK.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  ensureExportGitignored
3
- } from "./chunk-Y2ZLKBM6.js";
3
+ } from "./chunk-UD2Z7K6W.js";
4
4
  import {
5
5
  andList
6
6
  } from "./chunk-622HUCZT.js";
7
7
  import {
8
8
  UsageError,
9
9
  warn
10
- } from "./chunk-SBR2WZXG.js";
10
+ } from "./chunk-D7BUMOKU.js";
11
11
 
12
12
  // src/emit/output-target.ts
13
13
  import { accessSync, chmodSync, constants, mkdirSync, statSync, writeFileSync } from "fs";
@@ -125,4 +125,4 @@ export {
125
125
  secretsPhrase,
126
126
  assertWritableTarget
127
127
  };
128
- //# sourceMappingURL=chunk-FJWZ5OVV.js.map
128
+ //# sourceMappingURL=chunk-ENMBEXOP.js.map
@@ -2,12 +2,14 @@ import {
2
2
  decodeMarkerWith,
3
3
  iconLibraryOf,
4
4
  reactPreset
5
- } from "./chunk-UCQ2VUTG.js";
5
+ } from "./chunk-M6ZFSTIZ.js";
6
6
  import {
7
+ blockVersion,
7
8
  composeBlock,
8
9
  gitattributesSpec,
10
+ htmlDialect,
9
11
  upsertBlock
10
- } from "./chunk-DGWHAVRG.js";
12
+ } from "./chunk-3EDSPMXN.js";
11
13
  import {
12
14
  colorTokens,
13
15
  defaultThemeChoice,
@@ -56,32 +58,36 @@ function renderPackageJson({ appName, sdkVersion }, preset, choice = defaultThem
56
58
  // Scaffolds written before the default flipped still pass `--lock`, and
57
59
  // it stays accepted for exactly that reason.
58
60
  "xano:export": `npm run xano:routes && ${check} && xanosdk export ./xano/index.ts --out workspace.json`,
59
- // Runs `build` rather than `check` directly: `--static ./frontend/dist`
60
- // needs that directory to EXIST, and only `vite build` writes it. Pointing
61
- // the flag at a directory the script never produced meant a fresh clone
62
- // running the one documented command had no `dist` to ship.
63
- // `build` already prefixes the same typecheck, so this is one check, not
64
- // two.
65
- "xano:deploy": `npm run build && xanosdk deploy ./xano/index.ts --static ./frontend/dist`,
66
- // The tight loop: redeploy the backend to an engine on this machine.
61
+ // The default deploy, and the tight loop: redeploy the backend to the
62
+ // Xano Engine on this machine. It needs no Xano account, so a fresh
63
+ // scaffold runs it before anyone signs in.
67
64
  //
68
65
  // No `--static` and no `npm run build`, and both omissions are the point
69
66
  // rather than an economy: there is no frontend to ship here. The dev
70
67
  // server is still serving it, and the deploy points that server at the
71
68
  // engine on its way past, so the loop is backend-only by design.
72
- // (`--static` does work on a local engine, for a built frontend the
69
+ // (`--static` does work on a Xano Engine, for a built frontend the
73
70
  // engine itself should serve; this loop has none.)
74
71
  //
75
- // The flag is bare deliberately. The engine's download URL is passed by
76
- // hand once and cached for every run after; baking one into a scaffolded
77
- // project would ship a coordinate that is not this project's to carry.
72
+ // No `--local`: the Xano Engine is where a bare deploy goes, and the
73
+ // project's pinned version is what it runs. Baking an engine version or
74
+ // URL into a scaffolded project would ship a coordinate that is not this
75
+ // project's to carry.
78
76
  //
79
77
  // `--keep-data`, because the engine is the developer's own backend and
80
78
  // this loop runs once per code change: each run merges into what the last
81
79
  // one left, so rows entered through the app survive the edit. The first
82
80
  // run, and the first after the engine restarts, replaces and seeds.
83
81
  // `--reset` on the command line still gives a clean slate.
84
- "xano:deploy:local-engine": `npm run xano:routes && ${check} && xanosdk deploy ./xano/index.ts --local-engine --keep-data`,
82
+ "xano:deploy": `npm run xano:routes && ${check} && xanosdk deploy ./xano/index.ts --keep-data`,
83
+ // The cloud deploy: backend and built frontend to an ephemeral.
84
+ // Runs `build` rather than `check` directly: `--static ./frontend/dist`
85
+ // needs that directory to EXIST, and only `vite build` writes it. Pointing
86
+ // the flag at a directory the script never produced meant a fresh clone
87
+ // running the documented command had no `dist` to ship.
88
+ // `build` already prefixes the same typecheck, so this is one check, not
89
+ // two.
90
+ "xano:deploy:ephemeral": `npm run build && xanosdk deploy ./xano/index.ts --ephemeral --static ./frontend/dist`,
85
91
  // The frontend-only loop: rebuild and republish to the environment this
86
92
  // project last deployed to, without recompiling or re-importing the
87
93
  // backend. `build` runs first because publish ships only what is on disk.
@@ -190,9 +196,9 @@ function renderViteConfig(preset) {
190
196
  const header = root === null ? `// Vite's root is the project root. The framework resolves its own file
191
197
  // locations from the plugin config below \u2014 this file is the ONLY place that
192
198
  // config lives \u2014 and routes the build through its adapter, which writes
193
- // frontend/dist, the directory \`npm run xano:deploy\` ships as the frontend.` : `// Vite's root is the ${root}/ folder, so index.html and the app live there
199
+ // frontend/dist, the directory \`npm run xano:deploy:ephemeral\` ships as the frontend.` : `// Vite's root is the ${root}/ folder, so index.html and the app live there
194
200
  // while the Xano SDK backend sits in xano/ as a peer. The build lands in
195
- // ${root}/dist, which \`npm run xano:deploy\` ships as the static frontend.`;
201
+ // ${root}/dist, which \`npm run xano:deploy:ephemeral\` ships as the static frontend.`;
196
202
  const rootBlock = root === null ? "" : ` root: ${JSON.stringify(root)},
197
203
  // Vite resolves \`.env\` files against \`root\`, which is ${root}/ here \u2014 but
198
204
  // \`.env.example\` sits at the project root, so that is where anyone will
@@ -401,69 +407,119 @@ ${version === void 0 ? "" : ` with:
401
407
  }
402
408
  function renderEnvExample() {
403
409
  return `# Point the frontend at a deployed Xano backend. Leave unset to run the UI
404
- # with no backend. When you \`npm run xano:deploy\`, the backend URL is injected
405
- # as window.XANO_HOST at runtime instead \u2014 no rebuild needed.
410
+ # with no backend. \`npm run xano:deploy\` writes the Xano Engine's URL to
411
+ # .env.local for you. After \`npm run xano:deploy:ephemeral\`, the backend URL is
412
+ # injected as window.XANO_HOST at runtime instead \u2014 no rebuild needed.
406
413
  VITE_XANO_HOST=https://your-instance.xano.io
407
414
  `;
408
415
  }
409
- function renderReadme({ appName, install }, preset, choice = defaultThemeChoice()) {
416
+ var XANO_BADGE = "[![Built on Xano](https://img.shields.io/badge/built_on-Xano-0055FF)](https://xano.com)";
417
+ var README_PATH = "README.md";
418
+ var README_BUILT_WITH_BLOCK = {
419
+ dialect: htmlDialect("xanosdk-built-with"),
420
+ pkg: "xanosdk-built-with",
421
+ file: README_PATH
422
+ };
423
+ var README_BUILT_WITH_BODY = `## Built with
424
+
425
+ - [Xano](https://xano.com) hosts everything under [\`xano/\`](xano/): the database, APIs,
426
+ auth, background tasks, realtime, file storage and AI agents. It runs on your machine as
427
+ the Xano Engine and in the cloud from the same command. [Docs](https://docs.xano.com) \xB7
428
+ [Community](https://community.xano.com)
429
+ - [Xano SDK](https://github.com/xano-sdk/sdk) is the TypeScript the backend is authored in.
430
+ The [guides](https://github.com/xano-sdk/sdk/blob/main/guides/README.md) cover signing in
431
+ and deploying, releasing to production, the typed frontend, and every CLI command.`;
432
+ function renderReadmeBuiltWith(sdkVersion) {
433
+ return composeBlock(README_BUILT_WITH_BLOCK, [README_BUILT_WITH_BODY], sdkVersion);
434
+ }
435
+ function readmeBuiltWithVersion(text) {
436
+ return blockVersion(text, README_BUILT_WITH_BLOCK);
437
+ }
438
+ function refreshReadmeBuiltWith(existing, sdkVersion) {
439
+ return upsertBlock(existing, README_BUILT_WITH_BLOCK, renderReadmeBuiltWith(sdkVersion)).text;
440
+ }
441
+ function renderReadmeDescriptionSlot(appName) {
442
+ return `_Describe ${appName} here: what it does and who it is for._`;
443
+ }
444
+ function renderReadme({ appName, install, sdkVersion }, preset, choice = defaultThemeChoice()) {
410
445
  return `# ${appName}
411
446
 
412
- A [Xano SDK](https://www.npmjs.com/package/@xano/sdk) project: a Xano
413
- backend authored in TypeScript under [\`xano/\`](xano/), and a ${preset.label}
414
- frontend under [\`frontend/\`](frontend/) that derives its request paths and
415
- types from the backend defs \u2014 so the two can't drift.
447
+ ${XANO_BADGE}
448
+
449
+ ${renderReadmeDescriptionSlot(appName)}
450
+
451
+ The backend under [\`xano/\`](xano/) is TypeScript, authored with the
452
+ [Xano SDK](https://github.com/xano-sdk/sdk) and running on [Xano](https://xano.com). It runs
453
+ on your machine as the **Xano Engine** and ships to Xano's cloud with the same command. The
454
+ ${preset.label} frontend under [\`frontend/\`](frontend/) takes its request paths and types
455
+ from the backend defs rather than hand-typing them.
416
456
 
417
457
  ## Quick start
418
458
 
419
459
  \`\`\`bash
420
460
  ${install?.manager ?? "npm"} install${install?.ignoreWorkspace === true ? " --ignore-workspace" : ""}
421
- npm run dev # run the frontend (no backend needed yet)
461
+ npm run xano:deploy # run the backend on the Xano Engine, on this machine
462
+ npm run dev # run the frontend, already pointed at it
422
463
  \`\`\`
423
464
 
424
- Then author your backend in [\`xano/index.ts\`](xano/index.ts) \u2014 start with the
425
- walkthrough in [\`xano/EXAMPLE.md\`](xano/EXAMPLE.md).
426
-
427
- ## Deploy
465
+ No Xano account needed. Then author your backend in [\`xano/index.ts\`](xano/index.ts),
466
+ starting with the walkthrough in [\`xano/EXAMPLE.md\`](xano/EXAMPLE.md), and rerun
467
+ \`npm run xano:deploy\` after each change.
468
+
469
+ ## Run it on your machine
470
+
471
+ The Xano Engine is Xano running on your machine. \`npm run xano:deploy\` typechecks the
472
+ backend and deploys it to the engine: no sign-in, and no network round-trip.
473
+ It prints the backend URL, a link that opens Xano's visual builder on the engine, and
474
+ points \`npm run dev\` at it through \`.env.local\` (restart the dev server if it was already
475
+ running).
476
+
477
+ - **It works on a fresh machine with nothing set.** The first run downloads the latest
478
+ engine once per machine and pins its version in \`package.json\`. Commit that change, so
479
+ everyone on the project runs the same engine.
480
+ - **It keeps your table rows across redeploys** (\`--keep-data\`). The first run seeds and
481
+ later runs merge your changes in without re-seeding. Rows survive only in tables and columns that keep
482
+ their names (a rename drops the old one with its rows), and only while the engine runs. An
483
+ engine update or restart starts it empty and the next run seeds again.
484
+ \`npm run xano:deploy -- --reset\` gives a clean, re-seeded slate.
485
+ - **Updates are yours to take.** When a newer engine ships, a deploy offers it and never
486
+ applies it without a yes. \`npx xanosdk local update\` moves the pin on purpose,
487
+ and \`npx xanosdk local cache clear\` reclaims the disk space. To try another engine
488
+ without moving the pin, export \`XANOSDK_ENGINE_OVERRIDE\` with a version (\`v0.1.5\`)
489
+ or an engine archive path.
490
+ - **The rest of the CLI follows.** After a local deploy, \`npm run xano:test\`,
491
+ \`npx xanosdk tables\` and \`npx xanosdk status\` reach the engine with no flag.
492
+ \`npx xanosdk local stop <name>\` shuts it down.
493
+
494
+ ## Deploy to Xano's cloud
428
495
 
429
496
  \`\`\`bash
430
- npx xanosdk login # once, to authenticate against your Xano account
431
- npm run xano:deploy # build the frontend, then ship it with the backend
497
+ npx xanosdk login # once, to authenticate against your Xano account
498
+ npm run xano:deploy:ephemeral # build the frontend, then ship it with the backend
432
499
  \`\`\`
433
500
 
434
- - \`npm run xano:deploy:local-engine\` redeploys just the backend to a local engine,
435
- for a tight loop with no network round-trip. Keep \`npm run dev\` running \u2014 the
436
- deploy points it at the engine. It works on a fresh machine with nothing set: the
437
- first run downloads the latest engine once per machine and pins its version in
438
- \`package.json\` (commit that change, so everyone on the project runs the same
439
- engine). When a newer engine ships, a deploy offers it and never applies it without
440
- a yes; \`npx xanosdk local-engine update\` moves the pin on purpose, and
441
- \`npx xanosdk local-engine cache clear\` reclaims the disk space. To try another engine
442
- without moving the pin, export \`XANOSDK_LOCAL_ENGINE_OVERRIDE\` with a version
443
- (\`v0.1.5\`) or an engine archive path. It keeps the engine's
444
- table rows across redeploys (\`--keep-data\`): the first run seeds, later runs merge
445
- your changes in without re-seeding. Rows survive only in tables and columns that
446
- keep their names \u2014 a rename drops the old one with its rows \u2014 and only while the
447
- engine runs; an engine update or restart starts it empty and the next run seeds
448
- again. \`npm run xano:deploy:local-engine -- --reset\` gives a clean, re-seeded slate.
501
+ That deploys the backend and the built frontend to a live **ephemeral** environment on
502
+ Xano and prints its URL. Run it again to refresh the same environment; if it expired, a
503
+ fresh one is created and the new URL is called out. \`npx xanosdk status\` says who you
504
+ are signed in as, which workspace you are bound to, and which environment this project
505
+ last deployed to \u2014 its URL, and when it expires \u2014 so you never have to remember the
506
+ environment's name. Your **workspace** is reached through a release (\`deploy --ephemeral --test\`,
507
+ \`release create\`, \`promote\`); see the
508
+ [deploying guide](https://github.com/xano-sdk/sdk/blob/main/guides/deploying.md).
509
+
510
+ The other scripts:
511
+
449
512
  - \`npm run xano:deploy:frontend\` rebuilds the frontend and republishes it to the
450
513
  environment this project last deployed to \u2014 no backend compile or import, so it
451
- is the quick loop for UI-only changes. \`publish\` does not reach a local engine, so after
452
- a local-engine deploy run it as \`npm run xano:deploy:frontend -- --to ephemeral\`, or
453
- have the engine serve a build with \`--static ./frontend/dist\` on the local deploy.
454
- \`npx xanosdk publish ./frontend/dist --to workspace\` puts the same build in front of
455
- your real workspace instead.
456
- - \`npm run xano:export\` compiles the backend to \`workspace.json\` (don't commit it).
457
- - \`npm run xano:deploy\` deploys the backend and the built frontend to a live
458
- **ephemeral** environment and prints its URL. Run it again to refresh the same
459
- environment; if it expired, a fresh one is created and the new URL is called out.
460
- - \`npx xanosdk status\` says who you are signed in as, which workspace you are bound to, and
461
- which environment this project last deployed to \u2014 its URL, and when it expires. You
462
- never have to remember the environment's name.
514
+ is the quick loop for UI-only changes. After \`npm run xano:deploy\` the engine serves
515
+ it; \`npm run xano:deploy:frontend -- --to ephemeral\` sends it to an ephemeral instead,
516
+ and \`npx xanosdk publish ./frontend/dist --to workspace\` puts the same build in front
517
+ of your real workspace.
463
518
  - \`npm run xano:test\` runs the tests the DEPLOYED environment carries \u2014 the \`tests\`
464
519
  on a query/function/middleware and any \`workflowTest()\`. It compiles nothing, so
465
520
  deploy first. A failing suite exits 5, distinct from a crash. \`npx xanosdk deploy
466
521
  ./xano/index.ts --test\` does both in one step.
522
+ - \`npm run xano:export\` compiles the backend to \`workspace.json\` (don't commit it).
467
523
 
468
524
  ## \`xano.lock\` \u2014 commit it
469
525
 
@@ -495,8 +551,9 @@ export again. Every \`lock\` subcommand finds \`xano/xano.lock\` from the projec
495
551
  ## The one contract
496
552
 
497
553
  [\`frontend/src/lib/api.ts\`](frontend/src/lib/api.ts) takes request paths from
498
- \`xano/routes.gen.ts\` (\`routePath("GET notes/{id}", { id })\`) and request/response
499
- types from the query defs (\`import type\` + \`InferInput\` / \`InferResponse\`).
554
+ \`xano/routes.gen.ts\` (\`routePath("GET notes/{id}", { id })\`), request types from the
555
+ same file (\`RouteInputs["POST create_note"]\`, \`MessageInputs[...]\` for realtime), and
556
+ response types from the query defs (\`import type\` + \`InferResponse\`).
500
557
  Never hand-type a URL or a request body \u2014 change a def and the frontend follows.
501
558
 
502
559
  \`npm run xano:routes\` writes \`xano/routes.gen.ts\` from the defs; \`dev\`, \`build\`
@@ -537,6 +594,8 @@ Xano SDK is composable with other \`@xano-sdk/*\` packages:
537
594
 
538
595
  None of these ship with the scaffold. Install one only when you need it \u2014 an
539
596
  add-on you never register is weight in \`package.json\` for nothing.
597
+
598
+ ${renderReadmeBuiltWith(sdkVersion)}
540
599
  `;
541
600
  }
542
601
  function renderXanoIndex({ appName }) {
@@ -659,7 +718,7 @@ xano/
659
718
  \`workflowTest({ name, stack })\` when the behavior spans several objects.
660
719
  They live beside the code they cover and ship with it. See "Testing" below.
661
720
  6. **Compile** with \`npm run xano:export\`, and **deploy** with
662
- \`npm run xano:deploy\` (after \`npx xanosdk login\`). The first of either writes
721
+ \`npm run xano:deploy\` (it runs on the Xano Engine; no account needed). The first of either writes
663
722
  \`xano/xano.lock\` \u2014 **commit it**. It pins every object's identity, so a later
664
723
  rename renames the object instead of deleting and recreating it. See
665
724
  "\`xano.lock\` \u2014 commit it" in the project README.
@@ -707,8 +766,11 @@ URL or a request body:
707
766
  groups share is keyed \`"<group>:<VERB> <name>"\`). Run
708
767
  \`npm run xano:routes\` after adding or renaming an endpoint (\`dev\`, \`build\` and
709
768
  \`typecheck\` also run it) and commit the file.
710
- - **Shapes** come from the defs with \`import type\` \u2014 \`InferInput\`/\`InferResponse\`
711
- erase to nothing.
769
+ - **Request types** come from the same file: \`RouteInputs["POST create_note"]\`
770
+ (\`ChannelInputs\`/\`MessageInputs\` for realtime). For runtime validation,
771
+ \`npx xanosdk marketplace install zod\` adds zod schemas under the same keys.
772
+ - **Response types** come from the defs with \`import type\` \u2014 \`InferResponse\`
773
+ erases to nothing.
712
774
  - Never import a def as a value in the frontend. Its \`s.*\`/\`c.*\` stack calls run
713
775
  at module load, so one import for its \`getPath()\` pulls the backend graph it
714
776
  references and the SDK runtime into the bundle.
@@ -720,8 +782,8 @@ function describeOrigin(o) {
720
782
  return `workspace ${o.origin}`;
721
783
  case "ephemeral":
722
784
  return `ephemeral "${o.origin}"`;
723
- case "local-engine":
724
- return `local engine "${o.origin}"`;
785
+ case "local":
786
+ return `Xano Engine "${o.origin}"`;
725
787
  case "tenant":
726
788
  return `tenant "${o.origin}"`;
727
789
  case "release":
@@ -749,7 +811,7 @@ function renderCodegenMarker({ sdkVersion }, origin, generatedAt, report, files)
749
811
  };
750
812
  return JSON.stringify(files === void 0 ? head : decodeMarkerWith(head, files), null, 2) + "\n";
751
813
  }
752
- function renderCodegenReadme({ appName }, origin, envNames, preset) {
814
+ function renderCodegenReadme({ appName, sdkVersion }, origin, envNames, preset) {
753
815
  const secrets = envNames.length === 0 ? "" : `
754
816
  ## Fill in the backend env values
755
817
 
@@ -776,16 +838,23 @@ cleartext, which is why it is gitignored too.
776
838
  `;
777
839
  return `# ${appName}
778
840
 
779
- A [Xano SDK](https://www.npmjs.com/package/@xano/sdk) project pulled from
780
- ${describeCommittedOrigin(origin)}. The Xano backend lives in [\`xano/\`](xano/) as readable
781
- TypeScript; the ${preset.label} frontend under [\`frontend/\`](frontend/) is a starter \u2014
782
- the pull carries a backend, not a UI.
841
+ ${XANO_BADGE}
842
+
843
+ ${renderReadmeDescriptionSlot(appName)}
783
844
 
784
- ## Deploy it
845
+ The backend under [\`xano/\`](xano/) is TypeScript pulled from ${describeCommittedOrigin(origin)}
846
+ with the [Xano SDK](https://github.com/xano-sdk/sdk), and runs on [Xano](https://xano.com). The
847
+ ${preset.label} frontend under [\`frontend/\`](frontend/) is a starter \u2014 the pull carries a
848
+ backend, not a UI.
849
+
850
+ ## Run it
785
851
 
786
852
  \`\`\`bash
787
- npx xanosdk login # once, to authenticate against your Xano account
788
- npm run xano:deploy # typecheck, build the frontend, ship both
853
+ npm run xano:deploy # on the Xano Engine, on this machine (no account needed)
854
+ npm run dev # the starter frontend, pointed at it
855
+
856
+ npx xanosdk login # once, to authenticate against your Xano account
857
+ npm run xano:deploy:ephemeral # typecheck, build the frontend, ship both to an ephemeral
789
858
  \`\`\`
790
859
 
791
860
  ## Read this before deploying
@@ -793,10 +862,11 @@ npm run xano:deploy # typecheck, build the frontend, ship both
793
862
  - **\`xano/\` is your source now** \u2014 edit it and commit it. \`npx xanosdk pull\` (or re-running
794
863
  \`npx xanosdk init --from\`) refreshes it from a backend: it lists what will change and asks
795
864
  first, keeps files you added, and overwrites the files it decodes \u2014 commit first.
796
- - **\`npx xanosdk deploy\` is a full replace** of an **ephemeral** environment or a local engine
797
- (\`npm run xano:deploy\`), unless \`--keep-data\` merges into the one an earlier deploy
798
- filled. A real workspace is reached with \`npx xanosdk promote <release>\` or
799
- \`npx xanosdk deploy --to workspace\`, which merge and leave table rows alone.
865
+ - **\`npx xanosdk deploy\` is a full replace** of a Xano Engine or an **ephemeral** environment
866
+ (\`npm run xano:deploy:ephemeral\`), unless \`--keep-data\` merges into the one an earlier deploy
867
+ filled (\`npm run xano:deploy\` passes it). A real workspace is reached with
868
+ \`npx xanosdk promote <release>\` or \`npx xanosdk deploy --to workspace\`, which merge
869
+ and leave table rows alone.
800
870
  - **This is schema only.** Table rows are not carried, and neither are payload sections
801
871
  this SDK models no kind for. A deploy recreates the structure, not the data.
802
872
 
@@ -809,11 +879,13 @@ ${secrets}
809
879
  npm run dev # run the starter frontend
810
880
  npm run typecheck # the whole project, both halves
811
881
  npm run xano:export # compile the backend to workspace.json (don't commit it)
812
- npm run xano:routes # regenerate xano/routes.gen.ts, the frontend's paths
882
+ npm run xano:routes # regenerate xano/routes.gen.ts: the frontend's paths and request types
813
883
  \`\`\`
814
884
 
815
885
  [\`frontend/src/lib/api.ts\`](frontend/src/lib/api.ts) shows the one contract: paths
816
- from \`routePath()\` in \`xano/routes.gen.ts\`, types from the query defs in \`xano/\`.
886
+ and request types from \`xano/routes.gen.ts\`, response types from the query defs in \`xano/\`.
887
+
888
+ ${renderReadmeBuiltWith(sdkVersion)}
817
889
  `;
818
890
  }
819
891
  function renderReadmeThemingSection(choice) {
@@ -877,7 +949,7 @@ function initLanding({ appName }) {
877
949
  { text: ")." }
878
950
  ],
879
951
  [{ text: "Wire it into the UI from " }, { code: "frontend/src/lib/api.ts" }, { text: "." }],
880
- [{ text: "Ship it: " }, { code: "npm run xano:deploy" }, { text: "." }]
952
+ [{ text: "Run it on the Xano Engine: " }, { code: "npm run xano:deploy" }, { text: "." }]
881
953
  ],
882
954
  cta: UI_DOCS_CTA
883
955
  };
@@ -904,9 +976,9 @@ function codegenLanding({ appName }, origin) {
904
976
  { text: "." }
905
977
  ],
906
978
  [
907
- { text: "Ship it: " },
979
+ { text: "Run it on the Xano Engine: " },
908
980
  { code: "npm run xano:deploy" },
909
- { text: " (a full replace of an ephemeral env)." }
981
+ { text: " (a full replace of the Xano Engine)." }
910
982
  ]
911
983
  ],
912
984
  cta: UI_DOCS_CTA
@@ -1063,9 +1135,9 @@ export function cn(...inputs: ClassValue[]) {
1063
1135
  ${extra}`;
1064
1136
  }
1065
1137
  function renderApiTs() {
1066
- return `// The one contract: endpoint paths come from the generated route manifest, and
1067
- // request/response *types* from your xanosdk query defs. Never hand-type a URL
1068
- // or a request body: change a def and everything here follows.
1138
+ return `// The one contract: endpoint paths and request types come from the generated
1139
+ // route manifest, and response *types* from your xanosdk query defs. Never
1140
+ // hand-type a URL or a request body: change a def and everything here follows.
1069
1141
  //
1070
1142
  // Keep the backend out of the browser bundle:
1071
1143
  // \u2022 Paths and verbs: \`routePath()\` / \`ROUTES\` from xano/routes.gen.ts, plain data
@@ -1073,16 +1145,20 @@ function renderApiTs() {
1073
1145
  // regenerate it). Never import a def as a VALUE for its getPath()/verb:
1074
1146
  // its s.*/c.* factory calls run at module load, so one import pulls in the
1075
1147
  // backend graph it references and the SDK runtime that builds it.
1076
- // \u2022 Shapes: \`import type\` only. InferInput/InferResponse erase to nothing.
1148
+ // \u2022 Request types: \`RouteInputs["<VERB> <name>"]\` from the same file
1149
+ // (\`ChannelInputs\` / \`MessageInputs\` for realtime), types only. For
1150
+ // runtime validation, \`npx xanosdk marketplace install zod\` adds zod
1151
+ // schemas under the same keys.
1152
+ // \u2022 Response types: \`import type\` the def. InferResponse erases to nothing.
1077
1153
  //
1078
1154
  // Nothing here imports the manifest yet \u2014 an add-on's endpoints may already be
1079
1155
  // in it. Wire an endpoint (one in xano/, or an add-on's) like:
1080
1156
  //
1081
- // import type { InferInput, InferResponse } from "@xano/sdk";
1157
+ // import type { InferResponse } from "@xano/sdk";
1082
1158
  // import type { createNoteQuery } from "../../../xano/api/create-note.js";
1083
- // import { ROUTES, routePath } from "../../../xano/routes.gen.js";
1159
+ // import { ROUTES, routePath, type RouteInputs } from "../../../xano/routes.gen.js";
1084
1160
  //
1085
- // export type CreateNoteBody = InferInput<typeof createNoteQuery>;
1161
+ // export type CreateNoteBody = RouteInputs["POST create_note"];
1086
1162
  // export type Note = InferResponse<typeof createNoteQuery>;
1087
1163
  //
1088
1164
  // export async function createNote(body: CreateNoteBody): Promise<Note> {
@@ -1328,7 +1404,7 @@ export {};
1328
1404
  }
1329
1405
  function renderLayoutTs() {
1330
1406
  return `// There is no server. The backend is Xano, reached through $lib/api.ts,
1331
- // and \`npm run xano:deploy\` ships this app to a static host with no runtime.
1407
+ // and \`npm run xano:deploy:ephemeral\` ships this app to a static host with no runtime.
1332
1408
  //
1333
1409
  // prerender: true \u2014 every route is rendered to its own HTML file AT BUILD TIME
1334
1410
  // and served as a real document. That is what makes each page load as itself
@@ -1788,7 +1864,7 @@ becomes its own HTML document at build time, so a page loads as itself rather
1788
1864
  than as a shell that fills in afterwards, and an unmatched path returns a real
1789
1865
  404 from [\`+error.svelte\`](frontend/src/routes/+error.svelte).
1790
1866
 
1791
- > **There is no server.** \`npm run xano:deploy\` ships this app to a static host
1867
+ > **There is no server.** \`npm run xano:deploy:ephemeral\` ships this app to a static host
1792
1868
  > with no runtime of its own; Xano is the backend, reached through
1793
1869
  > [\`frontend/src/lib/api.ts\`](frontend/src/lib/api.ts). So \`+page.server.ts\`,
1794
1870
  > form actions, and server \`load\` have nothing to run on \u2014 and **nothing warns
@@ -1969,6 +2045,9 @@ export {
1969
2045
  checkWorkflowPath,
1970
2046
  renderCheckWorkflow,
1971
2047
  renderEnvExample,
2048
+ README_PATH,
2049
+ readmeBuiltWithVersion,
2050
+ refreshReadmeBuiltWith,
1972
2051
  renderReadme,
1973
2052
  renderXanoIndex,
1974
2053
  renderXanoExampleMd,
@@ -1987,4 +2066,4 @@ export {
1987
2066
  allFrontendPresets,
1988
2067
  resolveFrameworkFlag
1989
2068
  };
1990
- //# sourceMappingURL=chunk-OPHB5ORL.js.map
2069
+ //# sourceMappingURL=chunk-EQFYOOO6.js.map
@@ -25,11 +25,11 @@ import {
25
25
  isDeadResultItem,
26
26
  isEmptyCustomize,
27
27
  normalize
28
- } from "./chunk-3HOGFGKG.js";
28
+ } from "./chunk-D3KEPRRN.js";
29
29
  import {
30
30
  f,
31
31
  input
32
- } from "./chunk-37FBPMNE.js";
32
+ } from "./chunk-S56YBYMN.js";
33
33
  import {
34
34
  TAGS,
35
35
  auth,
@@ -59,7 +59,7 @@ import {
59
59
  defaultNullable,
60
60
  encodeField,
61
61
  parseMethod
62
- } from "./chunk-4DJTQ6W4.js";
62
+ } from "./chunk-JIKGT7DO.js";
63
63
 
64
64
  // src/codegen/report.ts
65
65
  var AUDIENCE_ORDER = [
@@ -505,11 +505,6 @@ var DecodeContext = class {
505
505
  * for `generate --out`. Only the caller knows the directory.
506
506
  */
507
507
  secretsFile = WORKSPACE_SECRETS_FILE;
508
- /**
509
- * Whether the caller writes that sidecar at all. `--no-secrets` does not, and
510
- * the report has to say so rather than promise a file and a restored gate.
511
- */
512
- writesSecrets = true;
513
508
  /** The barrel's `workspace("…")` name when the payload carries no workspace object. */
514
509
  fallbackWorkspaceName = "workspace";
515
510
  /** The import block of the file currently being generated. */
@@ -2026,4 +2021,4 @@ export {
2026
2021
  decodeTableSchema,
2027
2022
  decodeResponse
2028
2023
  };
2029
- //# sourceMappingURL=chunk-WOGJB2F6.js.map
2024
+ //# sourceMappingURL=chunk-FNLTFOUD.js.map
@@ -7,7 +7,7 @@ import {
7
7
  parsePathParams,
8
8
  queryKind,
9
9
  warnUnboundReturn
10
- } from "./chunk-5W7DOMIU.js";
10
+ } from "./chunk-VJFMUJWZ.js";
11
11
  import {
12
12
  workspaceKind
13
13
  } from "./chunk-6JAEMMZ7.js";
@@ -16,7 +16,7 @@ import {
16
16
  encodeMcpOauth,
17
17
  refuseUnknown,
18
18
  standaloneDefKind
19
- } from "./chunk-5YL5OC2G.js";
19
+ } from "./chunk-5QMJOE2K.js";
20
20
  import {
21
21
  resolveAuthRef
22
22
  } from "./chunk-45ZUMF4E.js";
@@ -68,7 +68,7 @@ import {
68
68
  registerSpec,
69
69
  resolveEnumValue,
70
70
  throwError
71
- } from "./chunk-OPG4DYX2.js";
71
+ } from "./chunk-T4LJ5UR2.js";
72
72
  import {
73
73
  assertCanonical,
74
74
  assertStoredName,
@@ -83,7 +83,7 @@ import {
83
83
  encodeExpression,
84
84
  encodeRuntimeCondition,
85
85
  tableKind
86
- } from "./chunk-4PQHO74B.js";
86
+ } from "./chunk-SLGJIWCY.js";
87
87
  import {
88
88
  brandDef
89
89
  } from "./chunk-ERVIASGL.js";
@@ -99,15 +99,15 @@ import {
99
99
  } from "./chunk-WTPZRR4I.js";
100
100
  import {
101
101
  emitDiagnostic
102
- } from "./chunk-GPI3OWRE.js";
102
+ } from "./chunk-YHB34BN6.js";
103
103
  import {
104
104
  lockKey
105
- } from "./chunk-OOGXZL7Z.js";
105
+ } from "./chunk-5KJBWIDZ.js";
106
106
  import {
107
107
  HOSTED_FILE_SCHEME,
108
108
  isHostedFile,
109
109
  pendingHostedSrc
110
- } from "./chunk-XNCP4KYO.js";
110
+ } from "./chunk-VQPDATQT.js";
111
111
  import {
112
112
  ANNOTATION_KEYS,
113
113
  OPTION_KEYS,
@@ -121,10 +121,10 @@ import {
121
121
  import {
122
122
  impliedInputs,
123
123
  isTriggerObjType
124
- } from "./chunk-7GX445AE.js";
124
+ } from "./chunk-4XHAT7C5.js";
125
125
  import {
126
126
  encodeInput
127
- } from "./chunk-37FBPMNE.js";
127
+ } from "./chunk-S56YBYMN.js";
128
128
  import {
129
129
  barePatternRefusal,
130
130
  c,
@@ -3058,4 +3058,4 @@ export {
3058
3058
  serializeBundle,
3059
3059
  emitBundle
3060
3060
  };
3061
- //# sourceMappingURL=chunk-II747OWE.js.map
3061
+ //# sourceMappingURL=chunk-FQ53GTII.js.map