@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
@@ -230,13 +230,20 @@ function appNamesByGuid(appSection) {
230
230
  return map;
231
231
  }
232
232
  var CANONICAL_SOURCES = /* @__PURE__ */ new Set(["code", "minted", "adopted"]);
233
+ var SYNC_SOURCES = /* @__PURE__ */ new Set(["deploy", "promote", "pull", "init"]);
234
+ function withSyncedOf(base, lock) {
235
+ return lock.synced !== void 0 && Object.keys(lock.synced).length > 0 ? { ...base, synced: lock.synced } : base;
236
+ }
233
237
  var DESTINATION_KEY = /^[^/\s]+\/(?:workspace\/[1-9]\d*|tenant\/[^/\s]+)$/;
234
238
  var EPHEMERAL_DESTINATION_KEY = /^[^/\s]+\/ephemeral\/[^/\s]+$/;
235
239
  function emptyLock() {
236
240
  return { version: LOCK_VERSION, objects: {} };
237
241
  }
238
242
  function withObjects(lock, objects) {
239
- return lock.landed !== void 0 && Object.keys(lock.landed).length > 0 ? { version: lock.version, objects, landed: lock.landed } : { version: lock.version, objects };
243
+ return withSyncedOf(
244
+ lock.landed !== void 0 && Object.keys(lock.landed).length > 0 ? { version: lock.version, objects, landed: lock.landed } : { version: lock.version, objects },
245
+ lock
246
+ );
240
247
  }
241
248
  function findDuplicateRawKey(text) {
242
249
  const stack = [];
@@ -297,7 +304,7 @@ function parseLockReport(text, path = "xano.lock", opts = {}) {
297
304
  if (/^(?:<{7}|>{7})(?: |$)|^={7}$/m.test(text)) {
298
305
  fail(
299
306
  path,
300
- `it holds unresolved merge-conflict markers (\`<<<<<<<\`, \`=======\`, \`>>>>>>>\`). Resolve it as the union of both sides: keep every entry under \`objects\` (and \`landed\`) from each, delete the markers, and fix the commas. Where both sides renamed one object, two keys then share a guid \u2014 keep the one your code exports and remove the other with \`xanosdk lock prune --identity-only --yes <key>\`.`
307
+ `it holds unresolved merge-conflict markers (\`<<<<<<<\`, \`=======\`, \`>>>>>>>\`). Resolve it as the union of both sides: keep every entry under \`objects\` (and \`landed\`) from each, delete the markers, and fix the commas. Under \`synced\`, keep either side's baseline for a branch, or delete it: a missing baseline only means \`workspace diff\` cannot say which side changed until the next deploy or pull. Where both sides renamed one object, two keys then share a guid \u2014 keep the one your code exports and remove the other with \`xanosdk lock prune --identity-only --yes <key>\`.`
301
308
  );
302
309
  }
303
310
  const dup = findDuplicateRawKey(text);
@@ -328,8 +335,14 @@ function parseLockReport(text, path = "xano.lock", opts = {}) {
328
335
  }
329
336
  const objects = validateLockObjects(obj.objects, path, opts);
330
337
  const landed = obj.landed === void 0 ? void 0 : validateLanded(obj.landed, path, droppedLandings);
338
+ const synced = obj.synced === void 0 ? void 0 : validateSynced(obj.synced);
331
339
  return {
332
- lock: { version: LOCK_VERSION, objects, ...landed !== void 0 && Object.keys(landed).length > 0 ? { landed } : {} },
340
+ lock: {
341
+ version: LOCK_VERSION,
342
+ objects,
343
+ ...landed !== void 0 && Object.keys(landed).length > 0 ? { landed } : {},
344
+ ...synced !== void 0 && Object.keys(synced).length > 0 ? { synced } : {}
345
+ },
333
346
  droppedLandings
334
347
  };
335
348
  }
@@ -369,6 +382,47 @@ function validateLanded(raw, path, dropped) {
369
382
  }
370
383
  return out;
371
384
  }
