@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
@@ -4,7 +4,7 @@ import {
4
4
  listAnswer,
5
5
  recordAnswer,
6
6
  writeTransportFailure
7
- } from "./chunk-CFSFBKHP.js";
7
+ } from "./chunk-7GAIJW62.js";
8
8
  import {
9
9
  appendSentence,
10
10
  fetchOrExplain,
@@ -12,7 +12,7 @@ import {
12
12
  serverMessage,
13
13
  statusLabel,
14
14
  transportTarget
15
- } from "./chunk-MN2PB6WB.js";
15
+ } from "./chunk-YR2I5HGE.js";
16
16
 
17
17
  // src/deploy/tests.ts
18
18
  function labelledMessage(text) {
@@ -247,4 +247,4 @@ export {
247
247
  TestRunUnansweredError,
248
248
  runTest
249
249
  };
250
- //# sourceMappingURL=chunk-2LVTBPW2.js.map
250
+ //# sourceMappingURL=chunk-6X6BJN6Y.js.map
@@ -1,6 +1,9 @@
1
+ import {
2
+ byCodeUnit
3
+ } from "./chunk-WAVNUTMT.js";
1
4
  import {
2
5
  UsageError
3
- } from "./chunk-SBR2WZXG.js";
6
+ } from "./chunk-D7BUMOKU.js";
4
7
 
5
8
  // src/emit/module-manifest.ts
6
9
  import { existsSync, readFileSync, statSync } from "fs";
@@ -97,6 +100,16 @@ function readInstalledManifest(dir, pkg) {
97
100
  const state = readInstalledManifestState(dir, pkg);
98
101
  return state.kind === "ok" ? state.manifest : null;
99
102
  }
103
+ function requiredPeersOf(manifest) {
104
+ const peers = manifest["peerDependencies"];
105
+ if (typeof peers !== "object" || peers === null) return [];
106
+ const meta = manifest["peerDependenciesMeta"];
107
+ const optional = (name) => {
108
+ const entry = typeof meta === "object" && meta !== null ? meta[name] : void 0;
109
+ return typeof entry === "object" && entry !== null && entry.optional === true;
110
+ };
111
+ return Object.entries(peers).filter((e) => e[0] !== "@xano/sdk" && typeof e[1] === "string" && !optional(e[0])).sort(([a], [b]) => byCodeUnit(a, b));
112
+ }
100
113
  function moduleKind(pkg, manifest) {
101
114
  const field = manifest["xanosdk"];
102
115
  if (typeof field !== "object" || field === null) return "workspace";
@@ -158,6 +171,7 @@ export {
158
171
  installedPackageDir,
159
172
  readInstalledManifestState,
160
173
  readInstalledManifest,
174
+ requiredPeersOf,
161
175
  moduleKind,
162
176
  entryFileOf,
163
177
  fileInPackage,
@@ -165,4 +179,4 @@ export {
165
179
  loadFile,
166
180
  homepageOf
167
181
  };
168
- //# sourceMappingURL=chunk-DYG5D3FD.js.map
182
+ //# sourceMappingURL=chunk-763M6LX3.js.map
@@ -10,7 +10,7 @@ import {
10
10
  displayLockKey,
11
11
  lockNameForObject,
12
12
  sdkKindName
13
- } from "./chunk-OOGXZL7Z.js";
13
+ } from "./chunk-5KJBWIDZ.js";
14
14
  import {
15
15
  rawDeriveGuid
16
16
  } from "./chunk-LL6ED5IB.js";
@@ -410,4 +410,4 @@ export {
410
410
  buildBundle,
411
411
  knowledgeBodiesAllEmpty
412
412
  };
413
- //# sourceMappingURL=chunk-EESV6NU2.js.map
413
+ //# sourceMappingURL=chunk-7FIMUFBP.js.map
@@ -8,7 +8,7 @@ import {
8
8
  notJsonError,
9
9
  parseJsonAnswer,
10
10
  unexpectedAnswerError
11
- } from "./chunk-MN2PB6WB.js";
11
+ } from "./chunk-YR2I5HGE.js";
12
12
 
13
13
  // src/deploy/answer-shape.ts
14
14
  function isRecord(v) {
@@ -94,4 +94,4 @@ export {
94
94
  multidocAnswer,
95
95
  writeTransportFailure
96
96
  };
97
- //# sourceMappingURL=chunk-CFSFBKHP.js.map
97
+ //# sourceMappingURL=chunk-7GAIJW62.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sdkKindName
3
- } from "./chunk-OOGXZL7Z.js";
3
+ } from "./chunk-5KJBWIDZ.js";
4
4
 
5
5
  // src/validate/capabilities.ts
