@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
package/dist/internal.js CHANGED
@@ -8,7 +8,7 @@ import {
8
8
  CAPABILITIES,
9
9
  STATEMENT_CAPABILITIES,
10
10
  bundleCapabilities
11
- } from "./chunk-6R7S775T.js";
11
+ } from "./chunk-7REDHC4N.js";
12
12
  import {
13
13
  COMMANDS,
14
14
  FLAGS,
@@ -19,8 +19,8 @@ import {
19
19
  selectorValues,
20
20
  sourceSpellings,
21
21
  visibleFlags
22
- } from "./chunk-SBR2WZXG.js";
23
- import "./chunk-BUJRS7XB.js";
22
+ } from "./chunk-D7BUMOKU.js";
23
+ import "./chunk-AVS4WPPY.js";
24
24
  import {
25
25
  GENERATED_STATEMENT_NAMES,
26
26
  HEADER_DUPLICATES,
@@ -64,17 +64,17 @@ import {
64
64
  toolKind,
65
65
  triggerKind,
66
66
  workflowTestKind
67
- } from "./chunk-II747OWE.js";
67
+ } from "./chunk-FQ53GTII.js";
68
68
  import {
69
69
  encodeQuery,
70
70
  encodeResponse,
71
71
  queryKind
72
- } from "./chunk-5W7DOMIU.js";
72
+ } from "./chunk-VJFMUJWZ.js";
73
73
  import {
74
74
  encodeWorkspaceConfig,
75
75
  workspaceKind
76
76
  } from "./chunk-6JAEMMZ7.js";
77
- import "./chunk-5YL5OC2G.js";
77
+ import "./chunk-5QMJOE2K.js";
78
78
  import {
79
79
  resolveAuthRef
80
80
  } from "./chunk-45ZUMF4E.js";
@@ -84,7 +84,7 @@ import {
84
84
  buildBundle,
85
85
  calcSignatureJson,
86
86
  phpJsonEncode
87
- } from "./chunk-EESV6NU2.js";
87
+ } from "./chunk-7FIMUFBP.js";
88
88
  import {
89
89
  DECODE_ONLY_STATEMENTS,
90
90
  GENERATED_SPECS,
@@ -101,7 +101,7 @@ import {
101
101
  isQueryExpressionFilter,
102
102
  microserviceKind,
103
103
  registerSpec
104
- } from "./chunk-OPG4DYX2.js";
104
+ } from "./chunk-T4LJ5UR2.js";
105
105
  import "./chunk-ICK36EGF.js";
106
106
  import {
107
107
  FILTER_NAMES,
@@ -122,7 +122,7 @@ import {
122
122
  encodeTable,
123
123
  encodeView,
124
124
  tableKind
125
- } from "./chunk-4PQHO74B.js";
125
+ } from "./chunk-SLGJIWCY.js";
126
126
  import "./chunk-ERVIASGL.js";