385
+ function sortedDigests(digests) {
386
+ return Object.fromEntries(Object.entries(digests).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0));
387
+ }
388
+ var WORKSPACE_DESTINATION_KEY = /^[^/\s]+\/workspace\/[1-9]\d*$/;
389
+ function validateSynced(raw) {
390
+ const out = {};
391
+ if (!isPlainRecord(raw)) return out;
392
+ for (const [dest, branches] of Object.entries(raw)) {
393
+ if (!WORKSPACE_DESTINATION_KEY.test(dest) || !isPlainRecord(branches)) continue;
394
+ const record = {};
395
+ for (const [branch, entry] of Object.entries(branches)) {
396
+ const baseline = readBaseline(entry);
397
+ if (branch.trim() !== "" && baseline !== void 0) record[branch] = baseline;
398
+ }
399
+ if (Object.keys(record).length > 0) out[dest] = record;
400
+ }
401
+ return out;
402
+ }
403
+ function isPlainRecord(v) {
404
+ return v !== null && typeof v === "object" && !Array.isArray(v);
405
+ }
406
+ function readDigests(raw) {
407
+ if (!isPlainRecord(raw)) return void 0;
408
+ const out = {};
409
+ for (const [label, digest] of Object.entries(raw)) {
410
+ if (typeof digest !== "string" || digest === "") return void 0;
411
+ out[label] = digest;
412
+ }
413
+ return out;
414
+ }
415
+ function readBaseline(raw) {
416
+ if (!isPlainRecord(raw)) return void 0;
417
+ const { at, by, complete, scheme } = raw;
418
+ const objects = readDigests(raw.objects);
419
+ const others = raw.others === void 0 ? {} : readDigests(raw.others);
420
+ if (typeof at !== "string" || Number.isNaN(Date.parse(at))) return void 0;
421
+ if (typeof by !== "string" || !SYNC_SOURCES.has(by) || typeof complete !== "boolean") return void 0;
422
+ if (typeof scheme !== "number" || !Number.isInteger(scheme) || scheme < 1) return void 0;
423
+ if (objects === void 0 || others === void 0) return void 0;
424
+ return { at, by, scheme, complete, objects, ...Object.keys(others).length > 0 ? { others } : {} };
425
+ }
372
426
  function validateLockModel(lock, label, observed) {
373
427
  if (observed !== void 0) {
374
428
  assertEmittedCanonicalsUnique(observed, label);
@@ -593,8 +647,31 @@ function serializeLock(lock) {
593
647
  }
594
648
  landed[dest] = record;
595
649
  }
650
+ const synced = {};
651
+ for (const dest of Object.keys(lock.synced ?? {}).sort()) {
652
+ const src = lock.synced[dest];
653
+ const record = {};
654
+ for (const branch of Object.keys(src).sort()) {
655
+ const b = src[branch];
656
+ const others = b.others === void 0 ? {} : sortedDigests(b.others);
657
+ record[branch] = {
658
+ at: b.at,
659
+ by: b.by,
660
+ scheme: b.scheme,
661
+ complete: b.complete,
662
+ objects: sortedDigests(b.objects),
663
+ ...Object.keys(others).length > 0 ? { others } : {}
664
+ };
665
+ }
666
+ if (Object.keys(record).length > 0) synced[dest] = record;
667
+ }
596
668
  return JSON.stringify(
597
- Object.keys(landed).length > 0 ? { version: lock.version, objects, landed } : { version: lock.version, objects },
669
+ {
670
+ version: lock.version,
671
+ objects,
672
+ ...Object.keys(landed).length > 0 ? { landed } : {},
673
+ ...Object.keys(synced).length > 0 ? { synced } : {}
674
+ },
598
675
  null,
599
676
  2
600
677
  ) + "\n";
@@ -967,6 +1044,7 @@ export {
967
1044
  lockNameForObject,
968
1045
  identityNamesByGuid,
969
1046
  appNamesByGuid,
1047
+ withSyncedOf,
970
1048
  DESTINATION_KEY,
971
1049
  emptyLock,
972
1050
  withObjects,
@@ -984,4 +1062,4 @@ export {
984
1062
  withoutGuidSources,
985
1063
  mergeObserved
986
1064
  };
987
- //# sourceMappingURL=chunk-OKNE3TWU.js.map
1065
+ //# sourceMappingURL=chunk-5KJBWIDZ.js.map
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-7KPKDHHI.js";
7
7
  import {
8
8
  buildBundle
9
- } from "./chunk-XJU6UAFV.js";
9
+ } from "./chunk-7FIMUFBP.js";
10
10
  import {
11
11
  checkAddonAttachments,
12
12
  checkAddonOutput,
@@ -71,7 +71,7 @@ import {
71
71
  postEnvelopeMisreads,
72
72
  unnestedEnvelopeReads,
73
73
  walkNodes
74
- } from "./chunk-JSEVKRVJ.js";
74
+ } from "./chunk-T4LJ5UR2.js";
75
75
  import {
76
76
  WORKSPACE_HISTORY_TYPES,
77
77
  assertNameAsStored,
@@ -101,7 +101,7 @@ import {
101
101
  DiagnosticBag,
102
102
  allowableWarnings,
103
103
  setDiagnosticSink
104
- } from "./chunk-GPI3OWRE.js";
104
+ } from "./chunk-YHB34BN6.js";
105
105
  import {
106
106
  CANONICAL_PAYLOAD_KEYS,
107
107
  LOCK_PAYLOAD_KEYS,
@@ -112,7 +112,7 @@ import {
112
112
  mintCanonical,
113
113
  recordObserved,
114
114
  sdkKindName
115
- } from "./chunk-OKNE3TWU.js";
115
+ } from "./chunk-5KJBWIDZ.js";
116
116
  import {
117
117
  HOSTED_ICON_KINDS,
118
118
  pendingHostedFile
@@ -1894,4 +1894,4 @@ export {
1894
1894
  Xano,
1895
1895
  workspace
1896
1896
  };
1897
- //# sourceMappingURL=chunk-SRX6B544.js.map
1897
+ //# sourceMappingURL=chunk-5QMJOE2K.js.map
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  XANO_DIR
3
- } from "./chunk-F6IKWAIU.js";
3
+ } from "./chunk-DIWF7L33.js";
4
4
  import {
5
5
  projectRootFrom
6
- } from "./chunk-ROY4YAEQ.js";
6
+ } from "./chunk-HU7F56VF.js";
7
7
  import {
8
8
  relForwardSlash
9
- } from "./chunk-XNZURZ7T.js";
9
+ } from "./chunk-CH23ONYG.js";
10
10
 