6
6
  var CAPABILITIES = {
@@ -145,4 +145,4 @@ export {
145
145
  STATEMENT_CAPABILITIES,
146
146
  bundleCapabilities
147
147
  };
148
- //# sourceMappingURL=chunk-6R7S775T.js.map
148
+ //# sourceMappingURL=chunk-7REDHC4N.js.map
@@ -0,0 +1,44 @@
1
+ import {
2
+ normalize
3
+ } from "./chunk-D3KEPRRN.js";
4
+ import {
5
+ sha1Bytes
6
+ } from "./chunk-OHX6MIUZ.js";
7
+
8
+ // src/bundle/hash.ts
9
+ var isRecord = (value) => value !== null && typeof value === "object" && !Array.isArray(value);
10
+ function withoutIgnoredInputs(value) {
11
+ if (Array.isArray(value)) return value.map(withoutIgnoredInputs);
12
+ if (!isRecord(value)) return value;
13
+ const out = /* @__PURE__ */ Object.create(null);
14
+ for (const [key, member] of Object.entries(value)) {
15
+ if (key === "input" && Array.isArray(member)) {
16
+ out[key] = member.filter((entry) => !(isRecord(entry) && entry.ignore === true)).map(withoutIgnoredInputs);
17
+ continue;
18
+ }
19
+ out[key] = withoutIgnoredInputs(member);
20
+ }
21
+ return out;
22
+ }
23
+ function canonicalJson(value) {
24
+ if (Array.isArray(value)) return `[${value.map(canonicalJson).join(",")}]`;
25
+ if (isRecord(value)) {
26
+ const parts = Object.keys(value).sort().map((key) => `${JSON.stringify(key)}:${canonicalJson(value[key])}`);
27
+ return `{${parts.join(",")}}`;
28
+ }
29
+ return value === void 0 ? "null" : JSON.stringify(value);
30
+ }
31
+ var HEX = "0123456789abcdef";
32
+ function structuralHash(raw) {
33
+ const reduced = withoutIgnoredInputs(normalize(raw));
34
+ const bytes = sha1Bytes(canonicalJson(reduced));
35
+ let hex = "";
36
+ for (const byte of bytes) hex += HEX[byte >> 4] + HEX[byte & 15];
37
+ return hex;
38
+ }
39
+
40
+ export {
41
+ canonicalJson,
42
+ structuralHash
43
+ };
44
+ //# sourceMappingURL=chunk-7VR4IO5B.js.map
@@ -0,0 +1,78 @@
1
+ import {
2
+ composeRoutesManifest,
3
+ fireRoutesManifest,
4
+ parseModuleSections
5
+ } from "./chunk-KPFS3RGM.js";
6
+ import {
7
+ ROUTES_MANIFEST_BASENAME,
8
+ renderPlannedManifest,
9
+ renderRouteManifest
10
+ } from "./chunk-LBJA7IEM.js";
11
+ import {
12
+ warn
13
+ } from "./chunk-D7BUMOKU.js";
14
+
15
+ // src/emit/routes-manifest-file.ts
16
+ import { existsSync, readFileSync, statSync } from "fs";
17
+ async function discoverManifestModules(projectDir, manifestPath, sdkVersion) {
18
+ const { discoverToolchainPlugins } = await import("./toolchain-modules-VU7SURVJ.js");
19
+ const { loaded, skipped } = await discoverToolchainPlugins(projectDir, { frozen: false, peerSkew: "skip" });
20
+ return {
21
+ loaded,
22
+ skipped,
23
+ // Only when a module could fail or be skipped: with none, nothing is
24
+ // carried forward and `renderManifestFile` never consults it. Only a file:
25
+ // a directory in its place is the write's to report (`generate` says the
26
+ // tree is whole without it), not this read's to fail on.
27
+ previous: loaded.length + skipped.length > 0 && existsSync(manifestPath) && statSync(manifestPath).isFile() ? readFileSync(manifestPath, "utf8") : void 0,
28
+ sdkVersion
29
+ };
30
+ }
31
+ function renderManifestFile(plan, modules, opts = {}) {
32
+ const core = renderPlannedManifest(plan, opts.entry) ?? (opts.orEmpty === true && plan.resolved.length === 0 && plan.servers.length === 0 ? renderRouteManifest([]) : void 0);
33
+ if (core === void 0) return void 0;
34
+ if (modules === void 0) return { source: core, failed: [] };
35
+ const sections = [];
36
+ const failures = [];
37
+ for (const result of fireRoutesManifest(modules.loaded, { inputs: plan.inputs, sdkVersion: modules.sdkVersion })) {
38
+ if (result.kind === "section") sections.push({ pkg: result.pkg, version: result.version, section: result.section });
39
+ else failures.push({ pkg: result.pkg, why: result.why, hook: true });
40
+ }
41
+ for (const { pkg, why } of modules.skipped) failures.push({ pkg, why, hook: false });
42
+ const previous = failures.length > 0 && modules.previous !== void 0 ? new Map(
43
+ parseModuleSections(modules.previous, new Set(failures.map((f) => f.pkg))).map((s) => [s.pkg, s])
44
+ ) : /* @__PURE__ */ new Map();
45
+ const failed = [];
46
+ for (const { pkg, why, hook } of failures) {
47
+ const carried = previous.get(pkg);
48
+ if (carried !== void 0) sections.push(carried);
49
+ if (hook || carried !== void 0) failed.push({ pkg, why, carried: carried !== void 0 });
50
+ }
51
+ return { source: composeRoutesManifest(core, sections), failed };
52
+ }
53
+ function reportModuleFailures(failed, file, strict = false) {
54
+ if (failed.length === 0) return;
55
+ const lines = failed.map(
56
+ (f) => `${f.pkg} \u2014 ${f.why} (${f.carried ? "its previous block was kept as it was" : `it has no block in ${ROUTES_MANIFEST_BASENAME} yet, so none was written`})`
57
+ );
58
+ if (strict) {
59
+ throw new Error(
60
+ `--strict: ${file} cannot be checked: ${failed.length === 1 ? "a toolchain module's section" : `${failed.length} toolchain modules' sections`} could not be generated, and a section that was not generated was not checked:
61
+ ` + lines.map((l) => ` ${l}`).join("\n") + `
62
+
63
+ Run \`xanosdk marketplace reinstall <package>\` to repair a module that should still be here, or set \`"<package>": { "enabled": false }\` in package.json's "xanosdk" block to turn it off.`
64
+ );
65
+ }
66
+ warn(
67
+ `${file}: ${failed.length === 1 ? "a toolchain module" : `${failed.length} toolchain modules`} could not generate ${failed.length === 1 ? "its section" : "their sections"}; the rest of the file was refreshed.`,
68
+ "routes.module-failed",
69
+ lines
70
+ );
71
+ }
72
+
73
+ export {
74
+ discoverManifestModules,
75
+ renderManifestFile,
76
+ reportModuleFailures
77
+ };
78
+ //# sourceMappingURL=chunk-A7MRZ4GF.js.map
@@ -1,23 +1,23 @@
1
1
  import {
2
2
  ROUTES_MANIFEST_BASENAME
3
- } from "./chunk-TTVAHCWP.js";
3
+ } from "./chunk-LBJA7IEM.js";
4
4
  import {
5
5
  questionOrCancel
6
- } from "./chunk-4APOHK7Y.js";
6
+ } from "./chunk-JXVJGF3Y.js";
7
7
  import {
8
8
  ensureWorkspaceEnvGitignored
9
- } from "./chunk-Y2ZLKBM6.js";
9
+ } from "./chunk-UD2Z7K6W.js";
10
10
  import {
11
11
  readVersion
12
- } from "./chunk-WYEQFD6A.js";
12
+ } from "./chunk-XFBGXB7X.js";
13
13
  import {
14
14
  WORKSPACE_ENV_EXAMPLE_FILE,
15
15
  renderWorkspaceEnvExample
16
- } from "./chunk-664LSWE5.js";
16
+ } from "./chunk-HCG7NDIL.js";
17
17
  import {
18
18
  parseSlot,
19
19
  requireBackendSlot
20
- } from "./chunk-UDE5C2XN.js";
20
+ } from "./chunk-VDHA5SSQ.js";
21
21
  import {
22
22
  XANO_DIR,
23
23
  changedOnDisk,
@@ -25,7 +25,7 @@ import {
25
25
  isNonEmptyDir,
26
26
  plannedAgentsMd,
27
27
  scaffoldProject
28
- } from "./chunk-HUSH7LRI.js";
28
+ } from "./chunk-LL7SGTRC.js";
29
29
  import {
30
30
  inProject,
31
31
  installModules,
@@ -33,7 +33,7 @@ import {
33
33
  preflightPackages,
34
34
  rebaseLocalSpec,
35
35
  renderXanoIndexWithModules
36
- } from "./chunk-ZG7E72VI.js";
36
+ } from "./chunk-YYC2DZMG.js";
37
37
  import {
38
38
  npmViewVersion
39
39
  } from "./chunk-ZFDZKNGG.js";
