@xano/sdk 1.0.5 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (277) hide show
  1. package/CHANGELOG.md +35 -5
  2. package/README.md +56 -20
  3. package/dist/.build-fingerprint +1 -1
  4. package/dist/{agent-file-refresh-KVLR7M5Y.js → agent-file-refresh-DGGSRPJ4.js} +15 -14
  5. package/dist/agent-skill-command-37DFYS7Q.js +414 -0
  6. package/dist/{answer-shape-XGR2DGWY.js → answer-shape-RBFDCNZ7.js} +5 -5
  7. package/dist/{backend-dir-IE4RMUFH.js → backend-dir-KDD43X7K.js} +16 -15
  8. package/dist/{backend-slot-6HBWG5FN.js → backend-slot-TBOVZXDE.js} +4 -4
  9. package/dist/bin.js +63 -61
  10. package/dist/{branch-T2APKPVG.js → branch-7PIKNUD7.js} +12 -11
  11. package/dist/{branch-commands-HXXTCSOO.js → branch-commands-EGY7ZEZE.js} +32 -32
  12. package/dist/bundle.js +9 -39
  13. package/dist/{capture-HBXFXZEW.js → capture-GW5KNKMB.js} +3 -3
  14. package/dist/{chunk-3BJYQGAZ.js → chunk-26LHXLD3.js} +2 -2
  15. package/dist/{chunk-N6BWB35H.js → chunk-2ACWDSAQ.js} +3 -3
  16. package/dist/{chunk-XIABDKFQ.js → chunk-2SD4LA22.js} +2 -2
  17. package/dist/{chunk-K6PRKPFX.js → chunk-2XWVZRL6.js} +7 -7
  18. package/dist/{chunk-ES5A66IH.js → chunk-2YER2J47.js} +13 -13
  19. package/dist/{chunk-G57RYMKB.js → chunk-3FRGNBOC.js} +2 -2
  20. package/dist/{chunk-BMCZQZMI.js → chunk-46PATL23.js} +13 -9
  21. package/dist/{chunk-MYLPOVX6.js → chunk-47XT6WQL.js} +8 -8
  22. package/dist/{chunk-AWQ7BQTQ.js → chunk-4GPIOIAC.js} +6 -1
  23. package/dist/{chunk-7GX445AE.js → chunk-4XHAT7C5.js} +2 -2
  24. package/dist/{chunk-QOLOQ35F.js → chunk-567KK6XF.js} +8 -8
  25. package/dist/{chunk-57HMNJGB.js → chunk-5GIOCDUM.js} +893 -922
  26. package/dist/{chunk-OKNE3TWU.js → chunk-5KJBWIDZ.js} +83 -5
  27. package/dist/{chunk-SRX6B544.js → chunk-5QMJOE2K.js} +5 -5
  28. package/dist/{chunk-AGD7F7YI.js → chunk-5SCPRXFB.js} +4 -4
  29. package/dist/{chunk-SNGFEESM.js → chunk-5ZG7V2VW.js} +3 -3
  30. package/dist/{chunk-XJU6UAFV.js → chunk-7FIMUFBP.js} +2 -2
  31. package/dist/{chunk-AESE434J.js → chunk-7M6JP3FS.js} +2 -2
  32. package/dist/{chunk-K6CB5TKM.js → chunk-7REDHC4N.js} +2 -2
  33. package/dist/chunk-7VR4IO5B.js +44 -0
  34. package/dist/{chunk-57B56I4B.js → chunk-7XXWKTCE.js} +65 -41
  35. package/dist/{chunk-PL7AIAWS.js → chunk-A4R5CAY4.js} +4 -111
  36. package/dist/{chunk-QZTJ2556.js → chunk-AKERAUNH.js} +4 -4
  37. package/dist/{chunk-JZWUAEMO.js → chunk-ARWMVNDJ.js} +6 -3
  38. package/dist/{chunk-WYS6XVZ3.js → chunk-AVS4WPPY.js} +2 -2
  39. package/dist/{chunk-KUU7T4ZE.js → chunk-B2URJBC4.js} +18 -18
  40. package/dist/chunk-B3P25SDP.js +78 -0
  41. package/dist/chunk-BRANWM4U.js +853 -0
  42. package/dist/{chunk-BBPAXOU6.js → chunk-BSVQEKHO.js} +6 -6
  43. package/dist/{chunk-3WHWOKU4.js → chunk-BZ6WTG3E.js} +4 -4
  44. package/dist/{chunk-XNZURZ7T.js → chunk-CH23ONYG.js} +77 -6
  45. package/dist/{chunk-SQPIECXD.js → chunk-CJDPSCMX.js} +45 -5
  46. package/dist/{chunk-M7GJ6YUF.js → chunk-CNZASQPL.js} +16 -2
  47. package/dist/{chunk-44CWK6YC.js → chunk-CPN6WSBH.js} +4 -4
  48. package/dist/{chunk-L3BDO2BI.js → chunk-CT3J5JRZ.js} +7 -7
  49. package/dist/{chunk-3HOGFGKG.js → chunk-D3KEPRRN.js} +2 -2
  50. package/dist/{chunk-OGUMHW2X.js → chunk-D5OZRJ3T.js} +7 -7
  51. package/dist/{chunk-S5KQIFKJ.js → chunk-DG3APBUJ.js} +208 -112
  52. package/dist/chunk-DIWF7L33.js +995 -0
  53. package/dist/{chunk-WRBKLYSJ.js → chunk-DNBP4GJN.js} +4 -3
  54. package/dist/{chunk-LZDA6SVD.js → chunk-DXZTL7NA.js} +141 -91
  55. package/dist/{chunk-XMDDBEEM.js → chunk-E763QI3G.js} +2 -2
  56. package/dist/{chunk-3VX7VAQT.js → chunk-EF4MHLEW.js} +26 -9
  57. package/dist/{chunk-AGSCOISO.js → chunk-ELPQTDW6.js} +108 -100
  58. package/dist/{chunk-Q22BMRPF.js → chunk-EPFDY5JU.js} +2 -2
  59. package/dist/{chunk-7DBM6XHR.js → chunk-EU32BC5B.js} +8 -8
  60. package/dist/{chunk-Y76ERHLK.js → chunk-FDTET7FZ.js} +6 -6
  61. package/dist/{chunk-Z3SNX45M.js → chunk-FENA7K7C.js} +3 -3
  62. package/dist/{chunk-WOGJB2F6.js → chunk-FNLTFOUD.js} +4 -9
  63. package/dist/{chunk-FV55SRQU.js → chunk-FQ53GTII.js} +9 -9
  64. package/dist/{chunk-DEVGLLNZ.js → chunk-GHMLRFRX.js} +8 -8
  65. package/dist/{chunk-GMVW6ZZK.js → chunk-H2K4GFUS.js} +4 -4
  66. package/dist/{chunk-NUU76247.js → chunk-HTQWAQRW.js} +3 -3
  67. package/dist/{chunk-ROY4YAEQ.js → chunk-HU7F56VF.js} +22 -2
  68. package/dist/{chunk-RXCT3OCU.js → chunk-HZ6ADG3O.js} +47 -8
  69. package/dist/{chunk-Z2BRSQ6M.js → chunk-I6XRUU6U.js} +91 -64
  70. package/dist/chunk-IPNN2KRW.js +257 -0
  71. package/dist/{chunk-SF2B7MZK.js → chunk-IYXL5NYU.js} +259 -31
  72. package/dist/chunk-JI3BLXWQ.js +107 -0
  73. package/dist/{chunk-4DJTQ6W4.js → chunk-JIKGT7DO.js} +2 -1
  74. package/dist/{chunk-OVV2HXJ6.js → chunk-JOOKM7AH.js} +2 -2
  75. package/dist/{chunk-65SW2BA5.js → chunk-JOWY6HFL.js} +3 -3
  76. package/dist/{chunk-I5VEROXW.js → chunk-JX6N73H3.js} +2 -2
  77. package/dist/{chunk-5D6DGF3W.js → chunk-L472YIGG.js} +8 -8
  78. package/dist/{chunk-HLQH3AXB.js → chunk-L6HZ67P6.js} +2 -2
  79. package/dist/{chunk-TM5LRSBB.js → chunk-LBJA7IEM.js} +370 -45
  80. package/dist/chunk-LCOCRJ4K.js +116 -0
  81. package/dist/{chunk-DGWHAVRG.js → chunk-LJM5CIY4.js} +16 -1
  82. package/dist/{chunk-5RLAF6RL.js → chunk-M2C54ZBC.js} +4 -4
  83. package/dist/{chunk-U6DR6464.js → chunk-M3NEK3LT.js} +4 -4
  84. package/dist/{chunk-5XVBT6CQ.js → chunk-MBL7CXJ7.js} +2 -2
  85. package/dist/{chunk-5YBNXNKU.js → chunk-MFWF2NZJ.js} +12 -5
  86. package/dist/{chunk-TEBS7FE6.js → chunk-MYZRMSPM.js} +2 -2
  87. package/dist/{chunk-YSLMMR2U.js → chunk-N3YFCFCO.js} +14 -14
  88. package/dist/{chunk-OJPZEUPH.js → chunk-NDJAKSE7.js} +11 -8
  89. package/dist/{chunk-PIPIA7K7.js → chunk-NV37YGOV.js} +7 -7
  90. package/dist/{chunk-ZHGWR45B.js → chunk-O56DQKPL.js} +9 -9
  91. package/dist/{chunk-4QBGE3EO.js → chunk-ORGNLQN6.js} +6 -6
  92. package/dist/{chunk-NNB7VUCH.js → chunk-PEIBGH2V.js} +55 -31
  93. package/dist/{chunk-UJ6ZZJDD.js → chunk-PEX4QZVI.js} +2 -2
  94. package/dist/{chunk-LLS2WO2K.js → chunk-PV25BDCH.js} +5 -5
  95. package/dist/{chunk-F3557PVM.js → chunk-PY722CHR.js} +2 -2
  96. package/dist/{chunk-4GDEEY2U.js → chunk-QGIZLFAS.js} +4 -4
  97. package/dist/{chunk-YI76TURL.js → chunk-QRQ54LUI.js} +16 -14
  98. package/dist/{chunk-JQOX6HW4.js → chunk-RBU2YX22.js} +3 -3
  99. package/dist/{chunk-4NEBBKOP.js → chunk-RRMH7WMY.js} +7 -7
  100. package/dist/{chunk-HOOOOJJP.js → chunk-S46ODQRA.js} +2 -2
  101. package/dist/{chunk-37FBPMNE.js → chunk-S56YBYMN.js} +5 -2
  102. package/dist/{chunk-4QFBEKXI.js → chunk-SDGV76HF.js} +2 -2
  103. package/dist/{chunk-CV54PASI.js → chunk-SGK3PTTM.js} +312 -132
  104. package/dist/{chunk-S5TEJIGP.js → chunk-SKEG3V2V.js} +2 -2
  105. package/dist/{chunk-VZ22VUAS.js → chunk-SLGJIWCY.js} +3 -3
  106. package/dist/{chunk-JSEVKRVJ.js → chunk-T4LJ5UR2.js} +29 -7
  107. package/dist/{chunk-JXKO6JT7.js → chunk-TWVUYS63.js} +24 -24
  108. package/dist/{chunk-UIEFE6FU.js → chunk-U5M7T6CI.js} +7 -7
  109. package/dist/{chunk-Z4VN347O.js → chunk-UYFUIHH3.js} +2 -2
  110. package/dist/{chunk-Y6NO3DLQ.js → chunk-V7MBRUK6.js} +3 -3
  111. package/dist/chunk-VAGSKUWC.js +67 -0
  112. package/dist/{chunk-A4NNCI4O.js → chunk-VIJ5D3RC.js} +3 -3
  113. package/dist/{chunk-3IYVHVM6.js → chunk-VJFMUJWZ.js} +4 -4
  114. package/dist/{chunk-V4IBHDIY.js → chunk-VNDR2T35.js} +7 -7
  115. package/dist/chunk-WAVNUTMT.js +9 -0
  116. package/dist/{chunk-KQLACS4Q.js → chunk-WNCW2RNB.js} +4 -4
  117. package/dist/chunk-WUEPP5HD.js +111 -0
  118. package/dist/{chunk-IV446ZLJ.js → chunk-Y453TW6J.js} +2 -2
  119. package/dist/{local-engine-command-73NHWD6V.js → chunk-YCUDOF6Q.js} +22 -76
  120. package/dist/{chunk-CJ76PSJT.js → chunk-YH2JVJAO.js} +12 -12
  121. package/dist/{chunk-GPI3OWRE.js → chunk-YHB34BN6.js} +2 -1
  122. package/dist/{chunk-AMBEITWL.js → chunk-ZGLNHA7T.js} +7 -7
  123. package/dist/{chunk-NGAODDLX.js → chunk-ZJOAWRED.js} +8 -8
  124. package/dist/{chunk-TUEFTRC2.js → chunk-ZXRDD3Q2.js} +50 -27
  125. package/dist/cli.d.ts +40 -11
  126. package/dist/cli.js +60 -56
  127. package/dist/{codegen-command-L2OO6OTE.js → codegen-command-T7TC7PQO.js} +79 -72
  128. package/dist/codegen.d.ts +2 -2
  129. package/dist/codegen.js +2 -2
  130. package/dist/{commands-2E4JB3DB.js → commands-JDENTDJS.js} +3 -3
  131. package/dist/{completion-LPJIH5VQ.js → completion-YFD5OVJW.js} +9 -5
  132. package/dist/{config-QDCRKEWD.js → config-YJFUTRJW.js} +8 -8
  133. package/dist/{deploy-command-HJZNYCUY.js → deploy-command-OEVEE6UG.js} +65 -63
  134. package/dist/deploy-source-HYVZEYXV.js +83 -0
  135. package/dist/{dev-env-sync-GZ4QQJGV.js → dev-env-sync-EFDCJ6KU.js} +63 -61
  136. package/dist/{diagnostics-LSMGB4TY.js → diagnostics-OMN5Y2AH.js} +2 -2
  137. package/dist/{display-name-hint-AHCNH6TF.js → display-name-hint-SW3GB3V7.js} +14 -13
  138. package/dist/{emit-DqG6qddr.d.ts → emit-Dov_92kn.d.ts} +66 -20
  139. package/dist/env-example-refresh-WNSOH534.js +134 -0
  140. package/dist/{env-pull-command-Z4RLVEGJ.js → env-pull-command-UYEXMQ3P.js} +53 -52
  141. package/dist/{env-target-ZHQUS5BO.js → env-target-JBSLBKNX.js} +15 -14
  142. package/dist/{env-var-command-FKQ4VVQ6.js → env-var-command-BJNRAXNV.js} +51 -49
  143. package/dist/{ephemeral-L4KUOGEU.js → ephemeral-CEOGMIEA.js} +11 -10
  144. package/dist/{ephemeral-command-GRPFI3TD.js → ephemeral-command-IPSGBCS5.js} +70 -69
  145. package/dist/{ephemeral-state-VLYU2BXR.js → ephemeral-state-MTBASPRS.js} +13 -12
  146. package/dist/{generate-command-XNODJFDQ.js → generate-command-XQXODBS6.js} +96 -86
  147. package/dist/{gitignore-VWRSZX5F.js → gitignore-RUVCIZO4.js} +21 -20
  148. package/dist/{guards-OPSGB6LG.js → guards-KYEOCVHN.js} +6 -6
  149. package/dist/{impersonate-command-AEKIZHHK.js → impersonate-command-MA27O7S5.js} +46 -44
  150. package/dist/{import-PHSSFFLA.js → import-XKRFHABE.js} +5 -5
  151. package/dist/index.d.ts +14 -20
  152. package/dist/index.js +13 -13
  153. package/dist/init-command-6RDTCMAB.js +143 -0
  154. package/dist/{init-modules-SGSX7XEY.js → init-modules-DHTBOCQT.js} +10 -9
  155. package/dist/{init-web-6HX3YLQP.js → init-web-ELBXSXDL.js} +3 -3
  156. package/dist/internal.d.ts +5 -5
  157. package/dist/internal.js +47 -20
  158. package/dist/{io-TAF4WXYQ.js → io-PGTCBSIQ.js} +6 -4
  159. package/dist/{keep-data-merge-GUGF7MVZ.js → keep-data-merge-TDJOIAVT.js} +33 -34
  160. package/dist/{lambda-config-reconcile-65U6I4KU.js → lambda-config-reconcile-47X5C2E4.js} +6 -5
  161. package/dist/{landed-QA6PRTV2.js → landed-F7PCHGCK.js} +3 -3
  162. package/dist/{landing-record-FCAWLCZU.js → landing-record-TPPYFQAS.js} +26 -25
  163. package/dist/{live-diff-IM4W3ELT.js → live-diff-5E2BQWQ7.js} +9 -8
  164. package/dist/local-engine-choice-S6VHPJRU.js +81 -0
  165. package/dist/local-engine-command-4EZCGZ6M.js +85 -0
  166. package/dist/{local-engine-config-W3KB7RWM.js → local-engine-config-2EBL3QKA.js} +3 -2
  167. package/dist/{local-engine-deploy-Y4OAWL7K.js → local-engine-deploy-FOPNWU7X.js} +18 -16
  168. package/dist/local-engine-lookup-GM3E3NPP.js +43 -0
  169. package/dist/local-engine-mcp-bridge-QKZHUGW3.js +423 -0
  170. package/dist/local-engine-mcp-command-BFQVLXZC.js +181 -0
  171. package/dist/{local-engine-process-6YPJHKYM.js → local-engine-process-XUQPQENQ.js} +12 -9
  172. package/dist/{local-engine-state-OCW5YDD7.js → local-engine-state-JQPKGB65.js} +4 -3
  173. package/dist/{local-engine-update-check-X7TZGRFL.js → local-engine-update-check-S7UF6ZF5.js} +7 -6
  174. package/dist/{lock-WXXC3QHL.js → lock-HDCHD2ON.js} +4 -2
  175. package/dist/{lock-commands-PKDBNRSD.js → lock-commands-HJ6Y5QVS.js} +66 -64
  176. package/dist/{login-command-V4U4FA5G.js → login-command-JO55NZAS.js} +34 -33
  177. package/dist/{logout-command-TV3P545Z.js → logout-command-MPRIRSJA.js} +18 -17
  178. package/dist/{loop-VKHGQ6MP.js → loop-SUB6C2LK.js} +8 -9
  179. package/dist/{marketplace-command-LEFOAEAV.js → marketplace-command-BM6G257N.js} +90 -54
  180. package/dist/{marketplace-resolve-ME7O7JBJ.js → marketplace-resolve-AWH3RG57.js} +7 -6
  181. package/dist/{meta-client-TEEECA5W.js → meta-client-AOSWODQQ.js} +16 -15
  182. package/dist/{module-manifest-7YLGIRCY.js → module-manifest-GXI46PEF.js} +7 -4
  183. package/dist/node.d.ts +5 -5
  184. package/dist/node.js +68 -67
  185. package/dist/operation-outcome-4UKPXTNC.js +53 -0
  186. package/dist/{output-target-5FWX3NGZ.js → output-target-RAZ4KN5J.js} +22 -21
  187. package/dist/{package-manager-PRAHUSCN.js → package-manager-K762W7XT.js} +2 -2
  188. package/dist/{plan-disclosure-QGL5UYQR.js → plan-disclosure-JR52DWXN.js} +21 -21
  189. package/dist/{plugin-contributions-GNFTWDEB.js → plugin-contributions-E6XHLQWK.js} +6 -6
  190. package/dist/{plugin-prompt-VEQGMZ4T.js → plugin-prompt-IODX5EU6.js} +5 -5
  191. package/dist/{plugin-questions-BGRL23GO.js → plugin-questions-AAAJ7POP.js} +4 -4
  192. package/dist/plugin.d.ts +254 -10
  193. package/dist/{preflight-command-VKJKXRRI.js → preflight-command-7GKJBWOQ.js} +71 -70
  194. package/dist/{profile-command-P7A3BH26.js → profile-command-CM6J7E2M.js} +35 -34
  195. package/dist/{profile-pointer-HG7IXE4I.js → profile-pointer-KTYXL6FU.js} +5 -4
  196. package/dist/{project-dependency-Z4CKOCJI.js → project-dependency-OQ5575QQ.js} +11 -8
  197. package/dist/{project-sdk-JWZWGXXR.js → project-sdk-2ESHHZVL.js} +4 -4
  198. package/dist/promote-command-BDRPG6UU.js +147 -0
  199. package/dist/{prompt-SURZOUUW.js → prompt-MQPGU4ZI.js} +4 -4
  200. package/dist/{publish-command-HGAB3H4A.js → publish-command-IEMYZ7LF.js} +69 -67
  201. package/dist/pull-command-S5E2ABZ4.js +169 -0
  202. package/dist/{pull-superseded-TOT5S4QU.js → pull-superseded-E34BZVLH.js} +4 -4
  203. package/dist/{raw-where-EoWl5fqY.d.ts → raw-where-ZMLND6AG.d.ts} +20 -3
  204. package/dist/release-command-7F5TBKO2.js +151 -0
  205. package/dist/{release-ns-command-WOQE2BDQ.js → release-ns-command-EK2ZQ4CC.js} +101 -100
  206. package/dist/{retry-command-JRGMZZAC.js → retry-command-GL5HCMVB.js} +10 -9
  207. package/dist/{routes-manifest-URFMAWJE.js → routes-manifest-YR4ZIMLM.js} +15 -7
  208. package/dist/routes-manifest-file-LCIKPDAG.js +41 -0
  209. package/dist/scaffold.js +4 -4
  210. package/dist/secrets-IV4N5HYI.js +20 -0
  211. package/dist/{secrets-file-YWZWVJ52.js → secrets-file-LXREYU3M.js} +21 -20
  212. package/dist/{secrets-fill-command-HIHK3VH2.js → secrets-fill-command-QHZS3KWM.js} +64 -62
  213. package/dist/{seed-24DTEY5S.js → seed-FRKMDN2Z.js} +9 -9
  214. package/dist/{source-resolve-OWD3MIEO.js → source-resolve-BBHYTOXI.js} +26 -24
  215. package/dist/{static-host-UIR2OLPQ.js → static-host-7LC7OZR4.js} +5 -5
  216. package/dist/{status-command-JKTHH5QE.js → status-command-TY253MJT.js} +54 -52
  217. package/dist/{store-zxw2go0f.d.ts → store-Boba9OOh.d.ts} +2 -2
  218. package/dist/{store-5YAQS6KU.js → store-VJ3OS6VO.js} +8 -7
  219. package/dist/sync-baseline-DOV5AGIO.js +36 -0
  220. package/dist/{sync-contributions-RBB6JVOL.js → sync-contributions-63542VE4.js} +20 -12
  221. package/dist/sync-record-RGHK7EAL.js +43 -0
  222. package/dist/{table-MQFVYA4K.js → table-OAYGFGEN.js} +8 -8
  223. package/dist/{tables-command-5Q4BSUNO.js → tables-command-PZIVDAH3.js} +45 -43
  224. package/dist/{tenant-Q3LPVSSM.js → tenant-Y3II4VY3.js} +12 -11
  225. package/dist/{tenant-command-BFVU2PEX.js → tenant-command-G6XON7CF.js} +113 -107
  226. package/dist/{test-command-F4VUU4QR.js → test-command-3FZOX7O3.js} +44 -42
  227. package/dist/{tests-5ZSDFVIJ.js → tests-KF6N6BZ7.js} +6 -6
  228. package/dist/{token-TERSTNU4.js → token-DJJUW5HY.js} +14 -13
  229. package/dist/toolchain-hooks-7PWCFLSU.js +46 -0
  230. package/dist/{toolchain-modules-FD5ANV2U.js → toolchain-modules-OTNSKK52.js} +8 -5
  231. package/dist/toolchain-peers-KQ7TQ2AR.js +28 -0
  232. package/dist/tracked-backend-AJCGTO5Y.js +82 -0
  233. package/dist/{update-check-O4C2LCZH.js → update-check-4E5L6GAW.js} +61 -59
  234. package/dist/{upgrade-command-NVFWLMTA.js → upgrade-command-BXMSQN4C.js} +68 -64
  235. package/dist/{whoami-command-YKNTISIV.js → whoami-command-NLCCIEUM.js} +17 -16
  236. package/dist/{workspace-GGVGE2S5.js → workspace-PNMJOXE4.js} +5 -5
  237. package/dist/{workspace-binding-OS4ZOX4S.js → workspace-binding-J5GWDFRI.js} +16 -15
  238. package/dist/{workspace-command-GTUNVN7K.js → workspace-command-MHIIY352.js} +125 -93
  239. package/dist/{workspace-env-467C5KHM.js → workspace-env-LLRWCHSA.js} +17 -16
  240. package/dist/{workspace-export-3XTVGQVM.js → workspace-export-BIKAYHWJ.js} +5 -5
  241. package/dist/{writable-7SSWUQJ3.js → writable-UOTO4WWC.js} +4 -4
  242. package/dist/{xano-6RS5XQZE.js → xano-LCI7VWPS.js} +8 -8
  243. package/dist/{xanosdk-import-E3WSIYUE.js → xanosdk-import-S7A3CVBN.js} +8 -8
  244. package/dist/{xanosdk-project-KH5TZ2KI.js → xanosdk-project-J4VCFRHP.js} +18 -17
  245. package/guides/README.md +2 -2
  246. package/guides/cli.md +73 -4
  247. package/guides/codegen.md +23 -5
  248. package/guides/codes.md +8 -2
  249. package/guides/coverage.md +5 -0
  250. package/guides/deploying.md +80 -0
  251. package/guides/marketplace.md +21 -0
  252. package/guides/module-contract.md +80 -4
  253. package/guides/scaffold.md +61 -10
  254. package/guides/typed-frontend.md +37 -0
  255. package/llms/client.md +11 -1
  256. package/llms/filters.md +4 -0
  257. package/llms/kinds-core.md +1 -1
  258. package/llms/statements-data.md +3 -2
  259. package/llms/toolchain.md +12 -0
  260. package/llms-full.txt +34 -7
  261. package/llms.txt +3 -3
  262. package/manifest.json +63 -5
  263. package/package.json +5 -2
  264. package/skills/xano-backend/SKILL.md +119 -0
  265. package/dist/chunk-F6IKWAIU.js +0 -664
  266. package/dist/chunk-M6ZFSTIZ.js +0 -630
  267. package/dist/chunk-MEIJDRHU.js +0 -243
  268. package/dist/deploy-source-5COWTBOC.js +0 -81
  269. package/dist/env-example-refresh-DWQIOQYR.js +0 -127
  270. package/dist/init-command-TI3HCKXZ.js +0 -126
  271. package/dist/local-engine-choice-FPJAZSSD.js +0 -79
  272. package/dist/operation-outcome-GNDD35WL.js +0 -51
  273. package/dist/promote-command-KHTIK44I.js +0 -141
  274. package/dist/pull-command-EUEWBRXZ.js +0 -162
  275. package/dist/release-command-WOVQAMUY.js +0 -147
  276. package/dist/toolchain-hooks-QVUZ6HZ4.js +0 -96
  277. package/dist/tracked-backend-B4HTME4S.js +0 -80