11
11
  // src/emit/backend-dir.ts
12
12
  import { existsSync, readdirSync } from "fs";
@@ -67,4 +67,4 @@ export {
67
67
  backendDirIn,
68
68
  resolveBackendDir
69
69
  };
70
- //# sourceMappingURL=chunk-AGD7F7YI.js.map
70
+ //# sourceMappingURL=chunk-5SCPRXFB.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  classifyFailure
3
- } from "./chunk-5D6DGF3W.js";
3
+ } from "./chunk-L472YIGG.js";
4
4
  import {
5
5
  describeWrite
6
6
  } from "./chunk-4KHEMC32.js";
@@ -14,7 +14,7 @@ import {
14
14
  warn,
15
15
  writeJson,
16
16
  writeTargetPayload
17
- } from "./chunk-XNZURZ7T.js";
17
+ } from "./chunk-CH23ONYG.js";
18
18
 
19
19
  // src/emit/operation-result.ts
20
20
  var SERVER_PROCESSING_BOUND_MS = 6e5;
@@ -253,4 +253,4 @@ export {
253
253
  OperationError,
254
254
  runOperation
255
255
  };
256
- //# sourceMappingURL=chunk-SNGFEESM.js.map
256
+ //# sourceMappingURL=chunk-5ZG7V2VW.js.map
@@ -10,7 +10,7 @@ import {
10
10
  displayLockKey,
11
11
  lockNameForObject,
12
12
  sdkKindName
13
- } from "./chunk-OKNE3TWU.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-XJU6UAFV.js.map
413
+ //# sourceMappingURL=chunk-7FIMUFBP.js.map
@@ -6,7 +6,7 @@ import {
6
6
  UsageError,
7
7
  style,
8
8
  terminalText
9
- } from "./chunk-XNZURZ7T.js";
9
+ } from "./chunk-CH23ONYG.js";
10
10
 
11
11
  // src/emit/prompt.ts
12
12
  import { createInterface } from "readline";
@@ -174,4 +174,4 @@ export {
174
174
  STDIN_IDLE_MS,
175
175
  readStdin
176
176
  };