@@ -42,25 +42,26 @@ import {
42
42
  } from "./chunk-FWD7AL6N.js";
43
43
  import {
44
44
  isLocalSpecifier
45
- } from "./chunk-3FN2BIGB.js";
45
+ } from "./chunk-QJM5XZ4K.js";
46
46
  import {
47
- readToolchainBlock
48
- } from "./chunk-JTUKLCXS.js";
47
+ readToolchainBlock,
48
+ readToolchainConfig
49
+ } from "./chunk-DXUICABI.js";
49
50
  import {
50
51
  detectInstallRoot,
51
52
  detectPackageManager,
52
53
  installCommandFor,
53
54
  userAgentVersion
54
- } from "./chunk-WRBKLYSJ.js";
55
+ } from "./chunk-DNBP4GJN.js";
55
56
  import {
56
57
  localPackageName,
57
58
  localPathOf,
58
59
  packageNameOf,
59
60
  readInstalledManifestState
60
- } from "./chunk-DYG5D3FD.js";
61
+ } from "./chunk-763M6LX3.js";
61
62
  import {
62
63
  statusLabel
63
- } from "./chunk-MN2PB6WB.js";
64
+ } from "./chunk-YR2I5HGE.js";
64
65
  import {
65
66
  readEnvVar
66
67
  } from "./chunk-X2NL4KUO.js";