@@ -9,40 +9,47 @@ import {
9
9
  staticRetryHint,
10
10
  unknownStaticOutcome,
11
11
  warnStaticTeardown
12
- } from "./chunk-4NEBBKOP.js";
12
+ } from "./chunk-RRMH7WMY.js";
13
+ import {
14
+ objectDigests,
15
+ syncDigests
16
+ } from "./chunk-JI3BLXWQ.js";
17
+ import {
18
+ archiveSeedContent
19
+ } from "./chunk-NV37YGOV.js";
13
20
  import {
14
21
  shownLabel
15
- } from "./chunk-YSLMMR2U.js";
22
+ } from "./chunk-N3YFCFCO.js";
16
23
  import {
17
24
  confirm,
18
25
  needsConfirmation
19
- } from "./chunk-AESE434J.js";
20
- import {
21
- landedRecordFor,
22
- landingLockPath,
23
- recordForeignLanding,
24
- recordLanding
25
- } from "./chunk-ES5A66IH.js";
26
+ } from "./chunk-7M6JP3FS.js";
26
27
  import {
27
28
  assertStorageModesKept,
28
29
  discloseCanonicalMoves,
29
30
  movesClause,
30
31
  storageChangesPayload
31
- } from "./chunk-BBPAXOU6.js";
32
+ } from "./chunk-BSVQEKHO.js";
32
33
  import {
33
34
  listTables,
34
35
  tableRowCounter,
35
36
  tableRowIds
36
- } from "./chunk-GMVW6ZZK.js";
37
+ } from "./chunk-H2K4GFUS.js";
38
+ import {
39
+ landedRecordFor,
40
+ landingLockPath,
41
+ recordForeignLanding,
42
+ recordLanding
43
+ } from "./chunk-2YER2J47.js";
44
+ import {
45
+ recordSync
46
+ } from "./chunk-VAGSKUWC.js";
37
47
  import {
38
48
  XANOSDK_IMPORT_CONFLICT_CODE,
39
49
  XANOSDK_IMPORT_UNIQUENESS_CODE,
40
50
  XanoSdkImportRefusal,
41
51
  xanosdkImport
42
- } from "./chunk-QOLOQ35F.js";
43
- import {
44
- archiveSeedContent
45
- } from "./chunk-PIPIA7K7.js";
52
+ } from "./chunk-567KK6XF.js";
46
53
  import {
47
54
  encodeWorkspaceArchive
48
55
  } from "./chunk-3DRXWLJ5.js";