177
- //# sourceMappingURL=chunk-AESE434J.js.map
177
+ //# sourceMappingURL=chunk-7M6JP3FS.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  sdkKindName
3
- } from "./chunk-OKNE3TWU.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-K6CB5TKM.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
@@ -1,26 +1,30 @@
1
1
  import {
2
2
  createOperation,
3
3
  runOperation
4
- } from "./chunk-SNGFEESM.js";
4
+ } from "./chunk-5ZG7V2VW.js";
5
5
  import {
6
6
  fetchWorkspaceBundle
7
- } from "./chunk-LZDA6SVD.js";
7
+ } from "./chunk-DXZTL7NA.js";
8
8
  import {
9
9
  assertReleaseIdentitiesFree,
10
10
  pinnedCanonicalGuids,
11
11
  setLiveRollback
12
- } from "./chunk-Z2BRSQ6M.js";
12
+ } from "./chunk-I6XRUU6U.js";
13
+ import {
14
+ objectDigests,
15
+ syncDigests
16
+ } from "./chunk-JI3BLXWQ.js";
17
+ import {
18
+ asWorkspaceArchive,
19
+ resolveProjectEntry
20
+ } from "./chunk-NV37YGOV.js";
13
21
  import {
14
22
  liveBranchMismatch,
15
23
  liveMismatch
16
- } from "./chunk-YSLMMR2U.js";
24
+ } from "./chunk-N3YFCFCO.js";
17
25
  import {
18
26
  confirm
19
- } from "./chunk-AESE434J.js";
20
- import {
21
- landingLockPath,
22
- recordForeignLanding
23
- } from "./chunk-ES5A66IH.js";
27
+ } from "./chunk-7M6JP3FS.js";
24
28
  import {
25
29
  CONSTRAINT_FIX,
26
30
  CONSTRAINT_PHRASE,
@@ -39,24 +43,27 @@ import {
39
43
  releaseTableEffects,
40
44
  renameHint,
41
45
  tableEffectsPayload
42
- } from "./chunk-BBPAXOU6.js";
46
+ } from "./chunk-BSVQEKHO.js";
43
47
  import {
44
48
  tableRowCounter
45
- } from "./chunk-GMVW6ZZK.js";
49
+ } from "./chunk-H2K4GFUS.js";
46
50
  import {
47
- asWorkspaceArchive,
48
- resolveProjectEntry
49
- } from "./chunk-PIPIA7K7.js";
51
+ landingLockPath,
52
+ recordForeignLanding
53
+ } from "./chunk-2YER2J47.js";
54
+ import {
55
+ recordSync
56
+ } from "./chunk-VAGSKUWC.js";
57
+ import {
58
+ SettledWriteFailure,
59
+ classifyFailure
60
+ } from "./chunk-L472YIGG.js";
50
61
  import {
51
62
  exportWorkspaceBundle
52
- } from "./chunk-XIABDKFQ.js";
63
+ } from "./chunk-2SD4LA22.js";
53
64
  import {
54
65
  decodeWorkspaceArchive
55
66
  } from "./chunk-3DRXWLJ5.js";
56
- import {
57
- SettledWriteFailure,
58
- classifyFailure
59
- } from "./chunk-5D6DGF3W.js";
60
67
  import {
61
68
  BranchTakenError,
62
69
  assertBranchAbsent,
@@ -67,16 +74,16 @@ import {
67
74
  listBranchListing,
68
75
  liveBranchLabel,
69
76
  setLiveBranch
70
- } from "./chunk-5RLAF6RL.js";
77
+ } from "./chunk-M2C54ZBC.js";
71
78
  import {
72
79
  envValuesOf
73
- } from "./chunk-SF2B7MZK.js";
80
+ } from "./chunk-IYXL5NYU.js";
74
81
  import {
75
82
  assertOneName
76
- } from "./chunk-A4NNCI4O.js";
83
+ } from "./chunk-VIJ5D3RC.js";
77
84
  import {
78
85
  resolveSource
79
- } from "./chunk-JXKO6JT7.js";
86
+ } from "./chunk-TWVUYS63.js";
80
87
  import {
81
88
  ReleaseHttpError,
82
89
  UNPROMOTABLE_RELEASE_PARTS,
@@ -85,27 +92,27 @@ import {
85
92
  promotableReleaseName,
86
93
  unpromotableReleasePart,
87
94
  untenantDeployableReleasePart
88
- } from "./chunk-3BJYQGAZ.js";
95
+ } from "./chunk-26LHXLD3.js";
89
96
  import {
90
97
  getAccessToken
91
- } from "./chunk-CJ76PSJT.js";
98
+ } from "./chunk-YH2JVJAO.js";
99
+ import {
100
+ readLockFile
101
+ } from "./chunk-CJDPSCMX.js";
92
102
  import {
93
103
  pipedYes,
94
104
  retryCommand,
95
105
  withheldNote
96
- } from "./chunk-Z4VN347O.js";
106
+ } from "./chunk-UYFUIHH3.js";
97
107
  import {
98
108
  contextFlags
99
- } from "./chunk-G57RYMKB.js";
109
+ } from "./chunk-3FRGNBOC.js";
100
110
  import {
101
111
  shellWord
102
112
  } from "./chunk-FWD7AL6N.js";