@@ -92,11 +93,11 @@ import {
92
93
  renderXanoIndex,
93
94
  resolveFrameworkFlag,
94
95
  sdkDep
95
- } from "./chunk-OPHB5ORL.js";
96
+ } from "./chunk-EQFYOOO6.js";
96
97
  import {
97
98
  ICON_LIBRARIES,
98
99
  resolveIconsFlag
99
- } from "./chunk-UCQ2VUTG.js";
100
+ } from "./chunk-M6ZFSTIZ.js";
100
101
  import {
101
102
  UsageError,
102
103
  blank,
@@ -119,7 +120,7 @@ import {
119
120
  unknownFlag,
120
121
  warn,
121
122
  writeJson
122
- } from "./chunk-SBR2WZXG.js";
123
+ } from "./chunk-D7BUMOKU.js";
123
124
  import {
124
125
  suggest
125
126
  } from "./chunk-UTI5G6OJ.js";
@@ -523,8 +524,8 @@ async function confirmForcedOverwrite(targetDir, files, args, agents) {
523
524
  [...changed.slice(0, 30), ...changed.length > 30 ? [`\u2026 and ${changed.length - 30} more`] : []]
524
525
  );
525
526
  if (args.yes === true) return true;
526
- const { confirm } = await import("./prompt-5GUQTCSP.js");
527
- const { yesRerun } = await import("./retry-command-Y5YJGOH3.js");
527
+ const { confirm } = await import("./prompt-U37K5RPQ.js");
528
+ const { yesRerun } = await import("./retry-command-QJ57WVW7.js");
528
529
  const { rerun, note } = yesRerun(args, "init");
529
530
  const ok = await confirm(
530
531
  `Overwrite ${changed.length === 1 ? "this file" : `these ${changed.length} files`} in ${targetDir}?`,
@@ -595,7 +596,7 @@ async function runInitCommand(args) {
595
596
  }
596
597
  const source = resolveFromSource(args.from);
597
598
  if (source.kind === "file") await refuseUnknownProfileFlag(args, resolve(args.positionals[0] ?? "."));
598
- const { runInitFromCommand } = await import("./codegen-command-HTWIW56U.js");
599
+ const { runInitFromCommand } = await import("./codegen-command-R5IASBFC.js");
599
600
  return runInitFromCommand(args, source);
600
601
  }
601
602
  rejectPullOnlyFlags(args);
@@ -614,10 +615,10 @@ async function runInitCommand(args) {
614
615
  return flagNames().includes(bare) || bare.startsWith("no-") && flagNames().includes(bare.slice(3));
615
616
  });
616
617
  if (unclaimable.length > 0) throw unknownFlag(unclaimable, { command: "init" });
617
- const { refusePlugAndPlay } = await import("./project-dependency-RRMTWOPC.js");
618
- const { retryCommand } = await import("./retry-command-Y5YJGOH3.js");
618
+ const { refusePlugAndPlay } = await import("./project-dependency-GZWWGWEW.js");
619
+ const { retryCommand } = await import("./retry-command-QJ57WVW7.js");
619
620
  refusePlugAndPlay(targetDir, retryCommand(args, { command: "init" }).command);