@@ -55,7 +62,7 @@ import {
55
62
  listBranchListing,
56
63
  liveBranchLabel,
57
64
  setLiveBranch
58
- } from "./chunk-5RLAF6RL.js";
65
+ } from "./chunk-M2C54ZBC.js";
59
66
  import {
60
67
  compareToLive,
61
68
  envValuesOf,
@@ -66,50 +73,54 @@ import {
66
73
  sharedSchemaChanges,
67
74
  storedColumnsAfter,
68
75
  uniqueIndexLabels
69
- } from "./chunk-SF2B7MZK.js";
76
+ } from "./chunk-IYXL5NYU.js";
70
77
  import {
71
78
  assertBundleFile,
72
79
  assertBundleInput,
73
80
  loadBundleText,
74
81
  resolveLockPath
75
- } from "./chunk-S5KQIFKJ.js";
82
+ } from "./chunk-DG3APBUJ.js";
76
83
  import {
77
84
  LookupFailedError,
78
85
  isUnansweredLookup,
79
86
  unansweredCause
80
- } from "./chunk-JXKO6JT7.js";
87
+ } from "./chunk-TWVUYS63.js";
81
88
  import {
82
89
  isSignatureRefusal
83
- } from "./chunk-5XVBT6CQ.js";
90
+ } from "./chunk-MBL7CXJ7.js";
84
91
  import {
85
92
  getAccessToken
86
- } from "./chunk-CJ76PSJT.js";
93
+ } from "./chunk-YH2JVJAO.js";
94
+ import {
95
+ readLockFile
96
+ } from "./chunk-CJDPSCMX.js";
87
97
  import {
88
98
  ephemeralLandedOn
89
- } from "./chunk-4QBGE3EO.js";
99
+ } from "./chunk-ORGNLQN6.js";
90
100
  import {
91
101
  pipedYes,
92
102
  retryCommand,
93
103
  withheldNote
94
- } from "./chunk-Z4VN347O.js";
104
+ } from "./chunk-UYFUIHH3.js";
95
105
  import {
96
106
  contextFlags
97
- } from "./chunk-G57RYMKB.js";
107
+ } from "./chunk-3FRGNBOC.js";
98
108
  import {
99
109
  backendDirIn
100
- } from "./chunk-AGD7F7YI.js";
110
+ } from "./chunk-5SCPRXFB.js";
101
111
  import {
102
112
  shellWord
103
113
  } from "./chunk-FWD7AL6N.js";