103
- import {
104
- readLockFile
105
- } from "./chunk-SQPIECXD.js";
106
113
  import {
107
114
  withoutReadAftermath
108
- } from "./chunk-HLQH3AXB.js";
115
+ } from "./chunk-L6HZ67P6.js";
109
116
  import {
110
117
  CliError,
111
118
  LocalFileNotFoundError,
@@ -123,19 +130,19 @@ import {
123
130
  success,
124
131
  warn,
125
132
  withoutUrls
126
- } from "./chunk-XNZURZ7T.js";
133
+ } from "./chunk-CH23ONYG.js";
127
134
  import {
128
135
  envNamesRead
129
- } from "./chunk-JSEVKRVJ.js";
136
+ } from "./chunk-T4LJ5UR2.js";
130
137
  import {
131
138
  safeNames
132
139
  } from "./chunk-GSGDWJB5.js";
133
140
  import {
134
141
  setDiagnosticSink
135
- } from "./chunk-GPI3OWRE.js";
142
+ } from "./chunk-YHB34BN6.js";
136
143
  import {
137
144
  sdkKindName2 as sdkKindName
138
- } from "./chunk-OKNE3TWU.js";
145
+ } from "./chunk-5KJBWIDZ.js";
139
146
  import {
140
147
  shellQuote
141
148
  } from "./chunk-5ZSO4T2G.js";
@@ -292,7 +299,7 @@ async function verifyLanding(auth, opts) {
292
299
  } catch (err) {
293
300
  return unverified(shortReason(err));
294
301
  }
295
- const { compareToLive, declaredLabels } = await import("./live-diff-IM4W3ELT.js");
302
+ const { compareToLive, declaredLabels } = await import("./live-diff-5E2BQWQ7.js");
296
303
  let result;
297
304
  try {
298
305
  result = compareToLive(declared, landedBundle, void 0, { sample: "all" });
@@ -311,7 +318,8 @@ async function verifyLanding(auth, opts) {
311
318
  undeclared,
312
319
  suffixed: suffixedSiblings(declaredLabels(declared), undeclared),
313
320
  compared: result.compared,
314
- canonicals
321
+ canonicals,
322
+ landed: landedBundle
315
323
  };
316
324
  }