127
127
  import {
128
128
  encodeObject,
@@ -134,7 +134,7 @@ import {
134
134
  import "./chunk-H2V3N23D.js";
135
135
  import "./chunk-3JDU4VRL.js";
136
136
  import "./chunk-WTPZRR4I.js";
137
- import "./chunk-GPI3OWRE.js";
137
+ import "./chunk-YHB34BN6.js";
138
138
  import "./chunk-UTI5G6OJ.js";
139
139
  import {
140
140
  LOCK_PAYLOAD_KEYS,
@@ -152,9 +152,9 @@ import {
152
152
  resolvePayloadKey,
153
153
  serializeLock,
154
154
  validateLockModel
155
- } from "./chunk-OOGXZL7Z.js";
155
+ } from "./chunk-5KJBWIDZ.js";
156
156
  import "./chunk-5ZSO4T2G.js";
157
- import "./chunk-XNCP4KYO.js";
157
+ import "./chunk-VQPDATQT.js";
158
158
  import "./chunk-UDZX2ZL4.js";
159
159
  import "./chunk-ZY55DO5P.js";
160
160
  import {
@@ -169,10 +169,10 @@ import {
169
169
  TOTAL_STATEMENTS,
170
170
  sPathOf
171
171
  } from "./chunk-Q7DGTQ5G.js";
172
- import "./chunk-7GX445AE.js";
172
+ import "./chunk-4XHAT7C5.js";
173
173
  import {
174
174
  toNestedFields
175
- } from "./chunk-37FBPMNE.js";
175
+ } from "./chunk-S56YBYMN.js";
176
176
  import {
177
177
  LAMBDA_BINDINGS,
178
178
  LAMBDA_GLOBALS,
@@ -190,7 +190,7 @@ import {
190
190
  getLockedGuid,
191
191
  isLockSeeded
192
192
  } from "./chunk-4BW2SG2N.js";
193
- import "./chunk-4DJTQ6W4.js";
193
+ import "./chunk-JIKGT7DO.js";
194
194
  import "./chunk-4MIV244X.js";
195
195
  import "./chunk-OHX6MIUZ.js";
196
196
  import "./chunk-36JUQZVQ.js";
@@ -880,11 +880,11 @@ function renderTestsSection() {
880
880
  "",
881
881
  "`xanosdk test run-all` runs the unit tests AND the `workflowTest()` objects an environment carries. It takes no entry file and compiles nothing: it runs what is DEPLOYED, so deploy before testing.",
882
882
  "",
883
- '- `--on <backend>` picks the backend \u2014 `--on ephemeral:<name>`, `--on local-engine`, `--on tenant:<name>`, `--on workspace`; omitted, the one this project last deployed to (grammar: **Backends** in `llms.txt`). \u26A0 `workspace` runs against the REAL database: safe only while every test keeps `datasource: ""`, since a stored non-empty datasource is CLONED before the run.',
883
+ '- `--on <backend>` picks the backend \u2014 `--on ephemeral:<name>`, `--on local`, `--on tenant:<name>`, `--on workspace`; omitted, the one this project last deployed to (grammar: **Backends** in `llms.txt`). \u26A0 `workspace` runs against the REAL database: safe only while every test keeps `datasource: ""`, since a stored non-empty datasource is CLONED before the run.',
884
884
  '- `xanosdk test list` shows what is there without running it; `test run "<name>"` runs one; an ambiguous name prints qualified forms (`function:math/happy path`, `workflow:<name>`) `run` accepts.',
885
885
  "- `--kind unit|workflow` narrows to one family. `--concurrency <n>` defaults to 1: tests share the environment database.",
886
886
  "- A failing suite exits 5; exit 6 when the suite could not be reached \u2014 retry it; a backend that can't be looked up exits 8 (see errors). Having no tests is success.",
887
- "- For CI: the exit code says THAT something failed, the JSON says WHICH. Progress goes to stderr; stdout carries one JSON document when not a terminal, or with `--json`. `run-all` and `run`: `{ kind, env, name, display, total, passed, failed, tests: [{ kind, name, qualified, object?, status: \"pass\"|\"fail\", message?, expectations?: [{ index, status, message? }], timing? }] }` (`message`: the first failure; `expectations`: a unit test's every expectation in order, `index` from 0; `env`: an ephemeral's or tenant's name; `name`: the backend's own, a local engine's too; null if none), same keys on an empty suite. `list` is `{ kind, env, name, display, total, tests }`; `deploy --test` nests the run under `testRun`.",
887
+ "- For CI: the exit code says THAT something failed, the JSON says WHICH. Progress goes to stderr; stdout carries one JSON document when not a terminal, or with `--json`. `run-all` and `run`: `{ kind, env, name, display, total, passed, failed, tests: [{ kind, name, qualified, object?, status: \"pass\"|\"fail\", message?, expectations?: [{ index, status, message? }], timing? }] }` (`message`: the first failure; `expectations`: a unit test's every expectation in order, `index` from 0; `env`: an ephemeral's or tenant's name; `name`: the backend's own, a Xano Engine's too; null if none), same keys on an empty suite. `list` is `{ kind, env, name, display, total, tests }`; `deploy --test` nests the run under `testRun`.",
888
888
  "- `xanosdk deploy ./index.ts --test` deploys and then runs the suite against what it just shipped. A failure exits 5 WITHOUT retracting the deploy \u2014 the environment is live either way.",
889
889
  ""
890
890
  ];
@@ -1025,19 +1025,19 @@ function renderSections(m) {
1025
1025
  "`export` (honoring `xano.lock`), imports the result, and prints the URL.",
1026
1026
  "\u26A0 Every deploy is a FULL REPLACE of its destination \u2014 objects AND records.",
1027
1027
  "",
1028
- "**Backends** \u2014 one grammar: `workspace` | `ephemeral[:<name>]` | `local-engine[:<name>]`",
1028
+ "**Backends** \u2014 one grammar: `workspace` | `ephemeral[:<name>]` | `local[:<name>]`",
1029
1029
  "(no credential) | `tenant:<name>` | `release:<name>` | a bundle path where a file fits. Reads",
1030
1030
  "`--from`, writes `--to`, `test --on`; positional on `deploy`/`pull`/`generate`/`tables`/",
1031
- "`impersonate`. Omitted = the ephemeral or local engine this project last deployed to, never",
1032
- "workspace/tenant; bare `deploy` compiles the project onto an ephemeral instead (`--local-engine`:",
1033
- "an engine on this machine), and `generate`/`init --from` need one. A refusal, typed or tracked,",
1034
- "names the reason and the spellings (`publish`, `release create` refuse a local engine).",
1031
+ "`impersonate`. Omitted = the ephemeral or Xano Engine this project last deployed to, never",
1032
+ "workspace/tenant; bare `deploy` compiles onto the Xano Engine instead (`--ephemeral`: an",
1033
+ "ephemeral), and `generate`/`init --from` need one. A refusal, typed or tracked,",
1034
+ "names the reason and the spellings (`release create` refuses a Xano Engine).",
1035
1035
  "`release create --from` records a run: no bundle path, no `release:`,",
1036
1036
  "and a `tenant:` only if throwaway (`standard`/`run` refused).",
1037
1037
  "",
1038
- "**Destinations** \u2014 ephemeral by default, real only when you say so:",
1038
+ "**Destinations** \u2014 the Xano Engine by default, real only when you say so:",
1039
1039
  "",
1040
- "- `xanosdk deploy [source]` \u2192 a NAMED, auto-expiring ephemeral (~1h; `--expires-hours`",
1040
+ "- `xanosdk deploy [source]` \u2192 the Xano Engine on this machine (no account). `--ephemeral` \u2192 a NAMED, auto-expiring ephemeral (~1h; `--expires-hours`",
1041
1041
  " 1\u201324), tracked in `./.xano/ephemeral.json`, so deploying again REFRESHES it at the same",
1042
1042
  " URL; if it expired or was swept, a fresh one is created and the new URL called out.",
1043
1043
  " \u26A0 Only the BACKEND URL survives a refresh \u2014 the replace clears static hosting, so",
@@ -1308,7 +1308,7 @@ function renderSections(m) {
1308
1308
  " checked only by the `xanosdk export`/`deploy` CLI path. Only `deploy` ships seed rows.",
1309
1309
  " - Entry points: the `node:fs` writers (`writeBundle`/`writeArtifact`) and lock-file I/O",
1310
1310
  " import from `@xano/sdk/node`, NOT the browser-safe `@xano/sdk` entry (a frontend",
1311
- " imports defs from it for `getPath()`/`InferInput`). `@xano/sdk/internal` is the",
1311
+ " imports from it; request types come from `routes.gen.ts`). `@xano/sdk/internal` is the",
1312
1312
  " compiler machinery, never needed to author. READING a bundle back is `@xano/sdk/bundle`",
1313
1313
  " \u2014 a statement walker (`2.if.0` paths), a structural hash, `mvp:*` catalog, `tableRefOf`.",
1314
1314
  "- **Intra-workspace imports use `.js` specifiers** (`../tables/links.js`), not",
@@ -1377,7 +1377,7 @@ function renderSections(m) {
1377
1377
  " - `getPath` percent-encodes each value (so `?`/`#`/spaces stay in their segment) and throws on what encoding cannot contain: a `/`, and a segment that becomes `.`/`..` as sent (a URL parser drops those before routing, addressing a different endpoint).",
1378
1378
  " - The keys are typed from the literal `name`, so a typo is a compile error.",
1379
1379
  " - `q.toSearchParams(input)` drops GET path params (free `query.toSearchParams` keeps them); lists send `k[]=a&k[]=b` (`k=a&k=b` binds only `b`).",
1380
- " - Browser bundle cost, the `routes.gen.ts` alternative, and spot-checking a def from Node: `llms/client.md`.",
1380
+ " - Browser bundle cost, the `routes.gen.ts` alternative (paths and request types), and spot-checking a def from Node: `llms/client.md`.",
1381
1381
  "- `apiGroup({ name, guid?, canonical?, description?, docs?, swagger?, apiGroupEnabled?, documentation?, cors?, middleware? })` \u2014 a query container; queries bind to it via their `apiGroup`. `canonical` holds only letters, digits, `_` and `-` (it is the `<canonical>` of `/api:<canonical>`); anything else THROWS at build.",
1382
1382
  " - `documentation?`: `{ require_token? }` \u2014 the gate on this group's hosted docs. `require_token: true` IS the declaration; the token lives in `xano/.secrets.json` under this group's guid, and a literal `token` FAILS the export. \u26A0 ALWAYS emitted, present or not: an absent key is written as the engine default on import, so omitting the block CLEARS an existing gate (the opposite of the `workspaceConfig` rule). `swagger: true` publishes the docs; `require_token` gates them only alongside a non-empty token, so `swagger: true` with no gate makes the whole group readable by anyone with the URL \u2014 export warns once per build and `--strict` fails; `diagnostics: { allow: [\"api-group.docs-public\"] }` accepts it. A declared gate with NO token drops the block, so those bytes clear it: export FAILS under `swagger: true`, and with `swagger` off warns and completes.",
1383
1383
  " - `cors?`: `{ mode?, allowOrigins?: string[], allowHeaders?: string[], allowCredentials?, maxAge?, allowMethods?: { get?, post?, put?, patch?, delete?, head? } }`.",
@@ -1482,7 +1482,19 @@ function renderSections(m) {
1482
1482
  "shipped defaults. `marketplace reinstall <pkg>` re-asks with the current settings as the",
1483
1483
  "defaults and re-enables a disabled one; `marketplace remove <pkg>` drops block, lines and",
1484
1484
  "dependency together \u2014 a plain `npm uninstall` leaves the block, and a package it names",
1485
- "that is no longer installed fails every `--frozen-lock` run."
1485
+ "that is no longer installed fails every `--frozen-lock` run.",
1486
+ "",
1487
+ "**A module's section of `xano/routes.gen.ts`.** A module with a `routesManifest` hook (types:",
1488
+ "`@xano/sdk/plugin`) writes a block between `// xanosdk:begin <pkg>` and `// xanosdk:end <pkg>`",
1489
+ "after the core sections, on every write of the file (`routes --emit`, `xano:routes`, `pull`,",
1490
+ "`generate`, `marketplace install|reinstall|remove`). Edits inside the block are overwritten.",
1491
+ "Install also adds the module's non-SDK peers (e.g. `zod`) as direct dependencies.",
1492
+ "The hook is synchronous and pure: given",
1493
+ "the request inputs under the manifest's keys and its config, it returns `{ imports?, source }`,",
1494
+ "imports as bare package names (`@xano/sdk*`, relative and `node:` are refused). A module that",
1495
+ "fails to load or throws leaves its previous block as it was, with a warning naming it, and the",
1496
+ "core sections still refresh; under `routes --emit --strict` it is fatal. `@xano-sdk/zod`",
1497
+ "(`xanosdk marketplace install zod`) is one: it adds `ROUTE_SCHEMAS` and its siblings."
1486
1498
  ];
1487
1499
  const client = [
1488
1500
  "Importing a def into a browser bundle or a Node script \u2014 for `getPath()`, `getUrl()`, `verb`, or `InferResponse` \u2014 runs its factory calls; these are the costs and the checks.",
@@ -1498,6 +1510,16 @@ function renderSections(m) {
1498
1510
  ' plain data importing NOTHING, still compile-checked: `routePath("GET blog/{slug}", { slug })`',
1499
1511
  ' `channelPath("rooms/{room_id}", { room_id })`, `socketUrl("chat", baseUrl)` (tenant base',
1500
1512
  " URLs lifted to `wss://h/ws/<tenant>:<canonical>`). A rename is a type error, not a 404.",
1513
+ "- **Request types without the def.** `routes.gen.ts` also exports types-only `RouteInputs`,",
1514
+ " `ChannelInputs`, `MessageInputs` (and `MessageName`), keyed like `ROUTES`, `CHANNELS`, and",
1515
+ ' `"<channel key> <message name>"`: `type NewListing = RouteInputs["POST listings"]`. A',
1516
+ " frontend types bodies, channel params and payloads from these, not `InferInput` on a def;",
1517
+ " keep `InferInput` in code that already imports defs. They match `InferInput`, except a",
1518
+ " `dbLink` input appears as the linked table's columns (what the server accepts). Responses",
1519
+ " are not in the file: `InferResponse` on an `import type` of the def.",
1520
+ " Runtime validation: `xanosdk marketplace install zod` adds `@xano-sdk/zod`, which writes",
1521
+ " `ROUTE_SCHEMAS`/`CHANNEL_SCHEMAS`/`MESSAGE_SCHEMAS` into the file under the same keys, each",
1522
+ " checked against its type at typecheck; the file then imports `zod`, never `@xano/sdk`.",
1501
1523
  "- **Verifying a def outside a bundler.** Inside a bundler (Vite/webpack) importing a",
1502
1524
  " query def to read `getPath()`/`verb` works directly. To spot-check from Node, run a REAL",
1503
1525
  ' file with `tsx <file.ts>` **from inside the project root** \u2014 not `tsx -e "import \u2026"`',
@@ -1523,11 +1545,10 @@ function renderSections(m) {
1523
1545
  "bare `XANO_HOST` token.",
1524
1546
  "**Frontend without the backend.** `xanosdk publish <dir> [--to <backend>]` uploads an",
1525
1547
  "already-built directory and nothing else \u2014 no compile, no import (scaffold script",
1526
- "`npm run xano:deploy:frontend`). `publish` does not reach a local engine: after a local-engine",
1527
- "deploy, pass `--to ephemeral`, or give the engine the frontend with",
1528
- "`xanosdk deploy <entry> --local-engine --static <dir>` (served at `http://<prefix>.localhost:<port>`).",
1548
+ "`npm run xano:deploy:frontend`). A Xano Engine (`--to local`, or bare after a local",
1549
+ "deploy) serves it, server half included, at `http://<prefix>.localhost:<port>`.",
1529
1550
  "**Server-rendered SvelteKit.** `adapter()` from `@xano/sdk/sveltekit` (needs `esbuild`) writes",
1530
- "the static half at the build's root plus a server half in `.xano-ssr/`. A local engine renders every",
1551
+ "the static half at the build's root plus a server half in `.xano-ssr/`. A Xano Engine renders every",
1531
1552
  "path that is not a file through it (`load` reads the engine's own URL as `XANO_HOST` from",
1532
1553
  "`$env/dynamic/private`; a rendered page gets the deploy's `window.XANO_HOST` too). Any other host",
1533
1554
  "is not sent `.xano-ssr/`: it serves the static half and answers other paths with the `404.html`",
@@ -1595,7 +1616,7 @@ function renderSections(m) {
1595
1616
  "| 5 | `test` / `deploy --test`: the suite ran and a test failed. A deploy is not retracted. | Fix the test or the code. |",
1596
1617
  "| 6 | `test`, `deploy --test`: the suite could not be reached. | Check the backend; rerun. |",
1597
1618
  "| 7 | `upgrade --check`: an upgrade is available. | `xanosdk upgrade`. |",
1598
- "| 8 | A named backend could not be addressed (or a named release, profile, branch, test, module, lock entry, `--seed` guid or local-engine version is missing): gone, expired, unreachable, a stopped local engine, or a busy import. | Retry, or redeploy. |",
1619
+ "| 8 | A named backend could not be addressed (or a named release, profile, branch, test, module, lock entry, `--seed` guid or Xano Engine version is missing): gone, expired, unreachable, a stopped Xano Engine, or a busy import. | Retry, or redeploy. |",
1599
1620
  "| 9 | A write whose outcome is unknown, Ctrl-C during a write included. | Read the target's state before retrying. |",
1600
1621
  "| 130 | Ctrl-C outside a write or install. | \u2014 |"
1601
1622
  ];
@@ -1932,6 +1953,10 @@ function renderSections(m) {
1932
1953
  "`withFilters` chain) \u2014 inside `obj()`/`expr()` an argument cannot carry its own filter",
1933
1954
  "chain, so compute it in a prior `set_var`. The arg types below name each argument's",
1934
1955
  "ENGINE type, not the JS type you may pass.",
1956
+ "`fl.add`/`fl.sub`/`fl.mul` keep an INT when both operands are ints (`2 \xD7 3` is `6`, not",
1957
+ "`6.0`) and give a decimal only when either operand is one \u2014 the `decimal` return type",
1958
+ "below covers both, so an int pipeline needs no `fl.to_int()`. `fl.div` is an int only",
1959
+ "when it divides exactly.",
1935
1960
  "To add to a numeric column (counter, stock, balance), use `s.db.increment`",
1936
1961
  "(`llms/statements-data.md`) \u2014 one atomic UPDATE. A pipeline read-modify-write is NOT",
1937
1962
  'atomic (concurrent writers lose updates), and `col("clicks")` does NOT resolve to the',
@@ -1999,7 +2024,7 @@ function renderSections(m) {
1999
2024
  const stmtData = [
2000
2025
  "Array blocks (an `if`/`transform` is applied per item):",
2001
2026
  "",
2002
- '- `s.array.map({ source, as?, transform? })` \u2014 `transform` is either a per-item `Value` expression (each item maps to that value) or a **record of values** (each item maps to an object with those keys), or a list of `{ key, value }` pairs, for a key computed per item or two rows sharing one. Use `ref("$this")` for the item and `ref("$index")` for its position. These are THIS statement\'s own bindings, in a value expression \u2014 not the JavaScript lambda contract (see **Lambda bodies**), which binds a different set per surface and is written with `lam.fn`.',
2027
+ '- `s.array.map({ source, as?, transform? })` \u2014 `transform` is either a per-item `Value` expression (each item maps to that value) or a **record of values** (each item maps to an object with those keys), or a list of `{ key, value }` pairs, for a key computed per item or two rows sharing one. Use `ref("$this")` for the item and `ref("$index")` for its position. A `transform` value, filter arguments included, can read `ref("$this.<path>")` and any outer stack variable or input. These are THIS statement\'s own bindings, in a value expression \u2014 not the JavaScript lambda contract (see **Lambda bodies**), which binds a different set per surface and is written with `lam.fn`.',
2003
2028
  "- `s.array.union({ source, with, as?, transform? })` \u2014 set-union two arrays. `with` is REQUIRED; omitted \u2192 `Unable to locate input: `.",
2004
2029
  "",
2005
2030
  "DB reads/writes (`table` is a def handle or name; `fieldName` defaults to the",
@@ -2053,7 +2078,8 @@ function renderSections(m) {
2053
2078
  " - Template placeholders are Twig over the request scope: `{{ $input.name }}` for an input, `{{ $var.name }}` for a stack variable. \u26A0 A BARE `{{ name }}` renders as the empty string \u2014 HTTP 200, no error, a query that silently ran with a blank where the value belonged. A bound `?` arg carries a VALUE without the template at all.",
2054
2079
  " - \u26A0 A table's PHYSICAL name is **not stable across deploys**. A deploy is a full replace, so every table is created afresh and the id in its name moves every time \u2014 the same unchanged project redeployed three times gave one table three different names. Never store, cache, hardcode or fixture one: resolve it from `information_schema` inside the same request that uses it.",
2055
2080
  "- `s.db.external.<engine>.direct_query({ sql, connectionString, responseType?, args?, parser?, as? })` \u2014 same shape against an EXTERNAL database; `<engine>` is `postgres`/`mysql`/`mssql`/`oracle`/`snowflake`. `connectionString` is a `Value` \u2014 reach for `env(...)`, not a literal \u2014 stored as `context.connection_string_flex`. A bare string stores the older `context.connection_string` instead (an env-var name unless it looks like a URL); each form round-trips as itself.",
2056
- "- `s.db.transaction({ body, as? })` \u2014 run a `Statement[]` atomically. `as` binds whatever the block returned.",
2081
+ "- `s.db.transaction({ body })` \u2014 run a `Statement[]` atomically. It returns nothing, so it takes no `as`: read what the body binds. An `s.return` in the body ends the WHOLE stack with that value, and the writes before it commit.",
2082
+ ' - The body shares the enclosing stack: a variable it binds (`as: "order"` on an `s.db.add`) is still bound AFTER the transaction.',
2057
2083
  "- `s.db.bulk.add({ table, items, allowIdField?, as? })` / `s.db.bulk.update` / `s.db.bulk.patch` \u2014 `items` is an array `Value`.",
2058
2084
  " - \u26A0 `bulk.add` **drops `id` on every row unless `allowIdField: true`** (silently, next sequence value instead) \u2014 the opposite of `seed`, where `id` pins. Rows referenced by a foreign key need `allowIdField: true`; literal `items` carrying `id` without it throw. `bulk.update`/`patch` keep `id` (their match key).",
2059
2085
  ' - \u26A0 **`bulk.update` is a whole-row REPLACE: every column an item OMITS is zeroed** (`""`/`0`/`null`), HTTP 200, no error \u2014 `{ id: 7, status: "done" }` blanks the rest of row 7. **Use `s.db.bulk.patch`** for the partial write "update these rows" means. `export()` warns on a STATIC `items` missing columns (`--strict` fails); a `ref`/`inp` `items` is uninspectable.',
@@ -2380,7 +2406,7 @@ function renderDocs(m) {
2380
2406
  {
2381
2407
  path: "llms/client.md",
2382
2408
  title: "Consuming defs from a client",
2383
- readWhen: "Read when a frontend imports a def (`getPath()`/`InferResponse`) or calls the deployed backend \u2014 what the import costs, `window.XANO_HOST`, local dev, file URLs, and a Node spot-check.",
2409
+ readWhen: "Read when a frontend calls the deployed backend or imports a def \u2014 request types and zod schemas without the import, its cost, `window.XANO_HOST`, local dev, file URLs, a Node spot-check.",
2384
2410
  body: s.client
2385
2411
  },
2386
2412
  {
@@ -3,13 +3,14 @@ import {
3
3
  readLockFile,
4
4
  readLockFileReport,
5
5
  recordLandingInLockFile,
6
+ recordSyncInLockFile,
6
7
  writeLockFile
7
- } from "./chunk-VD32O6KZ.js";
8
- import "./chunk-RX3EMQGN.js";
8
+ } from "./chunk-CJDPSCMX.js";
9
+ import "./chunk-MFWF2NZJ.js";
9
10
  import "./chunk-LLNZGEFK.js";
10
- import "./chunk-OOGXZL7Z.js";
11
+ import "./chunk-5KJBWIDZ.js";
11
12
  import "./chunk-5ZSO4T2G.js";
12
- import "./chunk-XNCP4KYO.js";
13
+ import "./chunk-VQPDATQT.js";
13
14
  import "./chunk-LL6ED5IB.js";
14
15
  import "./chunk-4BW2SG2N.js";
15
16
  import "./chunk-4MIV244X.js";
@@ -21,6 +22,7 @@ export {
21
22
  readLockFile,
22
23
  readLockFileReport,
23
24
  recordLandingInLockFile,
25
+ recordSyncInLockFile,
24
26
  writeLockFile
25
27
  };
26
- //# sourceMappingURL=io-ZUKAGFVE.js.map
28
+ //# sourceMappingURL=io-PGTCBSIQ.js.map
@@ -4,20 +4,20 @@ import {
4
4
  droppedAndAdded,
5
5
  tableEffectFields,
6
6
  tableEffectsOf
7
- } from "./chunk-5T2CTWTB.js";
8
- import "./chunk-WOGJB2F6.js";
7
+ } from "./chunk-CHINR7WD.js";
8
+ import "./chunk-FNLTFOUD.js";
9
9
  import {
10
10
  tableRowCounter
11
- } from "./chunk-MNVDVR3M.js";
11
+ } from "./chunk-MBDFH7XB.js";
12
12
  import {
13
13
  XANOSDK_IMPORT_UNIQUENESS_CODE,
14
14
  XanoSdkImportRefusal,
15
15
  detectXanoSdkImportRoute,
16
16
  xanosdkImport
17
- } from "./chunk-IJ3SXSZM.js";
17
+ } from "./chunk-ND43ZOS3.js";
18
18
  import {
19
19
  exportWorkspaceBundle
20
- } from "./chunk-QV3GXQRE.js";
20
+ } from "./chunk-GOLFAEUV.js";
21
21
  import {
22
22
  encodeWorkspaceArchive
23
23
  } from "./chunk-3DRXWLJ5.js";
@@ -30,32 +30,31 @@ import {
30
30
  sectionKind,
31
31
  storedColumnsAfter,
32
32
  tableAdditions
33
- } from "./chunk-HMLGM2MW.js";
34
- import "./chunk-XXZZGXW2.js";
35
- import "./chunk-A6QTTJUI.js";
36
- import "./chunk-MEE5RZ6G.js";
37
- import "./chunk-KCAL4QYP.js";
33
+ } from "./chunk-IYXL5NYU.js";
34
+ import "./chunk-GWTFI3GA.js";
35
+ import "./chunk-BL3AZ3AP.js";
36
+ import "./chunk-VW4CWVYX.js";
38
37
  import "./chunk-2MNLRIOX.js";
39
- import "./chunk-BUECLQXK.js";
40
- import "./chunk-CFSFBKHP.js";
41
- import "./chunk-SEUCZZCP.js";
38
+ import "./chunk-SPKA2LV6.js";
39
+ import "./chunk-7GAIJW62.js";
40
+ import "./chunk-N5I37JFB.js";
42
41
  import {
43
42
  shellWord
44
43
  } from "./chunk-FWD7AL6N.js";
45
44
  import "./chunk-4KHEMC32.js";
46
45
  import {
47
46
  seedRowsByTableGuid
48
- } from "./chunk-37AHZ7JX.js";
47
+ } from "./chunk-3BBIDW3Y.js";
49
48
  import "./chunk-ROY4YAEQ.js";
50
- import "./chunk-I2BGYNHD.js";
49
+ import "./chunk-M5CSVB23.js";
51
50
  import "./chunk-AWQ7BQTQ.js";
52
51
  import "./chunk-EUUUMY7J.js";
53
52
  import {
54
53
  UNTRUSTED_CERTIFICATE
55
- } from "./chunk-MN2PB6WB.js";
56
- import "./chunk-FPBGAT5D.js";
54
+ } from "./chunk-YR2I5HGE.js";
55
+ import "./chunk-26MOFAJT.js";
57
56
  import "./chunk-LLNZGEFK.js";
58
- import "./chunk-QXTKSOFI.js";
57
+ import "./chunk-MF4W6FHU.js";
59
58
  import "./chunk-X2NL4KUO.js";
60
59
  import "./chunk-3YW23UFH.js";
61
60
  import {
@@ -64,39 +63,39 @@ import {
64
63
  displayPath,
65
64
  warn,
66
65
  withSpinner
67
- } from "./chunk-SBR2WZXG.js";
66
+ } from "./chunk-D7BUMOKU.js";
68
67
  import "./chunk-6JAEMMZ7.js";
69
68
  import "./chunk-7KPKDHHI.js";
70
- import "./chunk-EESV6NU2.js";
69
+ import "./chunk-7FIMUFBP.js";
71
70
  import "./chunk-BEXZ4XRV.js";
72
71
  import "./chunk-ETAZIGNT.js";
73
- import "./chunk-4PQHO74B.js";
72
+ import "./chunk-SLGJIWCY.js";
74
73
  import "./chunk-ERVIASGL.js";
75
74
  import "./chunk-VTMTIBKP.js";
76
75
  import "./chunk-H2V3N23D.js";
77
76
  import "./chunk-3JDU4VRL.js";
78
77
  import "./chunk-WTPZRR4I.js";
79
- import "./chunk-GPI3OWRE.js";
78
+ import "./chunk-YHB34BN6.js";
80
79
  import "./chunk-UTI5G6OJ.js";
81
80
  import {
82
81
  LOCK_PAYLOAD_KEYS
83
- } from "./chunk-OOGXZL7Z.js";
82
+ } from "./chunk-5KJBWIDZ.js";
84
83
  import {
85
84
  shellQuote
86
85
  } from "./chunk-5ZSO4T2G.js";
87
- import "./chunk-XNCP4KYO.js";
86
+ import "./chunk-VQPDATQT.js";
88
87
  import "./chunk-ZY55DO5P.js";
89
88
  import "./chunk-A2AOUBJS.js";
90
89
  import "./chunk-TFFGOFVZ.js";
91
90
  import "./chunk-EHP3WPEG.js";
92
- import "./chunk-3HOGFGKG.js";
93
- import "./chunk-7GX445AE.js";
94
- import "./chunk-37FBPMNE.js";
91
+ import "./chunk-D3KEPRRN.js";
92
+ import "./chunk-4XHAT7C5.js";
93
+ import "./chunk-S56YBYMN.js";
95
94
  import "./chunk-UVF45BVU.js";
96
95
  import "./chunk-VAX3UZOY.js";
97
96
  import "./chunk-LL6ED5IB.js";
98
97
  import "./chunk-4BW2SG2N.js";
99
- import "./chunk-4DJTQ6W4.js";
98
+ import "./chunk-JIKGT7DO.js";
100
99
  import "./chunk-4MIV244X.js";
101
100
  import "./chunk-OHX6MIUZ.js";
102
101
  import "./chunk-36JUQZVQ.js";
@@ -185,7 +184,7 @@ var TABLE_KINDS = /* @__PURE__ */ new Set(["table", "dbo"]);
185
184
  function cannotMergeError(label) {
186
185
  return new Error(
187
186
  `\`--keep-data\` cannot keep ${label}'s rows: this environment predates the SDK import route, which every deploy writes through. Nothing was sent, and its data is untouched.
188
- Update it: \`xanosdk local-engine update\` for a local engine, or update the Xano instance behind an ephemeral environment. Dropping \`--keep-data\` will not help \u2014 a replacing deploy uses the same route.`
187
+ Update it: \`xanosdk local update\` for a Xano Engine, or update the Xano instance behind an ephemeral environment. Dropping \`--keep-data\` will not help \u2014 a replacing deploy uses the same route.`
189
188
  );
190
189
  }
191
190
  async function unreachableProbeError(err, req) {
@@ -201,7 +200,7 @@ async function unreachableProbeError(err, req) {
201
200
  }
202
201
  const serverError = typeof status === "number" && (status >= 500 || status === 429) && answered !== null;
203
202
  if (reach === null && !serverError || req.rerun === void 0) return err;
204
- const { LookupFailedError, rateLimitedCause } = await import("./source-resolve-DMDZVPMM.js");
203
+ const { LookupFailedError, rateLimitedCause } = await import("./source-resolve-MKLNYFWG.js");
205
204
  const failed = new LookupFailedError(
206
205
  reach !== null ? `Could not reach ${req.label} to ask whether it can merge (${reach[1]}). ${reach[1].includes(UNTRUSTED_CERTIFICATE) ? "A certificate problem" : "A network failure"} \u2014 nothing was sent and its data is untouched` : `${req.label[0].toUpperCase()}${req.label.slice(1)} answered the check whether it can merge with ${status === 429 ? "its rate limit" : "a server error"} (${answered[1].replace(/\.$/, "")}). ${status === 429 ? `${rateLimitedCause()}: nothing` : "Nothing"} was sent and its data is untouched`,
207
206
  "unreachable",
@@ -214,7 +213,7 @@ async function unreachableProbeError(err, req) {
214
213
  }
215
214
  async function unansweredReadError(err, req) {
216
215
  if (req.rerun === void 0) return err;
217
- const { LookupFailedError, isRateLimited, isServerError, isTransportFailure, unansweredCause } = await import("./source-resolve-DMDZVPMM.js");
216
+ const { LookupFailedError, isRateLimited, isServerError, isTransportFailure, unansweredCause } = await import("./source-resolve-MKLNYFWG.js");
218
217
  const transport = isTransportFailure(err);
219
218
  if (!transport && !isServerError(err)) return err;
220
219
  const first = ((err instanceof Error ? err.message : String(err)).trim().split("\n")[0] ?? "").replace(/[.:]$/, "");
@@ -1014,14 +1013,14 @@ async function mergeKeepingData(req) {
1014
1013
  } catch (err) {
1015
1014
  throw await unansweredReadError(err, req);
1016
1015
  }
1017
- const triggers = req.kind === "local-engine" ? [] : liveTableTriggers(live);
1016
+ const triggers = req.kind === "local" ? [] : liveTableTriggers(live);
1018
1017
  if (triggers.length > 0) {
1019
1018
  const reset = req.rerun === void 0 ? "xanosdk deploy --keep-data --reset" : withFlag(req.rerun.command, "--reset");
1020
1019
  throw tableTriggerMergeError(req.label, triggers, { command: reset, note: req.rerun?.note ?? "" });
1021
1020
  }
1022
1021
  const diff = diffAgainstLive(outgoing, live, { mode: "merge", ...req.storedColumns === void 0 ? {} : { stored: req.storedColumns } });
1023
1022
  const resetRerun = req.rerun === void 0 ? "xanosdk deploy --keep-data --reset" : withFlag(req.rerun.command, "--reset");
1024
- if (req.kind !== "local-engine") {
1023
+ if (req.kind !== "local") {
1025
1024
  await assertStorageModesKept(diff.storageChanges, tableRowCounter(req.auth, { workspaceId: req.workspaceId, base: req.baseUrl }), {
1026
1025
  target: req.label,
1027
1026
  subject: "the merge",
@@ -1117,4 +1116,4 @@ export {
1117
1116
  unansweredReadError,
1118
1117
  unreachableProbeError
1119
1118
  };
1120
- //# sourceMappingURL=keep-data-merge-X5LDDCI3.js.map
1119
+ //# sourceMappingURL=keep-data-merge-QR2TMKEO.js.map
@@ -2,9 +2,9 @@ import {
2
2
  allFrontendPresets,
3
3
  renderLambdaTsconfig,
4
4
  renderPackageJson
5
- } from "./chunk-OPHB5ORL.js";
6
- import "./chunk-UCQ2VUTG.js";
7
- import "./chunk-DGWHAVRG.js";
5
+ } from "./chunk-EQFYOOO6.js";
6
+ import "./chunk-M6ZFSTIZ.js";
7
+ import "./chunk-3EDSPMXN.js";
8
8
  import "./chunk-TFFGOFVZ.js";
9
9
  import "./chunk-OHX6MIUZ.js";
10
10
  import "./chunk-36JUQZVQ.js";
@@ -113,4 +113,4 @@ function reconcileLambdaConfig(dir) {
113
113
  export {
114
114
  reconcileLambdaConfig
115
115
  };
116
- //# sourceMappingURL=lambda-config-reconcile-OUZ4OYAB.js.map
116
+ //# sourceMappingURL=lambda-config-reconcile-7FJXXV6V.js.map
@@ -12,10 +12,10 @@ import {
12
12
  withStoredColumns,
13
13
  withoutLanding,
14
14
  withoutPrunedObjects
15
- } from "./chunk-RX3EMQGN.js";
16
- import "./chunk-OOGXZL7Z.js";
15
+ } from "./chunk-MFWF2NZJ.js";
16
+ import "./chunk-5KJBWIDZ.js";
17
17
  import "./chunk-5ZSO4T2G.js";
18
- import "./chunk-XNCP4KYO.js";
18
+ import "./chunk-VQPDATQT.js";
19
19
  import "./chunk-LL6ED5IB.js";
20
20
  import "./chunk-4BW2SG2N.js";
21
21
  import "./chunk-4MIV244X.js";
@@ -37,4 +37,4 @@ export {
37
37
  withoutLanding,
38
38
  withoutPrunedObjects
39
39
  };
40
- //# sourceMappingURL=landed-6VO7CX5P.js.map
40
+ //# sourceMappingURL=landed-F7PCHGCK.js.map
@@ -6,42 +6,43 @@ import {
6
6
  recordForeignLanding,
7
7
  recordLanding,
8
8
  unvouchedIdentities
9
- } from "./chunk-C4FHQA7R.js";
10
- import "./chunk-UKUIUS3E.js";
9
+ } from "./chunk-IF4PEGVD.js";
10
+ import "./chunk-U6MTGB46.js";
11
11
  import "./chunk-ZYJP6BOO.js";
12
12
  import "./chunk-QO6BVGS5.js";
13
- import "./chunk-3H3EPMFY.js";
14
- import "./chunk-SEUCZZCP.js";
15
- import "./chunk-E6H5ZEV3.js";
16
- import "./chunk-HUSH7LRI.js";
17
- import "./chunk-ZG7E72VI.js";
18
- import "./chunk-S7E2AHV3.js";
13
+ import "./chunk-5TVFLG3C.js";
14
+ import "./chunk-N5I37JFB.js";
15
+ import "./chunk-TTEIDD5Q.js";
16
+ import "./chunk-LL7SGTRC.js";
17
+ import "./chunk-YYC2DZMG.js";
18
+ import "./chunk-PMMHSX4H.js";
19
19
  import "./chunk-ZFDZKNGG.js";
20
20
  import "./chunk-FWD7AL6N.js";
21
- import "./chunk-3FN2BIGB.js";
22
- import "./chunk-JTUKLCXS.js";
21
+ import "./chunk-QJM5XZ4K.js";
22
+ import "./chunk-DXUICABI.js";
23
23
  import "./chunk-4KHEMC32.js";
24
24
  import "./chunk-ROY4YAEQ.js";
25
- import "./chunk-VD32O6KZ.js";
26
- import "./chunk-RX3EMQGN.js";
27
- import "./chunk-WRBKLYSJ.js";
28
- import "./chunk-DYG5D3FD.js";
29
- import "./chunk-I2BGYNHD.js";
25
+ import "./chunk-CJDPSCMX.js";
26
+ import "./chunk-MFWF2NZJ.js";
27
+ import "./chunk-DNBP4GJN.js";
28
+ import "./chunk-763M6LX3.js";
29
+ import "./chunk-WAVNUTMT.js";
30
+ import "./chunk-M5CSVB23.js";
30
31
  import "./chunk-AWQ7BQTQ.js";
31
32
  import "./chunk-EUUUMY7J.js";
32
- import "./chunk-MN2PB6WB.js";
33
- import "./chunk-FPBGAT5D.js";
33
+ import "./chunk-YR2I5HGE.js";
34
+ import "./chunk-26MOFAJT.js";
34
35
  import "./chunk-LLNZGEFK.js";
35
- import "./chunk-QXTKSOFI.js";
36
+ import "./chunk-MF4W6FHU.js";
36
37
  import "./chunk-X2NL4KUO.js";
37
- import "./chunk-UCQ2VUTG.js";
38
- import "./chunk-DGWHAVRG.js";
39
- import "./chunk-SBR2WZXG.js";
40
- import "./chunk-GPI3OWRE.js";
38
+ import "./chunk-M6ZFSTIZ.js";
39
+ import "./chunk-3EDSPMXN.js";
40
+ import "./chunk-D7BUMOKU.js";
41
+ import "./chunk-YHB34BN6.js";
41
42
  import "./chunk-UTI5G6OJ.js";
42
- import "./chunk-OOGXZL7Z.js";
43
+ import "./chunk-5KJBWIDZ.js";
43
44
  import "./chunk-5ZSO4T2G.js";
44
- import "./chunk-XNCP4KYO.js";
45
+ import "./chunk-VQPDATQT.js";
45
46
  import "./chunk-TFFGOFVZ.js";
46
47
  import "./chunk-LL6ED5IB.js";
47
48
  import "./chunk-4BW2SG2N.js";
@@ -58,4 +59,4 @@ export {
58
59
  recordLanding,
59
60
  unvouchedIdentities
60
61
  };
61
- //# sourceMappingURL=landing-record-QYECWLQ5.js.map
62
+ //# sourceMappingURL=landing-record-MWXFIRCP.js.map
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  SETTINGS_LABEL,
3
+ canonicalRow,
3
4
  compareToLive,
4
5
  declaredLabels,
5
6
  diffAgainstLive,
@@ -18,31 +19,31 @@ import {
18
19
  tableAdditions,
19
20
  uniqueIndexLabels,
20
21
  vectorSize
21
- } from "./chunk-HMLGM2MW.js";
22
- import "./chunk-XXZZGXW2.js";
22
+ } from "./chunk-IYXL5NYU.js";
23
23
  import "./chunk-6JAEMMZ7.js";
24
24
  import "./chunk-ETAZIGNT.js";
25
25
  import "./chunk-ERVIASGL.js";
26
26
  import "./chunk-VTMTIBKP.js";
27
27
  import "./chunk-H2V3N23D.js";
28
- import "./chunk-OOGXZL7Z.js";
28
+ import "./chunk-5KJBWIDZ.js";
29
29
  import "./chunk-5ZSO4T2G.js";
30
- import "./chunk-XNCP4KYO.js";
30
+ import "./chunk-VQPDATQT.js";
31
31
  import "./chunk-A2AOUBJS.js";
32
- import "./chunk-3HOGFGKG.js";
33
- import "./chunk-7GX445AE.js";
34
- import "./chunk-37FBPMNE.js";
32
+ import "./chunk-D3KEPRRN.js";
33
+ import "./chunk-4XHAT7C5.js";
34
+ import "./chunk-S56YBYMN.js";
35
35
  import "./chunk-UVF45BVU.js";
36
36
  import "./chunk-VAX3UZOY.js";
37
37
  import "./chunk-LL6ED5IB.js";
38
38
  import "./chunk-4BW2SG2N.js";
39
- import "./chunk-4DJTQ6W4.js";
39
+ import "./chunk-JIKGT7DO.js";
40
40
  import "./chunk-4MIV244X.js";
41
41
  import "./chunk-OHX6MIUZ.js";
42
42
  import "./chunk-36JUQZVQ.js";
43
43
  import "./chunk-PZ5AY32C.js";
44
44
  export {
45
45
  SETTINGS_LABEL,
46
+ canonicalRow,
46
47
  compareToLive,
47
48
  declaredLabels,
48
49
  diffAgainstLive,
@@ -62,4 +63,4 @@ export {
62
63
  uniqueIndexLabels,
63
64
  vectorSize
64
65
  };
65
- //# sourceMappingURL=live-diff-2S7E3SBZ.js.map
66
+ //# sourceMappingURL=live-diff-5E2BQWQ7.js.map