114
+ import {
115
+ TransportError,
116
+ isTimeoutError
117
+ } from "./chunk-L6HZ67P6.js";
104
118
  import {
105
119
  describeWrite
106
120
  } from "./chunk-4KHEMC32.js";
107
121
  import {
108
122
  seedRowsByTableGuid
109
- } from "./chunk-Y76ERHLK.js";
110
- import {
111
- readLockFile
112
- } from "./chunk-SQPIECXD.js";
123
+ } from "./chunk-FDTET7FZ.js";
113
124
  import {
114
125
  destinationKey,
115
126
  groupNames,
@@ -118,11 +129,7 @@ import {
118
129
  landedKeyForRow,
119
130
  storedColumnsOf,
120
131
  withStoredColumns
121
- } from "./chunk-5YBNXNKU.js";
122
- import {
123
- TransportError,
124
- isTimeoutError
125
- } from "./chunk-HLQH3AXB.js";
132
+ } from "./chunk-MFWF2NZJ.js";
126
133
  import {
127
134
  CliError,
128
135
  EXIT_OUTCOME_UNKNOWN,
@@ -142,11 +149,11 @@ import {
142
149
  warn,
143
150
  writeJson,
144
151
  writeTargetPayload
145
- } from "./chunk-XNZURZ7T.js";
152
+ } from "./chunk-CH23ONYG.js";
146
153
  import {
147
154
  calcSignatureJson,
148
155
  signatureHolds
149
- } from "./chunk-XJU6UAFV.js";
156
+ } from "./chunk-7FIMUFBP.js";
150
157
  import {
151
158
  safeNames
152
159
  } from "./chunk-GSGDWJB5.js";