620
- const { resolveMarketplaceSpecs, withCatalogueRerun } = await import("./marketplace-resolve-KLFYVRWS.js");
621
+ const { resolveMarketplaceSpecs, withCatalogueRerun } = await import("./marketplace-resolve-OTZYT4FG.js");
621
622
  const resolvedModules = typedModules.length === 0 ? [] : await resolveMarketplaceSpecs(typedModules, "xanosdk init --marketplace").catch(async (err) => {
622
623
  throw await withCatalogueRerun(err, args, "init");
623
624
  });
@@ -656,15 +657,20 @@ async function runInitCommand(args) {
656
657
  );
657
658
  blank();
658
659
  moduleOutcome = await installModules(targetDir, modules);
660
+ if (moduleOutcome.toolchain.length > 0) {
661
+ const { addToolchainPeers } = await import("./toolchain-peers-CIDNEEQV.js");
662
+ const rerun = retryCommand(args, { command: "init" }).command;
663
+ for (const pkg of moduleOutcome.toolchain) await addToolchainPeers(targetDir, pkg, rerun);
664
+ }
659
665
  }
660
666
  let scaffolded = false;
661
667
  try {
662
- const { discoverToolchainPlugins } = await import("./toolchain-modules-3M7QDJBV.js");
668
+ const { discoverToolchainPlugins } = await import("./toolchain-modules-VU7SURVJ.js");
663
669
  const toolchain = await discoverToolchainPlugins(targetDir, { frozen: false, configuring: true });
664
670
  const preset = earlyPreset ?? await resolveFrontendPreset(args.framework);
665
671
  const choice = await resolveThemeChoice(args);
666
- const { pluginPrompter } = await import("./plugin-prompt-DKNQHW6Y.js");
667
- const { contributionOutcomes, recordedConfig, runPluginQuestionnaire } = await import("./plugin-contributions-X4V22PJQ.js");
672
+ const { pluginPrompter } = await import("./plugin-prompt-ZUYQQIX4.js");
673
+ const { contributionOutcomes, recordedConfig, runPluginQuestionnaire } = await import("./plugin-contributions-WR26U7NT.js");
668
674
  const { answers: pluginAnswers } = await runPluginQuestionnaire(toolchain.loaded, {
669
675
  host: "init",
670
676
  unknownFlags: args.unknownFlags,
@@ -757,7 +763,8 @@ async function runInitCommand(args) {
757
763
  if (result.install === "installed" && sdkResolves(targetDir)) {
758
764
  const derivation = await writeDerivedFiles(
759
765
  targetDir,
760
- (env) => spellProjectCli(renderXanoIndexWithModules(appName, outcome.registered, outcome.unwired, env), vars.cli)
766
+ (env) => spellProjectCli(renderXanoIndexWithModules(appName, outcome.registered, outcome.unwired, env), vars.cli),
767
+ toolchain
761
768
  );
762
769
  derived = derivation.written;
763
770
  entryFailed = derivation.failed === true;
@@ -782,10 +789,10 @@ async function runInitCommand(args) {
782
789
  }
783
790
  }
784
791
  if (result.install === "installed") {
785
- const { skewedProjectSdk } = await import("./project-sdk-FOR4IOXL.js");
792
+ const { skewedProjectSdk } = await import("./project-sdk-3W72H5QO.js");
786
793
  const installedSdk = skewedProjectSdk(targetDir, readVersion());
787
794
  if (installedSdk !== void 0) {
788
- const { reconcileWithInstalled } = await import("./upgrade-command-7EUXML3P.js");
795
+ const { reconcileWithInstalled } = await import("./upgrade-command-C5KBITFI.js");
789
796
  const rendered = reconcileWithInstalled(targetDir);
790
797
  if (rendered.length > 0) {
791
798
  info(`Rendered ${rendered.join(", ")} with the installed @xano/sdk ${installedSdk.version} (this CLI is ${readVersion()}).`);
@@ -820,11 +827,14 @@ async function runInitCommand(args) {
820
827
  detail(
821
828
  `Next steps:
822
829
  ` + cdHint + (result.install === "installed" || sdkResolves(targetDir) ? `` : ` ${installLine}
823
- `) + ` npm run dev # run the frontend
824
- ` + loginNextStep(pin, targetDir) + // A declared name with no line in xano/.env refuses the deploy, so the
830
+ `) + // A declared name with no line in xano/.env refuses the deploy, so the
825
831
  // step that supplies it comes first.
826
832
  (addonEnv.length > 0 ? ` cp xano/.env.example xano/.env # then set ${addonEnv.join(", ")} \u2014 the add-ons read ${addonEnv.length === 1 ? "it" : "them"}
827
- ` : ``) + ` npm run xano:deploy # build the frontend, then deploy \u2192 live ephemeral URL
833
+ ` : ``) + // The Xano Engine first: it needs no account, so sign-in waits for
834
+ // the cloud deploy that does.
835
+ ` npm run xano:deploy # run the backend on the Xano Engine, on this machine
836
+ npm run dev # run the frontend, pointed at it
837
+ ` + loginNextStep(pin, targetDir) + ` npm run xano:deploy:ephemeral # build the frontend, then deploy \u2192 live ephemeral URL
828
838
 
829
839
  ` + (hadLock !== void 0 ? `xano/xano.lock was kept (${hadLock} ${hadLock === 1 ? "entry" : "entries"}). An entry the new xano/index.ts
830
840
  does not export fails \`npm run xano:check\`; once those objects are gone for good,
@@ -905,25 +915,27 @@ function deferredDependency(specifier, targetDir) {
905
915
  { helpFor: { command: "init" } }
906
916
  );
907
917
  }
908
- async function writeDerivedFiles(targetDir, renderIndexWithEnv) {
918
+ async function writeDerivedFiles(targetDir, renderIndexWithEnv, toolchain) {
909
919
  const written = [];
910
920
  let declaredEnv = [];
911
921
  const lockPath = join(targetDir, LOCK_REL);
912
922
  const routesPath = join(targetDir, ROUTES_REL);
913
923
  try {
914
924
  const { loadDefault, checkStandInTokens } = await import("./cli.js");
915
- const { Xano } = await import("./xano-BSHYVFSE.js");
916
- const { createLockContext, lockKey, mergeObserved } = await import("./lock-TS465GVY.js");
925
+ const { Xano } = await import("./xano-LCI7VWPS.js");
926
+ const { createLockContext, lockKey, mergeObserved } = await import("./lock-HDCHD2ON.js");
917
927
  const { resetLockOverrides, seedLockOverrides } = await import("./store-6VNCD4D7.js");
918
- const { readLockFile, writeLockFile } = await import("./io-ZUKAGFVE.js");
919
- const { setDiagnosticSink } = await import("./diagnostics-LSMGB4TY.js");
920
- const { planRouteManifest, renderPlannedManifest } = await import("./routes-manifest-3BNZIVST.js");
928
+ const { readLockFile, writeLockFile } = await import("./io-PGTCBSIQ.js");
929
+ const { setDiagnosticSink } = await import("./diagnostics-OMN5Y2AH.js");
930
+ const { planRouteManifest } = await import("./routes-manifest-YR4ZIMLM.js");
931
+ const { renderManifestFile, reportModuleFailures } = await import("./routes-manifest-file-UALYSZLY.js");
932
+ const { isEnabled } = await import("./toolchain-modules-VU7SURVJ.js");
921
933
  const existing = existsSync(lockPath) ? readLockFile(lockPath) : void 0;
922
934
  resetLockOverrides();
923
935
  if (existing !== void 0) seedLockOverrides(existing);
924
936
  const ctx = createLockContext(existing);
925
- const { envNamesRead } = await import("./guards-EJU2ONAX.js");
926
- const { refreshEnvExample } = await import("./env-example-refresh-ZO6XAV44.js");
937
+ const { envNamesRead } = await import("./guards-KYEOCVHN.js");
938
+ const { refreshEnvExample } = await import("./env-example-refresh-CQP3ZMKM.js");
927
939
  const def = await loadDefault(join(targetDir, XANO_DIR, "index.ts"));
928
940
  if (!Xano.isXano(def)) return { written, env: declaredEnv };
929
941
  const previousSink = setDiagnosticSink(() => {
@@ -947,11 +959,22 @@ async function writeDerivedFiles(targetDir, renderIndexWithEnv) {
947
959
  writeLockFile(lockPath, lock);
948
960
  written.push(LOCK_REL);
949
961
  }
950
- const manifest = renderPlannedManifest(
951
- planRouteManifest(payload, (kind, name) => lock.objects[lockKey(kind, name)]?.canonical)
962
+ const loaded = toolchain.loaded.flatMap((plugin) => {
963
+ const config = readToolchainConfig(targetDir, plugin.pkg) ?? {};
964
+ return isEnabled(config) ? [{ ...plugin, config }] : [];
965
+ });
966
+ const manifest = renderManifestFile(
967
+ planRouteManifest(payload, (kind, name) => lock.objects[lockKey(kind, name)]?.canonical),
968
+ {
969
+ loaded,
970
+ skipped: toolchain.skipped,
971
+ previous: existsSync(routesPath) ? readFileSync2(routesPath, "utf8") : void 0,
972
+ sdkVersion: readVersion()
973
+ }
952
974
  );
953
975
  if (manifest !== void 0) {
954
- writeFileSync(routesPath, manifest, "utf8");
976
+ reportModuleFailures(manifest.failed, ROUTES_REL);
977
+ writeFileSync(routesPath, manifest.source, "utf8");
955
978
  written.push(ROUTES_REL);
956
979
  }
957
980
  } catch (err) {
@@ -965,21 +988,21 @@ async function writeDerivedFiles(targetDir, renderIndexWithEnv) {
965
988
  return { written, env: declaredEnv };
966
989
  }
967
990
  async function refuseUnknownProfileFlag(args, targetDir) {
968
- const { ENV_PROFILE } = await import("./profile-select-74TRDEPD.js");
991
+ const { ENV_PROFILE } = await import("./profile-select-45G5VPJK.js");
969
992
  const envRaw = readEnvVar(ENV_PROFILE)?.trim();
970
993
  const fromEnv = args.profile === void 0 && envRaw !== void 0;
971
994
  const name = args.profile ?? (fromEnv ? envRaw : void 0);
972
995
  if (name === void 0) return;
973
996
  if (fromEnv && targetDir !== void 0) {
974
- const { POINTER_FILE } = await import("./profile-pointer-UOO7JNFG.js");
997
+ const { POINTER_FILE } = await import("./profile-pointer-PDA5XBIB.js");
975
998
  if (existsSync(join(targetDir, POINTER_FILE))) return;
976
999
  }
977
- const { readCredentialFile, resolveAuthFilePath, profileNames, loginHint } = await import("./store-MR7IKXKK.js");
1000
+ const { readCredentialFile, resolveAuthFilePath, profileNames, loginHint } = await import("./store-X6ZH7EC3.js");
978
1001
  const path = resolveAuthFilePath(args, "read");
979
1002
  const file = readCredentialFile(path);
980
1003
  const stored = file === null ? [] : profileNames(file);
981
1004
  if (stored.includes(name)) return;
982
- const { ProfileNotFoundError } = await import("./token-CMAB35GD.js");
1005
+ const { ProfileNotFoundError } = await import("./token-7AWSJLKO.js");
983
1006
  const have = stored.length === 0 ? "Nothing is signed in on this machine." : `Stored profiles: ${quotedNames(stored)}.`;
984
1007
  throw new ProfileNotFoundError(
985
1008
  `No credential profile "${name}" in ${path} (from ${fromEnv ? `$${ENV_PROFILE}` : "--profile"}), so there is nothing to pin this project to. ${have} Run ${loginHint(name)} to add it, or name a stored one${fromEnv ? ` (or unset ${ENV_PROFILE})` : ""}.`,
@@ -988,7 +1011,7 @@ async function refuseUnknownProfileFlag(args, targetDir) {
988
1011
  );
989
1012
  }
990
1013
  async function envCredentialSet() {
991
- const { envMetaCredentialVarsSet } = await import("./token-CMAB35GD.js");
1014
+ const { envMetaCredentialVarsSet } = await import("./token-7AWSJLKO.js");
992
1015
  return envMetaCredentialVarsSet().length > 0;
993
1016
  }
994
1017
  function loginNextStep(pin, projectDir) {
@@ -1003,8 +1026,8 @@ function runFromHere(text, targetDir) {
1003
1026
  return text.replace(/`npx xanosdk /g, `\`${inProject(targetDir)}xanosdk `);
1004
1027
  }
1005
1028
  async function planProfilePin(args, targetDir, opts = {}) {
1006
- const { POINTER_FILE, readPointerFile } = await import("./profile-pointer-UOO7JNFG.js");
1007
- const { readCredentialFile, resolveAuthFilePath, profileNames, loginHint } = await import("./store-MR7IKXKK.js");
1029
+ const { POINTER_FILE, readPointerFile } = await import("./profile-pointer-PDA5XBIB.js");
1030
+ const { readCredentialFile, resolveAuthFilePath, profileNames, loginHint } = await import("./store-X6ZH7EC3.js");
1008
1031
  const credentialPath = resolveAuthFilePath(args, "read");
1009
1032
  const file = readCredentialFile(credentialPath);
1010
1033
  const signedIn = file !== null && profileNames(file).length > 0 || await envCredentialSet();
@@ -1034,7 +1057,7 @@ async function planProfilePin(args, targetDir, opts = {}) {
1034
1057
  };
1035
1058
  }
1036
1059
  if (opts.credentialRead === true) {
1037
- const { environmentCredentialVars } = await import("./token-CMAB35GD.js");
1060
+ const { environmentCredentialVars } = await import("./token-7AWSJLKO.js");
1038
1061
  const env = environmentCredentialVars();
1039
1062
  if (env.complete) {
1040
1063
  return {
@@ -1047,7 +1070,7 @@ async function planProfilePin(args, targetDir, opts = {}) {
1047
1070
  };
1048
1071
  }
1049
1072
  }
1050
- const { resolveActiveProfile } = await import("./profile-select-74TRDEPD.js");
1073
+ const { resolveActiveProfile } = await import("./profile-select-45G5VPJK.js");
1051
1074
  const selection = resolveActiveProfile({
1052
1075
  flag: args.profile,
1053
1076
  fileDefault: file?.default,
@@ -1057,7 +1080,7 @@ async function planProfilePin(args, targetDir, opts = {}) {
1057
1080
  });
1058
1081
  const stored = file === null ? [] : profileNames(file);
1059
1082
  if (!stored.includes(selection.name)) {
1060
- const env = stored.length === 0 ? (await import("./token-CMAB35GD.js")).environmentCredentialVars() : void 0;
1083
+ const env = stored.length === 0 ? (await import("./token-7AWSJLKO.js")).environmentCredentialVars() : void 0;
1061
1084
  const storeEnv = env?.complete === true ? await storeEnvCredentialCommand(credentialPath, targetDir) : "";
1062
1085
  return {
1063
1086
  name: null,
@@ -1081,7 +1104,7 @@ async function planProfilePin(args, targetDir, opts = {}) {
1081
1104
  };
1082
1105
  }
1083
1106
  }
1084
- const { writePointerFile } = await import("./profile-pointer-UOO7JNFG.js");
1107
+ const { writePointerFile } = await import("./profile-pointer-PDA5XBIB.js");
1085
1108
  return {
1086
1109
  name: selection.name,
1087
1110
  signedIn,
@@ -1098,7 +1121,7 @@ async function envAddressesElsewhere(file, name, credentialPath) {
1098
1121
  const instance = readEnvVar("XANO_INSTANCE_URL")?.trim();
1099
1122
  const workspace = readEnvVar("XANO_WORKSPACE_ID")?.trim();
1100
1123
  if (instance === void 0 || workspace === void 0 || readEnvVar("XANO_META_TOKEN") === void 0) return null;
1101
- const { readProfile, sameOriginAs } = await import("./store-MR7IKXKK.js");
1124
+ const { readProfile, sameOriginAs } = await import("./store-X6ZH7EC3.js");
1102
1125
  let record;
1103
1126
  try {
1104
1127
  record = readProfile(file, name, credentialPath);
@@ -1114,8 +1137,8 @@ async function envAddressesElsewhere(file, name, credentialPath) {
1114
1137
  };
1115
1138
  }
1116
1139
  async function storeEnvCredentialCommand(credentialPath, targetDir) {
1117
- const { credentialFileFlag, profileAddCommand } = await import("./store-MR7IKXKK.js");
1118
- const { DEFAULT_PROFILE } = await import("./profile-select-74TRDEPD.js");
1140
+ const { credentialFileFlag, profileAddCommand } = await import("./store-X6ZH7EC3.js");
1141
+ const { DEFAULT_PROFILE } = await import("./profile-select-45G5VPJK.js");
1119
1142
  const instance = readEnvVar("XANO_INSTANCE_URL");
1120
1143
  const workspaceId = readEnvVar("XANO_WORKSPACE_ID");
1121
1144
  const flag = credentialFileFlag(credentialPath);
@@ -1142,4 +1165,4 @@ export {
1142
1165
  projectCli,
1143
1166
  planProfilePin
1144
1167
  };
1145
- //# sourceMappingURL=chunk-D5ZEAF4G.js.map
1168
+ //# sourceMappingURL=chunk-ATJ2W7DC.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  encodeFunction
3
- } from "./chunk-II747OWE.js";
3
+ } from "./chunk-FQ53GTII.js";
4
4
  import {
5
5
  assertNoProtoKeys
6
6
  } from "./chunk-VTMTIBKP.js";
@@ -14,4 +14,4 @@ function compile(fn) {
14
14
  export {
15
15
  compile
16
16
  };
17
- //# sourceMappingURL=chunk-BUJRS7XB.js.map
17
+ //# sourceMappingURL=chunk-AVS4WPPY.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  httpFailure
3
- } from "./chunk-MN2PB6WB.js";
3
+ } from "./chunk-YR2I5HGE.js";
4
4
 
5
5
  // src/deploy/import.ts
6
6
  var ImportHttpError = class extends Error {
@@ -23,4 +23,4 @@ export {
23
23
  ImportHttpError,
24
24
  isSignatureRefusal
25
25
  };
26
- //# sourceMappingURL=chunk-MEE5RZ6G.js.map
26
+ //# sourceMappingURL=chunk-BL3AZ3AP.js.map