317
325
  function shortReason(err) {
@@ -464,7 +472,7 @@ async function runPromoteCommand(args) {
464
472
  discloseWriteTarget(destination);
465
473
  const lockPath = landingLockPath(args, args.entryPath === void 0 ? {} : { entryFile: args.entryPath });
466
474
  if (lockPath === void 0 && args.noLock !== true) {
467
- const { nestedBackendEntries } = await import("./tracked-backend-B4HTME4S.js");
475
+ const { nestedBackendEntries } = await import("./tracked-backend-AJCGTO5Y.js");
468
476
  const nested = nestedBackendEntries(process.cwd());
469
477
  if (nested.length > 0) {
470
478
  warn(
@@ -488,7 +496,7 @@ async function runPromoteCommand(args) {
488
496
  // sending every caller on an instance with an unreadable export to resolve
489
497
  // a write that already answered.
490
498
  checks: ["verify"],
491
- extras: { declined: false, landingRecord: null, tableEffects: null, canonicalMoves: [] }
499
+ extras: { declined: false, landingRecord: null, syncBaseline: null, tableEffects: null, canonicalMoves: [] }
492
500
  });
493
501
  const flags = contextFlags(args);
494
502
  const yesFlags = `${pipedYes(args)}${flags}`;
@@ -775,6 +783,22 @@ Check what is serving with \`xanosdk workspace branch list${flags}\`, then promo
775
783
  );
776
784
  }
777
785
  }
786
+ if (verification.outcome === "passed" && verification.landed !== void 0) {
787
+ const released = await ctx.loadArchive().catch(() => void 0);
788
+ op.set(
789
+ "syncBaseline",
790
+ recordSync({
791
+ lockPath,
792
+ target: { instance: auth.instance, workspaceId: auth.workspaceId, branch },
793
+ digests: syncDigests({
794
+ held: [verification.landed],
795
+ ...released === void 0 ? {} : { heldLabels: new Set(Object.keys(objectDigests(released))) }
796
+ }),
797
+ by: "promote",
798
+ complete: true
799
+ })
800
+ );
801
+ }
778
802
  let live = false;
779
803
  let rollback;
780
804
  if (setLiveRequested) {
@@ -911,7 +935,7 @@ Nothing was switched. Serve it deliberately with \`xanosdk workspace branch set-
911
935
  }
912
936
  }
913
937
  async function unansweredBranchRead(err, args, what) {
914
- const { LookupFailedError, isServerError, isTransportFailure, unansweredCause } = await import("./source-resolve-OWD3MIEO.js");
938
+ const { LookupFailedError, isServerError, isTransportFailure, unansweredCause } = await import("./source-resolve-BBHYTOXI.js");
915
939
  const transport = isTransportFailure(err);
916
940
  if (!transport && !isServerError(err)) return err;
917
941
  const first = what !== void 0 ? `could not read ${what}` : ((err instanceof Error ? err.message : String(err)).trim().split("\n")[0] ?? "").replace(/[.:]$/, "");
@@ -937,4 +961,4 @@ export {
937
961
  reportNotRun,
938
962
  runPromoteCommand
939
963
  };
940
- //# sourceMappingURL=chunk-57B56I4B.js.map
964
+ //# sourceMappingURL=chunk-7XXWKTCE.js.map
@@ -1,3 +1,6 @@
1
+ import {
2
+ LOOPBACK_HOSTS
3
+ } from "./chunk-LCOCRJ4K.js";
1
4
  import {
2
5
  readEnvVar
3
6
  } from "./chunk-X2NL4KUO.js";
@@ -6,111 +9,6 @@ import {
6
9
  import { existsSync, readdirSync } from "fs";
7
10
  import { homedir } from "os";
8
11
  import { isAbsolute, join, resolve } from "path";
9
-
10
- // src/deploy/local-engine-handshake.ts
11
- var LOOPBACK_HOSTS = ["127.0.0.1", "::1", "localhost"];
12
- var ALLOWED_PROTOCOLS = ["http:", "https:"];
13
- function isLoopbackUrl(url) {
14
- let parsed;
15
- try {
16
- parsed = new URL(url);
17
- } catch {
18
- return false;
19
- }
20
- if (!ALLOWED_PROTOCOLS.includes(parsed.protocol)) return false;
21
- const host = parsed.hostname.replace(/^\[|\]$/g, "");
22
- if (!LOOPBACK_HOSTS.includes(host)) return false;
23
- return /^[0-9]+$/.test(parsed.port);
24
- }
25
- function assertLoopbackUrl(url, what) {
26
- if (isLoopbackUrl(url)) return;
27
- throw new Error(
28
- `${what} reports a url this SDK will not send a token to: ${url}
29
- A Xano Engine has to serve loopback over http on a port of its own \u2014 ${LOOPBACK_HOSTS.join(", ")} \u2014 and anything else is reachable from off this machine. Stop that engine and start a fresh one without binding it to all interfaces.`
30
- );
31
- }
32
- function requireString(raw, key, source) {
33
- const value = raw[key];
34
- if (typeof value !== "string" || value === "") {
35
- throw new Error(
36
- `${source} is missing \`${key}\`, or gave it as something other than text.
37
- That is not an engine this SDK knows how to drive \u2014 the engine on this machine is older or newer than the one it was built against. Move to a current one with \`xanosdk local update\`.`
38
- );
39
- }
40
- return value;
41
- }
42
- function requireNumber(raw, key, source) {
43
- const value = raw[key];
44
- if (typeof value !== "number" || !Number.isFinite(value)) {
45
- throw new Error(
46
- `${source} is missing \`${key}\`, or gave it as something other than a number.
47
- That is not an engine this SDK knows how to drive \u2014 the engine on this machine is older or newer than the one it was built against. Move to a current one with \`xanosdk local update\`.`
48
- );
49
- }
50
- return value;
51
- }
52
- function readEngine(value, source) {
53
- if (value === null || typeof value !== "object" || Array.isArray(value)) {
54
- throw new Error(
55
- `${source} did not print an engine description.
56
- Re-run, and if it happens again fetch a fresh copy with \`xanosdk local cache clear\`, then \`xanosdk deploy --local\`.`
57
- );
58
- }
59
- const raw = value;
60
- return {
61
- name: requireString(raw, "name", source),
62
- url: requireString(raw, "url", source),
63
- workspaceId: requireNumber(raw, "workspace_id", source),
64
- token: requireString(raw, "access_token", source),
65
- pid: requireNumber(raw, "pid", source),
66
- signInUrl: requireString(raw, "sign_in_url", source),
67
- loginLinkEndpoint: requireString(raw, "login_link_endpoint", source),
68
- logPath: requireString(raw, "log", source)
69
- };
70
- }
71
- var HANDSHAKE_SOURCE = "The engine's start handshake";
72
- var LISTING_SOURCE = "The engine's list of running engines";
73
- function parseEngineHandshake(stdout) {
74
- let value;
75
- try {
76
- value = JSON.parse(stdout.trim());
77
- } catch {
78
- throw new Error(
79
- `${HANDSHAKE_SOURCE} did not print an engine description.
80
- Re-run, and if it happens again fetch a fresh copy with \`xanosdk local cache clear\`, then \`xanosdk deploy --local\`.`
81
- );
82
- }
83
- const engine = readEngine(value, HANDSHAKE_SOURCE);
84
- assertLoopbackUrl(engine.url, "The engine that just started");
85
- return engine;
86
- }
87
- function parseEngineListing(stdout) {
88
- const text = stdout.trim();
89
- if (text === "") return [];
90
- let value;
91
- try {
92
- value = JSON.parse(text);
93
- } catch {
94
- throw new Error(
95
- `${LISTING_SOURCE} was not readable.
96
- Re-run, and if it happens again fetch a fresh copy with \`xanosdk local cache clear\`, then \`xanosdk deploy --local\`.`
97
- );
98
- }
99
- if (!Array.isArray(value)) {
100
- throw new Error(
101
- `${LISTING_SOURCE} was not a list.
102
- Re-run, and if it happens again fetch a fresh copy with \`xanosdk local cache clear\`, then \`xanosdk deploy --local\`.`
103
- );
104
- }
105
- return value.filter((entry) => !isForeignEngine(entry)).map((entry) => readEngine(entry, LISTING_SOURCE));
106
- }
107
- function isForeignEngine(entry) {
108
- if (entry === null || typeof entry !== "object" || Array.isArray(entry)) return false;
109
- const raw = entry;
110
- return raw.workspace_id === void 0 && raw.access_token === void 0;
111
- }
112
-
113
- // src/deploy/local-engine-config.ts
114
12
  var SUPPORTED_PLATFORMS = [
115
13
  "darwin-arm64",
116
14
  "linux-x64",
@@ -212,11 +110,6 @@ function resolveEngineSource(flagValue, env = process.env, pinned) {
212
110
  }
213
111
 
214
112
  export {
215
- LOOPBACK_HOSTS,
216
- isLoopbackUrl,
217
- assertLoopbackUrl,
218
- parseEngineHandshake,
219
- parseEngineListing,
220
113
  SUPPORTED_PLATFORMS,
221
114
  resolveEnginePlatform,
222
115
  LOCAL_ENGINE_HOME_ENV,
@@ -234,4 +127,4 @@ export {
234
127
  engineOverrideFromEnv,
235
128
  resolveEngineSource
236
129
  };
237
- //# sourceMappingURL=chunk-PL7AIAWS.js.map
130
+ //# sourceMappingURL=chunk-A4R5CAY4.js.map