@@ -157,7 +164,7 @@ import {
157
164
  lockKey,
158
165
  lockNameForObject,
159
166
  sdkKindName2 as sdkKindName
160
- } from "./chunk-OKNE3TWU.js";
167
+ } from "./chunk-5KJBWIDZ.js";
161
168
  import {
162
169
  shellQuote
163
170
  } from "./chunk-5ZSO4T2G.js";
@@ -630,7 +637,7 @@ function isTransientReadFailure(err) {
630
637
  return isUnansweredLookup(err);
631
638
  }
632
639
  async function readLive(auth, dest, branch) {
633
- const { exportWorkspaceBundle } = await import("./workspace-export-3XTVGQVM.js");
640
+ const { exportWorkspaceBundle } = await import("./workspace-export-BIKAYHWJ.js");
634
641
  let failure;
635
642
  for (let attempt = 0; attempt <= LIVE_READ_RETRY_PAUSES_MS.length; attempt++) {
636
643
  try {
@@ -737,7 +744,7 @@ function targetIsEmpty(live) {
737
744
  async function convergedWithLive(live, req, outgoingBundle, pinned) {
738
745
  if (live === void 0 || req.mode !== "merge") return false;
739
746
  if (req.records === true || req.truncate === true) return false;
740
- const { compareToLive: compareToLive2 } = await import("./live-diff-IM4W3ELT.js");
747
+ const { compareToLive: compareToLive2 } = await import("./live-diff-5E2BQWQ7.js");
741
748
  let result;
742
749
  try {
743
750
  result = compareToLive2(
@@ -758,7 +765,7 @@ async function convergedWithLive(live, req, outgoingBundle, pinned) {
758
765
  async function unchangedWithLive(live, req, outgoingBundle, pinned) {
759
766
  if (live === void 0 || req.mode !== "merge") return void 0;
760
767
  if (req.records === true || req.truncate === true) return void 0;
761
- const { compareToLive: compareToLive2, declaredLabels, payloadOf: payloadOf2, SETTINGS_LABEL } = await import("./live-diff-IM4W3ELT.js");
768
+ const { compareToLive: compareToLive2, declaredLabels, payloadOf: payloadOf2, SETTINGS_LABEL } = await import("./live-diff-5E2BQWQ7.js");
762
769
  try {
763
770
  const outgoing = JSON.parse(outgoingBundle);
764
771
  const result = compareToLive2(outgoing, live, new Set(pinned.map((p) => `${p.payloadKey}:${p.name}`)), {
@@ -786,7 +793,7 @@ function markUnchanged(presented, unchanged, noun) {
786
793
  }
787
794
  var REPLACE_DROPS = "which deletes every table's rows there (only seed rows come back)";
788
795
  async function replaceCommandHint(args) {
789
- const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./deploy-command-HJZNYCUY.js");
796
+ const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./deploy-command-OEVEE6UG.js");
790
797
  const valued = /* @__PURE__ */ new Set(["--branch", "--backup-branch", "--expect-live"]);
791
798
  const dropped = /* @__PURE__ */ new Set(["--prune", "--reset-data", "--seed", "--set-live", "--dry-run", "--replace", "--yes", "-y"]);
792
799
  const argv = [];
@@ -817,7 +824,7 @@ function landingTableFields(losses) {
817
824
  };
818
825
  }
819
826
  async function warnAboutLiveLosses(live, req, outgoingBundle, setWhere = "workspace", fromBundle = false, replaceHint = "`xanosdk deploy <source> --to <destination> --replace`.", noun = "workspace", failure, stored) {
820
- const { NO_TABLE_EFFECTS, tableEffectsOf, discloseTableEffects, tableEffectFields, alteringChanges, droppedAndAdded } = await import("./plan-disclosure-QGL5UYQR.js");
827
+ const { NO_TABLE_EFFECTS, tableEffectsOf, discloseTableEffects, tableEffectFields, alteringChanges, droppedAndAdded } = await import("./plan-disclosure-JR52DWXN.js");
821
828
  const none = {
822
829
  ...tableEffectFields(NO_TABLE_EFFECTS),
823
830
  renamedTables: [],
@@ -836,7 +843,7 @@ async function warnAboutLiveLosses(live, req, outgoingBundle, setWhere = "worksp
836
843
  blank();
837
844
  return none;
838
845
  }
839
- const { diffAgainstLive, tableAdditions } = await import("./live-diff-IM4W3ELT.js");
846
+ const { diffAgainstLive, tableAdditions } = await import("./live-diff-5E2BQWQ7.js");
840
847
  let diff;
841
848
  let additions;
842
849
  try {
@@ -1551,7 +1558,7 @@ async function unrecordedTableRenames(args, bundle, live, plan, classified) {
1551
1558
  const held = guidsOf(live);
1552
1559
  const codePinned = codePinnedTables(outgoingDoc, lock, classified);
1553
1560
  const { orphanFixUps } = await import("./cli.js");
1554
- const { setGuidRemedy, clearReplacedCommand } = await import("./keep-data-merge-GUGF7MVZ.js");
1561
+ const { setGuidRemedy, clearReplacedCommand } = await import("./keep-data-merge-TDJOIAVT.js");
1555
1562
  const run = (line) => (line ?? "").replace(/^(renamed|deleted)\? run: /, "");
1556
1563
  const out = [];
1557
1564
  const seen = /* @__PURE__ */ new Set();
@@ -1595,7 +1602,7 @@ async function unrecordedTableRenames(args, bundle, live, plan, classified) {
1595
1602
  return out;
1596
1603
  }
1597
1604
  async function pendingRenameRefusal(frame, pending, prune, branch) {
1598
- const { pendingRenameLines, pendingRenameFollowUp, pendingRenameDetail, sameNameRepin } = await import("./keep-data-merge-GUGF7MVZ.js");
1605
+ const { pendingRenameLines, pendingRenameFollowUp, pendingRenameDetail, sameNameRepin } = await import("./keep-data-merge-TDJOIAVT.js");
1599
1606
  const one = pending.length === 1;
1600
1607
  const lines = pending.flatMap(
1601
1608
  (p) => pendingRenameLines(
@@ -2051,7 +2058,7 @@ async function runReleaseCommand(args, dest, opts = {}) {
2051
2058
  assertBundleFile(args, { command: "deploy" });
2052
2059
  const auth = opts.auth ?? await getAccessToken(args);
2053
2060
  const withSeed = req.mode === "replace" || req.records === true;
2054
- const { discoverToolchainPlugins } = await import("./toolchain-modules-FD5ANV2U.js");
2061
+ const { discoverToolchainPlugins } = await import("./toolchain-modules-OTNSKK52.js");
2055
2062
  const toolchain = await discoverToolchainPlugins(process.cwd(), { frozen: args.frozenLock === true });
2056
2063
  const loaded = await loadBundleText(
2057
2064
  args.dryRun ? { ...args, lockReadOnly: true } : args,
@@ -2077,15 +2084,15 @@ async function runReleaseCommand(args, dest, opts = {}) {
2077
2084
  });
2078
2085
  };
2079
2086
  if (!args.dryRun && args.file !== void 0) {
2080
- const { ignoreBackendSecretFilesRead } = await import("./deploy-command-HJZNYCUY.js");
2087
+ const { ignoreBackendSecretFilesRead } = await import("./deploy-command-OEVEE6UG.js");
2081
2088
  await ignoreBackendSecretFilesRead(args);
2082
2089
  }
2083
2090
  if (args.static !== void 0) {
2084
- const { assertNoSeedLeaks } = await import("./deploy-command-HJZNYCUY.js");
2091
+ const { assertNoSeedLeaks } = await import("./deploy-command-OEVEE6UG.js");
2085
2092
  await assertNoSeedLeaks(args.static, nonPublicSeedValues);
2086
2093
  }
2087
2094
  {
2088
- const { runBundleHooks } = await import("./toolchain-hooks-QVUZ6HZ4.js");
2095
+ const { runBundleHooks } = await import("./toolchain-hooks-7PWCFLSU.js");
2089
2096
  const { readVersion } = await import("./cli.js");
2090
2097
  await runBundleHooks(
2091
2098
  toolchain.loaded,
@@ -2191,8 +2198,8 @@ async function runReleaseCommand(args, dest, opts = {}) {
2191
2198
  pinned: pinned.map((p) => p.guid).filter((g) => g !== void 0)
2192
2199
  }).catch(async (err) => {
2193
2200
  if (err instanceof XanoSdkImportRefusal && err.retryable) {
2194
- const { importInProgressError } = await import("./keep-data-merge-GUGF7MVZ.js");
2195
- const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-JRGMZZAC.js");
2201
+ const { importInProgressError } = await import("./keep-data-merge-TDJOIAVT.js");
2202
+ const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-GL5HCMVB.js");
2196
2203
  const retry = retryCommand2(args);
2197
2204
  throw importInProgressError(
2198
2205
  describeWriteTarget({ base: destBase, workspaceId, label: destShownLabel }),
@@ -2312,10 +2319,10 @@ async function runReleaseCommand(args, dest, opts = {}) {
2312
2319
  }
2313
2320
  const dryRunUpToDate = req.branch === void 0 && (plan.operations.length === 0 || converged);
2314
2321
  if (req.mode === "merge" && destIsTenant && live !== void 0 && !dryRunUpToDate) {
2315
- const { liveTableTriggers, tableTriggerMergeError } = await import("./keep-data-merge-GUGF7MVZ.js");
2322
+ const { liveTableTriggers, tableTriggerMergeError } = await import("./keep-data-merge-TDJOIAVT.js");
2316
2323
  const triggers = liveTableTriggers(live);
2317
2324
  if (triggers.length > 0) {
2318
- const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-JRGMZZAC.js");
2325
+ const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-GL5HCMVB.js");
2319
2326
  const replace = retryCommand2(args, { add: ["--replace"], drop: ["--prune", "--yes", "-y"] });
2320
2327
  throw tableTriggerMergeError(destNoun, triggers, {
2321
2328
  command: replace.command,
@@ -2324,7 +2331,7 @@ async function runReleaseCommand(args, dest, opts = {}) {
2324
2331
  }
2325
2332
  }
2326
2333
  if (req.mode === "merge" && live !== void 0 && !dryRunUpToDate && losses.storageChanges.length > 0) {
2327
- const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-JRGMZZAC.js");
2334
+ const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-GL5HCMVB.js");
2328
2335
  const replace = retryCommand2(args, { add: ["--replace"], drop: ["--prune", "--yes", "-y"] });
2329
2336
  await assertStorageModesKept(losses.storageChanges, tableRowCounter(auth, { workspaceId, base: destBase }), {
2330
2337
  target: destNoun,
@@ -2356,6 +2363,7 @@ async function runReleaseCommand(args, dest, opts = {}) {
2356
2363
  // Always present; a dry run records nothing — what it would land is
2357
2364
  // not landed, and the record is what a prune deletes by.
2358
2365
  landingRecord: null,
2366
+ syncBaseline: null,
2359
2367
  workspaceId,
2360
2368
  destination: destinationPayload(resolvedDest, dest, auth),
2361
2369
  // The verdict the real run would reach, said up front: a wrapper
@@ -2407,7 +2415,7 @@ async function runReleaseCommand(args, dest, opts = {}) {
2407
2415
  assertLiveWorkspaceWasRead(live, destNoun, scopeBranch, liveRead.failure, liveKind);
2408
2416
  reportPlannedCanonicalMoves(canonicalMoves, "will", movesWhen);
2409
2417
  if (req.branch !== void 0 && args.setLive && !args.yes && process.stdin.isTTY !== true) {
2410
- const { yesRerun } = await import("./retry-command-JRGMZZAC.js");
2418
+ const { yesRerun } = await import("./retry-command-GL5HCMVB.js");
2411
2419
  const { rerun, note } = yesRerun(args, "deploy");
2412
2420
  throw needsConfirmation(
2413
2421
  `Make "${req.branch}" the live branch?${movesClause(canonicalMoves)} (or drop --set-live to stage it)`,
@@ -2444,9 +2452,10 @@ async function runReleaseCommand(args, dest, opts = {}) {
2444
2452
  workspaceRename: losses.workspaceRename ?? null,
2445
2453
  workspaceSettingsNotApplied: withheldSettings,
2446
2454
  landingRecord: null,
2455
+ syncBaseline: null,
2447
2456
  ...seeded.length > 0 ? { seedRows: seeded } : {}
2448
2457
  });
2449
- const { yesRerun } = await import("./retry-command-JRGMZZAC.js");
2458
+ const { yesRerun } = await import("./retry-command-GL5HCMVB.js");
2450
2459
  const { rerun, note } = yesRerun(args, "deploy");
2451
2460
  const ok = await confirm(`Apply this plan to ${destNoun}?${seedOverwriteClause(seeded)}${movesClause(canonicalMoves, movesWhen === void 0 ? "It" : "Once live, it")}`, {
2452
2461
  flag: "--yes",
@@ -2493,7 +2502,7 @@ Retry, or drop \`--backup-branch\` to deploy without one.`,
2493
2502
  );
2494
2503
  } catch (err) {
2495
2504
  if (err instanceof XanoSdkImportRefusal) {
2496
- const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-JRGMZZAC.js");
2505
+ const { retryCommand: retryCommand2, withheldNote: withheldNote2 } = await import("./retry-command-GL5HCMVB.js");
2497
2506
  const retry = retryCommand2(args);
2498
2507
  reportApplyRefusal(
2499
2508
  err,
@@ -2584,8 +2593,10 @@ Retry, or drop \`--backup-branch\` to deploy without one.`,
2584
2593
  priorStored,
2585
2594
  req.mode === "replace" ? "rebuild" : "merge"
2586
2595
  );
2587
- const landingRecord = landingDest === void 0 ? null : args.file === void 0 && args.lockPath === void 0 ? recordForeignLanding({
2588
- lockPath: landingLockPath(args),
2596
+ const sentForeign = args.file === void 0 && args.lockPath === void 0;
2597
+ const landingLock = sentForeign ? landingLockPath(args) : landingLockPath(args, { entryFile: args.file, fromProject: false });
2598
+ const landingRecord = landingDest === void 0 ? null : sentForeign ? recordForeignLanding({
2599
+ lockPath: landingLock,
2589
2600
  instance: auth.instance,
2590
2601
  dest: landingDest,
2591
2602
  bundle: parsedOrUndefined(bundle),
@@ -2593,7 +2604,7 @@ Retry, or drop \`--backup-branch\` to deploy without one.`,
2593
2604
  removed: pruned,
2594
2605
  ...storedAfter !== void 0 ? { stored: storedAfter } : {}
2595
2606
  }) : recordLanding({
2596
- lockPath: landingLockPath(args, { entryFile: args.file, fromProject: false }),
2607
+ lockPath: landingLock,
2597
2608
  instance: auth.instance,
2598
2609
  dest: landingDest,
2599
2610
  update: {
@@ -2602,6 +2613,21 @@ Retry, or drop \`--backup-branch\` to deploy without one.`,
2602
2613
  removed: pruned
2603
2614
  }
2604
2615
  });
2616
+ const syncBaseline = landingDest?.kind !== "workspace" ? null : await recordDeploySync();
2617
+ async function recordDeploySync() {
2618
+ if (landingDest?.kind !== "workspace" || landingLock === void 0 || !existsSync(landingLock)) return null;
2619
+ const sent = parsedOrUndefined(bundle);
2620
+ const branch = req.mode === "replace" ? DEFAULT_BRANCH_LABEL : applyResponse?.branch ?? preview.branch;
2621
+ const stored = upToDate ? live : (await readLive(auth, resolvedDest, req.branch !== void 0 ? branch : void 0)).live;
2622
+ const digests = stored !== void 0 ? syncDigests({ held: [stored], heldLabels: new Set(Object.keys(objectDigests(sent, "carried"))) }) : syncDigests({ held: [sent], others: req.mode === "replace" ? [] : [live] });
2623
+ return recordSync({
2624
+ lockPath: landingLock,
2625
+ target: { instance: auth.instance, workspaceId: landingDest.workspaceId, branch },
2626
+ digests,
2627
+ by: "deploy",
2628
+ complete: stored !== void 0 || req.mode === "replace" || live !== void 0
2629
+ });
2630
+ }
2605
2631
  const servedDifferences = canonicalDifferences((applyResponse ?? preview).canonicals);
2606
2632
  reportCanonicalDifferences(servedDifferences, planContext);
2607
2633
  if (!args.dryRun) opts.afterLanding?.(parsedOrUndefined(bundle));
@@ -2615,6 +2641,7 @@ Retry, or drop \`--backup-branch\` to deploy without one.`,
2615
2641
  dryRun: false,
2616
2642
  declined: false,
2617
2643
  landingRecord,
2644
+ syncBaseline,
2618
2645
  workspaceId,
2619
2646
  plan: planForOutput(plan, presented, destIsTenant, converged),
2620
2647
  conflicts: conflictsForOutput((applyResponse ?? preview).conflicts, planContext),
@@ -2672,7 +2699,7 @@ Retry, or drop \`--backup-branch\` to deploy without one.`,
2672
2699
  if (isMachineOutput(args)) writeJson(summary);
2673
2700
  assertStaticMatchesServedUrls(servedDifferences, planContext);
2674
2701
  }
2675
- const { buildStaticEnv, deployStaticTo } = await import("./deploy-command-HJZNYCUY.js");
2702
+ const { buildStaticEnv, deployStaticTo } = await import("./deploy-command-OEVEE6UG.js");
2676
2703
  const env = buildStaticEnv(destBase, args.staticEnv);
2677
2704
  const explicit = Object.keys(args.staticEnv).length > 0;
2678
2705
  const to = dest?.kind === "tenant" ? `${dest.type === "ephemeral" ? "ephemeral" : "tenant"}:${dest.name ?? ""}` : "workspace";
@@ -2724,14 +2751,14 @@ function setLiveRollback(previous, args) {
2724
2751
  async function assertReleaseIdentitiesFree(args, auth, opts) {
2725
2752
  const tenant = opts.tenant;
2726
2753
  const target = tenant === void 0 ? { baseUrl: auth.instance, workspaceId: auth.workspaceId } : { baseUrl: tenant.base, workspaceId: tenant.workspaceId };
2727
- const { detectXanoSdkImportRoute } = await import("./xanosdk-import-E3WSIYUE.js");
2754
+ const { detectXanoSdkImportRoute } = await import("./xanosdk-import-S7A3CVBN.js");
2728
2755
  let capable;
2729
2756
  try {
2730
2757
  capable = await detectXanoSdkImportRoute(auth, target);
2731
2758
  } catch (err) {
2732
2759
  if (err?.status === 501) capable = false;
2733
2760
  else {
2734
- const { unreachableProbeError } = await import("./keep-data-merge-GUGF7MVZ.js");
2761
+ const { unreachableProbeError } = await import("./keep-data-merge-TDJOIAVT.js");
2735
2762
  const retry = retryCommand(args, {
2736
2763
  add: pipedYes(args) === "" ? [] : ["--yes"],
2737
2764
  command: [opts.verb, ...args.positionals.map(shellWord)].join(" ")
@@ -2820,4 +2847,4 @@ export {
2820
2847
  setLiveRollback,
2821
2848
  assertReleaseIdentitiesFree
2822
2849
  };
2823
- //# sourceMappingURL=chunk-Z2BRSQ6M.js.map
2850
+ //# sourceMappingURL=chunk-I6XRUU6U.js.map
@@ -0,0 +1,257 @@
1
+ import {
2
+ MANIFEST_HEADER,
3
+ ROUTES_MANIFEST_BASENAME,
4
+ RouteManifestError
5
+ } from "./chunk-LBJA7IEM.js";
6
+ import {
7
+ byCodeUnit
8
+ } from "./chunk-WAVNUTMT.js";
9
+ import {
10
+ blockPackages,
11
+ composeBlock,
12
+ findBlock
13
+ } from "./chunk-LJM5CIY4.js";
14
+ import {
15
+ UsageError,
16
+ detail,
17
+ info,
18
+ warn
19
+ } from "./chunk-CH23ONYG.js";
20
+
21
+ // src/emit/routes-manifest-modules.ts
22
+ var MODULE_DIALECT = {
23
+ begin: (pkg) => `// xanosdk:begin ${pkg}`,
24
+ end: (pkg) => `// xanosdk:end ${pkg}`,
25
+ stamp: (version) => `// xanosdk:version ${version} - generated; edits inside this block are overwritten`,
26
+ parseStamp: (block) => /^\/\/ xanosdk:version (\S+)/m.exec(block)?.[1] ?? null
27
+ };
28
+ var IMPORTS_LINE = "// xanosdk:imports ";
29
+ var moduleSpec = (pkg) => ({ dialect: MODULE_DIALECT, pkg, file: ROUTES_MANIFEST_BASENAME });
30
+ var BARE_SPECIFIER = /^(?:@[a-z0-9~][\w.~-]*\/)?[a-z0-9~][\w.~-]*(?:\/[\w.~@-]+)*$/i;
31
+ var IDENTIFIER = /^[A-Za-z_$][\w$]*$/;
32
+ var STATIC_IMPORT = /^import(?:\s+type)?(?:\s*["'{*]|\s+[A-Za-z_$][\w$]*\s*(?:,|from\b))/;
33
+ var RE_EXPORT = /^[ \t]*export\s+(?:type\s+)?(?:\*(?:\s+as\s+[A-Za-z_$][\w$]*)?|\{[^}]*\})\s*from\s*["']/m;
34
+ var SDK_LOAD = /\b(?:import|require)\s*\(\s*["'`]@xano\/sdk(?:\/|["'`])/;
35
+ function checkModuleSection(pkg, section) {
36
+ const refuse = (why) => {
37
+ throw new RouteManifestError(`${pkg}: its routes.gen.ts section ${why}`);
38
+ };
39
+ if (section === null || typeof section !== "object") return refuse("is not an object with a `source` string.");
40
+ if (typeof section.then === "function") {
41
+ return refuse("is a Promise. `routesManifest` must be synchronous: every writer of the file has to produce the same bytes, and the decode paths write it synchronously.");
42
+ }
43
+ const { source, imports } = section;
44
+ if (typeof source !== "string") return refuse("has no `source` string.");
45
+ const lines = source.split(/\r?\n/);
46
+ const trimmed = lines.map((line) => line.trim());
47
+ const markers = [MODULE_DIALECT.begin("").trim(), MODULE_DIALECT.end("").trim()];
48
+ const forged = trimmed.find((line) => markers.some((marker) => line.startsWith(marker)));
49
+ if (forged !== void 0) {
50
+ return refuse(`has a line that spells a block marker (${forged}); the file's blocks are found by counting them.`);
51
+ }
52
+ const first = lines.find((line) => line.trim() !== "");
53
+ if (first?.startsWith(IMPORTS_LINE)) {
54
+ return refuse(`starts with a line that spells the block's imports line (${first.trim()}); declare imports in \`imports\`.`);
55
+ }
56
+ const written = trimmed.find((line) => STATIC_IMPORT.test(line) || SDK_LOAD.test(line)) ?? RE_EXPORT.exec(source)?.[0].trim().split(/\r?\n/)[0];
57
+ if (written !== void 0) {
58
+ return refuse(`writes an import in its source (${written}); declare imports in \`imports\`.`);
59
+ }
60
+ if (imports !== void 0 && !Array.isArray(imports)) return refuse("has `imports` that is not an array.");
61
+ const merged = /* @__PURE__ */ new Map();
62
+ for (const entry of imports ?? []) {
63
+ const { from, names } = entry ?? {};
64
+ if (typeof from !== "string") return refuse("declares an import with no `from` string.");
65
+ if (from === "@xano/sdk" || from.startsWith("@xano/sdk/")) {
66
+ return refuse(
67
+ `imports from ${JSON.stringify(from)}. The manifest exists so a frontend can skip the SDK runtime; a module section may not import it.`
68
+ );
69
+ }
70
+ if (!BARE_SPECIFIER.test(from) || from.split("/").some((part) => part === "." || part === "..")) {
71
+ return refuse(
72
+ `imports from ${JSON.stringify(from)}, which is not a bare package specifier. A relative or absolute path resolves against wherever the file is written, and a protocol is not a package the project depends on.`
73
+ );
74
+ }
75
+ if (!Array.isArray(names) || names.length === 0) return refuse(`imports nothing by name from ${JSON.stringify(from)}.`);
76
+ for (const name of names) {
77
+ if (typeof name !== "string" || !IDENTIFIER.test(name)) {
78
+ return refuse(`imports ${JSON.stringify(name)} from ${JSON.stringify(from)}, which is not a plain identifier.`);
79
+ }
80
+ merged.set(from, (merged.get(from) ?? /* @__PURE__ */ new Set()).add(name));
81
+ }
82
+ }
83
+ return [...merged].sort(([a], [b]) => byCodeUnit(a, b)).map(([from, names]) => ({ from, names: [...names].sort(byCodeUnit) }));
84
+ }
85
+ function composeRoutesManifest(core, modules) {
86
+ if (!core.startsWith(MANIFEST_HEADER)) {
87
+ throw new RouteManifestError("composeRoutesManifest: `core` is not a rendered route manifest.");
88
+ }
89
+ const imports = /* @__PURE__ */ new Map();
90
+ const blocks = [];
91
+ let previous;
92
+ for (const { pkg, version, section } of [...modules].sort((a, b) => byCodeUnit(a.pkg, b.pkg))) {
93
+ if (pkg === previous) {
94
+ throw new RouteManifestError(`${pkg}: two routes.gen.ts sections for one module; a module contributes one.`);
95
+ }
96
+ previous = pkg;
97
+ const own = checkModuleSection(pkg, section);
98
+ if (section.source.trim() === "") continue;
99
+ for (const { from, names } of own) {
100
+ for (const name of names) imports.set(from, (imports.get(from) ?? /* @__PURE__ */ new Set()).add(name));
101
+ }
102
+ const lines = own.length > 0 ? [`${IMPORTS_LINE}${JSON.stringify(own)}`, section.source] : [section.source];
103
+ try {
104
+ blocks.push(composeBlock(moduleSpec(pkg), lines, version));
105
+ } catch (error) {
106
+ throw new RouteManifestError(error instanceof Error ? error.message : String(error));
107
+ }
108
+ }
109
+ if (blocks.length === 0) return core;
110
+ const importLines = [...imports].sort(([a], [b]) => byCodeUnit(a, b)).map(([from, names]) => `import { ${[...names].sort(byCodeUnit).join(", ")} } from ${JSON.stringify(from)};
111
+ `);
112
+ return `${MANIFEST_HEADER}${importLines.join("")}${core.slice(MANIFEST_HEADER.length)}${blocks.map((b) => `
113
+ ${b}
114
+ `).join("")}`;
115
+ }
116
+ function parseModuleSections(text, only) {
117
+ return blockPackages(text, MODULE_DIALECT).filter((pkg) => only === void 0 || only.has(pkg)).sort(byCodeUnit).map((pkg) => {
118
+ const fail = (why) => {
119
+ throw new RouteManifestError(
120
+ `${pkg}: its block in ${ROUTES_MANIFEST_BASENAME} ${why} Repair or delete the block by hand, then regenerate the file.`
121
+ );
122
+ };
123
+ let span;
124
+ try {
125
+ span = findBlock(text, moduleSpec(pkg));
126
+ } catch (error) {
127
+ return fail(`cannot be read: ${error instanceof Error ? error.message : String(error)}.`);
128
+ }
129
+ const lines = span.text.split(/\r?\n/);
130
+ const version = MODULE_DIALECT.parseStamp(lines[1] ?? "");
131
+ if (version === null || lines[2] !== "") return fail("has no version stamp under its begin marker.");
132
+ let body = lines.slice(3, -1);
133
+ let imports;
134
+ if (body[0]?.startsWith(IMPORTS_LINE)) {
135
+ try {
136
+ imports = JSON.parse(body[0].slice(IMPORTS_LINE.length));
137
+ } catch {
138
+ return fail("has an imports line that is not valid JSON.");
139
+ }
140
+ body = body.slice(1);
141
+ }
142
+ const section = { ...imports === void 0 ? {} : { imports }, source: body.join("\n") };
143
+ checkModuleSection(pkg, section);
144
+ return { pkg, version, section };
145
+ });
146
+ }
147
+
148
+ // src/emit/toolchain-hooks.ts
149
+ function redactEnvValues(payload) {
150
+ const env = payload["env"];
151
+ if (!Array.isArray(env)) return payload;
152
+ return {
153
+ ...payload,
154
+ env: env.map(
155
+ (entry) => typeof entry === "object" && entry !== null && "value" in entry ? { ...entry, value: "" } : entry
156
+ )
157
+ };
158
+ }
159
+ function report(pkg, result) {
160
+ if (result.message !== void 0 && result.message !== "") {
161
+ if (result.failed === true) warn(`${pkg} \u2014 ${result.message}`, "toolchain.failed");
162
+ else info(result.message);
163
+ }
164
+ for (const line of result.warnings ?? []) detail(line);
165
+ }
166
+ function handleThrow(pkg, error, frozen) {
167
+ const why = error instanceof Error ? error.message : String(error);
168
+ if (frozen) {
169
+ throw new UsageError(
170
+ `${pkg} failed while checking this bundle, so whatever it verifies was not verified \u2014 and this run was asked to verify, not to write:
171
+ ${why}`
172
+ );
173
+ }
174
+ warn(`${pkg} failed and was skipped.`, "toolchain.failed", [why]);
175
+ }
176
+ async function fireOnBundle(plugins, ctx) {
177
+ let failed = false;
178
+ const bundle = { ...ctx.bundle, payload: redactEnvValues(ctx.bundle.payload) };
179
+ for (const { pkg, plugin, config } of plugins) {
180
+ if (plugin.onBundle === void 0) continue;
181
+ try {
182
+ const result = await plugin.onBundle({ ...ctx, bundle, config });
183
+ report(pkg, result);
184
+ if (result.failed === true) failed = true;
185
+ } catch (error) {
186
+ handleThrow(pkg, error, ctx.frozen);
187
+ }
188
+ }
189
+ return { failed };
190
+ }
191
+ async function fireOnPreflight(plugins, ctx) {
192
+ let failed = false;
193
+ const payloads = {
194
+ exportedPayload: redactEnvValues(ctx.exportedPayload),
195
+ remappedPayload: redactEnvValues(ctx.remappedPayload)
196
+ };
197
+ for (const { pkg, plugin, config } of plugins) {
198
+ if (plugin.onPreflight === void 0) continue;
199
+ try {
200
+ const result = await plugin.onPreflight({ ...ctx, ...payloads, config });
201
+ report(pkg, result);
202
+ if (result.failed === true) failed = true;
203
+ } catch (error) {
204
+ const why = error instanceof Error ? error.message : String(error);
205
+ warn(`${pkg} could not complete its check.`, "toolchain.failed", [why]);
206
+ failed = true;
207
+ }
208
+ }
209
+ return { failed };
210
+ }
211
+ async function runBundleHooks(plugins, ctx, consequence) {
212
+ if (plugins.length === 0) return;
213
+ const outcome = await fireOnBundle(plugins, ctx);
214
+ if (outcome.failed) {
215
+ throw new UsageError(
216
+ `A toolchain module reported that its check did not pass${consequence}. See the report above.`
217
+ );
218
+ }
219
+ }
220
+ function fireRoutesManifest(plugins, ctx) {
221
+ const results = [];
222
+ for (const { pkg, version, plugin, config } of [...plugins].sort((a, b) => byCodeUnit(a.pkg, b.pkg))) {
223
+ if (plugin.routesManifest === void 0) continue;
224
+ try {
225
+ const section = plugin.routesManifest({ ...ctx, config });
226
+ if (typeof section?.then === "function") {
227
+ Promise.resolve(section).catch(() => {
228
+ });
229
+ }
230
+ const imports = checkModuleSection(pkg, section);
231
+ results.push({
232
+ kind: "section",
233
+ pkg,
234
+ version,
235
+ section: { ...imports.length > 0 ? { imports } : {}, source: section.source }
236
+ });
237
+ } catch (error) {
238
+ results.push({ kind: "failed", pkg, version, why: error instanceof Error ? error.message : String(error) });
239
+ }
240
+ }
241
+ return results;
242
+ }
243
+ function anyDeclares(plugins, hook) {
244
+ return plugins.some((p) => p.plugin[hook] !== void 0);
245
+ }
246
+
247
+ export {
248
+ composeRoutesManifest,
249
+ parseModuleSections,
250
+ redactEnvValues,
251
+ fireOnBundle,
252
+ fireOnPreflight,
253
+ runBundleHooks,
254
+ fireRoutesManifest,
255
+ anyDeclares
256
+ };
257
+ //# sourceMappingURL=chunk-IPNN2KRW.js.map